Skip to content

Instantly share code, notes, and snippets.

@alarrosa14
Created February 6, 2016 05:53
Show Gist options
  • Save alarrosa14/f964568d081081446d5b to your computer and use it in GitHub Desktop.
Save alarrosa14/f964568d081081446d5b to your computer and use it in GitHub Desktop.
An app for the mBed that tests the Sendero ESP-8266 clock sinchronization.
#include "mbed.h"
InterruptIn device1(p11);
InterruptIn device2(p12);
InterruptIn device3(p13);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
Serial pc(USBTX, USBRX);
Timer t;
int interruptionMoments[3];
int toPrint[3];
bool hasToPrint = false;
bool cagada = false;
int interruptionQty = 0;
int tandaTime;
int currentInterruptTime = 0;
void interruptionCommon(int deviceId, DigitalOut led){
currentInterruptTime = t.read_us();
if (interruptionQty == 0) {
tandaTime = currentInterruptTime + 1000000;
}
if (currentInterruptTime > tandaTime) {
if (interruptionQty < 3) {
led1 = led2 = led3 = false;
led = true;
}
cagada = interruptionQty != 3;
hasToPrint = true;
for (int i=0; i<3; toPrint[i] = interruptionMoments[i], i++);
tandaTime = currentInterruptTime + 1000000;
interruptionQty = 0;
}
interruptionMoments[deviceId-1] = currentInterruptTime;
interruptionQty++;
}
void device1Interruption() {
led1 = !led1;
interruptionCommon(1, led1);
}
void device2Interruption() {
led2 = !led2;
interruptionCommon(2, led2);
}
void device3Interruption() {
led3 = !led3;
interruptionCommon(3, led3);
}
int main() {
pc.printf("Hello World!\n");
device1.rise(&device1Interruption);
device2.rise(&device2Interruption);
device3.rise(&device3Interruption);
tandaTime = 2147483647;
t.start();
while(1) {
if (hasToPrint) {
pc.printf("%i\t%i\t%i\t%i\n", toPrint[0], toPrint[1], toPrint[2], cagada);
hasToPrint = false;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment