KL25Z driving an ILI9320 LCD board with touch panel (HY28A-LCDB SPI)

Dependencies:   SPI_TFT_ILI9320 mbed

Committer:
frankvnk
Date:
Tue Nov 04 15:18:17 2014 +0000
Revision:
3:cb2172c95bf1
Parent:
1:76f92f6b3737
Updated SPI_TFT_ILI9320 library to the latest version (auto-detect ILI9320, 9325 and 9328)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 0:ff976ad09b2f 1 /**************************************************************************************************
frankvnk 0:ff976ad09b2f 2 ***** *****
frankvnk 0:ff976ad09b2f 3 ***** Name: Touch.cpp *****
frankvnk 0:ff976ad09b2f 4 ***** Ver.: 1.0 *****
frankvnk 0:ff976ad09b2f 5 ***** Date: 04/01/2013 *****
frankvnk 0:ff976ad09b2f 6 ***** Auth: Frank Vannieuwkerke *****
frankvnk 0:ff976ad09b2f 7 ***** Erik Olieman *****
frankvnk 0:ff976ad09b2f 8 ***** Func: Touch driver for use with ADS7843 *****
frankvnk 0:ff976ad09b2f 9 ***** *****
frankvnk 0:ff976ad09b2f 10 ***** Code based on Carlos E. Vidales tutorial : *****
frankvnk 0:ff976ad09b2f 11 ***** How To Calibrate Touch Screens *****
frankvnk 0:ff976ad09b2f 12 ***** www.embedded.com/design/configurable-systems/4023968/How-To-Calibrate-Touch-Screens *****
frankvnk 0:ff976ad09b2f 13 ***** *****
frankvnk 0:ff976ad09b2f 14 **************************************************************************************************/
frankvnk 0:ff976ad09b2f 15
frankvnk 0:ff976ad09b2f 16 #include "Touch.h"
frankvnk 0:ff976ad09b2f 17 #include "mbed.h"
frankvnk 0:ff976ad09b2f 18 #include "Arial12x12.h"
frankvnk 0:ff976ad09b2f 19
frankvnk 0:ff976ad09b2f 20 #define THRESHOLD 2
frankvnk 0:ff976ad09b2f 21
frankvnk 0:ff976ad09b2f 22 TouchScreenADS7843::TouchScreenADS7843(PinName tp_mosi, PinName tp_miso, PinName tp_sclk, PinName tp_cs, PinName tp_irq, SPI_TFT *_LCD)
frankvnk 0:ff976ad09b2f 23 : LCD(_LCD), _tp_spi(tp_mosi, tp_miso, tp_sclk), _tp_cs(tp_cs), _tp_irq(tp_irq)
frankvnk 0:ff976ad09b2f 24 {
frankvnk 0:ff976ad09b2f 25 DisplaySample[0].x=45;
frankvnk 0:ff976ad09b2f 26 DisplaySample[0].y=45;
frankvnk 0:ff976ad09b2f 27 DisplaySample[1].x=45;
frankvnk 0:ff976ad09b2f 28 DisplaySample[1].y=270;
frankvnk 0:ff976ad09b2f 29 DisplaySample[2].x=190;
frankvnk 0:ff976ad09b2f 30 DisplaySample[2].y=190;
frankvnk 0:ff976ad09b2f 31 ScreenSample[0].x=45;
frankvnk 0:ff976ad09b2f 32 ScreenSample[0].y=45;
frankvnk 0:ff976ad09b2f 33 ScreenSample[1].x=45;
frankvnk 0:ff976ad09b2f 34 ScreenSample[1].y=270;
frankvnk 0:ff976ad09b2f 35 ScreenSample[2].x=190;
frankvnk 0:ff976ad09b2f 36 ScreenSample[2].y=190;
frankvnk 0:ff976ad09b2f 37 _tp_cs=1;
frankvnk 0:ff976ad09b2f 38 _tp_spi.frequency(500000);
frankvnk 0:ff976ad09b2f 39 _tp_spi.format(8,0); // 8 bit spi mode 0
frankvnk 0:ff976ad09b2f 40 }
frankvnk 0:ff976ad09b2f 41
frankvnk 0:ff976ad09b2f 42 int TouchScreenADS7843::Read_XY(unsigned char XY)
frankvnk 0:ff976ad09b2f 43 {
frankvnk 0:ff976ad09b2f 44 unsigned char msb, lsb;
frankvnk 0:ff976ad09b2f 45 unsigned int Temp;
frankvnk 0:ff976ad09b2f 46
frankvnk 0:ff976ad09b2f 47 Temp=0;
frankvnk 0:ff976ad09b2f 48 _tp_cs=0;
frankvnk 0:ff976ad09b2f 49 wait_us(SPI_RD_DELAY);
frankvnk 0:ff976ad09b2f 50 _tp_spi.write(XY);
frankvnk 0:ff976ad09b2f 51 wait_us(SPI_RD_DELAY);
frankvnk 0:ff976ad09b2f 52 msb = _tp_spi.write(0x00); // msb
frankvnk 0:ff976ad09b2f 53 wait_us(SPI_RD_DELAY);
frankvnk 0:ff976ad09b2f 54 lsb = _tp_spi.write(0x00); // lsb
frankvnk 0:ff976ad09b2f 55 _tp_cs=1;
frankvnk 0:ff976ad09b2f 56 Temp = ((msb << 8 ) | lsb);
frankvnk 0:ff976ad09b2f 57 Temp >>= 3;
frankvnk 0:ff976ad09b2f 58 Temp &= 0xfff;
frankvnk 0:ff976ad09b2f 59 Temp /= 4; // Scaling : return value range must be between 0 and 1024
frankvnk 0:ff976ad09b2f 60 return(Temp);
frankvnk 0:ff976ad09b2f 61 }
frankvnk 0:ff976ad09b2f 62
frankvnk 0:ff976ad09b2f 63
frankvnk 0:ff976ad09b2f 64 void TouchScreenADS7843::TP_GetAdXY(int *x,int *y)
frankvnk 0:ff976ad09b2f 65 {
frankvnk 0:ff976ad09b2f 66 int adx,ady;
frankvnk 0:ff976ad09b2f 67 adx = Read_XY(CHX);
frankvnk 0:ff976ad09b2f 68 wait_us(1);
frankvnk 0:ff976ad09b2f 69 ady = Read_XY(CHY);
frankvnk 0:ff976ad09b2f 70 *x = adx;
frankvnk 0:ff976ad09b2f 71 *y = ady;
frankvnk 0:ff976ad09b2f 72 }
frankvnk 0:ff976ad09b2f 73
frankvnk 0:ff976ad09b2f 74 void TouchScreenADS7843::TP_DrawPoint(unsigned int Xpos,unsigned int Ypos, unsigned int color)
frankvnk 0:ff976ad09b2f 75 {
frankvnk 0:ff976ad09b2f 76 LCD->wr_reg(0x03, 0x1030);
frankvnk 0:ff976ad09b2f 77 LCD->WindowMax();
frankvnk 0:ff976ad09b2f 78 LCD->pixel(Xpos,Ypos,color);
frankvnk 0:ff976ad09b2f 79 LCD->pixel(Xpos+1,Ypos,color);
frankvnk 0:ff976ad09b2f 80 LCD->pixel(Xpos,Ypos+1,color);
frankvnk 0:ff976ad09b2f 81 LCD->pixel(Xpos+1,Ypos+1,color);
frankvnk 0:ff976ad09b2f 82 }
frankvnk 0:ff976ad09b2f 83
frankvnk 0:ff976ad09b2f 84 void TouchScreenADS7843::DrawCross(unsigned int Xpos,unsigned int Ypos)
frankvnk 0:ff976ad09b2f 85 {
frankvnk 0:ff976ad09b2f 86 LCD->line(Xpos-15,Ypos,Xpos-2,Ypos,White);
frankvnk 0:ff976ad09b2f 87 LCD->line(Xpos+2,Ypos,Xpos+15,Ypos,White);
frankvnk 0:ff976ad09b2f 88 LCD->line(Xpos,Ypos-15,Xpos,Ypos-2,White);
frankvnk 0:ff976ad09b2f 89 LCD->line(Xpos,Ypos+2,Xpos,Ypos+15,White);
frankvnk 0:ff976ad09b2f 90
frankvnk 0:ff976ad09b2f 91 LCD->line(Xpos-15,Ypos+15,Xpos-7,Ypos+15,DarkGrey);
frankvnk 0:ff976ad09b2f 92 LCD->line(Xpos-15,Ypos+7,Xpos-15,Ypos+15,DarkGrey);
frankvnk 0:ff976ad09b2f 93
frankvnk 0:ff976ad09b2f 94 LCD->line(Xpos-15,Ypos-15,Xpos-7,Ypos-15,DarkGrey);
frankvnk 0:ff976ad09b2f 95 LCD->line(Xpos-15,Ypos-7,Xpos-15,Ypos-15,DarkGrey);
frankvnk 0:ff976ad09b2f 96
frankvnk 0:ff976ad09b2f 97 LCD->line(Xpos+7,Ypos+15,Xpos+15,Ypos+15,DarkGrey);
frankvnk 0:ff976ad09b2f 98 LCD->line(Xpos+15,Ypos+7,Xpos+15,Ypos+15,DarkGrey);
frankvnk 0:ff976ad09b2f 99
frankvnk 0:ff976ad09b2f 100 LCD->line(Xpos+7,Ypos-15,Xpos+15,Ypos-15,DarkGrey);
frankvnk 0:ff976ad09b2f 101 LCD->line(Xpos+15,Ypos-15,Xpos+15,Ypos-7,DarkGrey);
frankvnk 0:ff976ad09b2f 102 }
frankvnk 0:ff976ad09b2f 103
frankvnk 0:ff976ad09b2f 104 unsigned char TouchScreenADS7843::Read_Ads7843(Coordinate * screenPtr)
frankvnk 0:ff976ad09b2f 105 {
frankvnk 0:ff976ad09b2f 106 int m0,m1,m2,TP_X[1],TP_Y[1],temp[3];
frankvnk 0:ff976ad09b2f 107 uint8_t count=0;
frankvnk 0:ff976ad09b2f 108 int buffer[2][9]={{0},{0}};
frankvnk 0:ff976ad09b2f 109 if (screenPtr == NULL) screenPtr = &screen;
frankvnk 0:ff976ad09b2f 110 do
frankvnk 0:ff976ad09b2f 111 {
frankvnk 0:ff976ad09b2f 112 TP_GetAdXY(TP_X,TP_Y);
frankvnk 0:ff976ad09b2f 113 buffer[0][count]=TP_X[0];
frankvnk 0:ff976ad09b2f 114 buffer[1][count]=TP_Y[0];
frankvnk 0:ff976ad09b2f 115 count++;
frankvnk 0:ff976ad09b2f 116 }
frankvnk 0:ff976ad09b2f 117 while(!_tp_irq && (count < 9));
frankvnk 0:ff976ad09b2f 118 if(count==9)
frankvnk 0:ff976ad09b2f 119 {
frankvnk 0:ff976ad09b2f 120 temp[0]=(buffer[0][0]+buffer[0][1]+buffer[0][2])/3;
frankvnk 0:ff976ad09b2f 121 temp[1]=(buffer[0][3]+buffer[0][4]+buffer[0][5])/3;
frankvnk 0:ff976ad09b2f 122 temp[2]=(buffer[0][6]+buffer[0][7]+buffer[0][8])/3;
frankvnk 0:ff976ad09b2f 123 m0=temp[0]-temp[1];
frankvnk 0:ff976ad09b2f 124 m1=temp[1]-temp[2];
frankvnk 0:ff976ad09b2f 125 m2=temp[2]-temp[0];
frankvnk 0:ff976ad09b2f 126 m0=m0>0?m0:(-m0);
frankvnk 0:ff976ad09b2f 127 m1=m1>0?m1:(-m1);
frankvnk 0:ff976ad09b2f 128 m2=m2>0?m2:(-m2);
frankvnk 0:ff976ad09b2f 129 if( (m0>THRESHOLD) && (m1>THRESHOLD) && (m2>THRESHOLD) ) return 0;
frankvnk 0:ff976ad09b2f 130 if(m0<m1)
frankvnk 0:ff976ad09b2f 131 {
frankvnk 0:ff976ad09b2f 132 if(m2<m0)
frankvnk 0:ff976ad09b2f 133 screenPtr->x=(temp[0]+temp[2])/2;
frankvnk 0:ff976ad09b2f 134 else
frankvnk 0:ff976ad09b2f 135 screenPtr->x=(temp[0]+temp[1])/2;
frankvnk 0:ff976ad09b2f 136 }
frankvnk 0:ff976ad09b2f 137 else if(m2<m1)
frankvnk 0:ff976ad09b2f 138 screenPtr->x=(temp[0]+temp[2])/2;
frankvnk 0:ff976ad09b2f 139 else
frankvnk 0:ff976ad09b2f 140 screenPtr->x=(temp[1]+temp[2])/2;
frankvnk 0:ff976ad09b2f 141
frankvnk 0:ff976ad09b2f 142 temp[0]=(buffer[1][0]+buffer[1][1]+buffer[1][2])/3;
frankvnk 0:ff976ad09b2f 143 temp[1]=(buffer[1][3]+buffer[1][4]+buffer[1][5])/3;
frankvnk 0:ff976ad09b2f 144 temp[2]=(buffer[1][6]+buffer[1][7]+buffer[1][8])/3;
frankvnk 0:ff976ad09b2f 145 m0=temp[0]-temp[1];
frankvnk 0:ff976ad09b2f 146 m1=temp[1]-temp[2];
frankvnk 0:ff976ad09b2f 147 m2=temp[2]-temp[0];
frankvnk 0:ff976ad09b2f 148 m0=m0>0?m0:(-m0);
frankvnk 0:ff976ad09b2f 149 m1=m1>0?m1:(-m1);
frankvnk 0:ff976ad09b2f 150 m2=m2>0?m2:(-m2);
frankvnk 0:ff976ad09b2f 151 if( (m0>THRESHOLD) && (m1>THRESHOLD) && (m2>THRESHOLD) ) return 0;
frankvnk 0:ff976ad09b2f 152
frankvnk 0:ff976ad09b2f 153 if(m0<m1)
frankvnk 0:ff976ad09b2f 154 {
frankvnk 0:ff976ad09b2f 155 if(m2<m0)
frankvnk 0:ff976ad09b2f 156 screenPtr->y=(temp[0]+temp[2])/2;
frankvnk 0:ff976ad09b2f 157 else
frankvnk 0:ff976ad09b2f 158 screenPtr->y=(temp[0]+temp[1])/2;
frankvnk 0:ff976ad09b2f 159 }
frankvnk 0:ff976ad09b2f 160 else if(m2<m1)
frankvnk 0:ff976ad09b2f 161 screenPtr->y=(temp[0]+temp[2])/2;
frankvnk 0:ff976ad09b2f 162 else
frankvnk 0:ff976ad09b2f 163 screenPtr->y=(temp[1]+temp[2])/2;
frankvnk 0:ff976ad09b2f 164 return 1;
frankvnk 0:ff976ad09b2f 165 }
frankvnk 0:ff976ad09b2f 166 return 0;
frankvnk 0:ff976ad09b2f 167 }
frankvnk 0:ff976ad09b2f 168
frankvnk 0:ff976ad09b2f 169 uint8_t TouchScreenADS7843::setCalibrationMatrix( Coordinate * displayPtr,
frankvnk 0:ff976ad09b2f 170 Coordinate * screenPtr,
frankvnk 0:ff976ad09b2f 171 Matrix * matrixPtr)
frankvnk 0:ff976ad09b2f 172 {
frankvnk 0:ff976ad09b2f 173 uint8_t retTHRESHOLD = 0 ;
frankvnk 0:ff976ad09b2f 174 // K = (Xs0 - Xs2)*(Ys1 - Ys2) - (Xs1 - Xs2)*(Ys0 - Ys2)
frankvnk 0:ff976ad09b2f 175 matrixPtr->Divider = ((screenPtr[0].x - screenPtr[2].x) * (screenPtr[1].y - screenPtr[2].y)) -
frankvnk 0:ff976ad09b2f 176 ((screenPtr[1].x - screenPtr[2].x) * (screenPtr[0].y - screenPtr[2].y)) ;
frankvnk 0:ff976ad09b2f 177 if( matrixPtr->Divider == 0 )
frankvnk 0:ff976ad09b2f 178 {
frankvnk 0:ff976ad09b2f 179 retTHRESHOLD = 1;
frankvnk 0:ff976ad09b2f 180 }
frankvnk 0:ff976ad09b2f 181 else
frankvnk 0:ff976ad09b2f 182 {
frankvnk 0:ff976ad09b2f 183 // (Xd0 - Xd2)*(Ys1 - Ys2) - (Xd1 - Xd2)*(Ys0 - Ys2)
frankvnk 0:ff976ad09b2f 184 // A = ---------------------------------------------------
frankvnk 0:ff976ad09b2f 185 // K
frankvnk 0:ff976ad09b2f 186 matrixPtr->An = ((displayPtr[0].x - displayPtr[2].x) * (screenPtr[1].y - screenPtr[2].y)) -
frankvnk 0:ff976ad09b2f 187 ((displayPtr[1].x - displayPtr[2].x) * (screenPtr[0].y - screenPtr[2].y)) ;
frankvnk 0:ff976ad09b2f 188 // (Xs0 - Xs2)*(Xd1 - Xd2) - (Xd0 - Xd2)*(Xs1 - Xs2)
frankvnk 0:ff976ad09b2f 189 // B = ---------------------------------------------------
frankvnk 0:ff976ad09b2f 190 // K
frankvnk 0:ff976ad09b2f 191 matrixPtr->Bn = ((screenPtr[0].x - screenPtr[2].x) * (displayPtr[1].x - displayPtr[2].x)) -
frankvnk 0:ff976ad09b2f 192 ((displayPtr[0].x - displayPtr[2].x) * (screenPtr[1].x - screenPtr[2].x)) ;
frankvnk 0:ff976ad09b2f 193 // Ys0*(Xs2*Xd1 - Xs1*Xd2) + Ys1*(Xs0*Xd2 - Xs2*Xd0) + Ys2*(Xs1*Xd0 - Xs0*Xd1)
frankvnk 0:ff976ad09b2f 194 // C = ----------------------------------------------------------------------------
frankvnk 0:ff976ad09b2f 195 // K
frankvnk 0:ff976ad09b2f 196 matrixPtr->Cn = (screenPtr[2].x * displayPtr[1].x - screenPtr[1].x * displayPtr[2].x) * screenPtr[0].y +
frankvnk 0:ff976ad09b2f 197 (screenPtr[0].x * displayPtr[2].x - screenPtr[2].x * displayPtr[0].x) * screenPtr[1].y +
frankvnk 0:ff976ad09b2f 198 (screenPtr[1].x * displayPtr[0].x - screenPtr[0].x * displayPtr[1].x) * screenPtr[2].y ;
frankvnk 0:ff976ad09b2f 199 // (Yd0 - Yd2)*(Ys1 - Ys2) - (Yd1 - Yd2)*(Ys0 - Ys2)
frankvnk 0:ff976ad09b2f 200 // D = ---------------------------------------------------
frankvnk 0:ff976ad09b2f 201 // K
frankvnk 0:ff976ad09b2f 202 matrixPtr->Dn = ((displayPtr[0].y - displayPtr[2].y) * (screenPtr[1].y - screenPtr[2].y)) -
frankvnk 0:ff976ad09b2f 203 ((displayPtr[1].y - displayPtr[2].y) * (screenPtr[0].y - screenPtr[2].y)) ;
frankvnk 0:ff976ad09b2f 204 // (Xs0 - Xs2)*(Yd1 - Yd2) - (Yd0 - Yd2)*(Xs1 - Xs2)
frankvnk 0:ff976ad09b2f 205 // E = ---------------------------------------------------
frankvnk 0:ff976ad09b2f 206 // K
frankvnk 0:ff976ad09b2f 207 matrixPtr->En = ((screenPtr[0].x - screenPtr[2].x) * (displayPtr[1].y - displayPtr[2].y)) -
frankvnk 0:ff976ad09b2f 208 ((displayPtr[0].y - displayPtr[2].y) * (screenPtr[1].x - screenPtr[2].x)) ;
frankvnk 0:ff976ad09b2f 209 // Ys0*(Xs2*Yd1 - Xs1*Yd2) + Ys1*(Xs0*Yd2 - Xs2*Yd0) + Ys2*(Xs1*Yd0 - Xs0*Yd1)
frankvnk 0:ff976ad09b2f 210 // F = ----------------------------------------------------------------------------
frankvnk 0:ff976ad09b2f 211 // K
frankvnk 0:ff976ad09b2f 212 matrixPtr->Fn = (screenPtr[2].x * displayPtr[1].y - screenPtr[1].x * displayPtr[2].y) * screenPtr[0].y +
frankvnk 0:ff976ad09b2f 213 (screenPtr[0].x * displayPtr[2].y - screenPtr[2].x * displayPtr[0].y) * screenPtr[1].y +
frankvnk 0:ff976ad09b2f 214 (screenPtr[1].x * displayPtr[0].y - screenPtr[0].x * displayPtr[1].y) * screenPtr[2].y ;
frankvnk 0:ff976ad09b2f 215 }
frankvnk 0:ff976ad09b2f 216 return( retTHRESHOLD ) ;
frankvnk 0:ff976ad09b2f 217 }
frankvnk 0:ff976ad09b2f 218
frankvnk 0:ff976ad09b2f 219 uint8_t TouchScreenADS7843::getDisplayPoint(void)
frankvnk 0:ff976ad09b2f 220 {
frankvnk 0:ff976ad09b2f 221 uint8_t retTHRESHOLD = 0 ;
frankvnk 0:ff976ad09b2f 222
frankvnk 0:ff976ad09b2f 223 if( matrix.Divider != 0 )
frankvnk 0:ff976ad09b2f 224 {
frankvnk 0:ff976ad09b2f 225 // XD = AX+BY+C
frankvnk 0:ff976ad09b2f 226 display.x = ( (matrix.An * screen.x) +
frankvnk 0:ff976ad09b2f 227 (matrix.Bn * screen.y) +
frankvnk 0:ff976ad09b2f 228 matrix.Cn
frankvnk 0:ff976ad09b2f 229 ) / matrix.Divider ;
frankvnk 0:ff976ad09b2f 230 // YD = DX+EY+F
frankvnk 0:ff976ad09b2f 231 display.y = ( (matrix.Dn * screen.x) +
frankvnk 0:ff976ad09b2f 232 (matrix.En * screen.y) +
frankvnk 0:ff976ad09b2f 233 matrix.Fn
frankvnk 0:ff976ad09b2f 234 ) / matrix.Divider ;
frankvnk 0:ff976ad09b2f 235 }
frankvnk 0:ff976ad09b2f 236 else
frankvnk 0:ff976ad09b2f 237 {
frankvnk 0:ff976ad09b2f 238 retTHRESHOLD = 1;
frankvnk 0:ff976ad09b2f 239 }
frankvnk 0:ff976ad09b2f 240 return(retTHRESHOLD);
frankvnk 0:ff976ad09b2f 241 }
frankvnk 0:ff976ad09b2f 242
frankvnk 0:ff976ad09b2f 243 void TouchScreenADS7843::TouchPanel_Calibrate(void)
frankvnk 0:ff976ad09b2f 244 {
frankvnk 0:ff976ad09b2f 245 uint8_t i;
frankvnk 0:ff976ad09b2f 246 Coordinate screen_cal;
frankvnk 0:ff976ad09b2f 247 setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix) ;
frankvnk 0:ff976ad09b2f 248 LCD->set_font((unsigned char*) Arial12x12);
frankvnk 0:ff976ad09b2f 249 for(i=0;i<3;i++)
frankvnk 0:ff976ad09b2f 250 {
frankvnk 0:ff976ad09b2f 251 LCD->cls();
frankvnk 0:ff976ad09b2f 252 LCD->locate(10,10);
frankvnk 0:ff976ad09b2f 253 LCD->printf("Touch crosshair to calibrate");
frankvnk 0:ff976ad09b2f 254 wait_ms(500);
frankvnk 0:ff976ad09b2f 255 DrawCross(DisplaySample[i].x,DisplaySample[i].y);
frankvnk 0:ff976ad09b2f 256 do {} while (!Read_Ads7843(&screen_cal));
frankvnk 0:ff976ad09b2f 257 ScreenSample[i].x= screen_cal.x;ScreenSample[i].y= screen_cal.y;
frankvnk 0:ff976ad09b2f 258 }
frankvnk 0:ff976ad09b2f 259 setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix) ;
frankvnk 0:ff976ad09b2f 260 LCD->cls();
frankvnk 0:ff976ad09b2f 261 }
frankvnk 0:ff976ad09b2f 262
frankvnk 1:76f92f6b3737 263 void TouchScreenADS7843::GetCalibration(Matrix * matrixPtr, Coordinate * screenPtr)
frankvnk 1:76f92f6b3737 264 {
frankvnk 1:76f92f6b3737 265 uint8_t i;
frankvnk 1:76f92f6b3737 266 Matrix * mp1;
frankvnk 1:76f92f6b3737 267 mp1 = &matrix;
frankvnk 1:76f92f6b3737 268 *matrixPtr = *mp1;
frankvnk 1:76f92f6b3737 269 for(i=0;i<3;i++)
frankvnk 1:76f92f6b3737 270 {
frankvnk 1:76f92f6b3737 271 screenPtr[i].x = ScreenSample[i].x;
frankvnk 1:76f92f6b3737 272 screenPtr[i].y = ScreenSample[i].y;
frankvnk 1:76f92f6b3737 273 }
frankvnk 1:76f92f6b3737 274 }
frankvnk 1:76f92f6b3737 275
frankvnk 1:76f92f6b3737 276 void TouchScreenADS7843::SetCalibration(Matrix * matrixPtr, Coordinate * screenPtr)
frankvnk 1:76f92f6b3737 277 {
frankvnk 1:76f92f6b3737 278 uint8_t i;
frankvnk 1:76f92f6b3737 279 Matrix * mp1;
frankvnk 1:76f92f6b3737 280 mp1 = &matrix;
frankvnk 1:76f92f6b3737 281 *mp1 = *matrixPtr;
frankvnk 1:76f92f6b3737 282 for(i=0;i<3;i++)
frankvnk 1:76f92f6b3737 283 {
frankvnk 1:76f92f6b3737 284 ScreenSample[i].x = screenPtr[i].x;
frankvnk 1:76f92f6b3737 285 ScreenSample[i].y = screenPtr[i].y;
frankvnk 1:76f92f6b3737 286 }
frankvnk 1:76f92f6b3737 287 setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix) ;
frankvnk 1:76f92f6b3737 288 }