Hallo, ich bastel zurzeit mit dem RFM12 rum. Ich denke auch, dass er korrekt angeschlossen ist. uC <----> RFM12 SDI <----- SDO SDO -----> SDI SCK -----> SCK nSel wird vor jeder Übertragung auf low gezogen. nIRQ ist angeschlossen, verwende ich aber nicht. nFFS ist auf +5V Ich kann mit dem Oszi sehen, dass fröhlich Daten übertragen werden, aber vom RFM12 kommt nix (also RFM12 SDO Pin). Ich versuche zurzeit 0x80 & 0x00 zu senden. Kann mir einer von Euch einen Tipp geben, was ich dem Ding senden muss damit ich irgendetwas zurück kriege? Daten habe ich auf Idle zu Activ und andersrum probiert.... leider kein Erfolg. Danke Euch schonmal... wird nämlich langsam nervig :-(
Also an CLK kann ich ein Signal messen, was für mich soviel heisst, dass das Ding grundsätzlich "schwingt". Ich müsste jetzt nur noch irgendwas zu senden haben, bei dem irgendwas zurück kommt.
wenn du in der glücklichen lage bist, ein oszi zu besitzen, dann kannst du zb auch einfach mal den clock des rfm12 von 1MHZ auf 10MHZ umschalten, und dir an clk ausgeben lassen. da siehst du ja dann direkt, ob du mit dem rfm reden kannst. ? tipp: http://www.mikrocontroller.net/articles/AVR_RFM12 unter treiber sind 2 funktionierende sourcen. hab ich beide schon benutzt, gehen beide. da kannst du dir vorallem mal die init ansehen, da steht auch wie du den clock des RFM umschalten/ausgeben kannst. -> auch hier beschrieben : http://www.mikrocontroller.net/articles/RFM12
Hallo, als erstes nach Einschalten Status auslesen (Command 0x0000) muß gesetztes Bit POR ergeben. Ansonsten z.B. externen Clock umschalte und Frequenz am Taktausgang messen. nFFS gehört über 10k PullUp an 5V, das ist in bestimmten Betriebsarten ein Ausgang. Wenn es nicht klappt, einfach mal per Software-SPI ansteuern, da hat man Clock und Daten zeitlich erstmal selbst in der Hand. Gruß aus Berlin Michael
Hallo nochmal, die Tipps sind super. Hab mir eine Soft-Routine zusammengebastelt und die Frequeznz hochgesetzt. Hat super geklappt. Hab jetzt 10MHz. Aber ich kann immernoch nicht den Status auslesen. Es kommt aber auch garnix vom aus dem SDO am RFM12. Nochmal zum Verständnis: Wenn ich da ein 0x0000 reinwerfe, dann sollte doch zeitgleich was am SDO wieder rauskommen oder?
Hallo, Jens schrieb: > Nochmal zum Verständnis: Wenn ich da ein 0x0000 reinwerfe, dann sollte > doch zeitgleich was am SDO wieder rauskommen oder? Ja. Direkt nach dem PowerOn ist POR auf 1. Nur dann! Es wird durch Lesen des Status zurückgesetzt. Die anderen Statusbits müßte ich jetzt nachschauen, sind ja abhängig von den aktuellen Einstllungen des RFM12. Achte darauf, wann Du SDO einliest. Bei Soft-SPI direkt nachdem Du SCK von L auf H geschaltet hast. Intern wechselt der RMF zum nächsten Bit bei der H/L Flanke. Gruß aus berlin Michael
Langsam werde ich bröselig... Ich hab ein ganz normales RFM12 und betreibe es mit 5V aus dem usb Adapter meines iphone (macht eigentlich saubere 5V). Kann das noch ein Problem mit der Spannung sein? Ich habe keine besonderen Kondensatoren oder ähnliches verwendet. Reinschreiben scheint ja zu klappen, nur raus kommt nix, jedenfalls nicht per SPI, nicht ein winziges Zucken :-(
Du hast aber daran gedacht, dass du beim lesen noch ein dummy Byte hinterher schicken musst? Sonst wird ja nichts rausgeschoben!
Ich hab alle möglichen Sachen in einer Schleife reingeschickt... immer 16Bit... auf dem SDO Pin kam leider garnix. Frage mich langsam, ob man den einzeln irgendwie kaputt machen kann...
Hier der Code zum senden. Dazu muss man wissen, dass ich derzeit nur mit dem Oszi auf den SDO gucke. Der ist zusammengebastelt aus dem Datenblatt und ein paar anderen Sourcen. Ist also eher Testcode. Angehangen ist ein Zwischenstand, ich hab schon 1000 andere Sachen probiert. Aber auch hier wird nicht ein Zucken auf dem SDO ausgelöst.
Ergänzung: Die Bezeichnungen für SDI und SDO sind verwirrend. Der Mist ist auch dem Hope Datenblatt. Also SDO im Code bezieht sich auf SDO am RFM12... ich hab das so übernommen, obwohl es gruselig is.
Hallo, ich habe nur kurz rübergeschaut, irgendwie sehe ich da nichts, was sinnvoll sendet/empfängt? Ich habe hier jetzt nur Teile eines alten Projekts zur Hand, ich habe sie mal rangehangen. Gelesen werden die Statusbits da garnicht, habe ich dort nicht gebraucht. Vielleicht hilft es... Gruß aus Berlin Michael
Hallo, jetzt habe ich endlich ein Lebenzeichen, wenn ich diesen ganzen kram reinschicke: WriteCMD(0x80D7); // EL,EF,12.0pF WriteCMD(0x8208); // !er,!ebb,!ET,ES,EX,!eb,!ew,!DC (in Bereitschaft gehen) WriteCMD(0xC4E7); // @PWR,autotune: -10kHz...+7,5kHz,!st,!fi,OE,EN WriteCMD(0xA640); // A140=434MHz WriteCMD(0xC647); // 4,8kbps WriteCMD(0xC2AC); // Data Filter WriteCMD(0x94A0); // VDI,FAST,134kHz,0dBm,-103dBm WriteCMD(0xCA81); // FIFO8,SYNC,!ff,DR WriteCMD(0x9850); // !mp,9810=30kHz,MAX OUT WriteCMD(0xE000); // NOT USE WriteCMD(0xC800); // NOT USE WriteCMD(0xC000); // kein WDT, kein Batteriewächter krieg ich bei diesem Befehl: WriteCMD(0x0000); genau 1 Bit bzw. einen Impuls zurück. Ich konnte den auf meinen analogen Oszi einfach nich sehen... Hab es jetzt mal in der Schule mit einen Digital-Oszi probiert. Ist das wirklich so, dass der ansonsten nix zurück gibt? Falls das so richtig ist, hab ich den zumindestens halb am laufen :-)
Ich glaube, dass das so richtig ist. Soweit ich weiss, kriegst Du nur Antworten, wenn Du z.B. den FIFO ausliest.
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.