Atmel AVR Studio Projekt anlegen
Dieser Aufsatz entsteht aus "gegebenem Anlass", d.h. ich
wurde darauf hingewiesen, dass das
Weiterarbeiten mit einer vorhandenen oder downgeloadeten (was für ein Deutsch)
Assemblerdatei
doch nicht ganz so einfach ist wie ich mir das vorstelle.
Zudem ändert sich auch die Software, sodass z.B. meine Anleitung in "Decoder 1"
nicht mehr ganz
aktuell ist, denn aus Version 4.12 wurde bis September 2008 4.14. Auch die
Firmwareversion des
STK500 hat sich seit Mai 2007 geändert.
Die aktuelle Version steht immer zum Download in
www.atmel.com bereit. Wenn die Studio-Software bereits
installiert ist, gibt es unter "Help" die Funktion "Check for Program Update".
Sofern die Internetverbindung
besteht, erfährt man ob es eine neuere Version gibt.
AVR Studio stellt auch fest, ob die Firmware des STK zur aktuellen Version passt
und fordert ggf. zum Update
auf. Diese Prozedur ist in "Help -> AVR Tools User Guide -> STK500 -> STK500
Firmware Upgrade Procedure"
genau beschrieben und tunlichst zu befolgen.
AVR Studio ist eine Entwicklungsumgebung, d.h. Editieren, Assemblieren oder
Compilieren, Linken und ggf.
Debuggen geschieht in einer Anwendung (Programm) Dabei sind ggf. verschiedene
Dateien zu bearbeiten bzw.
zu erzeugen.
AVRStudio ist für die (fast) komplette AVR-Prozessorfamilie, vom Zwerg bis zum
"Schlachtschiff" verwendbar
und mit einer Reihe von Programmiergeräten, wovon das STK500 nicht mehr das
aktuellste ist.
Wegen dieser Unzahl von Kombinationen und Betriebsmöglichkeiten muss Studio vom
Benutzer erfahren
"Was er Wie" vorhat. Genau dafür ist ein "Projekt" notwendig, bzw. die
Projektdatei. In der oder den Quellprogrammen
sind zwar einige Informationen enthalten, die aber nicht automatisch in die
Projektdefinition einfließen.
Vorbereitung des Projekts:
Nach meiner Erfahrung ist es sinnvoll für die eigenen AVR-Projekte einen
speziellen Ordner anzulegen und nicht
die default-Einstellungen des Studio zu verwenden. Das vereinfacht auch die
Datensicherung. Bei mir ist das der
Ordner "avr" auf meinem Datenlaufwerk.
Wenn man nicht von "Null" weg arbeitet, und das ist eigentlich nie der Fall,
weil man immer eine "Basis" hat, muss
als erstes die Zielhardware (Target) bekannt sein. Bei einem "geerbten" Programm
kann man nachlesen für
welchen AVR-Typ geschrieben wurde und welche Taktfrequenz wie erzeugt wird.
Studio muss auch lernen welches Programmiergerät verwendet werden soll.
Ach ja, einen Namen sollte das Projekt auch bekommen!
Für das Beispiel gilt:
Zielordner:
avr
Target:
ATMega8
Frequenz:
8 MHz
Takterzeugung: Interner Osillator, kein Quarz
Prog.Gerät: STK500
Name:
testprojekt
Quelldatei:
SX-Zentrale2.asm
Erzeugen des Projekts:
Nach Start AVRStudio hat man den Startdialog vor sich sofern er nicht
abgeschaltet ist. Der Startdialog ist der
Project-Wizzard in dessen Fenster auch die "recent" projekts angezeigt werden.
Mit dem Button "NewProject"
(oder über das Menu Project -> New Project) offnet sich das 1. Fenster:
Der "Project type" kann entweder ein AVR Assemblerprogramm sein, oder für den
"GNU C-Compiler".
Mit Click auf "Atmel AVR Assembler" werden die Eingabefelder aktiv. Die beiden
Haken lasse ich immer
gesetzt, denn ich möchte sowohl die Ursprungsdatei als auch den passenden
Unterordner erzeugen lassen
der später alle Projektdateien beinhaltet. Studio schlägt eine Filenamen vor,
der aber überschrieben
werden kann. Lassen wir ihn mal stehen und wählen über den "..." Browserbutton
unseren Zielordner.
Mit "Next>>" öffnet sich ein neues Dialogfenster, das nach
der Debugplattform und dem Target-Device
frägt:
Weil ich keine spezielle Debug und Simulatorhardware habe wähle ich den
integrierten "AVR Simulator"
und scrolle bis zu meinem Prozessortyp, dem "Mega8" der angeclickt werden muss.
Wenn das "Device" nicht korrekt gewählt ist können
"hinterhältige" Programmreaktionen auftreten,
die z.T. schwierig zu entdecken sind. Dies Auswahl MUSS stimmen !!
Nach "Finish" erzeugt Studio das Grundgerüst und es geht an das "Eingemachte".
Die erzeugte "testprojekt.asm" ist komplett leer und zum Editieren bereit. Zur
Übernahme einer existierenden
Datei gibt es natürlich "tausend" Möglichkeiten, von denen ich nur zwei
verwende:
1. Direkt in den Ordner kopieren und umbenennen (rename) auf den akt. Namen.
(quick and dirty)
2. Textübernahme per Editor -> alles markieren ->copy und paste in "testprojekt.asm
Methode 1 erfordert, das leere Projekt zu speichern und Studio zu beenden. Nach
dem Kopieren der
Quellfile und umbenennen hat man 2 Dateien mit gleichem Namen und es muss die
ursprüngliche gelöscht
werden. Mit Doppelclick auf die Projectdatei "testprojekt.aps" startet studio
und stellt fest, dass die
zugehörige .asm Datei fehlt (obwohl sie vorhanden ist!) bietet aber
freundlicherweise an "try to locate?"
und schon ist alles wieder in Ordnung. Deswegen "dirty", diese Methode.
Für die Übernahme per Editor kann auch der interne Studio-Editor mit "Datei-Öfnen"
verwendet werden.
Die sonst übliche Funktion "Alles markieren" fehlt leider, geht aber per Mouse
oder "shift-bild" auch rasch.
nach "copy" "Datei close" und im Editierfenster "paste" einfügen und den
aktuellen Zustand mit "Datei save"
sichern.
Das Programm oder Programmfragment kann nun sofort "gebuildet"
werden, per Menu "Build" oder mit
Taste "F7".
Das Meldungsfenster gibt wichtige Auskunft.
Gleichzeitig wurde die Programmierdatei im
Intel-Hex-format erzeugt und das STK500 kommt zum Einsatz.
STK500 Vorbereitung:
Um das Studium der STK500 Dokumentation im Help des Studio kommt man nicht
herum.
Und nur diese ist aktuell! Die Bedienungsanleitung, Papier oder .pdf wird schon
lange nicht
mehr gepflegt!
Einige Hinweise:
Die Verbindung zum PC wird mit einem, NICHT gedrehten, 1:1 RS232 Kabel
hergestellt.
Der verwendete COM-Port ist egal, Studio findet das STK500 automatisch, der Port
muss aber
die 115Kbd hergeben.
Zur Stromversorgung reicht ein Steckernetzteil mit 15 bis 20 Volt und einigen
Hundert Milliampere.
Die Polarität des Powersteckers ist egal!
Für die diversen AVR's sind IC-Sockel vorhanden die farblich markiert sind. Der
zugehörige
Programmierstecker hat die gleiche Farbe.
Der Mega8 kommt in den grünen Sockel, das 6-plg. Programmier-Flachbandkabel
auch.
Wichtig sind die Jumper:
VTARGET: in
AREF:
open
RESET:
in
XTAL1.
in
OSCSEL: open
BSEL2:
open
PJUNP:
open
Im STK500 Programmieren:
Das STK wird von Studio natürlich nur gefunden, wenn es eingeschaltet ist.
Aufrufen der "Connect"
Funktion mit dem "AVR" Button oder per Menu "Tools -> Program AVR".
Die folgenden Einstellungen sind entscheidend wichtig und müssen sorgfältig
ausgeführt werden
Der AVR-Dialog hat diverse Register-Karten:
In "Main" ist unbedingt das richtige "device" zu wählen. Mit dem Button "Read
Signature" prüft
Studio ob der Device-Code mit dem gewählten Mikroproz übereinstimmt und meldet
das
Ergebnis. Das MUSS passen !!
Unter Programming mode ist "ISP mode" zu wählen. Ich habe noch nie was anderes
gebraucht.
Die "In System Program" Methode ist auch praktisch in
Endgeräten, weil das Umstecken des
Mikro's entfällt. Der Hardwareaufwand ist nur der 6-plg. Pfostenstecker.
Wichtig ist auch die ISP-Frequenz. Meistens stelle ich 57,6 kHz ein, bei sehr
großen Programmen
habe ich schon 460,8 kHz verwendet, damit's nicht "ewig" dauert. Einzustellen
über "Settings",
aber "Write" nicht vergessen!
Dieser Dialog erscheint per default als erster nach dem Aufruf.
Das Register "Program" definiert die Programmierdateien und den Ablauf. Die
Haken für
Erase und Verify UNBEDINGT gesetzt lassen!
Das Einstellen der Dateinamen per "browse" ist problemlos. In jedem Fall ist
eine
Flash Input HEX Datei notwendig, denn das ist das eigentliche Programm.
Zum Programmieren reicht der Button "Program", Verify ist automatisch, wegen
Haken!!
Auch hier ist Sorgfalt geboten.
RSTDISBL:
Reset disable ist NICHT gefragt
WTDON:
Der Watchdog darf nur eingestellt sein wenn er softwaremäßig behandelt wird!
SPIEN:
Muss natürlich gesetzt sein !
EESAVE:
Ohne
BOOTSZ:
Bootflashsize kann default bleiben.
BOOTRST: Nein
CKOPT:
Nein, die Clock-Options sind eine "heiße" Funktion
BODLEVEL: Kann default bleiben
BODEN:
BrownOutDetection Enable Nein
SUT_CKSEL: "Oberwichtig" ist die
richtige Wahl der Frequenz und der Takterzeugung
Nach Änderung einer Fuse UNBEDINGT "Program" clicken, sonst keine Wirkung!
Die Haken bei AutoRead, Warnings und Verify stehenlassen !
Eine ganz "heiße" Sache sind die lock-Bit's mit denen man das zukünftige
Programmieren sperren
kann. Das gibt eigentlich nur bei kommerziellen Anwendungen Sinn. Normal bleibt
NoLock. Auch
weil das Zurücknehmen eines Sperrbits nur mit Tricks möglich ist.
Der interne Takt-Oscillator kann lt. Beschreibung über das Calibrationbyte in
der Genauigkeit
verbessert werden. Der Wert wird bei der Herstellung festgelegt und kann mit "Read"
gelesen werden. Das Schreiben in den Flash-Speicher kann hier oder im Programm
erfolgen.
Die Speicheradresse kann man im Register-Summery des AVR nachlesen, beim Mega8
ist
es die 0x31und hat den Namen OSCCAL.
In den Hardwaresettings werden die STK-Spannungen
eingestellt. Das ist
besonders praktisch wenn eine spezielle Referenzspannung (AREF) verwendet
werden soll. Allerdings muss dann der Jumper AREF gesetzt werden.
Der Clockgenerator liefert NICHT die Taktfrequenz sondern kann optional
verwendet werden.
Nur zur Information.
Hier kann ein Ablauf definiert und gestartet werden. Habe ich noch nie
verwendet.
Nun sollte eigentlich einem erfolgreichen AVR-Studio-STK500 Projekt nichts mehr
fehlen!!
Steinhart, im September 2008