6-fach Tastenarray über AD-Port an PIC -> Brauche Interrupt nach Tastendruck

OP #2464832
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
#2464869
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
#2464870
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren