|
|
  |
ARM. Энкодеры и акселерометры, Помогите решить задачу |
|
|
|
Sep 13 2009, 18:41
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Zliva @ Sep 13 2009, 22:18)  Объясните пожалуйста значение этих переменных: Во-первых, это не переменные, а макросы. Во-вторых, назначение вполне очевидно: Код SANITY_CHECK((priority & ~AT91C_AIC_PRIOR) == 0); - вывод ошибки вида "Sanity check failed at FILE:LINE" и зависание при не верности условия. Код BOARD_USB_PULLUP_MATRIX BOARD_USB_PULLUP_INTERNAL BOARD_USB_PULLUP_EXTERNAL - задают тип используемого pull-up'а.
|
|
|
|
|
Sep 13 2009, 18:45
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Zliva @ Sep 13 2009, 22:18)  Объясните пожалуйста значение этих переменных: SANITY_CHECK((priority & ~AT91C_AIC_PRIOR) == 0); Это просто макрос проверки приоритета на соответствие, при ошибке печать через DBGU варнинга можно смело выкидывать так же как и все TRACE_xxx Цитата BOARD_USB_PULLUP_MATRIX BOARD_USB_PULLUP_INTERNAL BOARD_USB_PULLUP_EXTERNAL Это просто выбор того как подключается pullup на линии D+ при появлении питания на USB разъеме. В некоторых процах есть внутренний пулап, в Вашем насколько я понимаю только EXTERNAL и все остальные варианты можно просто поудалять.
|
|
|
|
|
Sep 15 2009, 21:22
|
Частый гость
 
Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318

|
Начинает немного прояснятся. В неделю нереально вложится  . Думаю переписать све под себя. Не могу понять вот такой код: Код // Get interrupts status status = AT91C_BASE_UDPHS->UDPHS_INTSTA & AT91C_BASE_UDPHS->UDPHS_IEN; Можете объяснить? То есть не могу найти описания UDPHS_INTSTA и UDPHS_IEN.
--------------------
If the person is successful, he is successful in any sphere.
|
|
|
|
|
Sep 16 2009, 05:49
|
Частый гость
 
Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318

|
Цитата(aaarrr @ Sep 16 2009, 00:43)  А в HS-то вас как занесло? Стандартный пример от атмела. Смотрите обработку прерываний void USBD_InterruptHandler(void).
--------------------
If the person is successful, he is successful in any sphere.
|
|
|
|
|
Sep 16 2009, 08:39
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Zliva @ Sep 16 2009, 01:22)  Начинает немного прояснятся. В неделю нереально вложится  . Думаю переписать све под себя. Не могу понять вот такой код: Код // Get interrupts status status = AT91C_BASE_UDPHS->UDPHS_INTSTA & AT91C_BASE_UDPHS->UDPHS_IEN; Можете объяснить? То есть не могу найти описания UDPHS_INTSTA и UDPHS_IEN. Вы смотрите файл USBD_UDPHS.c который Вам нафиг не нужен он относиться к HighSpeed и в самом его начале: #ifdef BOARD_USB_UDPHS ........весь код #endif Вам нужен файл USBD_UDP.c который имеет в начале: #if defined(BOARD_USB_UDP) ..........весь код #endif Ну и если посмотреть Ваш board.h: Код //------------------------------------------------------------------------------ // USB //------------------------------------------------------------------------------ /// Indicates the chip has a UDP controller. #define BOARD_USB_UDP
/// Indicates the D+ pull-up is externally controlled. #define BOARD_USB_PULLUP_EXTERNAL
/// Number of endpoints in the USB controller. #define BOARD_USB_NUMENDPOINTS 4
/// Returns the maximum packet size of the given endpoint. /// \param i Endpoint number. /// \return Maximum packet size in bytes of endpoint. #define BOARD_USB_ENDPOINTS_MAXPACKETSIZE(i) ((i == 0) ? 8 : 64)
/// Returns the number of FIFO banks for the given endpoint. /// \param i Endpoint number. /// \return Number of FIFO banks for the endpoint. #define BOARD_USB_ENDPOINTS_BANKS(i) (((i == 0) || (i == 3)) ? 1 : 2)
/// USB attributes configuration descriptor (bus or self powered, remote wakeup) #define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_NORWAKEUP //#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_BUSPOWERED_NORWAKEUP //#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_RWAKEUP //------------------------------------------------------------------------------ то видно какой код будет работать Просто удалите нафиг из кода библиотеки все что не относится к Вашей плате, тогда разбираться будет намного проще.
|
|
|
|
|
Sep 17 2009, 20:38
|
Частый гость
 
Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318

|
Маленький отчет. 1. Удалил файл UDPHS.с Работает. Может еще что-то надо удалить  ? А то я занимался пунктом 2 и не было времени разобраться с UDPHS. 2. Спаял датчик ускорения. Заработал вариант только с MMA7260QT (на 6g) из третей пробы. Спалил один ADXL210 и один MMA7260QT. Народу на заметку: Не советую некому паять эти датчики советским паяльником, а то вывалите лишние деньги и потратите много времени (как я) впустую. Лучше поискать паяльную станцию, или сделать как я – обратится в сервис по ремонту мобил. Там такой аппарат есть или должен быть. Также прикупил два датчика LIS302DL (на 8g) c SPI/I2C. Их уже припаял на плату - но не подключал. Когда что-то выйдет, отпишу. Не могу понять, зачем инициализировать таймер с прерываниями?
--------------------
If the person is successful, he is successful in any sphere.
|
|
|
|
|
Sep 17 2009, 20:58
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Zliva @ Sep 18 2009, 00:38)  1. Удалил файл UDPHS.с Работает. Может еще что-то надо удалить  ? А то я занимался пунктом 2 и не было времени разобраться с UDPHS. Может. Как видите, время тратить все равно приходится, несмотря на наличие казалось бы готового кода. И тратится оно в данном случае практически впустую. Цитата(Zliva @ Sep 18 2009, 00:38)  Не советую некому паять эти датчики советским паяльником, а то вывалите лишние деньги и потратите много времени (как я) впустую.[/b] Лучше поискать паяльную станцию, или сделать как я – обратится в сервис по ремонту мобил. Пробитым паяльником, равно как и незаземленной станцией, угробить можно что угодно. Но виноват отнюдь не паяльник. Цитата(Zliva @ Sep 18 2009, 00:38)  Не могу понять, зачем инициализировать таймер с прерываниями? Pardon?
|
|
|
|
|
Sep 17 2009, 21:28
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Zliva @ Sep 18 2009, 00:38)  Маленький отчет. 1. Удалил файл UDPHS.с Работает. Может еще что-то надо удалить  ? А то я занимался пунктом 2 и не было времени разобраться с UDPHS. Просто найдите(поиском по файлам) и удалите весь код который #ifdef BOARD_USB_UDPHS ....... код #endif (или #else #elseif) Ну а дальше уже внимательно изучать и оптимизировать... Да, еще поищите по форуму, была ошибка в этом коде с прерыванием ендпоинта И еще ошибка с пулапом...
|
|
|
|
|
Sep 23 2009, 21:21
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Zliva @ Sep 24 2009, 01:00)  1. Чем просматривать пакеты со стороны хоста? Каким-нибудь сниффером. Я, например, использую snoopypro. Одно но - пакеты можно просмотреть только если устройство успешно энумерировано. Цитата(Zliva @ Sep 24 2009, 01:00)  2. Набросайте последовательность инициализации устройства, что зачем должно идти, или скажите, где можно прочитать. Не могу никак въехать в саму иерархию ЮЗБ. В голове каша. Последовательность инициализации UDP, или последовательность запросов/ответов при подключении? Цитата(Zliva @ Sep 24 2009, 01:00)  3. Что должно обрабатываться по прерываниях? Логично обслуживать нулевую точку и ENDBUSRES, т.к. оно не отключается. Остальное - по желанию.
|
|
|
|
|
Sep 23 2009, 21:31
|
Частый гость
 
Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318

|
Цитата(aaarrr @ Sep 24 2009, 00:21)  Каким-нибудь сниффером. Я, например, использую snoopypro. Одно но - пакеты можно просмотреть только если устройство успешно энумерировано. Последовательность инициализации UDP, или последовательность запросов/ответов при подключении? Последовательность инициализации UDP
--------------------
If the person is successful, he is successful in any sphere.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|