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...
aber irgendwie ne bestätigung das auch wirklich was rausgesendet wurde gibts nicht oder?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.