Jump to content

    

yung

Свой
  • Content Count

    204
  • Joined

  • Last visited

Everything posted by yung


  1. До сих пор работал с монохромными дисплеями. При переходе на RGB получил неприятную неожиданность - наклейка-клавиатура на передней панели портит изображение. Пленка матовая, с просветлением прозрачным лаком. Поверхность получается неровной при растекании лака, и картинка (даже не знаю, как русскими словами выразить ) смазывается, что ли. Появляются искажения в виде фиолетовой сетки. Игра света - интерференция, дифракция или т.п. Линзы на поверхности пленки. Чешем репу с производителем клавиатур. Матовая пленка ощутимо ухудшает картинку, с глянцевой у них проблемы с нанесением краски - на пуклевке толком не держится. Вырубать окно очень не хочется. Не думаю, что я первый с такой проблемой. Может, есть кто-то, уже ходивший по этим граблям?
  2. Цитата(Andreas1 @ Mar 9 2017, 17:03) Есть, сменить производителя клавы. Шо, опять?! (с) У нас и так анекдот с производителем. Заказали пробную партию у одних. Выяснилось, что у них проблемы с клавиатурой - плохой тактильный эффект, плюс залипания. С рассторойства "муар" проглядели. Шеф дал команду сменить поставщика. Проплатили и спохватились. Теперь вот постоянно общаюсь с конструкторами второго производителя - ищем решение. Пленок у них выбор ограниченный, а вагонных отгрузок мы не обещаем. Сейчас как раз ищут праймер для глянцевых пленок.
  3. Цитата(jcxz @ Feb 19 2016, 15:11) Тут кто-то писал, что вых. драйверы у этого контроллера вроде слабые, не продавливают нужный уровень. Хотел проверить на низких частотах SCLK, да всё забываю. Какие уж тут частоты, в статике порты не фиксируются. Я и так уж сейчас до 100 кГц тактовую опустил, и ниже пробовал. Кроме белого экрана ничего нет. Инициализацию нарыл в инете, пишут, рабочая. CODEl //######################################################################### void pause_us (U8 i8) { U8 j8; for (;i8;i8--){ for (j8=3;j8;j8--){NOP();} } } //######################################################################### void write_byte(uint8_t c) { uint8_t i; for(i=0;i<8;i++) { if (c & 0x80) {MOSI1;} else {MOSI0;} pause_us(3); SCK1; c = c<<1; pause_us(3); SCK0; } } //######################################################################### void write_command(uint8_t c) { DC0; pause_us(3); CS0; pause_us(3); write_byte©; pause_us(3); CS1; pause_us(3); } //######################################################################### void write_data(uint8_t c) { DC1; pause_us(3); CS0; pause_us(3); write_byte©; pause_us(3); CS1; pause_us(3); } #define LCD_SendCMD write_command #define LCD_Data8 write_data #define DC0 PORTD&=~BIT(6) #define DC1 PORTD|=BIT(6) #define CS0 PORTB&=~BIT(0) #define CS1 PORTB|=BIT(0) #define RST0 PORTD&=~BIT(5) #define RST1 PORTD|=BIT(5) #define LCD_MEMORY_CONFIG 0xe8 // 270 degrees void new_init (void) { U16 i,j; RST1; //set1( LCD_RESET ); CS1; //set1( LCD_CS ); DC1; //set1( LCD_DC ); delay( 20 ); RST0; //set0( LCD_RESET); delay( 20 ); RST1; //set1( LCD_RESET ); delay( 200 ); LCD_SendCMD( 0x01 ); // reset delay(20); LCD_SendCMD( 0x28 ); // display off LCD_SendCMD( 0xcf ); LCD_Data8( 0x00 ); LCD_Data8( 0x83 ); LCD_Data8( 0x30 ); LCD_SendCMD( 0xed ); LCD_Data8( 0x64 ); LCD_Data8( 0x03 ); LCD_Data8( 0x12 ); LCD_Data8( 0x81 ); LCD_SendCMD( 0xe8 ); LCD_Data8( 0x85 ); LCD_Data8( 0x01 ); LCD_Data8( 0x79 ); LCD_SendCMD( 0xcb ); LCD_Data8( 0x39 ); LCD_Data8( 0x2c ); LCD_Data8( 0x00 ); LCD_Data8( 0x34 ); LCD_Data8( 0x02 ); LCD_SendCMD( 0xf7 ); LCD_Data8( 0x20 ); LCD_SendCMD( 0xea ); LCD_Data8( 0x00 ); LCD_Data8( 0x00 ); LCD_SendCMD( 0xc0 ); //power control LCD_Data8( 0x26 ); LCD_SendCMD( 0xc1 ); //power control LCD_Data8( 0x11 ); LCD_SendCMD( 0xc5 ); //vcom control LCD_Data8( 0x35 ); //35 LCD_Data8( 0x3e ); //3E LCD_SendCMD( 0xc7 ); //vcom control LCD_Data8( 0xbe ); // 0x94 LCD_SendCMD( 0x36 ); // memory access control // LCD_Data8( 0x48 ); // 0 grad orientation LCD_Data8( LCD_MEMORY_CONFIG ); LCD_SendCMD( 0x3a ); // pixel format set LCD_Data8( 0x55 ); //16bit /pixel LCD_SendCMD( 0xb1 ); // frame rate LCD_Data8( 0x00 ); // LCD_Dat h'1B' ; 70 Hz LCD_Data8( 0x13 ); // 100 Hz LCD_SendCMD( 0x2a ); // column set LCD_Data8( 0x00 ); LCD_Data8( 0x00 ); LCD_Data8( 0x00 ); LCD_Data8( 0xEF ); LCD_SendCMD( 0x2b ); // row set LCD_Data8( 0x00 ); LCD_Data8( 0x00 ); LCD_Data8( 0x01 ); LCD_Data8( 0x3F ); LCD_SendCMD( 0x34 ); // tearing effect off LCD_SendCMD( 0xb7 ); // entry mode LCD_Data8( 0x07 ); // LCD_SendCMD( 0xb6 ); // display function ctrl LCD_Data8( 0x0a ); LCD_Data8( 0x82 ); LCD_Data8( 0x27 ); LCD_Data8( 0x00 ); LCD_SendCMD( 0x11 ); // sleep out delay(120); LCD_SendCMD( 0x29 ); // display ON delay(120); addset(0,0); for (i=0;i<320;i++) for (j=0;j<240;j++) { write_data(0x00); write_data(0xff); }
  4. Медленно дурею от модуля с этим контроллером. Или с другим? Купили в Чип-Дипе два модуля: MIKROE-1439 и MIKROE-495. http://www.chipdip.ru/product/mikrotft/ http://www.chipdip.ru/product/me-tft-proto-board/ Если верить Чип-Дипу, то там контроллер HX8347. На сайте производителя сообщают, что контроллер 9341. Пробовал и так, и этак. Добиться чего-либо от них не получилось ни по послед., н по параллельным портам. Самое интересное - взвожу RST, WR, опускаю RD - порты модуля как выходы не конфигурируются. В SPI режиме тоже самое - когда модулю положено отвечать, SDA в z-состоянии. Едва ли оба модуля мертворожденные. Питаю от 3.3 В, щупаю атмегой 128 с тем же питанием.
  5. warning в ICC6

    Работаю сейчас с 64-й мегой, в ICC6 при компиляции выскакивают предупреждения warning: COFF no struct tag '.4' found for symbol index 1276 warning: COFF no struct tag '.3' found for symbol index 1278 warning: COFF no struct tag '.2' found for symbol index 1280 warning: COFF no struct tag '.1' found for symbol index 1282 На работе программы вроде бы не отражается, а AVR STUDIO тоже все работает. Хотя слово COFF наводит на мысли о каких-то проблемах как раз с отладочным файлом. Может кто встречался с подобным?
  6. ICC6.31a Professional Atmega128. Исходный код разросся и при компиляции выскочила ошибка: 'text' area too large (>64K byte) и предложение перенести часть кода в другой файл. Заполнение 55%. Подергавшись и ничего не добившись, решил перекомпилировать на ICC7. На некоторое время помогло (просто объем выходного кода чуть уменьшился). Сейчас опять та же проблема (заполнение 57%). Осознаю, что компилятор не может осилить константы в верхней половине памяти. Поэтому переделал код таким образом, что все строковые константы расположил в начале, а доступ к ним - из одной-единственной подпрограммы. Не помогает. При анализе ассемблера нашел внутреннюю процедурку elpm32. Вставляется ближе к концу файла. Похоже, что она мне жизнь и отравляет. Победить как-нибудь можно? В настройках проекта пробовал и разрешать, и запрещать RAMPZ/ELPM - без толку.
  7. Мой выбор [attachment=67333:my_vybor.jpg]
  8. Не победил, но обошел В опциях проекта выделил верхнюю область памяти (0х10000.0х1Е000, дальше у меня бут-лодер, оформленный отдельным проектом). В эту область переместил большинство своих процедур. Таким образом освободилось место в нижней половине памяти для библиотечных функций (злополучная elpm32).
  9. Даже не может, а наверняка. Проблема в том, что архитектура AVR предполагает наличие только 2-байтных указателей(максимально адресуется 64 к). Когда появилась 128-я мега, разрядность счетчик команд увеличили, а указателей - невозможно. А я пока не могу угадать, когда компилятор пытается что-то грузить из флэша. То ли все же какие-то константы грузит, то ли таблицы переходов.
  10. Здравствуйте! Работаю с Atmega128 и компилятором ICC6.31. Возникла необходимость, чтобы ряд глобальных переменных находился по фиксированным адресам. Сделал это путем, предложенным встроенным application builder-ом void mapping_init(void) { asm( ".area memory(abs)\n" ".org 0x0a00\n" " _temp1:: .blkb 4\n" ".text\n" ); } В АВР-студио эта процедура не видится (стоит ret) вместо тела. А компилятор не видит, что эта область занята и пытается по тем же адресам расположить другие переменные. Можно ли как-то объяснить ему, что место уже занято?
  11. резервирование места в ОЗУ

    Вот еще проблема с ICC6.31a. Все та же 128-я мега. После увеличения размера кода пошла ругань вида: 'text' area too large (>64K byte) и предложение перенести часть кода в другой файл. При чем здесь 64кБайт? Именно килобайт, а не килослов. Если закомментировать небольшую часть кода, то нормально компилится с результатом 55%. Версия "Professional".
  12. Заложил в прибор микротиповский ЖКИ NMTG-S16080XFGHSAY-02 (маркировку списываю со стикера). Все нормально работало. Потом их купить не удалось, взяли аналог от DataVision - DG16080-57 S2FLBY-HD. Так вот с ними выявилась такая проблема. При смене катринки появляется послесвечение на несколько секунд. Т.е. часть картинки бледная, часть - затемненная - в зависимости от того, какое изображение было на этом месте раньше. Посмотрел частоту LC7981 - приблизительно одинаковая. 1.8 МГц у микротипа и 1.6 у датавижен. Пробовал разогнать до разрешенных 2.5МГц - толку нет. Никто с таким не сталкивался, победить можно?
  13. резервирование места в ОЗУ

    Спасибо всем откликнувшимся! Отдельное и огромное - Палычу! Зарезервировал нижние 128 байт - все работает. При обмене устройства с ПК (в т.ч. для отладки) ввел команды доступа к ОЗУ. Соответственно потребовалось зафиксировать адреса "интересных" переменных для чтения плюс наложить маску по адресам на запись. А внешнее ОЗУ действительно 128к. Дополнительный адресный бит заведен на отдельный пин в/в, а в старшей половине хранится несколько массивов, которые для обработки перегружаются в нижнюю часть ОЗУ. Что касается компилятора - привык я к нему . Лет 10 уже использую. Особенно нравится аппликэшн билдер. Хотя периодически возникают проблемы. В текущем проекте столкнулся с ситуацией, когда компилятор не смог корректно осилить операцию байтового копирования *(adr1++)=*(adr2++) - писал нули. ICC7 есть, но использовал только когда работал с мега2561. Есть там какие-то нюансы по переносимости, разбираться не стал. IAR когда-то показался слишком заумным для начинающего.
  14. резервирование места в ОЗУ

    Цитата(Палыч @ Jan 14 2012, 09:58) Но, можно сделать другой финт: сказать транслятору, что размер памяти меньше, чем есть на самом деле, а остаток использовать для распределения переменных по фиксированным адресам. А можно поподробнее? И не будет ли проблем в том, что у меня еще 128кБ внешней памяти стоит?
  15. резервирование места в ОЗУ

    Цитата(LexaK @ Jan 13 2012, 20:09) А как в ИАРе не получится? Код__no_init volatile char a @ 0x8000; Не получилось. Пока обошел, разместив переменные в начале ОЗУ. Но вопрос остается открытым. Кстати, заметил интересную особенность. Адреса переменных фактически прижаты к верхней границе ОЗУ (не считая стека). А переменные, инициализируемые одновременно с объявлением (char a=8;) - в начале. Пришлось инициализировать их отдельно.
  16. Небольшие чудеса при переходе М64-М128 наблюдаются в АЦП, связанные с циклическим режимом.
  17. Предупреждение за длинный текст, Apr 22 2005, 11:37
  18. Цитата(akl @ Feb 2 2010, 04:17) Можете озвучить марку 3-х вольтового дисплея на клоне HD44780? Если интересно
  19. Цитата(nikoteen @ Jan 19 2010, 18:34) Собственно, вопрос. Как сделать так, чтобы на выходе ОУ не получился минус? В даташите на рис.13 указаны защитные диоды по входу. Все, что нужно сделать - обеспечить, чтобы входной ток не превысил 10 мА (из того же даташит). Это делается установкой резистора между выходом ОУ и входом АЦП. Входной ток АЦП крошечный, и на 1кОм-резисторе (с запасом) много не упадет - точность не пострадает. Дешево и сердито. Лично я в своих устройствах так поступаю. Все, что меньше нуля, вопронимается как 0.
  20. Утечка порта у Mega48P

    IIL Input Leakage Current I/O Pin VCC = 5.5V, pin low (absolute value) 1 µA IIH Input Leakage Current I/O Pin VCC = 5.5V, pin high (absolute value) 1 µA Из даташит по 48-й меге, для 48Р тоже самое. Имеют право.
  21. Привет всем в новой для меня ветке! Кризис на дворе, появилось время для освоения новой техники. Решил заняться АРМами. Для начала нарыл кучу софта, прикупил LPC2138, книгу по филипсовским кристаллам, макетку. С горем пополам поставил ИАР и ошалел... Примерчик штатный там такой, что волосы дыбом встали. Ладно, найдем попроще. С диска, что идет с книгой, взял попроще - светодиодами поморгать. То, что хэд-файлы не совпадут, неожиданностью не стало (там пример из кейла). Кейл ставить пока не стал, начитавшись про него на форуме, да и лечилка что-то на ID ругается. Читал на форуме, что периферия симулируется не ахти, но никак не ожидал, что время выполнения программы посмотреть негде. Может и не нашел, но также не нашел и где частота кварца выставляется. Это вопрос первый - я дурак или так все плохо? Нашел более знакомый для себя компилятор ICC7V-ARM, там я бы с удовольствием поработал. Но отсюда вытекает второй вопрос - а чем можно просимулировать программку? JTAG пока трогать не хочу, т.к. для начального ногодрыганья и симулятора хватит. P.S. Больно не бить!
  22. Два вопроса от новичка

    Теперь вот какая проблема - flash magic не может связаться с чипом. Работаю на ноутбуке, СОМ порта нет. Поставил модуль FTDI - UB232R. Сигнала DTR у него нет, поэтому reset и p0.14 вывел на джампера. Подтяжка к питанию через 5.1к, джампера на землю. Галку "использовать RTS и DTR" снял. Программа ругается на то, что нет связи. Посмотрел осциллографом - даже не пытается коннектиться. Попробовал терминальную прогу, что использовали для этого модуля FTDI - сигналы проходят. Т.е. проблема именно в flash magic. Может еще что-нибудь из загрузчиков посоветуете?
  23. Два вопроса от новичка

    Цитата(Сергей Борщ @ Aug 20 2009, 22:41) Если это книга Редькина - "в печку ее" (с). Причем сначала в печку, а потом поиском по форуму найти - почему. Тревор Мартин. Да и не сторонник я аутодофе - времена уже не те... По поводу симуляции - что делать, привык. Работал в основном с АВР, немного с 51, совсем чуть-чуть с МСП. Вещь нелишняя, во всяком случае. Первое время тяжко придется.
  24. AVR и AT45DB321 - как запитать

    Сейчас как раз использую связку Atmega64 - AT45DB321D. Поставил LP2985AIM5X-3.3 на питание памяти и 74HCT125 на вход меги. Входы памяти (данные и такт) через резисторы 510Ом (просто у меня ходовой номинал). На макете вместо буфера использовал компаратор MAX944 - все без проблем даже с путанкой из МГТФ. Частота SPI вроде около 1МГц.
  25. Цитата(Dmitry_Rolex @ May 8 2009, 16:13) Вот же дерьмо предлагают сделать.. Возни куча. На рынке это не будет продаваться - а знаешь почему? - потому что я такую лабуду 9 лет назад видел, у ребёнка в комнате стояла(правда там ИК не было) (не обижайся, но это здоровая критика). Человек производство - освоил - утюгом??? И небось денег - кот наплакал. """"""""""Необходим схемотехник, трассировщик и программист."""""""""" - А в придачу командир расчёта ЗРК имеющий навыки в танце живота. """""Колитесь: на каких условиях? """" Да на каких - наверно специалиста высочайшего класса нашёл, такими вещами только отцы занимаются. 10 лет учишься чтоб потом светильник сделать за 1 руб 20 коп... надо на форуме ответвление сделать ЛАМЕРЫ для ЛАМЕРОВ. Есть проект следующий - электронная дверь в сортир - на дверь сортира ставишь ИК приёмник связанный с электромеханической защёлкой и доводчиком/открывателем двери, делаешь брелок с ИК передатчиком. Идёшь на кухню ешь Два свежих огурца выпиваешь стакан парного молока. Ждёшь......... Когда чуствуюешь, что поддон начал трещать - хватешь брелок и бежишь к сортиру, если все сработает успешно не обосрё... ся перед дверью. Очень востребовано. Есть дополнительный аппгрейд системы - над сортиром вешаешь светодиоды и они в случае успешного открытия 3 раза мигают, если нет, отвечают "бегущей волной". Можно ещё улучшить систему - на брелку сделать три кнопки 1 кнопка приоткрыть дверь, 2 открыть на полную и 3 кнопка - дверь отлетает со всей силы. И когда очень торопишься, жмёшь на 3 и влетаешь в будуар.)) А что не радует-то? У человека есть тема и желание что-то производить. Есть деньги оплатить не бог весть какой сложный (как всегда на первый взгляд) труд. Есть человек, готовый за эти деньги сделать рабочий макет. Как заказчик будет реализовывать плоды этой деятельности - это его личные проблемы. Наверное, в этой ветке нет ни одной темы, где не отметились бы любители почесать язык. Не хочешь либо не можешь сделать то, что нужно - выйди из темы.