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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> LPC13XX
GetSmart
сообщение Sep 6 2010, 17:56
Сообщение #16


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Vitaliy_ARM, где разрешение прерываний в майне?

USBIRQ_IRQHandler кто будет вызывать? Даже указателя на него не видно.

Контроллер прерываний разве не надо настраивать?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 6 2010, 18:24
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(GetSmart @ Sep 6 2010, 21:56) *
Vitaliy_ARM, где разрешение прерываний в майне?

USBIRQ_IRQHandler кто будет вызывать? Даже указателя на него не видно.

Контроллер прерываний разве не надо настраивать?


Внизу кода, после функции main, прописан обработчик прерывания USB.
Если я не ошибаюсь, все настройки прерываний и прочего делают функции, зашитые в область памяти USB драйвера.
Это отражено в презентациях NXP и даташите на процессор.
Одну из презентаций приложил. Попробовал встроить также __enable_interrupt() в часть кода, результат все равно тот же: устройство не опознано.
Хотя usb загрузчик работает без проблем.

Код
    (*rom)->pUSBD->init(&DeviceInfo);
    (*rom)->pUSBD->connect(TRUE);
    
    __enable_interrupt();
    
    while(1);

Прикрепленные файлы
Прикрепленный файл  lpc13xx.usb.pdf ( 818.04 килобайт ) Кол-во скачиваний: 203
 


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 6 2010, 19:12
Сообщение #18


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Vitaliy_ARM @ Sep 6 2010, 23:24) *
Внизу кода, после функции main, прописан обработчик прерывания USB.

Если речь о USBIRQ_IRQHandler, то в коде не видно ни указателя, ни прямого вызова. Так что его никто не догадается вызвать. И соответственно все прерывания от USB будут недоступны.


Цитата
Если я не ошибаюсь, все настройки прерываний и прочего делают функции, зашитые в область памяти USB драйвера.

Частично ошибаетесь. Пользовательская программа (обычно в cstartup.c) имеет свои вектора IRQ, начиная с адреса 0x40. Так вот, если вектор USB-прерывания пользовательской проги не настроен на USBIRQ_IRQHandler, то работать USB не будет.

Цитата
Хотя usb загрузчик работает без проблем.

Он работает на собственном векторе прерываний, бутовом.

Хм.. У USB оказывается 2 вектора. И возможно оба их нужно инициализировать .

Хотя возможно ещё кое-что. Если работать на бутовом ремапе, то наверное можно как-то работать на бутовых прерываниях (если они это умеют).

ЗЫ. lpc13xx.usb.pdf ещё не прочитал. Где-то мог и ошибиться.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 6 2010, 19:47
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(GetSmart @ Sep 6 2010, 23:12) *
Если речь о USBIRQ_IRQHandler, то в коде не видно ни указателя, ни прямого вызова. Так что его никто не догадается вызвать. И соответственно все прерывания от USB будут недоступны.


Попробую подпаять джитаг. Лучше один раз увидеть smile.gif . Потом отпишусь.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 6 2010, 22:59
Сообщение #20


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Нашёл такую вот инфу
Код
Memory Restrictions: The rom-based HID drivers use sections 0x10000050 to 0x10000180 of the on-chip RAM, meaning that you will need to configure the linker in your toolchain to avoid this area. Any attempt to use this memory for your own code will almost certainly result in system failure. The project files provided with the LPC1343 Code Base are configure to exclude these chunks of memory from system use, but if you are implementing your own custom project and making use of rom-based HID you will need to make sure the linker is properly configured to avoid this memory range.


Из исходников в сети нашёл только один
http://www.microbuilder.eu/Projects/LPC134...43CodeBase.aspx
http://www.microbuilder.eu/Projects/LPC134...umentation.aspx

Но там вроде как похожий код, тоже без __enable_interrupt().
Только баг бутового (*rom)->pUSBD->init_clk_pins() описан. Точнее полубаг. Ядро начинает работать на 48 МГц, хотя это не обязательно и не всегда удобно.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 7 2010, 12:47
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(GetSmart @ Sep 7 2010, 02:59) *
Нашёл такую вот инфу
Код
Memory Restrictions: The rom-based HID drivers use sections 0x10000050 to 0x10000180 of the on-chip RAM, meaning that you will need to configure the linker in your toolchain to avoid this area. Any attempt to use this memory for your own code will almost certainly result in system failure. The project files provided with the LPC1343 Code Base are configure to exclude these chunks of memory from system use, but if you are implementing your own custom project and making use of rom-based HID you will need to make sure the linker is properly configured to avoid this memory range.


