Veranstaltungsreihe/Mikrocontroller Workshop: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
K (link verbockt *sigh*)
Keine Bearbeitungszusammenfassung
Zeile 139: Zeile 139:
[[Category:Veranstaltung]]
[[Category:Veranstaltung]]
[[Category:Microcontroller]]
[[Category:Microcontroller]]
test

Version vom 9. Juli 2009, 17:50 Uhr

Trailer

In diesem Workshop werden wir zuerst ein minimales Microcontrollersystem mit einem Atmel AVR Controller auf einer Lochrasterplatine aufbauen, und dann in die Programmierung des Controllers mit dem AVR-gcc einsteigen.

Das Laborboard verwendet den ATmega32 Controller von Atmel. Der hat 32kByte Flash für das Programm und 2kByte RAM, und einen 1kByte EEPROM Speicher. Getaktet wird er mit 16MHz. Er hat 32 frei programmierbare I/O Pins, A/D wandler, und manch anderes nettes Feature. Man kann den Controller mit dem avr-gcc in C programmieren, wobei das aber auch noch ein bisschen was anderes ist, als wenn man für einen PC in C programmiert.


Sammelbestellung

Wer die Bauteile nicht selbst bestellen möchte, kann im Labor einen Bausatz kaufen. Die Bausätze sind allerdings nur begrenzt vorhanden, daher wäre eine Vorbestellung bis spätestens zum 13.11.2008 erwünscht.

Anmeldung

Anmeldung ist nicht verpflichtend, aber wäre erwünscht. Insbesondere für die Sammelbestellung bitte vorher eine Email senden an folgende Adresse:

soeren (ÄT) heisrath punkt org


Tag 1 - 20.11.2008

Der Workshop ist findet über den Zeitraum von 4 Tagen statt. Am ersten Tag wird die Schaltung aufgebaut und Handwerkliche Grundkenntnisse vermittelt.

Tag 2 - 27.11.2008

Bei dem zweiten Termin werden wir dann den Aufbau des Boards zu Ende führen, und uns dann die avr-gcc toolchain ansehen. Wir werden damit ein kleines Testprogramm in C für das Microcontrollersystem schreiben und compilieren, und das dann auf den Controller laden.

Tag 3 - 4.12.2008

Am dritten Termin werden Grundkenntnisse in C vermittelt und vor Allem wie man die Peripherie des Microcontrollers anspricht.

Tag 4 - 11.12.2008

Am vierten Tage werden die Besonderheiten der verwendeten Microcontroller erläutert und wie man diese in der Programmiersprache C verwendet.

Der Workshop ist also sozusagen ein "getting started with microcontrollers workshop". Er soll einen schnellen Einstieg in die Welt der Microcontroller ermöglichen.

Checkliste

Jeder Teilnehmer sollte selber sein Werkzeug mitbringen. Wir brauchen die üblichen Sachen zum Platinen löten

  • Lötkolben
  • Lötzinn
  • Seitenschneider
  • Spitzzange
  • Schaltdraht
  • Bohrer
  • Messer
  • Multimeter


Wenn ihr was davon nicht habt, ist das nicht so schlimm. Man kann sich ja zur Not mit dem Werkzeug abwechseln oder welches aus dem Labor leihen. Bitte bedenkt aber das auch dies nur begrenzt vorhanden ist.

Benötigte Bauteile

Die Bauteilliste für das Board findet ihr jetzt auf einer eigenen Wiki-Seite.

Zusätzlich könnte man an das System noch ein LCD mit HD44780 Controller beliebiger Grösse, und/oder ein Tastenfeld anschliessen. Tastenfelder habe ich bei Reichelt leider nicht gefunden, und bei Displays ist die Auswahl ziemlich gross. Deswegen hier keine Bestellnummern. Eine günstige Art, an ein Display zu kommen ist es, ein altes Faxgerät zu schlachten. Die haben eigentlich immer solche Displays. (und Tasten sind auch noch jede menge drin...) In anderen Geräten findet man auch schonmal solche Displays.

