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.
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.
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.
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
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.
Wie teile ich denn dem uC sein "Passwort" mit und wo baue ich es beim Programmcode mit ein?
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.)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.