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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> и опять вопрос об драйвере obdev, AVR - CDC
Br.Misha
сообщение Aug 30 2009, 19:21
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



Здраствуйте!
Вобщем хочу сделать девайс который будет подключаться к ЮСБ и распознаваться как ещё один СОМ порт.
Всякие дополнительные микрухи использовать не хочу поэтому хочу сделать на софтовом юсб от известного всем obdev.
На сайте http://www.recursion.jp/avrcdc/ нашел пример AVR - CDC, только вот я вообще нифига не могу понять где там ф-ция для отправки и ф-ция для приема данных с компа.
Может у кого нить есть небольшой примерчик где просто в бесконечном цыкле передаеться байт или массив на комп или пример, где можна получить принятый байт с компа и загрузить его в переменную(как например в случае обычного юарта ISR(UART_RXC_vect){peremennaia = UDR;}) ? ОЧЕНЬ ПРОШУ, ПАМАГИТЕ!

Заранее БАЛЬШОЯ СПАСИБА!!!!!!!!!
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Aug 31 2009, 06:41
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Нужно немного изменить функцию (файл main.c) usbFunctionWriteOut:
Код
void usbFunctionWriteOut( uchar *data, uchar len ) //---Функция изменена ---//
{
         h2d = *data;
        usbDisableAllRequests();
  
  }

Пример main:
CODE

int main(void)
{
// wdt_enable(WDTO_1S);
odDebugInit();
hardwareInit();
usbInit();
intr3Status = 0;
sei();

for(;;){ /* main event loop */

wdt_reset();
usbPoll();

/* host -> device (пример приема и обработки сообщений) */
if( usbAllRequestsAreDisabled() && 1 /*или флаг*/) {

/*
switch (h2d){ //Пример управления устройством со стороны ПК

case '1': PORTB=1;
break;

case '2': PORTB=0;
break;

} */

usbEnableAllRequests();
}

/* device -> host */ // Передача массива в виртуальный COM
if( usbInterruptIsReady() && flag_sucess_buffer /*флаг передачи*/){
static uchar c;
static uchar k;

for (k=0;k<REPORT_BUFFER_SIZE;k++) {

(usbInterruptIsReady())? c = report_buffer[k], usbSetInterrupt(&c, 1): k--;

wdt_reset();
usbPoll();
if( usbAllRequestsAreDisabled()) usbEnableAllRequests();
}

flag_sucess_buffer=0;
}

#if USB_CFG_HAVE_INTRIN_ENDPOINT3
/* We need to report rx and tx carrier after open attempt */
if(intr3Status != 0 && usbInterruptIsReady3()){
static uchar serialStateNotification[10] = {0xa1, 0x20, 0, 0, 0, 0, 2, 0, 3, 0};

if(intr3Status == 2){
usbSetInterrupt3(serialStateNotification, 8);
}else{
usbSetInterrupt3(serialStateNotification+8, 2);
}
intr3Status--;
}
#endif
}
return 0;
}

Прежде чем передавать, необходимо что то положить в буфер и выставить флаг flag_sucess_buffer...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Aug 31 2009, 07:46
Сообщение #3


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



еси можете, пожалуйста, кинте полностью проэкт. Еси не можте то скажите, в каком примере кода нада исправить то что вы мне сказали smile.gif?

Сообщение отредактировал Br.Misha - Aug 31 2009, 07:52
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Aug 31 2009, 10:01
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(Br.Misha @ Aug 31 2009, 10:46) *
.... Еси не можте то скажите, в каком примере кода нада исправить то что вы мне сказали smile.gif?

Я же сказал:
Цитата
... (файл main.c) ...

AVR-CDC под Atmega8 ...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Aug 31 2009, 14:30
Сообщение #5


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



вот http://upwap.ru/540686 сделал всё как вы сказали.

компилятор сказал что нету переемнный h2d и flag_sucess_buffer, я их обьявил, потом сказал что нету REPORT_BUFFER_SIZE. я думаю, что это должно быть что то типа
#define REPORT_BUFFER_SIZE
а вот что после этого писать я хзsad.gif
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Aug 31 2009, 15:24
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Я делал под более старую версию проекта. Сейчас посмотрел - у меня переделка с 2313 на мегу8 (делается несложно - немного подправить проект и все...). Исходный проект прилагаю:
Прикрепленные файлы
Прикрепленный файл  CDC_2313_2008_01_27.RAR ( 67.76 килобайт ) Кол-во скачиваний: 41
 


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Aug 31 2009, 20:51
Сообщение #7


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



Исправил только настройки юарта и в usbconfig.h выбрал ногу 4 вместо ноги 3. Полключил к ПК а он пишет неопознаное устройство sad.gif. попробовал заменить папку usbdrv на последнюю версию - эфект тот же.

кстате, вы писали что переделали этот код с тини2313 на мегу8. можете кинуть тот, что под мегу?
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Aug 31 2009, 21:00
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(Br.Misha @ Aug 31 2009, 23:51) *
Исправил только настройки юарта и в usbconfig.h выбрал ногу 4 вместо ноги 3...

Нафига? И в каком проекте? То что я написал делали?


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Aug 31 2009, 21:43
Сообщение #9


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



Потому что к юсб у мня прицеплена мега8 а в Вашем проэкте тини2313. Я вобщем то с тинек испльзую только тини13 (еси какой та мелкий девайс), а так... только мегиsmile.gif

Только что откомпилировал Ваш проэкт переставив в usbconfig.h ногу 3 на 4, поставил частоту 16Мгц(12 у меня нету), изменил UBRRL = 77; на UBRRL = 103; (для 16МГц), больше ничего не трогал но комп всё равно говорит "я хз что за девайс в ЮСБ"..........

Сообщение отредактировал Br.Misha - Aug 31 2009, 21:52
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Aug 31 2009, 21:54
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



А зачем ноги переопределять? Оставьте их в покое. Что 2313, что м8 подключаются к USB по линиям PD2 и PD3. Для того чтобы перенести проект на m8 достаточно в его свойствах указать тип МК.
p.s.
Цитата
больше ничего не трогал но комп всё равно говорит "я хз что за девайс в ЮСБ"

Забавно, проц 2313, зашили в мегу и удивляетесь, да еще и с кварцем на 16...
p.p.s.
Цитата
Только что откомпилировал Ваш проэкт...

Проект пишется с буквой "е"...
Кроме того, он не мой, а в чистом виде осамовский. И абсолютно рабочий. Что в нем менять я написал. Вы же, как обычно, на это внимание не обратили...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Sep 1 2009, 13:36
Сообщение #11


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



Goodefine, еси я тя сильно задолбал то сорри, просто у меня не хочет это работать.
Вобщем смотрите что я сделал:

Скачал ваш проект, распаковал, открыл. В файл usbconfig.h есть строка #define USB_CFG_DMINUS_BIT 3, это означает что D- от юсб припаян к PD3 но в моей плате он на PD4 поэтому я написал так: #define USB_CFG_DMINUS_BIT 4, сохранил файл. Зашел в настройки проекта, там выбран tiny2313 и частота 12000000, а у меня мега8 с частотой 16Мгц поэтому я выбрал
Device: atmega8
Frequency: 16000000. нажал ОК.
Потом в main.c нашел строку UBRRL = 77; это значит, что АППАРАТНЫЙ юарт при 12МГц работает на скорости 9600bps но так как у меня 16МГц то для этой скорости нада написать UBRRL = 103;
Откомпилировал проект, загрузил в МК, подключил к компу а ПК написал что неизвестное устройствоsad.gif

вроде всё сделал правильно но я хз почему не работаетsad.gif
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Sep 1 2009, 13:42
Сообщение #12


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

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Frequency: 16000000. нажал ОК.
нада написать UBRRL = 103;

вот это явно лишнее


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Sep 1 2009, 14:27
Сообщение #13


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



гы......

а эт почему?
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Sep 1 2009, 15:19
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(Br.Misha @ Sep 1 2009, 16:36) *
... но в моей плате он на PD4 поэтому я написал так: #define USB_CFG_DMINUS_BIT 4, сохранил файл. Зашел в настройки проекта, там выбран tiny2313 и частота 12000000, а у меня мега8 с частотой 16Мгц поэтому я выбрал...

Что я могу сказать... Попробуйте запустить проект с минимальными телодвижениями - переделайте себе плату на использование 3-й ноги порта D и поставьте кварц на 12 Мгц. Дальше будет видно...


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Sep 1 2009, 19:47
Сообщение #15


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



к сожалению кварца 12Мгц у меня нету и в магазине я их ещё ниразу не видел smile.gif. Но вот только что пробовал переставить на PD3(а прошивке и на плате) но опять не работало.
Многие проекты на этом драйвере скачаные с инета работают, примеры что шли вместе с драйвером тоже, а вот это не хочет sad.gif
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 - 13:21
Рейтинг@Mail.ru


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