728x90
PC PWM을 이용한 LED 밝기 조절
WGMn2~0 비트에 의한 동작모드
모드1 : Phase Correct PWM / TOP(0xFF)
/************************************************
* PC PWM을 이용한 LED 밝기 조절 프로그램
* 2016년 5월 26일
************************************************/
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char i, duty;
//PWM 출력을 뽑을 GPIO설정(OC0A(PB7))
DDRB=0xFF; // PB7 PWM 출력, PB 0~6 사용안함
//Time / Counter0의 설정 (PC PWM 모드)
TCCR0A = 0b10000001; // 0x81, 상향카운터 compare match 0, 하향 1로 set
TCCR0B = 0x01; // 1분주
while(1)
{
for(i=0, duty=0; i<6; i++, duty +=51)
{
OCR0A = duty;
_delay_ms(500);
}
}
return 0;
} |
/************************************************
* PC PWM을 이용한 LED 밝기 조절 프로그램
* 2016년 5월 26일
************************************************/
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char i, duty;
//PWM 출력을 뽑을 GPIO설정(OC0A(PB7))
DDRB=0xFF; // PB7 PWM 출력, PB 0~6 사용안함
//Time / Counter0의 설정 (PC PWM 모드)
TCCR0A = 0b10000001; // 0x81, 상향카운터 compare match 0, 하향 1로 set
TCCR0B = 0x01; // 1분주
while(1)
{
for(i=0, duty=0; i<6; i++, duty +=51)
{
OCR0A = duty;
_delay_ms(500);
}
}
return 0;
} |
switch문으로 변경
/************************************************
* PC PWM을 사용한 DC 모터 속도 제어용 프로그램
* 속도 조절 단계 15단계, 출력 0C0A 또는 OC0B
* 입력 스위치 입력 2개(UP, Down)
* 최대 속도 도달시 UP키 동작 안함, 회전하지 않을 때 DN키 동작 안함.
************************************************/
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char duty = 0;
DDRB = 0xFF;
DDRA = 0xFC; //0,1번 포트를 스위치 입력으로
TCCR0A = 0x81; //OC0A를 출력으로 사용
TCCR0B = 0x01;
while(1)
{
key = (PINA & 0x03)
switch(key)
{
case 1:
while(PINA & 0x01 );
if(i < 15)
i++;
break;
case 2:
while(PINA & 0x02);
if(i > 0)
i--;
break;
}
OCR0A = 17*i;
}
return 0;
} |
'Study > Embedded' 카테고리의 다른 글
7/8 LCD제어2 (0) | 2016.07.08 |
---|---|
7/5 LCD 제어 (0) | 2016.07.05 |
2016-05-19 업무일지-Atmega2560_LCD출력 (0) | 2016.05.19 |
2016-05-17 업무일지-7 segment (0) | 2016.05.17 |
7 Segment 출력(proteus시뮬) (0) | 2016.05.16 |