Форумы Modlabs.net: USB LCD HOWTO - Форумы Modlabs.net

Перейти к содержимому

  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

USB LCD HOWTO

#481 Пользователь офлайн   Vovan_a 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 18
  • Регистрация: 22 Апрель 05

Отправлено 18 Сентябрь 2006 - 21:19

listener
Можно ли к устройству на MC68HC908JB8 подключить текстовый четырехстрочный индикатор WM-C2004M?
0

#482 Пользователь офлайн   XShadow 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 17
  • Регистрация: 13 Октябрь 05

Отправлено 19 Сентябрь 2006 - 10:15

Насчет пайки TQFP. Если есть паяльный фен ну или хотябы строительный(с ним поаккуратнее, можно спалить микруху) то делаем так:

1) Центруем микруху по выводам.
2) 10 раз проверяем правильно ли все стоит
3) Не надемся на глаза!!! Купите луппу х4-х8 и будет вам счастье
4) Если пункт 2 закончился успешно то аккуратно припаиваем крайние выаоды микросхемы чтобы она держалась.
5) Берем легкоплавкий (~100 градусов) припой диаметром 0,1-0,5 мм в виде нитки
6) Кладем этот припой на ножки микрухи прямо ниткой как он есть
7) Берем паяльный фен и греем его до 150 градусов
8) Придерживая припой пинцетом направляем фен на микруху

Припой плавится и запаивает выводы. Из за того что припоя немного и выводы маленькие из за сил поверхностного натяжения припой практически не залипает между контактами. Если вдруг такое произошло то как уже говорилось ранее можно воспользоваться оплеткой.

!!!! Важно !!!!
Плата перед этим должна быть облужена тем же легкоплавким припоем! Хотябы в местах пайки микросхемы. Иначе ничего не выйдет

Удачной пайки!)))

listener
Какую систему можете посоветовать для МК AT91SAM7** ??? Какая из них лучше и по какой больше инфы (желательно на русском но не обязательно)
0

#483 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 19 Сентябрь 2006 - 14:01

Day
Странно это, странно это...
Насчет IRQ - имелся в виду вариант, если кнопка не установлена. (Кнопка должна быть нажата на момент подключения устройства).

Сколько собирал - все работало. Если попробовать на другом компе, устройство найдется? На крайний случай - взять SnoopyPro и посмотреть список устройств на предмет неизвестных.
0

#484 Пользователь офлайн   ZoneRR SSoft 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 383
  • Регистрация: 01 Май 06

Отправлено 19 Сентябрь 2006 - 16:20

XShadow а зачем тебе система? их многооо больше комерческих =) которые ты незаплатив бабок точно уж недостанеш! а свободные... черт его нает... одну бесплатную я выше назвал
0

#485 Пользователь офлайн   Day 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 14 Сентябрь 06

Отправлено 19 Сентябрь 2006 - 20:36

кнопка есть. Посмотрел через Snoopy в Win98 (с установленным драйвером) - unknown usb device :gigi: Значит драйвер встал криво?

Завтра попробую на другом компе

Дайте плиз прямую ссылку на архив с дровами, а то мож я че-нить не то пытаюсь ставить :gigi:

Кстати! У кого встает драйвер в XP - напишите подробно, если не в лом, как вы его устанавливаете. Мож я туплю :idea:
0

#486 Пользователь офлайн   TERM 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 11
  • Регистрация: 15 Сентябрь 06

Отправлено 19 Сентябрь 2006 - 21:48

To listener.
А какой можно графический подключить(но не маленький ибо хочу большой ,чтобы было красяво) чтобы не тормозил и обязательно с синей подсветкой :gigi:. Может его через USB нужно подключать?
0

#487 Пользователь офлайн   XShadow 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 17
  • Регистрация: 13 Октябрь 05

Отправлено 20 Сентябрь 2006 - 06:17

TERM
Исчерпывающее ТЗ)))))))))) :gigi:
0

#488 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 21 Сентябрь 2006 - 11:51

Vovan_a
Да, можно. Если не пугает перспектива написать строчек 50.

XShadow
А я еще до уровня, когда нужны операционки, не доходил.
Опять же, зависит от того, какие задачи будут решаться (универсальных решений не бывает).

И вообще, с задачами такого уровня стоит уже идти на electronix.ru

ZoneRR [SSoft]
Задача интересная. Но, если только нет совершенно непреодолимого желания сделать umass-device, все-таки воспользоваться стоковым устройством. Железка типа: http://www.nix.ru/autocatalog/hdd_accessor...PI-._30092.html стоит порядка 300р без блока питания, и 400-500 с блоком. Комплектуха на это дело будет стоить несколько дороже.

Опять же, чтобы овчинка стоила выделки, нужно брать Hi-Speed чип. Ширпотребных ARM7 с Hi-Speed контроллером пока нет (будет LPC2888, но он должен выйти только через месяц и корпус - TBGA (с шагом 0.5)). Т.е. нужно брать либо CY7C68013 (для него есть готовые примеры), либо ISP1581 (1582, 1583) и к нему управляющий контроллер (ту же атмегу). ISP158x хорош тем, что он оптимизирован под mass storage.

Что касается низкоуровневого управления - все стоковые девайсы пропускают полный набор ATA/ATAPI сомманд. Включая SMART. И грузится с них все замечательно.

Добавлено спустя 6 минут 41 секунду:

С блоками питания, в стоковых девайсах поступают просто. Сам переходник питается от USB. Если к нему подключается 2.5" винт, хватает питания от порта (в настольном компе 1А с порта можно брать легко (хотя и не положено)), а для ноутов, частенько делают два USB разъема на проводе.

Для 3.5" винтов, обычно, прикладывают блок питания. Достаточно компактный (110x45x30мм) , с molex-ом на конце.

Day
Оригинал статьи, со всеми файлами - http://listener.fata...o1/usb-lcd.html

TERM
Все можно, и графический, и цветной, вопрос, сколько на это уйдет сил и времени.
Чего от этого индикатора хочется?
0

#489 Пользователь офлайн   TERM 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 11
  • Регистрация: 15 Сентябрь 06

Отправлено 21 Сентябрь 2006 - 14:04

Хочется чтобы всяких параметров сразу выдавал много и красиво и какое нибуть графическое лого показывал .
0

#490 Пользователь офлайн   Day 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 14 Сентябрь 06

Отправлено 21 Сентябрь 2006 - 15:44

to listener

мда. Ответ исчерпывающий.

Ладно, перечитал ветку и обнаружил что такая беда не только у меня.
Optimus2000 на 16 странице пишет: "юзатся все предпалогалось в ХР, она не ест дрова из того архивчика наотрез отказывается
пробывал на другом ПК где 2к стоит... дрова ствит, но жалуется что устройство работает неправильно"

У меня дрова ставятся на Win 98 и 2000 (но устройство отображается с восклицательным знаком, в свойствах написано что устройство не соответствует своему драйверу. SnoopyPro видит устройство как "unknown" с названием icp motorola)
Под ХР дрова не встают (диспетчер устройств->драйвер->обновить->установка из указанного места->
не выполнять поиск->установка с диска->.../flash-jb8/usbicp.inf->
ok->В указанном месте отсутсвуют сведения об оборудовании.)

Может ли это связано с проблемами бутлоадера?
0

#491 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 21 Сентябрь 2006 - 17:09

Day
Насчет проблем бутлоадера... Не знаю. Я лично пробовал на пяти компах (один под `98), остальные - XP) - все работало без вопросов.
По сравнению с описанным в AN2398 там изменены две команды. (Сейчас, кстати, AN2398 поменялся. Новые исходники еще не смотрел)

Только что проверил - все работает. XP SP2, все апдейты.
Может быть D+ и D- перепутаны? (Вообще, так оно работать не должно, но кто его знает)
0

#492 Пользователь офлайн   Day 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 14 Сентябрь 06

Отправлено 21 Сентябрь 2006 - 17:27

listener
как отформатировать контроллер?
а то я в него залил сначала бутлоадер, потом прошивку через prog08sz.

просто интересно где проблемы: со стороны компа или железки :insane:

Пробовал на другом компе - определяется как неизвестное устройство, дрова не ставятся.
0

#493 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 21 Сентябрь 2006 - 19:15

Day
В prog08sz - erase module

В компе другие USB-железки живут?

Так D+ и D- в порядке?
0

#494 Пользователь офлайн   Vovan_a 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 18
  • Регистрация: 22 Апрель 05

Отправлено 21 Сентябрь 2006 - 21:32

listener

listener сказал:

Vovan_a
Да, можно. Если не пугает перспектива написать строчек 50.

В принципе не очень пугает. Если нетрудно - объясните что нужно написать, а за пример буду очень благодарен. А то устройство собрал, работает, но информация выводится "криво".
0

#495 Пользователь офлайн   Nick_Shl 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 1
  • Регистрация: 24 Сентябрь 06

Отправлено 24 Сентябрь 2006 - 13:51

to listener:
А как продвигаются дела с реализацией клавиатуры?
При создании HTPC например очень востребованным является USB контроллер для мультимедийных кнопок на передней панели.

И вобще как дела за два года продвинулись(в плане реализации всего через USB)?
0

#496 Пользователь офлайн   Day 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 14
  • Регистрация: 14 Сентябрь 06

Отправлено 24 Сентябрь 2006 - 20:02

to listener
D+ и D- в порядке. Пробовал ради эксперимента поменять местами - все-равно определяется как unknown device и дрова ставить из архива не хочет ни в ХР ни в 2К

erase module сделал и залил просто бутлоадер. Кстати бутлоадер последний раз залился раза с 10-го: прошивает секунды две и пишет типа ок, а в show device только FFFF. Другие USB железки (ИК, bluetooth, модем, две флешки) живут номально

где искать косяк - даже не представляю :)
0

#497 Пользователь офлайн   listener 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 618
  • Регистрация: 08 Май 03

Отправлено 26 Сентябрь 2006 - 13:21

Vovan_a
Письмо получил, отвечаю здесь.

Чтобы строки не убегали, нужно поправить константу в файле lcd_hd44870.c, функция lcd_move cursor, то, на что умножается row (0x20 - было взято из datasheet-а на МЭЛТ-овский индикатор). Если смещенеие 12 символов - множитель должен быть 32-12, т.е. просто 20.

Что касается две/четыре/больше строк. В прошивке ограничений нет. Нужно ковырять эмулятор. Основная проблема с ним в том, что для 4х/8ми строчных индикаторов достаточно много разных способов управления: часть индикаторов может представляться как, например, два индикатора 20x2 с раздельными CS на каждый. Когда я писал эмулятор (а написан он был за одно утро), мне некогда было собирать статистику, поэтому было сделано две строки - чтобы гарантировано работало. Если вывод четырех строк производится так же, как и двух - т.е., индикатор содержит один контроллер, можно попробовать поправить в эмуляторе (usbportio-test.cpp) строчку:

строка 350:
было: device->setCursor (x*6, y);
нужно: device->setCursor (x, y);
// оставалось неисправленным от старой версии протокола

Вроде бы все. Если что-то идет не так, не выводится больше двух строк или творится еще что-то непотребное - стоит раскомментировать printf в addLCDCommand и закинуть кусочек того, что он пишет (100-200 команд). (Если интересно разобраться самому, что происходит - можно пораскомментировать и другие printf :beer: )

Добавлено спустя 57 минут 34 секунды:

Nick_Shl
Вообще, разборки с HID - это отдельная песня.
Сам я разобрался, как это делается. Требуется добавить РШВ descriptor, поменять класс устройства и по запросу отдавать Keyboard или ConsumerControl report. Но, объяснять сейчас, как это делается в подробностях, честно говоря, не готов (банально хватает времени). Максимум - могу помочь советом.

Как немного вылезу из аврала - запланированы большие разборки с HID, например хочется сделать драйвер к LCD на Logitech diNovo (ночью заснифил протокол - жуть), да и бездрайверное устройство хочется сделать.

Добавлено спустя 2 минуты 5 секунд:

Day
Сам не представляю. В общей сложности, на JB8 я собрал порядка десятка устройств и какие-то проблемы бали только первый раз, когда я пожадничал на резистор параллельно кварцу (это была фантастика - пока держишь устройство в руках - работает, кладешь на стол - перестает), но в этом случае и обычный программатор не работал.
0

#498 Пользователь офлайн   Vovan_a 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 18
  • Регистрация: 22 Апрель 05

Отправлено 26 Сентябрь 2006 - 21:33

listener
Спасибо за ответ. прошивку исправил. Все выводится в принципе нормально. Но при использовании Вашего эмулятора, то теряется последний символ в каждой строке (как писал asahi2 на стр.13). При использовании эмулятора Ant[Y] (на стр.15) - все нормально. это что касается вывода двух строк.
Судя из даташита на мой индикатор третья строка есть продолжение первой, а четвертая - второй. Информация пока выводится на первой и третьей строках.
И еще вопрос. Чем можно перекомпилировать usbportio-test.cpp?
0

#499 Пользователь офлайн   hd44780 

  • Junior
  • Pip
  • Группа: Пользователи
  • Сообщений: 12
  • Регистрация: 26 Август 06

Отправлено 27 Сентябрь 2006 - 18:56

Вопрос по PDIUSB12D.
Комп не определяет строковое имя устройства. PID, VID определяет нормально.
Дескриптор устройства:
// стандартный дескриптор устройства. Page 119
USB_DEVICE_DESCRIPTOR DeviceDescr =
{
sizeof ( USB_DEVICE_DESCRIPTOR ), // bLength == 18 == 12h
USB_DEVICE_DESCR_TYPE, // bDescriptorType == 0x01
0x10, 0x01, // bcdUSB (USB 1.00)
0, // bDeviceClass
0, // bDeviceSubClass
0, // bDeviceProtocol
EP0_PACKET_SIZE, // bMaxPacketSize0 == 16
0x71, 0x04, // idVendor (0471h) - Philips
0x67, 0x06, // idProduct (0666h) - PDIUSBD12
0x01, 0x00, // bcdDevice
1, // iManufacturer
2, // iProduct
3, // iSerialNumber
1 // bNumConfigurations
};

Дескрипторы строк и массив из них:

// дескриптор строки (4 B)
flash byte USBString[] =
{
4, // bLength
USB_STRING_DESCR_TYPE, // bDescriptorType == 03h
0x09, 0x04//SWAP(0x0409) // wLANGID
};

// дескриптор строки производителя ( 16b )
// "Starlab"
flash byte deviceManufacturer[] =
{
16,
USB_STRING_DESCR_TYPE, // 03h
'S', 0, 't', 0, 'a', 0,
'r', 0, 'l', 0, 'a', 0, 'b', 0
};

// дескриптор строки продукта ( 22 B)
// "USB-LCD v2"
flash byte deviceProduct[] =
{
22,
USB_STRING_DESCR_TYPE, // 03h
'U', 0, 'S', 0, 'B', 0, '-', 0, 'L', 0,
'C', 0, 'D', 0, ' ', 0, 'v', 0, '2', 0
};

// набор дескрипторов
// 1, // iManufacturer
// 2, // iProduct
// 3, // iSerialNumber
byte *StringDescr[] =
{
USBString, // 0
deviceManufacturer, // 1
deviceProduct, // 2
deviceProduct, // 3
USBString, // 4
USBString, // 5
USBString, // 6
USBString, // 7
USBString, // 8
USBString, // 9
USBString // 10
};

Дескрипторы строк позаимствованы у товарища listener'а.

Анализ показал, что комп миллион раз спрашивает строку 0 (как я понимаю, это пустышка), а все остальные - не спрашивает вообще.
Лог выдаваемый устройством (лог расшифрован):

I=0001h (ep0_rxdone) EP0 = 21h
Setup: 80 06 00 01 00 00 40 00
bmRequestType = 80
bRequest = 06
wValue = 0100h - просит дескриптор 01h (Device)
wIndex = 0000h
wLength = 0040h - просит 64 байт

I=0002h EP0tx=2,1 (1=USB_TRANSMIT) EP0tx< EP0txN
I=0040h
I=0001h (ep0_rxdone) EP0 = 21h
Setup: 00 05 01 00 00 00 00 00 - set Address

I=0002h EP0tx=0,0 (0=USB_IDLE)
I=0001h (ep0_rxdone) EP0 = 21h
Setup: 80 06 00 01 00 00 12 00
bmRequestType = 80
bRequest = 06
wValue = 0100h - просит дескриптор 01h (Device)
wIndex = 0000h
wLength = 0012h - 18

I=0002h EP0tx=2,1 (1=USB_TRANSMIT) EP0tx< EP0txN
I=0002h EP0tx=0,0 (0=USB_IDLE)
I=0001h (ep0_rxdone) EP0 = A1h
Setup: 80 06 00 02 00 00 09 00
bmRequestType = 80
bRequest = 06
wValue = 0200h - просит дескриптор 02h (Config)
wIndex = 0000h
wLength = 0009h = 9

I=0002h EP0tx=0,0 (0=USB_IDLE)
I=0001h (ep0_rxdone) EP0 = 41h
I=0001h EP0 = 21h
Setup: 80 06 00 03 00 00 FF 00
bmRequestType = 80
bRequest = 06
wValue = 0300h - просит дескриптор 03h (String 0)
wIndex = 0000h
wLength = 00FFh = 255

I=0002h EP0tx=0,0 (0=USB_IDLE)
I=0001h (ep0_rxdone) EP0 = 41h
I=0001h (ep0_rxdone) EP0 = 21h
Setup: 80 06 00 02 00 00 FF 00
bmRequestType = 80
bRequest = 06
wValue = 0200h - просит дескриптор 02h (Config)
wIndex = 0000h
wLength = 00FFh = 255 байт
I=0002h EP0tx=30,1 (1=USB_TRANSMIT) EP0tx>
I=0002h EP0tx=14,1 (1=USB_TRANSMIT) EP0tx< EP0txN
I=0002h EP0tx=0,0 (0=USB_IDLE)
I=0001h (ep0_rxdone) EP0 = 41h
I=0001h (ep0_rxdone) EP0 = 21h
Setup: 80 06 00 03 00 00 FF 00
bmRequestType = 80
bRequest = 06
wValue = 0300h - просит дескриптор 03h (String 0)
wIndex = 0000h
wLength = 00FFh = 255

I=0002h EP0tx=0,0 (0=USB_IDLE)
I=0001h EP0 = A1h
Setup: 80 06 00 03 00 00 FF 00
bmRequestType = 80
bRequest = 06
wValue = 0300h - просит дескриптор 03h (String 0)
wIndex = 0000h
wLength = 00FFh = 255

I=0002h EP0tx=0,0 (0=USB_IDLE)
I=0001h (ep0_rxdone) EP0 = 41h
I=0080h - отключение.

в чем м.б. дело?
0

#500 Пользователь офлайн   AntY 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 126
  • Регистрация: 02 Январь 05

Отправлено 27 Сентябрь 2006 - 19:50

Vovan_a сказал:

И еще вопрос. Чем можно перекомпилировать usbportio-test.cpp?


Я компилировал с помощью VCToolkit, сливается с сайта мелкомягких (~32мб), библиотеки брал от Visual Studio
0

Поделиться темой:


  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

6 человек читают эту тему
0 members, 6 guests, 0 anonymous users