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!
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...
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.
@ 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.