历史上的今天
返回首页

历史上的今天

今天是:2024年08月25日(星期日)

正在发生

2021年08月25日 | 飞思卡尔RTI实时中断模块

2021-08-25 来源:eefocus

实时中断就是一个定时模块,定时溢出,产生中断。 第一步,实时中断RTI 在默认情况下是关闭的,怎样才能让 RTI 工作呢? 这就用到实时中断控制寄存器 RTICTL 了。 RTICTL是一个八位寄存器,第七位没定义,只用到低七位[RTR6~RTR0]。当RTR[6:4]=000时,实时中断被禁止,只要当RTR[6:4] 不全为0时,实时中断就开了同时实时中断的溢出周期也是由该寄存器配置的。 RTI 的参考时间是外部晶振的时钟OSCCLK。故,实时中断的溢出时钟周期=(RTR[3:0]+1) x (2的(RTR[6:4] + 9)次方)/OSCCLK  第二步,要想在实时中断溢出时产生一个中断,则用到寄存器 CRGINT 了。                 


当CRGINT_RTIE=1时,每个周期结束时,就会产生一个中断只要配置好上面说的两个寄存器,再写上相应的中断函数,实时中断就可以用了。顺便提一下,实时中断 RTI 的中断号是 7 CRGFLG_RTIF 是实时中断的标志位,当 RTI 溢出时,CRGFLG_RTIF 就会由硬件置1,向CRGFLG_RTIF 写1,可以清零标志位。这和51单片机不一样,51单片机的标志位清零是向相应的寄存器写0 与 RTI 相关的寄存器还有 CLKSEL_RTIWAI,不过一般都不会用到。当CLKSEL_RTIWAI=1时,只要系统进入等待模式,RTI 就停止工作。当CLKSEL_RTIWAI=0时,在等待模式下,RTI 仍然工作实时中断写到这里接进尾声了,下面附些与实时中断相关的程序:实时中断就是一个定时模块,定时溢出,产生中断。 第一步,实时中断RTI 在默认情况下是关闭的,怎样才能让 RTI 工作呢? 这就用到实时中断控制寄存器 RTICTL 了。 RTICTL是一个八位寄存器,第七位没定义,只用到低七位[RTR6~RTR0]。当RTR[6:4]=000时,实时中断被禁止,只要当RTR[6:4] 不全为0时,实时中断就开了同时实时中断的溢出周期也是由该寄存器配置的。 RTI 的参考时间是外部晶振的时钟OSCCLK。故,实时中断的溢出时钟周期=(RTR[3:0]+1) x (2的(RTR[6:4] + 9)次方)/OSCCLK  第二步,要想在实时中断溢出时产生一个中断,则用到寄存器 CRGINT 了。                 


当CRGINT_RTIE=1时,每个周期结束时,就会产生一个中断只要配置好上面说的两个寄存器,再写上相应的中断函数,实时中断就可以用了。顺便提一下,实时中断 RTI 的中断号是 7 CRGFLG_RTIF 是实时中断的标志位,当 RTI 溢出时,CRGFLG_RTIF 就会由硬件置1,向CRGFLG_RTIF 写1,可以清零标志位。这和51单片机不一样,51单片机的标志位清零是向相应的寄存器写0 与 RTI 相关的寄存器还有 CLKSEL_RTIWAI,不过一般都不会用到。当CLKSEL_RTIWAI=1时,只要系统进入等待模式,RTI 就停止工作。当CLKSEL_RTIWAI=0时,在等待模式下,RTI 仍然工作实时中断写到这里接进尾声了,下面附些与实时中断相关的程序:
             

