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