[uquote="VladislavS",url="/forum/viewtopic.php?p=3422057#p3422057"]Всё понимаю, кроме "перегрузить МК". У вас на нём windows, что его перегружать надо?[/uquote]
Ну, то есть, вы не представляете себе ситуации, когда контроллер надо сбросить нажатием одной кнопки, предварительно не сворачивая приложение (игру) и не отключая (а потом - снова включая) соединение в OpenTrack? Я вот с таким сталкивался.
До того, как начать изучать STM, я сделал самопальный трекер на ардуине нано. Он прекрасно справлялся со сбросом в процессе работы (обмен начинался опять, OpenTrack не зависал). Взявшись за STM, я решил повторить трекер на новом МК, ибо это обещало быть интересным в плане обучения(I2C, FLASH, прерывания таймера, аппаратный USB). И вот, столкнулся с описанной проблемой.
Мой вопрос заключается в том, можно ли вообще такое реализовать на STM. И если можно, то как. Ежели таки нельзя (а у меня стойкие подозрения, что таки можно), то буду думать, каким путем идти в обход.
STM32f4xx + USB CDC + StdPerph
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32f4xx + USB CDC + StdPerph
Елы палы, у вас на ардунье был отдельный чип, который отвечал за USB. Похоже, вы сбрасывали контроллер, но не сбрасывали CH340G. Связь по USB не прерывалась.
На STM вы разрываете USB-соединение когда ресет нажимаете.
На STM вы разрываете USB-соединение когда ресет нажимаете.
Re: STM32f4xx + USB CDC + StdPerph
Мда, не "догнал". Похоже на правду.
При нажатии кнопки CH340G продолжал общение с хостом, так как питание на него было подано, а нога сброса на нем, если верить схеме нано, "висит в воздухе". При сбросе по питанию ардуина тоже глохла намертво, НЯП. Также приходилось останавливать обмен, перезагружать кнопкой и стартовать.
К сожалению, нет ардуины под рукой, чтобы проверить... Но все логично.
Спасибо.
Выходом будет, пожалуй, только "имитация" сброса МК, в виде сброса в ноль части переменных и сброса центровки трекера. Ну, или повесить что-то вроде CH340G на USART STM-ке (что правильнее, так как тогда можно будет "безопасно" рестартить МК "по-настоящему").
Если вернуть жесткую подтяжку Data+ к +3.3В через резистор, то хост не заметит, что устройство при сбросе отключилось от шины. Может, это можно как-то использовать?
При нажатии кнопки CH340G продолжал общение с хостом, так как питание на него было подано, а нога сброса на нем, если верить схеме нано, "висит в воздухе". При сбросе по питанию ардуина тоже глохла намертво, НЯП. Также приходилось останавливать обмен, перезагружать кнопкой и стартовать.
К сожалению, нет ардуины под рукой, чтобы проверить... Но все логично.
Спасибо.
Выходом будет, пожалуй, только "имитация" сброса МК, в виде сброса в ноль части переменных и сброса центровки трекера. Ну, или повесить что-то вроде CH340G на USART STM-ке (что правильнее, так как тогда можно будет "безопасно" рестартить МК "по-настоящему").
Если вернуть жесткую подтяжку Data+ к +3.3В через резистор, то хост не заметит, что устройство при сбросе отключилось от шины. Может, это можно как-то использовать?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32f4xx + USB CDC + StdPerph
[uquote="serg_fs",url="/forum/viewtopic.php?p=3422214#p3422214"]Если вернуть жесткую подтяжку Data+ к +3.3В через резистор, то хост не заметит, что устройство при сбросе отключилось от шины. Может, это можно как-то использовать?[/uquote]
Если где-то сохранить адрес, полученный при энумерации, то можно попробовать установить нужную конфигурацию порта после перезагрузки. Скорее всего даже будет срабатывать, через раз.
И всё же, зачем ресетить контроллер? Что делает ресет, чего нельзя сделать просто реагируя на внешнее воздействие на любую ногу? Что-то в консерватории надо менять!
Если где-то сохранить адрес, полученный при энумерации, то можно попробовать установить нужную конфигурацию порта после перезагрузки. Скорее всего даже будет срабатывать, через раз.
И всё же, зачем ресетить контроллер? Что делает ресет, чего нельзя сделать просто реагируя на внешнее воздействие на любую ногу? Что-то в консерватории надо менять!
Re: STM32f4xx + USB CDC + StdPerph
Вы имеете ввиду, что при возникновении нештатных ситуаций следует искать причину в коде и железе, а не контроллер ресетить? )))