Pull to refresh
183
26

Embedded SW/Firmware Engineer

Send message

приложение для управления пишет только под винду

приложение для управления вообще не нужно, когда в прошивке есть поддержка UART-CLI
Какой Может быть UART-CLI в Микроконтроллере (или Курс Молодого Бойца)
https://habr.com/ru/articles/980280/

никаких GD, я не буду с ними работать! esp? rp? китайцы? ноуп), приложение для управления пишет только под винду

Да. Именно так.

Не стоит пугаться китайских MCU.
Тем более есть отличные методички по старту

Настройка ToolChain-нa для Разработки на Микроконтроллерах YTM32x
https://habr.com/ru/articles/875274/

Настройка ToolChain-a для программирования MCU FlagChip FC7300F8MDT
https://habr.com/ru/articles/742274/

Да. Вы правы. Исправил.

Это не то.

void func( //
    int a,
    int b
);


Надо вот так. Прямо под открывающейся скобкой чтобы аргументы начинались

//*************************************************************************************************
// @Function      GPIO_SetPinState()
//-------------------------------------------------------------------------------------------------
// @Description   Sets a new logic state of the specified digital input/output pin.
//-------------------------------------------------------------------------------------------------
// @Notes         None.
//-------------------------------------------------------------------------------------------------
// @ReturnValue   RESULT_OK     - function succeeded
//                RESULT_NOT_OK - function NOT succeeded
//-------------------------------------------------------------------------------------------------
// @Parameters    nPortNumber - port number
//                nPinNumber  - pin number
//                nLogicState - a new pin logical state: LOGIC_0 - sets logical 0
//                                                       LOGIC_1 - sets logical 1
//**************************************************************************************************
STD_RESULT GPIO_SetPinState(const U8 nPortNumber,
                            const U8 nPinNumber,
                            const U8 nLogicState)
{
    STD_RESULT nFuncResult = RESULT_OK;

    if (FALSE == GPIO_IsPortPinValid(nPortNumber,
                                     nPinNumber,
                                     GPIO_API_ID_SET_PIN_STATE))
    {
        nFuncResult = RESULT_NOT_OK;
    }
    else if ((GPIO_PIN_LOW != nLogicState) && (GPIO_PIN_HIGH != nLogicState))
    {
        nFuncResult = RESULT_NOT_OK;
        #if (ON == GPIO_DEVELOPMENT_ERROR_DETECTION)
        GPIO_REPORT_DEV_ERROR(GPIO_API_ID_SET_PIN_STATE,
                              DEV_ERROR_PARAM_2);
        #endif
    }
    else
    {
        if (GPIO_PIN_HIGH == nLogicState)
        {
            GPIO_pPorts[nPortNumber]->SCR.R |= ON << nPinNumber;
        }
        else
        {
            GPIO_pPorts[nPortNumber]->SCR.R |= ON << (nPinNumber + GPIO_PINS_QTY);
        }
    }
    return nFuncResult;
} // end of GPIO_SetPinState()

Благодарю, Вас. Не знал про такой трюк.

Я, к слову, работал в Embedded и Team Lead у нас был из Телекома.
Благодаря ему узнал про модульное тестирование, скрипты сборки, CLI, серверы сборки, архитектуру программ и прочее.

До этого 7 лет работал тупо в IDE IAR на одном месте штаны просиживал.

Было бы хорошо, если в embedded почаще приходили люди из BigTech-a.
А то тут в разработке на МК просто не у кого учиться программированию как таковому. Вокруг схемотехники-топологи и конструкторы механики.

И ни слова про осциллограф и логический анализатор,

и DMM

Да.
Все устройства на микроконтроллерах они так или иначе взаимодействию с физическим миром. Их приходится отлаживать, неожиданно, тоже в физическом мире. Далее обстоятельства могут повернуться самым необычным образом. Поэтому получается так, что сначала пишешь программный Си-код для микроконтроллера, а потом программистов микроконтроллеров обычно посылают в командировки в те еще места: настраивать СКУД в медные подземные шахты 300 метров под землей за полярным кругом (это где ночь длится полгода), настаивать оборудование в атомных электростанциях , проверять телематику в открытых карьерах размером 4 на 8 км для добычи какого-то "недоступния" (глотать там пыль),  тестировать эхолоты на Белое море (во время шторма ходить по стенам каюты), тестировать АФАР радары в зоне СВО.

