BASIC4MCU | 질문게시판 | AVR 질문이 있습니다.
페이지 정보
작성자 초짜 작성일2019-11-27 23:09 조회4,215회 댓글1건본문
void main 문에
denominator = 1;
molecule = 1 로 줬습니다.
제가 퍼센트를 나타낼려고 하는데
문제는
타이머0 PCP 모드에서는 TCNT 값이 TOP이 되어야 업로드 되잖아요
그래서
TCCR0 = 0x67;//업클다운셋
OCR0 = 100;//기준 100
TCNT0 = 255;//이상태서 다운 상태로 변경
num = TCNT0;//현재 TCNT를 num에 저장
while(TCNT0 != 0){//다운시 TCNT 0이 될때까지
if(TCNT0 != ex_tcnt0){//TCNT가 다운이 일어날떄마다
denominator = denominator +1;//분모를 1씩 증가
if(TCNT0 <= OCR0)molecule = molecule+1;// OCR 과 같거나 이하시 분자를 1씩 증가
num = TCNT0;//현제 TCNT 를 저장
}
}//이렇게 되면 TCNT 값이 255에서 -> 1이될때까지
//분모는 denominator = 255
//분자는 molecule = 100;
//이 될테고
TCNT0 = 10; //TCNT0 = 0이 될때 10으로 변경
//그러면 10 -> 254 가 될때가 245증가니 분모는 denominator = 500
num = TCNT0;//현재 TCNT를 num에 저장
while(TCNT0 != 255){//업시 TCNT 255가 될때까지
if(TCNT0 != ex_tcnt0){//TCNT가 업이 일어날떄마다
denominator = denominator +1;//분모를 1씩 증가
if(TCNT0 <= OCR0)molecule = molecule+1;// OCR 과 같거나 이하시 분자를 1씩 증가
num = TCNT0;//현제 TCNT 를 저장
}
}//분자가 10 -> 100이 될때까지 91증가
//이리 되면 분모는(denominator ) 500이되고 분자는 (molecule) 191이 되어서
191/500 이 되야 할텐데 그값이 아닌 다른 값이 나오네요 ㅠㅠ 왜 그럴까요?
댓글 1
조회수 4,215master님의 댓글
master 작성일
퍼센트를 알기 위해서 복잡한 코드를 작성하신 것인가요?
BOTTOM이 0x00 이며, TOP이 0xFF이고
PWM 값은 OCR0로 설정하고 있으므로
(0xFF-OCR0)/0xFF 에 100을 곱하면 퍼센트를 얻을 수 있습니다.
TCNT0을 추적할 필요가 없는 것이죠
현재의 설정은
0~OCR0 범위는 OFF
OCR0~0xFF 범위는 ON 입니다.
업카운팅이든 다운카운팅이든 마찬가지.