Lade Inhalt...

Entwicklung und Aufbau eines durch einen Mikrocontroller gesteuertern Funktionsgenerators

Diplomarbeit 1999 97 Seiten

Elektrotechnik

Leseprobe

Inhaltsverzeichnis

1 Einleitung
1.1 Aufgabenstellung der Diplomarbeit

2 BASIC-Tiger
2.1 Blockschaltbild des BASIC-Tigers
2.2 Das Bussystem des BASIC-Tigers
2.3 Das erweiterte I/O-System des BASIC-Tigers (ePorts)
2.3.1 Die logischen Adressen
2.3.2 Die physikalischen Adressen
2.4 Ausgangsbausteine und Eingangsbausteine
2.5 Das Tiger – Basic – Device – Konzept
2.6 Multitasking

3 MAX038
3.1 Zeit- und Frequenzeinstellungen
3.1.1 Eingang FADJ
3.1.1.1 Deaktivierung von FADJ
3.1.2 Eingang DADJ
3.1.3 Durchstimmung der Frequenz

4 Die Schaltung
4.1 Blockschaltbild der Schaltung
4.2 Beschreibung der Schaltung
4.2.1 Sukzessive Approximation
4.2.2 R-2R-Verfahren
4.3 Grobabstimmung der Frequenz des MAX038
4.3.1 Analogschalter für Kondensatorauswahl
4.3.2 Begrenzte Schrittweite der Frequenz
4.4 Feinabstimmung der Frequenz und Tastverhältnis der Spannung des MAX038
4.4.1 Realisierung und Berechnung der Schaltung
4.4.2 Auswahl des richtigen Operationverstärkers
4.5 Ausgangsverstärker
4.5.1 FET als steuerbarer Widerstand
4.5.2 Ausgangsverstärker mit FET
4.6 Dämpfungsglied
4.7 Ausgangsspannung
4.7.1 Gleichrichter
4.7.2 Umrechnung
4.8 Frequenzmessung
4.9 Theoretische Betrachtung der Ausgangssignale

5 Touch-Panel
5.1 Prinzipschaltung für das Touch-Panel

6 Software
6.1 Flußdiagramm
6.2 Programmlisting

7 Zusammenfassung

8 Danksagung

9 Anhang

1 Einleitung

Signalgeneratoren ( Funktionsgeneratoren ) werden für den gesamten technischen Frequenzbereich benötigt. Die wichtigsten Signalformen sind periodische Sinus-, Rechteck-, Dreieck und Rampensignale ( Sägezahn ). Anwendung finden Signalgeneratoren beispielsweise in Taktgeneratoren, bei der Datenübertragung, oder Analyse von Systemen und Funktionseinheiten, als Zeitbasisgeneratoren oder als Modulatoren, in Prüfgeräten und bei vielen weiteren Aufgaben.

1.1 Aufgabenstellung der Diplomarbeit

Das Unternehmen Wilke Technology GmbH entwickelt und produziert Mikrocontroller mit dem Namen Basic-Briefmarke und BASIC-Tiger. Die Basic-Briefmarke ist ein 8 Bit Mikrocontroller. Der BASIC-Tiger ist dagegen ein 32 Bit-Mikrocontroller. Meine Aufgabe im Rahmen der Dipl.-Arbeit ist es jetzt mit Hilfe des BASIC-Tigers einen Funktionsgenerator zu entwickeln und zu bauen. Kernstück des Funktionsgenerators ist ein Funktionsgenertor-baustein der Firma Maxim mit der Bezeichnung MAX038. Die Aufgabe des BASIC-Tigers ist es die vom Anwender erwünschten Signalformen, Frequenzen und Amplituden, die über ein Touchscreen oder Tastatureingegeben werden, an den MAX038 weiterzugeben. Der Funktionsgenerator soll Spannungen im Bereich von 0,1 V bis 10 V und Frequenzen von
10 Hz bis 10 MHz ausgeben können.

2 BASIC-Tiger

Die auffälligste Besonderheit des BASIC-Tigers ist seine Multitasking-Fähigkeit. Obwohl BASIC-Tiger-Module nicht viel größer sind als ein CPU Chip, ist ein Kompletter Multitasking Steuercomputer enthalten, der über eigenen Programm-Speicher ( FLASH ), Arbeitsspeicher ( SRAM + FLASH ) sowie eine Reihe von Standart-I/Os verfügt. Mehrere Tiger-Basic-Programme ( Tasks ) können in den Programmspeicherdes Tigers geladen werden und bleiben dort, ähnlich der Festplatte eines PC, dauerhaft gespeichert, bis sie durch neue Programme überschrieben werden. Der FLASH-Speicher läßt sich ferner auch als dauerhafter Speicher für Daten verwenden, der von Basic-Programmen aus beschrieben, gelesen und gelöscht werden kann. Der Arbeitsspeicher kann bis zu mehreren MBytes SRAM betragen und läßt sich ebenfalls gegen Stromausfall sichern. Der Vorteil von Multitasking wird sofort offenkundig, wenn man sich reale Aufgabenstellungen für einen Steuercomputer ansieht. Selten besteht eine Anwendung nur aus einer einzelnen Aufgabe, die linear in einer großen Schleife abgearbeitet wird. Schon bei kleinen Anwendungen gibt es meist 3, 4, 5 oder mehr eigenständige Aufgaben zu erledigen, die weitgehend unabhängig voneinander abzuarbeiten sind Man denke nur an Ausgaben auf einen Drucker, Eingaben von Keyboards oder Seriellen Eingänge etc., die Anwendungen oft „ hängen “ lassen können. Um solche Zustände zu vermeiden ist oft einiger zusätzlicher Programmier- und Testaufwand erforderlich. Entsprechend schwerer verstehbar und pflegbar werden solche Programme. Programmiert in Multitasking, bleibt nichts so leicht hängen. Eingaben, Ausgaben oder Auswertungen werden in eigenständigen Tasks abgearbeitet. Ist z.B. eine rechenintensive Auswertung noch nicht abgeschlossen, so werden dennoch erforderliche Steuersignale generiert, der Dialog mit einer Schnittstelle fortgeführt, Informationen auf dem Display und Bedienungstasten überwacht. Derartige Multitasking-Programme laufen nicht nur schneller und zuverlässiger ab, sie sind auch leichter zu pflegen und bieten mehr Übersicht. Zusätzliche Aufgaben können auch später noch leicht als neue Task hinzugefügt werden. Der Leistungsbedarf der einzelnen Aufgaben läßt sich durch Priorisierung der Task fein einstellen, Kontroll-Tasks können wichtige Funktionen im Auge behalten und ggf. Notprogramme starten und Alarm auslösen. Die Programmierung in Multitasking ist beim BASIC-Tiger denkbar einfach und bereits mit wenigen Basic-Zeilen zu realisieren.

2.1 Blockschaltbild des BASIC-Tigers

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1 : Blockschaltbild des BASIC-Tigers

SRAM : Dient zur Aufnahme von Anwenderdaten. Eingangsdaten, Zwischenergebnisse, Ausgangsdaten, i.a. also zur Speicherung der Programmvariablen ( kann über Batterie gepuffert werden ).

FLASH : Dient zur Aufnahme des Programmcodes und zur permanenten, d.h. spannungs- ausfallgeschützten Abspeicherung wichtiger Daten.

RTC : Versorgt das System mit Zeit- und Datumsinformationen.

PWM : Wird als D/A-Umsetzer benutzt.

2.2 Das Bussystem des BASIC-Tigers

Von seiner „ursprünglichen Natur“ aus gesehen ist der BASIC-Tiger ein rein geschlossener Mikrocontroller. Das bedeutet im wesentlichen : eine Vielzahl notwendiger und interessanter Zusatzfunktionsbaugruppen befinden sich mit auf dem eigentlichen Chip. Nach außen hin sind nur die Ein- bzw. Ausgänge zu diesen Baugruppen sichtbar und nur darauf kann zugegriffen werden. Die traditionell vorhandenen drei wichtigen Bussysteme eines jeden Mikroprozessor-Systems :

- der Datenbus
- der Adreßbus und
- der Steuerbus

werden nur Chip(Modul)-intern verwendet, sind also nicht nach außen geführt und stehen so dem Anwender nicht zur Verfügung. Diese in sich geschlossene Struktur ist dann sehr sinnvoll einsetzbar, wenn man mit den vorhandenen Systemressourcen auskommt und damit sehr kleine und kompakte Entwicklungen realisieren kann. Die BASIC-Tiger-Module, gleich welcher Art und Ausführung sind geschlossene Mikrocontroller-Systeme, die dem Anwender keinen Daten-, Adreß- und Steuerbus nach außen hin zur Verfügung stellen. Durch die Verwendung eines Teils der vorhandenen digitalen I/O-Ports wird jedoch ein sehr leistungsfähiger Daten- und Steuerbus nachgebildet, so daß trotzdem eine Vielzahl verschiedener Mikrocontroller-Peripherie-Bausteine parallel an die BASIC-Tiger-Module angeschlossen werden können. Der Nachteil ist hierbei jedoch, daß von den 34 digitalen I/O-Bits eines BASIC-Tigers-Moduls folgende I/O-Bits verloren gehen:

- 4 Bits zur Realisierung der seriellen Schnittstelle SER0
- 2 Bits zur Realisierung der seriellen Schnittstelle SER1
- 1 Bit zur Realisierung der Umschaltung PC-Mode çè Run-Mode

25 Bitleitungen

Für den Anwender bleiben zunächst also nur 8 freie verfügbare I/O-Pins übrig. In puncto zusätzlicher Erweiterungsmöglichkeiten gerät der BASIC-Tiger zunächst stark ins Hintertreffen. Man kann das Fehlen der drei Bussysteme jedoch wettmachen, indem man solche „Information-Highways“ durch digitale I/O-Portanschlüsse nachbildet.

Abbildung 2

Abbildung in dieser Leseprobe nicht enthalten

D0-D7 : Diese 8 digitalen I/O-Pins bilden den bidirektionalen Datenbus nach.

Aclk : Einlatch-Signal um Adressen für weitere zusätzliche, externe angeschlossenen I/O-Port-Bausteine in Zwischenspeicherbausteine

abzuspeichern. Von dort wird die Adreßinformation weiter

ausdekodiert und adressiert letztendlich 8-Bit breite digitale

I/O-Bausteine, die nun Nutzdaten ausgeben bzw. einlesen können.

Dclk : Mit diesem Signal werden auszugebende Daten vom Datenbus aus

in digitale, extern angeschlossene Ausgabebausteine eingeschrieben.

INE : Damit werden die digitalen, extern angeschlossenen Eingabebausteine

angesteuert.

Beim Erscheinen dieses Steuersignals schalten sie ihre Eingangsdaten

auf den Datenbus durch, so daß diese vom BASIC-Tiger eingelesen

und weiter verarbeitet werden können.

E : Dieses Signal aktiviert das LC-Display ( Chip-Enable-Signal

für das LC-Display )

RS : Dieses Signal wählt, in Verbindung mit E aus, ob die Daten,

die vom BASIC-Tiger zum LC-Display gesendet werden

busy-in : Eingangssteuersignal für den Device-Treiber PRN1.TDD :

„ Parallele Ausgabe / Paralleler Drucker “.

Damit meldet das externe Device ( z.B. der Drucker ) an den

BASIC-Tiger zurück, daß es bereit ist, weitere Daten über den

Datenbus entgegenzunehmen.

strobe-out : Mit diesem Signal werden durch den Device-Treiber PRN1.TDD :

„ Parallel Ausgabe/Paralleler Drucker “ über den Datenbus die

8 Bit breiten Daten parallel ausgetaktet.

busy-out : „ Entgegengesetztes “ Signal zu busy-in.

Mit diesem Steuersignal teilt der BASIC-Tiger der Datenquelle mit, ob er

bereit ist, mit Hilfe des Device-Treibers PIN1.TDD: „ Paralleler Eingang “,

parallel Daten zu empfangen.

strobe-in : „ Entgegengesetztes “ Signal zu strobe-out.

Über diese Leitung teilt die Datenquelle dem BASIC-Tiger mit, ob die mit

Hilfe des Device-Treibers PIN1.TDD: „ Paralleler Eingang “ empfangenen

8 Bits gültig sind.

Zu beachten ist hier noch das all diese Steuersignale automatisch von den entsprechenden Device-Treibern des Tiger-Basics oder von den einzelnen Tiger-Basic-I/O-Befehlen verwaltet, d.h. gesetzt und zurückgesetzt werden. Wie bei einem „ richtigen “ offenen Mikrocontroller braucht sich der Programmierer hierum nicht zu kümmern, er muss lediglich angeben welche Nutzdaten wohin geschrieben bzw. von woher gelesen werden sollen.

2.3 Das erweiterte I/O-System des BASIC-Tigers (ePorts)

Digitale I/O-Ports sind ein absolutes Muß für einen vernünftigen Mikrocontroller bzw. für ein leistungsfähiges Mikrocontroller-System, das ja vorzugsweise im Bereich der Steuerung, Regelung und Überwachung eingesetzt wird. Nun ist der BASIC-Tiger von Hause aus ja recht „ mager “ mit solchen Ressourcen ausgestattet und weit mehr als die Hälfte der verfügbaren I/O-Ports gehen dann noch für die Nachbildung von Steuer- und Datenbus verloren. Im Rahmen der Dipl.-Arbeit werden auch mehr I/O-Pins benötigt als der BASIC-Tiger zu Verfügung stellt. Deshalb wird hier noch kurz das erweiterte I/O-System (ePorts) vorgestellt. Die Grundlage für die ePorts sind getrennt aufgebaute Ein- und Ausgabeports, die immer 8 Bit breit sind. Die Daten, die nun ausgegeben werden sollen bzw. die Daten, die eingelesen werden sollen, müssen vom BASIC-Tiger zu den Ausgangsbausteinen bzw. von den Eingangsbausteinen zum BASIC-Tiger gelangen. Für diesen bidirektionalen Datentransport wird der ( nachgebildete ) Datenbus in Form des BASIC-Tiger-Port P6 benutzt. Im nächsten Schritt stellt sich natürlich die sehr kritische Frage :

Woher weiß nun z.B. der Ausgangsbaustein Nr.1 , daß er die Nutzdaten ausgeben soll und nicht etwa der Baustein Nr. 3 , denn alle Ausgabebausteine sind ja parallel am Datenbus angeschlossen ?. Oder : Woher weiß der Eingangsbaustein Nr. 7 , daß er seine erfaßten Nutzdaten auf den Datenbus legen soll und nicht etwa der Eingangsbaustein Nr. 3 , denn auch alle Eingangsbausteine sind ja ebenfalls parallel am Datenbus angeschlossen?. Man muß jetzt zwingend eine geeignete individuelle Adressierung für jeden einzelnen Baustein realisieren, so daß eindeutig klar ist, welcher Baustein gerade angesprochen werden soll. Zur Erzeugung dieser notwendigen Bausteinadressierungs- bzw. -auswahlsignale wird beim BASIC-Tiger-Konzept ein sogenanntes Adressierungsbyte oder Adreßbyte verwendet. Mit einem Byte kann man ja bekanntlich 256 verschiedene Zahlen oder Auswahl- Signale darstellen bzw. erzeugen. Wenn man zur Adreßbildung ein Byte benutzt, kann man bis zu 256 verschiedene Adressen bilden, also bis zu 256 Ports konfliktfrei adressieren. Für BASIC-Tiger-Module interne Port-Aufgaben werden nun von diesen 256 Erweiterungsadressen 16 Stück benötigt, die somit für den Anwender wegfallen. Mit anderen Worten : Dem Anwender stehen beim ePort-Konzept 240 Erweiterungsadressen für den Anschluß von 8 Bit breiten Ein- oder Ausgangsportbausteinen zur Verfügung. Insgesamt beträgt also der maximale ePort-Umfang 240*8= 1920 digitale I/O-Pins, wobei eine getrennte Aufteilung in Ein- und Ausgangsports stattfindet.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3 : Das Adressierungsschema des ePort-Konzepts

An dieser Stelle setzt nun normalerweise eine mehr oder weniger starke Verwirrung ein, weil man hier auf einmal mit zwei Adreßsystemen klarkommen muß: dem logischen und dem physikalischen Adreßraum.

2.3.1 Die logischen Adressen

