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


von Dirk H. (dirk_h)


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?

von Borislav B. (boris_b)


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...

von Chris (Gast)


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.

von Dirk H. (dirk_h)


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..)

von Chris (Gast)


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.

von Chris R. (mrgreen)


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":
1
Hello 
2
tx sending packet 
3
ret = 0x80 
4
mode change: t 
5
mode change: i 
6
tx sending packet 
7
ret = 0x80 
8
mode change: t 
9
mode change: i 
10
tx sending packet 
11
ret = 0x80 
12
mode change: t 
13
tx sending packet 
14
ret = 0x3 
15
tx sending packet 
16
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

von Grobi (Gast)


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

von Chris R. (mrgreen)


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

von Chris R. (mrgreen)


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-revisited/).
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...

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.