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

focus

2 Modris:
В последних версиях вывод SCE не используеся, т.к. на SPI висит только один дисплей и переключаться между кристалами нет смысла.
Первые 2 можешь назначать на любые ножки. Только настройки портов соответственно изменить надо.
#define reset PORTB.2
#define DC PORTB.0
#define SCE PORTB.1 - он не используется.

А B5 и B7 - это железно проставленные выводы контроллера SPI. Их менять нельзя.

2 Andrey_K:

  1. Как обеспечивается высший приоритет прерываний таймера, формирующего модулирующий сигнал?

У меня используется только одно прерывание. И оно от таймера. Может еще выскакивают прерывания от SPI и ADC. Но ADC я обрабатываю во время синхропаузы, а она длинная. А Задержки от SPI очень короткие (он работает на частоте 3МГц) и они не превышают погрешность измерений.

  1. Аналоговые триммеры суммируются на входе АЦП. Недостаток очевиден – ручка и триммер масштабируются одновременно. Так будет всегда, или только до перехода на другой процессор?

Суммтруются, а что делать. Ведь у АЦП только 8 входов. А чтобы разнести триммеры и ручки по отдельным каналам АЦП, надо иметь как минимум 10 каналов. И это скорее всего не излечится новым процем.

  1. В смесителях нет масштабных коэффициентов. Почему?

Мне не хватило памяти программ для реализации этих функций. Да и код у меня пока не очнь оптимальный. Я вообще придумал как в корне реорганиовать всю структуру. Это и меньше места и выше скорость.

По поводу полетных режимов - согласен. Просто почти не юзал компьютерной аппаратуры. И особенно полетные режимы.

Тогда “МОДЕЛЬ“ будет занимать 5*512=2560 байт

Возьмем, например, ATMega 128. У нее 128 кб памяти программ, 4 кб ээпрома и 4 кб ОЗУ. Что как раз достаточно. А сами модели слить на внешнюю флешку. Например AT45DB161 - это 2 метра памяти. Кидай что хочешь.
PS Что -то многовато 512 байт на один полетный режим…

Vad64
Andrey_K:
  1. Как обеспечивается высший приоритет прерываний таймера, формирующего модулирующий сигнал?

Тогда “МОДЕЛЬ“ будет занимать 5*512=2560 байт.

В AVR нет аппаратного механизма приоритета прерываний. Однако, это не проблема, если формировать РРМ 16-битным таймером в режиме ШИМ. Регистры таймера имеют двойную буферизацию, поэтому можно безопасно загружать значение следующего канала во время формирования текущего. Т.е. для обновления таймера при формировании РРМ есть минимум 0.9мс. Естественно, время обработки остальных прерываний не должно превышать этой величины.

По моделям и их объему: нет необходимости держать в ОЗУ все полетные режимы, достаточно только текущего. Остальные можно держать во внешнем копеечном ЕЕПРОМ и загружать в ОЗУ при включении режима. Время загрузки 500 байт по шине I2C будет миллисекунд 15, что вполне приемлемо. Хотя я не очень представляю, откуда у Вас такие объемы. У меня вся модель с 4мя полетными режимами - 540 байт.

focus

Возникли вопросы. Сколько каналов должно быть? (по моим расчетам 8 - выше крыши) Какие типы моделей? (думаю самолет, планер с одной, двумя и четырьмямашинками на крыло и наверное верт, делется по типу автомата перекоса) Сколько режимов полета? И какие они для каждого типа моделей? Что в них должно настраиваться?

Andrey_K
Vad64:

… я не очень представляю, откуда у Вас такие объемы. У меня вся модель с 4мя полетными режимами - 540 байт.

