COSC 422/COSC 524 - Introduction to Microprocessors
Winter 2020
ID 24718/24720
PH 503 10:00-11:50am

Instructor: Dr. William Sverdlik
Office: 512 Something_or_other Pray-Harrold

Office Hours: (tentative)
MW 9:00-9:50,
MW 12:00-2:00,
W 4:30-5:30
Phone: 734-487-7081

Meeting Times: MW   503PH  10:00-11:50am

Textbook: No book to buy!! All material will be available from the Internet. 

Hardware: There is hardware to purchase. I have already emailed you about purchasing about $12 worth of electrical items from Amazon.
Additionally, you will need to purchase a robotics kit from Tinkertech. This is a Maker's Space on MIchigan Ave. in Yp[silanti. We will be spending some time there.

The TinkerTech robot will cost you about $90. The $90 plus your lab fee will also get you a one month membership at the Maker's Space and will also include training and
check-out on the laser cutter.

There will be one examination (Monday March 16)  (changed to Wednesday March 18)  a major programming project (broken up into smaller parts), and some "extra" work, plus surprise quizzes.
    - Examination: are open book, open notes. It is worth 100 points.
    - Quizzes (announced) Jan 27 and Feb. 17 . Open book and worth 50 points each
    - Quizzes  (unannounced) , and assorted assignments:  Probably about 5. Each worth 5 points. Here's a hint: if I say "try this", "do this", or "figure this out", there is a good chance I will quiz you on it.
    - Programming Assignments:
There will be 7 programming assignments. These are generally cumulative, that is, you must complete one before proceeding as they build upon each other. The firat 5 assignments are "solo" projects, the last 2 are team projects.
The end result is a remote controlled robot. Each programming assignment is worth 25 points.

The assignments (given in more detail below):
1) Flash an LED at 38 khz
2) Flash an LED on/off at 38khz for 1 millisecond intervals
3) Bit bash 3 bits. Hardwired processor to processor
4) Bit bash 3 bits with IR LED and IR receiver. Interrupt driven receiver.
5) Bit bash 3 bits. Transmitter uses keypad
6) Move robot forward for 2 feet, turn left, go forward 2 feet, turn right, go reverse 2 feet
7) Remote controlled robot (combine programs 5 and 6)

Extra Stuff : (probably working alone
) from time to time, I may approach you and give you some unknown piece of electronics. You will be given approximately 1 week to explain and demo this to class.  
Final Exam : Monday April 27 9:30-11:00. Comprehensive . 100 points

Total points=500

Approximate Grading Scale:
    450-500    A
    400-450    B
    325-400    C
    250-325    D
    <250         E

Important Dates This Semester
Jan. 6 - classes begin
Jan 20 - MLK Day (no classes)
Feb 24 - March 1 Winter Recess (no class)
March 11 - March 19 (changed! March 16-19) Bill is not here ( But Fear NOT! You will have class, including lectures and an exam)
April 20 - Last Day of Classes
April 27 - Your Final Exam

Cheating: It violates University policy, you don't do it. Cheating is defined as representing all or part of someones elses work as your own. While you are certainly encouraged to seek the advice of others in this class on assignments, the work you hand in should represent your own efforts. Violation of this rule will be dealt with according to University policy. If you are really stuck on a problem, come see the instructor!

What will happen in this class:
You will build and program a remote controlled robot. You will need to build both the robot and the remote control. Both require programming.

REFERENCES (I keep these open whenever I'm programming)

Skeleton Program (please note: all programs need to follow this format. In fact, you should **copy** this to start all programs)

Instruction Set References and defined constants


Full Instruction Set Reference
Data Sheet for PIC 16F62X

Burner Software
MPLAB IDE - GUI for programming chip (new version)
Older versions of MPLAB (scroll down to MPLAB IDE archives. I like versions in the 8's)
Parallax Propscope download
Parallax Oscilliscope download

Helpful (???) Videos

A Simple Introduction to Breadboards

MPLAB X IDE (the newer version of MPLAB) - how to generate a hex file from source

Video on Timing Loops (uploaded January 19,2017    length: 26:54)
Source code to go with video

Programming Assignment #1 (Due: Wednesday January 22)- Flash an LED at 38kHz
Programming Assignment #2 (Due: Wednesday January 29)- Flash LED at 38kHz for 1 millisecond, off for 1 millisecond
Homework 1 (not to hand in, but I will assume you know this)
Homework 2 (not to hand in, know the rest)

Programming Assignment #3 (Due: Wednesday  February 12) - Bit Banging

Homework 3 ( another quiz coming soon)

Sample I/O using Interrupts
Using the membrane keypad (you need this for project 4)

Programming Assignment #4 (Due: Wednesday March 4). Here's the assignment: redo assignment number 3 but use the IR LED and IR receiver I provided to you. This assigment MUST use interrupts. Specifically, on the receiver side, the IR receiver signal pin should be connected to pin B0. Recall, with no flashing LED this signal is HIGH. So an interrupt should occur on a HIGH-TO-LOW transition (that is to say, when the IR starts flashing).

Programming Assignment #5 (Due: Wednesday March 25). Here's the assignment: redo assignment number 4 but use a membrane keypad
that I will provide. Since you are transmitting 3 bits, the keys 0 thru 7 should be valid for transmisssion.

Assignment #6 (to be completed before your exam on March 16): watch video and do problems!

Some references forTimer0:
Timer0 reference 1
Timer 0 reference 2 (Microchip tutorial 1 Timer0)
Timer 0 Reference 3 (Microchip tutorial 2 on Timer0 interrupts)

Programming Assignments for the Rest of the Semester

------------------Old Class Below. Everything above is new and OK!! -----------------------------------------------

Programming Assignment #3 (Due Monday February 13) - Bit Banging
Programming Assignment #4 (Due Wednesday February 15) - Remote control robot !! Work in pairs. Robot
                   normally moves forward. When it detects 38kHz infrared LED, it stops. Remoce the LED and it                     moves again

Wednesday March 1 and Monday March 6 - Presentations of interrupts and timers

Programming Assignment #5 (Due: March 22,2017) Robot programming :
          a) Motor Control (Pulse Width Modulation) is controlled via timer interrupts. Timer is set to "low"                     time (20 milliseconds) and interrupt handler pulses motors high
          b) An external sensor, for now we use the robot antennaes, is hardwired to an interrupt line (line B0) and handled when triggered. Normally, the robot moves forward (see part a). When the antennaes are "triggered", the robot should move in reverse for 2 seconds and turn either left or right 30%. Then the normal program should take over (move forward).

Exam! Yes, we need to have one. Do you know the basic commands ? Can you poll a line, Can you write a timer loop ? We will have an examination on Wednesday March 29. You may bring nay printed material you like for reference; no computer access permitted.

Programming Assignment #6 (Wednesday April 10, 2017) - mystery sensor ?????


USART Transmitter
USART Receiver

Sample timer code

Harvard Architecture (wikipedia)

    Microchip - home of the PIC
    Data Sheet for the PIC 16F627/8

    PIC Training Videos!! Homework - watch them now!!
            My Notes on Video 1
    Some quick and dirty assembler issues
    Nigel's Page   

Sample Code
Skeleton Program
Language Tutorial
IO Example 1
IO Example with interrupts
Using FSR and INDF
    Watch Dog Timer (WDT)
   Timed Delays
    Seven Segment Display Documentation
    Seven Segment Display Code
   Code (c code) for reading an ADC0831 A/D converter
    Pulse Width Modulation (PWM) and Servo Motors
    Analog/Digital (A/D) Conversion and Serial Peripheral Interface (SPI)

Other Topics:
    SPI - Serial Peripheral Interface (wikipedia)
    II-C Protocol (I squared C)

The following is from an old class. Just use it as a reference; we'll update as the class progresses

What to do (this is informal at this point)
    Week 1 - watch all the PIC Training Videos
            To Do; some elementary electronics
    Week 2 - start reading the tutorials. You should read thru the first 7 lessons of "You should work thru this one"
            To Do: how to use programmer, oscilliscope,
    Week 3 - finish up the rest of the tutorials and start reading Nigel's Page tutorials
            To Do: analyze timing loops
    Week 4 - serial communication, bit bashing
    Week 5 - A/D conversion, Serial Peripheral Interface(SPI)
    Week 6 - Pulse Width Modulation (PWM)
    Week 7 - Interrupts
    Week 8 - putting it all together - PWM, SPI, A/D

Tentative Dates (Winter 2014 - dates good up to 4/14/2014) :
Wednesday Januray 29, 2014 - Homework 1 due
Wednesday  February 5, 2014 - Program 1 due (flash and LED)
Wednesday February 17, 2014 - Program 2 due (7 segment LED and bit bashing)
Wednesday March 5, 2014 - Midterm Exam . Study Guide here  and here .
Monday March 10, 2014 - Program 3 (the dancing robot)

Final Project - Initial Ideas (nothing to do yet, but start thinking)

Wednesday March 13, 2014 - One page write up and presentation of your final project idea

Graduate Student Presentations

March 31 - Grad Student Presentation 1
April 2 - Grad Student Presentation 2
April 7 - Grad Student Presentation 3
April 14 - Exam 2