Муфты электромонтажные от производителя Fucon

LCD2USB - ЖК дисплей с интерфейсом USB. Часть 2. Программы

HD44780

Till Harbaum

Окончание
Начало читайте здесь:

Часть 1.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Загрузка прошивки в контроллер

Если вы знакомы с программированием для Atmel, вы, вероятно, знаете что делать. Makefile в папке lcd2usb/firmware/Makefile подразумевает, что вы используете простой адаптер для параллельного порта, совместимый с STK200.

Подключите собранное устройство (без дисплея) к ПК через USB. Устройство не будет определено до тех пор, пока в нем не будет прошивки. Подключите устройство через кабель программирования к ПК с ОС Linux и установленным uisp tool, после чего напечатайте "make fuse; make flash-nodep", чтобы загрузить прошивку в контроллер.

Если Makefile не сработает, вы можете также прошить устройство вручную, используя avrdude и вышеупомянутый совместимый с STK200 адаптер принтерного порта со следующими параметрами:

avrdude -c stk200 -p atmega8 -U lfuse:w:0x9f:m -U hfuse:w:0xc9:m -U flash:w:firmware-avrusb.hex

Чтобы вручную загрузить прошивку, используя usbasp, просто используйте следующую команду:

avrdude -c usbasp -p atmega8 -U lfuse:w:0x9f:m -U hfuse:w:0xc9:m -U flash:w:firmware-avrusb.hex

Конечно, вы можете использовать другую систему программирования AVR, но вам вероятно придется сделать небольшие изменения в файле Makefile.

Описание протокола

Для простоты, LCD2USB использует только управляющие USB сообщения. Более эффективная и быстрая групповая пересылка доступна только для высокоскоростных устройств. Управляющее сообщение для низкоскоростных устройств состоит из 8 байт. Первый байт указывает тип управления, его значения фиксированы для команд заданных продавцом устройства (производителем). LCD2USB использует его для своих целей (не заданные производителем команды используются для запроса номера и ID устройства и т.д.). Оставшиеся семь байт представляют собой: тип запроса (1 байт), значение (2 байта), индекс (2 байта) и поле длинны (2 байта) для данных, передаваемых с контрольной передачей. Протокол LCD2USB не посылает дополнительных данных, поэтому, из соображений совместимости, последние два байта должны быть нулевыми. Оставшиеся четыре байта (2 байта значения и 2 байта индекса) оставлены для передачи данных. Таким образом, за одну транзакцию передаются четыре байта. Это могут быть четыре байта команд или четыре байта данных для HD44780.

Подробное описание байта запроса

Бит      7 6 5 4 3 2 1 0
Название C C C T T R L L

CCC = тип команды

0 (000) = эхо
1 (001) = команда
2 (010) = данные
3 (011) = установить
4 (100) = получить
5 (101) = зарезервирован для использования в будущем
6 (110) = зарезервирован для использования в будущем
7 (111) = зарезервирован для использования в будущем

TT = id назначения
R  = зарезервирован для использования в будущем, установлен в 0
LL = число байт в передаче – 1

ID назначения имеет разный смысл для разных запросов. Для передачи команд и данных он представляет двухбитовую битовую карту, показывающую, к какому из двух возможных контроллеров, поддерживаемых интерфейсом LCD2USB, адресован запрос. Один и тот же запрос может быть адресован одновременно двум контроллерам (например для установки символов заданных пользователем).
Для операций set и get ID назначения определяет значение для установки или получения. В настоящий момент поддерживаются следующие значения: 

set 0 - установить яркость
set 1 - установить контраст
get 0 - получить версию прошивки (msb = основная версия, lsb = промежуточная версия)
get 1 - получить button bitmap
get 2 - получить обнаруженные контроллеры

Дополнительные подробности вы найдете в исходном коде тестовой программы, находящейся в архиве с прошивкой для LCD2USB.

Программа

Первоначально интерфейс LCD2USB был разработан для использования с lcd4linux. В то же время LCD Smartie и LCDProc также были усовершенствованы, и теперь поддерживают интерфейс LCD2USB. В архив с прошивкой для LCD2USB включено маленькое демо приложение, которое можно использовать для дальнейшего портирования LCD2USB на другие платформы. В настоящий момент эта программа поддерживается Linux, MacOS X и Windows.

Использование LCD2USB под Windows

Harald Körfgen написал плагин к LCD Smartie для LCD2USB, тем самым окончательно сделав возможным использование LCD2USB в Windows. Ниже представлено то, что он сам пишет о своем плагине:
LCD2USB-smartie.zip содержит все необходимые файлы с исходным кодом для компилирования драйвера с помощью Microsoft Windows Server 2003 R2 Platform SDK, Microsoft Visual C++ 2005 Express Edition и LibUsb-Win32. В результате компиляции получится файл LCD2USB.DLL.

Для того чтобы использовать драйвер, в системе должна быть установлена libusb-win32 и LCD2USB.DLL должна быть помещена в папку «displays» программы LCD Smartie. В результате, устройство должно быть обнаружено автоматически. Драйвер тестировался только для дисплея 20x4.

Устранение неисправностей

Проблема: Сначала устройство работает нормально, Linux определяет его корректно, но попытка обратиться к нему из тестовой программы вызывает различные сообщения об ошибках.
Решение: Проверьте, действительно ли вы запускаете тестовую программу из под пользователя root, так как стандартный пользователь может не иметь необходимых прав доступа к аппаратным средствам LCD2USB.

Проблема: Устройство не определяется корректно. Linux сообщает об ошибке, типа «устройство не приняло адрес» в системном журнале, но на ЖК дисплее появилось сообщение инициализации (LCD2USB VXX.XX).
Решение: USB интерфейс не работает вообще. Ваш AVR контроллер, скорее всего, работает не на той скорости. Убедитесь, что fuse биты установлены корректно, если это не поможет, значит в устройстве используются слишком медленные стабилитроны (смотрите следующую проблему).

Проблема: Устройство не определяется корректно. Linux сообщает об ошибках наподобие «ошибка чтения дескриптора устройства -71» в системном журнале.
Решение: Устройство не полностью работоспособно и передача данных по USB неустойчива. Причиной этого часто бывают «медленные» сильноточные стабилитроны. Можно попробовать просто удалить их. После этого ваше устройство будет работать нормально, при условии что компьютер выдержит напряжение 5 В на линиях данных USB. (Большинство компьютеров, особенно старых, выдерживают). В крайнем случае, нужно будет найти более быстродействующие стабилитроны.

Загрузки

  • Версия 1.08 (avrusb)/2.08 (usbtiny): lcd2usb-2007-10-13.zip
  • LCD Smartie драйвер
    • Готовая для использования LCD2USB.dll должна быть установлена в папку "displays" программы LCD Smartie
    • Архив с исходным кодом для драйвера LCD2USB-smartie.zip

Ссылки

harbaum.org

Перевод: [IMG]/i/Image/wand.gif[/IMG] по заказу РадиоЛоцман

На английском языке: LCD2USB. Part 2

15 предложений от 15 поставщиков
Дисплей LCD2004 символьный 20 символов 4 строки, желто-зеленая подсветка. Контроллер HD44780. Питание: 5 В.
AliExpress
Весь мир
Модуль Aokin LCD 1602 1602 синий зеленый экран 16x2 символа ЖК-дисплей модуль HD44780 контроллер синий светильник для Arduino
40 ₽
Триема
Россия
HD44780 PC
365 ₽
ТаймЧипс
Россия
HD44780A65
Hitachi
по запросу
МосЧип
Россия
HD44780SC25
Hitachi
по запросу
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя