timer(3)
-
[Cortex-M3] 4. Systick, TimerX 제어하기 (1)
오늘은 systick을 이용하여 타이머를 만들고, millis구조를 사용하는 방법을 배웠다. systick은 기본적으로 72MHz를 사용하며, 분주를 사용하여 헤르츠를 낮출수 있다. 이제 systick을 다룰 레지스터를 알아보자. 1. STK_CTRL (SysTick control and status register) 여기서는 enable에서 필요한 ENABLE비트만 이해하고 다음 시간에 배우는걸로 넘어가도록 하자. ENABLE (counter enable) : 0 - counter disable 1- counter enable 2. STK_LOAD (SysTick reload value register) 이 RELOAD가 24비트로 이루어진 레지스터는 분주비를 설정하는 레지스터이다. 72MHz로 들어오..
2019.09.08 -
[Atmega128] 4. 타이머 인터럽트 (clk/Timer mode/OC 단자 출력)
이번에 알아볼 것은, 분주 설정하기 , 타이머 모드, OC 단자 출력을 하는 방법이다. 분주 설정하기 CS00.. 02는 TCCR0 레지스터 안에 포함되어있는 비트들로, 이를 통하여 분주를 설정할 수 있다. 분주로 주기를 만들려면 몇 개의 과정이 필요하다. ※ 8 분주로 가정하고 과정을 설명하겠습니다. 1. 기본 16 Mhz이므로 8 분주로 쪼개면 2 Mhz가 된다. 2. 2 Mhz는 0.5us마다 진동하는 것을 표현하는 단위이다. 이렇게 되면, 0.5us마다 TCNT의 값이 증가하게 되는 것이다. 3. TCNT는 255가 넘으면 인터럽트를 발생시키기 때문에 0.5*256 = 128 -> 128us마다 인터럽트 발생 이런 식으로, 8... 1024분 주의 주기를 알 수 있다. Timer Mode WGMn..
2019.08.03 -
[Atmega128] 3. 타이머 인터럽트 Timer/Counter Register
이번에 사용할 것은 PWM 파형을 만들 때 꼭 필요한 타이머 인터럽트이다. atmega128에는 총 4개의 타이머가 있으며, 그중에 timer0과 timer2는 8비트 타이머로 이루어져 있고, timer1과 timer3은 16비트 타이머로 이루어져 있다. 타이머 인터럽트를 만드는 이유는 원하는 파형을 만들기 위해서 인데, 원하는 파형을 만들기 위해서는 분주, 타이머의 동작 모드 등을 적절하게 바꾸어야 한다. 바꾸기 위해서는 간단하게 분주, 타이머의 동작모드 등에 관련된 레지스터 값을 바꿔주기만 하면 된다. 기능으로는 인터럽트 발생과 가변할 수 있는 출력 신호를 생성하여 OC단자로 출력할 수 있는 기능이 있다. 그리고 타이머1과3 한정으로 트리거 신호로 카운터 값을 캡처하는 기능을 가지고 있다. 이번 편에..
2019.08.03