회원가입 ID/PW 찾기
AA

#include <stdio.h>
#include <iom128.h>
#include <ina90.h>

unsigned char led = 0xfe;
unsigned int cnt;

#pragma vector=TIMER2_COMP_vect
__interrupt void TIMER2_COMP_interrrupt(void)  // Interrupt Overflow
{
  if(cnt++ >= 49999)    // 50000*10 = 500 msec
  {
    cnt = 0;
    if(led!=0x7f) led = (led << 1) | 0x01;  // 비트7을 안켰으면 1비트씩 좌로 시프트하고 빈자리에는 1을 채운다.
    else led = 0xfe;
  }       // 비트7을 켰으면 다시 처음으로 와서 비트 0을 켠다.
  PORTC = led;
}
void main(void)
{
  DDRC   = 0xff;    // 포트C를 출력으로
  PORTC  = led;
  SREG  |= 0x80;     //인터럽트 전체 허용
  TIMSK |= 0x80;     // 타이머2 출력비교 인터럽트 개별허용
  TCCR2 |= 1;      // 분주비를 1로 설정
  TCCR2 |= 0x20;     // CTC mode
  OCR2   = 159;     // 10usec = 1*(1+159)/16 16MHz와 분주비 1사용시
  for(;;);
}
이소스를 실행하면 500ms가 나와야 하나 800ms가 나옵니다. 기본개념익히는중인데요. 무엇이 문제일까요. 컴파일러 설정이 잘못되어도 시간에 문제가 나오나요.

댓글 0

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
  • 일을 몰고 가라. 그렇지 않으면 일이 너를 몰고 갈 것이다.
    - 프랭클린
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.