Veranstaltungsreihe/Mikrocontroller Workshop: Unterschied zwischen den Versionen
Soeren (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
|||
Zeile 6: | Zeile 6: | ||
=Termine= | =Termine= | ||
Der Workshop erstreckt sich über 4 Abende, jeweils Donnerstags beginnend ab dem 13.1.2011. | Der Workshop erstreckt sich über 4 Abende, jeweils Donnerstags beginnend ab dem 13.1.2011. | ||
=== Do, | === Do, 18.04.2013 :: Aufbau des Bausatzes === | ||
Am ersten Tag wird die Schaltung aufgebaut und Handwerkliche Grundkenntnisse vermittelt. Dieser Tag ist ausschliesslich zum Löten gedacht. | Am ersten Tag wird die Schaltung aufgebaut und Handwerkliche Grundkenntnisse vermittelt. Dieser Tag ist ausschliesslich zum Löten gedacht. | ||
=== Do, | === Do, 25.04.2013 :: Microcontroller Basics === | ||
Am 2. Tag gibt es eine Einführung zum Thema Microcontroller, sowie seine Funktionen. Gemeinsam wird eine Beispielanwendung (in C) entwickelt, die die LEDs des Boards ansteuert und Buttons abfragen kann. | Am 2. Tag gibt es eine Einführung zum Thema Microcontroller, sowie seine Funktionen. Gemeinsam wird eine Beispielanwendung (in C) entwickelt, die die LEDs des Boards ansteuert und Buttons abfragen kann. | ||
Zeile 15: | Zeile 15: | ||
Ferner erläutern wir den Umgang mit den Werkzeugen, die Du benötigst um ihn zu programmieren (z.B. avrdude, avr-gcc). | Ferner erläutern wir den Umgang mit den Werkzeugen, die Du benötigst um ihn zu programmieren (z.B. avrdude, avr-gcc). | ||
=== Do, | === Do, 09.05.2013 :: Zusatzfunktionen des Micrcontrollers === | ||
Am dritten Tag des Workshops beschäftigen wir uns mit den Zusatzfunktionen des Microcontrollers. Es gibt jeweils eine kleine Einführung zu folgenden Themen: | Am dritten Tag des Workshops beschäftigen wir uns mit den Zusatzfunktionen des Microcontrollers. Es gibt jeweils eine kleine Einführung zu folgenden Themen: | ||
* Timer & PWM | * Timer & PWM | ||
Zeile 22: | Zeile 22: | ||
* U(S)ART - Also die "serielle schnittstelle" | * U(S)ART - Also die "serielle schnittstelle" | ||
=== Do, | === Do, 16.05.2013 :: Peripherie & Ausblick === | ||
An diesem Tag gibt es drei kleine Vorträge und Beispiele zu folgenden Themen: | An diesem Tag gibt es drei kleine Vorträge und Beispiele zu folgenden Themen: | ||
* [[Datenfunk mit dem AVR]] | * [[Datenfunk mit dem AVR]] | ||
Zeile 28: | Zeile 28: | ||
* Anschluss des Controllers an den USB Bus | * Anschluss des Controllers an den USB Bus | ||
Übrigends: Zum Basteln, Löten oder Fachsimpeln kannst Du jederzeit ins Labor kommen (sofern es offen ist) - ganz egal ob Mitglied oder nicht. | Übrigends: Zum Basteln, Löten oder Fachsimpeln kannst Du jederzeit ins Labor kommen (sofern es offen ist) - ganz egal ob Mitglied oder nicht. | ||
== | == Programmer == | ||
Bitte beachte das Du ggf. auch einen Programmer benötigst. Alternativ kannst Du auch eine USB Buchse an das Board löten (siehe [[LaborBoardTeile]]). Wenn Du also zusätzlich einen Programmer oder die Bauteile für das USB Addon benötigst, sage uns bitte in der Mail für die Sammelbestellung bescheid. | Bitte beachte das Du ggf. auch einen Programmer benötigst. Alternativ kannst Du auch eine USB Buchse an das Board löten (siehe [[LaborBoardTeile]]). Wenn Du also zusätzlich einen Programmer oder die Bauteile für das USB Addon benötigst, sage uns bitte in der Mail für die Sammelbestellung bescheid. | ||
Version vom 24. März 2013, 21:50 Uhr
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.
Termine
Der Workshop erstreckt sich über 4 Abende, jeweils Donnerstags beginnend ab dem 13.1.2011.
Do, 18.04.2013 :: Aufbau des Bausatzes
Am ersten Tag wird die Schaltung aufgebaut und Handwerkliche Grundkenntnisse vermittelt. Dieser Tag ist ausschliesslich zum Löten gedacht.
Do, 25.04.2013 :: Microcontroller Basics
Am 2. Tag gibt es eine Einführung zum Thema Microcontroller, sowie seine Funktionen. Gemeinsam wird eine Beispielanwendung (in C) entwickelt, die die LEDs des Boards ansteuert und Buttons abfragen kann.
Ferner erläutern wir den Umgang mit den Werkzeugen, die Du benötigst um ihn zu programmieren (z.B. avrdude, avr-gcc).
Do, 09.05.2013 :: Zusatzfunktionen des Micrcontrollers
Am dritten Tag des Workshops beschäftigen wir uns mit den Zusatzfunktionen des Microcontrollers. Es gibt jeweils eine kleine Einführung zu folgenden Themen:
- Timer & PWM
- ADC (Analog Digital Converter)
- Watchdog
- U(S)ART - Also die "serielle schnittstelle"
Do, 16.05.2013 :: Peripherie & Ausblick
An diesem Tag gibt es drei kleine Vorträge und Beispiele zu folgenden Themen:
- Datenfunk mit dem AVR
- Vernetzung mit dem CAN Bus
- Anschluss des Controllers an den USB Bus
Übrigends: Zum Basteln, Löten oder Fachsimpeln kannst Du jederzeit ins Labor kommen (sofern es offen ist) - ganz egal ob Mitglied oder nicht.
Programmer
Bitte beachte das Du ggf. auch einen Programmer benötigst. Alternativ kannst Du auch eine USB Buchse an das Board löten (siehe LaborBoardTeile). Wenn Du also zusätzlich einen Programmer oder die Bauteile für das USB Addon benötigst, sage uns bitte in der Mail für die Sammelbestellung bescheid.
Anmeldung
Anmeldung ist nicht nötig, aber wäre erwünscht (damit wir abschätzen können wer alles kommt). Insbesondere für die Sammelbestellung bitte vorher eine Email senden an folgende Adresse:
orga (ÄT) das-labor punkt org
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 Du etwas davon nicht hast, ist das nicht so schlimm. Im Labor ist Werkzeug vorhanden, jedoch in begrenzter Anzahl.
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. Dieser kann ebenfalls zum Preis von 8 EUR im Labor erworben werden.
Pläne
Die Pläne für das Board und das Programmierkabel gibts im SVN. Leider sind diese ein wenig verwirrent. Dargestellt ist die Draufsicht, aber die Leiterbahnen müssen auf der Unterseite angebracht werden, es ist also alles spiegelverkehrt zu verlöten.
https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts
Links
Wer mit bastelt kann sich doch schonmal folgendes zu gemüte fuehren:
- Toolchain installieren (Jetzt der richtige Link): http://www.nongnu.org/avr-libc/user-manual/install_tools.html
- ATmega32 Data Sheet: http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf
- Manual der avr-libc: http://www.nongnu.org/avr-libc/user-manual/index.html
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 [CrossPack AVR] zu nutzen.
Ich empfehle die XCode Tools von der Installations DVD (oder mit AppleAccount aus dem Internet von [1] ca. 900 MB) zu installieren.
CrossPack AVR bietet die Möglichkeit ein XCode (die grafische Entwicklungsumgebung von Apple) Projekt zu erzeugen. Im Terminal folgendes eingeben:
avr-project Demo cd Demo open Demo.xcodeproj
Alternativ kann man auch die nicht ganz so aktuelle [MacPorts] Variante nutzen.
sudo port install avr-gcc avr-binutils avr-libc avrdude
Der usbasp Programmer funktioniert problemlos auf OSX.
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 -p atmega32 -U flash:w:file.hex
Fuses setzen
Siehe Laborboard#Fuses_setzen.
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
Debug Menü
Im Subversion unter https://www.das-labor.org/trac/browser/microcontroller/src-atmel/tests/debugMenu ist ein Programm, mit dem man sich 8 Zahlen binär oder im Lautstärkeregler Format ausgeben und verändern kann. Diese Menü arbeitet komplett im Hintergrund, entprellt die Tasten und steuert die LEDs an. Somit dient es als konfortable Möglichkeit Werte ein und auszugeben, bzw. den Programmfluss zu verändern, ohne Serielle-Schnitstelle.
Kurzreferenz
Ich habe eine kleine Kurzreferenz zusammengestellt, die die wichtigsten Dinge auflistet: