完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
不知哪位大神用AT90CAN128写过CAN协议,我发送的代码调成功了,但是接收的代码怎么都没用,以下是源码(使用ATmel Studio7.0),晶振使用12MHz,使用官方手册上配置波特率1M,哪位大神帮忙看下接收的代码问题出在哪里,不胜感激
#include #include #include til/delay.h> #include "PortDrive.h" void InitCAN(void); unsigned char can_receivedata[8]={8,7,6,5,4,3,2,1}; void InitCAN(void) { CANGCON |= (1< CANBT2 = 0x08; CANBT3 = 0x24; //CANTCON = 0xff; //--------------can_MOB INITIAL------------------- CANPAGE = 0x00; //MOB0,自动增量,初值为0 CANSTMOB = 0; CANCDMOB = 0x08; //can2A,DLC=8 CANIDT4 = 0x00; CANIDT3 = 0x00; CANIDT2 = 0x00; CANIDT1 = 0x00; CANIDM4 = 0x00; CANIDM3 = 0x00; CANIDM2 = 0x00; CANIDM1 = 0x00; CANGIE |= ((1< CANPAGE = 0x00; CANCDMOB |= 0x88; //MOB0接收使能 //CANHPMOB = 0x00; CANGCON |= 0x02; //CAN控制器启动 } //中断函数 接收CAN数据帧 并 存入数据单元组 //********************************************************** ISR( CANIT_vect ) { unsigned char num_i; CANGIE &= ~(1< for(num_i = 0; num_i < 8; num_i++) { can_receivedata[num_i]=CANMSG; //取得8个字节的数据 } CANPAGE = 0x00; CANSTMOB &= ~(1< //接收使能 CANGIE |= (1< POC_1 = ~POC_1; } //CAN数据帧发送 int main( void ) { InitCAN(); DDRC = 0x02; PORTC = 0xff; PORTD = 0xff; DDRD = 0xa9; // MOB_send(); sei(); //CANGIE |= 1< { } } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5145 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7775 浏览 0 评论
3044 浏览 2 评论
3111 浏览 1 评论
10071 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:20 , Processed in 0.676451 second(s), Total 50, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号