|
Общие ошибки у AT90CAN128 - когда они должны возникать?, А ведь все когда-то чайниками были! |
|
|
|
 |
Ответов
|
Jan 8 2008, 12:10
|

Профессионал
    
Группа: Модераторы
Сообщений: 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 - можно узнать только состояние физического уровня.
|
|
|
|
|
Jan 9 2008, 14:23
|
Знающий
   
Группа: Свой
Сообщений: 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") не устанавливаются. Из-за этого невозможно проанализировать шину, что я собирался сделать в отладочных целях.
|
|
|
|
|
Jan 9 2008, 14:33
|

Профессионал
    
Группа: Модераторы
Сообщений: 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... все это потом.
|
|
|
|
|
Jan 10 2008, 10:33
|
Знающий
   
Группа: Свой
Сообщений: 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). Т.е. если принимающий контроллер видит на шине фрейм с ошибкой, но понимает, что это фрейм не его (или фрейм разрушен настолько, что определить его или не его он не может), он устанавливает общую ошибку.
|
|
|
|
|
Jan 10 2008, 12:27
|

Профессионал
    
Группа: Модераторы
Сообщений: 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) можно посмотреть - все определно стандартом!
|
|
|
|
|
Jan 11 2008, 13:31
|
Знающий
   
Группа: Свой
Сообщений: 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 - без вас бы не разобрался. Но общие ошибки всё равно не возникают. Буду дальше ковырять на досуге. Если наковыряю - сообщу.
|
|
|
|
|
Jan 14 2008, 15:11
|

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

|
Цитата(galjoen @ Jan 11 2008, 16:31)  Но общие ошибки всё равно не возникают. А что за общие ошибки? У физического уровня CAN таких ошибок нет. Есть Bit error, Stuff error, CRC error, Form error, Acknowledgment error Может Вы про то что в реализации CAN128 есть регистры MOB а есть General. Так в даташите написано что 19.7.3Error Setting The CAN channel can detect some errors on the CAN network. •In transmission: The error is set at MOb level. •In reception: - The identified has matched: The error is set at MOb level. - The identified has not or not yet matched: The error is set at general level. After detecting an error, the CAN channel sends an error frame on network. If the CAN channel detects an error frame on network, it sends its own error frame.
|
|
|
|
Сообщений в этой теме
galjoen Общие ошибки у AT90CAN128 - когда они должны возникать? Jan 7 2008, 10:09     galjoen Цитата(KRS @ Jan 10 2008, 15:27) Для этог... Jan 10 2008, 15:18       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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|