Chanel's edits
Dependencies: max32630fthr USBDevice
main.cpp@2:a96a53e6c6a3, 2020-02-12 (annotated)
- Committer:
- saleiferis
- Date:
- Wed Feb 12 13:27:15 2020 +0000
- Revision:
- 2:a96a53e6c6a3
- Parent:
- 1:6e6f7e3cc1e1
- Child:
- 4:4233f5538abf
BT (doesnt work)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
saleiferis | 0:89ec48e52250 | 1 | #include "mbed.h" |
saleiferis | 0:89ec48e52250 | 2 | #include "math.h" |
saleiferis | 0:89ec48e52250 | 3 | #include "max32630fthr.h" |
saleiferis | 0:89ec48e52250 | 4 | #include "max86150.h" |
saleiferis | 0:89ec48e52250 | 5 | #include "I2C.h" |
saleiferis | 0:89ec48e52250 | 6 | #include "ble/BLE.h" |
saleiferis | 0:89ec48e52250 | 7 | #include "ble/Gap.h" |
saleiferis | 0:89ec48e52250 | 8 | #include "ble/services/HeartRateService.h" |
saleiferis | 1:6e6f7e3cc1e1 | 9 | #include <events/mbed_events.h> |
saleiferis | 1:6e6f7e3cc1e1 | 10 | #include "bt32630.h" |
saleiferis | 0:89ec48e52250 | 11 | |
saleiferis | 0:89ec48e52250 | 12 | //Register definitions |
saleiferis | 0:89ec48e52250 | 13 | #define MAX86150_Addr 0xBC //updated per I2Cscanner, 8 bit version of 7 bit code 0x5E |
saleiferis | 0:89ec48e52250 | 14 | #define InterruptStatusReg1 0x00 //Interrupt status byte 0 (read both bytes 0x00 and 0x01 when checking int status) |
saleiferis | 0:89ec48e52250 | 15 | #define InterruptStatusReg2 0x01 |
saleiferis | 0:89ec48e52250 | 16 | #define InterruptEnableReg1 0x02 //Interrupt enable byte 0 |
saleiferis | 0:89ec48e52250 | 17 | #define InterruptEnableReg2 0x03 |
saleiferis | 0:89ec48e52250 | 18 | #define FIFOWritePointerReg 0x04 |
saleiferis | 0:89ec48e52250 | 19 | #define OverflowCounterReg 0x05 |
saleiferis | 0:89ec48e52250 | 20 | #define FIFOReadPointerReg 0x06 |
saleiferis | 0:89ec48e52250 | 21 | #define FIFODataReg 0x07 |
saleiferis | 0:89ec48e52250 | 22 | #define FIFOConfigReg 0x08 |
saleiferis | 0:89ec48e52250 | 23 | #define FIFODataControlReg1 0x09 |
saleiferis | 0:89ec48e52250 | 24 | #define FIFODataControlReg2 0x0A |
saleiferis | 0:89ec48e52250 | 25 | #define SystemControlReg 0x0D |
saleiferis | 0:89ec48e52250 | 26 | #define ppgConfigReg0 0x0E |
saleiferis | 0:89ec48e52250 | 27 | #define ppgConfigReg1 0x0F |
saleiferis | 0:89ec48e52250 | 28 | #define ProxIntThreshReg 0x10 |
saleiferis | 0:89ec48e52250 | 29 | #define LED1PulseAmpReg 0x11 |
saleiferis | 0:89ec48e52250 | 30 | #define LED2PulseAmpReg 0x12 |
saleiferis | 0:89ec48e52250 | 31 | #define LEDRangeReg 0x14 |
saleiferis | 0:89ec48e52250 | 32 | #define LEDPilotPAReg 0x15 |
saleiferis | 0:89ec48e52250 | 33 | #define EcgConfigReg1 0x3C |
saleiferis | 0:89ec48e52250 | 34 | #define EcgConfigReg2 0x3D |
saleiferis | 0:89ec48e52250 | 35 | #define EcgConfigReg3 0x3E |
saleiferis | 0:89ec48e52250 | 36 | #define EcgConfigReg4 0x3F |
saleiferis | 0:89ec48e52250 | 37 | #define PartIDReg 0xFF |
saleiferis | 0:89ec48e52250 | 38 | #define maxi2cFreq 1000000 |
saleiferis | 0:89ec48e52250 | 39 | #define recommendedi2cFreq 400000 |
saleiferis | 0:89ec48e52250 | 40 | #define interrupt_pin P5_0 //INTB pin --see InterruptIn declaration |
saleiferis | 0:89ec48e52250 | 41 | #define maxECGrate 0 |
saleiferis | 0:89ec48e52250 | 42 | #define normECGrate 1 |
saleiferis | 0:89ec48e52250 | 43 | //#define BaudRate 921600 |
saleiferis | 0:89ec48e52250 | 44 | //#define BaudRate 256000 |
saleiferis | 0:89ec48e52250 | 45 | //#define BaudRate 250000 |
saleiferis | 0:89ec48e52250 | 46 | #define BaudRate 9600 |
saleiferis | 0:89ec48e52250 | 47 | //#define BaudRate 115200 |
saleiferis | 0:89ec48e52250 | 48 | //#define BaudRate 57600 |
saleiferis | 0:89ec48e52250 | 49 | //also try 921600, 460800 230400 |
saleiferis | 0:89ec48e52250 | 50 | const int16_t i2cBufferSize=32; //32 was stable. In this rev exploring 36 |
saleiferis | 0:89ec48e52250 | 51 | |
saleiferis | 0:89ec48e52250 | 52 | |
saleiferis | 0:89ec48e52250 | 53 | |
saleiferis | 0:89ec48e52250 | 54 | //I2C i2c(I2C_SDA,I2C_SCL); |
saleiferis | 0:89ec48e52250 | 55 | |
saleiferis | 0:89ec48e52250 | 56 | |
saleiferis | 0:89ec48e52250 | 57 | Serial pc(USBTX,USBRX,NULL,BaudRate); //open serial port (optionally add device name and baud rate after specifying TX and RX pins) |
saleiferis | 0:89ec48e52250 | 58 | //InterruptIn intPin(P5_0); |
saleiferis | 0:89ec48e52250 | 59 | I2C i2c(I2C2_SDA, I2C2_SCL); |
saleiferis | 0:89ec48e52250 | 60 | |
saleiferis | 0:89ec48e52250 | 61 | MAX86150 max86150Sensor; |
saleiferis | 1:6e6f7e3cc1e1 | 62 | |
saleiferis | 1:6e6f7e3cc1e1 | 63 | //// Bluetooth Init |
saleiferis | 1:6e6f7e3cc1e1 | 64 | //BLE& ble = BLE::Instance(); |
saleiferis | 1:6e6f7e3cc1e1 | 65 | static events::EventQueue event_queue(/* event count */ 16 * EVENTS_EVENT_SIZE); |
saleiferis | 1:6e6f7e3cc1e1 | 66 | |
saleiferis | 0:89ec48e52250 | 67 | ////////// |
saleiferis | 0:89ec48e52250 | 68 | int main(){ |
saleiferis | 0:89ec48e52250 | 69 | //i2c.frequency(recommendedi2cFreq); |
saleiferis | 0:89ec48e52250 | 70 | max86150Sensor.begin(i2c, recommendedi2cFreq, MAX86150_Addr); |
saleiferis | 0:89ec48e52250 | 71 | //max86150Sensor.softReset(); |
saleiferis | 0:89ec48e52250 | 72 | wait_ms(300); |
saleiferis | 0:89ec48e52250 | 73 | |
saleiferis | 0:89ec48e52250 | 74 | //unsigned char partID = max86150Sensor.readPartID(); |
saleiferis | 0:89ec48e52250 | 75 | unsigned char partID = max86150Sensor.readRegister8(MAX86150_Addr,0xFF); |
saleiferis | 0:89ec48e52250 | 76 | pc.printf("Part ID is: %X\n",partID); |
saleiferis | 1:6e6f7e3cc1e1 | 77 | |
saleiferis | 1:6e6f7e3cc1e1 | 78 | |
saleiferis | 1:6e6f7e3cc1e1 | 79 | //***** SETUP SENSOR |
saleiferis | 0:89ec48e52250 | 80 | max86150Sensor.setup(); //Configure sensor |
saleiferis | 1:6e6f7e3cc1e1 | 81 | //max86150Sensor.writeRegister8(MAX86150_Addr,0x0D,0x04); //it as 0x01 |
saleiferis | 2:a96a53e6c6a3 | 82 | wait_ms(200); |
saleiferis | 1:6e6f7e3cc1e1 | 83 | |
saleiferis | 1:6e6f7e3cc1e1 | 84 | //*************************************************************\\ |
saleiferis | 1:6e6f7e3cc1e1 | 85 | |
saleiferis | 0:89ec48e52250 | 86 | //wait_ms(2000); |
saleiferis | 1:6e6f7e3cc1e1 | 87 | //pc.printf("SYS CTRL REG: %x\n",max86150Sensor.readRegister8(MAX86150_Addr,0x0D)); |
saleiferis | 1:6e6f7e3cc1e1 | 88 | //uint8_t readPointer = max86150Sensor.getReadPointer(); |
saleiferis | 1:6e6f7e3cc1e1 | 89 | //uint8_t writePointer = max86150Sensor.getWritePointer(); |
saleiferis | 1:6e6f7e3cc1e1 | 90 | //pc.printf("WRT_PTR: %X ... READ_PTR: %X",writePointer,readPointer); |
saleiferis | 1:6e6f7e3cc1e1 | 91 | //pc.printf("SYS CTRL REG: %x\n",max86150Sensor.readRegister8(MAX86150_Addr,0x0D)); |
saleiferis | 2:a96a53e6c6a3 | 92 | |
saleiferis | 2:a96a53e6c6a3 | 93 | /* |
saleiferis | 1:6e6f7e3cc1e1 | 94 | //******* SETUP BLUETOOTH ********* |
saleiferis | 2:a96a53e6c6a3 | 95 | |
saleiferis | 2:a96a53e6c6a3 | 96 | |
saleiferis | 2:a96a53e6c6a3 | 97 | eventQueue.call_every(1, periodicCallback); //it was 500 |
saleiferis | 1:6e6f7e3cc1e1 | 98 | BLE &ble = BLE::Instance(); |
saleiferis | 1:6e6f7e3cc1e1 | 99 | ble.onEventsToProcess(scheduleBleEventsProcessing); |
saleiferis | 1:6e6f7e3cc1e1 | 100 | ble.init(bleInitComplete); |
saleiferis | 1:6e6f7e3cc1e1 | 101 | //pc.printf("Before dispatch forever"); |
saleiferis | 1:6e6f7e3cc1e1 | 102 | eventQueue.dispatch_forever(); |
saleiferis | 1:6e6f7e3cc1e1 | 103 | */ |
saleiferis | 1:6e6f7e3cc1e1 | 104 | |
saleiferis | 1:6e6f7e3cc1e1 | 105 | /// Get sensor data |
saleiferis | 0:89ec48e52250 | 106 | |
saleiferis | 0:89ec48e52250 | 107 | while(1){ |
saleiferis | 0:89ec48e52250 | 108 | if(max86150Sensor.check()>0) |
saleiferis | 0:89ec48e52250 | 109 | { |
saleiferis | 0:89ec48e52250 | 110 | pc.printf("%d\n",max86150Sensor.getFIFORed()); |
saleiferis | 0:89ec48e52250 | 111 | } |
saleiferis | 1:6e6f7e3cc1e1 | 112 | wait_us(500); |
saleiferis | 1:6e6f7e3cc1e1 | 113 | } |
saleiferis | 0:89ec48e52250 | 114 | |
saleiferis | 0:89ec48e52250 | 115 | |
saleiferis | 0:89ec48e52250 | 116 | |
saleiferis | 0:89ec48e52250 | 117 | } |