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

msv

msv, накидал свою версию меню, посмотри, может сделаешь на ней.

У меня получилось наверное менее изящно.

enum TYPE_MENU_ITEM{ TMI_FREE, TMI_SUBMENU, TMI_ENUM, TMI_U_CHAR, TMI_S_CHAR, TMI_INT };
enum TYPE_DRAW_MSG{ TDM_CAPTION, TDM_ITEM_CAPTION, TDM_ITEM_PARAM, TDM_SCROLL_LINE };
#define MAX_LIST_LINES 4
#define MAX_MENU_ITEMS 11
#define MAX_DEPTH_MENU 5
//---------------------------------------
typedef struct {
flash char *Caption; // Заголовок
u_char Type; // Тип. см. TYPE_MENU_ITEM
s_int MinValue; // Мин. значение
s_int MaxValue; // Мах. значение
s_int Step; // Шаг/направления изменения
u_char OffPar; // Сдвиг параметра по X (0-default)
flash char ** EnumCapts; // Заголовки для TMI_ENUM
flash void *SubMenu; // Подменю для TMI_SUBMENU
}ITEM_DEF;
//---------------------------------------
typedef struct {
flash char *Caption; // Заголовок
flash ITEM_DEF * Items; // Пункты меню
// Аналог конструктора (или=0)
void (* MenuInit)(u_char sel, u_char top, u_char parent_item_ind);
// Процедура отрисовки (или=0)
// type тип сообщения см.TYPE_DRAW_MSG,
// возвращаем 1- разрешить дефолтовый обработчик, 0- запретить
u_char (* OnDraw)(u_char type, u_char y, u_char item_ind );
// Обработчик событий клавы. (или=0)
// флаги нажатых кнопок в глоб. переменной mnu_keys
// там же соот флаги сбросить, для блокировки стандартной обработки.
void (* OnKeys)(void);
} MENU_DEF;
//---------------------------------------
MENU_DEF flash * ME_CurMenu; // текущее меню
u_char ME_SelItem; // Выбранный элемент
u_char ME_TopItem; // Верхний элемент
void *ME_PV[MAX_MENU_ITEMS]; // Указатели на переменные параметров
bit ME_FEdit; // Флаг редактирования
// Поддержка иерархии меню
typedef struct {
flash MENU_DEF *menu;
u_char SelItem;
u_char TopItem;
}MENU_STACK;
MENU_STACK ME_Stack[MAX_DEPTH_MENU];
u_char ME_Stack_Pos;
// Флаги нажатых клавиш
u_char mnu_keys;

meKOil

2 EagleB3 - спасибо.

И даже еще интереснее - даже транзисторы VT1 + VT2 могут оказаться не нужными. Зависит от схемотехники радиомодуля.

…VT4+VT5…?

А кто нибудь скажет по поводу распиновки ВЧ модуля? Или как определить где какой вывод?

EagleB3

Да-да, именно VT5 и VT4. Сорри…
Можно измерить ток, который потребляет модуль в высоком (и низком? Мало ли что…) состоянии PPM. Если этот ток меньше предельно допустимого для меги128 на одну ногу - то можно обойтись без них, КМК.

Dimonoz
msv:

Похоже довыпендривался с чехардой версий до первой помидорины на форуме…
Ну когда то ж надо начинать… 😃
.

Прошу прощния за помидор, хотел спасибо сказать, но похоже телефон заглючил. Получилось и спасибо и помидор.
В данный момент использую прошивку 1.7, все нравится, когда надоест залью новую.Kак будет время хочу начать учить С и покопаться в прошивке. Пока такой вопрос: как можно в версии 1.7 расширить графический индикатор батареи до 12,6В (использую липольки) и полностью убрать измерение тока в антенне и температуры?

Nick_Shl
msv:

С тем, что сейчас наворочено, может разобраться только автор (да и то с трудом…).

Самое главное в этом деле - форматирование и документирование. Иначе и дальше не разберётесь. Забывается всё очень быстро…
Ну и обязательно применение системы контроля версий - я использую TortoiseSVN и Araxis Mergre для сравнения файлов. Если есть желание могу небольшой ликбез по использованию устроить…

EagleB3:

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

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

EagleB3:

Сегодня полдня убил на то, чтобы увидеть Мегу128 программатором (по интерфейсу SPI, через разъем XT3). Чуть не рехнулся, пока не понял, что для этого надо ногу №1 (!PEN) посадить на землю.

Вот описание из даташита: “PEN is a programming enable pin for the SPI Serial Programming mode, and is internally pulled high . By holding this pin low during a Power-on Reset, the device will enter the SPI Serial Programming mode. PEN has no function during normal operation.” Хотя я вроде-бы никуда его не подключал…

EagleB3:

Прошить бутлоадер необходимо для дальнейшего “самопрограммирования”? Или он необходим даже при работе через CVAVR?

