mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATXMega 128A1 ADC Problem


Autor: Peter P (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
int main(void){
  uint8_t xpos, ypos;
  int8_t buffer[10];

     //ADC Konfiguration
     ADCA.CTRLA = 0x01;      // ADC aktivieren
     ADCA.CTRLB = 0x0C;      // unsigned mode 8Bit und Freilauf Modus
     ADCA.REFCTRL = 0x20;    // Referenz VCC
   ADCA.EVCTRL = 0x80;     // sweepmode for channel 0,1 and 2
     ADCA.PRESCALER = 0x02;  // prescaler to 16 = 2MHz@32Mhz Systemclock


     //Konfiguration der einzelnen Kanäle
     ADCA.CH0.CTRL = 0x01;   //single-ended-positive
     ADCA.CH0.MUXCTRL = 0x08;// PA1 als ADCPin
      ADCA.CH1.CTRL = 0x01;   //single-ended-positive
     ADCA.CH1.MUXCTRL = 0x10;//PA2 als ADCPin

  while(1){
    PORTA.DIR = 0x05;
  PORTA.OUT |= (1<<PIN2);  //PA2 (Y+) High
  PORTA.OUT &= ~(1<<PIN0); //PA0 (Y-) Low

  _delay_ms(50);
  xpos = ADCA_CH0RES; // ADC_Wert von PA1 (X+) in xpos einlesen
  PORTA.DIR = 0x0A;
  PORTA.OUT |= (1<<PIN1); //PA1 (X+) High
  PORTA.OUT &= ~(1<<PIN3);//PA3 (X-) Low
  ypos = ADCA_CH1RES;// ADC_Wert von PA2  (Y+) in ypos einlesen

  sprintf( buffer, "X: %d", xpos );
  write_string(buffer, 10,10, BLACK, RED,0);
  sprintf( buffer, "Y: %d", ypos );
  write_string(buffer, 10,20, BLACK, RED,0);
  _delay_ms(50);
  }return 0;
}

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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.