Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 13.11.2012, 13:58  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: AT89C5131 прием и передача данных по USB

rihkov а как передаешь на точку OUT, покажи
Реклама:
Hives вне форума  
Непрочитано 13.11.2012, 23:32  
rihkov
Прописка
 
Регистрация: 15.06.2006
Адрес: РФ г.Тюмень
Сообщений: 205
Сказал спасибо: 3
Сказали Спасибо 19 раз(а) в 19 сообщении(ях)
rihkov на пути к лучшему
По умолчанию Re: AT89C5131 прием и передача данных по USB

Что касается стороны ПК то это функции ReadFile() WriteFile() написал программу на C++ Builder6 все работает нормально устройство открывается получаю всю информацию об устройстве, и могу принимать данные с устройства, устройство открываю в режиме чтение/запись, есть реализация как в асинхронном режиме так и в синхронном, но при обращении к функции записи WriteFile() возвращает ошибку 5 (нет доступа).
Код:
void main()/*ОСНОВНАЯ ФУНКЦИЯ ПРОГРАММЫ*/
{
  Set_x2_mode();
  LEDCON = 0x0F;
  P3_2 = 1;/*КНОПКА*/
  P3_3 = 1;/*ЛАМПА КРАСНАЯ*/
  /*P3_4 = 1;/**/
  P3_5 = 1;/*ЛАМПА ЗЕЛЕНАЯ*/
  P3_6 = 1;/*ЛАМПА ЖЕЛТАЯ*/
  
  usb_init();/*ИНИЦИАЛИЗАЦИЯ USB*/

  while(1) 
  {
	usb_endpoint_all();/**/
	Fill_EP1_FIFO();/**/		
  }
}
Код:
/*=================================================  ==*/
void usb_endpoint_all()/**/
{
      /*=====================================*/
      if(usb_connected == 1)/**/
      {
	    Usb_select_ep(0);
        if(Usb_setup_received())/*ФЛАГ ПРЕРЫВАНИЯ ПРИ ПОЛУЧЕНИИ ПАКЕТА SETUP*/ 
        { 
		  P3_5 = ~P3_5;/*ЛАМПА ЗЕЛЕНАЯ*/
		  usb_read_request();/*НАЧАТЬ ПРОЦЕСС НУМЕРАЦИИ (СБРОС ФЛАГА ПАКЕТА SETUP ВНУТРИ ФУНКЦИИ)*/ 
        }
	    /*=====================================*/
	    Usb_select_ep(1);/*КОНЕЧНАЯ ТОЧКА 1 (ПЕРЕДАЧА ДАННЫХ В ПК)*/
        if(Usb_tx_complete())/*ФЛАГ ПРЕРЫВАНИЯ ПО ОКАНЧАНИИ ПЕРЕДАЧИ ВХОДЯЩИХ ДАННЫХ*/
	    { 
		  P3_3 = ~P3_3;/*ЛАМПА КРАСНАЯ*/
          Usb_clear_tx_complete();/*СБРОС ФЛАГА*/   
          end_point1_ready = FALSE;/*ГОТОВНОСТЬ К ПЕРЕДАЧЕ ДАННЫХ*/
        }
		/*=====================================*/
	    Usb_select_ep(2);/*КОНЕЧНАЯ ТОЧКА 2 (ПРИЕМ ДАННЫХ ОТ ПК)*/
        if(Usb_rx_complete())/*БИТ 00000010 ФЛАГ ПРЕРЫВАНИЯ ПРИ ПРИНЯТИИ ИСХОДЯЩИХ ДАННЫХ*/
	    { 
		  P3_6 = ~P3_6;/*ЛАМПА ЖЕЛТАЯ*/
          read_ep2();/**/

        }
		/*=====================================*/
	  }
      /*=====================================*/
}
/*=================================================  ==*/
Код:
/*=================================================  ==*/
void read_ep2()/*ФУНКЦИЯ ПРИЕМА ДАННЫХ ОТ ПК*/
{
  data int i;
  data unsigned char usb_read_data[8];
  Usb_select_ep(2);/**/

  ACC = Usb_read_byte();/*ЧТЕНИЕ ДАННЫХ С КОНЕЧНОЙ ТОЧКИ*/

  for(i=0; i‹8; i++)
  {
    usb_read_data[i] = Usb_read_byte();/*ЧТЕНИЕ ДАННЫХ С КОНЕЧНОЙ ТОЧКИ*/ 
  } 
  if(usb_read_data[1] == 1)
  {
    /*P3_5 = 0;/*ЛАМПА ЗЕЛЕНАЯ*/
  }
  if(usb_read_data[1] == 0)
  {
    /*P3_5 = 1;/*ЛАМПА ЗЕЛЕНАЯ*/
  } 
  Usb_clear_rx();/*СБРОС (ФЛАГ ПРЕРЫВАНИЯ ПРИ ПРИНЯТИИ ИСХОДЯЩИХ ДАННЫХ)*/
}
/*=================================================  ==*/
__________________
Николай
rihkov вне форума  
Непрочитано 14.11.2012, 10:27  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: AT89C5131 прием и передача данных по USB

блин. функцию записи в OUT из билдера так и не покажешь?
Hives вне форума  
Непрочитано 15.11.2012, 01:09  
rihkov
Прописка
 
Регистрация: 15.06.2006
Адрес: РФ г.Тюмень
Сообщений: 205
Сказал спасибо: 3
Сказали Спасибо 19 раз(а) в 19 сообщении(ях)
rihkov на пути к лучшему
По умолчанию Re: AT89C5131 прием и передача данных по USB

Код:
//---------------------------------------------------------------------------
//СИНХРОННАЯ ЗАПИСЬ ДАННЫХ
void __fastcall TForm1::Button8Click(TObject *Sender)
{
  BufferDataWrite[0] = 0x00;
  BufferDataWrite[1] = 0x01;
  BufferDataWrite[2] = 0x01;
  BufferDataWrite[3] = 0x01;
  BufferDataWrite[4] = 0x01;
  BufferDataWrite[5] = 0x01;
  BufferDataWrite[6] = 0x01;
  BufferDataWrite[7] = 0x01;
  
  DWORD BytesLengthWrite = 8;
  //---------------------------------
  if(WriteFile(HidHandle, BufferDataWrite, BytesLengthWrite, &BytesWrite, 0) != 0)//СИНХРОННАЯ ЗАПИСЬ ДАННЫХ
  {
    PrintData(BufferDataWrite);
    Memo1-›Lines-›Add("ЗАПИСАНО БАЙТ");
    Memo1-›Lines-›Add(BytesWrite);
    //CloseHandle(HidHandle);//ЗАКРЫТЬ ХЕНДЕЛ УСТРОЙСТВА
  }
  else
  {
    Memo1-›Lines-›Add("Ошибка чтения WriteFile");
    Memo1-›Lines-›Add(GetLastError());
    //GetLastError()
    if(HidHandle != 0)
    {
      CloseHandle(HidHandle);//ЗАКРЫТЬ ХЕНДЕЛ УСТРОЙСТВА
      Memo1-›Lines-›Add("ХЕНДЕЛ УСТРОЙСТВА ЗАКРЫТ!");
    }
  }
  //----------------------------------
}
//---------------------------------------------------------------------------
Код:
//---------------------------------------------------------------------------
void __fastcall MyThread1::StartDataWrite()
{
  //-------------------------------------------------------------------------
  memset(&WriteOL, 0, sizeof(WriteOL));
  WriteOL.hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
  if(WriteOL.hEvent)
  {
    if(WriteFileEx(HidHandle, BufferDataWrite, BytesLengthWrite, (LPOVERLAPPED) &WriteOL, (LPOVERLAPPED_COMPLETION_ROUTINE) OnCompletionWrite))
    {
      //---------------------------------
      Form1-›PrintData(BufferDataWrite);
      Form1-›Memo1-›Lines-›Add("ЗАПИСАНО");
      Form1-›Memo1-›Lines-›Add("ЗАПИСАНО");
      //---------------------------------
      //CloseHandle(HidHandle);
      //CloseHandle(WriteOL.hEvent);
      // Операция завершена успешно
      //---------------------------------
      //WriteUSB = 0;
      //---------------------------------
    }
    else
    {
      Form1-›Memo1-›Lines-›Add("Ошибка асинхронной записи WriteFile");
      CloseHandle(HidHandle);
      CloseHandle(WriteOL.hEvent);
      //---------------------------------
      WriteUSB = 0;
      //---------------------------------
    }
  }
  else
  {
    Form1-›Memo1-›Lines-›Add("Ошибка CreateEvent");
    CloseHandle(HidHandle);
    CloseHandle(WriteOL.hEvent);
  }
}
//---------------------------------------------------------------------------
rihkov вне форума  
Непрочитано 15.11.2012, 08:16  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: AT89C5131 прием и передача данных по USB

по идее, если у тебя размер репорта = 8 байт (судя по "for(i=0; i‹8; i++)"), при записи в WriteFile ты должен слать 9 байт, где 0 байт содержит индекс точки OUT (обычно 0). при этом слать можно только 1 репорт за вызов. у тебя так? (как у тебя описаны репорты и вообще дескрипторы - не видно)
Hives вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Протокол sony sirc прием и передача artyomugr Микроконтроллеры, АЦП, память и т.д 5 04.06.2011 01:29
Прием-передача импульсного сигнала SwanSwan Делимся опытом 15 30.05.2010 19:44
Высокоскоростная передача и прием в AVR на любой ножке pinco Микроконтроллеры, АЦП, память и т.д 2 30.07.2008 21:25
Proteus прием данных с COM zerion Микроконтроллеры, АЦП, память и т.д 10 28.04.2008 07:15
Передача-прием файлов retcom Автоматика и аппаратура связи 18 23.11.2007 10:42


Часовой пояс GMT +4, время: 22:40.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot