Beyond Arduino, Part 4: C for Embedded Applications
4.1 (7 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
240 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Beyond Arduino, Part 4: C for Embedded Applications to your Wishlist.

Add to Wishlist

Beyond Arduino, Part 4: C for Embedded Applications

Learn how to write better code for your embedded hardware or IoT projects like professionals, not beginners, do.
4.1 (7 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
240 students enrolled
Last updated 5/2017
English
Current price: $10 Original price: $200 Discount: 95% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 2.5 hours on-demand video
  • 16 Articles
  • 3 Coding exercises
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Create professional grade embedded applications.
  • Produce embedded applications employing THE most widely used programming language ever.
  • Benefit from a wide variety of C compiler and preprocessor tricks to help you make better embedded applications.
View Curriculum
Requirements
  • You should know Basic Microcontroller Programming.
  • You should at least be familiar with the C Programming Language (Good news, just so you know: The Arduino uses C).
Description

In this fourth part of the Beyond Arduino series, you'll learn many techniques to produce more efficient and professional embedded applications. It's time to leave the toy programs behind.

You'll learn how to handle memory-attached hardware registers properly, how to perform bitwise manipulation of data, how to handle interrupts on your microcontroller development platform, and many other techniques which you aren't always aware of because of the immense body of elements that conceal the details in many beginner platforms, like the Arduino, for the sake of simplicity.

You'll also learn how to deal with very basic, typically 8-bit, microcontrollers that don't have a Floating Point Unit and still write code that gets the job done in the best way possible even with the limited resources available. 

After grasping this knowledge, we expect you to think differently when designing your embedded applications in the future. By adding these best practices to your bag of tricks, you'll get one step closer to making embedded applications like a professional, and hopefully you'll feel less like a beginner.

Who is the target audience?
  • Arduino Developers.
  • Software Developers.
  • Makers.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
71 Lectures
02:51:38
+
Introduction
5 Lectures 16:20

Instructor Introduction
01:30



What's with the C/C++ thing?
03:06
+
The C Programming Language Review
23 Lectures 54:26


C is a Compiled Programming Language
03:37

C vs. Java
04:18

Syntax
02:51

Hello World
01:38

Variables and Arithmetic
02:30

If-Then-Else Statements
01:43

Case Statements
01:45

Loops
03:21

Supported Data Types
01:39

Chars aren't characters
02:38

No Strings in C
00:33

Character Arrays
01:53

No Booleans Either
01:07

Arrays
01:26

Pointers
01:03

Pointers Example Code
03:44

Pointers can be Indexed and Arrays Indirected
04:30

Fun with Pointers
1 question

Functions
01:18

Functions Example Code
03:20

Passing Parameters by Value or Reference
00:36

Example of Pointers and Parameters
03:06
+
What to do when there's no Floating Point Unit
5 Lectures 12:16

How FPU-less microcontrollers manage without an FPU
02:25

Fixed Point Math
03:10

A Very Clever Fixed Point Trick
01:58

Wait! Having an FPU isn't a Silver Bullet
01:58
+
A Few Preprocessor Tricks
9 Lectures 26:50
The C Preprocessor
02:56

Defining Constants
05:36

Conditional Inclusion of Code
04:22

Conditional Inclusion of Code Example
02:35

Embedded Debugging with a Knife in the Woods
01:15

The #else Directive
01:43

Wikipedia Example
01:39

Live Demo: Conditional Inclusion of Code
05:29

Key Ideas
01:15
+
A Few Compiler Tricks
17 Lectures 45:33
The C Compiler
01:50

First, a Thought Experiment
01:40

The Answers
01:02

Reason #1: Multiprocessors
03:11

Reason #2: Multithreading
02:00

Reason #3: Hardware-Attached Variables
03:33

Reason #4: Interrupts
02:30

The volatile Qualifier
02:36

Time Consuming Blocking Delays
04:01

Example: Blocking Delays
01:08

LPC1114 Tutorial
05:59

The KEIL Project
01:08

The delay() Function
05:13

The Rest of the Code
02:24

The main() Function
02:59

The walk() Function
01:33

Remember the const Qualifier
02:46
+
Alternatives to Traditional Functions
5 Lectures 06:54
Lookup Table Definition
01:06

Tradeoff between Lookup Tables and Traditional Functions
01:49

Macro Functions
01:54

Inline Functions
01:17

Macros vs Inline Functions
00:46
+
Bitwise Manipulation
6 Lectures 11:01
The trick: Binary Masks
00:56

Setting and clearing select bits
04:07

Reacting to select bits
01:08

Inverting Select Bits
00:52

A Meaningful Code Example
00:59

More Clever ways to access bits
02:56

Set and Clear bits here and there
1 question

Toggle a bit
1 question
+
Wrap Up
1 Lecture 00:33
Farewell
00:33
About the Instructor
Eduardo Corpeño
4.5 Average rating
125 Reviews
1,611 Students
5 Courses
Electrical & Computer Engineer

I'm an Electrical and Computer Engineer. I've been teaching Electrical and Computer Engineering at undergraduate and graduate for over 10 years now. 

I love hardware, software and teaching.

I have 5 courses on Udemy so far, one on a technique to solve engineering problems easily, and a series of 4 courses (so far) on the electronics and algorithms behind microcontroller platforms.

Among the subjects in the classes I teach on campus, my strongest are Electrical Circuit Theory, Electronic Devices, Digital Design, Computer Architecture, Microcontrollers, Assembly and C Programming for Embedded Applications, Hardware Description Language, Field Programmable Gate Arrays, Artificial Intelligence, Printed Circuit Board Design and Real Time Operating Systems.

Along with two of my finest colleagues, I created one of the first MOOCs in spanish, an introduction to the Raspberry Pi. We wrote a conference paper on the outcome of this very successful course. 

I recently got a Master of Science in Computer Science at Georgia Tech and I loved every minute of it.

Marissa Siliezar
4.5 Average rating
125 Reviews
1,611 Students
5 Courses
Telecom Engineer

Telecom Engineer passionate about new technologies and my family. The general background I have revolves around value added services in mobile services and also product marketing for a major brand of mobile devices. When it comes to hardware design I came across various developer platforms when designing my bachelor's thesis. After 6+ years of experience I became a mommy to my dear Ignacio and a stay at home mommy.