praktikum smr versuch 1 - willkommen an der …hl271st/lehre/smr/smr_prakt_v1.pdfpraktikum: struktur...

29
Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 1 SMR-P Viga/08 Blatt: 1/29 Versuch 1 Versuche Lehrinhalte "Hardware" Lehrinhalte "Software" 1. Einführung Vertraut werden mit STK500/501-Board, AVR- Studio (Assembler, Simula- tor) und Codevision AVR (C- Compiler) - Struktur der Kits; Aufbau - Handhabung der Hardware - Ressourcen des AT-Mega128 - Lage und Nutzung der Ports - Adressraum und Lage von SFRs und Interruptvektoren - Ansteuerung einer LED - GUI und Handling AVR-Studio - GUI und Handling Codevision; Nutzung Code-Wizard - Makros zur Port- und Pin- Steuerung - Unterschied Assembler-Code/C- Code - Einsatz des Simulators bei As- sembler-und C-Projekten - Dimensionierung von Warte- schleifen 2. Parallele Ein-/Ausgänge Scannen eines 3x3 Tasten- feldes und Signalisierung der erkannten Taste über eine zugehörige LED - Benutzung von PORTs als Sig- naleingänge - Typen der Port-Ausgangsbe- schaltung - Nutzung von schaltbaren Pull- Up-Widerständen der Port-Pins - - Grundlegende Handhabung der PORT Pins mit spezieller Aus- gangsbeschaltung - Technik zum Pinsparenden Ab- tasten von Schalterereignissen durch Scanning-Verfahren; Tas- tenentprellen - Ansprechen von PORTs über PORT- und PIN-Deklaration 3. Timer und Interrupts Realisierung einer Blink- leuchte mit fester Blink- frequenz; Erzeugen quasi- analoger harmonischer Sig- nale; Umsetzung eines DTMF-Wähltongenerators auf Basis des Tastenfeldes - Behandlung von Interrupts im Controller - Timermodi (u. a. PWM) - Verknüpfung von Timerer- eignissen mit Signalausgängen und Interrupts - Konfiguration und Steuerung mittels SFRs - Erzeugen analoger Spannun- gen mittels PWM - Timernutzung zur Erzeugung eines Signalwechsels mit defi- nierter Frequenz - Interruptserviceroutinen - dynamische Konfiguration von PWM-Signalen - Realisieren von Berechnungen mittels "lookup table" - Vorteilhafte Umsetzung von Re- chenfunktionen 4. 1-Wire-Bus Identifizieren, ansprechen, abfragen und steuern von Busteilnehmern am Beispiel von Temperatursensoren DS18S20 (Dallas) - Bus-Kommunikationskonzepte (hier: Master-Slave) - Protokollrahmen - Busankopplung/Bustiming - Nutzung des USART0 - Teilnehmeridentifikation mittels ID-Suchbaum - CRC-Handling zur Detektion von Übertragungsfehlern - Codierung und Umwandlung von Temperaturwerten

Upload: truongkhuong

Post on 29-Mar-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 1/29

Versuch 1

Versuche Lehrinhalte "Hardware" Lehrinhalte "Software" 1. Einführung

Vertraut werden mit STK500/501-Board, AVR-Studio (Assembler, Simula-tor) und Codevision AVR (C-Compiler)

- Struktur der Kits; Aufbau - Handhabung der Hardware - Ressourcen des AT-Mega128 - Lage und Nutzung der Ports - Adressraum und Lage von

SFRs und Interruptvektoren - Ansteuerung einer LED

- GUI und Handling AVR-Studio - GUI und Handling Codevision;

Nutzung Code-Wizard - Makros zur Port- und Pin-

Steuerung - Unterschied Assembler-Code/C-

Code - Einsatz des Simulators bei As-

sembler-und C-Projekten - Dimensionierung von Warte-

schleifen 2. Parallele Ein-/Ausgänge

Scannen eines 3x3 Tasten-feldes und Signalisierung der erkannten Taste über eine zugehörige LED

- Benutzung von PORTs als Sig-naleingänge

- Typen der Port-Ausgangsbe-schaltung

- Nutzung von schaltbaren Pull-Up-Widerständen der Port-Pins

-

- Grundlegende Handhabung der PORT Pins mit spezieller Aus-gangsbeschaltung

- Technik zum Pinsparenden Ab-tasten von Schalterereignissen durch Scanning-Verfahren; Tas-tenentprellen

- Ansprechen von PORTs über PORT- und PIN-Deklaration

3. Timer und Interrupts

Realisierung einer Blink-leuchte mit fester Blink-frequenz; Erzeugen quasi-analoger harmonischer Sig-nale; Umsetzung eines DTMF-Wähltongenerators auf Basis des Tastenfeldes

- Behandlung von Interrupts im Controller

- Timermodi (u. a. PWM) - Verknüpfung von Timerer-

eignissen mit Signalausgängen und Interrupts

- Konfiguration und Steuerung mittels SFRs

- Erzeugen analoger Spannun-gen mittels PWM

- Timernutzung zur Erzeugung eines Signalwechsels mit defi-nierter Frequenz

- Interruptserviceroutinen - dynamische Konfiguration von

PWM-Signalen - Realisieren von Berechnungen

mittels "lookup table" - Vorteilhafte Umsetzung von Re-

chenfunktionen 4. 1-Wire-Bus

Identifizieren, ansprechen, abfragen und steuern von Busteilnehmern am Beispiel von Temperatursensoren DS18S20 (Dallas)

- Bus-Kommunikationskonzepte (hier: Master-Slave)

- Protokollrahmen - Busankopplung/Bustiming - Nutzung des USART0

- Teilnehmeridentifikation mittels ID-Suchbaum

- CRC-Handling zur Detektion von Übertragungsfehlern

- Codierung und Umwandlung von Temperaturwerten

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 2/29

Inhalt 1 Einführung 2 Vorstellung des Hardware-Kits aus STK500/501 Board und Applikationsplatine 3 Aufbau und Struktur des Mikrocontrollers und verfügbare Ressourcen 4 Nutzung der Ports in Verbindung mit der Applikationsplatine 5 Praktischer Teil zum Termin 1 5.1 Regeln für den Umgang mit dem System 5.2 Konfiguration von Kit und Mikrocontroller mit dem Programm AVR-Studio 6 Praktischer Teil zum Termin 2 6.1 Nutzung von AVR-Studio für die Assemblerprogrammierung 6.2 Übertragung von Programmen an das Kit und Programmausführung 6.3 Aufgabe: Erstellen eines Programms für eine Blinklampe in Assembler 6.4 Aufgabe: Verwenden des Simulators von AVR-Studio für den Programmtest 7 Praktischer Teil zum Termin 3 7.1 Nutzung von Codevision-AVR für die C-Programmierung 7.2 "Compile" und "Make" eines Beispiel-Programms und Ergebnisanalyse 7.3 Übertragung von Programmen an das Kit und Programmausführung 7.4 Einstellmöglichkeiten und Konfiguration des C-Compilers 7.5 Einsatz des "Code-Wizard" als Einstieg in neue Controller-Programme 7.6 Aufgabe: Erstellen eines Programms für eine Blinklampe in C 7.7 Aufgabe: Verwenden des Simulators von AVR-Studio unter Codevision-AVR Anhang: A Assembler-Befehlssatz des AT-Mega128 B I/O-Register-Zusammenfassung (SFRs) des AT-Mega128 C Port-Nutzungstabelle im Zusammenhang mit der Applikationsplatine

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 3/29

1 Einführung Das Praktikum zur Vorlesung "Struktur von Mikrorechnern" behandelt die Programmierung von Mikrocontrollern der Firma Atmel im Zusammenhang mit ausgewählten Anwendungs-beispielen. Bei dem zur Anwendung kommenden Mikrocontroller handelt es sich um einen 8-Bit-Controller der AT-Mega-Reihe mit der Typenbezeichnung AT-Mega128. Er besitzt eine RISC-Architektur und erlaubt bei vergleichsweise geringen maximalen Taktraten von 16 MHz eine Rechengeschwindigkeit von bis zu 16 MIPS. Zu den Hauptmerkmalen des Controllers zählen seine unterschiedlichen integrierten Spei-cherformen, der "Flash"-Programmspeicher mit 128 kB, das EEPROM mit 4 kB und das statische RAM mit 4 kB, sowie seine 53 multifunktionalen Eingangs-/Ausgangspins mit allen für moderne Mikrocontroller üblichen Funktionen (Timer, Counter, PWM, ADU, U-SARTs, Komparator etc.) Als Hardware-Plattform für den Betrieb des Controllers und seine Programmierung dient das ebenfalls von Atmel angebotene Starter-Kit bestehend aus dem Basis-Board STK500 und dem Erweiterungs-Board STK501 mit spezieller Eignung für den AT Mega 128. Das Starter-Kit bildet in Verbindung mit einem PC und den beiden im Praktikum genutzten Programmen AVR-Studio (Atmel) und Codevision-AVR (HP-Infotec) ein universelles Ent-wicklungssystem. Für die speziellen Anwendungsaufgaben des Praktikums wurde ergänzend eine Applikati-onsplatine entwickelt, die alle erforderlichen zusätzlichen Hardwarekomponenten wie eine Tastenmatrix, optische und akustische Signalgeber, sowie Schnittstellen für den An-schluss von busfähigen Temperatursensoren (1-Wire-Bus) enthält. Alle Komponenten sind in Stapelbauweise miteinander verknüpft und in einem verschlos-senen Kunststoffgehäuse unterbracht. Das nachfolgende Bild zeigt den kompletten Aufbau des Praktikumsarbeitsplatzes.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 4/29

2 Vorstellung des Hardware-Kits aus STK500/501 Board und Applikationsplatine Das Basis-Board STK500 enthält alle für den Betrieb von Mikrocontrollern der AT-Mega-Reihe notwendigen Komponenten. Neben der geregelten und einstellbaren Energiever-sorgung, der Erzeugung eines festen oder wahlweise einstellbaren Systemtakts und ver-schiedenen Aufnahmesockeln (Sockets, s. Bild unten Mitte) für Prozessoren bis zu 40 An-schlusspins stellt dieses Board auch die Schnittstelle zu einem PC dar, über den der Mi-krocontroller programmiert werden kann. Das Programm wird dabei über eine serielle RS232-Schnittstelle vom PC an einen zum Board gehörenden zweiten Mikrocontroller (Master MCU, s. Bild unten rechts) übertragen und von diesem per SPI-Programmierschnittstelle in den Flash-Programmspeicher des Ziel-Controllers (Target AVR, s. Bild unten Mitte) überspielt. Weiter existieren auf dem Board für allgemeine Testanwendungen jeweils eine Reihe von 8 LEDs und 8 Tastern, die über eine Kabelbrücke mit beliebigen Anschlussports (Headers, s. Bild unten links) des Ziel-Controllers verbunden werden können.

Die Aufnahme des für das Praktikum vorgesehenen Mikrocontrollers AT-Mega128 ist we-gen seiner 64 Anschlusspins und der SMD-Bauform mit den Prozessor-Aufnahmesockeln des STK500 (max. 40 Pins) nicht direkt möglich. Daher wird das Erweiterungs-Board STK501 als Adapter benötigt, das über zwei Steckleisten (Expansion Headers, s. Bild o-ben) des STK500 mit diesem in Stapelbauweise verbunden wird (s. Bild auf der Folgesei-te). Das Erweiterungs-Board STK501 ermöglicht dabei einerseits durch einen speziellen SMD-Klemmsockel die lötfreie Aufnahme eines Prozessors im TQFP64-Gehäuse und an-dererseits den Zugriff auf die zusätzlichen Anschlüsse des AT-Mega128.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 5/29

Als Applikations-Schaltung wurde für das Praktikum eine weitere Platine entwickelt, die wiederum über die auf dem STK501 befindlichen Steckleisten in Stapelbauweise mit die-sem verbunden wird, womit sich im Gesamtaufbau ein Stapel von drei übereinander lie-genden Platinen ergibt. 3 Aufbau und Struktur des Mikrocontrollers und verfügbare Ressourcen Das folgende Bild zeigt die Anordnung der 64 Anschlusspins des AT-Mega128.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 6/29

Von diesen 64 Anschlüssen sind, wie bereits erwähnt, 53 Anschlüsse von den multifunkti-onalen Eingangs-/Ausgangspins belegt, die als Ports A bis F in Gruppen von jeweils 8 Pins und als Port G mit 5 Pins logisch zusammengefasst werden. Die verbleibenden 11 Anschlüsse dienen Versorgungs- und Steuerfunktionen. Die generelle Architektur von Mikrocontrollern der Atmel-AVR-Reihe zeigt das folgende Bild.

Neben den bei allen Prozessoren vorhandenen internen Registern, wie Programmzähler (program counter), Statusregister und Stapelzeiger (stack pointer) besitzen AVR-Controller darüber hinaus einen Satz von 32 8-Bit-Registern (R0 bis R31) für allgemeine Anwendun-gen (general purpose register), die im adressierbaren Datenspeicherbereich über die Ad-ressen 00h bis 1Fh ansprechbar sind. Die oberen 6 dieser Register (R27 bis R31) lassen sich jeweils paarig als 3 16-Bit-Register verwenden und werden als X-, Y- und Z- Register bezeichnet (s. Bild unten).

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 7/29

Mit Hilfe dieser 16-Bit-Register werden bei Verwendung als Adresszeiger insbesondere komplexere Adressierungsarten, wie indirekte Adressierung mit automatischem Inkre-ment/Dekrement, unterstützt. Wie bei allen Mikrocontrollern erfolgt die Konfiguration der Spezialfunktionen über geson-derte Register, die sog. SFRs (special function registers). Bei AVR-Controllern werden die SFRs auch als I/O-Register bezeichnet. Im Anhang B ist die komplette Liste der Bezeich-nungen und Struktur dieser I/O-Register mit jeweils einer kurzen Funktionsbeschreibung aufgeführt. Die im Praktikum benötigten I/O-Register werden, dort wo sie verwendet wer-den, gesondert benannt bzw. eingehender erläutert. Mikrocontroller der AVR-Reihe besitzen hinsichtlich der Speichernutzung eine Harvard-Architektur, d.h. Daten- und Programmspeicher verwenden eigene getrennte Adressberei-che. Das nachfolgende Bild zeigt die Belegung der verschiedenen Adressbereiche beim hier verwendeten AT-Mega128.

Datenspeicher Programmspeicher Normaler Modus AT-Mega 103 Kompatibilität

Beim o.g. AT-Mega103 handelt es sich um den Vorgänger des AT-Mega128 mit geringe-rem Funktionsumfang und geringerer Komplexität, zu dem der AT-Mega128 unter be-stimmten einschränkenden Bedingungen kompatibel sein kann. Die Belegung der Ports durch die Applikationsplatine wurde für das Praktikum so gewählt, dass die Kompatibili-tätsbedingungen eingehalten werden, was jedoch für die Versuche nicht zwingend not-wendig ist. Der Kompatibilitätsmodus zum AT-Mega103 wird beim AT-Mega128 über ein spezielles sog. "Fuse"-Bit eingestellt (s. später). Wie im obigen Bild Mitte und rechts erkennbar ist, besitzt der AT-Mega128 im Datenspei-cherbereich im Anschluss an die 32 Prozessorregister 64 zum AT-Mega103 äquivalente I/O-Register sowie 160 weitere I/O-Register für die Konfiguration seiner Spezialfunktionen,

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 8/29

die jedoch nicht im Kompatibilitätsmodus zur Verfügung stehen. Auch unterscheidet sich die Größe des verfügbaren statischen RAM geringfügig, je nach Modus. Beim "Flash"-Programmspeicher unterteilt sich der adressierbare Speicherbereich variabel konfigurierbar in den "BOOT"-Speicherbereich und den Applikations-Speicherbereich (s. Bild oben links). Diese Unterteilung ist notwendig für Anwendungen in denen eine Modifi-kation des Applikations-Speicherinhalts durch ein laufendes Programm im "BOOT"-Speicherbereich vorgenommen werden können soll. Für die Mikrocontroller-Anwendungen im Praktikum wird lediglich die Funktion des Applikationsspeichers benötigt, so dass der "BOOT"-Speicherbereich zu Null gewählt wird. Diese Einstellung wird ebenfalls über sog. "Fuse"-Bits vorgenommen. Wie bereits erwähnt, lässt sich bei Mikrocontrollern der Amel-AVR-Reihe die Funktions-weise nicht nur durch das in den "Flash"-Speicher übertragene Programm bestimmen, sondern grundlegende funktionsbestimmende Einstellungen werden zusätzlich durch das Programmieren der sog. "Fuse"-bits und der "Lock"-Bits vorgenommen. Jede der genann-ten Programmiermöglichkeiten ist unabhängig voneinander vornehmbar. Nähere Einzel-heiten zur Bedeutung und zu den programmierbaren Funktion von "Fuse"-bits und "Lock"-Bits werden vom Praktikumsleiter im praktischen Teil zum Termin 1 vorgestellt bzw. sind den zugehörigen Datenblättern zum Mikrocontroller zu entnehmen. 4 Nutzung der Ports in Verbindung mit der Applikationsplatine Die Applikationsschaltung nutzt ganz oder teilweise bis auf Port G alle verfügbaren Ports des AT-Mega128. Dabei wird Port A vom STK501 per Kabelbrücke mit dem Anschlussport der 8 LEDs des STK500 verbunden. Dieser Port ist im Praktikum bei der Controllerinitiali-sierung als Ausgang (Output) zu konfigurieren und dient für die Versuche 1, 3 und 4 zur optischen Signalisierung von Zuständen. Das Tastenfeld des Applikations-Boards belegt Pins der Ports B und C, die Signalleuchten der Tasten (LEDs) werden über Pins der Ports C und D angeschlossen. Beide werden für die Versuche 2 und 3 benötigt. Der Lautsprecher des Applikations-Boards wird über den Pin 4 von Port B angesteuert und wird ebenfalls für Versuch 3 verwendet. Für den Versuch 4 wird der Pin 0 von Port D als Signalleitung eines Bus-Systems (1-Wire-Bus) verwendet. Als Möglichkeit zur Übermittlung von Bus-Informationen an den Nutzer kann eine serielle Kommunikation zwischen Board und PC mit den Pins 0 und 1 von Port E erfolgen. Das folgende Blockbild veranschaulicht die Nutzung der einzelnen Ports und Port-Bits. Alle im Bild nicht beschriebenen Anschlüsse werden in diesem Praktikum nicht verwendet. Fast alle Port-Pins des AT-Mega128 besitzen neben ihrer Funktion als universell einsetz-bare Ein-/Ausgangsleitungen auch eine oder mehrere Sonderfunktionen. Als Beispiele hierfür seien zum einen die oben beschriebenen Pins 0 und 1 von Port E genannt, die eine Sonderfunktion als Sende- (TXD) und Empfangsleitung (RXD) eines USART (universal synchronous/asynchronous receiver/transmitter) für den Aufbau einer seriellen Schnittstel-le bilden (siehe Versuch 4). Andererseits der Pin 4 von Port B, der eine Sonderfunktion als Timerausgang für den Timer 0 des Controllers besitzt, über den die nebenläufig vom Con-troller erzeugten Signalfolgen ausgegeben werden können (siehe Versuch 3).

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 9/29

Weitere Details zu Pin-Sonderfunktionen und zur Portnutzung finden sich in der Tabelle im Anhang C. Wie im vorangegangenen Kapitel erläutert, werden die Pin-Funktionen aller Ports über die Spezialfunktionsregister (SFRs) des Mikrocontrollers konfiguriert. Für die Standard-Nut-zung als universelle Ein-/Ausgänge sind hierfür die SFRs DDRA bis DDRG, PORTA bis PORTG und SFIOR von Bedeutung. Über eine geeignete Kombination der jeweiligen In-halte lässt sich für alle Pins aller Ports individuell einstellen, ob der jeweilige Pin als Ein- oder Ausgang genutzt wird. Bei Nutzung als Eingang ist ferner wählbar ob der Eingang sich im hochohmigen Modus (Tri-State) befinden soll, oder ob er über einen sog. Pull-Up-Widerstand mit der Versorgungsspannung verbunden werden soll. Letzteres wird im Ver-such 2 für die Ansteuerung und Abfrage der Tastenmatrix verwendet. Über das Bit PUD des SFR SFIOR lässt sich die Pull-Up-Funktion generell für alle Ports deaktivieren. Die nachfolgende Tabelle zeigt die verschiedenen nutzbaren Kombinationen und ihre Bedeu-tung.

DDxn (in DDRx) PORTxn

PUD (in SFIOR) I/O Pull Up Bemerkung

0 0 X Input nein Tri-state 0 1 0 Input ja PINxn kann begrenzt

Strom treiben 0 1 1 Input nein Tri-state 1 0 X Output nein Output "Low" (Gnd) 1 1 X Output nein Output "high" (Vcc)

AT-MEGA128

PC1PC0 PC2 PB7 PB6 PB5

PB4

PB0

PB1

PB2

PB3

SS

SCK

MOSI

MIS0

SPI

Programmier-schnittstelle

