Witam serdecznie!
Przejdę od razu do sedna. Napisałem program do megi328, z przerwaniem INT1, odpowiednio poustawiałem rejestry, uruchomiłem globalną obsługę przerwań sei(), i niestety atmega po podłączeniu zasilania od razu wykonuje przerwanie, mimo, iż switch nie został wciśnięty, wiem, że tak się dzieje, ponieważ w przerwaniu dla przykładu zapalam diodę. Czy istnieje programowa możliwość opóźnienia działania zewnętrznego przerwania? Próbowałem jakieś małe opóźnienie rzędu 10ms po deklaracji portów, nic to nie dało. Przerwanie wykonuje się bez różnicy, czy przerwanie ma być wykonane na zboczu narastającym, czy opadającym. Na pinie PD3 ustawiam w definicji portów stan logiczny '1', wydaje mi się, że ustawienie tej jedynki wykonuje się "później" niż przerwanie, bo przerwanie to priorytet uC dobrze mówię??
Zagwostkę rozwiązałem w sposób inny, PD3 podciągnałem do 5V rezystorem 1K, by od razu ustawić na PD3 '1' - wtedy przerwanie nie wykonuje się samoistnie po włączeniu zasilania.
Czy istnieje programowy sposób zapisu w języku C przerwania tak, by nie wywoływał się po włączeniu zasilania? Oszczędziłbym na płytce 1k rezystor. Jestem w 99% przekonany, że istnieje odpowiedź na moje pytanie, lecz nie znam na nie odpowiedzi - stąd temat w dziale początkujący z wiadomych przyczyn
Zamieszczam fragment testowego programu
Proszę o pomoc
Pozdrawiam