Mikrocomputertechnik (MC)

Die Seite wird erstellt Stefan-Albert Kramer
 
WEITER LESEN
Mikrocomputertechnik (MC)
MC                               11.10.2018

     Mikrocomputertechnik (MC)

1
Mikrocomputertechnik (MC)
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