Cześć.
Mam pytanie odnośnie przewań (wszystkich) i związanych z nimi przewań.
Jeśli nadchodzi przerwanie to jest ustawiona flaga danego przetrwania i jest ona zerowana na początku obsługi danego przerwania. Jesli są ustawione bity globalnego zezwolenia i danego przerwania to zostanie ono obsłużone.
A co będzie jeżeli nap będzie zablokowane dane przewranie (nie będzie ustawiony bit zezwolenia dla konkretnego przerwania) i nadejdzie naprzykład przepełnienie licznika lub dla zewnętrznego zbocze opadające to zostanie ustawiona flaga od tego przerwania ale nie zostanie ono obsłuzone i falga nie zostanie wyzerowana. jesli teraz odblokuję dane przewanie to będzie ono obsłużone jako tzw. przestarzałe. I mam pytanie jak zrobić aby odblokowując przerwanie nie było ono obsłużone. Podobno można wpisać 1 do danego bitu wyzerowując go, ale jeżeli jest 1 to zostanie wyzerowana a co się stanie jak by było 0 - to czy nie sprawię że zostanie obsłużone?
Jak możeci to wytłumaczcie mi to.
Sławek.
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięFlagi przerwań w At90S2313
Moderatorzy:Jacek Bogusz, Moderatorzy
Re: Flagi przerwań w At90S2313
Parę informacji wstępnych:Cześć.
Mam pytanie odnośnie przewań (wszystkich) i związanych z nimi przewań.
Jeśli nadchodzi przerwanie to jest ustawiona flaga danego przetrwania i jest ona zerowana na początku obsługi danego przerwania. Jesli są ustawione bity globalnego zezwolenia i danego przerwania to zostanie ono obsłużone.
A co będzie jeżeli nap będzie zablokowane dane przewranie (nie będzie ustawiony bit zezwolenia dla konkretnego przerwania) i nadejdzie naprzykład przepełnienie licznika lub dla zewnętrznego zbocze opadające to zostanie ustawiona flaga od tego przerwania ale nie zostanie ono obsłuzone i falga nie zostanie wyzerowana. jesli teraz odblokuję dane przewanie to będzie ono obsłużone jako tzw. przestarzałe. I mam pytanie jak zrobić aby odblokowując przerwanie nie było ono obsłużone. Podobno można wpisać 1 do danego bitu wyzerowując go, ale jeżeli jest 1 to zostanie wyzerowana a co się stanie jak by było 0 - to czy nie sprawię że zostanie obsłużone?
Jak możeci to wytłumaczcie mi to.
Sławek.
- ustawienie jakiegoś bitu oznacza wpisanie do niego 1
- wyzerowanie bitu oznacza wpis do niego 0.
Rozpatrzmy to na przykładzie (przertwania od przepełnienia timera 0, procek 2313):
- nie masz ustawionego bitu TOIE0 w TIMSK, ale jeżeli jest zaprogramowany licznik do zliczania, to on będzie zliczał i dojdzie do przepełnienia, czyli ustawienia TOV0, którego ustawienie jest sygnałem przerwania. przerwanie się nie zgłosi, bo blokuje j TOIE0.
- jeżeli zostanie ustawiony TOIE0 i był już ustawiony TOV0 to wygeneruje się przerwanie i nastąpi jego obsługa,
- jeżeli zostanie ustawiony TOIE0 i nie był już ustawiony TOV0 to nie wygeneruje się przerwanie i nastąpi jego obsługa.
Aby nie wygenerowało się przerwanie należy:
- wyzerować bit TOV0,
- ustawić bit TOIE0.
W ten sposób została włączona obsługa przerwań bez obsługi "zaległości".
Tak gawel masz rację ustawienie bitu to 1 a wyzerowanie to 0, ALE wtym przypadku wyzerowanie to wpisanie jedynki na odpowiednią pozycję (patrz kata katologowa).
Ja tylko proszę o potwierdzenie tylko czy dobrze to zrozumiałem a nie tego czy jedynka to ustawienie bitu, właśnie chodzi o to, że w tym przypadku j est wyjątek i jesli flaga ma wartośc 1, czyli jest ustawiona to wyzerować ją można wpisując właśnie 1 a nie 0!!!
Sławek.
Ja tylko proszę o potwierdzenie tylko czy dobrze to zrozumiałem a nie tego czy jedynka to ustawienie bitu, właśnie chodzi o to, że w tym przypadku j est wyjątek i jesli flaga ma wartośc 1, czyli jest ustawiona to wyzerować ją można wpisując właśnie 1 a nie 0!!!
Sławek.
Dobrze gadaszTak gawel masz rację ustawienie bitu to 1 a wyzerowanie to 0, ALE wtym przypadku wyzerowanie to wpisanie jedynki na odpowiednią pozycję (patrz kata katologowa).
Ja tylko proszę o potwierdzenie tylko czy dobrze to zrozumiałem a nie tego czy jedynka to ustawienie bitu, właśnie chodzi o to, że w tym przypadku j est wyjątek i jesli flaga ma wartośc 1, czyli jest ustawiona to wyzerować ją można wpisując właśnie 1 a nie 0!!!
Nie, jesli bedzie tam 0 (zero) to nic sie z ta flaga nie stanie (pozostanie zerem, mimo ze probujesz wpisac tam 1), przynajmniej wg. tego co pamietam z zabaw w sumulatorze AVR Studio - polecam na przyszlosc pobawienie sie tym darmowym narzedziem.I mam pytanie jak zrobić aby odblokowując przerwanie nie było ono obsłużone. Podobno można wpisać 1 do danego bitu wyzerowując go, ale jeżeli jest 1 to zostanie wyzerowana a co się stanie jak by było 0 - to czy nie sprawię że zostanie obsłużone?
Pozdroffka
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 20 gości