[SENSOR]/Sensor2011. 2. 19. 14:27

ECG 테스트 - USB 데이터 전송 및 그래프 표시 테스트 (USB HID이용)

ECG 테스트 - USB 데이터 전송 및 그래프 표시 테스트



프로젝트 용으로 만들었던 USB로 ADC데이터를 그래프로 출력하는 보드를 이용해서 ECG데이터 수집 테스트를 진행 했다.
정밀 16비트 ADC ad8320을 이용하기 때문에 데이터는 깨끗하게 출력되는것 같다. 몇가지 파라메터만 간단히 변경해서 출력 데이터 확인 했다.

ECG 출력 PC프로그램



ECG 테스트 동영상


Posted by nexp
TAG AD8320, ECG, HID, USB

댓글을 달아 주세요

[AVR]/AT90USB2010. 9. 12. 13:51

[AT90USB162 EVM] HID Mouse 만들기

[AT90USB162 EVM] HID Mouse 만들기


AT90USB162는 AVR코어에 USB기능이 있는 칩이다. 저렴하게 그리고 기존 AVR코드를 활용해서 USB기능을 추가하여 제작할 경우 유용하게 사용될수 있다.

Atmel사에서 제공하는 예제를 이용하여 HID Mouse를 간단히 만들어 보았다.
우선 마우스의 구동을 위해 스위치가 있는 확장보드를 이용해 하드웨어를 구성한다.  각 키에 따라 UP(PB0), Down(PB1), Left(PC5), Right(PB6)를 점퍼 이용하여 설정.



그리고 보드 자체의 LED와 스위치를 이용해 마우스 클릭 버턴 Click(PD1) 을 구현한다.


AT90USB162 HID Mouse 소스코드
(소스코드)

gcc를 이용한 AVRStudio를 이용하여 컴파일 가능하다.
stk526.h 파일의 마우스 이동을 설정하는 키 및 LED 정의를 [AT90USB162 EVM] 하드웨어에 맞게 설정한다.
//Key define
#define   Joy_init()                Cbi(DDRC, BIT5|BIT6);Cbi(DDRB, BIT0|BIT1);Sbi(PORTC, BIT5|BIT6);Sbi(PORTB, BIT0|BIT1);
#define   Push_button_init()        Joy_init()

#define   Is_joy_left()             (((PINC&BIT5) == 0) ? TRUE : FALSE)   
#define   Is_joy_not_left()         (((PINC&BIT5) == 0) ? FALSE : TRUE)
#define   Is_button_left()          Is_joy_left()
#define   Is_button_not_left()      Is_joy_not_left()

#define   Is_joy_middle()           FALSE
#define   Is_joy_not_middle()       TRUE
#define   Is_joy_select()           Is_joy_middle()
#define   Is_joy_not_select()       Is_joy_not_middle()
#define   Is_button_middle()        Is_joy_middle()
#define   Is_button_not_middle()    Is_joy_not_middle()

#define   Is_joy_right()            (((PINC&BIT6) == 0) ? TRUE : FALSE)
#define   Is_joy_not_right()        (((PINC&BIT6) == 0) ? FALSE : TRUE)
#define   Is_button_right()         Is_joy_right()
#define   Is_button_not_right()     Is_joy_not_right()

#define   Is_joy_down()             (((PINB&BIT1) == 0) ? TRUE : FALSE)
#define   Is_joy_not_down()         (((PINB&BIT1) == 0) ? FALSE : TRUE)
#define   Is_button_down()          Is_joy_down()
#define   Is_button_not_down()      Is_joy_not_down()

#define   Is_joy_up()               (((PINB&BIT0) == 0) ? TRUE : FALSE)
#define   Is_joy_not_up()           (((PINB&BIT0) == 0) ? FALSE : TRUE)
#define   Is_button_up()            Is_joy_up()
#define   Is_button_not_up()        Is_joy_not_up()

#define   Hwb_button_init()         Cbi(DDRD, BIT1);Sbi(PORTD, BIT1)
#define   Is_hwb()                  (((PIND&BIT1) == 0) ? TRUE : FALSE)


마우스 인식후 실제 마우스 동작에 따른 이벤트 처리는  is_usb_mouse_event()함수에서 설정하면 되고 이 예제에서는 마우스 클릭에 따라 LED가 On/Off되도록 수정했다. is_usb_mouse_event()함수는 main에서 10ms 주기로 수행된다. 물론 실행 주기의 변경도 가능하다.
bit is_usb_mouse_event(void)
{
   bit usb_mouse_event_stored;
   Usb_mouse_report_reset();

   if(Is_device_enumerated())
   {
  //마우스 버턴에 따라 LED표시
  if(Is_mouse_click_left_event())Led1On();
  else Led1Off();
  
  if(Is_mouse_up_event())Led2On();
  else Led2Off();  

//마우스 이동 및 버턴에 따를 처리
  if(Is_mouse_click_left_event())
  {
   Usb_mouse_click_left();
   usb_mouse_event_stored = 1;
  }

  if(Is_mouse_release_left_event())
  {
   Usb_mouse_release_left();
   usb_mouse_event_stored = 1;
  }

  if (Is_mouse_up_event())
  {
   Usb_mouse_up();
   usb_mouse_event_stored = 1;
  } 

  if (Is_mouse_left_event())
  {
   Usb_mouse_left();
   usb_mouse_event_stored = 1;
  }

  if (Is_mouse_right_event())
  {
   Usb_mouse_right();
   usb_mouse_event_stored = 1;
  }

  if (Is_mouse_down_event())
  {
   Usb_mouse_down();
   usb_mouse_event_stored = 1;

:
}


AT90USB162 HID Mouse 테스트 동영상
Posted by nexp

댓글을 달아 주세요

  1. 비밀댓글입니다

    2010.09.30 14:44 [ ADDR : EDIT/ DEL : REPLY ]
  2. 킹보스

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.04.03 20:06 [ ADDR : EDIT/ DEL : REPLY ]
  3. breeze

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.05.17 18:04 [ ADDR : EDIT/ DEL : REPLY ]

[ST_MICRO]/STM322008. 12. 20. 22:30

STM32 USB 테스트 - USB HID이용 이미지파일 전송 테스트

STM32 USB 테스트 - USB HID이용 이미지파일 전송 테스트
STM32 USB HID를 이용하여 PC에서 이미지 파일을 전송하는 예제를 테스트 해 보았다. 표준 HID라 디바이스 드라이버는 필요없다.

STM32 HID 펌웨어 소스

프로그램을 실행시키면 장치관리자에 "USB  휴먼이터페이스 장치"로 인식된다.



MFC를 이용하여 간단히 HID테스트 가능한 프로그램을 작성해 보았다. 이미지(BMP)파일을 읽어서 USB로 전송하는 예제이다.



STM32 COM26T2844 TFT LCD모듈 테스트 동영상
"


Posted by nexp
TAG HID, STM32, USB

댓글을 달아 주세요

  1. 안녕하세요, 우연히 들르게 되었는데 ^^
    usb hid와 mfc통신 관련해서 간단한 조언을 좀 구하고 싶습니다~
    혹 댓글 보시게 되면 답장 부탁드리겠습니다 ^^

    herster79@naver.com

    2009.08.15 16:18 [ ADDR : EDIT/ DEL : REPLY ]
  2. hid driver를 MFC에서 불러와서 사용할 수 있는 부분에 대해 궁금하구~
    일반 hid 장치로 인식하게 할 경우에 디스크립터부분을.. 따로 지정하지 않는건지 음~

    2009.08.15 16:29 [ ADDR : EDIT/ DEL : REPLY ]
  3. ㅋㅋ

    usb_desc 파일을 빼놓고 올리셨네요

    실수로 빼놓은건 아닌거 같은데??

    2010.03.15 17:48 [ ADDR : EDIT/ DEL : REPLY ]
  4. 겨울이가고

    관리자의 승인을 기다리고 있는 댓글입니다

    2019.08.16 13:41 [ ADDR : EDIT/ DEL : REPLY ]

[INTERFACE]/USB2008. 10. 5. 21:22

[ATmega8-s EVM] USB HID Keyboard 예제 작성

[ATmega8-s EVM] USB HID Keyboard 예제 작성

사용자 삽입 이미지



[AVR-USB 소프트웨어 스텍] 을 이용하여 USB키보드를 제작해 보았다.
ATmega8 보드에 USB를 연결하면 장치관리자에 "HID 키보드 장치"로 인식되는 것을 확인할 수 있다.




Keyboard 처리
KEY_DATA_REPORT m_KeyBuffer[NUM_KEYS + 1] =
{
 {0, 0},                     // no key pressed
 {MOD_SHIFT_LEFT, KEY_1},
    {MOD_SHIFT_LEFT, KEY_2},
};

void ProcessKeyboard(void)
{
  if(!(ReadKey() & SW1_VALUE))
 {
  if(!m_SwFlag[0])
  {
   //Key Press
   m_SwFlag[0] = 1;
   
   Led1On();
   SendUsbReport(&m_KeyBuffer[1], sizeof(KEY_DATA_REPORT));
  }
 }
 else
 {
  if(m_SwFlag[0])
  {
   Led1Off();
   SendUsbReport(&m_KeyBuffer[0], sizeof(KEY_DATA_REPORT));  
   m_SwFlag[0] = 0;
  }
 }

:

}


Atmeg8 USB Keyboard 예제 소스코드
//-----------------------------------------------------------------------------
int main(void)
{
 Led1Init();Led2Init();
 Led1Off();Led2On(); 

 InitKeyboard(); 
 
 usbInitFunction();
 enable();

 for(;;)
 {
  usbPoll();
  
  ProcessKeyboard();
 }
 return 0;
}
//-----------------------------------------------------------------------------


사용자 삽입 이미지
Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC18F2008. 7. 5. 10:43

[PIC18F4x EVM] 관련자료

[PIC18F4x EVM] 관련자료

사용자 삽입 이미지







예제 Source Code - PIC18F4450 USB HID Mouse, Keyboard, CDC 예제



회로도:











테스트 동영상

Posted by nexp

댓글을 달아 주세요