Re: Probleme mit Multiplexerabfrage Kategorie: Programmierung (von Alfred - 12.04.2004 22:00) | ||
Als Antwort auf Re: Probleme mit Multiplexerabfrage von André H. - 11.04.2004 3:07 | ||
| ||
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 1 0 AD0-1 AD1-1 AD2-1 AD3-1 0 1 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? 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; } 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). > > --> 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 > > > > -->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. > > ... > 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; > } > ... > > Um den Zustand aller 16 Sensoren korrekt in AD[] abzulegen, wäre folgendes > notwendig: > > ... > 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; > } > ... > > MfG André H. > | ||
Antwort schreiben Antworten: |