реклама на сайте
подробности

 
 
> AtMEGA16+TM12864ABBW6
Nekromant
сообщение Feb 3 2010, 12:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



Доброго времени суток.
Сразу к проблеме:
Попытался запустить указанную в теме связкую, за основу класса взят пример с форума МЭЛТ, схема подключения так же взята оттуда. Проект собирается, но при попытке запустить на меге, на дисплее никакой реакции. Никто не сможет подсказать как проверить работоспособность дисплея или ткнуть на ошибку в программе.
PS проверить по рекомендации МЭЛТа через LPT не могу, т.к. этого самого порта на ноуте нету.
Заранее спасибо.
проект
Прикрепленный файл  testing12864.rar ( 48.83 килобайт ) Кол-во скачиваний: 135

исходная библиотека
Прикрепленный файл  MT_12864.rar ( 2.58 килобайт ) Кол-во скачиваний: 123


Сообщение отредактировал Nekromant - Feb 3 2010, 12:21
Прикрепленные файлы
Прикрепленный файл  MT_12864A.bmp ( 94.75 килобайт ) Кол-во скачиваний: 49
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Feb 10 2010, 06:36
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Nekromant @ Feb 3 2010, 14:13) *
PS проверить по рекомендации МЭЛТа через LPT не могу, т.к. этого самого порта на ноуте нету.
Проверьте наличие отрицательного напряжения на выводе 18. И его попадание на вывод 3.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Feb 26 2010, 01:05
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



Цитата(Сергей Борщ @ Feb 10 2010, 09:36) *
Проверьте наличие отрицательного напряжения на выводе 18. И его попадание на вывод 3.

нету этого самого отрицательного напряжения. если быть точным -0,128В




далее ниже прилагаю еще один вариант проекта полностью переписанный и проверенный. вроде без ошибок но так и не заводится. Теперь уже не знаю вообще в каком направлении копать.



Прикрепленный файл  testing12864N.rar ( 46.68 килобайт ) Кол-во скачиваний: 104
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 8 2010, 21:12
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Nekromant @ Feb 26 2010, 03:05) *
нету этого самого отрицательного напряжения. если быть точным -0,128В
Значит либо ошибка в инициализации, либо в подключении, либо убитый дисплей. Покажите вашу схему подключения.

По вашему коду: ужас. С таким кодом не будет работать даже правильно подключеный исправный дисплей wink.gif.
1) Не вижу настройки выводов группы LCD_CTRL на вывод.
2)
Код
LCD_CTRL_PORT|= (0 << LCD_E);//    LCD_E=0;
комментарий не соответствует коду. Код не имеет смысла. Чтобы код делал то, что написано в комментарии, он должен быть таким:
Код
LCD_CTRL_PORT &= ~(1 << LCD_E);
Таких мест в вашем коде очень много, не буду перечислять все.
3)
Код
//При необходимости настроить здесь шину данных на вывод
  LCD_CTRL_PORT|= ((0 << LCD_RW)&&(cd << LCD_DI)&&(l << LCD_CS1)&&(r << LCD_CS2));
Этот код тоже делает не то, что вы ожидаете. Этот код делает то же самое, что и предыдущий: LCD_CTRL_PORT |= 0, т.е. ничего. Вы путаете логические и двоичные операции, функции "ИЛИ" и "И". Надо было написать:
Код
LCD_CTRL_PORT &= ~(1 << LCD_RW);  // LCD_RW = 0
LCD_CTRL_PORT |= (cd << LCD_DI) | (l << LCD_CS1) | (r << LCD_CS2);
или, если на этом порту больше ничего не подключено, так:
Код
  LCD_CTRL_PORT = (0 << LCD_RW) | (cd << LCD_DI) | (l << LCD_CS1) | (r << LCD_CS2);
А потом посмотрите в листинг и сравните с таким кодом:
Код
LCD_CTRL_PORT &= ~((1 << LCD_RW) | (1 << LCD_DI) | (1 << LCD_CS1) | (1 << LCD_CS2));
if(cd)
    LCD_CTRL_PORT |= (1 << LCD_DI);
if(l)
    LCD_CTRL_PORT |= (1 << LCD_CS1);
if(r)
    LCD_CTRL_PORT |= (1 << LCD_CS2);
Потом вы можете заметить, что функция WriteByte() всегда вызывается или с r=1, l=0 или с r=0, l=1. Так зачем передавать в нее два взаимно однозначных параметра? Достаточно передвать лишь один.
4)
Код
    _delay_ms(140);     //Это время предустановки адреса (tAW)
Вы не попутали миллисекунды и наносекунды?
5) В закомментированном коде ReadByte() есть настройка шины данных индикатора на вывод данных, но нет настройки порта меги на ввод. Аналогично и для WriteByte() - есть настройка индикатора на ввод, но нет настроки порта меги на вывод.

Есть еще огромный простор для оптимизации.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Mar 9 2010, 11:14
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



Цитата(Сергей Борщ @ Mar 9 2010, 01:12) *
...

да... видимо перерыв в писании программ больше полугода не идет на пользу совсем. действительно все намешал и ведь даже не заметил . сейчас попробую учесть все замечания
1-включил
2,3 счас подправлю
4 с задержками еще возиться однако придется и не раз так как все таки я сомневаюсь что МТ и ТМ дисплеи прямо один в один работают хоть вроде и копии
5 код раскомментирован и исправлен с вашими замечаниями
6-после изменений появилось отрицательное напряжение -5V что уже радует.
буду копать дальше и все результаты обязательно выложу здесь
p.s. оптимизировать буду как только запустится)))).

Сообщение отредактировал IgorKossak - Mar 9 2010, 17:56
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Mar 9 2010, 12:54
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



вроде везде подправил следуя замечаниям.
Выкладываю уже третью версию проекта.
подключение дисплея писано в Main.h( проблемы с интернетом на работе потому крутимся как можем).



Прикрепленный файл  testing12864v3.rar ( 50.44 килобайт ) Кол-во скачиваний: 83
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Nekromant   AtMEGA16+TM12864ABBW6   Feb 3 2010, 12:13
- - haker_fox   Цитата(Nekromant @ Feb 3 2010, 20:13) Зар...   Feb 9 2010, 02:19
|- - Nekromant   С прерываниями на данный момент вообще не работаю....   Feb 9 2010, 04:02
|- - haker_fox   Цитата(Nekromant @ Feb 9 2010, 12:02) Но ...   Feb 10 2010, 01:22
|- - Сергей Борщ   Цитата(Nekromant @ Mar 9 2010, 14:54) вро...   Mar 9 2010, 13:11
|- - Nekromant   Цитата(Сергей Борщ @ Mar 9 2010, 16:11) А...   Mar 9 2010, 13:55
|- - Сергей Борщ   Цитата(Nekromant @ Mar 9 2010, 15:55) на ...   Mar 9 2010, 14:40
- - Son Of Stone   1) MT12864A нормально эмулируется в Proteus - можн...   Feb 26 2010, 06:24
|- - Nekromant   Цитата(Son Of Stone @ Feb 26 2010, 09:24)...   Mar 8 2010, 13:55
- - Nekromant   так и еще, почему у меня при включении дисплея чер...   Mar 9 2010, 15:04
|- - Сергей Борщ   Цитата(Nekromant @ Mar 9 2010, 17:04) так...   Mar 10 2010, 10:32
|- - Nekromant   Цитата(Сергей Борщ @ Mar 10 2010, 13:32) ...   Mar 10 2010, 14:18
|- - Сергей Борщ   Цитата(Nekromant @ Mar 10 2010, 16:18) 1)...   Mar 10 2010, 15:02
|- - Nekromant   Цитата(Сергей Борщ @ Mar 10 2010, 18:02) ...   Mar 10 2010, 15:17
- - Nekromant   Доброго времени суток. 1)Итак как я и обещал я по...   Mar 12 2010, 13:50
- - Сергей Борщ   Цитата(Nekromant @ Mar 12 2010, 15:50) 4)...   Mar 13 2010, 11:18
- - Nekromant   Цитата(Сергей Борщ @ Mar 13 2010, 15:18) ...   Mar 16 2010, 05:01


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 01:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016