Forum: Mikrocontroller und Digitale Elektronik Synchronisieren 2 AVR Funk Evaluation Board mit RFM12


von landson (Gast)


Lesenswert?

Hallo community,
ich arbeite gerade an einem Semesterarbeit und möchte 2 AVR Funk
Evaluation Board (mit Atmega8 und RFM12)so zu synchronisieren, dass  der
Sender jede 2 min  einem Byte an den Empfänger sendet.
Die sollen im Schlafmodus gesetzt werden und nur aufwachen, um zu senden 
bzw zu empfangen. der Sendevorgang dauert nicht länger als 2s.

Ich habe bisher geschafft, dass der Sender jede 2 min sendet. das
Programm receive für den Empfänger funktioniert allgemein. ich habe die
Schwierigkeit jetzt der Empfänger so zu einstellen, dass er auch jede 2
min synchron mit dem Sender funktioniert.

Das Programm für "sleep_Idle" habe ich schon gefunden und muss nur noch
alles genau im Hauptprogramm Schreiben.

Wollte mal fragen, ob jemand so etwas schon gemacht hat, oder hat eine
Idee wie ich es realisieren kann.
danke sehr,
Landson.

von Hanns-Jürgen M. (yogy)


Lesenswert?

Wenn die Module nicht exact dieselbe Uhr (z.B. Funkuhr) benutzen, muß 
der Empfänger ständig lauschen.

Der Sender sollte zunächst einige Bytes "Bitwechsel" senden, z.B 0x55, 
dann die beiden Synchronbytes laut Datenblatt, danach die Nachricht 
bekannter Länge mit einer CRC oder zumindest einer Checksum. Der 
Empänger "verschluckt" die 0x55-Bitwechselbytes sowie die Synchronbytes 
(Startkennung), danach kommen die Datenbytes. Die Auswertung muß in der 
SW geschehen (CRC Prüfung etc).

Ich baue z.Zt. etwas ähnliches auf, bin aber noch nicht soweit.

Good Luck.

von Hanns-Jürgen M. (yogy)


Lesenswert?

Ergänzung:

Nach Empfang einer Nachricht sollte das Empfangsmodul neu initialisiert 
und auf Receive geschaltet werden...

von c-hater (Gast)


Lesenswert?

landson schrieb:

> Wollte mal fragen, ob jemand so etwas schon gemacht hat, oder hat eine
> Idee wie ich es realisieren kann.

Das ist garnicht so einfach. Der RFM12 bietet aber einige Unterstützung 
dafür, einen stromsparenden Empfänger zu bauen.

Da ist zum einen ein Timer für die längeren Wartezeiten. D.h.: Dein µC 
kann die meiste Zeit der 2 Minuten komplett im Tiefschlaf verharren und 
im RFM12 läuft nur dieser Timer, der auch kaum Strom braucht.

Ist die Wartezeit vorbei (sinnvollerweise etwas kürzer als der 
vereinbarte Zyklus), weckt der RFM12 deinen µC per Interrupt. Jetzt 
kannst du den RFM12 umprogrammieren und auf Empfang gehen. Auch dafür 
gibt's eine stromsparende Variante, die nicht ständig den Empfänger 
laufen läßt, sondern sozusagen "stotternd". Bei sinnvoller Festlegung 
der Stotterparameter und der Sendewiederholungen kann man so auch 
nochmal einiges an Energie sparen.

Aber alle diese Spielchen können letztlich nicht verhindern, daß die 
Zeiten von Sender und Empfänger mittelfristig auseinanderlaufen werden, 
was zur Folge hat, daß man immer kürzer ganz tief schlafen kann, weil 
man immer längere Zeit lauschen muß. Es ist also sinnvoll, den Inhalt 
des Broadcasts so zu gestalten, daß sich der Empfänger bei erfolgreichem 
Empfang eines Paketes auch gleich neu synchronsieren kann. D.h. konkret: 
Die Nummer der Wiederholung muß im Paket stehen.

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.