Bitwise

Laser Soldering (Part 1)

I’ve been working on a little side project recently. My goal is to be able to use a laser beam to solder components to circuit boards, in an automated, repeatable fashion using a CNC machine.

Read more →

On peripherals and abstractions

I’ve been working on a C++ embedded hardware abstraction layer as a side project for a little while and am trying to make use of as many zero-cost abstractions as possible. The ultimate goal is to have a low-level yet still easy-to-use HAL which lets me take full advantage of C++’s advanced type system and higher level abstractions.

Read more →

How I made my first PCB, screwed up, and fixed it

A month ago or so I was asked by a relative to make a voltage regulator from 12VDC to 5VDC for charging a USB device like a smartphone from a motorcycle battery (this was the intended usage). Now I know you can find these commercially for a few dollars, but I thought it would be a good opportunity to learn how to design printed circuit boards.

Read more →

Backplane interfaces for embedded devices?

I’ve long been interested in plug-and-play interfaces such as PCI or PCI Express, especially those with extensible backplanes, and have been looking into creating some edge-connector cards for my own embedded, low-cost/low-power projects, where complex, multi-layer protocols such as PCI are too complicated and unnecessary yet some flexibility is desired after assembly, without having a mess of wires everywhere.

Read more →

A convenient circuit for testing I2C and SPI devices

Since I am currently working on integrating different devices into my bare metal kernel using the LPC1114’s hardware peripheral controllers, I figured I needed a reasonably convenient way to plug those devices onto a breadboard without spending too much time fiddling around with circuitry. This is what I came up with, feel free to use it as inspiration if you find it useful:

Read more →

A curious case of suboptimal code generation

While writing the scheduler for my bare metal kernel I noticed that the timing of the task interrupt was slightly off from what it should have been, by a few clock cycles. Not a huge problem, but it got me curious to investigate where the slowdown was. The problem, as it turns out, was more intricate than I originally thought.

Read more →

Reset status detection on LPC microcontrollers

In this first post I want to talk about reset status detection on the LPC line of microcontrollers by NXP, which I am currently experimenting with. They are nice little 32-bit chips, I recommend them if you like bare-metal development, although they do have Arduino-like SDKs if you prefer.

Read more →