Witam,
jestem nowy na forum, to moje początki programowania uC.
Stworzyłem pewien układ prototypowy oparty na Atmega8A z zegarkiem 14.7456 MHz.
Podaję zewnętrzny sygnał 0-5V na INT0 - reagujące na zbocze narastające.
Sygnał o częstotliwości od 16Hz do 200Hz z wypełnieniem około 80% czasu 5V i 20% czasu 0V.
Gdy mam stan niski w sygnale pojawiają się zakłócenia, takie szpilki 2-3V
o czasie trwania ok 250-350ns. Urządzenie będzie pracowało w bardzo
trudnych warunkach jeśli chodzi o zakłócenia, jestem na etapie
testów nowych filtrów LC na rdzeniach do filtrowania zakłóceń zasilania,
ale część zakłóceń pochodzi od fal elektromagnetycznych i z nimi
mam także wielki problem aby wyfiltrować.
Gdy pojawia się taka szpilka często generowane jest przerwanie INT0.
Aby zapobiec programowo temu zjawisku chciałem w procedurze obsługi przerwania
na początku dodać sprawdzenie czy na wejściu INT0 mam stan wysoki czy niski
aby podjąć decyzję czy to "fałszywe" wywołanie przerwania (szpilką),
czy może to właściwe stanem wysokim.
I tu mam problem gdyż nie mogę się dokopać w sieci do informacji:
1. ile taktów procesor potrzebuje na wywołanie tego przerwania (INT0),
na pewno odkłada na stos szereg rejestrów a to zajmuje czas,
tylko nie wiem ile ? Być może wystarczająco długo, dłużej niż 300ns

2. zasady mówią, żeby nie dawać "delay'ów" w tych procedurach,
tyle, że nie mam pomysłu jak to wykonać bez oczekiwania np.: 300ns.
3. Czy mogę potraktować nóżkę PD2 (INT0) jako wejście i bezkarnie
odczytać jej stan wewnątrz procedury obsługi przerwania ?
Za wszelkie uwagi z góry dziękuję, prośba moja dotyczy kodu,
z zakłóceniami na poziomie sprzętu walczę i powolutku idę do przodu.
McSwirus