Требуется помощь в подключении Cosmo USB Host к Spider robot controller
  • Купил у вас платку Cosmo USB Host, дошла быстро, плюс порадовали подарки (светодиоды и комплект пинов), но вот уже три дня вожусь с его подключением к платке Spider robot controller, данная плата представляет собой компактную версию Arduino Mega 1280, с пинами для подключения большого числа сервоприводов. Данная плата несмотря на все свои плюсы имеет один существенный минус - она не полностью совместима с форм-фактором arduino, т.е. выводы хоть и располагаются похоже но есть некоторая разница, но схемно и по номерам выводов и их назначению плата полностью совместима с платами  Arduino Mega 1280. Здесь можете посмотреть описание платы.
    Далее опишу как я подключал Cosmo USB Host, сначала я сделал все по инструкции замкнул SJ2, SJ7, SJ3 и SJ8. SPI разъем геометрически не оказался совместим для непосредственного совмещения плат, поэтому я сделал удлинитель SPI (из старого IDE шлейфа сделал МАМУ удлинителя из Пин-экстендеров(мам-пап), который пришел в качестве подарка сделал разъем ПАПА) многократно перепроверил качество пайки и контакт удлинителя. В процессе исследования принципиальной схемы было выяснено что (+) питания не подключен к SPI разъему Cosmo USB Host , я решил это устранить и кинул аккуратный проводок от 2-го контакта разъема SPI к SJ11.. Далее я установил библиотеку USB Host Shield 2.0, устранил косяки несовместимости с 1.0 версией Arduino IDE, что бы примеры начали компилироваться пришлось заменить в модулях инклюды на модуль WProgram.h на Arduino.h (в 1.0. версии они зачем-то переименовали этот файл), а еще пришлось сделать изменение в модуле message.cpp, на 26 строке исходника заменил строку Serial.print(c,BYTE);  на Serial.print(c); , так как среда разработки ругалась на то что переменная неинициализированна в области видимости...Дальше подключил платку к компу, а к Cosmo USB Host подключил флешку, как и рекомендовали в вашей инструкции залил скетч Examples → USB_Host_Shield_2 → board_gc. Открыл Serial Monitor и увидел следующее:
    Circuits At Home 2011
    USB Host Shield Quality Control Routine
    Reading REVISION register... Die revision invalid. Value returned: 00
    Unrecoverable error - test halted!!
    0x55 pattern is transmitted via SPI
    Press RESET to restart test

    Несколько раз сделал Reset , много раз перепроверил схему.. безрезультатно.. надпись та же(((  Далее я решил пойти по другому пути разъединил  SJ7, SJ8 и подключил SPI сигналы не к разъему а к выходам платы.. Для ATMega1280 это следующие разъемы:SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS), ни где в описании не нашел ни чего про пин INT, поэтому оставил его на 9-м пине. Подключил, проверил, по прежднему то же сообщение. Дальше, я, для чистоты эксперимента, просто отключил Cosmo USB Host от платы и проверил, какое при этом будет сообщение, как я и ожидал было тоже сообщение.
    Хочется отметить что несмотря на то что я так и не смог подключить шилд, светодиод во флешке периодически моргает когда идет обращение через Serial Monitor, таже картина и при подключении USB-мышки, а еще при подключении сотового телефона к USB разъему шилда, сотик спрашивает о необходимости подключения в качестве флешки или как COM1, т.е. действует не как с зарядным устройством, но почему-то шилд отказывается.. Большая просьба помогите разобраться в этой проблеме..


  • Первое, что бросилось в глаза - распиновка платы.  Цифровые порты у "Spider robot controller" идут не так как в оригинальном Ардуино.
    Соответственно, пины 9 и 10 с шилда идут ни на те ножки микроконтроллера.
    Отсюда 2 решения:
    1) соединить пины 9 и 10 шилда с правильными ножками МК (PB1, PB2). Можно через кастомизацию шилда.
    2) в либе USB Host Shield v2 поменять пины с 9/10 (что по дефолту) на те которые у вас.
    в либе по умолчанию идет такая инициализация

    /* shield pins. First parameter - SS pin, second parameter - INT pin */
    //typedef MAX3421e<P6, P3> MAX3421E; // Black Widow
    typedef MAX3421e<P10, P9> MAX3421E; // Official Arduinos (UNO, Duemilanove, Mega, 2560

    Попробуйте одну из этих манипуляций, я думаю в этом причина, что тестовый скетч не работает.

    P.S. Тестировать лучше на Arduino IDE v 0023, версия 1.0 местами действительно глючная.

  • Спасибо, Вам, Иван Лусегенович, за оперативный ответ..Пришлось воспользоваться одновременно двумя способами.
    Установил SS на 9 INT на 12. Соответственно исправил typedef MAX3421e<P9, P12>        MAX3421E;
    После этого при запуске скетча появляется следующее:

    Circuits At Home 2011
    USB Host Shield Quality Control Routine
    Reading REVISION register... Die revision 03
    SPI long test. Transfers 1MB of data. Each dot is 64K................ SPI long test passed
    GPIO test. Connect GPIN0 to GPOUT7, GPIN1 to GPOUT6, and so on
    Test failed. Value written: 00 Value read: FF
    Press any key to continue...


    Жму эникей - Enter.. появляется следующее:

    GPIO test passed.
    PLL test. 100 chip resets will be performed
    Resetting oscillator
    Reset number 0 Time to stabilize - 478 cycles
    Reset number 1 Time to stabilize - 476 cycles
    Reset number 2 Time to stabilize - 475 cycles
    Reset number 3 Time to stabilize - 479 cycles
    Reset number 4 Time to stabilize - 475 cycles
    Reset number 5 Time to stabilize - 489 cycles
    Reset number 6 Time to stabilize - 514 cycles
    Reset number 7 Time to stabilize - 513 cycles
    Reset number 8 Time to stabilize - 508 cycles
    Reset number 9 Time to stabilize - 514 cycles
    Reset number 10 Time to stabilize - 508 cycles
    Reset number 11 Time to stabilize - 513 cycles
    Reset number 12 Time to stabilize - 512 cycles
    Reset number 13 Time to stabilize - 514 cycles
    Reset number 14 Time to stabilize - 511 cycles
    Reset number 15 Time to stabilize - 515 cycles
    Reset number 16 Time to stabilize - 513 cycles
    Reset number 17 Time to stabilize - 514 cycles
    Reset number 18 Time to stabilize - 513 cycles
    Reset number 19 Time to stabilize - 515 cycles
    Reset number 20 Time to stabilize - 513 cycles
    Reset number 21 Time to stabilize - 513 cycles
    Reset number 22 Time to stabilize - 513 cycles
    Reset number 23 Time to stabilize - 515 cycles
    Reset number 24 Time to stabilize - 513 cycles
    Reset number 25 Time to stabilize - 506 cycles
    Reset number 26 Time to stabilize - 512 cycles
    Reset number 27 Time to stabilize - 508 cycles
    Reset number 28 Time to stabilize - 513 cycles
    Reset number 29 Time to stabilize - 507 cycles
    Reset number 30 Time to stabilize - 514 cycles
    Reset number 31 Time to stabilize - 508 cycles
    Reset number 32 Time to stabilize - 514 cycles
    Reset number 33 Time to stabilize - 512 cycles
    Reset number 34 Time to stabilize - 515 cycles
    Reset number 35 Time to stabilize - 512 cycles
    Reset number 36 Time to stabilize - 514 cycles
    Reset number 37 Time to stabilize - 513 cycles
    Reset number 38 Time to stabilize - 514 cycles
    Reset number 39 Time to stabilize - 512 cycles
    Reset number 40 Time to stabilize - 514 cycles
    Reset number 41 Time to stabilize - 513 cycles
    Reset number 42 Time to stabilize - 515 cycles
    Reset number 43 Time to stabilize - 513 cycles
    Reset number 44 Time to stabilize - 513 cycles
    Reset number 45 Time to stabilize - 513 cycles
    Reset number 46 Time to stabilize - 509 cycles
    Reset number 47 Time to stabilize - 513 cycles
    Reset number 48 Time to stabilize - 507 cycles
    Reset number 49 Time to stabilize - 512 cycles
    Reset number 50 Time to stabilize - 509 cycles
    Reset number 51 Time to stabilize - 514 cycles
    Reset number 52 Time to stabilize - 509 cycles
    Reset number 53 Time to stabilize - 515 cycles
    Reset number 54 Time to stabilize - 512 cycles
    Reset number 55 Time to stabilize - 514 cycles
    Reset number 56 Time to stabilize - 512 cycles
    Reset number 57 Time to stabilize - 514 cycles
    Reset number 58 Time to stabilize - 512 cycles
    Reset number 59 Time to stabilize - 514 cycles
    Reset number 60 Time to stabilize - 512 cycles
    Reset number 61 Time to stabilize - 514 cycles
    Reset number 62 Time to stabilize - 512 cycles
    Reset number 63 Time to stabilize - 514 cycles
    Reset number 64 Time to stabilize - 512 cycles
    Reset number 65 Time to stabilize - 507 cycles
    Reset number 66 Time to stabilize - 513 cycles
    Reset number 67 Time to stabilize - 508 cycles
    Reset number 68 Time to stabilize - 512 cycles
    Reset number 69 Time to stabilize - 509 cycles
    Reset number 70 Time to stabilize - 513 cycles
    Reset number 71 Time to stabilize - 509 cycles
    Reset number 72 Time to stabilize - 515 cycles
    Reset number 73 Time to stabilize - 514 cycles
    Reset number 74 Time to stabilize - 513 cycles
    Reset number 75 Time to stabilize - 514 cycles
    Reset number 76 Time to stabilize - 514 cycles
    Reset number 77 Time to stabilize - 512 cycles
    Reset number 78 Time to stabilize - 513 cycles
    Reset number 79 Time to stabilize - 512 cycles
    Reset number 80 Time to stabilize - 515 cycles
    Reset number 81 Time to stabilize - 513 cycles
    Reset number 82 Time to stabilize - 514 cycles
    Reset number 83 Time to stabilize - 512 cycles
    Reset number 84 Time to stabilize - 515 cycles
    Reset number 85 Time to stabilize - 511 cycles
    Reset number 86 Time to stabilize - 508 cycles
    Reset number 87 Time to stabilize - 512 cycles
    Reset number 88 Time to stabilize - 509 cycles
    Reset number 89 Time to stabilize - 512 cycles
    Reset number 90 Time to stabilize - 508 cycles
    Reset number 91 Time to stabilize - 515 cycles
    Reset number 92 Time to stabilize - 508 cycles
    Reset number 93 Time to stabilize - 514 cycles
    Reset number 94 Time to stabilize - 512 cycles
    Reset number 95 Time to stabilize - 514 cycles
    Reset number 96 Time to stabilize - 514 cycles
    Reset number 97 Time to stabilize - 515 cycles
    Reset number 98 Time to stabilize - 512 cycles
    Reset number 99 Time to stabilize - 515 cycles
    Reset number 100 Time to stabilize - 512 cycles
    Checking USB device communication.

    Waiting for device
    ...

    И дальше Waiting for device... делается до бесконечности.. девайс не находит.. пробывал подключать флешку, МФУ, мышку.. не находит.. хотя вроде бы начало хорошее..
  • Начнем с начала.

    1) Шилд работает на 5 линиях.
    3 линии идут через ISCP-разъем, а 2 остальные - через гнездо (JP3) на плате.
    Эти 2 линии (INT и SS) - они в либе назначены на  pin9 и pin10. 
    Именно по этому адресу микроконтроллер отправляет/ожидает данные.
    Смотрите строку №48.

    Соответственно, если линии данных физически приходятся ни на те ноги микроконтроллера - тестовый скрипт работать не будет, т.к. между Atmega и MAX3421E обмен данными происходить не будет.

    2) Подводить, что либо дополнительно - не нужно. 
    Питание шилда осуществляется через соответствующие контакты, дополнительно протягивать питающие проводки не нужно.
    Для того, чтобы шилд работал в стандартной конфигурации нужно всего 4 перемычки замкнуть, как в инструкции.

    Соответственно, если USB-шилд вставляется в "Spider robot controller" - посчитайте на какие контакты контроллера попадают ножки с разъема  (JP3), а именно 6 и 7 нога (если считать слева, начиная с 1). 6 нога будет SS, а 7 нога - INT.
    По картинке  "Spider controller" трудно посчитать, т.к. ряды разъемов с обеих сторон платы у них совмещены, а у Ардуино - дается с отступом. На глаз не определишь. 
    После этого в либе исправьте номера контактов под INT/SS (например получится 12 и 11) и попробуйте откомпилить и посмотреть что из этого вышло.

    Сообщите о ваших результатах.
  • по питанию в спайдере проблемы.. Расположение совершенно не такое как у любой платки ардуино формфактора...Сдесь вы можете скачать пояснительный рисунок (прошу прощения за отвратительный почерк и грязное оформление): http://zalil.ru/32332971
    Касаемо стандартных 9 и 10 пинов, я пытался (меняя настройки в библиотеке) двигая в пределах разумного шилд по плате добиться работы, но успехом это не закончилось.. после этого я разомкнул SJ7, SJ8 и через проводами запитал JP16, JP38 к ближайшим (на плате выводам) - таким образом INT вышел на первом пине ближней к USB разъему восьмипиновой плашки а SS на четвертом пине той же плашки... Вставив в плату шилд в положение INT 12-й разъем SS - 9й, сделал соответствующие изменения в библиотеке.. После этого удалось получить то что я описал в прошлом посте... Для чистоты эксперимента я пробывал менять в библиотеке настройки поочередно и вместе на пины, что бы проверить что они действительно имеют значения, во всех положениях исправность нарушалась и я получал сообщения как в первом посте топика..
  • execom said:

    по питанию в спайдере проблемы..



    Ага и по питанию там распиновка другая.
    Пробовали не вставляя шилд в спайдер-контроллер подключить его проводками?
    Подать 5V, GND проводками на шилд. Плюс протянуть линии данных на ICSP-разъем, INT, SS.
    На схеме шилда смотрите разъем JP6

    Что получается?
  • Да распиновка другая и я вам это говорил с самого начала... потому я и подключил через SPI разъем плюс.. Что качается монтажа по проводкам то так я и делаю.. уже перебрал сотню вариантов пинов SS и INT... Схему вашего шилдя я сразу же открыл первым делом когда получил устройство..
  • Вы пробовали вот так соединять?
    Единственно, я не нашел где на "Spider robot controller" разъем 3-х вольтового питания.
    На USB-шилд обязательно нужно подать 3V тоже.

Привет, незнакомец!

Похоже, вы новенький! Чтобы пообщаться с нами, кликните на одну из кнопок ниже :)

Войти с помощью OpenID

В этом теме:

  • execom Декабрь 2011
  • Ivan Декабрь 2011