Hi Darell...Your above code will nevertheless be of value for many...

I'v finally just about finished writing my first timer template/instant interrupts based program. It just has 1 little bug when compiling...
If anyone has time, please take a look at this code snippet:

I am trying to use HPWM on a 16f690 in the main program loop.
The controlling variable "enabler" is determined by code in the timer1interrupt handler. When it is =1 the hpwm is turned on briefly.

Turning the HPWM on and off is where I have my problem..
I get WARNING Bad token " " for the 2 lines that set t2con in the main program loop, but not for the line setting t2con just before the main program loop. Any ideas?

best regards,
mike

------------------------------------------------------------------------
DEFINE OSC 4
OSCCON = %01100110 'should be OK too
ANSEL = $00
ANSELH = 0
ccp1con = 0
CM1CON0 = 0
CM2CON0 = 0

DEFINE I2C_HOLD 1
DPIN1 var PORTb.4 ' I2C data pin
CPIN1 var PORTb.6 ' I2C clock pin

INCLUDE "DT_INTS-14.bas" ; Base Interrupt System
INCLUDE "ReEnterPBP.bas" ; Include if using PBP interrupts

enabler var bit

' LOTS MORE VARIABLES DECLARED HERE

ASM
INT_LIST macro ' use the format IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, ReloadTMR1, ASM, no
INT_Handler TMR1_INT, _MATHhandler, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM

T1CON = $15 'prescaler; timer on
@ INT_ENABLE TMR1_INT ; enable Timer 1 interrupts

T2CON = $00 'HERE I DON'T GET A WARNING

main:
IF enabler = 1 THEN 'this variable controlls possible hpwm activation
TRISC = 1 'Datasheet said to turn off pwm outputs first
PR2 = 63 'Timer 2 period register
CCPR1L = 60 'MSBS of DUTYCYCLE
CCP1CON = %00001100 'CCP1M<3:0> = %1100 P1M<1:0> = %00 'turn on pwm…
PSTRCON = $0F '%00001111 PULSE STEERING CONTROL REGISTER- send same pwm signal to 4 outputs

T2CON = %00000100 ' HERE I GET A WARNING -precaler 1:1, postcaler 1:1, bit 2 = Timer2 ON

TRISC = 0
enabler = 0
PAUSE 100 'I could even change the vibration time by software (pause x)
CCP1CON = 0 'TURN OFF HPWM
T2CON = %00000000 'HERE I GET A WARNING -TURN OFF TMR2 - minimize power constumption

TMR2 = 0 'SHOULD RESET THE TIMER
endif
goto main


MATHhandler:

'ROUTINES THAT DETERMINE WHEN THE VARIABLE ENABLER=1 thus activating a short pwm signal in the main program

@ INT_RETURN



ASM
TimerReload = 30540
ENDASM
@Timer1 = TMR1L ; map timer registers to a word variable
Timer1 VAR WORD EXT
TimerReload CON EXT ; Get the External Constant
TMR1ON VAR T1CON.0 ; Alias the Timers ON/OFF bit
ASM
ReloadTMR1
MOVE?CT 0, T1CON, TMR1ON ; 1 stop timer
MOVLW LOW(TimerReload) ; 1 Add TimerReload to the
ADDWF TMR1L,F ; 1 value in Timer1
BTFSC STATUS,C ; 1/2
INCF TMR1H,F ; 1
MOVLW HIGH(TimerReload) ; 1
ADDWF TMR1H,F ; 1
MOVE?CT 1, T1CON, TMR1ON ; 1 start timer
INT_RETURN
ENDASM
StartTimer:
Timer1 = TimerReload ; Load Timer
TMR1ON = 1 ; start timer
RETURN
StopTimer:
TMR1ON = 0 ; stop timer
RETURN
--------------------------------------------------------------------------