Die Bauteile könnt ihr bei Reichelt Elektronik bestellen. Ich mache auch eine Sammelbestellung.

Falls am Rechner kein Parallelport mehr vorhanden ist, wird zusätzlich ein Programmer benötigt. Wir empfehlen den usbasp Programmer von Thomas Fischl.

Pläne

Die Pläne für das Board und das Programmierkabel gibts im SVN.

https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts

Links

Wer mit bastelt kann sich doch schonmal folgendes zu gemuete fuehren:


Toolchain-bauen

Was ist eine Toolchain?

Als Toolchain bezeichnet man eine Sammlung an Programmen (Tools) mit denen man für einen bestimmten Prozessor Software übersetzen kann. Normalerweise umfasst die Toolchain einen Compiler (gcc), Assembler (gas) und Linker (ld) dazu kommen meist noch die Standard-Librarys (libc).

Toolchain bauen für Gentoo-Linux

Es wird im folgenden davon ausgegangen, dass du bereits root bist

emerge crossdev

Evtl. müsst ihr in die /etc/make.conf noch die Zeile PORTDIR_OVERLAY="/usr/local/portage" einfügen und das entsprechende Verzeichnis anlegen (mkdir -p /usr/local/portage)

crossdev -t avr

und zurücklehnen, denn das dauert ein bischen.

Du solltest nun einen Compiler für den avr haben (avr-gcc).

Toolchain bauen für Mac OSX

Der beste Weg eine aktuelle Version des avr-gcc zu bekommen ist [MacAVR] zu nutzen.

Alternativ kann man auch die nicht ganz so aktuelle Macport Variante nutzen. Zunächst muss man die XCode Tools von der Installations DVD installieren oder sich die neuste aus dem Netz saugen. Als nächstes braucht man [MacPorts].

sudo port install avr-gcc avr-binutils avr-libc avrdude uisp

Falls ihr den mySmartUSB programmer benutzt, braucht ihr auch noch einen [Treiber] für den USB2Serial Chip CP2101. Leider läuft der nicht auf intel mac. Falls jemand einen hat der da auch läuft bitte bei Martin melden! edit: Einen Treiber für Intel-Macs gibt es auf Anfrage beim [Hersteller]. Informationen dazu findet Ihr in der MCU Knowlegdebase.

Der usbasp Programmer funktioniert problemlos auf OSX, einfach

avrdude -c usbasp 

Toolchain installieren bei ubuntu

sudo apt-get install gcc-avr avr-libc avrdude

Programm in den Controller laden

Um ein Programm in den Controller zu laden, brauchst Du ein .hex File, dass Dir der Compiler erzeugt. Wie das genau geht, steht in der avr-libc Dokumentation(siehe Link). Das HEX File ist der Maschinencode, der in das Flash des Controller geladen werden kann. Um das file hoch zu laden benutze:


parallel

 uisp -dprog=bsd --erase
 uisp -dprog=bsd --upload if=file.hex

 avrdude -c bsd -p m32  -U flash:w:file.hex

my smart usb Programmer

 avrdude -c avr910 -p m32 -P /dev/ttyProgramer -U flash:w:file.hex

usbasp Programmer

avrdude -c usbasp -U image.hex  -p atmega32                                                   

Wenn die mittleren 4 LED's nicht gehen, dann liegt das wahrscheinlich daran, dass das jtag debugging aktiv ist, was diese 4 Pins benutzt. Um das aus zu schalten kann man uisp den Parameter --wr_fuse_h=0xD9 geben. Achtung! Setzten der Fuses auf dumme Werte kann den Controller unbrauchbar machen - also nur verstellen, wenn ihr wisst, was ihr tut!!!

Demo Programme

Diverse kleine Demoprogramme (z.B. LED-Test) gibt es im Subversion unter https://www.das-labor.org/trac/browser/microcontroller/src-atmel/tests


test