Hallo,
ich habe ein großes Problem. Ich habe einen MCP4921 als DAC für meinen Arduino Mega 2560. Dieser funktioniert alleine auch super. Wenn ich aber die SD Karte mit an den SPI schlisse und den DAC ebenfalls gibt es Probleme. Mit dem Oszi betrachtet sieht man deutlich, dass die Sende Protokolle sich unterscheiden
Habt ihr einen anderen DAC der ebenfalls so einfach ist wie dir MCP4921 zb. einen für I2C?
Hallo,
ich habe den MCP4716 schon mal eingesetzt, funktioniert über i2c problemlos, gibt es auch als MCP4726 als 12Bit Variante.
Wie sind deine Anforderungen an Geschwindigkeit? SPI ist da sicher schneller.
Gruß
Reinhard
Hallo Reinhard ,
vielen Dank für deine Antwort.
Gibt es für dieses IC auch eine Lib? Oder wie kann ich ihm sagen was es zu tun hat?
Geschwindigkeit ist recht langsam, ca. alle 60Sek wird der Wert Geändert.
nein, eine Library habe ich dafür nicht benutzt. Die Basisfunktion "Analog Wert einstellen" kann man sich aus dem Datenblatt herleiten.
Hier mal ein Beispielprogramm mit einem Sweep, aus dem die Programmierung ersichtlich ist.
Das gleiche Problem hatte ich auch.
Man muss 'nur' den Inhalt der SPI-Register sichern, dann die SPI-Kommunikation starten, nach Beendigung der SPI-Kommunikation das die SPI-Register wieder herstellen und schon funktioniert die SD-Card wieder:
saved_spcr = SPCR;
saved_spsr = SPSR;
Jetzt wird die SPI-Kommunikation gestartet
Ist die SPI-Kommunikation fertig, geht das ganze andersherum, d.h. die SPI-Register werden wieder auf den ursprünglichen Wert gesetzt:
SPCR = saved_spcr;
SPSR = saved_spsr;
Diesen Trick hat mir ein freundlicher Kollege hier aus dem Forum verraten.
Ich brauch diese Funktion bzw. den DAC in vielen Unterprogrammen.
Kann man den nicht die SPI Konfig wie beschrieben speichern und dann den SPI neu initialisieren?
Ob die eingetragenen delays überhaupt erforderlich sind, habe ich noch nicht ausprobiert, die habe ich nur eingebaut, damit ich an den mit Leuchtdioden bestückten Chip-Select-Ausgängen sehen kann, ob die reagieren.
Ich gebe hier eine Spannung mit einem MCP4921 aus und lese sie über einen MCP3201 wieder zurück (zu Testzwecken).
Nach dem schliessen der SPI-Kommunikation und dem wiederherstellen der SPI-Register funktioniert dann auch wieder der SD-Card-Zugriff.
ja ich habe getrennte SS PINS in verwerndung.
Habe mir das ganze auch mit dem Oszi angeschaut und in der Theorie Funkt es auch.
Nur das sobald die SD Karte mit in dem programm ist, werden die Daten die an den DAC geschickt werden quasi invertiert.
Das ganze Läuft an einem Mega2560 evl hilft diese Info weiter