12
Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 1/12 Versuch 2 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 SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Embed Size (px)

Citation preview

Page 1: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 1/12

Versuch 2

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

Page 2: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 2/12

Inhalt 1 Kombinierte Nutzung von Ein-/Ausgabe-Ports für die Tasterabfrage 2 Tristate- und Pull-Up-Beschaltung von Port-Anschlüssen 3 Bit-selektive Manipulation von Datenworten über Logikfunktionen 4 Einzelbit-Manipulationen von Registern über spezielle Notationsformen 5 Praktischer Teil zum Termin 4 5.1 Initial-Konfiguration der benötigten Ports mit dem Code-Wizard 5.2 Aufgabe: Erstellen eines Programms zur zyklischen Abfrage von Schaltzuständen

einer Tastermatrix und Signalisierung über zugehörige Status-LEDs 6 Praktischer Teil zum Termin 5 6.1 Signalverhalten beim Schließen und Öffnen mechanischer Kontakte 6.2 Maßnahmen zum Entprellen von Schaltern und Tastern 6.3 Aufgabe: Erstellen eines Programms zur zyklischen Abfrage und Prellkompensation

von Schaltzuständen einer Tastermatrix mit Wechsel des Leuchtzustands der zugehörigen LED nach jedem Ein-/Aus-Zyklus des betreffenden Tasters

Page 3: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 3/12

1 Kombinierte Nutzung von Ein-/Ausgabe-Ports für die Tasterabfrage Die Aufgabenstellungen des Versuchs 2 behandeln die dynamische Konfiguration unter-schiedlichster interner Beschaltungsvarianten von Port-Ein-/-Ausgängen. Als Beispiel für die sinnvolle Nutzung aller möglichen schaltbaren Portzustände soll das zyklische Abfra-gen (Scannen) der Schaltzustände einer Matrix, gebildet aus insgesamt neun Tastern die in drei Zeilen von je drei Tastern angeordnet sind, programmgesteuert umgesetzt werden. Die Technik Tastenfelder mit der im folgenden beschriebenen Matrix-Scanmethode auszu-lesen bietet gegenüber einer Lösung, bei der jeder einzelne Taster eines Tastenfeldes individuell über einen eigenen Port-Anschluss ausgelesen werden kann den Vorteil, dass sich hierdurch die Zahl der erforderlichen Port-Anschlüsse insbesondere bei einer großen Tasteranzahl drastisch verringert. Im folgenden Bild (Mitte und links) ist beispielhaft für die im Praktikum verwendete Tastenmatrix die elektrische Verschaltung der Taster mittels Zei-len- und Spaltenleitungen dargestellt.

Beschaltung: Taster-Matrix Tastenfeld: Draufsicht Beschaltung: Taster-LEDs

PC1PC0 PC2 PB7 PB6 PB5

PC3 PC4 PC5 PC6 PC7 PD4 PD5 PD6 PD7

1

2

4

5

7

8

963

Dabei werden bei Betätigung eines Tasters jeweils eine zugehörige Zeilen- und eine Spal-tenleitung elektrisch miteinander verbunden, wodurch bei geeigneter Ansteuerung der Lei-tungen eine Schaltzustandsabfrage ermöglicht wird. Eine Beschreibung der notwendigen Port-Beschaltungssequenzen zur Abfrage der Tasterzustände erfolgt im Unterpunkt 2. Die Dioden in obigem Bild links verhindern mögliche Kurzschlüsse bei gleichzeitiger Betäti-gung mehrerer Taster. Zu jedem Taster gehört eine integrierte LED, über die eine Tasterbetätigung signalisiert werden kann. Diese LEDs werden jedoch nicht automatisch durch das Betätigen des zu-gehörigen Tasters aktiviert, sondern können unabhängig vom Tasterzustand über eigene Port-Ausgänge angesteuert werden. Im obigen Bild (Mitte und rechts) ist die Zuordnung von Taster-LEDs und Port-Ausgängen dargestellt.

2 Tristate- und Pull-Up-Beschaltung von Port-Anschlüssen Für alle Port-Anschlüsse des Mikrocontrollers AT-Mega128 lassen sich, unabhängig von ihren spezifischen Sonderfunktionen, vier verschiedene Treiberkonfigurationen wählen: – hochohmiger Zustand (tristate; Port-Pin ist als Eingang beschaltet) – Pegeltreiber "High" (Gegentakt-Transistorstufe "treibt Port-Pin stark"; max. 10 mA) – Pegeltreiber "Low" (Gegentakt-Transistorstufe "treibt Port-Pin stark"; max. 10 mA)

