中断程序编写与硬件仿真调试经验

时间:2024.4.27

1, 中断程序的编写

一个编程经验是,所有的中断都要尽快的运行和退出,中断服务程序越短越好,这样才不至于干扰主程序的工作和其他中断的运行。也就是,我们应该尽量把程序代码从中断服务函数里搬出来。

对于定时器的中断的工作方式,我们可以建立一个全局的标记(变量flag),在中断里置这个标记,然后就退出。在主程序里去检查这个标记,再清 0 标记和处理相应的工作。检查到这个标记之后,就运行相关的程序。对于 CPU 任务比较多的项目来说,这种工作方式可以获得最佳的工作效率。当然,对于非常实时的应用要求,比如时钟,还是建议在中断里做完,因为使用标记的方式时,主程序可能太忙而造成错过标记信号,就是这个标记还没有开始处理呢,下一个该中断又来了。熟练的程序员还是可以避开这些异常的情况的。(实质上是看中断发生的频率与cpu主频的相对快慢,cpu处理速度快就不会产生这种问题) 2, 在没有硬件的情况下,看看程序执行的如何,使用单步执行。但到外部中断的时候就过

不去了,怎么让他接着执行外部中断的服务从程序呢?

在仿真运行时,在peripheral中打开对应的IO口或UART等,找到外部中断输入的那一位,手动给中断信号就可。

3, Keil中调试技巧

<1>查看变量的值

注意,要查看变量的值,只能在程序停下来的状态下查看。在程序运行的过程中,程序不断地运行,变量也在不断地变化,一般是无法查看的。

(1)点停止程序后,在C源文件窗口程序中,将鼠标放在的变量“n”上面,可以看到旁边出现了一个小框框,上面显示了 n=0x47D3,这就是变量此时的值。

(2)如果觉得这样可能会点不准确,可以选中你要看的变量,同样会显示变量的值,个人感觉这种操作更为方便。

(3)在命令行窗口下,输入的方法也可以看变量,在命令行输入 n,回车,就看到结果了。

(4)在 watch 窗口看变量。点 watch 图标,就是那个有个眼镜的图标,打开 watch 窗口。注意要看某个变量,如果这个变量是某个函数私有的(局部变量),必须是程序停止时并且 PC 已经停止在了这个函数中才可以看到(这就需要在该函数中设置断点),各种看变量的情况都是这样。

注:watch框内的变量只有在当前变量作用域的才可以添加,例如全局变量。局部变量即使添加后,在下次调试时也会从watch窗口移除,改到locals窗口内显示。这个 ' 符号似乎是表示该变量是上次调试时定义的,好像没其他什么作用。做过测试,只要成功被记录进watch窗口的全局变量,即使该量的物理地址发生了变化,下次调试时调试器也能准确跟踪到,并在watch内刷新结果。locals窗口是查看当前函数处内部变量值得窗口。不要被误导。 KEIL调试时的watch窗口是查看的全局变量值,不能看内部变量值。

如果在watch窗口看内部变量,会是错误的。会误导你的!!

<2>这里再教一招,如果我想让 n 现在就变成我想要的值怎么办?这也是调试常见的手段,设置一个变量的值,比如,让 n =0x1234,只要在命令窗口里输入“n=0x1234”就行了,几乎所有变量都可以这样直接设置,包括 IO 口,比如你输入“P1.1=0”,结果第二个灯就亮了。

<3>还有一种直接看存储器的方法,可以看到所有存储器的值,但是和变量名称就不是那么好对应起来了。点 memory 窗口图标,打开 memory 窗口。在实际的硬件调试方式中,如果不用看 memery 窗口,就建议不用打开它。因为保持它的打开会增加仿真时通讯的时间,特别是单步运行的时间。

<4>仿真器仿真如何进入中断

你先main函数开头弄个断点,然后单步运行好了一个特殊的地方,使用 jlink 在单步时运行时,可能无法进入到中断服务函数中。这是因为中断函数可能在单步处理的瞬间已经运行过去了。如果要单步调试中断服务函数,请在中断服务函数内设置断点,再点全速。稍后就会停止在断点上,就可以继续单步运行了。

设置了一个静态变量 t,静态变量的值在进入函数时是不会被初始化的,而是保持上次的值。


第二篇:硬件调试经验总结


