всяком случае для меня)
Дело вот в чём - написал я код для общения с tmc2209 драйвером по half duplex uart. Много возьни было с чтением, но в итоге работает.
Дальше вывел этот код в отдельное прерывание и думал что всё хорошо, но... не совсем.
Из софтового таски (использую RTIC) шлю запрос на чтение. И вот магия в том что:
1) приоритет софтовой таски должен быть выше чем у хардверной таски "коммуникатора"
2) закоменченный код должен быть разкоменчен, хоть он никем и не вызывается (это вот каким боком влияет, вообще не пойму) https://github.com/pronvis/drawer-robot/blob/software_serial/src/bin/minimal_x.rs#L106
(если одно из условий не выполняется, то ответ прочитан не будет)
код "конфигуратора": https://github.com/pronvis/drawer-robot/blob/software_serial/src/my_tmc2209/configurator.rs#L25
код "коммуникатора": https://github.com/pronvis/drawer-robot/blob/software_serial/src/my_tmc2209/communicator.rs
Буду оч благодарен за помощь, потому что совсем не понятно куда копать.
https://github.com/pronvis/drawer-robot/blob/software_serial/src/bin/minimal_x.rs#L106 а сюда оно вообще не должно заходить, для таймера же не включены прерывания
оно включается в коммуникаторе, в методе send
бардак, ну да ладно ) тогда тебе надо раскоментить последнюю строчку: cx.local.read_stepper_driver_state_timer.clear_interrupt(Event::Update);
не в тот bin смотришь 🙂
Обсуждают сегодня