FUNKAMATEUR – Bauelementeinformation SL (1)610C SL (1)
FUNKAMATEUR – Bauelementeinformation SL (1)610C SL (1)
FUNKAMATEUR – Bauelementeinformation SL (1)610C SL (1)
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Praktische Elektronik<br />
Sinusgeneratoren<br />
mit ML 2035 und ML 2036 (3)<br />
Dr.-Ing. KLAUS SANDER<br />
Im dritten und abschließenden Teil dieser Beitragsreihe werden Softwaremodule<br />
vorgestellt, die in eigene Lösungen integriert werden können. Es<br />
wird sowohl eine Möglichkeit zur Ansteuerung durch den zum Industriestandard<br />
gewordenen 8031/8051 beschrieben als auch eine über die<br />
Centronics-Schnittstelle des PC.<br />
Nach dem Aufbau des Generators nach<br />
Bild 8 können wir mit der praktischen Erprobung<br />
beginnen. Durch die Programmierbarkeit<br />
läuft aber ohne Software nichts.<br />
Am einfachsten ist sicher die Erprobung,<br />
wenn ein PC zur Verfügung steht. Der Anschluß<br />
erfolgt über das Centronics-Port. Es<br />
lassen sich dann natürlich nicht mehr die<br />
im PC installierten Druckertreiber verwenden.<br />
Das resultiert einfach daraus, daß wir<br />
nicht nur die serielle Datenausgabe durch<br />
Software realisieren müssen, vor allem jedoch<br />
ist der Ablauf der Steuersignale (SCK<br />
und LATI) nicht kompatibel zur standardisierten<br />
Reihenfolge für Drucker. Wir müssen<br />
also direkt auf die Hardware per Software<br />
zugreifen. Da wenigstens die Portadressen<br />
und die Bitbelegung standardisiert<br />
sind, sind jedoch keine Probleme zu befürchten.<br />
Dies wird sicher auch für künftige<br />
Computergenerationen gültig bleiben.<br />
Die Centronics-Ports LPT1 und LPT2 werden<br />
über die PC-I/O-Adressen 378H bzw.<br />
278H angesprochen. Dazu gehören die<br />
nächsten beiden jeweils um 1 erhöhten<br />
Folgeadressen, d. h., LPT1 wird über die<br />
Adressen 378H, 379H und 37AH angesprochen<br />
(LPT2: 278H, 279H und 27AH).<br />
Während unter Adresse 378H die Daten<br />
vom PC (normalerweise in Richtung Drukker)<br />
ausgegeben werden, ist unter Adresse<br />
379H ein Eingabeport für bestimmte<br />
Steuersignale (z. B. Busy, Papierende usw.)<br />
verfügbar.<br />
Über Adresse 37AH werden vom PC<br />
Steuersignale ausgegeben, die die Gültigkeit<br />
der ausgegebenen Daten anzeigen<br />
(Strobe), den automatischen Zeilenvorschub<br />
bewirken (Autofeed) usw. Diese<br />
Signale lassen sich auch für die Ansteuerung<br />
des ML 2036 nutzen.<br />
Wir verbinden dazu unsere Sinusgeneratorbaugruppe<br />
mit dem Centronics-Port wie<br />
folgt:<br />
SID Datenbit D0 (Pin 2)<br />
PD Datenbit 7 (Pin 9)<br />
SCK Strobe (Pin 1)<br />
LATI AUTOFEED (Pin 14)<br />
SID und PD werden damit über Adresse<br />
378H angesprochen, während die Takte<br />
SCK und LATI über Adresse 37AH ausgegeben<br />
werden.<br />
384 • FA 4/95<br />
Die in Listing 1 vorgestellte Software ist<br />
in dieser Form bereits nutzbar, soll aber<br />
vorrangig als Anregung für eigene Experimente<br />
dienen. Sie umfaßt nur die wichtigsten<br />
Unterprogramme zur Portadreßwahl,<br />
zur Realisierung der Schieberegisterfunktion<br />
(serielle Ausgabe) und zusätzlich, um<br />
erste Anwendungen zu ermöglichen, auch<br />
Unterprogramme zur Einstellung einer<br />
Frequenz bzw. zum Wobbeln der Frequenz.<br />
Die Software wurde mit dem Power-<br />
BASIC-Compiler geschrieben. Diese Programmiersprache<br />
ist ein komfortables<br />
Werkzeug und hat mit den früher bekannten<br />
und von „ernsthaften“ Programmierern<br />
meist belächelten BASIC-Interpretern<br />
außer der Bezeichnung der meisten Befehle<br />
nicht mehr viel zu tun. In Power<br />
BASIC sind die Entwicklungen anderer<br />
moderner Programmiersprachen berücksichtigt.<br />
Zudem kann mit den dazugehörigen<br />
PowerTools eine komfortable Bedieneroberfläche<br />
mit Windowtechnik<br />
realisiert werden. Von all diesen Möglichkeiten<br />
wurde aber hier kein Gebrauch<br />
gemacht. Der Grund ist sicher einleuchtend.<br />
Power BASIC ist keine Public-<br />
Domain-Software, sie muß gekauft werden.<br />
Um aber auch Nichtbesitzern die Verwendung<br />
in eigenen Programmen zu<br />
ermöglichen, wurde die hier vorgestellte<br />
Software recht einfach gehalten. Sie dürfte<br />
auch mit veralteten BASIC-Dialekten lauffähig<br />
sein oder läßt sich zumindest leicht<br />
anpassen. Aus diesem Grund ist in Listing 1<br />
auch viel Kommentar enthalten. Etwas<br />
BASIC-Verständnis muß man aber schon<br />
mitbringen. Zusätzlich bietet der Verzicht<br />
auf Unterprogramme in Maschinenkode<br />
eine einfache Möglichkeit, die Software<br />
auch auf anderen Computern zu implementieren.<br />
Das Unterprogramm zur Portauswahl bedarf<br />
sicher keiner Erläuterung. Je nach<br />
gewünschter Portadresse (erste Adresse)<br />
kann zwischen LPT1 und LPT2 gewählt<br />
werden. Im Unterprogramm SCHIEBE-<br />
REGISTER wird die eigentliche serielle<br />
Übertragung realisiert. Der Schieberegisterwert<br />
wird durch Multiplikation der<br />
gewünschten Frequenz mit 2 ermittelt.<br />
Der Faktor 2 ergibt sich durch Division<br />
der im ML2036 integrierten Teiler durch<br />
die verwendete Taktfrequenz (siehe Teil 1<br />
dieses Beitrags, <strong>FUNKAMATEUR</strong> 2/95).<br />
Es erfolgt die Ausgabe des ersten Bit (es<br />
steht auf Position D0) mit anschließender<br />
Taktung von SCK durch Bitwechsel von<br />
Strobe.<br />
Im folgenden Programmteil wird ein<br />
Schieberegister durch den Befehl SHIFT<br />
RIGHT (wir müssen in Richtung des<br />
niederwertigen Bits schieben) realisiert.<br />
Das passiert 15 mal jeweils mit Taktung<br />
von SCK. Damit sind insgesamt 16 Bit<br />
ausgegeben und wir können den Latchtakt<br />
LATI erzeugen. Der auszugebende Wert<br />
ist mit SCK = 1 verknüpft, damit während<br />
des LATI-Taktes der Pegel von SCK stabil<br />
bleibt. Es muß sicher nicht explizit erwähnt<br />
werden, daß wegen der binären<br />
Ausgaben nur mit INTEGER-Variablen<br />
gearbeitet werden darf.<br />
Im eigentlichen Hauptprogramm, welches<br />
hier nur als Beispiel dient, ist eine Auswahl<br />
zwischen Ausgabe einer einzelnen<br />
(Dauer-)Frequenz und Wobbeln durch die<br />
CASE-Anweisung möglich.<br />
Bei der Ausgabe einer einzelnen Frequenz<br />
wird der Frequenzwert eingegeben und<br />
anschließend das Schieberegister-Unterprogramm<br />
aufgerufen.<br />
Die Wobbelfunktion ist einfach erklärt.<br />
Die Frequenz wird in bestimmten Zeitabständen<br />
um 0,5 Hz erhöht. Der Zeitabstand<br />
ist in ganzen Sekunden einzugeben.<br />
Sicher läßt sich dieser Abstand verkürzen,<br />
um ein schnelleres Durchlaufen des Frequenzbereiches<br />
zu ermöglichen. Das erfordert<br />
jedoch die Nutzung von Programmteilen<br />
in Maschinenkode. Zudem muß das<br />
Schieberegister ebenfalls als Maschinenkode<br />
implementiert werden. Dabei sind<br />
eine Reihe von Zeitbedingungen, wie SCK-<br />
Taktbreite, Dauer der aktuell eingestellten<br />
Sinusperiode usw. zu berücksichtigen.<br />
Darauf wurde hier aber zugunsten der<br />
Maschinenunabhängigkeit verzichtet. Übrigens<br />
wurde das Programm nach Listing 1<br />
auf einem 486iger DX2 mit 50 MHz getestet.<br />
Listing 2 bietet einen Ansatz für die Nutzung<br />
eines Mikrocontrollers zur Ansteuerung<br />
des ML 2036. Es wurden der 8031/51<br />
bzw. dazu kompatible Typen verwendet.<br />
Diese haben sich als Industriestandard<br />
durchgesetzt und dürften sich auch in vielen<br />
Amateurgeräten ihren Platz gesichert<br />
haben.<br />
Port 0 und Port 2 werden beim 8031 für<br />
den externen Programmspeicher benötigt.<br />
Die serielle Schnittstelle läßt sich zwar im<br />
MODUS 3 direkt als Schieberegister betreiben,<br />
auf eine solche Lösung wurde hier<br />
verzichtet. Sie bleibt anderen Anwendun-