硬件调试经验总结

1 浪涌/过电应力损伤

1.1 烙铁接地不良导致MRF184损伤

启示:测试系统的仪器必须有外部接地点。

1.2 继电器切换编程电压导致89C52失效。

89C52的Vpp编程电压正常为12V,切换时达到20V,要串接100欧姆的电阻。

启示:继电器、开关机械式切换触点一般会有震荡,对于不同的负载所产生的过流或过压危害需要设计中采用阻容或二极管消除抖动。

1.3 热插拔产生浪涌

串口允许热插拔,也要考虑保护电路。

ADM208E,MAX208

启示:串口接口芯片用作板间信号通讯电平转换时,只要产生或维护中需要热插拔,其输入输出端就不能直接与外接插座相连,至少应串有保护电阻。

2容限

2.1时序

2.1.1 Flash写信号与片选信号同时翻转导致读操作错误

28SF040->28SF040

90ns->150ns

启示:逻辑器件中各信号要严格按照器件手册要求进行设计,并留有一定余量。

2.1.2

19M与38M时钟关系临界时隙误码

SD518

XCS30时钟芯片

启示:多时钟之间的正确时序关系及容限非常重要,ASIC手册必须对关键时序描述清晰。

2.2驱动能力

2.2.1输出极限应用导致替代出问题

DTMF收号芯片CM8870DI代替MT8870SR(MITEL)

全部参数一致,MT的典型值IOH=4.5nA》0.8nA。

启示:单板设计应严格按照数据手册设计,这样才能保证设计容限,才能保证设计的产品能够大批量生产。尤其是挂在数据总线上的器件,一定要按照器件手册考虑驱动能力。

2.2.2单片机高电平输出电流无法驱动ULN2003

普通数字电路接口芯片驱动功率芯片,要注意参数的最小值而不是凭经验进行替换。

2.3电源电压

3.3.1背板电源走线损耗电压下降的后果

80C320代替80C310

提示:根据系统的功耗容限,分析器件的电源电压范围,保证系统的电源稳定。

2.4逻辑电平稳定

3.4.1 TTL电平驱动CMOS电平器件导致单板运行不稳

EM7128-驱动AC16244

提示:多逻辑电平设计中,器件的每个管脚都要注意逻辑电平的配合问题,首先保证设计正确。

2.5关键参数取值

2 .5.1CPU测试管脚处理不当,上电不开工

AMD AM80C816-20替代Intel的N80C186

Test管脚下拉电阻过大

提示:针对可改变器件工作状态的制造厂家自由用特殊管脚,严格按照厂家要求可靠处理。

2.5.2器件测试输入管脚悬空带来的影响

SD522B-》SD522A

对于CMOS工艺器件,其未用输入管脚一定要通过4.7K上拉或1K电阻下拉,不能悬空。悬空的管脚可能会引入震荡,使系统莫名其妙出现问题。

2.5.3电容电阻精度不够产生拨号音不符合国标

电阻电容等器件的精度选择似乎是一个不起眼的小问题,但在振荡电路等于频率有关的电路中,需要考虑做好与最坏情况的影响。如温度对电容值,运放漂移的影响等。

2.6温度容限问题

2.6.1未使用温度补偿电路导致基准电压在-30oc时不正常

超常规温度范围的应用,需要特别关注模拟器件并提前进行局部电路高低温试验

2.6.2关键电路未作最差情况分析,异常动作。

保护电路是系统的关键部件,其保护点区间是一项非常关键的指标。在设计中开展容限分析,特别是温度器件参数离散方面的容限分析,可有效提高产品可靠性,降低问题更改的代价。

2.7寄存器设置不当,SGRAM无法达到最高频率。

某些厂家不同,其内部寄存器设置也会存在差异,在发生器件替代时充分考虑这种差异带来的影响。单板设计时更要注意做到兼容性。

按照器件手册设计电路时,对于器件的一些特性不能只关心典型值,应该按照其特性的分布范围考虑系统的容差问题。

3.1上电复位

MAX807看门狗

复位电路严格按照规范

3.2 DSP:DSP5630PV800-》DSP5630PV100

PT7A4401-》MT90401

内部有PLL等上电后需要一定时间才能稳定工作的器件,设计时需按照手册处理好上电过程与正常工作状态的切换。

