Introduction to Microcontrollers - Beginnings

Mike Silva
14 comments

Welcome to this Introduction to Microcontroller Programming tutorial series. If you are looking to learn the basics of embedded programming for microcontrollers (and a bit of embedded hardware design as well), I hope these tutorials will help you...


Coroutines in one page of C

Yossi Kreinin

A coroutine is a function that you can jump back into after returning from it - and it remembers where it was in the code, and all the variables. This is very useful at times. One use is generating a sequence of values. Here's how you can...


MSP430 LaunchPad Tutorial - Part 4 - UART Transmission

Enrico Garante
3 comments

Today we are going to learn how to communicate using UART with the Launchpad. For this purpose I will replace the default microcontroller that comes with the board with the MSP430G2553. It is the most powerful device in the MSP430 Value Line and...


MSP430 LaunchPad Tutorial - Part 3 - ADC

Enrico Garante
2 comments

In this new episode of our journey into MSP430 I will explain the basics of Analog to Digital Conversion on the MSP430G2231.We will write a program that will read an ADC channel and will toggle some leds based on the result of the...


Adventures in Signal Processing with Python

Jason Sachs
1 comment

Author’s note: This article was originally called Adventures in Signal Processing with Python (MATLAB? We don’t need no stinkin' MATLAB!) — the allusion to The Treasure of the Sierra Madre has been removed, in deference to being...


How FPGAs work, and why you'll buy one

Yossi Kreinin
2 comments

Today, pretty much everyone has a CPU, a DSP and a GPU, buried somewhere in their PC, phone, car, etc. Most don't know or care that they bought any of these, but they did. Will everyone, at some future point, also buy an FPGA? The market size...


MSP430 Launchpad Tutorial - Part 2 - Interrupts and timers

Enrico Garante
4 comments

What is an "interrupt"? It is a signal that informs our MCU that a certain event has happened, causing the interruption of the normal flow of the main program and the execution of an "interrupt routine", that handles the event and takes a...


MSP430 Launchpad Tutorial - Part 1 - Basics

Enrico Garante
4 comments

TI's LaunchPad is a complete MSP430 development environment: all you have to do is download and install CCS IDE (login required), connect your G2231-ready LaunchPad to your computer with the included mini-usb cable, and you are ready to...


Endianness and Serial Communication

Stephen Friederichs
1 comment

Endianness is a consideration that is easily overlooked in the design of embedded systems. I myself am amply guilty of this oversight. It’s something you don’t ever have to worry about if you’re only working with a single...


StrangeCPU #1. A new CPU

Victor Yurkovsky

Summary: In this multi-part series I will share with you a design, implementation notes and code for a slightly different kind of a CPU featuring a novel token machine that resolves an 8-bit token to pretty much any address in a 32-bit or even...