ATmega128 i przerwanie USART

Programuje dla mikrokontrolera w WinAVR. Zbudowalem funkcje nadawania do USART1. Uruchomilem ja na poczatku bez uzycia przerwan i wszystko jest w porzadku. Schody zaczely sie gdy probuje uruchomic przerwanie nadajnika. Mimo podparcia sie dokumentacja avr-libc i datascheet mikrokontrolera jakos nie chce mi program wejsc w przerwanie po wyslaniu z nadajnika. Program inicjalizuje USART mikrokontrolera tak: void USARTinit(uchar Port, int baud, uchar bits, uchar Parity, uchar stopBits) { switch(baud){ /* Set baud rate */ case 9600: baud = 12; break; }

UBRR1H = (uchar)(baud>>8); UBRR1L = (uchar)baud; switch(bits){ /* Set data bits */ case 8: UCSR1C = (3<<UCSZ0); break; }

switch(Parity){ /* Set Parity */ case 'e': UCSR1C |= (2<<UPM0); break; } switch(stopBits){ /* Set stop bits */ case 2: UCSR1C |= (1<<USBS); break; // two stop bits } UCSR1B = 1<<TXEN; /* Enable transmitter */ }

funkcja wysylajaca wyglada tak: void USARTtrans( uchar data ) { while ( !( UCSR1A & (1<<UDRE)) ); /* Wait for empty transmit buffer */ UDR1 = data; /* Put data into buffer, sends the data */ sei (); }

jest do tego jeszcze funkcja obslugujaca przerwanie uruchamiane po oproznieniu rejestru nadajnika SIGNAL( SIG_USART1_TRANS ){ flash2Slow(); }

Program wedlug tego co napisalem ma wyslac jeden znak i powienien wejsc w przerwanie gdzie jest funkcja migajaca LEDami. Niestety nic takiego sie nie dzieje. Miga w petli inny LED w funkcji main a ten ciagle milczy. Wydaje mi sie, ze wszystko jest ustawione O.K. i nie wiem dlaczego to nie dziala. Ustawialem funkcje przerwaniowa rowniez jako INTERRUPT- bez efektu. Teraz juz mikrokontroler na pewno dziala w trzybie ATmega128 wiec ta przyczyna odpada. Co ciekawe gdy ustawie ciagle wysylanie znakow do portu (bez przerwan) to na komputerze w terminalu widze, ze port dziala. Podejzewam, ze przyczyna jest jakas prozaiczna ale nie moge na to wpasc. Bardzo was prosze o pomoc.

Jacek M.

Reply to
Jacek M.
Loading thread data ...

Pomoglo ,dziekuje. :-)) Pozdrawiam

Jacek M.

Reply to
Jacek M.

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.