Arduino IDE 1.6.x 버전을 이용하여 간단하게 Attiny85 부트로더 굽기.
이전에 아두이노 IDE 1.0.x 버전 기준으로 Attiny85 부트로더 굽는 법과 삽질 경험에 대하여 포스팅(http://www.dev.re.kr/59) 했었는데, 아두이노 IDE 1.6.4 버전 이상과 그 안에 포함된 개개선된 ISP 코드 덕분에 이제는 부트로더 굽는 것이 더 쉬워졌다.
콘덴서나 저항을 reset 버튼 사이에 연결하거나 수정된 ISP 를 따로 구해서 사용할 필요가 없어졌다.
이번 시간에는 1.6.x 버전을 이용하여 간단하게 부트로더를 굽는 방법에 대하여 언급할까 한다.
이 포스팅은 Arduino UNO 기준으로 되어있다.
1. Attiny85 라이브러리 설치하기.
먼저 환경설정 메뉴에 들어가면 아래와 같은 화면이 나오는데, Additional Boards Manager URLs 의 텍스트 박스에 다음과 같은 주소를 적는다. (그림에서 빨간 화살표가 가르키는 곳)
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
(아두이노 IDE 1.6.4 로 버전업 하면서 굉장히 편하고 재미있는 기능을 넣은 것 같다.)
이렇게 입력하게 된다면 https://github.com/damellis/attiny/tree/ide-1.6.x-boards-manager 에 있는 파일을 다운로드 받아 보드 매니져에서 볼 수 있게 된다.
두 번째 단계로 상단 메뉴에서 '도구' -> '보드' -> Boards Manager 를 선택한다. 그럼 아래 스샷과 같은 창이 하나 뜨는데, 검색창에 attiny 를 입력하거나 스크롤을 아래로 내리다보면 attiny 항목을 볼 수 있다.
(설치하기 전에 David A. mellis 에게 감사하는 마음을...)
항목을 선택하면 인스톨 버튼이 나온다. 인스톨 버튼을 누르기 전에 콤보박스에서 최신 버전으로 선택 되어 있는지 확인하자.
인스톨이 완료되면 상단 메뉴에서 도구 -> 보드 항목을 살펴보면 가장 아래쪽에 Attiny 가 추가된 것을 확인할 수 있다.
2. 기존의 아두이노에 ISP 굽기.
USB 로 동작하는 ISP 가 없는이상 기존의 아두이노에 ISP 를 올려서 Attiny 에 부트로더를 굽거나 프로그램을 올릴수밖에 없다. 그러기 위해서 ISP를 기존의 아두이노 위에 올려야한다.
상단 메뉴에서 파일 -> 예제 -> ArduinoISP 를 선택한 다음 자신의 아두이노 위에 올려보자.
물론 상단 메뉴의 도구 에서 선택해야 하는 보드와 포트는 기존에 갖고 있던 아두이노를 선택해야 한다.
3. 아두이노와 Attiny85 간의 연결.
<기존 아두이노 IDE 1.0.x 를 이용하여 부트로더를 굽는 방법에 대하여 설명한 포스팅(http://www.dev.re.kr/59)에서 가져온 이미지이다. 수정하기 귀찮으므로 그대로 가져왔다. 이번에 설명하는 아두이노 IDE 1.6.x 이상에서는 아두이노의 9번핀과 Attiny85 의 pin 3 을 연결할 필요는 없다. pin 번호는 아래 그림 참고>
(Pin0 은 D0 , Pin2 는 D1 이다.)
이해를 돕기 위하여 좀 더 자세히 설명하면,
다음 표와 같다. (9번핀 연결할 필요 없음)
ATtiny Reset | ------------------ | Arduino 10 |
| ----------------- |
|
ATtiny GND | ------------------ | Arduino GND |
|
|
|
ATtiny VCC | -------------------- | Arduino 5v |
ATtiny Pin2 | -------------------- | Arduino 13 |
ATtiny Pin1 | -------------------- | Arduino 12 |
ATtiny Pin0 | -------------------- | Arduino 11 |
4. 부트로더 굽기
상단 메뉴에서
도구 -> 보드 -> Attiny 선택.
도구 -> 프로세서 -> Attiny85
도구 -> Clock -> 8 Mhz (internal)
도구 -> 프로그래머 -> Arduino as ISP
를 선택한다.
만약 Clock 을 1 Mhz (internal) 로 선택한다면 최소 1.8v 이상의 저전압에서 사용할 수 있다.
그리고 가장 하단의 부트로더 굽기를 선택하면....
부트로더가 생각보다 빠른 속도로 구워진다.
5. 테스트
잘 되는지 테스트하기 위하여 LED 를 하나 연결해 보고 PWM 으로 깜빡이도록 해보았다.
Attiny85 의 PWM 제어 핀은 0 번과 1번이다.
전원을 5V 를 공급해준다. 그리고 테스트 코드를 입력한다.
Attiny85 Test:
#define LED_PIN 0 bool gIncreaseMode = false; byte gLedValue = 0; void setup() { } void loop() { analogWrite(LED_PIN, gLedValue); gLedValue += (gIncreaseMode)?-1:1; if(gLedValue == 255) { gIncreaseMode = true; } else if(gLedValue == 0) { gIncreaseMode = false; delay(100); } delay(3); }
아래는 결과 영상.
Attiny85 에 프로그램을 올릴 때 마다 빵판에 케이블을 꼈다 뺐다 하기 귀찮아서 아래와 같이 프로그래머 보드를 대충 만들었다.
아래 영상의 LED 도 pin 0 번과 연결되어 있다.