В прилагаемом архиве моя структура переменных. Её можно условно разделить на 3 части.
1 часть. Заголовок, параметры каналов, нули триммеров, таблицы CURVE.
2 часть. Настройки органов управления передатчика (тумблеры, кнопки, потенциометры).
3 часть. Настройки смесителей.
120 из 512 байт – резерв.
Некоторые комментарии. Очень популярно назначать раздельные масштабы D/R и EXPO для разных направлений отклонения ручек. У меня этого нет. Таблицы предназначены и для CURVE и для смесителей.
Видно, что таблицы и смесители занимают почти половину памяти.
Смесители я взял от Микростар и добавил возможность подстройки внешними триммерами. Настоящие смесители Микростар не являются в полном смысле свободнопрограммируемыми. Резервные переменные позволят устранить этот недостаток.
Мое обоснование размера таблицы CURVE. Минимальное число точек – 3. Дальнейшее увеличение числа точек логично производить делением каждого отрезка таблицы пополам. Получим таблицы из 5-ти и 9-ти точек. Увеличение числа точек свыше 9 представляется не целесообразным. В качестве нормализованного значения канальных переменных удобно использовать число 1024. Число отрезков в предлагаемых таблицах является делителем 1024, что позволяет сократить длительность операции деления при интерполяции внутри таблицы.
Для информации. У меня продолжительность одной интерполяции 500 – 600 машинных циклов ( зависит от знака исходных данных). Время вычисления одного свободнопрограммируемого смесителя с трансляционной таблицей и косвенными масштабами в обоих направлениях – 1500 машинных циклов. А максимально возможная длительность всех вычислений – 33200 машинных цикла или16,6 мсек. Многовато! Буду что-то делать.

Strustura.zip

Vad64
Andrey_K:

А максимально возможная длительность всех вычислений – 33200 машинных цикла или16,6 мсек.

Проявляется один из недостатков ПИКов - 4 такта на цикл. Атмел AVR с кварцем 12 МГц выполнит 33200 циклов за 2.8 мсек. Кроме того, у AVR Mega есть аппаратный умножитель, что улучшит производительность в несколько раз. От деления надо по возможности уходить - деление на константу всегда можно заменить умножением.
Для справки - у меня вычисление одного канала занимает не более 70 мксек. Правда, у меня достаточно простой микшер у каждого канала - нормализация АЦП, наложение триммера, интерполяция по 7-миточечной таблице и укладка в расходы.

Нормализованное значение промежуточных переменных лучше выбрать повыше (у меня 32768), чтобы не накапливать ошибки вычислений.

Psw

Ради ентого Микрочип сейчас в параметрах МК указывает МИПсы вместо мегагерцев.
Аппаратный 1 цикл 8*8 бит умножитель есть начиная с 18 серии ПИК. Она же позволяет скорость до 10 МИПс. 30 серия на борту имеет 17*17 аппаратный 1 цикл умножитель и аппаратную поддержку деления за 9 кажется циклов, 16 штук 16 бит рабочие регистры (про 2 шт 40 бит ДСП акк молчу) и позволяет скорость до 30 МИПсов.
НО - при всей моей привычке к периферии и документации Микрочип мой личный микро проектик на 30 серии по программированию ДП1203 не сдвинулся за месяц даже на пару строк - настолько непривычен 30 асм с его 84 командами. Процесс идёт исключительно туго - использую любые причины - лишь бы не садится/не писать/не читать доки. Благо пиво в магазине ещё не кончилось.
Хотя топовый ПИК 30Ф6014 с его 80 выводами и 12 бит АЦП и 144 Кб ПЗУ и 8 Кб ОЗУ привлекает своей мощностью/ресурсами.
Кроме того - тактовая 8 МГц (4*33 200/0,0166) при нехватке скорости - не лучший вариант - ПИКи даже 12/16 серии позволяют 20 МГц/5 МИПсов.
Кроме того, для линейной интерполяции делить можно только один раз - при настройке/изменении точек на кривой - а при ежепосылочных вычислениях умножать полученный при делении коэфф на расстояние до ближайшей точки - ну и прибавлять/вычитать координаты точки соответственно - ежепосылочного деления согласен с Вад64 вполне можно избегать.

Andrey_K
Psw:

Хотя топовый ПИК 30Ф6014 с его 80 выводами и 12 бит АЦП и 144 Кб ПЗУ и 8 Кб ОЗУ привлекает своей мощностью/ресурсами.

