Gast
#171319
Hallo, ich hänge an folgendem Problem fest: In einem IRQ der alle 500 Hz aufgerufen wird muss ich einen Flankenwechsel an einem Portbit erkennen (Low nach High), die Frequenz am Portbit ist variabel von 50 bis 120 Hz. Wäre diese Funktion nicht im IRQ sähe sie so aus (natürlich in echt in PIC-Assembler, hier zur Vereinfachung mal als Basic-Befehle): MAINLOOP DO WHILE PORTBIT = LOW LOOP DO WHILE PORTBIT = HIGH LOOP [hier die Funktion, z.B. Frequenz teilen mittels Zähler] GOTO MAINLOOP Das Problem ist aber das ich das ja wie gesagt in einem IRQ mache. Dort kann ich nicht einfach den Prozessor in der Schleife laufen lassen. Ich bräuchte also ein Hilfs-Flag mit dem ich den letzten Zustand zwischenspeichere. Doch ich komme bei dieser Logik einfach nicht voran :-( Jedesmal zählt er genau mit den 500 Hz die der IRQ aufgerufen wird - anstatt mit der externen Frequenz am Portbit. Betrachtet bitte die Hardware als gegeben, eleganter wäre es natürlich den externen Takt direkt auf einen INT-Eingang zu legen, aber dies geht nicht (in der Schaltung ist es nämlich noch viel komplizierter, der Takt wird zu allem Unglück auch noch über einen Multiplexer mit externen Gattern eingelesen, etc. aber dies nur als Info, hat mit dem Problem an sich ja nichts zu tun - dies funktioniert auch schon alles einwandfrei). Ich hoffe das ich das Problem halbwegs verständlich erklären konnte und mir jemand einen Tipp geben kann wie man denn nun so einen Flankenwechsel innerhalb des IRQ erkennen kann.