Хотел бы предложить для стационарного варианта трансивера по возможности избавиться от многофункциональных кнопок.
Хотел бы предложить для стационарного варианта трансивера по возможности избавиться от многофункциональных кнопок.
Спасибо от stari4ok
Вот если прислушаются к Геннадию, и будут делать на H7 у которого 144 ноги , то там можно наворотить кнопок много...
Там можно еще красиво 4 энкодера посадить на таймеры, прилепить большой экран в 16 битном режиме через FSMC контроллер, и много много чего, о чем я даже не догадываюсь :-) Но это будет уже действительно стационарный Маламут :-)
Смысла валкодеры на таймеры сажать нет. Смысла ограничиваеть себя в производительности, а у h7 она примерно в четыре раза выше чем у f4 на DSP задачах, не понимаю. Цена не радикально отличается, архитектура та же самая... Начав нормально раскладывать функции по периферии выясняется что АЦП на которые можно кнопки проделать не так много остаётся.,. Или предлагаете порт-кнопка? Или матрицу со сканированием?
Последний раз редактировалось Genadi Zawidowski; 24.04.2018 в 18:54.
Если брать большой камень, то порт-кнопка вполне нормальное решение, проц не отвлекается на сканы и опросы, да и помех от сканирования не будет. Только проводов много.
Спасибо от ur7hfo
Посмотрите на m0nka. Чем кончилось...
А чем? вроде бы в последней версии, из тех что я видел - там именно так и сделано, кнопка-порт (схема "ui_a_front.pdf" ). Я правда за m0nka не следил, так, поглядывал...
А почему бы и нет ? просто и понятно.
По поводу энкодер-на таймер, я не специалист, но в монке писали что энкодер тупит в ряде случаев на новых прошивках, потому что он там весьма криво реализован. А через специальные каналы захвата таймеров, работает инкрементальный энкодер очень хорошо, нагрузка на цпу минимальная.
По поводу rts & dtr линий, спасибо что натолкнули на мысли, у меня заработала такая конструкция
Код:case CDC_SET_CONTROL_LINE_STATE: // we get wValue here as buffer (rts & dtr) // wValue = *(uint16_t *)&(pbuf[0]); // <<=== ERROR ! Тут немец сделал ошибку :-) :-) wValue = pbuf[2]; // <<=== Тут правильно, информация о состояниях dtr rst передается в 3 байте cdcvcp_ctrllines.dtr = (wValue & 0x01)?1:0; cdcvcp_ctrllines.rts = (wValue & 0x02)?1:0; break;
Это кусок из монки , там я кстати и нашел ошибочку, 100 процентов в последних версиях монки манипуляция через RTS и DTR не работает.
Вот ссылка на оригинал - https://github.com/df8oe/UHSDR/blob/.../usbd_cdc_if.c
Когда надо не один а два или три валкодера на всех не хватит выводов таймеров. Не все они работают в квадрвтурном режиме. Окажется что нужны выводы для подключения кодеков или SD карты. Килогерц...два в режиме со вложенными прерываниями вполне обрабатывается. Т.е. 4 кГц или реже прерывания от кодека прерываются произвольно наступающими изменениями состояний выводов на валкодере. Да и тащить к клавиатуре два или три десятка проводов странно,.. Не очень большой разъём удобнее ставить. Обратите внимание на способ кнопки на АЦП.
Спасибо от ur7hfo
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)