Я для батарейного делал от ноги через кондер на два последовательных диода и таким образом генерировал отрицательное напряжение чтоб от 2-х вольт он работал - все было прекрасно и шимом управлялось тож нормально
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
...хоть там и потребление должно быть мизерное, но через транзистор спокойнее чтоль...
По pdf на atmega88v - выход по порту 40mA max. При R4=680 - ток 7,4mA (max), что более чем с 5-ти кратным запасом. К тому же, возможно номинал R4 придётся увеличивать. Но на диоде с V0 на VDD не экономьте.
Именно в вашем. Есть вероятность, что при выключении, напряжение на VDD спадёт быстрее, чем на V0 (а по документации, напряжение на V0 не может превышать VDD).
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Друзья, помогите пожалуйста разрулить странный глюк с кодом. Дисплей 1602 HD44780, камень - Atmega8. Странность в том, что он однозначно запускается и работает, только при определенной и единственной конфигурации портов/пинов. "Дисплейный" раздел кода: Спойлер
Поработаем немного компилятором. Первым делом нужно подставить значения из #define'ов:
Код:
PORTB&=~1<<2;
Теперь вспомним про приоритеты операций. Сначала выполняется инверсия (~), потом - сдвиг (<<), и, наконец, присваивание с побитовым И (&=). Итого, получается так:
Код:
PORTB &= ((~1) << 2);
Посчитаем выражение в правой части: (~1) = 0b11111110, ((~1) << 2) = 0b11111000.
Код:
PORTB &= 0b11111000;
Кажется, это не то, чего хотелось от строчки
Код:
LCD_RS_PORT&=~LCD_RS;
Вывод: выражения в #define нужно заключать в скобки!
Код:
#define LCD_RS (1<<2)
_________________ Этот пост оказался полезен? Не поленись, нажми слева! Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
*Trigger* Вот спасибо вам сердечное! Мало, что все заработало, так вы еще потрудились и объяснить суть проблемы. Жаль, что только плюсами могу отблагодарить.
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн дек 03, 2018 08:44:04
Родился
Зарегистрирован: Ср мар 09, 2011 01:17:16 Сообщений: 9
Рейтинг сообщения:0
Граждане-товарищи а не кто не встречал готовую библиотеку дабы выводить большие цифры. В две или три строки. Под андурино гуглиться без проблем, а вот под просто под avr-gcc не чего не могу найти.
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вт июн 04, 2019 20:36:40
Открыл глаза
Зарегистрирован: Ср мар 15, 2017 18:52:10 Сообщений: 43
Рейтинг сообщения:0
Народ, кто рисовал свои символы - как заставить символ отрисовываться на полную высоту в 8 точек? Что бы я ни делал, у меня нижняя строка в матрице символа отображается пустой и размер вместо 5x8 точек оказывается 5x7. Пишу для Atmega8 в WinAVR (компилятор avr-gcc). Для управления LCD используется библиотека от Peter Fleury (в прикрепленном архиве). Пример моего кода: Спойлер
// Загружаем свои символы в CGRAM lcd_command(0x40); // Переходим в CGRAM for(i=0; i<8; i++) { lcd_data(lines[i]); } lcd_command(0x80); // Возвращаемся в DDRAM
while(1) { // Переходим на начальную позицию и вызываем записанный символ. lcd_gotoxy(0, 0); lcd_putc(0); } return 0; }
В итоге получается вот так:
Как я понимаю, нижняя строка остается зарезервирована под курсор, хотя он отключен. При этом некоторые символы вроде заполнения и строчной "j" отрисовываются на все 8 точек, а значит, проблема не в дисплее. Что я делаю не так?
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вт июн 04, 2019 21:37:00
Открыл глаза
Зарегистрирован: Ср мар 15, 2017 18:52:10 Сообщений: 43
Рейтинг сообщения:0
На реальном. В протеусе еще не так заметно - в нем все символы сжаты до 5x7, включая заполнение, а в железе эта разница в одну строку в глаза бросается. Дисплей типа такого, только обозначен как "MJ1602C" (документации по нему не нашел, какая-то подделка другой подделки):
// Загружаем свои символы в CGRAM lcd_command(0x40); // Переходим в CGRAM for(i=0; i<8; i++) { lcd_data(lines[i]); }
// Переходим на начальную позицию и вызываем записанный символ. lcd_gotoxy(0, 0); lcd_putc(0);
while(1) { }
Есть предположение, что в основном цикле вы постоянно выводите символ в позицию (0,0), а так как курсор отключен, то он и затирает нижнюю строку. А на самом деле символ выводится полностью.
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср июн 05, 2019 09:50:32
Открыл глаза
Зарегистрирован: Ср мар 15, 2017 18:52:10 Сообщений: 43
Рейтинг сообщения:0
serg_svd, не, дело точно не в этом, пробовал по-всякому. В общем, без малейшего понятия, что это такое было - переписал проект заново, и символы стали рисоваться как положено.
Может, при компиляции что-то шло не так или какой-то аппаратный баг словил, даже не знаю. На забугорном форуме нашлась такая же проблема с игнорированием дисплеем команды "0x0C": https://www.avrfreaks.net/forum/lcd-and-cursor-onoff/, но как всегда: "I will post the results", - и тишина с 2007 года
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср июн 05, 2019 10:54:23
Сверлит текстолит когтями
Карма: 15
Рейтинг сообщений: 212
Зарегистрирован: Вт мар 31, 2015 22:56:07 Сообщений: 1298 Откуда: Мы люди простые, живем в лесу, на пенек молимся
Рейтинг сообщения:0
Что-то, видимо, в библиотеке. Советую разобраться (там вовсе не рокетсайнс) и подправить.
у Peter Fleury в библиотеке есть один баг, но с описанной проблемой он никак не связан. баг в том, что при вычислении адреса ячейки ОЗУ для дисплеев с числом строк больше 2 он использует не битовое ИЛИ, а обычное суммирование. Для двух строк выходит так, что переполнение при сложении не возникает, а для остальных получается так, что возникает перенос битов при суммировании... если заменить + на | - все начинает работать отлично. это просто к слову
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения