Forum: Mikrocontroller und Digitale Elektronik MOSI & MISO mehrfach belegung


von iGast (Gast)


Lesenswert?

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

von Cyblord -. (cyblord)


Lesenswert?

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

von iGast (Gast)


Lesenswert?

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?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Wo ist das Problem?
Eine SD karte steckt meist in nem Sockel und die Firmware aktualisiert 
man nun auch nicht täglich.
SD raus, ISP einstecken.

von Cyblord -. (cyblord)


Lesenswert?

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

von iGast (Gast)


Lesenswert?

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.

von Eumel (Gast)


Lesenswert?

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.

von iGast (Gast)


Lesenswert?

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.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

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.

von iGast (Gast)


Lesenswert?

Also den cs von der sd Karte auf High? Bin leicht verwirrt. Oder liegt 
das am Alter schon? :-)

von Cyblord -. (cyblord)


Lesenswert?

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?

von Frank K. (fchk)


Lesenswert?

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

von Jim M. (turboj)


Lesenswert?

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.

von iGast (Gast)


Lesenswert?

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.

von Werner (Gast)


Lesenswert?

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?

von Cyblord -. (cyblord)


Lesenswert?

Werner schrieb:

> Und nu? Hast du das mit dem CS für eine SD-Karte so am laufen?

Ja bei mir hat das noch nie Probleme gemacht.

gruß cyblord

von iGast (Gast)


Angehängte Dateien:

Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

C1 sitzt etwas seltsam.

von iGast (Gast)


Lesenswert?

ja, C1 muss gegen Masse. Natürlich fehlt auch noch die 
Spannungsversorgung und die restliche Beschaaltung vom Atmega.

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.