Forum: Mikrocontroller und Digitale Elektronik ATXMega 128A1 ADC Problem


von Peter P (Gast)


Lesenswert?

Hallo,

ich versuche grade das resistive Touchpanel meines Displays mit einem 
xMega 128A1 auszulesen.
Das TP ist ein 4-wire TP.
Angeschlossen ist es an Port A wie folgt:
PA0 > Y-
PA1 > X+
PA2 > Y+
PA3 > X-

Mein Code sieht so aus:
1
int main(void){
2
  uint8_t xpos, ypos;
3
  int8_t buffer[10];
4
5
     //ADC Konfiguration
6
     ADCA.CTRLA = 0x01;      // ADC aktivieren
7
     ADCA.CTRLB = 0x0C;      // unsigned mode 8Bit und Freilauf Modus
8
     ADCA.REFCTRL = 0x20;    // Referenz VCC
9
   ADCA.EVCTRL = 0x80;     // sweepmode for channel 0,1 and 2
10
     ADCA.PRESCALER = 0x02;  // prescaler to 16 = 2MHz@32Mhz Systemclock
11
12
13
     //Konfiguration der einzelnen Kanäle
14
     ADCA.CH0.CTRL = 0x01;   //single-ended-positive
15
     ADCA.CH0.MUXCTRL = 0x08;// PA1 als ADCPin
16
      ADCA.CH1.CTRL = 0x01;   //single-ended-positive
17
     ADCA.CH1.MUXCTRL = 0x10;//PA2 als ADCPin
18
19
  while(1){
20
    PORTA.DIR = 0x05;
21
  PORTA.OUT |= (1<<PIN2);  //PA2 (Y+) High
22
  PORTA.OUT &= ~(1<<PIN0); //PA0 (Y-) Low
23
24
  _delay_ms(50);
25
  xpos = ADCA_CH0RES; // ADC_Wert von PA1 (X+) in xpos einlesen
26
  PORTA.DIR = 0x0A;
27
  PORTA.OUT |= (1<<PIN1); //PA1 (X+) High
28
  PORTA.OUT &= ~(1<<PIN3);//PA3 (X-) Low
29
  ypos = ADCA_CH1RES;// ADC_Wert von PA2  (Y+) in ypos einlesen
30
31
  sprintf( buffer, "X: %d", xpos );
32
  write_string(buffer, 10,10, BLACK, RED,0);
33
  sprintf( buffer, "Y: %d", ypos );
34
  write_string(buffer, 10,20, BLACK, RED,0);
35
  _delay_ms(50);
36
  }return 0;
37
}

Das Programm soll die ADC Werte erstmal auf dem Display anzeigen. Es 
zeigt lediglich einen X Wert von 255 und Y Wert von 55 an.
Wenn ich das TP ans Multimeter hänge verändert sich der Wert 
Positionsabhängig von ca 0.27-3.2V.

Hat einer von euch vielleicht eine Idee woran es liegen könnte?

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.