Witam,
Mam problem z poprawnym działaniem programu i nijak nie potrafię go rozwiązać. Może ktoś rzuci świeżym, bardziej doświadczonym okiem i powie mi gdzie popełniłem błąd?
Program na Atmege32, taktowaną zewnętrznym kwarcem 8MHz.
Program powinien działać następująco:
1. Gdy przyjdzie sygnał na jeden z pinów INT0 lub INT1 na pinie PC0 ma pojawić się stan wysoki, a przerwanie to ma zostać wyłączone.
2. Gdy przyjdzie sygnał na drugi z pinów przerwań na pinie PC0 ma pojawić się stan niski, a przerwanie to ma zostać wyłączone.
3. Po 500 ms przerwania INT0 i INT1 mają zostać ponownie włączone i czekać na kolejny sygnał.
W czym problem?
1. Stan niski na pinie PC0 nie pojawia się "pionowo" lecz łagodnie jakby się rozładowuje. Czy to naturalne i tak powinno być?

2. Po upływie tych 500ms gdy przerwania się włączają na PC0 pojawia się niezamierzony pik.

Sytuacje zamieszczam na screenach.
Legenda:
zółty - INT0
niebieski - INT1
różowy - PC0
Kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Kod wycięty z całości programu, mam nadzieję, że niczego nie pominąłem.