реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Настройки CAN для ATmega128CAN, Необходимо подобрать значения регистров CANBT1-3 для кварца 14,7456 МГ
Vladimir-K
сообщение Feb 13 2008, 10:52
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 13-02-08
Пользователь №: 35 003



Необходимо подобрать значения регистров CANBT1-3 для контроллера, работающего на частоте 14,7456 МГц
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 13 2008, 10:55
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Vladimir-K @ Feb 13 2008, 13:52) *
Необходимо подобрать значения регистров CANBT1-3 для контроллера, работающего на частоте 14,7456 МГц

А какая скорость CAN нужна?
Но для стандартных гемор будет с такой частотой.
Go to the top of the page
 
+Quote Post
Vladimir-K
сообщение Feb 13 2008, 11:00
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 13-02-08
Пользователь №: 35 003



Цитата(KRS @ Feb 13 2008, 13:55) *
А какая скорость CAN нужна?
Но для стандартных гемор будет с такой частотой.

Нужно подобрать значения для 125 кб/с, 500 кб/с и 1 Мб/с. А гемор и так уже есть - иначе бы не спрашивал :-)

Сообщение отредактировал Vladimir-K - Feb 13 2008, 11:10
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 13 2008, 11:35
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Vladimir-K @ Feb 13 2008, 13:52) *
Необходимо подобрать значения регистров CANBT1-3 для контроллера, работающего на частоте 14,7456 МГц

У меня именно такая-же ситуация. Я даже программку накатал. Она 14745600 на заданную частоту (100000, 125000 и т.д.) делит, а затем то, что получилось последовательно делит на числа от 8 до 25. И наиболее точно разделившееся выдаёт. В смысле, если всё это снова помножить, у кого наименьшее отклонение от заданного получится. А от 8 до 25 это кол-во TQ в бите. Иногда 12..25 ставлю. Вобщем эксперементирую... Но ошибки совсем небольшие получаются. Работать всё точно будет.
А в свете всего вышесказанного у меня вопрос. Вы какой SJW (Synchronization Jump Widht) ставите?
В примерах он всегда почему-то =1 (минимальный). А в нашем случае (частота не совсем точно совпадает) думаю его надо-бы побольше ставить. Или от этого что-то ухудшится? Как раз хотел этот вопрос в разделе CAN задать. Сам-то я в CAN-е новичок.
Go to the top of the page
 
+Quote Post
Vladimir-K
сообщение Feb 13 2008, 12:00
Сообщение #5





Группа: Новичок
Сообщений: 4
Регистрация: 13-02-08
Пользователь №: 35 003



Цитата(galjoen @ Feb 13 2008, 14:35) *
У меня именно такая-же ситуация. Я даже программку накатал. Она 14745600 на заданную частоту (100000, 125000 и т.д.) делит, а затем то, что получилось последовательно делит на числа от 8 до 25. И наиболее точно разделившееся выдаёт. В смысле, если всё это снова помножить, у кого наименьшее отклонение от заданного получится. А от 8 до 25 это кол-во TQ в бите. Иногда 12..25 ставлю. Вобщем эксперементирую... Но ошибки совсем небольшие получаются. Работать всё точно будет.
А в свете всего вышесказанного у меня вопрос. Вы какой SJW (Synchronization Jump Widht) ставите?
В примерах он всегда почему-то =1 (минимальный). А в нашем случае (частота не совсем точно совпадает) думаю его надо-бы побольше ставить. Или от этого что-то ухудшится? Как раз хотел этот вопрос в разделе CAN задать. Сам-то я в CAN-е новичок.

Так какие значения Ваша программа выдает для указанных частот?
Со значением SJW экспериментировал, но его влияние на безошибочность передачи до конца не определил.
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 13 2008, 12:49
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Посомтрите этот документ от Боша. Может он вам поможет.
Прикрепленные файлы
Прикрепленный файл  The_Configuration_of_the_CAN_Bit_Timing.rar ( 73.18 килобайт ) Кол-во скачиваний: 84
 
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 13 2008, 13:02
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Vladimir-K @ Feb 13 2008, 15:00) *
Так какие значения Ваша программа выдает для указанных частот?

Для 125000 оптимально - делитель=9, кол-во TQ=13, ошибка =-0.81%. Следующая по оптимальности комбинация 7 - 17, ошибка =+0.88%. И т.д.

А вообще рекомендую свою программку составить - понадобится если другие кварцы будут. Я вообще хочу чтобы это в самом AT90CAN128 вычислялось. У меня там RTC кварц есть 32756 Гц. Я частоту процессора вычисляю - кварцы-то разные могут быть (для автобауда у RS485 так сделал). Потом оптимальный делитель + кол-во TQ вычислю. Делитель сразу установлю, а остальное по таблице в зав-ти от TQ. Для значений TQ от 8 до 25 это всего 17 таблиц. В этих таблицах - что в остальные регистры писать при соответствующем TQ.

Только я сейчас работой завален. А переход на CAN это моя инициатива - хобби такое. Так щас что чуть разгребусь - тогда CAN-ом и займусь. И думаю мы с вами ещё там (в разделе CAN) встретимся.
Go to the top of the page
 
+Quote Post
Vladimir-K
сообщение Feb 13 2008, 14:51
Сообщение #8





Группа: Новичок
Сообщений: 4
Регистрация: 13-02-08
Пользователь №: 35 003



Цитата(KRS @ Feb 13 2008, 15:49) *
Посомтрите этот документ от Боша. Может он вам поможет.

Спасибо, полезная дока

Цитата(galjoen @ Feb 13 2008, 16:02) *
И думаю мы с вами ещё там (в разделе CAN) встретимся.

Обязательно :-) А значения Ваши в ближайшее время проверю. Спасибо :-)

Сообщение отредактировал Vladimir-K - Feb 13 2008, 14:53
Go to the top of the page
 
+Quote Post
A.D.
сообщение Feb 14 2008, 06:52
Сообщение #9





Группа: Новичок
Сообщений: 2
Регистрация: 5-01-08
Пользователь №: 33 833



http://electronix.ru/forum/index.php?showt...p;hl=AT90CAN128
тут есть пример
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 14 2008, 07:42
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(A.D. @ Feb 14 2008, 09:52) *

Оттуда для 14745600: case f125kbps: { CANBT1 = 0x0C; CANBT2 = 0x0E; CANBT3 = 0x36; break; } //123.913kbps
Это значит делитель =7 - (CANBT1 = 0x0C), TQ=17 - (Tprs=8)+(Tphs2=5)+(Tphs1=4)=17. Вторая по точности настройки частоты комбинация. Если-бы сделать так: делитель=9, а TQ=13 - 126030.77 kbps получается. И ещё у неё SMP=0. То есть 1 выборка, а не 3. И Tsjw=1. Я в CAN-е новичок, поэтому мне интересно - это неточность, или из-за каких-то определённых соображений так сделано?
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 14 2008, 08:29
Сообщение #11


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(galjoen @ Feb 14 2008, 10:42) *
Вторая по точности настройки частоты комбинация. Если-бы сделать так: делитель=9, а TQ=13 - 126030.77 kbps получается.

Да так получается лучше. Тут главное выбрать соотношение Tprs Tphs1 Tphs2 правильно.
Например для 69% sample point Tprs = 6 Tphs1 = 3 Tphs2 = 3


Цитата(galjoen @ Feb 14 2008, 10:42) *
Оттуда для 14745600: case f125kbps: { CANBT1 = 0x0C; CANBT2 = 0x0E; CANBT3 = 0x36; break; } //123.913kbps
Это значит делитель =7 - (CANBT1 = 0x0C), TQ=17 - (Tprs=8)+(Tphs2=5)+(Tphs1=4)=17.

