Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

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

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

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

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич » 18 июл 2019, 11:16

Хорошо. Посылки верные. Теперь юникон.
1. Покажите параметры модуля связи (скриншот)
2. Что написано снизу слева в статусе на основном окне?
3 Узел сверху слева не появляется?
4. Не запущен ли юникон в песочнице каким-то антивирусом?
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » 18 июл 2019, 11:30

Unicon_3.jpg
Unicon_3.jpg (153.65 КБ) 458 просмотров
Unicon_2.jpg
Unicon_2.jpg (50.51 КБ) 458 просмотров
Unicon_1.jpg
Unicon_1.jpg (46.48 КБ) 458 просмотров

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

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич » 18 июл 2019, 11:47

А, ну понятно. Когда такое имя устройства (bad) это значит, что устройство не слышит юникон (не принимает его посылки). Т.е. устройство посылает, но не принимает. Юникон, когда видит устройство в сети, посылает ему запрос на чтение идентификационных параметров, чтобы показать, что это за устройство, но, не видя ответа, переспрашивает безуспешно еще несколько раз и рисует BAD. Возможно, в аппаратной части что-то не так, или внутри софта что-то не так с приемом посылок (ножка на прием не сконфигурирована).
Проверьте, что функция CANtoRS_ReceiveRS внтури драйвера V_CANtoRS.c вызывается как таковая, а потом проверьте, принимает ли она что-нибудь (поставьте бряку на ReadPackDataCounter или вставьте свой счетчик). Если не принимает, проверяйте ножки на приём, проверьте осциллографом на ножке RX, что посылки идут (должно быть несколько после запуска юникона, потом он будет молчать). Или можете сами посылать что-то своей программой периодически (вместо юникона) и убедиться, что приём посылок внутри CANtoRS_ReceiveRS пошел.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » 18 июл 2019, 13:33

Сигнал на отправленный внешней программой на ножке RX есть!
TEK0000.JPG
TEK0000.JPG (84.96 КБ) 445 просмотров
Инициализацию UART проверил. Всё как в оригинале (местами в схеме я к этому и стремился).

А вот установка Breakpoint показала отсутствие вызова функции приёма данных. Я и в коде вызов не нашёл (!).
Тогда как происходит передача?

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

void SM_Sys_ms_Calc(TSM_Sys* p) {
	sm_cmd_logic.ms_calc(&sm_cmd_logic); //Обработка команд управления
	sm_net.ms_calc(&sm_net); //обертка для вызова коммуникационных драйверов
	adc.ms_calc(&adc); //АЦП
	sm_prot.ms_calc(&sm_prot); //Защиты
	AutoOffset.ms_calc(&AutoOffset); //авто смещение некоторых каналов АЦП
	//блочная передача драйвера CANopen. Через неё, в частности, грузятся осциллограммы dlog
	Can2BTInterface.ms_calc(&Can2BTInterface, NT_TIMER2->VALUE, &co2_vars);
	leds.msCalc(&leds);//светодиоды
	RTCclock.msCalc(&RTCclock);//часы
	UserMem.ms_calc(&UserMem);//пользовательская память в МК
	if ((drv_params.sens_type == 2) || (drv_params.sens_type == 3)){ //В типе датчика выбран ДПР Холла
		DPReCAP.ms_calc(&DPReCAP);
	}
	global_time.ms_calc(&global_time);

	DIO_fast_calc(); //дискретные входы/выходы

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

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич » 18 июл 2019, 13:37

Ну там вызывается общая функция calc этого модуля в 10кГц вроде, а внутри уже всё остальное. Там же по указателю вызов.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » 18 июл 2019, 13:50

В main определяется переменная CANtoRS и инициализируется в том числе указателями, но действительно упоминания этой переменной ни в Fast_calc, ни в Slow_calc нет!

Видимо поэтому и breakpoint не срабатывает.

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

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич » 18 июл 2019, 14:03

CANtoRS.calc(&CANtoRS); (указатель на CANtoRS_calc) вызывается в SM_Net_ms_Calc, в CANtoRS_calc вызывается CANtoRS_Receive, там вызывается CANtoRS_ReceiveRS. Не 10кгц, но 1мс, да. Бряка может не срабатывать из-за включенной оптимизации. Поставьте счетчики.
Вложения
2019-07-18_13-06-09.png
2019-07-18_13-06-09.png (54.94 КБ) 440 просмотров
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » 18 июл 2019, 15:16

Ставил breakpoint в функции приёма данных
CANtoRS function.jpg
CANtoRS function.jpg (102.58 КБ) 435 просмотров
При отправке с внешнего терминала как бы сюда программа не попадает, но на паузе счётчик принятых пакетов p->ReadPackDataCounter показывает некое ненулевое число и буфер данных соответствует отправленным данным. :?:

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

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич » 18 июл 2019, 15:37

А вот еще что. Попробуйте снять галочку 29 бит идентификатор в параметрах модуля связи. Это, насколько я помню, дефолтные параметры.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

petrovitch
Сообщения: 72
Зарегистрирован: 15 фев 2017, 19:07

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение petrovitch » 07 авг 2019, 12:30

Теперь соединение установилось!

Но список параметров отображается не так. В чём теперь дело?
Node.jpg
Node.jpg (17.98 КБ) 408 просмотров
Node.jpg
Node.jpg (17.98 КБ) 408 просмотров
Вложения
Dict.jpg
Dict.jpg (31.03 КБ) 408 просмотров

Ответить

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

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

Сейчас этот форум просматривают: Google [Bot] и 1 гость