Hallo Leute :) nach tagelanger Suche in (unter anderem) eurem Forum bin ich leider nicht fündig geworden und hoffe ihr könnt mir helfen. Grundsätzlich möchte ich über zwei RFM12b-Funnkmodule (leider, da RFM12 nicht mehr verfügbar) Daten übertragen, wobei einer an einem MEGA 2560 und einer am Pro Mini angeschlossen ist. Die Funkstrecke hat davor an zwei Nanos einwandfrei funktioniert. Am Mega sind die Anschlüsse: RFM - Mega IRQ = 2 SS = 53 MOSI = S1 MISO = 50 SCK = 52 Versorgung über 3,3V Pin, OUTPUTs des Mega über Spannungsteiler auf 3,3V angeschlossen. und am Pro Mini (3,3V): RFM - Promini IRQ = 2 SS = 10 MOSI = 11 MISO = 12 SCK = 13 Versorguung des Pro mini mit 3,3V, also RFM an VCC. Anschlüsse sind direkt angeschlossen. Nun verhält sich der Umbau folgendermaßen: Auf beiden Arduinos ist eine kleine (mit Jeelib) geschriebene Senderoutine, die einfach nur Werte sendet, die mit den Nanos tadellos funktioniert hat. Auf der MEGA-Seite blinkt fröhlich die TX-LED, deswegen vermute ich hier keinen Fehler. Auf der Pro Mini seite hingegen blinkt die Led (verbunden mit Pin 13) nach Reset nur kurz auf und danach bis zum erneute drücken der Resettaste nicht mehr. (damit meine ich nicht das normale aufleuchten beim Drücken des Reset sondern ein kurzes Aufleuchten für Signale des CLK). Auch beim Test mit der RF_Demo (https://github.com/jcw/jeelib/tree/master/examples/RF12/RF12demo) bringt keine Übertragung zustande, auffällig ist aber dass der Promini nur einmal(!) Daten schickt und danach die SPI scheinbar tot ist. Diese Daten kommen leider nicht am Mega an aber bevor ich das Problem angehe möchte ich erstmal dass er auch dauerhaft senden kann. Meine Überlegungen dazu: Der Pro läuft nur mit 8Mhz, der Mega und Nano mit 16Mhz. Kann das problematisch sein? Vermutlich kümmert sich Jeelib schon darum? Und eine Zusatzfrage: Brauchen die Inputs einen Mindeststrom? Der Spannungsteiler besteht aus 22k/39k. Ich hoffe das war jetzt ausführlich genug, um sich ein Bild davon machen zu können. Vielen Dank, Grüße Lunor
Lu N. schrieb: > Versorgung über 3,3V Pin, OUTPUTs des Mega über Spannungsteiler auf 3,3V > angeschlossen. Wie, 3V3 und Spannungsteiler ? > Meine Überlegungen dazu: Der Pro läuft nur mit 8Mhz, der Mega und Nano > mit 16Mhz. Kann das problematisch sein? Vermutlich kümmert sich Jeelib > schon darum? Absolut uninteressant bei SPI. SPI-Modes und andere Einstellungen (Master, CPHA, MSB/LSB) sind wichtig, Takt interessiert nicht.
:
Bearbeitet durch User
Hi Mark, Sorry, schlecht ausgedrückt. Der Mega liefert 5V und die RFM-Inputs sind über Spannungsteiler an 5V angeschlossen, sodas 3,3V an ihnen anliegen. Der RFM VCC liegt am 3,3V Pin. Hm, wenn der Takt uninteressant ist, bin ich echt ratlos. Wenn ich probehalber den Nano anschließe (leider ohne den RFM) blinkt die Pin-13-Led auch zyklisch, beim Pro mini wieder nur einmal.
Lu N. schrieb: > Hm, wenn der Takt uninteressant ist, bin ich echt ratlos. > Wenn ich probehalber den Nano anschließe (leider ohne den RFM) blinkt > die Pin-13-Led auch zyklisch, beim Pro mini wieder nur einmal. Probiere mal mit richtigen Pin und Port Namen, anstatt mit Nummern, sind wahrscheinlich verschieden bei Nano und ProMini.
Also im Programm tauchen die Nummern bzw. Portnamen nicht auf, die sind alle in der Jeelib hinterlegt. Der einzige Unterschied im Ansteuern ist, dass der Pro mini nicht direkt an USB angeschlossen werden kann, sondern einen Umsetzer braucht. Um diese Module handelt es sich: https://www.amazon.de/gp/product/B01MXYI9KW/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1 Der CP2102 hat einen 3.3V Pin, der die Versorgung des Pro mini darstellt.
Ich kenne deine Module nicht! Evtl ist ein Pullup an CS nötig. Auch der Int, darf einen Pullup haben. Empfehlung:
1 | setup() |
2 | {
|
3 | digitWrite(SS,HIGH); // nur nötig, wenn der Pin auch genutzt wird |
4 | pinMode(SS,OUTPUT); // Slave Mode verhindern |
5 | |
6 | // dein anderer setup Kram
|
7 | |
8 | }
|
Die Reihenfolge ist so beabsichtigt. Der Zweck, SPI schaltet nicht automatisch in den Slave Mode.
hi Fanboy, Danke für deine Antwort. Der CP2102 ist ein USB zu TTL converter, dieser ist nur nötig da der Pro mini keinen USB-Anschluss besitzt. Dieser ist nur zum Programmieren nötig. Ich habe deine Änderung eingefügt, leider ohne Verbesserung :(
Hi nochmal, beim genaueren Überprüfen der LED ist mir aufgefallen dass die blinkende LED nur die Kommunikation mit dem PC ist (also serial.prints) und nicht der SCL. Beim Überprüfen der SPI-Leitungen des MEGA mit einem Oszi ist leider keinerlei Regung zu sehen. SCL ist permanent auf low, SS ist permanent auf high, MOSI high und MISO auf low. Die CLK-Leitung des RFM12b liefert den Clock, aber dieser Pin wird ja nicht verwendet. Ich habe sicherheitshalber alle Pins des MEGA überprüft ob z.b. der SCL-Takt an einem anderen Pin anliegt, aber auch hier -> Fehlanzeige. Da der RFM den Clock an CLK liefert, nehme ich an der Baustein ist nicht defekt. Aber was kann der Grund sein dass die SPI keinen Mucks von sich gibt?
:
Bearbeitet durch User
Wenn der SS-Pin auf High ist, wird die SPI als Slave nicht funktionieren. Als Master nur, wenn der SS-Pin vor Initialisierung der SPI auf Output geschaltet wird. Kannst du das Stück für Stück testen, also zuerst nur den einen Nano durch den Pro Mini ersetzen, dann wieder zurück bauen und den anderen Nano durch den Mega ersetzen? Unterstützt jeelib den Mega und den Pro Mini? Hast du jeelib die richtigen Controller gesagt? Ich vermute wie Marc, dass es einen Unterschied in der Pinbelegung gibt, den entweder du oder jeelib nicht richtig umsetzt. MfG, Arno
Hallo Arno :) Ich werden den einen RFM nochmal auf den Nano bauen. Nervige Arbeit aber wohl notwendig. Trotzdem habe ich vorher wie du geraten hast den SS als Output geschalten. Jetzt kann ich direkt am MEGA kurze Low-Impulse (oszi) messen, sobald ich aber einmal direkt am RFM gemessen habe (wo keine Impulse sichtbar waren) kann ich auch direkt am MEGA keine mehr messen. Dazwischen ist der Spannungsteiler mit 22k/39k. Erst nach einem Reset sind die Impulse wieder direkt messbar. Bzgl Unterstützung der Boards, für den MEGA gibt es online viele Foren in denen das prinzipiell funktioniert. Dasselbe gilt für den Pro. Nachtrag: Habe jetz alle Pins, die vom Master aus geschaltet werden auf OUTPUTS gestellt. Ich kann jetz auch kurze SCK-Clock-high-Pegel erkennen. Allerdings das gleiche Spiel wie bei SS. Einmal am RFM gemessen, sind die Signale futsch :(
:
Bearbeitet durch User
Lu N. schrieb: > Dazwischen ist der Spannungsteiler mit 22k/39k. Erst nach einem Reset > sind die Impulse wieder direkt messbar. Für Datenleitungen vielleicht gut, aber für die Steuerleitungen würde ich kleinere Werte nehmen. Obwohl, das sollte nicht dein Problem sein. Messe mal mit LA oder Oszi MEGA alleine (als MASTER) - irgendetwas senden, Pegel überprüfen. Da es ein SPI-Master ist, ist es egal ob auf der anderen Seite jemand zuhört. Wenn es klappt, wie von Arno vorgeschlagen, uC austauschen.
> Messe mal mit LA oder Oszi MEGA alleine (als MASTER) - irgendetwas > senden, Pegel überprüfen. Da es ein SPI-Master ist, ist es egal ob > auf der anderen Seite jemand zuhört. Ich messe aktuell nur am MEGA, dieser ist testweise als Sender programmiert. Die Signale sehen jetzt gut aus, an SS,SCK,MOSI und MISO sind jetzt Impulse erkennbar. Leider "verschwinden" sie wieder sobald mal einmal die Pins am RFM mit der Messspitze berührt. ..Also, da der MISO auch Impulse zeigt, kann ich davon ausgehen dass der RFM kommuniziert, auch wenn ich es scheinbar nicht messen kann, oder? Also kümmere ich mich jetzt um die Pro Mini Seite.
:
Bearbeitet durch User
Lu N. schrieb: > Impulse erkennbar. Leider "verschwinden" sie wieder sobald mal einmal > die Pins am RFM mit der Messspitze berührt. Nur zur Sicherheit : GND ist auch verbunden ?
am RFM12b? ja aber nur einer. Aber da die beiden intern verbunden sind sollte das reichen.
Habe nun einen auf den Nano zurückgebaut, dieser verhält sich genauso wie vorher der pro mini....langsam bin ich am verzweifeln.
Lu N. schrieb: > langsam bin ich am verzweifeln. Das ist Energieverplemperung! Du machst irgendwas falsch. Und du zeigst uns die fehlerhafte Stelle nicht. Vermutlich, weil du da den Fehler nie suchen würdest. Du ahnst schon, was ich sagen möchte, oder?
hallo fanboy, nein, um ehrlich zu sein ahne ich es nicht. aber das klingt so als wird es mir nicht gefallen lass mich raten, ich soll alles wieder aus- und einlöten? :)
Gut, dann versuche ich es etwas klarer zu formulieren. Du hältst den Fehler vor uns geheim. Nicht absichtlich, oder so... Scheinbar hältst du sogar den Fehler vor dir selber geheim... (denn sonst würdest du ja nicht fragen) Und löten? Naja, weiß nicht.... Woher auch...? ------- Die Bausteine, habe ich natürlich auch nicht da, so dass das mit der Gegenprobe leider auch schwer wird, obwohl Arduino und SPI mir gerade nicht so fremd sind.
Ja das stimmt,ich weiss nicht so recht wo das Problem liegt. Natürlich würde ich euch nichts mit Absicht vorenthalten ;) Vielleicht ist ja ein Modul einfach defekt...habe aktuell leider nur zwei davon.
So leute, damit der Topic hier geschlossen werden kann: Es lag wohl an (min) einem Funkmodul. Ich habe heute zwei neue geliefert bekommen und alles funktioniert tadellos. Danke für eure Mühe :) Lunor
Hi Besten Dank für die Rückmeldung - kommen viel zu selten. MfG
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.