Hallo zusammen,
ich habe da ein Problem mit SPI und SD-Card.
In meinem Sketch lese ich Daten von der SD-Card und sende dann Sollwerte an (z.Zt.) einen externen DA-Wandler.
Ist der Datentransfer an SPI beendet, schließe ich mit 'SPI.end()' wieder ab.
Soweit funktioniert das ganze auch, die Werte werden von der SD-Card gelesen, der DA-Wandler gibt korrekte Werte aus und der AD-Wandler liefert auch wieder korrekte Werte zurück.
Nun sollten im Anschluss die nächsten Daten von SD-Card gelesen werden, aber dann lässt sich die Karte nicht mehr initialisieren!
Erneutes initialisieren der Karte ist dann erst nach einem Reset möglich!
Offensichtlich kommt es hier zu einem Konflikt auf der SPI-Schnittstelle.
Ach ja:
Ich muss für meine externen SPI-Bausteile die Datenflussrichtung umkehren (MSBFIRST), das zurücksetzen auf 'LSBFIRST' zeit aber keine Änderung des Verhaltens.
Des weiteren muss ich die Taktfrequenz von SPI auf 1 MHz reduzieren, da mein AD-Wandler max. 1,6 MHz kann.
Für dieses Projekt verwende ich den ARDUINO-MEGA.
Gibt es eine Möglichkeit, die Zustände der relevanten Register des Prozessors vor Aufruf der SPI-Kommunikation zu sichern und dann vor dem erneuten Aufruf der SD-Card wiederherzustellen?
Oder ist es möglich, per Software eine SPI-Schnittstelle zu emulieren?
Bei der SPI-Kommunikation kann ich durchaus Abstriche an die Geschwindigkeit machen, das ist nicht zeitkritisch.
N.B.: SPI muss ich deswegen verwenden, da ich wegen unterschiedlicher Potenziale eine galvanische Trennung benötige, und das geht am einfachsten mit SPI und Induktivkopplern.
Vielen Dank für Eure Hilfe!
Grüße
Martin