ATMega i wysylanie przez USART

Aug 02, 2004 2 Replies

Mam nastêpuj±cy (i mocno dziwny) problem: Przy ³±czeniu siê w trybie synchronicznym z PC, dane s± przesy³ane tylko w kierunku do mikrokontrolera. W trybie asynchronicznym u¿ywaj±cym przerwañ wszystko jest ok. Co mo¿e byæ przyczyn±?



Funkcje obs³ugi USART s± standardowe, wziête ¿ywcem z dokumentacji Atmela:



static uint8_t RxChar(void) { while( !(UCSRA & (1<<RXC)) ); return UDR; }



static void TxChar(uint8_t x) { while(!(UCSRA & (1<<UDRE))) UDR = x; }



static inline void initComm(void) { outp((unsigned char)0, UBRRH); outp((unsigned char)103, UBRRL); // 9600 baud @ 16MHz



UCSRB = (1<<RXEN)|(1<<TXEN); // 8-bit, 2 stop bits UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1); }


Darek ¯o³na



U¿ytkownik "Dariusz Zolna" snipped-for-privacy@abc.com napisa³ w wiadomo¶ci news:cels6v$st9$ snipped-for-privacy@atlantis.news.tpi.pl...

znaczy jak zawolasz TxChar(uint8_t x) to nie dochodzi znak do PC'ta ?

a zwisa na tym TxChar czy nie ?

U¿ytkownik "Andy" snipped-for-privacy@ceti.pl napisa³:

Tak, nie dochodzi.

Nie zwisa, dlatego to jest dziwne.

Ale przepisa³em program od nowa, teraz wszystko chodzi w obie strony, problem by³ gdzie¶ w "makefile" z adresami segmentów kodu - czê¶æ by³a w sekcji bootloadera, czê¶æ w sekcji programu g³ównego. Teraz wszystko jest w sekcji bootloadera i komunikacja dzia³a, ale pojawi³ siê problem z zapisem do pamiêci programu. Niby siê zapisuje, porównujê to co zapisane z tym co powinno byæ i jest ok, ale PonyProg odczytuje tylko "FF".

Darek ¯o³na

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required