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

Aleksey_Gorelikov
EagleB3:

USB-дивайс и альтернативная прошивка для него существуют только для ATmega8, а она, увы, уже ушла в небытие. Купить практически не реально.

Есть еще миллион подобных проектов на других процах.

ВитГо
ubd:

О, я знаю Бейсик для PIC. Мощные проекты на нём делал. Пробовал делать даже кодер. Но не получается правильно формировать пакет РРМ импульсов. Бейсик для этого слишком примитивный, в нём нет прерываний, точнее есть, но только можно сделать одно прерывание, этого мало. Есдинственно, если выводить импульсы другим простеньким процом, типа PIC12Fxxx, а передавать в него по I2C. Пробуй…

одним прерыванием можно очень много сделать если можно задавать временные промежутки между прерываниями…

EHOT

рассматриваю 2 варианта применения кодера:

  1. как переделка имеющегося   JR QATTRO 40MHz (ну чтото дорого щас FM модули(((()
  2. как апгрейд будущей Eurgle 9X

однако, если придется вернуться к заводской прошивке, а потом снова к …
почему бы не сделать смену прошивок как в CHDK для Canon резидентной на карточке SD?
Нужна новая прошивка - переключателем или зажатием какой либо кнопки при влючении - выбрал.
нужна заводская - просто влючаем или вообще извлекаем карточку.
но кажется для ATMega128 это утопия?

belyay

Простите может я где то упустил, но не лучше бы поставить температурный датчик DS18B20? он вроде доступнее чем TMP36

МаркАнтоний
belyay:

Простите может я где то упустил, но не лучше бы поставить температурный датчик DS18B20? он вроде доступнее чем TMP36

У ds18b20 ужасно медленный протокол обмена данными.

dollop

А куда спешить?
Мне кажется, что выбор пал на TMP36 по причине простоты реализации - на выходе из датчика аналоговый сигнал, который пропорционален значению температуры - берется пустой аналоговый вход у меги и в нужный момент считывается.
Вообще никто не мешает прикрутить в работу кодера протокол 1wire и пользовать DS18B20.

ВитГо
EHOT:

рассматриваю 2 варианта применения кодера:

  1. как переделка имеющегося JR QATTRO 40MHz (ну чтото дорого щас FM модули(((()
  2. как апгрейд будущей Eurgle 9X

однако, если придется вернуться к заводской прошивке, а потом снова к …
почему бы не сделать смену прошивок как в CHDK для Canon резидентной на карточке SD?
Нужна новая прошивка - переключателем или зажатием какой либо кнопки при влючении - выбрал.
нужна заводская - просто влючаем или вообще извлекаем карточку.
но кажется для ATMega128 это утопия?

А в чем тайный смысл скачков между прошивками?
не проще сидеть на одной?
возможности МСВ прошивки перекроют стандартную турниговскую с головой… - смысл на нее перескакивать?

belyay

А если TMP36 заменить на LM35 он вроде тоже аналоговый, а то у нас не найти TMP36

Aleksey_Gorelikov
belyay:

А если TMP36 заменить на LM35…?

EHOT:

почему бы не сделать смену прошивок как в CHDK для Canon резидентной на карточке SD?

Так что мешает то? Исходники есть, делайте!

Евгений_Зайцев

Уважаемые, помогите пожалуйста разобраться. Я занялся разаработкой приложения для редактирования всех параметров пердатчика с компа. Возникла следующая странная проблема. судя по описанию структуры MODEL SET ее объем должен составлять 563 байта (ровно столько должен занимать набор на одну модель) После компиляции в файле .map видно, что на 7 моделей ушло 3927. Т.е. по 561 байт на модель. Где два байта пропали? Начал детально исследовать вопрос. Как оказалось пропадают они между именем модели и началом структуры DEF_MODE. Имя модели выглядит нормально, значения в структуре DEF_MODE тоже совпадают с тем что я вижу в меню передатчика, а вот между ними каша какая-то. Судя по тому что написано в коде

typedef struct {
char name[8]; // Без 0- терминатора!
unsigned char type:1; // heli, plane.
unsigned char modulation:2; // PPM, IPPM, PCM
unsigned char timer_mode:2;
unsigned int timer_set;
unsigned char num_ch: 4;
unsigned char num_freq;
DEF_MODE modes[MAX_MODES];
CHANNEL channels[MAX_CHANS];
} MODEL_SET;

сразу после имени модели должен идти байт типа модели - 0 или 1. а я вижу в памяти совершенно иную картину. следующий байт №10 - тип модуляции вообще исчез - вместо него меняется тот же байт №9 по следующей логике
Plane, iPPM - E2
Plane, PPM - E0
Heli, iPPM - E3
Heli, PPM - E1
Это что оптимизация такая? почему только на этом месте? дальше все по человечески. Объясните пожалуйста. Бьюсь уже несколько дней совершенно безуспешно

Евгений_Зайцев

А где именно смотреть, и почему битовые поля? Ведь в структуре MODEL_SET только байты. Как они в биты превратились?

EHOT
ВитГо:

А в чем тайный смысл скачков между прошивками?
не проще сидеть на одной?
возможности МСВ прошивки перекроют стандартную турниговскую с головой… - смысл на нее перескакивать?

есть мнение, что в некоторый прошивках лучше реализована самолетная/вертолетная/планерная компоненты. вот и может вознинуть необъяснимое желание вернуть старую “взад”

msv
Евгений_Зайцев:

А где именно смотреть,

Я подсказал ключевое слово для любого букваря по Си… 😃
А зачем это надо, детально разбираться в физическом распределении переменных? Передаваете структуру как последовательность байт, переопределив тип указателя. Размер узнать - sizeof. На хосте не забыть при определении структуры отключить оптимизацию выравнивания полей!

Евгений_Зайцев

Я сослепу воспринял это как комментарии. почему сам не знаю… A надо мне это для того, чтобы на большом брате разбирать полученный файл. Т.е. я принимаю с передатчика массив из 561 байта или 561*7 и дальше разбираю их тупо по номеру байта. хотя может быть проще будет такую же структуру на компе объявлять? Не знаю… не решил еще.

msv

У меня ощущение, что Вы не прочитали мое сообщение… 😃 Или мы говорим на разных языках… Уточню: я - на Си… 😃