Solved - ELAPSED TIMER: TimerConst not defined


+ Reply to Thread
Results 1 to 12 of 12
  1. #1
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,831

    Default Solved - ELAPSED TIMER: TimerConst not defined

    SOLVED: See post #8:

    https://www.picbasic.co.uk/forum/sho...018#post156018


    Datasheet says the PIC 16F1936 has an "enhanced 16-bit TIMER1, TIMER2/4/6 are 8-bit", would that cause problems?

    I used this as reference:
    https://www.picbasic.co.uk/forum/sho...275#post130275. Hopefully I didn't miss something.

    My code:

    Code:
    @ ERRORLEVEL -301   ; turn off ADC clock ignored message
    @ ERRORLEVEL -306   ; turn off crossing page boundary message
    
    #CONFIG
     __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF 
     __CONFIG _CONFIG2, _WRT_OFF & _VCAPEN_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_LO & _LVP_OFF
    #ENDCONFIG
    
    INCLUDE "DT_INTS-14.bas"
    INCLUDE "ReEnterPBP.bas"
    Include "Elapsed_INT.bas"
    
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler   TMR1_INT,  _ClockCount,   PBP,  yes
        endm
        INT_CREATE            ; Creates the interrupt processor
    ENDASM
    
    DEFINE OSC 32
    
    SPLLEN          CON %1                  ' PLL enable
    IRCF            CON %1110               ' to enable 8 MHz
    SCS             CON %00                 ' system clock determined by FOSC
    OSCCON = (SPLLEN << 7) | (IRCF << 3) | SCS
                                            
    DEFINE  LCD_DREG      PORTB             ' Set LCD data port
    DEFINE  LCD_DBIT      0                 ' Set starting data bit
    DEFINE  LCD_RSREG     PORTC             ' Set LCD register select port
    DEFINE  LCD_RSBIT     5                 ' Set LCD register select bit
    DEFINE  LCD_EREG      PORTC             ' Set LCD enable port
    DEFINE  LCD_EBIT      4                 ' Set LCD enable bit
    DEFINE  LCD_BITS      4                 ' Set LCD bus size
    DEFINE  LCD_LINES     4                 ' Set number of lines on LCD
    DEFINE  LCD_COMMANDUS 1000              ' Set command delay time in microseconds
    DEFINE  LCD_DATAUS    50                ' Set data delay time in microseconds
    
    define  CCP4_REG     PORTC              ' PWM Pulse out to LCD contrast
    DEFINE  CCP4_BIT     1                  '   2N2907 PNP with 1K on base
    define  CCP5_REG     PORTC              ' PWM Pulse out to LCD backlight
    DEFINE  CCP5_BIT     2                  '   2N2222A NPN with 1K on base
    
    ANSELA = %00000000
    ANSELB = %00000000
    
    TRISA = %00000111
    TRISB = %00110000
    TRISC = %10000000
    TRISE = %00000000
    
        HPWM 2,100,1953
        HPWM 1,180,1953
        
    @ INT_ENABLE TMR1_INT ; Enable Timer 1 Interrupts
        Gosub ResetTime                ' Reset Time to  0d-00:00:00.00
    
        Pause 500                           ' Let PIC and LCD stabilize
    
        LCDOUT $FE, 1 : Pauseus 1
        LCDOUT $FE, $80, "ROTARY ENCODER TEST" : Pauseus 1
    
        GOSUB StartTimer          ' Start the Elapsed Timer
    
    Mainloop:
    
        IF SecondsChanged = 1 THEN  
            SecondsChanged = 0
            LCDOUT $FE,2, DEC Days,"d-",DEC2 Hours,":",DEC2 Minutes,":",DEC2 Seconds
        ENDIF
        
        goto mainloop
    end
    PBPX 3.1.6.3
    MCSP 5.0.0.5
    MPASMX assembler enabled


    EDIT: I've found this message "You'll need the ASM_INTS include from the original Elapsed Demo" here:

    https://dt.picbasic.co.uk/CODEX/ETimer

    Still looking....
    Last edited by Demon; - 22nd August 2024 at 21:40. Reason: Solved
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  2. #2
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,935


    Did you find this post helpful? Yes | No

    Default Re: ELAPSED TIMER: TimerConst not defined

    Have done some test a while back on Timers 0 and 1 on 1939 chip and all went just fine.

    Ioannis

  3. #3
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,831


    Did you find this post helpful? Yes | No

    Default Re: ELAPSED TIMER: TimerConst not defined

    Quote Originally Posted by Ioannis View Post
    Have done some test a while back on Timers 0 and 1 on 1939 chip and all went just fine.

    Ioannis
    Ok, well that's promising cause it also has the enhanced 16bit timer1.
    https://ww1.microchip.com/downloads/.../40001574C.pdf

    I even made sure to put the INCLUDES in the exact same order, but the error persists.

    Name:  Elapsed timer issue.png
