ON-TRAK Photonics Corporation is a leading manufacturer of laser alignment and position sensing detectors. Canzona Technologies designed the hardware and software for their OT-2020, OT-4040, OT-5000, OT-6000, OT-7000, OT-302D, and DIM computer interface.
Canzona Technologies assisted in developing Lithiumstart's Bluflex battery management system.
The LCS4000 provides another silent, wireless communication option within an office. Canzona Technologies provided software enhancements for the latest version.
Free source code, perl scripts, spreadsheets and Powerpoint files for engineers.
The free Musette music and song editor written in C++ for Windows® is a Canzona Technologies program.
Using Z80s, 8052s, 80186s, PICs and programmable logic, several designs legally descramble cable video, add text and graphics overlays to TV signals, edit home videos, and generate video test signals. I also designed a display for a spectrum analyzer which simultaneously drives a VGA monitor and a flat panel display.
A design for Cymer Inc. sent a continuous video signal from an Atmel CCD using the Camera Link and LVDS interface.
A Z-80 machine-language "interpreter" assists with debugging by sequentially "executing" individual instructions on the target processor, validating address ranges, setting breakpoints and generally making sure everything works in a reasonable way.
When I began working with National Semiconductor 32000 microprocessors (the first 32-bit processor) there were no decent low-level development tools, so I wrote some. The 1-pass assembler had built-in support for conditionals such as if/else, while, and until; algebraic and RPN expression evaluation with a parameter stack accessible to the extensive macro language, and full support for symbolic debugging. The 1-pass linker had full access to all assembler variables and supported expressions containing external variables. The symbolic debugger supported local variables in subroutines, conditional breakpoints, pass counters, and dynamic code insertion.
Designs using microprocessors with external memory, sometimes include a small PLD such as a 22V10 to monitor memory/port activity and assert the "wait" line and turn on an LED in response to a violation such as writing to ROM, protected areas of RAM or other invalid activity. A button releases the wait line. When programmed appropriately, the PLD can set breakpoints and single-step any code including code in ROM.
Several video products add text or graphics overlays, do fades and other video effects. One editor stored a series of IR VCR commands, and could "replay" the IR commands while controlling the record function on a camcorder or 2nd VCR, which allowed making multiple 1st-generation copies of selected scenes from the master video.
Back in the pre-Windows®; days of Z80s and the CP/M operating system, I developed the first practical task-switching microcomputer operating system, and a 1M memory board for the Osborne Executive (which shipped with 128K). The package allowed switching between up to 8 separate programs, and transferring information between them by copying and pasting sections of the screen. The new BIOS required for task-switching included support for high-density floppy drives, keyboard macros, and a mouse. Other Executive enhancements included a bit-mapped graphics upgrade with drawing software, reliable 50% increase in CPU clock speed, and a realtime clock with battery backup.
Many devices have some way of communicating for data logging, receiving commands or sending messages. Video devices often include the ability to send or receive IR. Devices communicating over distances of several hundred feet used current loops or RS-485 with multidrop support. Communications over home/office power lines require extensive error detection and correction as well as 2-way communication to verify that messages are received as intended.
A client who manufactured legal cable descramblers wanted a way to monitor employees who enable descrambling in units purchased at branch stores. A special authorization terminal required the employee to insert a memory device, which identified the employee. The terminal then dialed a computer at the main office, which either granted or denied the authorization request, kept a log, and printed reports for the local cable provider.
A set-top box required a simple, compact, cheap way to store prerecorded sounds. I developed software to compress a standard .WAV file by 2:1 or 4:1, and a 22V10 in the device to decode the DMA data in real-time.
Medical researchers wanted to way to measure neurological response time and dexterity, in part to check for side effects of various drugs. The resulting system consisted of three capacitive touch pads and LEDs. Patients would do tests such as alternate between pads as quickly as possible, tap on one pad, or wait for a target LED to go on and then immediately move a finger from the "home" pad to the target pad. The device would collect data and provide basic analysis such as average and standard deviation. The data could be printed, displayed on the internal LCD, stored, or sent via RS-232 to a computer for further processing.
Another device cools the patient's skin to either 0°C or 5°C for laser treatments. An internal LCD shows the current skin temperature and an 3-color LED indicates when the temperature is within range.
Back in the early days of personal computers, I wrote a database program for political campaings to help with mailing lists, tracking contributions and required financial reports.
While studying and performing Indonesian music, I got curious about all the different musical scales used around the world and developed a computer program to calculate intervals and ratios from pitches.
After upgrading the Osborne Executive's video hardware I wrote a drawing program.
While working with Texas Instrument's 34010 graphics processor, I wrote a font creation program and a fractal program.
Many systems included built-in self test and diagnostic code, and I also developed stand-alone testing and diagnostic stations using dedicated computers running assembly language, C, C++ or Forth programs and interfacing to the device through the CPU socket.
Using various techniques and sometimes custom software or hardware, I've legally reverse engineered software, communciation protocols, scrambled cable TV signals, and entire embedded systems.
I've designed hardware and software for precision alignment and speed control of brushed motors; picomotors; and brushless, sensorless motors.
A PDA and a set-top box use custom, object-oriented, event-driven operating systems written in C++ and assembly language for Internet access. I also wrote an object-oriented, assembly language operating system for National Semiconductor's 32000 microprocessor family (the first true 32-bit processors).
Creative Marketing's "Prospector" telecommunications systems dials, answers, and plays messages in any of several languages, selectively playing, recording, or skipping actions based on the response to questions. One system included several "slave" units connected to a single master unit which controlled and monitored the entire network through a serial link.
I invented a new way to control the actions taken in response to questions on the outgoing message tape, and a reliable way to store data on a cassette tape. When the technicians needed an easy way to control the entire system manually for troubleshooting, I wrote a program in Forth running on a computer which connected to the system through the microprocessor socket. The Forth language provided an easy way to setup interactive commands like "tape rewind", or "dial 7891234". Software development tools at that time were very limited. I wrote a Z-80 machine-language "interpreter" (similar to a simulator, but actually running on the target system) which sequentially "executes" individual instructions on the target processor, validates address ranges, sets breakpoints and generally makes sure that everything works in a reasonable way.
A strain-gauge for L8 Agriproducts weighs a cow or other livestock as it walks across the scale, an RF reader detects the ID number in an ear tag, and an RS-232 link sends everything to a computer for logging and further processing.
A PIC-based autocollimator designed for Micro Radian measured tenths of a second of arc.
The microcontroller could process the data, or a CPLD could take over and send continuous data to a PC's parallel port at the A/D converter's maximum rate.
The OT302D sold by On-Trak Photonics is basically a high-precision digital voltmeter accepting analog X position, Y position and SUM levels from an amplifier for a laser position sensor.
On-Trak Photonic's PIC-based laser alignment systems include 1D targets that work with a rotating laser, and 2D targets (some with beam splitters for intermediate transparent targets) working with a pulsed laser, X/Y displays, data collection units and interface units. The targets are accurate to .001" over distances of 300 ft, and commuicate with RS-232, USB, RS-485 multidrop, or spread-spectrum RF interfaces. A separate intelligent interface module allows a standard computer RS-232 port to control the RS-485 daisy-chain by transparently controlling the RS-485 direction lines, and mediating data flow in both directions. One system features a steerable laser that uses picomotors to track a reference target.
Innovations include a fast, reliable triggering circuit to let the microcontroller know when a laser pulse was ready for sampling, a highly accurate and repeatable peak-detect circuit, and a fast and simple way for the 8-bit PIC to easily handle complex 32-bit calculations.
When I began working with National Semiconductor's 32000 series microprocessors (the first 32-bit processor) there were no decent low-level development tools, so I wrote some.
The 1-pass assembler had built-in support for conditionals such as if/else, while, and until; algebraic and RPN expression evaluation with a parameter stack accessible to the extensive macro language, and full support for symbolic debugging. The 1-pass linker had full access to all assembler variables and supported expressions containing external variables. The symbolic debugger supported local variables in subroutines, conditional breakpoints, pass counters, and dynamic code insertion. In my spare time, I wrote an object-oriented operating system which became the basis for some future designs.
A real-time display designed for EPD Electronics for the analog output of a spectrum analyzer simultaneously displayed the signal, grid, and legends on a VGA monitor and a flat panel display with a different resolution.
I developed a small, efficient digital video circuit using a few 22V10s and other cheap digital logic chips.
The "EZ Edit" designed for Sigmacon Industries stored a series of infrared remote control VCR commands, and could "replay" the IR commands while controlling the record function on a camcorder or 2nd VCR, which allowed making multiple 1st-generation copies of selected scenes from the master video. The device also allowed fades between scenes.
Because this device had to work with every VCR, I had to devise a way to analyze the incoming infrared remote commands and store them in a very compact format for later playback. The editor also worked with a poorly documented Sony protocol for networked video devices which I had to reverse engineer using an improvised circuit and a microcontroller.
A design intended for an Avalon Electronics home entertainment center controller added genlocked text and graphics overlays to TV signals.
The VideoScribe sold by Sigmacon Industries added text overlays and countdowns to TV signals. A separate output showed the video with overlayed text for previewing before actually enabling the overlay on the main video output.
Novaplex's "Director" and "Comlite" series of inter-office communication systems send FM serial data through standard power lines, allowing the desktop terminals to send and store messages. The Director also includes PDA-like functions such as scheduling.
As these systems are often used in medical and dental offices, they require extensive error detection and correction software to overcome interference from computers, x-ray machines, dentist chairs and any other equipment that might be plugged in. While converting an early design from a TMS7000 to an 8051, I found a way to do most of the code conversion using the assembler's macro capability.
This design for The Steel Computer Company used a current-loop serial communication line to download rebar orders from the office computer to the shear or bender where they appear on a video terminal. A motor and sensor precisely positioned the rebar for cutting. The system worked in either manual or automatic mode and included safety mechanisms to protect the operator.
A major challenge on this design was anticipating the inertia and overshoot of the heavy platform as the motor stopped and started.
A PDA designed for Olim required a small, fast and flexible operating system. Written in C++ for an ARM processor, the custom object-oriented, event-driven operating system supported a touch-screen, animation, handwriting recognition, RF computer link, and voice recognition.
Using a custom object-oriented, event-driven operating system written in C++, a settop box for Internet access using a TV had a TCP/IP stack, IR remote, keyboard, sound, and some special security features which supported 3rd party software downloads and anti-piracy protection.
This design included a 22V10 to monitor memory/port activity and assert the "wait" line and turn on an LED in response to a violation such as writing to ROM, protected areas of RAM or other invalid activity. A button releases the wait line. When programmed appropriately, the PLD can set breakpoints and single-step code anywhere in RAM or ROM. A small PIC microcontroller with no interrupts and fewer than 512 opcodes interfaced to the microcprocessor, received and passed infrared commands to the microcontroller, and provided security by mediating between the microcontroller and an EEPROM containing serial numbers and authorization codes, and providing an RS232 interface with a special secure protocol for system configuration. I developed software to compress a standard .WAV file by 2:1 or 4:1, and a 22V10 in the device to decode the DMA data in real-time.
Back in the pre-Windows®; days of Z80s and the CP/M operating system, I developed the first practical task-switching microcomputer operating system, and a 1M memory board for the Osborne Executive (which shipped with 128K). The package allowed switching between up to 8 separate programs, and transferring information between them by copying and pasting sections of the screen. My BIOS enhancements for task-switching included support for high-density floppy drives, keyboard macros, and a serial mouse. Other Executive upgrades included a bit-mapped graphics upgrade with drawing software, reliable 50% increase in CPU clock speed, and a realtime clock with battery backup.
The biggest challenge was working within the capabilities of the computers operating system and memory capacity. The computer shipped with it's BIOS in a nearly full 8K EPROM. I didn't want my additions to limit available program memory. I rewrote the BIOS and reduced the size from 8K to 6K, which freed enough space for my additions.
An exercise treadmill sold by Genesis allowed the runner to select speed, target pulse, distance or time, and the treadmill adjusted the speed appropriately as it displayed calories used. An earlobe clip monitored the runners pulse which appeared on the console, and several hardware and software safety features protected the runner from system failure.
Two players shoot freethrows in a basketball game for backyard parties, trade shows, etc. The display unit automatically kept score, remembered the current high score, and played recordable sound effects from nonvolatile memory.
Avalon manufactured "Novavision" legal cable descramblers I helped design, and needed a way to monitor employees who enable descrambling in units purchased at branch stores. A special authorization terminal required the employee to insert a memory device, which identified the employee. The terminal then dialed a computer at the main office, which either granted or denied the authorization request, kept a log, and printed reports for the local cable provider.
Medical researchers wanted to way to measure neurological response time and dexterity, in part to check for side effects of various drugs. The resulting system consisted of three capacitive touch pads and LEDs. Patients would do tests such as alternate between pads as quickly as possible, tap on one pad, or wait for a target LED to go on and then immediately move a finger from the "home" pad to the target pad. The device would collect data and provide basic analysis such as average and standard deviation. The data could be printed, displayed on the internal LCD, stored, or sent via RS-232 to a computer for further processing. This device used 5 interconnected microcontrollers.
Paradigm-Trex's Dermachiller cools the patient's skin to either 0°C or 5°C for laser treatments. An internal LCD shows the current skin temperature and an 3-color LED indicates when the temperature is within range. To help with the FDA certification procedure, I designed in a special "fail-safe" circuit to turn everything off if the temperature goes below a safe level.
Back in the early days of personal computers, I wrote a database program for political campaings to help with mailing lists, tracking contributions and required financial reports. Most campain volunteers had no computer skills, so operation had to be blatantly obvious.
As a "state of the art" computer ran at 1.6MHz, had 48K of program memory and disk drives holding less than 200K, the challenges were enormous. I found a way to make the user interface obvious, to run sorts and searches without any noticeable delay, and spread the database over multiple disks even on computers having only a single disk drive.
Back in the pre-Windows®; days of Z80s and the CP/M operating system, the Osborne Executive computer shipped with an 80x24 text-based display. It offered some "graphics" characters which allowed limited drawing ability at 160x72 "pixels". I couldn't resist improving on that and found a sneaky software solution to provide 640x480 pixels. Once I had the graphics hardware, I wrote a drawing program to take advantage of the new resolution.
I discovered a new way to take advantage of the Executive's programmable characters, developed an easy way for the 8-bit processor to handle 32-bit math in assembly language, and included user-friendly drawing features such as drawing an arc between 2 endpoints and through a 3rd point which sets the symmetry and radius. The endpoints could be anywhere on the screen, and the 3rd point could be anywhere between the 2 endpoints.
Texas Instruments developed the 34010 microprocessor with extensive graphics capabilities. I wrote a font creation program that used a mouse to set, clear and toggle pixels, either individually or in blocks.
The Musette Music editor uses a custom ttf font for music symbols.
Texas Instruments developed the 34010 microprocessor with extensive graphics capabilities. I wrote a fractal program to display the Mandelbrot and Julia sets.
I found a way to use a "pixel repeat" feature of the color palette chip to greatly reduce drawing time.