Laborboard: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
(Laborboard deprecated)
 
(41 dazwischenliegende Versionen von 22 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{ProjektInfoBox
|name=Laborboard
|status=obsolete
|image=LaborBoard1.jpg
|description=Das Laborboard ist ein kleines Board mit dem man Erfahrungen mit Mikrocontrollern machen kann.
|tags=Microcontroller & FPGAs, Microcontroller,
}}
__NOTOC__
__NOTOC__


[[Bild:LaborBoard1.jpg|300px|right]]


==Das Laborboard==
==Woraus besteht es?==
Das Laborboard ist ein kleines Board mit dem man Erfahrungen mit Mikrocontrollern machen kann.
Das Board besteht im Kern aus einem AVR-Controller (AVR ist die Sammelbezeichnung für die Atmel-Mikroprozessorfamilie, hier wird der ATmega32 verwendet), an den 4 Taster angeschlossen sind (Port B) und 8 LEDs (Port C). Ansonsten befindet sich auf der Platine noch ein 16 MHz Quarz für die Taktung, ein Reset-Taster, und eine kleine Schaltung zum Stabilisieren der Versorgungsspannung.
 
==Woraus bestehts?==
Das Board besteht im Kern aus einem AVR-Controller (AVR ist die Sammelbezeichnung für die Atmel-Mikroprozessorfamilie, hier wird der ATmega32 verwendet), an den 4 Taster angeschlossen sind (Port B) und 8 LEDs (Port C). Ansonsten befindet sich auf der Platine noch ein 16 MHz Quartz für die Taktung, ein Reset-Taster, und eine kleine Schaltung zum Stabilisieren der Versorgungsspannung.


==Hingehen==
==Hingehen==
* 20.11.2008, Do: [[Microcontroller Workshop]] - Tag 1
Der [[Microcontroller Workshop]] findet etwa einmal jährlich statt.
* 27.11.2008, Do: [[Microcontroller Workshop]] - Tag 2
* 04.12.2008, Do: [[Microcontroller Workshop]] - Tag 3
* 11.12.2008, Do: [[Microcontroller Workshop]] - Tag 4


==Projekte mit dem Labor Micro Board==
==Projekte mit dem Labor Micro Board==
* [[Blinken Borgs]]  
* [[Blinken Borgs]]  
* Peters [[Shortcut-Tastatur]]
* [[Automatisierung des Labors]] mit Hilfe des [[CAN]] Busses und des  [[LAP]] Labor Automation Protokols.
* [[Automatisierung des Labors]] mit Hilfe des [[CAN]] Busses und des  [[LAP]] Labor Automation Protokols.


* [[Standards zur Verdrahtung]]


==Anfangen==
==Anfangen==


Die Liste mit den benötigten [[LaborBoardTeile|Bauteilen]] findet Ihr hier im Wiki -- Den Schalt- und Bestückungsplan gibt es hier ''https://roulette.das-labor.org/svnview/microcontroller/doc/Layouts/'' . Eine Menge Beispielcode gibt es im im [[Subversion]] unter ''https://roulette.das-labor.org/svnview/microcontroller''.
Die Liste mit den benötigten [[LaborBoardTeile|Bauteilen]] findet Ihr hier im Wiki -- Den Schalt- und Bestückungsplan gibt es hier ''https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts/'' . Eine Menge Beispielcode gibt es im im [[Subversion]] unter ''https://www.das-labor.org/trac/browser/microcontroller''.
 
Das Laborboard kann im Labor als [[Bausätze |Bausatz]] erworben werden.
 
==Modifikationen==
Ein paar kleine Modifikationen, die dir später vielleicht die Arbeit ein bisschen erleichtern können.
=====Zusätzliche Abgriffe für Masse und VCC=====
Zum Durchmessen wird ein Bezugspunkt benötigt, häufig sind dies Masse oder VCC. Mit ein paar zusätzlich eingesetzten Stiftleisten können diese sehr einfach abgegriffen werden. Als Position bietet sich der Bereich rechts neben dem Prozessor an, siehe [https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts/Laborboard-2006-board.png Layout].
 
Zusätzliche benötigte Bauteile:
* Stiftleisten (im Bausatz sind genug enthalten)
 
