Based the Library PwmIn by Simon Ford expanded with enable_irq and disable_irq for separate input signals. Program gives no real advantage above the original Library.
Diff: main.cpp
- Revision:
- 2:79b52803da22
- Parent:
- 1:4bd14d5374c3
--- a/main.cpp Thu Jan 02 14:01:30 2014 +0000 +++ b/main.cpp Fri Jan 03 18:47:33 2014 +0000 @@ -1,8 +1,14 @@ ////////////////////////////////////// -// basen on PwmIn Library -// Basis is to disable the interrupts +// Based on PwmIn Library +// The basis is to disable the interrupts // of the other PwmIn inputs -/////////////////////////////////////// +// Connected to the function generator +// puls on both inputs at the exact +// same time. +// Works excellent but further testing +// showed that there is no real advantage +// above the original PmwIn library +////////////////////////////////////// #include "mbed.h" #include "InterruptIn.h" #define NR 20 @@ -14,7 +20,8 @@ float period(); float pulsewidth(); float dutycycle(); - void disable(); + void disable(); + void enable(); protected: void rise(); @@ -55,7 +62,12 @@ void PwmIn::disable() { - // _p.enable_irq(); + _p.disable_irq(); +} + +void PwmIn::enable() +{ + _p.enable_irq(); } void PwmIn::rise() @@ -70,27 +82,50 @@ } struct product { - float pulse; - float width; - float duty; + float pulsewidth; + float period; + float cycle; } acc_a[NR], acc_b[NR], acc_c[NR],acc_d[NR]; int main() { - char pbuffer[60]="---"; + char pbuffer[512]="---"; int i; + pc.baud(9600); + sprintf(pbuffer, "Start test, baudrate is set to 9600 \n\r"); + pc.puts(pbuffer); + + a.disable(); + b.disable(); while(1) { - // a.disable(); // Stop interrupts for sensor B + //-------------- sensor a-------------------- + a.enable(); // signal on input 50Hz is period of 20 milli second + wait_ms(40); // signal on input 50Hz is period of 20 milli second for (i=0; i<NR; i++) { - acc_a[i].duty= a.dutycycle(); // Sensor A - acc_b[i].duty= b.dutycycle(); + acc_a[i].pulsewidth= a.pulsewidth(); // Sensor A + acc_a[i].period= a.period(); // Sensor A + acc_a[i].cycle= a.dutycycle(); // Sensor A } + a.disable(); + + //-------------- sensor b-------------------- + b.enable(); // signal on input 50Hz is period of 20 milli second + wait_ms(40); // 50Hz is period of 20 milli second + for (i=0; i<NR; i++) { + acc_b[i].pulsewidth= b.pulsewidth(); // Sensor B + acc_b[i].period= b.period(); // Sensor B + acc_b[i].cycle= b.dutycycle(); // Sensor B + } + b.disable(); for (i=0; i<NR; i++) { - sprintf(pbuffer, " a= %f, b= %f \n\r", acc_a[i].duty, acc_b[i].duty); + sprintf(pbuffer, "a_pulse= %f, a_period= %f, a_c= %f, b_puls= %f, b_period= %f, b_cycle %f\n\r", acc_a[i].pulsewidth, acc_a[i].period, acc_a[i].cycle, acc_b[i].pulsewidth, acc_b[i].period, acc_b[i].cycle); pc.puts(pbuffer); } + sprintf(pbuffer, "\n\r"); + pc.puts(pbuffer); + wait_ms(100); } }