Закончил проект. За время работы, поменял deepseek-v3.2 на
deepseek-v4.1-flash-1017. Оказалось, что хоть и более свежий дороже
по токенам, работает эффективнее - меньше итераций размышлений,
меньше косяков. И, в итоге, половина рабочего дня - расход 130руб.
При этом сильно разгрузил на таких вещах, вроде переноса API
калибровки времяпролётного датчика расстояния из примеров ST и
Adafruit в "мой" код. Пишет подстраиваясь под мой стиль, по крайней
мере, если код хорошо комментирован - оставляет примерно такие же комментарии в своё творчество. Рассуждения точны, логичны. Из косяков - может забыть включить модуль DMA, хотя всё остальное сделает превосходно. Может указать на несуществующую ошибку, которая оказывается не ошибкой, если глубже копнуть datasheet.
К коду напрямую прикасался редко - один раз - когда ИИ не понял, как применять SPAWN в протопотоках (в комплектных примерах не было, а так, из дефайна оператора - не очевидно). Другой раз когда не смог разобраться в указателях на блоки управления протопотоков в нескольких дефайнах, которые сам натворил вместо нормальных функций. Но всё было прилично, логично, компактно - без оверхедов в рантайме.
Научил его прошивать и отлаживать. Очень здорово делает отладку, выгрузку результатов и их систематизацию. Например, делает несколько прогонов отладки и обнаруживает, что некоторые отсчёты значения датчика расстояния - 0xFFFF - бъёт тревогу сам, давая сводную таблицу - дескать, в этом заходе было столько-то сбоев, в этом - столько-то. И даже предполагает причину - говорит, у тебя шум на входе прерывания. Проверяю осциллографом - точно, выход прерывания датчика очень слабенький и хватает наводку с соседнего проводка.
И самое полезное было - он разобрался в недокументированном механизме калибровки датчика по исходникам от ST и Adafruit. Сделал оценки, помог найти причину неадекватных данных калибровки засветки (была недостаточно большая площадь серой мишени).
За 15 минут (в основном, потому, что я отвлекался по ходу на другие задачи, на самом деле работы ИИ было на 3-5 минут - предложил на выбор выход для ШИМ. Запрограммировал на нужную мне разрядность и частоту. Написал функции инициализации и установки заполнения. Объяснил ему, от каких параметров и как менять ШИМ - всё встроил. Он даже буферизирует волатильные переменные для ускорения обработки - как я его ранее учил и просил записать на память в специальном файлике - для будущих сессий. Говорят, это называется harness - упряжь.