avr gadget

몇 일전에 만들었던 avr 로 만든 장난감의 회로도와 소스코드를 공개합니다. 🙂
회로도:
http://mytears.org/resources/avr/gadget/avr-gadget-circuit.png
소스코드:
http://mytears.org/resources/avr/gadget/avr-gadget.c
결과물:
http://mytears.org/tmp/dir/?path=./avr&N
회로에서 Vcc 라고 되어있는 부분에 2.7V ~ 5.5V 사이로 연결을 해주면 되며, 회로에는 나와있지 않지만 10번 핀은 Ground 에 연결해줘야만 합니다. 또한 Vcc 에 3V 를 연결하게 될 경우 L.E.D 에 저항은 연결할 필요가 없습니다. (330옴은 5V 기준)
프로그램을 간단하게 설명하자면 8bit timer 를 사용했고, timer 에 overflow 가 발생할 때 (0xFF 에서 0x00 으로 넘어가게 되면) 생기는 ovf 인터럽트를 이용하고 있습니다.
처음엔 at90s2313 을 사용했었는데 불행히도 가지고 있는 at90s2313 중 하나는 다리가 부러져서 사망해버렸고, 나머지 하나는 뻘짓하다가 태워먹어버린고로 현재 소스코드는 attiny2313 용으로 작성되어 있습니다. (두 칩은 핀 배열등 대부분이 비슷하지만 ovf 인터럽트와 timer 관련 레지스터 이름이 살짝 다릅니다.)
인터럽트 테스트 코드:
http://mytears.org/resources/avr/interrupt-test/int-test.c
p.s) 결국 하나 남은 attiny2313 마저 장렬하게 전사… 프로젝트 검사를 아직 안받은고로 추가 주문 해야했다.
오늘의 교훈: 겁 없이 7805 를 믿고 15v 아답타에 연결하지 말자 -_-;;

AVR-ISP

오랫만에 AVR 을 가지고 노니까 재밌길래 범용으로 쓸 수 있을만한 AVR-ISP 를 만들었습니다. 40pin ZIF 소켓을 사용해서 쉽게 칩을 꼈다뺐다할 수 있도록 만들었고, pin header 를 이용해서 Vcc, GND, RESET, SCK, MISO, MOSI, XTAL1, XTAL2 등을 칩에 맞게 연결할 수 있도록 만들어놓았습니다.


이 칩 저 칩을 구울라면 점퍼 세팅을 다시 해줘야 하지만, 뭐 그래도 빵판에 꼽아놓고 구울 때에 비하면 훨씬 편해진 것 같습니다. 하지만 마이크로마우스 같은 계속적인 디버깅 / 개선을 해야하는 것을 만든다면 아예 보드에 ISP 와 연결할 수 있는 인터페이스를 갖춰놓는 것이 훨씬 효율적일 거 같네요. 칩을 뺐다꼈다하는것도 은근히 귀찮아요. -_-;
부품 리스트: 40 pin ZIF socket, 40pin pin header, box connector, 4Mhz crystal, 10uF capacitor, 100nF capacitor, 30pf capacitor * 2, diode bridge, LM7805, 330옴 array register, red L.E.D (전원 확인용), green L.E.D (다운로딩 상태 확인용)
p.s) 제가 처음 접했던 8051 계열의 경우도 AT89S51 등의 ISP 가 지원되는 칩이 있었네요.

AVR

실험(4) 과목 때문에 스트레스가 여간이 아닙니다. 중간고사 평균이 8점이었고, 중간 + 기말 + Report 점수를 합산한게 70점을 넘지 않으면 F 를 주시겠다는군요. 문제는 이 과목이 전공 필수이고, 전 요번학기가 마지막이어야만 한다는 거죠.
하여튼 그런 이유로 추가 점수를 받기 위해 오랫만에 AVR 을 만져야 했습니다. AVR 은 ATMEL 에서 만든 MCU 로 ISP 인터페이스를 갖추고 있어서 복잡한 롬라이터를 만들지 않고도 간단하게 프로그램을 구울 수 있습니다.
빵판에 구성한 AVR ISP
실험(4) 시간에 atmega128 과 관련 보드 / ISP 가 지급이 되었지만, 뗌질을 하다가 칩을 태워먹은건지 아님 어딘가 뗌질이 잘못된건지 하여튼 작동하지를 않더군요. 어쩔 수 없이 예전에 사두었던 AT90S2313 을 이용하기로 마음을 먹고 위의 사진처럼 빵판에 회로를 구성했습니다. 보기엔 좀 그렇지만 하여튼 작동은 잘 하는군요. 후훗
AVR 을 이용한 자판기 에뮬레이터
결국 두 시간동안 열혈 뗌질을 한 끝에 위와 같은 최종 결과물을 만들어냈습니다. I/O 가 모잘라서 500원 투입 버튼은 만들지 않았지만, 그걸 제외하면 구현해야 하는 스펙은 모조리 구현해놓았습니다.
모처럼 오랫만에 mcu 를 가지고 놀았더니 재밌네요. 필받은 김에 아래와 같은걸 추가로 뗌질해봤습니다.
이 회로는 뭘까요~?
예전에 홍익대학교 전자전기공학부 학회인 유레카에서 유행했던 겁니다 😉 축제 때 팔기도 했던걸로 알고 있는데… 뭐 하여튼 L.E.D 에 저항연결하기도 귀찮고, 전원을 따로 입력받기도 귀찮고 해서 3V 로 동작하게 만들어버렸습니다.
아래 사진은 밤에 불을 다 꺼놓고 노출을 1s 로 해놓은 뒤 위 회로를 살짝 흔들어준 모습입니다. 메시지를 길게 넣을 수도 있지만 그 노가다가 귀찮아서 -_-;
잔상으로 그려진 스마일 마크
위 회로를 업그레이드 해서 ^_^, -_-, T.T, 하트 등을 그릴 수 있도록 업데이트 했습니다. 결과물을 보시려면 아래 url 로 😉
http://mytears.org/tmp/dir/?path=./avr&N
p.s) 참고로 AVR 을 굽기 위해선 MISO / MOSI / SCK / RESET (ISP 에서 입력을 받습니다.), VCC, GND 그리고 XTAL1, XTAL2 (크리스탈) 정도만 연결해주면 됩니다. 예전에 VCC, GND 등은 패러랠 포트에서 들어오는 건 줄 알고 삽질한 기억이 나서;;;