Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

ADS7843 PENIRQ no function

Status
Not open for further replies.

Help

Advanced Member level 2
Advanced Member level 2
Joined
Feb 15, 2005
Messages
617
Helped
7
Reputation
14
Reaction score
3
Trophy points
1,298
Activity points
7,065
Dear All,

I have facing the /PENIRQ problem. I did tried a lot of testing and changing a few ADS7843 and TFT-touch-screen but still no working.

I would like to compare the result with you all.

1) I'm using 3.2" screen. I did measure the touch screen resistance for the X-,X+ is ~300Ohm and Y-,Y+ is ~400Ohm. (without connecting to ADS7843 device)
2) Connect touch screen pin X-,X+,Y-,Y+ to ADS7843 and measure the voltage at point X-,X+,Y-,Y+. (ADS7843 operate at 3.3V and /PENIRQ external pull up 100K Ohm)

No touch on screen:
X+ = 2.315V
Y+ = 2.315V
X- = 0.000V
Y- = 0.000V
/PENIRQ = 3.3V

Touch on screen:
X+ = 2.315V
Y+ = 2.315V
X- = 2.315V
Y- = 2.315V
/PENIRQ = 3.3V

I wonder why the /PENIRQ wouldn't pull to low as per datasheet said once the /PENIRQ is pulled LOW, a voltage typically will not exceeding 0.65V.

Is it we need to initialize the ADS7843 using coding before we can use the PENIRQ?


Code ASM - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
void GetScrXY(int *x, int *y)  
    {
    unsigned char msb, lsb;
 
// Get X coordinate     
    CS = 0;
    dly(6); 
    
    spi_write(0xD0);
    
    dly(80); // BUSY
    
    msb= spi_write(0x00); // msb
    lsb = spi_write(0x00); // lsb
    
    CS = 1;
 
    *x = (msb*0x100) | lsb;
 
    dly(100); 
 
// Get Y coordinate      
    CS = 0;
    dly(6); 
        
    spi_write(0x90);
 
    dly(80); // BUSY
    
    msb= spi_write(0x00); // msb
    lsb = spi_write(0x00); // lsb
    
    CS = 1;
 
    *y = (msb*0x100) | lsb;
 
    }
 
void Check_PENIRQ(void)
    {
    int x,y;
    
    GetScrXY(&x, &y) ;
 
    if(PENIRQ)
        LED = 0;
    else
        LED = 1; 
    }



Above coding is what i trying to use a LED to capture the PENIRQ pin.

Is there anyone can help me and give some advice?

Thank you,..
 
Last edited:

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top