PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Resistives Touchpanel am ADC



Sany
05.11.2007, 00:31
Hallo,

Ich hab eine Frage bezüglich meines Codes zum auslesen, von den Werten eines Touchpanels.

Eingesetzter Atmel: Atmega16
Genutzt: Interne AREF Spannung. 2.56V
Gesetzt habe ich den Teilungsfaktor 128, da mein Atmel mit 14,3 Mhz läuft.

Mein Touchpanel hat 4 PINs (X+, X-, Y+, Y-)
Die Pins sind mit PA0-PA3 an meinem Atmega verbunden, jedoch mit Vorschaltung von 4x 470 Ohm Widerständen

Ich lege High auf X+ und X- und messe den Wert mit folgendem Code:



void debug()
{
char String[100];
uint16_t xval;
uint16_t yval;

DDRA |= (1<<PA0) | (1<<PA2); // ADC0 und ADC2 auf Output
PORTA |= (1<<PA0); // ADC0 auf HIGH
PORTA &= ~(1<<PA2); // ADC2 auf LOW
DDRA = ~(1<<PA1) | (1<<PA3); // ADC1 und ADC3 auf Eingang
_delay_ms(20); // Warten bis Port Stabil (20ms)
yval = readADC(3);
yval = 1024 - yval;

DDRA |= (1<<PA1) | (1<<PA3); // ADC1 und ADC3 auf Output
PORTA |= (1<<PA1); // ADC0 auf HIGH
PORTA &= ~(1<<PA3); // ADC2 auf LOW
DDRA = ~(1<<PA0) | (1<<PA2); // ADC0 und ADC0 auf Eingang
_delay_ms(20); // Warten bis Port Stabil (20ms)
xval = readADC(2);
xval = 1024 - xval;

lcd_ClearScreen();
lcd_GotoXY(1,1);
lcd_SelectFont(Arial, lcd_ReadFontData, BLACK);
sprintf(String, "Y: %i\nX: %i", yval, xval);
lcd_Puts(String);
}


Nun, wenn ich auf meinem Touchpanel rum drücke, ändert sich Y nicht.
Aber X Ändert sich in kleinen Werten.

Bsp.

Mitte vom Touchpanel: Zeigt den Wert X 1005 an.
Links unten vom Touchpanel: Zeigt den Wert X 1000 an.
Rechts unten vom Touchpanel: Zeigt den Wert X 1007 an.
Links oben vom Touchpanel: Zeigt den Wert X 1005 an.
Rechts oben vom Touchpanel: Zeigt den Wert X 1010 an.

Aber die Werte von Y ändern sich nicht...

Nun meine Frage, Touchscreen falsch angeschlossen oder fehler im Code?

linux_80
05.11.2007, 18:50
Hallo,

ich weiss auf die schnelle nur mal diese Seite:
http://www.mcselec.com/index.php?option=com_content&task=view&id=189&Itemid=57
Da steht wie das mit dem auslesen usw. funktioneren soll.