Creating a Low-Level Serial Protocol

When developing systems of any complexity we’re tasked with either making multiple modules inside a system talk to each other, or the system itself talks to the outside world. It’s at this point that we need to develop a protocol to be able to send any amount of coherent data back and forth. Whether you’re […]

The CRC8 Checksum

The Cyclic Redundancy Check (CRC) byte in a serial packet is used for error detection. The method covered in this post is identical to the Maxim/Dallas 1-wire devices called Dow CRC. This is done through the following formula: Lucky for us, this data can be compressed to a simple Look Up Table (LUT) for efficient […]

Software: Octave

GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also […]

Timer Module on PIC18 Microcontrollers (in mikroC)

Timers are a fundamental building block in embedded programming and are integral when implementing an RTOS or an RTOS like solution. The high-level basic premise is that the internal module counts “ticks” either from an internal clock source or an external oscillator. When this count overflows an interrupt is thrown. Depending on how you configure […]

Visual Studio Code

Microsoft’s new Visual Studio offering isn’t a full IDE but a light-weight (and cross-platform) text editor. Packed with intellisense, version control, and debug tools it can be a powerful addition to your tool-box. The Good VS Code is simple, clean, and easy to use. Since I don’t tend to program a substantial amount of C# […]