ispRE: AVRISP-kompatibles Programmiergerät für Atmel AVR Mikrocontroller

switch to the English version of this text

Evertool! Eine weiterentwickelte Version des hier vorgestellten Geräts mit Programmier- und Debugging-Unterstützung, die zumindest ich interessanter finde, wird auf meiner Evertool-Seite vorgestellt.

Intro

Das ATMEL AVRISP Programmiergerät zur Im-System-Programmierung (ISP) ist ein Gerät zur Programmierung (Flash/EEPROM/Fusebit/Lockbits) von Atmel AVR Mikrocontrollern. Informationen zum Originalgerät von ATMEL finden sich auf einer Atmel-Seite. Hier wird ein Nachbau dieses Gerätes mit (fast) minimaler Hardware beschrieben. Der Hauptvorteil dieses Nachbaus ist die Kompatibilität zum Atmel AVRStudio und der darin enthaltenen sehr anwendungsfreundlichen Software. Da sowohl die genutzte Software auf dem Programmiergerät und die Bedienungssoftware vom Hersteller gepflegt und aktualisiert werden, sind beide immer auf sehr aktuellem Stand. Das Programmieren von Fuses verliert seinen "Schrecken" durch klare Beschreibungen in der Software (AVRStudio/Tools/STK500, AVRISP).

Bevor Sie den Nachbau dieses Geräts in Betracht ziehen, bedenken Sie bitte:



Hardware

Schaltplan


vergrößern (2400*1600 png-Grafik)

Hauptkomponenten:

Testplatine (Lochraster)

Bauteilliste

PartPiecesFunction
ATMega8535(L)1Programming Controller, L-type for reliable programming of 3V targets
DIL40 Socket1for ATmega8535
MAX32321RS232 level shifter and inverter, 3V-type for reliable programming of 3V targets
DIL14 Socket1for MAX(3)232
3,6864MHz Quarz1
ATtiny23131internal update controller
DIL20 Socket1for ATtiny2313
1uF Electrolyt-Capacitor44 for MAX(3)232 charge pumps
22uF Electrolyt-Capacitor1stabilisation near ISP-connector
100nF Capacitor5"block capacitors" 4 for AVRs, 1 for MAX(3)232
22pF Capacitor 2 near Quarz-Oscillator
100nF Cap. 2 Filter at AVR Reset
10kOhm Resistor 2 AVR Reset Pull-Ups
LED low-current (2mA) 2 Indicator LEDs
1.5kOhm Resistor 2 LED current limiter
DSUB connector "female" 1 PC RS232 connection
Pin-Header 2*5 1 ISP connection "Kanda-Standard" (see schematic)
Pin-Header 2*3 1 ISP connection "Atmel-Standard" (see schematic)
Pin-Header 2*3 1 ISP Resetline selector (see schematic)
Pin-Header 1*3 1 Update-enable Jumper
Pin-Header 1*1 1 Rescue-Clock connection (ca. 0,7 MHz)
Jumper 2 for reset-selector and update-enable
Pin-Header 1*2 1 external power supply for internal programming with STK200-PPI (stable DC)
Prototype-Board 2,54 mm grid 1

Software

Die *2313-Firmware darf nur zu nicht-kommerziellen Zwecken genutzt werden! Falls Sie eine kommerzielle Version benötigen: Nehmen Sie bitte via e-mail mit mir Kontakt auf (Adresse s.u.)

Die Update-Firmware für den ATtiny2313 ist auch für andere Zielprozessoren ausser dem ATmega8535 erhältlich. Falls sie also eine Update-Funktion auf Ihren Eigenentwicklungen benötigen, aber keinen Bootloader in den Hauptprozessor integrieren wollen: nehmen Sie bitte Kontakt auf, angepasste Versionen sind bereits fertig oder kurzfristig lieferbar. Die eigentliche ATmega8535-Firmware ist nur von Atmel lieferbar, das Angebot gilt nur für die Update-Firmware des ATtiny2313. (Eine STK500.hex-Datei ist hier nicht erhältlich).



Schitt für Schritt Anleitung

Erstinbetriebnahme

