Hallo,
möchte meinen Atmel Atmega32L über ISP programmieren und eine sd Karte
als Speicher für die Datenaufzeichnung nutzen.
Nun suche ich schon seit längerem nach einer Lösung für ISP und SPI. Wie
kann ich verhindern, das beim Programmieren der ISP Adapter und die SD
Karte gleichzeituig auf die Ports zugreifen?
Die suche bei G*** und hier haben mir keine Antwort gegeben.
Bitte um fachliche Hinweise, Kritik oder Lösungsansätze oder auch evtl.
passsenden Thread.
Danke
Seit längerem? Jeder SPI-Salve hat ein Chip-Select. Ist das High so
ignoriert der Slave alles auf SPI. Und für CS kann jeder Pin verwendet
werden. Machste noch nen PullUp Ran damit beim Programmieren der Pin
sicher auch auf Hi geht. Und fertig. SPI ist ein BUS, d.h. es ist normal
wenn mehrere Slaves da dran hängen, also ist es ganz normal hier ein CS
für jeden Slave einzusetzen. Und das soll nirgends zum SPI stehen? Na
sicher doch.
gruß cyblord
ja, seit fast 4 Tagen, habe aber keine saubere Lösung gefunden. Aber du
hast mich auf eine gute Idee gebracht. Ich könnte einen Schalter
speziell fürs programmieren einbauen, der cs steuert. Eleganter wäre,
wenn der ISP Programmer angeschlossen wird und eine automatische
Abschaltung der SD Karte erfolgen würde.
Dazu ne gute Idee?
iGast schrieb:> ja, seit fast 4 Tagen, habe aber keine saubere Lösung gefunden. Aber du> hast mich auf eine gute Idee gebracht. Ich könnte einen Schalter> speziell fürs programmieren einbauen, der cs steuert. Eleganter wäre,> wenn der ISP Programmer angeschlossen wird und eine automatische> Abschaltung der SD Karte erfolgen würde.>> Dazu ne gute Idee?
Du willst Probleme lösen die du gar nicht hast. Erstmal stören sich
Programmer und SD-Karte einfach nicht, wenn du es so machst wie von mir
vorgeschlagen und dann kannst du wirklich einfach zum proggen kurz die
Karte aus dem Slot nehmen wenn du trotzdem Störungen hättest. Also wozu
irgendwas merkwürdiges Basteln? Ich beteilige mich da nicht dran.
gruß cyblord
Das ist richtig, jedoch handelt sich um ein Experimentierboard (erstes
mit SD-Karte), und da möchte ich öfters mal "updaten". Es wäre dann eben
eine für mich perfekte Lösung, wenn ich dies automatisieren könnte.
iGast schrieb:> ja, seit fast 4 Tagen, habe aber keine saubere Lösung gefunden. Aber du> hast mich auf eine gute Idee gebracht. Ich könnte einen Schalter> speziell fürs programmieren einbauen, der cs steuert. Eleganter wäre,> wenn der ISP Programmer angeschlossen wird und eine automatische> Abschaltung der SD Karte erfolgen würde.>> Dazu ne gute Idee?
Du machst dir Probleme wo keine sind.
cyblord ---- schrieb:> Du willst Probleme lösen die du gar nicht hast. Erstmal stören sich>> Programmer und SD-Karte einfach nicht, wenn du es so machst wie von mir>> vorgeschlagen und dann kannst du wirklich einfach zum proggen kurz die>> Karte aus dem Slot nehmen wenn du trotzdem Störungen hättest. Also wozu>> irgendwas merkwürdiges Basteln? Ich beteilige mich da nicht dran.>>>> gruß cyblord
Ich bin mir nicht sicher, ob diese sich nicht gegenseitig beeinflussen
können.
Trotzdem Danke für deinen Tipp. Der klingt schon logisch.
Das Programmiergerät ist beim nichts tun Tristate, also quasi nicht
vorhanden.
Wenn der ISP den AVR programmieren will, zieht der den Reset des AVR auf
GND.
Also bau dir was ein, was bei RESET auf GND den CS auf HIGH zieht.
In der Software dürfen Dateien dann eben nur nicht die ganze Zeit offen
sein.
iGast schrieb:> Also den cs von der sd Karte auf High? Bin leicht verwirrt. Oder liegt> das am Alter schon? :-)
Ja, weil CS=Hi=Slave ist deaktiviert. CS=low=Slave hört auf SPI. Mein
Gott wilst du ne Zeichnung?
iGast schrieb:> Hallo,>> möchte meinen Atmel Atmega32L über ISP programmieren und eine sd Karte> als Speicher für die Datenaufzeichnung nutzen.>> Nun suche ich schon seit längerem nach einer Lösung für ISP und SPI. Wie> kann ich verhindern, das beim Programmieren der ISP Adapter und die SD> Karte gleichzeituig auf die Ports zugreifen?
Beim Flashen per ISP ist !RESET auf Low, im Normalbetrieb auf High.
Heißt also: Du könntest mit einem 74HC125 zwischen ISP und Prozessor den
Programmer nur bei !RESET=Low aktiv schalten. Bei !Reset=High wären die
Ausgänge des HC125 hochohmig.
fchk
Eine SD Karte ist kein normaler SPI Slave, sie muss nach dem Power-Up in
den SPI Modus versetzt werden. Das bedeutet leider auch, dass sie beim
Programmieren dazwischen funken kann, selbst wenn CS = High ist: Die
Daten der ISP Übertragung könnten zufällig gültigen SD Kommandos
entsprechen. Das kann für die Daten (und sogar der Karte selbst)
schädlich sein.
Daher sollte die Karte beim Programmieren besser nicht im Slot stecken,
wenn die ISP Pins auch als SPI Pins verwendet werden.
Vielen Dank für die Erklärung. Werde den HC125 noch mit in die Schaltung
aufnehmen. Bin noch am überlegen ob ich dann zusätzlich noch einen 4053
auch noch mit integriere.
Jim Meba schrieb:> Eine SD Karte ist kein normaler SPI Slave, sie muss nach dem Power-Up in> den SPI Modus versetzt werden.cyblord ---- schrieb:> Seit längerem? Jeder SPI-Salve hat ein Chip-Select. Ist das High so> ignoriert der Slave alles auf SPI. Und für CS kann jeder Pin verwendet> werden. Machste noch nen PullUp Ran damit beim Programmieren der Pin> sicher auch auf Hi geht. Und fertig. SPI ist ein BUS, d.h. es ist normal> wenn mehrere Slaves da dran hängen, also ist es ganz normal hier ein CS> für jeden Slave einzusetzen.
Und nu? Hast du das mit dem CS für eine SD-Karte so am laufen?
Guten Morgen,
habe nochmal darüber geschlafen und bin auf einer Seite auf den 4053
gestoßen. Mir scheint, dass ich mit diesem Baustein mein Problem lösen
kann. Wenn ich den Atmega 32L nutze, muss ich mir auch keine Gedanken
über die Spannung machen bzgl. dem Atemga und der SD Karte. Wäre sehr
dankbar über eure Meinung ob das klappen kann.