Из исходников в сети нашёл только один
http://www.microbuilder.eu/Projects/LPC134...43CodeBase.aspx
http://www.microbuilder.eu/Projects/LPC134...umentation.aspx

Но там вроде как похожий код, тоже без __enable_interrupt().
Только баг бутового (*rom)->pUSBD->init_clk_pins() описан. Точнее полубаг. Ядро начинает работать на 48 МГц, хотя это не обязательно и не всегда удобно.


Я учел, что нужно оставить место для аппартного усб стека и прописал это в файл компановщика, так как описано в апликейшин ноте по усб на этот проц.
Все равно не работает. Подпаял джитаг. Почистил примеры яра от инициализаций дисплеев и прочего. По прежнему HID и VCP примеры не работают. Пример микрофона работает.

После отладки своего проекта получил следующее:
Увидел, что в моем проекте не проходит функция (*rom)->pUSBD->init_clk_pins(); Отладчик на ней останавливается. Разбираюсь, в чем может быть дело.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 9 2010, 12:48
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Примеры победил. Ошибка была в плате. На вывод USB_VBUS не было подано +5V от разъема. Подал - все заработало! 08.gif
И мышка и виртуальный ком порт. Только драйвер на VCP под виндовс 7 не захотел ставиться.

Мой проект пока не работает. IAR не компилирует обработчик прерывания:
Код
void USBIRQ_IRQHandler(void)
{
  (*rom)->pUSBD->isr();
}


В чем может быть дело?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 9 2010, 13:35
Сообщение #23


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Дело в том, что не подключен свой или стандартный startup.s

Его можно взять из проекта с примером.

Точнее даже так. В том стартапе, который подключается (ИАРом?) по умолчанию имена обработчиков (в том числе и от USB) могут отличаться. Поэтому варианта два.
1. Узнать имя и изменить своё имя обработчика.
2. Использовать всегда свой стартап и своё имя (любое) обработчика в майне и в стартапе.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 9 2010, 13:41
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(GetSmart @ Sep 9 2010, 17:35) *
Дело в том, что не подключен свой или стандартный startup.s

Его можно взять из проекта с примером.

Точнее даже так. В том стартапе, который подключается (ИАРом?) по умолчанию имена обработчиков (в том числе и от USB) могут отличаться. Поэтому варианта два.
1. Узнать имя и изменить своё имя обработчика.
2. Использовать всегда свой стартап и своё имя (любое) обработчика в майне и в стартапе.


Вариант 1 - ошибка в имени обработчика. Подсмотрел в стартапе rolleyes.gif , заменил на void USB_IRQHandler(void) и все сразу заработало. Спасибо!

В общем мне процессор очень понравился, если бы не мои ошибки, то вообще было бы все замечательно. Аппаратный хид работает как часы.

Всем спасибо за внимание.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
igorsk
сообщение Sep 9 2010, 22:10
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 22-03-10
Пользователь №: 56 131



Ещё подсказка на будущее - при компиляции в С++ режиме стандартные обработчики нужно объявлять как С-функции:

extern "C" void USB_IRQHandler()
{
...
}
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Sep 19 2010, 18:09
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(igorsk @ Sep 10 2010, 02:10) *
Ещё подсказка на будущее - при компиляции в С++ режиме стандартные обработчики нужно объявлять как С-функции:

extern "C" void USB_IRQHandler()
{
...
}


Это сделано.

Вопрос такого плана. Может кто имеет опыт работы с HID устройством. Вытаюсь организовать передачу данных от устройства в ПК без потерь. В процессоре в функции GetInReport() стоит счетчикЮ который инкрементируется каждый раз, когда вызывается функция. В проге на ПК делается следующее, в цикле параллельного процесса вызывается постоянно функция ReadFile() и читаются данные из устройства. Иногда наблюдаю пропуски пакетов. Такая задача реализуема или это по другому делается?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post

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

 


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


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