4 * Simple program to measure the speed of the various GPIO
14 #define FAST_COUNT 10000000
15 #define SLOW_COUNT 1000000
21 uint32_t start, end, count, sum, perSec ;
23 printf ("Raspberry Pi wiringPi speed test program\n") ;
25 // Start the standard way
27 if (wiringPiSetup () == -1)
30 printf ("Native wiringPi method: (%8d iterations)\n", FAST_COUNT) ;
35 for (i = 0 ; i < 3 ; ++i)
37 printf (" Pass: %d: ", i) ;
41 for (count = 0 ; count < FAST_COUNT ; ++count)
44 printf (" %8dmS\n", end - start) ;
45 sum += (end - start) ;
48 printf (" Average: %8dmS", sum / 3) ;
49 perSec = (int)(double)FAST_COUNT / (double)((double)sum / 3.0) * 1000.0 ;
50 printf (": %6d/sec\n", perSec) ;
53 printf ("Native GPIO method: (%8d iterations)\n", FAST_COUNT) ;
55 if (wiringPiSetupGpio () == -1)
58 pinMode (17, OUTPUT) ;
61 for (i = 0 ; i < 3 ; ++i)
63 printf (" Pass: %d: ", i) ;
67 for (count = 0 ; count < 10000000 ; ++count)
68 digitalWrite (17, 1) ;
70 printf (" %8dmS\n", end - start) ;
71 sum += (end - start) ;
73 digitalWrite (17, 0) ;
74 printf (" Average: %8dmS", sum / 3) ;
75 perSec = (int)(double)FAST_COUNT / (double)((double)sum / 3.0) * 1000.0 ;
76 printf (": %6d/sec\n", perSec) ;
79 // Switch to SYS mode:
81 if (wiringPiSetupSys () == -1)
84 printf ("/sys/class/gpio method: (%8d iterations)\n", SLOW_COUNT) ;
87 for (i = 0 ; i < 3 ; ++i)
89 printf (" Pass: %d: ", i) ;
93 for (count = 0 ; count < SLOW_COUNT ; ++count)
94 digitalWrite (17, 1) ;
96 printf (" %8dmS\n", end - start) ;
97 sum += (end - start) ;
99 digitalWrite (17, 0) ;
100 printf (" Average: %8dmS", sum / 3) ;
101 perSec = (int)(double)SLOW_COUNT / (double)((double)sum / 3.0) * 1000.0 ;
102 printf (": %6d/sec\n", perSec) ;