Sida 1 av 2

Ansluta knappar till ATmega16

Postat: 31 januari 2009, 20:08:51
av TobbeSwe
Jag vill ansluta fem stycken tryckknappar till en ATmega16, och jag vill att de ska generera ett interrupt när de trycks ner.

Det här var mitt första försök:
Bild

Men jag insåg rätt snabbt att det inte skulle fungera - så fort en knapp tycks ner blir alla knappar låga...

Ett snabbt förslag på en lösning är det här, hjälper/funkar det?
Bild

//Tobbe

Re: Ansluta knappar till ATmega16

Postat: 31 januari 2009, 20:27:02
av eqlazer
Använd en resistor till varje knapp eller använd intern pullup i AVRen om den modellen har det.

Edit: aha, skulle generera interrupt också ja och m16 har inte interrupt på alla pinnar. Du klarar inte att sampla istället? Ofta kan det vara bättre att periodiskt sampla och slippa många problem med kontaktstuds tex.
Varför inte använda en modernare variant av m16? Om det var den som hette m164 kanske. De har interrupt på alla IO vilket underlättar mycket.

Re: Ansluta knappar till ATmega16

Postat: 31 januari 2009, 20:36:42
av thepirateboy
Men är det inte en mux på varje port så man kan väl inte ha interrupt på alla pinnar samtidigt?

Det borde gå med separata pullup och separata dioder kopplade till INT0.

Re: Ansluta knappar till ATmega16

Postat: 31 januari 2009, 21:32:31
av TobbeSwe
Port 16-21 (21 syns inte på bilden) har interna pull-ups man kan använda om man vill, men inte int0. Så eftersom jag ändå behövde en till int0 tänkte jag jag kunde använda den till alla...

Jag har redan just den här atmegan, så jag vill inte använda någon annan.

Vad är problemet med min "lösning" med dioderna?

Re: Ansluta knappar till ATmega16

Postat: 31 januari 2009, 21:35:34
av sodjan
Samma som innan, mer eller mindre.

Re: Ansluta knappar till ATmega16

Postat: 31 januari 2009, 21:39:03
av Norpan
Koppla alla diodernas anoder och pullup till int0 och en katod till varje ingång.

Re: Ansluta knappar till ATmega16

Postat: 31 januari 2009, 21:39:55
av TobbeSwe
Ja, så klart. Ser det nu... (detta är svar till sodjan)

Re: Ansluta knappar till ATmega16

Postat: 31 januari 2009, 21:48:54
av TobbeSwe
Norpan skrev:Koppla alla diodernas anoder och pullup till int0 och en katod till varje ingång.
Såhär?
Bild

Re: Ansluta knappar till ATmega16

Postat: 31 januari 2009, 21:50:03
av Norpan
Japp.

Re: Ansluta knappar till ATmega16

Postat: 9 februari 2009, 17:19:46
av TobbeSwe
Så nu har jag kopplat in knapparna enligt följande schema:
Bild

Problemet är att när jag trycker ner en knapp blir de andra knapparna "dangling". Logikproben visar varken hög eller låg på de ben som har en öppen knapp.

Hur löser jag det?

Re: Ansluta knappar till ATmega16

Postat: 9 februari 2009, 17:22:29
av XCore
Ett motstånd från pinnen efter knappen(som ligger öppen tills knappen trycks) ner till minus kanske funkar?

Re: Ansluta knappar till ATmega16

Postat: 9 februari 2009, 17:25:21
av AndLi
Sätt ett pullupp på varje ingång.

Re: Ansluta knappar till ATmega16

Postat: 9 februari 2009, 17:33:17
av TobbeSwe
Det har jag ju redan. Sitter ju ett stort 10k-motstånd där...

Re: Ansluta knappar till ATmega16

Postat: 9 februari 2009, 17:35:49
av XCore
AndLi skrev:Sätt ett pullupp på varje ingång.
Det har nog ingen missat men som han sa, på varje ingång.

Re: Ansluta knappar till ATmega16

Postat: 9 februari 2009, 19:32:21
av TobbeSwe
Jag försöker förstå hur dethär fungerar, men det går inget vidare...

Min teori är följade: När jag trycker ner en knapp går all spänning till jord, via den knappen, i stället för att lyfta de ingångar som inte har en nedtryckt knapp. Stämmer det?