ITGenerations
[AVR] LED 밝기제어 본문
// source 15
// LED 밝기 제어
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
void msec_delay(int n);
void main(void)
{
ASSR = 0x00;
DDRB = 0xFF;// OC0(PB4)
//TCCR0=0b01111010;// fast PWM mode : 3,6(WGM01,00) - 11, 5,4(COM ) - 11, 2-0(CS) - 010
TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(0<<COM00)|(0<<CS02)|(1<<CS01)|(0<<CS00);
while(1)// 00 : 0%, 3F : 25%, 7F : 50%, BF : 75%, FF : 100%
{
OCR0=0x00;
msec_delay(500);
OCR0=0x3F; // 63
msec_delay(500);
OCR0=0x7F; // 127
msec_delay(500);
OCR0=0xBF; // 191 ? 192~255 (255-191)/255 = 약 25%
msec_delay(500);
OCR0=0xFF; // 255
msec_delay(500);
}
}
void msec_delay(int n)
{
for (; n>0; n--)
_delay_ms(1);
}
--------------------------------------------------------------------------------------------------------------------------------
*0CR0 은 PB4 포트를 사용해야만 한다.
->페이지번호6번 참고
*저항은 꼭 안 연결해도 된다.
->저항을 빼면 전류가 더 높아져 더 밝아진다!!!
com 1, 0인 경우
*Gnd연결하고 저항을 제대로 연결하면 점점 밝아진다.
->sourc연결
*Vcc 연결하고 저항을 반대로 연결하면 점점 어두워진다.
-> sink연결
Com 1, 1인경우 위와 반대의 결과가 나온다.
*Com 0, 0 인경우 항상 켜짐있음
*Com 0, 1인 경우 항상 켜져있음
Mode |
COM01 |
COM00 |
설명 |
비 PWM 모드 |
0 |
0 |
범용 I/O 포트로 동작 (OC 출력 차단) - 꺼진것 |
0 |
1 |
비교 일치에서 OC 출력을 토글 |
|
1 |
0 |
비교 일치에서 OC=0 으로 클리어 |
|
1 |
1 |
비교 일치에서 OC=1 로 세트 |
|
고속 PWM 모드 |
0 |
0 |
범용 I/O 포트로 동작 (OC 출력 차단) |
0 |
1 |
사용되지 않음 (Reserved) |
|
1 |
0 |
비교 일치에서 OC=0 으로 클리어, BOTTOM에서 OC를 1로 세트 (비반전 비교 출력 모드) - 일반적pwm |
|
1 |
1 |
비교 일치에서 OC=1 로 세트, BOTTOM에서 OC를 0으로 클리어 (반전 비교 출력 모드) – 반대 pwm |
|
PC PWM 모드 |
0 |
0 |
범용 I/O 포트로 동작 (OC 출력 차단) |
0 |
1 |
사용되지 않음 (Reserved) |
|
1 |
0 |
업 카운팅에서 비교 일치 시 OC=0 으로 클리어, 다운 카운팅에서 비교 일치 시 OC = 1 |
|
1 |
1 |
업 카운팅에서 비교 일치 시 OC=1 으로 클리어, 다운 카운팅에서 비교 일치 시 OC = 0 |
'Univ > AVR atmega128' 카테고리의 다른 글
[AVR] LED 3개 전원 제어 타이머 0 CTC모드 (0) | 2017.12.10 |
---|---|
[AVR] LED 전원 제어 타이머 0 CTC모드 (0) | 2017.12.10 |
[AVR] 한 학기동안 AVR Atmega128을 공부하면서 (0) | 2017.12.10 |
[avr]코드 목록 (0) | 2017.12.10 |
[avr]서보모터+LCD (0) | 2017.12.10 |