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.
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.
Så nu har jag kopplat in knapparna enligt följande schema:
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.
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?