CAN и ETHERNET(К1921ВК01Т)

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: dav, bkolbov, Alis, pip, _sva_, dav, bkolbov, Alis, pip, _sva_, dav, bkolbov, Alis, pip, _sva_

Виктор
Сообщения: 10
Зарегистрирован: 04 апр 2019, 12:10
Предприятие: МНИТИ

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение Виктор » 12 апр 2019, 16:47

В окне memory все массивы регистров отображаются некорректно (отображается адрес нулевого регистра из массива), а в expresions всё отображается корректно (адреса &NT_CAN->LIST[0] и &NT_CAN->LIST[1] разные).
Содержимое svd:
| Показать
<cluster>
<!-- dimElementGroup -->
<dim>8</dim>
<dimIncrement>4</dimIncrement>
<dimIndex>0-7</dimIndex>
<!-- end of dimElementGroup -->
<name>LIST[%s]</name>
<description>LIST</description>
<addressOffset>0x100</addressOffset>
<!-- LIST: Register list0 -->
<register>
<name>LIST</name>
<description>Register list0</description>
<addressOffset>0x00</addressOffset>
<size>32</size>
<access>read-only</access>
<resetValue>0x00000000</resetValue>
<resetMask>0xFFFFFFFF</resetMask>
<fields>
<!-- BEGIN: -->
<field>
<name>BEGIN</name>
<bitRange>[7:0]</bitRange>
<access>read-only</access>
</field>
<!-- END: -->
<field>
<name>END</name>
<bitRange>[15:8]</bitRange>
<access>read-only</access>
</field>
<!-- SIZE: List size -->
<field>
<name>SIZE</name>
<description>List size</description>
<bitRange>[23:16]</bitRange>
<access>read-only</access>
</field>
<!-- EMPTY: Indicate empty list -->
<field>
<name>EMPTY</name>
<description>Indicate empty list</description>
<bitRange>[24:24]</bitRange>
<access>read-only</access>
</field>
</fields>
</register>
</cluster>

bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение bkolbov » 15 апр 2019, 15:25

Виктор писал(а):
12 апр 2019, 16:47
В окне memory все массивы регистров отображаются некорректно (отображается адрес нулевого регистра из массива), а в expresions всё отображается корректно (адреса &NT_CAN->LIST[0] и &NT_CAN->LIST[1] разные).
Содержимое svd:
Похоже что эклипсовский плагин некорректно отображает массивы кластеров из svd. Попробовал сейчас svd открыть в keil - там все адреса внутри массива разные.

Al-x
Сообщения: 8
Зарегистрирован: 02 фев 2021, 19:22
Предприятие: АО "НТЦ "РИФ"

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение Al-x » 04 май 2021, 12:09

Обнаружил интересное поведение CAN: при КЗ в линии счётчики REC и TEC обнуляются, узлы отключаются от шины - CAN_NCR_INIT становится 1.

Пришлось сделать такую вставку:
if (NT_CAN->CAN_Node[CAN1_NODE].NCR & CAN_NCR_INIT_Msk) NT_CAN->CAN_Node[CAN1_NODE].NCR = 0;
В ходе экспериментов я пытался сымитировать состояние ошибки по описанию:
Узел находится в состоянии отключения от шины, если значение счетчика ошибок TEC больше или равно 256. О том, что CAN узел находится в состоянии отключения от шины, сигнализирует флаг BOFF регистра NSR. Узел в состоянии отключения от шины не может работать с шиной (выходные передатчики отключены).
Достоверно это сделать не получилось, но один раз вроде бы счётчики зашкалили и так же установился флаг CAN_NCR_INIT.

Отсюда вопрос: достаточно ли такого костыля по принудительному сбросу флага? Не может ли ещё что-то где-то заклинить при какой-нибудь большой широкополосной помехе, что потребуется где-то что-то очищать для сброса ошибки?

Аватара пользователя
Лашкевич
Сообщения: 220
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение Лашкевич » 12 май 2021, 17:39

Странно обнулять весь регистр, у нас в коде так

Код: Выделить всё

if (T_CAN->CAN_Node[CAN1_NODE]->NCR_bit.INIT)
	T_CAN->CAN_Node[CAN1_NODE]->NCR_bit.INIT = 0;
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Ответить

Вернуться в «32-разрядные микроконтроллеры»

Пользователи онлайн

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость