Forum: Mikrocontroller und Digitale Elektronik AVR Keypad mit Widerstandsmatrix ADC AnyKey abfragen


von Kenji N. (shaitan)


Angehängte Dateien:

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?)

von Kenji N. (shaitan)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.