Forum: Mikrocontroller und Digitale Elektronik SPI Probleme bei Wechsel von Arduino Nano auf Pro mini


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lu N. (lunor)


Bewertung
0 lesenswert
nicht 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

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Lu N. (lunor)


Bewertung
0 lesenswert
nicht 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.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Lu N. (lunor)


Bewertung
0 lesenswert
nicht 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.

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Lu N. (lunor)


Bewertung
0 lesenswert
nicht lesenswert
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 :(

von Lu N. (lunor)


Bewertung
0 lesenswert
nicht 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?

: Bearbeitet durch User
von Arno (Gast)


Bewertung
0 lesenswert
nicht 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

von Lu N. (lunor)


Bewertung
0 lesenswert
nicht 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 :(

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht 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.

von Lu N. (lunor)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
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 ?

von Lu N. (lunor)


Bewertung
0 lesenswert
nicht lesenswert
am RFM12b? ja aber nur einer. Aber da die beiden intern verbunden sind 
sollte das reichen.

von Lu N. (lunor)


Bewertung
0 lesenswert
nicht lesenswert
Habe nun einen auf den Nano zurückgebaut, dieser verhält sich genauso 
wie vorher der pro mini....langsam bin ich am verzweifeln.

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
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?

von Lu N. (lunor)


Bewertung
0 lesenswert
nicht lesenswert
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? :)

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Lunor (Gast)


Bewertung
0 lesenswert
nicht 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.

von Lu nor (Gast)


Bewertung
0 lesenswert
nicht 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

von Patrick J. (ho-bit-hun-ter)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Besten Dank für die Rückmeldung - kommen viel zu selten.

MfG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.