TECH 3233
Microprocessor Tech
Spring 2017

Instructor: Daniel Kohn (
Office Hours: (click here)
Course Policies: (click here)
Grades: GradeWatch
Assignment Submission: Submit Assignments
Required Text: Various Handouts supplied by instructor.
Course Outline:
Jan 17Welcome

Course Policies
Jan 19Digital Logic Review Logic Review

Number Systems Review

IEEE Floating Point
Basic Gates

Jan 24+26Digital Logic Review
Flip Flops and Latches Review

Tri-State Buffers

Mux / DeMux

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

Internal Architecture
FF and Latches

Mux / DeMux / Ram
Multiple Roms


How A CPU Works

Lab #1 - Due start of next weeks lab.
Jan 31Intro to Arduino / ATmega 328PHarvard Vs Von NeumannATmega328P Website 
Feb 2Programming: Arduino vs C vs ASM How to get Hex FileLab #2 - Comparing Arduino, C and ASM Programming.
Feb 7ASM (Cont)Big-endian vs Little-endian HW #1 - Given the ASM Code from the Lab and the Hex File figure out how the hex relates to the section of code starting with 1: and ending with the brcc 1b. Due start of next class. Remember that we figured out the following:

Hex of 3,200,000

Use the ATMega328P Instruction Set Manual as a reference of the bits (nibbles) that make up the instructions.

Here is a spreadsheet of what we did in class.

Feb 9   Lab #3 - Using this Morse Code website as a referce (for letters to morse code and timing), modify both the Arduino and Arduino C (not the Arduino ASM) to spell out the first 3 letters of your last name as long (dash) and short (dit) led flashes. Submit arduino file via online submission for both. Due Feb 16.
Feb 14Port Output (Stepper Motor Driver Discussion)   
Feb 16Attend Auto Id Session (More Info)  Lab #4 - Stepper Motor Drive (Full step and Half step) as discussed in class. Code due via online submission by start of next weeks lab.
Feb 21Port Input
Internal Pull Up's
Feb 23   Lab #5 - Using 3 inputs and the stepper motor program (for half step), use one input to control forward/reverse, one input to control full/half step, and the 3rd input to control run/stop. Due by end of lab on Mar 2.
Feb 28    
Mar 2Work on Lab #5   
Mar 7Spring Break (No Class)   
Mar 9Spring Break (No Class)   
Mar 14A/D ConversionADC AVR

AVR ADC Tutorial
See AVR uCont Manual Chapter 28. 
Mar 16   Lab #6 - Use a Potentiometer input to adjust the speed of the stepper motor in Lab #5. Due March 23 at start of lab.
Mar 21No Class   
Mar 23Uart (Asyc Serial)Sample CodeSee AVR uCont Manual Chapter 24.Lab #7 - Using the Uart and the A2D Converter, display the current room temperature to the console (or serial plotter) once every 5 seconds. The temperature sensor to be used will be an LM35.
Mar 28TimersAVR Timers

Note: TCCR0 reg is for an 8-bit processor. For the ATmega328/P the register is TCCR0B.
See AVR uCont Manual chapters 19-22. 
Mar 30PWM  Lab #8 - control a servo motor using an 8bit timer.
Apr 4Magnetic Card Reader Magnetic Card Readers 
Apr 6   Lab #9 - read the binary pattern comming from the magnetic card reader and display on the terminal.
Apr 11Timer Input CaptureReading  
Apr 13    
Apr 18Discuss final project  Lab #10 (Final Exam) - Using the robot bases in ET 227 modified for Arduino (see pic) and using the onboard H-Bridge and Sonar write the program that will have the robot go forward until the sonar encounters an object within 2 ft. If within that range, generate a random number and turn left 30 deg or right 45 deg based on the random number, then continue to go straight (program should run indefinitely). Sonar should be used in Mode 1 (SRF04 Compatible Mode) trigger via the main loop and the echo should use a TC1 interrupt. Due (code and demo) by Thus May 4 @ 7:30pm.
Apr 20    
Apr 25    
Reference Links: Running Simulations on Website
  ATmega328P Website
  ATmega328P / Arduino pinout