打印

AT90CAN128芯片的ADC与CAN接收冲突?

[复制链接]
1985|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
narcissusyt|  楼主 | 2012-7-8 17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 narcissusyt 于 2012-7-8 17:04 编辑

今天在测试板子的时候发现一个问题:
      我用的at90can128芯片,使用ADC采集电压值,用CAN接收、发送数据,发现可以采集到电压值,也可以发送CAN消息,但是就是不能接收,开始我以为是用的CAN芯片问题,后来我下载了另一个不带ADC功能的程序,发现可以接收、发送CAN消息。
void Adc_init(void)
{
      ADCSRA=(1<<ADEN)|0x06; //使能ADC,时钟64分频
      ADCSRA|=(1<<ADIE);    //使能ADC中断
      ADCSRA|=(1<<ADSC);    //启动AD转换
}
      于是,我在原程序中,注释掉所有有关ADC的语句,发现可以发送、也可以接收CAN消息。随后,我将有关ADC的语句逐条注释掉,发现只要ADC开始转换,程序就自动复位了。如果把开始转换的语句注释掉,也就是上面程序中的 ADCSRA|=(1<<ADSC);    ,只要将这条注释掉,就可以接收CAN消息了,但是这样一来AD功能就没有了。
      问下各位大神,是否是AT90CAN128芯片的ADC与CAN接收冲突? 如果不是,问题在哪里?有没有解决方法? 谢谢~~

相关帖子

沙发
板砖横飞| | 2012-7-8 23:29 | 只看该作者
如果有这样的冲突,这颗片子就不用卖了,不要使能ADC的中断,改为查询模式试试看。

使用特权

评论回复
板凳
dqyubsh| | 2012-7-9 05:44 | 只看该作者
双向通讯不是把例子拷来就OK的,上边要有大量的代码支持,哪是教科书那么简单的事儿。ATMEL网站上有例程,可以在它的基础上深化。

使用特权

评论回复
地板
dlyt_test001| | 2012-7-9 09:59 | 只看该作者
这个现象应该和CAN通信模块没有关系。首先要把ADC做好。如果要用中断,要把中断函数写好。

使用特权

评论回复
5
dlyt_test001| | 2012-7-9 09:59 | 只看该作者
这个现象应该和CAN通信模块没有关系。首先要把ADC做好。如果要用中断,要把中断函数写好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

0

粉丝