-
Постов
1 224 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Сообщения, опубликованные VladislavS
-
-
+1. Что 150 мкс, что 150 мс - суть одно и то же. При внутрисхемной прошивке вообще секунды контроллер в ауте. Схемотехника должна это предусматривать.
-
А где отладка то? Регистры процессора и периферии, дизасм?
-
Чисто в педагогических целях стоит решить задачу самому.
-
J-Link это всего лишь адаптер, он ничего сам не делает. Делает программа, которая с его помощью прошивает. Программ этих чуть больше чем дофига и каждая делает посвоему. Собственно и OpenOCD через J-link шить умеет.
-
На время отладки все остальные прерывания отключить, колбэки убрать. Добиться отсутствия пропусков и понемногу возвращать функционал.
-
3 часа назад, LAS9891 сказал:
Скажите уже, что мне надо читать Страуструпа.
Вообще-то, Кернигана и Ритчи 🙂 Это никому не повредит. Но что-то мне подсказывает, что там ни про работу с volatile сущностями, ни про оптимизирующий компилятор, ни про то как данные с задержками по шинам бегают, ни вообще про эмбэдд ни слова не будет. А до Страуструпа ещё надо дорасти.
-
-
17 минут назад, LAS9891 сказал:
Как я ИХ мог очистить
Между чтение для обработки и повторным чтением для очистки могло произойти что угодно.
3 часа назад, LAS9891 сказал:Вам стоило написать в STM и рассказать им какие они там все говнокодеры
Это Секрет Полишинеля. Впрочем, тот код что для них индусы пишут, ещё ничего. :)))
-
1 час назад, LAS9891 сказал:
TIMER_INTF(TIMER1) &= (~TIMER_INTF_CH0IF);
А потом у вас прерывания теряются. Тут вы очистили флаги, которые "вскочили" во время обработки текущего прерывания, не обработав.
45 минут назад, LAS9891 сказал:Тут пишут, что флаг надо смотреть не прямо в регистре, а через переменную:
Смотреть прямо в регистре периферии микроконтроллер не может. Он сначала считывает в регистр процессора, а затем смотрит. Локальная переменная будет расположена в регистре процессора. Не нужно много раз читать регистр статуса в регистр процессора, это напрасная трата времени в прерывании.
-
Искать надо там где потерял, а не там где лучше видно. Вроде это очевидно.
-
2 часа назад, dimka76 сказал:
А можно ссылочку на тему (топик) ?
Да там много, на первых страницах разделела ARM, RISC-V читать.
-
Теоретически да. Несколько тактов "под угрозой". Безопаснее будет
TIMER_INTF(TIMER1) = ~i;
- 1
-
А я бы вообще вот так сделал
u32 i = TIMER_INTF(TIMER1); TIMER_INTF(TIMER1) = 0; if (i & TIMER_INTF_CH0IF) { ... } if (i & TIMER_INTF_CH1IF) { ... }
-
Никак оно не будет работать. Сто раз уже писали - нужен DDS - возьми DDS и не сношай людям мозги.
-
47 минут назад, alag57 сказал:
C/C++ Compiler->Output->Generate debug information
Это совсем про другое. В исполняемый файл добавляется исходный код.
Browse information в настройках среды включается.
-
После макросов min и max деже читать этот ахтунг неохота.
-
1 час назад, RR2021 сказал:
нет не имеет , у меня gd32f103rc
Изменено 47 минут назадЧто-то мне подсказывает, что переход в double будет дешевле делений/умножений/приведений.
-
Какая разница, будет у вас там 2e-8 или 1e-3 ошибка, если вы на всё что меньше 0.1 в итоге чихаете?
PS: Как писали раньше, принимаем младший разряд int за 0.1 и работаем в целых числах.
-
56 минут назад, RR2021 сказал:
Пока что делаю так сначала умножил на 10 , перевёл в int, потом прибавил 1 перевёл во float, и разделил на 10
Мои глаза!!!
Что это изменит? Значение 1.1 во float не представимо точно.
-
1 час назад, razrab83 сказал:
которая инитится в main
У меня для совместимости с разными компиляторами (тулчейнами) вот такая конструкция используется
#ifdef __cplusplus extern "C" { #endif #ifdef __ICCARM__ int __low_level_init(void) #else void SystemInit() #endif { // Код инициализации железа #ifdef __ICCARM__ return 1; #endif } #ifdef __cplusplus } #endif
35 минут назад, EdgeAligned сказал:Во внешней SDRAM хранить одиночные переменные или малые объемы данных - неэффективно.
А с чего вы взяли что там одиночная переменная? Ясно же, что пример тестовый, что там реально в куче ХЗ.
-
-
Это только японские бракоделы свои машины постоянно отзывают. ВАЗ себе такого не позволяет. -
41 минуту назад, RDutch сказал:
Мне надо увеличить точность, хотя бы незначительно.
Чувствуется инженерный подход :))) Незначительно! Результат ничто - процесс всё!
-
22 минуты назад, amaora сказал:
А кто-нибудь здесь пишет
Не знаю это ли вы имеете в виду. Вот у меня в одной из библиотек обработчик прерываний USB. В нём IRQHandlers это список типов. Для каждого элемента списка выполняется лямбда.
А сам список зависит от реализуемого класса. Например, для CDC обработчики двух конечных точек.
3 минуты назад, Arlleex сказал:Опять же - это ведь не переменная, а константа.
Вообще-то переменная. Изменять нельзя, правда. :)))
4 минуты назад, Arlleex сказал:Видимость ограничена блоком (функцией), время жизни - глобальное, супер.
Это и в православном С так было со статическими локальными переменными.
Нужно разлочить STM32F103CB
в STM
Опубликовано · Пожаловаться
Что-то не очень похоже на STM32. Какой-то клон?