реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> AT90USB1286, виртуальный COM-порт
Xenia
сообщение Apr 1 2008, 13:30
Сообщение #16


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Visor @ Jan 12 2008, 11:12) *
Нашел ошибку в коде примера, неверный PLL clock Prescaler для частоты 16МГц, поправил.
Устройство стало определяться Виндовс, как "Контроллеры универсальной последовательной шины USB / Неизвестное устройство".


Укажите, пожалуйста, где вы это исправили! У меня та же проблема, только я ошибки в упор не вижу.

В config.h переопределила на частоту 16 МГц:
#define FOSC 16000

В хидере pll_drv.h все написано совершено правильно:
#elif (FOSC==16000)
#define Pll_start_auto() Start_pll(PLLx03)
где PLLx03 определено выше как:
#define PLLx03 ( (1<<PLLP2) | (0<<PLLP1) | (1<<PLLP0) )

Так и быть должно согласно даташиту:
Табл. 6-13
XTAL=16 MHz
Clock Devision Factor=8
PLLP2=1
PLLP1=0
PLLP0=1

Где здесь ошибка?

Сообщение отредактировал Xenia - Apr 1 2008, 13:31
Go to the top of the page
 
+Quote Post
Visor
сообщение Apr 2 2008, 04:38
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(Xenia @ Apr 1 2008, 21:30) *
Укажите, пожалуйста, где вы это исправили! У меня та же проблема, только я ошибки в упор не вижу.

Ошибка оказалась в даташите, а не в софте.

Цитата(Xenia @ Apr 1 2008, 21:30) *
Так и быть должно согласно даташиту:
Табл. 6-13
XTAL=16 MHz
Clock Devision Factor=8
PLLP2=1
PLLP1=0
PLLP0=1

Где здесь ошибка?

В даташите (в моём по крайней мере):
Table 6-13. PLL input prescaler configurations
Код
PLLP2 PLLP1 PLLP0     Clock Division Factor     External XTAL required for USB
                                                            operation (MHz)
  0     0      0            Reserved                            -
  0     0      1            Reserved                            -
  0     1      0            Reserved                            -
  0     1      1               4                                8
  1     0      0            Reserved                            -
  1     0      1            Reserved                            -
  1     1      0               8                               16
  1     1      1            Reserved                            -
Go to the top of the page
 
+Quote Post
Xenia
сообщение Apr 2 2008, 12:08
Сообщение #18


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Visor @ Apr 2 2008, 08:38) *
Ошибка оказалась в даташите, а не в софте.


А у вас какой МК?

Скачала последний даташит с сайта ATMEL:
[PDF] AT90USB1286, AT90USB1287, AT90USB646, AT90USB647 (455 pages, revision G, updated 03/08)

Действительно, в марте появились изменения. Однако вот что там сказано:

External XTAL required for USB operation (MHz) = 16
Clock Division Factor = 8

PLLP2=1, PLLP2=0, PLLP2=1 (1)
Note: 1. For AT90USB128x only. Do not use with AT90USB64x.

PLLP2=1, PLLP2=1, PLLP2=0 (2)
Note: 2. For AT90USB64x only. Do not use with AT90USB128x.

У меня AT90USB647, значит я и виновата, что использовала программу для AT90USB1287. Но ведь и в голову не могло придти, что в этом месте может быть расхождение!

Сообщение отредактировал Xenia - Apr 2 2008, 12:09
Go to the top of the page
 
+Quote Post
Visor
сообщение Apr 2 2008, 14:15
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(Xenia @ Apr 2 2008, 20:08) *
А у вас какой МК?

Скачала последний даташит с сайта ATMEL:
[PDF] AT90USB1286, AT90USB1287, AT90USB646, AT90USB647 (455 pages, revision G, updated 03/08)

Действительно, в марте появились изменения. Однако вот что там сказано:

External XTAL required for USB operation (MHz) = 16
Clock Division Factor = 8

PLLP2=1, PLLP2=0, PLLP2=1 (1)
Note: 1. For AT90USB128x only. Do not use with AT90USB64x.

PLLP2=1, PLLP2=1, PLLP2=0 (2)
Note: 2. For AT90USB64x only. Do not use with AT90USB128x.

