AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
24.03.2024, 20:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Devil Byte, ну напиши ты элементарный интерфейс к SPI. По уарту даешь команду - пишешь что-то в SPI. И экспериментируй. Я именно так и начинал работу с экранчиком.
А чужие "библиотеки" не используй, если не в силах понять, что они делают! Как минимум - почитай их исходники. Думаю, увидев этот адов быдлокод, сразу поймешь, что не стоит вообще даже длинной палкой это УГ тыкать. За вечер сам напишешь код, нежели будешь неделю биться, пытаясь чужой прикрутить (ну и чужой явно будет жирней).
Самый адов ад, что я видел для работ с экранами - это "библиотеки" от адафрут. Отличный прямо-таки эталон, как ни в коем случае писать нельзя.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
24.03.2024, 20:14
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
eddy, Да я понял тебя, просто я заказл монохромы, но они не дошли до моего отлета, а этот пришел, но он ска пока сложный для меня. думал может будут какие то наработки, но походу вернусь к нокловскому дисплею пока. хотя в некотором случае мне не хватает места на нем
|
|
|
|
24.03.2024, 21:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от Devil Byte
|
отлета
|
Чего-чего?
Что до нокиевского - достаточно простая штука: не нужно париться со спрайтами 8×8 или 16×16 для цвета.
Кстати, погуглил: в 328 аврке всего лишь 2кБ ОЗУ. Этого вообще никак не хватит для работы с цветным экранчиком.
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 24.03.2024 в 21:59.
|
|
|
|
24.03.2024, 22:15
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от eddy
|
2кБ ОЗУ. Этого вообще никак не хватит для работы с цветным экранчиком.
|
У меня 4кб, atmega128. Сейчас нашел в коробке экран 2.2 дюйма.
BD663474
Смог его запустить, получается выводить текст. Но пока не понял как изменить размер шрифта, я так понимаю что ее прийдется дописать(. но в целом при запуске теста дисплея для меня приемлемая скорость отработки
Последний раз редактировалось Devil Byte; 24.03.2024 в 22:59.
|
|
|
|
25.03.2024, 05:32
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от Devil Byte
|
Но пока не понял как изменить размер шрифта,
|
Ну как - просто найти другой шрифт (массив шрифта) другого размера. Или сделать свой шрифт с помощью программулины-генератора шрифтов. Например, DotFactory.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
25.03.2024, 06:39
|
|
Временная регистрация
Регистрация: 07.03.2019
Сообщений: 87
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от NewWriter
|
просто найти другой шрифт Или сделать свой шрифт .
|
Вчера попытался написать функцию увеличения через коэффициент.
Нажмите, чтобы открыть спойлер
PHP код:
|
void PutCharLarge(uint16_t Xpos, uint16_t Ypos, uint8_t ASCI, uint16_t charColor, uint16_t bkColor, uint8_t scale) {
uint16_t i, j, k, l;
uint8_t buffer[16], tmp_char;
uint8_t width = 8 * scale;
uint8_t height = 16 * scale; // для простоты масштабирования в 2 раза
GetASCIICode(buffer, ASCI); // функция для получения битовой карты символа
for (i = 0; i ‹ 16; i++) {
for (k = 0; k ‹ scale; k++) { // добавляем цикл для масштабирования по вертикали
tmp_char = buffer[i];
for (j = 0; j ‹ 8; j++) {
for (l = 0; l ‹ scale; l++) { // добавляем цикл для масштабирования по горизонтали
if ((tmp_char ›› (7 - j)) & 0x01) {
LCD_SetPoint(Xpos + j * scale + l, Ypos + i * scale + k, charColor);
} else {
LCD_SetPoint(Xpos + j * scale + l, Ypos + i * scale + k, bkColor);
}
}
}
}
}
}
void GUI_TextLarge(uint16_t Xpos, uint16_t Ypos, uint8_t *str, uint16_t Color, uint16_t bkColor, uint8_t scale) {
uint8_t TempChar;
do {
TempChar = *str++;
PutCharLarge(Xpos, Ypos, TempChar, Color, bkColor, scale);
Xpos += 8 * scale; // увеличиваем шаг для X координаты согласно масштабу шрифта
// переход на новую строку или обработка других условий, если нужно
|
Но во первых, я смог только увеличить шрифт кратно, и такое чувство что когда ставишь два, то он его раза в 4 увеличивает. ну и плюс это сказалось на производительности. лучше в общем найти готовый шрифт
|
|
|
|
25.03.2024, 11:52
|
|
Временная регистрация
Регистрация: 10.11.2016
Сообщений: 53
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 13 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от eddy
|
Кстати, погуглил: в 328 аврке всего лишь 2кБ ОЗУ. Этого вообще никак не хватит для работы с цветным экранчиком.
|
Это почему не хватит?
|
|
|
|
25.03.2024, 12:14
|
|
Временная регистрация
Регистрация: 10.11.2016
Сообщений: 53
Сказал спасибо: 6
Сказали Спасибо 16 раз(а) в 13 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от eddy
|
// ну и не пройду мимо и еще раз пристыжу: позорище-то какое! Ни документацию ТС не в состоянии почитать, ни код написать…
|
Вот Вы других стыдите, а похоже сами даташит на дисплей не разу не заглядывали. Про регистры "окна вывода" похоже не слыхали, и оперируете только буфером вывода. Т.е. обновляете весь экран целиком при каждом выводе?
|
|
|
|
25.03.2024, 12:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,714
Сказал спасибо: 130
Сказали Спасибо 1,108 раз(а) в 527 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Смотря для чего. И как организовать вывод. Если делать "в лоб" с организацией видеостраницы - естественно не хватит. А если обрисовывать поэтапно - все будет нормально.
Я в такой ситуации разбил экран на зоны и отрабатывал каждую зону путем прямой записи в память видеоэкрана.
|
|
|
|
25.03.2024, 12:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Дисплей 3.5 на ILI9341 + atmega128
Сообщение от sanya
|
Т.е. обновляете весь экран целиком при каждом выводе?
|
Конечно: это проще, чем прикидывать, какая область у тебя обновилась - еще один буфер заводить придется с флагами. Да и что там пересылать-то? DMA запустил на два буфера, оно и "само", разве что в прерываниях на половину передачи выставляет флаг для заполнения второго буфера.
Сообщение от sanya
|
Это почему не хватит?
|
Ну вот пусть даже будет экран 128×128 пикселей. Для битовой информации получаем 16·128=2кБ памяти + на цветовые спрайты 256 байт + два буфера по 256 байт для передачи по SPI данных в формате экрана.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:54.
|
|