3 channel_MUX
Dependencies: BufferedSerial MAX30003 max32630fthr1 DS1307
Diff: main.cpp
- Revision:
- 9:24ecf16eab0f
- Parent:
- 8:6b9359f81cc0
- Child:
- 10:3709e8f3d089
--- a/main.cpp Wed Aug 05 04:33:07 2020 +0000 +++ b/main.cpp Wed Aug 19 19:38:17 2020 +0000 @@ -2,13 +2,18 @@ #include "MAX30003.h" #include "mbed.h" #include "max32630fthr.h" +#include "ds1307.h" - +Timer timer_fast; MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3); +void task_fast(void); +DigitalOut ledA(LED2); void ecg_config(MAX30003 &ecgAFE); volatile bool ecgFIFOIntFlag = 0; +volatile int16_t onesec_counter = 0; +volatile bool timerflag = 0; void ecgFIFO_callback_1() { // Triggered when the ECG FIFO is about to be full ecgFIFOIntFlag = 1; @@ -24,6 +29,7 @@ const int FIFO_VALID_SAMPLE_MASK = 0x0; const int FIFO_FAST_SAMPLE_MASK = 0x1; const int ETAG_BITS_MASK = 0x7; + timer_fast.start(); DigitalOut rLed(LED1, LED_OFF); Serial pc(USBTX, USBRX); // Use USB debug probe for serial link @@ -44,17 +50,41 @@ uint32_t ecgFIFO, readECGSamples, idx, ETAG[32], status; int16_t ecgSample[32]; + //bool timerflag = false; + int16_t ecgSample_1sec[700]; + int16_t onesec_counter = 0; + int16_t sample = 300; - while(1) { - + while(1) + { + + if (timer_fast.read() > 1) + { + //timerflag = 1; + ledA = !ledA; + timer_fast.reset(); + int8_t header_device_id[3] = {0,0,210}; + int8_t header_packet_type[2] = {0,2}; + int8_t header_packet_id[4] = {0,0,0,0}; + int8_t header_ecg_datalen[2] = {0,onesec_counter}; + int8_t header_ecg_checksum[2] = {0,0}; + + + //pc.printf("%6d\r\n", sample); + //pc.printf("%6d\r\n", onesec_counter); + + onesec_counter = 0; + } // Read back ECG samples from the FIFO - if( ecgFIFOIntFlag ) { + else if( (ecgFIFOIntFlag==1))// && (timerflag == 0)) + { ecgFIFOIntFlag = 0; status = ecgAFE.readRegister( MAX30003::STATUS ); // Read the STATUS register // Check if EINT interrupt asserted - if ( ( status & EINT_STATUS_MASK ) == EINT_STATUS_MASK ) { + if ( ( status & EINT_STATUS_MASK ) == EINT_STATUS_MASK ) + { readECGSamples = 0; // Reset sample counter @@ -69,17 +99,36 @@ ETAG[readECGSamples-1] == FIFO_FAST_SAMPLE_MASK ); // Check if FIFO has overflowed - if( ETAG[readECGSamples - 1] == FIFO_OVF_MASK ){ + if( ETAG[readECGSamples - 1] == FIFO_OVF_MASK ) + { ecgAFE.writeRegister( MAX30003::FIFO_RST , 0); // Reset FIFO rLed = 1;//notifies the user that an over flow occured } // Print results - for( idx = 0; idx < readECGSamples; idx++ ) { - pc.printf("%6d\r\n", ecgSample[idx]); + for( idx = 0; idx < readECGSamples; idx++ ) + { + //pc.printf("%6d\r\n", ecgSample[idx]); + ecgSample_1sec[onesec_counter] = ecgSample[idx]; + onesec_counter++; } } + // else + // { + // timerflag = 0; + // } + //else if (timerflag == 1) + //{ + //timerflag = 0; + //pc.printf("1 sec ends :\n"); + //onesec_counter = 0; + //timer_fast.reset(); + //timer_fast.start(); + //delete[] ecgSample_1sec; + //} + + } } }