Veranstaltungsreihe/Mikrocontroller Workshop: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
 
(83 dazwischenliegende Versionen von 34 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Dieses Projekt wird fortgef�hrt in der [[Atmel-Laborboard | Bastelecke]]. Dort findet ihr auch Codebeispiele und anderes.'''
{{Veranstaltungsreihe
|title=Mikrocontroller Workshop
|image=
|status=suspended
|type=public
|abstract= 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.
}}
{{#set_recurring_event: Event
|property=ev_start
|ev_title={{PAGENAME}}
|ev_partof={{PAGENAME}}
|start=14.11.2006 19:00:00
|end=14.11.2006 19:00:00
|unit=week
|period=2
|week number=
|include=16.11.2006 19:00:00;12.12.2006 19:30:00;1.11.2007 18:30:00;8.11.2007 18:30:00;15.11.2007 18:30:00;20.11.2008 19:00:00;27.11.2008 19:00:00;4.12.2008 19:00:00;11.12.2008 19:00:00
|exclude=
}}
__NOTOC__


==Facts==
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 18.4.2013.
=== Do, 18.04.2013, 19:00 Uhr :: 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, 19:00 Uhr :: 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.


* Was: Microcontroller Workshop
* Wann: Dienstag, 14.6.2005
* Wo: Im [[Labor]]


Ferner erläutern wir den Umgang mit den Werkzeugen, die Du benötigst um ihn zu programmieren (z.B. avrdude, avr-gcc).


=== Do, 16.05.2013, 19:00 Uhr :: 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"


==Links==
=== Do, 23.05.2013, 19:00 Uhr :: 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


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


* Manual der avr-libc: http://www.nongnu.org/avr-libc/user-manual/index.html
== Zielgruppe ==
* Toolchain installieren (Jetzt der richtige Link): http://www.nongnu.org/avr-libc/user-manual/install_tools.html (keine veralteten ports/packages benutzen! avr-libc 1.23 ist '''must''')
Die Zielgruppe für diesen kostenlosen Workshop (bis auf das Material, welches Du Dir selber bestellen müsstest) sind wie bei fast allen Labor-Veranstaltungen alle, die sich für irgendwas interessieren. Vorkenntnisse werden nicht unbedingt vorausgesetzt, von Vorteil wäre es aber zu wissen, an welchem Ende der Lötkolben heiß wird, und schon mal eine Programmiersprache gesehen zu haben. Jeder darf kommen, Mitgliedschaft im Labor ist nicht erforderlich (wie bei allen Veranstaltungen).
* ATmega32 Data Sheet: http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf


==Trailer==
Übrigens: Zum Basteln, Löten oder Fachsimpeln kannst Du jederzeit ins Labor kommen (sofern es offen ist) - ganz egal ob Mitglied oder nicht.


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.
== 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


Das System verwendet den ATmega32 Controller von Atmel. Der hat 32kByte Flash fr 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 fr einen PC in C programmiert.


Bei dem Workshop werden wir den Controller erstmal mit einem Spannungsregler und ein paar Leuchtdioden auf eine Platine l�ten. Das ist dann zum experimentieren erstmal ausreichend, und ihr k�nnt das System dann sp�ter je nach Verwendung mit der n�tigen Peripherie erg�nzen. Da ist sehr viel machbar, und ich kann dabei auch gerne Hilfestellung geben.
Wenn Du etwas davon nicht hast, ist das nicht so schlimm. Im Labor ist Werkzeug vorhanden, jedoch in begrenzter Anzahl.


Nach dem Zusammenbau werden wir uns die avr-gcc toolchain ansehen, und damit ein kleines Testprogramm f�r das Microcontrollersystem compilieren, und das dann auf den Controller laden.
==Benötigte Bauteile==


Der Workshop ist also sozusagen ein "getting started with microcontrollers workshop". Er soll einen schnellen Einstieg in die Welt der Microcontroller erm�glichen.
Die [[LaborBoardTeile|Bauteilliste]] für das Board findet ihr jetzt auf einer eigenen Wiki-Seite.


Jeder Teilnehmer sollte selber sein Werkzeug mitbringen. Wir brauchen die �blichen Sachen zum Platinen l�ten:
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.
- L�tkolben
- L�tzinn
- Seitenschneider
- Spitzzange
- Schaltdraht
- Bohrer
- Messer
- Multimeter
Es schadet auch nicht, wenn ihr mal 2 L�tkolben oder Zangen mitbringt, f�r den Fall, das jemand anders irgendetwas nicht hat.


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


Hier mal eine Liste mit den f�r das Microcontrollersystem ben�tigten Bauteilen:
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.


{| border="1" cellpadding="2"
==Pläne==
|+ F�r das Grundsystem
|-
! Anzahl !! Beschreibung !! Reichelt Bestell Code !! Kosten
|-
| 1 || ATmega 32 Microcontroller || ATMEGA 32-16 DIP || 6,20
|-
| 1 || Sockel f�r Controller || GS 40P || 0,45
|-
| 1 || Quartz 16MHz || 16-HC18 || 0,44
|-
| 1 || LED 5mm gr�n low current || LED 5MM 2MA GN || 0,09
|-
| 8 || LED 3mm rot low current || LED 3MM 2MA RT || 0,72
|-
| 1 || Lochraster Platine 160x100 || H25PR160 || 1,65
|-
| 10 || Widerst�nde 1,5 k Ohm || 1/4W 1,5K || 0,33
|-
| 5 || Taster || TASTER 3301B || 0,40
|-
| 3 || Sockelleisten 32 pol || SPL 32 || 1,23
|-
| 1 || Stecker f�r Netzteil || HEBW 25 || 0,20
|-
| 1 || Diode || 1N4004 || 0,02
|-
| 1 || Spannungsregler 5V || �A 7805 || 0,17
|-
| 5 || Kondensator 100nF || KERKO 100N || 0,35
|-
| 2 || kondensator 27pF || KERKO 27P || 0,08
|-
| 1 || Elko 470�F/25V || RAD 470/25 || 0,11
|-
| 1 || Stecker Netzteil || MW 17-GS/6 || 2,65
|-
| || || || 15,09
|}


Je nachdem, ob ihr den Controller �ber den LPT Port, oder �ber den Seriellen Port programmieren wollt, braucht ihr noch folgende Teile:
Die Pläne für das Board und das Programmierkabel gibts im SVN.
{| border="1" cellpadding="2"
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.
|+ Programmierung �ber LPT
|-
! Anzahl !! Beschreibung !! Reichelt Bestell Code !! Kosten
|-
| 10 || Widerst�nde 330 Ohm || 1/4W 330 || 0,33
|-
| 1 || Sub D Stecker 25 pol || D-SUB ST 25 || 0,10
|-
| 1 || Kappe f�r Stecker || KAPPE CG25G || 0,13
|-
| || || || 0,56
|}


{| border="1" cellpadding="2"
''https://www.das-labor.org/trac/browser/microcontroller/doc/Layouts''
|+ Programmierung �ber seriell
|-
! Anzahl !! Beschreibung !! Reichelt Bestell Code !! Kosten
|-
| 1 || Diode || 1N 4148 || 0,02
|-
| 1 || Transistor || BC 547B || 0,03
|-
| 10 || Widerst�nde || 1/4W 10k || 0,33
|-
| 1 || Sub D Buchse 9 pol || D-SUB BU 09 || 0,10
|-
| 1 || Kappe f�r Stecker || KAPPE CG9G || 0,09
|-
| || || || 0,57
|}


Kurz noch ein Wort zu USB/seriell Konvertern:
==Links==
Diese Dinger sind echt schweine langsam, wenn man damit ein Programm auf einen
Microcontroller l�dt. Der Grund ist der, dass nicht wirklich RS232 benutzt
wird, sondern dass die Pins einzeln High und low gezuppelt werden von der
Programmier Software. Das geht wegen dem Time Slot verfahren beim USB dann
nur mit einer sehr geringen Geschwindigkeit. Sie soll wohl so ungef�hr bei
2Byte/sec liegen. Zum Ausprobieren von kleinen Programmen reicht das zwar
(also auch f�r den Workshop), aber ihr k�nnt euch selber ausrechnen, wie
lange dass dann f�r gr�ssere Programme dauert (der Controller hat 32kByte
Flash...). Desswegen ist es empfehlenswert, den Parallelen Port zu nehmen,
falls euer Notebook einen eingebauten hat. Ein USB/parallel Konverter kann �brigens in keinem Fall verwendet werden, da diese nur protokollkonform mit Druckern sprechen k�nnen.


Wer mit bastelt kann sich doch schonmal folgendes zu gemüte fuehren:


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. Desswegen hier keine Bestellnummern. Eine g�nstige art, an ein Display zukommen ist es, ein altes Faxger�t zu schlachten. Die haben eigentlich immer solche Displays. (und Tasten sind auch noch jede menge drinn...) In anderen Ger�ten findet man auch schonmal solche Displays, in Druckern z.B.. Also wer sowas hat: Bitte mitbringen!
* 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


Ich werde bei Reichelt Elektronik eine Sammelbestellung starten. Damit das alles auf jeden Fall rechtzeitig zum Workshop da ist, geht die Bestellung am Mitwoch Abend(8.6.) raus. Wer mitbestellen mchte muss es mir also bis Mitwoch per mail (tixiv at gmxdotnet) mitteilen.


==Toolchain-bauen==
==Toolchain-bauen==
===Was ist eine Toolchain?===
===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 (glibc).
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===
===Toolchain bauen für Gentoo-Linux===
Es wird im folgenden davon ausgegangen, dass du bereits ''root'' bist
Es wird im folgenden davon ausgegangen, dass du bereits ''root'' bist
#'''emerge crossdev'''
##evtl. msst ihr in die /etc/make.conf noch die Zeile '''PORTDIR_OVERLAY="/usr/local/portage"''' einfgen und das entsprechende Verzeichnis anlegen ('''mkdir -p /usr/local/portage''')
#'''crossdev -t avr''' und zurcklehnen, denn das dauert ein bischen.
Du solltest nun einen Compiler fr den avr haben ('''avr-gcc''').
==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:


f�r seriell:
<pre>
emerge crossdev
</pre>
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''')
<pre>
crossdev -t avr
</pre> und zurücklehnen, denn das dauert ein bischen.
Du solltest nun einen Compiler für den avr haben ('''avr-gcc''').