PA7PA0 ...

STK500

PC3 PC4 PC5 PC6 PC7 PD4 PD5 PD6 PD7PD0PE1PE0

RxDRS-232

TxD

DQ

1-Wire-Bus

CTSUART

LAN RxD1

RTS

TxD

PD2 PD3 PE2 PE3

A

D

A0-A7

Analog-Eingang

UART0

PF0-PF7

...

1

2

4

5

7

8

963

STK500

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 10/29

x ist durch die jeweilige Portbezeichnung A bis G zu ersetzen.. n ist durch die jeweilige Pin-Nummer 0 bis 7 des betreffenden Ports zu ersetzen. Gemäß dem Blockschaltbild des Controllers im vorherigen Kapitel gehört zu jedem Port ein Speicher-Register (Gruppe von D-Flip-Flops) auf dessen Inhalt über die SFRs PORTA bis PORTG zugegriffen werden kann. Wird ein ganzer Port oder ein beliebiger Port-Pin als Ausgang konfiguriert, dann bestimmt der Inhalt des zugehörigen PORTx-Registers bzw. des zugehörigen PORTxn-Bits des PORTx-Registers den Ausgangsspannungspegel des zugehörigen Port-Pins. Wird hingegen ein ganzer Port oder ein Port-Pin als Eingang kon-figuriert, dann kann der logische Zustand des jeweiligen Ports oder Port-Pins über das zugehörige PINx-Register bzw. über das zugehörige PINxn-Bit des PINx-Registers ausge-lesen werden. Die Unterschiede der Verwendung von PORT- und PIN-SFRs sind für das Arbeiten mit Ports wesentlich und sollten dem Programmierer immer bewusst sein. Erläuterungen zur Konfiguration der benötigten Sonderfunktionen von Ports erfolgen, so-weit erforderlich, in den jeweiligen Aufgabenbeschreibungen. 5 Praktischer Teil zum Termin 1 5.1 Regeln für den Umgang mit dem System Die im Praktikum verwendeten Geräte, Komponenten und Programme bilden in ihrer Ge-samtheit ein komplexes System mit vielfältigen Fehler- und Schädigungsmöglichkeiten. Das Erkennen und Lokalisieren von Fehlern ist in der Regel schwierig, erfordert meist ei-nen hohen Zeit- und gegebenenfalls Materialaufwand und verzögert bzw. verhindert die fristgerechte Durchführung der Versuche. Um Schäden an den Praktikumseinrichtungen zu vermeiden und einen reibungslosen Ablauf der Versuchsdurchführungen zu gewähr-leisten, ist für alle Praktikumsteilnehmer das Beachten einiger Grundregeln unerlässlich und wird daher von jedem Teilnehmer erwartet. Diese Regeln sind dabei im einzelnen: 1. Das in Betrieb setzen von PC und Mikrocontroller-Board erfolgt nur auf Anweisung des

Praktikumsbetreuers und in der von ihm vorgegebenen Weise, gleiches gilt für das Star-ten von PC-Programmen.

2. Ein Verändern von Einstellungen am Betriebssystem und an den genutzten Program-men der PCs ist nur zulässig, soweit die Praktikumsunterlagen dies vorgeben bzw. der Praktikumsbetreuer dies ausdrücklich freigibt.

3. Das Laden, Speichern, Installieren und Ausführen von nicht bereits auf dem Prakti-kums-PC befindlichen Programmen ist nicht erlaubt; die auf dem PC befindlichen Pro-gramme dürfen nicht kopiert werden.

4. Ein Anschließen von nicht zum Praktikum gehörenden Komponenten, insbesondere von Speichermedien (z. B. USB-Memorysticks), sowie die Benutzung des CD/DVD-Laufwerks sind strikt untersagt, sofern ihre Benutzung nicht ausdrücklich durch den Praktikumsbetreuer erlaubt wird.

5. Das Kunststoffgehäuse mit der Applikationsschaltung darf niemals eigenmächtig geöff-net werden. Jegliche Änderungen an den im Gehäuse befindlichen Komponenten wer-den im Bedarfsfall ausschließlich durch den Praktikumsbetreuer ausgeführt.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 11/29

6. Komponenten der Applikationsschaltung, die durch Gehäuseöffnungen von außen er-reichbar sind, dürfen niemals bei eingeschalteter Betriebsspannung entfernt oder ein-gesetzt werden. Ebenso ist ein Einführen von Gegenständen und Stoffen jeglicher Art durch die Gehäuseöffnungen strikt untersagt.

7. Änderungen der Konfiguration des Applikations-Boards, insbesondere hinsichtlich der Spannungsversorgungseinstellungen, der "Fuses"-Einstellungen und der "Lock"-Bits-Einstellungen, die jeweils nicht reversible Schäden am Contoller bzw. am Board hervor-rufen können, sind strikt untersagt.

8. Das Einstecken und/oder Trennen von Verbindungs- bzw. Versorgungsleitungen des Praktikumsaufbaus ist nur auf Anweisung des Praktikumsbetreuers zulässig.

9. Bei Auftreten von Rauchentwicklung oder Brandgeruch ist die betreffende Systemkom-ponente sofort vom Versorgungsnetz zu trennen (Netzstecker ziehen) und der Prakti-kumsbetreuer ist unverzüglich zu benachrichtigen.

Sollte ein Teilnehmer grob fahrlässig oder mit erkennbarem Vorsatz gegen diese Regeln verstoßen, erfolgt unabhängig von dadurch bedingt hervorgerufenen Schäden ein soforti-ger Ausschluss vom Praktikum. Im Falle von durch einen Regelverstoß unmittelbar oder mittelbar hervorgerufenen Schä-den an Einrichtungen des Praktikums behält sich die Fachgebietsleitung eine In-Regress-Nahme des oder der Verursacher(s) vor. 5.2 Konfiguration von Kit und Mikrocontroller mit dem Programm AVR-Studio Dieser erste praktische Teil des Termins 1 dient dem Kennenlernen der verschiedenen Komponenten des Praktikumsaufbaus, des Programms AVR-Studio (Atmel) und der Kon-figurier- und Programmiermöglichkeiten des Mikrocontrollers AT-Mega 128. Insbesondere die folgenden Abläufe und Techniken werden dabei durch den Praktikumsbetreuer Schritt für Schritt vorgestellt und sollen durch die Praktikumsteilnehmer an Ihrem Praktikumsar-beitsplatz entsprechend nachempfunden und auf Anweisung ausgeführt werden: • Startprozedur für die Komponenten des Praktikumssystems • Wahl der richtigen Startoption beim REMBO-BOOT-Manager • Gruppenabhängiges Login und Passwort für den PC-Zugang • Arbeitsbereich, Gruppenverzeichnisse und Programm-Links auf dem Desktop • Starten des Programms AVR-Studio • Vorstellung des Hardware-Kits aus STK500-/501-Board und Applikationsplatine • Konfiguration und Programmierung des Kits mit dem Programm AVR-Studio • Identifikation des Mikrocontrollers und Löschen des Flash-Programmspeichers • Einstellung von "Fuses" und "Lock"-Bits mit dem Programm AVR-Studio (nur Vorfüh-

rung, nicht durch die Praktikumsteilnehmer selber durchzuführen!) • Laden, Übertragen und Starten eines assemblierten und gelinkten Programms

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 12/29

