EE319K Introduction to Embedded Systems
Course Catalog Description Embedded systems; machine language execution; 
assembly language programming; local variables; input/output synchronization; 
analog to digital conversion, digital to analog conversion; debugging; and 
interrupts.
Overview
Class: ACA 1.104, Monday, Wednesday, Friday 10-10:50am
Office Hours:  Monday 11:15am-12noon, Wednesday 12noon-12:45pm, Friday 1-1:45pm
Instructor:  Jonathan W. Valvano, ENS627, 471-5141
email   valvano@mail.utexas.edu 
(put "EE319K" in the email title,
  send no ZIP files)  
Web page http://users.ece.utexas.edu/~valvano 
Lecture notes and lab assignments
http://users.ece.utexas.edu/~valvano/EE319K
Data sheets 
http://www.ece.utexas.edu/~valvano/Datasheets   
Starter files 
http://www.ece.utexas.edu/~valvano/Starterfiles  
Unique Numbers:   16485 Th1-2, 16490 Th2-3, 16495 Th3-4
Text:  Introduction to Embedded Microcomputer Systems:
Interfacing to the 9S12, (draft of a new book) HKN notes,
by J. W. Valvano
Equipment to buy: You will need a volt
TAs and graders:                 
     (TA) Jacob Egner,
jegner@mail.utexas.edu 
     (TA) Manish Arora,
floopydrive@gmail.com 
     (grader) Kyle Hutchens,
khutchens@mail.utexas.edu 
     (grader) Kelvin Liwangitan,
kelvinliwangitan@mail.utexas.edu 
32 page CPU12 quick reference 
http://users.ece.utexas.edu/~valvano/Datasheets/CPU12rg.pdf 
458 page CPU12 programming reference 
http://users.ece.utexas.edu/~valvano/Datasheets/S12CPUV2.pdf 
Tech arts board information
http://users.ece.utexas.edu/~valvano/Datasheets/TechArts9S12DP512.pdf
 8/28        Go to ACA 1.106 for lab grading policy and demonstration 
9/4         Go to  
9/11     Lab 1 Digital Lock I/O, parallel port, direction register and logical function
(simulated, individual) 
9/18        Real board demonstration, bring your board to lab 10/2     Lab 3  Debugging Techniques, one switch, one LED
(simulated and board, individual) 
10/9    
10/16    
10/23        Exam 2 (closed book) in ACA 1.106, during regularly scheduled 
	lab time 10/30  Lab 6 Real-time Position Monitor, ADC, interrupts, LCD (simulated and board,
groups of one or two) 11/6     Lab 7 Distributed DAS, serial port interrupts, FIFO queue (simulated and board,
groups of two) 11/13     Lab 8  
Real-time sound 
generation, 4-bit DAC (simulated and board,
groups of one or two) 11/20    Lab 9 Introduction to TRobot, data structures, layered software, 
stepper motors (simulated,
groups of one or two) 11/27        nothing due, week of 
      Thanksgiving 12/3   Lab 10 TRobot Competition (in class) (simulated, groups of two) 
