Например TDA7294

Форум РадиоКот • Просмотр темы - Смещение по X на OLED SSD1306 баг?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт июл 25, 2025 23:42:23

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Вс июн 09, 2024 03:39:55 
Прорезались зубы

Карма: 6
Рейтинг сообщений: 3
Зарегистрирован: Пн ноя 14, 2011 22:48:42
Сообщений: 207
Рейтинг сообщения: 0
Заказываю эти дисплейчики (1.3" OLED Module 1.3 inch Display Module White/Blue 128X64SPI/IIC I2C ) уже давно. Так же давно заметил толи баг, толи не правильно инициализирую.
Причем я использовал разные библиотеки, и все время этот баг.
Код:
 status += ssd1306_WriteCommand(hi2c, 0xAE);   // Display off
    status += ssd1306_WriteCommand(hi2c, 0x20);   // Set Memory Addressing Mode
    status += ssd1306_WriteCommand(hi2c, 0x10);   // 00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
    status += ssd1306_WriteCommand(hi2c, 0xB0);   // Set Page Start Address for Page Addressing Mode,0-7
    status += ssd1306_WriteCommand(hi2c, 0xC0);   //Set COM Output Scan Direction    //C0 or C8 mirror  vertical
    status += ssd1306_WriteCommand(hi2c, 0x00);   // Set low column address
    status += ssd1306_WriteCommand(hi2c, 0x10);   // Set high column address
    status += ssd1306_WriteCommand(hi2c, 0x40);   // Set start line address
    status += ssd1306_WriteCommand(hi2c, 0x81);   // set contrast control register
    status += ssd1306_WriteCommand(hi2c, 0xFF);
    status += ssd1306_WriteCommand(hi2c, 0xA0);   //--set segment re-map 0 to 127  // A1 or A0 mirror horizontal
    status += ssd1306_WriteCommand(hi2c, 0xA6);   // Set normal display

    status += ssd1306_WriteCommand(hi2c, 0xA8);   // Set multiplex ratio(1 to 64)
    status += ssd1306_WriteCommand(hi2c, SSD1306_HEIGHT - 1); //0x3F

    status += ssd1306_WriteCommand(hi2c, 0xA4);   // 0xa4,Output follows RAM content;0xa5,Output ignores RAM content
    status += ssd1306_WriteCommand(hi2c, 0xD3);   // Set display offset
    status += ssd1306_WriteCommand(hi2c, 0x00);   // No offset
    status += ssd1306_WriteCommand(hi2c, 0xD5);   // Set display clock divide ratio/oscillator frequency
    status += ssd1306_WriteCommand(hi2c, 0xF0);   // Set divide ratio
    status += ssd1306_WriteCommand(hi2c, 0xD9);   // Set pre-charge period
    status += ssd1306_WriteCommand(hi2c, 0x22);

    status += ssd1306_WriteCommand(hi2c, 0xDA);   // Set com pins hardware configuration
    status += ssd1306_WriteCommand(hi2c, SSD1306_COM_LR_REMAP << 5 | SSD1306_COM_ALTERNATIVE_PIN_CONFIG << 4 | 0x02);   

    status += ssd1306_WriteCommand(hi2c, 0xDB);   // Set vcomh
    status += ssd1306_WriteCommand(hi2c, 0x20);   // 0x20,0.77xVcc
    status += ssd1306_WriteCommand(hi2c, 0x8D);   // Set DC-DC enable
    status += ssd1306_WriteCommand(hi2c, 0x14);   //
    status += ssd1306_WriteCommand(hi2c, 0xAF);   // Turn on SSD1306 panel


Например вот инициализация.
В таком случае есть смещение на 2 пикселя по горизонтали влево.
То-есть по Х первые два ряда пикселей как бы за экраном.
Но зато справа по X два ряда дополнительных пикселей, но они мусорные, в них нельзя рисовать.
Мне приходится изголятся, пишу в настройках хеадера что у меня ширина дисплея 130 пикселей.
и рисую квадрат например вот так:
Draw_Rectangle(2, 0, 129, 63, NOFILL, White, SQUARE);
ну то-есть рисую по Х с 2 до 129 , а не с 0 по 127 как хотелось бы правильно.
Ну и текст соответственно тоже приходится размещать с учетом этого смещения.
Что за смещение? Кто сталкивался? В чем может быть косяк?
Вложение:
photo_2024-06-09_03-35-43.jpg [208.69 KiB]
Скачиваний: 90

Вложение:
photo_2024-06-09_03-34-21.jpg [209.94 KiB]
Скачиваний: 78


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Вс июн 09, 2024 07:54:38 
Сверлит текстолит когтями
Аватар пользователя

Карма: 12
Рейтинг сообщений: 59
Зарегистрирован: Вт мар 28, 2023 21:17:15
Сообщений: 1111
Откуда: Universe
Рейтинг сообщения: 0
А может там камень SH1106?

_________________
I have a dream...¯\_(ツ)_/¯


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Вс июн 09, 2024 07:58:53 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1395
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7306
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Лень вникать, но вы уверены, что дисплей на SSD1306. Очень много в продаже именно 1.3" дисплеев на SH1106 а у них разводка сделана так, что первые 2 пикселя (и 2 последних, хотя это не имеет значения) не подключены. Поэтому самый левый пиксель имеет адрес не 0, а 2.

гуглите такой запрос: difference between ssd1306 and sh1106


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Вс июн 09, 2024 09:06:48 
Друг Кота

Карма: 2
Рейтинг сообщений: 67
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8163
Откуда: .ru
Рейтинг сообщения: 0
Кто сталкивался?

Я сталкивался ))
https://www.radiokot.ru/forum/viewtopic ... 8&t=190542
Вложение:
пульт.JPG [190.56 KiB]
Скачиваний: 77

