Test using the base BLE_HeartRate example to see the effect of increasing the "ticker" rate on stability (intending to do AnalogIn around 1ms rate)
Dependencies: BLE_API mbed nRF51822
Diff: main.cpp
- Revision:
- 8:7407b18dfc5d
- Parent:
- 7:ec41c916136a
- Child:
- 9:1cfd6c7055b5
--- a/main.cpp Wed Oct 01 07:09:28 2014 +0000
+++ b/main.cpp Wed Oct 01 07:34:46 2014 +0000
@@ -21,7 +21,7 @@
#include "DeviceInformationService.h"
BLEDevice ble;
-DigitalOut led1(LED1);
+DigitalOut indicatorLed1(LED1);
DigitalOut indicatorLed2(LED2);
#define NEED_CONSOLE_OUTPUT 0 /* Set this if you need debug messages on the console;
@@ -61,7 +61,7 @@
if (callbackCount == 500)
{
callbackCount = 0;
- led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
+ indicatorLed1 = !indicatorLed1;
/* Note that the periodicCallback() executes in interrupt context, so it is safer to do
* heavy-weight sensor polling from the main thread. */
triggerSensorPolling = true;
@@ -70,9 +70,10 @@
// sampleTimeout.attach_us(periodicCallback, sampleIntervalUs);
}
+int bleUpdateCount = 0;
int main(void)
{
- led1 = 1;
+ indicatorLed1 = 1;
indicatorLed2 = 1;
// Start timer and sampling
@@ -101,20 +102,34 @@
BatteryService battery(ble);
DeviceInformationService deviceInfo(ble, "ARM", "Model1", "SN1", "hw-rev1", "fw-rev1", "soft-rev1");
- while (true) {
- if (triggerSensorPolling) {
+ while (true)
+ {
+ bool updateNow = false;
+ if (triggerSensorPolling)
+ {
triggerSensorPolling = false;
-
+ bleUpdateCount++;
+ if (bleUpdateCount >= 1)
+ {
+ bleUpdateCount = 0;
+ updateNow = true;
+ }
+ }
+ if (updateNow)
+ {
/* Do blocking calls or whatever is necessary for sensor polling. */
/* In our case, we simply update the dummy HRM measurement. */
hrmCounter++;
- if (hrmCounter == 175) {
+ if (hrmCounter == 175)
+ {
hrmCounter = 100;
}
indicatorLed2 = !indicatorLed2;
hrService.updateHeartRate(hrmCounter);
- } else {
+ }
+ else
+ {
ble.waitForEvent();
}
}