'HID'에 해당되는 글 11건
- 2011.02.19 ECG 테스트 - USB 데이터 전송 및 그래프 표시 테스트 (USB HID이용)
- 2010.09.12 [AT90USB162 EVM] HID Mouse 만들기 (3)
- 2008.12.20 STM32 USB 테스트 - USB HID이용 이미지파일 전송 테스트 (4)
- 2008.10.05 [ATmega8-s EVM] USB HID Keyboard 예제 작성
- 2008.07.05 [PIC18F4x EVM] 관련자료
[SENSOR]/Sensor2011. 2. 19. 14:27
[AVR]/AT90USB2010. 9. 12. 13:51
[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] 하드웨어에 맞게 설정한다.
마우스 인식후 실제 마우스 동작에 따른 이벤트 처리는 is_usb_mouse_event()함수에서 설정하면 되고 이 예제에서는 마우스 클릭에 따라 LED가 On/Off되도록 수정했다. is_usb_mouse_event()함수는 main에서 10ms 주기로 수행된다. 물론 실행 주기의 변경도 가능하다.
AT90USB162 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)
#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;
}
:
}
{
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 테스트 동영상
[ST_MICRO]/STM322008. 12. 20. 22:30
STM32 USB 테스트 - USB HID이용 이미지파일 전송 테스트
STM32 USB HID를 이용하여 PC에서 이미지 파일을 전송하는 예제를 테스트 해 보았다. 표준 HID라 디바이스 드라이버는 필요없다.
STM32 HID 펌웨어 소스
프로그램을 실행시키면 장치관리자에 "USB 휴먼이터페이스 장치"로 인식된다.

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

STM32 COM26T2844 TFT LCD모듈 테스트 동영상
"
STM32 USB HID를 이용하여 PC에서 이미지 파일을 전송하는 예제를 테스트 해 보았다. 표준 HID라 디바이스 드라이버는 필요없다.
STM32 HID 펌웨어 소스
프로그램을 실행시키면 장치관리자에 "USB 휴먼이터페이스 장치"로 인식된다.
MFC를 이용하여 간단히 HID테스트 가능한 프로그램을 작성해 보았다. 이미지(BMP)파일을 읽어서 USB로 전송하는 예제이다.
STM32 COM26T2844 TFT LCD모듈 테스트 동영상
"
댓글을 달아 주세요
[INTERFACE]/USB2008. 10. 5. 21:22
[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;
}
//-----------------------------------------------------------------------------
int main(void)
{
Led1Init();Led2Init();
Led1Off();Led2On();
InitKeyboard();
usbInitFunction();
enable();
for(;;)
{
usbPoll();
ProcessKeyboard();
}
return 0;
}
//-----------------------------------------------------------------------------
댓글을 달아 주세요
[Microchip]/PIC18F2008. 7. 5. 10:43
[PIC18F4x EVM] 관련자료

예제 Source Code - PIC18F4450 USB HID Mouse, Keyboard, CDC 예제
회로도:
테스트 동영상
댓글을 달아 주세요