Самодельный передатчик (часть 1)
Ты вообще, о чём? Какой выход?
Всё у всех работает, разобрались.
Не рекомендую ставить такой низкий прог пищалки. При напряжении 8,8 В, уже начинает падать мощность передатчика, а значит падает радиус дейстивия аппаратуры. Лучше, хотя бы от 9 до 8,7В пищало.
Хотя, это нужно проверять, для конкретного передатчика. Если передатчик хорошо работает при 8,5 В, то можно и такой порог ставить.
У заводских передатчиков, вроде бы на 9,5 начинает пищать.
Извеняюсь. Вчера не все прочитал.
Уже сделал и себе. Все работает.
Всем Спасибо.
Доброго времени суток! Andrej100, спасибо за исправленный файлик! А вот по поводу порога срабатывания пищалки вопрос интересный! К примеру у меня на SANVA она срабатывает при 9.6 V, и с одной стороны вроде бы пульт заранее предупреждает пользователя, а с другой стороны остаеться меньше времени на хоть какую нибуть работу пульта. А за напряжением и так постоянно следишь, ведь не пойдеш на поле с полусевшей аппаратурой. Так что лично для меня наверное это не сильно критично.
У меня вопрос по схеме. Там MOSI и MISO от SPI идут на ноги 2 и 3.
Смотрю даташит на 128 мегу. MOSI и MISO - 12,13 а 1,2 - RXD и TXD.
Даташит вроде родной. С другой стороны схема вроде много раз повторенная. Я дурак или чего-то не понимаю?
Почитайте в даташит как шьется мега128 по последовательному интерфейсу 😃
ATmega128 программитуется через JTAG или SPI. При программировании через SPI сигналы MOSI и MISO от программатора надо заводить на RXD и TXD порта UART0 (2 и 3 ножки) а не на SPI. Тактовая частота заводится на SCK (11 нога). Этой особенностью м128 отличается от других мег. SPI порт у ATmega128 при программировании не используется, за исключением тактового сигнала SCK.
ATmega128 программитуется через JTAG или SPI. При программировании через SPI сигналы MOSI и MISO от программатора надо заводить на RXD и TXD порта UART0 (2 и 3 ножки) а не на SPI. Тактовая частота заводится на SCK (11 нога). Этой особенностью м128 отличается от других мег. SPI порт у ATmega128 при программировании не используется, за исключением тактового сигнала SCK.
Сиречь на схеме все правильно и баран таки я. Thanx.
…
… может кто то все таки поможет, не из ленивых?
… Очень не хочется лезть во внутрь, все заново разбирать, резать…
Во! вы тоже ленивый. Не поверю, что у “нас” буржуйские запчасти есть, а у “Вас” их не продают.
Я Вам наводку дам. Ищите по тексту (вроде файл Меню.С) вот такие вещи:
lcd_line ( x,y,x1,y1,modе); // Обычная линия
lcd_dashline (x, y,x1, y1) ; // Пунктирная линия
lcd_rectangle(x, y, x1,y1,color); // Прямоугольник
lcd_fillrect (x, y, x1, y1,color); // закрашенный прямоугольник
lcd_setxy(x,y); // установка координат курсора
Ну и корректируете чиселки x,y,x1,y1 так, чтобы изображение на вашем дисплее помещалось. Вродебы и сложного ничего нет, даже “С” знать не обязательно.
Если в программировании не силен, то просто возьми исходники, и поиском с заменой замени во всем проекте “curmodel.trimmer[FLY_MODE]” - на “curmodel.trimmer[1]”, после этого откомпилируй и прошей заново контроллер. Тримера во всех режимах будут одинаковы. Так делать не совсем правильно, в плане “эстетики” программирования, но за то максимально просто, ошибиться негде.
Да нет ошибочка все таки вылезла!!!
После такой замены триммера действительно устанавливаются для всех режимов одинаково. Однако запоминаются только в режиме idle.
Ткните пожалуйста носом где копать в исходниках 😵
СИ потихоньку пытаюсь учить, но сам разобраться не могу.
Да нет ошибочка все таки вылезла!!!
После такой замены триммера действительно устанавливаются для всех режимов одинаково. Однако запоминаются только в режиме idle.Ткните пожалуйста носом где копать в исходниках 😵
СИ потихоньку пытаюсь учить, но сам разобраться не могу.
Обрати внимание на строчки:
в variables.c :
eeprom char trimmer[MAX_MODELS][MAX_MODES][4]; - в этом 3х мерном массиве сохраняются все тримера.
char trimmer[MAX_MODES][4]; - ну а в этом двумерном массиве хранятся значения текущих тримеров.
Ну и в остальных местах проекта что-то аналогичное…
Ты хочешь, чтобы во всех режимах у тебя тримера были одинаковыми. Не красивый путь - я тебе посоветовал, поставить вместо “переменной координаты”
в массиве единичку. Логично тоже сделать и в массиве епрома сделать тоже. Либо вобще исключить ненужное измерение.
З.Ы. можно почитать про многомерные массивы, структуры ( записи) в любой книжке, должно с этим вопросом стать попонятнее. max_modes - константа указывающая количество полетных режимов, т.е. реально равняется 3 (при объявлении массива указывает его размер), а FLY_MODE - переменная, - принимает разные значения в зависимости от того, какой режим включен…
Вопрос к тем, кто уже доработал передатчик: а как вы крепили дисплей в корпусе? Если можно , ответьте подробно!
У меня в корпус от Еская индкатор стал в верхнюю часть. Закрепил термоклеем, почти год держится.
А у меня на супер-клее держиться.
Спасибо, но хотелось бы поподробнее:
Есть дисплеи - только стекло, а есть с рамкой - какой лучше ставить?
Как лучше прижимать контакты к дисплею?
Спасибо, но хотелось бы поподробнее:
Есть дисплеи - только стекло, а есть с рамкой - какой лучше ставить?
Как лучше прижимать контакты к дисплею?
Лучше брать с рамкой, в рамке есть контакты. К контактам удобно паять обрезок 80 проводного шлейфа от жесткого диска. У сомой рамки ненужный пластик отпиливается, в нужном - по вкусу, можно просверлить дырочки в удобных местах, наклеить на него “ушки” под винтики, или приклеить саму рамку к корпусу. Кстати, рамка является рассеивателем для подсветки…
Странно, что вопрос про крепление дисплея вобще возник. Если сделал кодер, переделал тримера под кнопочные и т.д. автоматом подразумевается, что с креплением дисплея проблем не будет.
З.Ы. У меня дисплей припаян на контактах на макетку, макетка привинчена к штатым местам крепления дисплея в корпусе. Правда у меня и дисплей не такой, а с торчащими контактами ( в том числе и крепежными) и корпус от эклипса.
З.Ы.Ы. Разговаривал с Женей (Фокусом), сказал что очень мало свободного времени, но работы над новой версией идут и все почти готово. Форумчанам ждать немного осталось.
Спасибо!
На днях хотел добавить ограничение длительности канального импульса ( 0,9 … 2,1 мс ), но не понял, где она окончательно вычисляется.
Если кто подскажет - буду признателен!
…длительности канального импульса ( 0,9 … 2,1 мс ), но не понял, где она окончательно вычисляется.
…
Содер.С:
interrupt [TIM1_COMPA] void timer1_compa_isr(void) // прерывание, в котором собственно говоря и идет вычисление импульсов 😃
{char i;LED2=1;
if (nb<curmodel.num_ch)
{
if (nb<curmodel.num_ch-1)CHcalc(nb+1);
ICR1H=output[nb]>>8; //заливаем длительность канала
ICR1L=output[nb]&0b11111111;nb++;
}…
Переменные output[] считаются в процедуре CHcalc(), которая в файле матч.с
Может так :
interrupt [TIM1_COMPA] void timer1_compa_isr(void) // прерывание, в котором собственно говоря и идет вычисление импульсов
{char i;
LED2=1;
if (nb<curmodel.num_ch)
{
if (nb<curmodel.num_ch-1)
CHcalc(nb+1);
ICR1H=output[nb]>>8; //заливаем длительность канала
ICR1L=output[nb]&0b11111111;
if (ICR1H>=9 && ICR1L>=216) { ICR1H=9; ICR1L=216; } // макс длит 2,1 мс
if (ICR1H<=2 && ICR1L<=216) { ICR1H=2; ICR1L=216; } // мин длит 0,9 мс
nb++;
}
Заказал десяток плат данного кодера, завтра будут готовы. Кому нужно - в личку.
Какую версию ты заказал? И из какого поста?
Какую версию ты заказал? И из какого поста?
Последнюю