Announcement

Collapse
No announcement yet.

43 PT - Touch not working

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 43 PT - Touch not working

    Hi,

    this is really getting frustrating. I am using a SK-43PT-AR Set to play around with a CAN interface and an Arduino. So far I have been using the Visi-genie to design three forms with LEDs, an analogue meter and a couple of buttons. I wanted to use the buttons to switch between the forms, but whatever I do I cannot get the right form to become activated. It seems that the wrong button is pushed, as if the touch calibration is doing weird stuff. When I try to use the Touch calibration routine, it loads fine and tells me to hold the spot on display but nothing ever happens. Before showing the command for me to push the marked spot on the display I can see a status message, where touch is disabled.
    Can anybody please point me in the direction how on earth I can get the touch to work? I would have thought that the "Touch calibration" routine is the right place to look but that does not work for me.
    I donĀ“t think this is related to my actual program, since none of the demos work the way they are intended to (very inaccurate touch interface, sometimes too low, sometimes way off, some buttons on the keypad work, others don#t etc.)
    I really appreciate any help.

    Best regards,
    Felix

    P.S. When using the GTX Tool switching between the form works fine (as does writing to the display led digits).

  • #2
    Hi Felix

    Sorry to hear you are having problems.
    Can you please tell me what revision the PCB is of your uLCD-43PT display.
    If you look closely at the touch controller, which is located just above the display flex in the centre of the PCB, is this an AR1020 or an AR1021?
    If you have an AR1020, then you may be suffering from the issue we have outlined in our Errata document, on the uLCD-43PT display page, under the downloads section.
    Please advise and we can continue with your support

    Regards
    James

    Comment


    • #3
      Hi James,

      thank you for the fast reply. The HW Revision of the board is 7.01.
      The touch controller has AR1021 printed on top.

      Regards,
      Felix

      Comment


      • #4
        Hi Felix

        OK AR1021 shouldnt have this issue, but you are worth trying to reset the AR1021 back to factory defaults anyway.
        If this does not solve it, then you may need to RMA your display as it could be faulty.

        Please copy/paste this into a new Designer application in WS4, with your target being your uLCD-43PT.
        Please compile and download the program to RAM.
        It will reset your controller. Then try and calibrate your touch screen again.

        Code:
        #platform "uLCD-43PT"
        
        #inherit "4DGL_16bitColours.fnc"
        #IF EXISTS DIABLO
         #inherit "AR1020diablo.inc"
        #ELSE
         #inherit "AR1020.inc"
        #ENDIF
        func main()
         var ar1021 ;
        #IF EXISTS DIABLO
         I2C1_Close();
         pause(100);
         I2C1_Open(I2C_SLOW,PA13,PA12);
        #ELSE
         I2C_Close();
         pause(100);
         I2C_Open(I2C_SLOW);
        #ENDIF
         pause(100);
         while (AR2010(DISABLE_TOUCH, 0) !=OK ) // disable touch
         print(".") ;
         wend
         print("\nTouch Disabled\n");
         pause(150);
         AR2010(0x10 /*GET_VERSION*/, 0);
         if ((AR2010.packet[1] == 0x10) && (AR2010.packet[2] == 0))
         print("AR1020 Detected") ;
         ar1021 := 0 ;
         else if ((AR2010.packet[1] == 0x10) && (AR2010.packet[2] == 4))
         print("AR1021 Detected") ;
         ar1021 := 1 ;
         else
         print("Unknown device detected:-\n") ;
         print("VersH:", [HEX2] AR2010.packet[1], " VersL:", [HEX2]
        AR2010.packet[2], " Type:", [HEX2] AR2010.packet[3], "\n") ;
         print("AR1021 assumed") ;
         ar1021 := 1 ;
         endif
         txt_FGcolour(RED);
         putstr("\nRESTORING FACTORY DEFAULTS - WAIT.....");
         if (ar1021)
         AR2010.packet[0] := 0; // register address high byte
         AR2010.packet[1] := 1; // register address low byte
         AR2010.packet[2] := 1; // count of registers to write
         AR2010.packet[3] := 0xffff; // this should reinit on next write cycle
         AR2010(EEPROM_WRITE, 4); // packet size
         AR2010.packet[0] := 0; // register address high byte
         AR2010.packet[1] := 0x29; // register address low byte
         AR2010.packet[2] := 1; // count of registers to write
         AR2010.packet[3] := 0xffff; // this should reinit on next write cycle
         AR2010(EEPROM_WRITE, 4); // packet size
         AR2010(EEPROM_WRITE_TO_REGISTERS, 0);
         else
         AR2010.packet[0] := 0; // register address high byte
         AR2010.packet[1] := 0; // register address low byte
         AR2010.packet[2] := 1; // count of registers to write
         AR2010.packet[3] := 0xffff; // this should reinit on next write cycle
         AR2010(EEPROM_WRITE, 4); // packet size
         AR2010(EEPROM_WRITE_TO_REGISTERS, 0);
         endif
         putstr("\n\nDone...\n\nYou must now power cycle the display for\nthe factory
        reset to fully take effect");
         repeat forever
        endfunc
        James

        Comment


        • #5
          Hi James,

          unfortunately your program has not fixed my problem.
          The code ran fine (see screenshot) and I power cycled the display as stated in the instructions.
          The weird touch behavior did not change though.
          How exactly is the Touch Calibration routine from the tools menu supposed to work. No matter how I try that function I end up with a small crosshair that I am supposed to touch and nothing else ever happens, no matter how hard, long or accurate I touch the screen in that place.

          What should I try next?

          Regards,
          Felix

          Click image for larger version

Name:	Touchscreen.jpeg
Views:	109
Size:	65.7 KB
ID:	46979

          Comment


          • #6
            Hi Felix

            If when touching the cross-hairs and your display is doing nothing, then it would suggest something is wrong with your display module.
            However that said, it looks like you have mounted the display in the Bezel.
            Please take it out from the bezel, and try calibration again.
            If the bezel is not a 100% fit and is too tight against the surface of the display, it will lead to the display being 'touched' by the bezel due to how tight it is on the surface, and applying pressure. If you remove the bezel and you can calibrate it OK, then you may need to insert little spacers between the display and the bezel mounting points, to raise it a fraction off the surface of the display.
            Please confirm if this is the issue or not.
            If you still cannot calibrate the screen after removing the bezel, please do say.

            Regards
            James

            Comment


            • #7
              Hi James,

              mission accomplished, thanks a lot for your support. Separating the display from the bezel solved my problem. Now the touch is responding the way it is supposed to do.

              Regards,
              Felix

              Comment

              Working...
              X