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?)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.