Demon
- 22nd August 2024, 14:31
SOLVED: See post #8:
https://www.picbasic.co.uk/forum/showthread.php/26770-ELAPSED-TIMER-TimerConst-not-defined?p=156018#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/showthread.php/19638-Temporary-central-repository-of-Darrel-Taylor-s-works-(including-Mr-E-s-Multicalc)?p=130275#post130275. Hopefully I didn't miss something.
My 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....
https://www.picbasic.co.uk/forum/showthread.php/26770-ELAPSED-TIMER-TimerConst-not-defined?p=156018#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/showthread.php/19638-Temporary-central-repository-of-Darrel-Taylor-s-works-(including-Mr-E-s-Multicalc)?p=130275#post130275. Hopefully I didn't miss something.
My 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....