Skocz do zawartości

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


JammyCrazy

Pomocna odpowiedź

To sprawdź co się dzieje na tym wejściu. Być może występują jakieś szpilki - debouncing odpowiednio oprogramowany też pomoze (np. minimalny czas wciśniecia klawisza to 100 msec)

Edytowano przez ethanak
Link do komentarza
Share on other sites

W normalnym funkcjonowaniu ten debouncing zlikwidowałem programowo. Tylko że przerwań nie da się opisać minimalnym czasem klawisza czy czymś podobnym. Wykrywa zmianę stanu na wejściu, uruchamia przerwanie i wybudza MCU, nie ważne czy to była 1ns czy 100ms. Próbowałem zmniejszyć częstotliwość zegara działającego w trybie Standby do minimum, żeby częstotliwość próbkowania była mniejsza. Też nic.... 

Link do komentarza
Share on other sites

(edytowany)
1 minutę temu, ethanak napisał:

Oj tam, się nie da to parasola w d... otworzyć.

Przewanie będzie wywołane, ale czy musisz na nie zareagować?

 

Cechą przerwania jest to, że od razu (nie licząc paru cykli zegarowych) wybudza MCU, czy tego chcę czy nie. Próbowałem robić pętlę typu "dopóki długość klawisza < x to uśpij()", ale pobór spadł o jakieś marne 50uA. 

Edytowano przez JammyCrazy
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

1 minutę temu, ethanak napisał:

No to wybudzi, a kontroler sprawdzi co ma z tym zrobić. Przecież to nie durny przekaźnik, a procesor!

Cholewka jasna. Chodzi o to, że MCU się wybudza od razu, BEZ WZGLĘDU na to, czy wcisnąłem guzik, czy też nie. Po prostu wykrywa jakieś sygnały z powietrza jako zmiany stanu na wejściu i uruchamia przerwanie, które z kolei wybudza MCU. Jak mam te sygnały zredukować?

Link do komentarza
Share on other sites

(edytowany)

Nie da się odrzucić szpilek w tym przypadku, bo kontroler przerwań wykrywa wszystko i nieważne czy to szpilka, czy to zamierzony sygnał.

W wersji 2.0 planowałem wsadzić właśnie filtr RC na wejściu. Tylko nie wiem czy coś jeszcze... Wolałbym jednak nie musieć podchodzić do tego 3 raz przez jakąś pierdołkę.

Edytowano przez JammyCrazy
Link do komentarza
Share on other sites

 

5 minut temu, ethanak napisał:

Możesz odróżnić po czasie trwania szpilke od prawidłowego sygnału?

Nie w przypadku przerwań. Dla kontrolera sygnał to sygnał. Najpier wybudza MCU, później mogę sprawdzić czy sygnał był prawidłowy.

Link do komentarza
Share on other sites

(edytowany)

Kod pisałem czytając co chwilę datasheet (atomic to wyjątek). I to po kilka razy dla pewności. Znam bity i rejestry konfiguracyjne, jak ustawić zegar główny, dzielniki itp. Problem jest taki, że przerwanie PORTA_PORT_vect powinno być uruchamiane wtedy i tylko wtedy, gdy przycisk jest wciśnięty, puszczony lub jedno i drugie, w zależności od rejestru PORTA_PIN1CTRL. TYMCZASEM u mnie przerwanie to jest aktywowane co (dosłownie) nanosekundę. Program pokazuje mi, że przerwanie zostało wykonane 10000 razy (wartość ta rośnie bardzo szybko), gdzie powinno wynosić 0, bo nie nacisnąłem przycisku ani razu. 

Edytowano przez JammyCrazy
Link do komentarza
Share on other sites

Takie głupie pytanie: przerwanie od pinu możesz ustawić na pięć sposobów: zbocze (rosnące, malejące, dowolne) i stan (wysoki, niski). Na pewno masz przerwanie ustawione na zbocze a nie stan? Nic innego mi do głowy nie przychodzi, ale wygląda to na błędnie ustawione przerwanie.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.