Пульт для симуляторов
Еще как вариант: есть проект OpenTX - прошить им ардуину и всунуть туда.
Может кто подскажет самый лёгкий путь?
Самый легкий путь: robot-kit.ru/…/p1284_Modul-6-kanalnyi-PPM-koder--R…
руки ломать этими стиками…
летайте на своем пульте, руки привыкают под пульт.
руки привыкают под пульт.
Вот именно! Поэтому когда передатчики разные, рукам становится уже без разницы, чём и на чём - мозг мгновенно адаптируется.
Саша, ну посмотри на это изделие… у меня слезы текут. какой симулятор?
В руках этот пультик мне показался очень удобным, потому его и купил по дешёвке. Летаю на Оптике, для симулятора использую Ескай 0404, эту Киошо хочу использовать на работе. А заодно и вспомнить электронно - программную молодость. Пока изучаю КодеВизион АВР. Но идёт туговато.
Саша, ну посмотри на это изделие… у меня слезы те…
Какая разница? Главное, чтобы четыре потенциометра былы в джойстиках и чтобы сами ручки не люфтили. Этого достаточно.
ладно уговорили. атини13 это жестоко.
опросить последовательно 4 АЦП, пока идет РРМ пауза. заполнить 4ре переменные длительностями 1000-2000 мс из отсчетов АЦП. по прерыванию таймера формировать импульсы. не забывая про 300мс паузы =)
Общая стратегия понятна, а вот как бы побыстрее практические инструменты освоить…
ADCSRA|=(1<<ADIF)
CLKPR=(0<<CLKPCE) | (1<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
Как понять такие заклинания в CodeVisionAVR?
В скачанных с сайта разработчика Getting Started и User Manual нет описания, может кто даст толковую ссылку.
Это не заклинания. Нужно смотреть даташит на конкретный контроллер.
Слева от вертикальной черты идет название регистра микроконтроллера.
Справа - названия битов и состояние, в которое их нужно установить.
Лучше сразу настроиться на то, что быстро разобраться не получится.
Заклинаниями я в шутку называю строки в программах.
А чтобы разобраться нужно иметь описание применяемой в CodeVisionAVR разновидности С.
Пока найти не могу…
Открываете даташит на контроллер, например - Attiny13a, находите раздел Register Summary. Там есть таблица с названиями регистров, их привязка к адресам и разбивка по битам с указанием имени каждого бита.
Соde Vision, Си или Assembler используют именно эти названия.
Как понять такие заклинания в CodeVisionAVR?
Качаем ПДФ-ку на контроллер.
Распечатываем оттуда две с половиной вещи:
- Список регистров и карту памяти
- Список ассэмблерных команд
Потом все это выкидываем в мусорку, берем arduino nano и делаём всё на ней 😃
ps:
вообще, это логические операции и побитовые сдвиги с использованием содержимого регистров. Это иногда имеет смысл, если надо сделать быстрый как понос код, но обсуждаемая задача не требует от контроллера максимального быстродействия. Можно все в человекопонятных переменных решать, даже с плавающей точкой.
Потом все это выкидываем в мусорку, берем arduino nano и делаём всё на ней
Золотые слова. Даже думать не надо, просто повторить. Так например ianjohnston.com/…/55-project-019-rc-joystick-tx-v2, или так ianjohnston.com/…/54-project-018-rc-ppm-trainer-po… .Сам так сделал 😃
Как понять такие заклинания в CodeVisionAVR?
Это не особенности CVR, обычный C.
ADCSRA|=(1<<ADIF)
В регистре ADCSRA (по сути, это обычная переменная с фиксированным адресом) устанавливается бит с порядковым номером ADIF. Остальные биты не меняются.
CLKPR=(0<<CLKPCE) | (1<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
В регистре CLKPR устанавливается бит CLKPS3, остальные сбрасываются.
Замечу, что вычисление значения делает прекомпилятор и в итоговой программе будет уже готовая константа.
Такая форма записи нужна исключительно для удобства программиста, более наглядна, чем просто число.
Берём ардуину-нано, впихиваем в неё вот это, подтыкаем к компу и радуемся.
Цена вопроса триста рублёв.
Вот еще вариант для любителей STM32: хабр.
За пол часа напильником выпиливается анализ PPM и запускается ADC на 4 канала. В системе контроллер определяется как джойстик. Все работает.
Ардуины я купил для других целей. А Тину-13 хочу победить. Столкнулся с такой неприятностью: при входном напряжении меньше примерно 1/3 напряжения питания АЦП выдаёт нули во всех разрядах, потом работает “по теории”. Проверил три экземпляра. Может ли кто-нибудь сталкивался с похожими задачами?
Победил!