Embedded Systems – Shape the World Course Review: Jan – May 2015 edX – MOOC UT.6.02x University of Austin, Texas Jonathan Valvano & Ramesh Yerriballi Student: Craig Cook TriEmbed Group – 8 June 2015 www.triembed.org Who am I? Bachelor of Information Technology Worked in IT since mid 90's Former Systems Administrator IT Manager Recently interested in Raspberry Pi and Ardunio edX MOOC - Massive Online Open Course 28,000 students (approx) 4000 worked on real board finished one lab Tiva™ C Series TM4C123G LaunchPad Evaluation Board - ARM Cortex™-M4F CPU Sponsors: ARM and Texas Instruments Free (optional paid certificate) Target Students High School or College student thinking about engineering career Tech who likes gadgets (should know about http://embedded.fm) Professional engineer expanding skills to embedded systems Course Goals Understanding how the computer stores and manipulates data The understanding of embedded systems using modular design and abstraction C programming: considering both function and style The strategic use of memory Course Goals (Continued) Debugging and verification using a simulator and on the real microcontroller How input/output using switches, LEDs, DACs, ADCs, motors, and serial ports The implementation of an I/O driver, multithreaded programming Understanding how local variables and parameters work Course Goals (Continued) Analog to digital conversion (ADC), periodic sampling Simple motors (e.g., open and closed-loop stepper motor control) Digital to analog conversion (DAC), used to make simple sounds Design and implementation of elementary data structures Buying Hardware Worldwide Course Element14 Digikey Mouser US$40 - US$70 parts http://edx-orgutaustinx.s3.amazonaws.com/UT601x/index.ht ml Image from http://users.ece.utexas.edu/~valvano/Volume1/ E-Book/ Software Keil uVision (V4.74) compiler/debugger/simulator developed by ARM TexaS - Test EXecute and Simulate C programming language Support piazza (student forums) Study Groups (organized via piazza) Module 1 Welcome and Introduction to course and staff Introduction Structure and Objectives Syllabus http://users.ece.utexas.edu/~valvano/Volume1/ E-Book/ Assessment New for Spring 2015 Module 1 Welcome and Introduction to course and staff Introduction Structure and Objectives Syllabus http://users.ece.utexas.edu/~valvano/Volume1/ E-Book/ Assessment New for Spring 2015 Module 2 Fundamental concepts Binary number systems Embedded Systems Introduction to Computers IO ports (GPIO) / Alternate function CPU registers Assembly Language Address space and memory map Software Development Process Figure 2.6. An embedded system includes a microcomputer interfaced to external devices. http://users.ece.utexas.edu/~valvano/Volume1/EBook/C2_FundamentalConcepts.htm Module 2 Fundamental concepts Binary number systems Embedded Systems Introduction to Computers IO ports / Alternate function CPU registers Assembly Language Address space and memory map Software Development Process Module 3 Electronics Electric Circuits Resistors Voltage Current Ohm’s Law Module 4 Digital Logic Binary Information Implemented with MOS transistors Digital Logic Flip-flops are used for storage Binary Adder Digital Information stored in Memory Module 4 Digital Logic Binary Information Implemented with MOS transistors Digital Logic Flip-flops are used for storage Binary Adder Digital Information stored in Memory Logic Functions Module 4 Digital Logic Binary Information Implemented with MOS transistors Digital Logic Flip-flops are used for storage Binary Adder Digital Information stored in Memory Module 5 Introduction to C programming Introduction Structure and Organization of C Variables and Expressions Functions Conditional branching and loops Keyboard input using scanf C Keywords and Punctuation Module 6 Microcontroller Input/Output Stellaris and Tiva pins Basic Concepts of Input and Output Ports I/O Programming and the Direction Register Debugging monitor using a LED Hardware Debugging Tools Alternate Functions UART Universal asynchronous receiver/transmitter SSI Synchronous serial interface I2C Inter-integrated circuit Timer compare Periodic interrupts, input capture, and output PWM Pulse width modulation ADC Analog to digital converter, measure analog signals Analog Comparator Compare two analog signals QEI Quadrature encoder interface USB Universal serial bus Ethernet High-speed network CAN Controller area network Module 6 Microcontroller Input/Output Stellaris and Tiva pins Basic Concepts of Input and Output Ports I/O Programming and the Direction Register Debugging monitor using a LED Hardware Debugging Tools Initialize an I/O port for general use void PortF_Init(void){ volatile unsigned long delay; SYSCTL_RCGC2_R |= 0x00000020; // 1) activate clock for Port F delay = SYSCTL_RCGC2_R; // allow time for clock to start GPIO_PORTF_LOCK_R = 0x4C4F434B; // 2) unlock GPIO Port F GPIO_PORTF_CR_R = 0x1F; // allow changes to PF4-0 // only PF0 needs to be unlocked, other bits can't be locked GPIO_PORTF_AMSEL_R = 0x00; // 3) disable analog on PF GPIO_PORTF_PCTL_R = 0x00000000; // 4) PCTL GPIO on PF4-0 GPIO_PORTF_DIR_R = 0x0E; // 5) PF4,PF0 in, PF3-1 out GPIO_PORTF_AFSEL_R = 0x00; // 6) disable alt funct on PF7-0 GPIO_PORTF_PUR_R = 0x11; // enable pull-up on PF0 and PF4 GPIO_PORTF_DEN_R = 0x1F; // 7) enable digital I/O on PF4-0 } Module 6 Microcontroller Input/Output Stellaris and Tiva pins Basic Concepts of Input and Output Ports I/O Programming and the Direction Register Debugging monitor using a LED Hardware Debugging Tools Module 7 Design and Development Process Product Life Cycle Successive Refinement Quality Design Functions, Procedures, Methods, Subroutines Making Decisions Module 7 Design and Development Process Product Life Cycle Successive Refinement Quality Design Functions, Procedures, Methods, Subroutines Making Decisions Golden Rule of Software Development Write software for others as you wish they would write for you. Module 7 Design and Development Process Product Life Cycle Successive Refinement Quality Design Functions, Procedures, Methods, Subroutines Making Decisions Module 8 Interfacing Switches and LEDs Breadboards Switches LED interfaces Hardware and software design using flowcharts. Testing Module 9 Arrays and Functional Debugging Debugging Theory SysTick Timer Arrays Strings Functional debugging Module 10 Finite State Machines Phase Lock Loop Systick Structs Finite State Machines Stepper Motors Finite State Machine http://users.ece.utexas.edu/~valvano/Volume1/EBook/C10_FiniteStateMachines.htm Interactive Tool 10.1 Module 10 Finite State Machines Phase Lock Loop Systick Structs Finite State Machines Stepper Motors Module 11 Serial Interfacing I/O Synchronization Universal Asynchronous Receiver/Transmitter (UART) - The Serial Interface Conversions Distributed Systems Interfacing the Nokia 5110 Module 11 Serial Interfacing I/O Synchronization Universal Asynchronous Receiver/Transmitter (UART) - The Serial Interface Conversions Distributed Systems Interfacing the Nokia 5110 Module 12 Interrupts Interrupt Concepts Inter-thread communication and synchronization Nested Vectored Interrupt Controller (NVIC) on the ARM Cortex-M Processor Edge-triggered Interrupts SysTick Periodic Interrupts DC Motor Interface with PWM Module 13 DAC and Sound Approximating continuous signals in the digital domain Interactive Tool 13.1 Digital to Analog Conversion Interactive Tool 13.2 Sound Generated by Speakers Music Generation Module 13 DAC and Sound Interactive Tool 13.1 http://users.ece.utexas.edu/~valvano/Volume1/ E-Book/C13_DACSound.htm Module 13 DAC and Sound Approximating continuous signals in the digital domain Interactive Tool 13.1 Digital to Analog Conversion Interactive Tool 13.2 Sound Generated by Speakers Music Generation Module 13 DAC and Sound Interactive Tool 13.2 http://users.ece.utexas.edu/~valvano/Volume1/ E-Book/C13_DACSound.htm Module 13 DAC and Sound Approximating continuous signals in the digital domain Interactive Tool 13.1 Digital to Analog Conversion Sound Generated by Speakers Music Generation Music Generation 3 Bit DAC Module 14 ADC and Data Acquisition Analog to Digital Conversion ADC on the TM4C123/LM4F120 Nyquist Theorem Data Acquisition and Control Systems Robot Car Controller Module 14 ADC and Data Acquisition Analog to Digital Conversion ADC on the TM4C123/LM4F120 Nyquist Theorem Data Acquisition and Control Systems Robot Car Controller Module 14 ADC and Data Acquisition Analog to Digital Conversion ADC on the TM4C123/LM4F120 Nyquist Theorem Data Acquisition and Control Systems Robot Car Controller Module 15 Systems Approach to Game Design Requirements Document Modular Design Introduction to Graphics Using Structures to Organizing Data Periodic Interrupt using Timer 2A Random Number Generator Summary and Best Practices Lab 16 Internet of Things Introduction to the Internet of Things The internet in a nutshell Internet of Things IP Addresses CC3100 Booster pack Client Server communication Communication with a weather server Summary and best practices Final Thoughts Many hours of work Great introduction to Embedded Systems Want to finish course Possible future presentations