Forum: Mikrocontroller und Digitale Elektronik AT90Usb ADC Kanalwahl spinnt


von Markus H. (mh1977)


Lesenswert?

Hallo mal wieder....
muss dieses Ding für die Diplomarbeit fit machen. ich benutze die 
Firmware von Salewski und möchte mit ADC0 und ADC1 eine Messung machen 
und über Endpoint 1 an den PC (QT4) schicken. funktioniert auch beim 
ersten mal:
Gleich nach Reset habe ich 255 bei 0,7V (ADC0) und 127 bei 0,3V bei 
2,6=1023 (ca.)(ADC1).
Wenn ich den Knopf nun ein zweites mal drücke, dann erhalte ich auf 
beiden Kanälen 124, immer... komisch.
In main() mache ich die Dummymessung und hier mal der Code vom Endpoint:
Mit einem Kanal hat noch alles wunderbar funktioniert und ich verstehe 
es mal wieder nicht.

UsbDevFillEP1FIFO(void)
{
  if UsbDevTransmitterReady()
  {
   uint8_t LB1;
   uint8_t HB1;
   ADMUX |=(0<<MUX0);
   ADCSRA |=(1<<ADSC);
   while (ADCSRA & (1<<ADSC)){}
   LB1=ADCL;
   HB1=ADCH;


   ADMUX |=(1<<MUX0);//|(0<<MUX1)|(0<<MUX2)|(0<<MUX3)|(0<<MUX4);
   uint8_t LB2;
   uint8_t HB2;
   ADCSRA |=(1<<ADSC);
   while (ADCSRA & (1<<ADSC)){}
   LB2=ADCL;
   HB2=ADCH;
   ADMUX |=(0<<MUX0);

    UsbDevClearTransmitterReady();
    UsbDevClearNAK_ResponseInBit();
    //UsbDevSelectEndpoint(1);
    UsbDevWriteByte(LB1);
    UsbDevWriteByte(HB1);
    UsbDevWriteByte(LB2);
    UsbDevWriteByte(HB2);
    UsbDevSendInData();
  }
}

von Michael U. (amiga)


Lesenswert?

Hallo,

   ADMUX |=(0<<MUX0);

Darüber solltest Du mal nachddenken.

Was ändert sich wohl am Inhalt von ADMUX, wenn man es mit 0 verodert?

Gruß aus Berlin
Michael

von Markus H. (mh1977)


Lesenswert?

ok, danke... das war eigentlich ein dummer fehler.
Markus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.