Chanel's edits
Dependencies: max32630fthr USBDevice
main.cpp
- Committer:
- saleiferis
- Date:
- 2020-02-12
- Revision:
- 2:a96a53e6c6a3
- Parent:
- 1:6e6f7e3cc1e1
- Child:
- 4:4233f5538abf
File content as of revision 2:a96a53e6c6a3:
#include "mbed.h" #include "math.h" #include "max32630fthr.h" #include "max86150.h" #include "I2C.h" #include "ble/BLE.h" #include "ble/Gap.h" #include "ble/services/HeartRateService.h" #include <events/mbed_events.h> #include "bt32630.h" //Register definitions #define MAX86150_Addr 0xBC //updated per I2Cscanner, 8 bit version of 7 bit code 0x5E #define InterruptStatusReg1 0x00 //Interrupt status byte 0 (read both bytes 0x00 and 0x01 when checking int status) #define InterruptStatusReg2 0x01 #define InterruptEnableReg1 0x02 //Interrupt enable byte 0 #define InterruptEnableReg2 0x03 #define FIFOWritePointerReg 0x04 #define OverflowCounterReg 0x05 #define FIFOReadPointerReg 0x06 #define FIFODataReg 0x07 #define FIFOConfigReg 0x08 #define FIFODataControlReg1 0x09 #define FIFODataControlReg2 0x0A #define SystemControlReg 0x0D #define ppgConfigReg0 0x0E #define ppgConfigReg1 0x0F #define ProxIntThreshReg 0x10 #define LED1PulseAmpReg 0x11 #define LED2PulseAmpReg 0x12 #define LEDRangeReg 0x14 #define LEDPilotPAReg 0x15 #define EcgConfigReg1 0x3C #define EcgConfigReg2 0x3D #define EcgConfigReg3 0x3E #define EcgConfigReg4 0x3F #define PartIDReg 0xFF #define maxi2cFreq 1000000 #define recommendedi2cFreq 400000 #define interrupt_pin P5_0 //INTB pin --see InterruptIn declaration #define maxECGrate 0 #define normECGrate 1 //#define BaudRate 921600 //#define BaudRate 256000 //#define BaudRate 250000 #define BaudRate 9600 //#define BaudRate 115200 //#define BaudRate 57600 //also try 921600, 460800 230400 const int16_t i2cBufferSize=32; //32 was stable. In this rev exploring 36 //I2C i2c(I2C_SDA,I2C_SCL); Serial pc(USBTX,USBRX,NULL,BaudRate); //open serial port (optionally add device name and baud rate after specifying TX and RX pins) //InterruptIn intPin(P5_0); I2C i2c(I2C2_SDA, I2C2_SCL); MAX86150 max86150Sensor; //// Bluetooth Init //BLE& ble = BLE::Instance(); static events::EventQueue event_queue(/* event count */ 16 * EVENTS_EVENT_SIZE); ////////// int main(){ //i2c.frequency(recommendedi2cFreq); max86150Sensor.begin(i2c, recommendedi2cFreq, MAX86150_Addr); //max86150Sensor.softReset(); wait_ms(300); //unsigned char partID = max86150Sensor.readPartID(); unsigned char partID = max86150Sensor.readRegister8(MAX86150_Addr,0xFF); pc.printf("Part ID is: %X\n",partID); //***** SETUP SENSOR max86150Sensor.setup(); //Configure sensor //max86150Sensor.writeRegister8(MAX86150_Addr,0x0D,0x04); //it as 0x01 wait_ms(200); //*************************************************************\\ //wait_ms(2000); //pc.printf("SYS CTRL REG: %x\n",max86150Sensor.readRegister8(MAX86150_Addr,0x0D)); //uint8_t readPointer = max86150Sensor.getReadPointer(); //uint8_t writePointer = max86150Sensor.getWritePointer(); //pc.printf("WRT_PTR: %X ... READ_PTR: %X",writePointer,readPointer); //pc.printf("SYS CTRL REG: %x\n",max86150Sensor.readRegister8(MAX86150_Addr,0x0D)); /* //******* SETUP BLUETOOTH ********* eventQueue.call_every(1, periodicCallback); //it was 500 BLE &ble = BLE::Instance(); ble.onEventsToProcess(scheduleBleEventsProcessing); ble.init(bleInitComplete); //pc.printf("Before dispatch forever"); eventQueue.dispatch_forever(); */ /// Get sensor data while(1){ if(max86150Sensor.check()>0) { pc.printf("%d\n",max86150Sensor.getFIFORed()); } wait_us(500); } }