Okay, it's a working and reliable design with a Mega32 driving a serial port to ISO9141 converter, a software second serial port driving a USB FTDI chip, 8MHz external crystal, and a graphical 64*128 LCD. Programming is via the ISP on board, and the JTAG is not available as the port is in other use.
And Farnell's have shoved up the price of the Mega32 to nearly double.
So, the Mega324 is available at two thirds the price. Let's play... it's compatible at the package level, same ports, voltage, speed. It has a second UART, which means I can remove my software UART as conveniently I use the same pins for mine as the second UART.
This may be a salient point: the original software was compiled on a 2004 version of WinAVR; I've stuck with that since to avoid any unexpected compiler changes. However, for this experiment, given the newness of the chip, I changed to 20081205.
As expected, the original code had a few changes; the interrupt routine names, the uart control registers. And it compiled no errors.
So I built a widget with the 324 glued in, programmed no problems.
Working: timer interrupt and soft UART (I left the original soft uart in instead of implementing the hardware one for now), the LCD text and graphics routines, including character and image definitions in progmem, the menu system driven from strings in progmem.
Unknown as yet - whether the hardware around the ISO9141 interface is working correctly though it does appear to be at first sight.
Not working: if the ISO9141 is short circuited in this application, a particular set of error messages should be displayed. I'm seeing the wrong ones... very very confusing. Nor am I seeing the structure of the error screen I expect.
My head hurts!