Показать сообщение отдельно
Старый 24.06.2015, 14:12   #10
Disgraced
Пользователь
 
Регистрация: 17.02.2015
Возраст: 36
Город: surgut
Регион: 86
Машина: miata
Сообщений: 34
Disgraced is on a distinguished road
По умолчанию

Итак, шина работает на скорости 500kbps - это 100%.
Прозвонил все контакты на моём безымянном шилде и на ардуине - подключены они между собой верно - 99%
Залил скетч с вот таким содержанием:
Код:
    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(1000);
    }
В мониторе порта увидел ответ CAN BUS Shield init ok!
Значит дело в скетче для приёма сообщений с can шины.
Нашел вот такую информацию:
Цитата:
Сообщение от brokly;
Аппаратные фильтры настраивают получение драйвером только сообщений с определенными ID, вплоть до отключения приема сообщений. В вашей бибилиотеке это функции :

1
INT8U init_Mask(const INT8U num,const INT32U ulData); /* init Masks */
2
INT8U init_Filt(const INT8U num,const INT8U ext,const INT32U ulData); /* init filters */
Масок всего две.

Фильтров шесть, причем при определенных обстоятельствах первые два фильтра взаимодействуют с первой маской, остальные 4 со второй. Попробуйте проинициализировать фильтры так :
кодрасечатать?
1
CAN.init_Mask(0, 0); // разрешить маскам получать обычные сообщения
2
CAN.init_Filt(0, 0, 0); // разрешить фильтрам получать обычные сообщения
3
CAN.init_Mask(1, 0); // разрешить маскам получать расширенные сообщения
4
CAN.init_Filt(1, 1, 0); // разрешить маскам получать расширенные сообщения
Немного не отдупляю, как проинициализировать фильтры.
Disgraced вне форума   Ответить с цитированием