실험보고서 - 마이크로컨트롤러 기능; 타이머와 카운터

1. 실험보고서 - 마이크로컨트롤러 기능; .hwp
2. 실험보고서 - 마이크로컨트롤러 기능; .pdf
실험보고서 - 마이크로컨트롤러 기능; 타이머와 카운터
결과보고서

마이크로컨트롤러 기능 : 타이머와 카운터

1. 관련 이론

보통 타이머와 카운터를 하나로 칭하여 다루고 있으나 타이머 인터럽트는 내부 클럭을 통해 카운트되어 정해진 카운트가 될 때마다 인터럽트를 발생시키는 동작을 한다. 결국 비슷한 동작을 하지만 내부클럭을 사용하는지 외부클럭을 사용하는지에 따라서 구분되는 것 이외에 동일하게 사용되기 때문에 함께 지칭하는 것으로 생각된다.
타이머/카운트 인터럽트는 대부분을 차지하는 인터럽트라고 할만큼 상당히 중요하고 펌웨어 프로그래밍시 많이 사용되는 기능이다. 순서대로만 진행되어 각 시퀀스 처리시마다의 지연문제와 세밀한 시간 분할을 할 수 없는 폴링방식에 반하여 인터럽트 방식은 해답을 줄 수 있는 기능이다. 단, 프로그램 작성시 인터럽트 루틴내에서 어떤 작업을 직접 처리하도록 하거나 너무 많이 인터럽트가 걸리도록 설정한다면 시스템 전반에 대한 문제가 생기게 되므로 프로그램 구도 설계시 잘 고려하여야 한다.
AYMega128은 총 4개의 타이머 카운터 기능을 가지고 있으며, 타이머/카운터 0과2는 8비트 구조이며 나머지는 16비트로 되어 있다.

2. 실험 방법

1) AVR Studio를 이용하여 새로운 프로젝트를 만든다.
2) ATMega128을 선택하고 예제 소스를 입력한다.

*예제 소스1(타이머로 LED점멸)

// 1)
#include[avr/io.h]
#include[avr/interrupt.h]

unsigned char LED_Data = 0x00;
unsigned char timer0Cnt=0;

// 2)
SIGNAL(SIG_OVERFLOW0); //Timer0 Overflow0 ISP

int main(){
// 3)
DDRE = 0xFF;

// 4)
TCCR0 = 0x07;
TCNT0 =0xff - 72;
TIMSK |= 1 [[ TOIE0;
TIFR |=1 [[ TOV0;

....