tiny은 가격도 싸고 칩 단독으로 회로구성이 가능해서 꼭 한번 해보고 싶었는데
ISP를 구입하게 되서 프로그래을 해봤습니다.

간단히 LED 8개가 순차적으로 왔다 갔다 하는 예제 입니다.
tiny와 isp를 연결한 모습입니다.
tiny의 1, 2, 3, 5, 6, 10 번핀을 ISP에 각 핀에 연결합니다.
VTG가 VCC 입니다.
저는 매번 결선하기 귀찮아서 핀헤더로 연결했습니다.



led는 11 ~ 20번 즉 PA0 ~ PA7번에 저항과 같이 연결했습니다.
sw는 PB6에 풀다운저항으로 연결하였습니다.
핀헤더와 isp를 제거하고 칩과 led만 남아있는 모습입니다.
전원은 충전지 4개 4.8v를 연결했습니다.
ATTiny26L-8PI는 2.7-5.5V의 전압을 허용하므로 활용도가 높습니다. 
스위치를 누르면 led가 왔다 갔다 합니다.

bascom-avr 소스

체리보드(ATMega128)에는 USB 포트가 있는데 데스크탑PC에서 가상 시리얼 포트를 USB로 전송받을수 있습니다.

따라서 체리보드에 부트로더만 올리면 ISP없이 USB 케이블로 프로그램을 다운로드 할수 있습니다.

mega시리즈 AVR에 올릴수 있는 부트로더는 여러가지가 공개되어 있습니다.


1. megaload - http://www.microsyl.com/

1번은 여러번 시도하였으나 성공하지 못했고, 2번, 3번, 4번은 같은 부트로더 같은데 카페 등업이 늦어져서 2번은 확인 못하고, 3번은 다운로드 하다 멈추고, 4번으로 성공했습니다.


먼저 아래 파일을 다운받아 적당한 폴더에 풉니다.




CodeVision을 실행합니다. demo 버전을 사용해도 됩니다. ( http://www.hpinfotech.ro/html/download.htm )
ISP를 PC와 체리보드에 연결합니다.
Settings >> Programmer 를 실행하여 자신의 ISP를 설정합니다.


Tools >> Chip Programmer 를 실행합니다.
File >> LoadFlash - 압축푼파일중에 MegaBoot_phold.hex 파일을 불러들입니다.
그리고 위화면과 같이 설정합니다.
Program 메뉴의 Erase chip, Flash, Fuses bit을 차례로 실행합니다.
여기까지 됐다면 ISP는 필요 없으니 제거 합니다.

USB 케이블을 체리보드에 연결합니다.
압축파일에 MegaBoot를 실행합니다.
컴파일한 hex 파일을 첫번째(flash)영역에 open합니다.
PC에서 인식한 usb포트의 가상 시리얼 포트를 확인하여 Serial Port Setup 영역에 설정합니다.
(가상 시리얼포트 번호는 제어판 >> "시스템 등록정보"를 실행하여 하드웨어 텝에 >> 장리관리자 >> "포트" 부분을 보면 확인가능합니다.)
체리보드의 리셋을 누르니다.
그러면 hex파일이 다운로드 됩니다.

만약 안된다면 BaudRate를 다른것으로 변경해보세요.
BaudRate가 맞으면 Target Infomation에 자신의 칩이 뜰껍니다.

자 이제 ISP는 갖다 버리세요 ^^;
이 글은 arv을 배우려는 사람보다는 저처럼 비 전공자(피지컬 컴퓨팅, 미디어아트, 인터렉티브 미디어 분야등)가 avr에 관심을 갖고 계신분에게 더 유용할꺼라 생각됩니다.
처음 이쪽 분야를 접하고 arduino나 wiring, atmega128(avr 중하나)을 접하면서 선택의 기로에 서게 됩니다.
이때 이글이 도움이 되길 바랍니다.

1. Arduino
아두이노 데시밀라는 atmega168 칩을 사용합니다
칩만 보면 메모리는 8k이고 가격은 4천원대 입니다.(디바이스마트)

아두이노 두에밀라노브는 328(메모리 32k)을 사용하고 국내 정식(플러그하우스)판매가격은 3.9만원 합니다, ($29.95)

아두이노 데시밀라는 168 사용(메모리 16k)

아두이노 미니는 168을 사용하고 국내 정식판매가격은 4.8만원 합니다 ($33.95)

arduino nano는 별로 특징이 없네요. 미니 usb를 가지고 있어 좋기는한데 너무 큰듯한...

최근에 나온 아두이노 메가는 1280칩(메모리 128k)을 사용하고 


1-1 . Arduino 호환보드


아두이노스토리 카페의 딸기보드는 카페에서 공동 제작 형식으로 판매했던것 같은데 사용자가 많지않아 더이상 생산은 어려울것 같습니다.

AVRTOOLS에서 아두이노 데시밀라(168) 호환보드를 팔고 있고, 아두이노 미니 호환 보드도 팔고 있는데 가격도 저렴하고 크기도 작아 상당히 매력이 있네요.

2. Wiring

와이어링에서 사용하는 atmega128 칩은 128k 메모리에 6~7천원 합니다.(디바이스마트)
Wiring-IO (atmega128)를 샘플전자에서 17.6만원에 팔고 있네요ㅡㅡ; (이런 날...)

Wiring mini 샘플전자에서 12.1만원에 팔고 있습니다

2-2. Wiring 호환보
샘플전자에서 와이어링 미니 호환보드를 2.9만원에 판매하고 있습니다.


3. AVR

AVR은 ATmel사의 mcu로 메모리와 속도등에 따라 상당히 많은 종류가 있습니다.
그중에 가장 가격대비 성능이 좋은 atmega128이 많이 쓰이는것 같습니다.(6~7천원대)
외국에서는 attiny2313 칩도 많이 쓰더군요(2000원정도)

이러한 128보드는 1만원대 부터 다양하게 있는데 가장 싼것들은 mcu에 핀만 연결해놓은것으로 다용도로 쓸수 있고 가격도 쌉니다. arduino나  wiring도 이런 기본 보드에 속합니다.
비싼보드는 여러가지 센서나 스위치, LCD등을 붙여 놓아 별도로 구입하는 번거로움을 없에기는 했으나 가격이 꽤 비쌉니다. 
이런 교육용보드중에 유명한것으로는 네이버의 당근이의 AVR갖고 놀기 카페의 당근보드(atmega32)와 아두이노스토리 카의 체리보드(atmega128)가 있고 이들을 이용하면 카페에서 지속적인 도움을 받을수 있어 편리합니다.
당근보드 메인4만원 + 디스플레이보드 4만원

체리보드 5.5만원(2009.06.08 현재 공구중 - 아두이노 스토리카페)



4. avr을 arduino로 만들기

atmega168 보드들은 아르두이노 부트로더를 올리면 아르두이노로 쓸수 있습니다.
atmega128 보드들은 와이어링 부트로더를 올리면 와이어링으로 쓸수 있습니다.(32.768K의 크리스탈을 달아야만 합니다)

이방법이 가장 저렴하긴한데 좀 번거롭습니다.
그리고 초기에는 그다지 저렴하지도 않고요. (이것 저것 준비할게 많습니다. ISP, usb2uart)

작은태양님께서 atmega168(AVRMall) 보드에 arduino 부트로더를 올려 아르두이노로 만드는 과정을 포스팅해 놓으셨습니다. http://tinysun.net/8

동작시켜보기 위한 과정을 간단히 요약해보면
부트로더 심기
1) 아르두이노 부트로더 다운로드
2) atmega168에 ISP를 연결하여 부트로더 업로드
사용하기
3) usb2uart 연결하기
4) IDE 에서 프로그램 작성 및 컴파일
5) arduino(atmega168)에 프로그램 업로드
6) 동작

1),2) 만 하면 아르두이노가 만들어 진겁니다.
하지만 avr(atmega168)이나 아르두이노 미니 같은경우 USB 포트가 없기 때문에 usb2uart 모듈을 이용하여 프로그램을 업로드 해야 합니다.
저근 이부분이 이해가 안돼서 처음에 무지 고생했지요.

