всяком случае для меня)
                  
                  
                  
                  
                  
                  Дело вот в чём - написал я код для общения с 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 смотришь 🙂
Обсуждают сегодня