#include     
#include    
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
void RTI_INIT()       //实时中断 RTI 初始化函数
{
CRGINT_RTIE=1;       // 允许在每个周期结束产生中断
RTICTL=0x59;     // 设置RTICTL为 0101 1001 溢出周期为 (9+1)*2^(5+9)/(16M)= 10*2^14/(16M)
}                  //实际上是10.24ms    16M是外部晶振的频率,实时中断以外部晶振时钟为参考时钟
void main()
{
DisableInterrupts;
RTI_INIT();
EnableInterrupts;
for(;;)
    {   
    }
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED       //实时中断RTI 中断函数
void interrupt 7 RTI(void)
{
CRGFLG_RTIF=1; //向CRGFLG_RTIF 写1 清除标志位

推荐阅读

史海拾趣

Coherent Inc公司的发展小趣事

1966年,Coherent Inc.由一群斯坦福大学的研究人员共同创立,其中包括物理学家James Hobart。初创时期的公司致力于激光技术的研究和开发,逐渐积累起了丰富的技术底蕴。这种对技术的执着追求和不断探索,为公司的后续发展奠定了坚实的基础。

倍思特(BEST)公司的发展小趣事

Coherent Inc.在激光技术领域取得了多项技术突破,如固态激光器、半导体激光器、气体激光器、飞秒激光器等。这些技术的突破不仅提升了公司的产品性能和质量,也使其在行业中处于领先地位。公司的产品广泛应用于科学研究、工业制造、医疗诊断和治疗、通信等领域,为这些领域的发展做出了重要贡献。

Advanced Interconnections Corp公司的发展小趣事

为了降低经营风险并寻求新的增长点,AIC公司开始实施多元化发展战略。除了继续深耕连接器领域外,公司还积极拓展至线缆、接口等其他相关领域。通过不断的技术研发和市场拓展,AIC公司在这些领域也取得了不俗的成绩,实现了业务的多元化发展。

Dawn Electronics Inc公司的发展小趣事

在技术创新的基础上,Dawn Electronics Inc公司开始积极拓展市场。公司加强了与国内外客户的合作,通过提供优质的产品和服务,赢得了客户的信任和支持。同时,公司还注重品牌建设,积极参与行业展会和交流活动,提高了品牌知名度和影响力。这些努力为公司赢得了更多的市场份额和合作机会。

芯佰微(Corebai)公司的发展小趣事

随着技术的不断发展,芯佰微逐步拓展了自己的产品线,覆盖了放大器、接口电路、电源管理、时间数字转换器、DAC数模转换、ADC模数转换等多个领域。同时,公司积极开拓国内外市场,与众多知名企业建立了合作关系,将产品广泛应用于手持移动终端、消费类电子产品、个人电脑及周边设备、网络通信设备、医疗设备、办公设备等多个领域。这些努力使得芯佰微的产品在市场上获得了广泛认可。

CONEC公司的发展小趣事

为了进一步提升公司的竞争力和市场影响力,CONEC开始了国际化布局。1990年,康耐加拿大公司的成立,标志着公司迈出了国际化的重要一步。随后,CONEC在德国、捷克共和国、美国和波兰等地设立分公司或生产基地,形成了全球性的生产和销售网络。同时,公司还积极寻求与全球领先的电子企业和技术机构的战略合作,共同推动电子行业的发展。

问答坊 | AI 解惑

算术运算指令

Arithmetic Operations ABS r3 = abs r1 ; a1 = abs a1, a0=abs a0 ; Add/Subtract r5 = r2 + r1(s) ; r0.l = r2.h + r4.l(ns) ; r1.l = r6-r7(rnd20) ; r1.l = r6-r7(rnd12) ; r0 += 40 ; MAX /MIN r5 = max (r2, r3) ; r5 = min ( ...…

查看全部问答>

海康和大华的录像机,哪个更实惠?

最近公司要挑选工程上用的录像机,请各位谈谈哪个更实惠? 性能上该如何确定,比如网络传输、后期维护等…

查看全部问答>

s3c2410 Bank3 虚拟地址

小弟最近在写一个串口驱动,用到一个寄存器,其物理地址为0x18000000,也就是bank3的基地址,据我所知,linux 2.6中要读些该寄存器不可直接使用这个物理地址,它的虚拟地址是多少呢?之前调用了ioremap(08000000,1),但是没有达到预期效果,不知 ...…

查看全部问答>

linux hid设备通信,如何实现阻塞接收?

用libusb库搞了一个通信程序,usb_interrupt_read进行接收,但是这个函数是非阻塞的,写死循环太占CPU。 我试了select,监视/dev/bus/usb下设备打开句柄,也试了监视设备的输入端点管道句柄,都不好用。有谁搞过这方面的东西,提提建议。貌似win版 ...…

查看全部问答>

优龙bootloader的一些奇怪得问题

mov        r5, #NFCONF                        ;DsNandFlash         ldr        r0, [r5, #4]     &nb ...…

查看全部问答>

编译错误 command line error D8004 '/I' requires an argument

各位达人, 编译时出现如上错误,究竟怎么回事? 谢谢解答!…

查看全部问答>

俺的TIMER捕获中断咋进不去(1114)

本人也是刚接触1114,编写了段程序可是进入不了中断,特请教各位同道中人。我是想用定时器捕获功能,如能赐教不胜感激。 调试中发现在捕获脚上输入脉冲信号,程序就进入DefualtVectorHandle();函数中。可是关闭了中断注册函数zyIsrSet(NVIC_TIMER32 ...…

查看全部问答>

急,FPGA编程求助

我想编一个数码管动态显示的程序,但是下到板子(epm240t100c5)里一直跑不起来,也不知道是什么问题,求高手指导,谢谢。     module dig_show(clk,rst,csm_1,csm_2,db);input clk;         ...…

查看全部问答>

【TI原创】矩阵键盘扫描新思路

用过单片机的人应该都熟悉矩阵键盘扫描程序。矩阵键盘一般是依次扫描输出管脚,需要N(N为输出管脚的数目)次扫描才能完成整个键盘的一次完整扫描。不过,你见过一次就可以扫描一个完整键盘的程序吗?呵呵,这个你应该见过的,这就是键盘扫描中很有 ...…

查看全部问答>

易电源试用报告3.2:LMZ12010初试大电流输出:纹波较大,滤波用电感烧毁(芯片外)

从同学那儿弄来的500W 20Ω瓷盘变阻器派上用场了,但是要让LMZ12010输出吓人的10A电流的话,这个电阻值还是有点大,滑动端转到边缘上达到几欧姆,再小就要碰到另一端了。由于时间匆忙,今晚只粗略观察了一下,并没有正式测量数据。使用的最小电阻是 ...…

查看全部问答>