Skip to content
Snippets Groups Projects
Commit 7d75f9bc authored by schneider's avatar schneider
Browse files

feat(testapp): Use ECG together with oled

parent c618fb9f
No related branches found
No related tags found
No related merge requests found
...@@ -66,6 +66,9 @@ CMSIS_ROOT=$(LIBS_DIR)/CMSIS ...@@ -66,6 +66,9 @@ CMSIS_ROOT=$(LIBS_DIR)/CMSIS
# Source files for this test (add path to VPATH below) # Source files for this test (add path to VPATH below)
SRCS = main.c SRCS = main.c
SRCS += ../lib/card10/oled96.c
SRCS += ../lib/card10/fonts.c
# Where to find source files for this test # Where to find source files for this test
VPATH = . VPATH = .
......
...@@ -43,6 +43,8 @@ ...@@ -43,6 +43,8 @@
/***** Includes *****/ /***** Includes *****/
#include <stdio.h> #include <stdio.h>
#include <stdint.h> #include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include "mxc_config.h" #include "mxc_config.h"
#include "led.h" #include "led.h"
#include "board.h" #include "board.h"
...@@ -51,6 +53,7 @@ ...@@ -51,6 +53,7 @@
#include "rtc.h" #include "rtc.h"
#include "spi.h" #include "spi.h"
#include "MAX30003.h" #include "MAX30003.h"
#include "oled96.h"
/***** Definitions *****/ /***** Definitions *****/
...@@ -174,6 +177,62 @@ void ecg_config(void) ...@@ -174,6 +177,62 @@ void ecg_config(void)
return; return;
} }
uint8_t content[1024];
void clear(void)
{
memset(content, 0x00, 1024);
}
void set(uint8_t index, int8_t val)
{
uint8_t *p = &content[index];
if(val < -31) val = -31;
if(val > 32) val = 32;
int8_t pos = -val + 32;
p += (pos / 8) * 128;
*p |= (1 << (pos % 8));
}
int16_t samples[256];
void update(void)
{
clear();
int16_t scale = 0;
for(int i=0; i<256; i++) {
if(abs(samples[i]) > scale) {
scale = abs(samples[i]);
}
}
scale /= 32;
for(int i=0; i<128; i++) {
set(i, ((samples[i*2] + samples[i*2 + 1]) / scale) / 2);
}
oledset(content);
}
uint8_t sample_count = 0;
void add_sample(int16_t sample)
{
memmove(samples, samples + 1, sizeof(*samples) * 255);
samples[255] = sample;
sample_count++;
if(sample_count == 5) {
update();
sample_count = 0;
}
}
// ***************************************************************************** // *****************************************************************************
int main(void) int main(void)
{ {
...@@ -198,6 +257,12 @@ int main(void) ...@@ -198,6 +257,12 @@ int main(void)
} }
} }
oledInit(0x3c, 0, 0);
oledFill(0x00);
oledWriteString(0, 0, " card10", 1);
TMR_Delay(MXC_TMR0, MSEC(1500), 0);
// Enable 32 kHz output // Enable 32 kHz output
//RTC_SquareWave(MXC_RTC, SQUARE_WAVE_ENABLED, F_32KHZ, NOISE_IMMUNE_MODE, NULL); //RTC_SquareWave(MXC_RTC, SQUARE_WAVE_ENABLED, F_32KHZ, NOISE_IMMUNE_MODE, NULL);
...@@ -226,14 +291,6 @@ int main(void) ...@@ -226,14 +291,6 @@ int main(void)
printf("%02x: 0x%06x\n", i, val); printf("%02x: 0x%06x\n", i, val);
} }
while (0) {
LED_On(0);
TMR_Delay(MXC_TMR0, MSEC(500), 0);
LED_Off(0);
TMR_Delay(MXC_TMR0, MSEC(500), 0);
//printf("count = %d\n", count++);
}
ecg_write_reg(SYNCH, 0); ecg_write_reg(SYNCH, 0);
uint32_t ecgFIFO, readECGSamples, idx, ETAG[32], status; uint32_t ecgFIFO, readECGSamples, idx, ETAG[32], status;
...@@ -288,7 +345,8 @@ int main(void) ...@@ -288,7 +345,8 @@ int main(void)
// Print results // Print results
for( idx = 0; idx < readECGSamples; idx++ ) { for( idx = 0; idx < readECGSamples; idx++ ) {
printf("%6d\r\n", ecgSample[idx]); //printf("%6d\r\n", ecgSample[idx]);
add_sample(ecgSample[idx]);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment