Hi All.
Between 2001 and 2009 I did an awful lot of PBP programming and wrote many programs however one thing I didnt use was DT Instant Interrupts.
I returned to Pic Basic programming in late 2014. At that time I upgraded to PBP3 as I needed support for newer more powerful processors. The other day I tried to add Instant Interrupts to a fairly complex program I am working on and it just likked it dead. I decided to go for the basic principles first and have tried to do the Hello World, Blinky and Elapsed Timer demos to no avail.
I have tried using DT-INTS-18 with an 18F452 and DT-INTS-14 with a 16F877.
With the 18F452 I can get the program below to compile and my LED2 in the main loop will toggle every second (just as a heartbeat so that I know the program is running) but ONLY if I comment out the line @ INT_ENABLE TMR1_INT. If that line is uncommented it just seems to crash, I dont get my LED2 flashing once a second and the LED1 that is supposed to be toggled by the timer interrupt does nothing either.
I dont know if its because I havent set some things up first or if I have things in the wrong order but I am starting to tear my hair out.Code:'**************************************************************** '* Name : Instant Interrupts Test.BAS * '* Author : Keith Doxey * '* Notice : Copyright (c) 2016 Indigo Electronics * '* : All Rights Reserved * '* Date : 05/05/2016 * '* Version : 1.0 18F452 * '* : * '**************************************************************** ;----[18F452 Hardware Configuration]-------------------------------------------- #IF __PROCESSOR__ = "18F452" #DEFINE MCU_FOUND 1 #CONFIG CONFIG OSC = HS ; HS oscillator CONFIG OSCS = OFF ; Oscillator system clock switch option is disabled (main oscillator is source) CONFIG PWRT = OFF ; PWRT disabled CONFIG BOR = ON ; Brown-out Reset enabled CONFIG BORV = 20 ; VBOR set to 2.0V CONFIG WDT = ON ; WDT enabled CONFIG WDTPS = 128 ; 1:128 CONFIG CCP2MUX = ON ; CCP2 input/output is multiplexed with RC1 CONFIG STVR = ON ; Stack Full/Underflow will cause RESET CONFIG LVP = OFF ; Low Voltage ICSP disabled CONFIG DEBUG = OFF ; Background Debugger disabled. RB6 and RB7 configured as general purpose I/O pins. CONFIG CP0 = OFF ; Block 0 (000200-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-0001FFh) not code protected CONFIG CPD = OFF ; Data EEPROM not code protected CONFIG WRT0 = OFF ; Block 0 (000200-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-0001FFh) not write protected CONFIG WRTD = OFF ; Data EEPROM not write protected CONFIG EBTR0 = OFF ; Block 0 (000200-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-0001FFh) 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 DEFINE OSC 40 ' 40MHZ crystal (10MHz + 4*PLL) LED1 VAR PORTB.1 LED2 var PORTD.0 INCLUDE "DT_INTS-18.bas" ' Base Interrupt System INCLUDE "ReEnterPBP-18.bas" ' Include if using PBP interrupts ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler TMR1_INT, _ToggleLED1, PBP, yes endm INT_CREATE ; Creates the interrupt processor ENDASM T1CON = $31 ; Prescaler = 8, TMR1ON @ INT_ENABLE TMR1_INT ; enable Timer 1 interrupts Main: PAUSE 1000 toggle LED2 GOTO Main '---[TMR1 - interrupt handler]-------------------------------------------------- ToggleLED1: TOGGLE LED1 @ INT_RETURN
The DT-INTS-14 version with the 16F877 wont even compile. I get the following errors....
ASM Error - Symbol not previously defined (wsave)
ASM Error - Symbol not previously defined (INT_ENTRY)
followed by a whole load more.
I have searched this forum and read many threads and also googled but still cant get it to work
What are the latest version of the DT INT files as all the ones I have found predate the launch of PBP. The 14 files are from a zip file V1.1 and the 18 files I have V3.3 and 3.4 both of which I have tried with the same unsuccessful results.
Sadly Darrel is no longer with us for me to pick his brains so I would be extremely grateful if someone could point me in the correct direction so that I can get everything working. The more I read about Instant Interrupts the more I want to use them.
Thanks in advance




Bookmarks