共2条
1/1 1 跳转至页
问
我的ad 7、8通道转换的数值很奇怪,我是软件启动ad转换的
*ADCTRL2 = 0x2000;,
在此处设置一断点,在转换后设置一断点,则adin07、08 转换得到的数值正常,否则只在转换结束后设置一断点则adin07、08 的数值是正常值的一半左右,不正确。
有谁碰到过此类问题,多多指教 答 1: re发你的程序看看啊
bill350@126.com
答 2: 已发请查收。我觉得可能是2407 的7、8通道采样有问题。我的是级联方式 答 3: re我看了,
程序没有问题啊,不过处理中断后我看你没有重新设置*ADCTRL2
这个寄存器要重新设置的! 答 4: 是这样子吗 *ADCTRL2 = 0x2000;
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
while((*ADCTRL2 & 0x1000)==0x1000);
*ADCTRL2 = 0x4000; /*是这样吗,是在此处添加吗?*/
还是返回前添加? 答 5: re问题解决了吗?
应该是这样 答 6: 没有我设置断点和不设置断点采的数不同,设置断点采得数比较接近真实值,不知道为什么 答 7: 应该是加ADCTRL2 = ADCTRL2 | 0X4200吧用或要好一点,直接赋值可能将你以前的设置改变了.如果是用OX4000的话,没有清中断,所以设置断点和不设置断点值会不同.另外要在中断中最后要开总中断吧.个人意见,也没看过你的程序,不知道对不对.问题解决了的话通知一声,呵呵 答 8: 我试了不行!发愁阿
if(*PIVR==0x0027) /*time1 overbelow interrupt*/
{
asm(" clrc SXM");
*ADCTRL2 |= 0x4200;
*ADCTRL2 = 0x2000;
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
while((*ADCTRL2 & 0x1000)==0x1000);
j = RESULT0;
for(i=0;i<=10;i++)
{
adc_res[i]=*j>>6;
j++;
}
*EVAIFRA &= 0x0080;
asm(" clrc INTM");
return;
}
我的烂程序! 答 9: 其他通道没问题,只有7.8通道有问题?另外, ADCTRL2 = 0x2000,只需在初始化时设置就可以了
asm(" clrc SXM");
*ADCTRL2 |=0x4200;
//*ADCTRL2 = 0x2000;
当然,这只是个编程习惯问题,应该与本问题没有什么关系. 答 10: 其他通道问题不是很大0 通道和1通道的数偏大一些。,2、3、4、5、6通道基本正常。 答 11: 我设置的是启动/停止模式书上说启动停止模式下,排序器必须复位,以使排序器置于状态conv00。 答 12: 有可能是ad的这两个通道烧了啊!这两个通道的输入电压差不多是3.7v左右,不知道是不是烧了的缘故,可是单步运行就可以采到正确的数 答 13: 你接的是同一个信号吗?将信号加强一下试试 答 14: 不是我用示波器看了一下,ad 的7、8通道采样时时刻,输入ad 的信号有向下的脉冲,可能是信号的问题,不采样则信号不变,我的采样信号是直流。不知道如何消除这种采样对信号的干扰问题,大侠们有啥高招?
*ADCTRL2 = 0x2000;,
在此处设置一断点,在转换后设置一断点,则adin07、08 转换得到的数值正常,否则只在转换结束后设置一断点则adin07、08 的数值是正常值的一半左右,不正确。
有谁碰到过此类问题,多多指教 答 1: re发你的程序看看啊
bill350@126.com
答 2: 已发请查收。我觉得可能是2407 的7、8通道采样有问题。我的是级联方式 答 3: re我看了,
程序没有问题啊,不过处理中断后我看你没有重新设置*ADCTRL2
这个寄存器要重新设置的! 答 4: 是这样子吗 *ADCTRL2 = 0x2000;
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
while((*ADCTRL2 & 0x1000)==0x1000);
*ADCTRL2 = 0x4000; /*是这样吗,是在此处添加吗?*/
还是返回前添加? 答 5: re问题解决了吗?
应该是这样 答 6: 没有我设置断点和不设置断点采的数不同,设置断点采得数比较接近真实值,不知道为什么 答 7: 应该是加ADCTRL2 = ADCTRL2 | 0X4200吧用或要好一点,直接赋值可能将你以前的设置改变了.如果是用OX4000的话,没有清中断,所以设置断点和不设置断点值会不同.另外要在中断中最后要开总中断吧.个人意见,也没看过你的程序,不知道对不对.问题解决了的话通知一声,呵呵 答 8: 我试了不行!发愁阿
if(*PIVR==0x0027) /*time1 overbelow interrupt*/
{
asm(" clrc SXM");
*ADCTRL2 |= 0x4200;
*ADCTRL2 = 0x2000;
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
while((*ADCTRL2 & 0x1000)==0x1000);
j = RESULT0;
for(i=0;i<=10;i++)
{
adc_res[i]=*j>>6;
j++;
}
*EVAIFRA &= 0x0080;
asm(" clrc INTM");
return;
}
我的烂程序! 答 9: 其他通道没问题,只有7.8通道有问题?另外, ADCTRL2 = 0x2000,只需在初始化时设置就可以了
asm(" clrc SXM");
*ADCTRL2 |=0x4200;
//*ADCTRL2 = 0x2000;
当然,这只是个编程习惯问题,应该与本问题没有什么关系. 答 10: 其他通道问题不是很大0 通道和1通道的数偏大一些。,2、3、4、5、6通道基本正常。 答 11: 我设置的是启动/停止模式书上说启动停止模式下,排序器必须复位,以使排序器置于状态conv00。 答 12: 有可能是ad的这两个通道烧了啊!这两个通道的输入电压差不多是3.7v左右,不知道是不是烧了的缘故,可是单步运行就可以采到正确的数 答 13: 你接的是同一个信号吗?将信号加强一下试试 答 14: 不是我用示波器看了一下,ad 的7、8通道采样时时刻,输入ad 的信号有向下的脉冲,可能是信号的问题,不采样则信号不变,我的采样信号是直流。不知道如何消除这种采样对信号的干扰问题,大侠们有啥高招?
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |