Skocz do zawartości

Attiny1606 - przerwanie załącza się bez względu na stan przycisku.


Pomocna odpowiedź

Chciałbym wiedzieć, gdzie ten błąd jest. Jutro będę miał czas to przylutuję kable i upewnię się jeszcze z dwa, trzy razy. Zostały mi ostatnie dni przed końcem roku i mam dosyć mało czasu wolnego. Do tego teorie na prawko....

trudno powiedzieć. Na pewno użycie atomic w przerwaniu jest błedem (atomic stosuje się po to aby przerwanie nie wlazło tam gdzie nie trzeba, w większości mikrokontrolerów funkcja isr jest z założenia atomowa). No ale to podobno usunąłeś...

Niestety - jeśli nie wywołuje się przerwanie przy którymś zboczu to na 99.999% jest to błąd w programie.

Czyli nie chodzi tutaj o brak filtra, tylko o błąd programu? Kurde, gdyby nie te teorie to bym już teraz podłączył i zobaczył. 

A skąd mielismy wiedzieć? Ja myślałem że program jest ok, tylko trzeba mu dodać jakiś filtr (czy to elektroniczny, czy programowy).

BTW te moje dywagacje o debouncingu i parasolu przydadzą się jak to już ruszy 🙂

Gdybyś odpalił generator z linku, już dawno byłoby po problemie. Że nie mam nic ciekawszego do roboty to spróbowałem konfiguracji przerwania i wygląda to całkiem inaczej niż w twoim kodzie. Trochę lipa, bo chcemy Ci pomóc a ty to dosłownie zlewasz. 

Będę miał wolny czas, to sprawdzę dokładniej ten generator i co z czym się je. Jak na razie to tylko powierzchownie to sprawdziłem. Teraz kiedy jestem niemal pewny, że to wina programu, to mogę odpuścić rozważania na temat filtru i bardziej przysiąść do pisania kodu. 

7 minut temu, ethanak napisał:

Zasada CPCD.

 

?

(edytowany)

Myślałem że konfiguracja pinu powinna wyglądać następująco, tak też zrobiłem:

1) Ustawienie pinu na wejście (rejestr PORTA_DIR)

2) Włączenie wybranego przerwania dla danego pinu (rejestr PORTA_PIN1_CTRL)

3) Napisanie funkcji dla tego przerwania (makro ISR)

4) Globalne włączenie przerwań (funkcja sei() )

Edytowano przez JammyCrazy
2 godziny temu, ethanak napisał:

CPCD - takie tłumaczenie na polski GIGO

 

2 godziny temu, ethanak napisał:

CPCD - takie tłumaczenie na polski GIGO  

Dalej nie rozumiem . Cpcd gogo ?

  • 3 tygodnie później...
(edytowany)
Cytat

Z góry założyłem, że flaga jest czyszczona automatycznie... 💀

Założenia dobre ale zapewne do innego µC.

W sumie ciekawy temat, nie mogłem się oprzeć i porównałem noty katalogowe i rzeczywiście to ATtiny ma zmiany względem starszych braci (starsze µC automatycznie czyściły flagę, jeśli takowa była, podczas skoku do funkcji obsługującej przerwanie), generalnie nowa rodzinka bazująca na rdzeniu xmega obsługuje przerwania nieco inaczej. Sam jestem w trakcie odświeżania wiadomości i w sumie taki wątek jest na wagę złota, dosyć istotna różnica między starą i nową rodziną. 🙂

Edytowano przez sebas86
28 minut temu, sebas86 napisał:

Założenia dobre ale zapewne do innego µC.

Tak, przy nauce obsługi przerwań korzystałem z książki Filipa Sali. Przyjąłem opisany tam schemat:

- napisanie funkcji przerwania

- włączenie danego przerwania

- globalne włączenie przerwań (  sei( )  )

Nic nie było wspomniane o czyszczeniu flag - i prawidłowo. Książka ta jest dla układów typu 328P, czyli tych starszych. W każdym razie cieszę się, że wątek się spodobał. 😊

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...