목록AVR (6)
마음 속 하늘은 항상 맑음~!
HID장치를 간단하게 시리얼 통신처럼 이용할 수 있는 방법은 CDC ACM 방법이 운영체제가 막아서 생기는 문제는 해결할 수 있다. 이 방법이 꼭 장점이 강한 것은 아니지만, 간단한 테스트를 위한 하드웨어에서의 응용은 나쁘지 않을거라고 생각된다. 기본적으로 HID의 사용되는 프로그래밍 방법은 같고 단지 주의할 점만 존재한다. 호스트 컴퓨터에서 장치로 USB통해 정보는 받는 부분에 control전송과 인터럽트 전송을 모두 거치는 usbFunctionWriteOut을 쓰는데, 이것은 별로 문제가 되지 않는다. 단지 가끔 NULL데이터를 보내므로 펌웨어에서 체크를 하면 된다. 그리고 데이터의 길이가 버퍼의 길이와 맞추는 작업도 필요하다. 이것은 각각의 구현에 따른 변경이 다르므로 다른 게시물에 업로드한 소스를..
AVR의 소프트웨어 CDC는 운영체제에서 저속이기 때문에 장치의 연결을 끊는 것으로 확인. 그래서 cdc-io를 포기하려 했으나 YAT란 터미널 프로그램에 Serial HID라는 기능이 존재. 구현을 아무리 찾아봐도 없고 결국 삽질을 해가며 직접 구현. 입으로 설명하기엔 너무 많이 모르기 때문에 곤란하고 완성된 소스를 첨부. 이 소스에는 V-USB에서 인터럽트 OUT이 가능한 수정이 담겨있다. 이 수정이 약간 틀려서 교정을 봤다. 예제 4번만 수정되어 있고 출처는 http://lackawanna.hackhut.com/2011/10/06/using-v-usb-and-the-hid-class-part-iiiiii/ USB HID의 레포트를 만드는게 어렵다면 그냥 복사해서 사용하면 된다. 설정시 압축파일에 들..
USB 구현에 CDC라는게 있는데 통신장치 구현에 사용되는 표준으로 USB의 장치에 기입되는 정보는 바탕으로 ACM으로 모뎀처럼 사용할 수 있는게 있었는데, 최신의 운영체제에서는 막힌 것 같다. 윈도우즈의 경우에는 usbser.sys라는 표준 드라이버가 있는데 인식을 못하는 현상이 발생. 망했다. 이 문제는 해결하는 가장 좋은 방법은 HID로 설정을 변경하는 것. 마우스나 키보드, 조이스틱이 구현이 가능하다. USBTinyISP 조차도 드라이버는 libusb를 통해서 사용을 하고 있다. USB-Serial의 경우도 대부분 CDC-ACM은 피하고 있는 것을 보니 안되나보다. 좀 더 확인을 해보고 설정을 바꿔야 할 듯.
ATTiny4313에 cdc-io라는 펌웨어를 2313용을 4313으로 확장해서 기능을 추가한 펌웨어를 실험삼아 구워봤다. cdc-io는 정리대는 대로 소스를 업로드할 예정. 대화형식으로 AVR의 기능을 접근하는 것인데 레지스터와 기능들(인터럽트등은 제외)을 활성화할 수 있다. 대부분의 레지스터의 접근이 가능. 주로 데이터 신호의 ON/OFF이니 복잡한 기능은 사용하지 않을 것이지만 문자 명령으로 조정할 수 있다는 뭔가 매력적인 부분이 있다. 처음 시도에서는 칩을 프로그램하는데 몇몇 문제가 생겼다. 구워지기는 하는데 검증과정에서 어느 부분에 자꾸 오류가 생기는 것 그래서 새로 도착한 0.5W 제너로 교체하고 연결저항을 62(원래는 68)로 풀업을 1.5K로 다시 교체하니 정상적으로 동작. 브레드보드에 올..
우짜다보니 avr-gcc 까지 최신을 찾게 되었다. =_=; mikro 제품처럼 2k워드 제한은 avr쪽에서는 약간 답답한 면이 있을 듯 싶어 avr-studio 4.1x버전과 같이 찾아서 사용. 프로젝트 옵션에 보면 avr-gcc를 따로 선택할 수 있게 되어있다. http://sourceforge.net/projects/mobilechessboar/files/avr-gcc%20snapshots%20%28Win32%29/ 4.8버전이하는 컴파일러 버그에 대한 이야기가 있고 avr-libc가 1.8.0이하여서 그냥 4.9.2로 선택. 펌웨어 크기로는 4.8버전이 더 작다는 비교도 있었지만 tiny2313과 4313의 버그가 없는 것은 avr-libc 1.8.1버전이라서 어쩔 수가 없는 것 같다. USB장난..
이런저런 내용을 뒤지다가 새로운 것을 발견. AVR을 프로그래밍하는 도구로 AVR로 만드는 것으로 저렴하고 몇몇 프로그램이 지원된다. 아두이노도 지원한다는 이야기를 읽은 것도 같다. 1.0.5에서 부트로더를 굽는데 사용한다는 이야기가 있었다. 여튼 새로움과 삽질의 시작이었다. 홈페이지 : https://learn.adafruit.com/usbtinyisp/overview 일단 부품은 간단한데, 2.0리버전은 ATTiny2313과 74AHC125의 칩셋, 그리고 부수적인 부품들이 필요했다. 이 회로의 장점은 ATTiny2313을 이용해서 따로 인터페이스가 없이 USB통신이 가능한 것으로 가격이 저렴한 편. ATTiny2313과 ATTiny2313A은 약간 다르다. 하지만 USBTinyISP는 부가적인 기능..