Самодельный передатчик (часть 2)
Ну если о таком дисплее думать, то проще уж сразу эту девятиканалку и купить. Отличный корпус, джойстики-крутилки, выключатели-кнопочки +дисплей +готовая плата с процессором - и все это за 50 баксов - по отдельности дешевле точно не выйдет. Странно, что вы этот вариант сразу не рассматривали. И прошивка эта на том железе давно работает. 😃
Та и этот вариант рассматривался.
RDX0154-GC (6у.е)(и подсветку на него тоже взял) уже в пути.
Уже есть схема подключения и наброски в изменение пр-ки.
вопросы по подключению
Графического индикатора RDX0154GC
по дтшиту питание 3.3 вольта —
ATmega128A-AU питание 2.7 - 5.5V по даташиту – и влияет ли оно для этого чипа на максимальную частоту (16 мГц)? -сейчас по схеме 5 в
понизить напряжение до 3.3 в для всей схемы(как будет работать с пониженным напряжением питания ?)
или при 5 вольтах делать питание отдельно на дисплей 3.3 в и по выходам ограничивать амплитуду на дисплей по напряжению?
Ответы уже есть на поставленные вопросы-будем пробовать на практике-просто может кто из более опытных подскажет-что б как говориться не изобретать велосипед
будем пробовать на практике
См. даташит на ATMEGA128А, Figure 28-2. При напряжении 3,3В фирма гарантирует 10 МГц.
Эксперименты - дело хорошее, но когда вдруг (почему-то все всегда случается вдруг… 😈 ) на 20% уплывет длительность импульсов и период последовательности PPM, эксперименты могут стать делом не только хорошим, но и дорогостоящим…
Уж лучше, КМК, поставить один отдельный Step-Down для питания дисплея. Выходы внутри Atmega не пуллапь на VCC, а для надежности можно добавить по резистору и по стабилитрону в каждую интерфейсную шину (включая Reset)
См. даташит на ATMEGA128А, Figure 28-2. При напряжении 3,3В фирма гарантирует 10 МГц.
Эксперименты - дело хорошее, но когда вдруг (почему-то все всегда случается вдруг… 😈 ) на 20% уплывет длительность импульсов и период последовательности PPM, эксперименты могут стать делом не только хорошим, но и дорогостоящим…
Уж лучше, КМК, поставить один отдельный Step-Down для питания дисплея. Выходы внутри Atmega не пуллапь на VCC, а для надежности можно добавить по резистору и по стабилитрону в каждую интерфейсную шину (включая Reset)
Спасибо за совет
Примерно так и думаю делать
Для информации я использовал вот этот даташит
Или он неполный,или я не нашёл указанного
Это не даташит, а Summary. Даташит на мегу128А содержит 378 страниц. 😉
Самое верное дело брать их с сайта Атмела, или с иных уважаемых мест - datasheetarchive, alldatasheet и т.п.
можно запитать мегу от 3,3 вольта, но использовать внешний кварцевый генератор. у меня, кста, проблем не было с набортным кварцевым генератором при 3,3 вольта питании. работали и 12 мгц и 16 мгц кварцы. кварцы, правда индастриал, и процы тоже =)
По поводу прошивки для кодера с дисплеем RDX0154-GC
Дисплей купил - сделал под него печатную плату - попробовал изменить под него прошивку - так незнаю с чего начать
(Один маленький плюс -подсветка работает,и всё)☕
попробовал изменить под него прошивку - так незнаю с чего начать
А каковы… Ээээ… Глубины незнания?
Я бы начинал так:
- в файле coder.c после инициализации MCU и до инициализации дисплея попищал бы бипером или подрыгал какой-нибудь ногой - чтобы убедиться в том, что камень вообще жив, адекватен и работает. А дальше бы не двигался вообще - поставил бы пустой while, скажем.
- в файле coder.c переставил вышеупомянутый пустой while (“затычку”) на “сразу после инициализации дисплея”, и в файле LCD_3320.c (?) курочил бы процедуру инициализации дисплея. При этом добавил бы прямо в нее вывод какого-нибудь символа, чтобы убедиться что дисплей жив, адекватен и работает.
Далее - по обстоятельствам.
Э… Дим, судя по картинке сверху - интерфейс у дисплея И2С. И может курочить надо не лсд3320.с а аналогичную библиотеку для тик-а? 😃 Удивился, что ты не кинул парню ссылку на свой вариант и не тыкнул в пяток строчек по инициализации дисплея. К томуже ты и меню под большее расширение правил. 😃
Похоже вся инициализация вот:
I2cstart 'rozpoczęcie transmisji
I2cwbyte &H78
I2cwbyte &HAF 'display ON
I2cwbyte &H81 ’ pot.
I2cwbyte &H60 'na pozycje 100
’ I2cwbyte &HA5 'set all pixel ON
’ I2cwbyte &H01 'column adres
’ I2cwbyte &H10 'column adres
I2cwbyte &HC4 'Lcd control
’ I2cwbyte &HB0 'page adres - numer rzędu
I2cstop
тут подробности www.elektroda.pl/rtvforum/topic1533158-0.html
Э… Дим, судя по картинке сверху - интерфейс у дисплея И2С. И может курочить надо не лсд3320.с а аналогичную библиотеку для тик-а? 😃 Удивился, что ты не кинул парню ссылку на свой вариант и не тыкнул в пяток строчек по инициализации дисплея. К томуже ты и меню под большее расширение правил. 😃
С сылками этими я ознакомлен-
щас проверяю схему подключения -
проц. рабочий - проверен на дисплее 3120 с соответствующей прошивкой
Вот рабочий ли дисплей -вот в чём вопрос
Наверное спаяю ещё одну плату кодера для экспериментов -поставлю кварц на 8 мГц и запитаю всю схему на 3.3 в -чтоб проверить дисплей -возможно у меня неправильная схема соединения дисплея(намудрил со стабилитронами и резисторами в цепях)
Вот некоторая информация по RDX0154GC
// для работы с I2C
void I2C_Open (void); // настройка MSSP модуля
void i2c_idle (void); // провекра на готовность I2C к работе
void i2c_stop (void); // формирование стоп
char i2c_start (char adres, char C_D, char R_W); // адрес устройства и управление младшими битами
char i2c_restart (char adres, char C_D, char R_W);
char i2c_write (char data); //запись байта
char i2c_read_ack (void); //чтение с подтвеждением
char i2c_read_noack (void); //чтение без подтеждения
// для работы с индикатором
void int_LCD (void); // инициализация
void clear_LCD (void); // очиска всего дисплея
void curcorG_LCD (char X,char Y); // установка курсора
// вывод строк
void String_LCD(const char *str,char inv,char width,char height,char X,char Y); // , char строка, ширина, высота, центрирование (22 символа в строке)
void Stringp_LCD(const char *str,char inv,char width,char height);
// вывод символа или числа
void symbol_LCD (int cod,char tip,char inv,char shi,char vis);
// бегущая строка
void ticker_LCD (const char *str,char start,char ends,char Y); //с ПЗУ
void tickerB_LCD (char dlinok,char start,char Y); // с озу
// для работы с индикатором графические приметивы
void point (int tip, int X, int Y); // точка
void line(int tip, int x0, int y0, int x1, int y1); // линия
void rectangle (int ugl, int tip,int zal,int tipzal, int x0, int y0, int x1, int y1);//прямоугольник
void strip (int ugl,int tip,int tipzal, int x0, int y0, int sh, int vs, char vol);// линейный индикатор
Удивился, что ты не кинул парню ссылку на свой вариант
Я почему-то подумал, что он мои исходники и взял… Ибо оно само напрашивается… Там и отличия какие-то смешные, кажется на один ряд и один (или два?) столбца.
Экран калибровки я вообще сделал с автоматическим расчетом координат по константам WidthS и HeightS. Хотел и все остальное так же сделать, но обломался.
Ограничился тем, что все (кажется, все…) координаты вынес в виде #define в модуль display.c.
И может курочить надо не лсд3320.с а аналогичную библиотеку для тик-а?
А я LCD_init и LCD_refresh положил как раз в лсд3320, с условной компиляцией (#ifdef TIC_154).
Наверное спаяю ещё одну плату кодера для экспериментов -поставлю кварц на 8 мГц и запитаю всю схему на 3.3 в
Хозяин-барин, но отлаживаться на Меге128… Шоб я так жил!
Отлаживать I2C можно на любом дешевом камне, хоть на тини. Ресурсов надо каплю, и ног интерфейсных всего 3 штуки…
Вот рабочий ли дисплей -вот в чём вопрос
Когда-то разбирался с дисплеем от ериксона а1018. Тогда и инфы по нему особо небыло, и протокол снифить у меня было не на чем. А горстка дисплеев была. Искал адрес дисплея перебором по шине и2с. Как дисплей нашелся - мигал светодиодом его адрес. Потом искал даташиты на похожие контроллеры с таким адресом. 😃 Все получилось, правда омрачалось тем, что на дисплее ничерта видно небыло. То-ли он генератора напряжения встроенного не имел, то-ли я так и не разобрался как его запустить… Ну в общем - подал напругу “из вне”. Генерил шим на мк и через удвоитель на диодах и кондюках питал драйвера дисплея. Шимом менял контраст. 😃 Вот с подобной засадой (генератор на драйвера) можно долго ковыряться с неизвестными дисплеями. Но тут проще – есть даташит.
Вставлю сюда свой вопрос, в ветке про аппаратуру ни кто не отвтил rcopen.com/forum/f4/topic245917
Я бы не переключал антены… Лучше внедрите в корпус по антене для каждого модуля и не парьтесь. Если с расчетом и изготовлением свч печатных плат у вас проблем нет, то можно сделать антенный коммутатор на базе какого-нибудь коммутатора из старых сотовых телефонов. Но мне кажется это лишний геморой. Шансов что что-то будет не так - достаточно. 2 антены - придадут передатчику стильный внешний вид, соседи будут восхищаться и завидовать!!! В сотовых антенные коммутаторы не славились особой надежностью в то время, когда я их чинил.
Параллелить выходы передатчиков на одну антенну, даже при их поочередной работе, точно не стоит… В лучшем случае будет потеря вых. мощности. В остальном +1 Алексею. Качественный коммутатор можно слепить только при недюжем опыте с СВЧ-техникой…
Я почему-то подумал, что он мои исходники и взял… Ибо оно само напрашивается… Там и отличия какие-то смешные, кажется на один ряд и один (или два?) столбца.
Экран калибровки я вообще сделал с автоматическим расчетом координат по константам WidthS и HeightS. Хотел и все остальное так же сделать, но обломался.
Ограничился тем, что все (кажется, все…) координаты вынес в виде #define в модуль display.c.А я LCD_init и LCD_refresh положил как раз в лсд3320, с условной компиляцией (#ifdef TIC_154).
Хозяин-барин, но отлаживаться на Меге128… Шоб я так жил!
Отлаживать I2C можно на любом дешевом камне, хоть на тини. Ресурсов надо каплю, и ног интерфейсных всего 3 штуки…
Обратился за помощью программистов в своём городе:
помогли
дисплей рабочий.но схема подключения -только напрямую без огр.стабилитронов при напряжении 3.5 в и кварце 10 мГц
Частота кварца тут не причем, а согласовать уровни - дело то вроде бы не хитрое. В крайнем случае - вам уже советовали 3.5 вольта питания и внешний тактовый генератор на 12мгц. Хотя, весьма часто меги на этой частоте и от 3.3 стабильно работают. Кстати, дисплей от нокий тоже штатно от 3 вольт работать должен, однако от 5 с ним ничего не случается. Может рискнуть? 😃 Вполне возможно придется подобрать коэф. для нужного контраста, но в остальном - скорее всего повезет.
схема подключения -только напрямую без огр.стабилитронов при напряжении 3.5В и кварце 10 мГц
Не догоняю… Единственная проблема, КМК, может быть только в том, что Мега с питанием 5В не различает низкое/высокое при подтяжке SDA/SCL на 3,3В.
Но эта проблема должна проявиться только тогда, когда кто-то соберется читать Мегой данные от дисплея.
А частота вообще не у дел.
Попробуйте подтянуть SDA/SCL на 3,6В (но при этом не забудьте отключить внутреннюю подтяжку соответствующих ног в Меге!).
Если RDX0154 проектировал нормальный схемотехник, то и от подтяжки на 5В ничего сгореть не должно.
Ну и вот еще, на всякий случай: www.gaw.ru/html.cgi/txt/interface/iic/index.htm