Views: 48
Size:  45.2 KB


    It's either something totally obvious, or painfully obscure.
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  4. #4
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,831


    Did you find this post helpful? Yes | No

    Default Re: ELAPSED TIMER: TimerConst not defined

    FOUND IT!

    https://www.picbasic.co.uk/forum/sho...8683#post28683

    The Elapsed-18.bas only has constants for 4,8,10,20 and 40 mhz.
    Got some reading to do...
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  5. #5
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,935


    Did you find this post helpful? Yes | No

    Default Re: ELAPSED TIMER: TimerConst not defined

    Unfortunately I am away from any lab and cannot test again.

    It will take some time till I can do that...

    I recall that I did not use exactly Elapsed Timer but the DT-INTS only. Maybe that is why it worked OK. In any case it should work with Elapsed also.

    Ioannis

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,935


    Did you find this post helpful? Yes | No

    Default Re: ELAPSED TIMER: TimerConst not defined

    You beat me! Nice you found that detail! Hope it works OK now. But you use a 16F series chip not 18F.

    Ioannis

  7. #7
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,831


    Did you find this post helpful? Yes | No

    Default Re: ELAPSED TIMER: TimerConst not defined

    Of course I had to open a can of worms.

    This thread goes into detail how Darrel's Elapsed timer is off by 1:

    The value he used for each of the Oscillator rates is (1) less than it should be.
    The reason is that he calculated the Timer1 counter overflow value as 65535 instead of using 65536.
    Timer1 is a 16bit counter from 0 to 65535.
    It takes 65536 counts to overflow (Wrap back to 0) and trigger the Timer1 interrupt.
    This means that his 10ms interrupt will actually run longer by (1) instruction than it should.
    https://www.picbasic.co.uk/forum/sho...789#post132789

    Note to self: TimerCalc is in MultiCalc by Mr. E; (Timer Helper).
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  8. #8
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,831


    Did you find this post helpful? Yes | No

    Default Re: ELAPSED TIMER: TimerConst not defined

    Quote Originally Posted by Demon View Post
    Attachment 9731

    It's either something totally obvious, or painfully obscure.

    I can see the future! It turns out it's a combination of totally obvious and painfully obscure. It was looking at me right in the face.


    I added in Elapsed_INT.bas and it compiled without TimerConst errors.

    Code:
      If OSC == 32
    TimerConst = 0FFB7h
      EndIF
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  9. #9
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,935


    Did you find this post helpful? Yes | No

    Default Re: Solved - ELAPSED TIMER: TimerConst not defined

    Great! Just confirm it counts correctly now.

    Ioannis

  10. #10
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,831


    Did you find this post helpful? Yes | No

    Default Re: Solved - ELAPSED TIMER: TimerConst not defined

    It compiles, but now I have to find the correct value.

    I'm now on Art's thread trying to find that out:

    https://www.picbasic.co.uk/forum/sho...020#post156020


    EDIT: Darrel talks about the Prescaler and adding NOPs here:

    https://www.picbasic.co.uk/forum/sho...9649#post69649

    And that's about where my eyes start glossing over. I had also read a comment (somewhere) about Darrel using a prescaler of 2 for 64MHz, so I'm pretty sure I'm on the right track.


    EDIT SOME MORE: For future me when I'm looking for the same answer, Prescaler is controlled in T1CON.
    Last edited by Demon; - 23rd August 2024 at 01:37.
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  11. #11
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,831


    Did you find this post helpful? Yes | No

    Default Re: Solved - ELAPSED TIMER: TimerConst not defined

    Ok, I couldn't figure out how to incorporate Prescaler in Art's formula, so I took another route:

    - used Preload from 16MHz
    - set Prescaler to 1:2

    Counter on LCD worked as expected.

    https://www.picbasic.co.uk/forum/sho...025#post156025
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

  12. #12
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    2,831


    Did you find this post helpful? Yes | No

    Default Re: Solved - ELAPSED TIMER: TimerConst not defined

    Art's formula with Prescaler:

    65535 - (((( MHz / Prescaler ) / 4 ) x 10000 ) - 8 )
    My Creality Ender 3 S1 Plus is a giant paperweight that can't even be used as a boat anchor, cause I'd be fined for polluting our waterways with electronic devices.

    Not as dumb as yesterday, but stupider than tomorrow!

Similar Threads

  1. Elapsed Timer findings
    By Art in forum General
    Replies: 47
    Last Post: - 23rd August 2024, 06:40
  2. PIC16F18855 and DT elapsed timer
    By nomada in forum PBP3
    Replies: 2
    Last Post: - 18th October 2018, 05:58
  3. DT Elapsed Timer
    By retepsnikrep in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 14th December 2017, 23:21
  4. SPWM and Elapsed Timer
    By CocaColaKid in forum mel PIC BASIC Pro
    Replies: 12
    Last Post: - 8th May 2008, 03:16
  5. DT Elapsed Timer
    By rwskinner in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 9th March 2008, 23:17

Members who have read this thread : 6

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