Wykonujesz metodę fillScreen() bez podanego argumentu. A co w środku niej?
void TFT_ILI9163C::fillScreen(uint16_t color) {
clearScreen(color);
}
Lecimy dalej:
void TFT_ILI9163C::clearScreen(uint16_t color) {
int px;
#if defined(__MK20DX128__) || defined(__MK20DX256__)
SPI.beginTransaction(ILI9163C_SPI);
_setAddrWindow(0x00,0x00,_GRAMWIDTH,_GRAMHEIGH);
for (px = 0;px < _GRAMSIZE; px++){
writedata16_cont(color);
}
writecommand_last(CMD_NOP);
SPI.endTransaction();
#else
setAddr(0x00,0x00,_GRAMWIDTH,_GRAMHEIGH);//go home
for (px = 0;px < _GRAMSIZE; px++){
writedata16(color);
}
#endif
}
No cóż, lecimy dalej:
void TFT_ILI9163C::writedata16(uint16_t d)
{
#if defined(SPI_HAS_TRANSACTION)
SPI.beginTransaction(ILI9163C_SPI);
#endif
rsport->PIO_SODR |= rspinmask;//HI
csport->PIO_CODR |= cspinmask;//LO
spiwrite(d >> 8);
spiwrite(d);
csport->PIO_SODR |= cspinmask;//HI
#if defined(SPI_HAS_TRANSACTION)
SPI.endTransaction();
#endif
}
I tutaj może już zaprzestańmy. Całkiem możliwe, że kiks powstaje, bo uC nie wie co ma wysłać na SPI, ponieważ nie podajesz mu tego argumentu :)
Wyrzuć chwilowo to drugie tft.fillScreen() i zobacz co będzie