[AVR]/AT90USB2012. 1. 25. 21:43

[AT90USB1287-EX] USB Host Test - 간단히 USB 메모리스틱 인식하기

[AT90USB1287-EX] USB Host Test - 간단히 USB 메모리스틱 인식하기

ATMEL에서 제공하는 MS예제가 정상 동작을 하지 않는다.
데모를 위해 복잡한 기능들이 포함되어 있어 수정하기가 까다롭다.
잘 안될때는 분해 해서 하나씩 테스트 하는것이 이해하기도 좋고 관리에있어 편리할것 같다.

간단히 메모리 스틱을 인식하는 아주 간단한 예제를 작성해 보도록 하자.


일단 ATMEL에서 제공하는 기본 Lib파일을 드라이버 폴더에 복사 한다.
(그대로 사용하기는 좀 힘들고 include path 설정을 좀 수정할 필요가 있다.)





가장 기본이 되는 Lib파일을 인식 시킨다.






AT90USB1287 USB 메모리 스틱 인식 테스트 예제코드
코드 자체는 아주 단순하게 동작한다.
usb_task_init() 함수로 USB초기화 하고 usb_task()함수로 USB관련 처리를 하도록 하면 된다.
이후 ProcessMS()함수에서 메모리 스틱 인식 및 해지에 관련된 이벤트를 받아서 처리하면 쉽게 작성 할 수 있다.

USB 메모리 스틱을 인식하면 LED 점등되고 해지하면 소등되는 예제이다.
//-----------------------------------------------------------------------------
int main(void)
{
 //시스템 초기화
 SystemInit();
 
 //LED포트 초기화
 Led1Init();
 Led1On();

 Led2Init();
 Led2On();

 //UART Init
 DebugInit(BAUD_57600);
 DebugPrint("[AT90USB1287-EX] Test Program - USB Host\r\n");

 //USB초기화
 usb_task_init();

 while(1)
 {
  usb_task();
  ProcessMS();
 }
}
//-----------------------------------------------------------------------------



AT90USB1287 USB 메모리 스틱 인식 처리 함수
//USB 메모리 스틱 인식 처리
void ProcessMS(void)
{
 //메모리 스틱 인식되면...
 if( Is_host_ready() )  
 {
  if(Is_new_device_connection_event())
    {
      Led1On();
   DebugPrint("New Device Connected\r\n");
  }
 }

 //연결 해지되면..
 if (Is_device_disconnection_event())
 {
  Led1Off();
  DebugPrint("Disconnection...\r\n");
 }
}


Posted by nexp

댓글을 달아 주세요