-
Постов
1 236 -
Зарегистрирован
-
Посещение
Весь контент hd44780
-
Спасибо, но я в курсе об этом :) В отладке я до обмена просто не дохожу из-за сбоев NVIC. Уже начинаю жалеть, что не поставил туда старый добрый F407 :( ... И ещё. Никак не могу никак понять, что такое нога ID, зачем оно надо? Код хоста смотрел, оно к ней вроде не обращается. У меня в схеме её нет.
-
Вот проект под кокос. Может кто глянет, почему флэшка не определяется. Подключение ключа питания: // PA8 - Fault (overcurrent) - IN // PA10 - USB Power - OUT Что меня удивляет, что в примерах всё конфигурирование USB - 2 строки: RCC_OTGFSCLKConfig(RCC_OTGFSCLKSource_PLLVCO_Div3); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE); USB пины вообще нигде не конфигурятся, хотя на F4 там есть всё - и настройка порта, и AF - полный боекомплект .... И ещё. Под отладчиком в функции void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init ( &NVIC_InitStructure ); } в функции NVIC_Init железно вылетает в DefaultHandler. Без отладчика нормально проходит (проверял светодиодиками). Спасибо. STM32F105_USB_Host_Coocox.rar
-
Привет. Есть ли у кого? Желательно под кокос. Я попытался переделать в кейле ST-шный пример для платы STM3210C-EVAL, пока глухо. Ещё и с отладчиком там никак не разберусь. Хотя проц стирается и прошивается ... Ключ питания USB я проверил отдельно и вольтметром и светодиодиком - он адекватный. Спасибо.
-
Да в принципе всё просто. Основной баг немца -для инициации обмена с мышью надо дрыгать и DATA и CLK. Он дрыгал только DATA. А это далеко не на всех мышах пашет. Чтение неверных кодов из мыши были связаны с "самогенерацией" прерывания по CLK при его дёргании. При этом, естественно, сбивались управляющие переменные и последующий приём байта проходил неверно. Когда выключил прерывания перед ногодрыгом, бред мгновенно исчез. Проблема сейчас одна - 0xF2.
-
На 95% работает. Инициализация всех мышей проходит нормально, координаты считываются и прочее. Единственная проблема на текущий момент - какие-то баги с определением типа мыши. Есть команда 0xF2 - Get Id - считать типа мыши. Здесь написано, что ответ мыши - 2 байта - подтверждение 0xFA и код типа. А вот здесь утверждается, что ответ - один байт - код типа. Бардак натуральный. Не инициализируется только старая PS2 мыша. Она без колеса, т.е. Standard mouse. Команду 0xF2 она не понимает. С ней ещё не возился. Тут тоже вопрос - как она должна себя вести? Игнорировать команду вообще? Слать ошибку 0xFC? Может она и глючит на этой 0xF2. По ходу выяснил, что заявление о том, что по умолчанию в мыше включён потоковый режим - мягко говоря, неправда. На старых мышах это так. А новые мыши без явной подачи команды 0xEA - включить потоковый режим просто ни фига не шлют. Проверено.
-
Извините, какой процессор? Всё, что я понял - это некий "Cortex-M4 with FPU".
-
Pull-upы в +5в не помогли :( Придётся колупаться в протоколе :) ...
-
Спасибо. Вечером постараюсь добавить их. Тогда отпишусь.
-
Прерывание одно и то же, программа одна и та же. // 0xFF - Сброс - 3 раза st = P_PS2_Mouse_Send ( PS2_MOUSE_CMD_RESET ); P_PS2_Mouse_Timeout_RX ( 50000 ); // checks PS2_MOUSE_VAR.receive_code P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); st = P_PS2_Mouse_Send ( PS2_MOUSE_CMD_RESET ); P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); st = P_PS2_Mouse_Send ( PS2_MOUSE_CMD_RESET ); P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); P_PS2_Mouse_Timeout_RX ( 50000 ); PS2_MOUSE_VAR.receive_code - принятый из мыши байт. Первый раз там 0xFA - это правильно. 2 и 3-й - бред. Проверю, может где-то у немца какие-то флажки не сбрасываются ... Кстати, проверил его оригинальный драйвер на работающей мыше - инициализация проходит только один раз. Далее лезет тот самый 0xF8. Можно .. Когда исчерпаю другие варианты - проверю .. Придётся спаять некий "переходник" для доступа к контактам. А кстати, DATA и CLK подтягивать резюками к +5в надо? У меня сейчас не подтянуто. Идут непосредственно на процессор.
-
Я пытаюсь работать с мышами, которые изначально имеют PS2 разъём. А что из себя представляют те или иные переходники - пока что совершенно не волнует. 4 провода в них там или какая-то микросхема, переделывающая USB в PS2 - по идее всё равно.
-
Не скажите. Я пытался подключать 2 свои USB мыши к компу через переходник на PS/2 - не работают. Logitech RX250 не в счёт, она изначально с двойным интерфейсом. Так что, это, по-моему - "территория заблуждений" :) . Да даже если б и работало, подключить её к USB хосту я не могу, у меня там флэшка.
-
Сейчас пользуюсь драйвером немца - http://mikrocontroller.bplaced.net/word ... age_id=744 Один "странный" косяк я исправил - если мышь не понимает команду 0xF2 (идентификация мыши) он тупо вываливается с ошибкой, хотя весь дальнейший алгоритм прекрасно понимает оба типа мыши (стандартная и Intellimouse). Но обнаружилась странная вещь - на старых мышах он работает, а на большинстве новых - нет. Есть 2 мыши Logitech RX250, одна белая, 2-я чёрная. Белая работает достаточно стабильно, хоть и не без приколов, Чёрная - труп трупом. Кроме фэн-шуя в голову ничего не приходит.. Уже 3 дня читаю разные мануалы, примеры кода под авры и прочее - по фиг. Если надо, дам все ссылки и свой код. Всё чего удалось добиться - команды нормально передаются в мышь. На драйвере немца мышь вообще не генерит синхронизацию. Он вначале притягивает к земле только данные, а синхру - нет. Дальше странности - многие команды дают либо код ошибки 0xFC, либо какой-то недокументированный код - 0xF8. Даже команда сброса 0xFF корректно отрабатывает только один раз, в ответ на все остальные летит некий бред типа 0xF8. Вопрос - кто-нибудь работал с мышей, каковы результаты и есть ли у кого нормальный драйвер? Спасибо. PS. Все мыши рабочие. Проверены в компе.
-
Ну по сути это оно и есть . Я в сентябре-ноябре перетаскивал один проект (написанный на SPL) с какого-то F10x на F407. Перенёс очень легко и быстро. Переделки минимальные были. Думается, что с регистрами возни было б на порядки больше. Так что, по-моему, в целом это очень неплохая вещь, несмотря на то, что многие его ругают.
-
Интересно. Спасибо. Мне F4 и нужен. Остальные - до лампочки.
-
Да. Знаю. Амперметр кажет - 46мА. А питалово проседает. Тоже факт. И кому верить? Амперметру или доке на стабилизатор ихний?
-
На LDO ориентироваться нельзя. У меня обычная дискаверина на 407 проце, LDO на 150мА. Навешал дисплей и VS1003, в сумме 46мА. Напряжение просело с 3 до 2.5в, USB флэшка сразу же заглохла. Пришлось ставить внешний LM317.
-
В микросхеме 4 двунаправленных сокета. Поэтому максимум 4 клиента. У каждого сокета свои флажки типа "данные пришли" и прочее. По ним и различать. Все 4 сокета независимы. Вы можете читать/писать любой сокет. Естественно, по очереди. Каждый сокет, так сказать, однопоточный. Пока к нему кто-то подключён, другой уже не подключится. По крайней мере, на данном этапе своего развития, я так всё это понимаю.
-
Не понял вопроса. Вот это: uint16_t wiz_read_buf ( uint16_t addr, uint8_t* buf, uint16_t len ) { uint16_t idx = 0; for ( idx=0; idx<len; idx ++ ) { buf [ idx ] = IINCHIP_READ ( addr ); addr ++; } // for return len; } // wiz_read_buf нормально забивает указанный буфер указанным кол-вом байт из W5100.
-
Всё, заработала шарманка :) TCP, UDP клиенты и DHCP заработали. Косяк был в том, что перед посылкой любой четвёрки "атомарных" байт - 0x0F/0xF0, 2 байта адреса, байт данных (0xFF для чтения) неоходимо делать nCS:=0, а после их отправки ОБЯЗАТЕЛЬНО возвращать в 1. Я же при отправке данных (массив байт) решил немного "пооптимизировать" и опускал/поднимал nCS до и после всего цикла отправки данных. Видимо, входной буфер микросхемы использует перепад nCS 0->1 для пропихивания данных куда-то дальше в недра микросхемы, а т.к. я этого не обеспечил, он находился в некоем "ступоре" и не воспринимал все остальные данные. Теперь приступаю к главному - TCP-сервер на проце. Всем спасибо.
-
Наверное я что-то с буферами сокетов намутил. Вычислил, что 1-й байт данных передаётся правильно, остальные - бред.
-
uriy, W5100 был выбран человеком, которому я помогаю. Как наиболее простой способ добавить LAN в уже имеющееся у него устройство. С ENC28 я проуродовался 2 недели, но так и не смог добиться от него ни одного байта в ответ. Даже номер ревизии чипа ... Не говоря уж о каких-то более серъёзных вещах. Плюнул на неё. Я не думаю, что проблема в little/big-endian. Иначе б пакеты вообще не доходили бы ... Порченная только область данных. Может я где-то с перекачкой данных в проге намутил.. Да и если б у меня были попарно байты данных переставлены я бы это глазом в Wireshark увидел бы. Сергей Борщ, спасибо. Передам тому человеку. Вообще, пока планируется ставить это по одну сторону от роутера. TCP завёлся, коннектится нормально, проблема только в порче области данных. Вчера я тупо забыл дать микрухе команду CONNECT Может у меня где-то одни и те же грабли и в UDP и в TCP. Буду разбираться.
-
На TCP чего-то после передачи не взводится бит завершения передачи SEND_OK в IR .... Сервер на компе ничего не ловит, Wireshark ничего не показывает.
-
Мудохался с ним целый день. DHCP пока убрал, задал статический адрес, слал на комп UDP пакеты. Смотрю Wirashark-ом Пакеты приходят, адреса (и MAC, и IP) в них нормальные (те, что я задал), а в области данных (13 байт) бред собачий ... Кста. Нарыл тему про проблемы с UDP - http://electronix.ru/forum/index.php?showtopic=62111 Народ там ничего путного не придумал. Сокет закрываю-открываю на каждую отправку. Попробую TCP, пишут, там этих проблем нет. Лично мне UDP на фиг не нужен, но DHCP накрывается медным тазом, а без него как-то некошерно :( .
-
Привет. Кто-то работал с этой микрухой? Я нашёл на офф сайте драйвер и пример реализации DHCP. Переписал под F4 (поправив некоторые ошибки на мой взгляд) - не работает. Не может получить IP-адрес. Роутер показывает, что он увидел какое-то устройство, но MAC совсем не тот, который я посылаю. Когда я задаю микросхеме статический IP, пинг с компа на неё проходит. Но это ж "некошерно". У кого-нибудь есть примерчик поделиться? Спасибо. PS. Сейчас буду пробовать простенький сервер набабахать хоть на статическом IP.