Embedded Computing
  • About
  • Blog
  • Hardware
    • Which Platform?
    • Controller Platforms >
      • Adafruit Platform
      • Arduino Plaform
      • BBC micro:bit
      • Espressif Platform
      • iLabs Platform
      • Raspberry Pi Platform (MCU)
      • Seeed Platform
      • Silicon Labs Platform
      • Teensy Plaform
    • Computer Platforms >
      • BeagleBone Platform
      • Raspberry Pi Platform (SBC)
      • UDOO Platform
    • Peripherals >
      • Shields
      • Grove System
      • Sensors
      • Actuators
    • Displays >
      • E-Paper Displays
      • Reflective Displays
      • TFT Displays
      • LCD Displays
    • Legacy Platforms >
      • chipKIT Plaform
      • 4D Systems Platform
      • Intel Platform
      • LaunchPad Plaform
      • BoosterPacks for LaunchPads
      • LightBlue Bean
      • Maple Plaform
      • Mediatek Platform
      • Microsoft Azure IoT DevKit
      • Particle Platform
  • Software
    • Exploring RTOS with Galaxia >
      • Event Library
      • Semaphore Library
      • Mailbox Library
      • Timer Library
      • Clock Library
      • SWI Library
      • Task Library
    • Ultra-Low Power with EnergyTrace >
      • Ultra-Low Power with MSP430
      • Ultra-Low Power with Energia MT and Galaxia
    • Using Integers Instead of Reals
    • Going Python?
  • IoT
    • IoT Platforms: Which Hardware? >
      • Matter with Silicon Labs MG24
    • IoT Services: Which Solution? >
      • Recommended IoT Solutions
      • Platform-Specific IoT Solutions
      • Other IoT Solutions
      • Not tested IoT Solutions
      • Notification Solutions
    • Get Date and Time from Internet with NTP
    • Fast and Easy WiFi Connection with QR-Code
  • Tools
    • How to Start?
    • Reference >
      • Asking for Help
      • Boards Pins Maps
      • Ruler
      • Boards and Plugs
      • I²C Logic Level Converter
      • Standards for Connectors
    • Training >
      • Texas Instruments Workshops
      • Embedded Systems: Shape The World — MOOC edX UTAustinX UT.6.02x
      • Embedded Systems - Shape The World: Microcontroller Input/Output — MOOC edX UTAustinX UT.6.10x
      • Embedded Systems - Shape The World: Multi-Threaded Interfacing — MOOC edX UTAustinX UT.6.20x
      • Real-Time Bluetooth Networks: Shape the World — MOOC edX UTAustinX UT.RTBN.12.01x
      • Systems Thinking with Texas Instruments Robotics System Learning Kit
    • Books >
      • Getting Started with the MSP430 LaunchPad
      • Getting Started with Arduino
      • Arduino Cookbook
    • IDE >
      • The Battle of IDEs
      • More Options
      • Assessing the Next Generation of IDEs
      • Tools for Documentation
    • Equipment >
      • Saleae Logic Analyser
      • Rigol DS1102E Oscilloscope
      • XDS110 Debug Probe with EnergyTrace​
      • Segger J-Link Programmer-Debugger
      • Nordic Power Profiler Kit II
  • Projects
    • Libraries >
      • Master I²C Software Library
      • Date and Time Library
      • highView Library Suite
      • Others Libraries
    • smartDevices >
      • I²C smartColours Smart Sensor
      • I²C smartRFID Smart Sensor
      • I²C smartLED Display
      • I²C smartControls Smart Device
      • I²C smartWiFi Smart Device
      • I²C smartBLE Smart Device
      • I²C smartNode Smart Device
    • IoT Projects >
      • Remote E-Paper Weather and Message Board
      • Typie-Walkie with LoRa and E-Paper Screen
      • Typie-Walkie with E-Paper Screen
      • Remote e-Paper Pictures Panel
      • Remote e-Paper Messages Panel
      • Industrial IoT Project
      • Remote Contactless Temperature Monitor
      • Using Node-RED for IIoT
      • Low Power Home Network Weather Monitoring
      • Updated Low Power Home Network Weather Monitoring
      • Weather and Security Station with Blynk
      • SensorTag to Blynk Using Node-RED
      • Pervasive Reporting
    • AI Projects >
      • Colour Recognition with Neural Network
    • Other Projects >
      • Air Quality Monitoring
      • Driving a Large E-Paper Display with a Compact Xiao RP2040
      • Low-Power E-Paper Weather Station
      • Portable Particulate​ Matter Monitor
      • FRAM-based E-Paper Screen Controller
      • General Purpose 3.5" Screen
      • Colour Recognition with Neural Network
      • A Low Power Weather Station
      • Digital Volt-Amp-Watt Meter
      • Mobile Measurement with LCD Display
      • Screen with SRAM for GUI
      • Volt-Amp-Watt-Meter for Grove
      • Multi-Touch Project with CapTIvate

Embedded Systems: Shape The World — MOOC edX UTAustinX UT.6.02x

I've been playing with embedded systems for 5 years now. Most of it was self-taught. Even if I've managed to develop complex projects, I was relying mostly on a hardware abstraction layer and never have the opportunity to deal with the registers.

I was feeling the lack of structured foundation and method, so I decided to start a course on embedded computing. The MOOC —or massive open online course— seemed to be the best solution for studying at my own pace. 

The teachers are Dr. Jonathan Valvano —who has written many books on embedded systems— and Dr. Ramesh Yerraballi, both at the University of Texas at Austin. The course on edX is free but you can apply for a certificate for a small fee.

