РРМ кодер, эконом вариант?

ВитГо

Ребята, не ругайтесь !!!

Грабли они везде 😃
В чем то вы оба правы !
В какой то мере и общую структуру программы нужно продумать (чтобы потом как дерево листьями каждую ветку одевать), но зачастую до общей структуры нужно и листики представить…
Так что здесь просто копятся еще идеи и способы их реализации… одновременно отрабатывается схема…
На счет питания дисплея кстати мне больше нравиться идея с 3,3в согласованием - ведь действительно в основном все что кроме дисплея скорее всего будет иметь питание 5 в…

А вот исходники (прокомментированные) очень даже интересны !! и это без шуток !

Кстати, есть хорошее правило: критикуя предлагай !!

Возможно если следовать ему - то критика будет уже не критикой а предложением на изменение схемы или программы с обоснованием - вот это очень продуктивно !
Соответственно если будет предложена схема на 3.3 в - то тогда и можно будет говорить о подводных камнях и скалах

sslobodyan
enb65:

Немного не в тему, Сергей можно Вас попросить по подробней расказать о том как формировать PPM с помощью компаре модуля (основную идею и шаги алгоритма, это я для себя прошу). Можно в личку чтоб не засорять ветку.

Наиболее для меня приемлемым (быстрым и точным) показался такой вариант. Запускаем таймер1 с таким предделителем, чтобы он не переполнился за 20мс. Заполняем массив “перепадов” временем изменения сигнала. Обнуляем таймер1 и ССР1 пишем время первого “перепада” который формирует межканальную паузу первого канала. В ССР модуль настроен на сравнение ССР1 и таймера и по равенству переключает (либо вверх, либо вниз - зависит от ППМ или ИППМ) выход ССР с вызовом прерывания ССР. В прерывании выбираем следующее время “перепада”,грузим его в ССР1 и настраиваем модуль на переключение в другую сторону.

Вот кусок моего кода (как раз прерывание по формированию ППМ).

#int_CCP1 HIGH
void CCP1_isr(void)
{
if (edge_idx == 0) { // на первом канале обнулим таймер
set_timer1(0);
}
CCP_1 = edge[edge_idx];
if (edge_idx & 0x01) { // открывающий канальный перепад
setup_ccp1(CCP_COMPARE_CLR_ON_MATCH);
}
else { // закрывающий канальный перепад
setup_ccp1(CCP_COMPARE_SET_ON_MATCH);
};
if (++edge_idx == (num_ch+1)*2) {// пошла межкадровая пауза
edge_idx=0;
}
}

Здесь в edge[] записаны времена переключения порта ППМ (формируются отдельно в блоке математики), edge_idx-индекс этого массива, num_ch-количество формируемых каналов в пакете.

avisenja:

Всем привет!
Если дисплею положенно питаться по даташиту 2,7-3,3в, то и нечего его насиловать, понятие * ведь работает и от 5в * как базис --> сомнительно!

Я не предлагал питать дисплей 5 вольтами.

avisenja:

Вы * sslobodyan * целый год , выводили ПО, а я пока потратил 3 недели - урывками и просто физически всё сразу осмыслить невозможно, кстати, ещё добавлено часть кода, просто не до выкладывания сдесь, да и надо ли?

Я очень сильно сомневаюсь, что в Вашей программе кто-то еще сможет разобраться кроме Вас. Так что особого смысла в ее выкладывании я тоже УЖЕ не вижу.

avisenja:

А кое чего Вы просто не увидали, или незахотели, и сразу критик-горлопанство! не солидно, лодно, на палемику просто нет времени, да и желания.

Давайте свой исходник, тоже покритикуем, - ШУТКА! (лично мне не интерестно)

Молодой человек, Вы напоминаете мне меня самого лет так с 15 назад. Тоже за все хватался с неимоверным энтузиазмом. Это только потом приходит понимание, что не все так просто, как кажется на первый взгляд. Вот поэтому я и советовал Вам (именно советовал, а не критиковал и не горлопанил - не люблю людей, а особенно мне не знакомых, обижать) подумать, осмыслить и вникнуть в постановку задачи. Что Вы хотите сделать? Простой 4-канальник без наворотов типа еская? Или с нормальной математикой и возможностью настройки как у Фокуса и у брендов? Если Ваша задача - максимум, то решите, что будет самым в ней самым важным, а что пока можно отложить. Пока я увидел у Вас только простенький ви-хвост, да и то без возможности изменить степень влияния каждого микшируемого канала. Если я чего-то не заметил - не стесняйтесь, укажите мне и я заберу свои слова обратно. Для меня самым важным было как раз понять математику, как там все микшируется, как наложить кривую (экспоненту), где добавлять триммера и как ограничивать через ЕРА. А формировать ППМ на основе данных с АЦП - так таких кодеров куча в нете есть.
Давать свой исходник я Вам и не собираюсь. Там все на С, без асма.
Еще раз прошу прощения, что мог показаться резковатым - совсем не хотел никого обижать. В дальнейшем в полемику с Вами вступать не буду. Хочу чтобы все у Вас получилось и Вы могли с гордостью показать свой кодер, который не уступит Фокусу, а может и превзойдет его по функционалу.
Удачи!

enb65

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

sslobodyan
enb65:

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

Рад, что помог. Можете еще сюда заглянуть www.microchip.ru/lit/?mid=1x0
Если что, то давайте в личку.

михалыч2

но вот схему лучше адаптировать под 3.3 вольта, поскольку как раз таки почти все нормальные синтезаторы работают максимум от 3.3вольт! да и вообще я часто наблюдаю микросхемы которые работают в диаппазоне 2.5-5вольт. просто ну очень не хочется ставить столько сабилитронов 😉

avisenja

Всем привет!

