RTV forum PL | NewsGroups PL

Co powoduje zawieszanie ATmega 162 w przerwaniu USART? Konkurs na rozwi±zanie!

AVR-GCC, przerwanie od USARTa, konkurs i piwo w nagrode ;)

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Co powoduje zawieszanie ATmega 162 w przerwaniu USART? Konkurs na rozwi±zanie!

Darek R.
Guest

Thu Apr 01, 2004 10:39 pm   



Witam!
Ostatnio drobny błąd w programie kosztował mnie ładnych kilka dni myślenia i
nerwów. Doszedłem już o co chodzi, ale ku przestrodze innym...
Ogłaszam konkurs - pierwsza osoba która zgadnie co jest źle w poniższym
kodzie i powoduje wieszanie się procka dostanie ode mnie piwo.

INTERRUPT (SIG_USART0_RECV)
{
if (UDR0==' ') odebrano=true;
}

Podpowiedzi:
- zmienna odebrano jest zdefiniowana jako bool volatile
- reszta kodu jest ok, przerwania włączone, odbiornik oczywiście też itd.
- przerwanie powinno w przypadku odebrania spacji ustawić flagę odebrano
- w rzeczywistości gdy _cokolwiek_ przyjdzie na USART0 (niekoniecznie
spacja) procek (ATmega 162) wisi

Czekam na poprawne odpowiedzi!

--
Pozdrowienia
Dariusz Rzońca

Tomek
Guest

Thu Apr 01, 2004 11:02 pm   



Witam!

Quote:

INTERRUPT (SIG_USART0_RECV)
{
if (UDR0==' ') odebrano=true;
}


Zamien INTERRUPT na SIGNAL !! Po szczegoly odsylam do FAQ projektu
AVRSide...

Tomek

Andy
Guest

Thu Apr 01, 2004 11:07 pm   



Użytkownik "Darek R." <drzonca@w.pl> napisał w wiadomości
news:c4i9dv$oh5$1@nemesis.news.tpi.pl...
Quote:
Witam!
Ostatnio drobny błąd w programie kosztował mnie ładnych kilka dni myślenia
i
nerwów. Doszedłem już o co chodzi, ale ku przestrodze innym...
Ogłaszam konkurs - pierwsza osoba która zgadnie co jest źle w poniższym
kodzie i powoduje wieszanie się procka dostanie ode mnie piwo.

INTERRUPT (SIG_USART0_RECV)
{
if (UDR0==' ') odebrano=true;
}

...

pewnie nie kasuje sie flaga zgloszenia przerwania
i po zakonczeniu obslugi wchodzi znow do przerwania

--
Andrzej

Andy
Guest

Thu Apr 01, 2004 11:28 pm   



Użytkownik "Tomek" <tomezz@poczta.onet.pl> napisał w wiadomo¶ci
news:c4iaj7$3cl$1@news.onet.pl...
Quote:
...
Zamien INTERRUPT na SIGNAL !! Po szczegoly odsylam do FAQ projektu
AVRSide...


no fakt
jak sie tylko przerwania odblokuja to zaraz wchodzi ponownie
do tej proc obslugi zanim odczyta z UDR0

--
Andrzej

QmX
Guest

Fri Apr 02, 2004 5:53 am   



Użytkownik "Darek R." <drzonca@w.pl> napisał w wiadomości
news:c4i9dv$oh5$1@nemesis.news.tpi.pl...
Quote:
INTERRUPT (SIG_USART0_RECV)
{
if (UDR0==' ') odebrano=true;
}

Klasyczny przykład złego użycia procedury obsługi przerwania typu INTERRUPT
(z włączoną obsługą przerwań w przerwaniu) dla przerwania zgłaszanego
warunkiem.

QmX.

Mister
Guest

Fri Apr 02, 2004 6:36 am   



"Darek R." <drzonca@w.pl> wrote in message
news:c4i9dv$oh5$1@nemesis.news.tpi.pl...
Quote:
Witam!
Ostatnio drobny błąd w programie kosztował mnie ładnych kilka dni myślenia
i
nerwów. Doszedłem już o co chodzi, ale ku przestrodze innym...
Ogłaszam konkurs - pierwsza osoba która zgadnie co jest źle w poniższym
kodzie i powoduje wieszanie się procka dostanie ode mnie piwo.

INTERRUPT (SIG_USART0_RECV)
{
if (UDR0==' ') odebrano=true;
}

A dlaczego używasz interrupt zamiast signal w takim wypadku??


