2014/10/20 08:37

USB CDC는 막힌 듯?

 USB 구현에 CDC라는게 있는데 통신장치 구현에 사용되는 표준으로 USB의 장치에 기입되는 정보는 바탕으로 ACM으로 모뎀처럼 사용할 수 있는게 있었는데, 최신의 운영체제에서는 막힌 것 같다. 윈도우즈의 경우에는 usbser.sys라는 표준 드라이버가 있는데 인식을 못하는 현상이 발생. 망했다.


 이 문제는 해결하는 가장 좋은 방법은 HID로 설정을 변경하는 것. 마우스나 키보드, 조이스틱이 구현이 가능하다. USBTinyISP 조차도 드라이버는 libusb를 통해서 사용을 하고 있다. USB-Serial의 경우도 대부분 CDC-ACM은 피하고 있는 것을 보니 안되나보다.


 좀 더 확인을 해보고 설정을 바꿔야 할 듯.


저작자 표시 비영리 변경 금지

'하드웨어' 카테고리의 다른 글

USB CDC는 막힌 듯?  (0) 2014/10/20
USBTiny 실험.  (0) 2014/10/17
avr-gcc 4.9.2  (0) 2014/10/14
USBTinyISP 만들기.  (0) 2014/10/09
아두이노 전원 문제.  (0) 2014/09/27
간단한 순차점등 LED회로.  (0) 2014/09/22
Trackback 0 Comment 0
2014/10/17 22:26

USBTiny 실험.

 ATTiny4313에 cdc-io라는 펌웨어를 2313용을 4313으로 확장해서 기능을 추가한 펌웨어를 실험삼아 구워봤다. cdc-io는 정리대는 대로 소스를 업로드할 예정. 대화형식으로 AVR의 기능을 접근하는 것인데 레지스터와 기능들(인터럽트등은 제외)을 활성화할 수 있다. 대부분의 레지스터의 접근이 가능. 주로 데이터 신호의 ON/OFF이니 복잡한 기능은 사용하지 않을 것이지만 문자 명령으로 조정할 수 있다는 뭔가 매력적인 부분이 있다.


 처음 시도에서는 칩을 프로그램하는데 몇몇 문제가 생겼다. 구워지기는 하는데 검증과정에서 어느 부분에 자꾸 오류가 생기는 것 그래서 새로 도착한 0.5W 제너로 교체하고 연결저항을 62(원래는 68)로 풀업을 1.5K로 다시 교체하니 정상적으로 동작. 브레드보드에 올려서 하느라 아마 접촉 불량이 문제가 되었던 듯 싶은데 그냥 무식하게 교환했다. 정말 되는지 궁금해서 =ㅅ=; 커넥터로 소켓을 올리고 끼워서 작업하니 아무런 문제가 없이 제대로 구워졌다.


 연결저항이 68인것은 갑자기 솟아오르는 신호가 넘치는 것을 방지하기 위한 것으로 어느 해외 블로그를 보니 68정도가 가장 피크 전압을 막을 수 있는 최적값이었다. 1.5K는 대기시 전류량을 위한 것으로 이는 USB규정에 따른 것. USB의 직접 연결부는 역시 68과 1.5K와 0.5W 3.6V제너(1N5227B를 구입)를 연결해줘야 정신건강에 이로운 것 같다.


 여튼 몇번을 칩을 프로그래밍하는 실험해보고 스샷을 만들었다.



 MCU 인식이나 퓨즈값 저장. 검증등. 기능상엔 아무런 문제가 없었고 편했다.


(추가) 이래저래 실험한 결과. USB인터페이스엔 큰 문제가 없었다. 쓰기오류가 발생한 원인은 쓰기를 하는 경우에 신호가 불안정해서 발생. Bit clock값을 32정도로 하면 안정적이다. 높은 수치일수록 느려진다. 32에선 쓰기는 30초 정도 읽기는 10초 정도가 소요. 만능기판에 날림 배선이라 신호간섭이 조금 있는 듯.


 USBTiny사이트에서 제공하는 소스는 오래되어서 최신의 컴파일러(4.7이상)로 다시 펌웨어를 만들 수 없다. 경고문구에 에러까지. 사소한 경고문에도 펌웨어는 제대로 동작하지 않았던 듯. 컴파일하지 않아도 미리 컴파일된 펌웨어가 포함되어 있다.


정식 배포판은 업데이트 기록에 1.3까지인데  https://github.com/jwatte/usbtiny 에서 받은 것은 1.6으로 되어 있다. 친절하게 USBTinyISP라는 폴더에 담겨있다. 4.9.2로 컴파일하면 always_line에 경고문이 뜨는데 간단히 뒤에 공백과 함께 inline이라고 넣어주기만 하면 된다. 인터럽트 핸들러등을 손을 봐서 펌웨어의 안정성이 향상된 것 같다.


usbtiny-master.zip


 USBTiny의 탐구는 이것으로 끝.


avrstudio 4.19의 프로젝트로 작업한 내용이 있는 압축파일.

usbtiny-master-1.6-4.9.2.zip


저작자 표시 비영리 변경 금지

'하드웨어' 카테고리의 다른 글

USB CDC는 막힌 듯?  (0) 2014/10/20
USBTiny 실험.  (0) 2014/10/17
avr-gcc 4.9.2  (0) 2014/10/14
USBTinyISP 만들기.  (0) 2014/10/09
아두이노 전원 문제.  (0) 2014/09/27
간단한 순차점등 LED회로.  (0) 2014/09/22
Trackback 0 Comment 0
2014/10/14 14:53

avr-gcc 4.9.2

 우짜다보니 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장난감들을 만들기 위한 작업으로 사용 예정. winavr등은 4.4.3인가 버전이 그렇고, 라이브러리는 1.7.1인 것으로 기억.


 cdc-io라는 것을 만들어본 후, 다른 구상을 해봐야겠다.


 스냅샷 파일엔 make.exe가 없다. 그냥 mingw에서 make를 찾아서 그냥 넣어주면 되니 걱정할 일은 아니다.


 부품이 도착하는대로 구워서 잘 되었으면 하는 바램. =ㅅ=;


 그리고 새로 찾은 avrdude의 gui 프론트엔드.


http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/




저작자 표시 비영리 변경 금지

'하드웨어' 카테고리의 다른 글

USB CDC는 막힌 듯?  (0) 2014/10/20
USBTiny 실험.  (0) 2014/10/17
avr-gcc 4.9.2  (0) 2014/10/14
USBTinyISP 만들기.  (0) 2014/10/09
아두이노 전원 문제.  (0) 2014/09/27
간단한 순차점등 LED회로.  (0) 2014/09/22
Trackback 0 Comment 0


티스토리 툴바