Hi All,
First time using subject PIC and have it running well with all other tasks except no recognition of a button push via IOC.
The relevant section is below, taken from the main code (11k words) to avoid confusion. I've RTFM a number of times
but can't seem to get anywhere. All suggestions welcome.
Cheers,
Bill
Code:'**************************************************************** '* Name : Test_IOCAN.pbp * '* Author : WJS * '* Date : 27/08/2023 * '* Device : 16F18426 * '* Version : 1.0, PBP 3.1.5.4 * '* Notes : Test interrupt code for pushbutton on A.2 pulled * '* : up 10k. * '**************************************************************** ' Compiles and runs but no sign of Int. #CONFIG ; 16F18426 __config _CONFIG1, _FEXTOSC_OFF & _RSTOSC_HFINT32 & _CLKOUTEN_OFF & _CSWEN_ON & _FCMEN_ON __config _CONFIG2, _MCLRE_ON & _PWRTS_PWRT_64 & _LPBOREN_OFF & _BOREN_SBOREN & _BORV_LO & _ZCDDIS_OFF & _PPS1WAY_OFF & _STVREN_ON __config _CONFIG3, _WDTCPS_WDTCPS_31 & _WDTE_SWDTEN & _WDTCWS_WDTCWS_7 & _WDTCCS_LFINTOSC __config _CONFIG4, _BBSIZE_BB512 & _BBEN_OFF & _SAFEN_OFF & _WRTAPP_OFF & _WRTB_OFF & _WRTC_OFF & _WRTD_OFF & _WRTSAF_OFF & _LVP_OFF __config _CONFIG5, _CP_OFF #ENDCONFIG ' -----[ Initialization 16F18426]--------------------------------------------------------------------------------------- DEFINE OSC 32 ' Adjust to suit design. IOCAF = 0 ' Clear the Int flag. INTCON = %11000000 ' Enable GIE, PEIE, falling edge. PIE0 = %00010001 ' Enable IOCIE, INTE bits. IOCAP = 0 ' Disable IOC rising edge A. IOCAN = %00000100 ' Enable IOC falling edge A2. ADCON0 = 0 ' No ADC. ANSELA = %00000000 ' All Dig. ANSELC = %00000000 ' All Dig. CM1CON0 = 0 ' Comparators off. FVRCON = %0 ' Disabled. TRISA = %000100 ' A.2 pulled up, pushbutton to ground. TRISC = %000000 ' C.5 serout to PC via 1k, C.4 led to ground via 1k. LED var PORTC.4 ' Led via 1k to ground. To_PC var PORTC.5 ' Serout to PC at 9600, Inv. Idles low, data goes high. serI96 con 16468 ' 9600 Baud Inverted. Include "MODEDEFS.BAS" ' Include Shiftin/out modes. INCLUDE "DT_INTS-14.bas" ' INCLUDE "ReEnterPBP.bas" ; Include if using PBP interrupts. ASM INT_LIST macro ; IntSrce, Label, Type, ResetFlag? INT_Handler IOC_INT, _PB, PBP, yes endm INT_CREATE ; Creates the interrupt processor ENDASM serout2 to_PC,seri96,[10,13,"I'm Alive!",10,13] ' Confirm. Begin: LED = 1 ' On. pause 500 ' 2hz. LED = 0 ' Off. pause 500 ' 2hz. goto begin ' Cycle. '---[IOC - interrupt handler]--------------------------------------------------- PB: ' Pushbutton to get here. if IOCAF.2 = 1 then ' Bit 1 (A.2) set. serout2 to_PC,seri96,[10,13,"Int!",10,13] ' Testing. endif IOCAF = 0 ' Clear the Int flag. @ INT_RETURN end




Bookmarks