Page 4: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 4/12

– Pull-Up-Zustand (Port-Pin ist per Widerstand mit VTG verbunden; "treibt schwach") Das folgende Schaltbild zeigt die interne Beschaltung für jeden Port-Anschluss und veran-schaulicht die Konfigurierbarkeit der verschiedenen Treiberzustände.

Für die Anwendung im Zusammenhang mit dem Scannen der im vorherigen Punkt 1 be-schriebenen Taster-Matrix sollten die Spaltenleitungen (PC0 bis PC2) jeweils selektiv wechselnd in den Pegeltreiber-Zuständen "High" (deaktivierte Leitung) und "Low" (aktivier-te Leitung) betrieben werden. Die Zeilenleitungen (PB5 bis PB7) sollten dagegen selektiv zwischen den Zuständen Tristate (deaktivierte Leitung) und Pull-Up (aktivierte Leitung) wechseln. Das selektive Scannen eines jeden Tasters erfolgt dann in den nachfolgenden Schritten: 1. Im Ausgangszustand (Zustand zwischen zwei Tasterabfragen) sind die Treiber alle

Spaltenleitungen im Zustand "High" und aller Zeilenleitungen im Zustand Tristate. 2. Ein Taster wird zum Auslesen aktiviert, indem sein zugehöriger Zeilenleitungs-Treiber in

den Pull-Up-Zustand und sein zugehöriger Spaltenleitungs-Treiber in den Zustand "Low" versetzt werden.

3. Der Schaltzustand des betreffenden Tasters kann dann ermittelt werden, indem der Logikpegel des zugehörigen Zeilenleitungs-Port-Pins ausgelesen wird (siehe vorberei-tende Fragen zur folgenden Aufgabe).

Für das Auslesen des Taster-Zustands in Scan-Phase 3 sei noch einmal auf den wesentli-chen Unterschied zwischen dem Lesen des PORTxn-Pegels und des PINxn-Pegels ver-wiesen, der in obigem Schaltbild gut veranschaulicht wird. Die folgenden Block-Bilder der drei Scan-Phasen veranschaulichen die Funktionsweise.

Ausgangspin n von Port x

PUD-Bit des SFR's SFIOR

h ib

PINxn lesen

PORTxn-Regis-ter-bit lesen

DDxn-Bit lesen

PORTxn-Bit schreiben

DDxn-Bit schreiben

Pin-Treiber mit schaltba-rem Ausgang

Zuschaltbarer Pull-Up-Wider-stand

Page 5: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 5/12

1. Ausgangs-/Übergangszustand 2. Selektion eines Tasters

3. a) Schaltzustand "Ein" lesen 3. b) Schaltzustand "Aus" lesen

Aus der nachfolgenden Tabelle, die bereits in den Beschreibungen zum vorhergehenden Versuch 1 erläutert wurde, lassen sich die für die Konfiguration der verwendeten Ports erforderlichen SFR-Einstellungen ablesen.

DDxn (in DDRx) PORTxn

PUD (in SFIOR) I/O Pull Up Bemerkung

0 0 X Input nein Tristate 0 1 0 Input ja PINxn kann begrenzt

Strom treiben 0 1 1 Input nein Tristate 1 0 X Output nein Output "Low" (Gnd) 1 1 X Output nein Output "High" (Vcc)

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.

Page 6: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 6/12

3 Bit-selektive Manipulation von Datenworten über Logikfunktionen Häufig ist es bei der Erstellung von Programmen notwendig einzelne Bits oder Bit-Grup-pen eines Datenwortes zu manipulieren ohne die übrigen Bits zu beeinträchtigen. Dies kann bei Hochsprachen auf einfache Weise durch die Verwendung von logischen Opera-toren geschehen. Logische Operatoren werden in der Programmiersprache C immer bitweise paarig auf die beiden Argumente des Operators angewendet. Je nachdem, ob spezifische Bits "gesetzt" werden sollen (den Bit-Wert log. '1' erhalten sollen), oder ob sie "gelöscht" werden sollen (also den Bit-Wert log. '0' erhalten sollen), muss hierzu die passende logische Operation gewählt werden. Ein "Setzen" von einzelnen Bits einer Variablen bzw. eines Registers, z. B. der Byte-Varia-ble XYZ, erfolgt mit Hilfe des OR-Operators in der Form XYZ = XYZ OR <Bit-Maske> Alle Bitstellen der Bit-Maske, die den Bit-Wert log. '1' besitzen werden durch die OR-Ope-ration in der Variablen XYZ "gesetzt", alle anderen Bitstellen bleiben unverändert. Ein "Löschen" von einzelnen Bits einer Variablen bzw. eines Registers, z. B. der Byte-Vari-able XYZ, erfolgt mit Hilfe des AND-Operators in der Form XYZ = XYZ AND <Bit-Maske> Alle Bitstellen der Bit-Maske, die den Bit-Wert log. '0' besitzen werden durch die AND-Operation in der Variablen XYZ "gelöscht", alle anderen Bitstellen bleiben unverändert. Die nachfolgenden Programmzeilen zeigen beispielhaft den Einsatz obiger Operatoren: XYZ = 0xAA; // Ausgangswert 0xAA in die Variable XYZ schreiben XYZ = XYZ OR 0x03; // niederwertigste beiden Bits von XYZ werden "gesetzt" XYZ = XYZ AND 0x3F; // höchstwertigste beiden Bits von XYZ werden "gelöscht"

4 Einzelbit-Manipulationen von Registern über spezielle Notationsformen In der "Header"-Datei MEGA128.h werden den internen Spezialfunktionsregister-Adressen des Mikrocontrollers ihre symbolischen Namen zugeordnet, so dass bei Einbindung dieser "Header"-Datei in den Quellcode auf alle SFRs über diese leicht zu merkenden Namens-kürzel zugegriffen werden kann. Da es sowohl SFRs gibt, auf die bitweise zugegriffen werden kann (SFRs im Adressbe-reich 0x00 bis 0x5F), als auch solche die nur als ganzes Byte bzw. Word lesbar sind, kennt der C-Compiler eine spezielle Notationsform um insbesondere den bitweisen Zugriff zu ermöglichen. Ähnlich einer Variablen-Deklaration werden über die Anweisungen sfrb <SFR-Name>=<SFR-Adresse> bzw. sfrw <SFR-Name>=<SFR-Adresse> solche bitweise manipulierbaren SFRs deklariert. Der Zugriff auf ein einzelnes Bit eines derart deklarierten Registers erfolgt dann durch die von Unit-Deklarationen bekannte Punkt-Notation z. B. für das SFR SFIOR in der Form SFIOR.2 = 1; // setzt das PUD-Bit des SFIOR-Registers auf den Wert 1 bzw. XYZ = SFIOR.2; // liest den aktuellen Wert des PUD-Bits des SFIOR-Registers.

Page 7: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 7/12

Bei allen nicht bitweise manipulierbaren SFRs wird in der "Header"-Datei lediglich die je-weilige Registeradresse dem symbolischen Name des SFR's per Makro zugewiesen, z. B. für das SFR PORTG über die Befehlszeile #define PORTG (*(unsigned char *) 0x65) Unabhängig von der Art der Deklaration gilt bei bitweise manipulierbaren SFRs, als auch bei nicht bitweise manipulierbaren SFRs für den Byte-weisen Zugriff damit eine einheitli-che Zuweisungsform, z. B. für die SFRs PORTA und PORTG durch PORTA = ~PORTG; // schreibt den bitweise invertierten Inhalt des PORTG- Registers an PORTA.

5 Praktischer Teil zum Termin 4 5.1 Initial-Konfiguration der benötigten Ports mit dem Code-Wizard Für die Lösung der folgenden Aufgabe wird das auf dem Applikations-Board befindliche Tastenfeld mit den beschrifteten Tasten 1 bis 9 und den integrierten roten Signal-LEDs verwendet. Taster und LEDs können über Pins der Ports B, C und D angesteuert bzw. ausgelesen werden. Zur initialen Grundkonfiguration dieser Port-Pins, gemäß den Beschreibungen unter Punkt 1 und 2, soll ein neues Programm-Projekt unter Nutzung des Konfigurators Code-Wizard eröffnet werden. Das nachfolgende Bild zeigt das aus dem vorhergehenden Versuch be-reits bekannte Code-Wizard-Konfigurationsfenster.

Über die jeweiligen Ports-Menüs lassen sich die notwendigen Einstellungen für die Ports B, C und D vornehmen und durch Wahl der Menü-Option File→Generate_and_Exit wird abschließend der zugehörige neue Basis-Quellcode generiert. Die dynamisch im Pro-

Initial-Konfiguration: bitweise Einstellung von Port-Funktionen per "Maus-Click"

Treibereinstellung: Pull-Up Eingangsbeschaltung mit akti-viertem Pull-Up-Widerstand

Treibereinstellung: Tristate Eingangsbeschaltung mit Tristate-Zustand

Treibereinstellung: "Low" Ausgangsbeschaltung mit Gegentakt-Treiber "Low"

Treibereinstellung: "High" Ausgangsbeschaltung mit Gegentakt-Treiber "High"

Page 8: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 8/12

grammablauf notwendigen Konfigurationsänderungen (siehe Punkt 2) müssen durch den Programmierer im Bedarfsfall spezifisch vorgenommen werden. 5.2 Aufgabe: Erstellen eines Programms zur zyklischen Abfrage von Schaltzustän-

den einer Tastermatrix und Signalisierung über zugehörige Status- LEDs

Die für die Beantwortung der nachfolgenden Fragen und die Ausführung des Programm-entwurfs zur folgenden Aufgabenstellung notwendigen Informationen können den Unterla-gen zum Praktikumsversuch 1, den vorangegangenen Kapiteln, dem Datenblatt des AT-Mega128 und dem Handbuch zum Programm Codevision-AVR entnommen werden. Vorbereitende Fragen zur Klärung:

• Welche Auswirkung hat die im Schaltbild unter Punkt 2 gezeigte Beschaltung im Block "Synchronizer" auf das Auslesen des Logikpegels am betreffenden Port-Pin? _____________________________________________________________________

• Mittels welcher C-Syntax kann ein einzelner Assembler-Befehl an beliebiger Stelle in den C-Quelltext integriert werden? Zeigen Sie dies am Beispiel des Befehls NOP. ___________________

• Wozu kann der Assembler-Befehl NOP beim zyklischen Wechsel der Scan-Phasen be-nutzt werden? _____________________________________________________________________

• Welchen Wert enthält die Variable XYZ, wenn die unter Punkt 3 am Ende gezeigte Se-quenz von Programmzeilen ausgeführt wurde? XYZ = ___________

• Mittels welcher beiden Programmzeilen lässt sich die Taster-Matrix in den Zustand 1 (Ausgangszustand) der in Punkt 2 beschriebenen Scan-Phasen versetzen, ohne dass die weiteren Port-Pins der beteiligten Ports dabei beeinträchtigt werden? ___________________ ___________________

• Mittels welcher beiden Programmzeilen lässt sich die Taste 5 der Taster-Matrix (Zu-stand 2 der in Punkt 2 beschriebenen Scan-Phasen) für das Abfragen selektieren (und gleichzeitig alle anderen Tasten deselektieren), ohne dass die weiteren Port-Pins der beteiligten Ports dabei beeinträchtigt werden? ___________________ ___________________

Page 9: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 9/12

• Welcher Logikpegel stellt sich bei einem für das Abfragen selektierten betätigten Taster an der zugehörigen Zeilenleitung ein? ___________________

• Mit welchem Befehl kann die zur Taste 5 gehörige LED auf einfache Weise eingeschal-tet werden? ___________________

Praktische Programmieraufgabe: Entwickeln Sie ein C-Programm mit dem Namen SMR_Termin4, das – einen durch den Code-Wizard erzeugten Initialisierungsteil besitzt, in dem alle Taster-

LEDs ausgeschaltet sind und bei dem für die Tastermatrix-Ansteuerung der Ausgangs-zustand gemäß Scan-Phase 1 aus Punkt 2 eingestellt ist.

– in einer Endlosschleife sequentiell die Scan-Phasen 1, 2 und 3 aus Punkt 2 für jede der 9 Tasten der Tastenmatrix umsetzt.

– abhängig vom erkannten Schaltzustand jedes Tasters die zugehörige LED einschaltet (bei geschlossenem Tasterkontakt) bzw. ausschaltet (bei geöffnetem Tasterkontakt).

