5.1 Der Zeitgeber-/Zähler-Baustein MC6840 5.3 Praktische Übungen zum µRechner

5.2/1

5.2 Praktische Übungen zum Zeitgeber-/Zähler-Baustein

5.2.1 Programmierbarer Rechteckgenerator mit dem Zähler #3

In den folgenden Praktischen Übungen sollen Sie mit dem Baustein MC6840 Ausgangssignale erzeugen oder Eingangssignale ausmessen. Natürlich wäre es sehr viel besser, wenn Sie dazu auf einen Oszilloscop zurückgreifen könnten, auf dem Sie die Signale darstellen und vergleichen könnten. Leider müssen Sie sich mit der beschränkten Funktionalität der Schnittstellen-Erweiterungskarte, wie wir sie in KE4 beschrieben haben, zufrieden geben. Die Aufgaben, die ein Eingangssignal erfordern, können dabei nur auf dem Praktikumsrechner, nicht mit dem 6809-Simulator gelöst werden.

Praktische Übung P5.2-1:
Schließen Sie zunächst die Schnittstellen-Erweiterungskarte an den Praktikumsrechner an. Führen Sie die folgende Übung mit dem Praktikumsrechner und dem 6809-Simulator durch.
  1. Programmieren Sie den Zähler #3 mit den folgenden Parametern:

    1. Ausgang O des Zählers gesperrt,
    2. Interrupt zum Prozessor aktiviert,
    3. zyklischer Zählbetrieb mit Initialisierung der Zähler durchs Beschreiben der Auffangregister,
    4. 16-bit-Zählmodus,
    5. interner Zähltakt E,
    6. auf 1/8 herabgesetzter Zähltakt.

  2. Schreiben Sie nun den Wert $FFFF in das Auffangregister des Zählers #3.

  3. Belegen Sie nun den Interruptvektor zum Zähler #3 mit dem Wert $E4C0, der Startadresse der Break-Routine im Monitor.

  4. Starten Sie den Zähler durch Löschen des Bit 0 im Steuerregister des Zählers #1. Beobachten Sie, was in der Anzeige des Rechners passiert und versuchen Sie eine Erklärung des Vorgangs. Nach welcher Zeit passiert dort etwas ?

  5. Schreiben Sie ein Programm, das zunächst den Zähler wie unter I. gefordert programmiert, wobei aber zusätzlich der Ausgang O3 aktiviert werden soll. Ergänzen Sie das Programm um eine Interruptroutine, die einen 2stelligen Hexadezimalzähler in den Anzeigestellen S1,S0 mit jedem Interrupt des Zählers #3 hochzählt. Es soll die minimale Zählfrequenz erzeugt werden. Beobachten Sie den Ausgang O3.

5.2/2

Zur Arbeit mit dem Emulator:
Öffnen Sie das Emulator-Fenster zum gewünschten Zeitgeber (Menüpunkt: Bausteine, Eintrag: Timer #i). Im unteren Teil des Fensters sehen Sie die aktuelle Belegung der Timer-Register. Der obere Teil wird von zwei Zeitsignalen eingenommen, die das Ausgangssignal Oi des Timers sowie den Interruptausgang darstellen. Durch Anklicken des Schalter-Symbols in der unteren, rechten Fensterecke können Sie das Gate des Timers betätigen und damit seine Funktion ein- oder ausschalten.

Bild

Nachdem ein Timer gestartet wurde, können Sie durch Anklicken der Ikone

Bild

die Ausgabe des Ausgangssignals Oi unterbrechen und den aufgezeichneten Signallauf (wie auf einem Oszilloscop) betrachten. Die Zeiteinheit auf der X-Achse ist dabei durch die abgelaufenen Taktzyklen seit der Aktivierung des Zählers gegeben. Der waagerechte Verschiebebalken erlaubt es, alle Zeitbereiche zu betrachten, mit Hilfe des senkrechten Verschiebebalkens kann die Auflösung der Zeitdarstellung verändert werden.

Das Anklicken der Ikone

Bild

startet wieder die Ausgabe der Ausgangssignale.

Praktische Übung P5.2-2: Rechteckgenerator mit interner Taktung
Schließen Sie zunächst die Schnittstellen-Erweiterungskarte an den Praktikumsrechner an. Führen Sie die folgende Übung mit dem Praktikumsrechner und dem 6809-Simulator durch.

  1. Mit welchem Hexadezimalwert muß das Steuerregister CR#3 geladen werden, um folgende Betriebsart zu erhalten ?

    1. Ausgang 03 aktiviert,
    2. Interrupt zur CPU gesperrt,
    3. zyklischer Zählbetrieb,
    4. 16-bit-Zählmodus,
    5. Takt wird auf 1/8 heruntergeteilt,
    6. Taktauswahl intern, vom Systemtakt E (Frequenz 1MHz) abgeleitet.

5.2/3

  1. Welche Frequenz und Periodendauer wird das Rechtecksignal am Ausgang 03 haben, wenn in das Auffangregister von Zähler #3 nacheinander folgende Werte geladen werden? (Bitte geben Sie die Rechnungen an und zeichnen Sie die "Oszilloskop"-Bilder.)

    a) $1000   b) $8000   c) $F000

  2. "Programmieren" 1) Sie den Baustein MC6840 des Praktikumsrechners für die unter I. genannte Funktionsweise und betrachten Sie das Signal am Ausgang O3 für die unter a)-c) angegebenen Initialwerte des Auffangregisters von Zähler #3.
    Vergessen Sie nicht den Zähler zu starten ! (Hilfe: Praktische Übung P5.2-1)

  3. Welche Wirkung haben eine Betätigung des Gate-Eingangs , das Einschreiben eines neuen Wertes in die Auffangregister sowie die Änderung des Steuerwortes in CR#3 während des Betriebs des Zählers ?


