RN3QLQ 0 8 декабря, 2016 Опубликовано 8 декабря, 2016 · Жалоба Добрый день! Помогите разобраться с выводом графической информации на дисплей 128x64. Использую библиотеку u8glib и Atmel Studio 7. Вывод текста, графики работает. А вывод картинки bmp нет. Вот кусок кода: void draw(void) { u8g_DrawXBM(&u8g,0,0,128,64,pic_bmp); } //Блок вывода графической информации for(;;) { u8g_FirstPage(&u8g); do { draw(); } while ( u8g_NextPage(&u8g) ); u8g_Delay(100); } Файл pic_bmp.h вот такой: //static const unsigned char __attribute__ ((progmem)) pic_bmp[]={ //const unsigned char __attribute__ ((progmem)) pic_bmp[]={ //const uint8_t*const pic_bmp[] PROGMEM ={ const uint8_t pic_bmp[] ={ 128,64, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0x7c, 0x7e, 0x3e, 0x3e, 0x3e, 0x3f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x3e, 0x3e, 0x3e, 0x7e, 0x7c, 0x7c, 0xfc, 0xf8, 0xf8, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0xff, 0xff, 0xff, 0x1f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x88, 0x88, 0x88, 0xd8, 0x70, 0x00, 0x08, 0xf8, 0x08, 0x00, 0x00, 0xe0, 0x30, 0x18, 0x08, 0x08, 0x08, 0x10, 0x38, 0x00, 0x00, 0x08, 0xf8, 0x88, 0x88, 0x88, 0xd8, 0x70, 0x00, 0x08, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0x08, 0x08, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x08, 0x00, 0x00, 0x08, 0x88, 0x88, 0xc8, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x03, 0x06, 0x0c, 0x08, 0x08, 0x08, 0x04, 0x02, 0x00, 0x00, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x08, 0x01, 0x03, 0x06, 0x08, 0x08, 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x06, 0x08, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0x7f, 0x7f, 0x3f, 0x1f, 0x0f, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x7e, 0x7c, 0x7c, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf8, 0xfc, 0x7c, 0x7c, 0x7e, 0x3e, 0x3e, 0x3f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xff, }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 8 декабря, 2016 Опубликовано 8 декабря, 2016 · Жалоба Помогите разобраться с выводом графической информации на дисплей 128x64. Использую библиотеку u8glib и Atmel Studio 7. Вывод текста, графики работает. А вывод картинки bmp нет. возможно вы не тот формат bmp скармливаете либе.. для начала, очистите массив до 0x00, а в первом байте для экранной области впишите 0x01 потом 0x80 потом 0x00, 0x01 после этого можно будет понять куда и как выводятся пиксели этой либой.. у формата bmp сначала идет заголовок и изображение хранится перевернутым - надеюсь либа это учитывает при работе с вашим массивом.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RN3QLQ 0 8 декабря, 2016 Опубликовано 8 декабря, 2016 · Жалоба Спасибо за подсказку, я попробую. Формат bmp вроде как конвертировался конвертером в код.... Меня еще смущают строки, я их закомментил, объявление массива с PROGMEM и без. И в первом посте я указал, что юзаю Atmel Studio 7. С PROGMEM выводятся только несколько точек в одно полоску, в верхней части экрана. А без PROGMEM, картинка, которую я прикрепил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 8 декабря, 2016 Опубликовано 8 декабря, 2016 · Жалоба Спасибо за подсказку, я попробую. Формат bmp вроде как конвертировался конвертером в код.... Меня еще смущают строки, я их закомментил, объявление массива с PROGMEM и без. И в первом посте я указал, что юзаю Atmel Studio 7. С PROGMEM выводятся только несколько точек в одно полоску, в верхней части экрана. А без PROGMEM, картинка, которую я прикрепил. не знаю, что там за либа в студии, я в свое время писал всю поддержку самостоятельно.. вот ближайший тред с подобной тематикой http://forum.arduino.cc/index.php?topic=151669.0 там все заработало.. нужен bmp в формате b/w там сказано, что массив в памяти это так static unsigned char u8g_logo_bits[] = { если во флеш (ROM), то static unsigned char u8g_logo_bits[] U8G_PROGMEM = { и все же я бы посоветовал начать с одной точки и пустого экрана, чтобы понять работоспособность кода.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RN3QLQ 0 9 декабря, 2016 Опубликовано 9 декабря, 2016 · Жалоба Немного разобрался. Во-первых, действительно формат BMP не правильный. Взял массив из примера, по Вашей ссылке, все заработало: Что касается загрузки массива во Flash, то компилятор не воспринимает запись static без служебного слова const только так: "static const unsigned char pic_bmp[] PROGMEM ={ " или так: "static const unsigned char __attribute__ ((progmem)) pic_bmp[]={ " В обоих случая результата нет: В любом случае, спасибо за разъяснения. Вывод в память работает, пока этого достаточно. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 9 декабря, 2016 Опубликовано 9 декабря, 2016 · Жалоба Что касается загрузки массива во Flash, то компилятор не воспринимает запись static без служебного слова const В любом случае, спасибо за разъяснения. Вывод в память работает, пока этого достаточно. Спасибо! угу, заработало - уже праздник.. что за ошибку пишет компилятор? по ней можно попробовать понять чего не так или чего не хвататет.. а вместо PROGMEM не пробовали U8G_PROGMEM? еще, как версия, либа не умеет работать с флешом - надо читать описание или смотреть п/п в библиотеке.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RN3QLQ 0 9 декабря, 2016 Опубликовано 9 декабря, 2016 · Жалоба угу, заработало - уже праздник.. что за ошибку пишет компилятор? по ней можно попробовать понять чего не так или чего не хвататет.. а вместо PROGMEM не пробовали U8G_PROGMEM? еще, как версия, либа не умеет работать с флешом - надо читать описание или смотреть п/п в библиотеке.. Попробовал U9G_PROGMEM, чуда не произошло. Компилятор просит либо: static const unsigned char pic_bmp[] U8G_PROGMEM ={ либо: static const unsigned char __attribute__ ((progmem)) pic_bmp[]={ -------------- Чудо всё-таки произошло: static const unsigned char __attribute__ ((u8g_progmem)) pic_bmp[]={ Еще раз спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RN3QLQ 0 9 декабря, 2016 Опубликовано 9 декабря, 2016 · Жалоба возможно вы не тот формат bmp скармливаете либе.. Подскажите кодировщик какой-нибудь из bmp в код, то, что нашел - никак не хочет корректно выводить на экран. (картинка из примера, выводится нормально, а ни одна из моих не выводится) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RN3QLQ 0 9 декабря, 2016 Опубликовано 9 декабря, 2016 · Жалоба Разобрался. Картинку сохранил в формате xbm и все заработало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 12 декабря, 2016 Опубликовано 12 декабря, 2016 · Жалоба У AVR указатели в progmem и обычные не совместимы. Так что одна и таже процедура не может работать с обоими типами указателей. Смотрите интерфейсы в u8glib Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться