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:



Grundbeschaltung eines ATmega8


Grundschaltung


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 led

Analogeingabe mit LCD-Display

Grundschaltung mit 2 Leds zur Ausgabe und DAPA-Programmieradapter

Controller zur Analogeingabe (Fotowiderstand) und LCD-Anzeige


/* configs for io.h */
/* io.h does not define this for asm */
#define __SFR_OFFSET 0
#define _VECTOR(N) __vector_ ## N
/* CPU I/O register definitions and vectors */
# include <avr/io.h>

#define mp r16
#define outerwait r17
#define innerwait r18

.global main

main:
// Initialisierung PortB output
ldi mp,0xFF
out DDRB,mp

// Hauptschleife
loop:
ldi mp,!(1<<PORTB1)
out PORTB,mp
rcall waitabit
ldi mp,(1<<PORTB1)

out PORTB,mp
rcall waitabit rjmp loop /* loop forever */ // Warten waitabit: ldi outerwait,0x77 waitouterloop: ldi innerwait,0xFF waitinnerloop: subi innerwait,0x01 brne waitinnerloop subi outerwait,0x01 brne waitouterloop ret



/*********************************************
* 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


Versuch Nr. 2 (Board RH-21B - blau) Versuch Nr. 2 (Board 527819 - schwarz) :

Binäreingänge


Versuch Nr. 3 (Board RH-21B - blau) Versuch Nr. 3 (Board 527819 - schwarz) :

LCD – Display


Versuch Nr. 4 (Board RH-21B - blau) Versuch Nr. 4 (Board 527819 - schwarz) :


Versuch Nr. 5 (Board RH-21B - blau) Versuch Nr. 5 (Board 527819 - schwarz) :

Analogeingabe


Versuch Nr. 6 (Board RH-21B - blau) Versuch Nr. 6 (Board 527819 - schwarz) :

Kopplung mit PC über serielle Schnittstellen


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.


Links

Folien

Beispiele Assembler


Hinweise des Studenten Tino Ernst mit Anleitung und Bildern zu Steckplatine IV von Conrad-Elektronik
Hinweise zur Beschaffung von eigenen Bauelementen


Weitere Versuche und Projekte

Anschluss einer PC-Tastatur

Temperaturmessung mit 1-Wire DS1820 an USB

Schalten von 1-3 Relais über usb

Messwertübertragung mit Funkmodul rfm12

Knoppix mit AVR tool chain

Nutzung von Eclipse mit avr tool chain


A. Beck