with better resolution than PULSIN?
Here's how .. with an example from the Microchip CCP & ECCP Tips & Tricks modified to
work with PBP.
Code:
' Measuring signal pulse widths with capture module
' Procedure for high-going pulse:
' 1. Configure CCP to capture on rising edge
' 2. Setup Timer1 so it will not overflow during max pulse width time
' 3. Enable ccp capture
' 4. Once capture flag bit is set, save captured value as T1
' 5. Reconfigure CCP to capture on falling edge
' 6. On 2nd capture, save 2nd value as PW
' 7. Subtract T1 from PW for the pulse width value
DEFINE OSC 4
Symbol Capture = PIR1.2 ' CCP1 capture flag
T1 VAR WORD ' 1st capture value
PW VAR WORD ' 2nd capture value & ultimately final pulse width
TRISC.2 = 1 ' CCP1 input pin (Capture input on 18F242)
INTCON = 0 ' Interrupts off
ReLoad:
CCP1CON = %00000101 ' Capture mode, capture on rising edge
T1CON = 0 ' TMR1 prescale=1, clock=Fosc/4, TMR1=off
TMR1H = 0 ' Clear high byte of TMR1 counter
TMR1L = 0 ' Clear low byte
T1CON.0 = 1 ' Turn TMR1 on here
Capture = 0 ' Clear capture int flag bit
While !Capture ' Wait here until capture on rising edge
Wend
' Rising edge detected / stuff 'captured' Timer1 value in T1
T1.HighByte = CCPR1H
T1.LowByte = CCPR1L
CCP1CON.0 = 0 ' Configure capture for falling edge now
Capture = 0 ' Clear capture interrupt flag bit
While !Capture ' Wait here until capture on falling edge
Wend
' Falling edge detected / stuff 'captured' Timer1 value in PW
PW.HighByte = CCPR1H
PW.LowByte = CCPR1L
PW = PW-T1 ' High pulse width = PW-T1
HSEROUT [DEC PW,"uS High",13,10] ' Output to RS232 display
GOTO ReLoad
END
the falling edge first with CCP1CON = %00000100, and rising edge next with
CCP1CON.0 = 1.
Real simple ... real effective ... and spot-on timing. Even works on tiny little PICs
like the 12F683 12F615, etc...;o)


Menu

Re: Has anyone tried AI with PICBASIC
Yes sure.
CuriousOne - 11th April 2026, 20:35I asked claude, why it and other AI agents make same error with PBP variable definitions and other syntax issues, and as it said, this is because that PBP syntax is very similar to Visual...