6 Praktischer Teil zum Termin 2 6.1 Nutzung von AVR-Studio für die Assemblerprogrammierung Als Werkzeug zur Programmentwicklung für Mikrocontroller der Atmel-AVR-Reihe wurde das Programm AVR-Studio von Atmel im vorhergehenden Kapitel bereits vorgestellt, dass im Folgenden für das Erstellen, Testen und Simulieren eines Assembler-Programms ge-nutzt werden soll. Über das Menü Project→New_Project lässt sich ein neues Programm-Entwicklungsprojekt eröffnen. In dem sich öffnenden Menü sollten als Projekttyp der Atmel-AVR-Assembler ausgewählt und ein Projekt- und Assembler-Dateinahme eingegeben werden. Standard-mäßig wird bei Eröffnung eines neuen Projektes auch ein gleichnamiger Ordner im ange-gebenen Arbeitsverzeichnis erstellt, in dem alle notwendigen Dateien zum Projekt automa-tisch abgelegt werden. Die wichtigsten dieser Dateien sind: *.aps enthält projektspezifische Informationen wie z. B. Dateipfade etc. *.asm enthält den vom Benutzer erstellten Assembler-Quellcode (lesbare Textdatei) *.map enthält eine Zuordnungstabelle von symbolischen Namen zu Adressen *.hex enthält den lauffähigen, übersetzten Programmcode für den Controller Die Dateien *.map und *.hex werden erst bei der Assemblierung des Quellcodes erstellt. Das nachfolgende Bild zeigt die Benutzeroberfläche von AVR-Studio mit dem geöffneten Projekt SMR_TERMIN1 aus dem vorangegangenen Versuch.

Zu den grundlegenden Inhalten im Quellcode von Assembler-Projekten gehören Angaben zu bei der Übersetzung einzubindenden weiteren Dateien (z. B. Deklarationsdateien mit symbolischen Registernamen etc.), zur gewünschten Adresslage des übersetzten Codes im Programmspeicher des Mikrocontrollers und (bei Verwendung von Unterprogramm-

Projekt-Explorer: zeigt die verwendeten Projektressourcen, z. B. Include-Files

Quellcode-Fenster: zeigt den vom Nutzer er-stellten Assembler-Code

Build-Fenster: zeigt Ergebniskommentare zum erfolgten Assembliervorgang

Fenster von weiteren zum Projekt gehörenden Dateien: hier, Include-File

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 13/29

sprüngen, Interrupts etc.) Angaben zur Lage des Stapel-Speichers (Stack). Beispielhaft sind im Quellcode des vorhergehenden Bildes einige dieser Angaben in gültiger Assemb-ler-Syntax eingebracht. Nach dem Erstellen des Programm-Quellcodes kann über das Menü Build→Build die Ü-bersetzung in spezifischen Maschinencode für den betreffenden Mikrocontroller gestartet werden. Warnungen, Fehlermeldungen und Informationen zum Assembliervorgang wer-den dabei im Build-Fenster angezeigt. 6.2 Übertragung von Programmen an das Kit und Programmausführung Die beim Assembliervorgang erzeugte *.hex-Datei enthält den zugehörigen Maschinenco-de und ihr Inhalt muss zur Ausführung des Programms an das Zielsystem (Praktikums-Board) übertragen werden. Dies geschieht über die Wahl des Menüs Tools→Program_AVR→Auto_Connect, durch das sich nachfolgend gezeigtes Auswahl-Fenster öffnet. In diesem Fenster ist im Bereich Program der betreffende Ziel-Controller (hier AT-Mega 128) auszuwählen, ein möglicherweise noch aktives Programm auf dem Ziel-Controller über die aktivierte Option Erase_Device_Before_Programming zu löschen, im Feld Input_HEX_File die zu übertragende Maschinencode-Datei auszuwählen und durch Aktivieren des Programm-Knopfs Program die Übertragung zu starten.

Das übertragene Programm startet sofort, da im Anschluss an den Übertragungsprozess ein Hardware-Reset des Controllers durch das Board ausgelöst wird. 6.3 Aufgabe: Erstellen eines Programms für eine Blinklampe in Assembler Für die Lösung der folgenden Aufgabe wird die auf dem STK500-Board befindliche Reihe von 8 LEDs benötigt, die wie schon erwähnt, durch eine Kabelbrücke mit den Anschluss-pins des Port A verbunden ist. Jede einzelne LED ist dabei in der im folgen Bild gezeigten Weise über einen Transistor von der Spannungsversorgung des Mikrocontrollers (VTG) entkoppelt, so dass unabhängig von VTG die LED mit gleicher Helligkeit leuchtet.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 14/29

Die für die Beantwortung der nachfolgenden Fragen und die Ausführung des Programm-entwurfs zur folgenden Aufgabenstellung notwendigen Informationen können den voran-gegangenen Kapiteln, dem Anhang zu diesen Versuchsunterlagen und dem Datenblatt des AT-Mega128 entnommen werden. Vorbereitende Fragen zur Klärung:

• Wie ist der Zusammenhang zwischen dem logischen Ausgangspegel an den jeweiligen Pins des Port A und dem Leuchtzustand der zugehörigen LED? _____________________________________________________________________

• Wie ist der Port A über die SFRs PORTA und DDRA zu konfigurieren, damit alle 8 LEDs leuchten? PORTA = ___________ DDRA = ___________

• Welche Standardeinstellung (default) besitzt das Bit PUD (pull up disable) des SFR's SFIOR, das zur generellen Abschaltung der Pull-Up-Widerstände dient? PUD = ___________

• Wozu dienen die beiden internen Controller-Register SPL und SPH und wie sind diese zur Realisierung eines Stapelspeicherbereichs (Stack) von 512 Byte RAM zu Wählen? SPL = ___________ Bedeutung: ___________________________________ SPH = ___________ Bedeutung: ___________________________________

• An welcher Adresse im "Flash"-Programmspeicher sollte ein zu erstellendes Assem-blerprogramm (ohne Interruptverwendung) beginnen und wie ist dies im Quellcode des Programms für den Assembler anzugeben (Assembler-Direktive)? ___________________

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 15/29

• Welche Bedeutung haben im Einzelnen die folgenden Assembler-Befehle des Mikro-controllers, die für die Lösung der nachfolgenden Aufgabe benötigt werden, und wievie-le Taktzyklen des Controllertaktes sind zu ihrer Ausführung jeweils nötig? LDI _____________________________________________________________ OUT _____________________________________________________________ INC _____________________________________________________________ CPI _____________________________________________________________ BRNE _____________________________________________________________ JMP _____________________________________________________________ RET _____________________________________________________________ CALL _____________________________________________________________

• Welcher Controllertakt wird beim vorliegenden Praktikums-Board verwendet? fclk = ___________ MHz

Praktische Programmieraufgabe: Entwickeln Sie ein Assembler-Programm mit dem Namen SMR_Termin2, das – eine Blinkfunktion der an Port A angeschlossenen LEDs durch periodischen Wechsel

