|
|
  |
Работа с AVR - CDC |
|
|
|
May 24 2007, 07:29
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Сделал связь AVR с PC через USB на libusb. Работает. Но для этого на РС нужно ставить драйвера, для заказчика это не удобно. Решил перейти на AVR – CDC. Взял проект AVR-CDC.2006-08-28 на ATtiny45. Не работает. Загружаю их прошивки cdctiny45.hex или cdctiny45r.hex, по осциллографу вижу, что какой-то обмен идёт, но РС пишет Unknown Device. Работаю в IAR проект для ATtiny45 не компилится из-за старой не решённой проблеме: Error[e16]: Segment NEAR_Z (size: 0x8c align: 0) is too long for segment definition. At least 0x1 more bytes needed. The problem occurred while processing the segment placement command "-Z(DATA)NEAR_I,NEAR_Z=_..X_SRAM_BASE-_..X_SRAM_END,_..X_EXT_SRAM_BASE:+_..X_EXT_SRAM_SIZE", where at the moment of placement the available memory ranges were "DATA:d5-15f,DATA:15f--1"
Кто сделал такое устройство, помогите разобраться.
|
|
|
|
|
May 24 2007, 07:40
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Oleg_IT @ May 24 2007, 10:29)  Сделал связь AVR с PC через USB на libusb. Работает. Но для этого на РС нужно ставить драйвера, для заказчика это не удобно. Решил перейти на AVR – CDC. Взял проект AVR-CDC.2006-08-28 на ATtiny45. Не работает. Загружаю их прошивки cdctiny45.hex или cdctiny45r.hex, по осциллографу вижу, что какой-то обмен идёт, но РС пишет Unknown Device. Работаю в IAR проект для ATtiny45 не компилится из-за старой не решённой проблеме: Error[e16]: Segment NEAR_Z (size: 0x8c align: 0) is too long for segment definition. At least 0x1 more bytes needed. The problem occurred while processing the segment placement command "-Z(DATA)NEAR_I,NEAR_Z=_..X_SRAM_BASE-_..X_SRAM_END,_..X_EXT_SRAM_BASE:+_..X_EXT_SRAM_SIZE", where at the moment of placement the available memory ranges were "DATA:d5-15f,DATA:15f--1"
Кто сделал такое устройство, помогите разобраться. Re: ошибка попробуйте в настройках проекта отобрать пару байтов у стека, и добавить для переменных. Re: CDC Я лично не верю в устойчивую работу этой связи. Мне предлагали поисследовать, я отказался. А Вы согласились?
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 24 2007, 07:55
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
У меня CSTACK 0x10, RSTACK 8, меньше не могу, лезут другие ошибки. Модель памяти Small. Откуда ещё байтики можно безболезненно изъять? Цитата(Dog Pawlowa @ May 24 2007, 11:40)  Re: CDC Я лично не верю в устойчивую работу этой связи. Мне предлагали поисследовать, я отказался. А Вы согласились?  Советуете остаться на libusb и уговорить заказчика?
|
|
|
|
|
May 24 2007, 08:03
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(GDI @ May 24 2007, 11:56)  Такая ошибка у кого то уже была и решилать увеличением размера стека, если я не путаю, попробуйте поиск по форуму. NEAR_Z - это не стек это сегмнт данных которые заполняются 0 всего 1 байта не хватает  Надо убрать перменную какую нибудь 1 может перенести ее GPIORx у 45 тиньки есть 3 регистра в портах общего назначения вот 3 байта и освободится
|
|
|
|
|
May 24 2007, 08:12
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Необходимые размеры стека, да и адреса размещения блоков в памяти можно узнать если сделать листинг линкера, лучше в хтмлл формате со всеми галками. Цитата NEAR_Z - это не стек это сегмнт данных которые заполняются 0 Вот именно - не хватает байта, просто сегмент и стек перекрываются... или еще с чем то конфликтует... надо посмотреть чего там линкер наразмещал. 2OlegIT проект программатора AVR910USB от prottosa сделан тоже на CDC он разместил исходники - они компилируются в ИАРе, правда у него мега8.... а проблемы с сегментом вроде были у кого то кто его проект хотел на мега48 переделать..
--------------------
|
|
|
|
|
May 24 2007, 08:13
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Oleg_IT @ May 24 2007, 10:55)  Советуете остаться на libusb и уговорить заказчика? Нельзя доверять левым решениям. Потом начнется - на этом компьютере работает, на этом не работает, кто виноват. И я догадываюсь, кто будет виноват P.S. Могу ошибаться.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 24 2007, 10:20
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Цитата(KRS @ May 24 2007, 12:22)  Там же есть GPIORx туда можно 3 переменных перенсти вот и будет 3 байта Есть, но они заняты под программный USART. И ещё, говорят, что CDC меняет номер COM порта при следующих подключениях.
|
|
|
|
|
May 24 2007, 16:35
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066

|
Цитата usbdrv.h: Hardware Prerequisites: ======================= USB lines D+ and D- MUST be wired to the same I/O port. D+ must (also) be connected to INT0. D- requires a pullup of 1.5k to +3.5V (and the device must be powered at 3.5V) to identify as low-speed USB device. A pullup of 1M SHOULD be connected from D+ to +3.5V to prevent interference when no USB master is connected. We use D+ as interrupt source and not D- because it does not trigger on keep-alive and RESET states.
As a compile time option, the 1.5k pullup resistor on D- can be made switchable to allow the device to disconnect at will. See the definition of usbDeviceConnect() and usbDeviceDisconnect() further down in this file. ... usbconfig.h: /* ---------------------------- Hardware Config ---------------------------- */
#define USB_CFG_IOPORTNAME D /* This is the port where the USB bus is connected. When you configure it to * "B", the registers PORTB, PINB and DDRB will be used. */ #define USB_CFG_DMINUS_BIT 3 /* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. * This may be any bit in the port. */ #define USB_CFG_DPLUS_BIT 2 /* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected. * This may be any bit in the port. Please note that D+ must also be connected * to interrupt pin INT0! */ Обратите внимание на usbdrv.h и usbconfig.h Возможно не правильно определены D+ D- и USB_CFG_IOPORTNAME Отсюда может быть неопределенное устройство. Вы используете те же линии, что и в примерах, которые прошивали?
|
|
|
|
|
May 25 2007, 10:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Там еще есть режим отладки через уарт, но проблема я так понял при компиляции и расположение выводов никак не поможет... надо убрать ошибку сперва. И еще, может попробовать использовать последнюю версию юсб драйвера? Кстати на сайте http://www.recursion.jp/avrcdc/ есть версия от 7апреля 2007 г. может там эта проблема решена? http://electronix.ru/forum/lofiversion/ind.../t13883-50.html тут что то про сегменты обсуждалось
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|