Die logischen Adressen sind nun die Adressen mit denen man real in Tiger-Basic- Anwendungsprogrammen arbeitet. Man erkennt hier deutlich der Adreßbereich von 00h bis 0fh ist tabu. Der Zugriff auf die erweiterten Ein- und Ausgänge des ePort-Systems erfolgt genauso, d.h. mit den gleichen In-Out-Befehlen wie der Zugriff auf die „ normalen “ internen Ports eines BASIC-Tiger-Modul. Zu beachten ist lediglich, daß der logische Adreßraum der ePort-Portadressen von 10h-ffh läuft. Das BASIC-Tiger-Modul gibt also zunächst diese logische Adresse für die externen ePorts auf den Datenbus aus, anschließend ist nun vom Anwender noch eine externe Schaltung zu entwickeln und aufzubauen, die folgende Aufgaben erfüllt :

- Zwischenspeicherung der Adresse und
- Dekodierung der Adresse

Beide Aufgaben sind für die Dipl.-Arbeit nicht nötig, da es fertige I/O-Bausteine von der Firma Wilke gibt.

2.3.2 Die physikalischen Adressen

Unter den physikalischen Adressen versteht man nun die „ echten hardwaremäßig verdrahteten “ Adressen der externen ePort-Bausteine, so wie sie durch die Dekodierschaltung unveränderbar vorgegeben werden. Diese physikalischen Adressen sind also von der jeweiligen, vom Anwender individuell aufgebauten Dekodierschaltung abhängig. So kann z.B. der eine Fall vorliegen, daß der erste externe ePort-Baustein hardwaremäßig die Adresse 00h oder in einem anderen Fall die Adresse 47h besitzt, er also eindeutig immer nur unter einer bestimmten Adresse ansprechbar ist.

Die spezielle Anwenderanforderung könnte daher zum Beispiel lauten : „ Meine externe Dekodierschaltung für die ePorts ist so aufgebaut, daß die echten physikalischen, hardwaremäßig verdrahteten Adressen der Portbausteine im Bereich von 00h bis 30h liegen “ , d.h. der erste Portbaustein ist unter der Adresse 00h, der zweite unter 01h, der dritte unter 02h, usw. ansprechbar. Dadurch ergibt sich jetzt aber eine Diskrepanz zwischen den verschiedenen Adressen :

- im Tiger-Basic-Programm werden immer nur logische Adressen verwendet, die ab 10h beginnen, d.h. der erste externe ePort-Baustein hat in einem Tiger-Basic- Programm immer die logische Adresse 10h.
- der physikalische Adreßraum der ePorts beginnt aber aufgrund der aufgebauten Dekodierschaltung bei 00h, d.h. der erste externe ePort-Baustein hat hardwaremäßig immer die Adresse 00h.

Gibt das BASIC-Tiger-Modul nun einfach die logische Adresse 10h aus, so wird nicht der erste ePort-Baustein adressiert, sondern der 17. Baustein. Um dieses Problem zu lösen, kann man im BASIC-Tiger-Modul eine Adreßumsetzung Programmieren : durch die Compiler-Anweisung user_eport kann man den BASIC-Tiger bei der Abarbeitung des Programms folgendes mitteilen : Immer dann, wenn ein Port-Befehl ( in oder out ) mit einer externen ePort-Adresse ( also mit einer logischen Adressen Adresse > 10h ) zu bearbeiten ist, ziehe ( das ist nicht ganz richtig später mehr ) ich von der logischen Portadresse einen festen Wert ab ( Offset-Wert ) und gebe dann das Ergebnis als neue Adresse ( jetzt identisch mit der phy. Adresse ) über den Datenbus zur externen Dekodierschaltung aus. Man programmiert also das BASIC-Tiger-interne physikalische Offsetregister physoffs mit dem Anfangswert 10h : user_eport physoffs, 10h. Aber ganz so einfach ist das an dieser Stelle leider nicht. Aufgrund des vorhandenen Device-Treiber muss man an dieser Stelle eine neg. Zahl addieren. Die Zahl 10h negative betrachtet entspricht f0h. Somit heißt der Befehl jetzt :

user_eport physoffs, 0f0H

2.4 Ausgangsbausteine und Eingangsbausteine

Ausgangsbausteine müssen anders behandelt werden als Eingangsbausteine. Werden Daten ausgegeben, so benötigen die Output-Portbausteine noch ein Ausgabe-Signal. Werden dagegen Daten eingelesen, so benötigen die Input-Portbausteine noch ein Einlese-Signal. Diese Tatsache macht sich nun ebenfalls in der Adreßbereichsaufteilung der logischen Adressen bemerkbar. Es gibt einen bestimmten Bereich für die Adressen der Output- Portbausteine und einen bestimmten Adreßbereich für die Adressen der Input-Portbausteine

Und hierbei gilt :

1. Unmittelbar nach der letzten logischen Adresse für die BASIC-Tiger-internen Ports ( also ab der Adresse 10h ) beginnt der Adreßbereich für die Output-Portbausteine
2. An den Output-Port-Adreßbereich schließt sich unmittelbar der Adreßbereich der externen Input-Portbausteine an.
3. Eine unterschiedliche Mischung der Adressen beider Porttypen ist nicht möglich
4. Die Grenze zwischen beiden Adreßbereichen ist allerdings frei einstellbar, so daß Individuelle Anpassungen möglich sind.

Die Einstellung der logischen Grenzadresse zwischen Output- und Input-Adreßbereich geschieht mit Hilfe der Compiler-Anweisung : user_eport lastladr,zahl

2.5 Das Tiger – Basic – Device – Konzept

Egal wie komfortabel ein Mikrocontroller auch ausgestattet ist, irgendwann kommt man zwangsläufig immer an den Punkt, wo Hardware-Erweiterungen des Gesamtsystems notwendig werden, z.B. Ergänzungen um :

- Eine Echtzeituhr, damit erfaßte Meßwerte mit Zeit- und Datumsinformationen versehen werden können.
- Einen Display-Controller, der ein LC-Display ansteuert.
- Einen hochauflösenden A/D bzw. D/A - Umsetzer , der Meßwerte mit einer Auflösung von 12 und mehr Bits umsetzt, anstatt mit den 10 Bits, die der ON-Chip-A/D-Umsetzer liefert, bzw. 8 Bit der D/A-Umsetzer liefert.
- Eine kleine Tastatur zur Vor-Ort-Bedienung des Systems.

Nun treten aber zwei grundsätzliche Probleme beim Anschluß zusätzlicher Peripherie-Komponenten auf.

Problembereich 1: Der hardwaremäßige Anschluß der externen Peripherie-Einheiten

an den BASIC-Tiger.

I/O-Port-Leitungen Daten-, Adreß-und Steuerbus-Leitungen

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 4 : Der Harware-Anschluß externer Peripherie-Einheiten

1. Es muß ein Datenbus existieren oder zumindest mittels I/O-Portleitungen nachgebildet werden. Über ihn erfolgt der Transport der reinen Nutzdaten zum bzw. vom BASIC-Tiger
2. Über den ebenfalls notwendigen Adreßbus erfolgt die korrekte Adressierung der internen Arbeitsregister der externen Peripherie-Einheiten. Der Adreßbus wird entweder direkt vom Mikrocontroller zur Verfügung gestellt oder er muß ( aufwendiger ) durch I/O-Portleitungen nachgebildet werden.
3. Die Leitungen des Steuerbusses sorgen für einen korrekten Ablauf des Datentransfers zwischen den externen Peripherie-Einheiten und dem BASIC-Tiger

Problembereich 2 : Die Bereitstellung der notwendigen Steuer- und Betriebssoftware

für die externen Peripherie-Einheiten

Hierbei geht es nun um drei wichtige Punkte :

1. Ansteuerung der externen Peripherie-Einheiten mit den korrekten Adressen. Jede der unterschiedlichen Peripherie-Einheiten hat einen eigenen, eindeutigen Teiladreßbereich innerhalb des Gesamtadreßbereich des Systems, d.h. nur unter Verwendung bestimmter Adressen kann die jeweilige Einheit exakt angesprochenwerden. Diese Adreßverteilung wird durch den Hardwareaufbau ( meistens ) fest und unveränderbar vorgegeben und darauf muß dann die Ansteuersoftware abgestimmt werden.
2. Die einzelnen Ansteuersignale für die externe Peripherie-Einheit müssen in der zeitlich korrekten Reihenfolge an den Peripherie-Baustein angelegt werden, sonst reagiert dieser gar nicht oder falsch. Ebenfalls müssen eventuelle Steuersignale, die von der Peripherie-Einheit zum BASIC-Tiger übermittelt werden, von der Software korrekt ausgewertet und interpretiert werden.
3. Zum komfortablen und benutzerfreundlichen Arbeiten mit den externen Peripherie-Einheiten gehören abschließend noch Sammlungen einfach zu handhabender Software-Routinen ( Device-Treiber ), sogenannte Treiber-Bibliotheken, welche ich in meiner Dipl.-Arbeit eingesetzt habe. Etwas vergleichbares gibt es in der PC-Welt, z.B. unter der

Betriebssystemoberfläche „ Windows “ : dort existieren für die verschiedenen PC-Zusatzgeräte ( Drucker, serielle Schnittstellen, Bildschirm, usw. ) eigene Device-Treiber, die von jedem Windows-Programm aus aufgerufen werden können. So lassen sich z.B. die Einstellungen des Devices „ Drucker “ über den entsprechenden Device-Treiber „ Druckereinstellungen “ von einem Textverarbeitungsprogramm oder auch von einem Zeichenprogramm aus jederzeit einfach festlegen bzw. ändern.

Die Device-Treiber des Tiger-Basics sind für ganz bestimmte Hardware-Schaltungen bzw. Hardware-Ankopplungen der externen Peripherie-Einheiten an den BASIC-Tiger zugeschnitten. Mit anderen Worten : wenn man den Tiger-Basic-Device-Treiber für das Grafik-Display verwenden möchte, so muß dieses Grafik-Display genauso angeschlossen werden, wie die Firma Wilke dieses vorgibt. Man kann natürlich jederzeit das Grafik-Display anders anschließen, dann ist aber der Grafik-Display-Device-Treiber nicht mehr benutzbar und man muß sich einen eigenen Device-Treiber schreiben. Hier das Anschlußbild des Grafik-Display an den BASIC-Tigers in der Dipl.-Arbeit.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 5 : Der zwingend notwendige Anschluß eines Grafik-Displays an den BASIC-Tiger

2.6 Multitasking

Multitasking erlaubt das quasi gleichzeitige Abarbeiten von verschiedenen Programmen auf einem Computer. Dabei werden den einzelnen Programmen Zeitzyklen zugeteilt, in denen jeweils ein oder mehrere Programmschritte abgearbeitet werden, bevor das nächste Programm aufgerufen wird. d.h. die Programme werden tatsächlich abwechselnd abgearbeitet, so daß keines längere Zeit mit der Verarbeitung warten muß. Nötig ist dazu eine spezielle Software, die den einzelnen Programmen übergeordnet ist und den Zeitablauf steuert. Je nach Wahl können einzelnen Programmen Prioritäten zugeteilt werden. Beim Multitasking-Konzept werden nun einzelne Programmteile als sogenannte Tasks geschrieben.

Zum Beispiel eine Task für :

- Tastatur
- Grafikdisplay
- Analoger Eingang
- I/O-Baustein
- usw.

Der BASIC-Tiger arbeitet nun diese, im Prinzip voneinander unabhängigen Tasks nacheinander, nach einem bestimmten Schema, ab.

Das besondere hierbei ist jedoch :

Die einzelnen Tasks werden nicht immer komplett abgearbeitet, sondern es wird nach einem bestimmten Zeitraster zwischen den Tasks hin- und hergeschaltet. Hierbei erhalten wichtige Tasks mehr Abarbeitungszeit zur Verfügung gestellt als weniger wichtige Tasks. Natürlich merkt sich der BASIC-Tiger intern, wo er die jeweilige Task beim Umschalten unterbrochen hat und macht dann bei der nächsten Zeitzuteilung für diese Task dort weiter.

Hier ein Beispiel :

Abarbeitungszeit für jede Task

- Task Display 100 ms
- Task Ana_eingang 20 ms
- Task Tastatur 50 ms
- Task I/O-Baustein 20 ms

Der Ablauf der Abarbeitung ist nun wie folgt :

Als erstes wird die Task Display aufgerufen und für 100 ms lang bearbeitet. Danach wird, egal wie weit die Task Dispaly abgearbeitet worden ist, zur Task Ana_eingang umgeschaltet. Gleichzeitig merkt sich der BASIC-Tiger aber, wo er bei der Task Display aufgehört hat. Nach weiteren 20 ms wird umgeschaltet zur Task Tastatur, der BASIC-Tiger merkt sich die Aussprungstelle aus der Task Ana_eingang, usw. Nach insgesamt 190 ms sind alle Tasks einmal bearbeitet worden und der Zyklus beginnt wieder von vorne.

An dieser einfachen Darstellung lassen sich eine Menge wichtiger Zusammenhänge erkennen :

1. Es muß eine zentrale übergeordnete Überwachungsinstanz existieren, die konsequent die Umschaltung zwischen den Tasks vornimmt. Diesem „ Supervisor-Programm “ muß lediglich mitgeteilt werden, wieviel Bearbeitungszeit jede einzelne Task bekommt. Dieses Umschaltprogramm ist fester Bestandteil des BASIC-Tiger-Betriebssytems und der BASIC-Tiger-Programmierer bekommt davon gar nichts zu sehen. Er programmiert lediglich die Zeitscheiben für jede Task.

2. Beim Umschalten zwischen den Tasks darf natürlich kein Befehl aus einer Task verloren gehen und es müssen eine ganze Menge an Informationen zwischengespeichert werden :

- Abspeichern der Programmstelle, an der beim nächsten Aufruf der Task im Programm weiter fortgefahren werden muß.
- Sicherung aller aktuellen und wichtigen Datenbestände der gerade beendeten Task, damit die jetzt neu gestartete Task keine relevanten Daten der alten Task überschreibt.

Diese Sicherungsabläufe sind äußerst komplex ( zumal der BASIC-Tiger bis zu 32 verschiedene Tasks verwalten kann ) und nur von Programmierprofis korrekt zu handhaben.

3. Über die gewählten Zuteilungen der Bearbeitungszeiten für jede Task kann man nun sehr einfach eine Priorisierung der Tasks durchführen :

- Wichtige Tasks bekommen viel Zeit zugeordnet.
- Mittel-wichtige Tasks erhalten weniger Zeit zugeordnet.
- Gering-wichtige Tasks oder Tasks, bei denen man schon vorher weiß, daß sie nur wenig Zeit benötigen, erhalten eine kleinere Zeitzuteilung.

4. Weitere Feinheiten vervollkommnen das Multitasking-Konzept:

Was passiert z.B., wenn keine Taste auf der Tastatur gedrückt worden ist ?. Die Task Tastatur braucht hier also gar nicht aufgerufen zu werden, nur das weiß das zentrale Zeitzuteilungssystem natürlich nicht. Hier gibt es nun im Tiger-Basic einen Befehl, durch den eine Task vorzeitig beendet werden kann. Es entstehen somit keine unnötigen Wartezeiten und die nächste Task kann sofort gestartet werden.

5. Nun ereignet sich z.B. im System ein Zustand größter Gefahr : ein Prozeß droht außer Kontrolle zu geraten und muß schnellstmöglich in einen sicheren Zustand gebracht werden. Für das BASIC-Tiger-System heißt das : alle „ unwichtigen “ Tasks müssen rigoros beendet werden und nur die wichtigste Tasks laufen weiter durch. Mit anderen Worten : jede Task kann eine andere Task ausschalten oder erneut starten.

6. Weiterhin kann jede Task die Priorität einer anderen Task herauf- oder herabsetzen.

3 MAX038

Der MAX038 ist ein Funktionsgeneratorbaustein mit sehr großem Frequenzbereich, der verschiedene Ausgangssignalformen wie Sinus mit geringem Klirrfaktor, Dreieck, Sägezahn oder Rechteck über einen Frequenzbereich von weniger als 1Hz bis 20 MHz mit nur wenigen externen Komponenten erzeugen kann. Frequenz und Tastverhältnis können unabhängig voneinander durch Strom, Spannung oder über einen Widerstand eingestellt werden. Die gewünschte Ausgangssignalform wird durch eine digitale Kodierung von 2 Bit an den Eingängen A0 und A1 ausgewählt. Die Versorgungsspannungen des MAX038 sind +/- 5V. Der Oszillator arbeitet durch das Laden und Entladen des externen Kondensators[Abbildung in dieser Leseprobe nicht enthalten] mit konstanten Strömen und erzeugt. Gleichzeitig eine Dreiecksspannung und eine Rechteckspannung .

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 6 : Blockschaltbild des MAX038

Die Lade- und Entladeströme werden durch den Strom in den Anschluß Iin gesteuert. Der Strom in Iin kann von 2µA bis 750µA variiert werden, so daß mit jedem Wert von[Abbildung in dieser Leseprobe nicht enthalten] die Frequenz über einen Bereich von mehr als zwei Dekaden geändert werden kann. Durch Anlegen einer Spannung von bis zu -/+ 2,4V am Anschluß FADJ kann die Frequenz um -/+ 70 % geändert werden. Dies erleichtert die Feinabstimmung der Frequenz. Das Tastverhältnis kann über einen Bereich von 10 % bis 90 % durch Anlegen einer Spannung von bis zu -/+ 2,3 V am Anschluß DADJ eingestellt werden.

Diese Spannung ändert das Verhältnis der Lade- und Entladeströme für[Abbildung in dieser Leseprobe nicht enthalten] bei nahezu konstanter Frequenz. Eine stabile Referenspannungsquelle REF mit einer Ausgangsspannung von 2,5 V erlaubt die einfache Einstellung von Iin, FADJ und DADJ entweder mit festen Widerstandswerten oder mit Poteniometer. Die Frequenz des Ausgangssignals ist umgekehrt proportional zum Wert des externen Kondensator[Abbildung in dieser Leseprobe nicht enthalten] . kann so gewählt werden, daß Ausgangsfrequenzen bis 20 MHz erzeugt werden können. Eine spezielle Schaltung erzeugt aus der Dreieckausgangsspannung des Oszillators eine sinusförmige Spannung mit niedrigem Klirrfaktor. Das Dreiecksignal, das Rechtecksignal und das Sinussignal liegen am Eingang eines Multiplexers. Mit den zwei Adreßleitungen A0 und A1 kann eine dieser Spannungsformen ausgewählt werden.

Der Ausgangsverstärker erzeugt unabhängig von der Signalform und der Frequenz eine konstante Ausgangsamplitude von[Abbildung in dieser Leseprobe nicht enthalten] . Das Dreieckssignal wird auch an den Eingang eines Komperators gelegt, der eine Rechteckspannung SYNC zur Synchronisation anderer Oszillatoren erzeugt. Das MAX038 kann Sinus-, Rechteck- oder Dreieckssignale generieren. Über die TTL / CMOS – kompatiblen Adreßeingänge A0 und A1 wird die entsprechende Signalform nach der folgenden Tabelle ausgewählt :

Abbildung in dieser Leseprobe nicht enthalten

Das Umschalten von einer Signalform zur anderen kann ohne Beeinträchtigung der Phase des Ausgangs zu jedem Zeitpunkt erfolgen. Die Umschaltung erfolgt innerhalb von 0,3 µs. Dabei können kleine Überschwinger mit einer Dauer von 0,5 µs auf dem Ausgangssignal auftreten.

3.1 Zeit- und Frequenzeinstellungen

Die Frequenz des Ausgangssignals wird bestimmt durch den in den Eingang Iin eingespeisten Strom, die Kapazität am Anschluß COSC und die Spannung am Anschluß FADJ . Wenn der Anschluß FADJ auf 0V liegt, wird die Frequenz der Grundwelle des Ausgangssignals durch folgende zugeschnittene Größengleichung bestimmt.

Abbildung in dieser Leseprobe nicht enthalten

Gleichung 1

Entsprechend berechnet sich die Periode zu :

Abbildung in dieser Leseprobe nicht enthalten

[ ] µs = [ ] pF / [ Iin ] µA

Gleichung 2

wobei die in diesen Gleichungen verwendeten Größen die folgende Bedeutung haben :

Iin : Eingangsstrom in den Anschluß Iin

[Abbildung in dieser Leseprobe nicht enthalten]: Kapazität zwischen dem Anschluß COSC und GND

Optimale Eigenschaften werden mit Iin-Werten zwischen 10µA und 400 µA erzielt, obwohl sich bei Werten zwischen 2 µA und 750 µA keine wesentliche Verschlechterung der Linearität zeigt. Stromwerte außerhalb dieses Bereiches sind nicht zu empfehlen. Der Kapazitätsbereich[Abbildung in dieser Leseprobe nicht enthalten] von liegt zwischen 20 pF und mehr als 100 µF. Es sollte jedoch darauf geachtet werden, die Streukapazität durch Verwendung kurzer Anschlüsse so gering wie möglich zu halten. Dazu wird empfohlen, den Anschluß COSC und die zu diesem führende Leiterbahn mit einer „ Massefläche “ abzuschirmen, um die Einkopplung externer Signale soweit wie möglich zu vermeiden. Signale mit Ausgangsfrequenzen von mehr als 20 MHz sind möglich, jedoch steigen die Signalverzerrungen dabei an.

Der Anschluß Iin ist der invertierende Eingang eines invertierenden Operationsverstärkers mit geschlossener Rückkopplung und liegt deshalb auf „ virtuellem Bezugspotential “ mit einer Offsetspannung von weniger als -/+ 2 mV. Deshalb kann Iin sowohl mit einer Stromquelle als auch mit einer Spannungsquelle in Serienschaltung mit einem Widerstand ( Rin ) gespeist werden. Wenn eine Spannungsquelle in Serienschaltung mit einem Widerstand verwendet wird, lautet die zugeschnittene Größengleichung :

Abbildung in dieser Leseprobe nicht enthalten

Gleichung 3

Wenn die Frequenz des Ausgangssignals des MAX038 durch eine Spannungsquelle ( Uin ) in Serienschaltung mit einem festen Widerstand gesteuert wird, ist diese eine lineare Funktion der Spannung Uin, wie aus der Gleichung 3 leicht zu entnehmen ist. Der Anschluß Iin kann als „ Summierungspunkt “ zur Addition oder Subtraktion von Strömen aus verschiedenen Quellen verwendet werden. Damit ist es möglich, daß die Frequenz des Ausgangssignals eine Funktion mehrerer Variablen ist. Nähert sich die Spannung Uin dem Bezugspotential ( 0V ), steigt der Iin – Fehler wegen der Offsetspannung von -/+ 2mV am Anschluß Iin. Nach dem Einschalten der Versorgungsspannung kann die Frequenz des Ausgangssignals für eine Dauer von 10s um 1% von ihrem eingestellten Wert abweichen.

3.1.1 Eingang FADJ

Die Frequenz des Ausgangssignals kann auch durch eine Spannungsänderung am Eingang FADJ erfolgen. Dieser Eingang ist prinzipiell für den „ Feinabgleich “ der Frequenz vorgesehen. Wenn die „ Nominalfrequenz “ durch die Einstellung von Iin festgelegt ist, kann diese durch eine Spannung von –2,4V bis +2,4V an FADJ mit einem Faktor von 1,7 bis 0,3 gegenüber dem Wert bei FADJ = 0V variiert werden. Spannungen an FADJ außerhalb des Bereiches von -/+ 2,4V können zu Instabilitäten führen.

Die an FADJ benötigte Spannung zur Änderung der Frequenz um einen Prozentsatz Dx ( % ) wird durch folgende Beziehung bestimmt :

Abbildung in dieser Leseprobe nicht enthalten

Gleichung 4

Wobei , die Spannung am Anschluß FADJ zwischen –2,4V und +2,4V liegen[Abbildung in dieser Leseprobe nicht enthalten] muß.Während Iin direkt proportional zur Grundfrequenz F0 ist, besteht zwischen[Abbildung in dieser Leseprobe nicht enthalten] und der prozentualen Abweichung Dx eine lineare Beziehung. kann ein bipolares Signal entsprechend einer positiven oder negativen Änderung sein.

Die am Anschluß FADJ notwendige Spannung berechnet sich zu :

Abbildung in dieser Leseprobe nicht enthalten

Gleichung 5

wobei die in der Gleichung 5 verwendeten Größen folgende Bedeutung haben :

Fx : Frequenz des Ausgangssignals

F0 : Frequenz des Ausgangssignals bei[Abbildung in dieser Leseprobe nicht enthalten] = 0V

Daraus folgt für die Berechnung der Periodendauer :

Abbildung in dieser Leseprobe nicht enthalten

Gleichung 6

Wobei die Periode des Ausgangssignals bei 0 V und die Periode der Grundfrequenz bei = 0V ist.

Bei bekannten kann die Frequenz Fx entsprechend berechnet werden :

Abbildung in dieser Leseprobe nicht enthalten

Gleichung 7

Für folgt entsprechend :

Abbildung in dieser Leseprobe nicht enthalten

Gleichung 8

Am Anschluß FADJ befindet sich eine „ Stromsenke “ von –250µA nach U-, die von einer Spannungsquelle gespeist wird. Normalerweise geschieht dies durch den Ausgang eines Operationsverstärker, so daß der Temperaturkoeffizient der Stromsenke unerheblich wird. Zur manuellen Einstellung der Frequenzabweichung kann ein variabler Widerstand zur Einstellung von[Abbildung in dieser Leseprobe nicht enthalten] verwendet werden. Es ist jedoch zu beachten, daß in diesem Fall der Temperaturkoeffizient der Stromsenke nicht mehr zu vernachlässigen ist.

3.1.1.1 Deaktivierung von FADJ

Der interne Schaltungsteil für FADJ bedingt einen kleinen Temperaturkoeffizienten der Ausgangsfrequenz. In kritischen Anwendungen kann dieser Schaltungsteil durch Verbindung von FADJ über einen Widerstand von 12 kOhm mit GND deaktiviert werden. Die Stromsenke erzeugt einen Spannungsabfall von –3V über den Widerstand, wodurch zwei Effekte bewirkt werden : Der erste Effekt ist, daß die FADJ – Schaltung in ihrem linearen Bereich bleibt, sich aber vom Oszillatorteil trennt. Dadurch ergibt sich eine verbesserte Temperaturstabilität. Der zweite Effekt ist eine Verdopplung der Oszillatorfrequenz. Wenn FADJ in dieser Weise deaktiviert wird, müssen die Gleichung 1 - 3 und 5 - 8 im Vorhergehenden und 11 – 14 im Folgenden durch Verdopplung von F0 oder Halbierung von entsprechend korrigiert werden. Obwohl bei dieser Methode die Frequenz des Ausgangssignals verdoppelt wird, erfolgt keine Verdopplung der oberen Grenzfrequenz.

[...]

Details

Seiten
97
Jahr
1999
ISBN (eBook)
9783638235211
ISBN (Buch)
9783640861705
Dateigröße
1.2 MB
Sprache
Deutsch
Katalognummer
v19379
Institution / Hochschule
Fachhochschule Aachen
Note
gut
Schlagworte
Entwicklung Aufbau Mikrocontroller Funktionsgenerators

Autor

Teilen

Zurück

Titel: Entwicklung und Aufbau eines durch einen  Mikrocontroller gesteuertern Funktionsgenerators