20 November 2010

electrosurgical generator description

This describes my medical device experience at HDA Technology
2007-2010.

This demonstrates a number of my strengths, including wide-ranging
system knowledge from bare metal to GUIs; problem analysis, solution
design, implementation, test, documentation; debug; working well with
EEs; communications protocols.

The medical device was a power supply for surgical tools, and I was
team lead. In fact, there was one other programmer helping part-time.

The surgical tools had multiple configurable electrodes under computer
control. Tools carried disposable EEPROMs and Atmel Cryptomemory
chips in their connectors. These held tool instructions, parameters,
and authentication and expiration information. The device had an LCD
display and some membrane switches; footpedals could also be plugged
in in addition to handswitches on the surgical tools.

This is a slow time-constant, soft real-time system. We did not use
an RTOS and we worked in C, which were imposed choices. We used an
ARM9 System on a Chip. We ripped our own fonts and made our own
graphics system. The executable was about 500KB binary.

I originally prototyped this system using a laptop and some ADC and DAC
modules. I used Java for the GUI, wrote a JNI layer to talk to the
third-party C library. This was very well received by the client and
led to refinements in their design.

I invented a scripting language used to control the surgical
tools.

Much communication internal to the device used I2C or SPI protocols.
Additionally, for isolation reasons, four 8-bit PIC microcontrollers
talked to the surgical tools, and the ARM CPU communicated with the
slave PICs over an isolated RS-485 bus. There were two FPGAs and a
handful of ADC and DAC channels. I occasionally used an oscilloscope
to debug.

I specified, designed, and built Acceptance Test Procedure software as
PC boards came in. These were also used to re-verify after board
revisions. I worked with EEs when they needed software. I also
requested electrical mods or monitors as needed.

I designed and built the cryptomemory subsystem used for
authentication (as genuine) and expiration. I also built separate
tools to program the cryptomemory chips.

I contributed to GUI requirements and documentation including end-user
manuals.