Здесь Tphs2 = 4, правда TQ все равно 17 вы забыли SYN прибавить
А sample поинт получается 70%
Так что способ с TQ = 13 лучше.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Feb 14 2008, 12:28
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(KRS @ Feb 14 2008, 11:29) *
Да так получается лучше. Тут главное выбрать соотношение Tprs Tphs1 Tphs2 правильно.
Например для 69% sample point Tprs = 6 Tphs1 = 3 Tphs2 = 3
Так что способ с TQ = 13 лучше.

А вы для всех возможных TQ (от 8 до 25) оптимальные соотношения Tprs Tphs1 Tphs2 случайно не вычисляли? Или м.б. есть такие TQ, для которых это оптимально сделать не получается?
Цитата(galjoen @ Feb 13 2008, 16:02) *
Я вообще хочу чтобы это в самом AT90CAN128 вычислялось. У меня там RTC кварц есть 32756 Гц. Я частоту процессора вычисляю - кварцы-то разные могут быть (для автобауда у RS485 так сделал). Потом оптимальный делитель + кол-во TQ вычислю. Делитель сразу установлю, а остальное по таблице в зав-ти от TQ. Для значений TQ от 8 до 25 это всего 17 таблиц. В этих таблицах - что в остальные регистры писать при соответствующем TQ.

Я вот об этом. Если какие-то TQ "плохие". Это усложнится. Но всё равно сделать можно будет. Весовые коэфф-ты для TQ ввести. Потом на них отклонение от частоты помножать. И уже из этих произведений лучшее выбирать.

А ещё вопрос не по теме: Сегодня меня в "свои" перевели. А вроде ничего не изменилось. Я что-то настроить должен? Если насчёт "своих" глупость написал - не пинайте. Будем считать, что это у меня от радости.
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 14 2008, 17:57
Сообщение #13


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(galjoen @ Feb 14 2008, 15:28) *
А вы для всех возможных TQ (от 8 до 25) оптимальные соотношения Tprs Tphs1 Tphs2 случайно не вычисляли? Или м.б. есть такие TQ, для которых это оптимально сделать не получается?

А у меня все время под стандартные попадало (которые в таблице есть), а так во многих других контроллерах (NXP SJA1000 например)настроек на 1 меньше TQ = 1 + TSEG1 + TSEG2. Вообще чем больше TQ тем больше возможностей установить пропорцию для sample point.
Go to the top of the page
 
+Quote Post
A.D.
сообщение Feb 18 2008, 14:31
Сообщение #14





Группа: Новичок
Сообщений: 2
Регистрация: 5-01-08
Пользователь №: 33 833



Цитата
Оттуда для 14745600: case f125kbps: { CANBT1 = 0x0C; CANBT2 = 0x0E; CANBT3 = 0x36; break; } //123.913kbps Это значит делитель =7 - (CANBT1 = 0x0C), TQ=17 - (Tprs=8)+(Tphs2=5)+(Tphs1=4)=17. Вторая по точности настройки частоты комбинация. Если-бы сделать так: делитель=9, а TQ=13 - 126030.77 kbps получается. И ещё у неё SMP=0. То есть 1 выборка, а не 3. И Tsjw=1. Я в CAN-е новичок, поэтому мне интересно - это неточность, или из-за каких-то определённых соображений так сделано?


Доброе время суток, если вас не затруднит, пояснить для новичка, что понимается под "делитель=9", просто запутался в формулах (CANBT1-3) из даташита( AT90CAN128), что там является делителем.
Go to the top of the page
 
+Quote Post
KRS
сообщение Feb 18 2008, 14:56
Сообщение #15


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(A.D. @ Feb 18 2008, 17:31) *
Доброе время суток, если вас не затруднит, пояснить для новичка, что понимается под "делитель=9", просто запутался в формулах (CANBT1-3) из даташита( AT90CAN128), что там является делителем.

Делитель - это на сколько системная частота делится для получения TQ, он находится полностью в регистре CANBT1

CANBT1 = (divisor - 1) * 2;
соответсвенно если частота 16 мгц прескалер 8 time quanta TQ будет равно 0.5 микросекунды, а CANBT1 = 0x0E;
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th July 2025 - 22:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01412 секунд с 7
ELECTRONIX ©2004-2016