Bustler 0 18 декабря, 2008 Опубликовано 18 декабря, 2008 · Жалоба Доброго всем время суток. Пытаюсь реализовать самоподстройку скорости на шине CAN . Дивайс dsPIC30F6010A , CAN контролер TJA1054AT. При ручной установке все работает нормально. У меня следующая проблема: при выполнении моего алгоритма уже после 3 "подхода" к непосредственной конфигурации бит-времени,программа застревает , так как контролер CAN не хочет переключаться в мод конфигурации (до этого 2 раза значит переключался). Соответственно OPMODE не дает подтверждения. Перед переключением нулю регистер CiCTRL и даю немного времени для обработки. Может кто уже встречался с подобной проблемой ? Зарание благодарен за отклики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lelikk 0 6 января, 2009 Опубликовано 6 января, 2009 · Жалоба А алгоритм перебирает последовательно бит-рейты? Может быть просто попробовать поставить везде задержек побольше и посмотреть что получится Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bustler 0 9 января, 2009 Опубликовано 9 января, 2009 · Жалоба А алгоритм перебирает последовательно бит-рейты? Может быть просто попробовать поставить везде задержек побольше и посмотреть что получится Да, последовательно перебирает все возможный битрейты вместе с биттаймингом пока не получит нормальный фрейм. Фреймы генерирует CANalizer от Vectorа. Насчет задержек уже пробывал, все равно отключается. Я как понял,если исходить,что алгоритм без бага, что после какого то кол-ва эррорфрэймов (без акка), CAN контроллер сам переходит в idle. Но флажков ошибок нет. Это и cтранно или я чего то не догоняю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lelikk 0 10 января, 2009 Опубликовано 10 января, 2009 · Жалоба Да, последовательно перебирает все возможный битрейты вместе с биттаймингом пока не получит нормальный фрейм. Фреймы генерирует CANalizer от Vectorа. Насчет задержек уже пробывал, все равно отключается. Я как понял,если исходить,что алгоритм без бага, что после какого то кол-ва эррорфрэймов (без акка), CAN контроллер сам переходит в idle. Но флажков ошибок нет. Это и cтранно или я чего то не догоняю. Еще раз перечитал первое сообщение: у вас контроллер CAN в процессоре? Ведь TJA1054 это только трансивер. И он поддерживает бит-рейт только до 125kbps. Вы не превышаете это значение? Если нет, то можно попробовать сбрасывать полностью модуль CAN в процессоре. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SAR 0 10 января, 2009 Опубликовано 10 января, 2009 · Жалоба Если нет, то можно попробовать сбрасывать полностью модуль CAN в процессоре. Вроде пробует уже, сбрасывает... пишет Перед переключением нулю регистер CiCTRL и даю немного времени для обработки. OPMODE дает подтверждение только тогда, когда есть возможность переключиться в требуемый режим. А такая возможность появляется тогда, когда модуль увидит, что шина свободна. ... а шина становится свободной (в понимании контроллера) тогда, когда на ней будет последовательно 11 единиц, и продолжительность этого интервала напрямую зависит от установленной длительности бита. Проверьте, может на третий раз что-то не сходится в настройках бит-рейта? Может случайно сильно низкую скорость устанавливаете, а CAN-ализатор сильно часто посылки при этом отсылает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться