Перейти к содержанию
    

CAN AUTOBAUD Detect

Доброго всем время суток. Пытаюсь реализовать самоподстройку скорости на шине CAN . Дивайс dsPIC30F6010A , CAN контролер TJA1054AT. При ручной установке все работает нормально. У меня следующая проблема: при выполнении моего алгоритма уже после 3 "подхода" к непосредственной конфигурации бит-времени,программа застревает , так как контролер CAN не хочет переключаться в мод конфигурации (до этого 2 раза значит переключался). Соответственно OPMODE не дает подтверждения. Перед переключением нулю регистер CiCTRL и даю немного времени для обработки. Может кто уже встречался с подобной проблемой ? Зарание благодарен за отклики.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А алгоритм перебирает последовательно бит-рейты?

Может быть просто попробовать поставить везде задержек побольше и посмотреть что получится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А алгоритм перебирает последовательно бит-рейты?

Может быть просто попробовать поставить везде задержек побольше и посмотреть что получится

 

Да, последовательно перебирает все возможный битрейты вместе с биттаймингом пока не получит нормальный фрейм. Фреймы генерирует CANalizer от Vectorа. Насчет задержек уже пробывал, все равно отключается. Я как понял,если исходить,что алгоритм без бага, что после какого то кол-ва эррорфрэймов (без акка), CAN контроллер сам переходит в idle. Но флажков ошибок нет. Это и cтранно или я чего то не догоняю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, последовательно перебирает все возможный битрейты вместе с биттаймингом пока не получит нормальный фрейм. Фреймы генерирует CANalizer от Vectorа. Насчет задержек уже пробывал, все равно отключается. Я как понял,если исходить,что алгоритм без бага, что после какого то кол-ва эррорфрэймов (без акка), CAN контроллер сам переходит в idle. Но флажков ошибок нет. Это и cтранно или я чего то не догоняю.

 

Еще раз перечитал первое сообщение: у вас контроллер CAN в процессоре? Ведь TJA1054 это только трансивер.

И он поддерживает бит-рейт только до 125kbps. Вы не превышаете это значение?

 

Если нет, то можно попробовать сбрасывать полностью модуль CAN в процессоре.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если нет, то можно попробовать сбрасывать полностью модуль CAN в процессоре.

 

Вроде пробует уже, сбрасывает... пишет

 

Перед переключением нулю регистер CiCTRL и даю немного времени для обработки.

 

OPMODE дает подтверждение только тогда, когда есть возможность переключиться в требуемый режим.

А такая возможность появляется тогда, когда модуль увидит, что шина свободна.

... а шина становится свободной (в понимании контроллера) тогда, когда на ней будет последовательно 11 единиц, и продолжительность этого интервала напрямую зависит от установленной длительности бита.

Проверьте, может на третий раз что-то не сходится в настройках бит-рейта?

Может случайно сильно низкую скорость устанавливаете, а CAN-ализатор сильно часто посылки при этом отсылает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...