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?
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?
> 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.
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?
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
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.
Bitte mein letztes Posting in die Mülltonne werfen, Streichholz dranhalten und ganz schnell vergessen ;)
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
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
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.