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

yura_v
ubd:

А нужно было пямять ЕЕПРОМ, сохранить отдельным файлом, а после обновления программы, загрузить его опять - все бы настройки сохранились…

дык изза неё как раз и не работали юзерсы Поэтому пришлось тереть.

ад 1 не существует. Как я понял, есть только пять пропорциональных канала - элероны, руль высоты, газ, руль поворота и дополнительный канал, он подключается к 61 ноге, т.е. ADC0. Вот он как раз калибруется нормально.

а у меня такое впечатление что зашкал идёт.
Фокус, калибровка всех джойстков независима друг от друга?
Китайцы в моём пульте применили 5к резюки и задействовали среднюю зону 3.4к оставив по краям 810ом мёртвые зоны
А на пропы я поставил резюки на 20к …

У меня всё нормально.

не может быть. Зайди в controls потом в ailerons и увидишь что надпись вверху - Ailerons подпрыгнула на пиксел

Это не страшно, можно питание выключить и включить. Лиш бы всё остальное работало…

Это да но вот то что макс ch может развалиться напрягает. Вчера сделал модель - для сима назаначил 8 каналов и забыл
сегодня сунулся туда - мусор вместо цифры 8. Причём это не просто на экране мусор - оно в натуре не работает.

Вопрос: отображаются только три режима. Все остальные тумблеры давишь вслепую? swXX, kmodX, дуалы…
нигде не индицируются?

Из пожеланий:
калибровочный экран под mode2 переделать
сделать монитор всех контролов в цифре и миллисекундах
добавить проп2 на всякий случай - на вертолётных пультах до трёх крутилок бывает

скоро приедет ccpm верт и тогда точно всё скажу

yura_v

Залез в код
по поводу смещения на пиксель - да стоит 7 а не 8 в этих меню. Поправил.

по поводу prop
в math.c он присваивается ad[7] которого не существует - при компиляции ворнинг
есть подозрение что он не идёт в канал в результате этого.
if (AD[4]>0) input[7]=AD[4]*Kmax[4]/10;
else input[7]=AD[7]*Kmin[4]/10;

по поводу калибровки prop
я вывел в эран калибровки все значения в цифре AD[x] и проч
ubd - если у тебя калибруется нормально то значит у тебя абсолютное значение с ацп значительно меньше 1023
А у меня со всех джойстиков максимум 1023. Бага в следующем
В коде рисуется палка длиной 50 писелей и маркер.
x2=(AD[4]-ADmin[4])*50/(ADmax[4]-ADmin[4])+23 ;
lcd_rectangle(23,50,73,52,1);
lcd_fillrect(x2-1,48,x2+1,54,1);

как видно при умножении чисел от 656 до 1023 на 50 результат переполняет двухбайтовую внутреннюю переменную.
поэтому следует либо уменьшить длину полозка до 31 либо както навязать longint в процессе вычисления -
я не спец в си.

Фокус!Желательно проверить весь код на переполнение в процессе вычислений.

focus

x2=(AD[4]-ADmin[4])*50/(ADmax[4]-ADmin[4])+23 ;

у меня в проге они вообще типа unsigned char i,x2,y2; - 1байт, и все работает… странно даже. я сам шас глянул и удивился 😃

yura_v
focus:

у меня в проге они вообще типа unsigned char i,x2,y2; - 1байт, и все работает… странно даже. я сам шас глянул и удивился 😃

эти пофиг. к ним присвоение в самом конце. Главное с какой точностью вычисления делаются.
каков у тебя диапазон измений AD[i] ?

После интенсивного тестинга обнаружил что опять загадились юзерсы. Придётся опять тереть еепром и все по новой.
Либо в еепром чтото случайно пишется например при копировании модели
либо у меня такая странная мега.

Кстати наверно не стоит при копировании модели копировать и её название.

jon_bear
yura_v:

После интенсивного тестинга обнаружил что опять загадились юзерсы. Придётся опять тереть еепром и все по новой.
Либо в еепром чтото случайно пишется например при копировании модели
либо у меня такая странная мега.