Überprüfen Sie die Funktion des von Ihnen entwickelten Programms bei Einzel- und Mehr-tasten-Betätigung auf dem Praktikums-Board.

Page 10: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 10/12

6 Praktischer Teil zum Termin 5 6.1 Signalverhalten beim Schließen und Öffnen mechanischer Kontakte Zum Öffnen und Schließen von Stromkreisen in elektrischen Schaltungen kommen in der Technik häufig mechanisch betätigte Schalter und Taster zum Einsatz. In ihnen werden in der Regel durch einwirken einer äußeren Kraft zwei oder mehr elektrisch leitende Kontakt-finger mechanisch oberflächlich kontaktiert, wodurch ein Strom über den Kontakt hinweg fließen kann. In den meisten Anwendungen, wie zum Beispiel im Bereich der Hausinstallation zum Schalten von Lampen, sind mechanische Schalter gut geeignet, da Sie auch größere e-lektrische Ströme schalten können. Im Bereich der Digitaltechnik werfen mechanische Schalter und Taster jedoch oft Probleme auf, da es beim Schaltvorgang bedingt durch mikroskopische Oberflächenrauigkeiten der Kontaktflächen und durch mechanische Schwingungen während des Schaltvorgangs kurzzeitig zu einer Folge von Schaltimpulsen kommt. Das folgende Bild zeigt ein typisches Echtzeit-Signalverhalten beim Betätigen ei-nes Tasters, das auch als "Prellen" des Tasters bezeichnet wird.

Wie im Bild erkennbar kann der Übergangszustand zwischen "Ein" und "Aus" in einem Zeitraum von bis zu einigen ms Dauer eine unkalkulierbare Zahl von unregelmäßigen kur-zen Schaltimpulsen enthalten, so dass ein Mikrocontroller-System jeden einzelnen der Schaltvorgänge erfassen würde. Insbesondere bei Zähler- oder Interrupteingängen des Controllers kann dies zu Problemen führen. 6.2 Maßnahmen zum Entprellen von Schaltern und Tastern Um das zuvor beschriebene meist unvermeidliche Prellen von mechanischen Schaltern bzw. Tastern zu verringern oder signaltechnisch vollständig zu unterbinden gibt es unter-schiedliche technische Lösungen.

Übergangs-Zustand "Ein"-Zustand "Aus"-Zustand

unbestimmte Anzahl von kurzen Schaltvorgängen

Page 11: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 11/12

Mechanische Lösungen des Prell-Problems bestehen entweder in der Verwendung von Quecksilber-benetzten Kontakten (Flüssigkeitskontakt) oder in der redundanten (mehrfach vorhandenen) Ausführung der Kontakte als Kontaktkämme oder Kontaktbürsten (große Wahrscheinlichkeit das mindestens ein Kontaktpaar geschlossen ist). Schaltungstechnische Lösungen bestehen in der Regel in der Verriegelung eines einmal erkannten Schaltpulses durch Flip-Flops. Nachfolgendes Bild zeigt beispielhaft die Ver-wendung eines RS-Flip-Flops (gebildet aus rückgekoppelten NOR-Gattern) in Verbindung mit einem Um-Taster mit drei Anschlusskontakten.

An den im Bild gezeigten Ausgängen Q1 bzw. Q2 steht das prellfreie Schaltsignal in positi-ver bzw. negativer Logik (invertiert) zur Verfügung. Programmtechnische Lösungen stellen die flexibelsten Arten von Entprellmaßnahmen dar, setzen jedoch das Vorhandensein eines programmierbaren Systems voraus. Im vorlie-genden Praktikum soll ein programmgestütztes Entprellen der im vorangegangenen Un-terpunkt 5.2 bereits verwendeten Taster der Tastenmatrix durch eine geeignete zu erstel-lende Programmergänzung erfolgen. Zwei grundlegende Ansätze für das programmgestützte Entprellen sind üblich und werden je nach Erfordernissen der Applikation alternativ angewendet. Diese sind: – Schaltzustandswechsel erfolgt beim ersten Auftreten eines Schaltpulses, sofern seit

dem vorhergehenden Schaltzustandswechsel eine Mindest-Schaltzustandsdauer (per-sist time) vergangen ist (ansonsten wird der aktuelle Schaltzustand beibehalten).

