Проблема с инициализацией CAN BUS Shield
- Войдите на сайт для отправки комментариев
Чт, 28/09/2017 - 11:48
Доброго дня!
Подскажите в чем может быть проблема связанная с инициализацией CAN BUS Shield.
Он напрачь не хочет проходить инициализацию. Со вторым уже кан шилдом такая беда.

переживаем за вас.
А если серьезно - так вопрос не задают. Вы бы хоть ошибки иннициализации выложили, что ли...
Написано же "напрачь". Какие вам еще ошибки?
Каким образом я это могу выложить ошибки инициализации?
Вместо того, что бы стебать людей с орфографией, помог бы лучше дельными советоми если такие вообще имеются.
я не икстрасенсор. Думаю, 90% здесь советующих - тоже.
я не икстрасенсор. Думаю, 90% здесь советующих - тоже.
Ну лови.
В общем пробую почитать сообщения на кан шине с помощью КАН шилда.
инициализацию шилда произвожу с помощью следующего года:
void setup() { Serial.begin(115200); 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; }В мониторе порта выводятся следующие строки:
Пробовал заливать другие скетчи, проблема остается.
я не икстрасенсор. Думаю, 90% здесь советующих - тоже.
Икстрасенсор блин xD xD xD
А чё? Если с первого раза не сработала так с 25 сработает? В чем идея? И что такое САN? Как определён? Кусочек скеча это конечно хорошо. А остальное как? Так же круто прописано?
что отдает CAN.begin(CAN_500KBPS)? чему равно это выражение?
Выклалывай весь код. Шилд подключается через шину SPI и вот контакт CS этой шины на шилде иногда бывает на 10 пине, а иногда на 9. вот это и надо пробовать менять в коде.
Пробовал не получается
Блин по человечески весь код выложи, а. И ты пробовал так?
const int SPI_CS_PIN = 9; и как шилд подключен физически? Одет на ардуину? Какая у тебя ардуино?
На фото не видно на какой микросхеме шилд. Должна быть mcp 2515
Вот скетч:
шилд сидит с верху на ардуино
вот шилд
const int SPI_CS_PIN = 9; писать пробовал, не помогло
на шилде находится микросхема mcp 2515
ну хз, попробуй тогда другую библиотеку mcp2515.h
вот скетч
#include <SPI.h> #include <mcp2515.h> struct can_frame canMsg; MCP2515 mcp2515(10); // это пин CS, пробуем также 9 поставить void setup() { Serial.begin(115200); SPI.begin(); mcp2515.reset(); mcp2515.setBitrate(CAN_500KBPS); mcp2515.setNormalMode(); Serial.println("------- CAN Read ----------"); Serial.println("ID DLC DATA"); } void loop() { if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) { Serial.print(canMsg.can_id, HEX); // print ID Serial.print(" "); Serial.print(canMsg.can_dlc, HEX); // print DLC Serial.print(" "); for (int i = 0; i<canMsg.can_dlc; i++) { // print the data Serial.print(canMsg.data[i],HEX); Serial.print(" "); } Serial.println(); } }смотрим какой кварц на шилде. По умолчанию в библиотеке 16Мгц. если 8 например то строка 13 такая будет
ну хз, попробуй тогда другую библиотеку mcp2515.h
вот скетч
#include <SPI.h> #include <mcp2515.h> struct can_frame canMsg; MCP2515 mcp2515(10); // это пин CS, пробуем также 9 поставить void setup() { Serial.begin(115200); SPI.begin(); mcp2515.reset(); mcp2515.setBitrate(CAN_500KBPS); mcp2515.setNormalMode(); Serial.println("------- CAN Read ----------"); Serial.println("ID DLC DATA"); } void loop() { if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) { Serial.print(canMsg.can_id, HEX); // print ID Serial.print(" "); Serial.print(canMsg.can_dlc, HEX); // print DLC Serial.print(" "); for (int i = 0; i<canMsg.can_dlc; i++) { // print the data Serial.print(canMsg.data[i],HEX); Serial.print(" "); } Serial.println(); } }При компиляции ругается на эту сторочку
библиотеку то установил? если да, то пробуй обновить Arduino IDE у меня версия 1.6.8 всё компилится, или перезагрузись, иногда помогает
библиотеку то установил? если да, то пробуй обновить Arduino IDE у меня версия 1.6.8 всё компилится, или перезагрузись, иногда помогает
Можешь скинуть свою бибилиотеку?
пжалста https://yadi.sk/d/v4GLPBjB3NK4J2
в твоем коде из сообщения #14 если дело в кварце, то надо менять строку 17. Для 8 Мгц будет так
и ещё к какой Can шине пытаешься подключиться?
в твоем коде из сообщения #14 если дело в кварце, то надо менять строку 17. Для 8 Мгц будет так
Это понятно.
Скетч который ты скинул заработал после того как я добавил твою бибилиотеку! Спасибо!
Инициализация вроде бы прошла.
В мониторе порта вывелись строки:
На машине пока не проверял.
как я понял данный код инициализирует CAN BUS Shield?
struct can_frame canMsg; MCP2515 mcp2515(10); // это пин CS, пробуем также 9 поставить void setup() { Serial.begin(115200); SPI.begin(); mcp2515.reset(); mcp2515.setBitrate(CAN_500KBPS); mcp2515.setNormalMode(); Serial.println("------- CAN Read ----------"); Serial.println("ID DLC DATA"); }Этот код просто выбирает тип соединения кан, скорость кана. И не ждет подключения к кан шине. Поэтому на этом этапе проканало.