8 #include "I2C_Interface.h" 22 #define debug_print(msg) do { if (DEBUG_TEST) UART_Debug_PutString(msg);} while (0) 24 CY_ISR_PROTO(MAX30101_ISR);
26 uint8_t flag_temp = 0;
35 void (*print_ptr)(
const char*) = &(UART_Debug_PutString);
36 uint8_t active_leds = 1;
37 uint8_t rp, wp, flag = 0;
45 debug_print(
"**************************\r\n");
46 debug_print(
" MAX30101 \r\n");
47 debug_print(
"**************************\r\n");
49 if (MAX30101_IsDevicePresent() == MAX30101_OK)
52 debug_print(
"Device found on I2C bus\r\n");
53 Connection_LED_Write(1);
56 uint8_t rev_id, part_id = 0;
57 MAX30101_ReadPartID(&part_id);
58 MAX30101_ReadRevisionID(&rev_id);
59 sprintf(msg,
"Revision ID: 0x%02X\r\n", rev_id);
61 sprintf(msg,
"Part ID: 0x%02X\r\n", part_id);
64 debug_print(
"Registers before configuration\r\n");
65 MAX30101_LogRegisters(print_ptr);
74 MAX30101_DisableALCOverflowInt();
75 MAX30101_DisableTempReadyInt();
76 MAX30101_DisablePPGReadyInt();
77 MAX30101_EnableFIFOAFullInt();
80 MAX30101_SetFIFOAlmostFull(32);
83 MAX30101_EnableFIFORollover();
86 MAX30101_SetSampleAverage(MAX30101_SAMPLE_AVG_2);
89 MAX30101_SetLEDPulseAmplitude(MAX30101_LED_1, 0x1F);
91 MAX30101_SetLEDPulseAmplitude(MAX30101_LED_2, 0x1F);
93 MAX30101_SetLEDPulseAmplitude(MAX30101_LED_3, 0x1F);
95 MAX30101_SetLEDPulseAmplitude(MAX30101_LED_4, 0x1F);
98 MAX30101_SetSpO2ADCRange(MAX30101_ADC_RANGE_4096);
101 MAX30101_SetSpO2PulseWidth(MAX30101_PULSEWIDTH_69);
104 MAX30101_SetSpO2SampleRate(MAX30101_SAMPLE_RATE_400);
107 MAX30101_SetMode(MAX30101_SPO2_MODE);
110 MAX30101_DisableSlots();
112 debug_print(
"Registers after configuration\r\n");
113 MAX30101_LogRegisters(print_ptr);
116 debug_print(
"\r\n\r\n");
118 isr_MAX30101_StartEx(MAX30101_ISR);
120 MAX30101_ClearFIFO();
128 MAX30101_IsFIFOAFull(&flag);
131 MAX30101_ReadReadPointer(&rp);
132 MAX30101_ReadWritePointer(&wp);
134 int num_samples = wp - rp;
135 if (num_samples <= 0)
138 sprintf(msg,
"%d\r\n", num_samples);
141 MAX30101_ReadFIFO(num_samples, active_leds, &data);
151 Connection_LED_Write(!Connection_LED_Read());
152 MAX30101_INT_ClearInterrupt();
uint8_t tail
Current tail of the circular buffer.
Circular buffer for MAX30101 data.
uint8_t head
Current head of the circular buffer.