Under Write_MPR121 - the D2 values never match the Register_val it writes just before. That is why I question if its working. I wanted to make sure this is working before moving forward.
This is the main code I am using,
Code:'****************************************************************************** '* Name : MPR121.pbp * '* Author : John Kaiser * '* Date : 2013-10-11 * '* Version : 1.0 * '* Notes : This file contains register definitions for the * '* MPR121 Proximity Capacitive Touch Sensor Controller * '****************************************************************************** DEFINE OSC 64 DEFINE LOADER_USED 1 DEFINE HSER_RCSTA 90h DEFINE HSER_TXSTA 24h DEFINE HSER_CLROERR 1 DEFINE HSER_SPBRG 138 SPBRGH = 0 BAUDCON.3 = 1 TRISC.7 = 1 TRISB.6 = 0 TRISB.7 = 0 include "MPR121_defs.pbp" DEFINE I2C_SLOW 1 Register_num var byte Register_val var byte Touch_0_7 var byte Touch_0_7 = 0 d2 var byte d2 = 5 symbol Cpin = PORTB.6 Symbol Dpin = PORTB.7 Symbol Touch_IRQ = PORTC.7 Gosub MPR121_Init ' Iniatialize MPR121 registers '****************************************************************************** ' xx '------------------------------------------------------------------------------ Mainloop: Pause 30 HSEROUT[" Touch_0_7 = ", bin Touch_0_7 ,10] 'if Touch_IRQ = 0 then goto Read_MPR121 Goto Mainloop '****************************************************************************** ' xx '------------------------------------------------------------------------------ Write_MPR121: I2CWRITE Dpin, Cpin, $5A, Register_num,[Register_val] Pause 10 HSEROUT["Register_num = ", hex Register_num ," Register_val = ", hex Register_val ,10] Pause 50 I2CREAD Dpin, Cpin, $5A, Register_num,[d2] Pause 200 HSEROUT["Register_num-- = ", hex Register_num ," Register_val-- = ", hex d2 ,10] Pause 200 return '****************************************************************************** ' xx '------------------------------------------------------------------------------ 'Read_MPR121: ' HSEROUT[" It has been touched !!"] ' I2CREAD Dpin, Cpin, $5A, $00,[Touch_0_7] ' Pause 2000 ' HSEROUT[" Touch_0_7 = ", dec Touch_0_7 ,10] ' Pause 2000 'return '****************************************************************************** ' xx '------------------------------------------------------------------------------ MPR121_Init: Register_num = MPR121_ELE_CFG : Register_val = $00 : gosub Write_MPR121 'Section A - Controls filtering when data is > baseline. Register_num = MPR121_MHD_R : Register_val = $01 : gosub Write_MPR121 Register_num = MPR121_NHD_R : Register_val = $01 : gosub Write_MPR121 Register_num = MPR121_NCL_R : Register_val = $00 : gosub Write_MPR121 Register_num = MPR121_FDL_R : Register_val = $00 : gosub Write_MPR121 'Section B - Controls filtering when data is < baseline. Register_num = MPR121_MHD_F : Register_val = $01 : gosub Write_MPR121 Register_num = MPR121_NHD_F : Register_val = $01 : gosub Write_MPR121 Register_num = MPR121_NCL_F : Register_val = $FF : gosub Write_MPR121 Register_num = MPR121_FDL_F : Register_val = $02 : gosub Write_MPR121 'Section C - Sets touch and release thresholds for each electrode Register_num = MPR121_ELE0_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE0_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE1_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE1_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE2_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE2_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE3_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE3_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE4_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE4_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE5_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE5_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE6_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE6_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE7_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE7_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE8_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE8_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE9_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE9_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE10_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE10_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE11_T : Register_val = MPR121_TOU_THRESH : gosub Write_MPR121 Register_num = MPR121_ELE11_R : Register_val = MPR121_REL_THRESH : gosub Write_MPR121 'Section D - Set the Filter Configuration - Set ESI2 Register_num = MPR121_FIL_CFG1 : Register_val = $04 : gosub Write_MPR121 'Section E - Electrode Configuration - Set ELE_CFG to 0x00 to return to standby mode Register_num = MPR121_ELE_CFG : Register_val = $0C : gosub Write_MPR121 'Enables all 12 Electrodes 'Section F - Enable Auto Config and auto Reconfig Register_num = MPR121_ATO_CFG0 : Register_val = $0B : gosub Write_MPR121 Register_num = MPR121_ATO_CFGU : Register_val = $C9 : gosub Write_MPR121 'USL = (Vdd-0.7)/vdd*256 = 0xC9 @3.3V Register_num = MPR121_ATO_CFGL : Register_val = $82 : gosub Write_MPR121 'LSL = 0.65*USL = 0x82 @3.3V Register_num = MPR121_ATO_CFGT : Register_val = $B5 : gosub Write_MPR121 'Target = 0.9*USL = 0xB5 @3.3V Register_num = MPR121_ELE_CFG : Register_val = $0C : gosub Write_MPR121 return '****************************************************************************** end
And this is the Register defs,
Code:'****************************************************************************** '* Name : MPR121_defs.pbp * '* Author : John Kaiser * '* Date : 2013-10-11 * '* Version : 1.0 * '* Notes : This file contains register definitions for the * '* MPR121 Proximity Capacitive Touch Sensor Controller * '****************************************************************************** '****************************************************************************** ' MPR121 Note: After completing power on reset (POR) or soft reset by command, ' MPR121 all registers are in default reset initial value (see Table 1). ' All the registers are cleared, except AFE Configuration Registers 0x5C ' (Default 0x10) and 0x5D (Default 0x24). ' ' MPR121 reset default mode is Stop Mode without any capacitance measurement. ' Set MPR121 into Run Mode by configuring ECR register (0x5E) so that least ' one of the 13 measurement channels is enabled. Set MPR121 into Stop Mode ' by writing 2bXX000000 to ECR register at any time. For all the registers, ' the current value can be read at any time. ' ' Note: Registers write operation can only be done after MPR121 is set into ' Stop Mode, except the ECR and GPIO/LED related registers, which means ' changing the value of these registers while MPR121 is in Run Mode will not ' be effective. ' ' Registers from address 0x00 to 0x2A are the output registers which are ' updated periodically when MPR121 is in Run Mode. While Baseline Value ' Registers 0x1D to 0x2A are the internal output baseline registers, these ' registers are also writeable to user, this is useful if customer setting ' targets as the initial baseline tracking start points is desired. ' ' Registers from address 0x2B to 0x7F are control and configuration registers, ' which need to be correctly configured and initialized to start the ' capacitance measurement and touch detection. '****************************************************************************** '****************************************************************************** ' Global Constants '------------------------------------------------------------------------------ MPR121_TOU_THRESH CON $06 MPR121_REL_THRESH CON $0A '------------------------------------------------------------------------------ '****************************************************************************** ' MPR121 Touch Status Registers (0x00~0x01) ' From Section #2 of data sheet '------------------------------------------------------------------------------ MPR121_xxxx_2_1 CON $00 MPR121_xxxx_2_2 CON $01 '****************************************************************************** ' MPR121 Out Of Range Status Registers ($02, $03) ' From Section #13 of data sheet '------------------------------------------------------------------------------ MPR121_xxxx_13_1 CON $02 MPR121_xxxx_13_2 CON $03 '****************************************************************************** ' MPR121 Electrode Data Register ($04~$1D) ' From Section #3 of data sheet '------------------------------------------------------------------------------ MPR121_xxxx_3_1 CON $04 MPR121_xxxx_3_2 CON $05 MPR121_xxxx_3_3 CON $06 MPR121_xxxx_3_4 CON $07 MPR121_xxxx_3_5 CON $08 MPR121_xxxx_3_6 CON $09 MPR121_xxxx_3_7 CON $0A MPR121_xxxx_3_8 CON $0B MPR121_xxxx_3_9 CON $0C MPR121_xxxx_3_10 CON $0D MPR121_xxxx_3_11 CON $0E MPR121_xxxx_3_12 CON $0F MPR121_xxxx_3_13 CON $10 MPR121_xxxx_3_14 CON $11 MPR121_xxxx_3_15 CON $12 MPR121_xxxx_3_16 CON $13 MPR121_xxxx_3_17 CON $14 MPR121_xxxx_3_18 CON $15 MPR121_xxxx_3_19 CON $16 MPR121_xxxx_3_20 CON $17 MPR121_xxxx_3_21 CON $18 MPR121_xxxx_3_22 CON $19 MPR121_xxxx_3_23 CON $1A MPR121_xxxx_3_24 CON $1B MPR121_xxxx_3_25 CON $1C MPR121_xxxx_3_26 CON $1D '****************************************************************************** ' MPR121 Electrode Data Register ($04~$1D) ' From Section #4 of data sheet '------------------------------------------------------------------------------ MPR121_xxxx_4_1 CON $1E MPR121_xxxx_4_2 CON $1F MPR121_xxxx_4_3 CON $20 MPR121_xxxx_4_4 CON $21 MPR121_xxxx_4_5 CON $22 MPR121_xxxx_4_6 CON $23 MPR121_xxxx_4_7 CON $24 MPR121_xxxx_4_8 CON $25 MPR121_xxxx_4_9 CON $26 MPR121_xxxx_4_10 CON $27 MPR121_xxxx_4_11 CON $28 MPR121_xxxx_4_12 CON $29 MPR121_xxxx_4_13 CON $2A '****************************************************************************** ' MPR121 Baseline Filtering Control Register ($2B~$40) ' From Section #5 of data sheet '------------------------------------------------------------------------------ MPR121_MHD_R CON $2B MPR121_NHD_R CON $2C MPR121_NCL_R CON $2D MPR121_FDL_R CON $2E MPR121_MHD_F CON $2F MPR121_NHD_F CON $30 MPR121_NCL_F CON $31 MPR121_FDL_F CON $32 MPR121_NHD_T CON $33 MPR121_NCL_T CON $34 MPR121_FDL_T CON $35 MPR121_EPROX_MHD_R CON $36 MPR121_EPROX_NHD_R CON $37 MPR121_EPROX_NCL_R CON $38 MPR121_EPROX_FDL_R CON $39 MPR121_EPROX_MHD_F CON $3A MPR121_EPROX_NHD_F CON $3B MPR121_EPROX_NCL_F CON $3C MPR121_EPROX_FDL_F CON $3D MPR121_EPROX_NHD_T CON $3E MPR121_EPROX_NCL_T CON $3F MPR121_FEPROX_DL_T CON $40 '****************************************************************************** ' MPR121 Touch and Release Threshold ($41~$5A) ' From Section #6 of data sheet '------------------------------------------------------------------------------ MPR121_ELE0_T CON $41 MPR121_ELE0_R CON $42 MPR121_ELE1_T CON $43 MPR121_ELE1_R CON $44 MPR121_ELE2_T CON $45 MPR121_ELE2_R CON $46 MPR121_ELE3_T CON $47 MPR121_ELE3_R CON $48 MPR121_ELE4_T CON $49 MPR121_ELE4_R CON $4A MPR121_ELE5_T CON $4B MPR121_ELE5_R CON $4C MPR121_ELE6_T CON $4D MPR121_ELE6_R CON $4E MPR121_ELE7_T CON $4F MPR121_ELE7_R CON $50 MPR121_ELE8_T CON $51 MPR121_ELE8_R CON $52 MPR121_ELE9_T CON $53 MPR121_ELE9_R CON $54 MPR121_ELE10_T CON $55 MPR121_ELE10_R CON $56 MPR121_ELE11_T CON $57 MPR121_ELE11_R CON $58 MPR121_ELE12_T CON $59 MPR121_ELE12_R CON $5A '****************************************************************************** ' Debounce Register ($5B) ' From Section #7 of data sheet '------------------------------------------------------------------------------ MPR121_DEBOUNCE CON $5B '****************************************************************************** ' AFE Configuration Register ($5C, $5D) ' From Section #8 of data sheet '------------------------------------------------------------------------------ MPR121_FIL_CFG1 CON $5C MPR121_FIL_CFG2 CON $5D '****************************************************************************** ' Electrode Configuration Register (ECR, $5E) ' From Section #11 of data sheet '------------------------------------------------------------------------------ MPR121_ELE_CFG CON $5E '****************************************************************************** ' Individual Charge Current Register ($5F~$6B) ' From Section #9 of data sheet '------------------------------------------------------------------------------ MPR121_xxxx_9_1 CON $5F MPR121_xxxx_9_2 CON $60 MPR121_xxxx_9_3 CON $61 MPR121_xxxx_9_4 CON $62 MPR121_xxxx_9_5 CON $63 MPR121_xxxx_9_6 CON $64 MPR121_xxxx_9_7 CON $65 MPR121_xxxx_9_8 CON $66 MPR121_xxxx_9_9 CON $67 MPR121_xxxx_9_10 CON $68 MPR121_xxxx_9_11 CON $69 MPR121_xxxx_9_12 CON $6A MPR121_xxxx_9_13 CON $6B '****************************************************************************** ' Individual Charge Time Register ($6C~$72) ' From Section #10 of data sheet '------------------------------------------------------------------------------ MPR121_xxxx_10_1 CON $6C MPR121_xxxx_10_2 CON $6D MPR121_xxxx_10_3 CON $6E MPR121_xxxx_10_4 CON $6F MPR121_xxxx_10_5 CON $70 MPR121_xxxx_10_6 CON $71 MPR121_xxxx_10_7 CON $72 '****************************************************************************** ' GPIO Registers ($73~$7A) ' From Section #14 of data sheet '------------------------------------------------------------------------------ MPR121_GPIO_CTRL0 CON $73 MPR121_GPIO_CTRL1 CON $74 MPR121_GPIO_DATA CON $75 MPR121_GPIO_DIR CON $76 MPR121_GPIO_EN CON $77 MPR121_GPIO_SET CON $78 MPR121_GPIO_CLEAR CON $79 MPR121_GPIO_TOGGLE CON $7A '****************************************************************************** ' Auto Configuration Registers ($7B~$7F) ' From Section #12 of data sheet '------------------------------------------------------------------------------ MPR121_ATO_CFG0 CON $7B MPR121_ATO_CFG1 CON $7C MPR121_ATO_CFGU CON $7D MPR121_ATO_CFGL CON $7E MPR121_ATO_CFGT CON $7F '****************************************************************************** ' Software Reset Register ($80) ' From Section #15 of data sheet '------------------------------------------------------------------------------ MPR121_xxxx_15_1 CON $80




Bookmarks