AVR Keypad mit Widerstandsmatrix ADC AnyKey abfragen

OP #1661374
Lesenswert?

Hallo alle zusammen,

ich hab mal wieder eine Frage. Ich habe ein Keypad ein einem ATmega32 
angeschlossen, kann dieses auch über ADC auslesen. Funktioniert alles 
supi. Nun möchte ich aber noch den ATmega32 in den Sleep-Mode schicken. 
Und dieser soll dann aufwachen, wenn eine Taste Gedrückt wurde.

Ich dachte, dass man dafür einen NPN nehmen kann und dieser Schaltet 
dann die 5V auf den Int0 um den µC wieder zu wecken wenn eine Taste 
Gedrückt wurde. Die Basis des NPN hätte ich auch an ADC0 mit 
angeschlossen und einen 1,2k Widerstand davor gemacht. Dann dachte ich, 
dass die ersten Tasten vielleicht nicht den Interrupt auslösen, da die 
0,7V nicht überschritten sind, aber die späteren dann schon. Wäre nicht 
so schön aber dachte ich Funktioniert erst mal.

Dies ist aber nicht wirklich der Fall. Durch das anschließen verändern 
sich auch die Werte die am ADC anliegen.

Nun meine Frage, wie macht man das besser? Ich möchte ja nicht unbedingt 
die Werte von ADC anpassen, vor allem weil diese nun nicht mehr 
Aufsteigend sind, sondern ab und zu springen. (Ich denke weil der 
Transistor immer besser Leitet, oder?)
Angehängte Dateien:
OP #1661606
Lesenswert?

Hi,

ok, scheinbar habe ich eine Lösung...
ich habe einfach den ADC direkt mit dem INT0 verbunden, den Interrupt 
folgendermaßen aktiviert:

1
DDRD &= ~(1<<PD2);   //eingang (INT0), ohne Pullup-Widerstand
2
MCUCR = (1<<ISC11)|(1<<ISC10);
3
sei();

Der Interrupt reagiert auch bei meinem kleinsten ADC-Wert, also sogar so 
wie ich wollte...

ist daran irgendwas falsch oder anderes zu realisieren??
Vielen Dank schon mal...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren