Ok I was thinking where you said you made the PWM to measure on a scope,
so had my best go at that sitting here rather than scab the code 
Probably not the most effective with memory or time, but I think the frequency will be correct.
and it’s probably also more like asm pseudo code at the moment.
Code:
‘start of code somewhere:
‘
flipflip var byte
‘in ISR straight after Ticks is incremented
‘
@ btfsc flipflop ,00 ; 1/2
@ goto aaaa ; 2
@ goto bbbb ; 2
aaaa: ‘
@ bsf portb, 07 ; 1
@ goto overpwm ; 2
bbbb: ‘
@ nop ; 1
@ bcf portb, 07 ; 1
overpwm: ‘
@ comf flipflop ; 1 - but timing doesn’t matter here
‘instruction time 6 for flip state, 6 for flop state,
‘7 for the code to execute no matter the status
I like the idea the PWM is almost free if you wanted it,
and there might be a situation you’d want the electrical frequency of the timer.
It might not have originally been obvious I was setting this up for a pic.. only works up to 20MHz though:
Code:
'$FFFF - (((20 / 4) * 10000) - 8) = $3CB7
‘might as well fix the constant val too
constval = $FFFF - (((f/4)*10000-7)'
Though I have not needed to, it’s pointless unless you are varying the pic’s oscillator frequency,
and also telling the pic program the new osc frequency, or figuring out some other way what frequency the pic is running at.
That PWM would indicate resolution error at runtime for different osc frequencies.
Bookmarks