Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
AT90CAN128. проблема обмена с компьютером USB-CAN
Отправлено
zuuuuk (87.249.3.182) 02 августа 2010, г. 13:23
При посылки пакета с компьютера через USB-CAN. устройство начинает генерировать много пакетов. я это посмотрел через осциллограф. и выдает сообщение BUSHEAVY. сама плата не выходит в прерывание по приему пакета. подскажите в чем может быть проблема?
вот инициализация самого CAN в AT90CAN128.
// CAN Controller initialization
// CAN: On
//my options
CANGSTA |= (1<<ENFG) ; // enable can
// All, except Timer Overrun: Off
CANGIE |= (1<<ENIT); // (1<<ENRX) | (1<<ENTX); //0x20;
// MOb0..7 Interrupts: MOb0: On, MOb1: On, MOb2: On, MOb3: On, MOb4: On, MOb5: On, MOb6: On, MOb7: On
CANIE2=0xFF;
// MOb8..14 Interrupts: MOb8: Off, MOb9: Off, MOb10: Off, MOb11: Off,
CANIE1=0xFF;
// Highest Interrupt Priority: MOb0
CANHPMOB=0x00;
//clock for 14.7456 MHz 125kbps
CANBT1=0x10;
CANBT2=0x0A;
CANBT3=0x25;
CANTCON=0xf0;
#asm("sei"); //enable interrapt
//ID tag
CANPAGE=00;
CANIDT1=0;
CANIDT2=0;
CANIDT3=0;
CANIDT4=0;
CANIDM1=0;
CANIDM2=0;
CANIDM3=0;
CANIDM4=0;
CANCDMOB |= (1<<DLC3);
CANCDMOB|=(1<<CONMOB1) ;
state = st_paus;
delay_ms (50);
// send messeg
CANPAGE=0x01;
CANIDT1=0x00;
CANIDT2=0x00;
CANIDT3=0;
CANIDT4=0;
CANCDMOB =(1<<DLC0);
CANMSG=0x55;
CANCDMOB|=(1<<DLC0);
CANCDMOB|=(1<<CONMOB0); //send
// CANCDMOB = 0;
while (1);
Составить ответ | Вернуться на конференцию
Ответы