Ответы пользователя по тегу Микроконтроллеры
  • Как лучше вносить изменения в стороннюю библиотеку С?

    bullitufa
    @bullitufa
    электронщик программист (микроконтроллеры и PC)
    1 вариант: если можете "всунуть" управление приёмом/передачей в "портовую" часть, то проще добавить свою папку порта с своими изменениями.
    2 вариант: библиотеку в гит и свои изменения в отдельную ветку
    3 вариант: 2 и 1 вариант если либмодбас например в гитхабе, то предложить пул реквест со своими изменениями
    Ответ написан
    Комментировать
  • Как начать карьеру embedded разработчика?

    bullitufa
    @bullitufa
    электронщик программист (микроконтроллеры и PC)
    Судя по тому что Вы умеете, вы уже начали карьеру)

    1.1 А как должен относиться работодатель к сотруднику который не очень опытен? Либо в Вас увидят "звёздочку" и возьмут в сурьезную разработку. Либо устроитесь в шарашконтору.
    1.2 Наверное пойти в шарашконтору/фриланс. Либо показать что уже сейчас не уступаете с опытом в 1-3 года.

    2. В интересном! Реально, зачем искать себя в цифре, если интересен аналог? Даже на лампах можно заработать. А вот заниматься не интересным, максимум 3 года

    3. Может и стоит. Но что вы подразумеваете под "разработке под ПЛК"?
    Делать свой PLC? - только в академических целях (илисмотрите в сторону Beremiz/OpenPLC)
    Писать код для PLC (IEC61131-3)? Возможно денег немного больше можно найти, но скукатище (по мне). Как там с ООП?

    Пилите интересные для себя проекты. Выкладывайте на github. Заведите бложек, можно ведь пока и на vash_domen.wo..p..s.com Ну Вы поняли где?))
    Перспективные направления? Наверное embedded linux. Сколько стоит сегодня "10 МГц" процессора? А сколько 5 лет? Скоро процы на которые можно накатить линуху будут по цене
    2-3 ардуин. Но нужно подождать, а пока готовиться)) Это моё имхо!

    Удачи!
    Ответ написан
    2 комментария
  • На каком языке сейчас чаще всего программируют микроконтроллеры?

    bullitufa
    @bullitufa
    электронщик программист (микроконтроллеры и PC)
    Всё зависит от задачи!
    С, С++, Rust, asm. Примерно такое распределение использования я вижу.
    Я С++ использую скорее как "С с классами". Замечу что С++ не намного жрёт ресурсы по сравнению с С. Нужно "уметь готовить" (-fno-exceptions, -fno-rtti, виртуальные функциию, наследования и т.д.).
    С++ позволил написать драйверы на периферию (таймеры, spi, i2c, uart). И при переходе с платформы на платформу минимизировать изменения, а то и избежать их. Естественно не обошлось без использования STL (в основном контейнеры), но не использовать методы с exception.
    Но вся низкоуровненвая часть на Сях.
    Ответ написан
    Комментировать
  • FreeRTOS: какие правила хорошего тона?

    bullitufa
    @bullitufa
    электронщик программист (микроконтроллеры и PC)
    Прежде всего смотрите на RTOS (любую) как на инструмент решения Вашей задачи. У любого инструмента есть описание: Курниц (вполне себе актуален и сейчас) и офф мануал в pdf (по-моему бесплатно дают).
    Правильно пользоваться ОС это значит понимать:
    1) разницу в примитивах синхронизации (очередь, мьютекс, семафор) когда и где ими пользоваться
    2) как задавать размер стека и приоритет задачам
    3) что делать в прерываниях и что делать в задачах (в том числе как правильно задавать приоритеты прерываний)
    Это первое что пришло на ум.

    Мне лично, после перехода на ОС, пришлось немного перестраивать мышление при написании кода:
    1) ты никогда не знаешь когда выполнится код в одной задаче по сравнению с соседней задачей.
    2) выполнение задачи могут прервать другие задачи и прерывания
    3) если задача куда-то пишет, а другая читает - значит их нужно синхронизировать
    и т.д.
    Удачи!
    Ответ написан
    1 комментарий
  • Как передать данные из usb audio в uart в stm32f103c8t6?

    bullitufa
    @bullitufa
    электронщик программист (микроконтроллеры и PC)
    Не уверен, но думаю примерно так:
    файл usbd_audio.c
    функция static uint8_t USBD_AUDIO_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum)
    там вызывается Ваша функция обратного вызова:
    ((USBD_AUDIO_ItfTypeDef *)pdev->pUserData)->AudioCmd(&haudio->buffer[0], AUDIO_TOTAL_BUF_SIZE/2, AUDIO_CMD_START);
    А синхронизация по функции StartOfFrame или void USBD_AUDIO_Sync (USBD_HandleTypeDef *pdev, AUDIO_OffsetTypeDef offset) там же.
    Смотрите примеры от ST (в кубе есть).
    Удачи!
    Ответ написан
    1 комментарий
  • Где найти хороший мануал по FreeRTOS под Cortex-M3?

    bullitufa
    @bullitufa
    электронщик программист (микроконтроллеры и PC)
    1) Есть же документация на сайте! В pdf формате!
    2) На сайте microsin.ru
    3) 10 (или 11) Лекций Курница (из журнала компоненты и технологии).
    Всё гуглится!

    Если прям вот хочется увидеть что там конкретно под кортекс, то идите в папку portable. Ничего особенного не увидите!

    Любые опции вкл/выкл в файле freertos_config.h.

    То ей оказывается обязательное включение -O1, то теперь по непонятной причине падает в uxListRemove.
    Такое не видел. С чего Вы решили что надо с -O1 компилить?

    но вот с минимальным размером стека задачи и кучей возникают вопросы - не совсем ясно до каких пределов их можно уменьшать(стек вроде еще и считается в словах), а динамическое выделение памяти текущий порт FreeRTOS отключить не дает.
    Стек, да, в словах. Подсчитать объём занимаемой таском памяти - не тривиальная задача. Я пользуюсь ключом компиляции "-fstack-usage" Генерятся файлы. Их скармливаем avstack.pl (гуглится) Программа хоть и для AVR но работает. Там можно посмотреть сколько задача кушает стека!

    Плюс есть плагины и ключи для просмотра стека задач и т.д.! Но тут надо учитывать что задача "пройдёт" самый "прожорливый" для стека путь!

    Не ленитесь "обложиться" инструментами - сэкономят в будущем уйму времени и сил!

    Удачи!
    Ответ написан
  • Кто знает литературу по профессиональному программированию микроконтроллеров?

    bullitufa
    @bullitufa
    электронщик программист (микроконтроллеры и PC)
    По основной теме вопроса: сам мучаюсь, но мучаюсь только по тому что "не умею" программировать. То что нужно продумывать архитектуру с самого нала - это в некоторых случаях крайне рекомендательно. У нас разрабатывается несколько устройств - приходится писать общие библиотеки. Приходится писать достаточно гибкие библиотеки - иначе переписывать приходится!
    Как показала практика очень часто встречаются указатели на функции, стейт машины, операционки (freertos, chibios и т.д.) и т.д. Отличным подходом (имхо) буде написание низкоуровневых (HAL от stm32) и высокоуровневых функций (modbus, canopen и т.д.). Вот эти вещи посмотрите как делают.

    По вопросу реализации коммуникации по рс485: если протокол отличный от модбаса, но похож - посмотрите на библиотеку freemodbus.

    Сейчас тихонько пытаемся внедрить тесты. Есть отличная книжка на английском (переводов не встречал): we.easyelectronics.ru/Nemo/tdd-dlya-embedded.html - там же ссылка на эту книгу.
    Чем хорошо писать "под тесты"? Тем что писать каждую функцию приходится думая, а бы как не напишешь. Короче видим плюсы в этом!
    Удачи!
    Ответ написан
    1 комментарий
  • Как управлять питанием в stm32f4?

    bullitufa
    @bullitufa
    электронщик программист (микроконтроллеры и PC)
    Вы питание блутуза прям с ноги мк снимаете??? Так не стоит делать.
    Проще всего через транзистор. Тогда и уровень питания не будет помехой.
    Ответ написан