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