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

[MEGA16+BASCOM] przerwanie generowane stanem wysokim

crooveck 19 Lis 2009 20:37 1820 10
  • #1 7283173
    crooveck
    Poziom 10  
    Witam
    W projektowanym urządzeniu popełniłem pewien błąd, niestety płytki zostały już wytrawione i polutowane a znalezienie przyczyny nieprawidłowości zajęło mi dość sporo czasu, więc wolałbym uniknąć ponownego składania układu.

    Mam kilka przycisków połączonych z bramką NAND. Wciśnięcie któregokolwiek generuje na wyjściu bramki stan wysoki, który dalej jest kierowany na INT0 (jak wiadomo przerwania są wywoływane przez stan niski na INT0)

    Problem w tym, że po włączeniu zasilania w urządzeniu, na INT0 od razu pojawia się stan niski (z bramki NAND - bo żaden przycisk nie został wciśnięty) no i generowane jest przerwanie, które z kolei ustaje gdy wcisnę dowolny z przycisków (wtedy na INT0 pojawi się stan wysoki) wówczas wykonuje się główny blok programu.

    Jak widać jest to sytuacja zupełnie przeciwna do pożądanej. Czy jest jakiś sposób na PROGRAMOWE wyeliminowanie tego błędu? IMHO najlepiej by było, gdyby udało mi się zmusić system przerwań do reakcji na stan wysoki na wejściu INT0.
    Dodam, że próbowałem ustawić 'Config INT0 = Rising' ale nie wiele to pomogło.

    Czy ktoś z Was ma jakieś pomysły? Będę wdzięczny za każdą podpowiedź, która uratuje mnie przed ponownym projektowaniem tego układu.

    BTW czy istnieje jakiś program-symulator umożliwiający przetestowanie projektowanego układu? Chodzi oczywiście o bardziej skomplikowane rzeczy niż badanie stanu bramek logicznych na mrugających lampkach.
    Szczytem marzeń jest jakiś pakiet w którym zaprojektuję układ oparty o mikrokontroler, następnie umożliwi mi on wirtualne wgranie firmware'u i testowanie tego.
    Czy to tylko pobożne marzenia?


    Pozdrawiam
    crooveck
  • #3 7283806
    janbernat
    Poziom 38  
    Może zamiast NAND 7400 Zastosować AND 7408?
    Wyprowadzenia te same- ale nie analizowałem reszty.
    I daj schemat podłączenia bramek- może NOR a nie AND?
  • #4 7284699
    Konto nie istnieje
    Poziom 1  
  • #6 7285104
    crooveck
    Poziom 10  
    Dzięki wszystkim za odpowiedzi, na początek spróbuję zmienić bramkę na AND, po wstępnym przeanalizowaniu układu to powinno wystarczyć.

    Może zadam głupie pytanie, ale czym są owe przyciski NO/NC?

    Balu, falling/rising edge sprawdzałem, to był pierwszy pomysł który przyszedł mi do głowy, niestety, ku mojemu zdziwieniu nie zadziałał poprawnie (ale nie pytaj mnie dlaczego).

    Tutaj jest poglądowy schemat połączeń:
    [MEGA16+BASCOM] przerwanie generowane stanem wysokim

    Przyciski są podłączone do wejść dekodera,który przesyła do uC numer wciśniętego przycisku, po drodze jest on 'podsluchany' przez bramke nand, ktora wywoluje przerwanie w momencie wcisniecia czegokolwiek.
  • #7 7285130
    dawid512
    Poziom 32  
    IMHO prościej będzie dorzucić jakiś NPN na wyjściu bramki i sprawa załatwiona.
  • #8 7285210
    crooveck
    Poziom 10  
    raczej odpada, nie chcę niczego trawić i lutować od nowa, a zmiana bramek jest chyba najprostszą metodą odwrócenia działania układu
  • #9 7285306
    janbernat
    Poziom 38  
    Zmiana bramki z 74hc20 na 74hc21 powinna załatwić sprawę.
    Oczywiście pod warunkiem że wszystkie wejścia enkodera są po włączeniu w stanie wysokim.
  • #10 7286815
    Konto nie istnieje
    Poziom 1  
REKLAMA