Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement