TECH 3230
TECH 3230
Embedded System Programming
Fall 2026

Instructor Info

Daniel Kohn
Email: dekohn@memphis.edu
Office ET218
Office Hours

Course Info

Course Policies
Formal Report Guide
 • Numbering Equations in Word
GradeWatch Access
Submit Assignments

Textbooks

AVR Microcontrollers and ATMEL Studio for C Programming with Arduino by Warwick A. Smith ISBN 978-1-907920-46-2

Software

MPLAB X IDE
AVRDUDESS GUI for AVRDUDE
Microchip Studio 7
Arduino IDE (use Legacy IDE 1.8.x - for avrdude utility)
PuTTY
One Compiler (Online C)

Course Outline

DateTopicReadingHandoutsAssignments
Aug 25 (T)WelcomeIntroduction No Lab
Aug 27 (R)No Class   
Sep 1 (T)Review of programming fundamentals

Lab #1
Chp 1 - 4Lecture NotesLab 1 - Write your first C Program in Atmel / Microchip Studio.
Sep 3 (R)Special variable types and scopeChp 10.10 - 10.13Lecture Notes

Demo Code can be run HERE.
 
Sep 8 (T)Lab #2  Lab 2 - Variable Scope and Volatile Variables. Lab 2 (doc file)

Lab2.zip
Lab2b.zip
Sep 10 (R)Q&A C Reference Card 
Sep 15 (T)Bitwise operators and bit manipulationChp 6 (Number Systems Review)
Chp 12
Lecture NotesLab #3
Sep 17 (R)DDRx, PORTx, PINx
Testing input pins
Switch Bounce
   
Sep 22 (T)*Work on Lab #4  Lab #4 - Due TBD (but at least one week after Atmel Studio is working again)

Since Atmel Studio is not functioning correctly during class/lab. Please try to write the code in Notepad or Notepad ++ and we will test it when Atmel Studio is functioning again or an alternative can be found.
Sep 24 (R)*FunctionsChp 5Lecture Notes 
Sep 29 (T)*Pointers

Arrays
Chp 7

Chp 11
Lecture Notes

Lecture Notes
Lab #5- using One Compiler and the hex_dump function, investigate variables and arrays in memory.
Oct 1 (R)*Arrays/Strings (Cont)Chp 11.2 - 11.5   
Oct 6 (T)Transitioning to MPLAB X IDE  Install MPLAB X IDE and AVRDUDDESS and complete Lab #4 by end of Lab.

We might also attempt to get Lab #5 working on an Arduino as well if time permits.
Oct 8 (R)Catchup on Labs   
Oct 13 (T)Fall Break   
Oct 15 (R)No Class (Instructor out of town)   
Oct 20 (T)Arrays/Strings (Cont)Chp 11.2 - 11.5Lecture NotesLab #6
Oct 22 (R)Discuss GPS ProjectNEO-6M GPS

Datasheet for NEO-6 IC

NMEA-0183 GPS Messages
 Class project - using the GPS provided, read the incoming messages, parce the messages and output coordinates that can be copy/pased to google maps to show the current location. Work should be broken up amongst the students in the class, each student responsible for one or more functions to perform the various tasks nessisary to produce the required output.

Due: TBA
     
[* - indicates when Atmel Studio was non-functional]


Reference Links

ATmega328P Website
  • ATMega 328P Data Sheet
  • AVR Instruction Set
ATmega328P / Arduino pinout
C Reference Card
NASA Style Guide
The C Programming Langague Reference


Info needed for Labs - obsolete due to switching to AVRDUDDESS

Determine Com Port

With Arduino plugged in to computer's USB port
Win 10 - Search for "Powershell" and open
Type - "Get-WMIObject Win32_SerialPort" (no quotes)
check results for Arduino Uno (Com __ )

Atmel Studio

Setup Strings:

C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe

-v -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -p atmega328p -c arduino -P COM7 -b 115200 -U flash:w:$(TargetDir)$(TargetName).hex:i

To get printf to work with floating point values:

Project | nameofproject Properties | Toolchain : AVR/GNU Linker | General | Check "Use vprintf library(-Wl,-u,vfprintf)"
Project | nameofproject Properties | Toolchain : AVR/GNU Linker | Miscellaneous | Other Linker Flags put into textbox | "-lprintf_flt" (leave off quotes).