Если шить программатором - бутлоадер не нужен.

Aleksey_Gorelikov:

Для подавляющего большинства передатчиков - в стиках резестивное покрытие имеется только в секторе хода ручек. Выставление AREF не имеет смысла, как и установка подстроечного резистора. Исключения составляют старинные пульты типа “Супранар”. Во всех остальных оптимальная регулировка должна получаться в положении подстроечника “замкнуто”.

А вот и нифига! В Hitec Laser 6 стики используют не весь диапазон…

msv:

У меня получилось наверное менее изящно.

Вот, вот она лажа с этими АВР! Плохая архитектура для нашего применения - у неё различная память по разному адресуется, а это значит что нельзя в функцию передавать указатель как на данные во флеше, так и на данные в ОЗУ. В конкретном примере нет возможности создания динамичных заголовков меню. Например, я хотел сделать формирование заголовка как “CH %d Mixer” и обломался. А сделать всё из ОЗУ нельзя - его и так мало… Так что действительно

DD:

АРМ надо

У них всё в одном адресном пространстве. Более того - там есть возможность подцепить SD карточку, загружать с неё код программы в ОЗУ и исполнять его оттуда. Например реализовать таким образом драйвера доп устройств(тот же термометр, тахометр, измеритель антенного тока), ну или игрушки 😃.

EagleB3
Nick_Shl:

"…device will enter the SPI Serial Programming mode. PEN has no function during normal operation." Хотя я вроде-бы никуда его не подключал…

Читал… Тыкал тестером - да, он, похоже, реально изнутря подтянут к VCC. Мучал вопросами народ на “телесистемах” - никто с ним ничего не делает, так и висит в воздухе. И программируется нормально.
И здесь ни у кого никаких проблем/вопросов не было.

А у меня: пока на землю не посажу - не программируется. Пока с земли не отпущу - в рабочий режим не переходит. Вывел его в разъем программирования и добавил в “маму” перемычку. Но все же как-то странно… 😃
И неудобно - приходится разъем постоянно снимать/ставить.

Надо еще инет порыть…

VRV

Самое главное в этом деле - форматирование и документирование. Иначе и дальше не разберётесь. Забывается всё очень быстро…
Ну и обязательно применение системы контроля версий - я использую TortoiseSVN и Araxis Mergre для сравнения файлов. Если есть желание могу небольшой ликбез по использованию устроить…

Если данная ветка позволяет-было бы интересно ознакомится.

Вот, вот она лажа с этими АВР! Плохая архитектура для нашего применения - у неё различная память по разному адресуется, а это значит что нельзя в функцию передавать указатель как на данные во флеше, так и на данные в ОЗУ. В конкретном примере нет возможности создания динамичных заголовков меню. Например, я хотел сделать формирование заголовка как “CH %d Mixer” и обломался. А сделать всё из ОЗУ нельзя - его и так мало… Так что действительно

Ну пожалуй от мк и не стоит требовать возможностей АРМ и х86 архитектур- задачи у них разные. А по сему обектное програмирование реализуется в мк в урезанном виде. Долго пытался найти компромис в данном вопросе- итог- нечто среднее между первыми версиями данного проекта и меню Николая. Наверное повторюсь, но всеже- главной задачей данного проекта (иначе проще купить готовую апу) считаю возможность изменения функциональность (добавить/убрать функции) в зависимости от предпочтений пользователя. Поэтому движок меню должен иметь минимальные возможности по отображению/перемещению по пунктам меню. Сама структура меню должна быть понятна на этапе инициализации


flash MENU_STRUCT MenuTable[MenuMaxItems]=
{
//-|---NameMenuDisp---|------|level|--|----Param-|-------|---------FUNC----------
{"SCR",                       0,        0,                   &ShowMainDisp},
{   "Main",                   1,        0,                   &ShowStdMenuDisp},
{     "Model",                2,        0,                   &ShowStdMenuDisp},
{       "Select",             3,    MAX_MODELS,              &ShowSelectModelDisp},
{       "Save",               3,    MAX_MODELS,              &ShowSaveModelDisp},
{       "Name",               3,    MAX_MODELS_NAME+1,       &ShowModelNameDisp},
{       "Mode",               3,        0,                   &ShowStdMenuDisp},//&&
{     "Settings",             2,        0,                   &ShowStdMenuDisp},
{       "Controls",           3,        0,                   &ShowStdMenuDisp},
{          "Curve",           4,    CURVE_NODES+1,           &ShowCurveDisp },
{          "DR&Exp",          4,        3,                   &ShowDRExpDisp},
{          "Swich",           4,        4,                   &ShowSwichDisp},
..........................................................................

пункты должны удалятся/добавлятся не требуя изменения кода программы за исключением кода, отвечающего за отображение соответствующего пункта.
Т.е. желающему модифицировать прошивку под себя допустим добавлением тахометра нужно будет вставить соотв. пункт в структуру меню и накиидать функцию отображения и изменения параметра. К сожалению реально в программном развитии пректа заинтересоваными оказались лиш 3 человека:)

EagleB3

Кажется, нашел я причины фигни с ногой !PEN. На ГАВе (www.gaw.ru/html.cgi/txt/doc/micros/…/19_2.htm):
====================================================================
Последовательность подачи питания: подать напряжение питания между VCC и GND, когда на входах RESET и SCK присутствует лог. 0. В некоторых системах, программатор не может гарантировать, что SCK = 0 при подаче питания. В этом случае необходимо сформировать положительный импульс на RESET длительностью не менее двух тактов ЦПУ после того, как SCK принял низкое состояние. Альтернативно сигналу RESET можно использовать вывод PEN. В этом случае будет важно только значение PEN во время сброса при подаче питания. Если программатор не гарантирует, что при подаче питания SCK =0, то использование PEN недопустимо. При использовании данного метода микроконтроллер может вернутся к нормальному режимы работы только снятием и возобновлением питания.
====================================================================

Похоже, что у меня сигнал Reset слишком короткий. Хотя до сих пор ни один камень не жаловался…

Aleksey_Gorelikov
Nick_Shl:

А вот и нифига! В Hitec Laser 6 стики используют не весь диапазон…

Значит хреновый объект модернизации 😃… В таком случае лучше использовать АЦП в диф. режиме. А пляски с регулировкой АРЕФ всеравно не лучшее решение.

msv

К сожалению реально в программном развитии пректа заинтересоваными оказались лиш 3 человека

Так а что Вы хотите? Выложите свою версию с исходниками, и заинтересованных прибавится… Свое мнение о нецелесообразности коллективного развития столь несложножной поделки, уже неоднократно высказывал. Прийдется подстраиваться к чужим идеям, структурам, интерфейсам, стилю итп. А это требует серьезного менеджмента и займет больше времени, чем все еще раз под себя переписать.
Вот когда перейдем на ARM, начнем писать операционку для него, ну и дальше интерпретатор жавы, мр3-кодер, блюпуп с тачхрином приворачивать, тогда да… в одиночку сложновато справится будет… 😃

Denn

“К сожалению, реально в программном развитии проекта заинтересованными оказались лишь 3 человека”

А все ли могут программировать достаточно серьёзные вещи?
И опыт, и знания у всех разные…

VRV
msv:

Так а что Вы хотите? Выложите свою версию с исходниками, и заинтересованных прибавится… Свое мнение о нецелесообразности коллективного развития столь несложножной поделки, уже неоднократно высказывал. Прийдется подстраиваться к чужим идеям, структурам, интерфейсам, стилю итп. А это требует серьезного менеджмента и займет больше времени, чем все еще раз под себя переписать.
Вот когда перейдем на ARM, начнем писать операционку для него, ну и дальше интерпретатор жавы, мр3-кодер, блюпуп с тачхрином приворачивать, тогда да… в одиночку сложновато справится будет… 😃

Собственно с исходниками проблем нет.
narod.ru/disk/16006018000/prj.rar.html
В архиве сам проектик в кодевижене ии модель в протеусе- ррм-ппэмит, энкодер работает итд.
Реализовано большинство базовых функций.Если найдутся заинтересованые- постараюсь обяснить что-почему, но вроде все должно быть ясно. Проект особо не документировался:(, многие куски вставлены контрол-с, но большинство кода было переработано.
Вобщем надеюсь на заинтересованность(будет интересна и критика с исправленым кодом 😃).

jonison

сейчас посмотрим

хочется сравнить с 1.8
и посмотреть что нового

СЕРЖЖ

Если можно, пожалуйста, выложите прошивку v.1.8 под дисплей NOKIA3410. Заранее благодарен.

СЕРЖЖ

Прошу прощения, но это чото не то или я чего-то не понял

jonison

все правильно ето на 3410
прошивай должон работать

Aviator73

Коллеги, ткните носом, где можно посмотреть методику настройки ВЧ-модуля, который в этом топике выложен. А то при внедрении кодера внутрь своего Flash-4 случайно коротнул ламели батарейного отсека на ВЧ-часть платы. Вышедшие из строя транзисторы заменил, вроде работает, но сильно греется выходной транзистор ( у меня спиральная антенна, настраивал по Глайдеру).
Пока внутрь не лазил не знал, что транзистор греется - передатчик работал отлично. Может он и раньше грелся, а может после расстройства катушек начал.

Интересует настройка предвыходного каскада и П-фильтра выходного каскада.
Из инструментов есть тестер, осциллограф. Радиолюбительский опыт большой, только с ВЧ-техникой дел до сих пор не имел.

Буду рад любой помощи.
Спасибо!