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

[Atmega32][c] przerwania w przerwaniach i ich odwołanie

smolar758 19 Maj 2010 21:35 1404 5
REKLAMA
  • #1 8096059
    smolar758
    Poziom 10  
    Witam,
    mam pytanie odnośnie wywoływania i odwoływania przerwań w przerwaniu.
    Czy dobrze myślę, że aby wywołać przerwanie w przerwaniu należy poprzedzić procedurę komendą sli()?
    Ale mam jeszcze inne pytanie - czy odwołując przerwanie w procedurze jego obsługi można go wyłączyć? Czy w tej samej procedurze można odwołać inne przerwanie.
    Np. w kodzie programu są uaktywnione przerwania INT1 i INT0 oraz napisane są procedury ich obsługi. Czy w tych procedurach możliwe jest wyłączenie innego przerwania lub INT0 ewentualnie INT1?
  • REKLAMA
  • #2 8096320
    mirekk36
    Poziom 42  
    Aleś teraz na maxa zakombinował, tak zakręciłeś, że szok ;) nie mówiąc już, że nie ma komendy sli();

    Krótko odpowiadając na szereg zakręconych i zapętlonych pytań - NIE MOŻNA..... coś całkowicie źle zrozumiałeś zasadę działania przerwań i ich obsługi.
  • REKLAMA
  • #3 8096708
    smolar758
    Poziom 10  
    sorki chodziło mi o sei() :| a pomerdało mi się z cli() czyli globalnym wyłączeniem przerwań.
    Jeśli dobrze zrozumiałem, to w procedurze obsługi przerwania np.INT1 nie można uruchomić np. przerwania od komparatora?
    To max zagmatwanie nie jest chyba takie tragiczne. Może na innym przykładzie będzie to bardziej jasne. Otóż chcę uruchomić w kodzie programu przerwania INT0, i np. przerwanie od komparatora. Z pewnych względów mniejsza o to jakich chciałbym też w pewnym momencie wywołać INT1 w którego procedurze obsługi w pewnych warunkach muszę wyłączyć przerwanie od komparatora. Czy jest to właśnie niemożliwe?
  • REKLAMA
  • REKLAMA
  • #5 8096825
    smolar758
    Poziom 10  
    ok zamiast wywołać --> włączyć, uruchomić, zainicjować - ale myślę, że i tak wiesz o co mi chodzi. Przerwanie samo się nie "wywoła" jak mu na to nie zezwolisz, chyba że się mylę...
  • #6 8096867
    PO.
    Poziom 20  
    Ale przerwania włączasz/wyłaczasz i one się nie wykonują od razu tylko w momencie wystąpienia odpowiednich warunków - tyle razy ile razy wystąpią.
    Włączenie to "zezwolenie" i możesz to zrobić w przerwaniu(1) ale to na co zezwalasz(2) się nie wykona od razu, chyba że od razu (po zakończeniu(1) w normalnych okolicznościach) wystąpi warunek na (2).
REKLAMA