Minimal notwendige Befehle
4 (?) Cycles, bis der Interrupt angesprungen wird.
2 Cyc. PUSH Arbeitsregistert
1 Cyc IN Status->Register
2 Cyc PUSH Register
1 Cycle, LDS um in das Register einen Wert zu laden
1 Cycle, OUT um in diesen Wert als Output zu setzen
2 POP Register
1 OUT Status restore
2 POP Register
4 RETI
~20 Cycles
ev.+1/2 , weil ja der laufende Befehl noch ausgeführt wird
sind wir bei 21 - 22, also reserve null.
Das alles reicht aber nicht, denn um ein Output-Rechteck zu erzeugen, musst du ja den Outout auch wieder auf null zurücksetzen.
Wenn der µC sonst nix zu tun hat ausser das In-Signal verzögert auszugeben, würde ich das ohne INT machen.
Pseudo-code, z.B:
Da sind 4 Cyclen MUSS-Code, die restlichen 19 Cyclen hättest du zu freien VerfügungCode:loop: 1 Cyc IN Inpt-Pin n Cyc NOP Verzögerung, jeder NOP ist 60 nS wert. 1 Cyc OUT Outpin 2 Cyc RJMP Loop
Irgendwelche Interrupts (timer etc.) wäre da aber unerwünscht, denn dann fehlen bestimmt ein paar Signale
Noch'n Problem: Je nachdem, WANN während der Schleife der Input-Flankenwechsel auftritt, kann deine Reaktionszeit schwanken.
---> Für mich quietscht das nach einer HW-Lösung
Lesezeichen