Страница 105 из 123

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Пт янв 13, 2017 22:38:02
ROMan2947
СКАЗОЧНИК писал(а):
ARV писал(а):в чем сакральный смысл изобретения велосипеда?
:) Для меня, например, в том, чтобы понять как это работает и изучить. Иначе можно и до Ардуины скатиться. :dont_know:
+1

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Пт янв 13, 2017 22:46:05
ARV
чтобы скатиться надо прежде выше подняться :)))

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Пт янв 13, 2017 22:51:01
ROMan2947
В Хитачивском даташите инициализация идентична тому, по которому писался код,збесь проблема в другом

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Пт янв 13, 2017 22:58:34
trengtor
ROMan2947 писал(а):В Хитачивском даташите инициализация идентична тому, по которому писался код,збесь проблема в другом
В хитачевском подробно раписаны тайминги обмена, организация памяти и т.п. нюансы. Так что танцевать лучше именно от него.

Добавлено after 1 minute 7 seconds:
ARV писал(а):я вообще не понимаю, почему не применять готовые проверенные наработки? в чем сакральный смысл изобретения велосипеда?
Они не всегда имеются в нужном виде.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 09:24:09
ARV
trengtor писал(а):Они не всегда имеются в нужном виде
в нужном - это каком?

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 09:56:06
trengtor
ARV писал(а):
trengtor писал(а):Они не всегда имеются в нужном виде
в нужном - это каком?
Вас это беспокоит? Вы хотите об этом поговорить? ©

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 10:03:50
Аlex
Мне вот тоже непонятно, что плохого в том, что человек рвётся сам писать свой собственный код, а не использует готовое :dont_know:
Хочешь сделать хорошо - делай всё сам.
Больше всего раздражать люди, пишущие на форумах "дайте библиотеку для ..." :facepalm:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 10:08:03
СКАЗОЧНИК
Я думаю, что Роман в одном тоже прав. ))) Когда уже все испробовал и много знаешь, тогда приходит понимание, что гораздо целесообразнее взять готовую библиотеку, которую рекомендует официальный производитель или еще кто, которая испытана, которая надежная и отлаженная. Тогда экономится времени больше на разработке ПО и ошибок меньше.
Но такое понимание приходит именно после того, когда уже всего накушался. :roll:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 10:15:44
trengtor
Аlex писал(а):Мне вот тоже непонятно, что плохого в том, что человек рвётся сам писать свой собственный код, а не использует готовое :dont_know:
Хочешь сделать хорошо - делай всё сам.
Иногда это просто приходится делать.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 17:09:52
ARV
trengtor писал(а):Иногда это просто приходится делать
trengtor писал(а):Вы хотите об этом поговорить?
ну так и всё же - когда это приходится делать? приходится - я вкладываю в это слово смысл вынужденной необходимости. и лично мне не приходит на ум ничего, кроме попыток втиснуть в тини13 работу с ЖКИ. тут, пожалуй, придется попотеть с самоделками. но в других-то случаях какая нужда может заставить это делать?

я не возражаю против обучения. но после того, как научился дрыгать ножками МК, уже все равно, для чего ими дрыгать - для ЖКИ или для SPI или там еще чего-то... тут уже можно и расслабиться. или наоборот, сосредоточиться на чем-то бОльшем...

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 20:00:17
trengtor
ARV писал(а):
trengtor писал(а):Иногда это просто приходится делать
trengtor писал(а):Вы хотите об этом поговорить?
ну так и всё же - когда это приходится делать? приходится - я вкладываю в это слово смысл вынужденной необходимости. и лично мне не приходит на ум ничего, кроме попыток втиснуть в тини13 работу с ЖКИ. тут, пожалуй, придется попотеть с самоделками. но в других-то случаях какая нужда может заставить это делать?
Мне, например, пришлось написать свою, когда выяснилось, что стандартная библиотека от mikroPascal делает что попало с таймингами. С ней цикл вывода блока данных из 6 знакомест на ЖКИ занимал до 11 мс, с моей занимает до 500 мкс. Цель достигнута.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 21:14:39
ARV
trengtor писал(а):mikroPascal
этого достаточно

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Сб янв 14, 2017 22:27:38
trengtor
ARV писал(а):
trengtor писал(а):mikroPascal
этого достаточно
Как бы абсолютно ожидаемый комментарий. Но я слишком тупой для ЦЭ :beer:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Вс янв 15, 2017 18:58:37
ROMan2947
trengtor писал(а):
ROMan2947 писал(а):В Хитачивском даташите инициализация идентична тому, по которому писался код,збесь проблема в другом
В хитачевском подробно раписаны тайминги обмена, организация памяти и т.п. нюансы. Так что танцевать лучше именно от него.

Добавлено after 1 minute 7 seconds:
ARV писал(а):я вообще не понимаю, почему не применять готовые проверенные наработки? в чем сакральный смысл изобретения велосипеда?
Они не всегда имеются в нужном виде.
просмотрел хитачевскиЙ даташит,но я что_то не нашел ничего про задержки жирным. Без них конфигурация не проходит....как это можно объяснить? а нашел я эти задержки с одного из примеров.


