website design software

My fascination with microprocessors began shortly after graduating from technical school with an Associates Degree in Electronics. A company called Intel had just released the 4004 and 4040óboth four bit microprocessors.. Later that year, I got a job working for a company famous for making weighting scales.  Since about 1973, they had been manufacturing electronic scales for the trucking and meat packing industry using standard TTL discrete logic.  But it was that year they released their first microprocessor based scale using the 4004. After working both as a test and quality assurance technician, I was finally promoted to the position as R&D technician. My first assignment was to build a prototype for the next generation of electronic scales using the Intel 4040.

Later, I became extremely familiar with Motorola 6800 machine and assembly code. In 1976, I purchased my first computeróa SWTP 6800 based machine that featured a 1MHZ processor and 12 K of static ram.   This was my first major introduction to machine code programming.  Indeed, the package came with an op-code reference card and something called MIKBUG. This was a tiny monitor type program that allowed the user to enter machine code one byte at a time--then execute it. Later, I purchased a 6800 assembler for this

Following my work with the 6800, I worked with the Zilog Z80 for several years. In this capacity, I become familiar with in circuit emulators for the first time. Unlike ICEs of today, these emulators actually weighted something óabout 80 pounds. They also cost something.  I learned to write and debug Z80 assembly language programs using the services of the emulator.This early work with Z80 invariability led me into the 808x family of microprocessors. At about the same time, I took courses in assembly language for the 8088 version of the 8086 which eventually took the world by storm. During the intervening years, I earned a BS in Computer Science and worked in other (less interesting) areas of the computing field.

My second computer was something called a North Star Horizion. It was based on the Z80 processor and a  real operating system called CP/M. I still have this old relic.

In recent years, while creating a one of a kind algorithm to optimize the use of lumber in C++ at the PC level, I worked in close proximity to the embedded development work done to replicate the functionally of expensive PLCs in saw mills using a small embedded DOS style implementation. About the same time,  I also did contract work involving taking a standard product and extending it using variants of the 8051 family. In such one opportunity I did customization of standard electronic weighting products using the ďCĒ programming language.

Since about 2006, Iíve been very interested in the Microchip 16F and 18F series of devices. With the advent of low cost C and C++ optimizing cross compilers supporting these devices, I rarely drop into assembly language for these devices other than the occasional use of bracketed asm{} directives to embedded NOP instructions into standard C code. This is not to say that that assembly language knowledge is not useful, but rather to say that with these tools at hand, it is usually y no longer necessary surrender the efficiencies of using the high level tools to save a few bytes of program space. Because, in most cases, when fully optimized the compilers do a pretty good job as it is. But I do remember the days when program space was so tight that nothing but machine coding would suffice.

A few years ago, I purchased their preferred USB based PIC emulator and find it almost invaluable for debug and real-time simulation of code sections. I use C compilers from Microchipís and another vendor called Source Boost. Since I feel like a hardware guy firstóa software guy second, I developed several custom hardware devices that feature PIC 18F micro-controllers.  Initially these devices were developed for a perspective client. However, they soon became the preferred platform for development/experimentation in conjunction with some other ideas and concepts that I believed MIGHT allow me to solve some interesting problems concerning residential energy use.

One such device couples a PIC 18F2620 processor with an addressable XBEE IEEE 802.15.04 serial data radio interface.  The basic idea  was to create a network of these very low cost devices. And then allow a centralized PC running C#/*.NET software to provide centralized real-time optimization of energy use factors throughout the network.

The remote device features a real time clock ---good for scheduling non-polled asynchronous data transmissions back to the host. They also provide an onboard I2C interfaces, as well as one dedicated temperature sensors. These features makes them useful in monitoring environmental conditions and control applications. As well as any other application involving custom I2C based sensors.

Soon, I am about to introduce another important element to the PIC story. Because of the low cost and availability of inexpensive RTOS implementations, I can no longer justify coding my own BIG LOOP style custom scheduling functions.  I will therefore soon be switching over to using low cost licensed RTOS for any application requiring such a level of sophistication.  The use such thing as:  task creation, critical sections, and mutual resource exclusion semaphores will clearly make any project requiring these software constructs much more robust and documentable. In terms of the product/project life cycle, anything done to facilitate a standard approach to the problem of multitasking/multithreading can only improve the over all product reliability situation.

To document some of my projects, I have created a web site called http:/// While still quite crude, this is where I plan to document some of my PIC based projects. For instance, last year, I set out to develop a I2C slave implementation that (unlike others Iíve seen) did not require external hardware to frame I2C messages blocks. Using the PIC emulator, this task turned out to be challenging--- but entirely doable.  I have therefore attempted to document this project from the moment of its inception to the final code.  The software/firmware life cycle is quite important to many these days. This is the reason that for this sample project, I attempted to provide as much information about the various states of development as possible. For instance, provide preliminary and detailed design information and modeled certain parts of the program using UML modeling language. These diagrams are available on the website.

In closing, I have to say that of all the things that give me the most satisfaction, it is in seeing something controlled by an embedded PIC micro controller move or just do something. Nothing Iíve done during the last few years gives me more enjoyment then writing C code and running it on one of these 20 MIPS devices. As Iíve said, I started out using four bit processors--- advancing up to 32 bit processors, and now have come full circle back to eight bit embedded micro controllers.