«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

ITGenerations

[AVR] LED 밝기제어 본문

Univ/AVR atmega128

[AVR] LED 밝기제어

ITGenerations 2017. 12. 10. 16:19

// 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

 

범용 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에서 OC1로 세트

(비반전 비교 출력 모드 - 일반적pwm

 1

 1

비교 일치에서 OC=1 로 세트, BOTTOM에서 OC0으로 클리어

(반전 비교 출력 모드) – 반대 pwm

 PC PWM 모드

 0

 0

범용 I/O 포트로 동작 (OC 출력 차단

 0

 1

 사용되지 않음 (Reserved) 

 1

 0

 업 카운팅에서 비교 일치 시 OC=0 으로 클리어,

다운 카운팅에서 비교 일치 시 OC = 1  

 1

 1

 업 카운팅에서 비교 일치 시 OC=1 으로 클리어,

다운 카운팅에서 비교 일치 시 OC = 0