PDA

View Full Version : TMR1 setting for PIC12F675



Samoele
- 4th March 2008, 09:40
I have made program for using TMR1 on PIC18F242 and is working well. Afterwords I have adjusted for PIC12675 but is not working. Here is sample of the program which is not working. Is the TMR1 adjusted correctly?
Thanks for your help!
Samo

DEFINE OSC 20
ADCON0=0
CMCON=7








PulseHigh var word
PulseLow var word
W1 VAR WORD
W2 VAR WORD
W3 VAR WORD
W4 VAR WORD
W5 VAR WORD
w6 var word
w7 var word



T1CON = 0


SignalInput var gpio.0
izhod var gpio.1



T1ON var T1CON.0

CLEAR
GOSUB ClearTimer

Start:

WHILE SIGNALINPUT=0 : WEND
WHILE SIGNALINPUT=1 : WEND
'
' Measure low pulse
' =================
'
T1ON=1 ' start Timer
WHILE SIGNALINPUT=0 : WEND ' wait for next rising edge
T1ON=0
' stop timer
PULSElow.HIGHBYTE=TMR1H ' store results
PULSElow.LOWBYTE=TMR1L '
pulselow=pulselow / 5 ' 1 tick = 0.2 Usec @ 20MHZ
' Divide by 5 to have 1 uSec
' Resolution
gosub Cleartimer ' reset Timer1 register (TMR1L, TMR1H)
'
' Waiting for rising edge
' =======================
'
while Signalinput=1 : Wend
while signalinput=0 : wend
'
' Measure high pulse
' ==================
'
T1ON=1 ' Start timer
WHILE SIGNALINPUT=1 : WEND ' wait for next falling edge
T1ON=0 ' Stop Timer
PULSEhigh.HIGHBYTE=TMR1H ' Store result
PULSEhigh.LOWBYTE=TMR1L '
pulsehigh=pulsehigh / 5 ' match results to 1 uSec resolution
gosub Cleartimer ' reset Timer1 register (TMR1L, TMR1H)


w7=100
'
w1= pulseHigh + PulseLow
w2=pulsehigh * 1000
W3= DIV32 w1
w5= w7 * 1000
w6= div32 w3

for w4=1 to 50000
high gpio.1
pauseus W6/2
low gpio.1
pauseus W6/2
next w4

goto start

ClearTimer:
TMR1L=0
TMR1H=0
RETURN

Darrel Taylor
- 4th March 2008, 13:21
Try adding ANSEL = 0.
<br>