Самодельный передатчик (часть 2)
Ну поставьте себе кодевижин.
Ага:). И создайте тему, ЧТО изменить, и КАК откомпилировать:). Понятно, для програмистов это “два тыка в клаву”, и “да там всё интуитивно понятно”. Не примите за претензию, всё нормально. Это издержки популярности кодера.
Офф:
Всегда поражался людям, которые на многое способны на “стыке” двух, а то и больше, дисциплин. Как тут- и в моделях надо шарить, и в программировании, у создателей ЭМИ, и музыкантом надо быть, и электронщиком, и тд.
Напишите мне в личку вашу почту, версию прошивки и желаемое значение контрастности ( в прошивке ), я переделаю и вам пришлю.
И создайте тему, ЧТО изменить, и КАК откомпилировать
На такие вопросы с удовольствием в личке отвечу (или в icq). Может не всегда быстро получится, но обычно около полуночи заглядываю. Я не наезжал, я лишь пытаюсь сподвигнуть установить кодевижин и попытаться поменять пару циферок самому. Это действительно не сложно, интересно и увлекательно. Программистом быть вовсе не обязательно. Попробуйте! Ведь приятно летать на аппе, которая сделана “под себя!” А хотябы по мелочи, но изменить всегда что-то хочется. Кому-то буквы не нравятся, кому-то просто в другой угол экрана передвинуть что-то хочется. Кому-то лишний пункт в меню мешается.
З.Ы. В кодевижин есть все. И редактор, и компилятор, и программатор. Все действо - одной кнопкой “откомпилировать” и прога уже исполняется в вашем передатчике.
А вот кодевижин-то чтоб поставить или денюжку платить придется или воровать. Не GCC чай.
Дык, возьми и спортируй исходники на GCC.
Респект тебе будет и уважуха!
Кто мешать станет - мне скажи. Я его прокляну средним сиротским проклятием…
или денюжку платить придется или воровать.
Ну первое мы как-то не привыкли:(. Поставил. Скачал русскую книжку. Не, я уж как-нить откалибрую и настрою, а потом вообще отрежу дисплей.
Портировать проект это было бы сильно. “Не имеет аналогов в мире.” Короче долго,трудозатратно и бесполезно,извините.
Разобрался, ставил также от 3210, все работает. По 1к резисторах на SPI и на питание резисторный делитель в виде подстроечника на 4.7ком + следом конденсатор 4.7мкф, без него бывал старт с искажениями.
Контрастность меняется в широких пределах, менять что либо в прошивке отпала нужда.
Тем не менее, полез в компиляторные дебри и тоже все получилось, работает. Но возник маленький вопрос. Размер хекса на выходе чуть больше, чем оригинальный хекс.
От чего это зависит? Или перефразирую вопрос - это нормально?
Компилятор CodeVisionAVR V2.04.4a
Скорее всего, да. Многое зависит от версии CodeVision и настроек.
А можно ли непосредственно в HEXе кодера поменять значение контрастности?
Короче полез я в эти дебри:). У меня есть два хекса под 3410 с разной контрастностю. При помощи WinHEX открыл оба, и нашёл отличающиеся ячейки. Но их там по две оказалось. Причем в прошивке с более низкой контрасностью значение одной меньше чем в более контрастной, а в другой ячейке больше. Взял и добавил-убавил по единичке. Дудки:). Даже не стартует. Впрочем, этого стоило ожидать.
ну вторая видимо чексумма, ее необходимо рассчитывать заново. программатор разве не ругался?
программатор разве не ругался?
Лошади матом не умеют. Понипрогу что, шо засунул, то он и зашил.
В процессе эксплуатации появились предложения по улучшению программы - хочется услышать другие мнения о них:
- Уменьшить скорость изменения триммеров и ( или ) сделать остановку в изменении на 0,5 сек в нейтральном положении
триммера - чтобы точнее его выставить. - Указатели триммеров можно сделать в 4 пикселя высотой - лучше заметно.
3.Может быть стоит немного изменить логику меню " Curve " : столкнулся с ситуацией, когда в режиме “free” пытался войти
в режим корректировки кривой, на “автомате” нажал кнопку “ВПРАВО” - и сбросилась вся моя кривая! Так как у меня все
изменения сохраняются сразу ( без возможности отмены ), пришлось спасать данные выключением питания…
Если сделать 2 пункта меню " Curve " - “Free” и “Standart” , и выбрав кнопкой “ВПРАВО” дальше редактировать кривую,
при этом , желательно сохранить значения и в “Free” и в “Standart”, чтобы можно было переключаться между ними.
В процессе эксплуатации появились предложения по улучшению программы - хочется услышать другие мнения о них:
- Уменьшить скорость изменения триммеров и ( или ) сделать остановку в изменении на 0,5 сек в нейтральном положении
триммера - чтобы точнее его выставить
Уменьшать, думаю, не надо. А к паузе - я, пожалуй, присоединяюсь.
Можно, наверное, не делать паузу, а после выдачи “бипа” о том, что триммер пришел в нейтраль пропустить следующие N нажатий на триммер без изменения значения (как вариант - пропустить N нажатий в том же направлении регулировки). Если триммер отпустили или направление изменилось - сбросить счетчик N.
P.S. Вскрыл вчера нерабочую оптическую мышку (дешевейшую!..) - а в ней на колесике валкодер с кликами. Как мне его захотелось (вместо кнопок вверх и вниз)!..
А ведь есть еще и мышки, у которых колесо можно прижимать вправо-влево.
P.P.S. Только управление таймером (пуск-стоп-ресет) при этом надо на отдельную кнопку отсадить. Или управлять им по трем…пяти кликам колеса подряд - чтобы случайным задеванием не запускать и не сбрасывать.
3.Может быть стоит немного изменить логику меню " Curve " : столкнулся с ситуацией, когда в режиме “free” пытался войти
в режим корректировки кривой, на “автомате” нажал кнопку “ВПРАВО” - и сбросилась вся моя кривая! Так как у меня все
изменения сохраняются сразу ( без возможности отмены ), пришлось спасать данные выключением питания…
Если сделать 2 пункта меню " Curve " - “Free” и “Standart” , и выбрав кнопкой “ВПРАВО” дальше редактировать кривую,
при этом , желательно сохранить значения и в “Free” и в “Standart”, чтобы можно было переключаться между ними.
Поддержу идею ,сам сталкивался с етим при настройке кривых шаг -газ вертушки!
…Покрутил валкодер из мышки. Прикольная конструкция!
Три ноги (два канала и общий).
Сначала чуть мозги не вывихнул, отлавливая на каналах классические меандры, сдвинутые по фазе.
Потом заметил, что:
- Состояние одного из каналов меняется при повороте вала на 1 клик в любую сторону;
- Когда кручу вал по часам, то выходы каналов всегда равны (0 и 0 или 1 и 1). Против часов - всегда различны (0 и 1 или 1 и 0).
И все стало просто:
#define ChnA PIND.3
#define ChnB PIND.4volatile char CurrentValue=128, CurrEncC1, CurrEncC2, LastEncState;
void EncoderPoll (void) {
CurrEncC1 = ChnA;
CurrEncC2 = ChnB;
if (!( CurrEncC1 == LastEncState)) {
LastEncState = CurrEncC1;
if (CurrEncC1 == CurrEncC2) {
CurrentValue++;
}
else {
CurrentValue–;
};
printf(“%d (C1=%d,C2=%d)\r\n”,CurrentValue, CurrEncC1, CurrEncC2);
};
}
Опрашиваю энкодер раз в 5…10 мС.
Работает как часы; никакого дребезга.
Энкодеры очень просто обрабатывать - следишь за одним из выходов, когда на нем появляется переход в единицу, смотришь в каком состоянии в этот момент второй выход: если в единице - одно направление, если в нуле - другое 😃
Угу… Часа три следил по этому алгоритму. Прерывание на rise поставил. И по одному каналу пробовал, по второму. И задержки ладил (думал - дребезг какой). И значения осреднял. И фигушки.
Имел по два прерывания на клик.
И мало того - по одному каналу уровни кликов всегда чередуемые: если сейчас “0”, то на следующем клике будет “1”. А на очередном - опять “0”.
Ну как так может быть (по классическому алгоритму), чтобы по два фронта между кликами, а уровень на кликах - чередуемый?
У BOURNS’ов (если верить прочитанному) - клик по одному из каналов всегда в нуле. И да, между кликами всегда фронт (один…) и по второму каналу смотрим куда оно крутится. А в этом - нет.
Значит этот энкодер какой-то нестандартный… Надо было посмотреть осциллом по обоим каналам чередование сигналов 😃
Кстати! Если кто (в Москве…) хочет получить такой энкодер - велкам, поделюсь.
Сегодня на радостях обнес ящик с мусором у наших сисадминов - 6 таких мышей нарыл!
Пока только “оживляю”, и попутно инструкцию к нему читаю. cncfiles.ru/showp.php?id=9147
Просветите в таком вопросе: “значения триммеров через 30 секунд записываются…” и тд . Это значит, что при следующем включении ручка в нейтрали, а серва “уже учла” значение триммера? Или?