Пульт для симуляторов

Shinshilla

Приобрёл пульт Киошо, а найти в нём сигнал РРМ не смог, родной микроконтроллер со стёртой маркировкой с платы срезал. Думаю запрограммировать ATtiny13A, 4 АЦП и один цифровой вход - больше и не надо. Может кто подскажет самый лёгкий путь?

ADF

Еще как вариант: есть проект OpenTX - прошить им ардуину и всунуть туда.

RW9UAO

руки ломать этими стиками…
летайте на своем пульте, руки привыкают под пульт.

ADF
RW9UAO:

руки привыкают под пульт.

Вот именно! Поэтому когда передатчики разные, рукам становится уже без разницы, чём и на чём - мозг мгновенно адаптируется.

RW9UAO

Саша, ну посмотри на это изделие… у меня слезы текут. какой симулятор?

Shinshilla

В руках этот пультик мне показался очень удобным, потому его и купил по дешёвке. Летаю на Оптике, для симулятора использую Ескай 0404, эту Киошо хочу использовать на работе. А заодно и вспомнить электронно - программную молодость. Пока изучаю КодеВизион АВР. Но идёт туговато.

ADF
RW9UAO:

Саша, ну посмотри на это изделие… у меня слезы те…

Какая разница? Главное, чтобы четыре потенциометра былы в джойстиках и чтобы сами ручки не люфтили. Этого достаточно.

RW9UAO

ладно уговорили. атини13 это жестоко.
опросить последовательно 4 АЦП, пока идет РРМ пауза. заполнить 4ре переменные длительностями 1000-2000 мс из отсчетов АЦП. по прерыванию таймера формировать импульсы. не забывая про 300мс паузы =)

Shinshilla

Общая стратегия понятна, а вот как бы побыстрее практические инструменты освоить…

Shinshilla

ADCSRA|=(1<<ADIF)
CLKPR=(0<<CLKPCE) | (1<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
Как понять такие заклинания в CodeVisionAVR?
В скачанных с сайта разработчика Getting Started и User Manual нет описания, может кто даст толковую ссылку.

V_Alex

Это не заклинания. Нужно смотреть даташит на конкретный контроллер.
Слева от вертикальной черты идет название регистра микроконтроллера.
Справа - названия битов и состояние, в которое их нужно установить.
Лучше сразу настроиться на то, что быстро разобраться не получится.

Shinshilla

Заклинаниями я в шутку называю строки в программах.
А чтобы разобраться нужно иметь описание применяемой в CodeVisionAVR разновидности С.
Пока найти не могу…

V_Alex

Открываете даташит на контроллер, например - Attiny13a, находите раздел Register Summary. Там есть таблица с названиями регистров, их привязка к адресам и разбивка по битам с указанием имени каждого бита.
Соde Vision, Си или Assembler используют именно эти названия.

ADF
Shinshilla:

Как понять такие заклинания в CodeVisionAVR?

Качаем ПДФ-ку на контроллер.

Распечатываем оттуда две с половиной вещи:

  1. Список регистров и карту памяти
  2. Список ассэмблерных команд

Потом все это выкидываем в мусорку, берем arduino nano и делаём всё на ней 😃

ps:
вообще, это логические операции и побитовые сдвиги с использованием содержимого регистров. Это иногда имеет смысл, если надо сделать быстрый как понос код, но обсуждаемая задача не требует от контроллера максимального быстродействия. Можно все в человекопонятных переменных решать, даже с плавающей точкой.

msv

Как понять такие заклинания в CodeVisionAVR?

Это не особенности CVR, обычный C.
ADCSRA|=(1<<ADIF)
В регистре ADCSRA (по сути, это обычная переменная с фиксированным адресом) устанавливается бит с порядковым номером ADIF. Остальные биты не меняются.
CLKPR=(0<<CLKPCE) | (1<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
В регистре CLKPR устанавливается бит CLKPS3, остальные сбрасываются.
Замечу, что вычисление значения делает прекомпилятор и в итоговой программе будет уже готовая константа.
Такая форма записи нужна исключительно для удобства программиста, более наглядна, чем просто число.

Dhole

Берём ардуину-нано, впихиваем в неё вот это, подтыкаем к компу и радуемся.

Цена вопроса триста рублёв.

1 month later
VVishen

Вот еще вариант для любителей STM32: хабр.
За пол часа напильником выпиливается анализ PPM и запускается ADC на 4 канала. В системе контроллер определяется как джойстик. Все работает.

2 months later
Shinshilla

Ардуины я купил для других целей. А Тину-13 хочу победить. Столкнулся с такой неприятностью: при входном напряжении меньше примерно 1/3 напряжения питания АЦП выдаёт нули во всех разрядах, потом работает “по теории”. Проверил три экземпляра. Может ли кто-нибудь сталкивался с похожими задачами?

1 month later