2012년 7월 24일 화요일

ATmega168/328 아두이노 핀 맵핑

참조 : http://arduino.cc/en/Hacking/PinMapping168

ATmega168/328 을 직접 부트로더를 올려서 작업하려면 아두이노에서 보여지는 Analog 핀, Digital 핀이 어느 핀인지 많이 헤깔릴 경우가 있다.게다가 패키지 형태마다 핀번호가 틀리므로 추가로 32TQFP 패캐지 핀번호도 올려 본다.

ATmega8 pin mapping : http://arduino.cc/en/Hacking/PinMapping
ATmega2560 pin mapping : http://arduino.cc/en/Hacking/PinMapping2560



2012년 6월 29일 금요일

브레드 보드위에 아두이노 꾸미기

http://arduino.cc/en/Main/Standalone

위에 링크 설명대로 따라 하면 되는데 뒷부분에 부트로더를 ISP 프로그래머를 사용하는데 아두이노를 하는 분들은 ISP 프로그래머가 없는 경우가 많을 것이다. 그리고 브레드 보드에 연결할 변환보드도 귀하기 힘들다. 그래서 본 블로그의 아두이노에서 부트로더 굽기라는 내용을 참조하여 아두이노로 ISP기능을 구현하여 부트로더를 구우면 될 것이다.

아래 동영상은 Blink 예제를 올려 업로딩해 본 영상이다.


2012년 6월 18일 월요일

arduino로 부트로더 굽기

Arduino Duemilanove 보드를 가지고 있으면 아래 링크의 방법대로 하면 바로 부트 로더를 구을 수 있다고 한다.
http://arduino.cc/en/Tutorial/ArduinoToBreadboard

하지만 Arduino Uno 보드를 가진 사람은 Uno 보드의 auto reset 기능때문에 이 방법대로 할 수 없다고 한다.
Uno 보드에서 부트로더를 굽는 방법은 http://arduino.cc/en/Tutorial/ArduinoISP 에 따라 하면 되는데 먼저 arduino  메뉴의 File > Examples > ArduinoISP 스케치를 업로드한다.
그 후에 만약 외부클럭 없이 브레드 보드 상에 ATmega328/168 칩만 놓고 작업할려면 (16MHz의 외부클럭을 사용하면 메뉴의 Tools > Boards 메뉴에서 "Arduino Duemilanove or Nano w/ ATmega328" 를 선택한다.) 


http://arduino.cc/en/uploads/Tutorial/breadboard.zip 를 받아서 압축을 풀면 boards.txt 파일이 있는데 그 내용을 복사해서 arduino-1.0\hardware\arduino\boards.txt 파일(윈도우의 경우)의 제일 뒤에 첨부한다. 절대 파일에 덮어 쓰면 안된다. 그럼 아래와 같이 Tools > Boards 메뉴에 추가된다. 이제 "ATmega328 on a breadboard (8 MHz internal clock)" 를 선택한다.

그리고 위에 링크 설명처럼 Uno보드의 auto reset 기능을 막기 위해 reset 과 ground 사이에   10uF 캐패시터를 연결해 주던지, reset과 5V 사이에 120 ohm를 연결해준다.
직접 연결하면 회로가 망가질 수 있으니 주의해야 한다. 120 ohm보다 조금 커도 상관은 없는 듯 하다. auto reset 기능이 정지되었는지 확인하는 방법은 Serial Monitor를 열어 놓아 serial port를 사용하면 부트로더가 실행되지 않을 것이다.

그리고 이제 마지막으로 Programmer > Arduino as ISP 를 선택한 후 Burn Bootloader 명령을 실행한다.
참고로 ATmega328p(저전력 설계된 칩)가 아니라 ATmega328 칩에 위와 같이 진행하면

Expected signature for ATMEGA328P is 1E 95 0F Double check chip, or use -F to override this ... 


위와 같은 메세지가 나타나며 작업이 진행이 안될 것이다. 스케치 IDE에서 ATmega328p만 인식을 하기 때문인데 이때는 arduino-1.0-windows\arduino-1.0\hardware\tools\avr\etc\avrdude.conf 파일에서
# ATmega328P 부분의

signature = 0x1e 0x95 0x0F; -> signature = 0x1e 0x95 0x14;


위와 같이 잠시 바꿔 놓고 스케치 IDE를 재실행하면 부트로더를 구울수 있다. 작업 완료 후에는 원상 복귀시켜놔야 한다.

이제 부트로더가 구워졌으면 이 칩에 USB-to-serial 변환기로 작업이 가능할 것이다.