ADC und Interrupt

Gast #1358145
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
Gast
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.
Gast
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.
Gast
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
Gast
>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.
Gast
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.
Gast
>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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.