Liebe Forengemeinde,
Ich habe ein Problem mit dem wakeuptimer im RFM02 Modul.Nach der Doku
berechnet sich das Zeitinterwall: T = M * 2 ** r Millisekunden:
1 | 1 1 1 r4 r3 r2 r1 r0 m7 m6 m5 m4 m3 m2 m1 m0 wakeup command
|
2 | 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 binär
|
3 | E A 0 1 hex
|
Ich initialisiere den Timer mit:
1 | rfm02_send_cmd(0xEA00 + 1); // WakeUp-Timer 2^10 *1ms ~ 1024ms ~ 1s
|
et im Powermanagement ist natürlich gesetzt.
Damit sollte alle 1024ms bzw ca jede Sekunde ein Aufwachen erfolgen
das Ergebniss ist aber, das alle 10 s der angeschlossene AtTiny
aufgeweckt wird. Jeder andere Wert für M führt jeweils um eine Faktor
10 größeren Wert, dh zB. mit m = 10 wird alle 100sec aufgeweckt.
Nach dem Aufwachen wird auch das et Bit zuerst auf 0 gesetzt und vor dem
erneuten Einschlafen des RFM02 Moduls wieder gesetzt:
1 | rfm02_send_cmd(0xC0E0); // einschalten, et:0
|
2 | // Sendecode, funktioniert einwandfrei
|
3 | //
|
4 | rfm02_send_cmd(0xC002); // alles aus, wakeuptimer ein et:1
|
5 | rfm02_send_cmd(0xC440); // sleep, noch 64 Takte
|
Bis auf das um den Faktor 10 verkehrte Timing funktioniert alles
einwandfrei. Hat jemand vielleicht eine Erklärung hierfür oder übersehe
ich irgendetwas?