TECH 3233
Microprocessor Tech
Spring 2019

Instructor Info

Daniel Kohn
Email: dekohn@memphis.edu
Office ET218
Phone: 678-4515
Office Hours

Course Info

Course Policies
GradeWatch Access

Assignment Submission

Submit Assignments

Required Text

The AVR Microcontroller and Embedded Systems Using Assembly and C: Using Arduino Uno and Atmel Studio by Sarmad Naimi and Muhammad Ali Mazidi 2nd Ed

Author's Website http://nicerland.com/

Required Software

Atmel Studio 7
Arduino IDE (for avrdude utility)

Course Outline:

DateTopicReadingHandoutsAssignments
Jan 15 Welcome

Course Policies

Introduction Computer History

Number Systems

Computer History
 · History of Intel Processors (Video)
 · History Lost and Found - Mark I Computer (Video)
 · History Lost and Found - ENIAC (Video)
 · History Lost and Found - Transistor (Video)
 · History Lost and Found - Apple Computer (Video)

Number Systems

Class Notes


Class Notes
 
Jan 17 Memory and Bus Architecture Flip Flops and Latches Review

Mux / DeMux

Tri-State Buffers

Digital Buffer and the Tri-State Buffer

Memory (Note: This chapter goes into greater detail than required for this class.)

  Lab #1 - Memory (due start of next lab - electronic submission NOT required)
Jan 22Memory and Bus Architecture (cont)

CPU Architecture
Internal ArchitectureHow A CPU Works 
Jan 24Ram and Bus Architecture Lab #2 RAM Read/Write Cycles due by end of lab.
Jan 29C Code, ASM and Machine LangaugeATmega328 Datasheet

AVR Instruction Set

What is a Hex file
  
Jan 31C Code, ASM and Machine Langauge (Cont) Lab #3 Atmel, ASM and C. Due by start of next week's lab.

Note: Please save your settings by following THESE INSTRUCTIONS.
Feb 5Input / Output Chp 4

Chp 7 (for C Examples)

Stepper Motors

C Review
 · For Loops
 · Arrays
 · Bitwise Operators
 · Data Types
  
Feb 7Stepper Motor Controller (Part a)  Lab #4a - When complete, demo to instructor and submit project (as zip file).
Feb 12Input Pins and MaskingMasking Especially Querying the status of a bit

Bitwise Operators
Using Bit Names 
Feb 14Stepper Motor Controller (Part b)  Lab #4b - When complete, demo to instructor and submit project (as zip file).
Feb 19Analog to Digital ConversionChp 13General ADC 
Feb 21ADC Lab  Lab #5 - Due by start of next weeks lab.
Feb 26Review for test
  • Computer History (matching)
  • Number Systems (Bin, Hex, Dec)
  • Bits, Bytes and Nibbles
  • CPU Architecture
  • ASM vs Machine Language
  • C Program (output)
  •    
    Feb 28Test #1    
    Mar 5Spring Break (No Class)   
    Mar 7Spring Break (No Lab)   
    Mar 12No Class   
    Mar 14Lab #4c  Lab 4c - add a potentiometer (0-5V adjustable) as an input to an ADC pin and use that to adjust the time delay (and therefore the speed) of the stepper motor (Continuation of lab 4).
    Mar 19C Review and Q&AC Tutorial / Test Page  
    Mar 21   Lab catch up day.
    Mar 26InterruptsChp 10 (especially 10.3)  
    Mar 28Magnetic Card Reader / Using Interrupts Mag Card Reader InfoLab #6 - Magnetic Card Reader (Interrupt) Lab.
         

    Reference Links:

    ATmega328P Website
    ATmega328P / Arduino pinout
    C Quick Reference


    Info needed for Labs

    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

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

    Atmel Studio add ins:

    Microchip Gallery

    Go to above link then search for "Microchip Gallery". Click on "Download" on left side of screen and run the downloaded file (if Atmel Studio was opened when you did this, close and reopen Atmel Studio). This should now allow Atmel Studio access to plugins (TOOLS | Extensions and Updates). It is suggested in go ahead and install "Terminal for Atmel Studio"

    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).