У меня AT90USB647, значит я и виновата, что использовала программу для AT90USB1287. Но ведь и в голову не могло придти, что в этом месте может быть расхождение!

Я работаю с AT90USB1286 (в теме указан wink.gif )
Использую даташит 7593D–AVR–07/06, т.е. ревизия D, когда я начинал была последняя.
Дак вы поправили, заработало?
У меня пример заработал, проблема была хардверная.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Apr 2 2008, 22:08
Сообщение #20


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Visor @ Apr 2 2008, 18:15) *
Я работаю с AT90USB1286 (в теме указан wink.gif )
Использую даташит 7593D–AVR–07/06, т.е. ревизия D, когда я начинал была последняя.


А я действовала по ревизии А (7593A-AVR-02/06) - там было 101. Вашу ревизию D я тоже нашла, и действительно в ней написаное иное - 110. Но ведь ревизия G (7593G-AVR-03/08) - последняя и только что вышла, и согласно ей для AT90USB128 права ревизия А, а для AT90USB64 права ревизия D.
Но ведь у вас AT90USB128 и по ревизии D у вас заработало. Выходит, что последнняя ревизия снова вернулась к первоначальному ошибочному утверждению относительно AT90USB128?

Цитата(Visor @ Apr 2 2008, 18:15) *
Дак вы поправили, заработало?


Да, заработало. Вам огромное спасибо!

Сообщение отредактировал Xenia - Apr 2 2008, 22:09
Go to the top of the page
 
+Quote Post
Visor
сообщение Apr 3 2008, 02:55
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(Xenia @ Apr 3 2008, 06:08) *
Но ведь у вас AT90USB128 и по ревизии D у вас заработало. Выходит, что последнняя ревизия снова вернулась к первоначальному ошибочному утверждению относительно AT90USB128?

Нет, у меня работает с 101.

Цитата(Xenia @ Apr 3 2008, 06:08) *
Да, заработало. Вам огромное спасибо!

Я то причём. smile.gif
Go to the top of the page
 
+Quote Post
Xenia
сообщение Apr 3 2008, 08:57
Сообщение #22


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Visor @ Apr 3 2008, 06:55) *
Нет, у меня работает с 101. Я то причём. smile.gif


Если бы не ваш пост, я бы никогда не полезла искать последнюю ревизию даташита. А самой найти такую ошибку невозможно.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Apr 4 2008, 11:13
Сообщение #23


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



На WinXP работает, а на Vista не загружается драйвер. Что делать?

В обеих случаях CDC использует фирменный драйвер от Microsoft под названием UsbSer.sys. При стандартной установке системы этот драйвер не ставится, но он имеется в базе driver.cab и оттуда при необходимости ставится в директорию System32\drivers\. Обычно этот драйвер используют многочисленные USB-модемы, для коих целей он и составлялся.
Проект at90usb128-demo-cdc-1_0_3.zip тоже базируется на этом драйвере, поэтому для его установки прилагается только inf-файл, который использует стандартный драйвер UsbSer.sys. Но вот беда - под Vista этот inf-файл не срабатывает.
Вот здесь - http://forums.microsoft.com/MSDN/showpost....51&siteid=1 - на микрософтовском форуме, народ ругается про то же самое. А кто-то составляет свои версии inf-файла - http://blog.bigreat.org/2007/11/25/at91sam...-windows-vista/ (правда не для AT90USB128, а для AT91SAM7).
Вопреки опасениям, UsbSer.sys в системе Vista имеется - его дата 02.11.2006 и он длинее на 2560 байт того, который поставляется с WinXP.

Отзовитесь, кому удалось запустить CDC-проект под Vista или помогите советом, где раздобыть подходящий inf-файл для этой цели.

===============
P.S.: Кажется в другом проекте at90usb162-cdc-1_0_1.zip есть inf-файл, в заголовке которого поминается Vista:

; Windows 2000, XP & Vista setup File for AT90USBxx2 demo

Пока не успела проверить заработает с ним или нет.

Сообщение отредактировал Xenia - Apr 4 2008, 11:16
Go to the top of the page
 
