V2.2 Serieller AD Wandler - public.fh
Transcrição
V2.2 Serieller AD Wandler - public.fh
V2.2 Serieller AD Wandler 1 Theorie Ein Verfahren zum Umwandeln eines analogen Spannungswertes in eine digitale Zahl ist das Wägeverfahren (eng. Successive Approximation). Bei diesem Verfahren fallen die Ergebnisse während der Wandlung als serielle Daten an und stehen am Ende als paralleles Datenwort zur Verfügung. In dem Laborversuch wird an einem PC mittels eines kleinen C-Programms ein serieller 10bitAD-Wandler aktiviert, der nach diesem Wägeverfahren wandelt. Die nacheinander eintreffenden Bitwerte (MSB zuerst) werden eingelesen, daraus das Datenwort gebildet und gespeichert. Mit dem Aufbau werden dann Messreihen für eine Gleichspannung und zwei Wechselspannungen unterschiedlicher Frequenz aufgezeichnet. Für die Software ist für die Vorbereitung und den Software-Test am Laborplatz ein Turbo-C 3.1 für DOS des RZ vorgesehen. 1.1 Analog / Digital-Schnittstellen Die Verbindung der analogen Welt zu digitalen RechnerUa (z) systemen läuft über Schnittstellen, die analoge Spannungen oder Ströme in einen Zahlenwert umwandeln. Dabei wird der analoge Messbereich in eine Anzahl N Schritte aufgeteilt, die die neue digitale Kennlinie bilden. Aus dem stetigen linearen „analogen“ Verlauf wird eine Treppenfunktion, bei der es nur die Stufenwerte ohne Zwischengrößen gibt. ULSB Die Anzahl der Schritte N beziehungsweise die daraus Ue entstehende Schritthöhe bestimmt die maximal erreichULSB bare Genauigkeit der Umwandlung, denn Werte 1 zwischen den Stufen werden dem nächsten größeren oder Ue-Ua(z) + /2 ULSB kleineren Wert zugeschlagen. Die Differenz zwischen Ue der stetigen Eingangskennlinie und der Treppenfunktion als Ausgangsfunktion ist der Quantisierungsfehler, eine - 1/2 ULSB Sägezahn-förmige Fehlerfunktion mit der Höhe von +/Abb. 1 Kennlinie der Digitalisierung ½ Treppenstufe. Übliche Auflösungen (Stufenhöhen) für AD-Wandler, bezogen auf den Messbereich (MB) sind Binärstellen Schritte 8 bit = 256 Schritte, 10 bit = 1024 Schritte, 12 bit = 4096 Schritte, 14 bit = 16384 Schritte mtlab2v207.doc / 10.11.2005 23:10 Auflösung 3906 977 244 61 10-6 10-6 10-6 10-6 /MB /MB /MB /MB Seite 1/9 Serieller AD Wandler Eine Erhöhung der Stellenzahl bei der Wandlung (höhere Auflösung) erhöht nicht immer merklich die Genauigkeit des Gesamtsystems, solange daneben die Unsicherheiten von angeschlossenen Sensoren, Verstärkern und Referenzquellen merklich zum Gesamtfehler beitragen. Für viele Mess- und Regelungsaufgaben werden heute 8 bit- und 10 bit-Wandler eingesetzt. 1.2 Wandlungsmethode: Wägeverfahren Bei der Wandlung des analogen Spannungswertes in eine Binärzahl wird hier ähnlich vorgegangen wie bei einer Balkenwaage und einem Gewichtssatz - die Eingangsspannung wird mit intern erzeugen Teilen einer Referenzspannung UREF (1/2,1/4,1/8…⋅UREF) verglichen, entsprechend der Entscheidung das Stellenbit gesetzt („0“ oder „1“) und danach werden weitere Anteile hinzugefügt. Zuerst wird die Eingangsspannung mit der halben Referenzspannung verglichen (512/1024). Ist die Spannung größer, wird der Anteil ´dringelassen´ (MSB 512= „1“ , MSB: most significant bit,), ist er kleiner, wieder entfernt (MSB 512= „0“). Im nächsten Schritt wird ein Viertel der Referenz (256/1024) dazugetan und wieder verglichen. Ist die Eingangsspanung immer noch größer als die Vergleichsspannung, bleibt der Anteil erhalten, sonst nicht. So wird schrittweise jeweils ein neuer kleinerer Anteil dazugetan (oder nicht), bis alle Stellen benutzt wurden. Je nach Komparator-Entscheidung ist die jeweilige Bitposition dann „0“ oder „1“, die Reihenfolge der Bits ergibt die Binärzahl des Eingangsspannungswertes. Das erste gewandelte Bit gilt für die erste wichtigste U (z) Stelle im Binärwort (MSB), das letzte ist die geringstwertige Stelle (LSB, least significant bit). Für U (zmax) die Wandlung sind so viele Vergleichsschritte notwendig wie das Datenwort Bits aufweist, bei einem Messbereich von 10 bits = 1024 Stufen = 10 Vergleichsoperationen. Ue In der technischen Ausführung gibt es AD-Umsetzer, die den Messwert nach der Wandlung parallel auf so vielen Anschlussbeinen ausgeben wie der Wert z7 z6 z5 z4 z3 z2 z1 z0 Binärstellen hat, so dass der gemessene Wert mit =1=0=0=1=1=1=1 =0 einem Lesevorgang vom Wandlerbaustein in die CPU 1 2 3 4 5 6 7 8 Schritt übernommen werden kann. Ein seriell angeAbb. 2 Ablauf des Wägeverfahrens schlossener Wandler (hier der LTC 1092) hingegen kommt mit wenigen Leitungen aus, muss aber die Bits des Messwertes nacheinander übertragen. Aus einem Befehl „read AD_wert“ mit einem CPUTakt wird eine kleine Programmstruktur, die nacheinander die Bits erkennt. Damit erhöht sich die Programmgröße und der Zeitbedarf für eine Wandlung. 1.3 Abtastung Bei der Umwandlung einer stetigen analogen Spannung in eine Zahlenfolge wird nicht nur der einzelne Augenblickswert in eine abgerundete nächste Zahl umgewandelt, auch der stetige zeitliche Verlauf der Spannung wird durch eine Folge von Punktmessungen ersetzt - die Eingangsspannung wird punktweise abgetastet. Nach dem Abtast-Theorem von Shannon ist ein periodisches Signal dann eindeutig erkennbar, wenn die Abtastung mit mehr als dem 2fachen der höchsten Signal-Frequenz erfolgt. In der Abb. 3Abtastung einer Funktion mtlab2v207.doc / 10.11.2005 23:10 Seite 2 /9 Serieller AD Wandler Praxis muss die Abtastfrequenz erheblich höher sein, um den Zeitverlauf eines veränderlichen Signals praktisch zu erkennen. Zur Vermeidung zusätzlicher Fehler muss die Abtastung mit möglichst gleichen zeitlichen Abständen von Messpunkt zu Messpunkt erfolgen. Dies kann durch ein Timer-Signal des Rechners oder bei einfachen Rechnern durch eine SW-Warteschleife erfolgen. 1.4 Der AD-Wandler Baustein LTC1092 Der verwendete AD-Wandler Baustein ist ein integrierter Schaltkreis im 8pin-Gehäuse. Er wird mit 5,12 Volt als Versorgungs- und Referenzspannung betrieben, d.h. die Schritte des Datenworts sind über einen Spannungsbereich wie die LTC1092 Versorgungsspannung verteilt. Die Steuersignale sind ‚low-aktiv‘, d.h. eine angelegte ‚0‘ gilt als Signal, eine ‚1‘ als Ruhezustand. Als Interface benötigt der Baustein nur 3 digitale Leitungen: PC -> AD-Wandler: CS* PC -> AD-Wandler: CLOCK AD-Wandler -> PC: DOUT Chip Enable invertiert, „low“ aktiviert den Baustein Takt für die Wandlungsoperationen Datenbits des gewandelten Wertes, seriell, MSB first. Abb. 4 Funktionsdiagramm des seriellen AD Wandlers Das Diagramm zeigt die Pulsfolgen zum Übertragen eines Messwertes vom AD-Wandler zum PC. Der Baustein LTC1092 wird mit einem Nullpegel auf der Chip Select*-Leitung aktiviert. Die Wandlung und Übertragung funktioniert für Taktraten von ca. 1 kHz bis ca. 2 MHz und benötigt eine Folge von Clock-Impulsen entsprechend dem oben stehenden Zeit-Diagramm. Jeweils bei oder nach der fallenden Flanke des CLK Signals ändert sich das Dout Signal, es kann stabil zum Zeitpunkt der steigenden Flanke des CLK Signals gelesen werden. Zu Beginn der Auslesung müssen die ersten Clock-Pulse und der erste (leere) Dout-Puls beachtet werden. 1.5 Das Interface auf der PC-Rechner-Seite Ein Rechner mit der Struktur der Hardware eines „IBM-PC“ hat zwei Adressräume - einen Speicherbereich für Daten und Programme von 0..640kByte und oberhalb 1Mbyte und weiter einen Port-Adressbereich von 1..1023, mit dem die Register von Peripheriebausteinen (Modem, Drucker, Keyboard usw.) angesteuert werden können. Innerhalb eines Turbo-C Programms unter DOS werden Lese- und Schreiboperationen im Bereich der Port-Adressen über spezielle PortBefehle wie outp, outport, inp, inport durchgeführt. Die digitale Ansteuerung des LTC1092 erfolgt über Bitmuster an den Pins der ParallelSchnittstelle LPT des PC. Dieser Druckerport eines PC ist so konstruiert, dass er unter einer ersten Port-Adresse (‚LPT‘ +0) ein Byte (=8 bit) ausgeben / schreiben kann, mit einer daneben liegenden Adresse (‚LPT‘ +1) einzelne Datenbits lesen kann. mtlab2v207.doc / 10.11.2005 23:10 Seite 3 /9 Serieller AD Wandler Schreibt man also mit dem Befehl „outport(‚LPT‘ +0, <outbyte>);“ ein Byte auf die Portadresse, so erscheint das Bitmuster an den Ausgangspins des PC. Liest man über „ inport(‚LPT‘ +1, <inbyte>);“ die Eingangspins, erhält man das Bitmuster der angeschlossenen Eingangs-Pins. Entsprechend der nachstehenden Skizze ist verbunden: CS* Chip Select Portbyte Write Stecker Pin 3 (LPT +0) bit 1 CLOCK Data Clock Portbyte Write Stecker Pin 2 (LPT +0) bit 0 Data Ausgang Portbyte Read Stecker Pin 10 (LPT +1) bit 6 DOUT Alle anderen Bits sind unbestimmt oder ohne Wirkung. Es ist sinnvoll, bei der Verarbeitung der eingelesenen Werte durch Maskierung (z.B. <0x40> AND <databyte> ) die nicht signifikanten Bits zu unterdrücken, um das aktive Bit auswerten zu können. Da für die Ausgabe nur 3 verschiedene Datenwörter sinnvoll sind (Chip NOT Select, Chip Select + CLK high, Chip Select + CLK low) ist es sinnvoll, diese Bitmuster als Konstanten im Programmkopf zu definieren. Beim Schreiben auf den Datenport erfolgt die Datenübergabe sofort, so dass möglicherweise Warteschleifen zwischen den Signalwechseln programmiert werden müssen, um brauchbare Pulslängen zu erhalten. Es kann eine Funktion mudelay(Zahl) als SW-Timer (Warteschleife) verwendet werden, ebenso die Turbo-C-Funktion delay(Zahl) in Millisekunden. 1.6 Der Versuchsablauf Zur Aktivierung einer solchen Schnittstelle ist es sinnvoll, schrittweise vorzugehen. Deswegen werden als Vorbereitung des Versuches 3 Versionen des Programms [SW1]...[SW3], jeweils für sich ablauffähig, ausgearbeitet. Alle können auf dem Rahmenprogramm (s.Anhang) aufbauen. In der ersten (kürzesten) Version SW1 aktiviert die Software nur die Schnittstellenpins, indem sie in einem noch erkennbaren (langsamen) Takt die beiden Ausgangsleitungen beschreibt, so dass ein erkennbares Blinken erzeugt wird. Kontroll-LEDs zu den Leitungen CE* und CLK sind vorhanden. mtlab2v207.doc / 10.11.2005 23:10 Seite 4 /9 Serieller AD Wandler Die zweite Variante [SW2] liest den AD-Wandler so aus, dass ein Messwert im Wertbereich zwischen 0 und 1023 richtig eingelesen wird. Damit kann die richtige Folge der CLK Pulse, Lesezeitpunkte für Dout und die Stellenwertigkeit getestet werden. In der dritten Version [SW3] wird der aktive Teil von (2) als z.B. Funktion „get_adwert“ eingebaut, so dass das Auslesen einer Wertefolge über N Messwerte in einer Schleife und das Speichern in einer Datei erfolgen kann (N = 50...500). Um die Auswertung mit MS Excel oder ähnlichen Programmen zu ermöglichen, ist es notwendig, als Datenformat in der Diskettendatei zeilenweises Schreiben von ASCII-Zeichen mit der Folge „<laufende Nummer>; <Binärmesswert>;[CRLF]“ mit einem Semikolon als Trennzeichen zu verwenden, da viele Auswerte-Programme Schwierigkeiten mit dem Einlesen von Fließkommazahlen mit Dezimalpunkt haben. 1.7 Die Programmstruktur Der einzelne Messwert wird in einer Schleife(1) über die 10/11 CLK-Pulse berechnet (MSB first). Zur späteren Anzeige auf dem Schirm und zum Speichern auf Diskette werden die binären Messwerte in ein vorbereitetes Array int indata[maxarray] eingetragen. Zur Anzeige können sie ggfs. in skalierte Float-Werte (1023 => 5,12 Volt) umgerechnet werden. Zur Programmsteuerung sind mehrfach geschachtelte Schleifen erforderlich, in der Version [SW3] eine Schleife(1) zur Erfassung eines Spannungswertes, weiter eine Schleife(2) zum Messen eines Blocks von NN Werten und weiter eine zum wahlweisen mehrfachen Messen von Blöcken. 1.8 Zusatzbefehle Zusätzlich zu dem standardisierten ANSI-C werden hier zwei weitere Erweiterungen verwendet. Die Ansteuerung der Drucker-Schnittstelle erfolgt über die (Borland Turbo-) C Befehle „outport“ und „inport“. Das aktivierte Bit 6 beim Lesen von (LPTx +1) kann über die Verwendung einer „Maske“ erkannt werden. Die Port-Befehle outp und inp leiten einen Wert an die angegebene Druckerport-Adresse (LPTx) bzw. lesen einen Wert von der Schnittstelle (siehe auch BCC3.1 Hilfe / Index). int outp(lptx, int out_value); int inp(lptx +1); Unter den vielen Port-Adressen gibt es manche, die im PC-Rechner lebenswichtige Funktionen steuern, daher sollte die (Port-) Adresse für LPTx sorgfältig gewählt und eingestellt werden. Auch ANSI-C ermöglicht BITweise Operationen in Befehlen, z.B. um Kombinationen oder einzelne Bits zu erkennen oder auszublenden. Verwendet man eine bitweise logische UNDVerknüpfung (&) so erscheint im Ergebnis-Byte ein Bit nur dann als log.1, wenn das untersuchte Byte UND die „Maske“ beide in der Bitposition eine log.1 haben. Mit eine Maske „1111 1111“ bzw. 0xFF werden alle erkannt, mit 0x04 nur das 3. Bit. Will man also den Status einer BitPosition erkennen, ob log.0 oder log.1, so kann man das fragliche Byte mit einer Maske „&“verknüpfen, die nur eine log.1 in der gefragten Bit-Position hat und anschließend das Ergebnisbyte auf >=0 abfragen. Wird nur ein Byte in ein int-Feld (2 Byte lang) geschrieben, so kann in der Regel keine Aussage über den Wert der restlichen Bitpositionen 8-15 und damit den Gesamtwert gemacht werden. Eine Abfrage "? Int-Wert = 0 ?" kann daher bei fehlender Maskierung möglicherweise ein unerwartetes Ergebnis haben. mtlab2v207.doc / 10.11.2005 23:10 Seite 5 /9 V2.2 Serieller A/D-Wandler 2 Vorbereitung (1) Die Laborgruppe macht sich mit den Gebieten A/D-Wandlung eines Spannungswertes, dem Wägeverfahren, Abtastung einer Zeitfunktion und Ansteuerung eines PC-Parallelports vertraut. (2) Zu dem Funktions- / Zeit-Diagramm des Bausteins LTC1092 wird eine Tabelle angefertigt, die halbtaktweise die Werte für CS*, CLK, und Dout für einen Ansteuerzyklus / Wandlungszyklus zeigt. (3) In einfacher Weise wird ein Algorithmus entwickelt und dargestellt / beschrieben, wie aus den erkannten Bit-Werten (MSB first) das Datenwort des Spannungswertes berechnet wird. (4) Es wird ein Programm[SW1] vorbereitet, das die Leitungen CS* und CLK etwa in M/10 sec Takt betätigt (M=2..10). Damit soll prinzipiell die Funktion der Schnittstelle PC-LPT zum AD-Wandler nachgewiesen werden. Der Aktiv-Status der Leitungen wird durch farbige LEDs angezeigt (activ low = an). (5) Es wird ein Programm[SW2] vorbereitet, das mit einer Pulsfolge entsprechend dem LTC1092 - Zeitdiagramm die Hardware ansteuert und einen Spannungswert wandelt, so dass auf Anforderung ein gewandelter Wert indata[NN] = ad_wert auf dem Schirm angezeigt wird. (6) Es wird ein Programm[SW3] vorbereitet, das mit einer (funktionierenden) Routine aus (5) eine Liste indata[] (20..500 Werte) von Messwerten erfassen kann. Die ausgetestete Routine aus [SW2] wird im Versuch als Funktion in [SW3] eingefügt bzw. am Laborplatz angepasst. Der zeitliche Abstand der Messwerte wird über eine einstellbare Verzögerung (z.B. Turbo-C delay(NN); in Millisekunden) realisiert. Das Programm muss in der Lage sein, die Datenliste als Text-Datei im angegebenen Format mit veränderlichem Dateinamen zu speichern, um sie später mit einem anderen Programm (Excel, Lotus, StarCalc) auszuwerten und darzustellen. 3 Versuchsdurchführung (1) Der Rechner am Versuchsplatz wird unter DOS hochgefahren und die Turbo-C 3.1 Entwicklungsumgebung aktiviert. (2) Das vorbereitete Programm [SW1] für die Leitungs-LED’s wird geladen, fehlerbereinigt und gestartet. Die gewünschte Funktion wird überprüft (Sichtkontrolle). (3) Im Gespräch mit dem Betreuer wird die Vorbereitung des Versuchs besprochen und die Grundfunktion der Schnittstelle dargestellt. Der Betreuer gibt die weitere Versuchsdurchführung frei. (4) Das AD-Wandler-Interface wird auf „interne Referenz“ und „Gleichspannung“ gestellt. Dabei beträgt die intern angeschlossene Eingangsspannung etwa Uein/2 = 2,6 Volt = 1024/2. mtlab2v207.doc / 10.11.2005 23:10 Seite 6/9 Laborbericht Serieller A/D Wandler (5) Das vorbereitete Programm[SW2] wird ausgetestet und fehlerbereinigt. Wenn es funktioniert, wird auf „interne Referenz“ und „Sinus 1,5 s“ umgeschaltet. Dann sollte der gemessene Ergebniswert veränderlich zwischen ca. 1,1...4,1 Volt liegen. (6) Der funktionelle Teil dieser Mess-Routine wird als Funktion in das Programm[SW3] eingefügt und ausgetestet. Durch Verändern des „wait“ Parameters wird ein Abtastabstand von 10..25 ms eingestellt. (7) Am Funktionsgenerator am Laborplatz wird eine Ausgangsspannung eingestellt, die Sinusund Dreiecksfunktionen im Spannungsbereich 0 Volt <= Uein <= 5 Volt liefert, Mittelwert 2,5 Volt (geprüft im Oszilloskop-Bild). Erst danach wird das LTC 1092 AD-Wandler Interface angeschlossen und auf „extern“ umgeschaltet. Ein Frequenzwert von kleiner ..15 Hz hat sich als praktisch erwiesen. (8) Durch Variation der SW und der Frequenz des Funktionsgenerators werden (mindestens) 5 Signalreihen aufgezeichnet, ....Gleichspannung, mit ca. 200..500 Werten, ....sinusförmig mit ca. 5 Punkten pro Periode mit ca. 150 Punkten pro Periode ....dreieckförmig mit ca. 5 Punkten pro Periode mit ca. 150 Punkten pro Periode und unter verschiedenen Datei-Namen auf der Versuchsdiskette abgespeichert. Die Kennwerte der Messung und der Aufbau werden protokolliert. (9) Auswertung Die aufgezeichneten Datenreihen werden in ein Tabellenkalkulationsprogramm (z.B. Excel , Lotus, StarOffice o.ä.) eingelesen, skaliert und grafisch als Zeitfunktion dargestellt. Es wird kommentiert, welchen Einfluss die Abtastrate und Auflösung auf die Darstellungsgenauigkeit haben und welche Anforderungen dadurch für die Messung mittlerer und höherer Frequenzen entstehen. Die eigenen im Versuch ausgetesteten Programm-Listings [SW1...3] werden angefügt. 4 Tips und Tricks # Die vorbereitete Software (Quelltexte, [SW1], [SW2],[SW3]) werden auf einer frisch formatierten virenfreien 3 ½“ Diskette (1.4 MB) zum Versuch mitgebracht. Sie sollte noch genügend Platz für die eigenen Datenreihen haben. # Für die Bildschirmanzeige ist es sinnvoll, den skalierten float-Wert der Messungen [Volt] anzuzeigen. Für eine externe Auswertung in der Disketten-Datei kann ohne Genauigkeitsverlust der gemessene binäre Wert (0…{max,) 1023} abgespeichert werden. # Das erste Bit (startbit) in der CLK /Dout Sequenz erfordert besondere Aufmerksamkeit #Zur Rationalisierung des Testens sei es empfohlen, die Programme[SW1..3] so zu entwerfen, dass sie mit einem Minimum an Menüfunktion auf Tastendruck einen neuen Messzyklus starten. # Programmieren von Hardware-Schnittstellen führt fast immer zu kleinen Anpassungen während des Austestens. So kompatibel andere ANSI C Compiler auch sein mögen – ein reibungsfreier Versuchsablauf ist nur mit dem vorgesehenen und am Laborplatz vorhandenen Borland C 3.1 (DOS) Compiler im C-Modus zugesichert. Im Mittelpunkt des Versuchs steht die Messaufgabe, nicht besondere Finessen von anderen Compilern und Sprachvarianten. # Das angefügte Rahmenprogramm ist auch als Textdatei ( .c) auf der Intranet-Seite des PublicServers der FH (http://public.rz.fh-wolfenbuettel.de/~hamannm/general/download.htm) als download („C-Datei-Muster“) zu finden. mtlab2v207.doc / 10.11.2005 23:10 Seite 7 /9 Laborbericht Serieller A/D Wandler 5 Anhang: Rahmenprogramm Header der Dateien und Rahmenprogramm (auch als Textfile im FH-Netz zum Runterladen) /* Testprogramm für Serial ADC LTC1092 Laborgruppe: <name1 name2 Datum > Version: <XX DD.MM.YY > <XY DD.MM.YY> Tool: Borland C++ v3.1 fuer DOS Data Read Write using LPT X port LPT X offset 0 write D0 as CLK LPT X offset 0 write D1 as *CS LPT X offset 1 read D6 as DOUT <Kommentare> */ #include #include #include #include #include <stdio.h> <stdlib.h> <dos.h> <string.h> <conio.h> // und weitere bei Bedarf /* Festlegungen */ #define lpt1 0x3BC #define lpt2 0x378 #define lpt3 0x278 #define port_reset 0x03 #define loopmax 50 #define wait_init 50 #define maxarray 1001 #define startarray 1 #define filename "adctest.dat" // oder weitere nach Bedarf /* Funktion Prototypen */ void mudelay(long); void title_write(void); // kurze SW-Warteschleife // Programmkopf /* PUBLIC variables */ long wait; // approx. 50usec with 486-33 // system tics in milliseconds // nach Bedarf // // indata[maxarray];// *ausdatei; // int FILE Zeit zwischen Messungen der Eingangsspannung Ue array fuer Messdaten Datenspeicher (z.B. Floppy) main() { lpt_port = lpt2; // dieser wird benutzt outport(lpt_port, port_reset); ( Ihre Initialisierung...... ) mtlab2v207.doc / 10.11.2005 23:10 Seite 8 /9 Laborbericht Serieller A/D Wandler mudelay(loopmax); // kurze Warteschleife ( Ihr Programm............ ) delay(wait); // wait to next READ // use system timer; } ………. /* Schreiben eines Datensatzes auf Diskette zur Auswertung und Darstellung mit Excel oder aehnlich.., Wunschformat Text: [laufende Nummer] ";" [Messwert]";" CRLF */ ausdatei = fopen(filename,"w+"); ( Ihr Schreibprogramm ) fclose(ausdatei); } } void mudelay(long delaycount) /* Verzoegerung einstellbar, Dauer haengt vom Rechnertakt ab */ { long loop; loop = 0; while(loop <= delaycount) { loop++; } } void title_write(void) { #define zeile1 " Messtechnik Labor II SerialADC LTC1092 " #define zeile2 " < Laborgruppe ….> XXXXX 20XX -" printf( "\n \n \n %s \n", zeile1); printf(" %s \n",zeile2 ); wait = wait_init; ( Ihre Abfragen für Schleifen und Parameter ) } } // **************** ende des Programms ********************************** mtlab2v207.doc / 10.11.2005 23:10 Seite 9 /9