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

 
 
> Общие ошибки у AT90CAN128 - когда они должны возникать?, А ведь все когда-то чайниками были!
galjoen
сообщение Jan 7 2008, 10:09
Сообщение #1


Знающий
****

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



1. Заменил ATmega64 на AT90CAN128 у двух своих устройств + добавил КАН приёмопередатчики.
2. Переписал программу (таблица прерываний и обращение к портам).
3. Разобрался (более-менее) с КАН-овскими портами.
4. Написал примитивную посылалку - принималку по КАН.
5. Попробовал - всё сразу заработало!
6. Отрубил у принимающего устройства TXCAN (не передаёт в линию ACK) - начались вопросы:
У принимающего устройства возникает ошибка "ACK error", хотя по описанию (да и логически) должна-бы возникнуть "Bit Error". Устройство-то передаёт в линию 0-й уровень (ACK), а в линии 1.
7. Запретил у принимающего устройства приём адреса генерируемого передатчиком. Судя по описанию в этом случае должна возникнуть общая ошибка - ACK error general (в линии имеется кадр с ресессивным уровнем в бите ACK). Реально у приёмника не возникает никаких ошибок. Пробовал запретить все MOb вообще, проверял разрешение всего, что относится к общим ошибкам - бесполезно.

Особенно волнует отсутствие общей ошибки (планировал использовать), что это - глюк в AT90CAN128, или во мне.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Jan 8 2008, 12:10
Сообщение #2


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

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



Цитата(galjoen @ Jan 7 2008, 13:09) *
6. Отрубил у принимающего устройства TXCAN (не передаёт в линию ACK) - начались вопросы:
У принимающего устройства возникает ошибка "ACK error", хотя по описанию (да и логически) должна-бы возникнуть "Bit Error". Устройство-то передаёт в линию 0-й уровень (ACK), а в линии 1.

Как раз, передатчик в ACK слоте передает recessive bit, и ждет ACK - dominant, а т.к. устройств больше нет то и появляется ошибка "ACK error"

Цитата(galjoen @ Jan 7 2008, 13:09) *
7. Запретил у принимающего устройства приём адреса генерируемого передатчиком. Судя по описанию в этом случае должна возникнуть общая ошибка - ACK error general (в линии имеется кадр с ресессивным уровнем в бите ACK). Реально у приёмника не возникает никаких ошибок. Пробовал запретить все MOb вообще, проверял разрешение всего, что относится к общим ошибкам - бесполезно.


Фильтры не влияют на поле ACK, error... если контроллер принял фрейм выставляется подтверждение, ошибки.... А уже потом решает выкинуть его или положить в MOB (уже другой уровень).
По ошибкам, полю ACK - можно узнать только состояние физического уровня.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jan 9 2008, 14:23
Сообщение #3


Знающий
****

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



Цитата(KRS @ Jan 8 2008, 15:10) *
Как раз, передатчик в ACK слоте передает recessive bit, и ждет ACK - dominant, а т.к. устройств больше нет то и появляется ошибка "ACK error"

И я именно об этом: приёмник выставляет dominant в ACK слоте, но из-за оторванного провода TXCAN у приёмника этого не получается (ACK остаётся recessive). И у него (у приёмника) возникает ошибка "ACK error" и больше никаких ошибок. Хотя т.к. приёмник установил на шине dominant, потом проверил, а там recessiv, он вроде-бы должен установить ошибку "Bit error". А судя по описанию (как я понял) у приёмника вообще не д.б. такой ошибки как "ACK error". То, что у передатчика возникает ошибка "ACK error" - это понятно.
Цитата(KRS @ Jan 8 2008, 15:10) *
Фильтры не влияют на поле ACK, error... если контроллер принял фрейм выставляется подтверждение, ошибки.... А уже потом решает выкинуть его или положить в MOB (уже другой уровень).
По ошибкам, полю ACK - можно узнать только состояние физического уровня.

Я понимаю так:
1. Контроллер принимает фрейм и проверяет проходит-ли он через фильтры.
2. Если проходит - кладёт его в MOb (MOb-ы), устанавливает в слоте ACK - dominant уровень, ошибки устанавливает в соответствующем MOb (MOb-ах) (в тех, в которые фрейм прошёл через фильтры).
3. Если не проходит, или испорчен до такой степени, что определить это (прохождение через фильтры) невозможно - не кладёт его (фрейм) в MOb, не устанавливает в слоте ACK - dominant уровень, ошибки устанавливает в разделе "общие ошибки" = "Stuff Error General", "CRC Error General", "Form Error General", "Acknoweledgment Error General".
A. В моём случае фрейм через фильтры не проходит.
B. Т. к. на шине других устройств нет - в слоте ACK recessive уровень.
C. Но общие ошибки (а именно "Acknoweledgment Error General") не устанавливаются.
Из-за этого невозможно проанализировать шину, что я собирался сделать в отладочных целях.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 9 2008, 14:33
Сообщение #4


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

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



Цитата(galjoen @ Jan 9 2008, 17:23) *
И я именно об этом: приёмник выставляет dominant в ACK слоте, но из-за оторванного провода TXCAN у приёмника этого не получается (ACK остаётся recessive). И у него (у приёмника) возникает ошибка "ACK error" и больше никаких ошибок.

Все правильно раз нет доминирущего бита, в ACK слоте значит нет подтверждение.
А рвать линю TXCAN - не корректно вы просто отключаете физический уровень. И любая попытка отпрвить что то с этого узла приведет к Bus Off
Ошибка bit error может возникнуть только в слоте данных.
Цитата(galjoen @ Jan 9 2008, 17:23) *
Я понимаю так:
1. Контроллер принимает фрейм и проверяет проходит-ли он через фильтры.
2. Если проходит - кладёт его в MOb (MOb-ы), устанавливает в слоте ACK - dominant уровень