(due 10pm 12/2 via email) 12/4      debugging help 12/5        TRobot Finals (in class) (simulated, groups of two) (due 
10pm 12/4 via email) 
Computer Usage:  Computers in LRC complex are available for your
usage. Sign up procedures are those established by the LRC. TA's in the
laboratory are checking off programs and supervising while on duty, thus you can
expect to have only a brief consultations with them. You should learn to develop
software while on the computer. This course involves some projects that require
extended periods of time to complete and a project cannot be done just
overnight. Get started on an assignment early so you can get help if you need
it. There
are ample machine hours to give everyone more than enough time to complete each
program. However, expect the laboratory to be crowded and machine time to be
scarce if you attempt to work in the lab a day or two before an assignment is
due. You will be competing with students in other courses for computer time. We
need your assistance in the laboratory. Please report any equipment problems to
the TA if they are present. If a TA is not present use the form provided in the
lab. If you do this we can rapidly get repair service. Please help to keep the
lab clean. HW1 hints:
Prerequisites:  EE306 and EE312 with a grade of C or better.
There will be no re-tests, make-ups, or incompletes.
I strongly encourage students to take an active role in this class.  
Questions are welcome before, during and after class. Please feel free to email, 
visit or call me if you have questions.
1) The understanding of embedded systems (a system with the computer hidden 
inside)
2) Assembly language programming
3) Understanding how the computer executes instructions (fetch opcode, fetch 
operand, read data, operate, and write data)
4) The use of a microcontroller (strategic use of RAM ROM and I/O) 
Microcontrollers typically have a little RAM and a lot of ROM. Globals, locals 
and the heap go in RAM. Constants and programs go in ROM.
5) Debugging and verification using a simulator and on the microcontroller 
(embedded systems typically do not have a print function)
6) How input/output actually happens (the students wire up analog and digital 
signals to the 9S12 and measure them with a voltmeter)
7) The implementation of an I/O driver (a set of programs that perform 
input/output)
8) Understanding, from an architecture standpoint, how local variables and 
parameters work (e.g., a space on the stack is dynamically created, the local 
variable is accessed using stack-pointer relative addressing, then the space is 
deallocated.)
9) Analog to digital conversion (ADC) e.g., the students interface a slide 
potentiometer to the ADC, and write software that measures the position of the 
slide, creating a display like “1.23 cm”
10) Interrupt synchronization, real-time ADC sampling (periodic timer 
interrupts),
11) Simple motors (e.g., open and closed-loop stepper motor control)
12) Digital to analog conversion (DAC), used to make simple sounds
13) Design and implementation of
Grading: 25% Laboratory assignments, due on Thursday (when performed in groups
of  2, one solution turned in) 
    10% Homework assignments,  usually
due on 
Tuesday   
    15% In class Test 1, Friday September 26, 10-10:50am, 
ACA 1.104
    15% In lab
    15% In class 
    20% Final, Friday December 12, 2-5pm, regularly 
scheduled time and place
Cutoff scores for the corresponding letter grades will not be determined until
after the final exam.  
Attendance:  Students are expected to attend lectures. The
book covers more information than the class, and we will use lectures to map our
way through the book. If you miss class you may find it difficult to catch up.
Fall 2008 Lab Schedule (labs due on Thursday, and are demonstrated to the TA)
  
     
  
 
    
 
    
 
  
     
  
 
    
 
    
 
  
     
  
 
    
 
    
 
  
     
  
 
    
 
    
 
  
     
  
9/25 
    
Lab 2 
    
LED flashing (simulated and board,
individual) 
  
     
  
 
    
 
    
 
  
     
  
 
     Lab 4  
    Train Track Controller using the real 9S12 (simulated and
      board, individual) 
  
     
  
 
     Lab 5 
     
	LCD device 
	driver, decimal fixed-point output, 
	local variables (simulated 
	and board, groups of one or two) 
  
     
  
 
    
 
    
 
  
     
  
 
    
 
    
 
  
     
  
 
    
 
  
     
  
 
    
 
  
     
  
 
    
 
    
     
  
 
    
 
    
 
  
     
  
 
    
 
    
 
  
     
  
 
    
 
    
 
  
     
 
    
 
    
 
  
  
     
  Date 
    Reading Assignment 
    Topic 
  
     
  8/27 
    Chapter 1 
    aLec01, course description, flow charts, data flow graphs, call
      graphs 
  
     
  8/29 
    Appendix 1.1 through 1.8.2 
    aLec02, using the TExaS simulator, design of a NOT gate 
  
     
  9/3 
    Chapters 2 and 3 
    aLec03, numbers, hexadecimal,  TExaS ViewBox and help 
	system 
  
     
  9/5 
    Chapters 2 and 4 
    aLec04, 9S12 architecture, registers, simple addressing 
	modes, memory allocation 
  
     
  9/8 
    Chapter 2 
    aLec05, stack, subroutines, execution, parallel ports, 
	direction registers 
  
     
  9/10 
    Chapter 3 
    aLec06, logical, shift, introduction to addition and 
	subtraction 
  
     
  9/12 
    Sections 4.6 and 5.8 
    aLec07, Debugging in TExaS 
  
     
  9/15 
    Chapters 3 and 5 
    aLec08, Arithmetic operations, condition code bits, if-then 
  
     
  9/17 
    Appendix 2 
    aLec09, Demonstration of the board (bring your board to class) 
  
     
  9/19 
    Section 2.6 
    aLec09, Switch input and LED output, real board, 
	voltmeter debugging 
  
     
  9/22 
    Section 5.1, 5.2, 5.6, 6.11 
    aLec10, Loops, modular design, subroutines, debugging dump 
  
     
  9/24 
    Chapters 1-5 
    aLec11, Exam 1 review,  
  
     
  9/26 
    Chapters 1-5 
    Test 1 (closed book) Room 
ACA 1.104 
  
     
  9/29 
    Sections 6.1, 6.2, 6.3 
    aLec12, pointers using indexed addressing, array 
  
     
  10/1 
    Sections 4.4, 6.8 
    aLec13, Timer, Finite state machines 
  
     
  10/3 
    Sections 5.8, 6.11 
    aLec14, Functional debugging 
  
     
  10/6 
    Sections 6.8 
    aLec15, Finite state machines 
  
     
  10/8 
    Sections 7.1-7.4, 9.1 
    aLec16, Local variables, fixed-point numbers, 
	floating point, ASCII, 
  
     
  10/10 
    Sections 7.1-7.4, 10.5 
    aLec17, Local variables, LCD interface 
  
     
  10/13 
    Sections 10.1, 8.4 
    aLec18, LCD interface, fixed-point conversions 
  
     
  10/15 
    Sections 9.1, 9.2, 9.4, 9.6 
    aLec19, Timer, introduction to interrupts 
  
     
  10/17 
    Section 9.6 
    aLec20, Output compare interrupts, debugging interrupt 
	systems 
  
     
  10/20 
    Chapters 5 and 6 
    aLec21, Exam 2 review 
  
     
  10/22 
    Section 10.2 
    aLec22, numerical calculations , emul ediv 
  
     
  10/23 
    Chapters 5 and 6 
    Test 2 (closed book) in Lab, ACA 1.106, during regularly scheduled 
	lab 
	time 
  
     
  10/24 
    Section 11.1, 11.4 
    aLec23, Device driver, analog to digital conversion 
  
     
  10/27 
    Sections 9.6, 10.1, 11.4 
    aLec24, Lab 6 hints, design method, tables 
  
     
  10/29 
    Section 8.1 
    aLec25, SCI interface, interrupts 
  
     
  10/31 
    Sections 12.1-12.4 
    aLec26, Serial port interrupts,  Fifo queue 
  
     
  11/3 
    Sections 12.1-12.4 
    aLec27, Real time systems, latency, priority, Fifo queue 
  
     
  11/5 
    Section 11.2 
    aLec28, Digital to analog conversion 
  
     
  11/7 
    Section 11.3 
    aLec29, Sound generation 
  
     
  11/10 
      
    aLec30, Programming in Metrowerks C, EE345L review 
  
     
  11/12 
    Section 8.7 
    aLec31, Stepper motors 
  
     
  11/14 
    Chapter 13 
    aLec32, Embedded systems, packaging power, testability  
  
     
  11/17 
      
    aLec33, TRobots discussion 
  
     
  11/19 
    
     aLec34, Exam 3 review 
  
     
  11/21 
    Chapters 7-12 
    Test 3 (closed book)  Room 
ACA 1.104 
  
     
  11/24 
      
    aLec35, Trobot demonstration 
  
     
  11/26 
      
     no class 
  
     
  12/1 
    Chapters 1-13 
    aLec36, final exam review 
  
     
  12/3 
    
     TRobots competition preliminaries, course survey (optional) 
  
     
12/5 
    
     TRobots competition finals, who is the best programmer? 
  