Привет! А они загадились не после выключения-включения передатчика? у меня такое было, и решилось просто, спасибо VAD64 ! (см. Сообщение #503)

ubd

Рекомендую активизировать в процессоре систему BOD. При выключении питания напряжение спадает плавно, а при критически низком напряжении процессор может делать странные вещи, в том числе - портить EEPROM. Включенный BOD будет переводить проц в RESET при падении напряжения ниже заданного порога.

Там во фьюзах есть BODLEVEL и BODEN. Какой из них ставить?

yura_v
ubd:

Там во фьюзах есть BODLEVEL и BODEN. Какой из них ставить?

насколько из тех постов я понял - оба. если питание у меги 5 вольт. сам ещё не шил.

кстати а никто не хочет дописать тахометр для этого проекта?

Modris

Voznjiklji tupije voprosi pro organi upravljenija v peredat4ike po sheme kotoraja nahoditsa v arhive CVProject_Final_S:

1: kuda podsoedinjatj konektor JP4?
2: kakova vida pereklju4a4elji cifrovih kanalov JP8?
i kakaja ih funkcija

3: Kakaja poljza i kak ispoljzovatj dvoinije rashodi?
4: na 4to vlijajut “MOD K1” i “MOD K2”???
5: spasoben lji etot moduljator rabotatj sovmestno s sprijemnjikam Graupner FM??

kak posovetujete ustanavljivatj organi upravljenija v puljte?
Imejetsa korpus ot Graupner FM314.

ubd

1: kuda podsoedinjatj konektor JP4?

Никуда.

2: kakova vida pereklju4a4elji cifrovih kanalov JP8?
i kakaja ih funkcija

Это тумблеры, а SW2.1 и SW2.2 тумблер трёх позиционный средний вывод тумблера на минус.

3: Kakaja poljza i kak ispoljzovatj dvoinije rashodi?

Можно оперативно в полёте уменьшить или увеличить расходы рулей, на тол-во процентов которое запрограммируешь заранее на тумблеры которые отвечают за расходы.

4: na 4to vlijajut “MOD K1” i “MOD K2”???

Это режимы полёта. Это примерно то же самое что выбрать другие настройки передатчика прямо в полёте. Как бы загружается другая модель. В принципе на первых порах эти тумблеры можно даже не выводить на корпус.

5: spasoben lji etot moduljator rabotatj sovmestno s sprijemnjikam Graupner FM??

Да. Он способен работать с любым стандартным передатчиком.

kak posovetujete ustanavljivatj organi upravljenija v puljte?
Imejetsa korpus ot Graupner FM314.

Как хочешь, т.е. как тебе удобнее. Я например, посмотрел как сделано на заводской компьютерной аппаратуре и сделал примерно так же.

yura_v

А есть у кого разводка в eagle? а то спринтлейаут под линухом не идёт зараза. А макеток больше нету.

yura_v

попробовал дописать осциллограф(точнее просто вывод сигнала) - добавил пункт меню в options
но выяснилось что если обращаться к ацп в этом пункте то оно либо вешается либо глюкает
Фокус, почему так?
Пришлось вынести это как калибровку на включение пульта.

с реальным сигналом попробовать ещё не успел
наводку от пальца кажет

void oscill (void)
{
unsigned char i;
int y0[95];

while (LEFT){
lcd_clear();
lcd_line(1,30,90,30,1);
for (i=1; i<95; i++){
read_adc(Rpop_contr);
y0[i]=ADCW;
}
for (i=1; i<95; i++) lcd_pixel(i,23-y0[i]/60,1);

lcd_refresh();
}
}

focus

Т.к. помо чтения АЦП из этой подпрограммы, оно еще читается в прерывании. Причем 100 раз в секунду… поэтому и виснет.

Korzoff

Уважаемые rulll и focus!

IMHO, в опубликованных вами архивах не хватает копирайта, лицензии и реквизитов для приема благодарности (в денежном эквиваленте).

yura_v
Korzoff:

Уважаемые rulll и focus!

IMHO, в опубликованных вами архивах не хватает копирайта, лицензии и реквизитов для приема благодарности (в денежном эквиваленте).

Это точно.
Единственно что можно добавить для полноты опенсорса - порт на gcc

focus

Единственно что можно добавить для полноты опенсорса - порт на gcc

А что это?

lamobot

GNU compiller collection
очень хороший открытый компиллер
я работаю только с ним, хотя пару раз сталкивался с серьезными проблемами (возможно дело во мне)
портировать на него твою прогу-проще написать ее заного.

an2an
lamobot:

хотя пару раз сталкивался с серьезными проблемами (возможно дело во мне)
портировать на него твою прогу-проще написать ее заного.

Интересно, вчем же они заключаются? С трудом могу представить…

svb
lamobot:

GNU compiller collection
очень хороший открытый компиллер
я работаю только с ним, хотя пару раз сталкивался с серьезными проблемами (возможно дело во мне)
портировать на него твою прогу-проще написать ее заного.

я портировал первую версию(неполную, для Меги16) Жениной прошивки на GCC на Мегу128.
резюме - РАБОТАЕТ. переделок - минимум.

lamobot

2an2an:
у меня есть большая програма для мега128. в ней довольно много вычислений, так вот результат этих вычислений противоречит логике. при разных уровнях оптимизации программа работает абсолютно по разному. тот же код (вообще без изменений), скомпилированный для х86 и запущенный со слоем эмуляции выдает идеальный результат.
даже и не думайте о том что я не знаю как в си грамотно делить и умножать. дело не в этом
код я вам не покажу ни под каким предлогом 😲

2svb:
ну и отлично

то что проще заного написать-это мое имхо.

бай бай

an2an
lamobot:

2an2an:
у меня есть большая програма для мега128. в ней довольно много вычислений, так вот результат этих вычислений противоречит логике. при разных уровнях оптимизации программа работает абсолютно по разному. тот же код (вообще без изменений), скомпилированный для х86 и запущенный со слоем эмуляции выдает идеальный результат.
даже и не думайте о том что я не знаю как в си грамотно делить и умножать. дело не в этом
код я вам не покажу ни под каким предлогом 😲

Я уверен, что в этом коде есть ошибки. Если Вы стесняетесь показать конкретно этот код, может быть Вы сможете изготовить пример кода демонстрирующий этот “феномен”? Думаю, что если Вы только попытаетесь написать пример, то сами найдете ошибку…

1 month later
Anton_M
svb:

я портировал первую версию(неполную, для Меги16) Жениной прошивки на GCC на Мегу128.
резюме - РАБОТАЕТ. переделок - минимум.

вы не поделитесь ? хочу под WinAVR.