BASIC4MCU | 질문게시판 | atmega128 코드비젼 소스코드 질문
페이지 정보
작성자 master 작성일2019-12-25 21:04 조회3,382회 댓글0건본문
Q)
너무 급한데 모르겠어서 답답해 죽겠습니다. 고수님들 좀 알려주세요.
atmega128의 회로의 발진주파수 속도는 14.7456Mhz이다.
다음 요구사항에 맞지 않는 부분들을 찾아서 그 이유를 설명해주세요.
타이머 0의 오버플로우 인터럽트를 사용
타이머 0의 분주비는 1/1024
0.01초 간격으로 인터럽트 발생
interrupt [TIMO_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x70;
}
void main(void)
{
ASSR=0x00;
TCRR0=0x01;
TCNT0=0x70;
OCR0=0x00;
TIMSK=0x01;
ETIMSK=0x00;
SREG=0x40;
while(1)
{
}
}
//
A)
타이머 0의 오버플로우 인터럽트를 사용
타이머 0의 분주비는 1/1024
0.01초 간격으로 인터럽트 발생
0.01초 주기는 100Hz
14745600Hz/1024분주/100Hz=144
타이머로 144 카운터 시키려면 256-144=112를 넣어야 합니다.
112는 16진으로 0x70
interrupt [TIMO_OVF] void timer0_ovf_isr(void){
TCNT0=0x70;
}
void main(void){
// ASSR=0x00; // 없어도 됩니다.
// TCRR0=0x01; // 설정 틀림
TCRR0=0x07; // 1024분주=7
TCNT0=0x70; // 이것은 맞습니다.
// OCR0=0x00; // 없어도 됩니다.
TIMSK=0x01;
// ETIMSK=0x00; // 없어도 됩니다.
// SREG=0x40; // 설정 틀림
SREG=0x80; // 전체 인터럽트 허가
while(1){}
}
댓글 0
조회수 3,382등록된 댓글이 없습니다.