Например TDA7294

Форум РадиоКот • Просмотр темы - CAN адаптер для рулевых кнопок VW Polo Sedan
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 23:26:34

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 106 ]    , , , 4, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Вс ноя 08, 2015 19:16:49 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 26, 2012 18:25:30
Сообщений: 23
Рейтинг сообщения: 0
Попробовал твой код запихать в прогу - не работает(( И если оставлять часть с while(1) из цикла не выходит.
Раскопал еще инфу, получается как то так. B9 - адрес, 46B9 - инвертированный адрес + адрес. в двоичном виде выглядит как
0b100011010111001
а передается в посылке
0b100111010110001 (вся портянка младшим битом вперед)
с кодами команд то же самое.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Вс ноя 08, 2015 20:09:29 
Электрический кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 128
Зарегистрирован: Чт июн 20, 2013 00:00:58
Сообщений: 1031
Откуда: москва, м.Сходненская
Рейтинг сообщения: 0
а точно! инвертированый адрес.
ну так прога это пример кода, а вот задержки надо выставлять опытным путем, мои задержки подогнаны под тини 13а подгонял с лог анализатором.
мой пример только показывает программный способ передачи
цикл да бесконечный в многоточии подразумевается основной код программы
Но есть одно но во время передачи надо контролировать прерывания иначе задержки могут уплыть, у меня задержки подогнаны при условии работы АЦП изза чего и расходятся расчетные задержки с реальными.
как пример что будет если во время передачи нека прийдет прерывание от кана?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Вс ноя 08, 2015 20:35:31 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 26, 2012 18:25:30
Сообщений: 23
Рейтинг сообщения: 0
Мне кажется, ничего не будет, по крайней мере в ардуино коде. Там смысл такой, что пока сообщение окончательно не обработается (не будет отпрален ИК-код), следующее сообщение не будет получено. В качестве примера из прошлого сообщения с листингом кан пакетов, при нажатии кнопки прилетает подряд 4 пакета, а если вставить на прием пакета с определенной датой отправку ИК, то их них успевает обрабатываться 2 (один раз проскочило 3).
Еще поясни пожалуйста, с помощью строки
if ((necc&(1<<i))!=0)
осуществляется перебор с первого бита или с последнего? Я пока не силен в побитовых операциях(
Насчет задержек это да, находил на ардуину скетч похожий, там чутка другие тайминги. Ну это дело поправимое, главное посылку правильно собрать.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Вс ноя 08, 2015 21:17:07 
Электрический кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 128
Зарегистрирован: Чт июн 20, 2013 00:00:58
Сообщений: 1031
Откуда: москва, м.Сходненская
Рейтинг сообщения: 0
проверка i бита на неравенство 0, мы же передаем число в виде битов вот и читаем последовательно каждый бит если 0 передаем 0, если не ноль передаем еденичку. 1<<0 есть нулевой бит, 1<<7 седьмой (последний) бит
по поводу перебора смотреть выше оператор for, как там идет счет? i++ значит с 0 бита по 7
надо для начала разобраться с битовыми операциями, с ними можно такого наворотить.....считай это основа при работе как с портами так и с переменными и их конвертирование в иной вид.....


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Пн ноя 09, 2015 05:11:39 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 26, 2012 18:25:30
Сообщений: 23
Рейтинг сообщения: 0
Ок, спасибо)


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Вт ноя 10, 2015 19:29:46 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 26, 2012 18:25:30
Сообщений: 23
Рейтинг сообщения: 0
В общем, еще одна победа! Can и Kenwood теперь разговаривают)
Вот такой вот скетч
Спойлер// Version 1.0, фильтр CAN с последующей передачей IR-кода

#include <SPI.h>
#include "mcp_can.h"

#define outputPin 4

unsigned int VOL_UP[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,1,0};
unsigned int VOL_DN[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0};
unsigned int MUTE[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,1,0};
unsigned int SOURCE[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,1,0};
unsigned int SEEK_UP[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,0,1,0};
unsigned int TRK_UP[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,1,0};
unsigned int TRK_DN[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0};
unsigned int DISC_UP[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0};
unsigned int DISC_DN[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0};
unsigned int ANSWER[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0};

// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 9;

MCP_CAN CAN(SPI_CS_PIN); // Set CS pin

void setup()
{
Serial.begin(115200);
pinMode(outputPin, OUTPUT);
digitalWrite(outputPin, HIGH);
Serial.println("start");
START_INIT:

if(CAN_OK == CAN.begin(CAN_100KBPS)) // init can bus : baudrate = 100k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
}

boolean send(unsigned int *command)
{
digitalWrite(outputPin, LOW);
delay(10);
digitalWrite(outputPin, HIGH);
delayMicroseconds(4500);
for (int x = 0; x < 49; x++)
{
if (command[x] == 0)
{
digitalWrite(outputPin, LOW);
}
else
{
digitalWrite(outputPin, HIGH);
}
delayMicroseconds(1000);
digitalWrite(outputPin, HIGH);
delayMicroseconds(200);
}
}

void loop()
{
unsigned char len = 0;
unsigned char buf[8];
if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf
unsigned long canId = CAN.getCanId();
if((canId = 0x5C1)&&(len=4)&&(buf[1]==0)&&(buf[2]==0)&&(buf[3]==0x20)) //((buf[0]==0x06)||(buf[0]==0x07)||(buf[0]==0x02)||(buf[0]==0x03)||(buf[0]==0x1A)||(buf[0]==0x2B))&&
{
switch (buf[0])
{
case 0x06: // Vol_Up
Serial.println("Volume UP");
send(VOL_UP); //отправка кода(адрес, команда)
break;
case 0x07: // Vol_Down
Serial.println("Volume Down");
send(VOL_DN); //отправка кода(адрес, команда)
break;
case 0x1A: // Phone
Serial.println("Phone Btn");
send(SOURCE); //отправка кода(адрес, команда)
break;
case 0x02: // UP (0x22)
Serial.println("Track UP");
send(TRK_UP); //отправка кода(адрес, команда)
break;
case 0x03: // Down (0x23)
Serial.println("Track Down");
send(TRK_DN); //отправка кода(адрес, команда)
break;
case 0x2B: //Mute
Serial.println("Mute");
send(MUTE); //отправка кода(адрес, команда)
break;
default:
// if nothing else matches, do the default
// default is optional
break;
}
}
}
}

