Thomas Schöngeld
/
interupt_counter
Test für den Test 1
Fork of interupt_counter by
Revision 0:6ef5de7d9560, committed 2016-01-18
- Comitter:
- schoeni_91
- Date:
- Mon Jan 18 09:44:43 2016 +0000
- Commit message:
- Test
Changed in this revision
diff -r 000000000000 -r 6ef5de7d9560 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Jan 18 09:44:43 2016 +0000 @@ -0,0 +1,27 @@ +#include "mbed.h" + +InterruptIn iiUp(p15); +InterruptIn iiDown (p12); +BusOut boLeds(LED1,LED2,LED3,LED4); + + +void cntUp() +{ + boLeds=boLeds +1; +} + +void cntDown() +{ + boLeds=boLeds -1; +} + + + +int main() { + boLeds=0; + iiUp.fall(&cntUp); + iiDown.rise(&cntDown); + while (1) { + } + } +
diff -r 000000000000 -r 6ef5de7d9560 main1.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main1.cpp Mon Jan 18 09:44:43 2016 +0000 @@ -0,0 +1,60 @@ +#include "mbed.h" + +InterruptIn iiUp(p15); +DigitalIn diUp(p15); +InterruptIn iiDown(p12); +DigitalIn diDown(p12); +BusOut leds(LED1, LED2, LED3, LED4); + +// prototypes + +// functions +// Diese Funktion ist zum Entprellen von Tastern geeignet: +// Durch den zusätzlichen Code kann eine Entprellzeit von durchschnittlich 1,5-4ms +// (mindestens 8*150us = 1,2ms) erreicht werden. +// Grundsätzlich prüft die Funktion den Pegel des Pins eine DigitalIn. +// Wenn der Pegel 8 Mal konstant war, wird die Schleife verlassen. +// Diese Funktion kann sehr gut eingesetzt werden, um in einer Endlosschleife Taster +// anzufragen, da sie, wie erwähnt, eine kurze Wartezeit hat. +uint8_t debounce(DigitalIn myIn) +{ +#define LEVEL_CHECKS 8 +#define MAX_LOOPS 30 // stoppt das Überprüfen des Prellen nach max. MAX_LOOPS Durchläufen + unsigned char port_buffer; + unsigned char debounceCounter = 0; + uint8_t loopCounter = 0; + + do { + port_buffer = myIn; + wait_us(150); + loopCounter++; + if(myIn == port_buffer) + debounceCounter++; // mindestens 'LEVEL_CHECKS' Abtastungen in Folge: gleicher Pegel + else + debounceCounter = 0; + } while ((debounceCounter <= LEVEL_CHECKS) && (loopCounter <= MAX_LOOPS)); + return loopCounter; +} + +// ISR +void cntUp() +{ + debounce(diUp); + leds = leds + 1; +} + +void cntDown() +{ + debounce(diDown); + leds = leds - 1; +} + + +// main program +int main() +{ + iiUp.rise(&cntUp); + iiDown.rise(&cntDown); + while(1) { + } +}
diff -r 000000000000 -r 6ef5de7d9560 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Jan 18 09:44:43 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/4336505e4b1c \ No newline at end of file