8051的中断控制响应时间一般为多少个机器周期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8051的中断控制响应时间一般为多少个机器周期相关的知识,希望对你有一定的参考价值。

8051的中断控制响应时间一般为多少个机器周期

参考技术A 最少3个机器周期,最多8个机器周期。
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。通常用内存中读取一个指令字的最短时间来规定CPU周期,(也就是
计算机通过内部或外部总线进行一次信息传输从而完成一个或几个微操作所需要的时间)),它一般由12个时钟周期(振荡周期)组成,也是由6个状态周期组成。而振荡周期=1秒/晶振频率,因此单片机的机器周期=12秒/晶振频率

AT91RM9200---定时器简介

1.前言

  • 系统定时器模块集成了3个不同的定时器

一个周期性间隔的定时器,用来为操作系统设置时基

一个看门狗定时器,可用于软件死锁时进行系统复位

一个实时时钟计数器用来记录流逝的时间

  •  系统定时器时钟

这些定时器计数使用由PMC(电源管理控制器)提供的慢时钟,这个时钟的典型频率是32.768KHZ,系统定时器也可以配置成支持其它频率

  • 定时器中断

系统定时器提供了一条中断线,连接到中断控制器,一般是作为终端控制器的中断源1,与debug单元和RTC共用一条中断线,需要通过寄存器进行区分。

 

2.系统定时器框架

  • 硬件框架

 图 系统定时器框架

 

  • 定时器的用途

 图 定时器的用途

3.功能介绍

  • 系统定时器时钟

系统定时器只使用SCLK时钟

  • 周期性间隔定时器

周期性间隔定时器用来为操作系统提供周期性的中断,PIT的reset值是0。

它是基于一个16位的递减计数器。它是通过将一个值预加载到ST_PIMR中。

当计数器达到0的时候,状态寄存器的PITS会被置位。如果使能中断,则会产生一个中断。计数器会自动加载初始值并启动。在任何时候加载ST_PIMR寄存器会立即采用新的初值并重新启动。

注意:ST_PIMR的周期如果小于MCK周期,则会产生不可预料的问题

  • 看门狗定时器

看门狗定时器是防止软件陷入死锁的时候造成系统卡死

它是通过一个16位的递减寄存器实现,初始值由ST_WDMR进行设置。

Reset时的值为0x00020000。它是使用了slow clock的128分频,来达到最大的周期为256s(典型slow clk为32.768khz情况下),也就是每隔128个slow clock周期,计数器加1.

通常情况下,在看门狗定时器溢出之前,用户会通过设置ST_CR.WDRST重新加载看门狗定时器初值

如果溢出发生,会做如下操作

设置中断产生的 ST_SR ( 状态寄存器 ) 的 WDOVF 位
l如果ST_WDMR .RSTEN被设置会产生内部reset信号
l Reloads and restarts the down counter.

写ST_WDMR寄存器不会加载并重启计数器。当ST_CR被写入,看门狗计数器会立即从ST_WDMR寄存器载入并重启,slow clock 128分频也会立即重置并重启。

  • 实时时钟

实时时钟被用来计数流逝的秒数。它是基于一个20位的计数器,时钟是由slow clk用编程值进行分频。Reset时这个值分频值被设置为0x8000。

当slow时钟采用32.768khz时,计数器则每隔1秒加1。20bit可以计数到1048576秒,多于12天的时间,然后回绕到0.

实时时钟可以在任何时候从ST_CRTR 寄存器读出值。

计数器的当前值和alarm寄存器ST_RTAR进行比较。如果计数值匹配,TC_SR寄存器的ALMS位被设置。

Reset后alarm寄存器被设置成最大值0.
20位计数器每次增加时,设置ST_SR中的RTTINC位,该位可用来启动中断,或产生一秒信号。
写 ST_RTMR 将立即对时钟分频器载入新值并重启,这同样会导致 20 位计数器复位

 

以上是关于8051的中断控制响应时间一般为多少个机器周期的主要内容,如果未能解决你的问题,请参考以下文章

[转]51430stm32周期和执行一条语句需要多长时间的问题

CPU响应外部中断的周期里为何要连续产生两个INTA信号?

实战技能分享,减小开关中断对系统实时性的影响,提升系统响应速度

SylixOS 中断响应时间测试

单片机指令周期机器周期状态周期时钟周期

stm32和ucosII里边如果把中断都关掉,那么此时到达的中断是直接被忽略掉还是等待到开启中断后继续响应啊