SPI Probleme bei Wechsel von Arduino Nano auf Pro mini

OP #4944617
Lesenswert?

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
(Firma: Vescomp) #4944673
Lesenswert?

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.
OP #4944682
Lesenswert?

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.
OP #4944725
Lesenswert?

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.
Gast #4944727
Lesenswert?

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.
OP #4945744
Lesenswert?

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?
Gast #4945768
Lesenswert?

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
OP #4945806
Lesenswert?

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 :(
(Firma: Vescomp) #4945816
Lesenswert?

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.
OP #4945827
Lesenswert?

>  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.
Gast #4947701
Lesenswert?

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.
Gast #4947789
Lesenswert?

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.
Gast #4964432
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren