Przerwanie przerwania AVR atmega8

Czy da sie zrobic wlasnie cos takiego jak w czasie obslugi jednego przerwania przyjąć kolejne?

Robie sobie taki zegarek wirujacy (Propeller display) i obsluge wyswietalania napisu mam w przerwaniu od transoptora szczelinowego INT0, a na INT1 chcialbym powiesic IR receiver TSOP1736, a do tego chcialbym jeszcze obsluzyc czujnik Temp DS18B20 i jakiegos RTC czy dobrze mysle ze uda mi sie to wszystko obslozyc jedna malutka atmega8? Program pisze w ASM czy lepiej od razu pomyslec o rozbudowie hardware'u. Pozdrawiam Bart.

Reply to
bart
Loading thread data ...

bart pisze:

To wszystko zależy od tego jakiego rzędu to są czasy itp. Aby przerwać przerwanie musisz po prostu odblokować przerwania w procedurze obsługi przerwania ;)... ale wówczas KAŻDE INNE przerwanie przerwie aktualnie wykonywane przerwanie ;).. no ale nic :P.. po kolei:

- wyświetlanie obsługujesz TYLKO za pomocą przerwania INT0, czy może później są jeszcze jakieś zależności czasowe i wykorzystujesz jakiś licznik??

- jak często będą zgłaszane poszczególne przerwania i jakiego rzędu czasy są potrzebne na obsługę czujnika temperatury albo odebranie sygnału z IR??

Co do rozbudowania hardware'u - jeśli chcesz, żeby to było małe, to trzeba wszystko bardzo dokładnie przemyśleć ;)... Jeśli sterownik może być duży, to może warto dorobić jakiś układzik zewnętrzny, i początkowo go nie montować... tylko - jaki?? Umiesz programować CPLDki??

Pozdrawiam Konop

PS Swego czasu miałem problem, żeby jednocześnie obsłużyć wyświetlacz LED i czujnik temperatury 1wire ;)... ale wystarczyło użyć głowy i odpalić wszystko w odpowiedniej kolejności i poszło :)... dodatkowo, to był BASCOM (korzystałem z gotowych procedur i nie mogłem się "wstrzelić" w środek procedury z niczmy) i 1wire totalnie software'owo ;)...

Reply to
Konop

Przerwanie w przerwaniu mozesz zrobic bez problemu, wystarczy, ze w procedurze obslugi przerwania odblokujesz przerwania, najlepiej wpierwszej instrukcji. Tylko wez pod uwage, ze czytajac DS1820, czy IR nie bedziesz wtedy mial zadnych gwarancji co do czasu wykonania poszczegolnych instrukcji co sie moze fatalnie odbic wszelkich petlach opozniajacych. Ale IR mozesz zrobic na UART, ktory jest w ATMega, z DS tez jakos sobie poradzisz.

Reply to
T.M.F.

entroper pisze:

Bo 1wire trzeba zorganizować w przerwaniach (timera + ew. zewnętrzne) a nie robić na piechotę z opóźnieniami w stylu _delay_us (240) i drżeniem o każde dodatkowe przerwanie.

Reply to
Adam Dybkowski

Nigdy niekonfigurowalem USART'a ale brzmi to bardzo interesujaco, czy sadzicie ze moznaby go skonfigurowac np do odbioru "RC5" czy tego juz za wiele? Wiem ze moge sobie tego poszukac ale to potrwa, a niemoge sie juz doczekac :) Pozdrawiam!

PS wielkie dzieki za cenne uwagi :).

Reply to
bart

Q pisze:

To jest jedna strona medalu. Najlepiej w ogóle w przerwaniu tylko zaznaczyć w globalnej fladze (volatile!), że coś jest do zrobienia - a właściwą dłuższą robotę przerzucić do głównej pętli programu. Oprócz oczywiście operacji krytycznych czasowo czyli np. odczyt bajtu z UARTu czy wysłania kolejnej próbki dźwięku do C/A.

Reply to
Adam Dybkowski

Odpowiadaj pod postem. Poszukaj not aplikacyjnych Atmela, tam jest przyklad jak zrobic RC5 na UART. Co do 1-wire to jak Adam sugerowal najlepiej odmierzac czas przerwaniami albo jakos sprytnie wykorzystac timery.

Reply to
T.M.F.

Przegladalem noty aplikacyjne jedyne co znalazlem o RC5 to AVR410 i AVR415 jedna dotyczy odbioru rc5, ale niestety nie przez USART, a druga to opis nadajnika RC5 tez nie przez USART. Pierwszą wykorzystalem i program z niej udalo sie odpalic, tylko ze zjada sporo zasobow: przerwania i timer, a co najgorsze sporo czasu. Jesli ktos ma jakiekolwiek materiualy AVR USART <-> RC5 to prosze o podpowiedź. (Google slabiutko) Obawiam sie jednak ze harakterystyka rc5, z jego Bifazowym kodowaniem bitow, chyba bedzie nie do ugryzienia przez UART czy USART, ktory jest jednak standartem transmisji szeregowej z tego co zdazylem doczytac. Pewnie jedyne co mi pozostaje to skonstruowac spec. Pilota nadajacego w USART.

Pozdrawiam i milego Weekendu! Bart.

Reply to
bpoznan

Bo to nie chodzi o to, ze dostaniesz z UART gotowy wynik, chociaz w nowszych ATMegach z USART chyba jest to obslugiwane. Natomiast UART ma ta mila ceche, ze mozesz go wykorszystac do samplowania danych, zamiast czekac w petli w obsludze przerwania RxD odczytujesz rejestr danych i sobie je analizujesz.

Reply to
T.M.F.

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.