+Quote Post
Visor
сообщение Apr 26 2008, 17:09
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(Xenia @ Apr 4 2008, 19:13) *
На WinXP работает, а на Vista не загружается драйвер. Что делать?

Вы решили проблему? Интересует тот-же вопрос.
Go to the top of the page
 
+Quote Post
Xenia
сообщение May 14 2008, 04:08
Сообщение #25


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Visor @ Apr 26 2008, 21:09) *
Вы решили проблему? Интересует тот-же вопрос.


Проблема разрешилась тем способом, каким я и предполагала. INF-файл, взятый из проекта at90usb162-cdc-1_0_1.zip, способен работать под Vista со всеми МК типа AT90USB, а не только AT90USBxx2, как сказано в его заголовке.

Сообщение отредактировал Xenia - May 14 2008, 04:09
Go to the top of the page
 
+Quote Post
Visor
сообщение May 17 2008, 18:39
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(Xenia @ May 14 2008, 12:08) *
INF-файл, взятый из проекта at90usb162-cdc-1_0_1.zip, способен работать под Vista со всеми МК типа AT90USB, а не только AT90USBxx2, как сказано в его заголовке.

Спасибо! a14.gif
Go to the top of the page
 
+Quote Post
Visor
сообщение Jul 8 2008, 09:57
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Обнаружилось следующее:
Когда размер принимаемого либо отправляемого пакета данных кратен размеру ENDPOINT, он застревает в хосте. Пакет любой другой длины передаётся без проблем.
Подскажите в чём дело? И нужно хорошее описание по USB.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jul 8 2008, 10:07
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Visor @ Jul 8 2008, 17:57) *
Обнаружилось следующее:
Когда размер принимаемого либо отправляемого пакета данных кратен размеру ENDPOINT, он застревает в хосте. Пакет любой другой длины передаётся без проблем.
Подскажите в чём дело? И нужно хорошее описание по USB.
После такого пакета нужно посылать хосту пакет нулевой длины - это сигнал о завершении передачи


--------------------
Go to the top of the page
 
+Quote Post
galjoen
сообщение Jul 8 2008, 14:16
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(prottoss @ Jul 8 2008, 14:07) *
После такого пакета нужно посылать хосту пакет нулевой длины - это сигнал о завершении передачи

Совершенно верно.
Но это происходит только в том случае если хост "не знает" длины передаваемых данных. Если длина известна хосту - передача завершается без посылки пакета 0й длины. В случае bulk передачи проблем нет - можно послать пакет 0й длины. А в случае передачи через контрольный канал (EP0) наличие в передатчике EP0 пакета 0й длины разрешённого для передачи, но незапрошенного хостом, может привести к сбою. Это если мы не успеем очистить передатчик EP0 после получения пакета OUT 0й длины с DATA1 (управляющая запись на эту транзакцию), а хост пошлёт следующий пакет SETUP (следующая транзакция) и сразу-же прочтет из передатчика EP0 пакет IN 0й длины (оставшийся) т.е. получится управляющее чтение (на следующую транзакцию). Я с такой ошибкой сталкивался. Пришлось слать пакет 0й длины по NAK-ам (если данные были кратны пакету EP). А заморочек с обработкой посылки NAK-ов хосту немало. Но я ничего лучше не придумал.
А вы как узнаёте, что нужно пакет 0й длины хосту слать? Без обработчика NAK-ов удаётся обойтись?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jul 8 2008, 14:30
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(galjoen @ Jul 8 2008, 22:16) *
Я не использовал AT90USBxxx, но по большому счету это относится ко всему, что работает по USB. Хост в любом случае не знает, сколько данных ему забирать, потому что он железяка.smile.gif Так же не знает об этом и ПО, которое хостом управляет. ПО может только думать, ЧТО, если количество данных меньше, чем размер буфера конечной точки (EP), значит функция больше не будет передавать данные. Если количество принятых хостом данных равно размеру буфера ЕР, значит функция передала не все данные, и хост будет опрашивать функцию на предмет присутсвия пакета в ЕР. Чтобы сообщить хосту, что данных для передачи больше нет, мы пишем в ЕР нулевой пакет.


--------------------
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.0151 секунд с 7
ELECTRONIX ©2004-2016