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

 
 
 
Reply to this topicStart new topic
> USB C8051F340 и Borland Builder C++, создание приложения
bychkov_vladimir
сообщение Oct 10 2007, 08:25
Сообщение #1


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

Группа: Участник
Сообщений: 106
Регистрация: 1-06-05
Из: Подольск
Пользователь №: 5 629



Добрый день !

где можно найти пример описания хост программы для работы с контроллером C8051F340 созданной в Borland builder C++ c поддержкой USB интерфейса.
пример аналогичный тем, которые поставляються совместно с кит платой по управлению мерцанием светодиодов и т.д.
попытка переделать поставляемые примеры не увенчалась успехом.
очень хотелось бы пример исходника, который приведен в AN039

может кто то сталкивался с подобным - буду признателен !
спасибо !
Go to the top of the page
 
+Quote Post
vladec
сообщение Oct 11 2007, 08:00
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



Делал в свое время на Builder-е HOST-программу для C8051F320, в общем ни каких особых проблем не было. Единственной для меня непреодолимой трудностью оказалось статически прилинковать ихнюю dll в Borland, пришлось работать с ней в режиме динамической подгрузки.
Go to the top of the page
 
+Quote Post
alvol
сообщение Oct 12 2007, 20:15
Сообщение #3


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

Группа: Свой
Сообщений: 153
Регистрация: 15-05-06
Из: Николаев
Пользователь №: 17 119



Цитата(vladec @ Oct 11 2007, 11:00) *
Делал в свое время на Builder-е HOST-программу для C8051F320, в общем ни каких особых проблем не было. Единственной для меня непреодолимой трудностью оказалось статически прилинковать ихнюю dll в Borland, пришлось работать с ней в режиме динамической подгрузки.


тоже работал с C8051F320, но с использованием технологии USBExpress
Dll ихнюю пережал из Visual Studio в BorlandBuilder варинт (утилитка в комплекте с билдером идет), тогда еще глюк был в Dll с определением количества байт в очереди, но его исправили за пару недель, так что все заработало, правда как USB 1.1 и то благодаря USBExpress малек медленнее.
Неудобство этой технологии вызвало использованием ими виртуального прерывания (добавочного), из-за чего, пока не передаст данные USB, процессор не выполняет дальше действия, т.е. работает не как аппаратная реализация, а программная с вызыванием функции. Про это было на буржуйском форуме очень подробно объяснено, что придется идти на уступки по скорости из-за простоты реализации.

если интересно можно будет поискать что-то
Go to the top of the page
 
+Quote Post
oran-be
сообщение Oct 15 2007, 12:42
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



AN139 (не 039, как я понял) предназначен для объяснения тонкостей реализации обязательных ЮСБишных фич. Для построения рабочего креатиффа, не углубляясь в типовые дебри лучше использовать АН169 USBExpress. Тем более, что механизм очень похожий, используется ЕР0 в булк режиме. Исходники есть и на хост, и на функцию.
А добавочное прерывание ничем не оличается от обычного, просто силабовские программеры не нашли другого способа разместить функцию обработки запроса, определяемую пользователем по фиксированному адресу. Им из-за такого метода пришлось на шару вколбасить сохранение и восстановление контекста рабочих регистров - 32 такта нагрузки.
Go to the top of the page
 
+Quote Post
alvol
сообщение Oct 22 2007, 18:19
Сообщение #5


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

Группа: Свой
Сообщений: 153
Регистрация: 15-05-06
Из: Николаев
Пользователь №: 17 119



Цитата(oran-be @ Oct 15 2007, 15:42) *
AN139 (не 039, как я понял) предназначен для объяснения тонкостей реализации обязательных ЮСБишных фич. Для построения рабочего креатиффа, не углубляясь в типовые дебри лучше использовать АН169 USBExpress. Тем более, что механизм очень похожий, используется ЕР0 в булк режиме. Исходники есть и на хост, и на функцию.
А добавочное прерывание ничем не оличается от обычного, просто силабовские программеры не нашли другого способа разместить функцию обработки запроса, определяемую пользователем по фиксированному адресу. Им из-за такого метода пришлось на шару вколбасить сохранение и восстановление контекста рабочих регистров - 32 такта нагрузки.


кста, чтоб не париться с замедлением при заполнении в стеке, можно указать, что нужно использовать банки памяти спец директивой, вроде :

void UART0_Interrupt (void) interrupt 4 using 1 //Interrupt recieve RI0 and transmite TI0 (page 89)
{
}
Go to the top of the page
 
+Quote Post
oran-be
сообщение Oct 23 2007, 17:37
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



Цитата
кста, чтоб не париться с замедлением при заполнении в стеке, можно указать, что нужно использовать банки памяти спец директивой...

Здесь не совсем тот случай. Прерывание используется в либе и поменять банк не получится. А виртуальное прерывание программеры силаба использовали судя по всему по некомпетентности, поскольку им достаточно было объявить абсолютный кодовый сегмент. Видать не нашли. как это сделать. В итоге у них в либе перед вызовом пользовательской функции идет кусок кода, скорее всего накатанный на асеммблере, где восстанавливаются рабочие регистры, но вместо выхода из прерывания происходит калл по адресу виртуального прерывания. Для того, чтобы сделать все по человечески, т.е. использовать отдельный банк и убрать лишние маслания в стеке надо либо написать все по новому, либо выломать код из либы и отрехтовать его.
Go to the top of the page
 
+Quote Post

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

 


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


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