Networked Embedded Systems Pengyu Zhang & Sachin Katti EE107 Spring 2016 Lecture 4 Timers and Interrupts.

Slides:



Advertisements
Similar presentations
1 Exceptions, Interrupts & Traps Operating System Hebrew University Spring 2007.
Advertisements

Interrupts, Low Power Modes and Timer A (Chapters 6 & 8)
I/O Unit.
CSCI 4717/5717 Computer Architecture
FIU Chapter 7: Input/Output Jerome Crooks Panyawat Chiamprasert
Interrupts What is an interrupt? What does an interrupt do to the “flow of control” Interrupts used to overlap computation & I/O – Examples would be console.
COMP3221: Microprocessors and Embedded Systems Lecture 15: Interrupts I Lecturer: Hui Wu Session 1, 2005.
LOGO Chapter 1 Interrupt handling. hardware interrupt Under x86, hardware interrupts are called IRQ's. When the CPU receives an interrupt, it stops whatever.
6-1 I/O Methods I/O – Transfer of data between memory of the system and the I/O device Most devices operate asynchronously from the CPU Most methods involve.
8-Bit Timer/Counter 0 Counter/Timer 0 and 2 (TCNT0, TCNT2) are nearly identical. Differences: -TCNT0 can run off an external 32Khz clock (Tosc) or the.
Introduction An interrupt is an event which informs the CPU that its service (action) is needed. Sources of interrupts: internal fault (e.g.. divide by.
5-1 Timer/Counters In many microprocessor systems we need to:  count logic pulses  measure the frequency of signals  measure the period of pulses 
Timers and Interrupts Shivendu Bhushan Summer Camp ‘13.
Exceptions, Interrupts & Traps
1.  8051 Timers “count up,” incrementing the Timer’s respective “count register” each time there is a triggering clock pulse. 2  When the “count register”
The 8051 Microcontroller and Embedded Systems
INTERRUPTS PROGRAMMING
1 Timing System Timing System Applications. 2 Timing System components Counting mechanisms Input capture mechanisms Output capture mechanisms.
Chapter 8 Input/Output. Busses l Group of electrical conductors suitable for carrying computer signals from one location to another l Each conductor in.
Embedded Systems 7763B Mt Druitt College of TAFE
7/23 Timers in Coldfire Processor Computer Science & Engineering Department Arizona State University Tempe, AZ Dr. Yann-Hang Lee (480)
ARM Timers.
System Clocks.
A Few Words From Dilbert
MICROPROCESSOR INPUT/OUTPUT
Interrupts and DMA CSCI The Role of the Operating System in Performing I/O Two main jobs of a computer are: –Processing –Performing I/O manage and.
MCU: Interrupts and Timers Ganesh Pitchiah. What’s an MCU ?
CHAPTER 3 TOP LEVEL VIEW OF COMPUTER FUNCTION AND INTERCONNECTION
1 CS/COE0447 Computer Organization & Assembly Language Chapter 5 part 4 Exceptions.
Computer Architecture Lecture 2 System Buses. Program Concept Hardwired systems are inflexible General purpose hardware can do different tasks, given.
Timer Timer is a device, which counts the input at regular interval (δT) using clock pulses at its input. The counts increment on each pulse and store.
Time Management.  Time management is concerned with OS facilities and services which measure real time, and is essential to the operation of timesharing.
Accessing I/O Devices Processor Memory BUS I/O Device 1 I/O Device 2.
13-Nov-15 (1) CSC Computer Organization Lecture 7: Input/Output Organization.
Timers and Interrupts Anurag Dwivedi. Let Us Revise.
1 © Unitec New Zealand Interrupt Lecture 6 Date: - 20 Sept, 2011 Embedded Hardware ETEC 6416.
Operating Systems 1 K. Salah Module 1.2: Fundamental Concepts Interrupts System Calls.
Interrupts  An interrupt is any service request that causes the CPU to stop its current execution stream and to execute an instruction stream that services.
CSCI1600: Embedded and Real Time Software Lecture 9: Input Output Concepts Steven Reiss, Fall 2015.
Interrupt On a very basic level, an interrupt is a signal that interrupts the current processor activity. It may be triggered by an external event (change.
Interrupts.
Processor Memory Processor-memory bus I/O Device Bus Adapter I/O Device I/O Device Bus Adapter I/O Device I/O Device Expansion bus I/O Bus.
بسم الله الرحمن الرحيم MEMORY AND I/O.
Time Management.  Time management is concerned with OS facilities and services which measure real time.  These services include:  Keeping track of.
9/20/6Lecture 3 - Instruction Set - Al1 Exception Handling.
Chapter 3 System Buses.  Hardwired systems are inflexible  General purpose hardware can do different tasks, given correct control signals  Instead.
1 Device Controller I/O units typically consist of A mechanical component: the device itself An electronic component: the device controller or adapter.
Interrupts and Exception Handling. Execution We are quite aware of the Fetch, Execute process of the control unit of the CPU –Fetch and instruction as.
Embedded Real-Time Systems Processing interrupts Lecturer Department University.
Input / Output Chapter 9.
Microcontrollers & GPIO
68HC11 Interrupts & Resets.
Microprocessor Systems Design I
Networked Embedded Systems Sachin Katti
Lesson Objectives Aims Key Words Interrupt, Buffer, Priority, Stack
Timer and Interrupts.
4-Integrating Peripherals in Embedded Systems
4-Integrating Peripherals in Embedded Systems
ECE 3430 – Intro to Microcomputer Systems
GEOMATIKA UNIVERSITY COLLEGE CHAPTER 2 OPERATING SYSTEM PRINCIPLES
Md. Mojahidul Islam Lecturer Dept. of Computer Science & Engineering
Md. Mojahidul Islam Lecturer Dept. of Computer Science & Engineering
Interrupt handling Explain how interrupts are used to obtain processor time and how processing of interrupted jobs may later be resumed, (typical.
Wireless Embedded Systems
ECE 3430 – Intro to Microcomputer Systems
COMP3221: Microprocessors and Embedded Systems
Presentation transcript:

Networked Embedded Systems Pengyu Zhang & Sachin Katti EE107 Spring 2016 Lecture 4 Timers and Interrupts

Previous lecture Basic Plumbing of Embedded Systems (4 lecs) – Microcontrollers – Timers and Interrupts

What time is the Apple Watch tracking? Clock (all the time | sec) Alarm (all the time | sec) Stopwatch (when open | msec) Sync (all the time | sec) UI (when open | msec) Buzzer (when buzzing | msec) WiFi (when communicating | usec) How often | Granularity

Why do we need timers? 1.What time is it now? 2.How much time has elapsed since I last checked? 3.Let me know when this much time passes. 4.When did this external input occur?

What peripherals do we use to track time? (all the time | sec) - [Alarm, Sync] 32-bit Real time clock (RTC) peripheral with interrupts (when open/buzzing | msec) - [Stopwatch, UI, Buzzer] Processor’s timer peripheral with interrupts (when communicating | usec) - [WiFi] WiFi chip’s internal timer peripheral with interrupts

What peripherals do we use to track time? (all the time | sec) - [Alarm, Sync] 32-bit Real time clock (RTC) peripheral with interrupts (when open/buzzing | msec) - [Stopwatch, UI, Buzzer] Processor’s timer peripheral with interrupts (when communicating | usec) - [WiFi] WiFi chip’s internal timer peripheral with interrupts The term is used to avoid confusion with ordinary hardware clocks which are only signals that govern digital electronics, and do not count time in human units.

The internal structure of a timer peripheral Prescaler Counter Clock Driver Xtal/Osc CompareCapture Low-Level Timer Device Drivers Software Hardware Internal External R/W Figure adapted from Prabal Dutta’s EE373 slides Timer Abstractions and Virtualization Application Software Frequency depends on the attached oscillator device The purpose of the prescaler is to allow the timer to be clocked at the rate a user desires.

How does the number in the counter register correspond to wall clock time? Frequency (Hz) = Cycles / Second 1 / Frequency (Hz) = Seconds / Cycle The counter is incremented once per cycle. You read 100 from the counter register which is clocked by a 1 MHz oscillator. How much time has passed since the counter was reset?

How should we choose the OSC frequency? 1MHz OSC: resolution = 1 / 1e6 second = 1us 10MHz OSC: resolution = 1/10e6 second = 0.1us For timers, there will often be a tradeoff between resolution (high resolution requires a high clock rate) and range (high clock rates cause the timer to overflow more quickly). 16-bits timer: 1MHz OSC: max range = 1 / 1e6 * 2^16 = ms 10MHz OSC: max range = 1/10e6 * 2^16 = ms

How does a firmware developer use the compare register? 1.Stop the timer 2.Set the compare register with the time it should fire 3.Reset the counter 4.Start the timer 5.Wait for the counter to reach the compare (via interrupt or check status reg)

How does a firmware developer use the capture register? 1.Stop the timer 2.Setup the timer to capture when a particular event occurs (e.g., change of GPIO pin) 3.Reset the counter 4.Start the timer 5.Wait for the counter to reach a capture event (via interrupt or check status reg)

The internal structure of a Real Time Clock (RTC) Figure adapted from Prabal Dutta’s EE373 slides Note: RTCs have their own oscillator. Why is it 32,768 kHz?

The internal structure of a Real Time Clock (RTC) Figure adapted from Prabal Dutta’s EE373 slides Note: RTCs have their own oscillator. Why is it 32,768 kHz? The reason the 32,768 Hz resonator has become so common is due to a compromise between the large physical size of low frequency crystals and the large current drain of high frequency crystals.

Interrupts How peripherals notify the CPU that their state just changed. Example: UART just received a byte

Interrupts Definition – An event external to the currently executing process that causes a change in the normal flow of instruction execution; usually generated by hardware devices external to the CPU. – Key point is that interrupts are asynchronous w.r.t. current process – Typically indicate that some device needs service Slides from Angela Demke Brown CSC 469H1F

Why interrupts? People like connecting devices – Keyboard, mouse, screen, disk drives, scanner, printer, sound card, camera, etc. – These devices occasionally need CPU service – But we can’t predict when – We want to keep the CPU busy between events – Need a way for CPU to find out devices need attention Slides from Angela Demke Brown CSC 469H1F

Possible Solution: Polling CPU periodically checks each device to see if it needs service – “Polling is like picking up your phone every few seconds to see if you have a call. …” Slides from Angela Demke Brown CSC 469H1F

Possible Solution: Polling CPU periodically checks each device to see if it needs service – “Polling is like picking up your phone every few seconds to see if you have a call. …” – Cons: takes CPU time even when no requests pending – Pros: can be efficient if events arrive rapidly Slides from Angela Demke Brown CSC 469H1F

Alternative: Interrupts Give each device a wire (interrupt line) that it can use to signal the processor

Alternative: Interrupts Give each device a wire (interrupt line) that it can use to signal the processor – When interrupt signaled, processor executes a routine called an interrupt handler to deal with the interrupt – No overhead when no requests pending

How do interrupts work? Peripheral 2 Peripheral 3 Peripheral 4 Peripheral 1  Interrupt Clear interrupt  Peripheral P sends int X  ACK P’s int X Execute P’s X handler  ACK P’s int X Interrupt controller What is the benefit of having a separate controller for interrupts? CPU

The Interrupt controller Fun fact: Interrupt controllers used to be separate chips! Intel 8259A IRQ chip Image by Nixdorf - Own work Handles simultaneous interrupts o Receives interrupts while the CPU handles interrupts Maintains interrupt flags o CPU can poll interrupt flags instead of jumping to a interrupt handler Multiplexes many wires to few wires CPU doesn’t need a interrupt wire to each peripheral

How to use interrupts 1.Tell the peripheral which interrupts you want it to output. 2.Tell the interrupt controller what your priority is for this interrupt. 3.Tell the processor where the interrupt handler is for that interrupt. 4.When the interrupt handler fires, do your business then clear the int.

CPU execution of interrupt handlers INTERRUPT 1.Wait for instruction to end 2.Push the program counter to the stack 3.Push all active registers to the stack 4.Jump to the interrupt handler in the interrupt vector 5.Pop the program counter off of the stack