Mark Neil - Microprocessor Course 1 Timers and Interrupts.

Slides:



Advertisements
Similar presentations
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. A7: Bahasa Rakitan AVR Interrupt Handler 25 April 2003 Bobby Nazief Qonita Shahab.
Advertisements

Exceptions. Exception Types Exception Handling Vectoring Interrupts Interrupt Handlers Interrupt Priorities Interrupt applications 6-2.
Interrupts, Low Power Modes and Timer A (Chapters 6 & 8)
More fun with Timer/Counters
CSCI 4717/5717 Computer Architecture
EET 2261 Unit 10 Enhanced Capture Timer  Read Almy, Chapter 20.  Homework #10 and Lab #10 due next week.  Quiz next week.
Kuliah Mikrokontroler AVR Comparator AVR Eru©September 2009 PENS.
68HC11 Polling and Interrupts
EET 2261 Unit 9 Interrupts  Read Almy, Chapters 17 – 19.  Homework #9 and Lab #9 due next week.  Quiz next week.
COMP3221: Microprocessors and Embedded Systems Lecture 16: Interrupts II Lecturer: Hui Wu Session 2, 2005.
CSC Timers Since this is a microcontroller it mainly finds itself in embedded devices Quite often embedded devices need to synchronize events The.
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.
A look at interrupts What are interrupts and why are they needed in an embedded system? Equally as important – how are these ideas handled on the Blackfin.
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.
Timers and Interrupts Shivendu Bhushan Summer Camp ‘13.
Pulse Width Modulation modes
External & internal Interrupts. Interrupt Sources There are 21 different interrupts and each one has its own vector located in a predefined location at.
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.
Embedded Systems 7763B Mt Druitt College of TAFE
COMP201 Computer Systems Exceptions and Interrupts.
7/23 Timers in Coldfire Processor Computer Science & Engineering Department Arizona State University Tempe, AZ Dr. Yann-Hang Lee (480)
Timer/counter Chapter 12
A Few Words From Dilbert
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 ?
Microprocessors 1 MCS-51 Interrupts.
Lecture 22 IO & data transfer Methodolodies –Polled, Interrupt Driven, DMA Interrupts –AVR Interrupts (RISC) –68HC11 Interrupts (CISC) IBM PC Boot Sequence.
Atmel Atmega128 Overview ALU Particulars RISC Architecture 133, Mostly single cycle instructions 2 Address instructions (opcode, Rs, Rd, offset) 32x8 Register.
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.
Interrupts An interrupt is an exception, a change of the normal progression, or interruption in the normal flow of program execution. An interrupt is essentially.
ATtiny23131 A SEMINAR ON AVR MICROCONTROLLER ATtiny2313.
Timers and Interrupts Anurag Dwivedi. Let Us Revise.
1 © Unitec New Zealand Interrupt Lecture 6 Date: - 20 Sept, 2011 Embedded Hardware ETEC 6416.
Interrupt driven I/O. MIPS RISC Exception Mechanism The processor operates in The processor operates in user mode user mode kernel mode kernel mode Access.
CS-280 Dr. Mark L. Hornick 1 Atmel Timer/Counter System Most microcontrollers include some type of timer system Facilitates real-time monitoring and control.
1 Interrupts, Resets Today: First Hour: Interrupts –Section 5.2 of Huang’s Textbook –In-class Activity #1 Second Hour: More Interrupts Section 5.2 of Huang’s.
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.
Timers and Interrupts Mark Neil - Microprocessor Course.
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.
Embedded Systems Design 1 Lecture Set 8 MCS-51 Interrupts.
Interrupt driven I/O Computer Organization and Assembly Language: Module 12.
Mark Neil - Microprocessor Course 1 Timers and Interrupts.
CS-280 Dr. Mark L. Hornick 1 Sequential Execution Normally, CPU sequentially executes instructions in a program Subroutine calls are synchronous to the.
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.
Networked Embedded Systems Pengyu Zhang & Sachin Katti EE107 Spring 2016 Lecture 4 Timers and Interrupts.
Introduction to Exceptions 1 Introduction to Exceptions ARM Advanced RISC Machines.
INSTITUTE: INSTITUTE:PARUL INSTITUTE OF TECHNOLOGY BRANCH : BRANCH :B.E. E.C.5 TH SEM. SUBJECT:MICROCONTROLLER & INTERFACING TOPIC:AVR INTTRUPT TOPIC:AVR.
DEPARTMENT OF ELECTRONICS ENGINEERING V-SEMESTER MICROPROCESSOR & MICROCONTROLLER 1 CHAPTER NO microcontroller & programming.
V.V.P. ENGINEERING COLLEGE,RAJKOT
68HC11 Interrupts & Resets.
Timer and Interrupts.
BITS EDU. CAMPUS , VARNAMA
AVR Addressing Modes Subject: Microcontoller & Interfacing
BVM Engineering College Electrical Engineering Department : Microprocessor and Microcontroller Interfacing Interrupts of 8051 Prepared by:
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.
COMP2121: Microprocessors and Interfacing
Timer/Counter Modified from Dr. Lam Phung’s Slides.
8-bit Timer/Counter0 with PWM
ATmega103 Timer0 and Interrupts
Tim Sumner, Imperial College, Rm: 1009, x47552
8-bit Timer/Counter2 with PWM and Asynchronous Operation
Tim Sumner, Imperial College, Rm: 1009, x47552
COMPUTER PERIPHERALS AND INTERFACES
Interrupt Chapter 10.
Timer/Counter Timer/Counter 0 Timer/Counter 1 Timer/Counter 2 8 bit
COMP3221: Microprocessors and Embedded Systems
Presentation transcript:

