RFM12 mit HCS12

OP #1351279
Lesenswert?

Hi,

habe ein problem mit dem RFM12 von Pollin. Ich versuche die Funkmodule
schon seit Tagen auf dem HCS12DP512 von freescale ans laufen zu
bekommen, aber leider läuft nichts. Möchte das ganze über die Hardware
SPI-Schnittstelle steuern. Anbei habe ich mal den Quellcode den ich mit
Hilfe dieses Forum aufgebaut habe dran gehangen. Bedanke mich schon
einmal im Vorraus. Bis dann
Angehängte Dateien:
#1351332
Lesenswert?

Hallo,

der Prozessor ist nicht meine Spielwiese, trotzdem:

hat die doppelte Initialisierung in rf12_init eine tiefere Bedeutung?

Redet Dein µC denn mit dem RFM? Erkennbar daran, daß er CLKOUT auf die 
10MHz umschaltet.

Allgemein meine Erfahrung: 10-20µ halbwegs dicht an den 
Betriebsspannungsanschlüssen des RFM12 sind zu empfehlen, speziell, wenn 
es ein Versuchsaufbau mit ungünstiger Leitungsführung ist.
100ms Wartezeit können den Modulen nach PowerOn durchaus auch zu kurz 
sein.
Als erstes nach PowerOn noch vor der Initsequenz das Statusbyte lesen, 
der Inhalt ist eigentlich egal, es geht nur um das Kommando zum 
Auslesen.

Zumindest sorgen diese Sachen bei mir jetzt schon seit ein paar Monaten 
für absolut stabilen Betrieb meiner Sensormodule und des Webservers mit 
RFM12.

Gruß aus Berlin
Michael
Gast #1351397
Lesenswert?

Hi,
danke schon einmal für die schnelle Antwort. Ich habe RFM_Init 2 mal 
vorgenommen da ich an einem Microkontroller 2 RFM12 Module habe und die 
ja über die SPI1 und SPI2 schnittstelle betreibe. So mit muss ich doch 
um beide Funkmodule zu Initallisieren einmal auf SPI1 und einmal auf 
SPI2 durchführen, oder? Wie kann ich den überprüfen ob der clkout auf 
die 10Mhz umschaltet?

Bis dann und Danke
Gast #1352808
Lesenswert?

Hallo Stephan,
man würde ja vielleicht helfen aber hast du zufällig mal ein Bild von 
der Hardware, Zeichnung, Bild, Schaltplan,Platinenlayout, Stückliste 
oder weitere Informationen zu Temperatur,Datenblatt, Sendefrequenz und 
Empfangsfrequenz, Filter, Standort Abstände Antennen... damit man sich 
mal ein Bild machen kann.
#1352881
Lesenswert?

Hallo,

mit welcher Taktfrequenz rennt dein S12X? Ich hab jetzt nicht in das 
Datenblatt des RFM12 geschaut, aber evtl. ist die Baudrate zu hoch. 
Deine SPI Baudratenprescaler stehen auf 0 -> höchste Baudrate.
Außerdem, warum hast du die SPI Interrupts (auch wenn du sie scheinbar 
nicht benutzt) zum XGate (RQST=1) geroutet?

Invertierte Logik, oder nur der Kommentar falsch?
1
  PTH &= ~0x80;  //Port H3 an
2
  PTH |= 0x80;     //Port H3 aus
Ist das dein Slave select? Warum hast du dann den automatischen 
eingeschaltet?

Generell solltest du nach jedem SPI-Byte-Schreiben auch den Puffer 
auslesen, ansonsten gibt das irgendwann Murks - glaubs mir. So z.B.
1
uint8_t Spi_Transfer(uint8_t txData)
2
{
3
    /* write */
4
    while (!SPI0SR_SPTEF)
5
    {
6
        /* wait for empty TX buffer */
7
    }
8
    SPI0DR = txData;
9

10
    /* read */
11
    while (!SPI0SR_SPIF)
12
    {
13
        /* wait for rx data */
14
    }
15

16
    return (SPI0DR);
17
}

Gruß,
Christian
#1352912
Lesenswert?

Hallo,

Stephan schrieb:
> Hi, ja hier ist das Datenblatt vom RFM12. Benutze 2 davon an einem
> Mikrocontroller. Der Abstand zwischen beiden Funkmodulen sind nur ca.
> 10cm.

Ob das so klug ist?
zumindest mußt Du dafür sorgen, daß die Register beim Senden bzw. 
Empfangen auch pünktlich bedient werden.
Der Empfänger ist darauf angewiesen, daß die Daten ohne Pause kommen, 
sonst kommt die Bitclock-PLL aus dem Tritt. Deshalb auch nicht zuviele 
Daten ohne Pegelwechsel senden (0x00 oder 0xFF).

Die PLL syncronisiert mit der Präambel (den 0x0AA) und ist dann darauf 
angewiesen, daß oft genug ein Flankenwechsel kommt, sonst läuft sie weg.

Die 10MHz (oder was Du beim Init programmierst) findest Du am CLK-Pin 
des Moduls.

Ist zwar alles AVR und auch Soft-SPI, aber vielleicht findest Du bei 
meinen Sensoren noch Hinweise:

http://www.avr.roehres-home.de/

Gruß aus Berlin
Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren