mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC und Interrupt


Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Zulu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Zulu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gadgaet (Gast)
Datum:

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

Autor: Zulu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Zulu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.