![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
tonyk_av
Участник-
Постов
1 114 -
Зарегистрирован
-
Посещение
-
Победитель дней
4
Весь контент tonyk_av
-
Да ну! Пробовал? Нет? Думаю, что компилятор быстро объяснит, что С и С++ отличаются синтаксисом, из-за чего откажется компилировать тупо переименованные файлы.
-
-
Масса измеряется в граммах, а миллилитрах измеряется объём. Не нужно их путать. Не часто встречаются такие чётко сформулированные хотелки, даже почитать стало интересно.
-
Отсюда. Там без туевой хучи сертификатов и лицензий делать нечего. Плюс вносить в рабочие процессы поправки на реалии сегодняшней действительности, видимо, не хотят, посему заслуженная оценка их как работодателя.
-
У них много вакансий с такой з/п. Только вот, действительно, давно ищут. Может, что-то не то в конторе? Я не иду туда из-за неудобного месторасположения офиса и жуткой заформализованности работы. И сильная текучка кадров настораживает.
-
Всем привет! Мозг кипит, прошу помощь зала. Ситуация: есть байт в массиве байтов. С битами этого байта работают разные методы разных классов. Синхронизацию доступа перепроверил. Но один бит кто-то меняет. В Кубе вижу точку останова при изменении данных (если я правильно понимаю это окошко). Вопрос: куда и что следует прописать, чтобы выловить адрес в программе, из которого изменяется этот бит? Глазами ошибку не вижу, нужно локализовать место с ошибочным кодом хотя бы до метода класса.
-
Так и есть. Я один и тот же вопрос от этого ivan dimir вижу на многих сайтах. У него подход к делу такой: прикинуться шлангом, выложить какой-нибудь бред, а потом ждать, пока грамотные челы ему всё разжуют и напишут. При этом он сам даже напрягаться не хочет, чтобы изучить теорию. Поэтому я удивляюсь, что многие до сих пор ведутся и тратят на него своё время.
-
Когда-то это всё делалось в xls-файлике от STM, а щас раздулось до монструозного Куба с его ХАЛом.
-
Не знаю, думаю, как правильней.
-
Напишите индусам о своих желаниях. Возможно, они снизойдут до их воплощения. Они уже много лет не исправляют ошибки в ХАЛе. Есть целые сайты с этим, поищите на досуге. Всё, что можно сделать малой кровью, это извлечь из стэка адрес, с которого вызвали Error_Handler(), чтобы в дизассме посмотреть адрес. Ну и __LINE__, __FILE__ и __func__ в помощь.
-
А для xPortPendSVCHanddler?
-
А можно как-то с терминологией определиться? Есть ведь общеупотребительная терминология. Вы, похоже, сами запутались. Есть прерывания процессора. Есть приоритет прерывания планировщика ОС. Отсюда и танцуйте. Исходя из свои представлений, у себя в программе я сделал так: //-------------------------------------------------------------------------- // Настраиваемм приоритеты прерываний. NVIC_t *nvic = NVIC_t::getInstance(); // Настраиваем все 4 приоритетных бита на PreemptPriority бит // и ни один из них на SubPriority бит. Это означает, что прерывание с более // высоким приоритетом, имеющее меньший номер, будет перебивать прерывание // с меньшим приоритетом, имеющее бОльший номер. nvic -> setPriorityGrouping( NVIC_PRIORITYGROUP_4 ); // Устанавливает для планировщика, вызываемого из SysTick, самый низкий // приоритет. nvic -> setPriority( SysTick_IRQn, configLIBRARY_LOWEST_INTERRUPT_PRIORITY ); // Учитывая настройки в "FreeRTOSConfig.h", получаем, что в обработчиках // прерываний с приоритетом 15..5 можно вызывать функции с суфиксом FromISR, // а в обработчиках с приоритетом 4..0- нельзя! Попутно тут же задам вопрос по поводу назначения приоритетов для самой ОС. Меня смущает вот что: const intfunc __vector_table[] __attribute__ ( ( section (".isr_vector_FLASH" ), used ) ) = { (intfunc)&_estack , &Reset_Handler, &NMI_Handler, &HardFault_Handler, &MemManage_Handler, &BusFault_Handler, &UsageFault_Handler, &Default_Handler, &Default_Handler, &Default_Handler, &Default_Handler, &vPortSVCHandler, &DebugMon_Handler, &Default_Handler, &xPortPendSVHandler, //<<<<<<<<<<< &xPortSysTickHandler, //<<<<<<<<<<< .... Как правильно задать наименьший приоритет для планировщика? Вопрос связан с тем, в прерывании от систика возбуждается прерывание для обслуживания планировщика. Поясните, пожалуйста, этот нюанс.
-
Вот именно, на это я и намекал. Поэтому толку от переписывания библиотечной функции будет ровно ноль. Вроде, как раз у ИАР есть опция компилятора, позволяющая изменять типы данных, используемые по умолчанию, то есть он будет вместо double передавать float.
-
А чем ваш printf() будет отличаться от библиотечного в части работы с числами с плавающей запятой? Понимает, на что я намекаю?
-
-
На сайте ИАР есть руководство по переезду с 8 на 9 и там есть упоминание об использовании. float и double. У меня провайдер блокирует VPN, поэтому я не могу прочитать об этом. В ГЦЦ есть предупреждения о таком преобразовании. Активность зависит от версии стандарта языка и, видимо, сборки компилятора.
-
Настройки компилятора смотрели? Их там много. Скорей всего, по умолчанию этот варнинг теперь разрешен. Если не указан суффикс "f" после числа с плавающей точкой, то компилятор использует его как double. Посмотрите на код в этой строчке: float pi = 3.14; Там будет приведение дабла к флоат с последующим присвоением. Поэтому при разрешённом варнинге на приведения типов компилятор справедливо ругается на эту строку: sprintf(str, "%f", pi);
-
У меня тоже не было, пока включал дома и в офисе. У меня проблем нет. Есть специфика настройки конкретных маршрутизаторов на конкретном предприятии. Я не вникал, зачем тут сделана блокировка устройств с такими МАС, но смысл этих бит как бы намекает, что пакеты с МАС-адресами, в которых они установлены, могут блокироваться. Поэтому столкнувшись, с тем, что часть плат не видна за пределами помещения, где я их проверял, стал смотреть эти биты.
-
Тут ещё нюанс вылез после включения в заводскую сеть. Отмеченные биты должны быть равны нулю, иначе коммутаторы не пропускают пакеты дальше, в МАС-адресах которых в этих позициях единицы. Во всяком случае, такие настройки в местной сети.
-
Надо будет найти подобное, но с SPI.
-
Надеюсь, за выходные он сам их забудет. Там всё на Выньде и Сименсе, поэтому лучше не трогать. Воспользовался вот этим. В общем, проблема со странным поведение двух W5500 решилась просто. Я в обе прошивки сдуру записал одинаковый МАС, вот они и фиговничали. Дописал загрузку МАС из конфигурационного файла, чтобы его можно было менять без перепрошивки- и всё заработало. Ессно, МАС теперь в конфигах разные. Благодарю всех ответивших!
-
Или через yeild(). В таком случае размер тика становится не принципиальным.
-
С него и начинал. Все бы так и делали. А как гарантировать уникальность адреса даже внутри локальной сети? Получается, что только покупка диапазона гарантирует уникальность адреса. Теплилась надежда, что где-то собираются МАС старых девайсов, которые используются в таких генераторах, пусть и не очень законно.
-
Нашёл. Буду пробовать. А где-как-откуда они берут адреса? Не получули я в дальнейшем повторы адресов?
-
А какие МАС можно задавать? Я вот тупо изменил в МАС один бит, а можно ли так было делать? Начальный МАС взял из какого-то примера работы с 5500.