Erik -
/
InterruptIn_speed
InterruptIn speed check
Fork of InterruptIn_speed by
main.cpp@4:f871f375cd99, 2014-12-15 (annotated)
- Committer:
- Sissors
- Date:
- Mon Dec 15 11:55:08 2014 +0000
- Revision:
- 4:f871f375cd99
- Parent:
- 3:7745ac0591aa
- Child:
- 5:d49b6c1a35e3
-
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sissors | 4:f871f375cd99 | 1 | #include "mbed.h" |
Sissors | 4:f871f375cd99 | 2 | #include "FastPWM.h" |
Sissors | 4:f871f375cd99 | 3 | |
Sissors | 4:f871f375cd99 | 4 | FastPWM pwm(PTA13); |
Sissors | 4:f871f375cd99 | 5 | InterruptIn interrupt(PTD5); |
Sissors | 4:f871f375cd99 | 6 | |
Sissors | 4:f871f375cd99 | 7 | volatile int count; |
Sissors | 4:f871f375cd99 | 8 | |
Sissors | 4:f871f375cd99 | 9 | void interrupt_handler(void) |
Sissors | 4:f871f375cd99 | 10 | { |
Sissors | 4:f871f375cd99 | 11 | count++; |
Sissors | 4:f871f375cd99 | 12 | } |
Sissors | 4:f871f375cd99 | 13 | |
Sissors | 4:f871f375cd99 | 14 | |
Sissors | 4:f871f375cd99 | 15 | int main (void) |
Sissors | 4:f871f375cd99 | 16 | { |
Sissors | 4:f871f375cd99 | 17 | //Start_frequency is 60kHz |
Sissors | 4:f871f375cd99 | 18 | double frequency = 65e3; |
Sissors | 4:f871f375cd99 | 19 | pwm = 0; |
Sissors | 4:f871f375cd99 | 20 | interrupt.rise(&interrupt_handler); |
Sissors | 3:7745ac0591aa | 21 | |
Sissors | 4:f871f375cd99 | 22 | while(1) { |
Sissors | 4:f871f375cd99 | 23 | //Set PWM period, reset count |
Sissors | 4:f871f375cd99 | 24 | pwm.period(1/frequency); |
Sissors | 4:f871f375cd99 | 25 | count = 0; |
Sissors | 4:f871f375cd99 | 26 | |
Sissors | 4:f871f375cd99 | 27 | //Enable PWM at 50% dutycycle for 1 second |
Sissors | 4:f871f375cd99 | 28 | pwm = 0.5; |
Sissors | 4:f871f375cd99 | 29 | wait(1); |
Sissors | 4:f871f375cd99 | 30 | pwm = 0; |
Sissors | 4:f871f375cd99 | 31 | |
Sissors | 4:f871f375cd99 | 32 | printf("Expected %.0f edges, measured %d edges.\n", frequency, count); |
Sissors | 4:f871f375cd99 | 33 | if (count < frequency * 0.9) { |
Sissors | 4:f871f375cd99 | 34 | printf("Test failed at %.0fkHz!\n\n", frequency / 1000); |
Sissors | 4:f871f375cd99 | 35 | break; |
Sissors | 4:f871f375cd99 | 36 | } |
Sissors | 4:f871f375cd99 | 37 | printf("Test succeeded at %.0fkHz!\n\n", frequency / 1000); |
Sissors | 4:f871f375cd99 | 38 | frequency += 10e3; |
Sissors | 4:f871f375cd99 | 39 | |
Sissors | 4:f871f375cd99 | 40 | } |
Sissors | 4:f871f375cd99 | 41 | while(1); |
Sissors | 4:f871f375cd99 | 42 | } |
Sissors | 4:f871f375cd99 | 43 |