des Logikzustands aller geraden und aller ungeraden Bits des Port A erzeugt, – unter Zugrundelegung der bekannten Taktfrequenz und der Taktzyklen für die verwen-

deten Assemblerbefehle eine Blinkfunktion mit einer Frequenz von ca. 2 Hz ausführt, – ein Hauptprogramm MAIN mit einer Endlosschleife und eine Warteroutine DELAY als

Unterprogramm besitzt, – zur Umsetzung der Zeitverzögerung zwischen den Zustandswechseln der LEDs das

Unterprogramm DELAY durch verschachtelte Zählschleifen realisiert, – für alle benötigten Speicheranwendungen die Register R20 bis R25 benutzt. 6.4 Aufgabe: Verwenden des Simulators von AVR-Studio für den Programmtest Nach dem Laden des im vorherigen Unterkapitel erstellten Projektes SMR_Termin2 und dem Assemblieren des darin enthaltenen Quellcodes gelangt man über das Menü De-bug→Start_Debugging in den Debugger-Modus von AVR-Studio in dem man zur Funkti-onsanalyse und Fehlersuche den Programmablauf auf dem PC simulieren kann. Hierfür ist das Praktikums-Board nicht erforderlich.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 16/29

Der Simulator erlaubt das Beobachten aller Controller-internen Ressourcen wie z. B. Re-gisterinhalte, Portbits, SFRs etc. während des Programmablaufs. Der Programmablauf kann dabei in Einzelschritten (Trace- bzw. Step-Betrieb), Funktionsblockweise (z. B. bis zum Ende eines Unterprogramms), bis zu voreinstellbaren Markierungen (Breakpoints o-der Cursor-Position) oder im Dauerbetrieb bis zum manuellen Abbruch erfolgen. Das fol-gende Bild zeigt die Benutzeroberfläche von AVR-Studio im Debugger-Modus in einer ty-pischen Simulationssituation.

Praktische Simulationsaufgabe: Benutzen Sie das von Ihnen erstellte Programm SMR-Termin2 zur Erprobung der ver-schiedenen Stufen des Simulationsablaufs. Zur Verkürzung der Simulationsdauer emp-fiehlt sich eine Verringerung der Zahl der Durchläufe in den Warteschleifen des Blinker-Programms. Gehen Sie in folgenden Schritten vor:

• Lassen Sie zunächst das Programm Befehl für Befehl in Einzelschritten ausführen • Vollziehen Sie die Änderungen der Inhalte aller betroffenen Register und Ports nach • Erproben Sie die Blockausführung der Warteschleifen • Erproben Sie die Programmausführung bis zu einer gewählten Cursor-Position • Ändern Sie zwischen zwei Simulationsschritten den Inhalt der Zählregister • Schauen Sie sich während des Simulationslaufs die Flags des Statusregisters an

Ablaufsteuerung: ermöglicht unterschiedlich-ste Simulations-Stufen

Simulationsschrittmarke: zeigt auf den im nächsten Schritt ausgeführten Befehl

Controller-I/O-Fenster: zeigt z. B. Register, Port und Statusinformationen

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 17/29

7 Praktischer Teil zum Termin 3 7.1 Nutzung von Codevision-AVR für die C-Programmierung Während die Assembler-Programmierung direkt mit dem Software-Werkzeug AVR-Sudio des Board- und Prozessorherstellers Atmel erfolgen kann, sind für die Hochsprachen-Programmierung zusätzliche Software-Entwicklungswerkzeuge von Drittanbietern erfor-derlich. Eines dieser Produkte für die Programmiersprache C ist das Programm Codevisi-on-AVR des Herstellers HP-Infotec, das im vorliegenden Praktikum eingesetzt wird. Eine der Besonderheiten von Codevision-AVR ist der sog. Code-Wizard, ein automatischer Programm-Konfigurator, der den Einstieg in neue Software-Projekte erheblich erleichtert (s. Punkt 7.5). Über die Wahl des Menüs File→New, anschließendes Bestätigen der Option File_Type:-Projekt im folgenden Auswahlfenster und (ohne die Verwendung des Code-Wizard) nach Eingabe eines geforderten Projektnamens gelangt man in das Configure_Projekt-Fenster. In diesem Fenster lassen sich wichtige Vorgaben für die Übersetzung des C-Quellcodes festlegen (s. auch Punkt 7.4). Durch Bestätigen des Auswahlknopfs "OK" erreicht man das Hauptfenster des Programms. Das nachfolgende Bild zeigt die Benutzeroberfläche des Programms Codevision-AVR und seine Teilbereiche in einer typischen Programmier-Situation sowie die Ergebnisse eines vorangegangenen Compilier-Vorgangs bei fehlerbe-haftetem Quellcode.

Projekt-Explorer: zeigt die verwendeten Projektressourcen, z. B. Include-Files

Quellcode-Fenster: zeigt den vom Nutzer er-stellten C-Code

Compile-/Make-Fenster: zeigt Ergebniskommentare zum erfolgten Compiliervorgang

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 18/29

7.2 "Compile" und "Make" eines Beispiel-Programms und Ergebnisanalyse Wie auch bei anderen C-Compilern üblich erfolgt die Übersetzung des erstellten C-Quell-codes in zwei Stufen. Zunächst wird jedes Sprachelement des C-Quellcodes in eine äqui-valente Folge von Assembler-Befehlen umgesetzt, wobei die jeweiligen Compiler-Direktiven (s. Punkt 7.4) berücksichtigt werden. Der so erzeugte Assembler-Code wird als lesbare Datei vom Typ *.asm abgelegt und kann im Bedarfsfall vom Programmierer noch modifiziert werden. In darauf folgenden Schritten (Assemblieren und Linken) erfolgt die Umsetzung des Assembler-Codes in Maschinencode für den vorbestimmten Programm-speicher-Bereich und die Erzeugung der Maschinencode-Datei *.hex. Über die Wahl des Menüs Project→Compile wird nur die erste Stufe der Compilierung (Umsetzung in Assembler-Befehlsfolge) durchgeführt. Dabei wird geprüft, ob alle Bedin-gungen für eine erfolgreiche weitere Übersetzung gegeben sind. Meldungen über etwaig bei der Übersetzung aufgetretene Fehler und Warnungen werden im Compile-Fenster der Bedieneroberfläche angezeigt (s. Bild unter Punkt 7.1). Das nachfolgende Bild zeigt im Teilbild a) links den Ergebnisbericht des Compile-Vorgangs bei einem Beispielprogramm.

a) Compile-Informations-Fenster

b) Make-Informations-Fenster

Beim einfachen Compile-Vorgang werden keine *.asm- und *.hex-Dateien erzeugt, er dient lediglich der Fehlerüberprüfung des Quellcodes.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 19/29

