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