마음 속 하늘은 항상 맑음~!
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의 탐구는 이것으로 끝.
avrstudio 4.19의 프로젝트로 작업한 내용이 있는 압축파일.
'하드웨어' 카테고리의 다른 글
AVR Serial HID 구현. (0) | 2014.10.21 |
---|---|
USB CDC는 막힌 듯? (0) | 2014.10.20 |
avr-gcc 4.9.2 (0) | 2014.10.14 |
USBTinyISP 만들기. (0) | 2014.10.09 |
아두이노 전원 문제. (0) | 2014.09.27 |