Counting Timer0 and Timer1 overflows without any interrupt handler


Results 1 to 33 of 33

Threaded View

  1. #14
    Join Date
    Jan 2007
    Posts
    78


    Did you find this post helpful? Yes | No

    Default Re: Counting Timer0 and Timer1 overflows without any interrupt handler

    Hi Darrel and Hendrick,
    I'm still moving along dabbling with this project.
    Since I have the 16F887A in a LABX-1 project board, and I had a 12F683 mounted in a bread-board, I decided for convenience to see if I can make another step in this project using the 12F683. I got the 32khz crystal up and running on Timer1. By loading a preset value into Timer1's hi-byte, I can initiate the the frequency counting gate and Timer1 will interrupt right at 1Sec. (close enough on my Oscope).
    So then I moved to add using Timer0 as the counter for the external frequency.
    I'm only playing with a max input frequency of 300Khz right now, so I can utilize the PICs internal oscillator.

    The following code is my progress.
    It doesn't yet have the step of capturing the remainder value within Timer0.
    Just got the point of attempting to counting Timer0 overflows.
    But since I added the Timer0 register settings, it appears that I can't shut off the Timer1 overflow no matter what I do. Its supposed to display the timer0 overflow count and then go into a forever loop. But it keeps popping back up to "Display_Results". So I suspect timer1 is still initiating the interrupt routine.
    Code:
    ' Name        : Frequency Counter Clock in Timer0 - Gate with Timer1
    ' Compiler    : PICBASIC PRO Compiler 2.6
    ' Assembler   : PM or MPASM
    ' Target PIC  : PIC12F683
    ' Hardware    : 32.768khz crystal on OSC1-ISC2 for 1sec gate
    ' Oscillator  : 4MHz internal osc for PIC
    ' Keywords    :
    ' Language    : PICBASIC PRO
    '  
    '                     VDD --- 1|----|8--- vSS
    '    GP5/TICKI/OSC1/CLKIN --- 2|----|7--- GP0/AN0/CIN+/ICSPDAT/ULPWU
    ' GP4/AN3/T1G/OSC2/CLKOUT --- 3|----|6--- GP1/AN1/CIN-/VREF/ICSPCLK
    '            GP3/MCLR/VPP --- 4|----|5--- GP2/AN2/T0CKI/INT/COUT/CCP1
    '------------------------------------------------------------------------ 
      
    Include "modedefs.bas"  ' Include serial modes for LCD display
    define osc 4
    OSCCON = %01100100     ' internal oscillator at 4 MHZ runs the pic
    CMCON0 = 7             ' Comparators off
    ANSEL = 0              ' Set all digital
    WPU    = 0             ' Internal pull-ups = off
    GPIO   = %00000000     ' clear GPIO port
    TRISIO = %00000100     ' All outputs except gpio.2 (input to frequency)
    CCP1CON=0              ' ccpm module off
    
    LCD var GPIO.1			'use GPIO1 pin 6 to LCD display
    GATE var byte            'variable for 1 second gate flag
    TMR_CNT var word         'variable for counting timer0 overflows
    
    on interrupt goto TMR1_INT
    
    'setup Timer0 option_register
    OPTION_REG = %10100111   'bit 7 pullups disabled
                             'bit 6 don't care 
                             'bit 5 Transition on TOCKI pin
                             'bit 4 Increment on low to high TOCKI pin
                             'bit 3 Prescaller assigned to TIMER0
                             'bit 2-0 Prescaller setting 1:256
    INTCON.2 = 0		     'set Timer0 ovrflow flag zero
    TMR0 = 0                 'clear the Timer0 counter register
    
    'clear Timer1 interrupt registers
    T1CON.0 = 0    'TMR1ON disable interrupts for now
    TMR1L = 0      'clear lower 8 bits of Timer1 counter
    INTCON = 0     'clear the system interrupt control register
    PIR1 = 0       'clear the system interrup flag bits register
    PIE1 = 0       'clear perephrial interrupt enable register
    
    pause 1000
    
    'configure Timer1 interrupt settings
    T1CON.3 = 1     'T1OSC of the T1CON register enabled
    PIE1.0 = 1		'Timer1 overflow enable bit enabled
    INTCON.6 = 1	'Perephrial enable bit set to enable
    INTCON.7 = 1    'GIE Global interrupt enable bit enabled
    T1CON = 14		'T1OSCEN enable
                    'T1Sync disabled
                    'TMR1CS external source for Timer1
    TMR1H = 207     'preload hi-byte of Timer1 counter so 
                    'when interrupt occurs with 32khz crystal
                    'on OSC1 + OSC2, it will be 1 second
    T1CON.0 = 1     'T1CON.TMR1ON Timer1 enabled *NOW*
    
    GATE = 1
    
    main:
    while GATE > 0       'After 1 Second Gate interrupt this ends
    @ BTFSC INTCON,2    ;Test Timer0 overflow flag bit
    @ incf _TMR_CNT,f   ;If flag set then increment TMR_CNT by 1
    @ BTFSC INTCON,2    ;Test Timer0 overflow flag bit again
    @ BCF INTCON,2      ;If flag set then clear it
    wend
    
    Display_Results:
    serout LCD,T9600, [#TMR_CNT] 
    pause 2000
    loop_here:
    goto loop_here
    
    ' ************ TIMER1 GATE INTERRUPT ROUTINE AFTER 1 SEC **************
    disable
    TMR1_INT:
    GATE = 0
    T1CON.0 = 0    'TMR1ON disable interrupts for now
    INTCON = 0     'clear the system interrupt control register
    PIR1 = 0       'clear the system interrup flag bits register
    PIE1 = 0       'clear perephrial interrupt enable register
    INTCON.2 = 0   'set Timer0 ovrflow flag zero
    INTCON.7 = 0   'GIE OFF - Turn off all Interrupts
    resume         'goto main
    
    	 
    End
    Last edited by Darrel Taylor; - 17th February 2014 at 17:44. Reason: Fixed Archangel's code tags

Similar Threads

  1. Expanding Timer1 counting range
    By sycluap in forum mel PIC BASIC Pro
    Replies: 14
    Last Post: - 3rd February 2014, 22:00
  2. PIC18 timer0 interrupt handler, still not getting it
    By ImAnEE in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 30th April 2011, 00:25
  3. DT-INTs Interrupt handler question
    By circuitpro in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 8th January 2010, 00:06
  4. Synchronising Timer0 and Timer1
    By manxman in forum mel PIC BASIC Pro
    Replies: 8
    Last Post: - 9th April 2008, 23:12
  5. 16F690 TIMER0 and TIMER1
    By nickdaprick in forum mel PIC BASIC
    Replies: 2
    Last Post: - 18th April 2007, 14:49

Members who have read this thread : 2

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts