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

[ASM] [AVR] ATtiny2313 - przerwanie PCIE tylko dla PULL-UP

Ranma 08 Lut 2010 03:46 2065 4
REKLAMA
  • #1 7661002
    Ranma
    Poziom 12  
    Potrzebuje przerwań dla switcha na porcie PORTB.

    
    ;input:
    ldi	tmp,0b0000000010;
    out	PORTB,tmp	; PORTB - wejscia PULL-UP (w stanie wysokim)
    
    ;inicjacja przerwań
    ldi   r16, (1<<PCIE)	;wlaczymy przerwania PCIE
    out   GIMSK, r16 	;enable/individual external interrupts.
    ldi   r16, (1<<PCINT1)	;reakcja na zmiane na pinie PB1=PCINT1
    out   PCMSK, r16	;sygnal zgloszenia w rejestrze maski: PCMSK
    
    ;hmm nie dziala
    ;ldi   r16, (0<<PCINT1)|(0<<ISC00)	;narastające zbocze(nacisniecie guzika)
    ;out   MCUCR, r16
    


    ten kod sprawia że przerwanie wywoływane jest przy naciśnięciu i puszczeniu oraz rzadziej, przy jakimś dziwnym momencie.

    Czy istnieje możliwość zrobienia tego przerwania TYLKO w monecie naciśnięcia?
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #3 7662228
    grysek
    Poziom 19  
    Przerwania typu PCINT działają podczas zmiany stanu pinu, obojętnie czy to jest zbocze narastające czy opadające. Poprostu ma być to zmiana stanu, tak więc jeśli naciśniesz przycisk to przerwanie bedzie generowane dwa razy (w momencie naciśniećia i puszczenia). Natomiast inaczej jest w przypadku przerwań INT0 i INT1 gdzie możesz sobie wybrać kiedy ma być zgłaszane przerwanie, np na zbocze narastające :P
  • REKLAMA
  • #4 7662596
    rpal
    Poziom 27  
    mozesz też podłączyć równolegle z przełącznikiem dołączyć kondensator np. 1uF i podciągnąć go opornikiem do 5-10k do zasilania co powinno ograniczyć drgania styków albo po czasie np. 50ms dokonać ponownego sprawdzenia stanu pinu i na tej podstawie zareagować czy nastąpiła zmiana na przełaczniku czy też nie.
  • #5 7663683
    Ranma
    Poziom 12  
    grysek napisał:
    Przerwania typu PCINT działają podczas zmiany stanu pinu, obojętnie czy to jest zbocze narastające czy opadające. (...) Natomiast inaczej jest w przypadku przerwań INT0 i INT1



    ok czyli przerwania "PCINT" są mniej rozbudowane. Ale przerwań INT0 i INT1 nie mogę zgubić np na porcie B

    Dodano po 3 [minuty]:

    a co do:
    grysek napisał:
    tak więc jeśli naciśniesz przycisk to przerwanie bedzie generowane dwa razy (w momencie naciśniećia i puszczenia).

    to 'prawie' zawsze tak jest ale (u mnie raz na jakiś czas) generowane jest częściej.
REKLAMA