Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo André, > > habe noch einiges ausprobiert: > > a.) kann es sein, dass die Beschreibung vom MUX 1416 so heißen kann? > > A B > 0 0 AD0-0 AD1-0 AD2-0 AD3-0 > <b>1 0</b> AD0-1 AD1-1 AD2-1 AD3-1 > <b>0 1</b> AD0-2 AD1-2 AD2-2 AD3-2 > 1 1 AD0-3 AD1-3 AD2-3 AD3-3 > > b.) müssen alle Sensoreingänge, welche nicht verwendet werden > auf Masse gelegt werden, um hier keine falschen Messwerte anzuzeigen? > > <code> > const PortA=10; //(P1H.3) Steuerports für den AD-Multiplexer > const PortB=11; //(P1H.4) > byte i,j,AD[4]; > > thread getad > > { > ports.set(PortA,0); > ports.set(PortB,0); > sleep 25; > AD[0]=pcfad.getAD(0,0); > lcdext.goto(1,0); > lcdext.zahl(AD[0]); > > ports.set(PortA,1); > ports.set(PortB,0); > sleep 25; > AD[1]=pcfad.getAD(0,0); > lcdext.goto(1,8); > lcdext.zahl(AD[1]); > > ports.set(PortA,0); > ports.set(PortB,1); > sleep 25; > AD[2]=pcfad.getAD(0,0); > lcdext.goto(2,0); > lcdext.zahl(AD[2]); > > ports.set(PortA,1); > ports.set(PortB,1); > sleep 25; > AD[3]=pcfad.getAD(0,0); > lcdext.goto(2,8); > lcdext.zahl(AD[3]); > sleep 1000; > } > > thread main > > { > pcf.on(0,0); //Addr 0 Port 0 auf Eingang schalten (LED aus) > pcf.on(0,1); //Addr 0 Port 1 auf Eingang schalten (LED aus) > pcf.on(0,2); //Addr 0 Port 2 auf Eingang schalten (LED aus) > pcf.on(0,3); //Addr 0 Port 3 auf Eingang schalten (LED aus) > pcf.on(0,4); //Addr 0 Port 4 auf Eingang schalten (LED aus) > pcf.on(0,5); //Addr 0 Port 5 auf Eingang schalten (LED aus) > pcf.on(0,6); //Addr 0 Port 6 auf Eingang schalten (LED aus) > pcf.on(0,7); //Addr 0 Port 7 auf Eingang schalten (LED aus) > lcdext.init(); > run getad; > > halt; > }</code> > > mfg Alfred > > > > Hallo Alfred, > > > > > Problem: > > > 1.) Möchte 16 Sensoren KTY-10 von Multiplexer über oben beschriebene Hardware abfragen und > > > auf dem ext. Displays nacheinander anzeigen (Sensor 1 - 16). > > > <b><i>--> Mir ist leider nicht klar, wie ich in der Schleife (Ansteuerung MIC14052) die Abfrage > > > der einzelnen Sensoren unterbringe bzw. wie ich diese Abfrage am ext. Displays anzeigen kann > > > </i></b> > > > -->Ohne dem Multiplexer habe ich die Abfrage einwandfrei geschafft! > > > > Du mußt nach dem Setzen des Analog-MUX eine kleine Pause einbauen. > > Ansonsten kann es sein, daß Du keine korrekten Werte bekommst. > > Auch hast Du in Deinem Code ein paar Fehler bei der Benutzung der Variablen. > > Am besten hälst Du Dich am Beispiel zum Analog-MUX: > > 1. MUX setzen > > 2. kleine Pause > > 3. AD-Ports abfragen > > 4. wieder zu 1. > > > > <code>... > > for i=0...3 > > { > > ports.set(PortA,i and 0b01); > > ports.set(PortB,i and 0b10); > > sleep 25; // Das ist wichtig ! > > > > pcfad.getAD4(0,AD); > > for j=0...3 > > { > > lcdext.line(j); > > lcdext.zahl(AD[j]); > > } > > sleep 2500; > > } > > ...</code> > > > > Um den Zustand aller 16 Sensoren korrekt in AD[] abzulegen, wäre folgendes > > notwendig: > > > > <code>... > > byte temp[4]; > > ... > > for i=0...3 > > { > > ports.set(PortA,i and 0b01); > > ports.set(PortB,i and 0b10); > > sleep 25; // Das ist wichtig ! > > > > pcfad.getAD4(0,temp); > > run 255; > > yield; > > for j=0...3 AD[i*4+j]=temp[j]; > > resume; > > } > > ...</code> > > > > MfG André H. > >