ATmega128 i przerwanie USART
Masz problem? Zapytaj na forum elektroda.pl
From: "Jacek M." <tymkonto_at_nospam_poczta.onet.pl>
Subject: ATmega128 i przerwanie USART
Date: Sat, 28 May 2005 10:32:54 +0200
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.
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: ATmega128 i przerwanie USART
Date: Sat, 28 May 2005 15:52:05 +0200
Użytkownik "Jacek M." <tymkonto_at_nospam_poczta.onet.pl> napisał w wiadomości
news:d79abe$pe9$1_at_nospam_news.onet.pl...
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.
...
trzeba jeszcze wlaczyc przerwania w USART
TXCIE lub UDRIE w UCSRB
--
Andrzej
From: "Jacek M." <tymkonto_at_nospam_poczta.onet.pl>
Subject: Re: ATmega128 i przerwanie USART
Date: Sat, 28 May 2005 18:34:00 +0200
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.
...
trzeba jeszcze wlaczyc przerwania w USART
TXCIE lub UDRIE w UCSRB
--
> Andrzej
Pomoglo ,dziekuje. :-))
Pozdrawiam
Jacek M.