DSP中断向量表和中断子向量表
扫描二维码
随时随地手机看文章
本案例在介绍数字pid控制器和模糊pl控制器的dsp应用程序设计的同时,还介绍ti公司c2000系列dsp芯片开发时,中断向量表和中断子向量表的编写和配置方法。 一个实用dsp程序除包括主程序和系统初始化程序以及存储器配置文件之外,还需要有中断向量表和中断子向量表程序,对于一个dsp控制器来说,中断的使用和管理是不可缺少的。在系统中,控制器的作用就是控制整个系统实时、有序地按照程序的要求运行,而dsp只有一个cpu,所以只有l个进程,当外部设各要求dsp控制时,就采用中断的方式,dsp根据中断的优先级,通过响应中断并执行中断服务子程序(isr)来对外部设各进行控制。一个正确的中断向量表和中断子向量表程序能够使系统正常运行,并能保证在系统不正常时自动恢复到程序初始化的状态,防止系统崩溃,提高工业控制的鲁棒性。 dsp lf2407有两级中断,第一级中断是cpu中断,共6个;第二级中断是外围设各中断,共46个。由外设中断扩展控制器(pie)和中断子向量表把外围设备中断映射到cpu中断,然后等待cpu的响应。此外cpu中断向量表还包括19个软件中断和硬件复位中断(reset)以及一个不可屏蔽申断(nmi)。这种两级中断是采用集中化的中断扩展设计方法,特别适合有大量外设中断的工业控制系统。 以下就是采用通用定时器gpti的比较操作来产生中断时,lf2407的中断向量表和申断子向量表程序。当需要采用其他中断时,可以直接在此程序中根据需要修改。该程序对lf2407来说是通用的,只是发生中断时,cpu要跳转的地址不一样而已。 对于一个实际的dsp系统来说,系统的中断管理是不可缺少的,因为目前任何dsp实时系统都具有中断,中断是dsp系统和外部世界发生实时联系的一个重要手段。作为ti公司的c2000系列dsp,它是偏向于控制的dsp芯片,因此它的中断管理更丰富和先进,读者理解起来也较困难。lf2407支持6个一级可屏蔽中断,采用集中化的中断扩展设计来满足大量的外设中断请求,所以每一级中断又有多个中断源,例如一级中断int2包含的中断源有比较器1、2、3、4、5、6中断,定时器1、3的周期、比较、下溢、上溢中断等。为了正确地响应外设中断,应该分两步来完成中断服务子程序。在本案例的程序中,采用通用定时器1的比较匹配中断,当cpu响应该中断时,首先转移到一级中断int2中,也即gisr2处执行,在一级中断int2中读取外设中断向量寄存器(pivr)的值,它是个偏移量,再加上中断子向量的首地址,程序就可以转移到二级中断子向量t1cint_isr(定时器1比较中断)子程序中,执行相应的操作后即完成了一次中断调用。 lf2407通过外设中断扩展控制器(pie)来实现集中化的中断扩展管理,这可以实现在占用极少资源的情况下,大大扩展可用的中断源。因此在实际的dsp程序中,中断向量表和中断子向量表程序是不可缺少的,读者在自行编写程序时一定要在主程序中用。include汇编伪指令把本实例介绍的向量表文件pid_generate_vec.asm包括进来。 另外,假中断向量是lf2407的一个特有的概念,它是保持中断系统完整性的一个特性。在向量表文件pid generate_voc.asm中可以发现,中断子向量表的地址是从00h到42h,而中断源却没有那么多,并且其入口地址叉是固定的,所以在中断子向量表的没有中断源的地方就要插人假中断向量以保证中断系统的完整性。当一个中断已经被响应,但却没有外设将中断向量的地址偏移量装入中断向量寄存器(pivr)中时,假中断向量的地址就被装人pivr中,这种缺省保证了系统按照可以控制的方式进行处理。假中断向量的子程序如下所示,一股都是复位看门狗电路。 欢迎转载,信息来源维库电子市场网()