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