Moin, ich habe in einer Schaltung drei AVRs, die ich gerne über einen einzigen ISP-Stecker programmieren möchte. Ich habe schon im Forum gesucht, aber dort wurde immer nur von Varianten gesprochen, wo der SPI Bus nicht genutzt wird. Bei mir ist es aber der Fall, dass die zwei der drei AVRs über den SPI Bus miteinander kommunizieren. Andere Busteilnehmer außer den drei AVRs gibt es nicht. Habt Ihr ne Idee, wie ich das Problem lösen kann? Habe leider nirgends was gefunden, weder in den Atmel Application Notes, noch bei Google... Ich hab bisher überlegt die Reset und SCK Leitung jeweils mit Jumpern zu unterbrechen, aber dann hab ich wahrscheinlich ein Problem beim Flashen des Slave, da dann ja zwei Master (Programmer & der andere Mikroncontroller) am Bus hängen (könnten zwei Ausgänge zusammengelegt sein)... Wenn ich nur die SCK Leitung unterbreche, würde der Programmer alle AVRs in den Reset Modus ziehen, aber nur den an der SCK-Leitung programmieren, oder? Aber würden die anderen Chips dann nicht über die Reset-Leitung mitgelöscht werden (in der ISP-AN stand was, dass über ein getaktetes Signal der Reset-Leitung der Chip-Erase durchgeführt wird). Wäre stark, wenn Ihr da ne Lösung habt. Schaltpläne, wo ne Lösung realisiert wurde, würden völlig genügen. Danke schonmal!
Wiso trennst du nicht die Versorgungsleitungen auf und versorgst beim programmieren nur den IC den du Programmieren willst ?
Einfach die SCK Leitung für jeden Controller mit nem Jumper versehen?
> versorgst beim programmieren nur den IC den du Programmieren willst
Da muss man aber mal nachschlagen, ob die Pins überhaupt Spannung
abkönnen, wenn der MC nicht versorgt ist.
domi wrote:
> Einfach die SCK Leitung für jeden Controller mit nem Jumper versehen?
Ist das jetzt ne Frage á la "Wie kann man nur?" oder ein
Lösungsvorschlag? Ich hab da wie oben zu lesen drüber nachgedacht, hatte
aber Zweifel wegen des Reset Pins...
Meine Sorge diesbeszüglich:
Programmierung beginnt -> Programmer aktiviert Reset
--> Alle µC Pins automatisch als Eingang konfiguriert
Programmierung wird durchgeführt
--> Da nur eine SCK Leitung durch Jumper verbunden, wird auch nur ein µC
geflasht, dem Rest sind die Werte an MOSI/MISO wurscht
Programmierung beendet -> Reset deaktiv
--> µC nehmen normale Funktion auf
--> Ein µC konfiguriert sich als SPI-Master (MOSI = Output)
--> MOSI Leitung vom Programmer wahrscheinlich LOW, vom µC evtl HIGH
--> Kurzschluss (will ich nicht g)
(Alternative: Nach Chip-Erase muss der Programmer die Reset Leitung kurz
auf HIGH-ziehen, bevor er proggen kann -> selbes Dilemma)
Ich hab mich mit dem Bus und dem ISP bisher nicht im Detail beschäftigen
können, daher hoffe ich hier ja auf Eure Hilfe!
Lösung von domi Einfach die SCK Leitung für jeden Controller mit nem Jumper versehen? steht auch in AVR042: Multiple AVRs in a single application can share the same ISP interface to make it possible to program all of the devices through a minimal interface. However, the AVR devices will all respond to the ISP instructions if special design considerations are not made. If it is desired to have only one ISP interface on the target board, the ISP programming can be designed so that only one of the AVR devices is provided with a SPI clock at a time. All other SPI lines can then be shared. In this way all AVRs can be located “behind” the same protection resistors, since they all are held in RESET while the ISP reset line is activated. The gating of the ISP clock can be accomplished e.g. using jumpers.
Hoppla, diese Application Note habe ich wohl übersehen... Okay, dann geht das ja mit den Jumpern. Ist dass dann so gemeint wie im Anhang? Welchen Wert würdet Ihr für die Schutzwiderstände nehmen? 1k? 10k? Hab die noch nie in einer Schaltung eingesetzt :-)
Vom Programmer zur schaltung 1K Von der Schaltung zum programmer 100 Die 100 Ohm sind etwas radikal ich weiss aber atmega64 z.b. treiben recht wenig auf der spi ich hab in meinem programmer ursprünglich überall 1K drin gehat aber einige Controller lassen sich damit nicht mehr flashen, deshalb die 100 Ohm. @ MicroMann Ich hab das gerad mal ausprobiert mit spannungen an der SPI ohne Versorgungspannung also der Controller läuft noch ... und die SPI funktioniert auch noch.
Wusste nicht, dass es meinen Vorschlag auch als APP-Note gibt. :-) Normal bekommen aber die Reset-Pins noch eine Diode nach VCC. Gruß, Dominik
Wegen der Widerstände: Kann ich den kleinen Widerstand nicht einfach auf 300 Ohm dimensionieren? Dann würden im Kurzschlussfall max. 17mA fließen, was ein Atmel ja locker verträgt und alles ist bueno. Christian, hast Du es schonmal mit 300 statt 100 ausprobiert? domi wrote: > Normal bekommen aber die Reset-Pins noch eine Diode nach VCC. Muss diese Diode denn sein? Hab die noch nie verbaut und bisher ist mir kein AVR abgekratzt. In der AN wird die mit "ESD Protection" begründet - aber ich Finger doch nicht am Reset Pin rum, daher kann mir elektrostatische Entladung doch völlig Schnuppe sein.
Ich hattes mit 220 probiert, das hat beim atmega8, 16 wunderbar geklappt der atmega64 hat da gestreikt danach bin ich auf 100 runter
> Wusste nicht, dass es meinen Vorschlag auch als APP-Note gibt. :-)
Siehste mal ;-)
BTW. Cypress (die mit den PSoC, wo es hier diese Diskussion über das
kostenlose Evalkit gibt) zahlen 250 Ocken für eine Applikationsnotiz,
wenn diese veröffentlicht wird; und 50 Ocken mehr, wenn sie in einer
zweiten Sprache als Englisch eingereicht wird.
André Wippich schrieb: > Hoppla, diese Application Note habe ich wohl übersehen... > > Okay, dann geht das ja mit den Jumpern. Ist dass dann so gemeint wie im > Anhang? Welchen Wert würdet Ihr für die Schutzwiderstände nehmen? 1k? > 10k? Hab die noch nie in einer Schaltung eingesetzt :-) Schon etwas länger her, aber sollten die SCK pins nicht noch einen Pullup bekommen, damit die beim Reset=LOW auf jeden Fall definierten Pegel haben? Will mir das dann auch so bauen. http://www.mikrocontroller.net/attachment/21866/Multiple-ISP.gif
Andy H. schrieb: > Schon etwas länger her, aber sollten die SCK pins nicht noch einen > Pullup bekommen, damit die beim Reset=LOW auf jeden Fall definierten > Pegel haben? Will mir das dann auch so bauen. Ja, das würde Sinn machen. Einen offenen Takteingang (was er bei der Programmierung ja dann wäre) sollte man wirklich lieber vermeiden ;-) Kannst ihn ja eifnach mit 47K auf die Versorgungsspannung ziehen.
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.