Software Design

Software Design & Debugging

Software Design From John Heritage





Software Design & Development

My software expertise is of excellent quality, and can demonstrate good design skills, clarity of content and structure. I also have a wide range of experience of various language and development tools, some of this is below-

  • Firmware C
  • Visual C, C++, Basic
  • PHP, scripting languages
  • Assembler
  • Labview™
  • C32
  • C16
  • XC32
  • XC16
  • Realtime Systems
  • Embedded Systems
  • PC Applications
  • Control
  • Embedded
  • Image Processing
  • Website, Web Page Design

Structured Software Development

Creating well structure embedded software libraries is very important when it comes to designing quality electronic products. Back in the 1990’s when I first started designing with 8bit micro’s, due to their small memory size, I had to program the micro’s in a low level assembly language. The C code generated by the compiler was just too large in that era for the majority of micro on offer to me. Working in assembly language is fine but it does have it’s limitations, assembly language is not as descriptive as C, so understanding the software code is more challenging, especially if you come back to it after a few years down the line! Assembly language is not very portable as it does not work in libraries, so moving code from one micro to another can be an uphill struggle.

C Language is a very structured software foundation to build quality electronic products on, offering the engineer software libraries, TCP stacks, powerful plugins, etc. Thus allowing code portability between micro’s and different product designs, Microchip offer a very powerful software and debugging environment called MPLABX as can be seen below. This environment allows the software / electronics engineer to work and design in one powerful package with an array debugging and software tools at his disposal.

Software Design From John Heritage

The Power Of Programming In C

Its fair to say the more complex and powerful the microprocessor, the more deeper and advanced will be the software programming. That said, I spend a great deal of time writing quality structured stable software routines ensuring code efficiency and error free stable operation. Each Firmware / Software release is always logged and documented with vital changes so that a historical log can be kept. With many of my current and future electronic designs, firmware and software updates can be implemented via WiFi or Internet connectivity, thus saving the inconvenience physical product inspection and programming.

I always ensure my C code is very well documented and create C headers for all my libraries, defining logical descriptive definitions for all my variables, this aids the logic throughout my code and make future development and code updates much more tangible. I always write my C functions efficiently ensuring processor time is not wasted in any one loop or function, with careful thought and planning, this can be achieved quite easily. I also pay great attention to the code design of interrupts, and the new PIC32 micro have a whopping 68 interrupt vectors! It’s always of paramount importance to ensure minimal time is spent in an interrupt vector and efficient code servicing of the interrupt is achieved.