Das eBook Angewandte Mikroelektronik wurde von Hans Lohninger zur Unterstützung verschiedener Lehrveranstaltungen geschrieben. Weitere Informationen finden sie hier. |
Home Experimente Aufbau einfacher mikroprozessorgesteuerter Geräte Parallel ablaufende Programme: Sinusgenerator und Lauflicht | |||
Siehe auch: Experiment: Lauflicht, Experiment: Sinusgenerator, Version A | |||
|
|||
Experiment: Parallel ablaufende Programme: Sinusgenerator und Lauflicht
Im folgenden Experiment soll die Implementation von zwei Programmen, die sowohl zeitlich als auch inhaltlich voneinander unabhängig ablaufen, gezeigt werden. Es soll sowohl der im vorigen Experiment gezeigte Sinusgenerator als auch ein Lauflicht quasi parallel betrieben werden. Dazu wird das Hauptprogramm des Sinusgenerators, das ja nur aus einer Warteschleife besteht, durch ein Programm ersetzt, das die Lauflichtsteuerung übernimmt. Zum Aufbau des Experiments werden wie im vorigen Beispiel die Platinen uP1, ADAC12 und DIGMLT verwendet (Abbildung). Der NMI-Eingang des Mikrocomputers wird mit dem Rechteckgenerator der Platine DIGMLT verbunden. Außerdem wird die 8-Bit-Parallelschnittstelle des Mikrocomputers (POUT) mit den LEDs der Platine DIGMLT verbunden.
Das folgende Listing zeigt das kurze Hauptprogramm für das Lauflicht: ;=================================================== ;---- Experiment: Sinusgenerator, Version B -------- ;=================================================== ; .GLOBAL LFLSIN LFLSIN: LD HL,SINTAB ;Sinustabelle laden LD DE,FNCBUF LD BC,512 LDIR LD HL,FNCBUF ;Zeiger initialisieren LD (FBFPOI),HL LD A,1 ;Bit 0 = 1 $1: OUT (POUT),A ;Ausgabe auf LEDs RLCA ;Bit rotieren LD HL,10000 ;70 ms warten CALL DELAY JR $1 ;unendliche Schleife Nach der Initialisierung des Zeigers auf die Sinustabelle wird das Register A auf den Wert $01 gesetzt (Bit 0 = HIGH). Dieses Bit wird in der nachfolgenden Schleife rotiert, wobei nach jedem Schieben des Bits eine Warteschleife von 70 ms aufgerufen wird. Sperrt man den NMI-Eingang der CPU (keine Verbindung mit dem Rechteckgenerator), so kann das Lauflichtprogramm ungestört ablaufen und man sieht eine leuchtende LED jeweils von links nach rechts laufen. Hängt man nun an den NMI-Eingang den Rechteckgenerator, der auf eine niedrige Frequenz (z.B. 1 kHz) eingestellt ist, so wird am DA-Wandler die Sinuskurve in gewohnter Weise ausgegeben. Das Lauflicht läuft scheinbar unbeirrt weiter. Erhöht man die Frequenz des Rechteckgenerators, so erhöht sich entsprechend auch die Frequenz des Sinussignals, das Lauflicht wird aber langsamer - und zwar umso mehr, je höher die Frequenz des Rechteckgenerators wird. Die Erzeugung des Sinussignals verbraucht natürlich Rechenzeit (ca. 100 µsek pro Interruptaufruf), die dann dem Programm, das das Lauflicht betreibt, abgeht, da der nicht maskierbare Interrupt die höhere Priorität besitzt. Wird das Rechtecksignal so hochfrequent, dass die Zeit zwischen zwei Impulsen nur wenig länger als die Bearbeitungszeit des NMIs ist, so sackt die Geschwindigkeit des Lauflichts bis auf null ab. Das hier beschriebene Experiment ist im Prinzip eine sehr einfache Version eines Multitasking-Betriebs, wo mehrere Aufgaben quasi gleichzeitig vom Mikroprozessor erledigt werden.
|
|||
Home Experimente Aufbau einfacher mikroprozessorgesteuerter Geräte Parallel ablaufende Programme: Sinusgenerator und Lauflicht |