共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 28BYJ-48机械臂实现人脸跟随被打赏¥24元 | |
| 基于RK3506B的片温识读功能的实现被打赏¥25元 | |
| 【瑞萨RA8D1测评】基于FreeRTOS的lvgl移植教程被打赏¥29元 | |
| 电子价签墨水屏开发被打赏¥35元 | |
| 【Ozone】RTT 打印终端使用被打赏¥29元 | |
| BMS保护板绝缘检测功能-不平衡电桥技术绝缘电阻检测设计与实现被打赏¥34元 | |
| 给28BYJ-48三自由度机械臂加一个网页控制台被打赏¥32元 | |
| 用28BYJ-48电机从零搭一台三自由度机械臂被打赏¥33元 | |
| 【英飞凌开发经验】ModusToolbox配置EdgeTalk外设被打赏¥27元 | |
| 基于BQ76952PFBR的BMS保护板热插拔损坏的原因和处理措施被打赏¥32元 | |
我要赚赏金
