Testbench for FastIO

Dependencies:   FastIO mbed

Fork of FastIO by Igor Skochinsky

Committer:
igorsk
Date:
Sat May 22 22:58:38 2010 +0000
Revision:
1:8064f8b8cf82
Parent:
0:f1e54c45ccaf
Child:
3:8d217a0bb245

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
igorsk 0:f1e54c45ccaf 1 #include "mbed.h"
igorsk 0:f1e54c45ccaf 2
igorsk 1:8064f8b8cf82 3 #include "FastIO.h"
igorsk 1:8064f8b8cf82 4
igorsk 1:8064f8b8cf82 5 #define LED_MASK 0x07800000
igorsk 0:f1e54c45ccaf 6
igorsk 0:f1e54c45ccaf 7 DigitalOut led1(LED1);
igorsk 0:f1e54c45ccaf 8 FastOut<LED2> led2;
igorsk 1:8064f8b8cf82 9 PortOut ledport(Port0, LED_MASK);
igorsk 1:8064f8b8cf82 10 FastPortOut<Port0, LED_MASK> ledport2;
igorsk 0:f1e54c45ccaf 11
igorsk 0:f1e54c45ccaf 12 Timer t;
igorsk 0:f1e54c45ccaf 13 #define LOOPS 100000000
igorsk 0:f1e54c45ccaf 14 int main() {
igorsk 0:f1e54c45ccaf 15 int value = 0;
igorsk 0:f1e54c45ccaf 16 int count = LOOPS;
igorsk 0:f1e54c45ccaf 17 t.start();
igorsk 0:f1e54c45ccaf 18 while ( count -- )
igorsk 0:f1e54c45ccaf 19 {
igorsk 0:f1e54c45ccaf 20 led1.write(value);
igorsk 0:f1e54c45ccaf 21 value = 1-value;
igorsk 0:f1e54c45ccaf 22 }
igorsk 0:f1e54c45ccaf 23 t.stop();
igorsk 0:f1e54c45ccaf 24 printf("DigitalOut: %f seconds (%d ns per iteration).\n", t.read(), t.read_us()/(LOOPS/1000));
igorsk 1:8064f8b8cf82 25
igorsk 0:f1e54c45ccaf 26 count = LOOPS;
igorsk 0:f1e54c45ccaf 27 t.reset();
igorsk 0:f1e54c45ccaf 28 t.start();
igorsk 0:f1e54c45ccaf 29 while ( count -- )
igorsk 0:f1e54c45ccaf 30 {
igorsk 0:f1e54c45ccaf 31 led2 = value;
igorsk 0:f1e54c45ccaf 32 value = 1-value;
igorsk 0:f1e54c45ccaf 33 }
igorsk 0:f1e54c45ccaf 34 t.stop();
igorsk 0:f1e54c45ccaf 35 printf("FastOut: %f seconds (%d ns per iteration).\n", t.read(), t.read_us()/(LOOPS/1000));
igorsk 1:8064f8b8cf82 36
igorsk 1:8064f8b8cf82 37 count = LOOPS;
igorsk 1:8064f8b8cf82 38 t.reset();
igorsk 1:8064f8b8cf82 39 t.start();
igorsk 1:8064f8b8cf82 40 value = LED_MASK;
igorsk 1:8064f8b8cf82 41 while ( count -- )
igorsk 1:8064f8b8cf82 42 {
igorsk 1:8064f8b8cf82 43 ledport.write(value);
igorsk 1:8064f8b8cf82 44 value ^= LED_MASK;
igorsk 1:8064f8b8cf82 45 }
igorsk 1:8064f8b8cf82 46 t.stop();
igorsk 1:8064f8b8cf82 47 printf("PortOut: %f seconds (%d ns per iteration).\n", t.read(), t.read_us()/(LOOPS/1000));
igorsk 1:8064f8b8cf82 48
igorsk 1:8064f8b8cf82 49 count = LOOPS;
igorsk 1:8064f8b8cf82 50 t.reset();
igorsk 1:8064f8b8cf82 51 t.start();
igorsk 1:8064f8b8cf82 52 value = LED_MASK;
igorsk 1:8064f8b8cf82 53 while ( count -- )
igorsk 1:8064f8b8cf82 54 {
igorsk 1:8064f8b8cf82 55 ledport2 = value;
igorsk 1:8064f8b8cf82 56 value ^= LED_MASK;
igorsk 1:8064f8b8cf82 57 }
igorsk 1:8064f8b8cf82 58 t.stop();
igorsk 1:8064f8b8cf82 59 printf("FastPortOut: %f seconds (%d ns per iteration).\n", t.read(), t.read_us()/(LOOPS/1000));
igorsk 0:f1e54c45ccaf 60 }