Go Down

Topic: Bits / Bytes von der SPI auslesen (Read 294 times) previous topic - next topic

agmue

Der "Test"-Master ist im Moment ein Arduino Mega.
Ist das Programm geheim? Sonst könnte sich der Helfende dies auf seinen Mega laden und schauen, ob es tut, was es soll.

Hast Du schon mal mit einem Logic Analyser geschaut?
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Tuki_38

@agmue

Nein, dieser ist nicht geheim. Zum Nachvollziehen bzw zum Überprüfen habe ich einen Oszi benutzt.
Der Master tut schon das was er tun soll :D

Den Mega werde ich aber nicht überschreiben können, da er in Benutzung ist. Ich hätte noch einen Arduino Nano zur Verfügung, den ich als Master benutzen könnte. (falls es darauf hinaus laufen sollte :D)

MicroBahner

#17
Sep 11, 2019, 02:32 pm Last Edit: Sep 11, 2019, 02:33 pm by MicroBahner
Wenn Du den Slave per Software realisieren willst, musst Du die Bits einzeln empfangen und in die Zielvariable 'reinschieben. Dabei musst Du natürlich das Clocksignal des Masters auswerten.
Evtl. könnte auch shiftIn eine Lösung sein. Letzendlich ist SPI ja nichts anders als eine 'Schieberegister' Schnittstelle.
Mit welcher Frequenz sendet dein Master?
Gruß, Franz-Peter

Tuki_38

@MicroBahner

Die Funktion shiftIn hört sich gar nicht mal so verkehrt an.

   -CS mit 1kHz
   -CLK mit 1MHz

agmue

Derzeit übertrage ich Text von einem Mega2560 zu einem UNO, wobei ich mir Unterstützung von Nick Gammon geholt habe.

Ob das auch für einen Due funktionieren würde, kann ich mangels Hardware leider nicht probieren. Also Mega als Master und Nano als Slave wäre eine Option zum Testen, wenn es mit dem Due nicht will.
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

MicroBahner

1Mhz Clock per Software ist schon sportlich. Mag mit dem Due gehen, aber da muss man beim Programmieren schon aufpassen und gegebenenfalls etwas optimieren. Die Arduino-Funktionen sind nicht immer die schnellsten  ;)
Gruß, Franz-Peter

Tuki_38

1Mhz Clock per Software ist schon sportlich. Mag mit dem Due gehen, aber da muss man beim Programmieren schon aufpassen und gegebenenfalls etwas optimieren.
Aus diesem Grund frage ich ja die Experten aus der Arduino Welt :D
Für niedrige Frequenzen habe ich das ja schon hinbekommen, jedoch ist war das nicht wirklich ein Aufwand (selbst für einen Anfänger wie mir).

Die Arduino-Funktionen sind nicht immer die schnellsten  ;)
Es kommt mir so vor, als wären die I/O's auch nicht die schnellsten :P




Das Beispiel von Nick Gammon werde ich ebenfalls mal ausprobieren, um den Due besser "verstehen" zu können.



Doc_Arduino

Guten Morgen,

mir ist das ehrlich gesagt zu viel Gerede um den heißen Brei. Ich bin raus.

Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

MicroBahner

Es kommt mir so vor, als wären die I/O's auch nicht die schnellsten :P
Genau die habe ich auch gemeint. digitalRead und digitalWrite dürften die Störenfriede bei einer schnellen Softwarelösung sein. Da wird man die HW-Register direkt ansprechen müssen. Habe ich beim Due aber noch nicht gemacht. Ist aber sicher auch kein Hexenwerk.

Das Beispiel von Nick Gammon werde ich ebenfalls mal ausprobieren, um den Due besser "verstehen" zu können.
Soweit ich das gesehen habe, werden da HW-Register des ATmega386 direkt angesprochen. Das dürfte auf dem Due nicht funktionieren.
Gruß, Franz-Peter

ArduFE

Hier hat das mal jemand als Antwort auf eine Frage im englischen Forum grob zusammengeschrieben:
https://github.com/manitou48/DUEZoo/blob/master/spislave.ino

Müsste man noch etwas ausbauen. Was die Register bedeuten, findet man im Datenblatt des Controllers.

Go Up