Самодельный передатчик (часть 2)

Dj_smart
Aleksey_Gorelikov:

Ну поставьте себе кодевижин.

Ага:). И создайте тему, ЧТО изменить, и КАК откомпилировать:). Понятно, для програмистов это “два тыка в клаву”, и “да там всё интуитивно понятно”. Не примите за претензию, всё нормально. Это издержки популярности кодера.
Офф:
Всегда поражался людям, которые на многое способны на “стыке” двух, а то и больше, дисциплин. Как тут- и в моделях надо шарить, и в программировании, у создателей ЭМИ, и музыкантом надо быть, и электронщиком, и тд.

Denn

Напишите мне в личку вашу почту, версию прошивки и желаемое значение контрастности ( в прошивке ), я переделаю и вам пришлю.

Aleksey_Gorelikov
Dj_smart:

И создайте тему, ЧТО изменить, и КАК откомпилировать

На такие вопросы с удовольствием в личке отвечу (или в icq). Может не всегда быстро получится, но обычно около полуночи заглядываю. Я не наезжал, я лишь пытаюсь сподвигнуть установить кодевижин и попытаться поменять пару циферок самому. Это действительно не сложно, интересно и увлекательно. Программистом быть вовсе не обязательно. Попробуйте! Ведь приятно летать на аппе, которая сделана “под себя!” А хотябы по мелочи, но изменить всегда что-то хочется. Кому-то буквы не нравятся, кому-то просто в другой угол экрана передвинуть что-то хочется. Кому-то лишний пункт в меню мешается.

З.Ы. В кодевижин есть все. И редактор, и компилятор, и программатор. Все действо - одной кнопкой “откомпилировать” и прога уже исполняется в вашем передатчике.

Dinotron

А вот кодевижин-то чтоб поставить или денюжку платить придется или воровать. Не GCC чай.

EagleB3

Дык, возьми и спортируй исходники на GCC.
Респект тебе будет и уважуха!

Кто мешать станет - мне скажи. Я его прокляну средним сиротским проклятием…

Dj_smart
Dinotron:

или денюжку платить придется или воровать.

Ну первое мы как-то не привыкли:(. Поставил. Скачал русскую книжку. Не, я уж как-нить откалибрую и настрою, а потом вообще отрежу дисплей.

Dinotron

Портировать проект это было бы сильно. “Не имеет аналогов в мире.” Короче долго,трудозатратно и бесполезно,извините.

MLT

Разобрался, ставил также от 3210, все работает. По 1к резисторах на SPI и на питание резисторный делитель в виде подстроечника на 4.7ком + следом конденсатор 4.7мкф, без него бывал старт с искажениями.
Контрастность меняется в широких пределах, менять что либо в прошивке отпала нужда.

Тем не менее, полез в компиляторные дебри и тоже все получилось, работает. Но возник маленький вопрос. Размер хекса на выходе чуть больше, чем оригинальный хекс.
От чего это зависит? Или перефразирую вопрос - это нормально?
Компилятор CodeVisionAVR V2.04.4a

Denn

Скорее всего, да. Многое зависит от версии CodeVision и настроек.

Dj_smart
MLT:

А можно ли непосредственно в HEXе кодера поменять значение контрастности?

Короче полез я в эти дебри:). У меня есть два хекса под 3410 с разной контрастностю. При помощи WinHEX открыл оба, и нашёл отличающиеся ячейки. Но их там по две оказалось. Причем в прошивке с более низкой контрасностью значение одной меньше чем в более контрастной, а в другой ячейке больше. Взял и добавил-убавил по единичке. Дудки:). Даже не стартует. Впрочем, этого стоило ожидать.

mega_john

ну вторая видимо чексумма, ее необходимо рассчитывать заново. программатор разве не ругался?

Dj_smart
mega_john:

программатор разве не ругался?

Лошади матом не умеют. Понипрогу что, шо засунул, то он и зашил.

Denn

В процессе эксплуатации появились предложения по улучшению программы - хочется услышать другие мнения о них:

  1. Уменьшить скорость изменения триммеров и ( или ) сделать остановку в изменении на 0,5 сек в нейтральном положении
    триммера - чтобы точнее его выставить.
  2. Указатели триммеров можно сделать в 4 пикселя высотой - лучше заметно.
    3.Может быть стоит немного изменить логику меню " Curve " : столкнулся с ситуацией, когда в режиме “free” пытался войти
    в режим корректировки кривой, на “автомате” нажал кнопку “ВПРАВО” - и сбросилась вся моя кривая! Так как у меня все
    изменения сохраняются сразу ( без возможности отмены ), пришлось спасать данные выключением питания…
    Если сделать 2 пункта меню " Curve " - “Free” и “Standart” , и выбрав кнопкой “ВПРАВО” дальше редактировать кривую,
    при этом , желательно сохранить значения и в “Free” и в “Standart”, чтобы можно было переключаться между ними.
