Blog Image

Getting By

Getting By

A simple repository of largely nonsensical wittering. It may (or may not) be to do with what the Batsocks lot are currently using their Idle cycles for.

Polygon Scanline Conversion

TellyMate Posted on Mon, October 18, 2010 15:19:48

Over the past few weeks, I’ve been playing with some polygon scanline conversion routines for a new ‘TellyMate’ demo…

Here’s an example of the new Arduino logo…
(Sorry it’s an image – my blog software doesn’t seem to be able to do fixed-width text?!)

This is rendered from 73 bytes of vector-based flash data.

PCBs ordered

TellyMate Posted on Thu, June 24, 2010 22:22:07

The TellyMate TTL Kit PCBs have now been ordered…

Unfortunately, my PCB manufacturer have just extended their standard delivery-times to 25 working days, so they’re going to be ready a little later than expected.

It’s been modified a little since the previous prototype version – I’ve added a 6-pin header that should be compatible with the 5v FTDI cable and 5v FTDI boards (old design and new design) that SparkFun sell.

New TellyMate TTL Kit Prototype

TellyMate Posted on Sun, February 28, 2010 12:38:14

Here’s a picture of a prototype for the new TellyMate Kit that I’m working on : The TellyMate TTL. It’s essentially a re-arrangement of the (probably to be discontinued) TellyMate Kit, but without the RS232 connector and translation circuitry.

Once I’m happy that the prototype’s OK, I’ll be getting some ‘proper’ boards made up.

It communicates natively using 5v TTL serial signals (8n1), hence it should be compatible with any device which uses this format (PIC, PIC-AXE, Arduino etc.). All the board needs is Gnd, 5v and Rx (TX is optional). It’s up to the user how these are connected to their system.

For those with Arduinos (and don’t fancy the Batsocks TellyMate Shield), the power and serial holes are arranged such that downwards-facing header pins (as in the photo) will allow the board to straddle an Arduino (albeit 90-degrees to the norm.).

What’s in the pipeline…

TellyMate Posted on Wed, February 24, 2010 20:56:54

I’m currently working on some updates to the TellyMate, for the upcoming release 1.1.00 of the firmware: [edit: Now released]

Hardware generated Sync pulses
Until now, I’ve been studiously toggling the sync pin off and on ‘by hand’ in the firmware in order to generate the correct HSync and VSync pulses. This required very careful cycle counting in places, especially given that I was wrapping the serial polling routine inside the 4us HSync.
I then had a minor epiphany about using the hardware timer to handle it instead.
Serendipidously, the Sync signal is output on the pin associated with Timer1’s OC1A, meaning it was possible to do this without any hardware change at all. It wasn’t easy (I’ve had to use a different PWM method, using ICR1 as TOP), but it seems to work.

It’s nearly there, and has meant that I’ve freed up some time, especially around the start of the scanline and the USART polling routine… That’s allowed me to do…

RAM based character font
Re-defineable characters at runtime!
If the TellyMate has 2kb of SRAM available (M328p version only), then some of that RAM can be set aside to use as character data. Enough for 64 characters is available, and these are used instead of the last 64 characters of fontbank 0. At startup/reset, the ‘real’ fontbank 0 characters are copied into their RAM counterparts, meaning it’s an invisible upgrade until the user decides to redefine them at runtime.
A rather lengthy control sequence is required to redefine a character. Each character is defined by 9 bytes of data, each byte spilt into two lower-case hex digits. Unfortunately this long-winded format is required to avoid having to use a <NULL> character in the input stream (which is always ignored). If I’d written the TM again from scratch, I might have made the <NULL> character escapeable (using <DLE>)

The upshot is that it’s now possible to modify 64 characters at runtime (on a M328p based TellyMate).

Read character definitions
A control sequence to read the fontbanks has been written. This means that it’s possible for the user software to read the font definitions and use them to, for example, draw really big characters on the screen.
More imaginative people than me might find this useful.
It might be used with some simple(?) algorithms to produce ‘large’ characters with nicely rounded corners, for example.

When might all these be ready?
“Soon”. [edit: NOW!]
I’m currently finessing some of the code [so it’s not quite so ugly], then I’ll be able to run a full set of tests (on my 4 tried and true TellyMate test shields – M8, M88, M168 and M328p).
I’ve then got to write some documentation (what’s the point of adding these great features if they’re not documented in the user guide?!), write some exciting Arduino sketches to show them off, photograph them, and finally release it all.

Oh, I’m going to try and re-jig the user-guide so I can publish it as a PDF as well – possibly useful to users of e-books or wap-phones (or whatever the new things are).

[edit: 5 Mar 2010 15:10 – I’m now planning on calling this version 1.1.00, rather than 1.0.17. This fits better with the level of core code that’s changed]