Walczę z projektem który opisałem tutaj (schemat): https://www.elektroda.pl/rtvforum/topic1816175.html
Natknąłem się na problem w obsłudze przycisku który jest podłączony do INT1/PD3 z zewnętrznym rezystorem podciągającym.
W momencie gdy INT1 są wyłączone poprzez rejestr GICR, a pin PD3 jest ustawiony jako wejście, gdy sprawdzam stan pinu PD3 ciągle otrzymuję 0 niezależnie czy przycisk jest naciśnięty czy nie. Gdy mierzę woltomierzem to jest tam poziom wysoki.
Jeżeli włączę przerwanie INT1 w trybie wykrywania niskiego poziomu to przerwanie jest inicjowane poprawnie, czyli przycisk podłączony jest prawidłowo.
Co robię nie tak?
Dodano po 2 [godziny] 39 [minuty]:
Czy to ma coś wspólnego z tym nadpisywaniem z tabelki poniżej?
Jeżeli tak to co mam zrobić by PD3 mógł odczytać?
Dodano po 16 [minuty]:
CZĘŚCIOWO JUŻ WIEM
Zamiast PORTD użyć do odczytu PIND.
Ale dlaczego skoro PORTD ma zaznaczone, że jest R/W (PIND jest tylko R i to jest zrozumiałe)?
![[atm8] Dlaczego nie odczytuje stanu pinu PD3/INT1? [atm8] Dlaczego nie odczytuje stanu pinu PD3/INT1?](https://obrazki.elektroda.pl/15_1289268169.gif)
Natknąłem się na problem w obsłudze przycisku który jest podłączony do INT1/PD3 z zewnętrznym rezystorem podciągającym.
W momencie gdy INT1 są wyłączone poprzez rejestr GICR, a pin PD3 jest ustawiony jako wejście, gdy sprawdzam stan pinu PD3 ciągle otrzymuję 0 niezależnie czy przycisk jest naciśnięty czy nie. Gdy mierzę woltomierzem to jest tam poziom wysoki.
;tak włączam PD3 jako wejście
cbi DDRD, PD3
;tak wyłączam INT1:
;wyłącz przerwanie INT1 zerując flagę w GCIR
in r16, GICR
cbr r16, 1 << INT1
out GICR, r16
;tak czytam stan PD3:
sbis PORTD, PD3
rjmp MB_pressed ;skacz do obsługi naciśnięcia przyciski
;... lub tak:
in r16, PORTD
andi r16, 1<<PD3
Jeżeli włączę przerwanie INT1 w trybie wykrywania niskiego poziomu to przerwanie jest inicjowane poprawnie, czyli przycisk podłączony jest prawidłowo.
Co robię nie tak?
Dodano po 2 [godziny] 39 [minuty]:
Czy to ma coś wspólnego z tym nadpisywaniem z tabelki poniżej?
Jeżeli tak to co mam zrobić by PD3 mógł odczytać?
Dodano po 16 [minuty]:
CZĘŚCIOWO JUŻ WIEM
Zamiast PORTD użyć do odczytu PIND.
Ale dlaczego skoro PORTD ma zaznaczone, że jest R/W (PIND jest tylko R i to jest zrozumiałe)?
![[atm8] Dlaczego nie odczytuje stanu pinu PD3/INT1? [atm8] Dlaczego nie odczytuje stanu pinu PD3/INT1?](https://obrazki.elektroda.pl/15_1289268169.gif)