Hallo, ich möchte eine Matrixtastatur (9 Tasten) mit einem Widerstandsnetzwerk versehen an den ADC (Atmega32) anschliessen. Jede Taste schaltet also einen anderen Widerstandswert bzw. Spannungswert, der dann dem Tastaturcode entsprechen soll. Gibt es eine Möglichkeit, einen (ADC-)Interrupt auszulösen, wenn eine Taste gedrückt wird, der dann die entsprechende Wandlungsroutine aktiviert und den Tastencode erzeugt? Oder muss ein Hardwareinterrupt auf einen Interruptpin verdrahtet werden? So wie ich das verstanden habe wird ja im ADC erst ein Interrupt ausgelöst, wenn die Wandlung bereits abgeschlossen ist. Ich benötige ja aber in diesem Fall einen, der auslöst, wenn das Ergebnis der Wandlung zB. ungleich 0 ist. Danke schon mal für eure Hilfe Sascha
Ganz allgemein gesehen gibt es keine "eingeborene" Möglichkeit, einen Interrupt auszulösen, der auslöst, wenn sich der AD-Eingangswert so ändert, das sich eine Messung lohnen würde. Wenn Du mal darüber nachdenkst, wirst Du verstehen, dass sich das ja gegenseitig bedingt. Um diesen Int auszulösen, müsstest Du einmal AD wandeln. Um den AD-Wandler zu starten, brauchst Du den Interrupt. Schau mal in das Datenblatt um die Interrupt-Quellen zu finden. Ganz allgemein macht man es so, das man kontinuierlich wandelt um eine Veränderung festzustellen. (Kenne mich mit diesen analogen Tastatursachen nicht aus). Deine Idee, mit dem zusätzlichen Anschluss einer Interrupt-Leitung von der Tastatur aus, würde funktionieren. Mit einem RC-Differenzierglied und einem Transistor oder OP könntest so einen Impuls erzeugen. Man müsste mal durchrechnen/simulieren ob das schnell genug ist. Der Benutzer drückt so ca. 200ms-400ms lang. Aber wiegesagt, das ist garnicht nötig. Es sei denn Du hättest wirklich sehr wenig Zeit übrig um kontinuierlich AD zu wandeln. Da das im Grunde nur ein paar Befehle im "Fertig"-Int sind, würde das heissen, das Deine Taktfrequenz ohnehin schon sehr niedrig ist. Dann besser schnelleren Takt bzw. schnelleren uC.
Was mir gerade noch einfällt, ist, das viele AVRs noch einen Comparator haben. Der löst aus, sobald die Eingangsspannung einen gewissen Wert überschreitet. Das wäre auch noch eine Möglichkeit.
Vielen Dank für den Tipp, die Idee mit dem Comperator scheint mir die effektivste Lösung zu sein. Die Idee, die Tastatur mit Widerstandsnetzwerk anzuschliessen fand ich genial, weil so nur 2 Pins am AVR belegt werden, im Gegensatz zu 4 Pins bei konventionellem Anschluss. Oder fallen Euch da schwerwiegende Nachteile ein, die ich bedenken sollte? Sascha
Du könntest Probleme kriegen, wenn mehrere tasten gleichzeitig gedrückt werden.
>Oder fallen Euch da schwerwiegende Nachteile ein, die ich bedenken sollte?
Es sind Deiner Anfrage zu wenig Informationen zu entnehmen, um die
Nachteile in Deinem Fall zu nennen.
Je nach Einsatz, Umgebungsbedingen etc. gibt es verschiedene Vor- und
Nachteile.
Es soll eine einfache (mein 1. Projekt) Gewächshaussteuerung werden, mit der Luftfeuchte, Bodenfeuchte, Temperatur und Licht gesteuert/ geregelt werden soll. Eingabe über eine Matrixtastatur, 12 Zeichen, Ausgabe über 4-Zeilendisplay und einige Relais. Mit der Tastatur soll u.A. eine Menüsteuerung realisiert werden.
>Gewächshaus
Naja. Feuchtigkeit! Also gut abdichten! Wenn die Tasten nicht mehr
gehen, mal gucken ob die Feuchtigkeit doch eindrigen konnte.
Was ist mit Lüftern usw. Elektromagnetische Umgebung?
Professionell oder Privat?
Dein erstes Projekt?
Was hast Du denn bisjetzt so mit dem uC gemacht?
Am besten jedes Teilstück für sich entwickeln und testen.
Dann erst die Teilstücke zusammenbauen.
Sascha schrieb: > Es soll eine einfache (mein 1. Projekt) Gewächshaussteuerung werden Dann wird ja wohl kein Batteriebetrieb in Frage kommen und damit ist äußerstes Stromsparen unnötig. D.h. Du brauchst keinen Interrupt zum Aufwecken. Und da die Tasten eh entprellt werden müssen, nimm einfach nen Timerinterrupt und gut is: Beitrag "Tastenmatrix auslesen über nur 2 Leitungen" Peter
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.