TMR1 100Hz Exactly Interrupt Routine


Closed Thread
Results 1 to 16 of 16

Hybrid View

  1. #1
    Join Date
    Jan 2007
    Posts
    44

    Default TMR1 100Hz Exactly Interrupt Routine

    Hi.
    Im working on a datalogger project that needs to take a reading every exactly 1 second. I want to make TMR1 interrupt every 10 ms, so that every 100 TMR1 interrupts, I get exaclty one second. This is the routine I got to write. I have not tested yet in a PIC, because I run out of them after burning to of them because of wrong polarity . LOL. By the way, I am using 16F877A. This is the code.

    /////////////////////////////////////////////////

    INT:
    @ BCF T1CON,0 'STOP TIMER1
    @ MOVLW 0xC3 'LOAD WITH 65527 BECAUSE
    @ MOVWF TMR1H '50000 (20MHz / 4 / 100) - 2 CYCLES
    'TO ENTER INT
    @ MOVLW 0x48 '- 6 CYCLES TO LOAD THE REGISTERS, AND
    @ MOVLW TMR1L 'TURN IT ON AGAIN
    @ BSF T1CON,0 'TURN TIMER1 ON AGAIN

    X = X + 1 'INCREMENT REG
    PIR1.0 = 0 'CLEAR INT FLAG
    CONTEXT RESTORE 'RESTORE REGs AND RETFIE

    /////////////////////////////////////////////////

    Can you please tell me if its OK??? Thanks for your help, and sorry for my english. Manuel

  2. #2
    Join Date
    Jan 2007
    Posts
    44


    Did you find this post helpful? Yes | No

    Smile

    Hey its me again. I have just realized that in the number to load to TMR regs, i have to take into account the cycles needed to save all the regs. But anyway, I just want to know what you guys think about the general of the routine. Would it work??? Would it be accurate??? Thanks again.
    Manuel

  3. #3
    Join Date
    Feb 2003
    Location
    Salt Lake City, Utah USA
    Posts
    517


    Did you find this post helpful? Yes | No

    Smile

    Why 10 mS, 100 Counts? You are thinking like a person and not a computer. Computers like powers of 2s not 10s.

    Why not use a 4.194304MHz Xtal (DigiKey has them in stock for $0.70 ea), let Timer 1 run free, set the prescaler to 8, and count TMR1 overflows. 2 Overflows = 1.000 sec. This gives you lots of time to do other stuff in between interrupts.
    (math = 4/4.194304*65536 * 8 * 2 = 1000000 uS = 1 S)

    Oh yeah, you also do not have to deal with accounting for the timing for saving registers etc because the timer is free running.
    Paul Borgmeier
    Salt Lake City, UT
    USA
    __________________

  4. #4
    Join Date
    Jan 2007
    Posts
    44


    Did you find this post helpful? Yes | No

    Default

    Hi Paul
    Thanks for your help!!!!!!!!!
    Youre right, im quite new to programming and still not used to power of 2!!
    Anyway, which crystal do you recommend to use to run close to 20MHz???
    Thanks a million
    Manuel

  5. #5
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,614


    Did you find this post helpful? Yes | No

    Wink My two cents ...

    100 Hz ...

    might have very precise 100 Hz timebase from mains ... just a trafo and two rectifiers !!!

    just an idea ...

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  6. #6
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    Have a look here http://www.pbpgroup.com

    Darrel has some excellent PBP examples.
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

Similar Threads

  1. Can't ID interrupt source with this IntHandler??
    By jellis00 in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 3rd June 2009, 02:35
  2. 16F876A CCP1 Capture/Interrupt Question
    By TDonBass in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 17th January 2008, 03:25
  3. Interrupt Problem
    By Kamikaze47 in forum mel PIC BASIC Pro
    Replies: 15
    Last Post: - 16th November 2005, 20:58
  4. USART interrupt not interrupting right
    By Morpheus in forum mel PIC BASIC Pro
    Replies: 12
    Last Post: - 6th March 2005, 01:07
  5. Multi Interrupt How To ?
    By capitano in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 3rd February 2005, 14:48

Members who have read this thread : 1

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