www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RFM12 mit HCS12


Autor: Stephan K. (stephan190)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum, kennt sich einer mit den RFM12 und kann mir bei den oben 
genannten Problem helfen. Wäre sehr nett komme nicht weiter :-((

Autor: APW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das jetzt ein 9S12XDP512 oder ein 9S12DP512?

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh ja sorry das ist ein S12XDP512!

Autor: Funkamateur1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

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

Bewertung
0 lesenswert
nicht lesenswert
Hi, ja hier ist das Datenblatt vom RFM12. Benutze 2 davon an einem 
Mikrocontroller. Der Abstand zwischen beiden Funkmodulen sind nur ca. 
10cm.

Autor: Christian Gärtner (christiang)
Datum:

Bewertung
0 lesenswert
nicht 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?
  PTH &= ~0x80;  //Port H3 an
  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.
uint8_t Spi_Transfer(uint8_t txData)
{
    /* write */
    while (!SPI0SR_SPTEF)
    {
        /* wait for empty TX buffer */
    }
    SPI0DR = txData;

    /* read */
    while (!SPI0SR_SPIF)
    {
        /* wait for rx data */
    }

    return (SPI0DR);
}

Gruß,
Christian

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, danke schon einmal an alle, werde mörgen eure typs ausprobieren.

Danke

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.