Можно и 3,3в только в конфиге надо убрать сброс проца по снижению напряжения питания, и диоды прийдётся поставить с барьером шотки (малогабаритные!), т.к. порог переключения по напряжению из *1* в *0*, по входу у пика составляет 1в при питании 5в, а падение напряжения на кремниевом диоде в среднем 0,6-0,7в, вот и кумекайте.

Есть ещё одно общее правило, чем выше амплитуда сигналов управления, тем выше устойчивость к помехам.

Что дороже, модель или кучка стабилитронов?

Ладно…, у меня уже таймер тикает, правда за четыре минуты - секунда набегает, по мне этой точности ЗА ГЛАЗА.

михалыч2

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

avisenja

Всем привет!
Занимался со старым вариантом *эконом*, по-этому в новом, с инд от нокии 3310, маловато чего добавил.
Кстати, прежний вариант, чем-то более симп, а вот чем, немогу понять !?
TX это напр пинания передатч
А другое это вых мощность передатчика

22 days later
михалыч2

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

михалыч2

неужели никто не знает в чём может быть дело? плата собрана аккуратно, скоро фотку выложу. может быть дисплеи разные бывают? я покупал именно от нокии 3310 в профи

dollop

да, разные. Почитайте тут, мож прояснится…
Мне помогло, когда “самодельный передатчик” собирал на китайском дисплее от нокии 3310 (отличается от оригинального отсутствием надписи NOKIA на металле)

NRS63

Раз пошла такая пьянка,а чего-бы не замахнуться ,на Вильяма,этого,Сейчас весь модельный мир,в частности ,вертолётчики алчнут быстрой аппы,ну что-бы реакция была менее 10 мс,к слову и идея,поставить четыре синхронных ацп,пусть на 12ф675,не суть ,быстро оцифровать,и запхать в основной проц,через уарт например,неважно,главное ,прерывания сократятся,с ними сократятся и возможные задержки в передаче сигнала,ведь любая вешалка в итоге ведёт к непредсказуемым задержкам в обработке кода.Цена вопроса несущественна по сути,зато работа греет душу.😃

sslobodyan
NRS63:

Сейчас весь модельный мир,в частности ,вертолётчики алчнут быстрой аппы,ну что-бы реакция была менее 10 мс,к слову и идея,поставить четыре синхронных ацп,пусть на 12ф675,не суть ,быстро оцифровать,и запхать в основной проц,через уарт например,неважно,главное ,прерывания сократятся,с ними сократятся и возможные задержки в передаче сигнала,ведь любая вешалка в итоге ведёт к непредсказуемым задержкам в обработке кода

Не выйдет. РРМ-посылка идет через 20мс, поэтому даже если АЦП будет мегагерцовым, все равно изменение положения стиков приемник выдаст через почти 20мс. И ставить внешний АЦП - тоже от лукавого. А вот если своим протоколом вещать - то да, можно уменьшить задержку. Но это совсем другая тема с разработкой собственной ВЧ-части и приемников.

avisenja

Добрый день!
Время счёта АЦП в моей проге около 1,5мс для 8 каналов, поэтому внеш АЦП не надо !!!
Далее …, эффективная ширина полосы пропускания по НЧ, любого радиоканала т.е. (передатчик-приемник) от 300Гц до 3400Гц, а это для любимого всеми (но не мной) УАРТ - соответственно 300 - 3400 бод плюс подтверждение, и того в лучшем случае 2400 бод, поэтому все и лезут на 2,4ГГц, там чистая АМ (по физике процесса) и скорость можно сделать выше, т.к. нет фильтрации по НЧ ( т.е. гребёт все подряд и математикой отсекает). Из личного опыта, УАРТ любят только программисты, и всюду его суют, не понимая физики процессов присходящих в радиоканале, это вам не модем по проводам соединить!!! И не USB, и не RS485, и даже не CAN.

А РРМ можно модефицировать, ведь стандартов для передачи цифрового сигнала, именно по радиоканалу, огромное множество! (у мотороллы например).

михалыч2

вот здесь я посмотрел: vrtp.ru/index.php?act=categories&CODE=article&arti… , парень делал приёмник с дисплеем, причём в нём стоит абсолютно такой же дисплей что и у меня то есть без надписи nokia, и всё нормально функционирует. да и как это может быть, если бы я захотел поставить неоригинальный дисплей на телефон, дисплей что не запустится? это смешно, ведь брал для нокии 3310, и выглядит как у всех

avisenja

Всем привет!
Слепил макет под свои дела, купил ещё один индикатор(китай), прогу для проверки взял от кодера, запустилось с пол пенка, так-что, с прогой всё ОК!
Разбирайтесь, где у вас чего не так.

Чего-то заходить на этот сайт стало тяжко?

dollop
михалыч2:

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

В телефоне он бы 100% заработал. А в самоделке, только автор прошивки знает, как сделана инициализация дисплея. А контроллеры в оригинальном и некоторых китайских дисплеях отличаются. Поэтому и другой набор команд и результаты работы дисплея в некоторых конкретных случаях.

avisenja

clok и data перепутал на схеме, и все молчат.
прошивка чуть добавлена.

михалыч2

то есть на дислпее слок и дата нужно местами поменять?, и ещё вопросик, можно ли внутрисхемно перепрошивать этот пик? дело в том что при программировании программатор выдаёт на какой то вывод 12 вольт, а он может быть подключён к чему нибудь.

вот моя плата

Igelsoft

Можно. Почитайте в мануале про реализацию ICSP. 12 вольт подается на MCLR/VPP. Если вывод используется для подключения внешней цепи сброса, ее развязываем диодом шоттки, ну или резистором накрайняк. Если как цифровой вход - необходимо предусмотреть схему изоляции. А можно и джамперами например ))