Они разные, последовательные каналы медленные, графический режим обновляется секундами, паралельные требуют много памяти и загружают процессор. Символы во всех мониторах, кроме тех, что с процессорами, формируются программно, поэтому можно вводить любые символы. Данные можно передавать пин WR и считывать пин RD, но считывание используется редко. Моделей много разных поэтому бывают заморочки из за несовместимости.
Да, про скорость я зря не написал. А почему "паралельные требуют много памяти и загружают процессор"? Вроде бы ровно столько же требуют и меньше загружают (процессор не занимается последовательной передачей кучи данных).
Все дело в интерфейсах, которые реализованы в железе. Загружает больше, потому как параллельный интерфейс придется эмулировать, тогда как последовательный встроен в микроконтроллер.
Например, при последовательном интерфейсе алгоритм работы загрузки данных выглядит так: - Эй микроконтроллер, вот тебе Х кб данных. Вперед, заливай в экран! - Ок, заливаю первый байт.... <прерывание> - я залил байт, давай следующий - держи <байт заливается в фоне, микроконтроллер занимается другими делами
( ... )
Хорошо бы иметь много памяти. Тогда можно было бы организовать буффер кадра в оперативной памяти, нарисовать туда что нужно, а потом одним заходом выплюнуть весь кадр в экран.
К сожалению это мечты. В АТМеге очень мало оперативы (2кб, вроде), в ЕСП оперативы чуть больше (20кб) но тоже мало. В любом случае буффер кадра целиком не влезет. Поэтому прибегают к трюку. Например изображение рисуется маленькими кусочками в стиле - эй, экран, ограничь облась видимости областью 10:10x20:20 - экран, вот тебе 100 пикселей, нарисуй их на текущей области видимости
Линии рисуются примерно так же - организовывается прямоугольная область видимости шириной в 1 (или какая там нужна толщина) пикселей и заливается одним цветом. Т.е. это не привычный цикл в стиле "для х от 1 до 320", а управление экраном разного рода коммандами, которые занимают достаточно много времени. В итоге отрисовка одного кадра может занимать чуть ли не полсекунды. Для информатора с парой чисел покатит, но анимацию уже не отобразить.
Я не про масштабирование, а про распаковку символов. Масштабирование средствами микроконтроллера будет выглядеть некрасиво - проще заранее все отмасштабировать и положить в прошивку. А рисовать линиями... Я думаю ардуиновские библиотеки примерно так и делают
Давненько я не программировал. Лет 15 уже. Вот и интересуюсь, может, проще в Ардуинке не распаковывать символы, а просто рисовать линиями их? Надо ведь буквально несколько цифр изобразить
Reply
А почему "паралельные требуют много памяти и загружают процессор"? Вроде бы ровно столько же требуют и меньше загружают (процессор не занимается последовательной передачей кучи данных).
Reply
Например, при последовательном интерфейсе алгоритм работы загрузки данных выглядит так:
- Эй микроконтроллер, вот тебе Х кб данных. Вперед, заливай в экран!
- Ок, заливаю первый байт....
<прерывание>
- я залил байт, давай следующий
- держи
<байт заливается в фоне, микроконтроллер занимается другими делами ( ... )
Reply
Хорошо бы иметь много памяти. Тогда можно было бы организовать буффер кадра в оперативной памяти, нарисовать туда что нужно, а потом одним заходом выплюнуть весь кадр в экран.
К сожалению это мечты. В АТМеге очень мало оперативы (2кб, вроде), в ЕСП оперативы чуть больше (20кб) но тоже мало. В любом случае буффер кадра целиком не влезет. Поэтому прибегают к трюку. Например изображение рисуется маленькими кусочками в стиле
- эй, экран, ограничь облась видимости областью 10:10x20:20
- экран, вот тебе 100 пикселей, нарисуй их на текущей области видимости
Линии рисуются примерно так же - организовывается прямоугольная область видимости шириной в 1 (или какая там нужна толщина) пикселей и заливается одним цветом. Т.е. это не привычный цикл в стиле "для х от 1 до 320", а управление экраном разного рода коммандами, которые занимают достаточно много времени. В итоге отрисовка одного кадра может занимать чуть ли не полсекунды. Для информатора с парой чисел покатит, но анимацию уже не отобразить.
Reply
Reply
Reply
Reply
Reply
Масштабирование средствами микроконтроллера будет выглядеть некрасиво - проще заранее все отмасштабировать и положить в прошивку.
А рисовать линиями... Я думаю ардуиновские библиотеки примерно так и делают
Reply
Вот и интересуюсь, может, проще в Ардуинке не распаковывать символы, а просто рисовать линиями их? Надо ведь буквально несколько цифр изобразить
Reply
Leave a comment