ELEKTRO FORUM

Elektroforum
It is currently January 9, 2009, 4:44 pm

All times are UTC





Post new topic Reply to topic  [ 1 posts ] 
Author Message
 Post subject: Kleiner Tip zum RFM12
PostPosted: 2008-01-04 10:38:42
Online
Registered User

Joined: 2008-01-04 10:38:42
christian mock <cm@tahina.priv.at> wrote:


>ich glaub nämlich, das datasheet belügt uns: ich interpretiere
>jedenfalls die graphik "Typical TX register usage" auf s. 24 in
>rf12.pdf so, daß ein dummy-byte ausreichend ist. scheint aber nicht
so
>zu sein, wenn ich nämlich in rf12 send 2 dummy-bytes sende, schaut
die
>übertragung (im kurzen test) zuverlässig aus ohne doppeltes
senden.

Also jetzt wo ich das Diagramm sehe <BG>, muss ich dir zustimmen.

Wobei aber auch von der Baudrate und der Prozessorgeschwindigkeit
abhaengt. Wenn dir der RF12 sagt das er jetzt ein neues Byte
gebrauchen kann, dann hat er ja kurz vorher 8Bit freigemacht und
sendet das obere Bit der anderen 8Bit.

Wenn man jetzt eine sehr hohe Baudrate haette, und sich ausserdem beim
holen des naechstens Bytes etwas Zeit laesst, oder man selber die SPI
Anbindung relativ langsam betreibt dann koennte er ja schon mehr Bits
gesendet haben und dann ist bis zum abschalten bereits wieder ein Byte
ganz draussen.

Bei mir war es aber definitiv so das immer die letzten beiden Bytes
zerstoert waren.



> rf12 cmd(RF12 POWER SETTING, RF12 ET | RF12 DC); // turn on xmit
> rf12 send((uint8 t *)&data, sizeof(data));
> rf12 cmd(RF12 POWER SETTING, RF12 DC); // turn off

Wenn ich das richtig sehe dann sollte es nach dem einschalten noch
eine gewisse Wartezeit geben damit Clock, Pll hochfahren. Bei mir
klappte es zwar auch ohne dem, aber ich sende sichheiteshalber mal 6x
0xAA vor der Uebertragung.

Also so:

rf12 txmode(); /* RF12 in Sendebetrieb */

rf12 txbyte(0xaa); /* Das braucht der andere */
rf12 txbyte(0xaa); /* Empfaenger um sich zu */
rf12 txbyte(0xaa); /* syncronisieren */
rf12 txbyte(0xaa);
rf12 txbyte(0xaa);
rf12 txbyte(0xaa);

rf12 txbyte(0x2d); /* Kennung fuer Empfaenger */
rf12 txbyte(0xd4); /* Damit er seine Fifo einschaltet */

for (i=0;i<sizeof(union multibus def);i++)
{
rf12 txbyte(MultiBlockS.b[i]);

if ((RF12Err.bit.Timeout) || (RF12Err.bit.TxErr))
{
MultiErr.bit.TxErr=1;
rf12 off(); /* RF12 ausschalten zum Stromsparen!
*/
return(FALSE);
}
}

rf12 txbyte(0xaa); /* Zwei Dummybytes senden. Wir duerfen */
rf12 txbyte(0xaa); /* den Sender nicht abschalten bevor der */
/* Puffer der Nutzbytes leer ist! */

rf12 off(); /* RF12 ausschalten zum Stromsparen! */


Olaf


Top
 Profile
 
Post new topic Reply to topic  [ 1 posts ] 

Who is online

Users browsing this forum: Bernd Laengerich <Bernd.Laengerich@web.de>,Horst Laschinsky <horst.laschinsky@physik.uni-erlangen.de>,Steffen Beyer <steffenkxp521@reactor.de>,lutz krause <lutz.krause@tu-ilmenau.de>,Georg Sauthoff <g sauthoff@web.de>, 7 guests, spodnie dziecięce rolety warszawa odzież robocza forex news księgarnia internetowa olsztyn


New posts New posts    No new posts No new posts    Announce Announcement
New posts [ Popular ] New posts [ Popular ]    No new posts [ Popular ] No new posts [ Popular ]    Sticky Sticky
New posts [ Locked ] New posts [ Locked ]    No new posts [ Locked ] No new posts [ Locked ]    Moved topic Moved topic
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group