




已阅读5页,还剩81页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 什么是中断 中断可以做什么 中断怎么去做的 2812中断有什么自己特点 第四章中断管理和复位 2 3 等待20分钟 等待20分钟 4 查询方式 5 中断方式 一 中断矢量二 可屏蔽中断三 非屏蔽中断四 非法指令陷阱五 复位操作六 低功耗模式七 片内外设的中断扩展 第四章中断管理和复位 7 第4章中断管理和复位 什么是中断中断 Interrupt 是硬件和软件激发的信号 它使得CPU暂停当前的主程序 并转而去执行一个中断服务子程序 中断请求可由外围设备和硬件产生 ADC DAC 外设 也可作为特殊事件发生的标志信号 定时器计数器溢出 可屏蔽中断 可用软件禁止或使能 不可屏蔽中断 不能被禁止 所有软件触发的中断均属于不可屏蔽中断 处理中断过程 1 接收中断请求 由软件中断 从程序代码中 或者硬件中断 从一个引脚或一个基于芯片的设备 提出请求去暂停当前主程序的执行 2 响应中断 CPU必须能够响应中断请求 如果中断是可屏蔽的 则必须满足一定的条件 按照一定的顺序去进行测试 而对于非屏蔽硬件中断和软件中断 CPU会立即作出响应 3 准备执行中断服务程序并保存寄存器值 1 完整地执行完当前指令 清除流水线中还没有到达第二阶段的所有指令 2 将寄存器ST0 T AH AL PH PL AR0 ARl DP STl DBGSTAT PC和IER的内容保存到堆栈中 以便自动保存主程序的大部分内容 现场保护 3 取回中断向量并把它放入程序寄存器PC中 4 执行中断服务子程序 CPU进入预先规定的向量地址 并且执行已写好的中断服务程序ISR 第4章中断管理和复位 9 C28x中断源 C28xCORE 2个不可屏蔽中断 RSNMI14个可屏蔽中断 INT1 INT14 INT1 INT2 INT3 INT4 INT5 INT6 INT7 INT8 INT9 INT10 INT11 INT12 INT13 INT14 RS NMI 10 X2812中断从上至下分成三级 CPU级中断PIE级中断外设中断 第4章中断管理和复位 11 C28xFastInterruptResponseManager 支持96个独立的中断直接访问专用RAM 向量表 自动标志更新自动现场保护软件激发 INTR TRAP 可屏蔽中断 顺序执行非屏蔽中断 软立即执行 C28x支持32个CPU级中断向量 包括复位向量 每一向量是一个22位的地址 该地址是相应中断服务程序ISR的入口地址 每一个32位的向量被保存在一个连续地址中 见书中表4 1 1 中断向量地址的低16位保存该向量的低16位 高地址则保存它的高6位 当 个中断被确定后 其22位的向量被取回 而地址的高10位被忽略 一 中断矢量 第4章中断管理和复位 13 14 向量表可以映像到程序空间的底部或顶部 这取决于状态寄存器ST1的向量映像位VMAP 如果VMAP位是0 向量就映像在以000000h开始的地址上 如果其值是1 向量就映像到以3FFFC0h开始的地址上 VMAP位可以由SETCVMAP指令进行置位 由CLRCVMAP指令进行复位 VMAP的复位值是1 一 中断矢量 第4章中断管理和复位 14个通用中断 INTl INTl4为仿真而设计的中断 DLOGINT 数据标志中断 和TOSINT 实时操作系统中断 是为仿真目的而设计 中断寄存器 中断标志寄存器IFR l6位寄存器IFR包含的标志位表明相应中断在等待CPU的确认 外部输入线INTl INTl4在CPU的每 个时钟周期都被采样 如果识别出 个中断信号 IFR相应的位就被置位和锁存 DLOGINT或RTOSINT CPU片内分析逻辑送来的信号使得相应标志位被设置和锁存 中断使能寄存器IER 包含的每一位为可屏蔽中断进行使能和关闭 调试中断使能寄存器DBGIER 包含的每一位为可屏蔽中断进行使能和关闭 表明了当CPU处于实时仿真模式时哪一个中断可以利用 二 可屏蔽中断 第4章中断管理和复位 可屏蔽中断也利用状态寄存器ST1的0位 即中断全局屏蔽位INTM 可用来进行全局使能中断和关闭中断 当INTM 0时 这些中断全局使能 当INTM 1时 这些中断全局关闭 在IFR中一个标志关闭后 直到IER DBGIER和INTM位被使能 否则相应的中断将不再响应 表4 2 1使能可屏蔽中断的条件中断处理过程使能可屏蔽中断的条件标准INTM 0IFR中相应位是 1 DSP工作在实时模式且暂停IFR和中DBGIER相应位是 1 二 可屏蔽中断 第4章中断管理和复位 18 中断全局使能 INTM用来做全局的使能 禁止中断 使能 INTM 0禁止 INTM 1 resetvalue INTM只能被汇编语言修改 为了识别未确认中断 可以利用指令PUSHIFR 然后测试堆栈的值 运用ORIFR指令来设置IFR位 利用指令ANDIFR 0或硬件复位可以对所有的未决中断进行清0 注意 当通过指令TRAP发出中断请求时 如果IFR的相应位被置位 CPU并不会自动清除它 如果有一个应用请求 它的IFR已被清0 则必须在中断服务子程序中将相应位清0 中断标志寄存器 IFR 二 可屏蔽中断 RTOSINT D15D14D13D12D11D10D9D8 INT14 INT13 INT12 INT11 INT10 INT9 R W 0R W 0R W 0R W 0R W 0R W 0R W 0R W 0 DLOGINT INT8 D7D6D5D4D3D2D1D0 INT6 INT5 INT4 INT3 INT2 INT1 R W 0R W 0R W 0R W 0R W 0R W 0R W 0R W 0 INT7 中断标志寄存器IFR 第4章中断管理和复位 20 若要使能中断 需要把它的相应位置1 若要关闭中断 应该清除它的相应位 可以使用指令MOV的两种语法对寄存器IER进行读和写 ORIER指令可以用来设置IER位 ANDIER指令可以用来清除IER位 注意 当执行ANDIER和ORIER指令时 应确保它们不会修改状态位15 RTOSINT 除非当前处于实时操作系统模式 中断使能寄存器 IER 二 可屏蔽中断 RTOSINT D15D14D13D12D11D10D9D8 INT14 INT13 INT12 INT11 INT10 INT9 R W 0R W 0R W 0R W 0R W 0R W 0R W 0R W 0 DLOGINT INT8 D7D6D5D4D3D2D1D0 INT6 INT5 INT4 INT3 INT2 INT1 R W 0R W 0R W 0R W 0R W 0R W 0R W 0R W 0 INT7 中断使能寄存器IER 第4章中断管理和复位 22 当CPU处于实时仿真模式下并暂停时 才可以使用DBGIER 可通过读DBGIER来识别使能或关闭中断 或通过写DBGIER来使能或关闭中断 用指令PUSHDBGIER对DBGIER进行读操作 用指令POPDBGIET对DBGIER进行写操作 在复位时 DBGIER的所有位被清0 调试中断使能寄存器DBGIER 二 可屏蔽中断 RTOSINT D15D14D13D12D11D10D9D8 INT14 INT13 INT12 INT11 INT10 INT9 R W 0R W 0R W 0R W 0R W 0R W 0R W 0R W 0 DLOGINT INT8 D7D6D5D4D3D2D1D0 INT6 INT5 INT4 INT3 INT2 INT1 R W 0R W 0R W 0R W 0R W 0R W 0R W 0R W 0 INT7 调试中断使能寄存器DBGIER 第4章中断管理和复位 24 可屏蔽中断的标准操作 二 可屏蔽中断 1 送往CPU的中断请求 2 设置相应的IFR标志位 3 当1 IER中的相应位是1 2 STl中的INTM位是0 确认中断 一旦一个中断被使能并且被CPU响应 则在CPU开始执行中断服务程序 步骤13 之前 其他的中断就不能得到响应 4 清除相应的IFR位 5 清空流水线 6 增加和临时存储PC 7 取回中断向量 8 SP增1 9 执行自动现场保护 10 清除相应的IER位 11 设置INTM和DBGM 清除LOOP EALLOW和IDLESTAT 12 取回向量赋值给PC 13 执行中断服务程序 14 继续执行程序 中断处理的标准过程 第4章中断管理和复位 26 27 第4章中断管理和复位 可屏蔽中断响应过程当某个可屏蔽中断提出响应请求时 将其在中断标志寄存器IFR中的中断标志位自动置位 CPU检测到该中断标志位被置位后 接着会检测该位是否被使能 也就是去读CPU中断使能寄存器IER中相应位的值 三 非屏蔽中断 C28x非屏蔽中断包括 软中断 INTR和TRAP指令 硬件中断NMI 非法指令陷阱 硬件复位中断 RS 第4章中断管理和复位 不可屏蔽中断不能被任何使能位 INTM DBGM IFR IER DBGIER中的使能位 禁止 CPU立即响应这种类型的中断 并执行相应的中断服务程序 但当CPU处于实时仿真模式且被暂停时 不响应任何正常中断 29 INTR指令 三 非屏蔽中断 可以通过INTR指令对中断INTl INTl4 DLOGINT RTOSINT和NMI进行激发 INTl INTl4 DLOGINT和RTOSINT 当这些中断由INTR触发时 相应的IFR位并不会置1 而中断仍将被响应和服务 并与任何使能位的值无关 但中断过程中会清除IFR中相应的位 NMI 一个非屏蔽中断 引脚上的硬件请求和用INTR指令引起的软件请求都会导致同样的事件发生 这些事件与执行TRAP指令时所发生的事件相同 第4章中断管理和复位 由TRAP指令对中断进行初始化的功能流程 1 取出TRAP指令 2 清空流水线 3 PC增1和临时存储PC 4 取回中断向量 5 SP增1 6 执行自动上下文存储 7 设置INTM和DBGM 清除LOOP EALLOW和IDLESTAT 8 用取回的向量装载PC 9 执行中断服务程序 10 程序继续 TRAP指令 三 非屏蔽中断 TRAP指令可初始化任何中断 包括用户定义的软件中断 TRAP指令与32个中断的任何一个中断有关 指令不受IFR IER影响 也不影响IFR IER 第4章中断管理和复位 非屏蔽硬件中断 NMI输入引脚CPU一旦在NMI引脚上检测到一个有效请求 就将按TRAP指令中所示的方式来处理 需要说明的是 尽管NMI不可以被屏蔽 但有一些调试执行状态是NMI所不能服务的 三 非屏蔽中断 第4章中断管理和复位 无效的指令被译码 操作码0000h被译码ITRAP0 操作码FFFFh被译码ITRAP1 四 非法指令陷阱 第4章中断管理和复位 复位 RS 0 是优先级最高的中断 为非屏蔽外部中断 复位通常在电源打开之后被启动 每次复位之后必须重新初始化系统 作为硬件复位的一部分 所有当前操作均被放弃 流水线被清除 复位后CPU的寄存器按表4 5 1所示进行复位 然后RESET中断向量被取回 从而执行相应的中断服务程序 五 复位操作 第4章中断管理和复位 34 C28X复位中断 WatchdogTimer ToRSpin RS C28xCore 35 Reset BootLoader Notes F2810XMPNMCtiedlowinternaltodeviceXMPNMCreferstoinputsignalMP MCisstatusbitinXINTFCNF2registerXMPNMConlysampledatreset 36 Bootloader模式 BootROMsoftwareconfiguresthedeviceforC28xmodebeforejump 37 Reset引导过程 H0SARAM 8K FLASH 128K OTP 2K 0 x3F7FF6 0 x3D7800 0 x3D8000 0 x3F8000 0 x3FF000 0 x3FFFC0 BootROM 4K BROMvector 32 0 x3FFC00 BootCode RESET ExecutionEntryPointDeterminedByGPIOPins BootloadingRoutines SPI SCI A ParallelLoad 0 x3FFC00 38 39 40 Reset Bootloader XMPNMC 0 microcomputermode IDLE模式 任何被使能的中断或NMI中断都可以使处理器退出IDLE模式 在这种模式下 如果LPMCR 1 0 位都设置成零 LPM模块将不完成任何工作 HALT模式 只有复位XRS非和XNMI XINT13外部信号能够唤醒器件 使其退出HALT模式 在XMNICR寄存器中 CPU有一位使能 禁止XNMI STANDBY模式 如果在LPMCRl寄存器中被选中 所有信号 包括XNMI 都能够将处理器从STANDBY模式唤醒 用户必须选择具体哪个信号唤醒处理器 在唤醒处理器之前 要通过OSCCLK确认被选定的信号 OSCCLK的周期数在LPMCR0寄存器当中确定 六 低功耗模式 可使芯片核心部分进入休眠状态 耗散更少的功率 有三种模式 第4章中断管理和复位 42 六 低功耗模式 低功耗模式通过LPMCR0和LPMCRl两个寄存器来控制 CANRX D15D14D13D12D11D10D9D8 SCIRXA C6TRIP C5TRIP C4TRIP C3TRIP C2TRIP SCIRXB C1TRIP D7D6D5D4D3D2D1D0 T3CTRIP T2CTRIP T1CTRIP WDINT XNMI XINT1 T4CTRIP 低功耗方式控制1寄存器LPMCR1 保留 D15D1D0 QUALSTDBY LPM 低功耗方式控制0寄存器LPMCR0 R 0R W 1R W 0 R W 0R W 0R W 0R W 0R W 0R W 0R W 0R W 0 R W 0R W 0R W 0R W 0R W 0R W 0R W 0R W 0 第4章中断管理和复位 44 45 46 2个不可屏蔽中断 RSNMI14个可屏蔽中断 INT1 INT14 七 片内外设的中断扩展 X281x的CPU共有16根中断线 其中包括2根不可屏蔽中断 还有14根可屏蔽中断 47 C28X复位中断 WatchdogTimer ToRSpin RS C28xCore 七 片内外设的中断扩展 X281XDSP的中断源 七 片内外设的中断扩展 外设级 一个中断产生事件出现在某个外设中 和该事件相关的中断标志 IFR 位会在这个特别外设的寄存器中被置为1 如果相应的中断使能 IER 位已经置位 则外设向PIE控制器产生一个中断请求 如果该中断在外设级使能无效 则相应的IFR位会一直保持直到用软件清除它为止 如果在以后使能该中断 且中断标志仍然置位 那么就会向PIE发出一个中断请求 外设寄存器中的中断标志必须手工清除 PIE级PIE PeripheralInterruptExpansionBlock 外设中断扩展模块 简称为外设中断管理器 能够对各种中断请求源 来自各个外设或者其他外部引脚请求 做出判断和相应的决策 把许多中断源多路复用成一个较小的中断输入集 功能 PIE模块支持96个不同的中断 这些中断分成12个组 每个组有8个中断 每个组都被反馈到CPU内核的12条中断线 的一条上 这96个中断中的每一个都得到了各自向量的支持 这些向量被保存在专用RAM块中并可以进行修改 在PIE块中可对每个中断分别使能或者使之无效 七 片内外设的中断扩展 51 外设中断在PIE的分步 七 片内外设的中断扩展 52 CPU级 一旦某个中断请求被送往CPU CPU级中与INTx相关的中断标志 IFR 位就被置位 该标志位被锁存在IFR后 CPU不会马上就去执行相应的中断 而是等待CPU使能IER寄存器 或者使能DBGIER寄存器 并对全局中断屏蔽位INTM进行适当的使能 七 片内外设的中断扩展 53 七 片内外设的中断扩展 X281x的三级中断系统分析 54 X281x中断的工作过程 七 片内外设的中断扩展 55 PIE控制器概述 PIE中断向量表PIE一共可以支持96个中断 每一个中断都有中断服务子程序ISR 那么CPU响应中断时 如何找到对应的中断服务子程序呢 解决办法就是将DSP的各个中断服务子程序的地址存储在专用RAM连续空间中 这就是中断相量表 所有多通道 MUXed 中断和非多通道 nonMUXed 中断中的每个中断都有一个向量 非多通道中断源由CPU直接提供 在器件配置期间 用户要使用向量表并在操作期间去修改它 七 片内外设的中断扩展 七 片内外设的中断扩展 向量表映射 在C28x芯片上 中断向量表可以和存储器的五个不同位置相对应 实际上 F28x芯片只使用了PIE向量表映像 向量映像由下述信号控制 1 VMAP 该位是状态寄存器STl的位3 芯片复位将把该位置1 通过写STl或执行SETC CLRCVMAP指令可以修改该位的状态 对于正常的F2812操作 可把该位设置为1 2 M0M1MAP 该位是状态寄存器ST1的位11 芯片复位将把该位置1 通过写STl或执行SETC CLRCM0M1MAP指令可以修改该位的状态 对于正常的F2812操作 该位应该保持为1 M0M1MAP 0保留 仅用于TI测试 57 向量表映射 3 MP MC 该位是XINTCNF2寄存器的位8 在有外部接口 XINTF 的芯片上 复位时 该位的默认值由XMP MC输入信号设置 在没有XINTF的芯片上 在内部将XMP MC拉为低电平 复位后 通过写XINTCNF2寄存器 地址 0 x00000B34 可以修改该位状态 4 ENPIE 该位是寄存器PIECTRL的位0 复位时该位的默认值设为0 PIE无效 复位后 通过写PIECTRL寄存器 地址 0 x00000CE0 可以修改该位状态 七 片内外设的中断扩展 七 片内外设的中断扩展 M1和M0向量表映像仅留作TI测试之用 当使用其他向量映像时 M0和M1存储器用作RAM块 可以自由使用 没有限制 芯片复位后 向量表映像如书中表所示 在复位和程序引导完成之后 应该由用户对PIE向量表进行代码初始化 然后 由应用程序使能PIE向量表 从PIE向量表所指出的位置上取回中断向量 59 多路复用中断处理过程 1 不要清除一个PIEIFR位 当读 修改 写操作发生时 一个已被录入的中断可能会丢失 清除相应的PIEIFR位 该未决的中断应该被服务 假如用户希望清除PIEIFR位 而不执行正常的服务子程序 则应按下列的过程 步骤1 设置EALLOW位 允许修改PIE向量表 步骤2 修改PIE向量表以便将外设服务子程序的向量指向一个临时ISR 这个临时ISR仅完成从中断操作的返回 IRET 步骤3 使能该中断以便使该中断通过临时ISR得到服务 步骤4 在执行了临时中断服务子程序后 将清除PIEIFR的位 步骤5 修改PIE向量表重新将外设的服务子程序映像至适当的服务子程序 步骤6 清除EALLOW位 CPU的IFR寄存器在CPU中是整合的 因为清除CPUIFR寄存器中的位不会造成一个己录入的中断的丢失 2 软件 中断优先级 3 使用PIEIER禁止中断 使用PIEIER寄存器去使能一个中断或禁止这个中断 七 片内外设的中断扩展 60 使能或禁止多路复用外设中断 使能或禁止一个中断的通常会产生下列两个过程 1 使用PIEIERx寄存器去禁止中断并保护相应的PIEIFRx标志 当清除PIEIERx寄存器中的位 保护PIEIFRx寄存器的相应位时 应按下列过程 步骤1 禁止全局中断 INTM 1 步骤2 清除PIEIERx y位去禁止一个给定的外设中断 可以对同组一个或多个外设这样去作 步骤3 等待5个周期 需要确保这个延时 任何录入CPU的中断均已经被标志在CPU的IFR寄存器中 步骤4 为外设组清除CPUIFRx位 这是对CPU的IFR寄存器的软件操作 步骤5 为外设组清除PIEACKx位 步骤6 使能全局中断 INTM 0 七 片内外设的中断扩展 61 2 使用PIEIERx寄存器去禁止中断并清除相应的PIEIFRx标志 完成外设中断的软件复位并清除PIEIFRx寄存器和IFR寄存器中的相应标志 按下列过程 步骤1 禁止全局中断 INTM 1 步骤2 置位EALLOW位 步骤3 修改PIE向量表 将特有的外设中断暂时映像到 一个空的中断服务子程序ISR 这个空的ISR仅完成从中断指令的返回 在没有丢失来自其他外设组的任何中断的情况下 这是清除单个PIEIFRx y位的一种安全途径 步骤4 禁止外设寄存器的外设中断 步骤5 使能全局中断 INTM 0 步骤6 通过空的ISR子程序为那些等待来自外设的未决中断服务 步骤7 禁止全局中断 INTM 1 步骤8 修改PIE向量表 将外设向量映像到它最初的ISR 步骤9 清除EALLOW位 步骤10 禁止给定外设的PIEIER位 步骤11 清除给定外设组的IFR位 这是对CPUIFR寄存器的安全操作 步骤12 清除PIE组的PIEACK位 步骤13 使能全局中断 七 片内外设的中断扩展 使能或禁止多路复用外设中断 62 从外设到CPU的多路复用中断请求流程 63 步骤1 任何PIE组里的外设和外部中断产生一个中断 假如外设中断已被使能 那么 该中断要求就被置入PIE模块 步骤2 PIE模块识别PIE组x内已经录入的中断y INTx y 并且将相应的PIE中断标志位锁存 PIEIFRx y 1 步骤3 为了置位从PIE到CPU的中断要求 下列两个条件必须为真 1 适当的使能位必须置位 PIEIERx y 1 2 必须清除该组的PIEACKx位 步骤4 如果步骤3中的两个条件为真 那么就在CPU建立了一个中断要求 响应位再次被置位 PIEACKx 1 PIEACKx位将一直保持置位直至清除该位 这表示来自该组的附加中断能够被从PIE设置到CPU 步骤5 CPU中断标志位置位 CPUIFRx 1 以标示出一个CPU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 船厂入职考试题及答案大全
- 测量学仪器考试题及答案
- 高水平安全保障新质生产力
- 西北省份发展新质生产力
- 郑州新质生产力发展策略探析
- 工程力学 课件 柔索约束
- 2025年疼痛管理与镇痛药物应用评估模拟测试卷答案及解析
- 民族小学安全培训设施课件
- 2025年儿童保健与早期教育心理评估答案及解析
- 2025年老年医学老年痴呆症评估与干预模拟试卷答案及解析
- 感恩教师节幼儿园教师节
- 小学科学新教科版三年级上册全册教案(2025秋新版)
- 病人出入院的护理课件
- 电缆安全小知识培训内容课件
- (2025年标准)员工住房安全协议书
- 苏教版2025-2026秋三年级数学上册教学计划及课时安排
- 【里斯】年轻一代新能源汽车消费洞察与预测 -新物种 新理念 新趋势(2024-2025)
- 2025年综合基础知识题库(含答案)
- 医院意识形态培训课件
- DB32T3916-2020建筑地基基础检测规程
- 新苏教版六年级上册《科学》全一册全部课件(含19课时)
评论
0/150
提交评论