为什么PDB硬件触发ADC老是引起Pre-trigger错误[解决]

2020-02-19 20:58发布

本帖最后由 bailao99 于 2015-3-31 21:06 编辑

把adc_hw_trigger pdb的例子应用到其它程序,很容易导致PDB硬件触发ADC Pre-trigger错误
测试中发现,如果pre-trigger使能,ADC不读取结果会导致 Pre-trigger错误,ADC中断程序执行时间过长,例如插入printf指令,也会导致 Pre-trigger错误
有时候ADC先初始化,然后PDB初始化触发ADC,那么马上发生Pre-trigger错误
开发环境:Kinetis SDK V1.1.0,MDK513,FRDM-K22F

问题原因:ADC再次初始化之前,必须Deinit
解决方案:AD中断完成后PDB_DRV_DisableAdcPreTrigger,PDB_DRV_ClearAdcPreTriggerFlag,如果要改变ADC设置,那么先执行ADC16_DRV_Deinit,然后再次初始化ADC和PDB,AD中断中可以读到新设通道的值,且不会导致Pre-trigger错误
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
richyhuang
1楼-- · 2020-02-20 02:40
中断操作快点试试吧.
ccrt
2楼-- · 2020-02-20 06:18
一般不再中断中插printf吧
reflecter
3楼-- · 2020-02-20 11:29
AD中断完成后PDB_DRV_DisableAdcPreTrigger,PDB_DRV_ClearAdcPreTriggerFlag,如果要改变ADC设置,那么先执行ADC16_DRV_Deinit,然后再次初始化ADC和PDB,AD中断中可以读到新设通道的值,且不会导致Pre-trigger错误。谢谢分享,正在自己写FTM0触发PDB,PDB0 ch0触发ADC0的程序
reflecter
4楼-- · 2020-02-20 13:44
ccrt 发表于 2015-3-31 18:09
一般不再中断中插printf吧

呵呵,跟3楼一块提醒了楼主,最好看下printf函数的臃肿定义先。。。ISR中少调用此类函数
FSL_TICS_ZP
5楼-- · 2020-02-20 16:18
 精彩回答 2  元偷偷看……
jiayue12450
6楼-- · 2020-02-20 20:24
学习了,感谢楼主分享

一周热门 更多>