24.06.2015, 14:58 | #11 |
Старший Пользователь
Регистрация: 22.04.2009
Возраст: 43
Город: Москва
Регион: 77, 97, 99, 177
Машина: 2005\Nissan\X-Trail
Сообщений: 775
|
покажи весь скетч и либу для шилда
При передачи данных шилду (по SPI) нет аппаратного подтверждения принятых данных, поэтому нужно проверять программно, например, прочитать один из регистров cnf и сравнить с тем, что туда было записано. Если совпадает, значит соединение прошло успешно. Не во всех либах это сделано. Ещё момент, у тебя перемычка J1 (рядом с контактом Тх) открыта, а это значит, что питание для платы 3.3В, а не 5В. По крайней мере, для настоящего Pro Micro. Проверь напряжение на Vcc. И чем питается шилд? Судя по фотке, кварц на шилде 8Мгц, это влияет на значения регистров CNF, с помощью которых устанавливается скорость CAN шины в шилде. Чаще всего используется 16МГц, поэтому в либе значения могут быть рассчитаны для 16, а не для 8
__________________
В детстве, чтобы маленький Змей Горыныч был как все, мама заплетала его в косичку |
24.06.2015, 16:17 | #12 |
Пользователь
Регистрация: 17.02.2015
Возраст: 37
Город: 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 не моргает вообще) |
24.06.2015, 16:56 | #13 |
Старший Пользователь
Регистрация: 22.04.2009
Возраст: 43
Город: Москва
Регион: 77, 97, 99, 177
Машина: 2005\Nissan\X-Trail
Сообщений: 775
|
ПрОвода питания от ардуины к шилду на картинке нет. Есть земля и данные
В данном скетче для проверки наличия нового сообщения идёт обращения к шилду через SPI, по идее для этого нужно использовать прерывание от шилда по пину 2 (в твоём случае), это будет быстрее Увеличь скорость rs232 до 115200 (и в скетче, и на компе) Добавь обработку прихода данных от компа: пришла "1" (т.е. ты в терминале нажал 1 и Enter) - инициализировать шилд, пришла "2" - запустить приём данных от шилда Светодиод rx на ардуине связан с rs232, а не с шилдом. Когда пойдут данные должен моргать Tx Самое главное - в скетче значения регистров CNF рассчитаны для 16МГц. Нужно пересчитывать для 8, или менять кварц
__________________
В детстве, чтобы маленький Змей Горыныч был как все, мама заплетала его в косичку |
24.06.2015, 17:22 | #14 |
Старший Пользователь
Регистрация: 17.01.2010
Возраст: 48
Город: Самара
Регион: 63, 163
Машина: Skoda Octavia A5 FL && Skoda Octavia Tour && ̶F̶F̶3̶
Сообщений: 457
|
Disgraced, попробуйте этот скетч, я им сканировал FF3, только скорость CAN поменяйте:
PHP код:
Последний раз редактировалось lti1; 25.06.2015 в 17:09. |
25.06.2015, 15:44 | #15 |
Пользователь
Регистрация: 17.02.2015
Возраст: 37
Город: surgut
Регион: 86
Машина: miata
Сообщений: 34
|
Итак, по порядку: соединил разъем шилда 5V и разъем VCC ардуины - никакого эффекта.
Скетч в посте от lti1 не дал результата, в мониторе порта по прежнему тишина. Gorynch, по вашей подсказке поменял кварц - впаял на 16mhz. Что получилось - скетч из моего поста, шилда запитана, кварц на 16mhz - в мониторе порта поток сообщений: Код:
CAN BUS Shield init fail Init CAN BUS Shield again Т.е. до этого не было никаких сообщений, а теперь сообщает что всё плохо. По поводу можете помочь со скетчем? |
25.06.2015, 16:38 | #16 |
Старший Пользователь
Регистрация: 22.04.2009
Возраст: 43
Город: Москва
Регион: 77, 97, 99, 177
Машина: 2005\Nissan\X-Trail
Сообщений: 775
|
в ардуино не силён, но что-то вроде
PHP код:
в либе на mcp2515 добавь своих отладочных сообщений в терминал, чтобы понять где именно затык
__________________
В детстве, чтобы маленький Змей Горыныч был как все, мама заплетала его в косичку |
03.07.2015, 19:15 | #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. |
|
04.07.2015, 17:47 | #18 |
Пользователь
Регистрация: 17.02.2015
Возраст: 37
Город: surgut
Регион: 86
Машина: miata
Сообщений: 34
|
T_r_D, скетч который ты выложил - у тебя работает? у тебя кварц 8MHz? А шилд, как у меня на фото?
Комфорт если и выведен в диагностическую колодку, то на другие контакты. Проще к контактам идущим на магнитолу подцепить для проверки. |
04.07.2015, 23:04 | #19 |
Старший Пользователь
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
|
Disgraced у меня шилд с кнопками вообще.
Но это не важно! Кварц у меня 8мегагерц так что качай по ссылке библиотеку и заливай мой скетч. И да, у меня после этого заработало, но только я увидел то что мне не нужно На магнитоле FT CAN так что надо шилд допилить. Микруху уже заказал, через пару недель приедет. Последний раз редактировалось T_r_D; 05.07.2015 в 22:01. |
05.07.2015, 12:58 | #20 | |
Пользователь
Регистрация: 17.02.2015
Возраст: 37
Город: surgut
Регион: 86
Машина: miata
Сообщений: 34
|
Цитата:
Я уже в отчаянии. |
|
Здесь присутствуют: 4 (пользователей: 0 , гостей: 4) | |
|
|