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

esaulenka

Свой
  • Постов

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

  • Посещение

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

    2

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


  1. Коллега sevstels, к сожалению, забил на требование нордика "никогда не отключайте прерывания при работе softdevice'а". А может, он и не использовал софтдевайс - в примере нет, в сообщениях на форуме "все дураки, я свой велосипед строю"... Есть, да. Надо взять порт scmRTOS от STM'ки, переписать критическую секцию, таймер (systick в nrf52 вернули обратно, но он батарейку жрёт), и отладить. Ну и в процессе раскурить, что они с приоритетами прерываний сделали (нормального описания я не нашёл, к сожалению, только в духе "trust me, i know what i'm doing"). Наличие готового примера и грамотного человека, который это делал, процесс должно сильно ускорить. Ну да ладно, будет повод самому описать...
  2. Не работает так. Точнее, в режимах "клапан полностью открыт, обратка не работает" и "клапан полностью закрыт, расход в обратке равен расходу в подаче" будут худо-бедно корректные показания. Но если клапан приоткрыт, и оба расходомера крутятся, и крутятся с разными скоростями, эта схема с XOR'ом выдаст какое-то нереально большое значение. Ставьте ардуину... Если предположить расход 36 литров/час, это 0,01 л/сек, это с вашим расходомером всего 10 импульсов в секунду. Можно тупо "в лоб" считать, ардуино-библиотеки с такими "скоростями" справятся.
  3. Потому что это си. https://stackoverflow.com/questions/2245664...rals-in-c-and-c Нет, вру. "struct lala ... lala la" - это не си. Это кривой вопрос, т.к. правильный вопрос должен указывать и название компилятора тоже. Вот, например, компилятор gcc char * test = "TEST"; ../Common/main.cpp:41:16: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] В main.c аналогичный трюк работает без предупреждения.
  4. STM32H743 MDMA

    Да, неправ, это место просмотрел... Благо объемы у меня небольшие, и разгонять DMA не требуется - до включения burst'а руки так и не дошли... Но это означает, что работу с буфером больше 1кБ надо обкладывать дополнительными проверками. И маленький буфер тоже по-хорошему выравнивать надо (блин, как же в gcc это неудобно...).
  5. STM32H743 MDMA

    Какие интересные грабли. Это каких именно процессоров касается? И где описано? Этак burst можно применять только в очень ограниченном числе случаев...
  6. Ого, Free-DAP Тарадова допилили от состояния "прошивал ATSAM, но ничего не хочу обещать" до "шьёт всё что движется" ? Круто!
  7. Как же "удобно", когда есть МНОГО разных мнений...
  8. Можно пользоваться языком, у которого ключевое слово "инлайн" прописано в стандарте. Например, какой-то макросозаменитель, вычисление которого быстрее, чем перекладывание параметров в нужном порядке по регистрам. Да, скорее всего компилятор проявит интеллект и сам заинлайнит. А может и нет. Проще подсказать.
  9. NOR. Маленькая, ооочень многоногая и довольно дорогая. Потому что с NAND по-человечески (с отображением в адресное пространство контроллера) не умеют работать ни STM32, ни LPC43...
  10. Проблема "мегапрошивки в принципе" не решается. Потому что для её решения нужно, как минимум, уметь читать. В этой теме уже упоминалось, что некоторые LPC и STM умеют исполнять код из внешних SDRAM и QSPI флешек. Также об этом написано в соответствующей документации.
  11. SDRAM + stm32f429

    Варианты: 1) если планируется какое-то своё железо (407VG + SDRAM - это НЕ дискавери), поставить камень потолще и не морочить себе и окружающим голову 2) договориться с "программой разработчиков", что адреса их интерпретатора будут другие. 3) написать свой кусок более компактно. Городить внешнюю память в этом случае смысла как-то немного...
  12. SDRAM + stm32f429

    Зайдём с другой стороны. Где именно на STM32F4DISCOVERY припаяна SDRAM ?
  13. Evalution Board это. "Отладка", по-русски. Гражданину писать лень (а советовать - не лень...). IAR - это EWB, Embedded Workbench. А передавать на компьютер - проще, да. Настроить уарт (десяток строк, если руками, или пара строк вызова очередного HAL'а), и вперёд, printf наше всё. Если надо автономное устройство, с дисплейчиком и кнопками, и незадорого, рекомендую поискать STM32 Nucleo + любой понравившийся экранчик "для ардуино".
  14. КОМПИЛЯТОР к производителю не привязан никак (набор команд что у STM, что у NXP абсолютно одинаковый). Вот среда (в виде удобного просмотра регистров периферии, шаблонов для старта проекта и прочих алгоритмов залития во флеш) может быть привязана. И в процессе самостоятельной сборки "кубиков" появятся навыки по отвязыванию от производителя (собственно, просто заменой "кубика" на более универсальный аналог). Ланчпадовская версия переехала на arm.com. Я пользуюсь именно этой версией.
  15. Не, я всё понимю, вопросы начинающих, всё такое... Но в GCC действительно нет окна watch. Потому что это компилятор. Окно watch есть в IDE, коих сильно больше одного. Рекомендую начать с изучения https://electronix.ru/forum/index.php?showforum=162 Установка в один клик - System Workbench (с недавних пор их купила ST, и из коробки там только процессоры одного производителя). Более сложная установка - GNU MCU Eclipse. Ещё более сложно - сложить из разнообразнейших кубиков свой любимый набор.
  16. Это такая особенность нынешних средств разработки. Файл парсится два раза - один раз это делает IDE, чтобы уметь подсвечивать-подсказывать, и второй раз это делает компилятор. Ну и вот эту конструкцию парсер кейла не поддерживает. Если компилятор не выдаёт на это ошибок - проблем никаких нет. Для красоты можно попробовать подобрать версии кейла/заголовка (может, поправили уже) или поредактировать его руками. Волшебный ребилдол (rebuild all) пробовали?
  17. Что в данном конкретном примере нечитабельно? Просто и наглядно: если значение в первом массиве меньше, чем соответствующее значение во втором, увеличиваем это значение. Как это можно понять по-другому?! А тема занятная получилась. Выяснилось, что приоритет операций в стандарте C99 явно не описан (наверное, его можно восстановить из форм Бэкуса-Наура, но уж больно лень) и он отличается (!) от приоритетов C++. Хотя, конечно, стандарты C++ писали неглупые люди и про совместимость они подумали. Лично я ни разу не наступил на грабли, пользуясь им в этой части при написании сишного кода.
  18. Сеанс коллективного гадания :) Я ставлю на слетевшие настройки Flash Download в настройках отладчика. Это если верить в "кейл процессор обнаруживает" и не верить в "сломалось сразу после первой прошивки". А вообще - больше информации надо. Отладчик такой-то, выводит то-то (дословно!), другие программы (segger, st-link, что-там-ещё) выводят то-то...
  19. libopencm3 + stm32f4 + CAN

    Ложит и ложит, хад такой... Очередной бесценный советик. Постарайтесь понять, что это железка. Тупая и абсолютно бесчувственная. И всё эти эпитеты ей совершенно безразличны. Что виснет? Как виснет? Что в шину передаётся? (осциллографом пора-таки воспользоваться). Что как где настроено? Пишем подробное письмо, трижды перечитываем, пытаясь понять, что же именно написано (не простое ctrl-c ctrl-v "хотят - ну нате вам"). Можно даже не отправлять.
  20. libopencm3 + stm32f4 + CAN

    Ну и что толку с этих картиночек? Вы их самостоятельно-то рассматривать пытались? На F105 частота APB1 36 МГц, на F407 - 20 МГц. Настройки модуля CAN по-прежнему одинаковые? Ну тогда скорость у них отличается в 1.8 раза. И под "посмотреть осциллографом" подразумевалось не "запостить картинку", а "измерить скорость шины". Методом измерения длительности одного бита и вычисления количества бит в одной секунде. Ничего, что я здесь азбучные истины излагаю?
  21. Замыканием (или обрывом) соответствующей адресной ноги.
  22. libopencm3 + stm32f4 + CAN

    на F407 действительно стоит кварц частотой 26 МГц?
  23. Это пока не понадобится втыкать устройство в компьютер... Спасаюсь переносным осциллографом, у которого блок питания отвязан от сети.
  24. libopencm3 + stm32f4 + CAN

    https://www.kvaser.com/about-can/the-can-pr...error-handling/
  25. Никакой конкретики. Отлично. Ещё раз. Пожалуйста, расскажите своё видение отличий очереди и семафора. Что вижу я: макрос vSemaphoreCreateBinary вызывает xQueueGenericCreate, макрос xSemaphoreGive вызывает функцию xQueueGenericSend. Т.е. внутри что семафор, что очередь из одного элемента отличаются минимально. А теперь расскажите, почему эту очередь maxntf ни в коем случае использовать не должен.
×
×
  • Создать...