www.mikrocontroller.net

Forum: Projekte & Code RFM02 Sleep Mode


Autor: Holger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

seit geraumer Zeit lag bei mir ein Pärchen RFM01/02 im Schubfach. Nun 
habe ich dieses in einer Fernbedienung verbaut. Foto im Gehäuse von 
Segor (noch ohne Lithiumzelle CR2032) anbei. Ausgeliehen habe ich mir 
dazu den Code von Benedikt, hat sofort funktioniert...
Beitrag "Re: Beispielprogramm für RFM12 433MHz Funk-Module"
Danke dafür!
Das Problem war, daß sich das Modul wie ein unartiges Gör verhalten hat 
und erst nicht schlafen und dann nicht mehr aufstehen wollte :-)
Gefunden habe ich eigentlich nix. Hier im Forum wird immer nur der Wake 
up Timer des RFM verwendet. Das nutzt mir nichts. Woher soll das RFM 
wissen, wann jemand den Knopf drückt?;-)

Bei mir geht das jetzt so:
Sleep
********
-Sleep Commando lt. RF02 Datenblatt senden
        rf02_trans(0xC000);
-danach das Modul über ChipSelect deaktivieren
        RF_PORT&= ~(1<<CS);

->Modul schläft...zzzzzzz

-Prozessor auch schlafen legen...


Aufwachen
**********
-Prozessor aufwecken...

-CS wieder einschalten
        RF_PORT|=(1<<CS);
-1 ms warten (ohne diese Wartezeit ging es nicht oder nicht zuverlässig)
        _delay_ms(1);
-das Power Management Command Basisadresse C000h nochmal senden
(bei mir:->)
        rf02_trans(0b1100000011101001);

-RFM02 wieder da!
...String senden und von vorn

Vielleicht hilft die Vorgehensweise jemandem, ich musste lange 
rumprobieren..

Gruß Holger

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Holger schrieb:
> Das Problem war, daß sich das Modul wie ein unartiges Gör verhalten hat
> und erst nicht schlafen und dann nicht mehr aufstehen wollte :-)
Ein 10µ Elko nahe am RFM02 hat bei mir diese Probleme komplett 
beseitigt.

> Gefunden habe ich eigentlich nix. Hier im Forum wird immer nur der Wake
> up Timer des RFM verwendet. Das nutzt mir nichts. Woher soll das RFM
> wissen, wann jemand den Knopf drückt?;-)
Der WakeUp-Timer macht ja mit dem RFM sowieso nichts, er legt nur den 
IRQ-Ausgang auf L und damit wacht dann z.B. bei meinen Sensoren der 
ATiny auf. Da kann ich ohne prinzipielle Softwareänderung auch eine 
Taste an den AVR-Pin hängen.

>
> Bei mir geht das jetzt so:
> Sleep
> ********
> -Sleep Commando lt. RF02 Datenblatt senden
>         rf02_trans(0xC000);
> -danach das Modul über ChipSelect deaktivieren
>         RF_PORT&= ~(1<<CS);
>
> ->Modul schläft...zzzzzzz
>
> -Prozessor auch schlafen legen...
>
>
> Aufwachen
> **********
> -Prozessor aufwecken...
ok.

> -CS wieder einschalten
>         RF_PORT|=(1<<CS);
> -1 ms warten (ohne diese Wartezeit ging es nicht oder nicht zuverlässig)
>         _delay_ms(1);
Naja, da sind die Zeiten, bis der Quarzoszillator des RFM angeschwungen 
ist usw. nötig. Wie lange ich da warte, müßte ich in meiner Source 
nachschauen.
> -das Power Management Command Basisadresse C000h nochmal senden
> (bei mir:->)
>         rf02_trans(0b1100000011101001);

Ja logisch muß Du den RFM wieder passend einschalten, der ist ja nach 
Sleep aus...

> -RFM02 wieder da!
> ...String senden und von vorn

Kannst ja gern in meine Sensor-Sourcen schauen:
http://www.avr.roehres-home.de/sensoren/index.html

Gruß aus Berlin
Michael

Autor: OlliW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Holger: SUPER! Ich bin gerade dabei Wireless für die Carrerabahn der 
Kinder zu basteln, klappt alles auch, nur der Sender spaart noch keinen 
Strom... ich stehe also auch gerade vor diesem Schritt. Mir ging es auch 
so wie dir, immer nur Wakeuptimer. Deine Info's werden mir sehr nützlich 
sein. Danke dafür.

@Michael: du sagst also dass mit dem Wakeuptimer geht so: der 
Wakeuptimer gibt ein Signal an den uC um diesen aufzuwecken, der uC ist 
aber anschliessen dafür verantwortlich seinerseits den RFM aufzuwecken? 
(ich hatte das immer so verstanden dass mit dem Wakeupsignal auch der 
RFM "automatisch" aufwacht... schien mir auch irgendwie logisch(er))

Thx,
  Olli

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

OlliW schrieb:
> @Michael: du sagst also dass mit dem Wakeuptimer geht so: der
> Wakeuptimer gibt ein Signal an den uC um diesen aufzuwecken, der uC ist
> aber anschliessen dafür verantwortlich seinerseits den RFM aufzuwecken?
> (ich hatte das immer so verstanden dass mit dem Wakeupsignal auch der
> RFM "automatisch" aufwacht... schien mir auch irgendwie logisch(er))

Wozu? Der RFM liegt doch sowieso nur rum und kann nichts alleine machen 
ohne den µC...

Würde sonst ja nur heißen, daß der RFM aufwacht und mehr Strom 
verbraucht und dann?

Gruß aus Berlin
Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.