Самодельный передатчик (часть 2)
А кто нить замерял насколько много времени занимает по пиксельное рисование экрана ? особенно инверсных надписей да и надписей вообще ?
пишу для ТЮФ (Турниги\Юрки\ФлайСкай) - там экранная память организована таким образом что вывод символов с координатами Y кратными 8 - будет заключаться в копировании из знакогенератора 5-6-7 байт… правда знакогенератор должен по другому символы описывать… но я уже и шрифт нашел положенный набок 😃 (от мк161)
стоит переписывать процедуру вывода символа - или эти высвобожденные ресурсы все равно погоды не сделают ?
В 3310 она организована точно также. Выводить символы копированием байтов имеет смысл при чисто текстовом индикаторе, это упрощает код. При графическом режиме работы индикатора выводить шрифт лучше попиксельно, тогда делается функция PutChar(x,y,char) и символы рисуются в любом месте индикатора, да и делать вывод шрифтом разного размера проще.
еще один вопросик про синтаксис СИ
есть структура например такая
typedef struct {
unsigned char MODEL_TYPE; // тип модели
int EPR; // например крайняя правая точка канала
} MODEL;
можно ли создать массив указателей на эти параметры ?
что то типа
int *valpoint[2] = { &(int) MODEL.MODEL_TYPE, &MODEL.EPR }
что и где чем является я буду программно отслеживать… нужно чтобы массив адресов на параметры мог указывать на разные типы данных…
пока получаю ошибку компилятора что например MODEL_TYPE имеет тип unsigned char, а не например int…
или мне нужно как то по другому структуру модели определять?
даже наверное не int *varpoint а просто какой то тип pointer… что нить такое в си есть ?
Есть, называется void*, но тогда Вам придётся всегда помнить, на что оно указывает…
Например:
int A;
char B;
void* p = (void*)&A;
void* q = (void*)&B;
int a = *(int *)p;
char b = *(char *)p;
Здесь (int*)p – преобразование p к типу “указатель на int”, а *(int*)p уже даёт тот самый int.
Наконец появилось свободное время! Проверил работу кодёра в том месте, где было подозрение на ошибку - всё работает нормально!
Сергей, спасибо ещё раз!
Здравствуйте. Уже месяца 2 прошло как поставил себе этот кодер с прошивкой1.8. Все заработало с первого раза!!! Но вот не могу понять: когда летаю на реальной модели - все работает прекрасно. А вот при подключении к любому из симуляторов рычажки на экране время от времени начинают хаотично дергаться в разные стороны. Иногда могу час пролетать - ни чего не происходит, а иногда летать просто не возможно! Кабель пробывал и USB, и через вход звуковой карты подключал - НИ ЧЕГО НЕ ПОМОГАЕТ… ЧТО ДЕЛАТЬ ??? Подскажите, если кто сталкивался с таким…
КМК, фигня на участке от платы кодера до разъема, с которого снимаешь PPM.
Или, например, контакт в разъеме пошаливает. Может, просто грязный он там - вот и гуляют потенциалы…
Народ, как вы правите платы в sprint?! Ужас то какой если хочешь под себя поправить.
А в diptrace-е никто схему не набрасывал? Или кто может перегнать схему от Omegats из игла?
Diptrace, к стате, для любителей (2 стороны и до 1000 выводов) в СНГ бесплатен (эта версия игл не импортирует).
Но вот не могу понять: когда летаю на реальной модели - все работает прекрасно. А вот при подключении к любому из симуляторов рычажки на экране время от времени начинают хаотично дергаться в разные стороны. Кабель пробывал и USB, и через вход звуковой карты подключал - НИ ЧЕГО НЕ ПОМОГАЕТ… ЧТО ДЕЛАТЬ ??? Подскажите, если кто сталкивался с таким…
У меня то-же самое с Futaba-6EX!
У меня то-же самое с Futaba-6EX!
И как Вы с этим боретесь ???
Да теперь никак, не пользуюсь симулятором и всё. В реале всё нормально. Имею 5 самолетов, все записаны в память аппи, 6-й сим (пробовал переносить на другой канал). Проблемы начались после переустановки Windows, а может просто совпало. Надо проверить с другим USB шнурком, с другим компом пробовал. Изначально, пару лет назад, тоже были некоторые проблемы. Удалось победить тщательными настройками сима. Теперь просто оптала необходимость в нём, даже после перерыва на зиму полетал нормально, без сима.
Люди добрые, подскажите кто нибудь чего еще такого сделать надо, чтоб кодер калибровку прошел.
сделано:
- поправлены резисторы чтоб в мин было почти 0 В;
- выставлено опорное напряжение;
- стики подвигал, на дисплее обозначения центральных точек появились
давлю вправо - термометр, еще вправо - пишет что типа газу убавить надо, убавляю, а надпись не пропадает и пищит дико. Выкл, вкл… ааааа, опять калибровка. Каналы не попутал, сразу говорю, пробовал убавлять и прибавлять все что можно - не помогает
- выставлено опорное напряжение;
Владимир, какое опорное получилось? И визуально на дисплее стики от края до края двигаются?
- стики подвигал, на дисплее обозначения центральных точек появились
давлю вправо - термометр
Центральные точки - по всем пяти каналам?
еще вправо - пишет что типа газу газу убавить надо. Убавляю, а надпись не пропадает и пищит дико.
Какая версия прошивки?
Выкл, вкл… ааааа, опять калибровка.
Очень странно. Если между калибровкой стиков и калибровкой термометра не было написано, что calibration incorrect, то калибровка выполнена. И в EEPROM это записано, и при повторном входе калибровку просить не должны (если только какая-то кнопка меню не зажата при включении аппы).
…Компилятором владеешь или только готовыми hex’ами пользуешься?
Да, по всем пяти.
Пробовал всякие с 1.7 до 1.9.1 - результат тотже(в 1.7 не пишет про газ, а просто не работает как должен работать).
Кнопки не зажаты, шил и хексами и компилил заливал, безрезультатно.
Мега чтоли с битой ЕПРОМ, хотя когда прошиваешь(прошить все кнопка) шьет и проверяет(тока ругается что типа прошивки на ЕПРОМ нету).
Епром инициализируется програмно. Заливать его не надо. По поводу остального - сделайте скриншот фьюзов, которые зашиты. И… в цепи сброса меги у вас конденцатор есть?
З.Ы. какая емкость по выходу питания?
и компилил заливал, безрезультатно.
Тогда советую подпихнуть в код немножко отладочной информации.
Например, на экран положения газа вывести текущее прочитанное положение ручки (это можно посмотреть в моих исходниках, они выложены на сайте; функция void VerReady(void) в Coder.c).
Можно добавить сообщение типа “Calibration correct!” в соответствующее место.
А также, может быть, поставить мессаги по if’ам, определяющим необходимость калибровки при включении питания - понять что именно происходит с EEPROM (в моих исходниках есть и это, см. void ResetToDefaultWithAsk (char ResetMSG) в Coder.c, но там я сделал целый механизм, который, пожалуй, сложноват и нецелесообразен для просто дебага конкретной ситуации).
Епром инициализируется програмно. Заливать его не надо. По поводу остального - сделайте скриншот фьюзов, которые зашиты. И… в цепи сброса меги у вас конденцатор есть?
З.Ы. какая емкость по выходу питания?
Фюзы: галки стоят на СКОРТ, BODEN, BODLEVL
Конденсатор 0,1 мкф на массу, рез 10к к +5в по сбросу. По питанию помоему 100 мкф, только какая разница по питанию то какой кондер стоит?
Тогда советую подпихнуть в код немножко отладочной информации.
Например, на экран положения газа вывести текущее прочитанное положение ручки (это можно посмотреть в моих исходниках, они выложены на сайте; функция void VerReady(void) в Coder.c).
Можно добавить сообщение типа “Calibration correct!” в соответствующее место.
А также, может быть, поставить мессаги по if’ам, определяющим необходимость калибровки при включении питания - понять что именно происходит с EEPROM (в моих исходниках есть и это, см. void ResetToDefaultWithAsk (char ResetMSG) в Coder.c, но там я сделал целый механизм, который, пожалуй, сложноват и нецелесообразен для просто дебага конкретной ситуации).
А вот это для меня уже темный лес.
Фюзы: галки стоят на СКОРТ, BODEN, BODLEVL
Конденсатор 0,1 мкф на массу, рез 10к к +5в по сбросу. По питанию помоему 100 мкф, только какая разница по питанию то какой кондер стоит?
Ну вот она и собачка. С фьюзами ок, в цепь сброса килоом, на выход стабилизатора не больше 10мкф. И будет счастье.
Разница в том, что при выключении он долго разряжается, при включении - долго заряжается. Бод хоть и активирован, но походу не справляется. Ну и цепь сброса у тебя “медленная” слишком.
Спасибо, вечером после работы попробуем, надеюсь все получится, а то уже мозги кипят и появляется жалость к выдернутым родным платам передатчика )))
Заказал вчера короновские модули. Плату не переделываю, буду пока юзать версию 1.7. В любом случае, кодер по функционалу выводит любой НАДЕЖНЫЙ комплект ТХ\РХ на уровень 500-600 баков… Мой спектрум отдыхает не говря уже о футабе 6… Молодцы ребята!!!
Как всё начиналось…
Теперешний вид передатчика. Модуль пока граупнер 35 МГц.
Корпус - симулятор для ФМС. Аналогичен ескаю.