Mark Neil - Microprocessor Course 1 Timers and Interrupts

The Need for Processor Interrupts Mark Neil - Microprocessor Course 2 Up to now if you wanted to do something in a program as soon as a bit was set (key pressed, bit set in a register, voltage exceeded a given threshold,…) you had to keep reading the bit until it changed !  This is called Polling This is clearly not an efficient way of doing things  CPU time is wasted watching for something to happen This is why interrupts were introduced as a means of getting the processor’s attention on demand  Use the CPU for other things until whatever we were waiting for has happened

Processor Interrupts Mark Neil - Microprocessor Course 3 Interrupts are subroutine calls initiated not by an rcall command but by hardware signals. These hardware signals cause the processor to jump to interrupt service routines. At the end they return control to your program just where it was just before the interrupt occurred.

ATmega128 Timers and Interrupts There are 24 different sources of interrupts There are timers on the ATMega128 that can be used to trigger an interrupt at fixed intervals Interrupts can be triggered when certain hardware tasks are completed Eight external inputs can be used to request an interrupt Mark Neil - Microprocessor Course 4

The ATmega103 Memory Map The first 24 2-word addresses in flash program memory are reserved for interrupts: your program jumps to one of these addresses if an interrupt occurs. A table of jump instructions is used to let the processor know where to execute code in case of an interrupt Mark Neil - Microprocessor Course 5

Interrupts mapping Mark Neil - Microprocessor Course 6 ;Address; $0000 jmp RESET ; Reset Handler $0002 jmp EXT_INT0 ; IRQ0 Handler - PortD $0004 jmp EXT_INT1 ; IRQ1 Handler - PortD $0006 jmp EXT_INT2 ; IRQ2 Handler - PortD $0008 jmp EXT_INT3 ; IRQ3 Handler - PortD $000A jmp EXT_INT4 ; IRQ4 Handler - PortE $000C jmp EXT_INT5 ; IRQ5 Handler - PortE $000E jmp EXT_INT6 ; IRQ6 Handler - PortE $0010 jmp EXT_INT7 ; IRQ7 Handler - PortE $0012 jmp TIM2_COMP ; Timer2 Compare Handler $0014 jmp TIM2_OVF ; Timer2 Overflow Handler $0016 jmp TIM1_CAPT ; Timer1 Capture Handler ;Address; $0000 jmp RESET ; Reset Handler $0002 jmp EXT_INT0 ; IRQ0 Handler - PortD $0004 jmp EXT_INT1 ; IRQ1 Handler - PortD $0006 jmp EXT_INT2 ; IRQ2 Handler - PortD $0008 jmp EXT_INT3 ; IRQ3 Handler - PortD $000A jmp EXT_INT4 ; IRQ4 Handler - PortE $000C jmp EXT_INT5 ; IRQ5 Handler - PortE $000E jmp EXT_INT6 ; IRQ6 Handler - PortE $0010 jmp EXT_INT7 ; IRQ7 Handler - PortE $0012 jmp TIM2_COMP ; Timer2 Compare Handler $0014 jmp TIM2_OVF ; Timer2 Overflow Handler $0016 jmp TIM1_CAPT ; Timer1 Capture Handler External interrupts

Interrupts mapping Mark Neil - Microprocessor Course 7 $0018 jmp TIM1_COMPA ; Timer1 CompareA Handler $001A jmp TIM1_COMPB ; Timer1 CompareB Handler $001C jmp TIM1_OVF ; Timer1 Overflow Handler $001E jmp TIM0_COMP ; Timer0 Compare Handler $0020 jmp TIM0_OVF ; Timer0 Overflow Handler $0022 jmp SPI_STC ; SPI Transfer Complete Handler $0024 jmp UART_RXC ; UART RX Complete Handler $0026 jmp UART_DRE ; UDR Empty Handler $0028 jmp UART_TXC ; UART TX Complete Handler $002A jmp ADC ; ADC Conversion Complete Handler $002C jmp EE_RDY ; EEPROM Ready Handler $002E jmp ANA_COMP ; Analog Comparator Handler $0018 jmp TIM1_COMPA ; Timer1 CompareA Handler $001A jmp TIM1_COMPB ; Timer1 CompareB Handler $001C jmp TIM1_OVF ; Timer1 Overflow Handler $001E jmp TIM0_COMP ; Timer0 Compare Handler $0020 jmp TIM0_OVF ; Timer0 Overflow Handler $0022 jmp SPI_STC ; SPI Transfer Complete Handler $0024 jmp UART_RXC ; UART RX Complete Handler $0026 jmp UART_DRE ; UDR Empty Handler $0028 jmp UART_TXC ; UART TX Complete Handler $002A jmp ADC ; ADC Conversion Complete Handler $002C jmp EE_RDY ; EEPROM Ready Handler $002E jmp ANA_COMP ; Analog Comparator Handler

Using interrupts Mark Neil - Microprocessor Course 8 Global enable via the status register  You must first tell the processor that it should use interrupts Masks to work at bit level within devices Control registers to select type of signal

Global Level: Status Register In order to use any interrupts on ATmega103 you must set the ‘ I ’ bit in the status register ( SREG ) using the command sei By now you should know what The V,N,Z,C bits are. Mark Neil - Microprocessor Course 9 SREG

At device level: Mark Neil - Microprocessor Course 10 EIMSK – use to mask which external interrupts are used EICR – used to control how external interrupts are recognised EIFR – flags to show which have been triggered

The Timer/Counter Mask Register OCIE2 :Timer/Counter2 Output Compare Interrupt Enable TOIE2 :Timer/Counter2 Overflow Interrupt Enable TICIE1 : Timer/Counter1 Input Capture Interrupt Enable OCIEA1, OCIEA2: Timer/Counter1 Output CompareA,B Match Interrupt Enable TOIE1 : Timer/Counter1 Overflow Interrupt Enable OCIE0 : Timer/Counter0 Output Compare Interrupt Enable TOIE0: Timer/Counter0 Overflow Interrupt Enable Mark Neil - Microprocessor Course 11 TIMSK

Timer/Counter0 Control Register Mark Neil - Microprocessor Course 12 CTC0 : Clear Timer/Counter on Compare Match COM00 / COMM01 :Compare Output Mode, Bits 1 and 0 PWM0 : Pulse Width Modulator Enable The timer pre-scale factor : CS02; CS01; CS00 TCCR0

