Also wieder Pin Change Interrupts. Es kommt halt auf die Latenz Zeiten an, die in seinem Programm noch akzeptabel sind.ODER Du nimmst einen AVR bei dem alle Pin's IRQ fähig sind, das ist noch eleganter.
Wenn karstenl ewig lange Wait Schleifen in seinem Hauptprogramm hat wirds schwierig mit dem pollen.
Ausserdem muss er ja noch den Puls erzeugen. Wenn dieser auch in der Interrupt Routine erzeugt werden soll würde das nur mit Wait Schleifen gehen und das wäre in einer Interrupt Routine fatal.
Wenn die Latenz keine Rolle spielt würde ich es per Polling in der Hauptroutine machen.
Die alte Bit Kombination wird in einer Byte Variable gespeichert und invertiert ( aus allen 1 wird 0 und umgekehrt ) und mit der neuen Abfrage Exclusiv verodert.
Wenn sich dann ein Bit Verändert hat kriegt man ein Ergebnis das >0 ist raus.
Auf das kann man abfragen und den Puls generieren. Danach wird der aktuelle Zustand wieder in der Hilfsvariable gespeichert und invertiert.
Das ist mit wenigen Programmzeilen zu machen. Allerdings ist die Reaktionszeit zwischen Tastenänderung und Impulsgenerierung dabei von der Durchlaufzeit der Hauptroutine abhängig. Ist dabei ein Schleifendurchlauf ziemlich kurz, dürfte das keine große Rolle spielen.
Lesezeichen