Entwicklung und Aufbau eines durch einen Mikrocontroller - TopicsExpress



          

Entwicklung und Aufbau eines durch einen Mikrocontroller gesteuerten Funktionsgenerators 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 Funktionsgenertorbaustein 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. BASIC-Tiger Seite 2 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. BASIC-Tiger Seite 3 2.1 Blockschaltbild des BASIC-Tigers 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. spannungsausfallgeschützten Abspeicherung wichtiger Daten. RTC : Versorgt das System mit Zeit- und Datumsinformationen. PWM : Wird als D/A-Umsetzer benutzt. BASIC-Tiger Seite 4 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 • und der Adreßbus • 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 • 18 Bits zur Realisierung von Daten- und Steuerbus -------- 25 Bitleitungen BASIC-Tiger Seite 5 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. BASIC-Tiger Seite 6 Abbildung 2 : Das Bussystem des BASIC-Tigers BASIC-Tiger Seite 7 D0-D7 : Diese 8 digitalen I/O-Pins bilden den bidirektionalen Datenbus nach. Aclk : Einlatch-Signal um Adressen für weitere zusätzliche, externe Dclk : Mit diesem Signal werden auszugebende Daten vom Datenbus aus in digitale, extern angeschlossene Ausgabebausteine eingeschrieben. INE : Damit werden die digitalen, extern angeschlossenen Eingabebausteine 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 : strobe-out : Mit diesem Signal werden durch den Device-Treiber PRN1.TDD : BASIC-Tiger Seite 8 busy-out : „ Entgegengesetztes “ Signal zu busy-in. strobe-in : „ Entgegengesetztes “ Signal zu strobe-out. 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 : BASIC-Tiger Seite 9 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. BASIC-Tiger Seite 10 Abbildung 3 : Das Adressierungsschema des ePort-Konzepts BASIC-Tiger Seite 11 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 BASIC-Tiger Seite 12 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 BASIC-Tiger Seite 13 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. BASIC-Tiger Seite 14 • 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 Abbildung 4 : Der Harware-Anschluß externer Peripherie-Einheiten BASIC-Tiger Seite 15 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.
Posted on: Sun, 18 Aug 2013 14:23:56 +0000

Trending Topics



Recently Viewed Topics




© 2015