Diese Schritte müssen nur einmal abgearbeitet werden.

  1. Platine herstellen und mehrmals prüfen
  2. Steckbrücke (Jumper) Update-Enable offen
  3. Reset-Select Jumper auf "ISP mega8535" (siehe Schaltplan)
  4. Anschluss einer externen Spannungsquelle, falls der genutzte zweite Programmieradapter nicht über eine eigene verfügt (wie bei üblichen Parallelport-Dongles der Fall)
  5. Setzen der ATmega8535-fuses: External high-freq-Crystal, CKOPT enabled ("programmed"), AT908535 compatibility. Für avrdude-Nutzer: lfuse = 0xff, hfuse = 0x49, locks = 0xff
  6. Stromversorgung ausschalten
  7. Reset-Select Jumper auf "ISP tiny2313"
  8. Stormversorgung herstellen
  9. Setzen der ATtiny2313-fuses. External Clock (everything else disabled: devided, brownout etc.). Für avrdude-Nutzer: lfuse = 0xe0, hfuse = 0xdf, efuse = 0xff, locks = 0xff
  10. Programmieren des ATtiny2313's flash-Speichers mit dem Inhalt der Datei ispre*.hex
  11. Ausschalten
  12. Reset-Select-Jumper auf "normal/AVRISP-mode"

Update der Programmierhardware

Die folgenden Schritte müssen zur Einrichtung und Aktualisierung der Programmierfirmware auf dem ATmega8535 durchgeführt werden. Also bei der Erstinbetriebnahme oder dann wenn die Firmware, die mit einer neuen Version von AVRStudio geliefert wird genutzt werden soll.

  1. Auschalten
  2. kein Gerät an den ISP-Anschluessen.
  3. Herstellen einer seriellen Verbindung (oder einer USB-Verbindung, falls ein FT232 oder ähnlicher IC genutzt wird (Treiber mit "virtuellem COM-Port") )
  4. Update-Enable Jumper schliessen
  5. Stromversorgung herstellen
  6. Start von AVRstudio->Tools->avrprog (kein anderes Programm darf auf den COM-Port zugreifen)
  7. Flashen der Datei STK500.ebn aus dem Verzeichnis /programme/atmel/AVRTools/stk500 (Filter im Dateidialog auf *.*, evtl. "Datei suchen"). Der ATtiny2313 empfängt den Atmel-Firmwarecode und "brennt" damit den ATmega8535
  8. Ausschalten
  9. Update-Enable Jumper öffnen

Benutzung

Das ispRE ist kompatibel zum Atmel AVRSIP (entspr. STK500 in low-voltage serial-programm/serial download). Die Zielplattform (Platine mit zu programmierendem AVR) wird mit einem der ISP-Anschlüssen auf dem AVR-ISP verbunden. Typisch erfolgt die Stromversorgung durch die Zielhardware über den ISP-Stecker. In AVRstudio Menü Tools->AVRISP/STK500 wählen: Es erscheint das avrisp/stk500-Plugin. Für weitere Informationen siehe AVRStudio online-Hilfe. Wichtig (es steht auch da): die ISP-Frequenz darf 1/4 der Frequenz des zu programmierenen AVR nicht überschreiten (z.B. Ziel "läuft mit" 1MHz, ISP-Frequenz max. 250kHz).

ispRE kann auch von der Open-Source Software avrdude angesteuert werden. Man beachte, dass mit AVRStudio 4.11 ein neues STK500-Protokoll eingeführt wurde, wenn die stk500.ebn-Datei aus neuen AVRStudio-Versionen (>=4.11) genutzt wird, ist für avrISP (wie auch das Orignal Atmel AVRISP und das STK500 mit Firmware 2.x) bei avrdude stk500v2 als Programmer anzugeben.

Ein 0,7MHz Takt für am RescueClock-Pin bereitgestellt (am ATtiny). Mit diesem Takt können AVRs "wiederbelebt" werden, bei denen die Fuse-Bits für die Taktgenerierung falsch eingestellt wurden. Einfach den Taktpin mit dem XTAL1-Anschluss des "zerschossenen" AVR verbinden, ISP-Verbindung herstellen und im stk500/avrisp-Plugin die richtige Fuse-Einstellung wählen. (Die Reset-Disable- oder Debugwire-Enable Fuse kann auf diese Weise jedoch nicht zurückgesetzt werden, nur die üblichen "Clock statt Quarz" Fehler). Bei Verwendung der 0,7MHz Takts ist zur Programmierung des "zu rettenden" AVR eine maximale ISP-Frequenz kleiner 0,7MHz/4 einzustellen.



zurück zu meiner AVR Projektseite


Martin Thomas


38879 hits since March 30, 2005
Last mod.: Wednesday, 29-Aug-2007 03:22:57 CEST