
Discover how to read and write C for embedded systems and distinguish embedded C from regular C. Build skills to program Atmel microcontrollers (Arduino) with hands-on, uncut demonstrations.
Set up your Linux environment for embedded development by installing the native C build chain and the AVR cross-compilation toolchain, and prepare to flash with avrdude.
Write your first C program, learn about preprocessor directives, the standard main function, printf, and return values, and compile and run on a Linux host for embedded development.
Explore variables and types in embedded C, declare and define variables, distinguish declarations from definitions, compare signed and unsigned, and understand type sizes and floating point basics.
Explore bitwise arithmetic in embedded C to set and get bits in control registers, using and to test, or to set, and xor to flip.
Learn how arrays are contiguous blocks of memory in C and how to define and access their elements. Understand structures, group related fields, and even create an array of structures.
Explore conditional statements in C by reading two integers from input and using if, else if, and else to direct code paths with boolean logic and comparisons.
Master switch statements in C to compare an expression against cases, use a jump table for fast dispatch, and apply breaks, defaults, and return values for clear, efficient code.
Master loops in C by exploring for, while, and do-while constructs for embedded programming, and learn to manage exit conditions and array iteration.
Learn how to create and call functions in C, understand return types, names, parameters, and prototypes and definitions, and how header files help avoid undefined references in embedded programs.
Explore pointers in C by examining variable scope, pass by value and by reference, and how memory layout and struct pointers use the address, ampersand, and arrow syntax.
define an embedded system and distinguish microcontrollers from microprocessors, then explain how embedded C differs from standard C, including boot, memory, peripherals, and tight resource constraints.
Explore the omega 328 avr microcontroller overview, focusing on memory constraints, peripherals uart, spi, and usb, bootloaders, and reading public data sheets to select a viable toolchain.
Learn to read the AVR data sheet, configure GPIO and DDR registers, toggle PB0 on port B, and blink an LED with delays in C for embedded development.
The fastest and easiest way to learn C Programming in Linux and Embedded Systems.
Many embedded programming courses make huge assumptions about your C programming and embedded knowledge before dropping you into the deep end of a complicated architecture or microcontroller. In this course, I intend to fix that. Here, I'll first teach you how to program in C in a way that is example driven. We'll start each lesson with a presentation and end it with an example problem. Next, we'll discuss what embedded C means. Finally, we'll program an embedded program in raw C on a microcontroller.
This course will teach you from start to finish how to program in C. Additionally, this course will teach you how to navigate the intimidating world of C programming as it applies to embedded systems. We'll navigate how to read a datasheet, and how to interpret that datasheet, and then use that information to write code for the microcontroller commonly found in the Arduino, the Atmega328p. An Arduino is beneficial to have for the end portion of this course, but not required.
What You'll Learn:
How to Program in C from the ground up
Embedded C vs Regular Linux or Windows C
How to Interpret a Datasheet
How to Compile C for an Embedded Microcontroller Target
Who Should Take This Course:
A new programmer who wants to learn C
A new programmer who wants to learn the difference between system C and embedded C
An Arduino hobbyist who wants to take their knowledge to the next level