– Schaltzustandswechsel erfolgt, sobald eine bestimmte Anzahl von Signalprüfungen (scans) ein gleiches Ergebnis des vorherrschenden Signalzustands ergeben hat (mit je-dem Erkennen eines Signalzustandswechsels beginnt die Zählung wieder bei Null).

Letztere Variante soll im vorliegenden Praktikum umgesetzt werden. 6.3 Aufgabe: Erstellen eines Programms zur zyklischen Abfrage und Prellkompen-

sation von Schaltzuständen einer Tastermatrix mit Wechsel des Leuchtzustands der zugehörigen LED nach jedem Ein-/Aus-Zyklus des betreffenden Tasters

Die folgende Aufgabe stellt eine Fortführung der Aufgabe aus dem vorangegangenen Praktikumstermin dar, jedoch mit dem Unterschied, dass mit jedem erkannten Ein-/Aus-schaltzyklus jedes Tasters der Leuchtzustand der zugehörigen LED wechseln soll (toggel). Da das Tasterprellen zufällige Schaltzustände produziert und damit den Leuchtzustand der LED unkalkulierbar machen würde, muss eine programmgestützte Entprellmaßnahme realisiert werden um die Umschaltfunktion sinnvoll nutzen zu können.

Page 12: Praktikum SMR Versuch 2 - uni-due.dehl271st/Lehre/SMR/smr_prakt_v2.pdf · Praktikum: Struktur von Mikrorechnern (SMR-P) Datum: Gruppe: Versuch 2 SMR-P Viga/08 Blatt: 2/12 Inhalt 1

Praktikum: Struktur von Mikrorechnern (SMR-P)

Datum:

Gruppe:

Versuch 2

SMR-P Viga/08

Blatt: 12/12

Die für die Beantwortung der nachfolgenden Fragen und die Ausführung des Programm-entwurfs zur folgenden Aufgabenstellung notwendigen Informationen können den Unterla-gen zum Praktikumsversuch 1, den vorangegangenen Kapiteln, dem Datenblatt des AT-Mega128 und dem Handbuch zum Programm Codevision-AVR entnommen werden. Vorbereitende Fragen zur Klärung:

• Warum konnte ein Tasterprellen bei der vorherigen Aufgabe unter Punkt 5 nicht beob-achtet werden? ______________________________________________________________________

• Mit welcher C-Befehlszeile wird ein globales eindimensionales Variablenfeld (Array) aus 9 Variablen vom Typ Byte und mit dem Namen test deklariert? ___________________

• Mit welcher C-Befehlszeile wird eine globale Konstante mit dem Namen TEST und dem Wert 0xFF deklariert? ___________________

• Welche logische Funktion realisiert der C-Operator "~"? ___________________

• Mit welchem Befehl kann der Leuchtzustand der zur Taste 5 gehörigen LED auf einfa-che Weise (ohne Kenntnis des aktuellen Leuchtzustands) umgeschaltet werden? ___________________

Praktische Programmieraufgabe: Entwickeln Sie ein C-Programm mit dem Namen SMR_Termin5, das – den gleichen durch den Code-Wizard erzeugten Initialisierungsteil für die Ports B, C und

D besitzt wie das Programm SMR_Termin4. – ein Variablenfeld (Array) mit dem Namen key_press_counter als Zähler für jeden Taster

des Tastenfeldes verwendet, um eine ununterbrochene Folge von gleichen Signalzu-ständen (nur "Ein"-Zustand) zu ermitteln, als Basis für das Entprellen per Programm.

– es ermöglicht, über die Wertzuweisung an eine globale Konstante mit dem Namen MIN_KEY_COUNTS verschiedene Grenzzählerstände für ein optimales Entprellen zu erproben.

– auf Basis der Endlosschleife aus der vorherigen Aufgabe unter Punkt 5 durch Modifika-tion und Ergänzung der Programmzeilen zur LED-Steuerung einen Wechsel des Leuchtzustands der betreffenden LED durchführt, wenn der Grenzzählerstand für den betreffenden Taster erreicht ist und wenn sich zusätzlich der betreffende Taster wieder im Schaltzustand "Aus" befindet.

Überprüfen Sie die Funktion des von Ihnen entwickelten Programms bei Einzel- und Mehr-tasten-Betätigung auf dem Praktikums-Board.