
на досуге удалось запустить скетч на DDS генераторе сигналов и реальной MCP4725 (удивительно, нашлась в коробке с алишным хламом), запущено на UNO R3
Каналы:
желтый - генератор
синий - выход DAC
пурпурный - добавил в скетч состояние проверки r>=60 (ну собственно если проверка true то на выходе имеем тоже самое что на входе, иначе на maf идет уменьшенный уровень)
итак, проблемные места (пометил красной стрелкой) которые показывают насколько непредсказуемо срабатывает режим "обогащение", изза 300 миллисекундной проверки
1) казалось бы чем тут хуже чем обогащение за 500 мс до этого
2) аналогично, ожидал увидеть срабатывание пораньше (типичная история)
3) зачем идет удержание высокого уровня на уменьшении Din вообще непонятно
4) аналогично п.1 и п.2
также где впадина у стрелки 2 виден небольшой "рост" и выход снова дублирует вход - это сработало условие case default (Din < 1.17V) наверно лайфхак чтобы не ломался ХХ
по поводу case отдельная осциллограмма с выключенным "обогащением", чтобы понимать - до 1.17 коррекции нет, далее от 1.17 до 1.42 идет коррекция "малая (Dout=(Din-Din/22)*4)", потом коррекция "сильная Dout=(Din-Din/16)*4"

другой скрин где показаны аналогичные переломы при этих напряжениях (каналы чуток раздвинуты для наглядности):

ну и вишенка на торте: там где стрелка я просто закоротил кратковременно SDA на землю, отчего DAC запросто захватил нулевые биты и показания ушли на дно, что запросто может триггерить ошибку P0102 не по таблицам ожидаемого расхода а по глобальным рамкам диагностики (например всё что ниже 0.5в считается безусловной ошибкой)

ну и надо понимать что неответ от DAC (именно в рантайме когда ответы до этого были) в большинстве случаев приводит к тотальному зависанию Arduino до следующего резета или выключения питания. Да-да расскажите мне что watchdog не нужен
По итогу только подтвердились вопросы и темные пятна:
1) где перерасчет 037-116, если тут тупо переключатель из трёх коэффициентов (один из которых равен 1:1)?
2) где, блин, интерполяция
3) почему виснет
4) ну и самое главное зачем всё это нужно было, а именно занижать дмрв в обычном режиме езды, я думал он пришпоривает, а тут толком и этого нет.