Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Przerwania zewnętrzne at90s2313 Int0 i int1

22 Cze 2005 19:49 1380 5
  • Poziom 12  
    Witam serdecznie.
    Mam pytanie dotyczące przerwań zewnetrzych procesora Int0 Int1 at90s2313.
    A więc przerwanie zewnetrzne moge skonfigurować na trzy sposoby. Detekcje zera, detekcje zbocza opadającego lub detekcje zbocza rosnącego.
    Moje pytanie jest takie czy przy konfiguracji np zbocza rosnącego przerwanie zostanie wykonane z przejścia sygnału "0" do "1" przyczym zbocze rosnące jest bardzo strome - albowiem jest to sygnał prostokatny gdzieś o częstotliwości 50khz.

    Dziękuje za wskazówki i informacje pozdrawiam
  • Poziom 27  
    Warhard wrote:
    Cytat:
    Moje pytanie jest takie czy przy konfiguracji np zbocza rosnącego przerwanie zostanie wykonane z przejścia sygnału "0" do "1" przyczym zbocze rosnące jest bardzo strome - albowiem jest to sygnał prostokatny gdzieś o częstotliwości 50khz.

    Tak. Im bardziej strome zbocze tym lepiej. Koniecznie przeczytaj dokumentację. Będziesz wiedział ile czasu minie od wystąpienia zbocza do rozpoczęcia procedury przerwania i czy procedura się wyrobi do czasu wystąpienia następnego zbocza.
  • Poziom 19  
    Jesli ustawisz zbocze narastajace to przerwanei bedzie wyzwalane przejsciem z 0 na 1. A co do stromosci, to 50KHz to zadna czestotliwosc. Procek obsluguje poprawnie 4xmnijesze czestotliwosci od zegara. Dokladne dane w dokumentcji. Problme tylko z napisaneim softu ktory by zmiescil sie medzy bardzo szybkimiprzerwaniami.
  • Pomocny post
    Poziom 27  
    gmp wrote:
    Cytat:
    Procek obsluguje poprawnie 4xmnijesze czestotliwosci od zegara.

    Dziwne, ale z dokumentacji wynika coś zupełnie innego.
    Mikrokontroler poprawnie rozpoznaje zmianę stanu (przy reakcji na zbocze) o ile stan ten trwa dłużej niż jeden cykl zegarowy. Przy czasach krótszych może wykryć albo nie.
    Pan Arkadiusz Krysiak w swojej książce o AT90S2313 pisze:
    Cytat:
    Od momentu pojawienia się zdarzenia, wywołującego przerwanie muszą upłynąć 4 cykle zegarowe. Jeśli po upływie 4 cykli zegarowych jednostka centralna jest w trakcie wykonywania rozkazu o czasie trwania większym niż 1 cykl zegarowy, obsługa przerwania zostaje wstrzymana do zakończenia tego rozkazu. Po tym czasie jednostka centralna przystępuje do wykonania obsługi przerwania. W czasie 2 cykli rozkazowych na stos zostaje odłożony adres powrotu. Następnie zostaje wykonana instrukcja, znajdująca się pod adresem wektora przerwania odpowiedniego dla zdarzenia powodującego przerwanie. Łączny czas przyjęcia przerwania (razem z wykryciem go) trwa minimum 8 cykli rozkazowych. Powrót z obsługi przerwania trwa 4 cykle zegarowe, podczas których zostaje podniesiony ze stosu adres powrotu oraz ustawiany znacznik zezwolenia naprzerwania globalne I(SREG). Po wyjściu z przerwania zostaje wykonana przynajmniej jedna instrukcja z programu głównego, zanim zostanie przyjęte kolejne przerwanie, pod warunkiem wykonania 4 cykli zegarowych, podczas których jednostka centralna wykrywa zaistnienie zdarzenia zgłoszenia przerwania.

    Ja się już doliczyłem minimum 13 cykli zegarowych a jeszcze niczego nie zrobiliśmy w związku z obsługą przerwania (oprócz powrotu). Nawet jeśli autor ma rację tylko w połowie to i tak mikrokontroler nie obsługuje 4 x mniejszych częstotliwości. A na dodatek w dokumentacji napisali, że jeśli kolejne zbocze wystąpiło w trakcie obsługi jakiegoś przerwania i stan na wejściu wrócił do tego przed wystąpieniem zbocza zanim mikrokontroler zakończył obsługę trwającego przerwania to niestety... przeminęło z wiatrem. Tak, czy siak, dokumentację trzeba czytać a cykle zegarowe liczyć. Nie ma nic za darmo :wink:.
  • Poziom 12  
    Dziękuje za odpowiedź na moje pytanie lecz problem inny się pojawił bo czytając wypowiedź swojego poprzednika wynika z tego ze sama obsługa przerwania jest "cyklo żerna". A dlamnie cykl jest na wagę złota :)

    Dziekuje i pozdrawiam
  • Poziom 19  
    Jacu$ napisał:

    Nawet jeśli autor ma rację tylko w połowie to i tak mikrokontroler nie obsługuje 4 x mniejszych częstotliwości. A na dodatek w dokumentacji napisali, że jeśli kolejne zbocze wystąpiło w trakcie obsługi jakiegoś przerwania i stan na wejściu wrócił do tego przed wystąpieniem zbocza zanim mikrokontroler zakończył obsługę trwającego przerwania to niestety... przeminęło z wiatrem. Tak, czy siak, dokumentację trzeba czytać a cykle zegarowe liczyć. Nie ma nic za darmo :wink:.

    Oczywiscie masz racej ze mikrokontroler nie obsluzy przerawnai o 4x mniejszej czestotliwosci niz zegar, jest to logiczne bo nie zdazl by wykonac zadnego rozkazu. Mowiac o 4x mniejszej czestotliwosci mialem na mysli trwanie stanu 1 przy narastajacym zboczu. Niestety nie doczytalem dokaldnie bo w jednym miejsc DS odsylaja do drugiego , gdzie nie jest to wyjsnione, i wzialem to z wykresu obslugi przerawania. No i chyba nieweile sie pomylilem.