/*********************************************************************************************************
END FILE
*********************************************************************************************************/


Хрен знает, что за коды сигналов, и почему там 49 бит, но тут все немного иначе, чем при отправке IR-кода, хотя бы потому, что по умолчанию на линии высокий уровень. Кстати, работает даже без подключения к массе авто/магнитолы, то есть по одному проводу.
Код отправки честно скопипастчен отсюда http://custombaggerforum.com/forum/showthread.php?551-Road-Glide-Hacks/page3
Но не все так гладко, есть загвоздка. Как мы уже знаем, при нажатии клавиши ардуино обрабатывает 4 кан-пакета. Если вставить обработчик ИК, то по кану успевает обрабатываться 2 (а иногда 3), точнее даже наверное они остаются в буфере mcp. Соответственно, при нажатии кнопки громкость увеличивается на 2 пункта, треки переключаются через 1)). Нужно припилить сюда обработчик, который бы считал одинаковые пакеты в течение определенного времени и считал их за один пакет, либо ничего не делал при всех получениях, кроме первого.
А еще накопал пакеты с данными о включении задней передачи, и можно сюда запилить отправку ATT при ее включении и еще раз ATT при выключении.
Работа идет..)) Не прошло и 3 года..))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Вт ноя 10, 2015 22:30:20 
Электрический кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 128
Зарегистрирован: Чт июн 20, 2013 00:00:58
Сообщений: 1031
Откуда: москва, м.Сходненская
Рейтинг сообщения: 0
ну вот, осталось разукрасить и мона пользоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Вт ноя 17, 2015 14:30:41 
Родился

