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

EagleB3

А почему компилятор CVAVR (v.2.03.4) впадает в истерику от вроде бы безобидной команды
if (!(PING.0)) {};? Меняю букву “G” на “D” и тогда все нормально компилируется. 😵

У меня линия “Enter” из разъема на PG0 заведена. И вот такой неожиданный облом…

Nick_Shl
VRV:

Человеку, желающему выучит с не стоит пытатся это сделать на примере данного проекта.

Если читать внимательно тему, то заметите, что есть не те кто просто хочет выучить Си, а те кто хочет выучить его ради этого проекта. И всё моё вышесказанное относилось именно к этим случаям.

EagleB3:

А почему компилятор CVAVR (v.2.03.4) впадает в истерику от вроде бы безобидной команды if (!(PING.0)) {};? Меняю букву “G” на “D” и тогда все нормально компилируется. 😵

Скоро посылать в даташит начну большими буквами. Это связано с тем, что выражение вида PINx.Y означает использовать инструкции CBI, SBI и подобные. Смотрим в даташите карту памяти и видим, что PORTG за пределом доступности этими функциями. То есть побитовая адресация порта G не доступна. Только доступ целиком.

EagleB3:

У меня линия “Enter” из разъема на PG0 заведена. И вот такой неожиданный облом…

Как быть?
А вот так:

#define IsBitSet(x,y) (x&(1 << y))

if( !(IsBitSet(PING, 0)) )
msv

Порт G наверное не поддерживает побитовых операций. Можно if(!(PING & 1)) {}.
о… уже опередили…
2 Teapot сомневаюсь что транзистор выдежит 4A… Может наводки на амперметр?

Под интерфейсы не подстраиваться нужно - их нужно обсуждать, решать, а только потом реализовывать.

Думаю без менедмента весь проект останется на стадии обсуждения интерфейсов и до реализации дело не дойдет… 😃
… Много букв еще написал, но прочитав, все безжалостно стер…

EagleB3

Даташит я честно старался изучить. Но у меня слишком плохой английский, да и с архитектурой процессоров я знаком не настолько хорошо, чтобы разобраться в хитросплетениях их адресного пространства.
Из даташита я понял, что “PORTG, DDRG, and PING are not available in ATmega103 compatibility mode”. А из хелпа к CVAVR - что sfrb может применяться только в интервале адресов 0…1F.

Но вот дальше я уже примеривался в модуле “mega128.h” в строке sfrb EECR=0x1c; заменить вдрызг не нужный EECR на остро необходимый мне PING. 😒

Спасибо!!!

Заработал у меня СониЭрикссоновский джойстик.

//Кнопки навигации
#define SE_Joy

#ifdef SE_Joy // SonyEricsson joystic navigation
    #define L_UP    PIND.4
    #define L_DOWN  PIND.5
    #define R_DOWN  PIND.6
    #define R_UP    PIND.7
    #define J_ENT   (PING & 1)     // PG.0

    #define KEY_UP    !(!L_UP && !R_UP && L_DOWN && R_DOWN)
    #define KEY_DOWN  !(L_UP && R_UP && !L_DOWN && !R_DOWN)
    #define KEY_LEFT  !(!L_UP && R_UP && !L_DOWN && R_DOWN)
    #define KEY_RIGHT !(L_UP && !R_UP && L_DOWN && !R_DOWN)
    #define KEY_ENTER (!J_ENT && L_UP && R_UP && L_DOWN && R_DOWN)

#else // 4-button navigation - classic variant
    #define KEY_UP    PIND.4
    #define KEY_DOWN  PIND.5
    #define KEY_LEFT  PIND.6
    #define KEY_RIGHT PIND.7
#endif
VRV
EagleB3:

А почему компилятор CVAVR (v.2.03.4) впадает в истерику от вроде бы безобидной команды
if (!(PING.0)) {};? Меняю букву “G” на “D” и тогда все нормально компилируется. 😵

У меня линия “Enter” из разъема на PG0 заведена. И вот такой неожиданный облом…

порт G не полнный и на него не реализована структура PING.0…PING.7 см ниже
обращайся к нему стандартными функциями

It is important to note that bit selector access to I/O registers located in internal RAM above address 5Fh (like PORTF for the ATmega128 for example) will not work, because the CBI, SBI, SBIC and SBIS instructions can’t be used for SRAM access.

а понял лишнее… уже все у всех получилось:)

Aviator73
msv:

2 Teapot сомневаюсь что транзистор выдежит 4A… Может наводки на амперметр?

Вполне возможно, хотя амперметр в цифровом мультиметре.
Как ни крутил катушки, так и не понял на что они влияют. Убедился, что без КСВ-метра, спекртоанализатора, ВЧ-вольтметра и т.п. приборов не настроить…
Прикол в том, что модель, стоящая рядом при настройке одинаково хорошо реагирует при любых положениях сердечников катушек. Решено оставить как есть и проверить дальность в поле. На счет помех на сосдених каналов решено забить, т.к. ближайший модельный передатчик 40 МГц-ого диапазона где-то в 120 км 😃, т.п. пофиг.
Всем спасибо, особенно Вам, Сергей.

Nick_Shl
msv:

Думаю без менедмента весь проект останется на стадии обсуждения интерфейсов и до реализации дело не дойдет… 😃

А если и не пытаться - то не дойдёт никогда.

EagleB3:

Даташит я честно старался изучить. Но у меня слишком плохой английский

Так есть за одно возможность его и подучить 😃. Хотя совет VRV поступил правильнее всех - залез хелп к компилятору.

EagleB3:

Но вот дальше я уже примеривался в модуле “mega128.h” в строке sfrb EECR=0x1c; заменить вдрызг не нужный EECR на остро необходимый мне PING. 😒

И получили бы то, что при попытке читать PING, реально бы данные брались из EECR 😃.

Andrej100
Aviator73:

Вполне возможно, хотя амперметр в цифровом мультиметре.

Вот в этом всё дело что он цифровой.Подключите обычный мультиметр и по нему настраевай.
4А это наводка😒

EagleB3

Потратил весь вчерашний день на втыкание джойстика в корпус Санвы (это к вопросу об окупаемости конструкции 😉 ).

Получилось. Вот только гаек M2 в хозяйстве нашлась всего 1 (одна!) штука. Пришлось самому нарезать и крепить пока только по диагоналям.
Джойстик, как я уже писал, от SE K700/750 (стоит на рынке 50 руб.), кнопка - от SE K700. Над панелью выступает примерно на 1мм. Наверное, надо будет наклеить на нее какой-нибудь удлиннитель.
Для крепления нарезал из медного одножильного провода диам 2.мм шпильки M2x30мм (прямо по всей длинне), согнул буквой “П”, укрепил в плате и наклеил в корпус на прозрачный “поксипол”. Когда клей схватился, сделал из пластилина опалубку и из “поксипола” же залил фундаменты. Когда клей схватился, но пока остался пластичным, прогнал резьбы плашкой - чтобы случайно попавший на резьбу клей снять. Потом гравером с фрезой сделал понижение под “гарду” кнопки джойстика.
Если интересно, вот фото:
Раз, Два, Три.

Вообще я сделал директорию на своей страничке и буду всякую фигню по ходу сливать туда. То что уже залито - обновлять с теми же именами. За одно и резервная копия будет - на случай краха винта. Это рабочие материалы, не подготовленные для публикации. Просто если кто-то захочет посмотреть на мою текущую схему/плату/мой вариант прошивки (под TIC154, за основу взята прошивка MSV v.1.8; в выводе компонентов на дисплей использованы доработки Denn и библиотеки выложенные Алексеем Гореликовым) то вот: конструкция дисплея, конструкция кодераПротеус е), мои исходники.

P.S. В своем варианте прошивки я убираю (пока?) фичи с током антенны (не знаю, как их можно использовать с ВЧ-блоком “футаба” 2,4ГГц) и фичи с частотами каналов. “На сейчас” адаптация дисплея сделана на экранах инициализации и калибровки, частично адаптировано меню. Меню листается хорошо, но надо еще разобраться с заголовками и выводом переменных. Основной рабочий дисплей в доработке почти не нуждается (сдвинуть немного ниже бары триммеров и немного вправо бары батареи и антенны).

P.P.S. не знаю, как пищщал бипер в предыдущих версиях прошивок, но сейчас он работает и впрямь очень музыкально. В корпусе “Санвы” есть отверстие под разъем зарядного устройства - поставил бипер напротив этой дырки, чтобы пищщало громче.😃

Aleksey_Gorelikov

Ты бы еще общую фотку передатчика выложил, мы бы за тебя порадовались!

EagleB3

Обязательно выложу. Но окончательная сборка еще не наступила. 😒

По идее, не хватает трех вещей:

  • Надо сделать ручку для выключателя “блокировка газа” - полностью аналогичную ручке выключения питания. Придется выклеивать ее из полистирола; я вроде даже уже прикинул как. Стоять будет симметрично выключателю питания, на месте гнезда для кварца.
  • Надо распаять триммера джойстиков на кабели с разъемами (кабели с разъемами уже сделаны).
  • Надо налепить защитную пленку на защитное стекло дисплея.

Вроде бы и мелочи, но все они времени требуют…

Nick_Shl
EagleB3:

не знаю, как пищщал бипер в предыдущих версиях прошивок, но сейчас он работает и впрямь очень музыкально. В корпусе “Санвы” есть отверстие под разъем зарядного устройства - поставил бипер напротив этой дырки, чтобы пищщало громче.😃

А я так сделал с самого начала. Аппаратная генерация прямоугольных импульсов на пищалку с помощью таймера.

P.S. Хреново дела… Вчера разбил машину

EagleB3

Сочувствую. Неприятно. Очень неприятно.
Но это - фигня. Это всего лишь деньги.
Главное - жизнь и здоровье.
Будет здоровье, будет работа - будут и деньги.

ubd

P.S. Хреново дела… Вчера разбил машину…

Сам прошлой зимой попадал, в такую же ситуацию. И ничего отремонтировался. Всё в жизни поправимо…
Не переживай, это всего лишь железяка, хоть и любимая…

EagleB3

Ну вот, собрал. 😃

Дополнительные фото:

Слева - штатный выключатель питания, справа - блокировка газа. Левее выключателя питания - голова джойстика. Удлиннил ее на 2,5мм; вершину сделал усеченной четырехгранной пирамидкой. Щелкает очень мягко, удобно и приятно; клики хорошо ощущаются.
Под триммером газа - ручка резистора дополнительного канала. Его задница видна над платой, на фото с открытой крышкой. Для еще одного такого же аналогичное отверстие в корпусе ниже триммера РВ просверлено, на фальшпанели намечено (изнутри).
На той же фоте виден закрепленный на задней крышке трехпозиционный переключатель (к нему провод идет) - приколхожен кем-то из прежних хозяев; решил не переделывать - это у меня “Landing/Normal/Pilot”. Разъем “Тренер-Ученик” оставил штатный “Санвовский”, большой DIN-5. Только распаял его под схему “Футабы”.
И оставил штатный разъем аккумулятора.

Лишние дырки зашпаклеваны “Быстрой сталью”. Потом сделаю фальшпанель из самоклейки.
И надо будет полосочку из черной самоклейки по верху дисплея пустить.

Под дополнительные переключатели собираюсь использовать штатные “плечики” Санвы - там на каждом по два движковых переключателя и кнопка. Правда, сомневаюсь, достойно ли это в плане надежности. Может, ну их, движковые? Может, все же тумблера?

Ну и вообще про “Санву VG400” - не очень удобный корпус. Место под дисплей, конечно, шикарное; место под ВЧ-модуль… Можно найти. Либо вертикально между джойстиками, либо приклеить отсек под дисплеем. Я, наверное, буду юзать ВЧ-модуль 2,4ГГц от Футабы, там он маленький Особенно, если брать именно сам модуль - он “присажен” на плату передатчика.
А вот с платой кодера надо быть очень аккуратным. Батарейный отсек - глубокий, так что электролиты-бочки даже SMT-исполнения встанут не везде. У меня они на фото видны - стоят у левого края, там, где отсек уже закончился. Из-за установки джойстика от сонерика пришлось подстроечник батареи на сторону дорожек переставить - так он по высоте не влез. На какой-то старой плате нашел SMT-подстроечник; хорошо, что он на дорожки вписался.
Ну и с разъемами на плате тоже. Я уже писал - PLS+PLD не войдут по высоте. Я ставил разъемы MW/MU. И плоские кабели. Два кабеля плоскенько над разъемом, может, и пройдут, а вот винтом/в складочку - уже нет. Щщатильнее надо.

Кстати приноровился я эти “мамы” (MU) распаивать горячим воздухом. Если кому будет интересно - пишите, расскажу.

VRV

молодец!!! Приятно видеть завершенные и оформленные проекты. Видно к чему стремится.
Экран хорош, а мне придется нокию 7110 юзать:(

Aviator73

А вот мой проектик. Тоже закончен.
Переделан живой Flash-4. Родная плата распилена по полам, оставлена только ВЧ-часть.
Крутилка 8-го канала справа, сделана как у старых радиоприемников - часть диска через щель выстуапает на поверхность. Очень удобно лазить по меню и менять значения этой крутилкой.

msv

Коллеги, рад вашим успехам! Приятно сознавать, что в нашем потребительском обществе еще не перевелись самоделкины, желающие поработать головой и руками.
Всех с наступающим 2010!

Denn

Ну и моё творчество…

С наступающим Новым Годом!!!

Aleksey_Gorelikov
Denn:

Ну и моё творчество…

А кто был донором? (просто интересно, не видел таких корпусов)

Denn

По слухам, из комплекта самолёта Cloud Dancer.