Даташит я уже читал, только до конца разобраться в нем не получилось В какой последовательности надо подавать команды? Можете дать кусочек простейшего кода, для работы с этим чипом, например для заливки экрана белым?
_________________ Опыт растет прямо пропорционально выведенному из строя оборудованию...
Переписал я код в CodeVision, прошил, подключил дисплей, а реакция нулевая... Может у него другой контроллер? Какие еще контроллеры с SPI интерфейсом есть?
Ты как то совсем коряво пытаешся программный SPI организовать, не заботясь ни о протоколе, ни о таймингах, просто засылая в порт . Да и нах это, если в МЕГЕ неплохой аппаратный SPI. Если на словах, то подключи MOSI-SDA, SCK-SCL, CS и RES можно оставить, но не забывать вовремя ими дрыгать, настроить регистры SPCR и SPSR по твоим потребностям и все. Байт который хочешь отослать записываешь в регистр SPDR и ждешь окончания передачи проверяя флаг SPIF (или, если подключен хидер SPI.h, просто коммандой spi (data);) Прикрепляю файлик на Сях в котором можно посмотреть как это сделано для дисплея LS020 от Сименса65. Поизучай. Полезно.
PS. Нули в регистры МЕГИ записывать не обязательно. После сброса они там и так присутствуют. Лишняя писанина. Только если сам туда чего напихал и нужно обнулить......
Вложения:
Комментарий к файлу: Для LS020 displs020.rar [4.68 KiB]
Скачиваний: 326
_________________ Общаюсь на ТЫ. Без расшаркиваний.
Ну так ведь в том исходнике бог знает что, бог знает для какого камня, и черт знает для какого компилятора написано. Да и еще китайцы писали. Да и не исходник это. Так, кусок кода не из нашей оперы. Там инклюды совсем чужие.
_________________ Общаюсь на ТЫ. Без расшаркиваний.
Ой. Объяснить не сложно, но объемно получится. Я столько писанины не осилю. Вышлю в личку свой Skype, и на досуге попробую пообщаться. Я же учился так: узнаю какой контроллер в дисплее, ищу даташит на контроллер, ищу пример кода (именно для АТМЕЛовских компиляторов) и досконально пытаюсь разобраться какая команда что делает. Я тоже в CodeVision рисую. А для начала прикрепляю еще кусок кода для нашего любимого CodeVision. Это еще один дисплей для Сименса S65 только типа LPH8836 на контроллере HD66773. Его даташит гуглится. И вот если взять таблицу комманд из 47 страницы, взять пример моего кода и сопоставив разобраться, то можно все понять. А если еще почитать даташит дальше 47 страницы, и понять что выполняют те данные, которые мы засылаем в регистры, то вааще будет крутяк. И если честно, то код который я прикрепляю можно почти полностью использовать для твоего дисплея. Поменяв только адреса регистров и засылаемые значения в них в соответствии с даташитом твоего контроллера. Так как в принцыпе все контроллеры таких дисплеев весьма похожи. если не сказать одинаковы.
ЗЫ. отдохну от писанины и накропаю попозже для общего обозрения кусок кода для вывода точки и заполнения области.
Отвечаю за базар. Вот так бы я написал процедуру вывода точки с цветом COLOR и координатами по Х и У для контроллера ILI9325
void LCD_Put_Pixel(unsigned int x, unsigned int y, unsigned int color) { LCD_WR_REG(0x0020,x); LCD_WR_REG(0x0021,y); LCD_WR_DATA(color); } т.е. в регистр 00х20 (Horizontal GRAM Address Set) записываю координату Х, в регистр 00х21 (Vertical GRAM Address Set) записываю координату У, и записываю цвет точки.
А вот так я бы написал процедуру заполнения области экрана с указанными координатами указанным цветом:
void LCD_Put_Area(unsigned int xstart, unsigned int ystart, unsigned int xend, unsigned int yend, unsigned int color) { unsigned int i; LCD_WR_REG(0x0050,xstart); LCD_WR_REG(0x0051,xend); LCD_WR_REG(0x0052,ystart); LCD_WR_REG(0x0053,yend); for(i=0;i<(xend-xstart)*(yend-ystart);i++) { LCD_WR_DATA(color); } } Названия регистров с адресами 50h,51h,52h,53h, посмотрите в даташите на контроллер ILI9325 в таблице комманд на странице 51,52.
Но это всего лишь две процедуры. Чтобы они заработали нужно написать еше процедуры записи в регистры LCD_WR_REG(); посылки данных LCD_WR_DATA(); и проинициализировать контроллер. Ну и конечно же все остальное, что требуется для работы обслуживающего микроконтроллера и компилятора.
PS. Если посмотреть даташиты на контроллеры ILI 9325 и R61505 то можно узреть почти полное соответствие адресов и названий регистров.
_________________ Общаюсь на ТЫ. Без расшаркиваний.
Последний раз редактировалось Alex62 Чт авг 18, 2011 10:44:34, всего редактировалось 1 раз.
Ой. Объяснить не сложно, но объемно получится. Я столько писанины не осилю. Вышлю в личку свой Skype, и на досуге попробую пообщаться. Я же учился так: узнаю какой контроллер в дисплее, ищу даташит на контроллер, ищу пример кода (именно для АТМЕЛовских компиляторов) и досконально пытаюсь разобраться какая команда что делает. Я тоже в CodeVision рисую. А для начала прикрепляю еще кусок кода для нашего любимого CodeVision. Это еще один дисплей для Сименса S65 только типа LPH8836 на контроллере HD66773. Его даташит гуглится. И вот если взять таблицу комманд из 47 страницы, взять пример моего кода и сопоставив разобраться, то можно все понять. А если еще почитать даташит дальше 47 страницы, и понять что выполняют те данные, которые мы засылаем в регистры, то вааще будет крутяк. И если честно, то код который я прикрепляю можно почти полностью использовать для твоего дисплея. Поменяв только адреса регистров и засылаемые значения в них в соответствии с даташитом твоего контроллера. Так как в принцыпе все контроллеры таких дисплеев весьма похожи. если не сказать одинаковы.
ЗЫ. отдохну от писанины и накропаю попозже для общего обозрения кусок кода для вывода точки и заполнения области.
Попробовал Ваш проект. Все запускается, кроме отображения русских букв. Вместо них мусор. Не подскажете, в чем косяк? Дисплей LPH8836, только вот какой контроллер я не смог найти.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения