Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: WinAVR и LCD-дисплей
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Freeze Anti
Здравствуйте. Такой вопрос. Я использую дисплей PC2002, микросхему ATmega32 и компилятор WinAVR 2006. У меня проблема с отображением символов на дисплее... В общем, если символы быстро меняются, то экран начинает заметно мерцать... А если показываем статичное изображение, но одним из последних символов были цифры 8 или 9, то все изображение на экранчике перекрывается черными квадратами (символами FF)... Само по себе изображение остается, то есть если нажать и удерживать Reset, то можно спокойно прочитать, что же было написано... если после 8 или 9 поставить, скажем, пробел, то изображение опять таки нормальное... И данные, и управляющие сигналы передаются через порт B... Данные передаются в четырехбитном режиме... Может, кто-нибудь знает, в чем может быть проблема...

Да, кстати... чуть не забыл... чтобы не тащить код в студию, скажу, что тестировал это на примере из WinAVR... stdiodemo называется... только, разумеется, свои данные по микросхеме подставил...
Qwertty
Мерцание при быстром изменении это не бага, это фича sad.gif
А вот с выводом 8 или 9 непонятно. Если они не последние, то все хорошо? Может сам экран погиб? Другой экземпляр не пробовали?
Freeze Anti
Нет. Экран не погиб. Проверить другой экран, к сожалению, нет возможности... Зато установил такой интересный эффект... Если смотреть осциллографом сигнал с выводов микроконтроллера, то при появлении символа напряжение на долю секунды подымается и опять падает (послали единичку и обратно - ноль)... но на восьмерке и девятке - наоборот... сначала напряжение подымается, а потом, на смену символа - обратно опускается... то есть получается, что после отображения этих символов контроллер начинает непрерывно посылать единицы на экран... поэтому он и забивается полностью символами FF... кстати... проблема не в винавре, на который я грешил вначале... проблема в чем-то другом... попробовал написать программу на бейсике и прошить - тот же результат...
Qwertty
Цитата(Freeze Anti @ Jan 22 2008, 19:04) *
Нет. Экран не погиб. Проверить другой экран, к сожалению, нет возможности... Зато установил такой интересный эффект... Если смотреть осциллографом сигнал с выводов микроконтроллера, то при появлении символа напряжение на долю секунды подымается и опять падает (послали единичку и обратно - ноль)... но на восьмерке и девятке - наоборот... сначала напряжение подымается, а потом, на смену символа - обратно опускается... то есть получается, что после отображения этих символов контроллер начинает непрерывно посылать единицы на экран... поэтому он и забивается полностью символами FF... кстати... проблема не в винавре, на который я грешил вначале... проблема в чем-то другом... попробовал написать программу на бейсике и прошить - тот же результат...

Чудес не бывает - в драйвере дисплея никаких проверок нет. Так что возможны всего три причины:
1 - неисправный дисплей
2 - некачественная пайка (контакт там, где его быть не должно или наоборот)
3 - ошибки в программе.
Все остальное ИМХО очень маловероятно. Поверьте монтаж. Попробуйте заменить дисплей. Если не поможет, покажите программу.
Удачи!
Freeze Anti
Я тоже склоняюсь к варианту пайки... остальные два из предложенных вами отпадают...

1. замеры осциллографом, о которых я вам говорил, производились при отключенном дисплее

3. во-первых, программа стандартная (я уже писал, это программный пример для WinAVR 2006), а во-вторых, прошивалась кроме нее еще одна. На бейсике...
Qwertty
Цитата(Freeze Anti @ Jan 22 2008, 23:33) *
1. замеры осциллографом, о которых я вам говорил, производились при отключенном дисплее

Пример из WinAvr при отключенном дисплее зависнет еще на стадии инициализации. Вот из-за этого:
Код
void
hd44780_wait_ready(void)
{
  while (hd44780_incmd() & HD44780_BUSYFLAG);
}

Эта функция в процессе инициализации вызывается 3 раза. А с "висящих в воздухе" портов обычно читается 1. Т.е. дисплей как бы всегда занят.
Freeze Anti
замеры осциллографом производились для программы, написанной на бейсике...
sensor_ua
Цитата
Пример из WinAvr при отключенном дисплее зависнет еще на стадии инициализации. Вот из-за этого:

Флаг читается из старшего разряда, т.е. нога проца подключена. Пример не смотрел, но даже если там выключена подтяжка, то большинство дисплеев её всё-равно обеспечит (паразитной?) встроенной подтяжкой.
Mik174
Цитата(Freeze Anti @ Jan 22 2008, 11:52) *
Здравствуйте. Такой вопрос. Я использую дисплей PC2002, микросхему ATmega32 и компилятор WinAVR 2006. У меня проблема с отображением символов на дисплее... В общем, если символы быстро меняются, то экран начинает заметно мерцать... А если показываем статичное изображение, но одним из последних символов были цифры 8 или 9, то все изображение на экранчике перекрывается черными квадратами (символами FF)... Само по себе изображение остается, то есть если нажать и удерживать Reset, то можно спокойно прочитать, что же было написано... если после 8 или 9 поставить, скажем, пробел, то изображение опять таки нормальное... И данные, и управляющие сигналы передаются через порт B... Данные передаются в четырехбитном режиме... Может, кто-нибудь знает, в чем может быть проблема...

Да, кстати... чуть не забыл... чтобы не тащить код в студию, скажу, что тестировал это на примере из WinAVR... stdiodemo называется... только, разумеется, свои данные по микросхеме подставил...


Если Вы хотите, чтобы Вам могли помочь - код в студию обязательно, здесь телепатов нет.

Из личной практики - давненько, когда только осваивал контроллеры с подобным индикатором получил в свое время чем-то похожий эффект: в программе проверял кнопки, что-то считал, выводил на индикатор и т.д. Пока картинка на индикаторе не менялась - было заметно сильное мерцание. Если данные менялись, то они накладывались друг на друга. Если нажать Reset, то, естественно, картинка останавливалась, т.к. контроллер переставал засылать новые данные в индикатор.

При этом тоже думал, что плохой индикатор.
Оказалось - кривые руки smile.gif Пришлось выпрямлять smile.gif))
Freeze Anti
Да я понимаю, что телепатов нет... тут дело не в программе... несколько различных программ было использовано... одна из них - программный пример из WinAVR 2006... stdiodemo... еще простенькая программка на бейсике... сейчас не помню уже наизусть весь код, поэтому завтра, как на работу приду - отпишусь...

Цитата
Пока картинка на индикаторе не менялась - было заметно сильное мерцание. Если данные менялись, то они накладывались друг на друга. Если нажать Reset, то, естественно, картинка останавливалась, т.к. контроллер переставал засылать новые данные в индикатор.


у меня не совсем так... пока картинка не меняется - она нормально отображается... мерцания начинаются при смене символов...
Freeze Anti
Спасибо всем, кто пытался помочь... проблема найдена... руки оказались действительно ОЧЕНЬ кривыми... только не у меня, а у разработчика электрической схемы (я только программу разрабатываю)... так вот... он питание вместо 2-го вывода на 6-ой подал...то есть получилось, что дисплей питался по линиям данных... ужос...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.