Über die Wahl des Menüs Project→Make werden alle Stufen der Compilierung bis hin zur Erzeugung des Maschinencodes durchgeführt. Er schließt damit alle Prüfungen des Com-pile-Vorgangs mit ein und es werden darüber hinaus die entsprechenden Ergebnis-Dateien *.asm und *.hex erzeugt. Der Make-Vorgang ist immer der letzte Schritt vor dem Übertragen von Maschinencode auf das Ziel-System. Das vorherige Bild zeigt im Teilbild b) rechts den Ergebnisbericht des Make-Vorgangs bei einem Beispielprogramm. 7.3 Übertragung von Programmen an das Kit und Programmausführung Die beim Compiliervorgang im letzten Schritt erzeugte *.hex-Datei enthält den zugehörigen Maschinencode und ihr Inhalt muss zur Ausführung des Programms an das Zielsystem (Praktikums-Board) übertragen werden. Codevision-AVR besitzt hierfür ein eigenes Schnittstellenmodul für die Kommunikation mit dem STK500/501-Board, so dass nicht auf das Programmier-Modul des AVR-Studio zurückgegriffen werden muss. Dieses Schnitt-stellenmodul ist über die Wahl des Menüs Tools→Chip_Programmer erreichbar, durch das sich nachfolgend gezeigtes Auswahl-Fenster öffnet. Über dieses Fenster werden alle wichtigen Programmiermöglichkeiten des Mikrocontrollers unterstützt (Flash-, EEPROM, "Lock"-Bits- und "Fuses"-Programmierung). Der verwendete Mikrocontroller kann aus ei-ner Liste verfügbarerer Controllermodelle ausgewählt werden. Im unteren Fenster-Bereich sind die möglichen Optionen für die Programmierung des Controllers bereits sinnvoll vor-gewählt (check signature und verify sind aktiviert). Im Bereich Program werden durch die Wahl von Erase_Chip ein möglicherweise noch aktives Programm auf dem Ziel-Controller gelöscht und mit der Auswahl von Flash der zuletzt übersetzte Quellcode als Maschinen-code an das Praktikums-Board übertragen.

Das übertragene Programm startet sofort, da im Anschluss an den Übertragungsprozess ein Hardware-Reset des Controllers durch das Board ausgelöst wird.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 20/29

7.4 Einstellmöglichkeiten und Konfiguration des C-Compilers Nach der Eröffnung eines neuen Projektes, wie oben beschrieben, bzw. nach dem Öffnen eines bereits bestehenden Projektes kann über die Wahl des Menüs Project→Configure ein Konfigurationsfenster aufgerufen werden, über das grundlegende Voreinstellungen für den Compilier-Vorgang getroffen werden können. Das folgende Bild zeigt das Konfigurati-onsfenster im Untermenü C_Compiler und benennt die wichtigsten vorzunehmenden Ein-stellungen für das Praktikum.

Alle im oberen Bild nicht explizit benannten Einstellungen sollten nicht verändert werden. 7.5 Einsatz des "Code-Wizard" als Einstieg in neue Controller-Programme In der Regel beginnt eine Programm-Entwicklung in einer Hochsprachen-Entwicklungs-umgebung mit einem leeren Quellcode-Feld, das der Entwickler dann Zeile für Zeile mit seinen Befehlsfolgen füllt. Bei der C-Programmierung von Mikrocontrollern sind insbeson-dere bei der Initialisierung der funktionsbestimmenden SFRs anwendungsspezifisch viele Dinge zu bedenken und viele Abhängigkeiten zu beachten. Dementsprechend fehlerträch-tig ist die Anfangsphase eines Controller-Projektes. Um hier eine Hilfe zu bieten, ist in der Entwicklungsumgebung Codevision-AVR unter dem Namen Code-Wizard ein Programm-

Controller-Spezifikation: erfordert Einstellung von Controller-Typ und Taktrate

Code-Optimierungsregel: für das Praktikum ist die Ein-stellung ohne Bedeutung

Übersetzungsregeln: sollten in der gezeigten Weise beibehalten werden

Boot-ROM-Einstellungen: es wird nur ein Applikations-programm erstellt

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 21/29

Konfigurator integriert, mit dem strukturiert menügestützt die benötigte Controller-Konfigu-ration (SFR-Einstellungen) erarbeitet werden kann. Nach Abschluss der Konfigurationsar-beiten erstellt der Code-Wizard automatisch ein C-Basisprogramm (Quellcode), das alle getroffenen Vorgaben berücksichtigt. Das nachfolgende Bild zeigt das Code-Wizard-Konfigurationsfenster im Untermenü Ports.

Der Aufruf des Code-Wizard erfolgt entweder bei der Eröffnung eines neuen Projektes durch Bestätigung der Nutzungsabfrage oder aus einem bestehenden Projekt heraus durch die Wahl des Menüs Tools→CodeWizardAVR. Bei letztgenanntem Aufruf aus einem bestehenden Projekt heraus ist zu beachten, dass durch die Menü-Option File→Gene-rate_and_Exit ein neuer Quellcode generiert wird, der den bereits erstellten Quellcode ü-berschreibt, was in der Regel vom Programmierer nicht beabsichtigt ist. 7.6 Aufgabe: Erstellen eines Programms für eine Blinklampe in C Die folgende Aufgabe stellt das Pendant der Aufgabe aus dem vorangegangenen Prakti-kumstermin dar, jedoch mit dem Unterschied, dass eine programmtechnische Umsetzung jetzt in der Hochsprache C erfolgen soll. Alle unter Punkt 6.3 gemachten Angaben gelten in gleicher Form auch für diese Aufgabe. Die Grund-Konfiguration des Mikrocontrollers soll mit Hilfe des Code-Wizard erfolgen. Die für die Beantwortung der nachfolgenden Fragen und die Ausführung des Programm-entwurfs zur folgenden Aufgabenstellung notwendigen Informationen können den voran-gegangenen Kapiteln, dem Anhang zu diesen Versuchsunterlagen, dem Datenblatt des AT-Mega128 und dem Handbuch zum Programm Codevision-AVR entnommen werden.

Ressourcen und Funktio-nen des AT Mega128: sind spezifisch einstellbarBeispielhaft für PORT A:

bitweise Einstellung von Port-Funktionen per "Maus-Click"

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 22/29

Vorbereitende Fragen zur Klärung:

• Welche Einstellungen sind im Untermenü Chip des Code-Wizard zu machen? Chip = ___________ Clock = ___________ MHz Program Type = ___________

• Welche Einstellungen sind im Menü Ports bei Port_A für jeden Pin gleichermaßen zu machen, damit im Startzustand alle 8 LEDs aus sind? Data Direction = ___________ Output Value = ___________

• Welche Bedeutung hat die vom Konfigurator erstellte Zeile #include <mega128.h> im Quelltext? ______________________________________________________________________

• Charakterisieren Sie kurz den Inhalt der Header-Datei mega128.h ______________________________________________________________________

• Welche Wartefunktionen werden in der Header-Datei delay.h deklariert? ______________________________________________________________________

• Welche Randbedingungen muss das jeweilige Argument dieser Funktionen erfüllen? ______________________________________________________________________

Praktische Programmieraufgabe: Entwickeln Sie ein C-Programm mit dem Namen SMR_Termin3, das – eine Blinkfunktion der an Port A angeschlossenen LEDs durch periodischen Wechsel

des Logikzustands aller geraden und aller ungeraden Bits des Port A erzeugt, – unter Zugrundelegung der bekannten Taktfrequenz und der Taktzyklen für die verwen-