Вложение:
подключение к компу.jpg [150.03 KiB]
Скачиваний: 62

да, действительно... первые два пикселя почему то не работают...
когда пишу приходится смещать курсов на два пикселя...
Код:
/////////////////////////////////////////////// курсор:
// 128x64 = 1024 байт: цифра 5 + пробел 1 = 6 байт. 128/6=21 цифры/строка +2.
void kursor(char Page) //Set Page Address
{
PORTB.5=0;         // D/C. 0 – Function, 1 – data. OLED 128x64   
SPDR=0b10110000|Page;  while(!(SPSR & (1<<7))); // Y - адрес 1011xxxx
SPDR=0b00010000;       while(!(SPSR & (1<<7))); // X - адрес 0001xxxx Hig

SPDR=0b00000010;  while(!(SPSR & (1<<7))); // X - адрес 0000xxxx Low (Начальное 2). // SH1106
//SPDR=0b00000000;  while(!(SPSR & (1<<7))); // X - адрес 0000xxxx Low (Начальное 0).// HDG12864F-1
PORTB.5=1;         // D/C. 0 – Function, 1 – data. OLED 128x64   
}

причём это только у контроллера SH1106
а контроллер HDG12864F-1 работает нормально, без смещения...
:dont_know:

библиотеки я никакие не использую... я всё сам пишу))
Код:
/////////////////////////////////////////////////////////// Режим OLED 128x64 -SH1106:
PORTB.7=0;         // SS OLED 128x64   
PORTB.5=0;         // D/C. 0 – Function, 1 – data. OLED 128x64     
SPDR=0xA8; while(!(SPSR & (1<<7))); // сколько строк будет использовано.
SPDR=0x3F; while(!(SPSR & (1<<7))); // (128x64) 64 - строки.
SPDR=0x81; while(!(SPSR & (1<<7))); // контрастность.
SPDR=kontr; while(!(SPSR & (1<<7)));// контрастность 0...255. -начальное 250.
SPDR=0xA1; while(!(SPSR & (1<<7))); // развёртка слева направо (>>).
///////////////////////////////////////////////////////////////////////////////
SPDR=0xC8; while(!(SPSR & (1<<7))); // развертка сверху вниз.  // SH1106
//SPDR=0xC0; while(!(SPSR & (1<<7)));// развертка снизу вверх.   // HDG12864F-1
///////////////////////////////////////////////////////////////////////////////
SPDR=0xDA; while(!(SPSR & (1<<7))); // развертка.
SPDR=0x12; while(!(SPSR & (1<<7))); // прогрессивная.
SPDR=0xD3; while(!(SPSR & (1<<7))); // смещение.
SPDR=0x00; while(!(SPSR & (1<<7))); // смещение 0.
SPDR=0x40; while(!(SPSR & (1<<7))); // 01xx xxxx - начальное строка 0.
SPDR=0xAF; while(!(SPSR & (1<<7))); // Display 0xAF - ON. 
//SPDR=0xAE; while(!(SPSR & (1<<7))); // Display 0xAE - OFF.
PORTB.5=1;         // D/C. 0 – Function, 1 – data. OLED 128x64     
PORTB.7=1;         // SS OLED 128x64   

а я думал это только у меня фигня такая)) оказывается нет...
В чем может быть косяк?

Заводской брак))
Китайцы...
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Вс июн 09, 2024 14:03:27 
Прорезались зубы

Карма: 6
Рейтинг сообщений: 3
Зарегистрирован: Пн ноя 14, 2011 22:48:42
Сообщений: 207
Рейтинг сообщения: 0
Цитата:
Лень вникать, но вы уверены, что дисплей на SSD1306. Очень много в продаже именно 1.3" дисплеев на SH1106 а у них разводка сделана так, что первые 2 пикселя (и 2 последних, хотя это не имеет значения) не подключены. Поэтому самый левый пиксель имеет адрес не 0, а 2.

Ну конечно не уверен))) Как тут можно быть уверенным. В принципе ответ понятен. Либо SH1106 либо брак.

Цитата:
а я думал это только у меня фигня такая)) оказывается нет...

просто все как и я ленились об этом написать спросить ) думая что только у них такая фигня.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Вс июн 09, 2024 14:35:45 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1636
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Из англоязычных ресурсов, через переводчик:
- SSD1306 имеет расширенный набор команд по сравнению с SH1106
- SH1106 поддерживает только режим адресации страниц
- В SSD1306 добавлены специальные режимы горизонтальной и вертикальной адресации
- SSD1306 также поддерживает автоматическую прокрутку/scrolling

Если код/библиотека использует режим адресации страниц, то будет работать с любым из контроллеров (с разницей в длине строки - 128 против 132).
Если код/библиотека использует режим горизонтальной или вертикальной адресации, он будет работать только на SSD1306

Отрегулируйте длину строки и используйте дисплей.
Правда, есть трудность с многосерийное производство (нужен тест на каждом вложенном дисплее).


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Вс июн 09, 2024 16:21:11 
Друг Кота

Карма: 2
Рейтинг сообщений: 67
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8163
Откуда: .ru
Рейтинг сообщения: 0
нет трудностей с многосерийный производством...
мы добавили в меню "выбор экрана"... с сохранением в EEPROM...
и трудности у нас пропали))
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Чт июн 20, 2024 23:30:47 
Прорезались зубы

Карма: 6
Рейтинг сообщений: 3
Зарегистрирован: Пн ноя 14, 2011 22:48:42
Сообщений: 207
Рейтинг сообщения: 0
Цитата:
Что за смещение? Кто сталкивался? В чем может быть косяк?

Отвечая самому себе, дополняя: сейчас еще позаморачивался с этим дисплеем. Оказывается там 127 пикселей в ширину, а не 128 )
Причем там через китайский микроскоп видна маркировка у одного светодиода 125, и далее еще два светодиода. Итого 127. Ну и вручную посчитал внимательно. 127 их. Твердо и четко! Ну там когда фонариком светишь, граница светодиодов светится и видно где они заканчиваются.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Пт июн 21, 2024 08:32:56 
Друг Кота
Аватар пользователя

Карма: 103
Рейтинг сообщений: 3725
Зарегистрирован: Пн фев 09, 2009 22:19:49
Сообщений: 22763
Откуда: Когда-то был прекрасный город для людей
Рейтинг сообщения: 0
:facepalm: А процедуру написать простенькую - зажечь пиксел по смещению, вывести его номер, сделать паузу посмотреть - в цикле - не проще ли было ?

ЗЫ. - Мы создали компьютер, чтобы экономить время !
- Нет, вы создали компьютер, чтобы убивать время !


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Пт июн 21, 2024 09:05:45 
Друг Кота

Карма: 68
Рейтинг сообщений: 1961
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
мда....
надо в каждой строке посчитать. Внимательно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Пт июн 21, 2024 11:31:31 
Друг Кота

Карма: 2
Рейтинг сообщений: 67
Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 8163
Откуда: .ru
Рейтинг сообщения: 0
Оказывается там 127 пикселей в ширину, а не 128...
через китайский микроскоп видна маркировка...

не слушай этих старпёров)) они вечно всем недовольны...
ты всё делаешь правильно.
зато теперь мы знаем, что оказывается китайцы просто забыли добавить светодиодов...
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Пт июн 21, 2024 14:04:26 
Прорезались зубы

Карма: 6
Рейтинг сообщений: 3
Зарегистрирован: Пн ноя 14, 2011 22:48:42
Сообщений: 207
Рейтинг сообщения: 0
Так я сам старпёр )))
Блин казалось тут есть тэги для оффтоп сообщений. Но чет не вижу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Чт июн 27, 2024 02:40:53 
Прорезались зубы

Карма: 6
Рейтинг сообщений: 3
Зарегистрирован: Пн ноя 14, 2011 22:48:42
Сообщений: 207
Рейтинг сообщения: 0
Цитата:
Что за смещение? Кто сталкивался? В чем может быть косяк?

Отвечая самому себе, дополняя: сейчас еще позаморачивался с этим дисплеем. Оказывается там 127 пикселей в ширину, а не 128 )
Причем там через китайский микроскоп видна маркировка у одного светодиода 125, и далее еще два светодиода. Итого 127. Ну и вручную посчитал внимательно. 127 их. Твердо и четко! Ну там когда фонариком светишь, граница светодиодов светится и видно где они заканчиваются.

Что-то я ложанул. Перекомпилировал и тд и тп, пересчитал 128 пикселей)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Чт июн 27, 2024 02:44:10 
Друг Кота

Карма: 68
Рейтинг сообщений: 1961
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Повезло, что не 4К :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Смещение по X на OLED SSD1306 баг?
СообщениеДобавлено: Чт июн 27, 2024 07:39:50 
Друг Кота
Аватар пользователя

Карма: 103
Рейтинг сообщений: 3725
Зарегистрирован: Пн фев 09, 2009 22:19:49
Сообщений: 22763
Откуда: Когда-то был прекрасный город для людей
Рейтинг сообщения: 0
Ну и убил время...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y