Funkamateur 01/88

 

Schnelles NF-Meßprogramm für U-880-Mikrorechner

H. und R. ADEN

Das Programm mißt Frequenzen im Bereich von etwa 10 bis 40000 Hz. Sein systematischer Fehler ist kleiner als 3 * 10-5. Je Sekunde werden in Abhängigkeit von der zu messenden Frequenz und der Rechnertaktfrequenz bis zu vier Meßwerte ermittelt. Zur Messung höherer Frequenzen kann man einen dekadischen Vorteiler mit dem im Bild 1 angegebenen Abschluß verwenden. Bild 2 zeigt die auf diese Weise durch 1000 geteilte Taktfrequenz des Rechners. Technische Voraussetzung sind ein Kassettenspeichereingang über einen PIO und zwei in der Numerierung aufeinanderfolgende kaskadierte CTC-Kanäle. Das Programm besteht aus den Abschnitten Meßprogramm, Frequenzberechnungsprogramm und Anzeigeprogramm. Alle Abschnitte sind an verschiedene Lagen im Hauptspeicher anpaßbar.
Das Meßprogramm ist an verschiedene Peripherieadressen, das Frequenzberechnungsprogramm an die gebräuchlichen Taktfrequenzen von 1,0; 1,75; 2,0 und 2.4576 MHz anzupassen. Das Anzeigeprogramm ist für "AC1"-kompatible Rechner eingerichtet. Es benutzt die "AC1"-Graphiksymbole und stellt die Frequenz als fünfstellige Gleitkommazahl mit dem angefügten Zeichen "Hz" auf einem 16- oder 32-zeiligen Bild (64 Zeichen je Zeile) dar. Die Arbeit des Programms wird mit einem blinkenden Balken über dem "z" angezeigt. Für andere Mikrorechner ist das Anzeigeprogramm durch ein dem Bildformat des verwendeten Rechners angepaßtes Programm zu ersetzen. Bis auf den Stack und den Bereich für das Ergebnis können die ersten beiden Programme in ROMs verwendet werden. Deshalb ließe sich auch der Bau eines unabhängigen Frequenzmessers mit 7-Segment-Anzeige in Betracht ziehen. Er hätte gegenüber den bisher im FUNKAMATEUR beschriebenen den Vorteil, daß er mit nur zwei Meßbereichen, durchgängig hoher Meßgeschwindigkeit und Genauigkeit, bis an die obere Grenze des Frequenzbereichs der TTL,Bauelemente reicht. An spezifischen Bauelementen wären erforderlich:
1 x U 880 D, 1 x U 855 D, 1 x U 857 D, 1 x EPROM, 2 x U 225 D, 5 x DS 8212 D für den NF-Meßteil und 3 x D 192 D, 1 x D 100 D für den Vorteiler.
Die DS 8212 D dienen der direkten Speisung der Lichtemitteranzeigen. Die Ziffernkodes werden vom Programm direkt geliefert, so daß Dekodierschaltkreise nicht erforderlich sind. Auch eine externe Adreßdekodierung ist nicht erforderlich, wenn man ihre Steuereingänge folgendermaßen beschaltet: /CS1 = L, /CS2 = H. STB = An (n=0,...,4) und MD = /WR8A15. Damit sind die Anzeigeregister mit den Adressen 8001H, 8002H, 8004H, 8008H und 8010H adressierbar.

Meßprogramm

Das Meßprogramm ist für die Startadresse 8000H eingerichtet. Der H-Teil der Startadresse kann beliebig geändert werden. Die dazu im Programm erforderlichen Änderungen sind der Tabelle 2 zu entnehmen. Die PIO- und CTC-Adressen entsprechen denen des "AC1", eine Veränderung ist nach Tabelle 3 möglich. Nach seiner Abarbeitung ruft es das Frequenzberechnungsprogramm auf, das sich anschließt (8090H). Das Meßprogramm übergibt im Registerpaar HL die Anzahl der gezählten Perioden p der zu messenden Frequenz und im Registerpaar DE bei einer Rechnertaktfrequenz für die entsprechende Meßzeit t in Zeiteinheiten (16/fr). Das Meßprogramm besteht aus:
- dem Rahmen: er initialisiert den PIO und die CTC-Kanalkaskade auf Unterbrechung, führt eine Warteschleife aus und ruft nach deren Auflösung des Frequenzberechnungsprogramm auf;
- der Meßstartroutine, die durch die erste Unterbrechung des PIO aufgerufen wird und durch Eingabe der Zeitkonstante in den ersten CTC-Kanal der Kaskade die Zeitmessung auslöst; danach schaltet sie den PIO auf die Periodenzählroutine um;
- der Zählroutine, die mit jedem Aufruf den Inhalt des Registerpaars HL um 1 erhöht;
- dem CTC-Unterbrechungsprogramm, das nach 10H x 8000H Rechnertakten aufgerufen wird und veranlaßt, daß beim nächsten Periodenbeginn der zu messenden Frequenz die Meßabschlußroutine aufgerufen wird;
- der Meßabschlußroutine, die die Zählerstände der CTC-Kanäle liest, die Meßzeit berechnet, die PIO und CTC deaktiviert und die Warteschleife auflöst.
Wer das Programm disassembliert, wundere sich nicht über die zwei Warteschleifen und zwei Meßabschlußroutinen. Sie sind aus technischen Gründen bzw. zur Sicherung einer hohen Genauigkeit bei hohen Frequenzen erforderlich. Bild 2 enthält das Meßprogramm in hexadezimaler Darstellung. Bevor wir zur Fortsetzung kommen, möchten wir den "AC1"-Pionieren dafür danken, daß sie Programmsysteme erschlossen und kostenlos zur Verfügung gestellt haben.

