Самодельный передатчик (часть 2)
Разобрался, ставил также от 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 секунд записываются…” и тд . Это значит, что при следующем включении ручка в нейтрали, а серва “уже учла” значение триммера? Или?
Да, учла, если успело записаться.
если успело записаться.
Понятно, спасибо.
Народ, а как заставить пищалку гудеть? При включении что-то должно быть? А то поставил, и мёртво…
Народ, а как заставить пищалку гудеть? При включении что-то должно быть? А то поставил, и мёртво…
Есть пищалки со встроенным генератором-запищит и от батарейки-и без-от постоянного напряжения не запищит-
а какая у вас версия схемы?- судя по вашему дисплею не последняя?
Вам нужно другую пищалку и проверить выход с платы на неё
Вам нужно другую пищалку
Какую? Стоит пьезик , без генератора. А прошивка… Самя в сях ноль, поделились под 3410. Пьезик надо с генератором, или без?
Какую? Стоит пьезик , без генератора. А прошивка… Самя в сях ноль, поделились под 3410. Пьезик надо с генератором, или без?
Проверьте прибором идут скачки напряжения на выходе на пикалку при нажатиях-пьезик с генератором попробуйте поставить.И в ранних версиях схемы звук был выведен на другую ножку Атмеги-под какую схему рассчитана ваша прошивка?
Начинать надо, как правильно сказано, в таком порядке:
- Версия прошивки. Должна соответствовать железу.
- Версия железа. На какой ноге пищалка сейчас?
- Пищалка суть железо и должна соответствовать железу.
В версиях прошивки старше 1.8 пищалка сидит на ноге PE3, и она должна быть пассивной (рингтоны различаются (зависят от ситуации); генерируются они контроллером).
Историю версий смотреть вот здесь, если нужно что-то специфическое - искать по ветке или спрашивать в ветке.