Praktische Übung P5.2-3: Rechteckgenerator mit externer Taktung
Diese Übung kann nur mit dem Praktikumsrechner durchgeführt werden.

  1. Der Zähler #3 soll extern über den Eingang #C3 ohne Frequenzteiler (1/8) getaktet werden. Welche Bits müssen Sie im Steuerregister CR#3 ändern ?

  2. Verbinden Sie den Ausgang CB2 des Portbausteins MC6821 mit dem Takteingang #C3 des Bausteins MC6840. Stellen Sie mit Hilfe des Programms "Rechteckgenerator" aus Übung P4.2-3, KE4, am Ausgang CB2 eine Triggerfrequenz von ca. 100 Hz ein. Laden Sie den Wert $0100 in das Auffangregister des Zählers #3. Berechnen und messen Sie die Puls- und Pausendauer des Ausgangs O3 !

  3. Schreiben Sie den Wert ins Auffangregister von Zähler #3, durch den eine Ausgangschwingung an O3 von (ca.) 1 Hz erzeugt wird !

  4. Schätzen Sie die maximale Frequenz ab, die man durch die vorgegebenen Versuchsbedingungen erzeugen kann.

  5. Funktioniert die Schaltung auch mit #G3 = H ?

5.2/4

Praktische Übung P5.2-4: Monoflop
  1. Mit welchem Hexadezimalwert muß das Steuerregister CR#3 geladen werden, um folgende Betriebsart zu erhalten:

    1. Ausgang 03 aktiviert,
    2. Interrupt zur CPU gesperrt,
    3. Single-Shot-Betrieb,
    4. 16-bit-Zählmodus,
    5. Takt intern vom Systemtakt E abgeleitet (Frequenz 1MHz),
    6. Takt wird auf 1/8 heruntergeteilt.

    Im Single-Shot-Betrieb ist das Ausgangssignal O3 nicht periodisch. Es kann daher nicht besonders gut auf der Erweiterungskarte beobachtet werden.

    Abhilfe: Das Monoflop wird in periodischen Zeitabständen getriggert. Beim MC6840 kann dies auf zwei Arten geschehen.

    • Durch die Software: Durch Setzen von Bit 0 im Steuerregister CR#1 wird der Zähler gestoppt, durch Rücksetzen gestartet, d.h. durch zyklisches Pulsen dieses Bits entsteht am Ausgang O3 eine periodische Schwingung.
    • Durch die Hardware: Stoppen durch ansteigende Flanke am #G3 Eingang, Starten durch fallende Flanke.

  2. Starten durch die Software: (Praktikumsrechner oder 6809-Simulator)
    Schreiben Sie ein Programm, das den Zähler #3 periodisch startet. Die Monoflop-Impulsdauer soll maximale Länge haben. Die periodische Rechteck-Schwingung zur Triggerung des Zählers soll über CB2 ausgegeben werden, ihre Schwingungsdauer über die Tastatur eingebbar sein.

  3. Starten durch die Hardware: (nur mit dem Praktikumsrechner)
    Jetzt soll der Zähler #3 intern getaktet, aber extern über den Eingang #G3 getriggert werden. Ändern Sie das Programm aus II. so ab, daß über den Ausgang CB2der Zähler #3 periodisch getriggert wird. Geben Sie eine Schwingungsdauer von ca. 1 s ein. Skizzieren Sie die Ausgangssignale an CB2 und O3.

5.2/5

5.2.2 Zykluszeit-/Impulsdauermessung

Wie bereits gesagt, kann man mit dem Zeitgeber-/Zählerbaustein nicht nur Signale erzeugen ("Wave Synthesis Mode"), sondern auch messen ("Wave Measurement Mode"). In realen Anwendungen kommen diese auszumessenden Signale von der Peripherie eines Mikrorechners, z.B. von einem Meßgerät. Da wir Ihnen einerseits solch ein Gerät nicht zur Verfügung stellen können, andererseits der 6809-Simulator die Nachbildung von Signalen am Steuereingang #G3 des Zählers nicht unterstützt, müssen wir in den folgenden Praktischen Übungen diese Signale vom Mikroprozessor selbst erzeugen lassen und auf den Baustein MC6840 zurückkoppeln. Diese Übungen sind nur mit dem Praktikumsrechner auszuführen.

Praktische Übung 5.2-5: Messung von Impulsbreite und Schwingungsdauer
  1. Schreiben Sie ein Programm, das die Länge der negativen Impulsdauer einer Schwingung am Steuereingang #G3 des Zählers #3 mißt.

    Gehen Sie dazu in folgenden Schritten vor:

    • Laden Sie das Steuerregister von Zähler #3 so, daß

      1. der Ausgang O3 aktiviert ist,
      2. Interrupts zur CPU zugelassen sind,
      3. der geeignete Modus zum Impulsbreiten-Vergleich gewählt wird,
      4. im 16-bit-Modus gezählt wird,
      5. der interne Takt E zum Zählen benutzt wird,
      6. dieser Takt ungeteilt verwendet wird,
      7. der Zählzyklus maximale Länge hat.

    • Ändern Sie den Interruptvektor des Zählers #3 so, daß eine eigenerstellte Interruptroutine ausgeführt wird.

    • Erweitern Sie das Programm um eine Endlosschleife, in der ein symmetrisches Rechtecksignal über die Leitung CB2 des Portbausteins MC6821 ausgegeben wird. Der Wert, der die Länge der Impulspause und Impulsdauer in ms vorgibt, soll über die Tastatur eingegeben und in der Anzeige S7-S4 angezeigt werden. Achtung: während der Eingabe darf kein Interrupt von Zähler #3 "durchkommen".

    • Schreiben Sie eine Interruptroutine zu Zähler #3, in der die gemessene Impulslänge in der Anzeige S3-S0 dargestellt wird. Achtung: Löschen des Interrupt-Flags nicht vergessen.

  2. Ändern Sie das Programm aus I. nun so ab, daß es unter den gleichen Bedingungen die Schwingungsdauer des Signals an CB2 mißt und anzeigt.

  3. Geben Sie in einer Tabelle die gemessenen Werte für Impulspause und Schwingungsdauer an, wenn der Zeitparameter für die Endlosschleife die Werte $1, $2, $10, $80 annimmt.

  4. Was beobachten Sie an den Ausgängen CB2 und O3, wenn der Zeitwert $1000 gewählt wird ?

5.2/6

Praktische Übung 5.2-6: Messen von Schwingungen niedriger Frequenz
Aufgabe P5.2-5, IV. zeigte, daß mit dem dort benutzten Programm nur Schwingungen ausgemessen werden konnten, bei denen die Impulsdauer oder Schwingungsdauer kürzer ist als der maximale Zählzyklus des Zählers #3 (Initialwert $FFFF). Dieser Zyklus ist ca. 65 ms lang, falls der Frequenzteiler 1:8 nicht benutzt wird, und ca. 0.52s mit Frequenzteiler.

Erweitern Sie nun das Programm aus P5.2-5 so, daß diese Restriktion aufgehoben wird. Gehen Sie dazu in folgenden Schritten vor:

  1. Ändern Sie die Programmierung des Zählers #3 so, daß jeder Ablauf des Zählers zu einem Interrupt führt. In der Interruptroutine zählen Sie nun die Anzahl N der vollständig abgearbeiteten Zählzyklen.

  2. Ergänzen Sie das Programm so, daß zum Ende jeder Vollschwingung am Ausgang CB2 ein Interrupt über den Eingang CB1 des MC6821 erzeugt wird. Geben Sie in der Interruptroutine den unter 1. ermittelten Zählerstand in den Anzeigestellen S7-S4 aus und stellen Sie die abgelaufene Dauer D des aktuellen Zählzyklus in den Stellen S3-S0 dar.

  3. Für die Gesamtzeit T der gemessenen Impulsdauer oder Schwingungsdauer ergibt sich damit:
    T = N * $10000 + D

  4. Das Programm soll die Schritte 1. und 2. zyklisch wiederholen. Achtung: Löschen der Zähler und der Interrupt-Flags nicht vergessen !


5.1 Der Zeitgeber-/Zähler-Baustein MC6840 5.3 Praktische Übungen zum µRechner