Laboratory policies:  This is a programming class. 
Therefore, the quality of the software you write will significantly
affect your grade. When you get the program finished, make a printout of your
assembly listing, staple a grading sheet to the front, then demonstrate it to a
TA. The TA will record the performance and demonstration grades on the assembly
listing printout. Labs are due during your scheduled lab period on Thursday. A
detailed schedule follows. Late assignments incur a penalty of 10% of the
maximum score per day for the first three days and will not be accepted
afterwards. Exceptionally "good" programs may be given extra credit. If you do
extra functions in your program, point out and demonstrate the extra functions
to the TA when you demonstrate your program. Partial credit, not to exceed a
maximum of 75% of full credit, may be awarded to a program that does not meet
all specifications. Often it is better to demonstrate an incomplete program,
rather than incur late penalties while fixing all its bugs. There are four
components to the lab grade:
1. Performance 40% (graded by the TA at the time of
checkout):
    How well does it work? Does it
crash?
    Does it handle correctly all
situations as specified?
    How clean is the user interface?
    Possible 5% Bonus, does it do more
than specified?
2. Demonstration 40% (graded by the TA at the time of
checkout):
    Can you explain to the TA how your
software works?
    Can you explain why you made
certain software engineering tradeoffs?
    Both partners if applicable must be
present during the demonstration.
3. Software quality 20% (graded later):
    Clearly describe the data and
program structures in the software comments. Simple well-structured software
with descriptive labels is much easier to understand than complex software with
voluminous comments. Use either top-down or bottom up structure. Modular
programming divides the problem into "natural divisions" with minimal
coupling. The interfaces should be simple and natural. The software will be
graded on the correctness of the program function, the comments, the interface
to the user, the style, and organization. The effort spent to write high quality 
software will be rewarded both during debugging and when it is time to
4. Late
penalties (-10% per day)
Lab Partners: Most labs must be performed individually, and for others
you may work either with a partner or by yourself. The lab
partnership must be registered with the TA (a simple hand written note or email signed by
both students will suffice) 4 calendar days before the assignment is due. Once
registered, the partnership will continue. A partnership can be dissolved by either party in writing 4
calendar days before the assignment is due. Both partners must be present during
the TA demonstration.
EE319K kit handed out by Daryl Goodnight (2nd floor)
  9S12C32 or 9S12DP512 board 
  Power adapter
  RS232 9-pin cable
  Protoboard
EE319K kit handed out by TAs
  1 7406
  6 LED (20 mA, red yellow, green)
  6 220 ohm 5%, 0.25 watt resistors
  4 push-button switches
  4 10k ohm 5%, 0.25 watt resistors
  3 1.5k ohm 5%, 0.25 watt resistors
  3 12k ohm 5%, 0.25 watt resistors
  18 inches 6-Wire 24 gauge
  1 0.1 uF ceramic bypass cap 
  1 headphone jack
  1 50k ohm slide pot
Item to get from long term checkout
  1 LCD display
