Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: STM32f4xx + USB CDC + StdPerph

Чт июл 19, 2018 13:31:12

Всё понимаю, кроме "перегрузить МК". У вас на нём windows, что его перегружать надо?


Ну, то есть, вы не представляете себе ситуации, когда контроллер надо сбросить нажатием одной кнопки, предварительно не сворачивая приложение (игру) и не отключая (а потом - снова включая) соединение в OpenTrack? Я вот с таким сталкивался.

До того, как начать изучать STM, я сделал самопальный трекер на ардуине нано. Он прекрасно справлялся со сбросом в процессе работы (обмен начинался опять, OpenTrack не зависал). Взявшись за STM, я решил повторить трекер на новом МК, ибо это обещало быть интересным в плане обучения(I2C, FLASH, прерывания таймера, аппаратный USB). И вот, столкнулся с описанной проблемой.

Мой вопрос заключается в том, можно ли вообще такое реализовать на STM. И если можно, то как. Ежели таки нельзя (а у меня стойкие подозрения, что таки можно), то буду думать, каким путем идти в обход.

Re: STM32f4xx + USB CDC + StdPerph

Чт июл 19, 2018 15:24:03

Елы палы, у вас на ардунье был отдельный чип, который отвечал за USB. Похоже, вы сбрасывали контроллер, но не сбрасывали CH340G. Связь по USB не прерывалась.
На STM вы разрываете USB-соединение когда ресет нажимаете.

Re: STM32f4xx + USB CDC + StdPerph

Чт июл 19, 2018 18:13:57

Мда, не "догнал". Похоже на правду.
При нажатии кнопки CH340G продолжал общение с хостом, так как питание на него было подано, а нога сброса на нем, если верить схеме нано, "висит в воздухе". При сбросе по питанию ардуина тоже глохла намертво, НЯП. Также приходилось останавливать обмен, перезагружать кнопкой и стартовать.
К сожалению, нет ардуины под рукой, чтобы проверить... Но все логично.

Спасибо.

Выходом будет, пожалуй, только "имитация" сброса МК, в виде сброса в ноль части переменных и сброса центровки трекера. Ну, или повесить что-то вроде CH340G на USART STM-ке (что правильнее, так как тогда можно будет "безопасно" рестартить МК "по-настоящему").

Если вернуть жесткую подтяжку Data+ к +3.3В через резистор, то хост не заметит, что устройство при сбросе отключилось от шины. Может, это можно как-то использовать?

Re: STM32f4xx + USB CDC + StdPerph

Чт июл 19, 2018 18:36:39

Если вернуть жесткую подтяжку Data+ к +3.3В через резистор, то хост не заметит, что устройство при сбросе отключилось от шины. Может, это можно как-то использовать?

Если где-то сохранить адрес, полученный при энумерации, то можно попробовать установить нужную конфигурацию порта после перезагрузки. Скорее всего даже будет срабатывать, через раз.

И всё же, зачем ресетить контроллер? Что делает ресет, чего нельзя сделать просто реагируя на внешнее воздействие на любую ногу? Что-то в консерватории надо менять!

Re: STM32f4xx + USB CDC + StdPerph

Чт июл 19, 2018 19:02:47

Вы имеете ввиду, что при возникновении нештатных ситуаций следует искать причину в коде и железе, а не контроллер ресетить? )))
Ответить