Frequenzberechnungsprogramm

Die Frequenz f wird mit der Formel
f = p * fr / t * 16 (1)
berechnet. Darin bedeuten: p - die von der PIO gezählten Perioden, t - die von den CTC-Kanälen ermittelten Zeiteinheiten und fr die Taktfrequenz des Rechners. Eingerichtet ist die Frequenzberechnung auf folgendermaßen darstellbare Taktfrequenzen:
fr = k * 2b * 10d [Hz]. (2)
In der Tabelle 8 sind die zu den verbreiteten Taktfrequenzen fr gehörenden Werte für k, b und d angegeben. Die Tabelle 6 enthält ein Frequenzberechnungsprogramm für k * 2b ≤ 2 und d = 6, Tabelle 7 ein Programm für die Taktfrequenz 2,4576 MHz. Die Adresse der höchsten Stelle der Frequenz steht im Registerpaar DE bereit. Die Adressen der Stellen fallen mit deren Rang. Je Dezimalziffer ist ein Byte mit dem entsprechenden Dualwert belegt. Die Stelle, hinter der das Komma steht, wird mit Bit 7 = 1 markiert. Auf die fünfstellige Zahl folgen zur Darstellung der Zeichen Hz die Werte 0BH und 0CH.

Anzeigeprogramm

Das in Tabelle 6 dargestellte Anzeigeprogramm setzt die Pseudo-Graphikzeichen des "AC1" [1] und einen Bildschirm mit 16/32 Zeilen zu 64 Zeichen voraus, mit von links oben nach rechts unten fallender Adressierung. Es stellt die Frequenz als fünfstellige Gleitkommazahl auf dem Bildschirm dar.

Anpassung

In den Tabellen 2 bis 5 sind alle Adressen enthalten, die bei einer Verschiebung, abweichender Taktfrequenz oder Peripherieadressen geändert werden müssen. Für eine Taktfrequenz von 2,4576 MHz ist das in Tabelle 7 wiedergegebene Programm anstelle dem in Tabelle 6 zu verwenden, und das Anzeigeprogramm zu höheren Adressen hin zu verschieben. Für abweichende Bildformate ist das Anzeigeprogramm durch ein dem Bildformat des verwendeten Rechners angepaßtes zu ersetzen.

Genauigkeit

Der relative Meßfehler ist df/f ≤ 3*10-5 für 3 * fr / (16 * 32768 ) < f < fr / 68
bzw. df/f ≤ 6*10-5 für fr/68 < f < fr/32.
Dabei ist der relative Rechenfehler df/f ≤ 5*10-5. Diese Genauigkeiten werden nur erreicht, wenn der Taktfrequenzgenerator noch genauer arbeitet. Falls der Taktgenerator Ziehelemente enthält, kann man ihn z.B. während der Messung der Fernsehzeilenfrequenz fz = 15625 Hz eichen, da diese mit einem relativen Frequenzfehler von dfz/fz ≤ 10-10 ausgestrahlt wird.

Literatur

[1] Heyder, F.: Bitmuster für Zeichengenerator und Ergänzungen zum "AC1"
FUNKAMATEUR 35 (1986) H. 6, S. 306

36 KByte 111 KByte 42 KByte 57 KByte
Bild 1 Bild 2 Tabelle 1 Tabelle 2

68 KByte 38 KByte 34 KByte 210 KByte
Tabelle 3 Tabelle 4 Tabelle 5 Tabelle 6

119 KByte 34 KByte
Tabelle 7 Tabelle 8

Funkamateur 04/88

 

Korrektur

Heft 01/88, S. 17
"Schnelles NF-Meßprogramm für U-880-Mikrorechner"

Die Adresse 8043 in Tabelle 2 ist in 8093 zu ändern.