3.3 PCI桥芯片SB21150芯片存在BUG

对复杂器件的上电稳定性要做验证,与厂家签订合作协议,保证器件及典型电路作更改时第一时间通知公司。

3.4直流电源跌落的影响是多方面的,在网上曾出现多次事故,这与硬件设计、单板软件设计都有很大关系,需要综合考虑。

3.5 DTMF芯片UM91215A需要缓上电。数模混合电路的上电设计,对厂家推荐的电路的更改需要充分验证。

更多相关推荐:
在华为工作的一些硬件调试经验总结

绪论调试笔记都写在自己的本子上,一直没有时间写到博客上,最近准备总结一下。敬请期待。时间有些久了,有些情况只是记得大概。大家可参考参考。2浪涌/过电应力损伤2.1烙铁接地不良导致MRF184损伤启示:测试系统的…

在华为工作的一些硬件调试经验总结

绪论调试笔记都写在自己的本子上,一直没有时间写到博客上,最近准备总结一下。敬请期待。时间有些久了,有些情况只是记得大概。大家可参考参考。12浪涌/过电应力损伤22.1烙铁接地不良导致MRF184损伤启示:测试系…

在华为工作的一些硬件调试经验总结

1绪论调试笔记都写在自己的本子上,一直没有时间写到博客上,最近准备总结一下。敬请期待。时间有些久了,有些情况只是记得大概。大家可参考参考。2浪涌/过电应力损伤2.1烙铁接地不良导致MRF184损伤启示:测试系统…

硬件电路调试经验

调试过程1用万用表检查所有电源和地一端在源头另一端在各处2用万用表检查地与电源有没有短路3焊上稳压电源芯片及外围电阻电容给上相应的输入电压测是否有正确的输出电压画板时可以画出相应电源接通时LED灯亮4焊上ARM...

硬件工程师的经验总结

初学者硬件工程师本人是一个在校研究生本科就读于吉林大学通信工程学院硕士正就读于中船重工709研究所计算机应用专业对硬件有着无限的热情与爱好对未来也有着无限的憧憬与向往每一个人都在为自己的将来作着各种各样的计划都...

关于Visual C++ 6.0的调试技巧和经验总结

关于VisualC60的调试技巧和经验总结用VC来写程序有时总是出这样那样的问题没办法只能自己上网查资料来解决在这里把自己常见的问题和一些技巧贴出来分享给大家希望对大家有用也省去大家再去搜索的烦恼1如何在Rel...

单片机硬件设计的经验总结

单片机硬件设计的经验总结下面是总结的一些设计中应注意的问题,和单片机硬件设计原则,希望大家能看完(1)在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器、晶振、CPU的时钟输入端都易产生…

关于Visual C++ 6.0的调试技巧和经验总结

用VC来写程序有时总是出这样那样的问题没办法只能自己上网查资料来解决在这里把自己常见的问题和一些技巧贴出来分享给大家希望对大家有用也省去大家再去搜索的烦恼1如何在Release状态下进行调试ProjectgtS...

专业音响工程的设计、施工及调试经验总结

专业音响工程的设计施工及调试经验总结一前言1专业音响工程的特点专业音响工程是随着社会的发展人们物质文化生活的不断提高从而形成的对文艺演出娱乐休闲形式的不断要求而逐渐发展起来的新兴行业通常所谓的专业音响工程主要是...

软件测试中的43个功能测试点总结

空间管理您的位置51Testing软件测试网werm520的个人空间日志转软件测试中的43个功能测试点总结上一篇下一篇查看40评论0评分00软件测试中的43个功能测试点总结功能测试就是对产品的各功能进行phpn...

北京调研总结

省外北京调研总结为了更好的进行专业人才培养方案的建设完善和优化课程体系与企业探讨考取企业行业证书的可行性实现与企业岗位的零距离接轨信息专业科利用20xx年社会调研周的时间选派部分教师去中职教育和相关企业比较发达...

市场调研个人总结

市场调研个人总结经过短短一周的实训我深深体会到了自己在专业知识方面的欠缺和不足也意识到了自己做为建筑装饰专业的学生要想在以后的职业中崭露头角除了要有过硬的理论知识健康的体魄外还必须具备良好的心理素质使自己在以后...

硬件调试经验总结(14篇)