Forum: Mikrocontroller und Digitale Elektronik avr + RFM12 = nix regt sich :-(


von Grobi (Gast)


Lesenswert?

Hallo,
versuche mich grad an den RFM12 von P*llin, das ganze will aber 
irgendwie nicht laufen,
habe einen Mega8, mit 8MHz getaktet (nicht vom RFM12 getaktet!) der als 
Sender fungieren soll und einen Tiny2313 mit 20Mhz (nicht vom RFM12 
getaktet!) als Empfänger. Die Beschaltung sieht folgendermaßen aus :
Sender :
Mega8 : SS, SCK, MOSI -> RFM12 : nSel, SCK, SDI
Mega8 : MISO          <- RFM12 : SDO
Empfänger :
Tiny2313 : SCK, MOSI, beliebiger PortPin -> RFM12 : SCK, SDI, nSel
Tiny2313 : MISO                          <- RFM12 : SDO
also eigentlich total gleich,
den RFM12s habe ich einen 10K zwischen FSK und VDD verpaßt.
Bei der Software hab ich mich von dem USB Funk Projekt von U.Radig 
inspirieren lassen.
Das Problem scheint irgendwo schon in der Kommunikation zwischen µc und 
RFM12 zu liegen, ich hab den SPI Datenverkehr bei Sender und Empfänger 
einfach mal übern UART mitgeloggt und siehe da, egal was ich zum RFM12 
sende, ich lese immer nur Nullen übers SPI zurück, egal bei welchem 
Kommando. Elektrische Verbindungen sind alle IO!!! daran kanns nich 
liegen und das beide Module schrott sind glaub ich eigentlich auch 
nicht. Auch eine SoftwareSPI Lösung brachte keine Abhilfe.
Bin so langsam mit meinem Latein am Ende, vielleicht hat einer von euch 
auch schon mit sowas zu kämpfen gehabt und nen kleinen Tipp für mich.

von Grobi (Gast)


Lesenswert?

hmm ok also komischerweise messe ich bei der Versorgungsspannung 7,3V, 
also auch auf fsk wegen dem pullup, trotz eines 7805 der ja eigektlich 
auf 5V runterregeln sollte... kann es vielleicht daran liegen, aber der 
mega8 läuft soweit einwandfrei, oder zeigt mein messgerät einfach nur 
falsch an und ich mach mich hier umsonst verrückt???

von Marcus W. (blizzi)


Lesenswert?

Wie wärs wenn du dein Messgerät mal testest? (An ner Batterie oder so)
Wenn du das ausgeschlossen hast dann schau das du deine 5V herbekommst 
und dann kann man weiter suchen (wenn die Bauteile nicht schon defekt 
sind).

von Grobi (Gast)


Lesenswert?

ok, anderes messgerät genommen und schon sind es saubere 5V, also das 
wars dann nicht. Welche Gründe könnte es sonst noch geben das ich nur 
Nullen vom SPI zurück bekomme, sprich SDO immer low ist??? Wenn ich 
garnix ans SPI anschließe sinds nur Einsen, liegt aber wohl daran das 
der Pin auf eingang geschaltet ist und so auch die internen pullups an 
sind also irrelevant. Wenn die Module noch beim POR wären, wenn ich sie 
anspreche, dann würde ich doch trotzdem n anständiges statuswort lesen 
können oder? Aber ich geb dem Modul fast 1,5Sekunden zeit, das sollte 
doch wohl reichen. Die SPI geschwindigkeit hab ich mit CLK/128 bis ClK/1 
probiert, aber keine änderung, muss die geschwindigkeit veilleicht noch 
höher sein???

von Grobi (Gast)


Lesenswert?

hmm ok nach einigem rumfuschen im code scheint sich  doch was am SPI zu 
regen, aber nur wenn ich die Statusregisterabfrage mache, aber das kann 
auch echt datenschrott sein, da ab und an ein, zwei bits wackeln, bei 
allen anderen Kommandos gibts wieder nur Nullen zurück. Habe irgendwo in 
den Trilliarden Tutorials und Foren und sonstigen Beiträgen die sich mit 
dem Thema beschäftigen was gsehen von nem 10K pullup an MISO wegen 
irgendwelcher Probleme mit dem Bus, werde das morgen mal ausprobieren, 
vielelicht klappts ja dann.

von Grobi (Gast)


Lesenswert?

also der pullup am MISO brachte auch keine großartige Veränderung, 
Kommandos wie enable FIFO, AFC settings usw werden mit einem FF FF 
beantwortet, das Fifo modus setzen mit 7F FF danach lesen des 
Statusregisters = FF E1. Beim senden schalte ich TX on und lese nochmal 
das Statusregister bevor die daten gesendet werden. Dabei erhalte ich 
beim ersten mal 00 A1, beim nächsten senden  00 80 und danach nur noch 
00 81. Kann das in irgendeiner art und weise auch nur ansatzweise 
stimmen? Komme mit dem Statusregister leider nich so ganz zurecht aber 
denke mal die werte die ich da zurück bekommen sind entweder schrott 
oder es funktioniert mal überhaupt garnix! Also nen verdrahtungsfehler 
schließe ich nach einer trilliarde mal leitungen prüfen echt aus, auch 
das die Module schrott sind weil sie verhalten sich genau gleich, auch 
das SPI des µc funktiniert (mit anderer anwendung getestet) kann 
eigentlich dann doch nur noch n timing problem sein, oder falsche 
einstellunge beim SPI, (habe gelesen SDO sollte valid sein bevor SCK, 
aber einstellungen sind gleich wie in den zig tausenden sourcecodes die 
für so ein Projekt mit dem RFM12 und dem Mega8 herumgeistern) Hab 
langsam keinen Plan mehr wie ich das irgendwie zum laufen bringen 
könnte.

von Malte Z. (saeckereier)


Lesenswert?

Wie kommst du denn auf die Idee, dass die Kommandos irgendwas 
zurückgeben sollen? Was soll das deiner Meinung nach sein? Der 
EmpfangsFIFO gibt nur ullen zurück wenn leer, der Rest der Kommandos 
sind Kommandos ohne Antwort. Nur die Statusabfrage hat einen 
Rückgabewert und da kann durchaus vieles 0 sein wenn du mal ins 
Datenblatt guckst..

Sicherste Methode bisweilen war, das externe Taktsignal auf 12 MHz zu 
setzen und mit nem Oszi nachmessen: 1MHz : Kommunikation klappt nicht 
weil Standard, 12MHz: SPI Komm. klappt, weitermachen.

von Grobi (Gast)


Lesenswert?

Oh moment, ich dachte jedes kommando ausser das statusregister lesen 
würde praktisch als bestätigung sich selbst wieder zurückliefern also 
wenn mann 0xC000 hin sendet käme auch 0xC000 zurück....hmmm dann besorg 
ich mir mal n oszi...

von Grobi (Gast)


Lesenswert?

aber irgendwie ne bestätigung das auch wirklich was rausgesendet wurde 
gibts nicht oder?

von Malte Z. (saeckereier)


Lesenswert?

Also ohne Oszi wird das schwer. Alternativ kannst du auch um 
festzustellen ob etwas gesendet wird mit einem Scanner auf der 
Zielfrequenz lauschen. (Dann aber periodisch  mindestens Sequenzen von 
so 200 Zeichen senden, damit man auch was hört)

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.