Ich sehe einen kleinen "Schönheitsfehler":
Wenn der Impuls beginnt, wird die Variable Signal_alt zwar aktualisiert, aber die Subtraktion in der Hauptschleife wird noch mit dem alten Wert von Signal_neu ausgeführt. Auch wenn dieser Zustand nur 1-2ms lang dauert, kommt in dieser Zeit nichts sinnvolles heraus.
Mach die Subtraktion doch in der ISR nach dem Impulsende:
Dann hast Du schon mal immer einen "sauberen" Wert für die Variable Signal.Code:Zaehlung: If Pinb.0 = 0 then signal_alt = timer0 else signal_neu = timer0 Signal = Signal_neu - Signal_alt end if Return
Und spannend ist natürlich auch die Frage, ob der Controller auch tatsächlich mit 4,8 MHz läuft! Hast Du das mit den Fusebits korrekt eingestellt?







Zitieren

Lesezeichen