Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT90USB
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Fedor Budylin
Добрый день.

Изучаю контроллер AT90USB82. Для начала нужно что бы просто устройство определялось как USB. Задача сверх типичная, но почему-то не могу найти подходящего примера. Пытаюсь разобраться с атмеловским примером AT90USBxxx USB device HID generic demonstration, но как-то не очень получается sad.gif
Буду благодарен за ссылки на работающий пример USB устройства на AT90USB82.

В дальнейшем задача обеспечить передачу данных между USB и памятью EEPROM. Если бы нашлось что-то похожее, было бы вообще супер.

Тему создал в этом разделе, потмоу что я совсем начинающий и сразу сорри за собственный тупизм если что.
Заранее спасибо.
V_N
Вот ссылка пример правда на AT90USB162 но это не существенно
http://www.pjrc.com/teensy/index.html
kimstik
Посмотри тут http://www.fourwalledcubicle.com/LUFA.php
Fedor Budylin
Цитата
Вот ссылка пример правда на AT90USB162 но это не существенно
http://www.pjrc.com/teensy/index.html

В этом примере используется регистр UHWCON. Но в МК AT90USB82(162) такого регистра нету вообще. За что отвечает этот регистр в других мк (ATmega32U6, AT90USB646, AT90USB128) ?

Прошивая этот пример, я надеюсь на корректное распознавание устройства. Но фигу sad.gif ConnectionStatus: DeviceFailedEnumeration. Почему так и как быть ?
mikesm
Цитата(Fedor Budylin @ Apr 17 2009, 12:52) *
В этом примере используется регистр UHWCON. Но в МК AT90USB82(162) такого регистра нету вообще. За что отвечает этот регистр в других мк (ATmega32U6, AT90USB646, AT90USB128) ?

Прошивая этот пример, я надеюсь на корректное распознавание устройства. Но фигу sad.gif ConnectionStatus: DeviceFailedEnumeration. Почему так и как быть ?

У Atmel на страничке для AT90USB162 есть живые примеры.
http://www.atmel.com/dyn/products/tools_ca...sp?tool_id=4440
Единственное, что нужно соблюдать, подключить кварц 16Мгц. Все определяется сразу.
Fedor Budylin
При попытке открыть hex файл Atmel Flip выдаёт ошибку.

В чем может быть дело ?
Fedor Budylin
Знающие, помогите!
Я так и не смог прошить примеры с предложенной странички sad.gif
И так и не разобрался, почему устройство не определяется.
Всё-таки, какие регистры должно минимум определить, что бы устройство определилось? В чем заключается процедура енумерайшон ?
Alex11
Вот рабочий проект под 90USB162. Попробуй загрузить. Определяться должен, для дальнейшего нужен драйвер.
Нажмите для просмотра прикрепленного файла
Halfback
Alex11
скачал в том числе и Ваш проект - у меня не катит. VIP и PID устройство возвращает нулевые (если вообще возвращает ибо смотрел осциллографом - сложно было понять что там к чему). Частота кварцованная и равна 8 МГц. В фьюзах делитель на 8 не стоит (да и пробовал ставить - та жа ерунда). В общем почему не работает так и не могу разобраться. Сопротивления в линии 22 Ома, подтяжка VBUS к D- через 2,7кОм (думаю такой номинал не криминален ибо обычно ставят 1,5к). Связи проверил - всё звониться. Контроллер в остальном рабочий.
Alex11
Делитель на 8 там противопоказан, так что здесь правильно. Подтяжка должна быть 1.5к - это по стандарту, лучше ему следовать. Скорее всего, у Вас что-то совсем не завелось, т.к. виндюки, если просто подтянуть D+ к 3.3В как раз и скажут, что устройство нашли, но VID, PID = 0.
Halfback
Alex11
не, резистор подтянут между VBUS (питание +5В от USB) и D-
Винда говорит что устройство найдено но в диспетчере на это неизвестное устройстсво видно, что VID и PID винда от МЦУ не получает (нули).
Попробую 1,5 кОм. Но думаю врядли поможет unsure.gif
Схему включения БЕЗ подтягивающего резистора прикрепил.
Ядро МЦУ питается от линейного ИП 3,3В.
topoR
Цитата(Fedor Budylin @ Apr 28 2009, 16:35) *
Знающие, помогите!
Я так и не смог прошить примеры с предложенной странички sad.gif
И так и не разобрался, почему устройство не определяется.
Всё-таки, какие регистры должно минимум определить, что бы устройство определилось? В чем заключается процедура енумерайшон ?


