ATmega8 + USART/UART

Mar 19, 2005 7 Replies

Witam, probuje wyslac doslownie cokolwiek po RS'ie przy pomocy tego procka (clk



8MHz) Inicjuje wiec UART w ten sposob: void initusart(void) { /* Set baud rate */ UBRRL = 0x0c; //set baud rate lo - 12 czyli dla 8 MHz wychodzi predkosc
38,4kbps UBRRH = 0x00; //set baud rate hi /* Enable Receiver and Transmitter */ UCSRB = (1<<RXEN) | (1<<TXEN); /* Set frame format: 8data, 1stop bit */ UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0); }

fragment maina w ktorym wysylam jeden znak wyglada nastepujaco:



int main(void) { ....................... initusart(); sei(); UCSRB=1<<RXCIE|1<<TXCIE; for(i=1;i<5;i++) { while ( !( UCSRA & (1<<UDRE)) ); //tutaj czekam az UDR sie zwolni UDR=0x33; //jakis byle jaki znak } } Niestety hyper terminal nie odbiera absolutnie nic ani mru mru. Kabel jest na pewno dobry bo dziala wysylanie przy AT2313. Czy widzicie jakis oczywisty blad ktory robie? Czy moze to wina sprzetu?Padniety MAX232 albo cus? Pozdrawiam Mesayah



a czy napewno chodzi na 8Mhz? nowe ATmegi maj± ustawione taktowanie z oscylatora wewnêtrznego.

Goju

A jak to zrobiæ? W datasheet'cie jest mowa o ustawianiu bitów CKSEL3..0 i CKOPT, ale w jakim rejestrze tego szukaæ...?! Mo¿e jaki¶ przyk³ad?

Pzdr. K.

A jakim programem programujesz ATmege ??? jesli robisz to PONY PROG to tam jest zakladka COMMAND --- Security and Configuration Bits.....

tam sie to robi : ) Tylko uwazaj bo bit ustawiony na '0' to jest zanznaczony. Poczytaj dokladnie w pdf'ie

Chodzi o fusebity, ustawiane programatorem. Jakiego uzywasz do wciskania kodu programu do ATmegi? Sprobuj zalozyc, ze procesor ma 1 MHz, przelicz predkosc transmisji i sprawdz, czy dziala poprawnie przy takich zalozeniach.

Korzystam z PonyProg'a. W stosunku do czego nale¿y zachowaæ najdalej posuniêt± ostro¿no¶æ? Których bitów _na pewno_ nie nale¿y ruszaæ?

Pzdr. K.

Nie ruszaj wylaczania resetu (RSTDIS czy jakos tak). Gdy go zmienisz, procesor da sie zaprogramowac juz tylko programatorem rownoleglym.

W ogole najpierw poczytaj PDFa i ustal, co chcesz ustawic (np. taktowanie generatorem wewnetrznym z podlaczonym rezonatorem kwarcowym 8 MHz). Dopiero potem zmieniaj fusebity ustalajace taktowanie. W najgorszym przypadku bedzie potrzebne podlaczenie zewn. generatora aby "obudzic" procesor.

Poza tym 8 MHz niespecjalnie nadaje sie do dokladnego taktowania transmisji RS232, lepiej wlutuj 7,3728 MHz.

W swoim poscie Goju pado:

Ehhh a ja w blogiej nieswiadomosci zyjac konfigurowalem sobie transmisje dla

8MHz :) Miales racje taktowalem go wewnetrznym RC Teraz myka Dzieki i pozdrawiam Mesayah

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required