Forum: Mikrocontroller und Digitale Elektronik ATMEGA128 ISP-Funktionsweise


von Volkhard (Gast)


Lesenswert?

Ich beschäftige mich interessehalber - nicht beruflich - mit
Mikrocontrollern, das nur vorneweg.
Erst habe ich mich ein wenig mit dem MSP430 befasst und konnte ihn
erfolgreich mittels MSPGCC in C programmieren. Dann bin ich auf die
AVR-Welt umgestiegen.
Bislang habe ich mit einem fertigen ATMEGA32-Board von Robotikhardware
gespielt, dabei einen STK200-kompatiblen ISP-Programmieradapter
(ebenfalls Robotikhardware) und erstmal BASCOM als einfache
Programmierumgebung verwendet. Auch das klappte ganz gut soweit. Nun
möchte ich auf den ATMEGA128 umsteigen und habe dafür eine eigene
Schaltung entworfen, aufgebaut und es einmal geschafft, den Controller
zu programmieren - aber auch nur einmal.
Beim Vergleich meiner Schaltung mit anderen - ebenfalls auf dem 128er
basierend - ist mir aufgefallen, dass ich den Pin 1 "PEN" mittels
eines Jumpers auf GND legen kann, in den anderen Schaltungen dieser Pin
aber mit einem externen Pullup versehen ist. Hier habe ich meine
Verständnisprobleme:
Laut Datenblatt ist
"PEN is a programming enable pin for the SPI Serial Programming mode,
and is internally
pulled high . By holding this pin low during a Power-on Reset, the
device will enter
the SPI Serial Programming mode. PEN has no function during normal
operation."
Warum versehen andere Schaltungen diesen Pin mit einem externen Pullup,
es ist doch intern schon einer vorhanden?
Nach meinem Verständnis geht der 128 doch nur dann in den SPI
Programming Mode wenn PEN beim Einschalten ("Power-on Reset") auf LOW
gezogen wird. Das ist in den anderen Schaltungen aber nicht vorgesehen,
wie wird denn dann der SPI Programming Mode überhaupt aktiviert? Der
dort vorgesehene Programmieranschluss umfasst - wie in meinem Entwurf -
neben "SCK" (PB1) auch "SPI Programming Data Output" (PE1) und "SPI
Programming Data Input" (PE0). Daraus entnehme ich, dass diese
Schaltungen alle auf dem gleichen Wege programmierbar sein müssten.
Liege ich mit meinem Verständnis so weit neben der Spur?

Darüber hinaus vermute ich, dass ich bei meinem ersten
Programmierversuch durch "Nicht-Aufheben" der
ATMEGA103-Kompatibilitätsfuse quasi zerschossen habe? Kann man diese
Zustand irgendwie wieder aufheben?

von Volkhard (Gast)


Lesenswert?

Vieleicht noch einmalweiter nachgefragt:
Gibt es eine Art Übersicht, worauf insbesondere beim ATMEGA128 zu
achten ist, um ihn erfolgreich in Betrieb nehmen und programmieren zu
können?

von Niels H. (monarch)


Lesenswert?

> Warum versehen andere Schaltungen diesen Pin mit einem externen
> Pullup, es ist doch intern schon einer vorhanden?

Machen wir nicht alle mal fehler? ;-)

Zu beachten ist eigentlich nur eins: in den Fuse-bits nie SPIEN
disablen, wenn man keinen paralell-prommer hat.

von Volkhard (Gast)


Lesenswert?

Mein Fragezeichen steht immer noch:
Wie kann bei externem Pullup am Pin 1 (PEN) jemals der SPI Programming
Mode aktiert werden bzw. wie werden in diesen Schaltungen die
Controller programmiert?

von Gerd Laschinski (Gast)


Lesenswert?

Hallo Volkhard,

im Datenblatt steht unter "Serial Downloading" bzw. "SPI Serial
Programming Algortihmus" (Seite 304) folgendes:

1. Power-up sequence:
Apply power between VCC and GND while RESET and SCK are set to
“0”. In
some systems, the programmer can not guarantee that SCK is held low
during power-up. In this case, RESET must be given a positive pulse of
at least two CPU clock cycles duration after SCK has been set to
“0”.
As an alternative to using the RESET signal, PEN can be held low during
Poweron Reset while SCK is set to “0”. In this case, only
the PEN value at Power-on Reset is important. If the programmer cannot
guarantee that SCK is held low during power-up, the PEN method cannot
be used. The device must be powered down in order to commence normal
operation when using this method.

Also PEN kann unter bestimmten Umständen eine Alternative zu RESET
sein. Der Mega128 kann auch mit PEN=High programmiert werden.

Gruß
Gerd

von Niels H. (monarch)


Lesenswert?

Echtes Incircuit-Prommen wird bei der professionellen Produktion
eigentlich nicht gemacht. Die Microcontroler haben meist schon vor dem
einbau ihren Code in einem Programmiergerät bekommen.

Sollte es vieleicht doch mal nötig sein, den code in-circuit upzudaten
und für PEN ist kein LOW-Jumper vorhanden, wird man wohl nicht drumrum
kommen, mit fliegender Verdrahtung den PEN auf Low (GND) zu ziehen. Das
geht auch, wenn fälschlicherweise zusätzlich zum internen PullUp ein
externer Pullup eingebaut wurde.

von Niels H. (monarch)


Lesenswert?

Bitte mein letztes Posting in die Mülltonne werfen, Streichholz
dranhalten und ganz schnell vergessen ;)

von ggg (Gast)


Lesenswert?

Wow,

ich kenne einige high volume Produktionslinien, wo nur in-circuit
programmiert wird. Eine davon wurde extra von Toshiba uC auf AVR
umgestellt, wegen dem in-circuit programmieren :-)

Schau mal bei Honeywell rein oder Pepperl+Fuchs oder Bosch-Siemens
Hausgeräte etc etc

von Niels H. (monarch)


Lesenswert?

Hab bei Novar (damals: Esser Sicherheitstechnik, deutschlands grösster
BMZ und EMZ hersteller) gelernt. Gehört heute mit zu Honeywell.

Die haben damals die Chips immer vorgeprommt auf die Trägerplatinen
geschweisst. Vieleicht haben die das ja zwischenzeitlich geändert
achselzuck

von ggg (Gast)


Lesenswert?

Hallo,

ich will ja nicht behaupten, dass alle Produktions Linien in-circuit
programmieren. Aber!! mega128 raus aus dem Tray, in die Programmier
Fassung, programmieren, raus aus der Fassung, rein in den Tray, zum
Bestückungs Automat, raus aus dem Tray, bestücken...

Bei soviel Bewegungen sind verbogene Beinchen vorprogrammiert, auch
wenn das alles durch Automaten erledigt wird.

Und wie ist es mit den Micro-Miniatur Gehäusen (MELF) des AVRs? Ich
vermute mal, da gibt es nichtmal eine Programmierfassung.

Der Trend ist ganz klar in Richtung in-circuit...

von Luciano Brüggemann (Gast)


Lesenswert?

Ok, wenn ich's richtig verstehe, dann will man an alle µC gleichzeitig
ein Reset geben (/RESET=LOW). Dabei können manche µC, einzeln mit
/PEN=LOW angesteuert, programmiert werden, während die Restlichen ganz
normal neu booten? PEN als eine Art Chip-Select?
Ist das der Zweck?

Kann man dies nicht mit der standard SPI Schnittstelle machen?

Danke schon mal :)

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.