Зарегистрирован: Чт сен 17, 2015 13:18:32
Сообщений: 2
Рейтинг сообщения: 0
bratec_bober, как у тебя дела с проектом? У меня задачка попроще чем у тебя, нужно управлять мафаном с резистивных кнопок руля. Управление тоже кенвудом, и тоже по одному проводу. Не могу разобраться с аппаратной частью. может проблема с пониманием протокола. Из описания протокола понял. что пауза это отсутствие напряжения, что я и использовал. Но мне советовали использовать транзистор, для инвертирования сигнала. Ты как сделал? Транзистора под рукой нет, не могу проветрить предложенный вариант. Ещё есть подозрения, что из-за задержек, связанными с выполнением других функций в программе, не выдерживаются необходимые временные задержки для соблюдения протокола NEC


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт ноя 19, 2015 18:15:00 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 26, 2012 18:25:30
Сообщений: 23
Рейтинг сообщения: 0
Пауза - это высокий уровень. По умолчанию на линии - высокий уровень. Импульс - низкий уровень. На практике вышло так. По описанию - да, все как ты говоришь, и Mishany говорил, и wheelremote пишет. Короче, все так, как в описании, но уровни надо инвертировать))) я не знаю, как проще сказать)) Схема подключения кана в скетче, на 4-ю ногу ардуины повесил вывод на remote_cont, все работает. Сегодня как раз пришла последняя запчасть - can-модуль от китайцев, подружу его с pro-mini и l7805 и будет готовое устройство) как будет готово - выложу.
Скетч полностью готов к употреблению, реализована функция ATT при включении задней передачи.
Спойлер// Version 1.0, фильтр CAN с последующей передачей IR-кода

#include <SPI.h>
#include "mcp_can.h"

#define outputPin 4 // remote_cont

unsigned int VOL_UP[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,1,0};
unsigned int VOL_DN[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0};
unsigned int MUTE[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,1,0};
unsigned int SOURCE[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,1,0};
unsigned int SEEK_UP[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,0,1,0};
unsigned int TRK_UP[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,1,0};
unsigned int TRK_DN[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0};
unsigned int DISC_UP[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0};
unsigned int DISC_DN[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0};
unsigned int ANSWER[49] = {0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0};
int reverse = 0;
unsigned long last_time;
// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 9;

MCP_CAN CAN(SPI_CS_PIN); // Set CS pin

void setup()
{
Serial.begin(115200);
pinMode(outputPin, OUTPUT);
digitalWrite(outputPin, HIGH);
Serial.println("start");
START_INIT:

if(CAN_OK == CAN.begin(CAN_100KBPS)) // init can bus : baudrate = 100k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
}

boolean send(unsigned int *command)
{
digitalWrite(outputPin, LOW);
delay(10);
digitalWrite(outputPin, HIGH);
delayMicroseconds(4500);
for (int x = 0; x < 49; x++)
{
if (command[x] == 0)
{
digitalWrite(outputPin, LOW);
}
else
{
digitalWrite(outputPin, HIGH);
}
delayMicroseconds(1000);
digitalWrite(outputPin, HIGH);
delayMicroseconds(200);
}
}