=====LEDs trennbar=====
Mit dem DDRC sind 8 LEDs verbunden. Diese Anschlüsse können damit nur noch eingeschränkt genutzt werden, z.B. bei Bausteinen mit nur schwach belastbarem Ausgang.
 
Hier kannst du zwei Stiftreihen parallel einlöten, die eine mit dem Prozessor verbunden, die zweite mit den Vorwiderständen. Wenn du diese Stifte mit Jumpern verbindest, sind die LEDs mit dem DDRC verbunden, ansonsten ist der DDRC frei nutzbar.
 
Zusätzliche benötigte Bauteile:
* Stiftleisten (im Bausatz sind genug enthalten)
* 8 Jumper
 
=== USB Addon ===
[[Datei:Laborboard-2006-usb_addon.png|200px|Laborboard mit USB Addon|right]] Es ist möglich, das Laborboard mit einem USB- Anschluss zu versehen. Dazu müssen einige wenige Bauteile angelötet werden (siehe Bild).
 
Der Vorteil des USB Addons ist, das man es mit geeignetem Bootloader (z.B. [http://www.obdev.at/products/vusb/bootloadhid.html BootloadHID]) ganz ohne zusätzlichen Programmer neu flashen kann. Der Bootloader wird immer aktiv, wenn der AVR reset'ed (bzw. angeschaltet) wird. Er ermöglicht das Flashen (also beschreiben) des AVRs.
 
==== Benutzung von BootloadHID ====
===== 1. Software herunterladen =====
Lade Dir die Software von der [http://www.obdev.at/products/vusb/bootloadhid.html Projektseite] herunter und Entpacke sie in ein Verzeichnis Deiner Wahl.
 
===== 2. Bootloader Config Anpassen =====
'''Wenn Du schon einen funktionierenden Bootloader von uns erhalten hast, kannst Du diesen Schritt überspringen'''.
 
Öffne die Datei '''firmware/bootloaderconfig.h''' mit einem Editor, suche und ändere die Zeilen, in denen die folgenden Einstellungen stehen:
#define USB_CFG_IOPORTNAME D
#define USB_CFG_DMINUS_BIT 6
#define USB_CFG_DPLUS_BIT 2
Etwas weiter unten in der selben Datei findest Du die Funktion '''bootLoaderInit(void)'''. Diese muss wie folgt geändert werden:
static inline void bootLoaderInit(void)
{
    DDRB &= ~(_BV(PB0)); /* PB0 auf Eingang */
    PORTB |= _BV(PB0);  /* Pullup anschalten */
    _delay_us(10);
}
Direkt darunter findet sich die Definition für das Makro '''bootLoaderCondition()'''. Ändere dies wie folgt:
#define bootLoaderCondition() (!(PINB & _BV(PB0)))
 
 
Jetzt muss nur noch die '''Makefile''' angepasst werden:
DEVICE = atmega32
BOOTLOADER_ADDRESS = 7800
F_CPU = 16000000
FUSEH = 0xca
FUSEL = 0x9f
 
Ggf. musst Du noch die Zeile mit der Definition für "AVRDUDE" an Deinen Programmer anpassen (z.B. '''-c usbasp''' für den USBasp).
 
Für Release 2010-07-29 sieht die Definition wie folgt aus:
AVRDUDE = avrdude -c bsd -p $(DEVICE)
 
 
Danach kannst Du mit dem folgenden Befehl den Bootloader auf dem Laborboard installieren:
make clean fuse flash
 
===== 3. Software installieren =====
Der Bootloader besteht aus 2 Teilen: Der Firmware auf dem AVR (die jetzt installiert sein sollte), sowie einem Programm auf dem PC, das die Firmware schreibt.
 
Wenn du '''Linux''' benutzt, musst Du die libusb header installieren und dann die Software kompilieren. Für '''Debian und Ubuntu''' musst du entsprechende Pakete nachinstallieren:
aptitude install build-essential libusb-dev make
Wechsel danach in das Verzeichnis '''commandline''' und tippe '''make'''. Wenn alles sauber kompiliert, kannst du die Software mit '''sudo cp bootloadHID /usr/local/sbin''' auf Deinem System "installieren".
 
Wenn du '''Windows''' nutzt, findest du im Verzeichnis '''commandline''' die Datei '''bootloadHID.exe'''. Diese lässt sich genauso wie das Linux Programm nutzen.
 
===== 4. Neue Firmware installieren =====
Wann immer Du neue Firmware auf den AVR installieren möchtest, kannst Du jetzt das Laborboard an den USB Bus anschliessen und bootloadHID dafür benutzen. Die o.g. Konfiguration (s. Schritt 1) ist so eingestellt, das der Bootloader aktiv wird, wenn man den Button an PB0 (der Button Links Oben nahe dem 7805) gedrückt hält.
 
Wenn du also eine neue Firmware installieren möchtest, musst Du den Button gedrückt halten, den AVR reset'en und danach folgenden Befehl eingeben:
bootloadHID neue_firmware.hex


==Programmierboard==
==Programmierboard==
Zeile 30: Zeile 105:


=== Parallelport ===
=== Parallelport ===
Ein Beschaltungsplan für ein Parallelportprogrammierkabel ist [https://roulette.das-labor.org/trac/browser/microcontroller/doc/Layouts/ im SVN zu finden].
Ein Beschaltungsplan für ein Parallelportprogrammierkabel ist [https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts/ im SVN zu finden].


=== Serieller Port ===
=== Serieller Port ===
Zeile 36: Zeile 111:


=== USB-Port ===
=== USB-Port ===
Ein sehr flexibles Programmierboard ist [http://www.embedded-projects.net/usbprog USBprog] von Bernhard Sauter. Es ist (bei entsprechender Firmware) voll kompatibel mit dem [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3808 AVR ISP mkII Programmierboard] von [http://www.atmel.com Atmel], jedoch wesentlich flexibler einzusetzen (mittels anderer Firmwares). Es ist außerdem pinkompatibel mit dem Programmierstecker auf unserem Laborboard von 2006 (siehe [https://roulette.das-labor.org/trac/browser/microcontroller/doc/Layouts/ SVN]).
Ein sehr flexibles Programmierboard ist [http://www.embedded-projects.net/usbprog USBprog] von Bernhard Sauter. Es ist (bei entsprechender Firmware) voll kompatibel mit dem [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3808 AVR ISP mkII Programmierboard] von [http://www.atmel.com Atmel], jedoch wesentlich flexibler einzusetzen (mittels anderer Firmwares). Es ist außerdem pinkompatibel mit dem Programmierstecker auf unserem Laborboard von 2006 (siehe [https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts/ SVN]).
 
 
[[usbasp]] ist ein kleiner, preiswerter Programmieradapter. Entsprechende Bausätze kann man im Labor zum selbstkostenpreis (8 EUR) kaufen.
 
Neben der eigentlich dazugehörigen Firmware existiert noch eine wesentlich flexiblere Variante von Christian Ulrich, welche [http://www.ullihome.de/index.php/USBAVR-ISP-Download/de hier] zu finden ist. Mittels eines Bootloaders und zugehöriger Software kann nach jedem Anstecken des Adapters eine andere Firmware-Varianten geladen werden, u.a. STK500, AVR ISP mkII, JTAGice mkII und viele andere. Die Firmware funktioniert ohne bauliche Veränderungen am usbasp, jedoch unbedingt auf die geänderten Fuses achten!


== Programmiersoftware ==
== Programmiersoftware ==
Zeile 46: Zeile 126:
=== Windows ===
=== Windows ===
Das offizielle Tool ist [http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725 AVR Studio]. Hat auch den benötigten Compiler dabei und funktioniert mindestens mit dem AVR ISP mkII bzw. dem USBprog-Board (mit AVRISP2 Firmware). Noch gibt es hier aber keine Anleitung dafür.
Das offizielle Tool ist [http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725 AVR Studio]. Hat auch den benötigten Compiler dabei und funktioniert mindestens mit dem AVR ISP mkII bzw. dem USBprog-Board (mit AVRISP2 Firmware). Noch gibt es hier aber keine Anleitung dafür.
=== Mac OS X ===
[http://www.obdev.at/products/avrmacpack/index-de.html AVR Mac Pack]


==Fuses setzen==
==Fuses setzen==
Zeile 51: Zeile 135:


...ok, you have been warned. ;)
...ok, you have been warned. ;)
Falls ihr es trotzdem braucht kann der [[http://www.engbedded.com/fusecalc/ fusecalc]] hilfreich sein.


Erst mal setzen wir uns die avrdude-Parameter für unseren Programmer und AVR in eine Umgebungsvariable, damit wir die nicht immer tippen müssen:
Erst mal setzen wir uns die avrdude-Parameter für unseren Programmer und AVR in eine Umgebungsvariable, damit wir die nicht immer tippen müssen:


   AVR="-c bsd -p m32"                # für ein bsd-Programmierkabel (z.B. das oben beschriebene Parallelportkabel)
   AVR="-c bsd -p m32"                # für ein bsd-Programmierkabel (z.B. das oben beschriebene Parallelportkabel)
  AVR="-c usbasp -p m32"              # für das USBasp Programmierkabel, der Selbstbausatz
   AVR="-c avrispmkII -P usb -p m32"  # für AVR ISP mkII bzw. das USBprog-Board
   AVR="-c avrispmkII -P usb -p m32"  # für AVR ISP mkII bzw. das USBprog-Board


Zeile 72: Zeile 159:


...nun sollte eine Erfolgsmeldung erscheinen.
...nun sollte eine Erfolgsmeldung erscheinen.
Die Fuses können auch ohne Terminal geschrieben werden (der manchmal Probleme hat) und zwar mit diesem Befehl:
  avrdude $AVR -U lfuse:w:0x9F:m -U hfuse:w:0xC9:m


Wenn man avrdude nicht hat, kannn man alternativ auch uisp benutzen:
Wenn man avrdude nicht hat, kannn man alternativ auch uisp benutzen:
Zeile 82: Zeile 173:
Erst mal checken wir die Quellcodes der Beispielprogramme aus:
Erst mal checken wir die Quellcodes der Beispielprogramme aus:


   svn checkout https://roulette.das-labor.org/svn/microcontroller/src-atmel laborboard-sourcen
   svn checkout https://www.das-labor.org/svn/microcontroller/src-atmel laborboard-sourcen


... und nehmen als ersten Test das Programm ''helloboard'':
... und nehmen als ersten Test das Programm ''helloboard'':
Zeile 91: Zeile 182:


Und wenn alles gut gegangen ist, blinken die 8 LEDs auf dem Laborboard nun munter vor sich hin.
Und wenn alles gut gegangen ist, blinken die 8 LEDs auf dem Laborboard nun munter vor sich hin.
== Weitere Beispiele ==
[[Laborboard_RS232]]


== Technische Infos zum Laborboard ==
== Technische Infos zum Laborboard ==
 
===Pinbelegung des Programmiersteckers===
=== Pinbelegung des Programmiersteckers ===
         +-----+
         +-----+
     GND | 0 0 | MISO
     GND | 0 0 | MISO
Zeile 100: Zeile 192:
     GND | 0 0  RESET (inv)
     GND | 0 0  RESET (inv)
     GND | 0 0 | (nicht belegt)
     GND | 0 0 | (nicht belegt)
    VCC | 0 0 | MOSI
(2)VCC | 0 0 | MOSI (1)
         +-----+
         +-----+


==== Pinbelegung des ALTEN Programmiersteckers ====
===Pinbelegung des ALTEN (pre 2006) Laborboards===
'''Dies ist eine veraltete Alternative zum obigen Stecker, sollte allerdings nicht mehr verwendet werden, da nicht kompatibel zur gängigeren, obigen Belegung.'''
'''Dies ist eine veraltete Alternative zum obigen Stecker, sollte allerdings nicht mehr verwendet werden, da nicht kompatibel zur gängigeren, obigen Belegung.'''


Zeile 113: Zeile 205:


==Links==
==Links==
* usbasp: http://www.fischl.de/usbasp/
* Tutorial zum AVR + gcc: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
* Tutorial zum AVR + gcc: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
* Manual der avr-libc: http://www.nongnu.org/avr-libc/user-manual/index.html
* Manual der avr-libc: http://www.nongnu.org/avr-libc/user-manual/index.html

Aktuelle Version vom 15. März 2021, 21:43 Uhr

 
Laborboard

Release status: obsolete [box doku]

LaborBoard1.jpg
Description Das Laborboard ist ein kleines Board mit dem man Erfahrungen mit Mikrocontrollern machen kann.




Woraus besteht es?[Bearbeiten | Quelltext bearbeiten]

Das Board besteht im Kern aus einem AVR-Controller (AVR ist die Sammelbezeichnung für die Atmel-Mikroprozessorfamilie, hier wird der ATmega32 verwendet), an den 4 Taster angeschlossen sind (Port B) und 8 LEDs (Port C). Ansonsten befindet sich auf der Platine noch ein 16 MHz Quarz für die Taktung, ein Reset-Taster, und eine kleine Schaltung zum Stabilisieren der Versorgungsspannung.

Hingehen[Bearbeiten | Quelltext bearbeiten]

Der Microcontroller Workshop findet etwa einmal jährlich statt.

Projekte mit dem Labor Micro Board[Bearbeiten | Quelltext bearbeiten]


Anfangen[Bearbeiten | Quelltext bearbeiten]

Die Liste mit den benötigten Bauteilen findet Ihr hier im Wiki -- Den Schalt- und Bestückungsplan gibt es hier https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts/ . Eine Menge Beispielcode gibt es im im Subversion unter https://www.das-labor.org/trac/browser/microcontroller.

Das Laborboard kann im Labor als Bausatz erworben werden.

Modifikationen[Bearbeiten | Quelltext bearbeiten]

Ein paar kleine Modifikationen, die dir später vielleicht die Arbeit ein bisschen erleichtern können.

Zusätzliche Abgriffe für Masse und VCC[Bearbeiten | Quelltext bearbeiten]

Zum Durchmessen wird ein Bezugspunkt benötigt, häufig sind dies Masse oder VCC. Mit ein paar zusätzlich eingesetzten Stiftleisten können diese sehr einfach abgegriffen werden. Als Position bietet sich der Bereich rechts neben dem Prozessor an, siehe Layout.

Zusätzliche benötigte Bauteile:

  • Stiftleisten (im Bausatz sind genug enthalten)
LEDs trennbar[Bearbeiten | Quelltext bearbeiten]

Mit dem DDRC sind 8 LEDs verbunden. Diese Anschlüsse können damit nur noch eingeschränkt genutzt werden, z.B. bei Bausteinen mit nur schwach belastbarem Ausgang.

Hier kannst du zwei Stiftreihen parallel einlöten, die eine mit dem Prozessor verbunden, die zweite mit den Vorwiderständen. Wenn du diese Stifte mit Jumpern verbindest, sind die LEDs mit dem DDRC verbunden, ansonsten ist der DDRC frei nutzbar.

Zusätzliche benötigte Bauteile:

  • Stiftleisten (im Bausatz sind genug enthalten)
  • 8 Jumper

USB Addon[Bearbeiten | Quelltext bearbeiten]

Laborboard mit USB Addon

Es ist möglich, das Laborboard mit einem USB- Anschluss zu versehen. Dazu müssen einige wenige Bauteile angelötet werden (siehe Bild).

Der Vorteil des USB Addons ist, das man es mit geeignetem Bootloader (z.B. BootloadHID) ganz ohne zusätzlichen Programmer neu flashen kann. Der Bootloader wird immer aktiv, wenn der AVR reset'ed (bzw. angeschaltet) wird. Er ermöglicht das Flashen (also beschreiben) des AVRs.

Benutzung von BootloadHID[Bearbeiten | Quelltext bearbeiten]

1. Software herunterladen[Bearbeiten | Quelltext bearbeiten]

Lade Dir die Software von der Projektseite herunter und Entpacke sie in ein Verzeichnis Deiner Wahl.

2. Bootloader Config Anpassen[Bearbeiten | Quelltext bearbeiten]

Wenn Du schon einen funktionierenden Bootloader von uns erhalten hast, kannst Du diesen Schritt überspringen.

Öffne die Datei firmware/bootloaderconfig.h mit einem Editor, suche und ändere die Zeilen, in denen die folgenden Einstellungen stehen:

#define USB_CFG_IOPORTNAME D
#define USB_CFG_DMINUS_BIT 6
#define USB_CFG_DPLUS_BIT 2

Etwas weiter unten in der selben Datei findest Du die Funktion bootLoaderInit(void). Diese muss wie folgt geändert werden:

static inline void bootLoaderInit(void)
{
    DDRB &= ~(_BV(PB0)); /* PB0 auf Eingang */
    PORTB |= _BV(PB0);   /* Pullup anschalten */
    _delay_us(10);
}

Direkt darunter findet sich die Definition für das Makro bootLoaderCondition(). Ändere dies wie folgt:

#define bootLoaderCondition() (!(PINB & _BV(PB0)))


Jetzt muss nur noch die Makefile angepasst werden:

DEVICE = atmega32
BOOTLOADER_ADDRESS = 7800
F_CPU = 16000000
FUSEH = 0xca
FUSEL = 0x9f

Ggf. musst Du noch die Zeile mit der Definition für "AVRDUDE" an Deinen Programmer anpassen (z.B. -c usbasp für den USBasp).

Für Release 2010-07-29 sieht die Definition wie folgt aus:

AVRDUDE = avrdude -c bsd -p $(DEVICE)


Danach kannst Du mit dem folgenden Befehl den Bootloader auf dem Laborboard installieren:

make clean fuse flash
3. Software installieren[Bearbeiten | Quelltext bearbeiten]

Der Bootloader besteht aus 2 Teilen: Der Firmware auf dem AVR (die jetzt installiert sein sollte), sowie einem Programm auf dem PC, das die Firmware schreibt.

Wenn du Linux benutzt, musst Du die libusb header installieren und dann die Software kompilieren. Für Debian und Ubuntu musst du entsprechende Pakete nachinstallieren:

aptitude install build-essential libusb-dev make

Wechsel danach in das Verzeichnis commandline und tippe make. Wenn alles sauber kompiliert, kannst du die Software mit sudo cp bootloadHID /usr/local/sbin auf Deinem System "installieren".

Wenn du Windows nutzt, findest du im Verzeichnis commandline die Datei bootloadHID.exe. Diese lässt sich genauso wie das Linux Programm nutzen.

4. Neue Firmware installieren[Bearbeiten | Quelltext bearbeiten]

Wann immer Du neue Firmware auf den AVR installieren möchtest, kannst Du jetzt das Laborboard an den USB Bus anschliessen und bootloadHID dafür benutzen. Die o.g. Konfiguration (s. Schritt 1) ist so eingestellt, das der Bootloader aktiv wird, wenn man den Button an PB0 (der Button Links Oben nahe dem 7805) gedrückt hält.

Wenn du also eine neue Firmware installieren möchtest, musst Du den Button gedrückt halten, den AVR reset'en und danach folgenden Befehl eingeben:

bootloadHID neue_firmware.hex

Programmierboard[Bearbeiten | Quelltext bearbeiten]

Für das Laborboard wird noch ein Programmierkabel oder -board benötigt, um die Programme vom PC auf den AVR zu bringen.

Parallelport[Bearbeiten | Quelltext bearbeiten]

Ein Beschaltungsplan für ein Parallelportprogrammierkabel ist im SVN zu finden.

Serieller Port[Bearbeiten | Quelltext bearbeiten]

Da gäbe es z.B. Ponyprog.

USB-Port[Bearbeiten | Quelltext bearbeiten]

Ein sehr flexibles Programmierboard ist USBprog von Bernhard Sauter. Es ist (bei entsprechender Firmware) voll kompatibel mit dem AVR ISP mkII Programmierboard von Atmel, jedoch wesentlich flexibler einzusetzen (mittels anderer Firmwares). Es ist außerdem pinkompatibel mit dem Programmierstecker auf unserem Laborboard von 2006 (siehe SVN).


usbasp ist ein kleiner, preiswerter Programmieradapter. Entsprechende Bausätze kann man im Labor zum selbstkostenpreis (8 EUR) kaufen.

Neben der eigentlich dazugehörigen Firmware existiert noch eine wesentlich flexiblere Variante von Christian Ulrich, welche hier zu finden ist. Mittels eines Bootloaders und zugehöriger Software kann nach jedem Anstecken des Adapters eine andere Firmware-Varianten geladen werden, u.a. STK500, AVR ISP mkII, JTAGice mkII und viele andere. Die Firmware funktioniert ohne bauliche Veränderungen am usbasp, jedoch unbedingt auf die geänderten Fuses achten!

Programmiersoftware[Bearbeiten | Quelltext bearbeiten]

Damit unsere Programme vom PC auf den AVR kommen, brauchen wir noch Software auf dem PC.

Linux[Bearbeiten | Quelltext bearbeiten]

Da gibt es eine Unmenge von Tools, beispielsweise avrdude und uisp. Für den Anfang: Benutz einfach deinen Lieblingspaketmanager und installiere avrdude, gcc-avr, avr-libc und make, weil die in diesem Mini-Tutorial benutzt werden. Wenn deine Distribution die Pakete hat, könnten die Folgenden später interessant werden: gdb-avr simulavr avra binutils-avr sdcc.

Windows[Bearbeiten | Quelltext bearbeiten]

Das offizielle Tool ist AVR Studio. Hat auch den benötigten Compiler dabei und funktioniert mindestens mit dem AVR ISP mkII bzw. dem USBprog-Board (mit AVRISP2 Firmware). Noch gibt es hier aber keine Anleitung dafür.

Mac OS X[Bearbeiten | Quelltext bearbeiten]

AVR Mac Pack

Fuses setzen[Bearbeiten | Quelltext bearbeiten]

Damit der Controller nun auch mit dem externen Quarz oszilliert, und PORTC auf allen Pins die LEDs steuern kann, muss man die Fuses richtig setzen. "Fuses" sind im AVR gespeicherte "Chipkonfigurationsschalter". VORSICHT, FALSCHE FUSES KÖNNEN DEN AVR UNBRAUCHBAR MACHEN!. Die Reihenfolge ist auch wichtig: Erst hfuse, dann lfuse setzen.

...ok, you have been warned. ;)

Falls ihr es trotzdem braucht kann der [fusecalc] hilfreich sein.

Erst mal setzen wir uns die avrdude-Parameter für unseren Programmer und AVR in eine Umgebungsvariable, damit wir die nicht immer tippen müssen:

 AVR="-c bsd -p m32"                 # für ein bsd-Programmierkabel (z.B. das oben beschriebene Parallelportkabel)
 AVR="-c usbasp -p m32"              # für das USBasp Programmierkabel, der Selbstbausatz
 AVR="-c avrispmkII -P usb -p m32"   # für AVR ISP mkII bzw. das USBprog-Board

Alle Kabel eingesteckt? Dann gucken wir mal, ob unser AVR sich meldet:

 avrdude $AVR -v

Jetzt setzen wir die Fuses, um den richtigen Arbeitsmodus zu erhalten (externer Quarz, interner Speicher usw.) Dann öffnen wir das "Terminal" vom Programmer:

 avrdude $AVR -t

...eine art Konsole geht auf...

 write hfuse 0 0xc9
 write lfuse 0 0x9f
 quit

...nun sollte eine Erfolgsmeldung erscheinen.

Die Fuses können auch ohne Terminal geschrieben werden (der manchmal Probleme hat) und zwar mit diesem Befehl:

 avrdude $AVR -U lfuse:w:0x9F:m -U hfuse:w:0xC9:m 

Wenn man avrdude nicht hat, kannn man alternativ auch uisp benutzen:

 uisp -dprog=bsd --wr_fuse_h=0xc9
 uisp -dprog=bsd --wr_fuse_l=0x9f

Erstes Beispielprogramm[Bearbeiten | Quelltext bearbeiten]

Erst mal checken wir die Quellcodes der Beispielprogramme aus:

 svn checkout https://www.das-labor.org/svn/microcontroller/src-atmel laborboard-sourcen

... und nehmen als ersten Test das Programm helloboard:

 cd laborboard-sourcen/tests/helloboard/
 make
 avrdude $AVR -U image.hex

Und wenn alles gut gegangen ist, blinken die 8 LEDs auf dem Laborboard nun munter vor sich hin.

Weitere Beispiele[Bearbeiten | Quelltext bearbeiten]

Laborboard_RS232

Technische Infos zum Laborboard[Bearbeiten | Quelltext bearbeiten]

Pinbelegung des Programmiersteckers[Bearbeiten | Quelltext bearbeiten]

       +-----+
   GND | 0 0 | MISO
   GND | 0 0 | SCK
   GND | 0 0   RESET (inv)
   GND | 0 0 | (nicht belegt)
(2)VCC | 0 0 | MOSI (1)
       +-----+

Pinbelegung des ALTEN (pre 2006) Laborboards[Bearbeiten | Quelltext bearbeiten]

Dies ist eine veraltete Alternative zum obigen Stecker, sollte allerdings nicht mehr verwendet werden, da nicht kompatibel zur gängigeren, obigen Belegung.

 5 - RESET (inv)
 4 - SCK
 3 - MISO
 2 - MOSI
 1 - GND

Links[Bearbeiten | Quelltext bearbeiten]