Updated a small headset amp for newer parts and automated assembly.
Old and new were simulated with SPICE to make sure new matched
the old performance precisely. I laid out PCB artwork and provided
all needed dockumentation for manufacturing.

Project: Flight Simulator Interface

Using Visual C++, MFC , Win32 and C, developed a flight simulator
interface. This application displayed various control panels from
a helicopter. These panels could be added, sized, or moved as
needed to mimic the layout of the control panels. Switches, breakers
and buttons could be toggled with mouse clicks and the application
would provide visual feedback of the switch positions by showing
different images of the switches in each possible position. The
application also launched other simulation programs and restarted
them if they terminated. A console dialog allowed user input of
simulator parameters and also simulated the motion of the helicopter
along a user-defined direction and speed.

Project: MMC interface for Rabbit Modules.

Designed two interfaces for MMC Flash cards connected to Z-World
core modules. The first used the serial ports of the Rabbit CPU
to communicate with the card. This worked well and only required
writing the driver, the hardware just consisted of connecting
an MMC socket to the serial port pins.

The Rabbit serial port does not support MSB-first data so it
has to reverse the bits in software. It also was not real fast.
A CPLD was designed to provide fast 16-bit SPI transfers. This
increased the transfer speed considerably. The CPLD also provided
16 I/O pins. File read speeds up to 550kbytes/sec have been achieved.
That is the limit for the Rabbit CPU.

Designed hardware and software for a data collection box for
a drive-through application. The box collected data as cars pass
through a drive through. The data is then passed onto a PC for
analysis by either serial or TCP/IP connection. Design included
a Z-World embedded processor module with custom software and additional
hardware for interface to the loop detectors and status LEDs.
A Windows application was written to configure the box remotely.
Also, the new box used a more robust protocol; an application
was written to emulate the new network protocol with the old version
(serial).

Project: PCI Telephone interface

Revised a previous design for the PCI bus (from AT bus.) New
design used the Motorola DSP56309 DSP processors. Old DSP56002
code was ported to the new hardware. Main processor was an AMD80C186ES
running code written in C and assembly.

Developed an embedded smart controller for a language lab system.
The language lab system was hard-wired for a specific set of features
and did not save any user settings when powered down. The controller
monitored the keys and LED's of the system (56 switches), and
provided additional functionality. Functions included, saving
the current settings, automatic stepping through a programmed
set of switches, and a test mode that operated each switch and
LED in a specific order for automated system testing. Design included
complete hardware and software and also included a built-in programmer
for the EPROM CPU (Motorola 68HC711).

A conferencing system for the above language lab. This board
provided eight audio conference groups for any of the 48 audio
channels. This system used a single chip CPU (PIC16C71) with custom
hardware, and software. Software was written in assembly language.
Provided PCB design and layout along with all documentation for
manufacturing.

Project: Real-Time Performance, Dictation system

The client was having serious stability and performance problems
with embedded processors within a PC-based voice dictation system.
Work included several trips to customer sites to analyze the problems.
Developed software to analyze real-time performance. This revealed
the problems and gave measurable benchmarks of results. Problems
were found with OS/2 task priorities, SCSI drives (poor performance)
and software bugs.

In the process of debugging the above system, it became apparent
that the multi-threaded embedded software was almost impossible
to debug. I developed improvements to a clients system debugger
(originally my design) and then used the debugger to find several
bugs in their embedded system. The debugger was ported to a Visual
C++/MFC application. It provided extensive support including,
tracing, error log capture and source-level debugging. The application
displays multiple windows for code, data, thread status, logs,
registers and data structures. This software can connect to the
remote system via named pipes, sockets, serial, modem, or debug
a saved capture form the card.

One of the features of the debugger was to save the state of
the entire system to a file. The file can then be debugged separately,
allowing the system to run uninterrupted. This feature along with
the network and modem capability saved the client from requiring
travel to remote sites.

Developed a PC-based sound and telephone card that includes
a local CPU and DSP for remote access to a proprietary voice recorder.
Design included overall architecture, initial hardware specification
and all embedded code for both the CPU and DSP processors.

To support the PC sound card, I developed several Visual C++/MFC
programs including console, dialog and frame window applications.
These programs included a file I/O driver, a setup program and
several diagnostic and debugging tools.

Earlier, I designed the hardware and software for a multi-processor
DSP board for Lanier's dictation system. As ISA slots are no longer
standard for PCs, a PCI version was needed. A PCI version of the
board was developed. The code was ported to the new hardware.

The old card used fixed memory addresses and interrupts. The
OS/2 device driver was rewritten to support the PCI card. One
of the system DLLs was rewritten to emulate the old ISA cards.
As the application made calls to access the ISA card memory, the
addresses were translated by the DLL to the new PCI addresses.
Additional applications were written or modified to support the
PCI card and some additional features. The main system software
remained unchanged, thus minimizing the amount of testing required.

Project: Port OS/2 Application to NT, Dictation System

Wrote an NT device driver for NT for access to proprietary
PCI and ISA voice processing cards. Client does not want to rewrite
applications as Win32. The system would not work under the OS/2
emulation of NT/2k. This required writing wrappers around system
DLL's and the driver to allows the OS/2 applications to emulate
the old system. This included inter-process communications via
named pipes and a "thunk" layer to translate between
the 16-bit OS/2 environment and the NT system. This project was
an built on a previous project of writing a PCI device driver
for OS/2.

Designed a small board that read various relay inputs and reported
the information to a PC via a serial port. This board used a small
PIC processor and some custom firmware to emulate a serial port.
Board received loop-detect inputs from a drive-through sensors
and reported events to a PC. The PC was used to manage user performance
(drive-through timing.) Hardware, software and prototype built
and tested in 3 days.

Project: Video system Interface

Developed an interface between two incompatible video switching
systems. These systems used different serial protocols. Design
consisted of a hidden windows application that used two serial
ports to communicate with the two systems. The software then translated
the two protocols.

Hardware, Software, Firmware and PCB design of an 8x3 PBX phone
system. This board contained a small embedded CPU (68HC11) that
is controlled by a PC. This design included audio amplifiers,
switching power supply, digital logic, processor and memory. Visual
C++/MFC applications were written to demonstrate the board features,
download the firmware, and provide debugging. On board software
written in GNU C. Took over an original design that was wire-wrapped
and took over a year to develop. Poor design required a complete
redesign of both hardware and software. Entire process of redesign,
software development, PCB layout and assembly took only a few
months. First PCB design (400 parts) worked with only minor changes.

Project: Voice Announcement Controller

Provided redesign of a clients voice prompt system to reduce
parts cost, improve reliability and add some additional features.
Also, converted their hand-drawn schematics to CAD to improve
readability and allow PCB design. System played and recorded voice
prompts for drive-through POS systems.

A Motorola synchronous to asynchronous interface is no longer
available. Developed hardware and firmware using a Microchip PIC
controller to emulate the old part. This prevented the client
from redesigning their system by using a small board that plugs
into the chip socket.