Praktikum Mikrocomputertechnik Versuch 5j: PEC & ADC Labor: Termin der Durchführung: IE-Labor oder DT-Labor Teilnehmer: Gruppe: Semester: Student 1: Student 2: Testat: Datum: Bemerkungen: Unterschrift: - 1 -
Praktikum Mikrocomputertechnik Versuch 5j: PEC & ADC 1) Allgemeine Beschreibung Schreiben Sie ein Assembler-Programm, das über die an Port 1 angeschlossenen LEDs die Position des rechten Potentiometers (Port 5.1) als Leuchtbalken anzeigt. Folgende Funktionen sollen realisiert werden: Es sollen 16 Werte des Potentiometers automatisch durch die PEC Einheit des µc in den RAM Bereich geschrieben werden. So bald die Werte vollständig sind, soll die PEC Einheit einen Interrupt auslösen. In der zugehörigen ISR soll nun der mathematische Mittelwert aus den 16 Werten ermittelt werden und an einer definierten Stelle im RAM (nicht Register) zur Weiterverarbeitung abgelegt werden. Am Ende der ISR soll die PEC Einheit neu konfiguriert werden um das Einlesen von 16 neuen Werten zu starten. Alle 100ms soll der Mittelwert aus dem Speicher gelesen werden und als Leuchtbalken auf die LEDs ausgegeben werden. Für die Zeitdefinition muss ein Timer mit Reload Funktion verwendet werden. Die 100ms sollen möglichst genau eingehalten werden und nicht durch einen eventuellen PEC Interrupt unterbrochen werden. Mit dem Schalter an Port 4.4 sollen zwei mögliche Darstellungen gewählt werden können: Schalter Aus (Mittelstellung): Alle LEDs sind bei Linksanschlag des Potis aus. Je weiter das Potentiometer nach rechts gedreht wird, desto mehr LEDs leuchten. Der Balken hat bei LED P1.15 (links) zu beginnen und wird nach rechts immer größer. Ist das Poti auf Rechtsanschlag, so leuchten alle LEDs. - 2 -
Schalter Ein: Alle LEDs sind bei Linksanschlag des Potis aus. Je weiter das Potentiometer nach rechts gedreht wird, desto mehr LEDs sollen leuchten. In dieser Schalterposition soll der Leuchtbalken in der Mitte beginnen und sich gleichmäßig nach Rechts und Links ausdehen. Bitte stellen Sie sicher, dass sowohl Alle LEDs an als auch Alle LEDs aus zuverlässig dargestellt werden können. Die beiden Aufgaben laufen unabhängig voneinander und können als sehr einfache Art von Multitasking gesehen werden. Der zeitliche Ablauf könnte wie folgt dargestellt werden (ohne Berücksichtigung der IRQ Prioritäten): - 3 -
2) Versuchsvorbereitung Sie sind hier darauf angewiesen, sich vor Versuchsbeginn auf diese Aufgabe vorzubereiten: Lesen Sie sich ein, wie der ADC so wie die PEC Einheit zu konfigurieren sind, um die gestellte Aufgabe zu lösen. In diesem Versuch sind zwei Interrupts zu verwenden. Überlegen Sie sich, wie sie die Prioritäten der Interrupts definieren, damit der geforderte zeitliche Ablauf eingehalten werden kann. Zeichnen Sie die funktionalen Flußdiagramme mit Hilfe einer PC-Software. An der Hochschule sind unterschiedliche Programme verfügbar bzw. als Freeware im Internet zu finden (z.b. Visio, PAP, yed, ). In den Flussdiagrammen sind die korrekten Symbole zu verwenden. 3) Versuchsdurchführung Die technische Umsetzung der Aufgabe wird vollständig Ihnen überlassen. Es müssen aber folgende Rahmenbedingungen gelten: Konfigurieren Sie zunächst den Interrupt für den zeitlichen Ablauf (Ausgabe der LEDs) und messen Sie mit dem LogicPort die eingestellte Zeit. Fügen Sie einen Ausdruck des Meßergebnisses der Ausarbeitung bei. Codieren Sie Ihre Überlegungen und Flussdiagramme in Assembler und testen Sie die Software. Gehen Sie beim Testen schrittweise vor und probieren Sie auch Teillösungen aus. Das Suchen von Fehlern an der Gesamtlösung kann oft aufwendig sein. Erst wenn ein Teilprogramm zuverlässig funktioniert, widmen Sie sich dem folgenden Schritt. In den Flussdiagrammen der Vorbereitung die korrekten Symbole verwenden. Die Programme sind so zu schreiben, dass leicht Anpassungen durchgeführt werden können. Es sollen z.b. Equate Anweisungen verwendet werden und deren Bedeutung/Funktion auch eindeutig kommentiert sein. Die Software ist in den einzelnen Funktionsschritten zu dokumentieren, so dass auch Nicht-Assembler-Kenner den Funktionsablauf nachvollziehen können. Es sind eingängige Bezeichnungen / Namen der Unterprogramme, Equates und Datenbereiche zu verwenden. Unterprogramme und ISRs sind mit einem Programmkopf zu dokumentieren: Eingänge Ausgänge Funktion Veränderte Register An gute Lesbarkeit und Dokumentation der Software denken. - 4 -
4) Ausarbeitung Nach Beendigung des Versuches haben Sie alle Arbeiten erledigt. Sie können die Ausarbeitung direkt nach dem Praktikumstermin abgeben. Die Ausarbeitung besteht aus folgenden Komponenten: Ausgefülltes Deckblatt Ausdruck der am PC erstellte Flussdiagramme Ausdruck der Assemblerdateien zur Durchsicht. Nicht verwendete Unterprogramme bitte vor dem Ausdruck entfernen! Ausdruck der Logikport Diagramme für die Zeitmessung Ausgefülltes Frageblatt Studenten in den von Prof. Jantz betreuten Gruppen senden eine E-Mail mit den Assemblerdateien aller fünf Versuche an die Betreuer. Die aktuellen E-Mail Adressen der Betreuer finden Sie im Intranet der Hochschule. 5) Weitere Informationsquellen: 1. Infineon technologies; XC164-16 User s Manual, Volume 1 (of 2): System Units 2. Infineon technologies; XC164-16 User s Manual, Volume 2 (of 2): Peripheral Units 3. Infineon technologies; XC164-16 Data Sheet 4. Infineon technologies, C166S User Manual (Befehlssatz) 5. http://www.infineon.com 6. http://www.hs-regensburg.de/fakultaeten/elektro-undinformationstechnik/labore/labor-industrielle-elektronik.html 7. http://www.keil.com 8. G. Schmitt; Mikrocomputertechnik mit dem Controller C167, Oldenbourg Wissenschaftsverlag GmbH, München 2000-5 -
6) Begleitende Fragen (Vorbereitung, mit abzugeben!) 1. Mit welcher Taktfrequenz läuft die CPU auf dem RapidIO-XC164CS Board? f clk = MHz 2. Welche Einstellungen für den Timer 3 verwenden Sie für diesen Versuch? Optimaler Vorteiler für f clk : Zählrichtung des Timers: up down Wiederladewert für T3 (Reload): dezimal bzw. hex 3. Welche Prioritäten verwenden Sie für die beiden Interrupts? Interrupt für Timer 3: Group Priority Level: Interrupt Priority Level: Interrupt für PEC Einheit: Group Priority Level: Interrupt Priority Level: 4. Bitte ermitteln Sie für die Konfigurationswerte für den 100ms Timer: GPT12E_T3CON: GPT12E_T3IC: GPT12E_T2CON: - 6 -
5. Bitte ermitteln Sie für die Konfigurationswerte für die PEC Einheit: Welchen PEC Kanal (0-7) verwenden Sie, um die entsprechenden Interrupt-Level zu erreichen? (Es gibt mehrere Möglichkeiten, entscheiden Sie sich für eine) PECCx (PEC Configuration Register): SRPCx (PEC Source Pointer): DSTPx (PEC Destination Pointer): PEXSEGx (PEC Segment Pointer): PECISNC (PEC Interrupt Control): 6. Wie schnell darf die Ausgabe auf den Bargraph maximal erfolgen, damit bei jeder Ausgabe ein neu ermittelter Wert im Speicher zu finden ist? Ermitteln Sie diesen Wert unter der Annahme, dass Sample & Hold Zeit so wie die Konvertierungszeit maximal eingestellt sind. + = Konvertierungszeit Zeit für Mittelwertbildung Gesamtzeit - 7 -