본문 바로가기

[AVR]/AT90USB

[AT90USB1287] 메모리 스틱 예제 분석

[AT90USB1287] 메모리 스틱 예제 분석

최신의ATMEL에서 제공하는 AT90USB1287 USB Host MS 예제를 다운받아 분석해 보았다.


예제코드의 폴더 구성은 아래와 같다. 여기서 필요한 파일들을 복사하면 될것 같다.




데모 예제의 메인 함수는 아래와 같다.
int main(void)
{  
   wdtdrv_disable();
   //Clear_prescaler();
   scheduler();
   return 0;
}

void scheduler (void)
{
   scheduler_init();
   scheduler_tasks();
}



scheduler_tasks ()함수에서 루프 돌면서 코드가 실행되는 구조이다.
void scheduler_tasks (void)
{
   // To avoid uncalled segment warning if the empty function is not used
   scheduler_empty_fct();

   for(;;)
   {
      Scheduler_new_schedule();
      #ifdef Scheduler_task_1
         Scheduler_task_1();
         Scheduler_call_next_task();
      #endif
      #ifdef Scheduler_task_2
         Scheduler_task_2();
         Scheduler_call_next_task();
      #endif
     :
 }
}


정의된 task는 아래와같다.
#define Scheduler_task_1        usb_task()
#define Scheduler_task_2        storage_task()
#define Scheduler_task_3        ushell_task()
#define Scheduler_task_4        host_ms_task()








결국 main함수는 아래와 같이 구동되고 있다.

int main(void)
{  
 wdtdrv_disable();
 //Clear_prescaler();

 scheduler_init();
 
 while(1)
 {
  usb_task();
  storage_task();
  ushell_task();
  host_ms_task();
 }
 
 return 0;


usb_task() 는 USB인식 및 기본 처리에 관련된 일을 처리 하는 함수 이다.
host_ms_task()함수에서 데모 예제가 동작한다.
하지만 내가 만든 보드에서 정상동작 하는지 알수가 없다. 이 코드를 기반으로 수정이 필요할것 같다. 
반응형