Ви не увійшли.
>> -текст виводить де попало
Дуже часто бачив, як одні програмісти рахують координати в пікселях, інші - в гліфах. Якщо взяти одну лібу, де все в пікселях, іншу - в знакомістах, і сумістити - так і вийде.
Тільки для SPI-дисплеїв все одно доведеться задіяти GPIO, бо як мінімум ще DATA/COMM треба смикати.
Якщо хочеться ще GPIO, наприклад, для RST, то треба поправити таблицю в коді та перезібрати драйвер. Все руки не дійдуть реалізувати цю конфігурацію у вигляді параметра.
Подивіться ось тут ідею, як використовуючи другий CS керувати DATA/COMM та отримати додаткові бонуси від двох SPI.
Може і необхідність правити відпаде)
Неактивний
Подивіться ось тут ідею, як використовуючи другий CS керувати DATA/COMM та отримати додаткові бонуси від двох SPI.
Цей пост уже бачив, але за пораду дякую.
Щоб використовувати другий CS, потрібно у софті верхнього рівня додавати ще один окремий SPI slave. Не завжди це зручно.
А по-факту, припускаю, що в самому контролері воно так і реалізовано, DATA/COMM мультиплексує CS на різні підмодулі.
Доречі, вам не вдавалось піднімати w1-uart на x86? У мене з наскоку не вийшло, схоже, потрібно патчити таблицю ACPI. Поки що не розібрався, як це правильно зробити.
Може і необхідність правити відпаде)
Та її наразі і нема) Драйвер для CH341A я тільки підтримую, щоб компілювався для сучасних ядер.
Що потрібно, робиться через gpio-mpsse з FT232H. До нього теоретично можна і spi-bitbang прикрутити на x86, але знову ж таки, потрібно патчити таблицю ACPI.
Остання редакція dimich (2025-08-14 21:04:08)
Неактивний
Доречі, вам не вдавалось піднімати w1-uart на x86? У мене з наскоку не вийшло, схоже, потрібно патчити таблицю ACPI. Поки що не розібрався, як це правильно зробити.
В мене колись також з наскоку не вийшло розібратися як приєднати serdev до пристрою без використання DT, так щоб з командного рядка за бажанням, тому забив на нього і написав драйвер через ldisc. Через ldisc у драйвера нажаль відсутня можливість керувати baudrate, так би я до пари написав би і w1-uart )) , бо добре розібрався з нутрощами W1.
Драйвер для CH341A я тільки підтримую, щоб компілювався для сучасних ядер.
А що там не так з ch341, що він працює максимум на 250000 BAUD, а далі таке враження, що в нього там буфер на читання лише 32 байти? Пробував ось цей, 500000 BAUD тягне.
Неактивний
А що там не так з ch341, що він працює максимум на 250000 BAUD, а далі таке враження, що в нього там буфер на читання лише 32 байти?
Так, max packet size у ендпоінта 32 байта. Хоча один раз попався екземпляр, що рапортував 64. Ще й у різних версій різна розрядність дільника.
В режим UART я не дуже лазив, для нього є драйвер в mainline. CH341A - це, по суті, три різних девайса на одному чіпі, для кожного потрібен свій драйвер.
В режимі EPP/MEM ще й фіксований clock. Може він насправді й не фіксований, але документації нема.
Неактивний
Серйозний підхід. Особливо в топіку про програмування ардуїни ) Що у вас за задачі, які вимагають аж підпилювання ядерних модулів? Чи це просто улюблений мікроскоп, зручна ручка, знайома кодова база..
Дисплей на Trium Mars монохромний 96x65 pix Буфер 102x72 pix
Контролер LPH7690
Такий стоїть на NOKIA 6210
На форумах пишуть,що подібний до PCD8544 та PCF8812 - але не зміг адаптувати
На Рахунок дзеркалення- я мав на увазі , що дисплей на телефоні шлейфом униз,
Відображаю графіку та текст шлейфом наверх ...побороти не зміг
Якщо маєте нормальні фонти для монохромних диспів з кирилицею ,прошу поділитися
Неактивний
хттпс://github.com/Bambi/serdisplib/blob/master/src/serdisp_specific_pcd8544.c
тут є щось про LPH7690
особливо гляньте в serdisp_pcd8544_init
if (dd->dsp_id == DISPID_LPH7690)
PutCtrl(dd, 0x17); /* BIAS: set bias value for LPH7690 */
else
PutCtrl(dd, 0x13); /* BIAS: set bias value for other displays */
Дуже часто бачив, як одні програмісти рахують координати в пікселях, інші - в гліфах.
Більше того, у таких двокольорових дисплеїв (1 bit per pixel) зображення складається зі смужок ("сторінки" або "банки") висотою 8 пікселів. Або шириною, дивлячись як повернути. Одна з координат обирає сторінку, тобто задається в знакомісцях, а інша - зміщення на сторінці, тобто в пікселях.
setPosition() в коді вище так і реалізована.
Дисплей на Trium Mars монохромний 96x65 pix Буфер 102x72 pix
Контролер LPH7690
Такий стоїть на NOKIA 6210
На форумах пишуть,що подібний до PCD8544 та PCF8812
Ну він же адекватно реагує на інструкції для PCD8544/PCF8812? Бітмапи, які в нього передаєте, відображає коректно? Значить, як мінімум, сумісний.
Запишіть в нього по нульовій адресі бітмап, що легко вгадується, наприклад:
0xff, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f
Зрозумієте, де у нього початок координат і в якому порядку йде автоінкремент.
Взагалі, там же в даташитах все намальовано: PCF8812.pdf, стр.8, PCD8544.pdf, стр.8.
дисплей на телефоні шлейфом униз,
Відображаю графіку та текст шлейфом наверх ...побороти не зміг
Не схоже, щоб у цих контролерів був якийсь апаратний MADCTL (як у ST7735) або row/col remap (як у SSD1306).
Якщо хочете перевернути зображення - реалізуйте це програмно.
Якщо маєте нормальні фонти для монохромних диспів з кирилицею ,прошу поділитися
Я зазвичай беру лінуксові consolefonts, там є і з кирилицею. Коли не вистачає якихось символів, то домальовую сам.
Є різні тулзи для маніпуляцій зі шрифтами, наприклад Monobit.
Але зазвичай для генерації коду зі шрифтом я пишу свою програмку, що виконує необхідні маніпуляції для конкретної задачі.
Ви ж, сподіваюсь, розумієте, що кодування літералів у програмі має відповідати кодуванню символів у шрифті? Якщо вихідний код в однобайтовому кодуванні, наприклад cp1251, то можна просто відсортувати гліфи в шрифті для cp1251. Але якщо в UTF-8, то потрібно перед компіляцією конвертувати літерали в однобайтне кодування. Для цього зручно зберігати текст повідомлень в окремому файлі, і генерувати вихідний код з повідомленнями автоматично при збірці.
Неактивний
Серйозний підхід. Особливо в топіку про програмування ардуїни
)
Цей топік скоріш про програмування LCD-контролерів
Що у вас за задачі, які вимагають аж підпилювання ядерних модулів?
Це не задача, це бажання отримати підключені пристрої доступними всій системі. Тобто взаємодіяти з ними на рівні системи, а не на рівні окремої програми. Наприклад, виводити зображення на LCD через /dev/fb, бачити термодатчик у /sys/class/thermal/ чи підключену SPI флешку як /dev/mtd.
На платформах з ARM це зазвичай не проблема, бо драйвери конфігуруються через Device Tree. А на x86 не все так просто.
Доречі, колись виводив зображення через /dev/fb і на x86 (давно це було):
https://www.youtube.com/watch?v=ROVGhcR0g_M
https://www.youtube.com/watch?v=r9iUEkEgs0Y
Але це в userspace: один процес пише у /dev/fb, інший паралельно читає з нього і передає зображення через FTDI на LCD.
Неактивний
Якщо маєте нормальні фонти для монохромних диспів з кирилицею ,прошу поділитися
Доречі, майте на увазі, що у вашій програмі шрифт у форматі "вертикальних байтів". Такий формат зручніше виводити на дисплеї з горизонтальними банками, просто передаючи байти послідовно. У більшості стандартних форматів шрифти у вигляді "горизонтальних байтів". Щоб виводити їх на дисплей з горизонтальними банками потрібно транспонувати гліфи, або заздалегідь, або в рантаймі.
Неактивний
2dimich якщо можете накидайте мені скетч ..для роботи тріума з бібліотекою PCD8544 та PCF8812 ...не виходить ...нема зображення
Щоб "накидувати скетч", необхідно:
а) розуміти, який результат очікується від його виконання
б) бажано мати на руках екземпляр цього контролера для перевірки
в) мати якусь мотивацію
з бібліотекою PCD8544 та PCF8812
Що це за бібліотека? І що ви від неї хочете?
В своїй професійній діяльності я взагалі не використовую фреймворк ардуіно, не кажучи вже про якісь бібліотеки.
...не виходить ...нема зображення
Ви ж наче ініціалізацію вже написали, "графіку виводить чотко", а тут "нема зображення".
Показуйте свій код, опишіть, який результат від нього очікуєте, покажіть фактичний результат. Тоді можна буде щось радити.
Неактивний
Проекти з цим дисплеєм гугляться (наче). Можна взяти за reference. Тоді б питання виглядало б так : "зробив як у цього чувака а воно щось не то". Було б простіше.
Може з самим дисплеєм щось не то?