'----------------------------------------------------------------------------- ' max192.bas ' Das Programm holt Messwerte von allen 8 Kanaelen der 12 Bit AD-Wandlerplatine ' aus dem Vertrieb von Westfalia Technica und stellt sie dar. Die Routinen zur ' Kommunikation mit dem Wandler befinden sich in der SUB "AlleKan". ' Auf die weiteren Konfigurationsmoeglichkeiten des Wandlers wurde der Einfach- ' heit halber verzichtet. In der SUB befinden sich jedoch Hinweise, wie die ' Konfigurationsbits zu setzen sind. ' - INTERNET: http://home.arcor.de/steini63 '----------------------------------------------------------------------------- DECLARE SUB AlleKan (Port%, D%()) DIM D%(1 TO 8) 'Die Messwerte befinden sich in D%(1) - D%(8) CLS LOCATE 5, 5 PRINT ">> Einleseprogramm fuer die 8 Kanaele der MAX 192 AD-Wandlerplatine <<" LOCATE 10, 8 PRINT "Wie lautet die Nummer der seriellen Schnittstelle (1 bis 4) ?" Taste$ = INPUT$(1) SELECT CASE Taste$ 'Basisadresse der ser. Schnittstelle festlegen CASE "1" Port% = &H3F8 CASE "2" Port% = &H2F8 CASE "3" Port% = &H3E8 CASE "4" Port% = &H2E8 CASE ELSE END END SELECT CLS LOCATE 2, 5 PRINT ">> Einleseprogramm fuer die 8 Kanaele der MAX 192 AD-Wandlerplatine <<" LOCATE 22, 5 PRINT "Zum Beenden eine Taste betaetigen.." DO UNTIL INKEY$ <> "" 'Hauptschleife T1 = TIMER 'Timer initialisieren CALL AlleKan(Port%, D%()) '8 Messwerte holen LOCATE 5, 5 '... und anzeigen PRINT USING "KANAL 1 = ##### mV "; D%(1) LOCATE 7, 5 PRINT USING "KANAL 2 = ##### mV "; D%(2) LOCATE 9, 5 PRINT USING "KANAL 3 = ##### mV "; D%(3) LOCATE 11, 5 PRINT USING "KANAL 4 = ##### mV "; D%(4) LOCATE 13, 5 PRINT USING "KANAL 5 = ##### mV "; D%(5) LOCATE 15, 5 PRINT USING "KANAL 6 = ##### mV "; D%(6) LOCATE 17, 5 PRINT USING "KANAL 7 = ##### mV "; D%(7) LOCATE 19, 5 PRINT USING "KANAL 8 = ##### mV "; D%(8) DO: LOOP UNTIL TIMER - T1 > .3 'Warteschleife 0,3 Sek LOOP END SUB AlleKan (Port%, D%()) '-------------------------------------------------------------- ' 8 Kanaele konfigurieren und zeitversetzt 8 Kanaele auslesen. ' Weil der erste Wert des Wandlers erst nach einem Durchlauf ' zur Verfuegung steht, werden 9 Durchgaenge benoetigt. '-------------------------------------------------------------- MStR% = Port% + 4 'Basisadresse des Modem-Steuer-Registers FOR K% = 1 TO 9 Vout% = 0 'Datenbit 11 OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&HFD AND INP(MStR%)) OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 2048 * D% 'Datenbit 10 OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&HFD AND INP(MStR%)) OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 1024 * D% 'Datenbit 9 OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&HFD AND INP(MStR%)) OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 512 * D% 'Datenbit 8 OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&HFD AND INP(MStR%)) OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 256 * D% 'Datenbit 7 OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&HFD AND INP(MStR%)) OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 128 * D% 'Datenbit 6 OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&HFD AND INP(MStR%)) OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 64 * D% 'Datenbit 5 OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&HFD AND INP(MStR%)) OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 32 * D% 'Datenbit 4 / Konfigurationsbit 7 (Startbit) OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&H2 OR INP(MStR%)) '1 - Startbit OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 16 * D% 'Datenbit 3 / Konfigurationsbit 6 (Kanalselektor-Bit 2) OUT MStR%, (&HFE AND INP(MStR%)) IF K% = 1 OR K% = 3 OR K% = 5 OR K% = 7 THEN OUT MStR%, (&HFD AND INP(MStR%)) '0 - Sel 2 ELSE OUT MStR%, (&H2 OR INP(MStR%)) '1 - Sel 2 END IF OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 8 * D% 'Datenbit 2 / Konfigurationsbit 5 (Kanalselektor-Bit 1) OUT MStR%, (&HFE AND INP(MStR%)) IF K% = 1 OR K% = 2 OR K% = 3 OR K% = 4 THEN OUT MStR%, (&HFD AND INP(MStR%)) '0 - Sel 1 ELSE OUT MStR%, (&H2 OR INP(MStR%)) '1 - Sel 1 END IF OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 4 * D% 'Datenbit 1 / Konfigurationsbit 4 (Kanalselektor-Bit 0) OUT MStR%, (&HFE AND INP(MStR%)) IF K% = 1 OR K% = 2 OR K% = 5 OR K% = 6 THEN OUT MStR%, (&HFD AND INP(MStR%)) '0 - Sel 0 ELSE OUT MStR%, (&H2 OR INP(MStR%)) '1 - Sel 0 END IF OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 2 * D% 'Datenbit 0 / Konfigurationsbit 3 (unipolar/bipolar) OUT MStR%, (&HFE AND INP(MStR%)) 'OUT MStR%, (&HFD AND INP(MStR%)) '0 - bipolar OUT MStR%, (&H2 OR INP(MStR%)) '1 - unipolar OUT MStR%, (&H1 OR INP(MStR%)) IF (INP(MStR% + 2) AND &H10) = &H10 THEN D% = 1 ELSE D% = 0 Vout% = Vout% + 1 * D% 'Konfigurationsbit 2 (differentiell/single-ended) OUT MStR%, (&HFE AND INP(MStR%)) 'OUT MStR%, (&HFD AND INP(MStR%)) '0 - differential OUT MStR%, (&H2 OR INP(MStR%)) '1 - single ended OUT MStR%, (&H1 OR INP(MStR%)) 'Konfigurationsbit 1 (power/clock-Bit 1) OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&H2 OR INP(MStR%)) '1 '} Bit1 Bit0 OUT MStR%, (&H1 OR INP(MStR%)) '} ------------------------------- '} 0 0 - Full power down 'Konfigurationsbit 0 (power/clock-Bit 0) '} 0 1 - Fast power down OUT MStR%, (&HFE AND INP(MStR%)) '} 1 0 - Internal clock mode 'OUT MStR%, (&HFD AND INP(MStR%)) '0 '} 1 1 - External clock mode OUT MStR%, (&H2 OR INP(MStR%)) '1 OUT MStR%, (&H1 OR INP(MStR%)) 'Nachlauf OUT MStR%, (&HFE AND INP(MStR%)) OUT MStR%, (&HFD AND INP(MStR%)) OUT MStR%, (&H1 OR INP(MStR%)) IF K% > 1 THEN D%(K% - 1) = Vout% NEXT K% 'naechsten Kanal auslesen END SUB