Forum: Mikrocontroller und Digitale Elektronik SD Karte und ADC parallel an AVR


von Arne B. (arneb123)


Lesenswert?

Hallo,
ich habe folgendes Problem:
In einem Projekt möchte ich mit einem AT90CAN AVR verschiedene Messwerte 
aufnehmen und ca. im 10 Sek Takt auf einer SD Karte als Textdatei 
ablegen. Platine ist fertig, läuft so weit auch alles sehr gut. Problem 
ist nur, dass ich die SD-Karte mit einem ADC (MCP3301) parallel an den 
SPI-Bus gehängt habe. Natürlich mit einzelnen Chipselect-Leitungen.
Jedoch wird die SD-Karte scheinbar auch bei gesetzter CS-Leitung beim 
auslesen des AD-Wandlers gestört. Daher muss ich die SD aktuell vor 
jedem Schreibzugriff neu initialisieren, die Log-Datei öffnen und ans 
Ende spulen. Das kostet sehr viel Zeit und ist ja irgendwie nicht Sinn 
der Sache.

Hatte das Problem vielleicht schonmal jemand und/oder weiß ob sich das 
lösen lässt?

Als SD Library benutze ich die hier 
http://www.mikrocontroller.net/articles/AVR_FAT32 -> Vielen Dank an 
dieser Stelle an Daniel R. die Bibliothek funktioniert ansonsten super!

von peter-pan (Gast)


Lesenswert?

Schaltplan? Pullups oder Pulldowns an den jeweiligen Chipselects?

Arne B. schrieb:
> Jedoch wird die SD-Karte scheinbar auch bei gesetzter CS-Leitung beim
> auslesen des AD-Wandlers gestört.

Das "scheinbar" gilt es zu verifizieren...

von Wusel D. (stefanfrings_de)


Lesenswert?

Das ist mir auch mal passiert, ebenfalls in der Kombination SD-Karte mit 
ADC.  Nur war bei mir auch der ADC gestört, da die SD Karte den 
Chip-Select ignoriert hat.

Benutze besser separate Pins für die SD Karte.

von Falk B. (falk)


Lesenswert?

@ Arne B. (arneb123)

>Jedoch wird die SD-Karte scheinbar auch bei gesetzter CS-Leitung beim
>auslesen des AD-Wandlers gestört. Daher muss ich die SD aktuell vor
>jedem Schreibzugriff neu initialisieren, die Log-Datei öffnen und ans
>Ende spulen.

Da sollte bzw. muss man erstmal rausfinden, ob die Funktionen der 
SD-Karte das CS inaktiv schalten, wenn die beendet werden. Vielleicht 
bleibt ja CS von der SD-Karte aktiv, weil angenommen wird, dass diese 
exclusiv am SPI Bus hängt. Das wäre aber schon ein grober Fehler.

>Hatte das Problem vielleicht schonmal jemand und/oder weiß ob sich das
>lösen lässt?

Es kann auch ein Hardwareproblem sein, dass es da Übersprechen gibt. 
Vielleicht sind die Ausgänge der Chip-Selects nicht als Ausgang 
definiert und die Software schaltet immer nur den internen Pull-Up ein?

Erstmal messen, mit einem Oszilloskop.

von Arne B. (arneb123)


Lesenswert?

Ok vielen dank für die Hinweise, dann muss ich da noch mal nachforschen. 
Aber ich denke es wird wohl darauf hinaus laufen, dass ich bei einer 
neuen Version der Platine einen Multiplexer für das SCK Signal einbauen 
muss.

von Falk B. (falk)


Lesenswert?

Das ist Kapitulation.

von Arne B. (arneb123)


Lesenswert?

Der Vollständigkeit halber will ich noch mal kurz erwähnen, dass jetzt 
doch alles Funktioniert wie geplant. Hab den Code etwas aufgeräumt und 
siehe da es funktioniert :-). Ich hatte einige Port Einstellungen erst 
nach der Initialisierung der SD-Karte gemacht und das mochte sie wohl 
nicht, obwohl die gar nichts damit zu tun hatten. Nachdem ich das 
sortiert habe laufen jetzt die SD-Karte und der ADC wunderbar zusammen 
am selben SPI-Port.

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.