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

avisenja

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

Ограничения такие:
1 исходник только на АССЕМБЛЕРЕ
2 пикушник например PIC16F876А или на край PIC16F877А, смд 8К памяти
3 дисплей от сот, скажем нокиа 3310
То-есть, интерестно, на сколько можно ужаться.

Конечно можно взять и чего пожирнее напр PIC18F4550 - 32К или вообще
PIC18F6722 - 128К, но это скучно, нет азарта.

для начала, хотябы вот

ubd

Идея хорошая, согласен. Тем более для любителей самому собирать.
Да и вообще, что бы мозги не засыхали.

Но я что то тут не вижу экономности. PIC16F876 стоит не намного дешевле ATMega128, помоему разница рублей в 100. Вот и вся экономия. В остальном все теже затраты: экран тот же, обвес тот же - кнопки, тумблера и т.д.
Тем более у PIC16F876 маловато портов. Много не навешать. Например цифровые тримера, дискретные каналы, кнопки навигации по меню, входы АЦП для джойстиков, экран, и того - не хватает портов.

jonison

А куда бюджетнее фокуса ?
если хочется мозги размять то конечно да
но в итоге выигрыш + - 100р. смысл?

avisenja

Всем привет!
Есественно -> токо для гимнастики УМА! Его серенького!
Что-бы влезть в ограничение ресуры, то-ко 8 кило и усё!
А стольник это и считать не нужно, иногда вечерок, другой, потраченный за зря, в пересчёте на денежку, в такие убытки может встать, что - ОГО!!!

Поэтому разговор совсем не о деньгах.
Ладно, щас подрисую тут одно *сокровище* на PIC16F877А (чтоб ног хватило), и можно поуражняться, кому захочется, конечно.

ubd

Ну я надеюсь проект будет открытый?

msv

Код в соседней ветке - 34К. Жутко не оптимален, можно ужать довольно прилично. Но для любого проекта имеет смысл (а значит и интерес) иметь сверхзадачу- например действительно макс. бюджетно, или макс. функционально, или мин трудозатрами. Правда иметь именно свою разработку - тоже вполне достойная задача.
Писать на асме только из “вредности”, неоправданный расход времени. Если бы я свой проект OSD-телеметрия/автопилот чисто на асме делал, времени бы ушло на прядок больше. А так, там асма только ~25%, по причинам действительно необходимой оптимизации,- уложился всего за ~месяц неспешной работой по вечерам…
Все имхо…

avisenja

Всем привет!
Откываю всё что успеваю оформлять, про других незнаю, тут кто как.

sslobodyan
avisenja:

Что-бы влезть в ограничение ресуры, то-ко 8 кило и усё!

Ладно, щас подрисую тут одно *сокровище* на PIC16F877А (чтоб ног хватило)

Тоже страдал такой “болезнью”.
Правда, не долго. Перешел на 4620 и теперь не парюсь с размером.
По ходу дела увидиш, что математика кодера займет от силы четверть обьема, а остальное уйдет под сервис и интерфейс с пользователем. Писать интерфейс на асме - без меня.

avisenja

Всем привет!
Вот произвёл маленькое ПОДрисование. Основа не моя, инд прилепил тока.

ubd

Что то ты там наворотил… Зачем там везде стабилитроны 5V1, и какие то резисторы по 240 ом?
Там можно половина элементов убрать. Смотри схему от msv на Mega 128, схему можно сделать ту же, с небольшими изменениями, связанными с заменой проца на PIC.
Например можно убрать подтягивающие резисторы с порта В, т.к. можно включить внутренние подтяшивающие резисторы 20К на +5В, они на этом проце могут устанавливаться как раз только на порте В. См. регистор OPTION_REG,
И что такое UpowTX?
И нет смысла делать выход на сентизированный передатчик. Это уже всё, прошлый век, сейчас 2,4G рулит. Тем более цены на 2,4G передатчика и приёмники, падают с каждым днём, скоро будут стоить копейки, и не будет смысла городить самодельный передатчик на 40 мгц, тем более сентизаторый, и сидеть с его настройкой - месяц.
С подключением дисплея, согласен, но хотя на схеме msv от 5В, всё пашет.
Ну и предусмотреть выход для внутрисхемного программирования, не мешало бы.
Могу привести пример, как сделать удобно.

avisenja

