tested and working with microtouchx

This commit is contained in:
Frank Zhao committed 2013-09-23 19:48:31 -04:00
1 parent 67a3652b26
commit bed0a09f54
1 file changed
+29 -15
+29 -15
View File
@@ -130,10 +130,17 @@ void Adafruit_TFTLCD::setup(uint8_t cs, uint8_t cd, uint8_t wr, uint8_t rd, uint
// Convert pin numbers to registers and bitmasks // Convert pin numbers to registers and bitmasks
_reset = rst; _reset = rst;
#ifdef __AVR__ #ifdef __AVR__
csPort = portOutputRegister(digitalPinToPort(cs)); #if defined(CORE_ADAX) || defined(VARIANT_MICROTOUCHX)
cdPort = portOutputRegister(digitalPinToPort(cd)); csPort = (uint8_t*)portRegister(digitalPinToPort(cs));
wrPort = portOutputRegister(digitalPinToPort(wr)); cdPort = (uint8_t*)portRegister(digitalPinToPort(cd));
rdPort = portOutputRegister(digitalPinToPort(rd)); wrPort = (uint8_t*)portRegister(digitalPinToPort(wr));
rdPort = (uint8_t*)portRegister(digitalPinToPort(rd));
#else
csPort = portOutputRegister(digitalPinToPort(cs));
cdPort = portOutputRegister(digitalPinToPort(cd));
wrPort = portOutputRegister(digitalPinToPort(wr));
rdPort = portOutputRegister(digitalPinToPort(rd));
#endif
#endif #endif
#if defined(__SAM3X8E__) #if defined(__SAM3X8E__)
csPort = digitalPinToPort(cs); csPort = digitalPinToPort(cs);
@@ -152,10 +159,14 @@ void Adafruit_TFTLCD::setup(uint8_t cs, uint8_t cd, uint8_t wr, uint8_t rd, uint
rdPinUnset = ~rdPinSet; rdPinUnset = ~rdPinSet;
#ifdef __AVR__ #ifdef __AVR__
*csPort |= csPinSet; // Set all control bits to HIGH (idle) pinMode(cs, OUTPUT);
*cdPort |= cdPinSet; // Signals are ACTIVE LOW pinMode(cd, OUTPUT);
*wrPort |= wrPinSet; pinMode(wr, OUTPUT);
*rdPort |= rdPinSet; pinMode(rd, OUTPUT);
digitalWrite(cs, HIGH);
digitalWrite(cd, HIGH);
digitalWrite(wr, HIGH);
digitalWrite(rd, HIGH);
#endif #endif
#if defined(__SAM3X8E__) #if defined(__SAM3X8E__)
csPort->PIO_SODR |= csPinSet; // Set all control bits to HIGH (idle) csPort->PIO_SODR |= csPinSet; // Set all control bits to HIGH (idle)
@@ -378,14 +389,16 @@ void Adafruit_TFTLCD::reset(void) {
#ifdef USE_ADAFRUIT_SHIELD_PINOUT #ifdef USE_ADAFRUIT_SHIELD_PINOUT
pinMode(5, OUTPUT); pinMode(5, OUTPUT);
digitalWrite(5, LOW); digitalWrite(5, LOW);
delay(2); delay(1);
digitalWrite(5, HIGH); digitalWrite(5, HIGH);
delay(1);
#else #else
if(_reset) { if(_reset) {
pinMode(_reset, OUTPUT); pinMode(_reset, OUTPUT);
digitalWrite(_reset, LOW); digitalWrite(_reset, LOW);
delay(2); delay(1);
digitalWrite(_reset, HIGH); digitalWrite(_reset, HIGH);
delay(1);
} }
#endif #endif
@@ -393,8 +406,9 @@ void Adafruit_TFTLCD::reset(void) {
CS_ACTIVE; CS_ACTIVE;
CD_COMMAND; CD_COMMAND;
write8(0x00); write8(0x00);
for(uint8_t i=0; i<3; i++) WR_STROBE; // Three extra 0x00s for(uint8_t i=0; i<7; i++) WR_STROBE; // Three extra 0x00s
CS_IDLE; CS_IDLE;
delay(100);
} }
// Sets the LCD address window (and address counter, on 932X). // Sets the LCD address window (and address counter, on 932X).
@@ -761,7 +775,7 @@ void Adafruit_TFTLCD::setRotation(uint8_t x) {
// For 932X, init default full-screen address window: // For 932X, init default full-screen address window:
setAddrWindow(0, 0, _width - 1, _height - 1); // CS_IDLE happens here setAddrWindow(0, 0, _width - 1, _height - 1); // CS_IDLE happens here
} if(driver == ID_7575) { } else if(driver == ID_7575) {
uint8_t t; uint8_t t;
switch(rotation) { switch(rotation) {
@@ -863,8 +877,8 @@ uint16_t Adafruit_TFTLCD::readPixel(int16_t x, int16_t y) {
// Ditto with the read/write port directions, as above. // Ditto with the read/write port directions, as above.
uint16_t Adafruit_TFTLCD::readID(void) { uint16_t Adafruit_TFTLCD::readID(void) {
#if defined(CORE_MICROTOUCHX) #if defined(VARIANT_MICROTOUCHX)
uint16_t id; uint32_t id;
id = readReg(0xD3); id = readReg(0xD3);
if (id == 0x9341) { if (id == 0x9341) {
@@ -891,7 +905,7 @@ uint16_t Adafruit_TFTLCD::readID(void) {
uint32_t Adafruit_TFTLCD::readReg(uint8_t r) { uint32_t Adafruit_TFTLCD::readReg(uint8_t r) {
uint32_t id = 0; uint32_t id = 0;
#if defined(CORE_MICROTOUCHX) #if defined(VARIANT_MICROTOUCHX)
// try reading register #4 // try reading register #4
CS_ACTIVE; CS_ACTIVE;
CD_COMMAND; CD_COMMAND;