Interrupt and Exception Programming

Slides:



Advertisements
Similar presentations
ECE 353 Introduction to Microprocessor Systems
Advertisements

Lab III Real-Time Embedded Operating System for a SoC System.
Interrupts, Low Power Modes and Timer A (Chapters 6 & 8)
Developing a Generic Hard Fault handler for ARM Cortex-M3/Cortex-M4
Cortex-M3 Exceptions and Interrupts
Interrupts Chapter 8 – pp Chapter 10 – pp Appendix A – pp 537 &
COMP3221: Microprocessors and Embedded Systems Lecture 15: Interrupts I Lecturer: Hui Wu Session 1, 2005.
Midterm Tuesday October 23 Covers Chapters 3 through 6 - Buses, Clocks, Timing, Edge Triggering, Level Triggering - Cache Memory Systems - Internal Memory.
Interrupt Mechanisms in the 74xx PowerPC Architecture Porting Plan 9 to the PowerPC Architecture Ajay Surie Adam Wolbach.
MSP432™ MCUs Training Part 9: Porting between MSP430 and MSP432
MSP432™ MCUs Training Part 2: Cortex M4F Core
The Cortex-M3 Embedded Systems: The Cortex-M3 Processor Basics
Cortex-M3 Debugging System
Exception and Interrupt Handling
Introduction to Embedded Systems
Interrupts. What Are Interrupts? Interrupts alter a program’s flow of control  Behavior is similar to a procedure call »Some significant differences.
Lecture 23: LM3S9B96 Microcontroller - Interrupts.
CORTEX-M0 Structure Discussion 2 – Core Peripherals
Microcontroller based system design Asst. Prof. Dr. Alper ŞİŞMAN.
1 CS/COE0447 Computer Organization & Assembly Language Chapter 5 part 4 Exceptions.
ARM Cortex-M0 August 23, 2012 Paul Nickelsberg Orchid Technologies Engineering and Consulting, Inc. CORTEX-M0 Structure Discussion.
Renesas Electronics America Inc. © 2011 Renesas Electronics America Inc. All rights reserved. RX Interrupt Control Unit (ICU) Ver
The 8051 Microcontroller Chapter 6 INTERRUPTS. 2/29 Interrupt is the occurrence of a condition an event that causes a temporary suspension of a program.
The Cortex-M3 Embedded Systems: LM3S9B96 Microcontroller – Interrupts Refer to Chapter 4 in the reference book “Stellaris® LM3S9B96 Microcontroller - DATA.
Introduction to Exceptions 1 Introduction to Exceptions ARM Advanced RISC Machines.
Cortex-M3 Exceptions RTLAB. Hyeonggon Jo.  Exceptions Exception types & priority Abort model SVC and PendSV  Interrupt operation Pre-emption & Exit.
Chap. 4 ARM Boot Loader Internals. 2 S3C2500 ARM940T Core module ARM9TDMI CoreIC.
Interrupt 마이크로 프로세서 (Micro Processor) 2015년 2학기 충북대학교 전자공학과 박 찬식
Exceptions and Interrupts Chap 7, 8 Tae-min Hwang.
Chapter 10 Interrupts. Basic Concepts in Interrupts  An interrupt is a communication process set up in a microprocessor or microcontroller in which:
1 The LPC1768 Architecture (with focus on Cortex-M3)
-Low Power and System Control Features
ARM Cortex M3 & M4 Chapter 4 - Architecture
Lecture 2 Interrupts.
Interrupts and exceptions
Interrupt and Exception Programming
Interrupts and signals
68HC11 Interrupts & Resets.
Microprocessor Systems Design I
Refer to Chapter 7, 8, 9 in the reference book
Mon. Oct 2 Announcements Quiz Postponed to Wednesday – still only on 2.a + 2.b Video lecture for 2.a posted Lab 6 experiment extension You must come to.
Timer and Interrupts.
Refer to Chapter 5 in the reference book
Anton Burtsev February, 2017
Refer to Chapter 10 in the reference book
ARM Cortex-M3 RTLAB 박 유 진.
Interrupts In 8085 and 8086.
Interrupts – (Chapter 12)
Refer to Chapter 3 in the reference book
BVM Engineering College Electrical Engineering Department : Microprocessor and Microcontroller Interfacing Interrupts of 8051 Prepared by:
Lab 5 – Interrupts vs Polling
8259 Chip The Intel 8259 is a family of Programmable Interrupt Controllers (PIC) designed and developed for use with the Intel 8085 and Intel 8086 microprocessors.
Interrupt and Exception Programming
YOVI 2008 Core Interrupt Controller (INTC)
* * * * * * * 8051 Interrupts Programming.
Interrupt and Exception Programming
Subject Name: Microprocessors Subject Code:10EC46 Department: Electronics and Communication Date: /20/2018.
Interrupts Interrupt is a process where an external device can get the attention of the microprocessor. The process starts from the I/O device The process.
Lecture 18 Interrupt 동국대학교 홍유표.
Interrupt and Exception Programming
COMPUTER PERIPHERALS AND INTERFACES
Lecture 9: TI MSP430 Interrupts & Low Power Modes
Architectural Support for OS
CNET 315 Microprocessor & Assembly Language
Interrupt and Exception Programming
Interrupt handling Explain how interrupts are used to obtain processor time and how processing of interrupted jobs may later be resumed, (typical.
CORTEX-M0 Structure Discussion 1
Basics of Embedded Systems IAX0230 Time Interfacing
Architectural Support for OS
COMP3221: Microprocessors and Embedded Systems
Presentation transcript:

Interrupt and Exception Programming Chapter 6 Interrupt and Exception Programming

Polling vs. Interrupts

NVIC in ARM Cortex-M

Interrupt Vector Table for ARM Cortex-M Memory Location (Hex)   Stack Pointer initial value 0x00000000 1 Reset 0x00000004 2 NMI 0x00000008 3 Hard Fault 0x0000000C 4 Memory Management Fault 0x00000010 5 Bus Fault 0x00000014 6 Usage Fault (undefined instructions, divide by zero, unaligned memory access,...) 0x00000018 7 Reserved 0x0000001C 8 0x00000020 9 0x00000024 10 0x00000028 11 SVCall 0x0000002C 12 Debug Monitor 0x00000030 13 0x00000034 14 PendSV 0x00000038 15 SysTick 0x0000003C 16 IRQ 0 for peripherals 0x00000040 17 IRQ 1 for peripherals 0x00000044 … 255 IRQ 239 for peripherals 0x000003FC

Going from Reset to Boot Program

ARM Cortex-M Stack Frame upon Interrupt

Main Program gets interrupted

Interrupt Priority for ARM Cortex-M Priority Level Stack Pointer initial value   1 Reset -3 Highest 2 NMI -2 3 Hard Fault -1 4 Memory Management Fault Programmable 5 Bus Fault 6 Usage Fault (undefined instructions, divide by zero, unaligned memory access,....) 7 Reserved 8 9 10 11 SVCall 12 Debug Monitor 13 14 PendSV 15 SysTick 16 IRQ 0 for peripherals 17 IRQ 1 for peripherals … 255 IRQ 239 for peripherals

CONTROL Register in ARM Cortex-M4   nPRIV (Privilege): Defines the Thread mode privilege level 0: Privileged 1: Unprivileged Active Stack Pointer (ASP): Defines the currently active stack pointer (ASP = SPSEL) 0: MSP is the current stack pointer. 1: PSP is the current stack pointer. Floating Point Context Active (FPCA) 0: No floating point context active. 1: Floating point context active.

Privileged level Execution and Processor Modes in ARM Cortex-M Software Privilege level Thread Applications Privileged and Unprivileged Handler ISR for Exceptions and IRQs Always Privileged In Thread mode, use bit 0 of the CONTROL register to select Privileged or Unprivileged

Processor Modes and Stack Usage in ARM Cortex-M Software Stack Usage Thread Applications MSP or PSP Handler ISR for Exceptions and IRQs MSP Note: In Thread mode, use bit 1 of the Control register to select MSP or PSP for stack pointer.

Processor Mode, Privilege, and Stack in ARM Cortex Stack Pointer Typical Example usage Handler Privileged Main Exception Handling Unprivileged Any Reserved since Handler is always Privileged Thread Operating system kernel Process   Application threads

ARM Cortex-M Registers

Special function registers of ARM Cortex-M Register name Privilege Usage MSP (main stack pointer) Privileged PSP (processor stack pointer) Privileged or Unprivileged PSR (Processor status register) APSR (application processor status register) ISPR (interrupt processor status register) EPSR (execution processor status register) PRIMASK (Priority Mask register) FAULTMASK(fault mask register) BASEPRI (base priority register) CONTROL (control register) Note: We must use MSR and MRS instructions to access the above registers

IRQ assignment in Tiva ARM TM123GH6PM Vector location Device 1-15 none 0000 0000 to 0000 003C CPU Exception (set by ARM) 16 0000 0040 GPIO PORT A 17 1 0000 0044 GPIO PORT B 18 2 0000 0048 GPIO PORT C 19 3 0000 004C GPIO PORT D 20 4 0000 0050 GPIO PORT E 21 5 0000 0054 UART0 22 6 0000 0058 UART1 23 7 0000 005C SSI0 24 8 0000 0060 I2C0 25 9 0000 0064 PWM0 Fault 26 10 0000 0068 PWM0 Generator 0 27 11 0000 006C PWM0 Generator 1 28 12 0000 0070 PWM0 Generator 2

IRQ assignment in Tiva ARM TM123GH6PM(Cont.) Vector location Device 29 13 0000 0074 QEI0 30 14 0000 0078 ADC0 Sequence 0 31 15 0000 007C ADC0 Sequence 1 32 16 0000 0080 ADC0 Sequence 2 33 17 0000 0084 ADC0 Sequence 3 34 18 0000 0088 Watchdog Timers 0 and 1 35 19 0000 008C 16/32-Bit Timer 0A 36 20 0000 0090 16/32-Bit Timer 0B 37 21 0000 0094 16/32-Bit Timer 1A 38 22 0000 0098 16/32-Bit Timer 1B 39 23 0000 009C 16/32-Bit Timer 2A 40 24 0000 00A0 16/32-Bit Timer 2B 41 25 0000 00A4 Analog Comparator 0 42 26 0000 00A8 Analog Comparator 1

IRQ assignment in Tiva ARM TM123GH6PM(Cont.) Vector location Device 43 27 - Reserved 44 28 0000 00B0 System Control 45 29 0000 00B4 Flash Memory Control and EEPROM Control 46 30 0000 00B8 GPIO Port F 47-48 31-32 49 33 0000 00C4 UART2 50 34 0000 00C8 SSI1 51 35 0000 00CC 16/32-Bit Timer 3A 52 36 0000 00D0 16-32-Bit Timer 3B 53 37 0000 00D4 I2C1 54 38 0000 00D8 QEI1 55 39 0000 00DC CAN0 56 40 0000 00E0 CAN1 57-58 41-42

IRQ assignment in Tiva ARM TM123GH6PM(Cont.) Vector location Device 59 43 0000 00EC Hibernation Module 60 44 0000 00F0 USB 61 45 0000 00F4 PWM Generator 3 62 46 0000 00F8 µDMA Software 63 47 0000 00FC µDMA Error 64 48 0000 0100 ADC1 Sequence 0 65 49 0000 0104 ADC1 Sequence 1 66 50 0000 0108 ADC1 Sequence 2 67 51 0000 010C ADC1 Sequence 3 68-72 52-56 - Reserved 73 57 0000 0124 SSI2 74 58 0000 0128 SSI3 75 0000 012C UART3 76 0000 0130 UART4

IRQ assignment in Tiva ARM TM123GH6PM(Cont.) Vector location Device 77 61 0000 0134 UART5 78 62 0000 0138 UART6 79 63 0000 013C UART7 80-83 64-67 - Reserved 84 68 0000 0150 I2C2 85 69 0000 0154 I2C3 86 70 0000 0158 16/32-Bit Timer 4A 87 71 0000 015C 16/32-Bit Timer 4B 88-107 72-91 108 92 0000 01B0 16/32-Bit Timer 5A 109 93 0000 01B4 16/32-Bit Timer 5B 110 94 0000 01B8 32/64-Bit Timer 0A 111 95 0000 01BC 32/64-Bit Timer 0B 112 96 0000 01C0 32/64-Bit Timer 1A

IRQ assignment in Tiva ARM TM123GH6PM(Cont.) Vector location Device 113 97 0000 01C4 32/64-Bit Timer 1B 114 98 0000 01C8 32/64-Bit Timer 2A 115 99 0000 01CC 32/64-Bit Timer 2B 116 100 0000 01D0 32/64-Bit Timer 3A 117 101 0000 01D4 32/64-Bit Timer 3B 118 102 0000 01D8 32/64-Bit Timer 4A 119 103 0000 01DC 32/64-Bit Timer 4B 120 104 0000 01E0 32/64-Bit Timer 5A 121 105 0000 01E4 32/64-Bit Timer 5B 122 106 0000 01E8 System Exception (imprecise) 123-149 107-133 - Reserved 150 134 0000 0258 PWM Generator 0 151 135 0000 025C PWM Generator 1 152 136 0000 0260 PWM Generator 2 153 137 0000 0264 PWM Generator 3 154 138 0000 0268 PWM1 Fault

Interrupt enabling with all 3 levels

GPIO Interrupt Mask (GPIOIM)

Interrupts 0–31 Set Enable (EN0)

Interrupts 32–63 Set Enable (EN1)

Interrupts 64–95 Set Enable (EN2)

Interrupts 94–127 Set Enable (EN3)

Interrupts 0–31 Clear Enable (DIS0)

Interrupts 32–63 Clear Enable (DIS1)

Interrupts 64–95 Clear Enable (DIS2)

Interrupts 96–127 Clear Enable (DIS3)

Enabling and Disabling an Interrupt

GPIO Interrupt Sense (GPIOIS)

GPIOIEV

UART Interrupt Registers

Using GPIOIM and GPIOIEV Registers IS.n (interrupt sense) IEV.n (Interrupt Event)   Falling edge 1 Rising edge Low level High level

UART Interrupt Mask (UARTIM)

GPTM Interrupt Mask (GPTMIMR)

SysTick Internal Structure

SysTick Control and Status Register (STCTRL)

SysTick Counting

PRIn Registers