[AVRGCC] Problem UART na przerwaniach
Pawel K - 12-04-2007 18:45
[AVRGCC] Problem UART na przerwaniach Witam,
chcialem wykozystac dobrodziejstwo transmisji szeregowoj
wykozystyjacej przerwania i zaczynaja sie schody. ATMEGA128
na 100% wylaczony tryb 103ki !!
Przejzalem wiele przykladow i nic mi to nie rozjasnilo mojego
problemu.
Stowrzylem bufor, zapisalem do niego dane, zainicjowalem
transmisje:
if (Uart0Status == Tx_Busy || data == NULL) return false;
else {
TxPtr = data;
TxPPtr = (uint8_t *)data;
TxLen = 0;
Uart0Status = Tx_Busy;
UCSR0B |= _BV(UDRIE0);
}
w przerwaniu juz wycialem wszystko zeby wyeliminowac
wszelkie bledy i wyglada tak:
SIGNAL(SIG_UART0_TRANS){
UCSR0B &= ~_BV(UDRIE0);
Uart0Status = Tx_Ready;
}
kozystam jeszcze z 3ech przerwan:
zewnetrzengo generowanego przez RTC co 1 sek,
TIMERA0 do odczytu klawiatury oraz TIMERA1 w trybie PWM.
Dodam ze mam wachdoga ustawionego na 2 sek. Resetowany jest
w przerwaniu wywolywanym przez RTC co 1 sek.
Problem z uartem polega na tym ze zawiesza mi caly uklad.
Watchdog resetuje uklad po 2 sek po czym znowu zwisa .... i tak w kolko.
Prosze o jakies sugestie ...
pozdrawiam
Pawel K
Jurek Szczesiul - 12-04-2007 19:45
Thu, 12 Apr 2007 18:24:10 +0200, na pl.misc.elektronika, Pawel K
napisał(a):
> UCSR0B |= _BV(UDRIE0);
> SIGNAL(SIG_UART0_TRANS){
Włączasz przerwanie "data register empty interrupt"
a obsługujesz
"transmit complete interrupt"
- to dwie oddzielne rzeczy.
Brak obsługi SIG_UART_DATA powoduje ciągły przeskok
( avrgcc) do obsługi bad interrupt - czyli w praktyce do ciągłego resetu
tak jak u siebie obserwujesz.
--
Pozdrowienia
Jurek Szczesiul
Pawel K - 13-04-2007 16:45
Jurek Szczesiul napisał(a):
> Thu, 12 Apr 2007 18:24:10 +0200, na pl.misc.elektronika, Pawel K
> napisał(a):
>
>> UCSR0B |= _BV(UDRIE0);
>
>> SIGNAL(SIG_UART0_TRANS){
>
> Włączasz przerwanie "data register empty interrupt"
> a obsługujesz
> "transmit complete interrupt"
> - to dwie oddzielne rzeczy.
> Brak obsługi SIG_UART_DATA powoduje ciągły przeskok
> ( avrgcc) do obsługi bad interrupt - czyli w praktyce do ciągłego resetu
> tak jak u siebie obserwujesz.
>
Dzieki pomoglo.
Wstyd przyznac, ale pisalem to majac przed oczami Panski
artykul w EP :) nie ma to jak kontakt "bezposredni"
pozdrawiam
Pawel K
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl