본문 바로가기

Embeded Programming/AVR

Tapito의 AVR 정복기 – 6부. 비안정 멀티바이브레이터 Tapito의 AVR 정복기 6부. 비 안정 멀티 바이브레이터 1. 비안정 멀티바이브레이터란? 이번 화에서는 아날로그 회로에 대해 공부해 보겠습니다. 아날로그 회로는… 깊이 파고들면 미적분도 나오고 정말 한도 끝도 없기에 본인도 아직 그 정도 실력까지는 도달하지 못한 만큼, 작동 과정 위주로 해 봅니다. 비 안정 멀티 바이브레이터는 간단히 말하자면 커패시터와 저항만을 이용해 일정 주기의 신호를 만들어내는 회로입니다. 이 용어를 쪼개본다면, "비 안정"이라는 말은 안정되지 않았다. 즉, 전원만 주면 별도의 개시 신호가 없이도 알아서 소자들이 충전과 방전을 번갈아 하며 작동된다는 뜻이고, 멀티는 R-C 조합된 회로가 둘 이상이라는 뜻입니다. 바이브레이터는 번역하자면 진동 발생기? 발진기? 정도가 되겠습니다... 더보기
tapito의 AVR 정복기 - 5부. FND tapito의 AVR 정복기 5부. FND (c) tapitolife FND FND는 Flexible Number Display의 약자로, 아라비아 숫자를 표현하기 위해 일정한 모양으로 배열된 LED가 내장된 소자입니다. 여 그림 1. FND의 실물 숫자는 FND에 내장된 각각의 LED를 제어해서 출력하며, LED의 배열 방식에 따라 Annode 형(양극이 공통)과 Cathode 형(음극이 공통)이 있습니다. FND에는 모양에 따라 여러 종류가 있지만 여기에서는 가장 간단한 WDUR-10561(구 FND 507)를 소개해보고자 합니다. 그림 2. FND의 핀 배열 그림 3. Annode 형과 Cathode 형 FND에는 각 LED들이 공통으로 연결된 공통극이 있습니다. 이 공통극이 양극으로 묶여 있는지,.. 더보기
tapito의 AVR 정복기 - 4부. RAM을 이용한 스택 구현 tapito의 AVR 정복기 4부. RAM을 이용한 스택 구현 (c) tapitolife 스택? 스택(Stack)은 컴퓨터에서 후입선출의 방식으로 데이터를 저장하는 자료 구조를 말합니다. 후입선출(Last-In First-Out, LIFO)은 말 그대로 가장 나중에 저장된 데이터가 출력될 때는 가장 먼저 출력된다는 의미로서 주로 함수를 실행할 때 적용되는 개념입니다. 문자열로 이루어진 수식을 첫 글자부터 하나씩 읽어 들이면서 함수가 보이면 일단 연산 버퍼에 기억해 두었다가 버퍼에서 함수를 하나씩 꺼내 쓸 때 스택의 구조를 이용하는데, 이를 그림으로 표현하면 아래와 같습니다. 그림 1. Stack 자료 구조 스택의 작동 과정 push push은 스택의 끝에 데이터를 추가하는 동작입니다. pop pop은 스.. 더보기
tapito의 AVR 정복기 - 3부. RAM tapito의 AVR 정복기 3부. RAM (c) tapito Ram이란? 그림 1. PC에서 사용되는 RAM의 한 종류 병렬 메모리는 1 사이클당 1바이트의 데이터를 취급하는 기억 소자입니다. 이 중 RAM은 전원이 차단되면 기억하고 있던 내용이 모두 지워지며 내부 구조에 따라 플립플롭형인 SRAM과 커패시터형인 DRAM 등으로 분류됩니다. 그림 2. 병렬 메모리의 개념도 병렬 RAM의 핀 배열 대부분의 병렬 RAM의 핀은 주소 핀 + 데이터 핀 + 제어 핀으로 구성되어 있습니다. 즉, 어느 제조사의 어느 모델이든 공통적으로 Axx, I/Ox, /OE, /WE, /CE를 가지고 있습니다. 여기에서는 AMIC에서 제조하는 A625308A-70SF를 예로 들어 보겠습니다. 그림 3. A625308A-70S.. 더보기
CodeVision과 AVR Studio간의 인터럽트 비교 CodeVision AVR Studio interrupt [EXT_INT0] void ext_int1_isr(void); ISR(INT0_vect); interrupt [EXT_INT1] void ext_int1_isr(void); ISR(INT1_vect); ATmega128 기준입니다. interrupt [EXT_INT2] void ext_int2_isr(void); ISR(INT2_vect); (출처: http://turbocrazy.tistory.com/1048) interrupt [EXT_INT3] void ext_int3_isr(void); ISR(INT3_vect); interrupt [EXT_INT4] void ext_int4_isr(void); ISR(INT4_vect); interrup.. 더보기
소스로 보는 ATmega8535 – 2부. I/O Port 소스로 보는 ATmega8535 – 2부. I/O Port © tapitolife 1. I/O 포트의 구성 ATmega8535는 4개의 입/출력 포트가 지원됩니다. 각 포트는 8비트로 구성되어 있으므로 한 번에 4바이트의 데이터를 동시에 처리할 수 있죠. 그림 1. Pinout of ATmega8535 표 1. 각 핀에 대응하는 2진 값 핀 이름 Px7 Px6 Px5 Px4 Px3 Px2 Px1 Px0 2진 값 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 포트와 관련된 레지스터로는 DDRx, PORTx, PINx가 있습니다. 1) DDRx 포트의 방향을 설정합니다. 1이면 출력 전용, 0이면 입력 전용이며 각 핀별로 따로 설정할 수 있습니다. 코드 1. DDRx 사용 방법 01 : DDRA .. 더보기
소스로 보는 ATmega8535 – 1부. AVR에 HEX 파일 굽기. 소스로 보는 ATmega8535 – 1부. AVR에 HEX 파일 굽기. © tapitolife 2011 처음 시도해 볼 코드는 간단한 LED 점등 회로입니다. main.c #include int main() { DDRA = 0xFF; PORTA = 0b10101010; while(1) ; return 0; } 회로는 이렇습니다. 그림 1. LED 점등 회로 AVR에 프로그램을 넣기 위해서는 아래와 같이 합니다. 1. 회로 구성 먼저 AVR에 프로그램이 입력될 수 있도록 회로를 구성합니다. ISP(In-System Programmable) 보드는 컴퓨터에서 데이터를 받아 AVR에 구워주는 역할을 하는데, 병렬 포트를 이용한 ISP, 직렬 포트를 이용한 ISP, USB를 이용한 ISP 등등 다양한 종류의 I.. 더보기
ATmega 굽기 성공! 결국 ISP 보드(Ahram ISP 1.5, http://devicemart.co.kr/goods/view.php?seq=19015) 하나 샀습니다. USB 직접 꽂아서 쓰는 제품이라 시리얼이나 패러랠 포트가 없는 랩톱에서도 잘 호환되는군요. 이 제품도 내부적으로는 ATmega8535 SMD 타입을 쓰네요... 테스트를 위해 AVR Studio에서 간단하게 코드를 작성한 다음 빌드하고... 미리 준비한 타켓 보드와 ATmega8535를 연결해 봅니다. OK, OK, OK... HEX 파일이 에러없이 잘 구워집니다. 테스트 역시 잘 되는군요 ㅎㅎ 더보기