Hallo,
ich versuche grad mit einem PIC18F Pausenzeiten eines Rechtecksignals zu
erfassen. Das zu messende Signal liegt an einem Interrupt-fähigen Pin.
Das Programm funktioniert folgendermaßen:
Bei der Initialisierung wird der Pin so konfiguriert, das er bei
fallender Flanke einen Interrupt auslöst. Wenn dies der Fall ist,
springt er in die ISR und startet den Timer indem ich den Timer_enable
der vorher 0 war toggle.
Dann wird der Interrupt wieder aktiviert (muss per software gemacht
werden)und so konfiguriert, das er bei steigender Flanke auslöst. Dann
wird die ISR verlassen. Wenn die steigende Flanke kommt und einen
interrupt auslöst, springt das Programm wieder in die ISR, toggelt den
Timer, also stoppt ihn diese Mal, der Wert wird ausgelesen, der
Interrupt wieder scharf geschaltet und wieder auf falling edge gesetzt,
so dass er bei nächster fallender Flanke wieder anfängt zu messen, dann
wird der Timer noch genullt und das wars.
Aber leider spuckt der Algoritmus nicht die Timerwerte aus, die ich
erwarte. Kann es sein, dass der Prozessor langsamer läuft oder das sonst
irgendetwas anders ist, wenn ich per ICSP programmiere und debugge? Oder
hab ich etwas grundlegendes übersehen?Ich benutze die MPLAB IDE und
programmiere in C.
Nachtrag: Mein Messsignal ist ein normales 1kHz Rechtecksignal, also
0.5ms Pausenzeit, die ich gern messen würde. Mein PIC läuft mit 40Mhz,
als ein Timercount entspricht einem Befehlszyklus = 4 Taktzyklen =
0.1µs, sollte also genügen