
Originally Posted by
richard
...PIE4.0 = 1 ' Restarts Timer1 no it dosent...
Now I'm confused.
I thought you said I had to handle it?

Originally Posted by
richard
... dt ints will not enable intcon PEIE you need to
This runs 50msec non-stop:
Code:
#CONFIG
__config _CONFIG1, _FEXTOSC_OFF & _RSTOSC_HFINT32 & _CLKOUTEN_OFF & _CSWEN_OFF & _FCMEN_ON
__config _CONFIG2, _MCLRE_ON & _PWRTE_OFF & _LPBOREN_OFF & _BOREN_ON & _BORV_LO & _ZCD_OFF & _PPS1WAY_OFF & _STVREN_ON & _DEBUG_OFF
__config _CONFIG3, _WDTCPS_WDTCPS_11 & _WDTE_OFF & _WDTCWS_WDTCWS_7 & _WDTCCS_LFINTOSC
__config _CONFIG4, _WRT_OFF & _SCANE_available & _LVP_OFF
__config _CONFIG5, _CP_OFF & _CPD_OFF
#ENDCONFIG
include "I:\Project_v2\PBP\PBP_Includes\DT_INTS-14_16F18877.bas"
include "I:\Project_v2\PBP\PBP_Includes\ReEnterPBP.bas"
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, _ToggleLED1, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
DEFINE OSC 32
ANSELA = %00000000
ANSELB = %00000000
ANSELC = %00000000
ANSELD = %00000000
ANSELE = %00000000
TRISA = %00000000
TRISB = %00000000
TRISC = %00000000
TRISD = %00000000
TRISE = %00000000
T1CON = %00110001 ' 1:8 Prescale, Enables Timer1
' bit 7-6 Unimplemented: Read as ‘0’
' bit 5-4 CKPS<1:0>: Timer1 Input Clock Prescale Select bits
' ----> 11 = 1:8 Prescale value
' 10 = 1:4 Prescale value
' 01 = 1:2 Prescale value
' 00 = 1:1 Prescale value
' bit 3 Unimplemented: Read as ‘0’
' bit 2 SYNC: Timer1 Synchronization Control bit
' When TMR1CLK = FOSC or FOSC/4
' This bit is ignored. The timer uses the internal clock and no
' additional synchronization is performed.
' When TMR1CS<1:0> = (any setting other than FOSC or FOSC/4)
' 1 = Do not synchronize external clock input
' 0 = Synchronized external clock input with system clock
' bit 1 RD16: Timer1 On bit
' 1 = All 16 bits of Timer1 can be read simultaneously (TMR1H is buffered)
' 0 = 16-bit reads of Timer1 are disabled (TMR1H is not buffered)
' bit 0 ON: Timer1 On bit
' ----> 1 = Enables Timer1
' 0 = Stops Timer1 and clears Timer1 gate flip-flop
T1CLK = %00000001 ' FOSC/4 Timer1 Clock
' bit 7-4 Unimplemented: Read as ‘0’
' bit 3-0 TxCS<3:0>: Timer1/3/5 Clock Select bits
' 1111 = LC4_out
' 1110 = LC3_out
' 1101 = LC2_out
' 1100 = LC1_out
' 1011 = TMR5 overflow output(3)
' 1010 = TMR3 overflow output(2)
' 1001 = TMR1 overflow output(1)
' 1000 = TMR0 overflow output
' 0111 = CLKR output clock
' 0110 = SOSC
' 0101 = MFINTOSC ' 1.05msec @ 32MHz with no preload
' 0100 = LFINTOSC ' n/a
' 0011 = HFINTOSC ' 16.56msec @ 32MHz with no preload
' 0010 = FOSC ' 16.54msec @ 32MHz with no preload
' ----> 0001 = FOSC/4 ' 66.18msec @ 32MHz with no preload
' 0000 = TxCKIPPS
LatB.0 = 0
TMR1H = 60 : TMR1L = 176 ' 50msec interval (32MHz, 16bit, 1:8)
PIE4.0 = 1 ' Starts Timer1
LatB.0 = 1
Main:
LatB.5 = 1 ' Heartbeat
LatB.5 = 0
GOTO Main
ToggleLED1:
LatB.0 = 0
' PIE4.0 = 0 ' Stops Timer1
TMR1H = 60 : TMR1L = 176 ' 50msec interval (32MHz, 16bit, 1:8)
' PIE4.0 = 1 ' Restarts Timer1
LatB.0 = 1
@ INT_RETURN
This starts it once (same defines and registers):
Code:
ToggleLED1:
LatB.0 = 0
PIE4.0 = 0 ' Stops Timer1
TMR1H = 60 : TMR1L = 176 ' 50msec interval (32MHz, 16bit, 1:8)
' PIE4.0 = 1 ' Restarts Timer1
LatB.0 = 1
@ INT_RETURN

This stops it, then starts it back up again (this is what I need for my project):
Code:
ToggleLED1:
LatB.0 = 0
PIE4.0 = 0 ' Stops Timer1
TMR1H = 60 : TMR1L = 176 ' 50msec interval (32MHz, 16bit, 1:8)
PIE4.0 = 1 ' Restarts Timer1
LatB.0 = 1
@ INT_RETURN
Bookmarks