RFM12 keine Übertragung

Gast #2144675
Lesenswert?

Hallo,

Ich versuche nun schon seit geraumer Zeit Funkübertragung mittels des 
RFM12-Moduls von Pollin zu realisieren.
Dazu verwende ich die Library von "das-labor.org" in svn-Revision 85.
Die beiden Quellcode-dateien zeigen beide einen Sender/Empfänger von 
denen einer den Status nur mittels LEDs, der andere über usart (mit 
das-labor-library-debug-ausgabe) mitteilt.
Eine der Schaltungen (für die der usart-code bestimmt ist) ist auf einem 
Steckbrett aufgebaut. Die Schaltung(en) sind zu einfach für ein 
Diagramm:
µC : atmega8,
RFM12 <-> mega8
VDI <-> MOSI
VDO <-> MISO
SCK <-> SCK
nSel <-> NSS
nIRQ <-> Int0
FSK/Data/nFFS <-> VCC
zwischen VCC und GND des RFM12 ist jeweils noch ein Kondensator mit 
100µF gelötet. Das 2., fest gelötete Modul ist nach dem gleichen Schema 
aufgebaut.
Mein Problem: Beide Module signalisieren nur "OCCUPIED" als Antwort auf 
alle bis auf die erste Sendeanfrage (diese "ENQUEUED"). Obwohl die 
Verwendung der Interrupts aktiviert wurde wird keines geworfen 
(uart-ausgabe der Library + codezeile "uart_putstr("int\n")" ;) ).
Empfangen habe ich mit den Modulen leider noch nie etwas und kann somit 
natürlich auch nicht vermuten jemals etwas gesendet zu haben.

Gibt es zu diesem oder ähnlichen Problemen bekannte Lösungsansätze?
Ich habe bereits dieses Forum durchsucht und gegoogelt, andere Libraries 
(U.Radigs e.g) ausprobiert oder den Pollin/HOPE-Code per Hand 
nachgetippt jedoch mit vergleichbaren Ergebnissen.
Ist die Verdrahtung grundlegend falsch? Übersehe ich irgend eine 
Codezeile? Lösche ich auf mysteriöse Weise den Int-Handler?

Ich wäre für sehr dankbar für jede Hilfe,

Frank
Angehängte Dateien:
Gast #2144720
Lesenswert?

Hast Du diesen Beispielcode schon einmal verwendet ?

Beitrag "Beispielprogramm für RFM12 433MHz Funk-Module"

Bei mir hat das auf Anhieb mit 2 x attiny2313 funktioniert (OK, nachdem 
ich dann auch jeweils einen Pullup an FSK angeschlossen hatte)

Der macht nix mit Interrupts etc, daher einfacher und wohl 
fehler-vermeidender.

Unbedingt dabei F_CPU beachten, afair war das im Beispielcode für 10MHz 
eingestellt, also anpassen bzw. kontrollieren.

Gruß,
Uwe
Gast #2144792
Lesenswert?

genau 100nF kerko, (fand die µ-taste so toll ^^)
in dem Thread wird des Ur-Programm zum rfm12 diskutiert iirc, des hab 
ich (und dann eben die änderungen) eigentlich probiert.
Aber den pullup an fsk hab ich nicht - einfach widerstand (~100k) 
zwischen fsk und vcc?
Welche Version von dem Programm hast du verwendet ? (gibt in dem Thread 
ja leider mehrere)
Werd' gleich des Programm nochmal probieren.
thx schonmal
Frank
Gast #2145181
Lesenswert?

Die erste Version hatte ich verwendet, also das "Original".

Pullup habe ich 10k. Zum Test ists aber recht wurscht, ob nun 4,7k, 10k, 
47k.

Ohne den Pullup tut sich nichts. Ich habe eine Weile lang gesucht, 
nochmal die Anleitung gelesen und - oh, doch den Pullup nicht eingebaut, 
hingepfriemelt - und hat geklappt.
Gast #2147010
Lesenswert?

Hallo,

jetzt mit Pullup(10k) und einer Änderung am Code wie im oben zitierten 
Thread vorgeschlagen nochmal probiert.
Kann leider immer noch keinen Fortschritt vermerken :(
Das Programm bleibt bei der 1. ready()-abfrage hängen:
void rf12_ready(void)
{

  uart_putstr("ready\n");
  cbi(RF_PORT, SDI);

  cbi(RF_PORT, CS);
  asm("nop");

  while (!(RF_PIN&(1<<SDO))); // wait until FIFO ready

}

immer noch Ratlos,

Frank
Gast #2147702
Lesenswert?

Hallo,

eine Frage zum allgemeinen Verständnis:

ich habe immer SDO mit MISO und SDI mit MOSI verbunden und auch 
dementsprechend im Programm angegeben. Ist die Verkabelung so korrekt?
Schließe ich die Kontakte nicht oder verkehrt herum an "funktioniert" 
mein Code natürlich, …
Gibt es eine einfach Möglichkeit zu prüfen ob die Module (rfm12) 
überhaupt funktionieren?

:(

Frank
Gast #2148322
Lesenswert?

loki schrieb:
> ich habe immer SDO mit MISO und SDI mit MOSI verbunden und auch
> dementsprechend im Programm angegeben.

Wie jetzt ?

Hast Du das mit dem einfachen Code von Benedikt probiert ?
Dort gibt es im Code in rf12.c ganz iben die PIN-Konfiguration, wo und 
wie die Module angeschlossen werden.

Hast Du das gemacht ?
Gast #2148398
Lesenswert?

Hallo,

habe jetzt nur noch die "einfache" Version (also das Programm aus dem 1. 
Post von Benedikt).

in der rf12.c hab' ich die ersten Zeilen folgendermaßen geändert


#define F_CPU 4000000UL

#define RF_PORT  PORTB

#define RF_DDR  DDRB

#define RF_PIN  PINB



#define SDI    3

#define SCK    5

#define CS    2

#define SDO    4

(also HardwareSPI-Pins angegeben obwohl HardwareSPI nicht benutzt wird 
(so kann ich das Programm 1:1 auf mein fest gelötetes Board übernehmen))
der Rest des Programms (inklusive main.c) entspricht bis auf 
uart-Ausgaben noch dem Original.
Gast #2151027
Lesenswert?

update:

doch noch fehler in der Verdrahtung gefunden (pullup).

mein Sendeprogramm(main3.c) "sendet" nun (ob es das wirklich tut kann 
ich nicht nachvollziehen),
jedoch hängt die Empfangsversion(main2.c) des Programms (beide im 
Anhang) eben wieder bei ready().
die rfm12.c etc sind (bis auf kleine Erweiterungen zur Ausgabe) noch 
Originalversionen von Benedikt.

Gibt es da sonst noch bekannte Fallen?
Angehängte Dateien:
Gast #2152121
Lesenswert?

Hm, wie gesagt, bei mir hat das auf Anhieb funktioniert.

Mal die HW getauscht ? (also den Sender empfangen lassen und andersrum)

Allerdings, ich habe zum Debuggen LEDs an einen PIN gehängt und auf den 
Inhalt des ersten empfangenen Bytes hin verglichen. Auf den UART Kram 
habe ich komplett verzichtet.

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