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:
Code:
Zaehlung:
If Pinb.0 = 0 then
signal_alt = timer0
else
signal_neu = timer0
Signal = Signal_neu - Signal_alt
end if
Return
Dann hast Du schon mal immer einen "sauberen" Wert für die Variable Signal.
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?
Lesezeichen