А чем бы поизучать прошивку,считанную из AVR ?

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Вт апр 23, 2024 11:36:23

Сообщение Paktok »

[uquote="Martian",url="/forum/viewtopic.php?p=4599668#p4599668"]Она дизассемблирует?[/uquote]
Да. Естественно, всякие PORTB PINB выглядят как 0х10 и тд. Вместо меток адреса.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

Сообщение Dismas »

[uquote="Paktok",url="/forum/viewtopic.php?p=4601108#p4601108"]Да. Естественно, всякие PORTB PINB выглядят как 0х10 и тд. Вместо меток адреса.[/uquote]
Что бы купить что-то ненужное, нужно продать что-то не нужное, а у нас денег нет. :)
Какой смысл обсуждать то, чем не пользуется ТС ?
Остаётся ждать, что получится, если энтузиазм не иссякнет :wink:
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1503
Зарегистрирован: Ср сен 03, 2008 21:42:17
Откуда: Ленинградская область,пос.Красный Остров

Сообщение WatchCat »

Успешно раскопал протокол управления светодиодной матрицей. Начала восстановил ассемблерный исходник так чтобы при его компиляции получалась побайтно идентичный считанному из контроллера образ. Потом гонял симуляцию в vmlab и записывал сигналы. Потом изменял ассемблерный код и снова медитировал над логом сигналов. Потом наконец понял как работает протокол управления и написал свой код на привычном Си. Код и результат его работы прилагается. Изображение
Вложения
pnv_asm.zip
Дизассемблированная и проверенная оригинальная заводская прошивка - рисует тестовые узоры но использует не все возможности матрицы(нет плавного управления яркостью и комбинированных цветов)
(5.53 КБ) 29 скачиваний
meow_matrix.c
Код на Си, рисующий на матрице МЯУ
(4.08 КБ) 27 скачиваний
meow_matrix.jpg
(103.24 КБ) 147 скачиваний
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1503
Зарегистрирован: Ср сен 03, 2008 21:42:17
Откуда: Ленинградская область,пос.Красный Остров

Сообщение WatchCat »

Написал демо-пример вывода картинки на эту матрицу. Оптимизировал работу с железом по сравнению с предидущим "мяу". Сделано под atmega128, которая и стоит на управляющей плате.
Вложения
makefile.txt
пример сборочного файла для make
(4.32 КБ) 22 скачивания
matrix.h
заголовочный файл библиотеки функций
(732 байт) 20 скачиваний
matrix.c
сама библиотека
(1.63 КБ) 21 скачивание
demo_rect.c
пример использования библиотеки
(1.17 КБ) 19 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Сообщения: 493
Зарегистрирован: Вс авг 16, 2015 13:08:53

Сообщение Бубоник »

HUB75. Давно занимался этим протоколом. Покупал матрицы на китайце. Одну матрицу прислали туфту что то там драйвер глючный был и доки не было. А вторая работала отлично. Но регулировки яркости так и не получил. Рисовал смайлик сколько кадров в секунду stm8 передает я уже не вспомню. Что удобно их можно каскадить и получить больший экран по размерам.
СпойлерИзображениеИзображение
З.Ы. Сайт кажется глючит одни и те же сообщения на 2-ух страницах.
Вложения
6.jpg
(225.63 КБ) 94 скачивания
5.jpg
(160.54 КБ) 92 скачивания
Последний раз редактировалось Бубоник Пт окт 30, 2026 20:36:40, всего редактировалось 1 раз.
Реклама
Вымогатель припоя
Сообщения: 627
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Бубоник писал(а): Пт окт 30, 2026 20:00:05 Что удобно их можно каскадить и получить больший экран по размерам.
Это не удобство, а изначальное назначение. Удобство наоборот: радиолюбители могут использовать лишь один модуль.
Реклама
Опытный кот
Сообщения: 875
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Если брать старые матрицы, то там просто сдвиговые регистры и всё. Соответственно, ограниченное число цветов, 8 основных. На большее АВР-ка не потянет
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1503
Зарегистрирован: Ср сен 03, 2008 21:42:17
Откуда: Ленинградская область,пос.Красный Остров

Сообщение WatchCat »

Бубоник писал(а): Пт окт 30, 2026 20:00:05 HUB75.
Я попросил китайский машинный разум сравнить протокол этой матрицы и HUB75. Он утверждает что есть принципиальные различия, главное из которых - яркость управляется не значением байта, а скважностью (ШИМ) — то есть сколько времени в течение кадра линия активна. Я не уверен что в этом он прав. Второе отличие - в этой матрице строка выбирается автоматически внутренним счетчиком матрицы, а в HUB75 есть специальные линии для адреса строки. К тому же на матрицу надо непрерывно подавать сигнал развертки (пин PB3) иначе не светится. И еще переключение банков памяти чтобы только что записанный стал видимым (пин PB1)

Я подробно описал результаты своих исследований управления матрицей.
Спойлер Разбор протокола LED матрицы

Памятка: управление светодиодной матрицей 16x32 (PNV NEOIII)
1. Аппаратная часть

Матрица: 16 строк 32 пикселя (RGB, без отдельного белого, белый = R+G+B).

Контроллер: ATmega128, кварц 11.0592 МГц.

Интерфейс: порт данных PORTA, запись данных последовательным тактирование,
и порт сигналов управления PORTB

Два банка памяти (двойная буферизация) переключаются сигналом PB1.

2. Порты и сигналы (финальная таблица)

Сигнал Назначение Статус

PA0-PA7 Данные (8 бит) Яркость текущего цвета (0-255)
PB0 Строб строки (HSYNC) Защёлкивает строку в матрице
PB1 Переключение банка Двойная буферизация (скрытый / видимый)
PB2 Такт данных (Pixel Clock) Синхронизирует передачу бита цвета
PB3 Строчная развёртка (Pixel Clock) Непрерывная развёртка (сканирование)
PB4 Кадровый синхроимпульс (VSYNC) Сброс счётчика строк.Не обязателен (счётчик сбрасывается сам)
PB5 Глобальная яркость (R) ШИМ для красного канала (OCR1A)
PB6 Глобальная яркость (G) ШИМ для зелёного канала (OCR1B)
PB7 Не используется
PC0-PC7 Не используется
PD0-PD7 Не используется
PE0-PE7 Не используется
PF0-PF7 Не используется

3. Протокол передачи пикселя

На каждый пиксель передаётся 3 такта PB2:

PORTA = R; импульс PB2; красный

PORTA = G; импульс PB2; зелёный

PORTA = B; импульс PB2; синий

Значения R, G, B: от 0x00 (выкл) до 0xFF (макс. яркость).
Промежуточные значения дают плавную яркость.

4. Передача строки и кадра

Для каждой строки (16 раз):
Для каждого пикселя (32 раза):
out_pixel(R, G, B) // 3 такта PB2
latch_pb0() // строб строки (PB0, пауза, PB0)

flip_bank() // переключение банка (PB1, PB1)
Порядок пикселей в строке: слева направо (0-31).
Порядок строк: сверху вниз (0-15).
В flip_bank() между переключениям сигнала требуется задержка в
несколько пустых инструкций nop. При кварце 11.0592 надо не меньше
двух, я использую 5. Если сделать без задержки - матрица начинает
пропускать кадры.

5. Двойная буферизация
Запись идёт в скрытый банк (невидимый).

После записи кадра переключение (flip_bank()), и скрытый банк становится видимым.

Это позволяет обновлять картинку без мерцания (как в видеокартах).

6. Таймеры

Таймер 1 PB3 и счётчик кадров (программный делитель).

Таймер 0 отключён.

Таймер 3 отключён.


8. Гамма-коррекция (визуально равномерная яркость)
Человеческий глаз имеет нелинейную чувствительность (гамма 2.2).
Для визуально плавного градиента используйте логарифмическую или гамма-таблицу (16, 32 или 64 ступени).

Пример логарифмической таблицы (16 ступеней):

c
const uint8_t log_table[16] = {
0x01, 0x02, 0x03, 0x04, 0x06, 0x08, 0x0B, 0x0F,
0x15, 0x1D, 0x28, 0x37, 0x4B, 0x66, 0x8A, 0xFF
};

9. Известные особенности
Первый кадр после включения/сброса может быть повреждён (первая строка) из-за
неопределённого состояния линий до main(). В динамических тестах не заметен;
в статических считается нормой. Красный пиксель в (0,0) индикатор ошибки управления
(лишний фронт PB1, слишком долгий ноль, неформатная запись).

ШИМ на PB5/PB6 управляет яркостью R/G но наш код это не использует - сигналы установлены
в постоянный уровень максимальной яркости.
Подрагивание яркости в области малых значений из-за ШИМ/джиттера.
Можно игнорировать или не использовать ШИМ-управление общей яркостью каналов R и G.

10. Гипотеза о глобальной яркости
Глобальное управление яркостью только для R и G (через PB5/PB6) это,
вероятно, калибровка баланса белого по мере выгорания синих светодиодов
(которые деградируют быстрее).
Ответить

Вернуться в «AVR»