EmbeddedRelated.com
Tutorials
The 2026 Embedded Online Conference

MSP430 LaunchPad Tutorial - Part 4 - UART Transmission

Enrico GaranteEnrico Garante July 3, 201320 comments

Want to stream sensor or debug data from an MSP430 LaunchPad to a PC or Bluetooth module? Enrico swaps in an MSP430G2553 and shows how to configure SMCLK, P1 pin multiplexing, and UCA0 baud/dividers (with modulation) to approximate 115200 baud. The post also walks through interrupt-driven RX/TX handling and a low-power wait loop that sends a "Hello World" reply on demand.


MSP430 LaunchPad Tutorial - Part 3 - ADC

Enrico GaranteEnrico Garante June 25, 20138 comments

Enrico Garante walks through practical ADC use on the MSP430G2231, from a single-channel read that toggles LaunchPad LEDs to multi-channel repeated conversions. The post includes complete code, an ADC10 interrupt example to wake from low-power mode, and a DTC-backed array transfer so you can collect samples without polling. A short CCS debugging tip shows how to watch ADC variables while running.


MSP430 Launchpad Tutorial - Part 2 - Interrupts and timers

Enrico GaranteEnrico Garante June 17, 201342 comments

Interrupts let the MSP430 respond to events without wasting CPU time, and this tutorial walks through using TimerA and Port 1 interrupts on the LaunchPad. Enrico shows how to configure TACTL, CCR0 and CCTL0 to generate a periodic TimerA interrupt, and how to set up P1IE, P1IES and P1IFG to catch a button press. The code toggles LEDs and enters LPM0 while waiting for interrupts.


An Introduction to Embedded Development

Peter JohanssonPeter Johansson June 14, 20133 comments

Peter Johansson launches a beginner-friendly series that teaches embedded development from the ground up, using the TI MSP430 while keeping lessons portable to other microcontrollers. No prior embedded experience is assumed, though a solid grasp of C and basic electronics will help. The series covers tool selection, the MSP430 LaunchPad, recommended books and online resources, and a hands-on roadmap toward writing your first program.


MSP430 Launchpad Tutorial - Part 1 - Basics

Enrico GaranteEnrico Garante June 14, 201320 comments

A working button-driven LED on the MSP430 LaunchPad is only a few steps away. Enrico Garante walks through creating a CCS project, setting P1.0 as the LED output and enabling P1.3 button interrupts, then shows the interrupt service routine that toggles the LED. The short tutorial covers stopping the watchdog, configuring P1DIR/P1OUT, clearing flags, and launching the code so you can get blinking quickly.


Endianness and Serial Communication

Stephen FriederichsStephen Friederichs May 20, 20131 comment

A single wrong byte order can cost you a day of debugging, and Stephen Friederichs walks through how to avoid that when sending multi-byte data over a byte-oriented serial link. He demonstrates an ATmega328P sending 16-bit ADC readings, capturing raw bytes with RealTerm, and plotting with Octave, showing how swapped endianness can produce plausible but incorrect results. The post gives practical steps to capture, test, and verify byte order.


C Programming Techniques: Function Call Inlining

Fabien Le MentecFabien Le Mentec April 29, 20137 comments

Fabien Le Mentec shows how you can keep clean C interfaces while recovering the cycles lost to function call overhead. The post demonstrates static inline and header inclusion techniques, then compares generated ARM assembly for an inlined versus non inlined bit test. Read it to see concrete assembly differences, compiler hints, and the practical trade off between speed and code size on embedded targets.


Debugging with Heartbeat LEDs

Stephen FriederichsStephen Friederichs April 1, 2013

Heartbeat LEDs are one of the simplest and most effective debugging tools for embedded systems. Stephen Friederichs explains how a visible 1Hz blink from your main loop or RTOS idle task proves the MCU is executing and quickly highlights problems like failed programming, watchdog resets, infinite loops, or clock misconfiguration. He also explains why using hardware timers instead of delay loops keeps the blink nonblocking and accurate.


Layout recomendations and tips for best performance against EMC

Dr. Maykel AlonsoDr. Maykel Alonso January 4, 2013

Good PCB layout will prevent many EMC headaches before you even power the board. Maykel Alonso offers a practical checklist covering component and feed analysis, package and PCB choices, placement, routing, and via rules. The post focuses on concrete, low-effort measures like preferring SMD parts, using a 4-layer FR-4 stack with dedicated ground and power planes, and keeping return paths tight to cut emissions and susceptibility.


LCD Control with an MCU

Dr Cagri TanrioverDr Cagri Tanriover November 17, 20129 comments