직접 만들어보는것도 좋지만 호환보드들도 워낙 저렴하니 호환보드를 구입해서 쓰는것도 추천할만한 방법입니다.
MCU (Micro Control Unit) : 
 마이크로 컨트롤러, 일종의 느린 CPU, 대부분 플래쉬 메모리를 내장하고 있슴. 단독으로 동작가능.
 디지털 입력에는 0V 또는 5V 가, 아날로그 입력에는 0V ~ 5V의 전압이 1024단계로 읽힘. 디지털 출력, PWM출력(256단계).
 Atmel이라는 회사의 AVR시리즈 - Atmega168 : 20MHz, 4,400원 정도.


ISP (In System Programer) : 마이크로 컨트롤러를 프로그램 하는 장치, 프린터포트, 시리얼 포트, USB 포트용이 있다.
 임베디드 프로그래밍.

AVR-ISP 포트는 6핀, 또는 10핀( 모양만 다르고 10핀중 4핀은 GND)




P-AVRISP : ISP 다운로드용 프린터 포트 커넥터
 AVR STUDIO에서는 P-AVRISP를 지원하지 않습니다.(쓰기안됨)
AVR STUDIO에서 헥사파일만 만들고 ponyprog2000에서 라이팅한다.

JTAG(Joint Test Action Group): 임베디드 시스템 개발시 디버깅하기 위한 포트이다. 10핀
임베디드 시스템을 개발하기 위해 통합한 회로로 사용되는 IEEE 1149.1의 일반적인 이름이지만, 보통 디버거를 가리킨다.

MCU에 (arduino 같은)부트로더를 올릴려면 프로그래밍 포트(ISP)를 쓴다. 일단 arduino 부트로더가 올라가면 그 다음 부터는 통신 포트(TTL, UART)를 통해 프로그램을 다운로드 할수 있다. 

PWM (Pulse Width Modulation) : 신호를 주기적으로 출력하는 방식, 디지털을 아날로그 처럼 출력하기 위한방법.
출력의 주기가 빠르면 전압이 높고, 주기가  길어지면 전압이 떨어지는 효과가 있다.


AVR : ATMEL사의 MCU 제품군을 말하나 MCU와 같은 의미로 널리 쓰이는것 같다.


arduino 프로그래밍 언어로는 arduino 개발환경과, atmel사의 AVR Stufdio 등이 있다.


sketch : arduino용 프로그램


※ ATmega128
ATmega128은 8비트 RISC(Reduced Instruction Set Computer)구조의  AVR Core를 가지  
는 마이크로컨트롤러로써 대부분의 명령어를 Single Cycle에서 수행하고 I/O구조는 외부에
추가되는소자를최소화할수있도록설계된마이크로컨트롤러입니다 칩내부에는 발진회
로타이머 UART(Universal Asynchronous Receiver and Transmitter)와 SPI(Serial
Peripheral Interface) 및 풀업 저항과 PWM(pulse Width Modulation), ADC(Analog to
Digital Converter), Analog비교기 Watch-doc 타이머를 가지고 있는 칩 입니다.

ATmega128은 내부에 ISP(In-System Programmable) Flash 메모리와 EEPROM 및 SRAM
을 가지고 있어서 편리한 개발 환경을 제공합니다 그래서 실행할 코드와 동작 중 필요한 .
데이터를 저장할 SRAM 및 EEPROM 등을 추가하지 않아도 되므로 다른 마이크로컨트롤러
에 비하여 경제적이고 회로를 간단하게 설계할 수 있습니다.


일반 ATmega 칩을 사용한 AVR을 이용해서 arduino를 만들수 있다.
일반 AVR은 ISP를 이용하여 프로그래밍을 해야 하는데,  arduino는 ISP없이 시리얼 포트로 통신한다.
하지만 최초에 AVR을 arduino로 만들기 위해 한번은 ISP를 이용해 arduino 부트로더를 다운로드 해야한다.
이후에는 ISP없이 시리얼포트로 arduino용 프로그램인 스케치를 다운로드 할 수 있다.

+ Recent posts