logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Konfiguracja przerwań zewnętrznych Int0/Int1 w AT90S2313 przy 50kHz

Warhard 22 Cze 2005 19:49 1755 5
REKLAMA
  • #1 1598827
    Warhard
    Poziom 12  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    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
  • REKLAMA
  • #2 1598958
    Jacu$
    Poziom 27  
    Posty: 730
    Pomógł: 119
    Ocena: 26
    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.
  • REKLAMA
  • #3 1598974
    gmp
    Poziom 19  
    Posty: 434
    Pomógł: 29
    Ocena: 28
    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.
  • REKLAMA
  • Pomocny post
    #4 1599118
    Jacu$
    Poziom 27  
    Posty: 730
    Pomógł: 119
    Ocena: 26
    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:.
  • REKLAMA
  • #5 1599673
    Warhard
    Poziom 12  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    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
  • #6 1601903
    gmp
    Poziom 19  
    Posty: 434
    Pomógł: 29
    Ocena: 28
    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.
REKLAMA