Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн янв 16, 2017 12:49:02
Сверлит текстолит когтями
Карма: 15
Рейтинг сообщений: 212
Зарегистрирован: Вт мар 31, 2015 22:56:07 Сообщений: 1299 Откуда: Мы люди простые, живем в лесу, на пенек молимся
Рейтинг сообщения:0
scorpi_0n писал(а):
Так вам же и толкуют про решения подобных задач. При аппаратном решении планировщик только обновляет буфер дисплея, при необходимости, он даже и не ведает о существовании самого дисплея. А с какой частотой периферия, без участия ядра и без прерываний, обновляет данные на самом дисплее уже не суть. Там может быть 25, а может и 125 раз в секунду, время ядра то на это никак не тратится.
1. У меня ATmega328P, а не STM32. 2. У меня НЕТ дисплейного сопра, выводом занимается МК.
это копеечный СТМ32 и этот МК не юзает тупые задержки, ему это просто ни к чему
а как же он реализует протокол обмена с ЖКИ, если считывание бита занятости он не делает, и задержки тоже не реализует? может, вы его в сон погружаете или еще как-то загадочно заставляете его ничего не делать некоторое время, пока ЖКИ прочухается? но чем такой подход отличается от тупого цикла?
Мурато Мяуконни писал(а):
Делал полностью аппаратный вывод с частотой обновления всего дисплея 25 фпс
полностью аппаратный - это как? как в этом "полностью аппаратном" выводе осуществлялось ожидание времени готовности ЖКИ?
trengtor писал(а):
Или Вы это не мне?
да похоже, люди вообще сами с собой говорят. им про то, что соблюсти временные параметры протокола обмена информацией с ЖКИ1602 можно либо с анализом бита занятоски/готовности, либо с задержками, а они про то, как эти функции будет выполнять какой-то "сопроцессор".
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
...не шибко то выгодно с точки зрения кода - ожидать готовность дисплея, проверяя бит занятости....
Надеюсь, вы в курсе того, что времена исполнения команд HD44780 определяются его тактовой частотой, которая, в свою очередь, задаётся RC цепочкой. Даже в одной партии дисплеев тактовая частота может сильно "гулять" (не говоря уже о её изменении от температуры). Так же, тактовая частота HD44780 отличается у разных производителей. Так что, по-вашему, ставить задержки в программе с 4-ёх кратным запасом? Хотите - делайте вывод по задержкам. Никто, лично вам, не запрещает так делать. /Вот так и появляются изделия, которые работают с дисплеями на HD44780 только одного производителя/.
Неисправна. 1 Опять какие-то странные манипуляции с регистром направления DDRD. 2 Опять байт ВСЕГДА!! отправляете дважды - по половинке. Причем, второй раз отправляете всегда нули. Я у себя "распределил" отправку на пару функций. Когда нужно однократно отправить что-то "в лоб", то примерно так:
Надеюсь, вы в курсе того, что времена исполнения команд HD44780 определяются его тактовой частотой, которая, в свою очередь, задаётся RC цепочкой. Даже в одной партии дисплеев тактовая частота может сильно "гулять" (не говоря уже о её изменении от температуры). ....Так что, по-вашему, ставить задержки в программе с 4-ёх кратным запасом? Хотите - делайте вывод по задержкам. Никто, лично вам, не запрещает так делать. /.
Да блин. "чукча не читатель"? Я же написал - какие к черту программные задержки? У вас что, абдурино весь ум заняло? Кчерту проргаммные задержки. Есть же аппаратный таймер, а вообще я уже объяснял же - лично я делал аппаратный вывод с частотой 25 фпс, и этому аппаратному выводу вообще пофик на то, что делает программа. Или наоборот, программе пофик на тто, с какой скоростью выводит в дисплей. 25 фпс - это трехкратный, как помню, запас. А в три раза тактовая частота не меняется. Процентов 20 максимум, да и то не реально столько. Иначе это хрень полная.
_________________ Подпись убрал вместе с автором. aen
это скользкий путь - надеяться на задержки, правильный подход заключается в считывании статуса контроллера дисплея - битик там такой есть. как только команда выполнится, битик примет соответствующее значение и сразу можно отправлять следующие команды/данные. если уж решили самостоятельно пройти весь курс молодого ногодрыга, так проходите его правильно... иначе наука будет не впрок.
для чтения этого самого битика, как нужно выставить ножку RS? BF -это команда, данные или не имеет значение. кстати какие команды можно считать с LCD?
Аппаратный таймер это и есть програмная задержка. Его и программировать надо, и сложней алгоритм, чем просто опрашивать бит занятости
Это если вы по привычке используете таймер для осуществления программных задержек. В случае СТМ32 и аппаратного решения это и даром не нужно, нет там никаких программных задержек, т.к. нет самой программы вывода на дисплей, там всё аппаратно. И программировать его нужно только в начале, при инициализации. Потом он молотит сам по себе. И алгоритма, как такового, там нет вообще, никакого. С буфера по кругу через ДМА по таймеру данные засылаются в порт аппаратно.
Последний раз редактировалось scorpi_0n Пн янв 16, 2017 16:32:34, всего редактировалось 2 раз(а).
а как же он реализует протокол обмена с ЖКИ, если считывание бита занятости он не делает, и задержки тоже не реализует? может, вы его в сон погружаете или еще как-то загадочно заставляете его ничего не делать некоторое время, пока ЖКИ прочухается? но чем такой подход отличается от тупого цикла? ... полностью аппаратный - это как? "".
А вот так. Очень просто. Если кому действиельно , а не просто ради спора, будет интересно как это реализуется - расскажу. Вон, и Скорпион тоже знает как это делается. Слава богу, есть еще человеки. И на практике не надо ожидать, что дисплей вдруг замедлится в три раза после того, как работал нормально. Не бывает такого. А если возразите, что бывает, то значит у вас патроны не той системы. Дешманская херня из китайской столовой - не оправдание, раз вы тут заикались про серийный выпуск.
Цитата:
Аппаратный таймер это и есть програмная задержка. Его и программировать надо, и сложней алгоритм, чем просто опрашивать бит занятости
Да ну, вы чо, сложнее программировать аппаратный таймер? Фууу, ну вы вааащеее. Абдурины на ночь объелись?
Аппаратный таймер работает в связке с прерыванием этого таймера. Произошло прерывание - интервал истек. Отправляйте байт или полубайт в дисплей. А чтобы не случилось казуса с занятостью - там же перед отправкой страховочную проверку бита занятости проведите, раз уж дрожите за некондицию. Черт с ним, с аппаратным модулем СТМа, не у всех есть СТМы, но на атмелах то че, нет прерываний от таймеров чтоле? Вы, ребята, чесслово, иногда с серьезным видом такую хню городите, и беспрекословно в нее верите. И повторяете из проекта в проект одинаковые несуразности. хотя, судя по датам регистрации, уже как минимум десяток лет батоны на клаве жмете.
_________________ Подпись убрал вместе с автором. aen
Да. Задается "ширина" шины данных: 4 или 8 бит. Зависимо от этого, байт либо уходит целиком, либо бьется на нибблы. Дисплей инициализируется тоже чуть по разному.
Последний раз редактировалось MOHCTEP Пн янв 16, 2017 20:26:32, всего редактировалось 1 раз.
И чем это плохо? Что, нужно делать по старинке, как делали 15 лет назад или так, как делают в ардуйнях? Да ну, вот ещё! Свою позицию я уже объяснил. Никто и ничто не заставит дисплей замедлиться в три раза, иначе это не дисплей а кусок лажи. Впрочем, ардуино-последователям не доступен аппаратный модуль интерфейса дисплея.
Добавлено after 6 minutes 47 seconds:
ROMan2947 писал(а):
для чтения этого самого битика, как нужно выставить ножку RS? BF -это команда, данные или не имеет значение. кстати какие команды можно считать с LCD?
RS = 0. На выводах, помимо BF в последнем разряде, будет выведен и текущий адрес курсора. При RS = 1 читается содержимое (код символа) по текущему адресу курсора. Это и всё, что можно почесть.
_________________ Подпись убрал вместе с автором. aen
Да. Задается "ширина" шины данных: 4 или 8 бит. Зависимо от этого, байт либо уходит целиком, либо бьется на нибблы. Дисплей инициализируется тоже чуть по разному.
Да блин. "чукча не читатель"? Я же написал - какие к черту программные задержки? У вас что, абдурино весь ум заняло? Кчерту проргаммные задержки. Есть же аппаратный таймер, а вообще я уже объяснял же - лично я делал аппаратный вывод с частотой 25 фпс, и этому аппаратному выводу вообще пофик на то, что делает программа. Или наоборот, программе пофик на тто, с какой скоростью выводит в дисплей. 25 фпс - это трехкратный, как помню, запас. А в три раза тактовая частота не меняется. Процентов 20 максимум, да и то не реально столько. Иначе это хрень полная.
Ну чтож, "минус" вы от меня получили за культуру общения (вернее, за её отсутствие). А теперь "по полочкам": 1. Какая нафиг разница (со стороны дисплея) как вы делаете задержки: "гоните цикл" в программе или выдаёте данные по таймеру? Да хоть ножной педалью тактируйте, если не читаете бит занятости. 2. "25 фпс" на знакосинтезирующем индикаторе - на кой хрен? Кто сможет глазами зафиксировать значения на дисплее, меняющиеся с такой скоростью? Стандартная задача: сделать изменение неких символов на экране так, чтоб не было "мерцаний". 3. Про приоритеты прерываний вы, похоже, вообще не курсе. 4. Судя по вашим постам, у вас "в руках" есть/был только один экземпляр дисплея на HD44780. 5. Вы и есть "среднестатистический ардуинщик". Строчите программы, не понимая как работает "железо". Удалось достичь неких результатов - хорошо, а на повторяемость вам на...ть. 6. Что касается меня - я пишу программы только на ASM под разные контроллеры и принципиально не использую чужие (скачанные) библиотеки. 7. По дисплеям - я уже долгое время покупаю их в МЭЛТ-е, поскольку эта контора "у меня под боком" и в течении часа я могу приобрести то, что мне нужно на данный момент (и в любом количестве).
И что? думаете, меня это расстраивает? Да ну, никапли. Особенно от вас. У вас тут что, коллективное кармодрочерство?
Цитата:
Вы и есть "среднестатистический ардуинщик". Строчите программы, не понимая как работает "железо".
Дану, неужели? По себе людей не судят. Тут не тема для обсуждения меня.
Цитата:
я пишу программы только на ASM под разные контроллеры
Ааа, ну ясно. Еще один ассемблерщик, как и этот, как его.... кто-то тут давеча похвалялся, что пишет на ассемблере, а на поверку оказалось, что это всего лишь дизассемблер из Си. Кстати, гордиться ассемблером не очень то продуктивно. На ассемблере далеко не уедешь. Теперь понятно, откуда все эти программные задержки и сложности с настройкой таймера. И понятно, откуда незнания более сложных микроконтроллеров. Исключительно ассемблер - удел начинающих или надолго застрявших в переходной периоде.
Цитата:
По дисплеям - я уже долгое время покупаю их в МЭЛТ-е
И чо, они там производят такие хреновые дисплеи, у которых нет повторяемости и параметры плавают аж в три раза? Ох черт, не буду покупаль мэлты. Спасибо за антирекламу. Хоть что-то полезное от вас.
Цитата:
А теперь "по полочкам":
туфта и профанация эти ваши "полочки". Их можно все скопом захватить и выбросить. Поскольку ваши знания ограничены исключительно ассемблером и однажды заданной методикой. Ну не могут меняться временнЫе параметры в два-три раза, ну не могут. Вы где такое видали? Даже RC-генератор микроконтроллера и то стабильнее работает. Хорошую же "рекламу" вы сделали МЭЛТу, они вам будут очень "благодарны".
_________________ Подпись убрал вместе с автором. aen
Цитата из даташита вашего любимого мэлта: [url] https://www.google.ru/url?sa=t&source=w ... KDmkRuLglw [/url] Примечания. 1. Указанное время является максимальным. Его не обязательно выдерживать при условии чтения флага занятости BS — как только флаг BS=0, так сразу можно писать следующую команду или данные. Если же флаг BS перед выдачей команд не проверяется — необходимо формировать паузу не менее указанного времени для надежной работы модуля
Цитата относится к табличке с временем выполнения инструкций. Классические 40 мкс.
Так что проспитесь сами. Думайте в следующий раз, прежде чем написать очередную устаревшую глупость. И учитесь кодить нормально и используйте актуальные методы
_________________ Подпись убрал вместе с автором. aen
Последний раз редактировалось Мурато Мяуконни Вт янв 17, 2017 06:51:05, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения