Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT_V2
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: