Wcale nie pisałem że trzeba to robić w kodzie, tylko na wypadek gdyby ktoś nie umiał ustawiać fusów. Co do dokumentacji to do tej też trzeba podchodzić trochę z dystansem i zaczynać czytać od erraty (przykład - atmega128). Pozdrawiam Kamil
Tak bede robil, ale 50% programu to obsluga LDC:)
By setować porty należy ustawić rejestry DDRn na wejście lub wyjście. Masz ustawione DDRn na wejście i setujesz pullupem(podciągasz pin portu do VCC).
Przykładowy program który wyświetla jakąś liczbę: [syntax=c]volatile uint16_t disp=0; uint8_t buff[]={0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000, 0b10001000, 0b10000011, 0b11000110, 0b10100001, 0b10000110, 0b10001110}; ISR(TIMER0_OVF_vect) { static uint8_t dig=0; static uint16_t...
Zrób do testowania w programie głownym. Przekopiuj to co w przerwaniu zablokuj przerwania a w petli daj opoznienie 1-2 sek. 5 sek roboty:-) Dodano po 1 Sprawdz jak właczasz anody bo z obrazka wynika ze jak bys właczał przeciwnie to by wszystko grało. Chyba ze sie myle. Dodano po 8 #define funkcja_ON PORTC |=(1<<5); //wlaczenie odpowiedniego wyswietlacza...
for (i=1 ; i<=NWW; i++) { if (i%(NWW/li_A)== 0) PORTC |=0x02; if (i%(NWW/li_B)== 0) PORTC |=0x08; if (i%(NWW/li_C)== 0) PORTC |=0x20; if (i%(NWW/li_D)== 0) PORTC |=0x80; // zerowanie pinów ABCD PORTC &=0x55; // opóźnienie _delay_ms(czas_kr/NWW); } Wszystko...
Dawno nic nie skrobałem dla AVR, poniżej kod który skompilował się lecz nie ma jak przetestować. Do sprawdzania wciśnięcia klawiszy powinieneś napisać funkcję, która będzie to robić zamiast ciągłego wstawiania prawie tego samego kodu. [syntax=c] #include <avr/io.h> #include <util/delay.h> /* definicje dla preprocesora */ // klawisze #define...
ale z tego co się już dowiedziałem nie będzie działać na mojej płytce Nie prawda, będzie działał po zmianie kilku linijek kodu. [syntax=basic4gl]$regfile = "8515def.dat" $crystal = 10000000 [/syntax] To zmień na swojego procka i częstotliwość oscylatora, jaki Masz. Na przykład [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 [/syntax] Tą...
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
Zamieszczam przyklad programu napisanego na kolanie, zmienia stan lini PC3 co okolo (LicznikMax*10ms ) - wychodzi co ok. 100 ms Gdybyś miał wątpliwości to podniosłem moje kości z krzesła przed komputerem po płytkę z AtMega32 i sprawdziłem w ukladzie - DZIAŁA! Kompilowany pod ICC626, polecam "Wizarda" ,pomaga w minute ustawić co potrzeba bez sięgania...
Co do Twojego pierwszego problemu to prawdę mówiąc nie wiem, ale zwróć uwagę na to że po zakończeniu obsługi przerwania zawartośc R16 i R17 jest zamieniona: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16, PORTC ldi R17, 0b00000011 eor R16, R17 out PORTC, R16 pop r16 ; R17 pop r17 ; R16 reti ... Może to wina własnie tego. Co do Towjego...
OCR0=0x20; /// podobno mozna zjechac do 0 i otrzymac fck/2 Zjechać może i można, ale chyba tylko do sprzętowego przełączania pinu. bo obsługa przerwania w 1 cyklu jest niemożliwa. void timer0_comp_isr(void) { PORTC ^= BIT(0); } Wrzuć co kompilator wyrzuca do assemblera do kompilacji. W sumie na obsługe jest 32 takty razem...
Witam. Mam problem z zegarem na wyświetlaczach 7-segmentowych. Minuty po 09 wyświetla 16 zamiast 10, sekundy tak samo. Zawsze tak się dzieje, więc musi to być błąd w programie, ale ja już się poddałem, co może być nie tak. Config PortA = Output PortA = &HFF Config Portd = Output Portd = &Hff Config Portb = Output config portc.0 = output config...
Wyłącz JTAG. W fuse bitach.
A co z linią R/W? R/W->pc1 Daj na początku funkcji main: DDRC |= _BV(PC1); PORTC &= ~_BV(PC1);
Witam (moze sie powtarzam, bo poprzedniego nie widze) Jest sobie Atmega32 i DS1820. Na porcie B (dokladnie PORTB.0) dziala pieknie. Na porcie C (od PORTC.3..PORTC.8) nie chce czytac z DS-a. Portem moge niby w pelni sterowac i jako wejscie i jako wyjscie. J-tag wylaczony. A dzialac nie chce. W procedurze odczytu zmieniam tylko port, wiec teoretycznie...
Mam mikrokontroler AMTEGA32 nie potrafie poprawnie skonfigurować portów WEJŚCIOWYCH, wcześniej używałem ATMEGA162 i żeby ustawić kierunki portów użyłem takich funkcji w asm: ldi R16, 0xFF ;porty wyjsciowe outDDRD, R16 out DDRB, R16 ldiR16, 0x00 ;porty wejsciowe outDDRA, R16 outDDRC, R16 Teoretycznie ta funkcja powinna również zadziałać dla Amtmegi32,...
no to ja mam pytanie ... a gdzie jest info dla procka o liniach SDA i SCL ? sbi(PORTC, 0);// i2c SCL on ATmega163,323,16,32,etc sbi(PORTC, 1);// i2c SDA on ATmega163,323,16,32,etc albo inaczej PORTC |= 0x3; // xxxxxx11
Witam Zbudowałem interfejs dla Atmega8 na 4 tranzystorach wszystko działa OK, próbowałem przerobić program dla ATMEGA32 i niestety raz działa raz nie, gdy nie działa wyskakują mi następujące błędy: Blad:1 Odp:255 lub Blad:3 Odp:1 czasem Blad:5 Odp:1 Przerobiłem konfiguracje portów czyli Config Portb = &B10111111 'dla ATMEGA32 Config Portc = &B00001010...
uart_putc(PORTC); działa - wysyła bajt o wartości 0, 1 lub 2, którego putty nie wyświetla, bo nie jest to kod widocznego znaku ASCII. Na szybko możesz napisać uart_putc((PORTC & 7) + '0'); - zadziała dla trzech bitów portu. Jeżeli użyjesz programu terminala umożliwiającego podglądanie wartości odbieranych bajtw w postaci szesnastkowej lub dziesiętnej...
Ja używam takich kodów do odblokowania tych pinów, zaraz po instrukcji konfiguracji zegara programowego: 'odblokowanie pinów PC6 i 7 dla procesorów atmega16/32: Tccr2 = 0 Assr = 0 Timsk = 0 Tifr = 0 Oczywiście wszelkie dalsze konfiguracje innych timerów powinny znaleźć się po tym kawałku kodu.
Jeśli koniecznie w jednej to for(uint8_t x=0; x<3; x++) { PORTB |= (1<<diody[x]); zamień np na for(uint8_t x=0; x<5 x++) { if( x<3) PORTB |= (1<<diody[x]); else PORTC |= (1<<diody[x-???]);
witam Taktuję mikrokontrolerem ATMEGA32 8 Mhz . Mam problem otóż wynik pomiaru mi wychodzi 0 za każdym razem ponieważ druga dioda mi się zapala . Oto kod:[syntax=cpp]/* * main.c * * Created on: 19-03-2015 * Author: DamianB */ #include <avr/io.h> #include <avr/interrupt.h> int k =0; //zmienna pomiarowa ISR(ADC_vect) //Przerwanie ADC Conversion...
A to ciekawe, bo mi dzisiaj podobna rzeczy się zdarzyła, tyle że z portem C na ATmega32. Próbowałem podłączyć LCD, męczyłem się całą noc, aż w miejsce LCD wpiąłem kilka diodek i się okazało, że na połowie końcówek diody nie świecą. Lecz wydaje mi się, że po prostu na króciutko zwarłem 2 końcówki portu i pewnie tym uszkodziłem port. Tak mi się wydaje......
Witam. Kupiłem dwie sztuki atmega32 kombinowałem trochę z multipleksowaniem LED katody podłączyłem pod port C i wyszło mi że PC2..PC5 nie działają. Dla sprawdzenia napisałem sobie taki krótki kodzik:[syntax=c]#include <avr/io.h> int main(void) { DDRB |= 0xFF; PORTB &= ~(0xFF); DDRC |= 0xFF; PORTC &= ~(0xFF); } [/syntax] no i wyszło że...
Witam, Mam problem z tym wyświetlaczem AND-Graph132 i kodem (EvB). Mianowicie podświetlenie działa,piksele widać (czarne tło) ale nei ma reakcji na żaden z programów. Podłączony jak w przykładowym programie : Vcc - Vcc Gnd - Gnd Bl - Vcc Cs - Pc7 Clk - Pc6 Dat - Pc5 Res - Pc4 Na płycie EvB 5.1 v5 pod atmega32. [syntax=vbnet]$regfile = "m32def.dat" $baud...
Witam, jestem początkujący w dziedzinie mikrokontrolerów. Moja zasada działania mikrokontrolera polega na tym, że po naciśnięciu przycisku mam zapalić diode led Znalazłem przykładowy kod: http://obrazki.elektroda.pl/3615578800_1... Dodano po 2 Jak mam podłączyć piny klawiatury i LED aby program działał?
[syntax=cpp] #define LCD_DB4 (1 << PC4) #define LCD_DB5_DIR DDRC #define LCD_DB5_PORTPORTC #define LCD_DB5_PIN PINC #define LCD_DB5 (1 << PC5) #define LCD_DB6_DIR DDRC #define LCD_DB6_PORTPORTC #define LCD_DB6_PIN PINC #define LCD_DB6 (1 << PC6) #define LCD_DB7_DIR DDRC #define LCD_DB7_PORTPORTC #define LCD_DB7_PIN PINC #define LCD_DB7...
Problem rozwiazany!!!!! Racje miał "damdam" portc jako funkcje dodatkowe ma obsługe JTAG-a wystarczy w fus-bit ustawić JTAG - disable i wszystko śmiga! dzieki wszystkim za wsparcie!!
Odpal to na symulatorze i sprawdź działanie dla Atmega32 i ATmega8. Ja właśnie walczę z uruchomieniem LCD 2*16 na PORTC Atmegi16. JTAG wyłączone (Fusami i w rejestrze), TWI też wyłączone. Na innych portach działa. Gdyby mi nie brakło wyprowadzeń to dałbym sobie spokój ;)
Schemat pokazałeś z podłączony LCD do PORTD a nie do PORTC na którym mógłbyś mieć ew JTAG włączony - więc fusebity nie mają tutaj żadnego znaczenia jeśli chodzi o to że ci nie działa ....
Witam, Od rana próbuję wykorzystać UART w ATmega328 do wyświetlania znaków na wyświetlaczu LCD. O ile na ATmega32 wszystko działa jak należy, tak na ATmega328P wyświetlają się już krzaki. Poniżej kod programu w C: http://obrazki.elektroda.pl/8859811000_1... Oscylator zewnętrzny 16MHz. Szukałem po elektrodzie, kolegom pomaga zmiana częstotliwości....
OK. Poczytałem, pooglądałem i poprawiłem. Biblioteka najnowsza. Skompilowało się. Z racji zapełnienia pamięci ATmega32 do około 125% postanowiłem przejść na ATmega644. Niestety po wgraniu programu dalej nic się nie zmieniło, dlatego postanowiłem zacząć od odczytu z przykładu ze strony o funkcji f_open. Też mam z nim problem. Obecnie mam taki oto kod:...
Ja bym dał 10k. Do tego sprawdz ustawienia TWI, moj kod nie inicjuje interfjesu, trzeba dac jeszcze ///I2C #define TWI_BAUD 153600ul // wiecej nie pociagnie jako master /// SCLf = CPUf/(16 + 2*TWBR*4^TWPS) #define TWI_CONST (F_CPU/(8ul*TWI_BAUD)-2) i potem /// TWI(I2C) dla pamieci TWBR = (unsigned char)TWI_CONST;...
Witam, Mam taki problem chcę przyspiać do portu takie wartości i nie działa poprawnie: Config Portc = Output Do Portc = &B11111111 Waitms 100 Portc = &B00000000 Waitms 100 Loop End Problem polega na tym iż xx XXXX xx bity dyże X nie zmieniają stanu tylko ciągle są ustawione na stan wysoki
I właśnie to mnie najbardziej dołuje, że próbowałem jak Panowie radzili, ale nie ma efektu. Program od P. m.bartczaka skompilował się bez błędów i bez warningów - efekt: ekran pusty. Natomiast ten drugi miał warningi dotyczące nieużywanych zadeklarowanych zmiennych oraz :'LCDstring' discards qualifiers from pointer target type. Ale wydaje mi się że...
Dalej nic. [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include "LED.h" volatile uint8_t wysw; // zmienna oznaczająca numer aktywnego wyświetlacza // ****** definicja funkcji inicjalizującej pracę z wyświetlaczem multipleksowanym int main(void) { // ustawienie TIMER0 TCCR0 |= (1<<WGM01);...
#define PORTD2 2 Po co ta definicja, jeżeli później jej i tak nie wykorzystujesz. Tym bardziej, że wg. mnie jest błędnie zapisana. TCCR0 |= (1<<=CS01) |1<<(CS00); //preskaler 64 Przesunięcie bitowe powinno wyglądać tak: TCCR0 |= (1<<CS01) | (1<<CS00); + brak ustawienia odpowiedniego trybu przerwań, w tym przypadku pewnie musiałby...
Witam, od jakiegoś czasu walczę z ładowarką uniwersalną (klonem imax b6). Problem mam tego typu że cały czas na wyswietlaczu swieci się tylko górna linia. podstawiałem lcd, atmege i dalej to samo, wsadów kilka wgrywałem. w końcu postanowiłem zrobić eksperyment i napisać prosty program do zmiany stanow na danej końcówce portu na którym jest podpięty...
Witam naskrobalem taki oto program ktory w domysle ma odbierac z btm222 wartosc 1 i uruchamiac wyjscie pc7 do sterowania tranzystorem. hardware to atmega32 , uart to 19200 , 8 bitow danych , jeden stopu bez parzystosci [syntax=c]#include <avr/io.h> #define PRZEK_PIN (1<<PC7) #define PRZEK_ON PORTC &= ~PRZEK_PIN #define PRZEK_OFF PORTC...
witam Napisałem kod przy którym atmega32 odbiera wyniki pomiarów w trybie master z sonarów od atmegi8 . Podejrzewam że mam błąd przy inicjacji spi lub przy pomiarze ponieważ w obydwie diody święcą cały czas niezależnie od odległości przeszkody . [syntax=c]/* * pomiary.c * * Created: 2015-01-31 18:01:14 * Author: Damian */ #include <avr/io.h> #include...
Właśnie udało mi się to zrobić po mojemu, tylko chyba program powinien działać gdy wciśnięty jest switch, a tak się nie dzieje, ale zaraz to naprawię. Oto kod: #include <avr/io.h> #include <util/delay.h> int main(void) { DDRB = 0xFF; DDRA = 0x00; PORTC = 0x01; while(1) { if(!(PINA & 0x01)) {...
Amplituda impulsów wynosi 4,2-4,3 V, według oscyloskopu Vpp=8,5 V. Okres impulsów jest wybierany w menu programu, mieści się w przedziale 70-280 ms. Up taktóję kwarcem 10 Mhz. Przy nieobciążonych portach nic się nie zmienia. Poniżej wkleiłem fragmenty programu z konfiguracją portów, konfiguracją licznika, podprogramem obsługi przerwania z licznika Config...
Witam, mam następujący problem: przy podłączeniu wyświetlacza tak jak w configu stan pinu porta.0 jest zawsze niski czyli wyświetlacz cały czas jest zresetowany. Czy to jest wina zmiany pinów dataport i controlport? Zakładałem, ze można dać je dowolne tylko tak aby piny controlport były z jednego portu uC i tak samo z dataport ale, które port to wszystko...
1. Centronics w praktyce nie wymaga ACK, a nieskuteczne testowanie ACK może sprawiać kłopoty. 2. Masz odwrócone definicje STROBE:DOWN i STROBE_UP - zamień. 3. Poprawniej będzie: [syntax=c]void wyslijznak (const int c) { PORTC = c; //wyprowadzenie danych while (BUSY); //testowanie stanu BUSY,oczekiwanie na stan niski STROBE_DOWN; //ujemny impuls na linii...
Problem polega na tym , że zmienna nrzn działa poprawnie tylko w ciele funkcji przerwania, w pętli programu już nie. Jej wartość wynosi 0 poza przerwaniem. //Biblioteki #include <avr\io.h> #include <util/delay.h> #include <avr\pgmspace.h> #include <avr/signal.h> #include <avr/interrupt.h> //Zmienne unsigned char znak [10]...
Witam Kupiłem robota klasy mini sumo. Zawiera on 2 mikrokontrolery Atmega8 służącą do obsługi dalmierzy, oraz Atmega32, która jest główną jednostką. Atmegi są połączone ze sobą przez SPI. Atmega 8 jest już zaprogramowana i wysyła przez SPI 2 bajty ( 1 dalmierz lewy, 2 dalmierz prawy), jeżeli obiekt jest w odległości 10cm to wysyła bajt o wartości 10....
Witam, Moja przejściówka USB - RS232 okazała się być jakimś chińskim szajsem więc nie mogę chwilowo sprawdzić poprawności kodu. Czy ktoś mógłby rzucić okiem i stwierdzić czy poniższy kod ma szansę funkcjonować? ATmega jedynie odbiera jeden bajt po RS'sie i w zależności od tego czy jest to 1 czy 0, ustawia cały port C w stan aktywny bądź niski. Mikrokontroler:...
może ja czegoś nie rozumiem ale ktoś podpowie dlaczego tak się dzieje bo to tu będzie problem kod nadajnika : https://obrazki.elektroda.pl/8965366800_... jeśli zmienie na 100 mil to : https://obrazki.elektroda.pl/1814768300_... Jeśli zmienię program odbiornika bez używania przerwania to timer0 pracuje poprawnie tak...
Witam Mam problem przy kompilacji prostego programu. Posiadam zestaw startowy ATB 1.01 Atnela A oto program: #include <avr/io.h> #include <util/delay.h> #define LED_PIN (1<<PC7) #define LED_ON PORTC &= ~LED_PIN #define LED_OFF PORTC |= LED_PIN #define LED_TOG PORTC ^= LED_PIN int main (void) { DDRC = LED_PIN;...
OK.Spoko rozumiem, ale wg Ciebie to kwestia czasów? Bo kombinowałem własnie w tym fragmencie kodu #define LCD PORTA #define DLCD DDRA #define LCD2 PORTC #define DLCD2 DDRC #define E 6 #define RS 7 // #define SET_E LCD2 |= _BV(E) #define CLR_E LCD2 &= ~_BV(E) // #define SET_RS LCD2 |= _BV(RS) #define CLR_RS LCD2 &= ~_BV(RS)...
Witam, Środowisko - AVR Studio 4 Mam problem z nie działającym wyświetlaczem LCD. Prosty program , który kompiluje się poprawnie. /* Szkielet prostego programu dla avr-gcc */ #define F_CPU 16000000UL //atmega32 #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #include "HD44780.h" int main(void) {...
portc atmega32 portc atmega8 wysoki portc
wsady amica przestrajanie unitra at9100 sygnał wejście dekoder
układ gasikowy stycznika politechnika poznańska
Pasmo Ku dla tunera Sony Bravia 7 - Hot Bird 13E Sony KDL-32S5600 - słabe podświetlenie, HDMI, pilot