I cleaned my code up, so it's really apparent what I'm trying to do.
I still won't blink the 16 LEDs.
Code:#CONFIG __config _CONFIG1, _FEXTOSC_OFF & _RSTOSC_HFINT32 & _CLKOUTEN_OFF & _CSWEN_OFF & _FCMEN_ON __config _CONFIG2, _MCLRE_ON & _PWRTE_OFF & _LPBOREN_OFF & _BOREN_ON & _BORV_LO & _ZCD_OFF & _PPS1WAY_OFF & _STVREN_ON & _DEBUG_OFF __config _CONFIG3, _WDTCPS_WDTCPS_11 & _WDTE_OFF & _WDTCWS_WDTCWS_7 & _WDTCCS_LFINTOSC __config _CONFIG4, _WRT_OFF & _SCANE_available & _LVP_OFF __config _CONFIG5, _CP_OFF & _CPD_OFF #ENDCONFIG DEFINE OSC 32 define CCP1_REG 0 ' Must clear unused CCP pins or else unpredictable results DEFINE CCP1_BIT 0 define CCP2_REG 0 DEFINE CCP2_BIT 0 DEFINE CCP3_REG PORTB DEFINE CCP3_BIT 5 define CCP4_REG 0 DEFINE CCP4_BIT 0 define CCP5_REG 0 DEFINE CCP5_BIT 0 ANSELA = %00000000 ANSELB = %00000000 ANSELC = %00000000 ANSELD = %00000000 ANSELE = %00000000 TRISA = %00000000 TRISB = %00000000 TRISC = %00000000 TRISD = %00000000 TRISE = %00001000 PinSCL2 VAR PortB.1 PinSDA2 VAR PortB.2 HPWM 3, 8, 1953 addr var byte : addr = %01000000 ' $40 IOCONreg var byte : IOCONreg = $05 IOCONdat var byte : IOCONdat = %10110000 ' bit 7 1 = The registers associated with each port are separated into different banks. ' bit 6 0 = The INT pins are not connected. INTA is associated with PORTA and INTB is associated with PORTB ' bit 5 1 = Sequential operation disabled, address pointer does not increment. ' bit 4 1 = Slew rate disabled ' bit 3 0 = Disables the MCP23S17 address pins. ' bit 2 0 = Active driver output (INTPOL bit sets the polarity.) ' bit 1 0 = Active-low ' bit 0 Unimplemented: Read as ‘0’ I2CWRITE PinSDA2,PinSCL2,addr,IOCONreg,[IOCONdat] IODIRAreg var byte : IODIRAreg = $00 IODIRAdat var byte : IODIRAdat = %00000000 I2CWRITE PinSDA2,PinSCL2,addr,IODIRAreg,[IODIRAdat] 'set GPIOA all output IODIRBreg var byte : IODIRBreg = $10 IODIRBdat var byte : IODIRBdat = %00000000 I2CWRITE PinSDA2,PinSCL2,addr,IODIRBreg,[IODIRBdat] 'set GPIOB all output GPIOAreg var byte : GPIOAdat var byte GPIOBreg var byte : GPIOBdat var byte LOOOP: GPIOAreg = $09 : GPIOAdat = %00000000 I2CWRITE PinSDA2,PinSCL2,addr,GPIOAreg,[GPIOAdat] GPIOBreg = $19 : GPIOBdat = %00000000 I2CWRITE PinSDA2,PinSCL2,addr,GPIOBreg,[GPIOBdat] pause 250 GPIOAreg = $09 : GPIOAdat = %11111111 I2CWRITE PinSDA2,PinSCL2,addr,GPIOAreg,[GPIOAdat] GPIOBreg = $19 : GPIOBdat = %11111111 I2CWRITE PinSDA2,PinSCL2,addr,GPIOBreg,[GPIOBdat] pause 250 GOTO LOOOP end
The HPWM is for a IRFZ44N that i use to pulse the LED grounds. I have a simple LED on it to confirm that it's operating.




Bookmarks