touch screen handler for the microchip AR1020

Revision:
1:264ad2a00fd9
Parent:
0:cf4dd04052e3
Child:
2:1a436d154c84
diff -r cf4dd04052e3 -r 264ad2a00fd9 ar1020.cpp
--- a/ar1020.cpp	Mon Feb 21 22:29:40 2011 +0000
+++ b/ar1020.cpp	Tue Feb 22 21:43:39 2011 +0000
@@ -24,7 +24,7 @@
 #include "ar1020.h"
 #include "wait_api.h"
 
-AR1020::AR1020(SPI *spi, PinName enable, PinName sqi, bool swapX, bool swapY, bool swapXY)
+AR1020::AR1020(SPI *spi, PinName enable, PinName sqi, PinName power, bool swapX, bool swapY, bool swapXY)
 {
     _spi=spi;
     _enable=new DigitalOut(enable);
@@ -35,9 +35,11 @@
     _pen=0;
     _oldPen=false;
     _led=new DigitalOut(LED1);
+    _power=new DigitalOut(power);
+    _power->write(0);
 }
 
-AR1020::AR1020(PinName mosi, PinName miso, PinName clk, PinName enable, PinName sqi, bool swapX, bool swapY, bool swapXY)
+AR1020::AR1020(PinName mosi, PinName miso, PinName clk, PinName enable, PinName sqi, PinName power, bool swapX, bool swapY, bool swapXY)
 {
     _mosi=new DigitalOut(mosi);
     _miso=new DigitalIn(miso);
@@ -53,6 +55,8 @@
     _pen=0;
     _oldPen=false;
     _led=new DigitalOut(LED1);
+    _power=new DigitalOut(power);
+    _power->write(0);
 }
 
 AR1020::~AR1020()
@@ -63,6 +67,8 @@
 
 void AR1020::init()
 {
+    _power->write(1);
+    wait_ms(100);
     int r=cmd(0x13,NULL,0);    
     printf("disable touch=%i\n",r);
 
@@ -172,7 +178,7 @@
 int AR1020::cmd(char cmd,char* data, int len)
 {
     _enable->write(1);
-    wait_us(100);
+    wait_us(1000);
     _enable->write(0);
     
     wait_us(10);