zakolejkowanie przerwania lub inaczej?
Masz problem? Zapytaj na forum elektroda.pl
From: MiKe <WYTNIJTOsq9fqq_at_nospam_sq9fqq.prv.pl>
Subject: zakolejkowanie przerwania lub inaczej?
Date: Thu, 08 Mar 2001 10:09:33 +0100
Mam procesor AVR z SPI i do tego interfejsu podpiety przetwornik A/D
oraz pamiec (DataFlash). Procesor bedzie pracowac jako master, ale
przetwornik generuje sygnal przerwania. Czesc danych z A/D bedzie
zapisywana w zewnetrznej pamieci, ale wszystko musi przejsc przez proca.
Problem w tym, ze nie moge gadac z A/D zanim nie skoncze obslugi pamieci
(no chyba tak...?). Jezeli w tym momencie przyjdzie przerwanie, to musze
je zakolejkowac, zeby skonczczyc rozmowe z pamiecia. Nie moge zablokowac
przerwan na ten czas, bo moge cos przegapic. Jezeli znowoz beda
zalaczone, to moze przyjsc jakies inne w miedzyczasie i sie spoznie.
Rozwazalem podpiecie pamieci pod inne piny, ale software-owa obsluga SPI
pozre wiecej czasu, ktory chce wykozystac na cos innego, a poza tym
brakuje tych kilku pinow.
Jestem troche nieprzygotowany i nie wiem jak duzo danych i jak czesto
bede czytal przetwornik, ale zapewne sie wyrobie na jednym interfejsie z
pamiecia.
Bede wdzieczny za podpowiedzi.
Michal
From: "Arek Karas" <karas_at_nospam_thb.pl>
Subject: Re: zakolejkowanie przerwania lub inaczej?
Date: Thu, 8 Mar 2001 10:32:42 +0100
Witam
Jesli podepniesz przerwanie od A/D na INT0 to bedzie ono mialo najwyzszy
priorytet.
Jesli przerwania sa wylaczone, to flagi od tych przerwan sa nadal ustawiane.
A wiec jesli wylaczysz przerwania, a w tym czasie jakies przerwania sie
wygeneruja, to bedzie ustawiona flaga od tego przerwania. Po wlaczeniu
przerwan obsluzone bedzie najpierw to przerwanie, ktore ma najwyzszy
priorytet( INT0, INT1, itd.), niezaleznie od kolejnosci zgloszenia.
Pozdrawiam
AK
"MiKe" <WYTNIJTOsq9fqq_at_nospam_sq9fqq.prv.pl> wrote in message
news:3AA74C4D.BE95421_at_nospam_sq9fqq.prv.pl...
Mam procesor AVR z SPI i do tego interfejsu podpiety przetwornik A/D
oraz pamiec (DataFlash). Procesor bedzie pracowac jako master, ale
przetwornik generuje sygnal przerwania. Czesc danych z A/D bedzie
zapisywana w zewnetrznej pamieci, ale wszystko musi przejsc przez proca.
Problem w tym, ze nie moge gadac z A/D zanim nie skoncze obslugi pamieci
(no chyba tak...?). Jezeli w tym momencie przyjdzie przerwanie, to musze
je zakolejkowac, zeby skonczczyc rozmowe z pamiecia. Nie moge zablokowac
przerwan na ten czas, bo moge cos przegapic. Jezeli znowoz beda
zalaczone, to moze przyjsc jakies inne w miedzyczasie i sie spoznie.
Rozwazalem podpiecie pamieci pod inne piny, ale software-owa obsluga SPI
pozre wiecej czasu, ktory chce wykozystac na cos innego, a poza tym
brakuje tych kilku pinow.
Jestem troche nieprzygotowany i nie wiem jak duzo danych i jak czesto
bede czytal przetwornik, ale zapewne sie wyrobie na jednym interfejsie z
pamiecia.
Bede wdzieczny za podpowiedzi.
Michal
From: MiKe <WYTNIJTOsq9fqq_at_nospam_sq9fqq.prv.pl>
Subject: Re: zakolejkowanie przerwania lub inaczej?
Date: Thu, 08 Mar 2001 11:48:49 +0100
To znaczy, ze jesli przy zablokowanych przerwaniach cos sie zglosi np na INT0, a
nastepnie odblokuje przerwania (np rozkazem SEI lub ustawiajac bit maski
przerwan) to nastapi normalny skok do tablicy wektorow i obsluga?
Michal
From: "Arek Karas" <karas_at_nospam_thb.pl>
Subject: Re: zakolejkowanie przerwania lub inaczej?
Date: Thu, 8 Mar 2001 13:34:51 +0100
Tak, o ile nie wyzerujesz flagi.
Zreszta mialem z tym nieco problemow kiedys, bo pomimo wylaczania przerwania
i tak przechodzilo do obslugi. W koncu sie okazalo, ze przed wlaczeniem
przerwania trzeba flage wyzerowac( wpisujac 1 !!!) i wtedy jest OK.
AK
"MiKe" <WYTNIJTOsq9fqq_at_nospam_sq9fqq.prv.pl> wrote in message
news:3AA76390.6BEBD89C_at_nospam_sq9fqq.prv.pl...
To znaczy, ze jesli przy zablokowanych przerwaniach cos sie zglosi np na
INT0, a
nastepnie odblokuje przerwania (np rozkazem SEI lub ustawiajac bit maski
przerwan) to nastapi normalny skok do tablicy wektorow i obsluga?
Michal
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: zakolejkowanie przerwania lub inaczej?
Date: Thu, 8 Mar 2001 11:25:28 +0100
Nie moge zablokowac
przerwan na ten czas, bo moge cos przegapic. Jezeli znowoz beda
zalaczone, to moze przyjsc jakies inne w miedzyczasie i sie spoznie.
Czegos tu nie rozumiem. Przetwornik A/D i tak nie buforuje danych wiec
musisz sie zmiescic z odczytem w czasie pomiedzy kolejnymi przerwaniami.
Moim zdaniem trzeba obslugiwac przerwania natychmiast, a w pamieci AVR-a
zrealizowac fifo do buforowania odczytanych z A/D danych.
--
pozdrawiam, peters
peters_at_nospam_poczta.onet.pl
http://peters.republika.pl (strona Petersa dla elektroników)