Tja, da waren wohl ein paar kleine Fehlerchen.
Hier der Testcode für einen Arduino:
1 | uint32_t startTime;
|
2 | uint32_t rate_us=1000000L;
|
3 |
|
4 | uint16_t testCounter = 0;
|
5 |
|
6 |
|
7 | void setup()
|
8 | {
|
9 | startTime = micros();
|
10 | Serial.begin(9600);
|
11 | }
|
12 |
|
13 | void loop()
|
14 | {
|
15 | if ( ((uint32_t) micros())-startTime >= rate_us)
|
16 | {
|
17 | startTime += rate_us;
|
18 |
|
19 | // test code
|
20 | testCounter++;
|
21 | Serial.println(micros());
|
22 | }
|
23 | }
|
Man kann am Serial.Print sehen, wie die Ausführungszeit um ein paar
Mikrosekunden schwankt.