www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RFM12 mit "Das Labor Libary"


Autor: Dirk H. (dirk_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade eine RFM12 Übertragungsstrecke mit der Libary von 
Das Labor ( https://www.das-labor.org/wiki/RFM12_library ) zum Laufen zu 
bringen.
(Controller ist bei mir ein Mega32L, Modul ist an SPI INT0 und SS (PB4) 
als CS angeschlossen)

Sobald ich aber die Senderoutine z.B. rfm12_tx(1,0,&i) aufrufe scheint 
sich die libary "aufzuhängen". Es findet dann keine Kommunikation mehr 
zw. µC und Modul statt (CLK ist tot und Modul wird nicht mehr selected)

Kennt jemand das Problem oder hat einen Lösungsvorschlag?

Autor: Borislav Bertoldi (boris_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Dirk!
Also ich kenne das Problem. Mittlerweile habe ich verschiedene Codes 
ausprobiert, alle zeigen das gleiche Verhalten. Eine Lösung habe ich 
leider nicht :-(

Mein nächster Schritt wird sein die SPI Kommunikation genauer unter die 
Lupe zu nehmen. Dafür habe ich mir auf die Schnelle einen kleinen 
Logik-Analyzer gebastelt. Damit (und mit Hilfe des RFM-datasheets) 
sollte sich dann das problem recht schnell identifizieren lassen...

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte ähnliche Probleme, bis ich mein Array of char für die zu 
sendenden Daten um 1 erweitert hatte.
Außerdem scheint wohl die Aufrufhäufigkeit von rfm12_tick() eine Rolle 
zu spielen.

Ich würde es mal mit abgeschalteter collision avoidance testen.

Aktuell habe ich das Problem, dass sich ein nur empfangendes rfm12-Modul 
sporadisch aufhängt. Es wird dann zwar noch angesprochen, aber empfängt 
nichts mehr. Ob es dann überhaupt noch reagiert, muss ich noch testen.

Autor: Dirk H. (dirk_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok ich weiß jetzt woran es liegt. Hab aber noch keine Lösung...

Und zwar muss nach der Aufforderung zu senden ein Interrupt kommen. In 
diesem Interrupt wird dann das Modul wieder "frei" geschaltet. Der 
Interrupt kommt aber nicht. (Er kommt Hardwaretechnisch tatsächlich 
nicht..)

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die letzte Nacht sowie diese Nacht lief mein rfm12 durchgehend auf 
Empfang und ohne Probleme durch. Gestern Abend allerdings hängte es sich 
immer wieder auf.

Interessant ist, dass trotzdem noch Aktivität auf der CS-Leitung war, 
und zwar jedes Mal, wenn ein anderes rfm12-Modul sendete.
Ich habe dann rfm12_init() aufgerufen und der Empfang war wieder da.

Autor: Chris R. (mrgreen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich hab auch das Sende-Problem mit der Lib (die 1.2 Dev Version):


Ich kann wohl ein paar Pakete senden (der Funkscanner tackert auch am 
Anfang mal), dann ist das Modul aber immer "occupied":
Hello 
tx sending packet 
ret = 0x80 
mode change: t 
mode change: i 
tx sending packet 
ret = 0x80 
mode change: t 
mode change: i 
tx sending packet 
ret = 0x80 
mode change: t 
tx sending packet 
ret = 0x3 
tx sending packet 
ret = 0x3 

ret ist dabei der Returncode aus rfm12_tx().

Zwischen den Paketen liegen ca. 5 Sekunden, tick() wird in der Main-Loop 
dauernd aufgerufen. Baudrate ist 1200, ich hab LIVECTRL und 
NOCOLLISIONDETEC abgeschaltet, dafür TXONLY an.
Irgendwie bleibt der Code (oder das RFM12 Modul selbst) immer wieder 
hängen und sendet nicht mehr.

Mein Paket hat 11 Bytes payload.

Hat schon jemand eine Lösung?

Das Empfangen wird mir dann wohl nochmal mehr Kopfschmerzen bereiten...

Greetz
Mr.Green

Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
habt ihr denn mal eine andere Software Lösung versucht als die Das Labor 
lib? Ich kenne die lib nicht, hab aber schon öfters mit diesen 
Funkmodulen zu tun gehabt. Den entsprechenden Code hab ich immer selbst 
zusammen gebastelt, dabei sind mir solche Fehler wie z.B. Interrupt 
kommt nicht bzw. nur sporadisch auch untergekommen. Nachdem ich die 
Software dann zum tausendsten mal unnötig umgebaut hatte konnte es dann 
einfach nur noch an der hardware liegen und das war es dann auch. Die 
Funkmodule reagieren anscheinend empfindlich auf Schwankungen der 
Versorgungsspannung. Bei mir reichte es aus einen 22µ zwischen VCC und 
GND nahe an den Modulen unterzubringen und schon waren alle Fehler 
"weggezaubert". Ein zusätzlicher 100n kann auch nicht schaden. Hätte 
auch nie gedacht das es an sowas liegen kann da die Module die Spannung 
von 7805 bekommen und die auch schon geglättet wurde.
Vielleicht hilfts euch ja auch weiter.

Grobi

Autor: Chris R. (mrgreen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich persönlich hatte schon etliche verschiedene Lösungen 
ausprobiert.

Ich hab aber keine davon weiter gebracht als die vom Labor jetzt. Das 
beste, was ich mit einer anderen geschafft hatte, war ein ähnlicher 
Hänger wie beim Labor

Autor: Chris R. (mrgreen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab mal etwas rumprobiert:
Senden scheint zu klappen, wenn LIVECTRL und WAKEUP beide auf 0 sind.
Dann tackert der Scanner jedenfalls wie bekloppt.

Empfangen geht meistens gar nicht; ich hab auch da mit den 
Feature-Defines rumprobiert.
Ganz ganz selten kriege ich da Pakete empfangen, sonst ist es tot. Es 
kommt da auch kein IRQ.
Ich hab ein bisschen im Netz gesucht und gelesen, dass es potentiell 
mindestens zwei RFM12 Versionen gibt (siehe z.B: hier 
http://news.jeelabs.org/2009/05/06/rfm12-vs-rfm12b...).
Vielleicht ist das auch ein Problem; ich kann jetzt (weil sie aufgelötet 
sind) nicht mehr sagen, welche Module da draufhängen.

Es scheint wohl etwas mit dem Sync der beiden Module nicht zu klappen, 
aber manchmal kommen wie gesagt Pakete auf dem Empfänger an...

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.