roboforum.ru

Технический форум по робототехнике.

Проблема с OLED 16x2 индикатором

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Проблема с OLED 16x2 индикатором

Сообщение HarryStar » 22 июн 2011, 12:21

Пользовался я обычными LCD индикаторами. Есть у меня и 16x2 и 20x4 индикаторы. Все шло хорошо, пока я тут не решил купить модный OLED, чтоб было все ярко и весело.

Взял WEH001602ALPP5N компании Winstar (как и все мои другие).

Заменил свой LCD на OLED - картинка супер, все хорошо.
А дальше начались грабли.

Если мк вместе с оледом выключить и включить - все шоколадно.
Если же например нажать просто резет, то болт.
Болт бывает следующих видов:
1) Черный экран
2) Кракозяблы статичные
3) Кракозяблы слегка меняющиеся в зависимости от программы
4) Поменены строки местами
5) Изображение сдвинуто вправо-влево на разное количество символов
6) Комбинация пунктов 2-5

Вывожу только английские буквы и цифры для теста. Речь НЕ ПРО КОДИРОВКУ.
Завтра принесу фотик, покажу. Пока в шоке. Главное уже запаял и доработал напильником и врятли получится вернуть.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Проблема с OLED 16x2 индикатором

Сообщение galex1981 » 22 июн 2011, 12:29

Случаем у дисплея нет своего Reseta?
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Проблема с OLED 16x2 индикатором

Сообщение HarryStar » 22 июн 2011, 14:36

нет. по контактам все совместимо как у LCD, нет только контрастности и + - для подсветки.
А так все 1 в 1. Подключал 4х-битным образом, библиотека LCD встроенная CVAVR

Добавлено спустя 1 час 53 минуты 4 секунды:
Очень похоже, что в CVAVR как то не так сделана инициализация и/или переход в 4-х битный режим.
Все перепробовал уже...
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Проблема с OLED 16x2 индикатором

Сообщение Дмитрий К. » 22 июн 2011, 22:46

А что говорят даташиты от ЛСД и ОЛЕД дисплеев на вопрос инициализации и работы? Есть ли разница?
Дмитрий К.
 
Сообщения: 76
Зарегистрирован: 01 июл 2010, 20:58
Откуда: Санкт-Петербург
прог. языки: Си
ФИО: Дмитрий

Re: Проблема с OLED 16x2 индикатором

Сообщение HarryStar » 22 июн 2011, 23:34

я не нашел. процедура инициализации одинаковая для всех контроллеров HD44780.

Может кто прислать прошивку для АТмега32-16 Мгц с программой, пишущей "Hello world", сделанную на чем угодно, кроме CVAVR?
Экран подключен следующим образом:
Порт А (пофиг, можно любой другой, главное по пинам чтоб совпадало, у меня все на разъемах)
0 - RS (LCD Pin 4)
1 - RD (LCD Pin 5)
2 - EN (LCD Pin 6)
4 - DB4 (LCD Pin 11)
5 - DB5 (LCD Pin 12)
6 - DB6 (LCD Pin 13)
7 - DB7 (LCD Pin 14)
Вложения
WEH001602ALPP5N.pdf
Вот datasheet к нему
(1.28 МиБ) Скачиваний: 0
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Проблема с OLED 16x2 индикатором

Сообщение HarryStar » 23 июн 2011, 13:01

Видео, демонстрирующее грабли

Процедура инициализации в библиотеке CVAVR:
Код: Выделить всёРазвернуть
unsigned char lcd_init(unsigned char lcd_columns)
{
#asm
    cbi   __lcd_port,__lcd_enable ;EN=0
    cbi   __lcd_port,__lcd_rs     ;RS=0
#endasm
_lcd_maxx=lcd_columns;
_base_y[2]=lcd_columns+0x80;
_base_y[3]=lcd_columns+0xc0;
_long_delay();
_lcd_init_write(0x30);
_long_delay();
_lcd_init_write(0x30);
_long_delay();
_lcd_init_write(0x30);
_long_delay();
_lcd_init_write(0x20);
_long_delay();
_lcd_write_data(0x28);
_long_delay();
_lcd_write_data(4);
_long_delay();
_lcd_write_data(0x85);
_long_delay();
#asm
    in    r26,__lcd_direction
    andi  r26,0xf                 ;set as input
    out   __lcd_direction,r26
    sbi   __lcd_port,__lcd_rd     ;RD=1
#endasm
if (lcd_read_byte0()!=5) return 0;
_lcd_ready();
_lcd_write_data(6);
lcd_clear();
return 1;
}
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Проблема с OLED 16x2 индикатором

Сообщение galex1981 » 23 июн 2011, 16:39

Похоже на глюки RAM памяти его. Программу пока не смотрел - позже посмотрю
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Проблема с OLED 16x2 индикатором

Сообщение Radist » 23 июн 2011, 17:47

А меня смутила длина проводов. Может олед более чувствителен к помехам и наводкам? Кондер по питанию ему еще прямо на индикатор. И еще хорошо бы сравнить по даташитам времянки сигналов - вдруг есть различия.
Аватара пользователя
Radist
 
Сообщения: 2241
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Проблема с OLED 16x2 индикатором

Сообщение HarryStar » 23 июн 2011, 19:58

galex1981 писал(а):Похоже на глюки RAM памяти его. Программу пока не смотрел - позже посмотрю

Непохоже, т.к. при включении питания или при НН-надцатом резете все работает до следующей инициализации.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Проблема с OLED 16x2 индикатором

Сообщение Duhas » 16 авг 2011, 16:54

а что если сигнал en попробовать оторвать от МК и тягать его в ручную ..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Проблема с OLED 16x2 индикатором

Сообщение Lockdog » 18 авг 2011, 10:41

Это проблемы винстара и никак не исправить, они изначально делали глючные оледы.
Аватара пользователя
Lockdog
 
Сообщения: 650
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Python


Вернуться в Микроконтроллеры

Кто сейчас на конференции

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