Альтернативная прошивка к FlySky/Turnigy/I-Max/Eurle (Кодер Fokus-a - MSV)
у меня работало великолепно с ЖКИ 128х64 (стандартный какой-то) и оригинальным нокио 3310 что-ли.
Нет именно та которая для Труниджи 9х, или клонов.
Да ни у кого ее нет, т.к. нет и необходимости курочить аппу ради вдвое большего епрома. Собственно, и актуальность прошивка думаю давно потеряла. Переезжайте на ER-9x.
Я когда-то, кому-то по просьбе 1 раз перекомпилил под 128, что, когда и кому- уже не помню. Отзывов мтоже не помню. Компилить специально - сейчас тоже не буду, т.к. проверить не на чем. Давайте считать проект умершим.
А ну вот и никто не тестировал толком на 128-м процу. Она глючная оказывается.
На ER мне нет необходимости переходить, этой хватает. Спасибо.
да и нет смысла в переходе на 128ую мегу… хватает 64ой…
Я то сначала не понял. Думал, что нужно обязательно 128 паять, что сполна всё получить от этой прошивки. оказалось 64 хватает.
Где-то,помнится,промелькивала инфа-буквы AU у АтМег-это пониженная тактовая частота (кажись,8МГц).Надо поднять даташЫт.Хотя некоторые экземпляры и 16 тянут.Так что глюки и зависания возможны из-за этого.Только что прошил 2-й экземпляр,и нарвался на “триггерный” эффект пищалки.А на 1-м экземпляре 1,5 года назад всё было тип-топ…😵
гм… я считал всегда что пониженная частота это L индекс…
а AU это нормальная мега… в TQFP корпусе…
AU - коммерческое исполнение ( в смысле температурного диапазона).PU - соответственно промышленный вариант. А “L” правильно - низкое потребление - соответственно низкая тактовая.
Нынче технологии производства чипов поменялись, поменялась и маркировка. Теперь уже чипы с индексом L становятся вымирающим видом старья. Нынешнее поколение марикруется буквой А в конце. В аппе стоит atmega64A. Серия “А” работает от 2.8 вольта и вроде бы не имеет ограничения по частоте при низковольтном питании. Так что не парьтесь - у нас от 5 вольт питается и буква А в конце - глючить на 16 мгц не должно.
З.Ы. смотрите свежие даташиты…
Выяснилась проблема с сигналом РРМ на выходе.
Прошивка для Мега 64 без полётных режимов Coder_mega64_1fly_mode.hex.
Почему то межканальная пауза не 0,4мс, как по стандарту а всего 0,1 мс. Это очень мало. У меня автопилот не видит её, и не видит пачку РРМ.
Алексей, у вас исходники. Поправьте пожалуйста межканальную паузу на 0,4.
Самое интересное, что родная прошивка автора msv, нормально выдаёт 0,4 мс, но тот кто менял под турнигу 9х, сделал 0,1 мс. Зачем?
Оказалось межканальная пауза 0,1мс, из-за более высоко частоты проца. Родная частота 12 мгц, а в Турниге 16 мгц.
Не могу разобраться как сделать межканальную паузу 0,4 мс.
Сразу скажу, Си я не знаю. По этоу вопросы страшно ламерские. На PCI могу написать прогу, на PIC-Basic, а на Си нет пока…
Алексей мне выслал исходники, но их нужно поправить.
Мне нужно что бы не было полётных режимов, трёх позиционник был как 6-й канал, и 7 моделей в памяти.
Вот что нарыл:
Я так понимаю вот тут:
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1500,000 kHz
// Mode: Fast PWM top=ICR1
// OC1A output: Non-Inv.
// OC1B output: Discon.
// OC1C output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
// Compare C Match Interrupt: Off
TCCR1A=0x02; // 02-disconnect c2-invert 82-no_invert
TCCR1B=0x1A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x17;
ICR1L=0x70;
OCR1AH=0x02;
OCR1AL=0x68;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;
В регистре OCR1 устанавливается значение для таймера. Сделал OCR1AL = 80. Это мне Сергей Мельник msv подсказал, посчитал под 16 мгц. Но всё ровно межканальная пауза осталась прежней.
Но ведь этот таймер может работать только на выводе PB5 как в оригинальной прошивке. Но у Турниги используется порт PD1.
Какой тогда таймер отвечает за межканальную паузу?
И как она вообще формируется в программе?
Убрал переключение режимов полёта, тумблер сделал как SW2_1 и SW2_2. Но трёх позиционник не работает как 6-й канал, реакция на него есть - пикает когда щёлкаешь, но 6-й канал в мониторе не работает, стоит в 0. Нужно ещё что то сделать, я не знаю что…
Вывод режима полёта из главного экрана, убрал.
Не работает вызов монитора при нажатии кнопки вправо. На кнопку вправо никакой реакции, из главного экрана, только пикает. Хотелось бы что бы работало.
В меню Model, после пункта Reset, появились Aileron и Elevator. Их там не должно быть. Как убрать?
Помогите разобраться пожалуйста…
Ха! Кажется понял в чем прикол!!! 😃 Чаю попью, открою ноут с кодевижином. Походу таймер не причем! Смотри “маппинг” в прерывании таймера на ногу вывода ппм! Там ногодрыганье, т.к. нога к таймеру не привязывалась. Возможно там собачка порылась, уже не помню, давно это было.
Я не знаю что такое маппинг…
Ну я имел ввиду назначение ног. В общем да, в теле прерывания просто дрыгал ногой. Вот, смотри:
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
static unsigned char nb=0;
static unsigned int sum=0;
static unsigned char fpv=0;
static unsigned int out=40000;
ICR1H=(unsigned char)(out>>8); //заливаем длительность канала
ICR1L=(unsigned char)out;
if (cur_model.modulation){
PORTB.0=1;
delay_us(100);
PORTB.0=0; } else
{PORTB.0=0;
delay_us(100);
PORTB.0=1; } ;
Собственно делай_ус(100) - 100 микросекунд “иголка”.
В меню Model, после пункта Reset, появились Aileron и Elevator. Их там не должно быть. Как убрать?
Меню.с:
#define menuT0L 4
#define menuT1L 12
#define menuT2L 12
#define menuT3L 2
#define menuT4L 5
#define menuT5L 8
#define menuT6L 2
#define menuT7L 3
#define menuChL 6
Циферки - это кол-во пунктов в меню. Поиграйся. 😃
Ну я имел ввиду назначение ног. В общем да, в теле прерывания просто дрыгал ногой. Вот, смотри:
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
static unsigned char nb=0;
static unsigned int sum=0;
static unsigned char fpv=0;
static unsigned int out=40000;ICR1H=(unsigned char)(out>>8); //заливаем длительность канала
ICR1L=(unsigned char)out;if (cur_model.modulation){
PORTB.0=1;
delay_us(100);
PORTB.0=0; } else
{PORTB.0=0;
delay_us(100);
PORTB.0=1; } ;Собственно делай_ус(100) - 100 микросекунд “иголка”.
Меню.с:
#define menuT0L 4
#define menuT1L 12
#define menuT2L 12
#define menuT3L 2
#define menuT4L 5
#define menuT5L 8
#define menuT6L 2
#define menuT7L 3
#define menuChL 6Циферки - это кол-во пунктов в меню. Поиграйся. 😃
Я уже думал данно прошивкой никто не пользуется 😒
Убрал переключение режимов полёта, тумблер сделал как SW2_1 и SW2_2. Но трёх позиционник не работает как 6-й канал, реакция на него есть - пикает когда щёлкаешь, но 6-й канал в мониторе не работает, стоит в 0. Нужно ещё что то сделать, я не знаю что…
Содер.с:
if(prop3<200) input[5]=0;
else if(prop3>800) input[5]=1500;
else input[5]=750;
Вот тут пятый (т.е. шестой, т.к. нумерация от нуля!) канал привязан к крутилке проп3
Вместо этого надо что-то типа:
if(keys & F_SW2_1) input[5]=0;
else if(keys & F_SW2_2) input[5]=1500;
else input[5]=750;
Спасибо, большое!
В понедельник попробую. Всё на работе.
Я уже думал данно прошивкой никто не пользуется
Да ну, пользуемся. Штатная Турниговская тупая напроч.
Ещё бы сделать вызов Монитора нажатием вправо. Я что то сам пытался, не вызывается.
У меня в след. верисиях было сделано, но кажется нажатием влево. Кину завтра исходники на почту, сравни (старый ноут так и не достал, исходники там.)