Should you buy a computer?  Let it be perfectly clear that
the following remarks are my personal opinion, and do not reflect an official
position of the department, college, or university. I feel very strongly that
you should have your own computer on which you develop your software and write
your reports. I think both software development and report writing should be
done without paper, pencil and erasers. Having a computer at home allows you to
organize your information (files, directories etc.) as well as your schedule
(allocate your software development time for that the time of day during which
you are most creative and energetic.) Physiologically most people are more
energetic in the morning. On the other hand, there are fewer distractions late
at night.
Which computer should I buy? In EE319K, we write assembly
language programs for the 9S12 using a simulator which runs on an IBM-PC
compatible running Windows 2000, XP or Vista. Many applications do not work 
properly on Vista, so I advise you put off upgrading to Vista if you can. The software development system will
run on most PC's. I think the more money you invest, the happier you'll be.
TEXAS.EXE  The simulator application, called Test EXecute
And Simulate, is not freeware, so please don't post it on the net or otherwise
send it to others. On the other hand, I grant EE319K students indefinite usage
of the software, including installing the application on each of your personal 
computes. If you know
of someone interested in the application have them contact me directly. It is
the eighth semester we will be using the application in EE319K, but I will be make 
an updates to fix bugs or add features. Please work through the tutorials
and examples to bring you up to speed on the various aspects of the system.
After installing the licensed version of 
Legal Stuff: The 12th class day is September 12. After this
date, I will sign a drop only if the Dean approves it. Your current grade status
must be a "C" or better for you to receive a "Q". Course
evaluation is conducted on the last class day in accordance with the Measurement
and Evaluation Center form. The final exam is at the time and place stated in
the course schedule. The University of Texas at Austin provides upon request
appropriate academic adjustments for qualified students with disabilities. For
more information, contact the Office of the Dean of Students with Disabilities
at 471-6259, 471-4241 TDD.
Cheating:  "Faculty in the ECE Department are committed to detecting and responding to all instances of scholastic dishonesty and will pursue cases of scholastic dishonesty in accordance with university policy. Scholastic dishonesty, in all its forms, is a blight on our entire academic community. All parties in our community -- faculty, staff, and students -- are responsible for creating an environment that educates outstanding engineers, and this goal entails excellence in technical skills, self-giving citizenry, an ethical integrity. Industry wants engineers who are competent and fully trustworthy, and both qualities must be developed day by day throughout an entire lifetime. Scholastic dishonesty includes, but is not limited to, cheating, plagiarism, collusion, falsifying academic records, or any act designed to give an unfair academic advantage to the student. The fact that you are in this class as an engineering student is testament to your abilities. Penalties for scholastic dishonesty are severe and can include, but are not limited to, a written reprimand, a zero on the assignment/exam, re-taking the exam in question, an F in the course, or expulsion from the University. Don't jeopardize your career by an act of scholastic dishonesty. Details about academic integrity and what constitutes scholastic dishonesty can be found at the website for the UT Dean of Students Office and the General Information Catalog, Section 11-802." 
 You are allowed to talk to your classmates about the lab
assignments, but you are NOT allowed to look at each other's written work. Oral
discussion about an assignment is encouraged and is not considered to be
cheating. Copying of any part of a program is cheating without explicit
reference to its source. If we find two programs that are copied, there will be
a substantial penalty to both students, e.g., failure in the course. Students
who cheat on tests or in lab will fail. Prosecution of cases is very traumatic
to both the student and instructor. It is appropriate to use software out of the 
book, off my CD, or from my website as long as all copy-pasted software is
explicitly referenced. Copy-pasting software from current or past EE319K
students is scholastic dishonesty.  Policies concerning
the use of other people's software in this class:
    · I strongly encourage you to
study existing software.
    · All applications and libraries
must be legally obtained. E.g.,
        You may use
libraries that came when you bought a compiler.
        You may use software obtained from the web.
        You may
copy and paste from the existing source code.
    · You may use any existing source
code that is clearly referenced and categorized:
        original:
completely written by you,
        derived:
fundamental approach is copied but it is your implementation,
        modified:
source code significantly edited to serve your purpose,
        copied:
source code includes minor modifications.
Curious about my research?  See 
http://users.ece.utexas.edu/~valvano/research
Online homework submission  
You can work together in groups of any
size, but everyone enters a separate online solution. 
Other than breaking into the system and changing grades, you may get as much 
help from anyone in any way you please to complete the online homework.
STEP 1: 
Log into the Quest Homework Service at the URL
https://quest.cns.utexas.edu/student/   Click Get Started, log into 
with UT EID  
Unique number:   
16485   
      
STEP 2:  
Download: Students' Instructions
Download:    
First Homework   
STEP 3: Work one homework question. 
Log in again and submit its answer before next class period.
STEP 4: Continue submitting answers until due time.
STEP 5: Download the solutions after due time.
 
 
 
There will be a signup for Lab checkout times. Each student
will have a specific checkout time which will be when their lab will be
demonstrated to their TA.
  
Microcontroller - see glossary for definition
Microprocessor - see "processor" in Figure 1.1
Microcomputer - see glossary for definition
IBM-PC is not a microprocessor
 The newest version of TExaS is
available (UPGRADE to latest version). There are also 
install CDs that you can checkout from the 2nd floor lab.