![]() |
|
|
#11 |
|
Старший Пользователь
![]() Регистрация: 22.04.2009
Возраст: 44
Город: Москва
Регион: 77, 97, 99, 177
Машина: 2005\Nissan\X-Trail
Сообщений: 775
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
покажи весь скетч и либу для шилда
При передачи данных шилду (по SPI) нет аппаратного подтверждения принятых данных, поэтому нужно проверять программно, например, прочитать один из регистров cnf и сравнить с тем, что туда было записано. Если совпадает, значит соединение прошло успешно. Не во всех либах это сделано. Ещё момент, у тебя перемычка J1 (рядом с контактом Тх) открыта, а это значит, что питание для платы 3.3В, а не 5В. По крайней мере, для настоящего Pro Micro. Проверь напряжение на Vcc. И чем питается шилд? Судя по фотке, кварц на шилде 8Мгц, это влияет на значения регистров CNF, с помощью которых устанавливается скорость CAN шины в шилде. Чаще всего используется 16МГц, поэтому в либе значения могут быть рассчитаны для 16, а не для 8
__________________
В детстве, чтобы маленький Змей Горыныч был как все, мама заплетала его в косичку |
|
|
|
|
|
#12 |
|
Пользователь
![]() Регистрация: 17.02.2015
Возраст: 38
Город: surgut
Регион: 86
Машина: miata
Сообщений: 34
![]() |
Gorynch
либа отсюда https://github.com/Seeed-Studio/CAN_BUS_Shield напряжение на vcc 4.64 - на китайских про микро перемычка открыта как я понимаю, шилд питается от ардуины, которая в свою очередь от usb порта ноутбука шилд соединял с ардуиной по инструкции от iti1 у которого всё работает (правда с другим шилдом) скетчи пробовал разные вот один и зних: Код:
// demo: CAN-BUS Shield, receive data with check mode
// send data coming to fast, such as less than 10ms, you can use this way
// loovee, 2014-6-13
#include <SPI.h>
#include "mcp_can.h"
// 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 = 10;
MCP_CAN CAN(SPI_CS_PIN); // Set CS pin
void setup()
{
Serial.begin(9600);
START_INIT:
if(CAN_OK == CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
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;
}
}
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 char canId = CAN.getCanId();
Serial.println("-----------------------------");
Serial.println("get data from ID: ");
Serial.println(canId);
for(int i = 0; i<len; i++) // print the data
{
Serial.print(buf[i]);
Serial.print("\t");
}
Serial.println();
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
по факту, на данный момент - шилда/ардуино подключены к проводке авто и как только на них поступает питание - шилда начинает безостановки что-то принимать (светодиод rx мерцает, почти непрерывно светится) но ардуино нихрена не получает от шилды - даже сообщение из START_INIT (не появляется в мониторе порта ни при каких условиях, и на ардуине светодиод rx не моргает вообще) |
|
|
|
|
|
#13 |
|
Старший Пользователь
![]() Регистрация: 22.04.2009
Возраст: 44
Город: Москва
Регион: 77, 97, 99, 177
Машина: 2005\Nissan\X-Trail
Сообщений: 775
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ПрОвода питания от ардуины к шилду на картинке нет. Есть земля и данные
В данном скетче для проверки наличия нового сообщения идёт обращения к шилду через SPI, по идее для этого нужно использовать прерывание от шилда по пину 2 (в твоём случае), это будет быстрее Увеличь скорость rs232 до 115200 (и в скетче, и на компе) Добавь обработку прихода данных от компа: пришла "1" (т.е. ты в терминале нажал 1 и Enter) - инициализировать шилд, пришла "2" - запустить приём данных от шилда Светодиод rx на ардуине связан с rs232, а не с шилдом. Когда пойдут данные должен моргать Tx Самое главное - в скетче значения регистров CNF рассчитаны для 16МГц. Нужно пересчитывать для 8, или менять кварц
__________________
В детстве, чтобы маленький Змей Горыныч был как все, мама заплетала его в косичку |
|
|
|
|
|
#14 |
|
Старший Пользователь
![]() Регистрация: 17.01.2010
Возраст: 49
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Disgraced, попробуйте этот скетч, я им сканировал FF3, только скорость CAN поменяйте:
PHP код:
Последний раз редактировалось lti1; 25.06.2015 в 17:09. |
|
|
|
|
|
#15 |
|
Пользователь
![]() Регистрация: 17.02.2015
Возраст: 38
Город: surgut
Регион: 86
Машина: miata
Сообщений: 34
![]() |
Итак, по порядку: соединил разъем шилда 5V и разъем VCC ардуины - никакого эффекта.
Скетч в посте от lti1 не дал результата, в мониторе порта по прежнему тишина. Gorynch, по вашей подсказке поменял кварц - впаял на 16mhz. Что получилось - скетч из моего поста, шилда запитана, кварц на 16mhz - в мониторе порта поток сообщений: Код:
CAN BUS Shield init fail Init CAN BUS Shield again Т.е. до этого не было никаких сообщений, а теперь сообщает что всё плохо. По поводу можете помочь со скетчем? |
|
|
|
|
|
#16 |
|
Старший Пользователь
![]() Регистрация: 22.04.2009
Возраст: 44
Город: Москва
Регион: 77, 97, 99, 177
Машина: 2005\Nissan\X-Trail
Сообщений: 775
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
в ардуино не силён, но что-то вроде
PHP код:
в либе на mcp2515 добавь своих отладочных сообщений в терминал, чтобы понять где именно затык
__________________
В детстве, чтобы маленький Змей Горыныч был как все, мама заплетала его в косичку |
|
|
|
|
|
#17 | |
|
Старший Пользователь
![]() Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
![]() ![]() ![]() |
У меня таже проблема!
На шилде светодиод RX аж светится, а на Arduino данные не идут. Кварц тоже кстати 8MhZ. Gorynch Спасибо что направил в нужную сторону! Такс, Выдернул отсюда https://github.com/Flori1989/MCP2515_lib с поддержкой 8MhZ. Теперь вопрос как установить 8MhZ в скетче. Вот так нужно? Или она сама определит? if(CAN_OK == CAN.begin(CAN_500KBPS,MCP_8MHz)) Вот так данные пошли Цитата:
На диагностической колодке CAN-Comfort нету чтоль? Я невижу нажатий кнопок на руле в упор! Последний раз редактировалось T_r_D; 03.07.2015 в 22:56. |
|
|
|
|
|
|
#18 |
|
Пользователь
![]() Регистрация: 17.02.2015
Возраст: 38
Город: surgut
Регион: 86
Машина: miata
Сообщений: 34
![]() |
T_r_D, скетч который ты выложил - у тебя работает? у тебя кварц 8MHz? А шилд, как у меня на фото?
Комфорт если и выведен в диагностическую колодку, то на другие контакты. Проще к контактам идущим на магнитолу подцепить для проверки. |
|
|
|
|
|
#19 |
|
Старший Пользователь
![]() Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
![]() ![]() ![]() |
Disgraced у меня шилд с кнопками вообще.
Но это не важно! Кварц у меня 8мегагерц так что качай по ссылке библиотеку и заливай мой скетч. И да, у меня после этого заработало, но только я увидел то что мне не нужно ![]() На магнитоле FT CAN так что надо шилд допилить. Микруху уже заказал, через пару недель приедет. Последний раз редактировалось T_r_D; 05.07.2015 в 22:01. |
|
|
|
|
|
#20 | |
|
Пользователь
![]() Регистрация: 17.02.2015
Возраст: 38
Город: surgut
Регион: 86
Машина: miata
Сообщений: 34
![]() |
Цитата:
Я уже в отчаянии. |
|
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | Поиск в этой теме |
|
|