Jop, ein CCP(Capture-Compare-PWM)-Modul zu nutzen wäre die einfachste Möglichkeit. Leider besitzen diesen nur die PICs, die einen Timer2 (also 3 Timer) implementiert haben.
Eine andere Möglichkeit, ein CCP zu simulieren ist, z.B.: Timer0 (oder 1 bei 16bit) zu starten und dann per I/O-Interrupt den aktuellen Wert des Timer-Registers zu überprüfen.
Aber ich versteh schon, was du meinst ist eine Flanken-Erkennung. Hum, das würde ich eher so lösen:
Code:
var input_old=0;
while (messzeit==1)
{
if(input!=input_old) //flanke erkannt
{
if(input>input_old) //steigende Flanke
{
z++;
}
}
input_old=input; //letzten Zustand speichern
}
Also, man kann natürlich das ganze auch in eine if-Abfrage quetschen, ich habe das aber so geschriebene, dass, die Abfrage relativ schnell ist, so lange keine Flanke erkannt wird. Die Art der Variable "input_old" muss natürlich mit der von "input" übereinstimmen.
Das mit den Flanken hätte mir aber echt auch auffallen müssen, vor allem weil ich gerade ein C-Programm für I²C-Emulation in Dos schreib und ich da nur mit Flanken zu tun habe. Hab wohl, wie man so schön sagt, den Wald vor lauter Bäumen nimmer gesehen
MfG
Mobius
Lesezeichen