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 […]
Month: August 2017
Hashes in the Firmware Development Workflow
Hashes are like checksums in that it takes an individual binary file and uses an algorithm based on the original file to generate an individual number. This number can then be compared to a reference number to determine integrity and authenticity of the file. These hashes play an integral part in production releases of a […]
C# Example – CRC8 Implementation
In support of my previous post on the CRC8 checksum. I compiled this basic program to provide a real-world implementation. The example uses a potential serial communication protocol that consists of a START and END deliminter using GREATER-THAN and LESS-THAN symbols. The first two bytes L1 and L0 indicate the length of the payload (Command […]
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 […]
Eagle Tip: Exporting Pick and Place Data
When submitting a design to a fab to get your electronics assembled, you’ll need to generate the “XY Data” file that can then be imported into the board houses’ software to program their Pick-and-Place machine. The default-installed ULP below will generate the data file in a format that matches Altium Designer and will be useable […]
Reading negative voltages with an ADC using passives
Reading simple 0 to 5V or 0 to 3.3V signals with an ADC is trivial and can be done entirely with the integrated hardware on most microcontrollers. Things get slightly more difficult when you need to sample analog signal that can be negative or positive. This blog post will walk you through a basic solution […]