Easyelectronics.ru

Электроника для всех
Текущее время: 20 ноя 2019, 12:57

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Pic18f2580 принять сообщение CAN с расширенным ID
СообщениеДобавлено: 10 окт 2018, 01:09 
Здравствуйте!

Зарегистрирован: 03 сен 2018, 17:18
Сообщения: 2
Здравствуйте. Не пинайте, не программист, "паяльщик". Суть. Pic18f2580 + mcp2551, подключено к кан шине авто. При приёме определённой посылки - такая то нога контроллера на минус. Есть не мной написанный код, с такой функцией. Там стандартные сообщения ( пример ID 32A, DLC 1, DATA 10 ). Хочу переделать под свои, расширенные сообщения ( на пример ID 1234532A, DLC 1, DATA 10 ). Посмотрел кучу всяких примеров, пробовал по разному - не получается, не хватает мозгов и знаний. Вот кусок кода:

unsigned int sid, eid, byte0, byte1;

union{
unsigned char b[2];
unsigned int w;
}ID;

// Главная функция
void main(void)
{
// Настройка портов
;

TRISB = 0b00001000;
TRISC = 0xFF;

PORTA = 0xfe;
PORTB = 0xff;
PORTC = 0x7b;
PORTA = 0x00;


// Установка начального состояния

INTCONbits.GIE = 0;



ADCON0 = 0;
ADCON1 = 0b00001111;
// ADCON2 = 0b10001001;

canInit();

Delay10KTCYx(0x7F);
Delay10KTCYx(0x7F);

PORTBbits.RB0 = 0;






// Главный цикл

for(;;)
{


if(INT_CAN_RX)
{
INT_CAN_RX = 0;

canReadPacket();
ID.b[1] = sidh_in;
ID.b[0] = sidl_in;
sid = (ID.w >> 5);
byte0 = c_dat_in[0];
byte1 = c_dat_in[1];
RXB0_FULL = 0;

if(sid == 0x32A)
{

//32A 1 10
if(byte0 == 0x10)
{
TRISC = ~0x01;
PORTC = 0;
}

Помогите пожалуйста поправить, для ID 1234532A


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pic18f2580 принять сообщение CAN с расширенным ID
СообщениеДобавлено: 10 окт 2018, 12:20 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 2367
Это не весь код, его не достаточно для переделки. Надо смотреть функцию canReadPacket().
И вообще у CAN 11-битные ID. Чтобы переделать под CAN 2.0b, где значения 29-битные, может не так мало понадобится и не факт, что за бесплатно кто-то захочет это делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pic18f2580 принять сообщение CAN с расширенным ID
СообщениеДобавлено: 10 окт 2018, 19:08 
Старожил
Аватара пользователя

Зарегистрирован: 04 сен 2010, 23:09
Сообщения: 3653
Откуда: Армения
Посмотрите на соотв. библиотеку MikroC (CAN, CANSPI). Там и примеры есть. Не помогут?
P.S. Аналогичные библиотеки присутстствуют и в MikroBasic и в MikroPascal


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Pic18f2580 принять сообщение CAN с расширенным ID
СообщениеДобавлено: 10 окт 2018, 20:24 
Здравствуйте!

Зарегистрирован: 03 сен 2018, 17:18
Сообщения: 2
MikroC видел, не то. В принципе задачу я решил с помощью Arduino, там просто пишешь ID какое нужно. Но лежит плата с pic18f2585, меньше габариты, обвязки меньше. Думал получится менять ID как в ардуине, ан нет...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB