想问一下ad中断的结果问题。
时间:10-02
整理:3721RD
点击:
result寄存器到底是只存转换好的结果,还是连中间结果也用这个寄存器的呢?我在调试ad中断的时候用的是“仿真挂起立即停止转化”,然后我设置断点,到断点出看result寄存器,发现不是我要的值,在设置方式字为“仿真挂起后转换完毕后在停止ad”,这样的话到断点出在单步一条指令就会出现我要的期望值,难道ad的中间结果也放在result寄存器??
贴一下我的程序:
ADINIT:
LDP #DP_PF2
SPLK #2050H,ADCTRL1 ;AD在仿真悬挂时候转化完之后停止,级联,自动排序模式
SPLK #0001H,MAXCONV ;2个 通道
SPLK #0010H,CHSELSEQ1 ;选择1通道
SPLK #0000H,CHSELSEQ2
SPLK #0000H,CHSELSEQ3
SPLK #0000H,CHSELSEQ4
SPLK #0400H,ADCTRL2 ;中断方式1,EVAEVB都不能引起AD中断
RET
;----------------------------启动模数转换程序------------------------------------------------------
ADSTART:
CLRC INTM
LDP #DP_PF2
LACL ADCTRL2
OR #2000H ;启动AD
SACL ADCTRL2
RET
GISR1:
LDP #0E0H
LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位-->ACC
ADD #PVECTORS ;加上外设中断入口地址
BACC ;跳到相应的中断服务子程序
ADCINT_ISR:
LDP #DP_PF2 ;清AD中断标志INT FLAG SEQ1
LACL ADCTRL2
OR #2200H ;重新启动AD,并指向conv00
SACL ADCTRL2
CLRC INTM
RET
END
我的初始化有问题么??
我result是直接看memory的,0X70a8和0x70a9,两个通的的result都有不对。。。硬件上面应该没有问题。
result寄存器不存中间结果.用“仿真挂起立即停止转化”,结果不
对,有可能是还没有转化完就停止了.
贴一下我的程序:
ADINIT:
LDP #DP_PF2
SPLK #2050H,ADCTRL1 ;AD在仿真悬挂时候转化完之后停止,级联,自动排序模式
SPLK #0001H,MAXCONV ;2个 通道
SPLK #0010H,CHSELSEQ1 ;选择1通道
SPLK #0000H,CHSELSEQ2
SPLK #0000H,CHSELSEQ3
SPLK #0000H,CHSELSEQ4
SPLK #0400H,ADCTRL2 ;中断方式1,EVAEVB都不能引起AD中断
RET
;----------------------------启动模数转换程序------------------------------------------------------
ADSTART:
CLRC INTM
LDP #DP_PF2
LACL ADCTRL2
OR #2000H ;启动AD
SACL ADCTRL2
RET
GISR1:
LDP #0E0H
LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位-->ACC
ADD #PVECTORS ;加上外设中断入口地址
BACC ;跳到相应的中断服务子程序
ADCINT_ISR:
LDP #DP_PF2 ;清AD中断标志INT FLAG SEQ1
LACL ADCTRL2
OR #2200H ;重新启动AD,并指向conv00
SACL ADCTRL2
CLRC INTM
RET
END
我的初始化有问题么??
我result是直接看memory的,0X70a8和0x70a9,两个通的的result都有不对。。。硬件上面应该没有问题。
LACL ADCTRL2
OR #2200H ;重新启动AD,并指向conv00
SACL ADCTRL2
你为什么要或2200呢?位9是中断标志位,置1表示发生过中断,
你怎么手动置一呢?
你怎么手动置一呢?
写1是清中断。。。写0是无作用。。。dsp好像int flag都是写1清的。那我就不清楚了,我没用过AD中断.
请问用AD中断的时候是不是先要校准模式来校准??
除非精度要求高,否则不用校准.