16bit Timer/Counter

2019. 10. 25. 21:28avr-atmega128

거의 대부분 datasheet의 내용을 인용한 것이며 중간중간 register값을 변경시 주의해야할 점, 특수한 기능, 설정 같은 당장 동작원리를 이해하기에 복잡한 내용은 빼뒀으니 자세한 내용은 datasheet를 참고하시길바랍니다.

그래서 원문인 datasheet를 읽어 공부하는것을 권장합니다.

 

Timer/counter1, Timer/Counter3가 해당됩니다.

 

datasheet를 보다보면 16bit에는 MAX라는 용어를 쓰지않는데 이게 아마 resolution이 16bit는 사용자가 임의로 정할 수 있기때문인것 같습니다.

그래서 8bit든 16bit든 TOP이라고하면 제일 큰값이라고 생각하면 될것 같습니다.

 

Normal Mode

8bit일때와 동자가자체는 크게 다를게 없으며 overflow발생시 bottom으로 내려가면서 TOVn이 set. interrupt가 발생합니다.

이때 SW적으로 resolution을 조절할 수 있습니다.

The Input Capture unit is easy to use in normal mode. However, observe that the maximum interval between the external events must not exceed the resolution of the counter. If the interval between events are too long, the timer overflow interrupt or the prescaler must be used to extend the resolution for the capture unit.

8bit timer/counter와는 또다른 기능인 Input Capture 기능사용시 외부이벤트가 이 time resolution을 넘지않도록해야합니다.

 

CTC mode

TCNTn과 OCRnA(or ICRn, TOP에 해당, WGMn03:1을 통해 선택가능)사이에 비교동작이 이루어지며 match시 OCFnA(or ICFn)를 set이 되면서 interrupt발생시 SW적으로 TOP값을 제어할 수 있습니다.

OCRnA(or ICRn)을 변경시 TCNTn값보다 낮게 설정할 경우 MAX까지 가서 비교동작을 수행하게 됩니다.

DDR을 set하면 OCpin으로 timer관측을 할 수 있습니다.

 

분주비는 1,8,64,256,1024

 

Fast PWM Mode

8bit timer/counter와 크게 다르지 않으며 마찬가지로 resolution은 OCRnA(or ICRn, WGMn03:1을 통해 선택가능)을 통해 변경할 수 있습니다.

resolution이 변경될경우가 발생하면 OCRnA의 사용이 더욱 권장됩니다.

COMnx1:0bit를 변경해서 OCnx pin을 사용할 수 있습니다.(inverted or non-inverted, DDR핀을 출력으로 설정해야합니다.)

TOP도달시 TOVn이 set되고 OCnA, ICFn가 set이 되면서 interrupt가 활성화됩니다.

분해능(resolution)도 설정이 가능한데

WGMn3:1을 통해 5,6,7,14,15로 설정해 정할수 있습니다.(14,15는 ICRn, OCRnA값을 통해서 결정)

8,9,10bit 나 OCRnA, ICRn값과 일치할때까지만 증가합니다.

주파수설정은 

 

Phase Correct PWM Mode

bottom으로 내려갔을때 TOVn이 set 되면 interrupt발생

TOP도달시 OCnA 나 ICFn 가 set되면서 interrupt발생 SW적으로 OCRnA, ICRn의 변경이 가능하다.

OCnx pin값을 COMnx1:0값을 변경해 출력할 수 있다.

 

 

WGM3:0를 1.2.3.10.11(10,11은 OCRnA, ICRn의 값)으로 분해능을 결정할수 있다.

Phase and Frequency Correct PWM Mode

PC PWM과 OCRnx가 바뀌는 타이밍이 달라지면서(bottom에서 변경) TOP기준으로 대칭을 이루는 모습입니다.

bottom 도달시 TOVn이 되면서 interrupt발생(이때와 같은 clock내에서 OCRnx의 값을 변경된다.)

compare match(TOP도달)발생시 OCnA 나 ICFn 가 set되면서 interrupt발생 SW적으로 OCRnA, ICRn의 변경이 가능하다.

WGM3:0을 8,9로 설정해 ICRn or OCRnA를 통해 변경할 수 있습니다.

 

 

타이머관련예제는 추후 포스팅하겠습니다.

'avr-atmega128' 카테고리의 다른 글

ADC 예제  (0) 2019.11.05
Analog To Digital Converter  (0) 2019.11.02
8bit Timer/Counter  (0) 2019.10.25
외부인터럽트  (0) 2019.10.22
직렬통신  (0) 2019.10.18