Нет, Контроллер принимает фрейм устанавливает в слоте ACK - dominant уровень, а фильтры, MOB... все это потом.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jan 10 2008, 10:33
Сообщение #5


Знающий
****

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



Цитата(KRS @ Jan 9 2008, 17:33) *
А рвать линю TXCAN - не корректно вы просто отключаете физический уровень. И любая попытка отпрвить что то с этого узла приведет к Bus Off

Я не собирался отправлять, что нибудь с этого узла. Я хотел просто сделать анализатор КАН шины для отладочных целей.
Цитата(KRS @ Jan 9 2008, 17:33) *
Нет, Контроллер принимает фрейм устанавливает в слоте ACK - dominant уровень, а фильтры, MOB... все это потом.

Проверил на железке (в т.ч осциллографом) - не верно (по крайней мере для AT90CAN128). Контроллер (принимающий) если этот фрейм не его (не проходит через фильтры ни в один MOb) - не устанавливает в слоте ACK - dominant уровень (отлично видно осциллографом т.к. провод TXCAN у принимающего всегда в 1). Да вроде и логически д.б. так: если фрейм никем не принят (ни одним MOb) - отправитель видит это по отсутствию dominant в слоте ACK.

Я думаю (хотя и не уверен из-за отсутствия опыта), что именно для таких случаев и были придуманы общие ошибки (General Errors). Т.е. если принимающий контроллер видит на шине фрейм с ошибкой, но понимает, что это фрейм не его (или фрейм разрушен настолько, что определить его или не его он не может), он устанавливает общую ошибку.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 10 2008, 12:27
Сообщение #6


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

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



Цитата(galjoen @ Jan 10 2008, 13:33) *
Я не собирался отправлять, что нибудь с этого узла. Я хотел просто сделать анализатор КАН шины для отладочных целей.

Для этого есть режим LISTEN ONLY.

Цитата(galjoen @ Jan 10 2008, 13:33) *
Проверил на железке (в т.ч осциллографом) - не верно (по крайней мере для AT90CAN128). Контроллер (принимающий) если этот фрейм не его (не проходит через фильтры ни в один MOb) - не устанавливает в слоте ACK - dominant уровень (отлично видно осциллографом т.к. провод TXCAN у принимающего всегда в 1).

Вот выдрежка из даташита на can128
The bit in the ACK slot is sent as a recessive bit and is overwritten as a dominant bit by the receivers which have at this time received the data correctly. Correct messages are acknowledged by the receivers regardless of the result of the acceptance test.
И логически - это ошибка физического уровня. А то что не в один ящик не попало это другой уровень уже.

Еще по поводу физического уровня если неплохой app note от микрочипа.
Controller Area Network (CAN) Basics (можно по этому названию гуглом найти) там описаны все ошибки и когда они возникают или у боша (автора CAN) можно посмотреть - все определно стандартом!
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jan 11 2008, 13:31
Сообщение #7


Знающий
****

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



Цитата(KRS @ Jan 10 2008, 15:27) *
Вот выдрежка из даташита на can128
The bit in the ACK slot is sent as a recessive bit and is overwritten as a dominant bit by the receivers which have at this time received the data correctly. Correct messages are acknowledged by the receivers regardless of the result of the acceptance test.
И логически - это ошибка физического уровня. А то что не в один ящик не попало это другой уровень уже.

Проверил осциллографом ещё раз - верно. Стоит разрешить КАН и настроить скорость - начинает в ACK слоте dominant устанавливать. Даже если ни одного MOb на приём не настроено. В прошлый раз у меня просто контакт пропадал когда я осциллографом тыкался - всё на соплях запаяно.
Так-что спасибо вам KRS - без вас бы не разобрался.

Но общие ошибки всё равно не возникают. Буду дальше ковырять на досуге. Если наковыряю - сообщу.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- galjoen   Общие ошибки у AT90CAN128 - когда они должны возникать?   Jan 7 2008, 10:09
|- - galjoen   Цитата(KRS @ Jan 10 2008, 15:27) Для этог...   Jan 10 2008, 15:18
|- - KRS   Цитата(galjoen @ Jan 11 2008, 16:31) Но о...   Jan 14 2008, 15:11
|- - galjoen   Цитата(KRS @ Jan 14 2008, 18:11) Может Вы...   Jan 15 2008, 18:51
|- - KRS   Цитата(galjoen @ Jan 15 2008, 21:51) Но б...   Jan 16 2008, 07:58
|- - galjoen   Цитата(KRS @ Jan 16 2008, 10:58) А как он...   Jan 16 2008, 14:18
|- - KRS   Цитата(galjoen @ Jan 16 2008, 17:18) Инте...   Jan 16 2008, 16:35
- - KSN   Подскажите, если возникает состояние Bus off, то к...   Mar 5 2008, 04:15
|- - KRS   Цитата(KSN @ Mar 5 2008, 07:15) Подскажит...   Mar 5 2008, 18:44
- - Ancient   Не подскажет ли кто-нибудь, при каких условиях мож...   Mar 4 2009, 11:03
- - galjoen   Цитата(Ancient @ Mar 4 2009, 14:03) Не по...   Mar 4 2009, 16:37
- - Ancient   Цитата(galjoen @ Mar 4 2009, 19:37) выста...   Mar 30 2009, 07:11
- - galjoen   Цитата(Ancient @ Mar 30 2009, 11:11) а чт...   Mar 30 2009, 18:30


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

 


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


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