Где толково написано про организацию памяти МК? У всех АВР она одинаковая? Сколько занимает одна страница?
"Черная магия" - классное выражение.
И еще вопросик. Вот я сделал вместо макроса вывод строки, используя символ "конец строки" - $. Теперь, если я не хочу выводить строку, у меня компилятор ругается, что она не объявлена... Т.е. я не задал MY: db. "", а в коде к нему идет обращение. Как лучше сделать? И второе. А если я хочу выводить не одну строку, а несколько разных, ну пусть две на обеих строчках ЖКИ. Как реализовать два массива, а для вызова использовать ту же подпрограмму rcall MY_LINE?
Код:
MY: .db "My line is here!$" ... ... ... rcall MY_LINE ... ... ... MY_LINE: ; ; плюс массив символов добавит по два байта на каждые два знака (и "конец строки") ldi ZH, high (MY*2) ; Переходим на нашу таблицу символов на самый первый элемент (точнее нулевой) ldi ZL, low (MY*2)
LETTER: lpm R18, Z+ ; Загружаем элемент в регистр Р18 (загрузка с пост-инкрементом)
Где толково написано про организацию памяти МК? У всех АВР она одинаковая? Сколько занимает одна страница? А как же на этом сэкономить?
В ДШ на АВР явно не употреблено слово "страница", я использовал его для удобства из других МК. К примеру, в конце проги, в той ее части, которую отведем под константы/тексты пишем:
Код:
.org 0xC00 Text: .db "......"
Если теперь по листингу видим, что все тексты не вылезают за адрес 0xC7F, можем считать, что все они на одной "странице" . Тогда загрузку старшего адреса ldi ZH, High (Text*2) можно производить один раз, уже в подпрограмме вывода строки. Но это можно рекомендовать только при большом напряге с памятью программ, т.к. приходится постоянно следить за размещением. У меня это отрыжка тех времен, "когда дискеты были большими, а память - маленькой" и приходилось экономить каждый байт. потому что предложение "давайте перейдем на более толстый контроллер" вызвало бы у шефа-частника поток слов, не содержащихся в словаре Ожегова.
Когда это возможно, делаю так. Ограничиваю область ZH=0 и все константы размещаю по адресам меньше 0x7F. Регистр ZH навсегда определяется как 0. Программа начинается с .org=0x100. Т. о. можно связать различную память RAM, EEPROM, FLASH. В последнее время активно использую возможности self-programming the FLASH, поскольку EEPROM, по мне, далеко не безупречна в плане надёжности.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Итак... Благодарю всех, кто помог. Выкладываю крайний результат работы, больше переделывать его не буду, ибо считаю достаточным. От рисования отдельного своего символа (макроса или подпрограммы) отказался окончательно, не функционально это. Кто читал даташит, тот и так знает как нарисовать. Кто не читал, может пользоваться встроенным массивом и рисовать хоть сразу 8 своих символов. Так проще. Еще один момент, что повлияло на это - это то, что не производится чтение текущего адреса из дисплея, поэтому нарисовать свой символ в позицию курсора... А остальные варианты - это пляска с бубном и много лишних телодвижений и увеличение кода. Зато теперь можно выводить строками буквы (кроме русских) сколько угодно. ))) И как обещал, провел тестирование на однострочном дисплее DV16110 желто-зеленая подсветка, производитель DataVision. Инициализируется он также, как и 1602, т.к. по сути является двухстрочным 8 знаковым, но в одну строку... Кому не понятно, читайте даташиты на эти контроллеры (которые в названии темы). Также тестирование постоянное проводилось на двух дисплеях LCM1602К RoHS (какой-то китайский неизвестный) один с синей подсветкой и белыми буквами, другой наоборот с белой подсветкой и синими буквами. Еще один дисплей для проверки приносил друг WH1602A WinStar желто-зеленая подсветка. Этот дисплей тестировался прямо на его плате (тоже ТИНИ2313), только без кварца в 20 МГц, а на внутренней RS - 8 МГц. На всех работает без изменений кода. Только задавал порты, куда подключены выводы. Кстати, выводы принципиально подключались в разнобой и как попало. Ну и архив, как всегда. Также там основной файл для ТИНИ2313 с примером инициализации и использованием макросов. Все описано в комментариях файла LCD4.asm. Читайте. Если не понятно, спрОшайте.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Но не нахожу в даташите его потребление в разных режимах.
Сколько потребляет сама подсветка не важно. Меня интересует потребление дисплея без подсветки. И играет роль когда на экране есть какие нибудь цифры или нет для потребления.
И если мне нужно для устройства минимально понизить потребление и дисплей работал пару секунд после нажатия кнопок на устройстве как быть? Есть команда отключения или физически надо вырубить ему питание.
Между ножками МК и ножками дисплея надо использовать резисторы?
Но не нахожу в даташите его потребление в разных режимах.
Там посмотрите по потреблению, может чего подскажет. Там на контроллер его, но думаю, сам ЖКИ мало жрет без подсветки. В любом случае там на последних страницах есть. А разница в есть или нету символов - думаю не большая совсем... Хотя, можете измерить и поделиться самыми точными данными.
amd9800 писал(а):
Есть команда отключения или физически надо вырубить ему питание.
Команды на отключение... Это типа "Спящий режим" как у МК? Насколько знаю (вкуривая эти даташиты) такой нету.
amd9800 писал(а):
надо использовать резисторы?
Если МК и ЖКИ от 5 Вольт питаются, то не надо. Там один подстроечный на контраст токма. ))))
Данные по потреблению в даташите на контроллер можно принимать в расчет только если это даташит от конкретного индикатора, сейчас идут контроллеры-капельки и многочисленные аналоги что фиг разберешься что именно там стоит. Надёжней, конечно, подавать питание на индикатор прямо с ножки контроллера а при отключении сначала перевести все выводы подключенные к нему в ноль а потом обесточить индикатор. Это то что заработает с ЛЮБЫМ индикатором и он точно ничего потреблять в паузах не будет. только учти, что каждый раз включая его надо ждать и по полной программе проводить инициализацию.
Здравствуйте. Имеется знакосимвольный дисплей 20х4. У него одна проблема: в нем нет русского алфавита. За место русского, я так понял там арабские буквы. Возможно ли перешить знакосимвольную таблицу в нем на русскоязычную? Или же только остается пользоваться дополнительными "пустыми" символами, которые в начале программы можно запрограммировать? был тут, но дельного там вроде ничего нету, да и тема закрыта.
_________________ R5VCH Хотелки: СпойлерАналоговый осциллограф С1-112, С1-118, другие не/рабочие модули от комплекса ОДА-102 всё что касается AVR, arduino, raspberry всё что касается КВ-УКВ-радиосвязи Деньги webmoney, kivi, сбербанк
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 29, 2015 09:06:34
Друг Кота
Карма: 67
Рейтинг сообщений: 1012
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 18809 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
СКАЗОЧНИК писал(а):
Придется только рисовать самому.
И то всего 8 символов. Остальные использовать англицкие.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Можно сделать библиотеку. В ней задать таблицу русских символов. А дальше в самой библиотеке схожие символы будут браться из дисплея. А те что не похожи будут подгружаться в дисплей динамически и отображаться.
Наврядли на одном экране будет больше чем 8 русских символов отличных от латинских.
Кстати с подсветкой я решил так что подаю питание через ножку МК и с ограничительным резистором примерно 10мА. Светит нормально.
Надо померить какой расход у экрана и думаю тоже его питать через ножку МК но с другого порта чтоб не перегрузить один порт. таким образом можно будет организовать полный спящий режим.
Последний раз редактировалось amd9800 Чт янв 29, 2015 21:03:16, всего редактировалось 1 раз.
Как такое возможно ? Ведь по адресу 0х0000 располагаются векторы . Или Вы блок констант ставите после векторов, но до 0х7F ? Мне кажется, это неудобно. Я все константы загонял в конец памяти.
Или Вы блок констант ставите после векторов, но до 0х7F ?
Да, именно так. Например для 2313 первую страницу, отведённую под вектора не трогаю, остальные 224 (16*2*7) байта можно использовать под константы. При этом ZH всегда 0. Мне так удобнее.
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 30, 2015 15:56:47
Друг Кота
Карма: 67
Рейтинг сообщений: 1012
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 18809 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Я тоже массивы констант стараюсь располагать с начала страницы.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Я так перестал после одного случая : пришлось в Студии отлаживаться по hex'у, исходник потерялся, так Студия так дизассемблировала константы в код, что мне стало тоскливо. Хотя у каждой бабуси -- свои куры-гуси.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения