Forum: Mikrocontroller und Digitale Elektronik RFM12 Wake-Up Timer Werte berechnen


von Matthias S. (mat-sche)


Lesenswert?

Guten Morgen,

ich habe eine kleine Blokade in Form des Verstehens zur Berechnung der 
Werte zur Einstellung der Timerwerte. Der Wert wird mit der Formel T 
=m*(2ms)^r berechnet.
(https://www.mikrocontroller.net/articles/RFM12#Zeitgeber_f.C3.BCr_Wake-Up_.28Wake-Up_Timer_Exxx_.._Fxxx.29)

Leider weiß ich hier nicht weiter welche Größen wie eingesetzt werden 
müssen, kann mir jemand bitte mir den Rechenweg aufzeichnen, Beispiel 
geben?

Vielen DAnk!

von Kirsch (Gast)


Lesenswert?

t = m * 2^r * 1ms

Eine Gleichung mit 3 Unbekannten
m kann nur die Werte zwischen 1 und 255 annehmen und r zwischen 0 und 29

Was ist denn gegeben?
Was willst du wissen?

Wenn die Zeit t gegeben ist z. B. 300 Sekunden (5 Minuten)

300s = m * 2^r * 1ms

300 = m * 2^r

Nehmen wir jetzt r=0 an

300 = m * 2^0
300 = m * 1
300 = m // Lösung nicht möglich

Nehmen wir jetzt r=1 an

300 = m * 2^1
300 = m * 2
150 = m // Lösung ist möglich

von Kirsch (Gast)


Lesenswert?

arr, die Rechnung oben war jetzt für 300 ms = 0,3s
aber das Prinzip müsste klar sein

von Matthias S. (mat-sche)


Lesenswert?

jetzt hat es Klick gemacht, es war wohl gestern zu spät um es zu sehen.

* da das LSB 8 Bit breit ist kann m= max. 255 einnehmen
* da das MSB 5 Bit breit ist kann r= max. 29 einnehmen
also ist die Berechnung für die Zeit:

tmax= 255 * 2^29
                                           fest r     m
Und somit ergibt sich für 60sek: E8FF oder 111  01000 11111111

Jetzt weiß ich die Werte in der Formel einzusetzen. :)

Vielen Dank

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

der Sleeptimer ist ohnehin ungenau und Temperaturabhängig wenn die 
Funktion zur Quarzsyncronisation nicht genutzt wird um Strom zu sparen.

Annäherung nach obiger Rechnerei reicht also völlig aus.
Meine RFM02 laufen frei und senden mit ca. alle Minute per Timer.

Habe gerde mal in meinen alten Source reingeschaut:
0xE500 + 200 wären 2^5 = 32 *200, also 6400ms oder 6,4s nach Datenblatt.
Ganz praktisch sind es rund 60s...

Ich habe diesen Fehler nie klären können, ganz praktisch laufen aber 
alle 6 Sensoren seit Jahren mit diesem Wert und senden rund alle Minute.

Würde mich also interessieren, was bei Dir mit 0xE8FF passiert.
Gruß aus Berlin
Michael

: Bearbeitet durch User
von Matthias S. (mat-sche)


Lesenswert?

Hallo Michael,

also ich habe den Wert 0xE8FF eingegeben und habe etwa 60sec. Wake 
uptime. Da bei mir die Zeit nicht unmittelbar eine rolle spielt, ist mir 
die Genauigkeit zweitrangig.
Aber dennoch danke für Deinen Hinweis.
Gruß Matthias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.