Touchscreen Probleme

OP #981516
Kurz und bündig:

Ich hab einen 4-wire touchscreen, alle 4 drähe hängen direkt am µC 
(pic18f8722).

Wenn ich nur eine Achse ablese, klappt es.

Wenn ich beide nacheinander auslesen will, klappt es nicht!

Es liegt also meiner Meinung nach irgendwie an der Umschaltung der 
Ports, kA woran genau :/

X+ an PORTA1 (AN0)
X- an PORTA1 (AN1)
Y+ an PORTA2 (AN2)
Y- an PORTA3 (AN3)

Momentan will eigentlich keine Umrechnung, es reicht mir die AD-Werte 
richtig zu kriegen.

Wie gesagt, wenn ich je einen Aufruf (X oder Y) auskommentiere, dann 
klappts. Nur das Umschalten zwischen den Achsen will nicht so recht.

Hab mittlerweile auch auf die vorgefertigen ADC-Funktionen verzichtet, 
aber scheinbar liegts nicht an denen!

Sobald beide Achsen gelesen werden, liegen die Werte alle bei ~100-150 
(von 255) und lassen sich somit nicht aus dem Bereich herausrechnen!

Beim drücken werden korrekte Werte erzeugt 25-200, leider brauch ich in 
Ruhe eben Werte außerhalb dieses Bereichs (was eben bei nur einer Achse 
hervorragend funktioniert [~240])

Danke schonmal an alle!
1
void read_touch_x(void)
2
{
3
//        76543210
4
  TRISA = 0b11111100;
5
  Delay10KTCYx( 1 );
6

7
  LATA = 0x01;
8

9
  ADCON1 = 0b00001011;
10
  ADCON2 = 0b00111110;
11
  ADCON0 = 0b00001101;
12

13
  Delay10KTCYx( 1 );
14
  ConvertADC();
15
  while (ADCON0bits.GO);
16
  touch_x = ADRESH;
17
  
18
  CloseADC();
19

20
  PORTA = 0;
21
  LATA = 0;
22
//  TRISA = 0xFF;
23
}
24

25
void read_touch_y(void)
26
{
27
//        76543210
28
  TRISA = 0b11110011;
29
  Delay10KTCYx( 1 );
30
  LATA = 0;
31
  PORTA = 0;
32

33
  OpenADC(ADC_FOSC_64 & ADC_LEFT_JUST & ADC_20_TAD,  ADC_CH0 & ADC_REF_VDD_VSS & ADC_INT_OFF, ADC_4ANA);
34

35
  LATA = 0x08;
36

37
  SetChanADC(ADC_CH0);
38
  Delay10KTCYx( 1 );
39
  ConvertADC();
40
  while (ADCON0bits.GO);
41
  touch_y = ADRESH;
42

43
  CloseADC();
44

45
  PORTA = 0;
46
  LATA = 0;
47
//  TRISA = 0xFF;
48
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.