It’s been really quiet for a long time. We’ve moved states and for about a year I didn’t have my ‘garage’ to work in. But since 2 months I now have a good spot again to work on electronics. My first project for the blog is a new reflow controller using a TFT display.
I settled on an eBay bought HY32D 320×240 16 bit color TFT display with touch controller. This is a pretty neat and cheap thing. It’s based on the SSD1289 controller and is wired with a 16 bit parallel bus.
A quick back of the envelope calculation told me that on a 10MHz ATMega controller it should get about 10Hz refresh doing a single color whole screen redraw. This was assuming I could write a pixel in max 10 clock cycles. Not bad at all. Previously I had used a similar display with on an NXP LPC1768 development board clocked at 100Mhz. But it was connected serially,.. yikes this was painful to watch. You could see the screen being drawn. Not good UI experience.
I had designed a ATMega644pa board for this display and sent it out to OSHPark. While I was waiting for this to arrive the TFT displays arrived first! So now I had the displays but nothing to drive them with yet. This irked me to no end.
Luckily I had an old old prototype board with a DIP ATMega644pa 3.3v @ 10MHz sitting from when I developed a ethernet connected gizmo for my company. A quickly cut power trace to the ethernet chip gave me the perfect experimentation board. About 30 minutes later I had the display hooked up with some ugly ugly ribbon cables.
A search on the internet led me to UTFT, a fantastic cross platform TFT driver library with support for AVR and PIC and a whole range of TFT controllers, with documentation even! Very nicely done. After removing the Arduino calls from the library it was ready to be programmed onto my contraption.
Lo and behold it actually worked! However the refresh as abysmal. Even with a 16 bit bus the display was drawn very very slowly.
Time to look at the code in more detail… Next installment AVR assembler and the huge speed gains to be had.