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