В профессии программист микроконтроллеров часто приходится отлаживать радио электронную аппаратуру (РЭА) прямо на улице, ибо GPS и дальнобойную радио связь в уютном офисе ну никак не проверишь не отладишь, как ни крути. И, как правило, такая out-door отладка выпадает, внезапно, на декабрь-январь-февраль… За окном минус -29... -35 градусов по шкале Цельсия, сильный холодный, леденящий ветер. Солнце слепит глаза. Даже на смартфоне не видно, что написано, шум от пролетающих фур на трассе. Провода как спагетти обламываются сразу в двух местах. Приходится облачаться в ватники, двойные штаны, валенки, балаклаву, варежки, шапку-ушанку. На щеки и губы намазывать толстый слой крема от обледенения лица. Однажды на испытаниях LoRa трансиверов наш коллега провалился под снег и мы вдвоем его откапывали.

Поэтому такие работы у нас шутливо называется "выходы в открытый космос".

Вот вот. Согласен на 101%. CAN нужен только автомобильных проектам. А разработка на MCU это далеко не только автомобилка. Есть еще умный дом, горнодобывающая электроника, промышленная электроника, оборудование для электростанций, меденинская техника, серверная инфраструктура.

Всё это прекрасно работает на RS485.

Большинство проделанной работы под NDA. Не стану же я тут на habr писать, как программировал турель или беспилотный БТР.

Зато могу показать некоторые pet-проекты

ПасТильда:
https://share.google/NY4U66fQsUZ7gr3nQ
https://habr.com/ru/articles/859122/

Солнечный Навигатор
https://habr.com/ru/articles/687640/?ysclid=mm0u7a8ztt888858229

Если говорить про составные части, то мне удалось сделать для ECU

Load Detect в H-мосте
https://habr.com/ru/articles/709374/

Из-за эмбарго на AD5641 мне поручили сделать псевдо-ЦАПик
PWM+RC=DAC
Управление напряжением PWM сигналом (PWM+RC=DAC)
https://habr.com/ru/articles/821951/

+множество служебных утилит, драйверы ASICов и тестировочное оборудование. Больше подробностей в моих текстах.

Хочу вместе с прошивкой зашивать массив с "дефолтными" параметрами в последнюю страницу флеша. Что надо сделать?

Вот методичка
Типовая разметка памяти STM32F4
https://habr.com/ru/articles/1001268/

Не часто увидишь слово "микроконтроллер" и "MMU" в одном предложении.

как работает "точка прерывания" при отладке

Этот вопрос из Tesla Motors. Видел на Glassdoor.

На ATmega/ATxmega вообще sizeof( int ) == 2. 

На MSP430 тоже.

А какие надо использовать и где их купить?

100 лет назад на гиперболоидах строили исполины ЛЭП и всемирные радиостанции.
Теперь - подставку для карандашей.

Утилита IMSProg поддерживает работу с SD картами?
Типа таких
Подключение SD карты по SPI (Капсула памяти)

https://habr.com/ru/articles/974076/

Типичная ситуация в программировании микроконтроллеров. Отвалившаяся вилка застряла в гнезде. В электронике это называется "извлечь клеща".

в электронике это называется "извлечь клеща"
в электронике это называется "извлечь клеща"

В программировании микроконтроллеров "клещи" происходят на разных платах достаточно часто

Вилка застряла в гнезде.
Вилка застряла в гнезде.

И тут вам никакие знания алгоритмов и абстрактных структур данных не помогут, чтобы починить изделие и продолжить работу. Можно задавать в качестве вопроса для собеседования при приеме на работу на должность "программист микроконтроллеров". Как извлечь клеща (отломанную вилку)?

1
23 ...

Information

Rating
303-rd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Инженер встраиваемых систем, DevOps-инженер
Старший
Git
Bash
CI/CD
C
Встраиваемая система
Программирование микроконтроллеров
Разработка программного обеспечения
Алгоритмы и структуры данных
Системное программирование
Разработка драйверов