[AVR C] - co tu jest nie tak

Witam grupowiczow. Trenuje wlasnie C pod AVR, konkretnie atmega8. Staram sie napisac program wysylajacy lancuch znakow przez RSa. Oto co udalo mi sie napisac:

char napis[14] = "Cos Cos Cos!"; void String2RS(char *str); void Char2RS(char Znak); int main(void) { UBRRH =0; //ustawianie predkosci UBRRL= 12; UCSRC = 0x86; UCSRB = 1<<TXEN; for(;;) { String2RS(napis); _delay_loop_2(Licznik); // petla opozniajaca _delay_loop_2(Licznik); _delay_loop_2(Licznik); _delay_loop_2(Licznik); } return 0; } void String2RS(char *str) { int n = 0; while (str[n]) { Char2RS(str[n]); n++; } } void Char2RS(char Znak) { UDR = Znak; while (!(UCSRA & 1<<TXC)) {} // czekanie na koniec transmisji }

Wynik dzialania tego programu jest taki ze wysyla jedynie dwa pierwsze znaki lancucha 'znaki'. Pytanie moje takie - co ja robie nie tak.

Pozdrawiam Tomek

Reply to
Office
Loading thread data ...

a moze tak:

void Char2RS(char Znak) { while ( !( UCSRA & ( 1<<UDRE ) ) ) ; // Flaga UDRE jest zerowana po zapisaniu rejestru UDR //i ustawiana na "1" w chwili przenoszenia danej z rejestru UDR // do nadawczego rejestru przesuwajacego UDR = Znak; }

Reply to
Piotr

Dziekuje :) - pomoglo.

//i

Reply to
Office

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.