Сжатие монохромных картинок - изобретаем PCX

У меня образовался дисплейчик от нокии 3310. Монохромный. 84 х 48 пикселей.
Пока еще его не подключал. Только напаял проводочки.

Сегодня думал — в каком формате хранить картинки. Если записывать без сжатия по 1 биту на пиксель, то один кадр занимает 504 байта. Для отображения пары картинок оно конечно уместно, а вот если хочется записать в МК анимацию или еще что, то будет фейл.

Стал думать над тем, как-бы сжать картинку, чтобы при этом на распаковку тратилось минимум времени и сил. Первое, что пришло на ум — PCX. Это такой древний, как MS-DOS, формат изображений.

Суть в следующем: вместо того, чтобы писать подряд цвета для каждого пикселя, мы запишем сколько пикселей одного цвета идут друг за другом и цвет этой пачки.



Читать дальше

Перекодировка

Заметил, что некоторые уважаемые люди до сих пор для перекодировки 7ми сегментника применяют казалось бы совсем ненужные вещи — бумагу или спец программы. Хочу предложить простенький метод (для асма, под С тоже наверно что-то такое можно сделать), который позволит забыть

Читать дальше
  • +4
  • 07 апреля 2011, 15:30
  • psv

Реализация кольцевого буфера на языке Verilog HDL. Пара слов о поиске ошибок.

У нас уже есть примеры реализации кольцевого буфера на языках Assembler (для STM32) [1], C [2] и C++ [3]. Пожалуй, продолжим. В этой статье я приведу пример реализации простенького кольцевого буфера на языке Verilog HDL. Так же будет приведен разбор типовой ошибки, которую я допустил при написании этого кода.


Читать дальше
  • +2
  • 06 апреля 2011, 22:25
  • Alatar

Сопряжение домофонов. Часть № 2 Четырехпроводный видеодомофон. Алгоритм работы

Всякая работа требует больше времени, чем вы думаете.
Законы Мерфи

Структурная схема

Самая распространенная структурная схема четырехпроводного видеодомофона приведена на рисунке:
Структурная схема
В зависимости от модели видеодомофона к нему можно подключать от одной до нескольких вызывных панелей (обычно не более трех).

Читать дальше
  • +2
  • 03 апреля 2011, 22:14
  • kvm

Минималистичная очередь задач на C.

Недавно тут появилась замечательная статья про реализацию кольцевого буфера на C++ [1]. Статья весьма ценная и полезная, но, как вполне справедливо заметили в комментариях, что бы писать на крестах под контроллеры надо весьма хорошо знать этот язык, иначе красивый и, вроде бы, элегантный плюсовый код собирается в ресурсоёмкое тормозилово. Я и сам хоть и пишу десктопные проги на плюсах, под контроллеры пока предпочитаю использовать чистый С. Так вот, по этому поводу вспомнилось мне, что я как раз недавно занимался шлифовкой очереди задач на основе кольцевого буфера на сях, и я решил поделиться своими наработками — вдруг кому пригодится. Код, разумеется, платформонезависимый (ну кроме конструкции ATOMIC_BLOCK), а вот оптимизация делалась под avr-gcc и на других платформах/компиляторах может быть излишней.


Читать дальше
  • +3
  • 01 апреля 2011, 09:48
  • Alatar

Сопряжение домофонов. Часть № 1 "Цифровой" домофон. Алгоритм работы

Сопряжение домофонов. Часть № 1 "Цифровой" домофон. Алгоритм работы

Что человек, когда он занят только сном и едой?
Животное, не больше.
Вильям Шекспир

Лиха беда начало

Всё началось с ремонта в квартире и установки видеодомофона, т.е. появилось два домофона. Один — подъездный аудиодомофон и второй — квартирный видеодомофон. В процессе их использования появилась необходимость объединить их в одно устройство. Логичнее всего подключить подъездный домофон к квартирному, имеющему лучший дизайн, тем более, что из двух имеющихся каналов, на нем используется только один.
Для того, чтобы произвести объединение необходимо, для начала, изучить алгоритмы работы. Поиск в Internet, к сожалению, не дал особых результатов. Удалось только выяснить, что подъездный домофон представляет из себя, так называемый, "цифровой" домофон. Слово "цифровой" специально заключено в кавычки потому что, как оказалось, цифровым является только набор номера квартиры. Звук же передается в аналоговом виде.


Читать дальше
  • +10
  • 25 марта 2011, 21:21
  • kvm