Home: www.rowalt.de
Programmiersoftware und -Hardware für AVRs

TwinAVR (ehemals WinAVR)

Der Name WinAVR wurde in TwinAVR geändert, um Verwechslungen mit mit dem AVR-GCC-Compiler zu vermeiden, der mir den Namen WinAVR "gemopst" hatte.

TwinAVR ist ein AVR-Programmer für MS Windows 3.x, 9x, ME and NT3/4, 2000, XP und Win-OS/2 für alle AVR-Typen, die mit 5 Volt im SPI-Modus programmiert werden können (ATmega, AT90, ATtiny, AT86RF401). TwinAVR brennt AVRs, kann sie auslesen und auch Lock- und Fuse-Bits setzen. Außerdem kann TwinAVR beim Brennen automatisch Calibration Bytes in den EEPROM kopieren. TwinAVR verzichtet auf unnötigen Schnickschnack, ist aber dafür sehr klein, übersichtlich und einfach zu bedienen (vielleicht kommt gerade daher die enorm hohe Anzahl von Downloads, wer weiß...).
Es kann eine SP12-kompatible Hardware (kostet 1 bis 2 Euro, siehe weiter unten) oder ein Atmel AVR ISP Dongle verwendet werden.
TwinAVR akzeptiert als Dateiformat Binär-Dateien, GenericHex und IntelHex.

Neu (Mai 2009):
- Support für ATmega164P, ATmega324P, ATmega644P, ATmega644

TwinAVR TwinAVR 1.1.0.4 (TWINAVR.ZIP, 92KB)

Die SP12-Hardware:
TwinAVR hardware SP12 programmer
Im einfachsten Fall besteht die SP12-Programmier-Hardware aus 2 Widerständen und ein paar Drähten. Außerdem ist aber auch eine Stromversorgung aus der parallelen Schnittstelle möglich, die bei 4MHz Taktfrequenz völlig ausreicht. Bei mehr braucht man aber eine echte 5-Volt-Quelle. Wau Holland hat den Programmer in Freiluft-Verdrahtung sogar vollständig in einem LPT-Stecker untergebracht. In der Praxis ist es aber günstiger, nur den rechten Teil der Schaltung im LPT-Stecker unterzubringen (so wie es der Schaltplan zeigt). Der Rest ist dann Teil der normalen Schaltung (in-vivo-Programmierung).
Wer in-vivo programmiert, kann die Stromversorgung kleinerer Schaltungen genau wie beim Programmiervorgang aus der parallelen Schnittstelle beziehen. Man startet ein kleines Programm, das einfach die entsprechenden LPT-Pins auf High und Reset auf Low legt. Hier ist die Stromversorgungs-Software (15KB) sowohl compiliert als auch im Quellcode (Windows: GFA-Basic, DOS: Assembler). Wichtig: Die LPT liefert keine vollen 5 Volt, die entsprechende Schaltung muß daher mit etwa 3,8 Volt klarkommen können.

Der Atmel AVR ISP Dongle ("Kanda-kompatibler Dongle"):
Der Kanda-Dongle hat eine andere LPT-Pinbelegung als der SP12-Brenner (!). Er wurde in einer etwas anderen Ausführung von Kanda für Atmel entwickelt und ist in verschiedenen Variationen (anderer oder kein TriState-Puffer) relativ weit verbreitet. Er wurde auch mit dem Atmel STK 200/STK 300 ausgeliefert.
Mit etwas Glück bekommt man ihn für knapp 10,- Euro fertig aufgebaut zu kaufen (z.B. bei www.embedit.de).
Bitte beachten, daß SP12 (siehe unten) den Dongle nicht unterstützt. Aber dafür gibt es neben TwinAVR noch eine Reihe weiterer Programme, die den Kanda-Dongle unterstützen. Bascom kann ihn z.B. direkt ansprechen.
Die Stromversorgung des 4fach-TriState-Puffers 74HC125 erfolgt durch die AVR-Schaltung. Deshalb kann der Dongle nicht bei Schaltungen verwendet werden, die mit einer Versorgungsspannung von 2,4V oder 3V arbeiten.
Mit der gestrichelten Verbindung zwischen den LPT-Pins 3 und 11 ist der Dongle STK200-kompatibel und ohne ist er STK300-kompatibel. Die meisten Programme (auch TwinAVR) unterstützen beides.


SP12

Steven Bolt stellt auf seiner Web-Seite seinen Roboter vor, der von einem AVR gesteuert wird. Dabei verwendet er einen Selbstbau-AVR-Programmer (der selbe Programmer wird auch von WinAVR verwendet, Schaltplan siehe oben). Die Programmiersoftware SP12 steht samt Sourcecode frei zum Download zur Verfügung. Es gibt eine eigene Version von SP12 für Windows NT.
SP12 kann nahezu alle AVR-Typen programmieren, auch die Mega-Typem.
Das Programm wird mit der Unterstützung anderer Programmierer ständig weiterentwickelt. Wer SP12 ständig benutzt, sollte sich das Programm direkt von Stevens Homepage holen.
Für den schnellen Einstieg gibt es SP12 aber auch auf meiner Homepage (hier...). Die ZIP-Datei enthält SP12 in der recht alten Version 0.7 in einer sofort benutzbaren Fassung ohne Quellcode. Enthalten sind auch einige Beispiel-Batch-Dateien und natürlich der Stromlaufplan. Außerdem habe ich das Programm mit einem Borland-Compiler erzeugt, was den unter (purem) DOS zusätzlich benötigten DPMI-Treiber CWSDPMI.EXE überflüssig macht.

Hier ist das SP12 "Einsteiger-Paket" (SP12.ZIP, 68KB)


Der eingebaute Programmer vom BASCOM-AVR-Basic

Bascom (www.mcselec.com) kann verschiedene Programmer bedienen. Unter anderem ist Bascom auch ohne externe Programme in der Lage, Schaltungen anzusprechen, die SP12- bzw. TwinAVR-kompatibel sind. Andersherum ausgedrückt: Bascom braucht TwinAVR oder SP12 nicht.
Seit Version 1.11.6.5 existiert in Bascom das "Universal MCS Interface", bei dem man eine SP12/TwinAVR-kompatible Programmierung einstellen kann.
BASCOM settings
Aber Achtung: Bascom geht davon aus, daß die Programmer-Hardware an LPT1 angeschlossen ist und daß LPT1 die Hardware-Portadresse $378 hat! Hat man andere Einstellungen (LPT2 oder LPT3 bzw. LPT1 mit einer anderen Portadresse), dann muß man die Datei prog.settings im Bascom-Verzeichnis mit einem Texteditor öffnen, die entsprechenden Einträge ändern und nach dem Speichern Bascom beenden und neu starten. Die Datei prog.settings enthält eine kurze Beschreibung. Typische Portadressen für parallele Schnittstellen sind $278, $378 oder $3BC.

Wer will, kann aber auch TwinAVR als externen Programmer in Bascom ansprechen. Das geht im Prinzip genauso komfortabel. Bei den Einstellungen ist es wichtig, daß man den erzeugten Code mit der Einstellung {FILE} als Parameter angibt (siehe folgendes Bild). Damit wird die gerade aktuelle *.bin-Datei als Kommandozeilen-Parameter an TwinAVR übergeben. Ein expliziter Dateiname mit Pfad wäre auch möglich, ist aber sehr unkomfortabel.
BASCOM settings