Алгоритм компрессии AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Алгоритм компрессии AVR

Сообщение BCluster »

Привет всем. Задачу решить нужно )
дано много матриц целых чисел 0..65535, размерностью 20х12. Задача состоит в том, чтобы впихнуть в контроллер как можно больше этих матриц - ибо одна получается 480 байт, что для аврки многовато. Вопрос в том, можно ли как то компрессировать эти данные? Может кто сталкивался?
Реклама
Аватара пользователя
Mamonth
Вымогатель припоя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

Может есть смысл рассчитывать эти таблички на ходу?
Today fine night...
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18612
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

ну, предположим, для меги128 эти таблички просто тьфу - их можно напихать кучу во FLASH. так что вопрос некорректный по сути - без указания конкретной меги.

кроме того, какого рода данные хранятся в этих табличках? и как они должны использоваться? алгоритмов компрессии известно много - от кодирования групп повторяющихся байтов RLE до LZW и его разновидностей. LZW скорее всего не пойдет, т.к. довольно требовательный к объему ОЗУ (по меркам AVR), а вот RLE запросто.

но ведь на распаковку перед использованием уйдут ресурсы МК... это тоже не стоит забывать
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Это принципиально хранить все таблицы в аврке?
на компрессию/декомпресию уйдет туева хуча ресурсов, да и времени на это будет уходить море.
может просто внешнюю память прицепить?
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Сообщение BCluster »

проц - мега168. И так все будет во флэше. Компрессия будет производиться на большом компутере, хранить принципиально надо в аврке ) Скорость работы не принципиальна - аврка практически ничего не делает - данные - время включения и выключения устройств.

RLE это хорошо, но его эффективность с числовыми данными для меня очень сомнительна, я не очень понимаю что он сможт там сжать. Поясните, если не трудно

Данные - инты, от 0 до 65535, просто числа. Размерность возьмем 3х20 Например

Код: Выделить всё

 0  20  132 153 131 ... 4346
10  23  543 433 234 ... 4533
 1   7    9  12  25 ...   14
Последний раз редактировалось BCluster Чт июл 09, 2009 10:12:38, всего редактировалось 7 раз.
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

BCluster писал(а):...Скорость работы не принципиальна - аврка практически ничего не делает - данные - время включения и выключения устройств.
Тогда я вообще не вкурю, зачем здесь АВРка?
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Сообщение BCluster »

Я ж не сказал что она ничего не делает - делает, например управляет исполнительными устройствами по SPI, индикаторами и т.д.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Ну так по-любому, у вас сразу все таблицы использоваться на будут, организуйте динамическую загрузку по мере необходимости, вы же пишете о большом компутере, да и управлять переферией можно прямо с компа. АВРка нужна при автономной работе, ну и для того чтобы сбросить собранные данные на комп.
Может я чего не допонимаю, проникнуть в суть ваших замыслов не имею возможности, не эктрасекс :)))
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Lonleystranger
Потрогал лапой паяльник
Сообщения: 361
Зарегистрирован: Ср янв 21, 2009 00:45:33

Сообщение Lonleystranger »

Я так понимаю задачка контрольной для института. Примените самый простой алгоритм - если размер массива известен, оставьте пустое место равное массиву, остальное забивайте так: если есть повторяющаяся последовательность знаков-пишете сколько знаков повторяются, далее сам знак и бит, естественно присутствия сжатия. Распаковываете такие массивы в пустое пространство по очереди. Вот и все. Собственно самый простой и самый малоэффективный метод. Зато занимает мало ресурсов контроллера (в смысле не памяти, а программного кода :))) ). Если посложнее - почитайте http://book.itep.ru/2/26/comp_26.htm
http://ru.wikipedia.org/wiki/Сжатие_данных
Последний раз редактировалось Lonleystranger Чт июл 09, 2009 10:22:57, всего редактировалось 1 раз.
Человек умный - объяснит
Глупый - будет разбрасываться умными словами.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Сообщение BCluster »

эмс )) действительно я неясно выражаюсь. тупое начало дня сегодня :(
Устройство полностью автономно ) динамически подгружать не получится)
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Может все же откроете секрет 8) , что за девай вы там собираетесь замутить? Хотя бы чем должно управлять и какие данные собирать/отправлять.
Чем дальше, тем больше становлюсь занудой...
Изображение
Student_X
Родился
Сообщения: 15
Зарегистрирован: Вт июл 07, 2009 14:15:20

Сообщение Student_X »

... а не проще запихнуть эти данные в какую-нибудь 24сХХХ и вытаскивать их оттуда по мере необходимости ? ...
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Student_X писал(а):... а не проще запихнуть эти данные в какую-нибудь 24сХХХ и вытаскивать их оттуда по мере необходимости ? ...
я уже предлагал - отвергнуто :roll:
Чем дальше, тем больше становлюсь занудой...
Изображение
Student_X
Родился
Сообщения: 15
Зарегистрирован: Вт июл 07, 2009 14:15:20

Сообщение Student_X »

... ну тогда это называется "угадай мелодию" - хочу то не знаю что ;)
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Сообщение BCluster »

девайс имеет 60 режимов - каждый этот режим - такая вот матрица. Задача запихнуть все это в 168 мегу. Грубо говоря есть 4 плеера и нуна включать разные файлы для каждого режима в определенные моменты времени. Еще есть вариант хранить эти данные в нанде с которым работает непосредственно плеер - но это сложно с другой стороны - под плеер придется писать софт, а там все малость не так, как я привык. Внешнюю память может быть и можно подключить, но этот вариант стоит рассматривать как последний - на плате для него места нет, и васче :)
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Насколько я разбираюсь в колбасных обрезках, для управления 4-мя(у) устройствами нужно 4 управляющие матрицы, они у вас по 480 байт - итого 1920 байта, не такая уж и большая нагрузка на память.
Чем дальше, тем больше становлюсь занудой...
Изображение
Student_X
Родился
Сообщения: 15
Зарегистрирован: Вт июл 07, 2009 14:15:20

Сообщение Student_X »

... площадь которую занимает планарка 24с256 меньше 1см в квадрате и всего пару линий для чтения\записи .... ну и 150-200 байт кода на ассемблере :)
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Сообщение BCluster »

Насколько я разбираюсь в колбасных обрезках, для управления 4-мя(у) устройствами нужно 4 управляющие матрицы, они у вас по 480 байт - итого 1920 байта, не такая уж и большая нагрузка на память
480 байт это матрица на все 4 устройства. Но - 60 режимов - 28800 байт. Задача не стоит конкретно - 60 режимов и все. Просто нужно запихать как можно больше этого дела в камень.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Сообщение BCluster »

Задача не для института. Эт раз. Два - данные числовые, поэтому говорить о повторяющихся последовательностях трудно.
Аватара пользователя
Lonleystranger
Потрогал лапой паяльник
Сообщения: 361
Зарегистрирован: Ср янв 21, 2009 00:45:33

Сообщение Lonleystranger »

BCluster писал(а):Два - данные числовые, поэтому говорить о повторяющихся последовательностях трудно.
Повторяющиеся последовательности есть везде, надо найти закономерность, впрочем решать Вам, и книжечки гляньте, полезные. Я когда-то составлял матрицу для управления светодиодами, но там я знал эти последовательности, где прямые(допустим 10 байт)-заменял на 2 байта (1 описание, 1 содержание), где обратные- тоже два байта, в описательном бит знака сброшен. Опять-же говорю-Вам решать, никто в проблеме лучше не разбереться, по крайней мере если суть не знать :)))
Человек умный - объяснит
Глупый - будет разбрасываться умными словами.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»