Forum: Mikrocontroller und Digitale Elektronik SPI- Ignoration


von Stephan R. (Gast)


Lesenswert?

Moin!

Mein Ziel: 5 identische Eigenbau-uC-Karten sind alle verstreut in einem 
Modell eingebaut. Über einen Programmer an Bord einer derer 
(DatenVerteilerKarte genannt) sollen sich alle Karten zentral 
programmieren lassen.

Meine Vorstellung: alle Karten sind parallel an den Programmer 
angeschlossen, doch nur die zu programmierende Karte erhält (mittels 
Jumper) das Reset mit aufgebrummt.

Geht das?

Werden die nicht zu programmierenden Karten sich verhohlepiepelt fühlen 
wenn Signale auf ihren MISO- Ausgängen ankommen?

Bin nicht firm mit SPI, daher meine Frage.

von Leo-Andres (Gast)


Lesenswert?

Moin!

Wie wäre es mit einem Latch, z.B. 74HC244?
Über eine zusätzliche Schaltader kannst du dann jedes beliebige Board 
vom Bus abtrennen. Vielleicht lässt sich das auch irgendwie mit der 
Reset-Leitung vom Programm verschalten, kommt auf die Busstruktur an.

Außerdem könntest du so einen zentralen "Kontrolleur" einsetzen, der 
fehlerhafte Controller über eben dieses Latch vom Bus abtrennt, falls 
sie ihn für zu lange Zeit blockieren.

von Sam .. (sam1994)


Lesenswert?

Wenn du es noch nicht gebaut hast kannst du auch einen Bootloader nehmen 
und eine ID einprogrammieren. Die µCs werden alle gleichzeitig über UART 
angesprochen doch nur der die richtige ID hat meldet sich und wird 
programmiert. Da brauchst du nicht mal einen Master-µC denn die ID kann 
auch vom PC gesendet werden.

von Peter D. (peda)


Lesenswert?

Eine schöne Aufgabe für den Bootloader-Man.
Jeder MC kriegt einfach nen Bootloader mit nem anderen Paßwort.
Und alle hängen parallel am gleichen Bus (RS-485, I2C, CAN, ...).


Peter

von (prx) A. K. (prx)


Lesenswert?

Wie wär's mit PeDas Single-Wire Bootloader?

von Stephan R. (Gast)


Lesenswert?

Sehr gut, genau das war bis gestern meine Lösung (mit Mux statt Latch), 
nur musste dieser aus Platzgründen leider die Biege machen.

Daher wüsst ich gern, ob etwas wirklich ganz extrem doll dagegen 
spricht, zu parallelisieren.

von Stephan R. (Gast)


Lesenswert?

Oh, die Bootloadervariante kam zu spät. Aber klingt interessant...

von Stephan R. (Gast)


Lesenswert?

Wie teile ich denn dem uC sein "Passwort" mit und wo baue ich es beim 
Programmcode mit ein?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stephan R. schrieb:
> Meine Vorstellung: alle Karten sind parallel an den Programmer
> angeschlossen, doch nur die zu programmierende Karte erhält (mittels
> Jumper) das Reset mit aufgebrummt.
>
> Geht das?

Im Prinzip ja, nur solltest du bedenken, dass sich alle anderen
Controller dann nicht im Reset befinden, d. h. sie könnten (je
nach Firmware) versuchen, die entsprechenden SPI-Pins anderweitig
zu belegen.

Besser ist es, /RESET, MOSI und MISO an alle als Bus zu verteilen
und SCK per Jumper umzuschalten.  Dann musst du allerdings (per
Pulldown-Widerstand) sicherstellen, dass die inaktiven AVRs in
der Tat auch nicht aus versehen Taktflanken auf "ihrem" SCK sehen.

Sowas habe ich schon realisiert, das klappt.  (War ein 3-Wege-Jumper
bei mir: in der dritten Jumperstellung hatten beide Controller ihr
SCK miteinander verbunden, sodass sie im Betrieb einer SPI-Master
und der andere Slave sein können.)

von Stephan R. (Gast)


Lesenswert?

Hm. Werde mal zwischen Bootloader und Taktaufteilung nachdenken..... 
danke erstmal.

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.