Самодельный передатчик (часть 2)
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;
2 EagleB3 - спасибо.
И даже еще интереснее - даже транзисторы VT1 + VT2 могут оказаться не нужными. Зависит от схемотехники радиомодуля.
…VT4+VT5…?
А кто нибудь скажет по поводу распиновки ВЧ модуля? Или как определить где какой вывод?
Да-да, именно VT5 и VT4. Сорри…
Можно измерить ток, который потребляет модуль в высоком (и низком? Мало ли что…) состоянии PPM. Если этот ток меньше предельно допустимого для меги128 на одну ногу - то можно обойтись без них, КМК.
Похоже довыпендривался с чехардой версий до первой помидорины на форуме…
Ну когда то ж надо начинать… 😃
.
Прошу прощния за помидор, хотел спасибо сказать, но похоже телефон заглючил. Получилось и спасибо и помидор.
В данный момент использую прошивку 1.7, все нравится, когда надоест залью новую.Kак будет время хочу начать учить С и покопаться в прошивке. Пока такой вопрос: как можно в версии 1.7 расширить графический индикатор батареи до 12,6В (использую липольки) и полностью убрать измерение тока в антенне и температуры?
С тем, что сейчас наворочено, может разобраться только автор (да и то с трудом…).
Самое главное в этом деле - форматирование и документирование. Иначе и дальше не разберётесь. Забывается всё очень быстро…
Ну и обязательно применение системы контроля версий - я использую TortoiseSVN и Araxis Mergre для сравнения файлов. Если есть желание могу небольшой ликбез по использованию устроить…
И сделал так, чтобы ни одна ныне пустая нога процессора не осталась без дорожки с контактной площадкой - потом будет можно легко проводишку припаять, если занадобится.
Я тоже так сделал, только вместо площадок использовал игольчатые контакты, а для ответок обжатые провода выдранные из компьютерного хлама.
Сегодня полдня убил на то, чтобы увидеть Мегу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.” Хотя я вроде-бы никуда его не подключал…
Прошить бутлоадер необходимо для дальнейшего “самопрограммирования”? Или он необходим даже при работе через CVAVR?
Если шить программатором - бутлоадер не нужен.
Для подавляющего большинства передатчиков - в стиках резестивное покрытие имеется только в секторе хода ручек. Выставление AREF не имеет смысла, как и установка подстроечного резистора. Исключения составляют старинные пульты типа “Супранар”. Во всех остальных оптимальная регулировка должна получаться в положении подстроечника “замкнуто”.
А вот и нифига! В Hitec Laser 6 стики используют не весь диапазон…
У меня получилось наверное менее изящно.
…
Вот, вот она лажа с этими АВР! Плохая архитектура для нашего применения - у неё различная память по разному адресуется, а это значит что нельзя в функцию передавать указатель как на данные во флеше, так и на данные в ОЗУ. В конкретном примере нет возможности создания динамичных заголовков меню. Например, я хотел сделать формирование заголовка как “CH %d Mixer” и обломался. А сделать всё из ОЗУ нельзя - его и так мало… Так что действительно
АРМ надо
У них всё в одном адресном пространстве. Более того - там есть возможность подцепить SD карточку, загружать с неё код программы в ОЗУ и исполнять его оттуда. Например реализовать таким образом драйвера доп устройств(тот же термометр, тахометр, измеритель антенного тока), ну или игрушки 😃.
"…device will enter the SPI Serial Programming mode. PEN has no function during normal operation." Хотя я вроде-бы никуда его не подключал…
Читал… Тыкал тестером - да, он, похоже, реально изнутря подтянут к VCC. Мучал вопросами народ на “телесистемах” - никто с ним ничего не делает, так и висит в воздухе. И программируется нормально.
И здесь ни у кого никаких проблем/вопросов не было.
А у меня: пока на землю не посажу - не программируется. Пока с земли не отпущу - в рабочий режим не переходит. Вывел его в разъем программирования и добавил в “маму” перемычку. Но все же как-то странно… 😃
И неудобно - приходится разъем постоянно снимать/ставить.
Надо еще инет порыть…
Самое главное в этом деле - форматирование и документирование. Иначе и дальше не разберётесь. Забывается всё очень быстро…
Ну и обязательно применение системы контроля версий - я использую 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 человека:)
Кажется, нашел я причины фигни с ногой !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 слишком короткий. Хотя до сих пор ни один камень не жаловался…
А вот и нифига! В Hitec Laser 6 стики используют не весь диапазон…
Значит хреновый объект модернизации 😃… В таком случае лучше использовать АЦП в диф. режиме. А пляски с регулировкой АРЕФ всеравно не лучшее решение.
К сожалению реально в программном развитии пректа заинтересоваными оказались лиш 3 человека
Так а что Вы хотите? Выложите свою версию с исходниками, и заинтересованных прибавится… Свое мнение о нецелесообразности коллективного развития столь несложножной поделки, уже неоднократно высказывал. Прийдется подстраиваться к чужим идеям, структурам, интерфейсам, стилю итп. А это требует серьезного менеджмента и займет больше времени, чем все еще раз под себя переписать.
Вот когда перейдем на ARM, начнем писать операционку для него, ну и дальше интерпретатор жавы, мр3-кодер, блюпуп с тачхрином приворачивать, тогда да… в одиночку сложновато справится будет… 😃
“К сожалению, реально в программном развитии проекта заинтересованными оказались лишь 3 человека”
А все ли могут программировать достаточно серьёзные вещи?
И опыт, и знания у всех разные…
Так а что Вы хотите? Выложите свою версию с исходниками, и заинтересованных прибавится… Свое мнение о нецелесообразности коллективного развития столь несложножной поделки, уже неоднократно высказывал. Прийдется подстраиваться к чужим идеям, структурам, интерфейсам, стилю итп. А это требует серьезного менеджмента и займет больше времени, чем все еще раз под себя переписать.
Вот когда перейдем на ARM, начнем писать операционку для него, ну и дальше интерпретатор жавы, мр3-кодер, блюпуп с тачхрином приворачивать, тогда да… в одиночку сложновато справится будет… 😃
Собственно с исходниками проблем нет.
narod.ru/disk/16006018000/prj.rar.html
В архиве сам проектик в кодевижене ии модель в протеусе- ррм-ппэмит, энкодер работает итд.
Реализовано большинство базовых функций.Если найдутся заинтересованые- постараюсь обяснить что-почему, но вроде все должно быть ясно. Проект особо не документировался:(, многие куски вставлены контрол-с, но большинство кода было переработано.
Вобщем надеюсь на заинтересованность(будет интересна и критика с исправленым кодом 😃).
сорри не ту ссылку дал, вот правильная prjmod.rar
сейчас посмотрим☕
хочется сравнить с 1.8
и посмотреть что нового
Если можно, пожалуйста, выложите прошивку v.1.8 под дисплей NOKIA3410. Заранее благодарен.
Вот для 3410 😒
Прошу прощения, но это чото не то или я чего-то не понял
все правильно ето на 3410
прошивай должон работать
Так где HEX файл
вот😁
Коллеги, ткните носом, где можно посмотреть методику настройки ВЧ-модуля, который в этом топике выложен. А то при внедрении кодера внутрь своего Flash-4 случайно коротнул ламели батарейного отсека на ВЧ-часть платы. Вышедшие из строя транзисторы заменил, вроде работает, но сильно греется выходной транзистор ( у меня спиральная антенна, настраивал по Глайдеру).
Пока внутрь не лазил не знал, что транзистор греется - передатчик работал отлично. Может он и раньше грелся, а может после расстройства катушек начал.
Интересует настройка предвыходного каскада и П-фильтра выходного каскада.
Из инструментов есть тестер, осциллограф. Радиолюбительский опыт большой, только с ВЧ-техникой дел до сих пор не имел.
Буду рад любой помощи.
Спасибо!