deten Assemblerbefehle eine Blinkfunktion mit einer Frequenz von ca. 2 Hz ausführt, – ein Hauptprogramm main, bestehend aus einem Konfigurationsblock und einer Endlos-

schleife für die Realisierung der LED-Zustandswechsel, besitzt, – zur Umsetzung der Zeitverzögerung zwischen den Zustandswechseln der LEDs eine

Wartefunktion aus der Bibliothek delay.h verwendet.

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 23/29

7.7 Aufgabe: Verwenden des Simulators von AVR-Studio unter Codevision-AVR Die Funktion des Simulators von AVR-Studio wurde bereits früher unter Punkt 6.4 erläu-tert. Um diesen Simulator auch unter Codevision-AVR nutzbar zu machen, wurde durch den Menüaufruf Tools→Debugger ein Übergang zwischen beiden Programmen geschaf-fen. Dabei greift der Simulator auf Dateien vom Typ *.coff zurück, die automatisch beim Compilieren von Quellcode unter Codevision-AVR erzeugt werden und alle für die Simula-tion des C-Programms unter AVR-Studio benötigten Zusatzinformationen enthalten. Praktische Simulationsaufgabe: Benutzen Sie das von Ihnen erstellte Programm SMR-Termin3 zur Erprobung der ver-schiedenen Stufen des Simulationsablaufs wie früher bereits unter Punkt 6.4, jedoch jetzt auf Hochsprachenebene. Zur Verkürzung der Simulationsdauer empfiehlt sich wiederum eine Verringerung der Wartezeit in den delay-Funktionen des Blinker-Programms. Gehen Sie in folgenden Schritten vor:

• Lassen Sie zunächst das Programm Befehl für Befehl in Einzelschritten ausführen • Vollziehen Sie die Änderungen der Inhalte aller betroffenen Register und Ports nach • Erproben Sie die Programmausführung bis zu einer gewählten Cursor-Position • Schauen Sie sich während des Simulationslaufs die Flags des Statusregisters an

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 24/29

Anhang A: Assembler-Befehlssatz des AT-Mega128

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 25/29

Anhang A: Fortsetzung Assembler-Befehlssatz des AT-Mega128

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 26/29

Anhang B: I/O-Register-Zusammenfassung (SFRs) des AT-Mega128

Alle Seitenangaben beziehen sich auf das vollständige Datenblatt zum AT-Mega128

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 27/29

Anhang B: Fortsetzung I/O-Register-Zusammenfassung (SFRs)

Alle Seitenangaben beziehen sich auf das vollständige Datenblatt zum AT-Mega128

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 28/29

Anhang C: Port-Nutzungstabelle im Zusammenhang mit der Applikationsplatine PORT Normale Funktion Sonder Funktion PORT A Input/Output Port mit optio-

nalem Pull-Up-Widerstand Ext. Memory Schnittstelle AD0 – AD7

PORT B Input/Output Port mit optio-nalem Pull-Up-Widerstand

s. u.

PORT C Nur Output Port in Atmega 103 compatibility mode (sonst: Input/Output Port mit optionalem Pull-Up-Widerst.)

Ext. Memory Schnittstelle A8 – A15

PORT D Input/Output Port mit optio-nalem Pull-Up-Widerstand

s. u.

PORT E Input/Output Port mit optio-nalem Pull-Up-Widerstand

s. u.

PORT F Nur Output Port in Atmega 103 compatibility mode (sonst: Input/Output Port mit optionalem Pull-Up-Widerst.)

ADC, s. u.

PORT G Nur Output Port mit vorgege-benen Funktionen in Atmega 103 compatibility mode (sonst: Input/Output Port mit optionalem Pull-Up-Widerst.)

s. u.

Port Pin von PORTB Sonder Funktion PB7 OC2/OC1(Output Vergleich und PWM Output für Timer/counter2

oder Output Verglich und PWM Output C für Timer/counter1) PB6 OC1B(Output Vergleich und PWM Output B für Timer/Counter1) PB5 OC1A(Output Vergleich and PWM Output für Timer/Counter1) PB4 OC0(Output Vergleich und PWM Output für Timer/Counter0) PB3 MISO(SPI Bus Master Input/Slave Output) PB2 MOSI(SPI Bus Master Output/Slave Input) PB1 SCK(SPI Serial Clock) PB0 SS(SPI Slave Select Input Port Pin von PORTD Sonder Funktion PD7 T2(Timer Counter2 Clock Input) PD6 T1(Timer Counter1 Clock Input) PD5 XCK(USART 1 External Clock Input/Output) PD4 ICP1(Timer/Counter1 Input Capture Pin) PD3 INT3/TXD(External Interrupt 3 Input or USART1 Transmit Pin) PD2 INT2/TXD(External Interrupt 2 Input or USART1 Receiver Pin) PD1 INT1/TXD(External Interrupt 1 Input or TWI Serial Data) PD0 INT0/SCL(External Interrupt0 Input or TWI Serial Clock

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 1

SMR-P Viga/08

Blatt: 29/29

Anhang C: Fortsetzung der Port-Nutzungstabelle Port Pin von PORTE Sonder Funktion PE7 INT7/ICP3(External Interrput 7 Input or Timer/Counter3 Input

Capture Pin) PE6 INT6/T3(External Interrupt 6 Input or Timer/Counter3 Clock In-

put) PE5 INT5/OC3C(External Interrupt 5 Input or Output Compare and

PWM Output C for Timer/Counter3) PE4 INT4/OC3B(External Interrupt 4 Input or Output Compare and

PWM Output B for Timer/Counter 3) PE3 ANI1/OC3A(Analog Comparator Negative Input or Output Com-

pare and PWM Output A for Timer/Counter3) PE2 ANI0/XCK0(Analog Comparator Positive Input or USART0 Ex-

ternal Clock Input/Output) PE1 PDO/TXD0(Programming data Output or USART0 Transmit Pin) PE0 PDI/RXD0(Programming data Input or USART0 Receiver Pin) Port Pin von PORTF Sonder Funktion PF7 ADC7/TDI(ADC Input Channel 7 or JTAG Test Data Input) PF6 ADC6/TDI(ADC Input Channel 6 or JTAG Test Data Output) PF5 ADC5/TDI(ADC Input Channel 5 or JTAG Test Mode Select) PF4 ADC4/TDI(ADC Input Channel 4 or JTAG Test Clock) PF3 ADC3(ADC Input Channel 3) PF2 ADC2(ADC Input Channel 2) PF1 ADC1(ADC Input Channel 1) PF0 ADC0(ADC Input Channel 0) Port Pin von PORTG Sonder Funktion PG4 TOSC1(RTC Oscillator Timer/Counter0) PG3 TOSC2(RTC Oscillator Timer/Counter0) PG2 ALE(Address Latch Enable to External Memory) PG1 RD(Read Strobe to External Memory) PG0 WR(Write Strobe to External Memory) Zeichenerklärung: Einzelpinerläuterungen sind nur bei differenziert genutzten Ports aufgeführt. Grün markierte Ports/Pins werden verwendet und wurden frei gewählt. Rot markierte Ports/Pins werden in ihrer jeweiligen Spezialfunktion verwendet.