Pre-scaling the Timer via TCCR0 Mark Neil - Microprocessor Course 13 Counter Multiplexer CS00 CS01 CS02 f/128 f/64 f/8 f/32 f/1024 f/256 TOSC1 ASO f f f f Clock Generator Timer0 Clock

Pre-scaling the Timer via TCCR0 Mark Neil - Microprocessor Course 14

Timer/Counter0 TCNT0 Mark Neil - Microprocessor Course 15 8-bit registers which contain the value of the Timer/Counters. Both Timer/Counters are realized as up or up/down (in PWM mode) counters with read and write access. If the Timer/Counter is written to and a clock source is selected, it continues counting in the timer clock cycle after it is preset with the written value

Example Program Mark Neil - Microprocessor Course 16 In the example program the 8 Mhz clock of the ATmega128 is pre-scaled by 256 and the timer zero is loaded with $B2. The counter overflows ($00) every 125 x 256 x ($FF- $B2 + 1) nsec (approx every 2.5 msec) and causes an interrupt. Every 200 interrupts a counter is incremented and the result is displayed on the PORTB LEDs.

Interrupt Jump table Mark Neil - Microprocessor Course 17 jmp Init;2 word instruction to set correct vector jmp xxx ;next interrupt nop ;use this two liner if no routine available reti. jmp TIM0_OVF; Timer 0 Overflow interrupt Vector nop; Vector Addresses are 2 words apart reti. At Program Reset your program jumps to the initialization when Timer0 overflows the interrupt controller jumps to this location

Interrupt initialization Mark Neil - Microprocessor Course 18 ; ; **** Timer0 Setup Code **** ; ldi r16,$06; Timer 0 Setup out TCCR0, r16; Timer - PRESCALE TCK0 BY 256 ; (devide the 8 Mhz clock by 256) ldi r16,$b2; load timer with n=178 out TCNT0,r16; The counter will go off ; in (256 - n)*256*125 nsec ; ; **** Interrupts Setup Code **** ; ldi r16, $01; Timer Interrupt Enables out TIMSK, r16; T0: Overflow ;

Interrupt Service Routine Mark Neil - Microprocessor Course 19 TIM0_OVF: in R4,SREG;save SREG inc r17;increment cycle nop cpi r17,$C8;compare cycle with 200 brne again;if <> jump to again out PORTB, r18;send bits to PORTB inc r18;Increment the portB number clr r17 ;clear cycle and start counting ;200 interrupts again: ldi r16,$B2;reload timer value out TCNT0,r16 out SREG,r4;restore sreg reti It is a good idea to save the information stored on the status register and restore it at the end of the program It is a good idea to save the information stored on the status register and restore it at the end of the program ‘reti’ sets the interrupt bit, in the SREG, back to ‘1’ so the next interrupt can be serviced When an interrupt occurs : D7 of SREG is set to ‘0’ and the program jumps to the interrupt service routine

Main Program Mark Neil - Microprocessor Course 20 main:;wasting time ; nop rjmp main;loop The timer is counting in the background and when it overflows it causes an interrupt forcing the program to execute the interrupt service routine. After the interrupt is handled we call reti and the program comes back in the loop where it was when the interrupt occurred The timer is counting in the background and when it overflows it causes an interrupt forcing the program to execute the interrupt service routine. After the interrupt is handled we call reti and the program comes back in the loop where it was when the interrupt occurred

Interrupt Service Routines Interrupts can occur at any time  They are asynchronous to the operation of the rest of your program Your program may be doing something else important  The interrupt service routine should leave the program in a state so that in can continue running after the reti General Hints  Keep the service routines short – don’t do any heavy computation, don’t do long and involved I/O if you can avoid it  Better to simply flag that the interrupt has happened so that elsewhere in your program you can deal with it  Make sure to save and restore any registers that you use – including the status register  Only if you can guarantee that you are not using a register elsewhere in your program can you avoid saving and restoring  Very unpredictable effects can happen if you don’t do this Mark Neil - Microprocessor Course 21