Skocz do zawartości
miccaldo

Wybudzenie AVR przy pomocy kilku przycisków.

Pomocna odpowiedź

Napisano (edytowany)

Witam, 

Chcę zrobić własny pilot IR do sterowania urządzeniem. Będzie on miał 4 przyciski. Chciałbym również wprowadzić kontroler (Attiny2313A) w tryb power down w celu oszczędzania energii.

Mam jednak problem z wybudzeniem kontrolera, bo wiem że wybudzić go można podając stan niski na pin INT0. Nie chcę jednak aby określony przycisk go wybudzał, a dowolny przycisk.

Jak mogę w najprostszy sposób podłączyć przyciski, tak aby każdy mógł wybudzić AVR, ale żeby nie wpływały na siebie nawzajem? 

Pozdrawiam.

Edytowano przez miccaldo

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Możesz połączyć przyciski z bramkami OR. Np 74HC32 pobiera prąd 40 uA czyli nie wiele różni się od attiny w trybie power down. Układ ten ma 4 sztuki bramek po 2 wejścia, ale znajdziesz też inne opcje (3,4,8 wejść). Jak chcesz więcej wejść to łączysz sobie w drzewko takie bramki (alternatywa alternatywy to wciąż alternatywa).

Edytowano przez Gieneq
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

O, to jest fajne rozwiązanie! Myślę że spróbuję z bramkami OR. Dzięki wielkie!

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
21 godzin temu, miccaldo napisał:

Mam jednak problem z wybudzeniem kontrolera, bo wiem że wybudzić go można podając stan niski na pin INT0.

Nie tylko "low level interrupt on INT0" może wybudzić z trybu Power-down. Zgodnie z tabelką 7-1 dokumentacji jak i informacją w punkcie 7.1.2 na stronie 35 do wybudzenia można też użyć Pin Change Interrupt. Przerwanie to, odpowiednio skonfigurowane, może wybudzić mikrokontroler przy pomocy zmiany stanu na dowolnych pinach PCINT bez konieczności używania jakichkolwiek dodatkowych elementów zewnętrznych.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Nie wszystkie AVRy mają pin change interrupt. Najłatwiej jak tylko się da, aby na różnych pinach mieć przerwanie INT0 to połączyć je wszystkie diodami schotky do INT0 anodami a na pinie INT0 dać wewnętrzny pullup. Podczas wystąpienia przerwania można sprawdzić który pin wywołał przerwanie. Po wybudzeniu z power-down dobrze jest też dać delaya na kilka ms żeby ustabilizować zasilanie peryferiów bo potrafią świrować po wybudzeniu np. USART. Dobrym pomysłem jest też zastosować filtry RC na przyciskach aby zniwelować drgania styków lub po wejściu do przerwania odczekać aż przestaną drgać ponieważ drgające styki mogą wywołać kilka błędnych przerwań.

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Właśnie tak zrobiłem, przy pomocy diod🙂 Dzięki za pomoc!

Udostępnij ten post


Link to post
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!

Gość
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...