The course Embedded Systems: Shape The World has been split in two: 
  • Embedded Systems - Shape The World: Microcontroller Input/Output (UT.6.10x) includes chapters 1 to 10, and 
  • Embedded Systems - Shape The World: Multi-Threaded Interfacing (UT.6.20x) goes through chapters 11 to 16.
The course is 15 week long with a recommended effort of 10 hours per week, and consists on 16 chapters.
  1. Welcome and Introduction to Course and Staff
  2. Fundamental Concepts - Numbers, Computers, and ARM Cortex M
  3. Electronics - Resistors, Voltage, Current and Ohm’s Law    
  4. Digital Logic - transistors, flip flops and logic functions
  5. Introduction to C programming
  6. Microcontroller Input/Output
  7. Design and Development Process
  8. Interfacing Switches and LEDs
  9. Arrays and Functional Debugging
  10. Finite State Machines
  11. UART - The Serial Interface, I/O Synchronization
  12. Interrupts
  13. DAC and Sound
  14. ADC and Data Acquisition
  15. Systems Approach to Game Design
  16. Wireless Communication and the Internet of Things
Picture

What's on a Chapter

Each chapter contains
  • Videos to explain the concepts, usually one 5 to 15 minute-long video per concept,
  • Text, illustrated with graphics and code,
  • Checkpoint about the main concepts,
  • A detailed example available on Keil, with the code commented,
  • A quizz, part of the grade,
  • A lab, a program to develop on Keil with two grades: one in simulation mode and another on the real board,
  • References and links to additional material, and
  • A forum where the teachers and the students exchange and help together.

This approach provides the opportunity to repeat the important things as many times as possible. Everyone knows that repetition is at the very core of teaching!

I really appreciate the pace of the course. On an one hour session, I can study a whole concept with the text and the readings, and then check it with the checkpoints at the next session.
Picture
A video comments the code of a detailed example 

Hands On!

All the lab activities are done with a LaunchPad TM4C123 (previously LaunchPad LM4F120) I was familiar with, and other components like resistors, LEDs and switches. 

A Nokia 5110 LCD screen and the CC3100 BoosterPack are optional, although the later is required for the chapter on IoT. 

Circuits are built on a breadboard and tested with the LaunchPad. Projects includes a piano with a 4-bit DAC, traffic lights for cars and pedestrians, and even a weather station based on internet.
Picture
A 4-bit DAC for sound on lab 13
This is the real fun part. All projects are coded on Keil, the official IDE from ARM.

The laboratory comes with many instruments, of which a voltage meter, a logic analyser, an oscilloscope, and even a simulated Nokia 5110 screen. 

The simulator allows to generate inputs and monitor outputs. It is a plug-in specifically designed for this course and runs on Keil.


Picture
The laboratory and its tools at home!
The grading process evaluates the project first on emulation mode and then on the real board. When an error occurs, a understandable message helps the student to spot and fix the code.

Be ready to try and try again. If you're stuck, you can ask for help on the forum. Students exchange tips and tricks, and teachers provide pointers to the right direction. 

Most of the labs are doable, except Lab 10 which combines two topics, Finite State Machine and GPIOs.  

I was close to the suggested 10 hours per week.
Picture
The lab of chapter 16 for Internet of Things

My Own Experience

This MOOC gave me a good understanding of the embedded systems and reviewed the most important components of a micro-controller. 

Obviously, covering such a large topic as embedded computing is just impossible, but the course succeeds in providing a sure path to explore new fields. Among other methods, it teaches how to write a requirements document, how to read a data-sheet —the Tiva TM4C123 data-sheet is 1400-page long!— and how to perform debugging. 

The forum plays an important part on the course, as teachers provide help and students discuss about alternatives and other projects. 

The only caveat I've found so far, there is no mention of the frameworks like TivaWare or mbed or Energia. Coding 13+4 lines for an analog input seems tedious when a couple of lines would do the work. But it's worth knowing what's behind. 

Now, to be really successful, be ready and commit yourself with one hour distraction-free session a day for 15 weeks, a notebook to take notes, and a large desk for the labs!

Let's hope about a new MOOC on RTOS next year!  
​
// Declare analog input PE2/A1
SYSCTL_RCGC2_R |= 0x00000010;
GPIO_PORTE_DIR_R &= ~0b00000100;
GPIO_PORTE_AFSEL_R |= 0b00000100;
GPIO_PORTE_DEN_R &= ~ 0b00000100;
GPIO_PORTE_AMSEL_R |= 0b00000100;
SYSCTL_RCGC0_R |= 0x00010000;
SYSCTL_RCGC0_R &= ~0x00000300;
ADC0_SSPRI_R = 0x0123;
ADC0_ACTSS_R &= ~0x0008;
ADC0_EMUX_R &= ~0xf000; 
ADC0_SSMUX3_R &= ~0x000f; 
ADC0_SSMUX3_R += 1; 
ADC0_SSCTL3_R = 0x0006; 
ADC0_ACTSS_R |= 0x0008; 

// Read value form PE2/A1
ADC0_PSSI_R = 0x0008; 
while ((ADC0_RIS_R & 0x08) == 0);
result = ADC0_SSFIFO3_R & 0xfff;
ADC0_ISC_R = 0x0008;

Pros

  • Excellent introduction to embedded systems
  • Great labs with tools
  • Adapted pace 

Cons

  • Keil on Windows only
  • Some bugs in simulation mode

Wrap-Up

  • Excellent introduction to embedded systems
  • Be ready to invest time and effort to make  this course successful

Links

  • edX
  • Embedded Systems - Shape The World
  • The University of Texas at Austin 
Picture
Picture
Published: 03 May 2015
Updated: 30 Mar 2019

Powered by Create your own unique website with customizable templates.