Разбираюсь с генерацией OSD. Из даташита на MX88V462 download/file.php?id=186737 128 fixed characters and 64 programmable characters Display 128 characters in valid display area. ?????? Composition of a character: 18 x 12 dots
Не могу понять, как в RAM хранятся символы? Как сослаться на символ встроенного шрифта? Интуитивно представляю FONT TABLE RAM как массив бит 18 строк на (12*(128+64)) столбцов, но не вижу подтверждения в исходнике. Что задает массив m_RamFontTab? Вот кусок: Спойлер
Код:
На стр 112 даташита: EXT REG ADRESS_L 0xF2[D5-0] CHAR CODEOF FONT TABLE RAM EXT REG ADRESS_H 0xF3[D4-0] SCAN LINE OF THE FONT APPOINTED BY REG 0xA0 (0 - 0x11) EXT REG DATA_L 0xF4[D7-0] DATA FONT TABLE RAM EXT REG DATA_H 0xF5[D7-0] DATA FONT TABLE RAM
Если преобразовать (по алгоритму в коде) массив (m_RamFontTab) в графику то получаются квадратики с полосками, которые можно собрать в рамку любого размера. Похоже это рамка для меню в виде шрифта. В остальном нужно разбираться…
Если попробовать передать числа от 0..255 – что на экране при этом происходит?
Код:
unsigned char i;
for (i=0;i<0xFF;i++) { MXIC_OSD_ShowText(i, 1,0,0); _delay_ms(500); }
Так и понял, что в m_RamFontTab 8 символов. Въехал в структуру OSD_FONT_RAM. А вот как в code buffer передать индекс программного символа не понял. Сразу не заметил, что размерность адреса коде буфер - 7бит, от туда и "Display 128 characters in valid display area"
Цитата:
что на экране при этом происходит?
Так в том то и дело, что MXIC_OSD_ShowText не работает. Там, кстати, ворнинг при компиляции... makes pointer from integer without a cast ??? А конкретно - не то, что ожидается, символы не перебираются. Видно в рамке три символа, первый периодически меняется с O на X без закономерности, 2 и 3 - набор пикселей - появляются - пропадают. Если применить OSD_ShowText, у нее внутри очистка кодебуфера, то на экране вообще ни чего. Сразу после включения в кодебуфере есть какой то мусор, фото в теме T112 его демонстрирует. Смущает, что картинка не статична. После очистки и железного ресета - мусор не появляется. Проблема, мне кажется с передачей массива указателей в функцию MXIC_OSD_ShowText. На MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,0x0000,0x04, ASCII_TO_FONTIndex(0x31)); получаю 1 в верхнем левом углу рамки
Что такое 0x04 в MXIC_OSD_ShowText m_DisplayBuffer[j]=ASCII_TO_FONTIndex(m_Str[i]); m_DisplayBuffer[j+1]=0x04; //???????????
Вот как организован CODE BUFFER for (i=0;i<0xFF;i++) { MXIC_OSDReg_SingleWrite(OSD_CODE_BUFFER,i,0x04, ASCII_TO_FONTIndex(i)); }
Заменил фото
Вложения:
Комментарий к файлу: 0-127 WP_001363.jpg [63.72 KiB]
Скачиваний: 1954
Появилось время закончить мониторчик. МК ATMEGA8L, внутренний генератор 8МГЦ, 3 кнопки, программный I2C. Корпус отфрезеровал из 10мм оргстекла. Дорисовал крестик, с возможностью передвижения и изменения цвета, а также добавил возможность смены формата PAL 4:3/16:9 . Полноценное меню кодить лень.
Исходники прилагаю.
Забыл про питание сказать. I,A U,V 0.16 3.3 цифра 0.1 5 аналог 0.21 5 LED подсветка
Вложения:
Комментарий к файлу: Исходник MX88V462.rar [87.6 KiB]
Скачиваний: 350
Это массив из 128 кодов символов, которые могут в статике отображаться в видимой области(в окне/окнах) экрана, в данном случае крестик. 128 - максимум. Адреса вшитых символов можно вычислить по фото выше, адреса пользовательских от 128-192.
пс была мысль добавить к экрану USART для проверки связи с различными устройствами, но 128 символов показалось маловато, может попробую в динамике выводить инфу...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения