diff --git a/TFT_ILI9163C.cpp b/TFT_ILI9163C.cpp index c90fc1b..08da018 100644 --- a/TFT_ILI9163C.cpp +++ b/TFT_ILI9163C.cpp @@ -417,6 +417,26 @@ void TFT_ILI9163C::display(boolean onOff) { } } +void TFT_ILI9163C::idleMode(boolean onOff) { + if (onOff){ + #if defined(__MK20DX128__) || defined(__MK20DX256__) + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); + writecommand_last(CMD_IDLEON); + endProc(); + #else + writecommand(CMD_IDLEON); + #endif + } else { + #if defined(__MK20DX128__) || defined(__MK20DX256__) + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); + writecommand_last(CMD_IDLEOF); + endProc(); + #else + writecommand(CMD_IDLEOF); + #endif + } +} + void TFT_ILI9163C::sleepMode(boolean mode) { if (mode){ if (sleep == 1) return;//already sleeping @@ -464,38 +484,38 @@ void TFT_ILI9163C::defineScrollArea(uint16_t tfa, uint16_t bfa){ } void TFT_ILI9163C::scroll(uint16_t adrs) { + if (adrs <= _GRAMHEIGH) { #if defined(__MK20DX128__) || defined(__MK20DX256__) SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); writecommand_cont(CMD_VSSTADRS); - writedata16_last(adrs); + writedata16_last(adrs + __OFFSET); endProc(); #else writecommand(CMD_VSSTADRS); - writedata16(adrs); + writedata16(adrs + __OFFSET); #endif + } } -//corrected! +//corrected! v2 void TFT_ILI9163C::clearScreen(uint16_t color) { int px; #if defined(__MK20DX128__) || defined(__MK20DX256__) - //SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); - setAddr(0x00,0x00,_GRAMWIDTH,_GRAMHEIGH);//go home - //writecommand_cont(CMD_RAMWR);//this was missed! + SPI.beginTransaction(SPISettings(SPICLOCK, MSBFIRST, SPI_MODE0)); + writecommand_cont(CMD_RAMWR);//this was missed! + _setAddrWindow(0x00,0x00,_GRAMWIDTH,_GRAMHEIGH); for (px = 0;px < _GRAMSIZE; px++){ writedata16_cont(color); } - _setAddrWindow(0x00,0x00,_GRAMWIDTH,_GRAMHEIGH);//go home writecommand_last(CMD_NOP); endProc(); #else + writecommand(CMD_RAMWR); setAddr(0x00,0x00,_GRAMWIDTH,_GRAMHEIGH);//go home - //writecommand(CMD_RAMWR); for (px = 0;px < _GRAMSIZE; px++){ writedata16(color); } - #endif } diff --git a/TFT_ILI9163C.h b/TFT_ILI9163C.h index 45f2ff3..ecb923b 100644 --- a/TFT_ILI9163C.h +++ b/TFT_ILI9163C.h @@ -77,6 +77,7 @@ 0.6: Small fix, added SD example and subroutines 0.6b1: Fix clearscreen, missed a parameter. 0.6b2: Scroll completed. (thanks Masuda) + 0.6b3: Clear Screen fix v2. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BugList of the current version: @@ -265,6 +266,7 @@ class TFT_ILI9163C : public Adafruit_GFX { fillRect(int16_t x, int16_t y, int16_t w, int16_t h,uint16_t color), setRotation(uint8_t r), invertDisplay(boolean i); + void idleMode(boolean onOff); void display(boolean onOff); void sleepMode(boolean mode); void defineScrollArea(uint16_t tfa, uint16_t bfa); diff --git a/keywords.txt b/keywords.txt index 613cf18..c728748 100644 --- a/keywords.txt +++ b/keywords.txt @@ -16,5 +16,5 @@ pushData KEYWORD2 endPushData KEYWORD2 defineScrollArea KEYWORD2 writeScreen24 KEYWORD2 - +idleMode KEYWORD2