Aktualny stav pinu

som tu z novým problémom

Neviem vyriešiť toto:
Ako zistit aktuálny stav PINU 2 a pri zmene log urovne niečo vykonať. Proste ak je teraz 1 a potom 0 rozsvieť LED a naopak ak je 0 a potom 1 rozsvieť LED.

NECHCEM použiť INT.

Ja mám teraz toto ale to je len ak je log 0 a pred tím nebolo.

nech si to na začiatku načita aký je stav a potom porovnať

STAV_SENZ=PIND; if(((STAV_SENZ & (1<<PD2))==0) && ((MINULI_STAV_SENZ & (1<<PD2))!=0)){ urob niečo } MINULI_STAV_SENZ=STAV_SENZ;

Co tohle:
nongnu.org/avr-libc/user-man … __sfr.html

A co třeba takhle :

STAV_SENZ=PIND&(1<<PD2); if(STAV_SENZ != MINULI_STAV_SENZ) { urob niečo MINULI_STAV_SENZ=STAV_SENZ; }

Poznáš z toho co to dělá a kdy to dělá ?

A když to rozšíříme :

STAV_SENZ=PIND&(1<<PD2); if (STAV_SENZ != MINULI_STAV_SENZ) { if (STAV_SENZ == 0) { jedna hrana } else { druhá hrana } MINULI_STAV_SENZ=STAV_SENZ; }

Na druhou stranu nechápu, proč se bráníš tomu přerušení. Bylo by to mnohem elegantnější, ale to je Tvoje věc.

Dakujem :smiley: