eddy_em: (Default)
[personal profile] eddy_em
Как оказалось, проблема была в используемыми китайцами компонентах: все-таки, чтобы оно заработало правильно, необходимо было входные уровни увеличить до 5В. Исходники на гитхабе.
Начало пайки:


Учитывая предыдущие проблемы с отображением, решил спаять пятивольтовые буферы, благо, элементная база у меня дома вполне-таки позволяет это сделать. Взял два CD4050, но т.к. они шестиканальные, тринадцатый канал реализовал на мосфете (2N7000). Сначала хотел какой-нибудь мелкий SMD'шный запаять, но оказалось, что у всех них слишком паршивые временные характеристики (чем меньше Rdson, тем выше емкость затвора, в итоге получилось, что самый паршивый с энергетической точки зрения полевик обладает наименьшим временем перехода — 10нс). Мосфет запаял на nOE, сделав его таким образом просто OE.
Сделал бы все вечером на работе, но сижу в состоянии непонятного то ли гриппа, то ли простуды. Врач мне рекомендовал на работу еще пару-тройку дней все же не ходить. Так что, вместо изготовления печатной платы, спаял все на макетке (в принципе, по времени вышло, наверное, даже быстрей: на кикад ушло бы минимум часа полтора, да еще часа два-три на изготовление платы и пайку; хотя, конечно, паять на готовую печатную плату приятней, чем проводочки припаивать на макетке). Вот такая штукенция получилась:


Что интересно: опять с первой попытки пайки у меня 2N7000 не заработал! С SMD'шными мосфетами у меня такое было очень редко, чтобы после пайки полевик не работал. С этими же чуть ли не в 50% случаев! Откусил старый, припаял новый — завелось.
Думал было добавить в качестве примера разноцветные летающие пиксели, но как представил объем кода (добавить аппаратный random, учитывать взаимодействие между пикселями и т.д., и т.п.), просто добавил "псевдорадугу".
Цвета у меня формируются в восьмибитном формате RRRGGGBB. Таким образом, чтобы отобразить экран один раз, его надо перерисовать семь раз (с учетом восьмиградационных цветов). Для работы используется таймер TIM3: строб он генерирует в режиме ШИМ с 50% заполнением, а по событию UEV пинает DMA, которое и передает на экран очередные две строки (т.к. формат HUB75 подразумевает одновременный вывод двух строк: одна в верхней половине экрана и одна в нижней). Номер строки, OE и LAT выводятся ногодрыгом в прерывании по окончанию передачи DMA (чтобы дождаться окончания последнего строба пришлось добавить в прерывание while(!(TIM3->SR & TIM_SR_UIF)), а отключение таймера гарантируется TIM3->CR1 |= TIM_CR1_OPM в том же прерывании ранее).
Надо бы когда-нибудь под этот экранчик простые классические игрульки реализовать: тетрис, змейку и т.п.

Видео-демонстрация работы.
UPD: поменял алгоритм отображения. Уж очень экран мерцает, если цвет изображать последовательностью из семи кадров. Сделал построчный "ШИМ": каждая строка отображается 7 раз, а уж пиксели в ней — в зависимости от уровня цвета.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

June 2025

S M T W T F S
123 4567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 7th, 2025 07:33 pm
Powered by Dreamwidth Studios