gorlanovmax Опубликовано 12 февраля, 2017 Поделиться Опубликовано 12 февраля, 2017 (изменено) Доброго времени суток, Мучаю дисплей 6610 от Нокии. У реалии еще не пришел. Практикуюсь пока на протеусе. Все библиотеки и примеры, которые я нашел, созданы в WinAVR/ Адаптировал под CVAVR. Но имею проблему с цветом. При первой заливкой фоном все ок. Картинка А далее начинается полтергейст Следующий прямоугольник начинается с пиксела предыдущего цвета, Картинка который закрывается по окончанию вывода прямоугольника Картинка А при выводе линии и текста, вообще все красиво Картинка Причем чередуются три цвета. Код весь пересмотрел. Не могу понять в чем проблема. Во вложении архив с проектом, библиотеками и моделью в протеусе V7.rar Изменено 12 февраля, 2017 пользователем gorlanovmax 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
gorlanovmax Опубликовано 12 февраля, 2017 Автор Поделиться Опубликовано 12 февраля, 2017 Собственно я уверился в своих предположениях. Проштудировал даташит на контроллер. Переключил дисплей в режим 8-ми битного цвета. Поменял переменные цветов с int на unsigned char И подправил процедуры вывода пикселов следующим образом: было void nlcd_Pixel(unsigned char x, unsigned char y, int color_2) { nlcd_GotoXY(x,y); nlcd_SendByte(CMD_LCD_MODE,LCD_PHILLIPS_RAMWR); CS_LCD_RESET; nlcd_SendByte(DATA_LCD_MODE, (unsigned char)((color_2>>4)&0x00FF) ); nlcd_SendByte(DATA_LCD_MODE, (unsigned char)(((color_2&0x0F)<<4)|0x00) ); CS_LCD_SET; nlcd_SendByte(CMD_LCD_MODE,LCD_PHILLIPS_NOP); } стало void nlcd_Pixel(unsigned char x, unsigned char y, unsigned char color_2) { nlcd_GotoXY(x,y); nlcd_SendByte(CMD_LCD_MODE,LCD_PHILLIPS_RAMWR); CS_LCD_RESET; nlcd_SendByte(DATA_LCD_MODE, color_2); CS_LCD_SET; nlcd_SendByte(CMD_LCD_MODE,LCD_PHILLIPS_NOP); } Все заработало корректно. Но имеем только 256 цветов. Не понимаю, чем CVAVR не нравится форма посылки двух байтов цвета при 12-битном режиме. Т.е. некорректно отрабатывают следующие строки nlcd_SendByte(DATA_LCD_MODE, (unsigned char)((color_2>>4)&0x00FF) ); nlcd_SendByte(DATA_LCD_MODE, (unsigned char)(((color_2&0x0F)<<4)|0x00) ); 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.