Перейти к содержанию
    

VladislavS

Свой
  • Постов

    1 225
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

Весь контент VladislavS


  1. Это чтобы успеть лишний раз подумать а надо ли оно мне :)))
  2. Что-то не очень похоже на STM32. Какой-то клон?
  3. +1. Что 150 мкс, что 150 мс - суть одно и то же. При внутрисхемной прошивке вообще секунды контроллер в ауте. Схемотехника должна это предусматривать.
  4. А где отладка то? Регистры процессора и периферии, дизасм?
  5. Чисто в педагогических целях стоит решить задачу самому.
  6. J-Link это всего лишь адаптер, он ничего сам не делает. Делает программа, которая с его помощью прошивает. Программ этих чуть больше чем дофига и каждая делает посвоему. Собственно и OpenOCD через J-link шить умеет.
  7. На время отладки все остальные прерывания отключить, колбэки убрать. Добиться отсутствия пропусков и понемногу возвращать функционал.
  8. Вообще-то, Кернигана и Ритчи 🙂 Это никому не повредит. Но что-то мне подсказывает, что там ни про работу с volatile сущностями, ни про оптимизирующий компилятор, ни про то как данные с задержками по шинам бегают, ни вообще про эмбэдд ни слова не будет. А до Страуструпа ещё надо дорасти.
  9. Тут, кстати, "они там все" запросто получат двойной вход в одно и то же прерывание. Но об этом хомячкам не расскажут.
  10. Между чтение для обработки и повторным чтением для очистки могло произойти что угодно. Это Секрет Полишинеля. Впрочем, тот код что для них индусы пишут, ещё ничего. :)))
  11. А потом у вас прерывания теряются. Тут вы очистили флаги, которые "вскочили" во время обработки текущего прерывания, не обработав. Смотреть прямо в регистре периферии микроконтроллер не может. Он сначала считывает в регистр процессора, а затем смотрит. Локальная переменная будет расположена в регистре процессора. Не нужно много раз читать регистр статуса в регистр процессора, это напрасная трата времени в прерывании.
  12. Искать надо там где потерял, а не там где лучше видно. Вроде это очевидно.
  13. Да там много, на первых страницах разделела ARM, RISC-V читать.
  14. Теоретически да. Несколько тактов "под угрозой". Безопаснее будет TIMER_INTF(TIMER1) = ~i;
  15. А я бы вообще вот так сделал u32 i = TIMER_INTF(TIMER1); TIMER_INTF(TIMER1) = 0; if (i & TIMER_INTF_CH0IF) { ... } if (i & TIMER_INTF_CH1IF) { ... }
  16. Никак оно не будет работать. Сто раз уже писали - нужен DDS - возьми DDS и не сношай людям мозги.
  17. Это совсем про другое. В исполняемый файл добавляется исходный код. Browse information в настройках среды включается.
  18. После макросов min и max деже читать этот ахтунг неохота.
  19. Что-то мне подсказывает, что переход в double будет дешевле делений/умножений/приведений.
  20. Какая разница, будет у вас там 2e-8 или 1e-3 ошибка, если вы на всё что меньше 0.1 в итоге чихаете? PS: Как писали раньше, принимаем младший разряд int за 0.1 и работаем в целых числах.
  21. Мои глаза!!! Что это изменит? Значение 1.1 во float не представимо точно.
  22. У меня для совместимости с разными компиляторами (тулчейнами) вот такая конструкция используется #ifdef __cplusplus extern "C" { #endif #ifdef __ICCARM__ int __low_level_init(void) #else void SystemInit() #endif { // Код инициализации железа #ifdef __ICCARM__ return 1; #endif } #ifdef __cplusplus } #endif А с чего вы взяли что там одиночная переменная? Ясно же, что пример тестовый, что там реально в куче ХЗ.
  23. Да вроде всё работает. Настройки по умолчанию. Память под кучу выделена?
  24. Это только японские бракоделы свои машины постоянно отзывают. ВАЗ себе такого не позволяет.
  25. Чувствуется инженерный подход :))) Незначительно! Результат ничто - процесс всё!
×
×
  • Создать...