AVR(9)
-
[Atmega128] 3. 타이머 인터럽트 Timer/Counter Register
이번에 사용할 것은 PWM 파형을 만들 때 꼭 필요한 타이머 인터럽트이다. atmega128에는 총 4개의 타이머가 있으며, 그중에 timer0과 timer2는 8비트 타이머로 이루어져 있고, timer1과 timer3은 16비트 타이머로 이루어져 있다. 타이머 인터럽트를 만드는 이유는 원하는 파형을 만들기 위해서 인데, 원하는 파형을 만들기 위해서는 분주, 타이머의 동작 모드 등을 적절하게 바꾸어야 한다. 바꾸기 위해서는 간단하게 분주, 타이머의 동작모드 등에 관련된 레지스터 값을 바꿔주기만 하면 된다. 기능으로는 인터럽트 발생과 가변할 수 있는 출력 신호를 생성하여 OC단자로 출력할 수 있는 기능이 있다. 그리고 타이머1과3 한정으로 트리거 신호로 카운터 값을 캡처하는 기능을 가지고 있다. 이번 편에..
2019.08.03 -
[Atmega128] 2. 외부 인터럽트 External Interrupts Register
외부 인터럽트는 센서의 값 등 외부에서 신호를 입력받아 인터럽트를 발생시킨다. 입력받아야 할 때 자주 쓰이며 초기에 설정해야 하는 게 있다. atmega128 기준으로 외부 인터럽트가 두개 있으며, A와 B로 표기한다. 순서 1. 인터럽트 포트를 input모드로 설정해준다. 2. EICRA or EICRB 레지스터를 설정해준다. 3. EIMSK 레지스터를 설정해준다. 1번의 인터럽트 포트를 input모드로 설정하는 것은 전 포스팅에서 다루었으니 2번과 3번을 알아보자. 1. EICRA..B - External Interrupt Control Register A.. B EICRA에서는 interrupt 0.. 3을, EICRB에서는 4... 7을 설정하게 되어있다. 이 레지스터의 용도는 인터럽트 모드를 조..
2019.08.02 -
[Atmega128] 1. 입출력 레지스터 I/O Register
처음으로는 i/o관련 레지스터 들로 input output을 결정하는 레지스터들이다. avr은 port라는 것을 가지고 있는데 atmega128 기준으로는 porta부터 portf까지 8비트씩 있다. 위와 같이 포트 하나당 수행하는 역할이 있으며, 328 기준에서 portd와 portb가 아두이노 핀으로 사용되는 것 같다. 우리가 포트를 읽고 쓰려면 그전에 모드를 설정해 주어야 한다. avr에 그 모드를 설정해 주는 레지스터가 바로 DDRx레지스터이다.. 1.DDRx - Port X Data Diretion Register 안의 8비트는 포트 b의 0... 7까지의 비트들을 조정하여 1일 경우, 출력으로 설정하고, 0일 경우, 입력으로 설정한다. (기본값은 0으로 세팅되어있다.) 2.PORTx - Por..
2019.08.02