Skocz do zawartości

Połączenie ATMEGI16 ze switchem


certino

Pomocna odpowiedź

Witam.

Obrazek przedstawia kawałek układu. Kreski symbolizują switche z jednej strony podłączone do masy, z drugiej do portu. Dodatkowo dołożony jest ceramik łączący z masą. Z założenia miało by to działać tak, że:

Na porcie jest stan wysoki, tak samo jak przerwaniu. Po wciśnięciu switcha jest zwarcie do masy na porcie (stan niski). Niestety na przerwaniu nie pojawia się stan niski (napięcie spada tylko o jakieś 0.3 V). Dioda jest jest po to by kilka switchy podłączyć pod jedno przerwanie, a jednocześnie by np switch 2 nie działał na port 1. Gdzie może być problem ??

Link do komentarza
Share on other sites

Przecież switch zwiera w tylko wtedy gdy go wciśniesz, a jest przed samym portem. Nie cofnie się nic jak nie będzie wciśnięty. Może po prostu ja nie rozumiem o co chodzi. Najlepiej narysuj jakiś normalny schemat w eaglu.

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

Chodzi aby wywołać jednym switchem stan niski na danym porcie i na przerwaniu. Na porcie się wywołuje ale na przerwaniu już nie. Według mnie jak nie będzie diod to naciśnięcie dowolnego switcha wywoła stan niski na przerwaniu i na wszystkich portach jednocześnie.

Link do komentarza
Share on other sites

A odwrotnie diody to przypadkiem nie będzie cały czas niskiego stanu na przerwaniu ?

A skąd ma się tam wziąć stan niski? Sygnał masz pobierany tak naprawdę z pinu mikrokontrolera i powinno być na nim podciąganie do Vcc, jeśli nie przez wewnętrzny rezystor to przez normalny. Dopiero jak zewrzesz switch do GND to dopiero pójdzie stan niski na pin mikrokontrolera i na przerwanie. Obróć diody i włącz podciąganie do Vcc na pinach.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Ja bym zrobił jak poniżej:

Aby sprawdzić, który przycisk został wciśnięty, należy wystawiać kolejno "0" na dany port (od PC0 do PC3), a na pozostałe wystawić "1". Gdy wystąpi przerwanie np. dla wyrażenia "1101", to już mikrokontroler będzie wiedzieć, że trzeci przycisk spowodował to przerwanie.

UWAGA!

Gdy wciśnie się oba przyciski jednocześnie, można spowodować zwarcie VCC-GND na pinach uK.

Link do komentarza
Share on other sites

UWAGA!

Gdy wciśnie się oba przyciski jednocześnie, można spowodować zwarcie VCC-GND na pinach uK.

Problem ten rozwiązuje się w ten sposób, że zamiast "wystawiania jedynek" operujesz włączaniem pull_upów i ich wyłączaniem. Wtedy zwarcie VCC-GND nie wystąpi ponieważ, pull_up ma dziesiątki kiloohmów. Minimalnie bardziej skomplikowany program, ale zagrożenie zlikwidowane 🙂

Ale mnie nurtuje inne pytanie:

Po co Ci INT skoro i tak trzeba skanować klawiaturę poprzez podawanie kolejno 0 na piny klawiszy?

Idea INT jest taka, by właśnie skanowania nie trzeba było robić. Dlatego właśnie potrzebne są diody by "zsumować" sygnał naciśnięcia dowolnego z przycisków i podania go na INT.

Ale można także zrobić obsługę na schemacie, który proponujesz bez rezystora.

Trzeba tylko pokombinować kolejność działań, a konkretnie przełączania wejść i wyjść na pinach portu przycisków oraz INT 🙂

Link do komentarza
Share on other sites

a to ciekawe Sabre...

Podobne rozwiązanie obsługi klawiatury miałem na jednym z laboratoriów na Politechnice Gdańskiej oraz, jak teraz patrze, w pierwszym lepszym linku z klawiaturą i atmegą z elektrody, np.:

http://www.elektroda.pl/rtvforum/topic967647.html

To, że coś miałeś na laboratorium na studiach, lub że jest na elektrodzie, nie jest wyznacznikiem poprawności rozwiązania. Zaproponowałeś rozwiązanie, które jak sam zauważyłeś może powodować zwarcie, a do tego wymaga bardziej skomplikowanego kodu. Dlatego na początku uznałem, że nawet nie ma sensu odpowiadać na twojego posta.

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.