80 ножек с шагом 0,5 мм - самому плату не сделать и процессор не впаять. Придется заказывать…

Psw:

Кроме того, для линейной интерполяции делить можно только один раз - при настройке/изменении точек на кривой - а при ежепосылочных вычислениях умножать полученный при делении коэфф на расстояние до ближайшей точки - ну и прибавлять/вычитать координаты точки соответственно - ежепосылочного деления согласен с Вад64 вполне можно избегать.

Коэффициент, он же тангенс угла, постоянен только для соседних точек. А расчет максимально возможного времени вычислений надо делать на самый худший случай. Время, которое я указал, относится не непосредственно к интерполяции, а ко всему расчету с использованием таблицы
(включая предварительное ограничение исходного числа допустимым пределом). Для свободнопрограммируемого смесителя вычисления производятся по формуле AXreg=AXreg*{A+(B-A)*REMEMB(AXreg/128)/128}/100.( А,В - точки таблицы. AXreg - исходное 16-ти разрядное число)

Vad64:

Для справки - у меня вычисление одного канала занимает не более 70 мксек. Правда, у меня достаточно простой микшер у каждого канала - нормализация АЦП, наложение триммера, интерполяция по 7-миточечной таблице и укладка в расходы.

Нормализованное значение промежуточных переменных лучше выбрать повыше (у меня 32768), чтобы не накапливать ошибки вычислений.

7 точек - это 6 отрезков. 32768 на 6 не делится. Не понимаю, чем обоснован выбор числа точек.

SVS

Я использую бумагу от Самоклеющихся обоев, она с одной стороны глянцевая ,а с другой линованая. Печатаю на глянце, получается даже очень, рекомендую.

GeeBee
SVS:

Я использую бумагу от Самоклеющихся обоев, она с одной стороны глянцевая ,а с другой линованая. Печатаю на глянце, получается даже очень, рекомендую.

Я тоже так делал, пока принтер не поменял. Не вский тонер держится на этой подложке. С HP 1300 не получается - весь тонер на барабане остается, а лист не тронутый выходит, а вот на 6L все было класс.

bea

Распечатки делаю также на подложки от самоклейки, но заметил что на дорогой самоклейки, с красной разлинейкой, ну ничего не получается, даже перевод на потолочку, а с более дешовой с синей разлиновкой легко переносятся. Печатал на HP1200 .

focus

to Modris: ОВот тебе весь проект для кодевижна. Там и хекс есть.

projekt.rar

Modris
focus:

to Modris: ОВот тебе весь проект для кодевижна. Там и хекс есть.

Spasibo, v konce etoi njedelji budu delatj. Poka 4to na maketke, no spotencami ot Graupner.
na sljedujshei njedelje dolzhni prijehatk konjektora, kotorije zakazival, shagom 1.2mm 😁

focus

Все дальше от темы уходим… Про печатные платы пошло… В нете про них более чем достаточно инфы.
PS выходит почти никому хороший пульт за умеренные деньги не нужен…

Modris
focus:

Все дальше от темы уходим… Про печатные платы пошло… В нете про них более чем достаточно инфы.
PS выходит почти никому хороший пульт за умеренные деньги не нужен…

Kazhis 4to mnogije kupilji ilji kupjat aparaturu tipa Eclipse7 ilji MX12 i budut ljetatj, i plaatj i ljehatj.
Lji4o ja tozhe prigljadivajus na MX12 za 130Evrikof, no Denjeg to njet. Vot i budu delatj peredat4ik. 😈

Aleksey_Gorelikov

Жаль, что тема умирает. Ребята, Фокус задал вопрос. Свое мнение я скинул ему в аську, но в общем оно свелось к копированию функций современных передатчиков. Я обращаюсь к тем, кто делал/ сделал/ купил стоящий аппарат, расскажите свое мнение и видение необходимости и удобства того или другого… Что вам, трудно? Пусть он не сделает лучше или такой же кодер, как в топовых моделях, но ему будет к чему стремиться… Да, парень молод и не имеет опыта. Научите! Он делает сам и согласен тянуть “лямку” поддержки для таких же как он молодых, не опытных, пока “бедных”, но целеустремленных. Пусть на свет появится простой, халявный, но весьма функциональный передатчик для начинающих… Ведь все когда-то о СУПРОНАРЕ только мечтать могли… Сейчас мало что изменилось. Для кого-то в глубинке и флешь-4 - роскошь, особенно если учишься в школе а родители на заводе пашут день и ночь за 200 баксов в месяц. Ведь летать им хочется сейчас, а когда станут “большими и толстыми” - интерес может и пропасть… Еслиб я в первом классе комнатную не сделал, то сейчас бы только водку пил!

Лично мне тоже аппаратура не нужна. У меня есть покупная, а когда я из нее вырасту - я куплю, наверно, себе другую. И проблем в этом нет (ну почти, ща за квартиру кредит погашу, и…), но кодер Флеша я сделаю (да в том же супронаре!) и летать на нем попробую, просто чтоб помочь ему довести его до ума. Если все будет удачно и удобно, то покупать новую не придется, а еслии куплю, то кому-то из млодых этот кодер денег сбережет, да и руки “выправит”.

2Vad64: Не лови меня на слове, то делаю, то не делаю… Мне интересно как и что, а делать самому просто времени нет. За предложение твоей прошивки - большое спасибо, но мне она не нужна (я писал выше). На данный момент интересен не результат, а процесс.

nicetry

Если денег нет и учишся в школе - спаяй готовую разработку (а их уже не мало), выйдет сильно дешевле и по деньгам, и по времени. Я вам так скажу ребята: разрабатывать свой передатчик нужно только если хочешь и МОЖЕШЬ (!!!) сделать лучше. Иначе толка не будет. Несомненно, Фокус - молодец, но его разработка выйдет на уровень худших китайских образцов совсем не скоро. Во всяком случае не раньше, чем он научится разделять старший и младший байты 16-битного слова обходясь без двух операций деления 😁
Так что смиритесь и примите предложение Вада.

xelix

Мне кажется, очень нужная тема. С деньгами тоже туго, буду собирать такой модулятор. Насчет других разработок - микростар намного сложнее схемотехнически, проц старый. Где посмотреть другие? На этом форуме только “шифратор на…”, но мне кажется, у Фокуса гораздо!!! перспективнее. Не опускайте рук, очень нужная разработка! Сам программмирую достаточно слабо.

Vad64
Aleksey_Gorelikov:

Жаль, что тема умирает. Ребята, Фокус задал вопрос. Свое мнение я скинул ему в аську, но в общем оно свелось к копированию функций современных передатчиков. Я обращаюсь к тем, кто делал/ сделал/ купил стоящий аппарат, расскажите свое мнение и видение необходимости и удобства того или другого… Что вам, трудно?

Алексей, нет ничего удивительного, что никто не откликнулся. Придумать и оформить ТЗ - не менее сложная, ответственная и трудоемкая задача, чем собственно разработка схемотехники и софта. Это мало кто сможет, а главное - захочет сделать. Поэтому я бы посоветовал самодельщикам не стремиться к “топовости” и универсальности, а делать вещь под свои текущие требования. Еще раз выскажу свое мнение, что разработка в финансовом отношении не окупается и заниматься ей имеет смысл только если есть интерес к процессу или хочется сделать аппарат “под себя”. Повторять халявную чужую разработку я бы лично точно не стал - неинтересно и не хочется летать на чужих багах. Что касается помощи focus-у (и другим, кто что-то делает и учится на этом) - я всегда стараюсь ее оказывать по мере возможностей.

focus

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

Правильно! Пинайте за тупости в коде! Я такой проект разрабатывал впервые поэтому в нем такие детские ошибки… И то что вы указываете на них - отлично.

chwor

Я решил сделать модулятор, сделал плату, вспаял все, залил МК, но не сработало. Возникли вопросы:
Какие Fuses надо включить(отключить)?
О дисплее: Nokia 3410 имеет дисплей LPH 7779 - контролер pcd8544(84х48 pixels), а не PCF8812(103х65 pixels) - ето я накопал из интернету. Мне дали какой то и сказали что из Нокии 3410, но на нем ничего не написано.
Надеюсь на ответь.

P.S.Прошу прощения за мой руский, но давньiм-давно не применял.

Modris
chwor:

Я решил сделать модулятор, сделал плату, вспаял все, залил МК, но не сработало. Возникли вопросы:
Какие Fuses надо включить(отключить)?
О дисплее: Nokia 3410 имеет дисплей LPH 7779 - контролер pcd8544(84х48 pixels), а не PCF8812(103х65 pixels) - ето я накопал из интернету. Мне дали какой то и сказали что из Нокии 3410, но на нем ничего не написано.
Надеюсь на ответь.
P.S.Прошу прощения за мой руский, но давньiм-давно не применял.

nashet LCD:
displays:
controller display 1) resolution colours C 2) protocol 3) I 4) remarks devices using this display
PCD8544
&
compliant LPH 7366 84 x 48 2 (b/w) * ser.3 P backlight from PCB Nokia 5110, 5120, 5130, 5160, 6110, 6150
LPH 7677 - Nokia 3210
LPH 7779 Nokia 3310, 3315, 3330, 3350, 3410
LPH 7690 96 x 60 - Nokia 6210
SED 153x
series Alps LSU7S1011A 96 x 32 2 (b/w) * ser.6 P - -
Optrex 323 117 x 62 ser.6 backlight built-in -
SED 156x
series Nokia 7110 96 x 65 2 (b/w) * ser.5 P backlight built-in Nokia 7110
NEC 21a 132 x 32 par.8+4 - NEC 21a pager (skyper)
LPH7508 100 x 64 par.8+4 - display kit sold by pollin
Hyundai HP12542R 128 x 64 par.8+4 - display kit sold by pollin
? Ericsson T2x 101 x 33 2 (b/w) i2c P, S - Ericsson A1018, T20, T28, T29
T6963 all T6963-based var. 2 (b/w) par.8+4 P - generic display controller
SED 133x
series all SED 133x-based var. 2 (b/w) par.8+4 P - generic display controller
NOTA BENE:
dual-panel displays are not yet supported!
S1D15G14
series Nokia 3510i/3530 97 x 65 256, 4096 * SPI P - Nokia 3510i, 3530

Dannije vzjati iz serial dislpay library
Po pamjati pomnju, 4to na 3410 idjet toljko LCD odnogo tipa i etot LCD idjet toljko na 3410. Na drugih modeljah takih LCD NJET.

2 All : kstate, prodolzhajetsa rabota nad platoi moduljatora.
2 Focus: a razve potenciometri njenado podklju4atj k Vref??? a vdrug 5Voljt uidut i vmesto njih pojavjatsa 5,5V ? Jeslji vistavim Vref 4,096v, to 1 bit budet 0,001V na ADC v neitraljnom polozhenjije podano 1/2Vref t.e. 2,048V ilji 2048. vdrug vmesto 5V prijehalji 5,5 i 4to mi polu4ajem??? 5,5/2=2,25 a eto na 0,202V boljse a sledovateljo i vse rasheti uidut, tak kak i nas pojavitsa nje 2048 a 2250 a eto po4ti na 10% boljshe.
Tut i polu4ajem, 4to jeslji na potenciometri podano Vref, to pri maximaljnom otklonjenije ru4ki budet max velji4ina na vhode ADC i pri uhode Vref ilji naprezhenjija na potenciometrah , mi polu4ajem praveljij rezuljtat.
Njeho4u bitj upjamim, no ja njedoverjaju Krenam ilji ih analogam.
Kak Vref mozho ispoljzovatj i specialjnije REFERENCE IC no dlja ih pitanija njeobhodimi kak minjimum 15-25V i toki u njih toljko do 15-30 pA. a to4nostj porjadka =/- 0,001% d viapazonje temperatur ot 0 do 70 C.