1 | //define LED_BUILTIN 13 // for Arduino Uno
|
2 |
|
3 | void setup()
|
4 | {
|
5 | Serial.begin(115200);
|
6 | pinMode(LED_BUILTIN, OUTPUT);
|
7 |
|
8 | delay(3000);
|
9 |
|
10 | Serial.println("***************************************************");
|
11 | Serial.println("* Arduino Benchmark *");
|
12 | Serial.println("***************************************************");
|
13 | Serial.println("");
|
14 | }
|
15 |
|
16 | void benchmark_digitalWrite(uint32_t count)
|
17 | {
|
18 | uint32_t n;
|
19 | for(n=0;n<count/8;n++)
|
20 | {
|
21 | // unroled loop to minimize for loop influence
|
22 | digitalWrite(LED_BUILTIN,HIGH);
|
23 | digitalWrite(LED_BUILTIN,LOW);
|
24 | digitalWrite(LED_BUILTIN,HIGH);
|
25 | digitalWrite(LED_BUILTIN,LOW);
|
26 | digitalWrite(LED_BUILTIN,HIGH);
|
27 | digitalWrite(LED_BUILTIN,LOW);
|
28 | digitalWrite(LED_BUILTIN,HIGH);
|
29 | digitalWrite(LED_BUILTIN,LOW);
|
30 |
|
31 | }
|
32 | }
|
33 |
|
34 | void benchmark_analogRead(uint32_t count)
|
35 | {
|
36 | uint32_t n;
|
37 | for(n=0;n<count;n++)
|
38 | {
|
39 | analogRead(0);
|
40 | }
|
41 | }
|
42 |
|
43 | void loop()
|
44 | {
|
45 | uint16_t n;
|
46 |
|
47 | uint32_t startTime;
|
48 | uint32_t stopTime;
|
49 | uint32_t numberOfTries=100000;
|
50 | uint32_t timeNeeded;
|
51 |
|
52 | Serial.println("digitalWrite speed benchmark");
|
53 | Serial.println("=============================");
|
54 |
|
55 | startTime=micros();
|
56 | benchmark_digitalWrite(numberOfTries);
|
57 | stopTime=micros();
|
58 | timeNeeded = stopTime-startTime;
|
59 |
|
60 | Serial.print("number of tries: ");Serial.print(numberOfTries);Serial.print(" ");
|
61 | Serial.print("duration [us]: "); Serial.print(timeNeeded);Serial.print(" ==> ");
|
62 | Serial.print("speed [megaSamples/second] : "); Serial.println((float)numberOfTries / timeNeeded); Serial.print(" ");
|
63 | Serial.println("");
|
64 |
|
65 | Serial.println("analogRead speed benchmark");
|
66 | Serial.println("=============================");
|
67 |
|
68 | startTime=micros();
|
69 | benchmark_analogRead(numberOfTries);
|
70 | stopTime=micros();
|
71 | timeNeeded = stopTime-startTime;
|
72 |
|
73 | Serial.print("number of tries: ");Serial.print(numberOfTries);Serial.print(" ");
|
74 | Serial.print("duration [us]: "); Serial.print(timeNeeded);Serial.print(" ==> ");
|
75 | Serial.print("speed [kiloSamples/second] : "); Serial.println((float)numberOfTries / timeNeeded * 1000); Serial.print(" ");
|
76 | Serial.println("");
|
77 |
|
78 | delay(5000);
|
79 | Serial.println("");
|
80 | Serial.println("");
|
81 | Serial.println("");
|
82 | }
|