EagleB3
Denn:

В процессе эксплуатации появились предложения по улучшению программы - хочется услышать другие мнения о них:

  1. Уменьшить скорость изменения триммеров и ( или ) сделать остановку в изменении на 0,5 сек в нейтральном положении
    триммера - чтобы точнее его выставить

Уменьшать, думаю, не надо. А к паузе - я, пожалуй, присоединяюсь.
Можно, наверное, не делать паузу, а после выдачи “бипа” о том, что триммер пришел в нейтраль пропустить следующие N нажатий на триммер без изменения значения (как вариант - пропустить N нажатий в том же направлении регулировки). Если триммер отпустили или направление изменилось - сбросить счетчик N.

P.S. Вскрыл вчера нерабочую оптическую мышку (дешевейшую!..) - а в ней на колесике валкодер с кликами. Как мне его захотелось (вместо кнопок вверх и вниз)!..
А ведь есть еще и мышки, у которых колесо можно прижимать вправо-влево.
P.P.S. Только управление таймером (пуск-стоп-ресет) при этом надо на отдельную кнопку отсадить. Или управлять им по трем…пяти кликам колеса подряд - чтобы случайным задеванием не запускать и не сбрасывать.

oskar
Denn:

3.Может быть стоит немного изменить логику меню " Curve " : столкнулся с ситуацией, когда в режиме “free” пытался войти
в режим корректировки кривой, на “автомате” нажал кнопку “ВПРАВО” - и сбросилась вся моя кривая! Так как у меня все
изменения сохраняются сразу ( без возможности отмены ), пришлось спасать данные выключением питания…
Если сделать 2 пункта меню " Curve " - “Free” и “Standart” , и выбрав кнопкой “ВПРАВО” дальше редактировать кривую,
при этом , желательно сохранить значения и в “Free” и в “Standart”, чтобы можно было переключаться между ними.

Поддержу идею ,сам сталкивался с етим при настройке кривых шаг -газ вертушки!

EagleB3

…Покрутил валкодер из мышки. Прикольная конструкция!
Три ноги (два канала и общий).
Сначала чуть мозги не вывихнул, отлавливая на каналах классические меандры, сдвинутые по фазе.
Потом заметил, что:

  1. Состояние одного из каналов меняется при повороте вала на 1 клик в любую сторону;
  2. Когда кручу вал по часам, то выходы каналов всегда равны (0 и 0 или 1 и 1). Против часов - всегда различны (0 и 1 или 1 и 0).

И все стало просто:

#define ChnA PIND.3
#define ChnB PIND.4

volatile 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 мС.
Работает как часы; никакого дребезга.

AndyBig

Энкодеры очень просто обрабатывать - следишь за одним из выходов, когда на нем появляется переход в единицу, смотришь в каком состоянии в этот момент второй выход: если в единице - одно направление, если в нуле - другое 😃

EagleB3

Угу… Часа три следил по этому алгоритму. Прерывание на rise поставил. И по одному каналу пробовал, по второму. И задержки ладил (думал - дребезг какой). И значения осреднял. И фигушки.

Имел по два прерывания на клик.
И мало того - по одному каналу уровни кликов всегда чередуемые: если сейчас “0”, то на следующем клике будет “1”. А на очередном - опять “0”.
Ну как так может быть (по классическому алгоритму), чтобы по два фронта между кликами, а уровень на кликах - чередуемый?
У BOURNS’ов (если верить прочитанному) - клик по одному из каналов всегда в нуле. И да, между кликами всегда фронт (один…) и по второму каналу смотрим куда оно крутится. А в этом - нет.

AndyBig

Значит этот энкодер какой-то нестандартный… Надо было посмотреть осциллом по обоим каналам чередование сигналов 😃

EagleB3

Кстати! Если кто (в Москве…) хочет получить такой энкодер - велкам, поделюсь.
Сегодня на радостях обнес ящик с мусором у наших сисадминов - 6 таких мышей нарыл!

Dj_smart

Пока только “оживляю”, и попутно инструкцию к нему читаю. cncfiles.ru/showp.php?id=9147
Просветите в таком вопросе: “значения триммеров через 30 секунд записываются…” и тд . Это значит, что при следующем включении ручка в нейтрали, а серва “уже учла” значение триммера? Или?