Forum: Mikrocontroller und Digitale Elektronik 6-fach Tastenarray über AD-Port an PIC -> Brauche Interrupt nach Tastendruck


von Rudi H. (rubberdog)


Lesenswert?

Hi Community, brauche Eure Hilfe!

Habe 6 Tasten über Reihenschaltung von 6 Widerständen am AD-Port des PIC 
16F887 hängen. Alles ok, kann aktuell gedrückte Taste auslesen.

Allerdings möchte ich die Tastatur nicht dauernd über Endlos-Loop 
abfragen, sondern eine Art Interrupt, sobald eine Taste gedrückt wird 
und damit in die Behandlungsroutine springen.
Ich bekomme zwar einen Interrupt von AD-Wandler, aber den bei jeder 
Konversion; das nützt mir nichts.

Folgende Ideen hab' ich:

- Tasten mit 2 Arbeitskontakten verwenden (1. Kontakt mit 
Widerstandsnetzwerk verbunden, 2. Kontakt mit allen anderen in Serie 
gibt Signal, sobald irgendeiner gedrückt wird

- Sobald eine Taste gedrückt wird, die anliegende Teilspannung 
verstärken und auf TTL-Pegel bringen und diesen Impuls über Monoflop als 
Quasi-Interrupt nützen

Habt Ihr noch andere Vorschläge? Verwende übrigens den AD-Wandler, weil 
ich die Porteingänge von PortB für andere zeitkritische Sachen brauche.

Danke für Eure Tipps und ein guter Vorschlag wäre ein super 
Weihnachtsgeschenk für mich!  ;-))

Liebe Grüße
Rudi aus Wien

von Peter D. (peda)


Lesenswert?

Rudi H. schrieb:
> sondern eine Art Interrupt, sobald eine Taste gedrückt wird
> und damit in die Behandlungsroutine springen.

Will man eigentlich nicht, zumindest bei größeren Programmen.
Man will ein Tasteneingabe nur an bestimmten sicheren Stellen auswerten, 
an denen eine gerade laufende Aktion abgeschlossen ist.
Man entprellt daher die Tasten im Timerinterrupt und die Auswertung an 
geeigneten Stellen im Main.


Peter

von Helge O. (_elko_)


Lesenswert?

Hey Rudi,

Du könntest den Wert von deinem AD doch an einen Schmitt-Trigger 
heranführen. Da musst du die Kippspannung dementsprechend klein wählen, 
so dass sie deiner kleinsten Teilspannung entspricht.


Eine andere alternative wäre, dass du einen Widerstands-Diodenfriedhof 
einrichteneinrichtest. Dann könntest du einen Spanungsteiler mit 
gemeinsamen Vorwiderstand einrichten.

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.