If you need only ENABLE use count to count pulses.
Try something like this:
Code:COUNT Pin, Period, Var If Var<xxx then enable=1 else enable=0 endif
If you need only ENABLE use count to count pulses.
Try something like this:
Code:COUNT Pin, Period, Var If Var<xxx then enable=1 else enable=0 endif
But pulses are of different width in series, will it work?
Just checked, it works, but not as it should - even on same sequence, it always reads different values.
Code:taki: COUNT PORTC.4, 70, LABEL if label=0 then goto taki endif LCDOUT $FE,$c0, DEC(LABEL), " " PAUSE 5 GOTO TAKI
try this:
taki:
While PORTC.4=0
WEND
COUNT PORTC.4, 70, LABEL
LCDOUT $FE,$c0, DEC5 LABEL
PAUSE 5
GOTO TAKI
The actual issue is different I guess.
The system used is IDPPM - Differential Pulse Position Modulation.
Now I changed algorithm, and it detects pulses, there are 34 pulses, and it does it properly. But quantity of pulses is always 34, only pauses between them change, so COUNT is not proper implementation I guess.
P.S. above code displays only 00000
I was thinking that 1 is represented with missing pulse.
You can try something like this
Code:DEFINE PULSIN_MAX 65535 ' Limit wait-for-pulse and maximum-pulse count While PORTC.4=0 'wait for rising edge of start pulse WEND FOR I=0 TO 33 PULSIN PORTC.4,0,W3 IF W3>XXX THEN GOTO GotData NEXT I
A side note, a statement like
IF PORTC.4=1 THEN
actually sets PORTC.4 high.
Is this bug or feature?
I've added 1 transistor signal inverter, but no help. Also, your code does not work.
OK, I will give up with this idea.
Bookmarks