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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 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
haker_fox
сообщение Feb 9 2010, 02:19
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(Nekromant @ Feb 3 2010, 20:13) *
Заранее спасибо.

Ошибку в явном виде найти не могу( Но могу поеркомендовать создать НОВЫЙ проект, где в одном файле будет инициализация дисплея и вывод инфы на него. Без прерываний и других сервисов. Вполне возможно, что в текущем проекте у Вас накладываются на работу с дисплеем другие процессы, например вызов прерываний и т.п.
Успехов!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Feb 9 2010, 04:02
Сообщение #3


Участник
*

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



С прерываниями на данный момент вообще не работаю. и все ссылки на лишние функции вырезаны. плюс в маке-файле прописана только директория лсд и маин.
Но в любом случае последую вашему совету и попробую и инициализацию и вывод сделать просто в майне. может и правда где проглядел и что то не так собирается.
Причина редактирования: Бездумное цитирование
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 10 2010, 01:22
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(Nekromant @ Feb 9 2010, 12:02) *
Но в любом случае последую вашему совету и попробую и инициализацию и вывод сделать просто в майне. может и правда где проглядел и что то не так собирается.

Ну в общем где-то так. Т.е. оставить только работу с LCD. Внимательно проверить инициализацию, да и вывод на дисплей. Не стесняться читать даташит. Внимательно проверить схему. Прозвонить мультиметром на наличие обрывов и кз. Если не поможет и нет ошибок в программе и схеме, то LCD на свалку. Кстати, а пины, которые управляют дисплеем точно работают? Если PORTC учавствует в этом, то нужно обязательно выключить JTAG, иначе ничего не получиться.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 10 2010, 06:36
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 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
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 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
Son Of Stone
сообщение Feb 26 2010, 06:24
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 29-01-09
Пользователь №: 44 106



1) MT12864A нормально эмулируется в Proteus - можно попробовать и сразу узнаете в чем проблема - в железе или в коде.
2) У Атмеги выключить фьюз JTAGEN (сам попадался и именно с таким индикатором)
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Mar 8 2010, 13:55
Сообщение #8


Участник
*

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



Цитата(Son Of Stone @ Feb 26 2010, 09:24) *
1) MT12864A нормально эмулируется в Proteus - можно попробовать и сразу узнаете в чем проблема - в железе или в коде.
2) У Атмеги выключить фьюз JTAGEN (сам попадался и именно с таким индикатором)

с Протеусом я очень сильно на вы и недолюбливаю его а фьюз у меги выключен уже давно
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 8 2010, 21:12
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 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
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #11


Участник
*

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



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



Прикрепленный файл  testing12864v3.rar ( 50.44 килобайт ) Кол-во скачиваний: 83
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 9 2010, 13:11
Сообщение #12


Гуру
******

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



Цитата(Nekromant @ Mar 9 2010, 14:54) *
вроде везде подправил следуя замечаниям.
Ага. "Телепаты, налетайте!"
Какие симптомы, что лечим на этот раз?


--------------------
На любой вопрос даю любой ответ
"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, 13:55
Сообщение #13


Участник
*

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



Цитата(Сергей Борщ @ Mar 9 2010, 16:11) *
Ага. "Телепаты, налетайте!"
Какие симптомы, что лечим на этот раз?

не ну не телепаты) запуститься не запустился, хотя вроде все подправил.
на всякий случай в майне написал подключение. лично меня смущает 3 и 18 ноги нормально ли их накоротко связывать или же хоть какое то сопротивление надо?
и второе
я вообще правильно его включил а то не удивлюсь что еще чего-нибудь прочитал А а поставил Б.
и третье
Функция _delay_us() может работать с дробными числами как я в проекте поставил?
если нет то как наносекунды сделать?
насколько я знаю есть ms и us а таймер включать на дисплей мне кажется кощунством

Сообщение отредактировал Nekromant - Mar 9 2010, 13:58
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 9 2010, 14:40
Сообщение #14


Гуру
******

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



Цитата(Nekromant @ Mar 9 2010, 15:55) *
на всякий случай в майне написал подключение. лично меня смущает 3 и 18 ноги нормально ли их накоротко связывать или же хоть какое то сопротивление надо?
Надо. Им настраивается контрастность.
Цитата(Nekromant @ Mar 9 2010, 15:55) *
и второе
я вообще правильно его включил а то не удивлюсь что еще чего-нибудь прочитал А а поставил Б.
Вечером гляну, если никто не ответит.
Цитата(Nekromant @ Mar 9 2010, 15:55) *
и третье
Функция _delay_us() может работать с дробными числами как я в проекте поставил?
может.


--------------------
На любой вопрос даю любой ответ
"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, 15:04
Сообщение #15


Участник
*

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



так и еще, почему у меня при включении дисплея через раз то +5 то - 5 вольт???
Сейчас уже отвязался от контроллера полностью просто на ноги 1 и 2 дисплея подал 5 вольт и получил на 18 ноге -7 возможных по даташиту пляшушие значения от -0,18 до 2,85.
при этом сопротивление между
1) +5 и 3 или 18 ногой =28,5МОм
2) GND и 3 или 18 ногой =28,5 МОм
сопротивления между ногами 3 и 18 пробовал менять от 100 Ом до 4,7кОм

Сообщение отредактировал Nekromant - Mar 9 2010, 15:21
Go to the top of the page
 
+Quote Post

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

 


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


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