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

EagleB3

Кто же тебе скажет, да еще не видя твоего кода?
А хоть бы даже и видя…

Самое простое - смоделировать в Протеусе.
Или даже просто прогнать этот кусок в AVRStudio - она, помнится, проставляет временные метки при трассировке в дебагере.

ВитГо

да кода особо еще нет…

пытаюсь посчитать сколько времени нужно на то или иное действие…

например есть код

//--------------------------------------------------------------------------------------------------
//                                                     Процедура чтения данных выбранного канала ADC
// Входной параметр: adc_input - номер канала для чтения
// Выходной параметр: считанное значение
unsigned int read_adc(unsigned char adc_input) {
  ADMUX=adc_input|ADC_VREF_TYPE;
  delay_us(10);
  ADCSRA|=0x40;
  while ((ADCSRA & 0x10)==0);
  ADCSRA|=0x10; // Stop
  return ADCW;
}

получается что для опроса одного ADC канала нужно не менее 10 мкс… у меня их 7 - уже 70…
причем насколько я понимаю while ((ADCSRA & 0x10)==0); - будет еще какая то задержка… - но какая ?

соответственно мысля - вытащить чтение всех ADC каналов в паузу между пачками PPM… там будет около 300 мкс - хватит ?

я тут эксперементировал уже с прерываниями - очень тяжело найти причину ошибок если не успеваешь внутри прерывания до вызова прерывания вторично…
вот и пытаюсь подойти рационально к этому…

msv

в новом варианте (на меге128) на сколько я понял - после передачи текущего канала сразу рассчитывается его длительность для новой пачки…

Математика распределена. Основная часть (все, что до микшеров) делается в паузе. Остальное досчитывается во время строба PPM.

while ((ADCSRA & 0x10)==0); - будет еще какая то задержка… - но какая ?

На время преобразования. См. ДШ.
По быстродействию код практически не оптимизировал, поэтому резерв наверняка очень большой. Можно смотреть на то, что выдает компилятор в асме, и оптимизировать код в Си. Иногда, казалось бы простейшие вещи, компилятор превращает в довольно замысловатый код, иногда си-шные инструкции воспринимает слишком буквально, и делает совершенно не нужные движения. Можно неподдающиеся оптимизации функций переписать на асме…
Отлаживаться по быстродействию очень удобно в протеусе, дергая тестовые ножки и глядя на виртуальный осцилограф.

RW9UAO

выкладываю, чтобы потом самому не забыть. правил по живому. работает нормально.
з.ы. ткните носом в мануал. желательно не powerpoint =)

lcd_ks0108.rar

Denn

На аппаратуре Hitec Prism 7X есть интересная штука: там оцифровывается механический триммер ( в подменю ) , и это значение можно перебросить в субтриммер, и тогда механический триммер можно ставить в нейтраль. Может сделать что-нибудь подобное, но, например, для режима Normal , а в остальных режимах триммер оставить или изменять на ту-же величину?

RW9UAO

да этих дисплеев - как грязи. даташит читайте внимательно чтобы контроллер был ks0108.

RW9UAO

испохабил корпус своей старой футабы. врезал экран. слева 4-ре кнопки основные. справа кнопки EXIT и MENU, которые можно было не ставить, они не нужны. прошивка для турниги 9Х.
столкнулся с таким косяком - не прохожу калибровку. в меню “монитор” ручки ходят от -100 до 100. а должны от -256 до 256. цеплял на AREF подстроечник, включал в исходнике режим работы с AREF, а не AVCC. крутил крутилки - все бесполезно. в принципе меня не парит в исходнике пороги подвинуть с 512 до 200, но может есть какой-то метод поправить аппаратно ситуацию? резисторы ручек подключены на землю и питание 5 вольт.

RW9UAO

вообще, чем грозит низкое разрешение (не дотягивание до верхних границ)? пока обнаружил, что таймер в режиме “AUTO” стартует не зависимо от положения ручки газа. видимо там игнорируются калибровки ручек.

gena_g

