Forum: Mikrocontroller und Digitale Elektronik SPI Signale schalten / 2 Master (Arduino Mega2560)


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Keno S. (keno73)


Lesenswert?

Hallo,

ich arbeite momentan an einem Projekt, bei dem ich mich mit einem 
Arduino in eine Kommunikation einmischen moechte. Es geht um einen 
Mikrocontroller, welcher ein Display über SPI ansteuert. Ich kann ueber 
den Arduino auf die Leitungen zugreifen und meine SPI Signale senden, 
nur wenn ich dann die Original-Funktionen nutzen will, werden die, 
solange der Arduino angeschlossen ist, gestört und funktionieren nicht 
mehr. Mit einem Relais könnte ich das ganze leicht beheben, indem ich 
dieses zwischen die Datenleitungen des Arduinos klemme. Da ich aber 
keine Relais nutzen will, weiß ich gerade nicht weiter. Gibt es 
Möglichkeiten Signale wie MOSI oder CLK zu schalten? Würde ein Analog 
Switcher abhilfe schaffen? Vielleicht weiß ja jemand hier weiter, ich 
freue mich über jede Hilfe!

Lg
Keno

von Horst G. (horst_g532)


Lesenswert?

Muss kein Analogscbalter sein – da du ohnehin digital unterwegs bist, 
nimm doch einfach Logik Bausteine, z. B. And-Gatter oder Bustreiber mit 
Tristate-Funktionalität, sofern benötigt.

Male bitte mal einen Schaltplan dessen, was du genau vor hast, und 
welche Leitungen du wie schalten willst.

von Peter D. (peda)


Lesenswert?

Keno S. schrieb:
> nur wenn ich dann die Original-Funktionen nutzen will, werden die,
> solange der Arduino angeschlossen ist, gestört und funktionieren nicht
> mehr.

Dann machst Du was falsch.
Der Arduino muß einfach nur seine SPI-Pins auf Eingang schalten und 
natürlich weiterhin versorgt werden.

von Keno S. (keno73)


Lesenswert?

Peter D. schrieb:
> Keno S. schrieb:
>> nur wenn ich dann die Original-Funktionen nutzen will, werden die,
>> solange der Arduino angeschlossen ist, gestört und funktionieren nicht
>> mehr.
>
> Dann machst Du was falsch.
> Der Arduino muß einfach nur seine SPI-Pins auf Eingang schalten und
> natürlich weiterhin versorgt werden.

Wie meinst du das? Ich habe mir das Clk Signal per Oszilloskop 
angesehen, wobei man sieht, dass das Signal anstelle von 5-0V nur noch 
von 5-4,8V geht (Zu beachten ist, dass die Ich SPI_Mode_3 nutze, also 
Clk ist standard High). Gehe also davon aus, dass der Arduino durch 
seinen Clk High Output das Clk Signal des anderen Microcontrollers „hoch 
zieht“. Die SPI Pins aus Eingang setzen verstehe ich nicht ganz, wie ist 
das realisierbar? Schon mal Danke für die Bemühungen!

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Keno S. schrieb:
> Die SPI Pins aus Eingang setzen verstehe ich nicht ganz

Was ist daran nicht zu verstehen?
Pins setzt man beim AVR auf Eingang, indem man die alternative Funktion 
(SPI) disabled und das entsprechende Bit im DDRx-Register auf 0 setzt.
Also genau so, wie es im Datenblatt steht.

von Keno S. (keno73)


Angehängte Dateien:

Lesenswert?

Horst G. schrieb:
> Muss kein Analogscbalter sein – da du ohnehin digital unterwegs bist,
> nimm doch einfach Logik Bausteine, z. B. And-Gatter oder Bustreiber mit
> Tristate-Funktionalität, sofern benötigt.
>
> Male bitte mal einen Schaltplan dessen, was du genau vor hast, und
> welche Leitungen du wie schalten willst.

Die Mosi und Clk Leitung des Mega's müssen geschaltet werden, da der 
Mega sonst die Signale des anderen Mikrocontrollers stört. (Ich denke 
mal durch einen inneren Pullup Widerstand?) Das ist auf jeden Fall mein 
Ansatz. Schaltplan ist im Anhang, hier auch schon mal vielen Dank für 
die Bemühungen!

von Keno S. (keno73)


Lesenswert?

Peter D. schrieb:
> Keno S. schrieb:
>> Die SPI Pins aus Eingang setzen verstehe ich nicht ganz
>
> Was ist daran nicht zu verstehen?
> Pins setzt man beim AVR auf Eingang, indem man die alternative Funktion
> (SPI) disabled und das entsprechende Bit im DDRx-Register auf 0 setzt.
> Also genau so, wie es im Datenblatt steht.

Okay, also würde ich dann die SPI Kommunikation beenden, danach die SPI 
Pins als Eingang setzen und wenn ich sie wieder benötige, die Pins 
wieder als Ausgang definieren und die SPI Kommunikation wieder starten?

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
Noch kein Account? Hier anmelden.