Error compiling with DT Interrupts
Hi guys,
i'm a bit lost with a very small and simple program which does not compile when using DT interrupt library on the 18F2580.
I was hopping someone more inteligent could help figure out how i can modify the library so it can be compatible with this MCU.
This is the entire program:
Code:
'****************************************************************
'* Name : IC_3_COMTEST.PBP *
'* Author : Rui Cabral *
'* Notice : Copyright (c) 2024 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 19/12/2024 *
'* Version : 1.0 *
'* Notes : 18F2580 - MAINBOARD V2.2 *
'* : *
'****************************************************************
'
'
'
'
;----[18F2580 Hardware Configuration]-------------------------------------------
#IF __PROCESSOR__ = "18F2580"
#DEFINE MCU_FOUND 1
#CONFIG
CONFIG OSC = IRCIO67 ; Internal oscillator block, port function on RA6 and RA7
CONFIG FCMEN = OFF ; Fail-Safe Clock Monitor disabled
CONFIG IESO = OFF ; Oscillator Switchover mode disabled
CONFIG PWRT = OFF ; PWRT disabled
CONFIG BOREN = OFF ; Brown-out Reset disabled in hardware and software
CONFIG BORV = 3 ; VBOR set to 2.1V
CONFIG WDT = OFF ; WDT disabled (control is placed on the SWDTEN bit)
CONFIG WDTPS = 512 ; 1:512
CONFIG PBADEN = OFF ; PORTB<4:0> pins are configured as digital I/O on Reset
CONFIG LPT1OSC = OFF ; Timer1 configured for higher power operation
CONFIG MCLRE = OFF ; RE3 input pin enabled; MCLR disabled
CONFIG STVREN = ON ; Stack full/underflow will cause Reset
CONFIG LVP = OFF ; Single-Supply ICSP disabled
CONFIG BBSIZ = 1024 ; 1K words (2K bytes) boot block
CONFIG XINST = OFF ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
CONFIG DEBUG = OFF ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
CONFIG CP0 = OFF ; Block 0 (000800-001FFFh) not code-protected
CONFIG CP1 = OFF ; Block 1 (002000-003FFFh) not code-protected
CONFIG CP2 = OFF ; Block 2 (004000-005FFFh) not code-protected
CONFIG CP3 = OFF ; Block 3 (006000-007FFFh) not code-protected
CONFIG CPB = OFF ; Boot block (000000-0007FFh) not code-protected
CONFIG CPD = OFF ; Data EEPROM not code-protected
CONFIG WRT0 = OFF ; Block 0 (000800-001FFFh) not write-protected
CONFIG WRT1 = OFF ; Block 1 (002000-003FFFh) not write-protected
CONFIG WRT2 = OFF ; Block 2 (004000-005FFFh) not write-protected
CONFIG WRT3 = OFF ; Block 3 (006000-007FFFh) not write-protected
CONFIG WRTC = OFF ; Configuration registers (300000-3000FFh) not write-protected
CONFIG WRTB = OFF ; Boot block (000000-0007FFh) not write-protected
CONFIG WRTD = OFF ; Data EEPROM not write-protected
CONFIG EBTR0 = OFF ; Block 0 (000800-001FFFh) not protected from table reads executed in other blocks
CONFIG EBTR1 = OFF ; Block 1 (002000-003FFFh) not protected from table reads executed in other blocks
CONFIG EBTR2 = OFF ; Block 2 (004000-005FFFh) not protected from table reads executed in other blocks
CONFIG EBTR3 = OFF ; Block 3 (006000-007FFFh) not protected from table reads executed in other blocks
CONFIG EBTRB = OFF ; Boot block (000000-0007FFh) not protected from table reads executed in other blocks
#ENDCONFIG
#ENDIF
;----[Verify Configs have been specified for Selected Processor]----------------
; Note: Only include this routine once, after all #CONFIG blocks
#IFNDEF MCU_FOUND
#ERROR "No CONFIGs found for [" + __PROCESSOR__ +"]"
#ENDIF
'*****************************************************************************
'OSCCON =%01110000 '8MHz INTOSC
'OSCTUNE=%11000000 'PLLEN enabled
'OSCTUNE=%10000000 'PLLEN DISABLED
OSCCON =%01110010 '8MHz INTOSC <-------------------TEST THIS MODE (Internal Osc Block)
OSCTUNE=%01000000 'PLLEN DISABLED <-------------------TEST THIS MODE (31KHZ DEVICE CLOCK)
'DEFINE OSC 8
DEFINE OSC 32
'*****************************************************************************
'#DEFINE IOC_INT PIR0,IOCIF, PIE0,IOCIE
'https://www.picbasic.co.uk/forum/showthread.php/26778-IOC-on-pin-going-HIGH-and-LOW?p=156080#post156080
'https://www.picbasic.co.uk/forum/showthread.php/26776-SOLVED-Can-t-get-IOC-on-pin-change-working
'https://www.picbasic.co.uk/forum/showthread.php/26783-Can-t-get-IOC-on-pin-change-working
'https://support.melabs.com/forum/picbasic-pro-compiler-3-0-and-later/asm-assembly-language-in-picbasic-pro/7003-customizing-the-dt_ints-xx-bas-instant-interrupt
'*****************************************************************************
INCLUDE "ALLDIGITAL.pbp"
DEFINE SHOWDIGITAL 1
'*****************************************************************************
INCLUDE "DT_INTS-18.bas"
'INCLUDE "DT_INTS-14.bas"
'INCLUDE "ReEnterPBP.bas"
INCLUDE "ReEnterPBP-18.bas"
'INCLUDE "ReEnterPBP-18LP.bas"
DEFINE HSER_BAUD 9600
DEFINE HSER_RCSTA 90h ' SPEN + CREN
DEFINE HSER_TXSTA 24h ' TXEN + BRGH
DEFINE HSER_CLROERR 1
RXBYTE VAR BYTE
RXFLAG VAR BIT
RX1 VAR BYTE
RX2 VAR BYTE
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler USART_RX_INT, _RxISR, PBP, yes
ENDM
INT_CREATE
ENDASM
PIE1.5 = 1 ' RCIE
INTCON = %11000000 ' GIE + PEIE
'*****************************************************************************
PORTA=%00000000
PORTB=%00000000
PORTC=%00000000
TRISA=%00000000
TRISB=%00000000
TRISC=%10000000 'RC7 - RX pin as input
'*****************************************************************************
'PORTS & PINS
IC_RX var PORTC.7 'IC3 INPUT
LED1 VAR PORTC.3
LED2 VAR PORTC.4
'Communication between MCUs (COMM)---------------------
'PORTB.5 (IC2,3,4,5,6) COMM
'PORTA.1 (IC1) COMM
CT VAR BYTE
CT2 VAR BYTE
INTFLAG VAR BYTE
MOODCHANGE VAR WORD
'*****************************************************************************
'wsave var byte $20 system ;location for W if in bank0
'wsave var byte $70 system ;location for W if in bank0
'..... If any of these next three lines cause an error ...Comment them out to fix the problem...
'............which variables are needed, depends on the chip you are using.......
wsave1 var byte $A0 system ;location for W if in bank0
wsave2 var byte $120 system ;location for W if in bank0
wsave3 var byte $1A0 system ;location for W if in bank0
'*****************************************************************************
INIT:
clear
pause 100
goto main
'*****************************************************************************
main:
toggle LED1
pause 1000
goto main
'*****************************************************************************
RxISR:
'xa$23.IC102
' HSERIN [WAIT("IC1"), RXBYTE]
' Espera até encontrar "IC1"
HSERIN [WAIT("IC1"), RX1, RX2]
' RX1 = "0"
' RX2 = "2"
if RX1="0" and RX2="2" then
high led2
else
low led2
endif
'HSERIN [WAIT(":"), RX1, RX2, RX3]
'HSERIN [WAIT($02), RXBYTE]
'HSERIN [WAIT("A"), RXBYTE]
RXFLAG = 1
@ INT_RETURN
'*****************************************************************************
Thanks
Re: Error compiling with DT Interrupts
Code:
INT_Handler USART_RX_INT, _RxISR, PBP, yes
dt ints does not have an interrupt called USART_RX_INT perhaps you mean RX_INT
Re: Error compiling with DT Interrupts
Hi Richard,
thank you so much for your quick reply.
And once again you are 100% correct.
How could i be so blind?
Thanks. It now compiles correctly.