void loop()
{
unsigned char len = 0;
unsigned char buf[8];
if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf
unsigned long canId = CAN.getCanId();
if((canId = 0x5C1)&&(len=4)&&(buf[1]==0)&&(buf[2]==0)&&(buf[3]==0x20)) //((buf[0]==0x06)||(buf[0]==0x07)||(buf[0]==0x02)||(buf[0]==0x03)||(buf[0]==0x1A)||(buf[0]==0x2B))&&
{
if(last_time<millis())
{
switch (buf[0])
{
case 0x06: // Vol_Up
Serial.println("Volume UP");
send(VOL_UP); //отправка кода(адрес, команда)
break;
case 0x07: // Vol_Down
Serial.println("Volume Down");
send(VOL_DN); //отправка кода(адрес, команда)
break;
case 0x1A: // Phone
Serial.println("Phone Btn");
send(SOURCE); //отправка кода(адрес, команда)
break;
case 0x02: // UP (0x22)
Serial.println("Track UP");
send(TRK_UP); //отправка кода(адрес, команда)
break;
case 0x03: // Down (0x23)
Serial.println("Track Down");
send(TRK_DN); //отправка кода(адрес, команда)
break;
case 0x2B: //Mute
Serial.println("Mute");
send(MUTE); //отправка кода(адрес, команда)
break;
default:
// if nothing else matches, do the default
// default is optional
break;
}
last_time=millis()+40;
}
}
if((canId = 0x470)&&(len=8)&&(buf[3]==0x46)&&(buf[4]==0)&&(buf[5]==0)&&(buf[6]==0)&&(buf[7]==0x1F)) //Включение задней передачи
{
/*for(int i=0; i<8; i++)
{
Serial.print(buf[i], HEX);
Serial.print('\t');
}
Serial.println("");*/
if(((buf[0]==0xC0)||(buf[0]==0x40))&&(reverse==1)) //задняя не включена и предыдущее значение 1
{
reverse=0;
Serial.println("Reverse Disabled");
send(MUTE);
}
if(((buf[0]==0xE0)||(buf[0]==0x60))&&(reverse==0))
{
reverse=1;
Serial.println("Reverse Enabled");
send(MUTE);
}
}
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт ноя 19, 2015 20:49:12 
Электрический кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 128
Зарегистрирован: Чт июн 20, 2013 00:00:58
Сообщений: 1031
Откуда: москва, м.Сходненская
Рейтинг сообщения: 0
при передачи, функцию передачи могут только прерывания прерывать.
при передачи запрещать прерывания! и все будет норм, задержки подбирать опытным путем по логическому анализатору.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Ср дек 09, 2015 18:43:33 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 26, 2012 18:25:30
Сообщений: 23
Рейтинг сообщения: 0
Изображение
Изображение
Вот готовое устройство. Чуть уть оптимизировал код (закомментировал все Serial.println которые были нужны для отладки), иначе было занято 95% памяти переменных ProMini и выполнялось только первые 2-3- команды, а дальше срач в сериал кракозябрами.
А также опытным путем выяснено, что MCP2515 c 8mhz кварцем не работает с mcp с 16mhz кварцем (делал can-сеть из 2-х плат). С тачкой работает только 16 mhz, поэтому китайская плата не заработала, после замены кваца все поперло. Завтра видос выложу, может интересно кому будет, как из кармана под магнитолой поло торчит кусок витухи с коннектором rj-45. Не обессутьте, работаю в телекоме, чем богаты, тем и рады)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Пн мар 28, 2016 12:29:09 
Встал на лапы

Зарегистрирован: Ср авг 01, 2007 13:32:33
Сообщений: 94
Рейтинг сообщения: 0
Добрый день.
Наткнулся на эту тему, и появился ряд вопросов...
Тоже хочу разобраться с CAN в Polo sedan, но мне нужны будут концевики дверей, ручник и состояние двигла. Имею китайскую платку синюю ( как на фото постом выше) и ардуинку, цепляться буду к КЭН шине на магнитоле... (UPDATE: в комфортлайне нету КЭН шины возле магнитолы - буду брать с приборки)

я так понимаю битрейт CAN шины 100кбит? и что платка китайская пахать не хочет, если в ней не поменять кварц на 16мгц?

p.s. нет ли у вас готового скетча для снифа сообщений шины?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Пн мар 28, 2016 14:19:18 
Прорезались зубы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 25
Зарегистрирован: Вт май 08, 2012 10:42:29
Сообщений: 232
Рейтинг сообщения: 0
Fighter писал(а):
Добрый день.

p.s. нет ли у вас готового скетча для снифа сообщений шины?


Для сканирования шины CAN, собери CANHacker, в сети все для этого есть и будет нужный инструмент под рукой.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт май 19, 2016 19:17:09 
Нашел транзистор. Понюхал.

Карма: -3
Рейтинг сообщений: -2
Зарегистрирован: Сб дек 08, 2012 16:40:40
Сообщений: 160
Рейтинг сообщения: 0
Ща задам самый тупой вопрос в этой теме :)))
CAN-шина двухпроводная (L/H). Требуется ли соединять земли автомобиля и своего девайса?
Вопрос возник в связи с тем, что например у этой штуки земля не выведена:
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт май 19, 2016 19:21:30 
Электрический кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 128
Зарегистрирован: Чт июн 20, 2013 00:00:58
Сообщений: 1031
Откуда: москва, м.Сходненская
Рейтинг сообщения: 0
не нужно!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт май 26, 2016 04:40:01 
Нашел транзистор. Понюхал.

Карма: -3
Рейтинг сообщений: -2
Зарегистрирован: Сб дек 08, 2012 16:40:40
Сообщений: 160
Рейтинг сообщения: 0
Ещё один вопросик по Can.
Есть ли какая-то обратная связь по шине? В смысле, должен ли отправлять в пустоту Tx посылки или есть какая-то синхронизация через Rx? Вчера написал тест, который в бесконечном цикле шлёт посылки на шину, в итоге отправляется как я понимаю только arbitration field и передатчик вываливается по таймауту


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт май 26, 2016 08:13:05 
Прорезались зубы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 25
Зарегистрирован: Вт май 08, 2012 10:42:29
Сообщений: 232
Рейтинг сообщения: 0
Конечно есть! иначе как бы разруливались приорритеты, нулевой id имеет высший приорритет.
Поэтому передавая каждый бит id все устройства в шине одновременно стартуют и проверяют линию, если оно передает еденицу а получает в линии ноль то просто останавливает передачу, и ждет начало следующей передачи, так как в шине более важное сообщение. Вот как то так, не знаю понятно ли разъяснил, вроде все просто.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт май 26, 2016 09:16:40 
Нашел транзистор. Понюхал.

Карма: -3
Рейтинг сообщений: -2
Зарегистрирован: Сб дек 08, 2012 16:40:40
Сообщений: 160
Рейтинг сообщения: 0
Да, спасибо, всё понятно!
Почему-то сам не подумал про приоритеты.
Буду юзать Loop back mode


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт ноя 23, 2017 09:54:48 
Первый раз сказал Мяу!

Зарегистрирован: Вс окт 01, 2017 08:40:23
Сообщений: 30
Рейтинг сообщения: 0
Поясните, если не сложно такой ламерский вопрос, для чего используют микруху sja1000 при создании устройств для работы с CAN шиной, что мешает микроконтроллеру напрямую работать с CAN трансивером tja1050 ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CAN адаптер для рулевых кнопок VW Polo Sedan
СообщениеДобавлено: Чт ноя 23, 2017 11:47:18 
Прорезались зубы
Аватар пользователя

Карма: 5
Рейтинг сообщений: 25
Зарегистрирован: Вт май 08, 2012 10:42:29
Сообщений: 232
Рейтинг сообщения: 0
1) sja1000 используют в том случае, если у применяемого контроллера нет в наличии аппаратного CAN, и can это не тот интерфейс который легко создается программно.
2) В целях экономии, допустим атмега16м1 с аппаратным can стоит значительно дороже, нежели атмега16+sja1000

Конечно на сегодняшний день STM32 имеет несравненное преимущество и по цене и по периферии, но есть такая категория которой сложно покинуть AVR, думаю вряд ли вы встретите проект STM32+SJA1000


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

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y