Forum: Mikrocontroller und Digitale Elektronik ATmega2560 SPI MISO Auswertung


von Max B. (max12)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich bin gerade an einem Projekt und benutze dafür das erste mal die SPI 
Verbindung. Da dieser Bereich für mich Neuland ist, wollte ich vorab ein 
paar Versuche machen.
Mein Problem ist das ich nicht hinbekomme die Daten der MISO Leitung, in 
den ATmega2560 als Master wieder einzulesen bzw. auszuwerten.



Der Aufbau sieht folgender Maßen aus.
Als Software für benutze ich das Atmel Studio 7.0.
Den ATmega2560 habe ich auf einem Entwicklungsboard und möchte mit 
diesem als Master über MOSI Daten senden, über MISO Daten empfangen und 
anschließend im Programm auswerten.


Für den Slave haben ich kurzerhand einen Arduino Nano genommen, auf den 
ich ein Programm mit der Arduino Software und Library geladen habe. 
Dieser hat nur die Funtkion die Daten auf der MOSI Leitung auszuwerten 
und falls diese entsprechend dem Programm korrekt sind (0xae), soll er 
andere Daten auf der MISO Leitung rausschicken (0xcc).


Auf dem Oszi Bild kann man erkennen das der ATmega2560 die Daten korrekt 
auf auf der  MOSI Leitung herausschiebt, dass der Arduino diese richtig 
interpretiert und anschließend die korrekte Daten auf der MISO Leitung 
herausschiebt.

Was für mich noch etwas verwunderlich ist, ist die niedrige Spannung der 
SS Leitung.





Da ich gelesen habe das die Daten des MISO nach dem Senden anschließend 
in das Datenregister (SPDR) des SPI geschrieben wird, habe ich versucht 
das Register auszuwerten. Das habe ich leider mit meinen Mitteln nicht 
hinbekommen.



Anbei ist das Programm, dass ich mir durch lesen der Datenblätter und 
von Webseiten zusammengetragen habe. (Als Text und Programm)


Kleine Notiz zum Programm
Wenn ich im Programm in der IF Bedinung:
"received" einsetze und vergleiche, leuchtet keine LED
"tData" einsetze und vergleiche, leuchet es im Sendemuster 0b00110011 
(0xae)

Bei einem Versucht mit "Switch Case" bei der Verwendung mit "received" 
oder "SPDR", war default immer aktiv.



Ich hoffe mir kann jemand helfen.
Ich wäre sehr froh darüber, da ich jetzt schon drei Tage an diesem 
Problem sitze.

von S. Landolt (Gast)


Lesenswert?

Mit .rar kann/will ich nichts anfangen, und bei .txt sehe ich, zumindest 
auf den ersten Blick, nichts mit SS == PB0.

"When configured as a Master, the SPI interface has no automatic control 
of the SS line. This must be handled by user software before 
communication can start."

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


Lesenswert?

Max B. schrieb:
> Ich hoffe mir kann jemand helfen.
> Ich wäre sehr froh darüber, da ich jetzt schon drei Tage an diesem
> Problem sitze.

 SCK und SS irgendwie miteinander verbunden ?

von Thorsten S. (thosch)


Lesenswert?

Höchstwahrscheinlich ist SS ein unkonfigurierter Pin (also Eingang) und 
fängt sich per kapazitivem Übersprechen das Signal von SCK ein.

Das Oszillogramm zeigt auch etwas Übersprechen von MOSI nach SS.

: Bearbeitet durch User
von Max B. (max12)


Angehängte Dateien:

Lesenswert?

Soweit ich mich noch erinnner kann habe ich "SS" schon mal als Ausgang 
konfiguriert "(1<<PB0)", aber keine Änderung gesehen. Ich werde das 
ganze aber nochmal ausprobierern und Rückmeldung geben.


Anbei ist jetzt die Main.cpp meines Programmes. Ich hoffe sie hilft zur 
Problemlösung.

von Max B. (max12)


Lesenswert?

Marc V. schrieb:
> Max B. schrieb:
>> Ich hoffe mir kann jemand helfen.
>> Ich wäre sehr froh darüber, da ich jetzt schon drei Tage an diesem
>> Problem sitze.
>
>  SCK und SS irgendwie miteinander verbunden ?


Hardwaretechnisch sind die Leitung nicht miteinander verbunden.
Alle verlaufen seperat voneinander.

von Max B. (max12)


Angehängte Dateien:

Lesenswert?

Ich hab das ganze noch mit der konifiguration des Pins versucht, aber 
ohne Erfolg.

Stattdessen hab ich festgestellt das wenn ich SPDR versuche auszulesen 
erhalte ich nur 255 also 0xFF und im SPDR steht weiterhin 0x00. (Siehe 
Bild)

Woran könnte das liegen?

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.