lomtev 0 23 августа, 2007 Опубликовано 23 августа, 2007 · Жалоба Ну да ладно. Мне надо не на мультимедиа а на измерительный девайс, если честно то мне и цветов не надо было столько, просто график функции выводить. Зато мне над как-то засунуть в один МК два SPI один на память другой на дисплей. Вообще возможно такое? Если не два сразу то хоть поочереди. Но лучше сразу. И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SashaGubov 0 24 августа, 2007 Опубликовано 24 августа, 2007 · Жалоба Ну да ладно. Мне надо не на мультимедиа а на измерительный девайс, если честно то мне и цветов не надо было столько, просто график функции выводить. Зато мне над как-то засунуть в один МК два SPI один на память другой на дисплей. Вообще возможно такое? Если не два сразу то хоть поочереди. Но лучше сразу. И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=) Ипользуй программный SPI , скорость почти такая-же, лучше тот, который полностью расписан по битам Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lomtev 0 24 августа, 2007 Опубликовано 24 августа, 2007 · Жалоба Ипользуй программный SPI , скорость почти такая-же, лучше тот, который полностью расписан по битам Я просто запускал один SPI, причем только в CVAVR, так что как запустить по битам два я вообще не понимаю. И они будут работать вместе или только если один оключить, второй включить. Регистры же пишутся только одни, так что придется самому. Или побитово, это я должен описать работу каждой ножки, например функция send - поднять лог одной, поднять другой, а через третью посылать данные? На енто я точно не способен, с регистрами легче Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SashaGubov 0 24 августа, 2007 Опубликовано 24 августа, 2007 (изменено) · Жалоба Я просто запускал один SPI, причем только в CVAVR, так что как запустить по битам два я вообще не понимаю. И они будут работать вместе или только если один оключить, второй включить. Регистры же пишутся только одни, так что придется самому. Или побитово, это я должен описать работу каждой ножки, например функция send - поднять лог одной, поднять другой, а через третью посылать данные? На енто я точно не способен, с регистрами легче Для экрана используйте функцию посылки через обыкновенное дрыгание ногами! Ну а для памяти аппаратный...... void lcd_write(uint8_t a) { LCD_SCK=0;if (a & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; } Только ноги правильно настройте..... #define LCD_RS PORTC.4 #define LCD_RESET PORTC.3 #define LCD_CS PORTC.2 #define LCD_SCK PORTC.1 #define LCD_DAT PORTC.0 Использовать можно любые.... Изменено 24 августа, 2007 пользователем SashaGubov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sadat 0 24 августа, 2007 Опубликовано 24 августа, 2007 · Жалоба И почему-то на выводе 2.9В при включенном шлейфе с дисплеем напряжение 4В, отключаю шлейф и напряжение падает... Что за хрень... Но работает, пока еще не спалил...=) Это из-за защитных диодов по выводам данных внутри дисплея. Надо согласовывать уровни, так, как сделано у немцев (резисторы) либо логикой, либо диодами. Мк питается-то от пяти вольт, на линии данных - 4.6в, после встроенных защ. диодов на питании 4 вольта и формируется. К стати, дисплей может работать и без питания - внутренее потребление около 1 ма, может и на "паразитном" питании сидеть, только это не совсем правильно ;-) От перенапряжения по входам дисплей может сдохнуть, люди уже жаловались..... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lomtev 0 24 августа, 2007 Опубликовано 24 августа, 2007 · Жалоба Это из-за защитных диодов по выводам данных внутри дисплея. Надо согласовывать уровни, так, как сделано у немцев (резисторы) либо логикой, либо диодами. Мк питается-то от пяти вольт, на линии данных - 4.6в, после встроенных защ. диодов на питании 4 вольта и формируется. К стати, дисплей может работать и без питания - внутренее потребление около 1 ма, может и на "паразитном" питании сидеть, только это не совсем правильно ;-) От перенапряжения по входам дисплей может сдохнуть, люди уже жаловались..... Спасибо. Все понял. Что-нибудь придумаем. Для экрана используйте функцию посылки через обыкновенное дрыгание ногами! Ну а для памяти аппаратный...... void lcd_write(uint8_t a) { LCD_SCK=0;if (a & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (a & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; } Только ноги правильно настройте..... #define LCD_RS PORTC.4 #define LCD_RESET PORTC.3 #define LCD_CS PORTC.2 #define LCD_SCK PORTC.1 #define LCD_DAT PORTC.0 Использовать можно любые.... Сидел думал - Что за хрень, а потом ан нет стал догонять.... Значит для дисплеяя нужен только SCK и DAT, а у меня еще и CS дергается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SashaGubov 0 25 августа, 2007 Опубликовано 25 августа, 2007 · Жалоба Спасибо. Все понял. Что-нибудь придумаем. Сидел думал - Что за хрень, а потом ан нет стал догонять.... Значит для дисплеяя нужен только SCK и DAT, а у меня еще и CS дергается. CS тоже нужен! Посмотрите по примерам... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lomtev 0 25 августа, 2007 Опубликовано 25 августа, 2007 · Жалоба CS тоже нужен! Посмотрите по примерам... Вроде где-то были. Взглянем. Всем спасибо :a14: . Если что че-нить ще глупое спрошу :twak: . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k34Nex 0 27 августа, 2007 Опубликовано 27 августа, 2007 · Жалоба Здравствуйте уважаемые электронщики!У меня есть M65 lcd с контроллером L2F50** и еще есть огромное желание прикрутить его к МК. Но я не знаю WinAVR и контроллер у меня Мега16. Знаю основы Си и CVAVR. Мне бы только инициализировать его и все) Помогите новичку плз! Перечитал форум, скачал примеры с немецкого форума но нифига не разобрался)Подскажите, как инициализировать чтобы написать в cvavr! Заранее благодарен всем!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=Женек=- 0 27 августа, 2007 Опубликовано 27 августа, 2007 · Жалоба http://electronix.ru/forum/index.php?showt...6563&st=300 Вот где-то на этой странице есть две ссылки на архивы с библиотекой под CV. От себя добавлю - есть там файл disp.lib, так вот он викидывал ошибку при ассемблировании до тех пор, пока после всех строк ассемблерных вставок (#asm/#endasm) я не поубирал комментарии. Так что если не будет запускаться - уберите их. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lomtev 0 27 августа, 2007 Опубликовано 27 августа, 2007 (изменено) · Жалоба Вот и назрел тупой вопрос. Привожу код побитового SPI? много, но все очень понятно. файл simple.c #include <mega32.h> #include <delay.h> #include "lcd_function.h" int main(void) { PORTB=0x5D; DDRB=0xFF; // backlight PWM generation // use timer 2 in fast PWM mode for this PORTD = 0<<7; // clear port before enable DDRD = 1<<7; // will be used for OC2, must be output TCCR2 = 1<<3 | 1<<6 | 1<<5 | 1<<0; TCNT2=0x00; OCR2=85; delay_ms(1); lcd_init(); while (1) { } return(0); } файл lcd_function.h #include <mega32.h> #include <delay.h> #define cmd 1 #define dat 0 #define LCD_CS PORTB.0 #define LCD_RESET PORTB.1 #define LCD_RS PORTB.2 #define LCD_DAT PORTB.5 #define LCD_SCK PORTB.7 char i=0; char datcom=0; int word=0; int INIT1[12]={0xFDFD,0xFDFD,0xEF00,0xEE04,0x1B04,0xFEFE,0xFEFE,0xEF90,0x4A04,0x7F3F ,0xEE04,0x4306}; int INIT2[20]={0xEF90,0x0983,0x0800,0x0BAF,0x0A00,0x0500,0x0600,0x0700,0xEF00,0xEE0C ,0xEF90,0x0080,0xEFB0,0x4902,0xEF00,0x7F01,0xE181,0xE202,0xE276,0xE183}; int INIT3[1]={0x8001}; void lcd_write(char,int word); //инициализация дисплея void lcd_init() { for(i=0; i<12; i++) lcd_write(cmd, INIT1); //Первый массив данных delay_ms(7); for(i=0; i<20; i++) lcd_write(cmd, INIT2); //Второй массив данных delay_ms(50); for(i=0; i<1; i++) lcd_write(cmd, INIT3); //Третий массив данных delay_ms(5); } //Запись байта void lcd_write(char datcom, int word) { if(datcom & 1) LCD_RS=1; else LCD_RS=0; LCD_CS=0; LCD_SCK=0;if (word & 32768) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 16384) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 8192) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 4096) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 2048) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 1024) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 512) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 256) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 128) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 64) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 32) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 16) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 8) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 4) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 2) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_SCK=0;if (word & 1) LCD_DAT=1;else LCD_DAT=0;LCD_SCK=1; LCD_CS=1; } Проверял в VMLAB, все скачки подходят под числа, никаких сдвигов, все ноги (вроде RESET) в нужном лог. уровне. Причем всё сверял с немцами. различается лишь что я посылаю int, а в рабочем примере char, и у немцев идет небольшая пауза между передаче двух char-ов (пр. их - 0xFD,0xFD, мой 0xFDFD), но кристалл в это время все равно не выбран так что ни на что влиять не должно. Я вообще в непонятках. Как я понимаю после того что я привел выше на дисплее должен появиться мусор. Однако черный экран. Заранее огромной спасибо за помощь. Изменено 27 августа, 2007 пользователем lomtev Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lomtev 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба Отвечать на предыдущий вопрос не надо, все пошло. Свои "мусор" я вывел. Теперь. Кто подскажет как совместить лог уровни, что бы там где должно 2.9В быть не было 4В. На умных словах не пойму в упор, только уж если совсем на пальцах, так что если можно схемку - какие резисторы куда вешать. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=Женек=- 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба можно без резисторов. У меня Мега32 работала на 3,3 вольтах на 16 МГц. Оба вывода питания 2.9 и 1.8 вольт можно совершенно безболезненно цеплять на 3,3 вольти ничего дисплею не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lomtev 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба можно без резисторов. У меня Мега32 работала на 3,3 вольтах на 16 МГц. Оба вывода питания 2.9 и 1.8 вольт можно совершенно безболезненно цеплять на 3,3 вольти ничего дисплею не будет. Питаюсь от USB с матери в компе. Если есть мысль где там 3.3 буду рад узнать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iDenis 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба Народ можеткто нить пробовал разобраться с диспам у которого разрешение больше чем 132х176, например 240х320??????????? Сейчас у Нокиа е61 очень не плохой экран 320 х 240... не только в плане точек но и самого размера экрана, только как за него зацепится пока не представляю... Разпиновку нашел в схеме е61... в остальном черный ящик... какие контроллеры использует Нокиа для таких решений? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться