近日,调试一个2214的系统,需要采集一个外部的信号,同时还要有一个100us的定时器计数。由于使用了uc/os-II ,需要占用一个定时器1作。 因此,将采集外部信号和100us定时都放在了定时器0里。采集外部信号使用定时器0的捕获中断。实验发现,无法满足要求,也就是有丢数据的情况。
遂考虑,采用外部中断获取信号,定时器0只做100us定时。 程序修改好后(外部中断的初始化和外部中断响应函数),load,运行,没有反应,停止运行,程序停在了不知什么地方,一个全是数据的反汇编窗口。reload,失败,无法重新装入程序,试了n次,失败。无奈之下,用ISP擦除,load,运行,现象依旧! 反复修改程序,试验,无效! 没有思路!
在21icbbs上搜索“外部中断”,发现有网友说,LPC2214的外部中断有BUG,遂赶紧下载了它的勘误表。原来设置外部中断的工作方式,有说道!
设置方式:
VPBDIV = 0; //设置EXTMODE
EXTMODE = 1;
VPBDIV =1;
VPBDIV = 0; //设置EXTPLOAR
EXTPOLAR = 1;
VPBDIV = 1;
VPBDIV = 1(你想设置的值)
重新设置外部中断,LOAD,运行,出现了应该有的结果!
硬件的BUG害死人阿!