Chanel's edits

Dependencies:   max32630fthr USBDevice

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?

UserRevisionLine numberNew 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 }