Programmierung und Beschaltung von Atmel Risc Microprozessoren
Wahlobligatorisches Fach, vorzugsweise für Informatikstudenten (041)
Stundenumfang (Diplom):0/0/2, Stundenumfang (Bachelor):2/0/2
Prüfung: mündlich
Lehrinhalte:
Vorstellung der Prozessorfamilie Atmega 8 ..128, Leistungsparameter, Pinbelegung, Speicher- /Registeraufteilung
Praktische Versuche mit Atmega-8
Programmierwerkzeuge
Grundschaltungen
Beschaltung und Programmierung von elementaren Anwendungen zu Überwachung, Steuerung und Regelung
Beschaltung und Programmierung von elementaren Anwendungen zur Kommunikation über Busse, Schnittstellen und Display
Grundbeschaltung eines ATmega8
Lehrkonzept:
Nach einführenden Betrachtungen zur Hardware und zur Programmierung erarbeiten sich die Studenten in Gruppen von 2 bis 3 Studenten in betreuten Versuchen elementare Anwendungen mit Atmel Microprozessoren. Die Versuchsaufbauten sind dabei auf Steckbrett mit elektronischen Bauelementen an Hand von Schaltplänen und eines Musteraufbaus selbst zu erstellen. Die Programmierung erfolgt über PCs, die compilierten Programme werden über die parallele Schnittstelle mittels Programmieradapter übertragen.
Materielle Voraussetzungen:
Software:
Linux: Installierter avr-gcc, binutils, library, uisp (gesonderte Aufstellung)
Windows: avrStudio
Hardware:
PC zur Programmentwicklung (mit Parallelport, seriellem Port, Linux und ev. Windows)
Bauelemente, Steckbretter, Netzteile, Kabel (gesonderte Aufstellung)
Frei verfügbare Steckdose für Steckernetzteil in PC-Nähe
|
Grundschaltung mit 2 Leds zur Ausgabe und DAPA-Programmieradapter |
Controller zur Analogeingabe (Fotowiderstand) und LCD-Anzeige |
/* configs for io.h */ |
/*********************************************
* vim: set sw=8 ts=8 si :
* Author: Guido Socher, Copyright: GPL
* This program is to test the led connected to
* PC5.
* See http://linuxfocus.org/English/November2004/
* for details.
* Chip type : ATMEGA8
* Clock frequency : Internal clock 1 Mhz (factory default)
*********************************************/
#include <avr/io.h>
#include <inttypes.h>
#define F_CPU 1000000UL // 1 MHz
#include <avr/delay.h>
void delay_ms(unsigned int ms)
/* delay for a minimum of <ms> */
{
// we use a calibrated macro. This is more
// accurate and not so much compiler dependent
// as self made code.
while(ms){
_delay_ms(0.96);
ms--;
}
}
void main(void)
{
/* INITIALIZE */
/* enable PC5 as output */
DDRC|= _BV(PC5);
/* BLINK, BLINK ... */
/* PC5 is 5 (see file
include/avr/iom8.h) and _BV(PC5) is 00100000
*/
while (1)
{
/* led on, pin=0 */
PORTC&= ~_BV(PC5); // (1<<PC5)
delay_ms(500);
/* set output to 5V, LED off */
PORTC|= _BV(PC5); // (1<<PC5)
delay_ms(500);
}
}
|
|
|---|---|---|
|
Einfaches Beispiel in Assembler |
Einfaches Besispiel in C |
Praktikumsversuche:
Die einzelnen Versuche bauen weitestgehend auf einander auf. Sie werden in Projektgruppen mit jeweils maximal 3 Studenten bearbeitet. Die Versuche bestehen jeweils aus der Herstellung der Schaltung auf dem breadboard (Steckbrett) und der Programmierung des Mikrocontrollers.
Versuch Nr. 1 (Board RH-21B - blau) Versuch Nr. 1 (Board 527819 - schwarz) :
Grundschaltung
Stromversorgung,
Beschaltung von Ausgängen mit LED
Programmübertragung vom PC auf den Controller
Versuch Nr. 2 (Board RH-21B - blau) Versuch Nr. 2 (Board 527819 - schwarz) :
Binäreingänge
Beschaltung von Eingangspins des Controllers
Entprellen von Eingängen
Prorammieraufgabe: Es sind 2 Pins als Eingänge zu konfigurieren und 4 Pins als Ausgänge mit LEDs zu konfigurieren. Das Programm soll die Eintastvorgänge des Taster 1 zählen und binär codiert auf den LEDs ausgeben. Taster 2 soll den Zähler auf 0 zurücksetzen.
Versuch Nr. 3 (Board RH-21B - blau) Versuch Nr. 3 (Board 527819 - schwarz) :
LCD – Display
Der Controller wird mit einem LCD-Display beschaltet.
Programmieraufgabe: Ausgabe von Strings aus verschiedenen Bereichen des Speichers (RAM, Flash, EEPROM) unter Nutzung einer LCD-Bibliothek.
Versuch Nr. 4 (Board RH-21B - blau) Versuch Nr. 4 (Board 527819 - schwarz) :
Behandlung externer Interrupts durch Taste und eines Timerinterrupts.
Programmieraufgabe: Programmierung von Interruptbehandlungsroutinen und Programmierung eines Timers
Versuch Nr. 5 (Board RH-21B - blau) Versuch Nr. 5 (Board 527819 - schwarz) :
Analogeingabe
Es ist ein Analogeingang des Controllers mit einem Potentiometer (Einstellbarer Widerstand) zur Simulation eines analogen Meßwertes zu beschalten.
Programmieraufgabe: Programmeriung des Analog Digital Converters, Messung von analogen Werten und Ausgabe des Messwertes auf dem Display
Versuch Nr. 6 (Board RH-21B - blau) Versuch Nr. 6 (Board 527819 - schwarz) :
Kopplung mit PC über serielle Schnittstellen
Über einen RS232 Pegelwandler ist der Controller mir dem PC über ein serielles Kabel zu verbinden.
Programmieraufgabe:
Senden: Tastendrücke sollen gezählt und an der Zählerstand an den PC gesendet werden.
Empfangen: Über Eingabe von 0 oder 1 soll eine LED am Controller ein-/ausgeschaltet werden.
Es sind sowohl die PC(Terminal I/O)- als auch die Programme auf dem Controller zu schreiben.
Versuch Nr. 7 (Board RH-21B - blau) Versuch Nr. 7 (Board 527819 - schwarz) :
Ausgabe
analoger Werte
Unter Verwendung der Timer werden Versuche mit Pulsweitenmodulation angestellt.
Versuch Nr. 8 (Board RH-21B - blau) Versuch Nr. 8 (Board 527819 - schwarz) :
TWI- (I2C-) Bus
Es weden verschiedene TWI-Bausteine mit dem Mikrocontroller über die TWI-Schnittstelle gekoppelt.
Unter Benutzung einer TWI-Bibliothek werden die Bausteine angesprochen und verwendet.
Weitere Versuche
und Projekte
Temperaturmessung
mit 1-Wire DS1820 an USB
Schalten von 1-3 Relais über usb
Messwertübertragung mit Funkmodul rfm12
Nutzung von Eclipse mit avr tool chain