Robo India presents the working and concept of electro mechanical switch Relay. It also explains how to use it with AVR family's microcontroller Atmel Atmega 16.
@Powersupply(YeungnamUniv.) @NanheeKim @nh9k
질문이 있으면 언제든지 연락주세요!
Please, feel free to contact me, if you have any questions!
github: https://github.com/nh9k
email: kimnanhee97@gmail.com
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
Robo India presents the working and concept of electro mechanical switch Relay. It also explains how to use it with AVR family's microcontroller Atmel Atmega 16.
@Powersupply(YeungnamUniv.) @NanheeKim @nh9k
질문이 있으면 언제든지 연락주세요!
Please, feel free to contact me, if you have any questions!
github: https://github.com/nh9k
email: kimnanhee97@gmail.com
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
3. Page 3
Timer/Counter
Timer
- 컴퓨터 동작 중에서 경과시간을 나타내거나 외부(예를 들어 clock)에서 펄스 신호를 카운트하여
특정한 간격으로 삽입하여 신호를 발생시키는 장치.
Counter
- 유한개의 상태를 갖고 각각의 상태가 계수적으로 표현되는 기구이며 적당한 신호를 받으면 그 수가 1
또는 주어진 상수 만큼 증가하는 것.
Timer/Counter in Atmega128
- Two 8-bit Timer/Counters with separate prescaler and compare mode
1) 8-bit timer/counter0
2) 8-bit timer/counter2
- Two expanded 16-bit Timer/Counters with separate prescaler, compare mode and capture mode.
1) 16-bit timer/counter1
2) 16-bit timer/counter3
4. Page 4
PWM(Pulse Width Modulation)
PWM(Pulse Width Modulation)
- Pulse 변조 방식중 하나로, 변조 신호의 크기에 따라 Pulse 폭(width)을 변조하는 방식
7. Page 7
Timer/Counter
2. Modes of operation
- Timer/counter 와 Output compare pin의 동작에 관한 것
- Waveform generation mode(WGM01:0)와 Compare output mode(COM01:0) bits로 정의/설정
- WGM01:0은 counting sequence에 영향을 줌
- COM01:0은
PWM mode 일 경우 생성된 PWM output이 inverted 인지 아닌지 제어
Non-PWM mode 일 경우 compare match에서 output이 set / cleared / toggled 인지 정의
- Normal / CTC / fast PWM / Phase correct PWM mode가 있음
1) Normal mode
- 항상 up counting하며, counter를 clear하지 않음
- Counter가 maximum인 8-bit value(TOP=0xFF)넘어가면 단순히 overrun하며,
bottom(0x00)부터 다시 시작한다.
- TCNT0가 0이 되면 Timer/Counter overflow flag(TOV0)가 set이 된다.
8. Page 8
Timer/Counter
2) CTC(Clear Time on Compare match) Mode (1/2)
- OCR0(Output Compare Register)는 counter의 resolution을 설정하기 위해 사용
- TCNT0(counter value)와 OCR0의 값이 같을 때 counter가 clear됨
즉, OCR0가 counter의 TOP value를 정의함
- Counter 값이 TOP value에 도달 할 때 마다 interrupt가 발생함
(Output Compare Match Interrupt)
9. Page 9
Timer/Counter
2) CTC(Clear Time on Compare match) Mode (2/2)
- CTC mode에서 waveform output을 생성하기 위해서는, OC0 output이 COM01:0을 toggle
mode로 setting 함으로써 각각의 compare match 때 logical level을 toggle 할 수 있음
- OC0 value가 pin에 보이기 위해서는 pin direction을 output으로 설정해야함
- Waveform frequency equation :
- N은 prescale factor를 나타내며 (1, 8, 32, 64, 128, 256, 1024) 중 하나의 값을 가짐
10. Page 10
Timer/Counter
3) Fast PWM(Pulse Width Modulation) Mode (1/2)
- High Frequency PWM waveform operation / Single-slope operation
- Counter는 BOTTOM에서 MAX까지 count하고 BOTTOM에서 다시 시작함
- Non-inverting Compare output mode에서는
TCNT0와 OCR0의 compare match에서 OC0가 clear 되고 BOTTOM에서 다시 set 됨
- Inverting Compare output mode에서는
compare match에서 OC0가 set되고 BOTTOM에서 다시 clear 됨
11. Page 11
Timer/Counter
3) Fast PWM(Pulse Width Modulation) Mode (2/2)
- PWM frequency for the output
- N은 prescale factor이며 (1, 8, 32, 64, 128, 256, 1024) 중 하나의 값을 가짐
12. Page 12
Timer/Counter
4) Phase Correct PWM(Pulse Width Modulation) Mode (1/2)
- High resolution PWM waveform generation / dual-slope operation
- Counter는 BOTTOM에서 MAX로 MAX에서 BOTTOM으로 count 함
- Non-inverting Compare output mode에서는
Up counting 중에는 TCNT0와 OCR0의 compare match에서 OC0가 clear 되고
Down counting 중에는 compare match에서 OC0가 set 됨
- Inverting Compare output mode에서는
Up counting 중에는 TCNT0와 OCR0의 compare match에서 OC0가 set 되고
Down counting 중에는 compare match에서 OC0가 clear 됨
13. Page 13
Timer/Counter
4) Phase Correct PWM(Pulse Width Modulation) Mode (2/2)
- Timer/Counter Overflow flag(OVF0)는 counter가 BOTTOM에 갈 때 마다 set 됨
- PWM frequency for the output
- N은 prescale factor이며 (1, 8, 32, 64, 128, 256, 1024) 중 하나의 값을 가짐
14. Page 14
Timer/Counter
1.TCCR0 – Timer/Counter Control Register (1/5)
1) FOC0 : Force Output Compare
- Non-PWM mode에 대해서만 유효함. FOC0=1 일 경우 OC0에 자동으로 Compare match와
같은 출력이 발생함 이 때 출력은 COM01:0에 의해 설정되어 있음. 그러나 interrupt가
발생하지는 않으며 TCNT0 역시 초기화 되거나 하지는 않음. 일반적으로 0으로 설정.
15. Page 15
Timer/Counter
1.TCCR0 – Timer/Counter Control Register (2/5)
2) WGM01:0 : Waveform Generation Mode
- Sequence of counter
- TOP (Maximum of counter value)
- Type of waveform generation ( Normal / CTC / fast PWM / phase correct PWM )
16. Page 16
Timer/Counter
1.TCCR0 – Timer/Counter Control Register (3/5)
3) COM01:0 : Compare Output Mode (1/2)
- OC0(Output Compare pin)의 동작을 설정함
- OC0에 해당하는 DDR(Data Direction Register)가 출력으로 설정되어 있어야 함
- Type of waveform generation ( Normal / CTC / fast PWM / phase correct PWM )
(1) Non-PWM Mode
21. Page 21
Timer/Counter
참고) Accessing 16-bit Register
- 16-bit timer/counter의 경우 8-bit timer/counter와 거의 동일하게 사용되며
대신 16-bit TCNT와 OCR을 사용하므로 16-bit register 접근에 대해 알 필요가 있음
- 모든 16-bit timer에 있는 16bit register는 동일한 Temporary Register를 사용
- 16-bit 중 Low byte(L) 에 접근하는 것은 16-bit read/write operation을 trigger함
1) Write
- CPU에 의해서 16-bit의 Low byte(L) register가 쓰여지면,
temporary register에 쓰여진 High byte(H) 값과 Low byte(L)가 16-bit register에
같은 clock cycle내에 copy 됨
2) Read
- CPU에 의해서 16-bit register의 Low byte(L) 값이 읽혀지면,
Low byte(L)값이 읽혀지는 clock cycle내에 16-bit register의 High byte(H) 값이
Temporary Register에 쓰여짐
결론)
- 16-bit write를 하기 위해선 High byte -> Low byte 순으로 하며,
- 16-bit read를 하기 위해선 Low byte -> High byte 순으로 함.