Department of Mechanical Engineering MECHENG 313 - Real Time Software Design Course Outline Learning Objectives At the end of the course, students will be expected to understand: the basic concepts of real time control systems how data are represented in a computer the principles of computer architecture programming in assembly language principles of programming in the Microsoft MFC environment the relationship between an assembly language and higher level languages such as C and C++ the use of assembly language and C++ for programming stand alone microcomputer real time control systems and computer data acquisition systems how software systems for real time industrial control are designed. These principles will be taught using the following platforms: the AVR microprocessor and development system the Microsoft Visual C++ program development system, using the Microsoft Windows operating system software/hardware co-design, such as interfaces with analogue to digital converters, timers, motors, sensors etc. Organization Lectures 3 per week Lecture times and rooms (as of 12 July 2010) Tuesday 12-13 Engineering 301-1060 Wednesday 12-13 Engineering 3.401 Thursday 12-13 Engineering 105-018 Tutorials tutorial time location 1 per week, starting week 2 Friday 12-13 201N- 370 Laboratories 5 Weeks 3, 5, 6, 10, 11; two hour laboratory sessions Schedule to be advised. Assessment 40% coursework, 60% examination Coursework Assignment 1 15 marks (due week 7, Friday, 5:00pm) Assignment 2 15 marks (due week 11, Friday 5:00pm) Lab exercises and reports 10 marks Total 40 marks Lecturers A/P. Shane Q Xie Prof G D Mallinson (to be confirmed) 1.1004 1.910 s.xie@auckland.ac.nz g.mallinson@auckland.ac.nz Overview Concepts Introduction to the concepts of real time systems, industrial examples, system and software design principles Computer Mathematics and Operations Data representations in computers, binary arithmetic, twos complement numbers, hexadecimal arithmetic, logical operations Components of a microcomputer and elementary operations Overview of the operations of a computer, The Arithmetic-Logic Unit, the Control Unit, memory, system buses, execution of a simple routine, introduction to programming. The AVR Microcomputer Introduction to AVR, hardware configuration, pin functions and modes, memory cycles and timing, memory interface, RESET, interrupts and polling. Basic Assembly programming Registers, The Instruction Set, Instruction modes, Index Register Instructions and the Condition Code Register, Compare instructions and JUMP and BRANCH instructions, transfer instructions, addition instructions, subtraction instructions, multiplication and division instructions, shift, rotate and logic instructions, decimal arithmetic, the stack, subroutines, time of day subroutines, simulators and assemblers. Advanced Assembly programming Basic input output Ports, parallel input/output, handshaking. Timing systems, input capture registers, output compare registers, the pulse accumulator, Analogue-to Digital Converter, serial communication interface, Using AVR for Real Time Control. Programming C/C++ in windows environment Object oriented programming, Visual C++ basics, User interface design, complex data types, functions, parameter passing, control structures, libraries. Programming interfaces and environments, program testing and fault finding. Essential elements of C++ Real Time Software Real time operating systems, C data types for hardware interfacing, real time memory management, functions for hardware handling, Real time I/O control, mixed C and assembler code, timer control for real time task handling. Real-time applications in Industry. Hardware/ Software co-design, tools such as multimeters, oscilloscopes, logic analyzers, and software simulators. Performance tuning, system reliability.