MTCH112 Eval Board Microchip capacitive proximity sensor
mtch112.cpp
- Committer:
- duchonic
- Date:
- 2018-08-23
- Revision:
- 0:8203e12416bb
File content as of revision 0:8203e12416bb:
#include "mtch112.h" #include "main.h" MTCH112::MTCH112(PinName sda, PinName scl, uint8_t addr) : m_i2c(sda, scl), m_addr(addr) {} uint8_t MTCH112::MTCH112_Init(void) { printf("MTCH112_Init\n"); SetRegister(CONFIG_RESET_CALIB, CONFIG_RESET_CALIB_VALUE); wait(0.5); SetRegister(CONFIG_TIMEOUT_L, 0x03); wait(0.1); SetRegister(CONFIG_TIMEOUT_H, 0xff); wait(0.1); SetRegister(CONFIG_OUTCON, CONFIG_OUTCON_VALUE); wait(0.1); SetRegister(CONFIG_LPCON, SLEEP_16ms | CLK_16MHZ); wait(0.1); SetRegister(CONFIG_PROX_THRESH, CONFIG_PROX_THRESH_VALUE); wait(0.1); SetRegister(CONFIG_PRESS_THRESH, CONFIG_PRESS_THRESH_VALUE); wait(0.5); printf("CONFIG_OUTCON:0x%02x\n", CONFIG_OUTCON_VALUE); printf("CONFIG_PROX_THRESH:0x%02x\n", CONFIG_PROX_THRESH_VALUE); printf("CONFIG_PRESS_THRESH:0x%02x\n", CONFIG_PRESS_THRESH_VALUE); return(0); } MTCH112::~MTCH112(void) { }; uint8_t MTCH112::MTCH112_GetState(void) { return(GetRegister(OUTPUT_STATE)); } /** Private Functions */ void MTCH112::SetRegister(uint8_t registerAddr, uint8_t data) { char dataWrite[5]; dataWrite[0] = WRITE_PROTECT_BYTE_H; dataWrite[1] = WRITE_PROTECT_BYTE_L; dataWrite[2] = registerAddr; dataWrite[3] = data; dataWrite[4] = WRITE_PROTECT_BYTE_H ^ WRITE_PROTECT_BYTE_L ^ registerAddr ^ data; m_i2c.write(m_addr, dataWrite, 5); } uint8_t MTCH112::GetRegister(uint8_t registerAddr) { char dataWrite[1]; char dataRead[1]; dataWrite[0] = registerAddr; dataRead[0] = 0x00; m_i2c.write(m_addr, dataWrite, 1); m_i2c.read(m_addr, dataRead, 1); return(dataRead[0]); }