Dr Cagri Tanriover set out to add a cheap 2x16 JHD162A LCD to an MCU project and ran into surprisingly opaque datasheets and quirky behavior. This post walks through the wiring, a reliable initialization sequence, contrast troubleshooting, and practical scrolling and CGRAM tips that saved debugging time. Read it for hands-on fixes and gotchas that datasheets often omit.


Debugging with Heartbeat LEDs

Stephen FriederichsStephen Friederichs April 1, 2013

Heartbeat LEDs are one of the simplest and most effective debugging tools for embedded systems. Stephen Friederichs explains how a visible 1Hz blink from your main loop or RTOS idle task proves the MCU is executing and quickly highlights problems like failed programming, watchdog resets, infinite loops, or clock misconfiguration. He also explains why using hardware timers instead of delay loops keeps the blink nonblocking and accurate.


Understanding Yocto Project Layers: A Modular Approach to Embedded Systems Development

Aaksha JaywantAaksha Jaywant September 16, 2024

Managing metadata across embedded Linux builds gets messy fast, so the Yocto Project uses layers to keep things modular and reusable. This post walks through inspecting active layers with bitbake-layers, controlling overrides with BBFILE_PRIORITY, and creating a meta-yocto-splash-img layer that uses a .bbappend to replace psplash. It finishes by showing how to verify the custom splash screen in QEMU so you can test safely before deploying to hardware.


Embedded Programming Video Course Shows How OOP Works Under the Hood

Miro SamekMiro Samek September 29, 2019

Want to see how OOP actually maps to machine level code? This free video course walks through encapsulation, inheritance, and polymorphism with hands-on comparisons between C and C++. You will inspect C implementations, compiler-generated code, and debug traces, and learn how encapsulation relates to RTOS concurrency. The polymorphism lesson reverses the usual order to expose runtime costs and previews implementing polymorphism in C.


Getting Started With Zephyr: Saving Data To Files

Mohammed BillooMohammed Billoo October 31, 20231 comment

In this blog post, I show how to implement a Zephyr application to mount a microSD card, create a new file on the microSD card, and write data to it. The lessons learned from such an application can be helpful for devices out in the field that need to write data to off-board memory periodically, especially in cases where Internet access may be sporadic.


Arduino robotics #3 - wiring, coding and a test run

Lonnie HoneycuttLonnie Honeycutt October 17, 2013

Lonnie Honeycutt walks through wiring, coding, and the first test run of Clusterbot, a budget Arduino robot build costing about $50. The post provides a clear pin-mapping to the TB6612FNG motor driver, ready-to-upload Arduino movement functions, and practical tips like tinning thin battery wires. You also get PWM calibration values and the measured RPM timing the author used to make reliable turns.


Getting Started With Zephyr: Devicetrees

Mohammed BillooMohammed Billoo July 18, 20232 comments

This blog post provides an introduction to the "Devicetree", another unique concept in The Zephyr Project. We learn about the basic syntax of a device tree and how its structure and hierarchy mirror hardware, from the SoC to the final board. We also see how hardware described in a devicetree can be referenced and controlled in the source code of a Zephyr-based application.


Designing Embedded System with FPGA - 1

Pragnesh PatelPragnesh Patel October 28, 200711 comments

Getting an embedded system running on an FPGA is much simpler than it sounds when you use Xilinx EDK and a soft processor. Pragnesh Patel walks through a beginner-friendly approach using the MicroBlaze CPU, drag-and-drop IP cores, and a Spartan-3E starter kit so you can assemble peripherals without deep VHDL knowledge. The post focuses on the EDK base system builder and first setup steps to generate a working design.


Getting Started With Zephyr: Writing Data to EEPROM

Mohammed BillooMohammed Billoo December 6, 20235 comments

In this blog post, I show how to implement a Zephyr application to interact with EEPROM. I show how the Zephyr device driver model allows application writers to be free of the underlying implementation details. Unfortunately, the application didn't work as expected, and I'm still troubleshooting the cause.


Good old multiplexed keypad in an embedded system

Jayaraman Kiruthi VasanJayaraman Kiruthi Vasan April 17, 20118 comments

Multiplexed keypads remain the most practical input for mid-budget embedded projects, especially where hard-wired keys survive harsh environments and rough usage. Jayaraman lays out a simple, reusable approach by splitting key handling into three tiny modules: a GlanceKey quick check, on-demand Decode, and a compact state machine. The pattern cuts CPU time, runs from a timer, and boosts portability across MCUs.


nRF5 to nRF Connect SDK migration via DFU over BLE

Mike VoytovichMike Voytovich September 7, 20234 comments

This writeup contains some notes on how I was able to migrate one of my clients projects based on the nRF5 SDK, to nRF Connect SDK (NCS) based firmware, via a DFU to devices in the field over BLE.


The 2026 Embedded Online Conference