void init_LCD()
{
_delay_ms(50);
//write_Command(0x20);
//_delay_ms(5);
//write_Command(0x20);
//_delay_us(110);
//write_Command(0x20);

write_Command(0x28); // две строки 4 бита
write_Command(0x08); // отключаем
write_Command(0x01); // очищаем
_delay_us(100);
write_Command(0x06); // двигаем курсор вправо
_delay_ms(10);
write_Command(0xF); //включаем

}

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Вс янв 15, 2017 19:26:33
trengtor
ROMan2947 писал(а): просмотрел хитачевскиЙ даташит,но я что_то не нашел ничего про задержки жирным. Без них конфигурация не проходит....как это можно объяснить? а нашел я эти задержки с одного из примеров.
Вот документ:
HD44780U (LCD-II)
(Dot Matrix Liquid Crystal Display Controller/Driver)
ADE-207-272(Z)
'99.9
Rev. 0.0
На стр. 24, 32, 33, 45, 46 есть практически всё основное, что нужно для работы с такими дисплеями.

Выделенные жирным задержки относятся к выполнению определенных команд.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Вс янв 15, 2017 20:53:51
ARV
это скользкий путь - надеяться на задержки, правильный подход заключается в считывании статуса контроллера дисплея - битик там такой есть. как только команда выполнится, битик примет соответствующее значение и сразу можно отправлять следующие команды/данные. если уж решили самостоятельно пройти весь курс молодого ногодрыга, так проходите его правильно... иначе наука будет не впрок.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Вс янв 15, 2017 20:57:55
MOHCTEP
ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Вс янв 15, 2017 21:27:29
ROMan2947
ARV писал(а):это скользкий путь - надеяться на задержки, правильный подход заключается в считывании статуса контроллера дисплея - битик там такой есть. как только команда выполнится, битик примет соответствующее значение и сразу можно отправлять следующие команды/данные. если уж решили самостоятельно пройти весь курс молодого ногодрыга, так проходите его правильно... иначе наука будет не впрок.
Я так думаю Вы имеете ввиду бит BF-busy flag? как раз и собираюсь учесть его в своем проекте...в даташите изначально я его не воспринял всерьез, т.к. в примерах которые я изучал его никто не упомянул....

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Вс янв 15, 2017 21:40:24
WiseLord
ROMan2947: как уже не раз высказался MOHCTEP - у Вас вообще не пойми что на портах происходит. Так что хотя бы с работой с битами (как установить один бит или сбросить один бит порта, не затрагивая прочие - а они ведь тоже используются) разберитесь, прежде чем в даташитах проблемы искать.

В частности:

RW_WRITE - устанавливает вообще весь порт (RW, RS, E, данные) в ноль. Хотя должен это делать только с RW.
PORTD=1<<2; // взводим строб - то же самое - помимо установки E в единицу, всё прочее обнуляет

И так повсюду. Это просто не может работать.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Добавлено: Вс янв 15, 2017 21:52:29
ROMan2947
MOHCTEP писал(а):ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.
Голова уже кругом) Т.е. нужно вместо write_Command(0x20) отдавать (3<<4)? кстати нарыл в том же ПДФ на стр.23, что этот момент вообще можно доверить самому дисплею, вернее его внутреннему сбросу. а нам подхватить уже с места определения размера шины...это так?

Добавлено after 4 minutes 22 seconds:
WiseLord писал(а):ROMan2947: как уже не раз высказался MOHCTEP - у Вас вообще не пойми что на портах происходит. Так что хотя бы с работой с битами (как установить один бит или сбросить один бит порта, не затрагивая прочие - а они ведь тоже используются) разберитесь, прежде чем в даташитах проблемы искать.

В частности:

RW_WRITE - устанавливает вообще весь порт (RW, RS, E, данные) в ноль. Хотя должен это делать только с RW.
PORTD=1<<2; // взводим строб - то же самое - помимо установки E в единицу, всё прочее обнуляет

И так повсюду. Это просто не может работать.
после замечаний MOHCTEP тот код уже не актуален!!!была проведена работа над ошибками.

Добавлено after 5 minutes 16 seconds:
MOHCTEP писал(а):ROMan2947, если у вас write_Command(x) осталась прежней, то проблему вы не решите. В начале инсталляции, на дисплей нужно отдавать псевдо-8-ми битные команды. Т.е. только старшую тетрадку. Вплоть до места определения размера шины. Что такое write_Command(0x20)?
На 213 странице пдф, из 1 поста этой темы, нарисован рабочий алгоритм установки дисплея.
исправленная функция write_Command

#define RW_READ PORTD|=1<<1
#define RW_WRITE PORTD=PORTD&0xFD;

#define RS_DATA PORTD|=1<<0
#define RS_COMAND PORTD=PORTD&0xFE;
#define DATA_BUS PORTD

void write_Command(int DATA)
{
RS_COMAND;
RW_WRITE;
DDRD|=0xF0; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PORTD|=1<<2; // ??????? ?????
DATA_BUS&=0xF;
DATA_BUS|=(DATA&0xF0);
_delay_us(100);
PORTD=PORTD&0xF0; // ?????? ?? ??????
_delay_us(100);
DDRD&=0x0F;

RS_COMAND; // ?????? ????????
RW_WRITE;
DDRD|=0xF0;
PORTD|=1<<2; // ??????? ?????
DATA_BUS&=0xF;
DATA_BUS|=DATA<<4;
_delay_us(100);
PORTD=PORTD&0xF0; // ?????? ?? ??????
_delay_us(100);
DDRD&=0x0F;
}