Всем привет!
Насчёт кондёров и резисторов, то я имею немалый практический опыт, кому не нравиться, может вообще ничего не ставить в обвязке, но с глюками пусть разбирается сам.
С программированием проблем СОВСЕМ нет! Самым традиционным способом, примочка от ПОНЬКИ и icprog, плюс переключ, кнопку нажал- влил- отжал. Когда нравиться результат, кнопку меняю на джампы.
2,4 Gолубозубые не трогают совсем, чесное слово НУ …СОВСЕМ !!!
За соучастие спасибо.

avisenja

Всем привет!
Ежели сильно не карячиться над мультиками, то начну с такого варианта, а дальше но остаткам памяти посмотрим, какое *многомордие 😁(интерфейс)* выйдет.

avisenja

Всем привет!
Интересно, это только мой инд от нокиа 3310 с такими заморочками или они все управляемые по шине SPI такие!
Объясняю, если загружаеш озу инд и в этот момент происходит прерывание, напримет от таймера, то происходит в дальнейшем сбой правильного отображения инфы на время до след обновления дисплея, с другими дисп, где шина данных параллельная такого никогда не происходит.

ubd

Спроси у Сергея msv, он может быть поможет.

msv

Да если бы знал, помог… По идеи синхронный протокол с отдельной синхронизирующей шиной не критичен к времени передачи бита. Но кто его(контроллер индикатора) знает, в каких пределах это время допустимо…

avisenja

Всем привет!
А , буду кусками код пихать в синхро паузе, не беда.

sslobodyan
avisenja:

Вот ещё малость намолотил!

Бегло пробежался по коду.
Очень рекомендую Вам перейти на С. И используйте аппаратные возможности Пика - модуль ССР для формирования ППМа и модуль SSP для работы по SPI.
И продумайте сразу ядро вашей системы. Я когда писал свой кодер, несколько раз менял идеологию работы ядра. Даже ОС пытался использовать.
Удачи Вам и творческого вдохновения!

avisenja

Всем привет!
Ну … ВОТ! Основные функции сделал, РРМ 8 каналов - молотит на всю, параметры читаю из памяти и сохраняю - по 8 моделям, клавиатура , инверсия каналов, … и ещё много чего, а памяти программ контроллера ушло около 1,8 Килобайт ??? (правда черновая прога, можно и поджать!)
Из доступных 8 кило ! А вот наверное *многомордие*, остальное и съест, хе-хе !

msv

Не понимаю термин *многомордие*, наверное имеется в виду “междумордие”? 😃
Да, это значительно большая часть кода. Совет - не поленитесь, составте сразу диаграмму обработки сигналов, поможет в тч. для формирования структуры меню.

7 days later
ВитГо
avisenja:

Всем привет!
Вот произвёл маленькое ПОДрисование. Основа не моя, инд прилепил тока.

почему то гифчик не открывается… говорит ошибка формата 😦(
можно во что нить другое пожать ?

ВитГо

намного лучше!! но в области клавиатуры все равно мелко очень…
но все равно спасибо, очень интересно

ubd

Картинки лучше в архив, а то форум уменьшает.

enb65

Разрешите и мне немного по обсуждать данный проект. Прежде всего спасибо автору за предмет обсужения. Я тоже решил попробывать сделать свой кодер для передатчика на PICе. Правда я не ставил целью эконом вариант поэтому выбрал для старта PIC 18F14(13)K50 он имеет USB порт. А теперь несколько слов о проекте.

  1. PIC16F877 уже не рекомендуют вместо него предлагают PIC16F887 и он имеет 14 входов для АЦП. Это важно. Можно использовать одну из особенностей PIC овского АЦП, а именно Vref- и Vref+. Установить Vref- равным минимальному напряжению с потенциометра ручки, а Vref+ - максимальному. Тогда можно с хода ручки ±30 градусов снять 1024 бита (или около того).
  2. Использовать таймера для формирования всех временных параметров сигнала PPM c точностью до 1 микросекунды (правда надо подсчитать получиться ли это на 8 разрядных таймерах) Я попробывал реализовать эти предложения на том PICе что был у меня под рукой PIC18F458 с 16МГц кварцем. Код, правда он на C, прилагаю. Повторяю, это проверочный код, но сигнал PPM он генерит очень хороший.

Test.zip