uisp -dprog=dasa2 -dserial=/dev/dein/serial/port --erase
===Toolchain bauen für Mac OSX ===
uisp -dprog=dasa2 -dserial=/dev/dein/serial/port --upload if=file.hex
Der beste Weg eine aktuelle Version des avr-gcc zu bekommen ist [[http://www.obdev.at/products/crosspack/index.html CrossPack AVR]] zu nutzen.


oder  
Ich empfehle die XCode Tools von der Installations DVD (oder mit AppleAccount aus dem Internet von [http://developer.apple.com/technologies/xcode.html] ca. 900 MB) zu installieren.


  uisp -dprog=dasa2 -dserial=/dev/dein/serial/port --erase --upload if=file.hex
CrossPack AVR bietet die Möglichkeit ein XCode (die grafische Entwicklungsumgebung von Apple) Projekt zu erzeugen. Im Terminal folgendes eingeben:
<pre>
avr-project Demo
cd Demo
open Demo.xcodeproj
</pre>


----
Alternativ kann man auch die nicht ganz so aktuelle [[http://www.macports.org// MacPorts]] Variante nutzen.
<pre>
sudo port install avr-gcc avr-binutils avr-libc avrdude
</pre>


f�r parallel:
Der [[usbasp]] Programmer funktioniert problemlos auf OSX.


uisp -dprog=bsd --erase
===Toolchain installieren bei ubuntu ===
uisp -dprog=bsd --upload if=file.hex


oder
<pre>
sudo apt-get install gcc-avr avr-libc avrdude
</pre>


uisp -dprog=bsd --erase --upload if=file.hex
==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:


Wenn die mitleren 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!!!


=== parallel ===
<pre>
uisp -dprog=bsd --erase
uisp -dprog=bsd --upload if=file.hex


==Demo Programm==
avrdude -c bsd -p m32  -U flash:w:file.hex
 
</pre>
Hier der Quelltext f�r das Demo Programm:
=== my smart usb Programmer ===
 
<pre>
<nowiki>
avrdude -c avr910 -p m32 -P /dev/ttyProgramer -U flash:w:file.hex
</pre>


//This is a simple Demo for the Labor Board.
=== usbasp Programmer ===
//It displays 2 different light patterns on the LEDs,
<pre>
//and allows the pattern to be selected, and the speed to be controled
avrdude -c usbasp -p atmega32 -U flash:w:file.hex
//with the 4 keys.
</pre>


=== Fuses setzen ===
Siehe [[Laborboard#Fuses_setzen]].


#include <inttypes.h>
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!!!
#include <avr/io.h>


int
==Demo Programme==
main (void)
Diverse kleine Demoprogramme (z.B. LED-Test) gibt es im [[Subversion]] unter https://www.das-labor.org/trac/browser/microcontroller/src-atmel/tests
{
DDRB = 0; //Port B all inputs
PORTB = 0x0F; //Internal Pullups on on key inputs
DDRC = 0xFF; //Port C all outputs
PORTC = 0x01;  //1 LED on to start of Patterns
int x, delay=10000; char mode=0, ud=0;
for ( ;; ){ //for ever
//this is a time delay loop
for(x=0; x< delay; x++){
//The volatile qualifier tells the compiler not to optimize
//it away.
volatile int y = 0;
};
if(!mode){
//knight rider mode
switch (ud){
case 0: //shift light left
if( (PORTC<<=1) == 0x80 ){ //until bit7 is reached
ud = 1;
};
break;
case 1: //shift bit right
if( (PORTC>>=1) == 0x01 ){ //until bit0 is reached
ud = 0;
};
break;
};
}else{
//scroll mode
switch (ud){
case 0:
PORTC|=(PORTC<<1);//shift additional ones in from left
if(PORTC & 0x80)  //until bit7 is reached
ud = 1;
break;
case 1:
PORTC<<=1; //shift zeros in
if (PORTC == 0){//until all zeros
ud = 0;
PORTC = 0x01;//start over
}
break;
};
}
switch(PINB&0x0f){
case 0x0E: //Button 1 pressed
if (delay<30000){
delay += 100;
}
break;
case 0x0D: //Button 2 pressed
if (delay>1000){
delay -= 100;
}
break;
case 0x0B: //Button 3 pressed
mode = 0;
break;
case 0x07: //Button 4 pressed
mode = 1;
break;
};
};
}


</nowiki>
==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'''.


Die Zeilenumbr�che wurden vom Wiki geklaut. Ich arbeite an dem Problem....
== Kurzreferenz==
Ich habe eine kleine Kurzreferenz zusammengestellt, die die wichtigsten Dinge auflistet:
* https://www.das-labor.org/trac/export/4324/microcontroller/doc/microcontroller_workshop/qref.pdf


[[Category:Veranstaltungen]]
[[Category:Veranstaltungsreihe]]
[[Category:Microcontroller]]

Aktuelle Version vom 18. Januar 2015, 03:54 Uhr

Mikrocontroller Workshop
Status suspended
Typ public
Kurzbeschreibung
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.
Export iCalendar-Datei
Alle Veranstaltungen der Reihe
{{{furtherdates}}}



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[Bearbeiten | Quelltext bearbeiten]

Der Workshop erstreckt sich über 4 Abende, jeweils Donnerstags beginnend ab dem 18.4.2013.

Do, 18.04.2013, 19:00 Uhr :: Aufbau des Bausatzes[Bearbeiten | Quelltext bearbeiten]

Am ersten Tag wird die Schaltung aufgebaut und Handwerkliche Grundkenntnisse vermittelt. Dieser Tag ist ausschliesslich zum Löten gedacht.

Do, 25.04.2013, 19:00 Uhr :: Microcontroller Basics[Bearbeiten | Quelltext bearbeiten]

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, 16.05.2013, 19:00 Uhr :: Zusatzfunktionen des Micrcontrollers[Bearbeiten | Quelltext bearbeiten]

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, 23.05.2013, 19:00 Uhr :: Peripherie & Ausblick[Bearbeiten | Quelltext bearbeiten]

An diesem Tag gibt es drei kleine Vorträge und Beispiele zu folgenden Themen:


Zielgruppe[Bearbeiten | Quelltext bearbeiten]

Die Zielgruppe für diesen kostenlosen Workshop (bis auf das Material, welches Du Dir selber bestellen müsstest) sind wie bei fast allen Labor-Veranstaltungen alle, die sich für irgendwas interessieren. Vorkenntnisse werden nicht unbedingt vorausgesetzt, von Vorteil wäre es aber zu wissen, an welchem Ende der Lötkolben heiß wird, und schon mal eine Programmiersprache gesehen zu haben. Jeder darf kommen, Mitgliedschaft im Labor ist nicht erforderlich (wie bei allen Veranstaltungen).

Übrigens: Zum Basteln, Löten oder Fachsimpeln kannst Du jederzeit ins Labor kommen (sofern es offen ist) - ganz egal ob Mitglied oder nicht.

Programmer[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Wer mit bastelt kann sich doch schonmal folgendes zu gemüte fuehren:


Toolchain-bauen[Bearbeiten | Quelltext bearbeiten]

Was ist eine Toolchain?[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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

Programm in den Controller laden[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

 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[Bearbeiten | Quelltext bearbeiten]

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

usbasp Programmer[Bearbeiten | Quelltext bearbeiten]

avrdude -c usbasp -p atmega32 -U flash:w:file.hex

Fuses setzen[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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ü[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Ich habe eine kleine Kurzreferenz zusammengestellt, die die wichtigsten Dinge auflistet: