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?
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...
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.
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..)
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.
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.