Mister

QmX
Guest

Fri Apr 02, 2004 6:55 am   



Użytkownik "Mister" <wojpie@wywal_to.poczta.onet.pl> napisał w wiadomo¶ci
news:c4j55r$gfb$1@atlantis.news.tpi.pl...

Quote:
INTERRUPT (SIG_USART0_RECV)
Kiedy¶ zrobiłem literówkę w nazwie wektora przerwania. Smile

AVR-GCC nie raczył o tym poinformować.
Dopiero po analizie kodu wynikowego doszedłem do tego dlaczego proc się
ci±gle resetował. :-)

QmX.

Marcin Stanisz
Guest

Fri Apr 02, 2004 6:58 am   



W artykule <c4i9dv$oh5$1@nemesis.news.tpi.pl> Darek R. napisal(a):

Quote:
Witam!
Ostatnio drobny bł±d w programie kosztował mnie ładnych kilka dni my¶lenia i
nerwów. Doszedłem już o co chodzi, ale ku przestrodze innym...
Ogłaszam konkurs - pierwsza osoba która zgadnie co jest Ľle w poniższym
kodzie i powoduje wieszanie się procka dostanie ode mnie piwo.

Darek, musiałby¶ to piwo skrzynkami nam rozdawać Wink)) Ale jak± człowiek
ma satysfakcję (i pustkę, bo co nagle robić z nadmiarem wolnego czasu),
kiedy taki bł±d roztrzaska...

Pozdrawiam

Marcin Stanisz
--

"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"

Darek R.
Guest

Fri Apr 02, 2004 10:27 am   



Tomek napisał:
Quote:
Zamien INTERRUPT na SIGNAL !! Po szczegoly odsylam do FAQ projektu
AVRSide...

Dokładnie! Gratuluję zwycięstwa, słowo się rzekło, piwo u płota, po
szczegóły zapraszam na priv.
BTW: W faq tego nie znalazłem - może wtedy krócej bym nad tym siedział (u
siebie nie miałem dwóch linijek kodu do przeanalizowania tylko kilkaset - po
prostu procek się nagle wieszał...).

--
Pozdrowienia
Dariusz Rzońca

Darek R.
Guest

Fri Apr 02, 2004 10:28 am   



QmX napisał:
Quote:
Klasyczny przykład złego użycia procedury obsługi przerwania typu
INTERRUPT
(z włączoną obsługą przerwań w przerwaniu) dla przerwania zgłaszanego
warunkiem.

Dobrze, ale za póĽno - nagroda była tylko jedna ;)

--
Pozdrowienia
Dariusz Rzońca

Darek R.
Guest

Fri Apr 02, 2004 10:30 am   



Mister napisał:
Quote:
A dlaczego używasz interrupt zamiast signal w takim wypadku??

No wła¶nie chyba po to żeby potem nad tym siedzieć i zastanawiać się czemu
się zawiesza ;)

--
Pozdrowienia
Dariusz Rzońca

Darek R.
Guest

Fri Apr 02, 2004 10:34 am   



Marcin Stanisz napisał:
Quote:
Darek, musiałby¶ to piwo skrzynkami nam rozdawać Wink))

Nie no, piwo w nagrodę było jedno, dla pierwszego odpowiadaj±cego. Ale
następnym razem zrobię inaczej - jak się gdzie¶ znowu zatnę w programie to
od razu się Was zapytam Wink))

Quote:
Ale jak± człowiek
ma satysfakcję (i pustkę, bo co nagle robić z nadmiarem wolnego czasu),
kiedy taki bł±d roztrzaska...

Satysfakcja jest, to fakt. Pustki nie ma - po prostu robi się projekt dalej,
pamiętaj±c już na całe życie o unikaniu podobnych błędów.

--
Pozdrowienia
Dariusz Rzońca

Wojtek
Guest

Fri Apr 02, 2004 12:21 pm   



Użytkownik "Tomek" <tomezz@poczta.onet.pl> napisał w wiadomo¶ci news:c4iaj7$3cl$1@news.onet.pl...
Quote:

Zamien INTERRUPT na SIGNAL !! Po szczegoly odsylam do FAQ projektu
AVRSide...


Rzućcie jaki¶ link. Nie mogę tego znaleĽć...
Wojtek

elektroda NewsGroups Forum Index - Elektronika Polska - Co powoduje zawieszanie ATmega 162 w przerwaniu USART? Konkurs na rozwi±zanie!

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map