Kiedys prosilem Was o pomoc w uruchomieniu portu USART w ATmega128. Teraz chce zrobic to samo dla ATmega32. Myslalem, ze wystarczy dostosowac uruchomiony kod dla 128-ki i wszystko bedzie hulac, niestety pomylilem sie. Adoptowany program wyglada nastepujaco:
- inicjalizacja dla 2400 8e1, kwarc 11,0592MHz uchar USARTinit(void) { unsigned int baud; baud = 287; /* Set baud rate */ UBRRH = (uchar)(baud>>8); UBRRL = (uchar)baud; UCSRC = 3<<UCSZ0; /* Set data bits */ UCSRC |= (2<<UPM0); /* Set Parity */ UCSRC |= (0<<USBS); /* Set stop bits */ /* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE); return 1; }
- Przerwanie nadajnika SIGNAL( SIG_USART_TRANS ) { static char i='a';
cli(); // disable all interrupts UDR = i; sei(); // enable all interrupts } W przerwaniu dla uproszczenia wysylam jedynie stala wartosc. Niestety, w terminalu w PC odbierane sa jedynie zera (0). Przewody i uklad sprawdzilem. Wydaje mi sie, ze problem lezy po stronie programu. Dziwi mnie to, ze analogicznie zbudowane funkcje dla 128-ki dzialaja. Moze podpowiecie mi gdzie moze lezec problem? Z gory dziekuje.
Jacek