Reset timer / encoder transition


Closed Thread
Results 1 to 5 of 5

Hybrid View

  1. #1
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Why 6KHz? Not sure if the PIC may run as this slow... Internal is free, and gives 1-2 more i/o.

    i need another cofee...
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  2. #2
    Join Date
    Jun 2007
    Posts
    7


    Did you find this post helpful? Yes | No

    Default

    The 6KHz oscillator is to get under the 10KHz limit to avoid FCC testing of our product. I do not need a fast clock to handle the inputs involved and clock accuracy is not critical. I have the PIC running at 6KHz and it is running the other portions of my program okay. I have just not yet been able to think of a way to use the PIC timers to confirm that I am getting a transition on 1 input while I am also monitoring other inputs. I need to see that the input has changed within a 3 or 4 second window. It seems like it should be simple but I am not used to this type of timer. I am used to a timer that I could start and then reset with each transition so that the timer does not time out. If it does time out I would go to a fault handling routine. I need this timer running in the background while I am checking other inputs. I am sure it can be done I just haven't worked with PIC's before.

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


    Did you find this post helpful? Yes | No

    Default

    It may seem a lot harder than it actually is.

    Try this. We're using Timer0 configured as a counter. When your encoder
    makes a transition on RA4/TOCKI (Timer0 clock input pin), it increments
    the Timer0 count.

    Real simple. Runs in the background all on its own, etc,,.

    Code:
    TRISA.4 = 1 ' RA4/T0CKI = input to TMR0 counter
    TRISB.0 = 0 ' RB0 = output for LED
    CMCON = 7   ' All digital
    
    ' Assign prescaler to WDT for 1:1 prescale on TMR0
    ' TMR0 clock will be from your external input on RA4/T0CKI
    ' Increment on high-to-low transitions
     OPTION_REG = %00111000
     
    ' If you prefer, then increment on low-to-high transitions
    ' OPTION_REG = %00101000
    
    Main:
        TMR0 = 0     ' Clear TMR0 count before start
        
    Loop:
        WHILE TMR0 = 0 ' Wait for high-to-low transition
        WEND           ' on RA4/T0CKI
        PORTB.0 = 1    ' LED on to indicate transition seen
        PAUSE 500
        PORTB.0 = 0    ' LED off
        GOTO Main      ' Start over
    
        END
    Timer0 configured as a counter can count your encoder transitions in the
    background, and your main code can do whatever else it needs to in the
    mean time.

    You can set it to increment on high-to-low or low-to-high transitions by
    flipping a single bit in the OPTION register.

    Just look in your datasheet at the OPTION register & Timr0 sections for
    how/why it works. It's really simple once you tinkered with it a bit.
    Regards,

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

  4. #4
    Join Date
    Jun 2007
    Posts
    7


    Did you find this post helpful? Yes | No

    Default

    Bruce, thanks for the idea. Your idea would need some adjusting to make it run in the background in my application, but it has got me to thinking about using the timer as a counter and setting it just a couple of counts from overflowing and then my program will need to see it overflow because of the transitions or else jump to a fault routine. I am just used to the smooth operation of timers and counters in PLC programming and the PIC timers just seem awkward to use.

Similar Threads

  1. Resetting a timer in VB6
    By Bruce in forum Off Topic
    Replies: 11
    Last Post: - 26th December 2013, 20:02
  2. Quadrature encoder and ASM Interrupts. questions..
    By godfodder in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 17th March 2013, 14:45
  3. Elapsed Timer Demo
    By Darrel Taylor in forum Code Examples
    Replies: 111
    Last Post: - 29th October 2012, 17:39
  4. Timer interrupt frequency
    By Samoele in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 17th January 2009, 23:49
  5. encoder wowes
    By wallaby in forum mel PIC BASIC Pro
    Replies: 16
    Last Post: - 6th December 2005, 21:56

Members who have read this thread : 0

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