eddy_em: (Default)
[personal profile] eddy_em
Итак, вчера я намудрил с порядком заполнения буферов для DMA, а сегодня этот косяк исправил:


Такой приличный шрифт я стащил отсюда. Сверху и снизу зачем-то оставлено по 2 пикселя пустого пространства. Для цифр я попробовал модифицировать этот шрифт. Но дизайнер из меня откровенно паршивый:

Как обычно, код лежит на гитхабе.
Провозился достаточно долго еще и из-за кривого SPI у STM32F103: ну кто бы мог додуматься, что даже в режиме Tx-only мастера необходимо указывать, что нога SS (которой нет) управляется софтово! Хорошо, на "казусе" народ помог. Правда, насколько я понял, они тоже вообще не в состоянии объяснить, на кой черт так сделано и просто методом тыка нашли решение.
Почему-то пауза в 10мс, которую я установил перед обновлением очередной четверти экрана, оказалась очень маленькой (хотя по моим рассчетам на полный цикл уходило бы порядка 40-45мс, т.е. получаться должно было бы 25Гц, но мерцало так, как будто бы герц 5..10). Снизил паузу до 3мс - полет нормальный.
С другой стороны, можно вообще непрерывно передавать данные: ведь передача ведется по сути аппаратно: при помощи DMA. Частоту SPI установил как clk/16 (т.е. 4.5МГц). Фронты на осциллограмме были жутчайшие, но работает-таки! Выше поднимать частоту на работающем экране не пробовал. Без него, пока эмулировал без нагрузки, начал с clk/4 — осциллограммы были настолько страшными, что явно бы оно работать не стало!
Хочется уже для дома осциллограф купить, да жаба жмет. Взял с жены обещание, что если будет шабашка на полмиллиона и больше, то обязательно хороший осциллограф тысяч за 100 себе прикуплю! Этот дешевенький с работы хорош лишь большим экраном, но глюков у него... Я измучился, пока нормально настроил синхронизацию. Да и входное сопротивление и емкость высоковаты (или щупы - дерьмо), возможно, у меня такие кривые осциллограммы и были лишь по вине осциллографа (хотя, китайцы - те еще рукожопы, может и "синяя таблетка" вносит-таки свое).
Экран в полностью включенном состоянии (несмотря на ШИМ 1/4) потребляет очень прилично. Восстановленный компьютерный БП (на китайские 250Вт) без вентилятора (т.к. обычно я его от силы на 20-30Вт нагружаю) решил, что для него эти ~5А — слишком много! И буквально через 10..15 секунд после попыток зажечь весь экран напруга на выходе БП падает до 2..2.5В, а на выходе 12В вообще нуль появляется! Возможно, конечно, просто БП уже полумертвый.

Да, после всех игр с экраном мне стало интересно: а насколько часто я могу его содержимое обновлять, чтобы на видео не было "размазни"?
Сделал дополнительный режим - отсчет долей секунд. С миллисекундами сразу стало понятно, что последние 2 цифры - какая-то мешанина. ОК, пробуем сотые доли секунды. Если нажимать периодически паузу, видно, что кривовато оно отображается. В принципе, это и логично: на 25..30Гц, что обеспечивает "видеокамера" лопаты, сотые очень тяжко зафиксировать... Ну, зато на десятых все ОК.

Бегущие строки не реализовывал: в данной шабашке это не нужно. Но в принципе, ничего там сложного нет: просто добавляем еще один КА, который каждые N миллисекунд будет заново перерисовывать сохраненный буфер с текстом в новую позицию: --X,Y. Паузу в конце можно реализовать достаточно просто: всего-то добавить к полной ширине строки десяток-другой пикселей, чтобы строчка после полного вывода еще немножко смещалась. На многих светодиодных панелях я видел именно такую реализацию. Ну либо в конечный автомат добавить еще одно состояние...

Автоматное программирование — это супер! Если вдруг возникнет момент, когда мне вообще будет нечего делать, можно попробовать для бесполезной 1-wire сделать полный цикл работы на чистом КА (понятно, что протокол - на DMA с таймером или UART'ом).
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

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 09:38 am
Powered by Dreamwidth Studios