nachmal die Assembler Idee
4 gemessene Pulsweiten wegspeichern(Zeit1, Zeit2, Zeit3,Zeit4)
;Software PWM
RRF Zeit1,1 ;Rechtshift= Division mit 2 weil Goto 2 Takte braucht
bsf PORTB,1 ;setzt PIN1 auf high
PIN1 ;Sprungmarke
decfsz Zeit1,1 ;Zeit = Zeit - 1
goto PIN1 ;Schleife (Braucht wie gesagt 2 Takte, deswegen der
Rechtsshift
bcf PORTB,1 ;setzt den PIN auf LOW
bsf PORTB,2 ;setzt PIN2 auf high
PIN2 ;2 Sprungmarke
.
.
.
bis alle 4 Pins durch sind. Dann wartetst du wieder auf den ersten Interrupt auf PIN B0. Du musst die gemessene Zeit nur durch 2 teilen, weil goto 2 Takte braucht. Ansonsten sollte das funktionieren und auch sehr Zeitgenau sein, da die Befehle ausgezählt sind. Das läßt sich sicher noch optimieren, aber es sei nur eine Idee.
Jetzt hast du 2 Ansätze, wie gesagt viel Erfolg.
Lesezeichen