Hi,
hab eine Frage bezüglich der Attiny-Controller. Bis jetzt hab ich mir
einen Attiny88 ausgeguckt.
Ist es möglich über einen ISP-Stecker auf der Platine die
ISP-Schnittstellen von mehreren solchen Prozessoren anzusprechen
(natürlich immer nur einer) ähnlich wie das beim JTAG möglich ist
(JTAG-Chaining)? Muss man hier etwas beachten?
Möchte nicht für jeden Attiny eine Steckerleiste für die ISP vorsehen,
aus Platzgründen auf der Platine.
Als Programmiergerät hab ich mir den AVR Dragon gekauft.
Gruß
Bernd
Du müßtest die verschiedenen Reset-Leitungen der einzelnen Controller
multiplexen. Außerdem dürfen die jeweils nicht selektieren Controller
die ISP-Pins nicht als Ausgänge benutzen.
Travel Rec. schrieb:> Du müßtest die verschiedenen Reset-Leitungen der einzelnen Controller> multiplexen.
ok, so dass halt immer nur eine RST leitung "aktiv" ist. Kennst du
hierzu eine platzsparende Möglichkeit?
Travel Rec. schrieb:> Außerdem dürfen die jeweils nicht selektieren Controller> die ISP-Pins nicht als Ausgänge benutzen
das wäre ok, weil ich die ISP Pins nur für die Programmierung benötige
und ansonsten weder die Pins noch das SPI-Interface verwende.
Der ATTiny88 hat doch DebugWire. Habe ich bis jetzt noch nicht genutzt,
nach meinem Kenntnisstand kann man darüber auch programmieren, oder?
In diesem Falle bräuchtest Du nur eine einzige Leitung multiplexen, z.B.
über einen beliebigen Analog-Multiplexer (wg. bidirektional).
Harald schrieb:> Der ATTiny88 hat doch DebugWire.
das ist richtig; zum Debuggen reicht es, eine Line zu multiplexen.
Wenn ich jedoch den Attiny programmieren möchte, weiß ich eben nicht, ob
ich dann auch eine Auswahl bekomme, welchen der angeschlossenen Attinys
ich programmieren möchte. Ansonsten muss ich wahrscheinlich den RST
multiplexen, damit nicht alle Attinys gleichzeitig mit dem gleichen Code
programmiert werden, oder?
Gruß
Bernd
Bernd schrieb:> Wenn ich jedoch den Attiny programmieren möchte, weiß ich eben nicht, ob> ich dann auch eine Auswahl bekomme, welchen der angeschlossenen Attinys> ich programmieren möchte.
Per Analog-Multiplexer (4067 o.ä.) müsste man -RESET multiplexen. Diesen
müsste man dann passend ansteuern.
> Ansonsten muss ich wahrscheinlich den RST> multiplexen, damit nicht alle Attinys gleichzeitig mit dem gleichen Code> programmiert werden, oder?
Alle gleichzeitig würde eh kollidieren, das haut nicht hin. Der Pin
arbeitet im DebugWire-Modus bidirektional. Warum ziehst Du nicht alle
-RESET Signale auf einen Pfostenstecker samt GND und verwendest einen
externen Drehschalter mit n Positionen zum Selektieren des richtigen
Controllers?
Harald schrieb:> Alle gleichzeitig würde eh kollidieren, das haut nicht hin. Der Pin> arbitet im DebugWire-Modus bidirektional. Warum ziehst Du nicht alle> -RESET Signale auf einen Pfostenstecker samt GND und verwendest einen> externen Drehschalter mit n Positionen zum Selektieren des richtigen> Controllers?
der RST Pin ist gleichzeitig der Pin fürs Debuggen, richtig?
Dann müsste ich quasi eine Steckerleiste spendieren, bei der ich dann
per Jumper den entsprechenden IC Attiny auswähle, welchen ich debuggen
oder programmieren möchte. Und die anderen Signale MOSI, MISO und CLK
kann ich einfach an alle Attinys ranführen.
Travel Rec. schrieb:> Außerdem dürfen die jeweils nicht selektieren Controller> die ISP-Pins nicht als Ausgänge benutzen
Sind die Pins beim Attiny per default zu Beginn als Ausgänge realisiert?
Hab grad eine App-Note gelesen von Atmel, die selektieren zum
Programmieren nicht die Reset-Line, sondern die CLK Line zum jeweiligen
Prozessor, die anderen werden einfach an alle Attinys AVRs angeschlossen
(MOSI, MISO, RST).
Auszug daraus:
If it is desired to have only one ISP interface on the target board, the
ISPprogramming 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. This way, several AVRs can be located “behind” the same
protection resistors, since they are all held in RESET while the ISP
reset line is activated. The gating of the ISP clock can be accomplished
by use of, e.g., jumpers or DIP switches
Die SPI-Clock zu multiplexen, ist auch eine Möglichkeit. Es kommt immer
darauf an, was die anderen Controller machen sollen, während einer
programmiert wird. Für die reine Programmierung ist das sogar die
bessere Variante. Man muß nur darauf achten, daß man beim Multiplexen
keine zusätzlichen Clocs durch das Umschalten erzeugt, also ggf. mit
PullUps oder PullDowns die SPI-Clock der einzelnen Controller auf
definierten Idle-Pegel ziehen, wenn sie nicht selektiert ist.
Travel Rec. schrieb:> Die SPI-Clock zu multiplexen, ist auch eine Möglichkeit.
ich würde dann beide Signale (CLK und RST) über Jumper führen, so dass
ich immer Zugriff auf genau einen Controller habe. RST fürs Debuggen,
falls ich es benötigen sollte und CLK fürs Programmieren.
Der Vorteil von CLK wäre der, dass ich mich dann nicht mehr um die
GPIO-Configuration der anderen ICs kümmern müsste; grad wenn diese noch
gar nicht programmiert worden sind, werden die Pins (MOSI, MISO, CLK) ja
wahrscheinlich als Ausgang configuriert werden nach dem ersten Starten.
Die Jumper haben für mich den Vortei, dass sie am wenigsten Platz
einnehmen und die Leitungen CLK nur ganz kleine Stubs erhalten.
Das mit den Pullups für die CLKs (RST sowieso) ist ein guter Hinweis.
Bernd Schuster schrieb:> grad wenn diese noch> gar nicht programmiert worden sind, werden die Pins (MOSI, MISO, CLK) ja> wahrscheinlich als Ausgang configuriert werden nach dem ersten Starten.
Bevor ein Programm im Controller diese Pins nicht explizit als Ausgang
konfiguriert, sind alle Portpins am AVR (außer JTAG, falls vorhanden)
Eingänge. Ein fabrikneuer AVR hat also erstmal nur Eingänge. Und das ist
auch gut so.