Hacking the Ativa 7-inch Photo Frame
by, 12-23-2011 at 10:30 PM (1273 Views)
The Ativa PF-7AW-201-P3R 7-inch photo frame is currently available for $29 from Office Depot. It can easily be hijacked to create a 28-line by 60-character color Propeller text display. I presented this hack at the 2010 UPEW but never got around to posting details. Here they are.
Using the Ativa LCD as a display requires 5 prop pins; 3 used as outputs, and 2 as inputs. This technique can be used to drive many medium-resolution LCD displays which have a similar drive scheme, although they are very individual and hacks for one don't easily translate to another.
What makes this class of displays hackable is that they use analog RGB signaling which is readily generated by the Propeller's video generator. The RGB signals are very distinctive because the frames alternate polarity; one one frame 0V will be dark and 1V white, and on the next 0V white and 1V dark. Once you've seen it on a scope once you'll instantly recognize it when you see it again.
What is different about the scheme, and took me awhile to figure out, is that the photo frame drive chip is actually feeding the LCD some quite complex clock and sync signals in addition to the RGB. The key to driving the frame is that we aren't generating sync; we must read it, and let the original driver (which thinks it is showing splash screens or pictures) generate the complicated sync for us.
The wide plastic bezel snaps off of the unit, exposing a functional bezel that holds the LCD in place.
It unscrews very straightforwardly. Lifting off the LCD reveals the circuit board.
Conveniently, the signals we need are broken out to clearly labeled test points.
The video signals we will be synthesizing are T-VR, T-VG, and T-VB. We must also cut the connection between the LCD and the frame drive chip. The signals are AC coupled through three very obvious series electrolytic capacitors; you could probably remove the caps and inject to the test points, but I chose to cut the pins on the IC and inject to the other side of each cap.
You will also need to read two signals, T_VCOM and T_STHL. You will always need VCOM for this hack, and in the other device I hacked (a Philips PET 702 DVD player) VCOM was all I needed. VCOM is the signal that tells the LCD whether the current video frame is normal or inverted. You need to read it to tell whether to generate a normal or inverted line. In the PET 702, I was also able to use VCOM to establish horizontal sync, and by a distinctive end of frame pattern vertical sync.
That didn't work with the photo frame. Perhaps not having to hew so much to NTSC timing, VCOM's reversal timing was erratic and it didn't have the obvious superframe pattern to go by.
So we have to hook T_STHL to establish horizontal sync.
I might have had to hook yet another signal to establish vertical sync, but I got lucky. Profiling the VCOM signal (with a propeller, of course) I found an interesting timing discrepancy. VCOM is normally consistent to within 2 or 3 Prop clock cycles, but at the start of a new frame there would be a distinctive pattern of a frame going over about 260 prop clocks. I was able to use this to establish vertical sync.
So here is the board as I modded it:
You need some voltage dividers; 3v3 is too much for the LCD analog input, and in this frame VCOM is very high amplitude (like +/- 10 volts!):
It's important to cut the right pins driving the RGB signals. On the other side of the board...
...it's the rightmost three pins on the top edge of the Amlogic control chip. You can easily verify that the T_Rx points go to caps, and that the other side of each cap goes to one of these pins, with an ohmmeter before getting destructy.
Being a completist I also hooked the back of case programming keyboard (you should probably disconnect it anyway, as it's useless once you cut the original video lines) and the IR detector. That's probably a waste of time if you're turning it into a general purpose project monitor.
With the mod wired, that brings us to the Small Matter Of Programming. The clock rate is 10.7 Mhz, which is at the north end of what a single cog Prop driver can hope to do. I managed to make a color driver for this thing by doing something that is either really cool or really ugly depending on how you look at it.
By using only three color bits, I lose shading but gain the coincidence that the number of color bits is also the same as the number of bits needed to shift to index a character in the character table. So I can slam the tile left, which shifts the color bits into Hub RAM don't care land, grab the line bitmap, then slam the tile right, leaving the color bits in ... the background. So in this driver the “foreground” is really the background and vice-versa. But it works. Here is PropCMD running on the LCD with the IR receiver taking input from a WebTV keyboard:
PropCMD - Archive [Date 2011.12.23 Time 17.08].zip
I also created a rotated version that displays 29 lines of 60 characters in portrait mode. It doesn't look as good because the Atari font is optimized for horizontal smearing, but it works.
PropROT - Archive [Date 2011.12.23 Time 17.09].zip
Even at $39 this was one of the cheapest display options on a per-character basis available for the Propeller. VGA monitors of this size tend to be expensive, and NTSC can't give the clarity at a width of 60 characters.
Incidentally, when the price fell to $39 I did buy an Ativa 8-inch monitor to see if it was hackable. It doesn't use the alternating RGB interface, so it will probably end up being used as ... a photo frame.