FLIP работает, если Вы взяли чип с завода, и не стирали его, тогда у чипа есть встроеный загрузчик, и при подключении к компьютеру
чипа, он определяется как конкретное устройство, и даже пытается зацепить драйверы.
Если Вы затерли чип, то естественно он определяться не будет и его нужно прошивать программатором через ISP или DW.
Чип должен соответствовать названию софта, которое для него предназначено. Нельзя софт под 162 модель прошивать
в 82 и т.д.
Фьюзы должны быть установлены так, как рекомендуется в софте для примера, обычно все расписано.
И наконец, насколько я знаю примеры расчитаны на кварц 16МГц.
Чтобы можно было Вам помочь, выложите схему и фото Вашей платы, а также подробнее что Вы пытались сделать.
Halfback
Сделал подтяжку через 1,7кОм к D+ - определилось. ID и PID вроде верные.
И это на плате где МЦУ тактируется от внутреннего RC-генератора 8МГц
Alex11
подтяжка к D- приводит к определению устройства как Low Speed, в моем проекте на это ничего не рассчитано. Тактироваться лучше от кварца, стабильность RC явно противоречит спецификации USB. Если и работает, то будет очень неустойчиво.
777777
Цитата(Halfback @ Jun 12 2009, 15:41) *
Сделал подтяжку через 1,7кОм к D+ - определилось. ID и PID вроде верные.
И это на плате где МЦУ тактируется от внутреннего RC-генератора 8МГц

Я фигею.
Во-первых, для подтяжки есть внутренний резистор, включаемый битом DETACH в регистре UDCON. Вы, вообще, даташит читали?
Во-вторых, тактироваться можно только от кварца, RC-генератор не обеспечит нужной точности, уж это должно быть очевидно и без даташита.
xelax
Цитата(777777 @ Jun 15 2009, 10:19) *
Во-вторых, тактироваться можно только от кварца, RC-генератор не обеспечит нужной точности, уж это должно быть очевидно и без даташита.


Можно и от RC тактированться, но с постоянной подкалибровкой... Но лучше от кварца...
777777
Цитата(xelax @ Jun 15 2009, 12:50) *
Можно и от RC тактированться, но с постоянной подкалибровкой...

Что означает это выражение? Контроллер должен постоянно проверять свою тактовую частоту? А как, позвольте спросить?
xelax
Цитата(777777 @ Jun 15 2009, 13:45) *
Что означает это выражение? Контроллер должен постоянно проверять свою тактовую частоту? А как, позвольте спросить?


Производить её измерение, например с помощью низкочастотного кварца, если таковой имеется.
Savrik
Цитата(Fedor Budylin @ Mar 30 2009, 12:08) *
Изучаю контроллер AT90USB82. Для начала нужно что бы просто устройство определялось как USB. Задача сверх типичная, но почему-то не могу найти подходящего примера. Пытаюсь разобраться с атмеловским примером AT90USBxxx USB device HID generic demonstration, но как-то не очень получается sad.gif
Буду благодарен за ссылки на работающий пример USB устройства на AT90USB82.

1. Если нужен простой обмен данными, можно воспользоваться атмеловским примером виртуального COM-порта - мост UART-USB (CDC). Там намного проще можно разобраться с основами.
Ссылки: Перечень на gaw.ru, это ссылка на сайт Атмела, там есть ссылка на проект "USB CDC Demonstration UART to USB Bridge".
2. Если используете для AT90USB bootloader для загрузки программы(не уверен насчет AT90USB82, нужно проверить фьюзы), но на AT90USB162 я делал так: фьюз BOOTRST оставьте незапрограммированным, HWBE запрограммируйте, а ножку PD7 закоротите на землю. Теперь, после нажатия RESET, контроллер перейдет в бут и его можно обнаружить в Flip. Это все касается случая, когда вы изменили состояние чипа с завода. Естественно, бутлоадер не должен быть затронутsmile.gif
Halfback
Savrik
Цитата
можно воспользоваться атмеловским примером виртуального COM-порта - мост UART-USB (CDC). Там намного проще можно разобраться с основами.

для неискушенного в программировании человека атмеловский пример - жуткая морока. Так что считаю это плохим советом. Разбираюсь в сырцах товарища Alex11 - там намного понятнее. За что ему огромное спасибо! На счет внутреннего подтягивающего резистора - согласен, тут дал маху. Надо внимательнее даташит читать.

Кстати вопрос: когда подключаю шнур USB при отсутствии питания МЦУ (МЦУ питается отдельно 3,3В) то девайс определяется (получает VID, PID и наименование) - почему так? Может кто разжевать?
chetr
Alex11 - огромное человеческое спасибо! Была аналогичная проблема - твои исходники прошились. Устройство обнаружено - SCRUT. Остался вопрос будет ли она корректно работать для AT90USB82 ? И чего то не нашел как менять VID и PID.

Сорри!!! файлик usb_commun.h всё отлично!
Alex11
Если в память влезет, то должен. Там нет отличий в структуре.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.