Задать вопрос
Ответы пользователя по тегу Микроконтроллеры
  • Как запустить программу (XIP) из внешней QSPI FLASH STM32?

    15432
    @15432
    Системный программист ^_^
    Не уверен, что обработчики прерываний можно в XIP засовывать, потому что сам XIP бывает что реализуется через прерывания (как тут - не глядел). Попробуйте для начала обычную функцию исполнить

    https://github.com/zephyrproject-rtos/zephyr/tree/...
    Ответ написан
    8 комментариев
  • Как посчитать частоту внешнего сигнала в тактах на RP2040?

    15432
    @15432
    Системный программист ^_^
    Рекомендую не выставлять делитель для PIO, а менять системную частоту. По умолчанию система работает на 125 МГц, с этой же частотой будет работать и PIO, если ничего не менять. При необходимости RP2040 гонится где-то до 360 МГц, но больше 200 МГц я б не рекомендовал ставить. RP2350 уже получше гонится, мой текущий проект на 600 МГц бегает.

    Ваш подсчет не очень корректный, поскольку замеряет длительность клока "в нуле". Из-за согласования уровней и передачи сигнала, может оказаться, что "в нуле" сигнал проводит больше времени, чем "в единице", поэтому надёжнее делать замер между двумя фронтами.

    Также замер будет не сильно точный из-за плавающей частоты PIO (125 системных МГц не делится нацело на 100 МГц, которые вы поставили для PIO, если питоновский API вообще задаёт дробную часть делителя, надо уточнить). Рекомендую не задавать конкретную частоту вовсе и исходить из clk_sys при расчетах.

    Тем не менее, в цикле у вас две инструкции, при 100 МГц, выполнение каждой из них занимает один такт, но замеряете вы полупериод, поэтому надо 100_000_000 / (4 * ticks) считать. (Насчитывает вдвое меньше 100мгц поскольку две инструкции, и ещё вдвое меньше потому что полупериод)

    Ещё из рекомендаций - можно включить autopull / autopush и вместо pull / mov делать out y, 32 и in x, 32. Сейчас вы не столкнулись с ограничением в 32 опкода, но в дальнейшем это может вызвать проблемы

    Почему на 8 МГц не хватает - тут не слишком ясно, осциллографом бы посмотреть. Возможно генератор сигнала даёт такой логический уровень, который rp2040 не воспринимает как логическую единицу, должно работать. Но можете попробовать включить на входе pull_up (мне помогало хватать и 1.8в уровни), отключить или добавить логические драйверы (set_drive_strength на 2ma или 12ma), тоже влияет. Ну или добавить перед RPi транслятор логических уровней (рублей 50 на Али восьмиканальный level shifter от texas)
    Ответ написан
    5 комментариев
  • Какое поведение является стандартным для RISC-V ядер при записи в readonly CSR?

    15432
    @15432
    Системный программист ^_^
    Ну обычно подобная запись игнорируется. Значение не изменяется, ошибок не возникает

    UPD:
    автор прав, а я нет, В RISC-V действительно есть исключения по записи в Read-Only регистры
    Attempts to access a CSR without appropriate privilege level or to write a read-only register also raise illegal instruction exceptions.
    Ответ написан
    3 комментария
  • Можно ли копировать защищенные nfc метки?

    15432
    @15432
    Системный программист ^_^
    Да, вам нужно повторить исследования из этой статьи и получить ключи от ваших карт. После чего через приложение NXP для чтения/записи карт сохранить состояние и постоянно его записывать обратно, восстанавливая число поездок на лифте. Это при условии, что баланс действительно хранится на карте.
    Ответ написан
    Комментировать
  • Как превратить напряжение 3,3 в 5 вольт в ардуино у ESP32 и обратно?

    15432
    @15432
    Системный программист ^_^
    Сигнальная линия - через преобразователь уровней. Силовая линия - её нельзя напрямик к контроллеру подключать, через мосфет или реле напрямую с источника питания
    Ответ написан
    8 комментариев
  • В чём разница между этими платами ESP32?

    15432
    @15432
    Системный программист ^_^
    Разница в выгоде продавца. Себестоимость около 200 рублей, комиссия площадки ну допустим 50, остальное идёт китайцу. В одном случае идёт китайцу чуть больше, в другом чуть меньше
    Ответ написан
  • Это оригинальный ESP32?

    15432
    @15432
    Системный программист ^_^
    Чип оригинальный, плата сделана китайцами
    Ответ написан
  • Можно ли выгружать прошивку Arduino через SD карту?

    15432
    @15432
    Системный программист ^_^
    Конечно можно, но вам понадобится запрограммировать весь этот механизм обновления. (Загрузка с sd карты при запуске, получение прошивки по интернету, проверка целостности, замена прошивки на sd карте).
    Ответ написан
    3 комментария
  • Какой МК имеет встроенный BLE и работает от элемента питания CR2016 (3 вольта)?

    15432
    @15432
    Системный программист ^_^
    nRF51 мы брали в таком кейсе
    Ответ написан
    Комментировать
  • Как уменьшить напряжение с 3.8-4.2 до 3.3 вольт?

    15432
    @15432
    Системный программист ^_^
    Вам нужен buck-boost преобразователь для литий-ионных аккумов, например, LTC3440
    Ответ написан
    Комментировать
  • В чем может быть не исправность клавиатуры?

    15432
    @15432
    Системный программист ^_^
    При подключение только загораются три зеленых индикатора на мгновение, дальше никаких признаков жизни.

    PS/2 порт не поддерживает горячее подключение. Полностью выключите компьютер, только потом вставляйте штекер. (вполне возможно, что вы не пробовали перезагружать систему)
    Ответ написан
  • Как обезопасить функцию от прерывания?

    15432
    @15432
    Системный программист ^_^
    Для таких целей вводятся дополнительные обертки над disable_irq и enable_irq, которые вычисляют "глубину" запрета прерываний. По факту просто есть глобальный счетчик, который увеличивается при каждом вызове ext_disable_irq и уменьшается при ext_enable_irq. Настоящее включение прерываний происходит в самом конце ext_enable_irq и только если счетчик в этот момент равен нулю
    Ответ написан
    5 комментариев
  • Как оборудование "понимает" программу?

    15432
    @15432
    Системный программист ^_^
    Микроконтроллер не понимает, а тупо исполняет инструкции. Это ваша программа должна правильно сконфигурировать аппаратный порт микроконтроллера, чтобы на его выходе появилась логическая единица и светодиод зажёгся.
    Порядок действий отличается в зависимости от микроконтроллера. Где-то достаточно записать бит по определенному адресу памяти, где-то используются специальные ассемблерные команды для управления портами, и т.д.

    Программируется всё это обычно на уровне абстракций, с использованием готовых библиотек. Тот же Arduino поглядите. Глубокие знания электроники требуются для разработки устройств с этими микроконтроллерами.
    Ответ написан
  • Нужен ли OpenOCD для отладки и прошивки stm32?

    15432
    @15432
    Системный программист ^_^
    ST-Link v2 это устройство для подключения к STM32 по JTAG (в вашем случае, SWD)

    texane Stlink Tools и OpenOCD - программы, которые общаются по JTAG с устройством и позволяют отлаживать его (читать память, ставить брейкпоинты). У обеих есть GDB сервер.
    OpenOCD поддерживает много архитектур и JTAG адаптеров, Stlink Tools предназначена для STM32.
    Ответ написан