Vorschlag
Ändere den Code mal testweise so ab
1 | int checkTimes[] = { 5500, 8200 };
|
2 | int checkPWM[] = { 150, 240 };
|
3 | int checkCnt = 0;
|
4 |
|
5 | ....
|
6 |
|
7 |
|
8 | if ((time-(timestamp+refresh))>=0)
|
9 | {
|
10 | /*
|
11 | CCPR1L=rand()/330+149;
|
12 | refresh=rand()/6+3000;
|
13 | */
|
14 | checkCnt++;
|
15 | checkCnt = checkCnt % 4;
|
16 |
|
17 | CCPR1L = checkTimes[ checkCnt / 2 ];
|
18 | refresh = checkPWM[ checkCnt % 2 ];
|
19 |
|
20 | timestamp=time;
|
21 | }
|
22 |
|
23 | ....
|
das spielt 4 Kombinationen aus kurzer und langer Zeit bzw. kleiner und
grosser PWM durch. Wieder und immer wieder.
D.h. theoretisch tut es das. Passiert genau das nicht, dann ist rand()
aus dem Schneider und du musst dir eine andere Codestelle suchen, der du
die Schuld in die Schuhe schieben kannst. Passiert aber dieses
Durchspielen der 4 Werte, dann ist rand() tatsächlich ei heißer
Kandidat.
also: Änderung machen, compilieren, brennen, testen und das Ergebnis
berichten.