Mikrocomputertechnik (MC)
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
MC 11.10.2018 Mikrocomputertechnik (MC) Lehrkräfte: 1.) Prof. Dr.-Ing. Martin Pollakowski Raum B2.1.04, Tel.: - 226, E-Mail: martin.pollakowski@w-hs.de 2.) Dipl.-Ing. Peter Mroczek Raum: B2.1.16, Tel.: - 228 E-Mail: peter.mroczek@ w-hs.de Vorlesung/Praktikum/Übung: Raum B3.1.09 (PC-Pool) E-Mail-Liste: falls noch nicht auf der Liste… bitte per E-Mail anmelden, Stichwort "Mikrocomputertechnik" 2
MC 11.10.2018 Unterlagen zur Vorlesung http://www3.w-hs.de/fb01/02-Informatik/ - Befehlssatz der 8051-Familie Befehlssatz8051.pdf (Assembler) E-Mail, Server - Datenblatt des AT89C5131 www.atmel.com ggf. herunterladen - Development Tools www.keil.com/c51/pk51kit.asp ggf. herunterladen - Praktikumsbeschreibung AnleitungEntwicklungsumgebung.pdf E-Mail, Server - Beschreibung des AT89C5131 Kurzbeschreibung.pdf Experimentalsystems auf dem Server, ggf. herunterladen 3
MC 11.10.2018 Lernziele Inhalte: - Mikrocontrollertechnik - C-Programmierung Prüfung Form: Klausur (schriftlich) Dauer: 90 Minuten Hilfsmittel: Taschenrechner 1 Blatt A4 (2 Seiten) Notizen, handschriftlich, keine Kopien Zulassungsvoraussetzung: erfolgreich absolviertes Praktikum Methoden Vorlesung, Praktikum und Übung (teilweise seminaristischer Unterricht) Praktikum: aktive Teilnahme an 6 Terminen sind Pflicht (6 Protokolle) Hausarbeit: 2 Hausarbeiten sind Pflicht (2 Protokolle) Prüfung (schriftlich, 2 h) mit Zulassungsvoraussetzung „Praktikum bestanden“ 4
MC 11.10.2018 Praktikum Teilnahme ist Prüfungsvoraussetzung für "Mikrocontrollertechnik" 6 Versuche: C-Programmierung 15.11.-21.12. wöchentliche Praktikumstermine Vor dem Versuch: - Vorbereitungsfragen und Aufgabenzettel werden verteilt - Vorbereitungsfragen sind handschriftlich zu beantworten - Antworten sind Teil der Ausarbeitung Im Praktikum - Versuchsdauer = 90 Minuten - Vorbereitungsfragen werden abgefragt - Bearbeitung des Aufgabenzettels - Bearbeitung der individuellen Zusatzaufgabe Nach dem Versuch: - handschriftliche Ausarbeitung = Deckblatt, Vorbereitungsfragen, Antworten, Aufgabenzettel, Lösung der Aufgaben (Quellcode) - Ausarbeitung muss testiert werden 5
MC 11.10.2018 Hausarbeiten Lernziel: - Installation einer Mikrocontroller-Entwicklungsumgebung - Lösung einer größeren Programmieraufgabe 2 Hausarbeiten, Abgabe je einer handschriftlichen Ausarbeitung Teilnahme ist Prüfungsvoraussetzung für "Mikrocomputertechnik" Übungen Lernziel: - C-Programmierung eines Mikrocontrollers erlernen In die Vorlesung integriert Im Januar zusätzlich 3 Termine in Kleingruppen 3 in etwa gleich große Gruppen 6
MC 11.10.2018 Einteilung der Praktikums- und Übungsgruppen Gruppe: 1 Donnerstag 11:30 – 13:05 (koop. Studiengang?) 2 Freitag 9:50 – 11:25 3 Freitag 11:30 – 13:05 erste Hausarbeit: 18.10.2018 erster Übungstermin: 10.01.2018 erster Praktikumstermin: 15.11.2018 Die Gruppeneinteilung erfolgte anhand der Namenslisten des Prüfungsamtes 7
MC 11.10.2018 Literatur zum Thema Mikrocontroller Norbert Heesel , Werner Reichstein: „Mikrocontroller Praxis - Ein praxisorientierter Leitfaden für die Hard- und Softwareentwicklung auf der Basis der 80(C)51x- Familie“, Vieweg Verlag, 1993 (Bibliothek: TWJ 26) Jürgen Walter: „Mikrocomputertechnik mit der 8051-Controller Familie - Hardware, Assembler, C“, Springer Verlag, 1996 (Bibliothek: TWJ 46) WWW-Seite der Fa. Atmel: www.atmel.com WWW-Seite der Fa. Keil: www.keil.com Von den Firmen. Atmel und Keil sind die in den Übungen verwendeten Systeme und Program- me. Über die Web-Seite können kostenlose Programme kopiert werden. 8
MC 11.10.2018 Mikrocontroller = ein vollständiger Universalrechner auf einem Chip am Beispiel des AT89C5131-Controller → Einsatzgebiete: Programmierbare Steuerungen aller Art 9
MC 11.10.2018 Mikroprozessor - Mikrocontroller Mikroprozessor: Integrierte Schaltung zur programmgesteuerten Abarbeitung von arithmetischen und logischen Rechenoperationen = CPU (central processing unit) Beispiel: Intel Pentium Prozessor PC = Prozessor + diverse zusätzliche Bausteine (RAM, ROM, ...) optimiert auf hohe Rechenleistung Mikrocontroller: Mikroprozessor + zusätzliche Bausteine auf einem Chip optimiert auf minimalen Schaltungsaufwand kleinster Computer= 1 Mikrocontroller + 1 Quarz + Batterie für “single chip“-Lösungen Beispiel: Intel 8051 und Varianten 10
MC 11.10.2018 Warum sind Mikrocontroller so weit verbreitet? - Mikrocontrollerschaltungen sind preiswert und flexibel durch Massenproduktion niedriger Stückpreis statt festverdrahteter Logik Programm Programme können bei Bedarf geändert werden meist geringer Programmieraufwand (kleine Programme) Programmierung in Assembler oder Hochsprache ( C ) - Aufbau intelligenter Peripherie entlastet den Hauptprozessor 11
MC 11.10.2018 Mikrocontroller-Familien Mikrocontrollerfamilie = Mikrocontroller mit gleicher Assembler-Programmiersprache = gleiche Zentraleinheit (CPU = Central Processing Unit) hier: “8051 Familie” → abgeleitet vom Intel 8051 → Siemens SAB80535 (zuletzt im Praktikum eingesetzt) → Atmel AT89C5131 (aktuell im Praktikum eingesetzt) und viele weitere Varianten... Besonderheiten des AT89C5131: integrierte USB-Schnittstelle 8051-kompatibel interne Flash-Speicher (dauerhaft programmierbar) weitere Familien: Atmel AVR, PIC-Mikrocontroller usw... 12
MC 11.10.2018 vereinfachtes Blockdiagramm des AT89C5131 ... für die ersten Programmierversuche ... Port 0 = Port 1 = Acht Eingänge, Acht Ausgänge, an denen im Prakti- an denen im kum einige Tasten Praktikum einige angeschlossen sind LEDs ange- schlossen sind Port 0 CPU Port 1 CPU = Zentraleinheit, verarbeitet die Befehle des Mikrocontrollerprogramms 13
MC 11.10.2018 Wie programmiert man Mikrocontroller ? a) in Assemblersprache: Das Programm beginnt an der Sprungmarke start mov = Datentransport (move = bewege) start: mov p1,#00011111B p1 = Port 1 = Ziel des Transports #00011111B = eine konstante binäre Zahl jmp start jmp = Spung (jump) zur Marke start b) in Hochsprache, meist „C“: Der „Variablen“ P1 wird immer wieder die Hexadezimalzahl 1F zugewiesen while(1) { while(1) = Endlosschleife P1 = 0x1F; 0x... → Hexadezimalzahl } 1F hexadezimal = 0001 1111 binär 14
MC 11.10.2018 Mikrocomputertechnik-Praktikum Entwicklungs- Kommunikations- „Betriebssystem“ umgebung programm Bootloader Programm senden und starten Serielle Verbindung über USB Personalcomputer Mikrocomputer Hardware und Software des MC-Praktikums Experimentalsystem 15
MC 11.10.2018 Begriffe - Entwicklungsumgebung = ein Programm zum Erstellen und Übersetzen von Mikrocontroller-Programmen Keil Vision - Experimentalsystem = eine Mikrocomputerschaltung für Experimentierzwecke AT89C5131 Experimentalsystem - Betriebssystem des Experimentalsystems = ein Programm, mit dem man Programme über die serielle Schnittstelle laden und starten kann Bootloader 16
MC 11.10.2018 Hausaufgabe Eigene Mikrocontroller-Programmierumgebung zuhause einrichten Diese Aufgaben sollen zuhause bearbeitet werden (Hausaufgabe). In dieser Aufgabe sollen Sie sich eine eigene Programmierumgebung zuhause ein- richten, ein erstes Assemblerprogramm schreiben und das Programm in einem Simulator testen. Eine „Installations- und Bedienungsanleitung“ steht zum Download bereit: http://www3.w-hs.de/fb01/02-Informatik/ Die Aufgabe ist für das von Ihnen benutzte Betriebssystem zu lösen (freie Auswahl). Für die am häufigsten benutzten Betriebssysteme finden Sie anbei einige Hinweise: Windows Die im Praktikum verwendete Entwicklungsumgebung „Keil uVision“ (Keil C51 Evaluation Kit) kann beim Hersteller heruntergeladen werden (http://www.keil.com/c51/pk51kit.asp). LINUX / MAC OS (Apple) Informationen zu 8051-Entwicklungsumgebungen für Linux bzw. für MAC OS liegen derzeit nicht vor. Für Hinweise bin ich aber dankbar. Evtl. funktioniert eine Windows-Emulation. Umfang der Hausarbeit: - Installieren Sie die Entwicklungsumgebung auf Ihrem PC. - Geben Sie das in der Installationsanleitung („AnleitungEntwicklungsumgebung.pdf“) angegebene Beispielprogramm ein, übersetzen Sie es und testen Sie es im Simulator. 17
MC 11.10.2018 Mikrocontroller-Programmierung in C Hintergrund: C ist die am weitesten verbreitete Hochsprache für Mikrocontroller Standard-C (ANSI-C) wurde um spezielle Befehle erweitert (Bit-Verarbeitung, Speicherverwaltung etc.) Vorteile: Controller-spezifische Assemblersprache muss nicht gelernt werden Komplexe Programme werden übersichtlicher (besser wartbar) Rückgriff auf Funktionsbibliotheken (z.B. mathematische Operationen) Echtzeitprogramme sind weiterhin möglich Einbindung von Assemblercode kann erfolgen Vorraussetzung: C-Compiler für den spezifischen Mikrocontroller (z.B.: "C-51") Linker, zum Binden von selbst geschriebenem Programm und fertigen Modulen aus den mitgelieferten Bibliotheken (Libraries) (z.B.: Programmpaket der Fa. Keil für die 8051-Familie) 18
MC 11.10.2018 Erstellung von Mikrocontrollerprogrammen 1. Schritt: Programmtext editieren: ergibt: prog.c = Textdatei 2. Schritt: „Build Target“ in der Keil-Entwicklungsumgebung a) Übersetzen, mit Compiter: ergibt: prog.obj = Binärdatei, Fehlermeldungen in prog.lst (Listing) und prog.lst b) Linken, mit Linker: ergibt: prog.m51 = Zusammenbinden von Teilprogrammen, Info in prog.m51 c) Umwandlung in Intel Hex-File: ergibt: prog.hex = Textdatei im Spezialformat für Programmiergeräte 3. Schritt: Hex-File in das Experimentalsystem laden, um Programm zu testen (evtl.: Listing in den Simulator laden, um Programm zu simulieren) 19
MC 11.10.2018 Aufbau eines C-Programms #.. = Anweisungen für den Compiliervorgang (Präprozessoranweisungen) →#include = Namen des 80515 aus Datei lesen (für AT89C5131) /* ... */ = Kommentare: void main(void) = Hauptprogramm ohne Übergabeparameter { (es gibt hier kein Betriebssystem) … } while(1) = Endlosschleife { : der Mikrocontroller kann nicht angehalten werden … wenn das Programm abgearbeitet worden ist. } 20
MC 11.10.2018 Ein vollständiges C-Programm /* Definition der symbolischen Namen des AT89C5131 einbinden */ #include Register = Speicherplatz („Variable“) im Mikrocontrol- ler mit spezieller Funktion. /* Hauptprogramm */ Beispiele: A, B. P0, P1, PC ... void main(void) { while (1) /* Endlosschleife */ { P1 = P0; /* lies Register P0 und speichere den Inhalt in P1 */ } } 21
MC 11.10.2018 Funktionsprinzip der Leuchtdioden Spannungs- mit Schalter: +5V +5V versorgung mit + 5 Volt aus ein Leuchtdiode (LED) Widerstand 0V zur Strom- 0V begrenzung +5V +5V mit Mikrocontroller: aus ein Merke: Bit = 1 → Led aus P1.0 = 1 P1.0 = 0 Bit = 0 → Led ein Port-Bit = 1 (high) Port-Bit = 0 (low) LED = leuchtet nicht LED leuchtet 22
MC 11.10.2018 Portregister Jedes Bit stellt den Zustand eines Port-Pins dar P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 a) Port als Eingang benutzt: Register nur lesen 0 = es liegt 0 Volt an P0.0 P0 80H 1 = es liegen 5 Volt an b) Port als Ausgang benutzt: Schreiben möglich (auch bitweise) 0 = 0 Volt ausgeben P0.0 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 1 = 5 Volt ausgeben nach erstmaligem Schreiben: P1 90H alle Port-Register haben Lesen bringt zurück was geschrieben wurde diesen Aufbau, d.h. nicht den tatsächlichen Zustand (z.B. bei Kurzschluß) Port P0 bis P6 (siehe: Read-Modify-Write Befehle) 23
MC 11.10.2018 Tastenanschaltung an Port 0 S1 Taster 1 Merke: Taste nicht gedrückt: Taste gedrückt Port Bit ist 1 S2 → Bit = 0 Taster 2 Taste gedrückt: S3 Port-Bit ist 0 Taster 3 Pinbelegung: S4 Taster 4 Taste 1 (S1) = P0.0 Taste 2 (S2) = P0.1 Taste 3 (S3) = P0.2 Taste 4 (S4) = P0.3 24
MC 11.10.2018 Leuchtdiodenschaltung an Port 1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 25
MC 11.10.2018 Beispiel: Eine LED einschalten #include void main(void) { while (1) /* Endlosschleife */ { P1 = 247; /* speichere die Dezimalzahl 247 in P1 */ } } Frage : - Welche LED leuchtet? (Hinweis: 247 in eine Binärzahl umrechnen…) - Welche Wirkung hat P1 = 0xFE; 26
MC 11.10.2018 Übung Aufgabe 1: Schreiben Sie ein Programm, das alle Leuchtdioden des Experimentalsystems ein- schaltet. Aufgabe 2: Schreiben Sie ein Programm, das vier der acht Leuchtdioden des Experimentalsys- tems einschaltet. 27
MC 11.10.2018 Bit-Operationen Sinn: hardwarenahe Programmierung, z.B. einzelne Bits von Schnittstellenbausteinen programmieren Bit-Operatoren in C: UND-Verknüpfung: „ & “ ODER-Verknüpfung: „ | “ Exclusiv-ODER-Verknüpfung: „ ^ “ Einerkomplement: „ ~ “ (alle Bits invertieren) SHIFT-Operator „ > “ (Bits nach rechts schieben) 28
MC 11.10.2018 Schaltsymbole und Wertetabellen UND ODER exclusiv- Komplement ODER a a a c c c a b b & b > b = 1 a b c a b c a b c a b 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 29
MC 11.10.2018 UND-Verknüpfung von zwei Datenbytes char zahl1 = 0x0F; entspricht: 00001111 char zahl2 = 0xAA; entspricht: 10101010 ergebnis = zahl1 & zahl2; ergibt: 00001010 ergibt 0Ahexadezimal (10 dezimal) d.h. die Verknüpfung erfolgt bitweise Anwendung: „Bitmaske“ = Wert eines Bits innerhalb eines Datenworts prüfen z.B. Bitmaske für das 3. Bit: 0000 0100 (hexadezimal: 04 Hex) C-Programm Beispiel: Prüfen ob das dritte Bit eines Registers 1 ist: if (( register & 0x04 ) > 0) { ... d.h. drittes Bit ist 1 } else { ... d.h. drittes Bit ist 0 } 30
MC 11.10.2018 ODER-Verknüpfung von zwei Datenbytes char zahl1 = 0x0F; entspricht: 00001111 char zahl2 = 0xAA; entspricht: 10101010 ergebnis = zahl1 | zahl2; ergibt: 10101111 ergibt AF hexadezimal (175 dezimal) Anwendung: einzelnes Bit eines Bytes auf 1 setzen, alle anderen unverändert lassen z.B. das 3. Bit: 0000 0100 (hexadezimal: 04 Hex) register = register | 0x04; falls Inhalt des Registers vorher: 0000 0000 nachher: 0000 0100 vorher: 0000 1111 nachher: 0000 1111 vorher: 0000 0100 nachher: 0000 0100 31
MC 11.10.2018 Exklusiv-ODER-Verknüpfung von zwei Datenbytes char zahl1 = 0x0F; entspricht: 00001111 char zahl2 = 0xAA; entspricht: 10101010 ergebnis = zahl1 ^ zahl2; ergibt: 10100101 ergibt A5 hexadezimal (165 dezimal) Anwendung: einzelne Bits eines Bytes invertieren, alle anderen unverändert lassen z.B. die unteren 4 Bit eines Bytes: 0000 1111 (hexadezimal: 0F Hex) register = register ^ 0x0F; falls Inhalt des Registers vorher: 0000 0000 nachher: 0000 1111 vorher: 0000 1111 nachher: 0000 0000 vorher: 0000 0100 nachher: 0000 1011 32
Sie können auch lesen