Ребята ести у кого то прошивка 1.9 или 1.9.1 под 3410 желательно без температуры и тока антенны .Заранее благодарен.

Aleksey_Gorelikov
RW9UAO:

ручки ходят от -100 до 100. а должны от -256 до 256.

Кстати, а кто сказал что ±256? Там же масштабирование делается, а в монитор вобще проценты от расхода выводятся? Поставите расходы в 120% будет ±120…

З.Ы. Кстати, зачем от турниджи прошивку??? Почему не от МСВ, не коцанную??? Я ж там кой-чего под турниджи специально менял. Назад вернули??? К примеру вывод ППМ, корректировал таймера под 16мгц кварц…

З.Ы.Ы. и почему всеж дисплей этот, а не тик? Там ж проводов мало, можно еще что-нибудь к меге прицепить. А с паралельным дисплеем - тяжко. Ног в обрез. Разве что кнопки с тумблерами на матрицы разводить…

RW9UAO
Aleksey_Gorelikov:

Кстати, а кто сказал что ±256? Там же масштабирование делается, а в монитор вобще проценты от расхода выводятся? Поставите расходы в 120% будет ±120…

насчет монитора не скажу, а в процедуре калибровки ясно сказано:

if(ADmax[i]-ADmin[i]<512)

не хватает “ручек” чтобы калибровку пройти. вывел на экран абсолютные значения с АЦП. все ручки ходят ADmax-ADmin около 200 отсчетов.

З.Ы. Кстати, зачем от турниджи прошивку??? Почему не от МСВ, не коцанную??? Я ж там кой-чего под турниджи специально менял. Назад вернули??? К примеру вывод ППМ, корректировал таймера под 16мгц кварц…

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

З.Ы.Ы. и почему всеж дисплей этот, а не тик?

да просто у меня есть этих дисплеев.

DmitryS
RW9UAO:

слева 4-ре кнопки основные. справа кнопки EXIT и MENU,

Э-э-э, я наверное что то пропустил😍, откуда взялись кнопки EXIT и MENU???

ВитГо

поясните кто нить по временным параметрам PPM используемым в самодельном передатчике
Длина канального импульса от 1000 до 2000, а вот какова длина паузы между импульсами ?

p.s. запустил в своей прошивке микшер каналов, но приемник чтото не понимает то что я ему передаю… на первый канал приемника влияет третий передаваемый… третий канал приемника (двигатель) - короткие писки (то есть нет сигнала)…
Наверное чтото с временными задержками напутал…

Расскажите как это работает у вас ?

DD

пауза между импульсами входит в эти 1мс до 2мс и обычно составляет 0,3мс

ВитГо

то есть считается не длина самого импульса, а длина импульса и паузы после него ?

то есть так:
-----1000-------|_300__|--------

|-----------------------|
длительность всего промежутка считается как длительность канального импульса ?
в данном случае (положительная фаза импульса 1000 мкс, отрицательная 300) канальный импульс будет считаться как 1300 мкс ?

gena_g

Спасибо за прошивку Andrej100. Но в ней есть неточтости. Вот исправленный и проверенный вариант.

ВитГо
ВитГо:

то есть считается не длина самого импульса, а длина импульса и паузы после него ?

то есть так:
-----1000-------|_300__|--------

|-----------------------|
длительность всего промежутка считается как длительность канального импульса ?
в данном случае (положительная фаза импульса 1000 мкс, отрицательная 300) канальный импульс будет считаться как 1300 мкс ?

вопрос снялся вот такой диаграммой, может быть кому нить поможет тоже в чем то

а вот новый вопрос - период отправки пакета PPM на рисунке 22,5 мс… это по стандарту ? или может быть и 20 мс ?

картинка вот отсюда aerodesign.de/…/PPM-Stoerungen-beim-Landen.htm

ADima

изначально стандарт был 20мс 4 пропорциональных канала, причем пауза 0,4мс. но насегодняшний день в ППМ пихают сколько? по моему до 14 каналов - они просто не умещаются в 20мс. Диаграмма похоже с такой аппаратуры.