czy po wywołaniu przerwania mogę sprawdzić jego pin ?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

czy po wywołaniu przerwania mogę sprawdzić jego pin ?

Post autor: matrix » 25 paź 2009, 14:42

nurtuje mnie pewna sprawa, otóż powiedzmy że wywołam przerwanie INT0, a jak wiadomo przerwanie to podpięte jest pod PIND.2. czy po wywołaniu przerwania mogę sprawdzać stan tegoż pinu? widzę to tak:

Kod: Zaznacz cały

config INT0 = FALLING
Enable Interrupts
Enable Int0
on int0 czujka
a w etykiecie czujka byłoby powiedzmy tak:

Kod: Zaznacz cały

czujka:
if PIND.2 = 0 then
tu warunek

Kod: Zaznacz cały

return
można tak?

Awatar użytkownika
tom5555
Użytkownik
Posty: 625
Rejestracja: 23 sty 2008, 1:20
Lokalizacja: Zabrze
Kontakt:

Post autor: tom5555 » 25 paź 2009, 18:20

Przerwanie wyzwalasz zboczem opadającym, czyli warunek if..then zawsze będzie spełniony (bo po zboczu opadającym jest przecież stan niski). Jeśli chciałeś sprawdzić, czy na tym wejściu jest stabilny stan niski, czy tylko krótki impuls, to przed if..then wstaw jakieś opóźnienie. musi ono być większe od czasu trwania tego impulsu.
Jak napiszesz:

Kod: Zaznacz cały

config INT0 = CHANGE
to przerwanie będzie wywoływane każdym zboczem, a w przerwaniu możesz sprawdzić jaki stan ma pin D.2 (według helpa do Bascom'a nie każdy proc to obsługuje)

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 25 paź 2009, 19:14

to może trochę to zmienić i w etyiecie po wywołaniu przerwania napisać:

Kod: Zaznacz cały

czujka:
set PORTD.2 - ustawienie koncowki do odczytu
if PIND.2 = 0 then
...
...
...
end if
return

ODPOWIEDZ