打印
[AVR单片机]

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

[复制链接]
1594|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
narcissusyt|  楼主 | 2012-7-8 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在测试板子的时候发现一个问题:
      我用的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接收冲突? 如果不是,问题在哪里?有没有解决方法? 谢谢~~

相关帖子

沙发
hyhmh| | 2012-7-9 10:46 | 只看该作者
**中,多个项目中 使用 AT90CAN128芯片
翻查了一下:至少2个项目 同时 使用了CAN、与A/D 功能。其中一个 还用了 集成商要求的CANopen协议(实际实现只是 满足了集成商的功能,与完整CANopen对比 可能少了一些 强大配置功能)
没有LZ所述问题。
估计, LZ的 软件没有完全 弄好。可考虑:
1) CAN 中断处理
2)A/D 转换是如何处理的?

使用特权

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

本版积分规则

0

主题

4

帖子

0

粉丝