Самодельный передатчик (часть 1)
Я так и не понял по коду - в какой момент _должен_ запускаться таймер и как его можно (и можно ли) принудительно остановить, чтобы не тикало.
по евгению
таймер запускается принажатии esc и up
останавливатся по esc и down
if ((m[1][0]==0)&&(!esc)&&(!up)&&(tm1!=0)){b_tm=1;} //включение таймера
if ((esc==0)&&(down==0)&&(b_tm==1)){tm2=0;b_tm=0; beeper=0; tm1=time;} //выключение таймера
щас гляну ваш код ,далеко не уходите 😉
про 14000 это инециализационное значение если его не поменять то первая посылка после включения будет не правильная!короткая…
в принчепе ничего страшного но для полядка поставте туда 19000
по евгению
таймер запускается принажатии esc и up
останавливатся по esc и downif ((m[1][0]==0)&&(!esc)&&(!up)&&(tm1!=0)){b_tm=1;} //включение таймера if ((esc==0)&&(down==0)&&(b_tm==1)){tm2=0;b_tm=0; beeper=0; tm1=time;} //выключение таймера
Если верить этому коду, ТО (!esc)&&(!up) означает что кнопки НЕ нажаты, а вот (esc==0)&&(down==0) - как раз нажаты, и вроде как мне пару раз этой комбинацией удалось остановить таймер. но только пару раз 😦
щас гляну ваш код ,далеко не уходите 😉
про 14000 это инециализационное значение если его не поменять то первая посылка после включения будет не правильная!короткая…
в принчепе ничего страшного но для полядка поставте туда 19000
Ок, это поменял , я сейчас параллельно это в VMLAB кручу. У меня длительность канального импульса получается 104.6us , а пауза между импульсами - 406.7us , это правильно?
Если верить этому коду, ТО (!esc)&&(!up) означает что кнопки НЕ нажаты, а вот (esc==0)&&(down==0) - как раз нажаты, и вроде как мне пару раз этой комбинацией удалось остановить таймер. но только пару раз 😦
одно но focus кнопачками на землю ножки коротит!!!
значит эти ножки подтянуты внутренними резисторами к плюсу и пока я не нажму на ноге будет “1”, а когда нажму то “0” а записи типа
(!esc)&&(!up)
и
(esc==0)&&(down==0)
равнозначны и обе говорят если 0 то отдать истину
Ок, это поменял , я сейчас параллельно это в VMLAB кручу. У меня длительность канального импульса получается 104.6us , а пауза между импульсами - 406.7us , это правильно?
там всё есть 😋
www.rcmaster.ru/club/glider/…/index.shtml
а записи типа
(!esc)&&(!up) и (esc==0)&&(down==0)
равнозначны и обе говорят если 0 то отдать истину
Значит мне в моём случае надо поправить это под GCC, спасибо, щас сделаю.
Voprosik, a shemka Focus’a na atmega128 takajazhe ilji 4toto drugoje? Kakto njenashol v etoi vetke na 128, jestj toljko na Atmega 64.
Voprosik, a shemka Focus’a na atmega128 takajazhe ilji 4toto drugoje? Kakto njenashol v etoi vetke na 128, jestj toljko na Atmega 64.
по евгению
таймер запускается принажатии esc и up
останавливатся по esc и downif ((m[1][0]==0)&&(!esc)&&(!up)&&(tm1!=0)){b_tm=1;} //включение таймера if ((esc==0)&&(down==0)&&(b_tm==1)){tm2=0;b_tm=0; beeper=0; tm1=time;} //выключение таймера
щас гляну ваш код ,далеко не уходите 😉
Проверил - по esc + down таймер останавливается, но ненадолго, проходит какое-то небольшое время и таймер САМ стартует с последним значением, стартовать таймер по esc+up у меня так и не вышло.
С того момента как поменял все переменные в сторону увеличения у меня таймер вообще никак не стартует. Без JTAG отладить никак не получается, буду ждать когда посылка приедет с JTAG для AVR.
Большое спасибо за консультации и вообще за участие.
Персональное спасибо Евгению за его работу.
Мне кажется что для универсального пульта будет оптимально иметь два ползунка, две крутилки, 4-6 трехпозиционных тумблеров и 2 двухпозиционных. Ну и ручки само собой. Кто нить прокомментирует?! 😉
Для вертолета по-моему желательно иметь три крутилки, они помогают настраивать висение. А вот про ползунки не подскажу - в самолетах не шарю. На валкере есть ползунки (по бокам, под указательные пальцы), но они банально не задействованы. Есть и еще один переключатель незадействованный.
Фотки чуть позже сделаю.
а ссылочку на что-то подобное? в частности на софтверный USB-лоадер, для примера.
Всему свое время. В данном случае это время пришло: вот ссылка на список проектов, базирующихся на открытом avr-usb драйвере от Objective Development. Сегодня утром там опубликованы новые проекты, в том числе два USB загрузчика.
Один из них - мой с поддержкой AES шифрования (компилятор IAR). Я все же решил его опубликовать КАК ЕСТЬ (без поддержки). Он не является законченным проектом для повторения, хотя в опубликованном виде он у меня работает на тестовой плате на базе ATmega32 (для 64/128 его придется модифицировать, но ход пока не дошел). Исходники утилит для PC (особенно утилита загрузки) выглядят отвратительно, поскольку это был хак чужого кода на скорую руку для проверки работы, собственно, бута. Претензии по стилю программирования не принимаются. Исходник самого бута для ATmega32 написан мной самим (не считая AES) и достаточно подробно прокомментирован в самом тексте. Этого хватит для того, чтобы сделать свой вариант под свои нужды. Я не поддерживаю этот проект, но готов попробовать ответить на конкретные вопросы (а не общие типа “почему это все не работает”).
Второй загрузчик использует библиотеку поддержки boot от GCC, прост и элегантен. Он пригоден для зашивки в бут блок ATmega8/48/88/168 и т.п. Для работы требует установку libusb драйвера на хост. Я его не проверял (он только сегодня появился). Если не требуется наворотов, то этот бут должен быть весьма хорош.
Сам драйвер обновился 26.06.2006. Из полезных нам фич есть поддержка дополнительных точек USB и возможность использовать любые пины порта для D+/D-, а не обязательно нулевой бит. Это крайне полезно для поддержки USB, например, в контроллере AT90PWM3. До сих пор я не видел возможности сделать в нем конфигурирование по USB из за занятости нулевых пинов другими аппаратными функциями, но теперь это вполне возможно.
В общем, дерзайте!
PS. На базе данного USB драйвера мной написан ради интереса свой вариант прошивки RC USB адаптера для схемы, приведенной в статье на данном сайте. В отличие от опубликованного, этот вариант написан на C (среда и компилятор IAR, 30-дневная версия доступна бесплатно с их сайта) и имеет открытый исходный код в соответствии с лицензией на avr-usb. Модульная (выбор на этапе компиляции) структура позволяет включать произвольный входной интерфейс (PPM декодер, встроенный ADC, различные варианты PCM и т.п.) и произвольный выходной кодер (стандартный джойстик, специальные интерфейсы для популярных симуляторов, выход на серво-тестер и т.п.). Я не приветствую публикации только прошивок для устройств, выкладываемых для публичного повторения, без исходников. Потому готов выложить исходники данного проекта. Есть только один нюанс: у меня нет собранной схемы, приведенной в той статье, я экспериментировал на своем собственном железе. Потому нужен доброволец (один), кто согласен проверить работу прошивки на собранном по той схеме устройстве и подтвердить ее работоспособность. После чего исходник будет опубликован. Только не обещаю, что сделаю это в течение 1-2-n дней, так как хотелок много, а времени мало. По мере возможности.
Размер кода в варианте PPM/Joystick - окодо 2.5 килобайта, что оставляет даже место в меге8 для USB загрузчика, что удобно тем, у кого нет своего программатора. Достаточно зашить раз загрузчик, после чего свободно экспериментировать с кодом приложения, зашивая его по тому же USB.
У меня опять проблема: Не работают в версии на атмега 16 дополнительные переключатели. Только 7 канал. Не двойные расходы, не тротел кут, ни 5 канал… 😊 Может подскажете в чем дело? Все остольное фунцыклирует прекрасно…
Поздравляю, Женя! Пожалуй надо исходники спрятать и по мылу выдавать желающим 😃 А то глядишь через полгода узкоглазые братья новый бренд откроют! 😃
Всяческие респекты тебе Евгений! Очень уважаю и жму руку!
Куда поступать после школы будешь?
Потому нужен доброволец (один), кто согласен проверить работу прошивки на собранном по той схеме устройстве и подтвердить ее работоспособность. После чего исходник будет опубликован. Только не обещаю, что сделаю это в течение 1-2-n дней, так как хотелок много, а времени мало. По мере возможности.
Вполне готов проверить, высылай прошивку.
А есть ли нормальная схема кодера на 128меге? Тоже хотел собрать кодер Евгения но схемы удобочитаемой не нашел.
скоро будет… и описание тоже. просто не успел еще…
Всяческие респекты тебе Евгений! Очень уважаю и жму руку!
Куда поступать после школы будешь?
Спасибо! А поступаю в наш местный политех… 😃
TO FOCUS :
Женя поздравляю!!! так держать! Вечных тебе мягких посадок!!!
самик ты неплохо разложил, сочувствую…
Вопрос такой появился, в исходнике у тебя написано
//Зуммер
#define BUZ PORTG.6
не могу понять, в дашите сказано что портов G всего 5 (0-4)
далее в прошивке
void BEEP (void)
{
if (sound)
{
PORTG|=0x4;
delay_ms(50);
PORTG&=0xFB;
delay_ms(50);
}
на какой ноге пищалка получаеться? не на PORTG.4 ?
вот сваял схемку SpL4.0 (ноги по описанию в прошивке) мож пригодиться кому 😉, вариант не окончательный, сигнал на пищалку пока не выведен…
//Зуммер
#define BUZ PORTG.6
эту строчку вообще удалить можно… она не используется…
а пищалка подсоединена к PORTG.2 0x4=0b00000100
Привет всем!
Огромная благодарность Жене!
Уже собрал кодер. Чето работает но нужно описание.
Уже увидел калибровку джойстиков, настройку кривых.
Мое мнение - необходимо сразу иметь начальные значения констант в памяти, а то при первом включении ППМ мертвый.
Также в файл def.c вынести и назначение каналов АЦП.
Кол-во символов при наборе имени модели - излишне, или там вообще какойто мусор. Довольно таки много времени тратится на поиск необходимой буквы.
Так же надо както обозначить процесс выбора в меню и процесс набора в меню.
А в общем - Женя молодец! Спасибо!
Схема по которой я собирал кодер:
Описание делается. Почти готово. Также пишутся апгоейды. Уже добавил настройку кол-ва каналов в PPMе (от 2 до 8). И сброс по первому включению сделаю. Придумал как, но еще не успел воплотить в жизнь.
Кол-во символов при наборе имени модели - излишне, или там вообще какойто мусор. Довольно таки много времени тратится на поиск необходимой буквы.
Можно отавить одни заглавные или прописные буквы. Сделать? А мусор - только до сброса. Вообще прокрутка начинается с символа пробел.
Так же надо както обозначить процесс выбора в меню и процесс набора в меню.
Немного не понял…
с Def.c разберусь.
PS посоветуйте простенький параллельный программатор.Я прошил мегу8 один раз, а на второй она мне поазала комбинаци из трех пальцев. Решил адаптер джостика собрать. Еще и проц в дипе. 😦 Мало того, что здоровый, так еще и приказал долго жить. Вчера сидел читал даташит по параллельному программированию. Так там расписан алгоритм. Может его зашить в другой проц и им разлочить мегу?
Можно отавить одни заглавные или прописные буквы. Сделать? А мусор - только до сброса.
Сделаешь сброс - тогда посмотрим. Как по мне - то нужны только прописные , заглавные, циферки и пару разделителей ( пробелов, звездочек…)
Так же надо както обозначить процесс выбора в меню и процесс набора в меню.----- чтобы поменять значение в некоторой позиции - надо подвести курсор к позиции и нажать “право” ( или “ОК”) и тогда появляется возможность чтото менять в выбранной позиции. Так вот нажатие “ОК” - никак не отображено ( никак не меняет эту позицию)… Т.е. невидно была нажата кнопка “ОК” или еще нет.
Странно но у меня нет кнопки правка…
Тут более информативная схема