|
||||||||||
Ziel des ProjektesAls konkretes Problem gilt es ein Schrittmotor aus einem 5,25 Zoll Diskettenlaufwerk anzusteuern. Hierbei generieren wir Siganle, welcher der Motor dann als Vollschritt erkennt. Es gibt jeweils eine Taste für einen Linksschritt und eine Taste für einen Rechtsschritt. Zusammengefasst:
Als Interface für unsere Projekt wollen wir entprellte Taster verwenden. Was ist der Z80Der Z80 ist ein 8-Bit Mikroprozessor der Firma Zilog, diese entstand durch einen abgewanderten Intel-Entwickler. Der Z80 kam 1976 auf den Markt und eroberte diesen schlagartig. Seine Vorteile liegen klar auf der Hand.
Wir verwenden in unserem Versuchsaufbau nicht den orginalen Z80, sondern den poplären Nachbau U880. Neben dem Prozessor steht uns eine Parallele-Input-Output-Einheit (im weiteren PIO gennant), eine Serielle-Input-Output-Einheit (SIO) und eine Zähl/Timer-Einheit (CTC) zur Verfgung. Durch den mittlerweile langsamen Takt von 1 Mhz, der guten Zugänglichkeit zum Bus wie auch der Möglichkeit in den sogennanten Einzelschritt-Modus zu gelangen ist der Z80/U880 mit seinen Komponenten die ideale Versuchsplattform um die Funktionsweise eines Computer-Systems (es lassen sich auch moderne Konzepte darauf reflektieren) zu verstehen. Eingabe InterfaceFür den Versuchsaufbau benötigen wir
Um einen Störungsfreien Betrieb garantieren zu können, mssen alle Taster speziell entprellt werden. Dies geschieht über eine Schmitt-Trigger-Schaltung. Zur Verwendung kommt ein 4093 Baustein, welcher uns 4 NAND-Schmitt-Trigger zur Verfgung stellt. Einzelschritt-GeneratorUm den Prozessor in den sogenannten Einzelschritt-Modus zu bringen, benötigen wir ein /WAIT - Signal (ähnlich dem HWP3 Versuch: POST-Karte).
PeripherieUm die Peripherie anzusprechen weisen wir dieser einen Speziellen Adressbereich zu. Über einen Adressdecoder geben wir dann dementsprechend dann ein Signal auf die entsprechende Leitung zur Aktivierung des Bausteins. Erst somit ist uns ein gezieltes Ansprechen der gewünschten Peripherie möglich.Zum Initialisieren der Peripheriebausteine (SIO,PIO,CTC) schickt man spezielle Steuerwörter an die Hardware. Durch diese speziellen Steuerworte kann die Hardware sich entsprechen einstellen. Bsp: Init der PIO Interrupts und PollingUm gezielt mit der Peripherie arbeiten zu können, muss es die Möglichkeit geben, an die Daten welche z.b. eingelesen oder erzeugt werden zu gelangen. Hierbei gibt es diverse Varianten. Variante 1: Polling Variante 2: Interrupts Für das Interrupthandling, wie wir es verwenden benötigen wir eine Basisadresse der Interruptvektortabelle und einen Interruptvektor, welches nur ein Offset zur Basisadresse darstellt. Aus der Basisadresse (Highteil der neuerzeugten Adresse) und dem Interruptvektor (Lowteil der neuerzeugten Adresse) erzeugen wir eine neue Zieladresse, dort platzieren wir unsere ISR (Interrupt-Service-Routine). Diese ISR ist das Unterprogramm welches Ausgeführt wird, wenn die jeweilige Peripherie diesen Interrupt lossendet. Implementierung Wir verwenden für unsere Schrittmotorsteuerung Kanal B der PIO. Diese stellt uns 8 Ein/Ausgänge zur Verfügung. 4 Pins definieren wir als Ausgang (an dieser Stelle wird der Treiber für den Schrittmotor angeschlossen) und 4 Pins definieren wir als Eingang, wobei jedoch nur 2 für das Interrupthandling maskiert sind. Diese beiden Pins sind High-Aktiv und mittels Oder-Logik (Intern in der PIO) verbunden. Im konkreten heisst dies, falls einer der Beiden Taster (Links-oder Rechts) gedrckt wurde, springen wir in die selbe ISR. Erst dort findet mittels Shift-Operationen und dem Carry-Flag eine Überprüfung statt welche Taste gedrückt wurde.
Je nachdem ob das Carry-Flag gesetzt wurde oder nicht (entspricht der Auswahl des Tasters) laufen dann getrennte Routinen ab, welche den Schrittmotor in die eine oder in die andere Richtung laufen lassen. Da wir den Motor im einfachen Vollschrittmodus betrieben, heisst dies, dass wir jeweils nur eine Spule des Schrittmotors gleichzeitig betreiben.
Somit reicht es uns aus, wenn wir ein einzelnes Bit (dies muss natürlich eine 2er Potenz zwischen Der Treiber verstärkt das angelegte Bitmuster 1 zu 1 und führt diese dem Schrittmotor zu.
Quellen
|
||||||||||
![]() |
||||||||||
![]() |
||||||||||