InterruptIn speed check

Dependencies:   FastPWM mbed

Fork of InterruptIn_speed by Erik -

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?

UserRevisionLine numberNew 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