Laborboard: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
(Share your stories here)
(spam reverted)
Zeile 1: Zeile 1:
Share your stories here, for others to read.
__NOTOC__
 
[[Bild:LaborBoard1.jpg|300px|right]]
 
==Das Laborboard==
Das Laborboard ist ein kleines Board mit dem man Erfahrungen mit Mikrocontrollern machen kann.
 
==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==
* 20.11.2008, Do: [[Microcontroller Workshop]] - Tag 1
* 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==
* [[Blinken Borgs]]
* Peters [[Shortcut-Tastatur]]
* [[Automatisierung des Labors]] mit Hilfe des [[CAN]] Busses und des  [[LAP]] Labor Automation Protokols.
 
* [[Standards zur Verdrahtung]]
 
==Anfangen==
 
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''.
 
==Programmierboard==
Für das Laborboard wird noch ein Programmierkabel oder -board benötigt, um die Programme vom PC auf den AVR zu bringen.
 
=== Parallelport ===
Ein Beschaltungsplan für ein Parallelportprogrammierkabel ist [https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts/ im SVN zu finden].
 
=== Serieller Port ===
Da gäbe es z.B. [http://www.lancos.com/prog.html Ponyprog].
 
=== 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://www.das-labor.org/trac/browser/microcontroller/doc/Layouts/ SVN]).
 
[http://www.fischl.de/usbasp/ usbasp] ist ein kleiner, preiswerter Programmieradapter. Entsprechende Bausätze kann man im Labor zum selbstkostenpreis (8 EUR) kaufen.
 
== Programmiersoftware ==
Damit unsere Programme vom PC auf den AVR kommen, brauchen wir noch Software auf dem PC.
 
=== Linux ===
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 ===
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==
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. ;)
 
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.
 
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 ==
 
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.
 
== Technische Infos zum Laborboard ==
 
=== Pinbelegung des Programmiersteckers ===
        +-----+
    GND | 0 0 | MISO
    GND | 0 0 | SCK
    GND | 0 0  RESET (inv)
    GND | 0 0 | (nicht belegt)
    VCC | 0 0 | MOSI
        +-----+
 
==== Pinbelegung des ALTEN Programmiersteckers ====
'''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==
* 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
* Toolchain installieren (Jetzt der richtige Link): http://www.nongnu.org/avr-libc/user-manual/install_tools.html (keine veralteten ports/packages benutzen! avr-libc kleiner 1.23 hat bugs in malloc)
* ATmega32 Data Sheet: http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf
 
[[Category:Microcontroller]]

Version vom 11. Juni 2009, 18:43 Uhr


LaborBoard1.jpg

Das Laborboard

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

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

Projekte mit dem Labor Micro Board

Anfangen

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.

Programmierboard

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

Parallelport

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

Serieller Port

Da gäbe es z.B. Ponyprog.

USB-Port

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.

Programmiersoftware

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

Linux

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

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

AVR Mac Pack

Fuses setzen

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. ;)

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.

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

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.

Technische Infos zum Laborboard

Pinbelegung des Programmiersteckers

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

Pinbelegung des ALTEN Programmiersteckers

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