Forum: Mikrocontroller und Digitale Elektronik ADC und Interrupt


von Sascha (Gast)


Lesenswert?

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

von Zulu (Gast)


Lesenswert?

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.

von Zulu (Gast)


Lesenswert?

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.

von Sascha (Gast)


Lesenswert?

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

von gadgaet (Gast)


Lesenswert?

Du könntest Probleme kriegen, wenn mehrere tasten gleichzeitig gedrückt 
werden.

von Zulu (Gast)


Lesenswert?

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

von Sascha (Gast)


Lesenswert?

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.

von Zulu (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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
Noch kein Account? Hier anmelden.