회원가입 ID/PW 찾기
AA

1. 개발환경 : avr128
2. 동작목표 : 타이머 이해
3. 문제점 :
안녕하세요. avr128 을 이제 막 시작해서 모르는 부분이 너무 많네요. 원래는 8051을 사용하다가 avr128쪽으로 오니 프로그램 순서가
햇갈려서 이렇게 올리게 되었습니다. 먼저 소스는 다음과 같습니다.

#include <avr/io.h>
#include<avr/interrupt.h>
char count=0;

SIGNAL(SIG_OVERFLOW0)
{
  count++;
    if(count==125)
    {  if(PINA==0xff){PORTA=0xff;}
    else if(PINA==0x00){PORTA=0x00;}
    count=0;
    }
TCNT0=131;
}

void Main_init(void);
int main(void)
{
    Main_init();
    while(1);
}
void Main_init(void)
{    PORTA=0xff;
     DDRA=0xff;
     TCCR0=0x07;
     TCNT0=131;
     TIMSK=0x01;
     SREG=0x80;
}

소스는 다음과 같습니다. 위에 SIGNAL부분이 맞는지는 모르겠지만. 제가 궁금한것은
프로그램이 while문에서 무한 반복하다가 오버플로워가 나면 SIGNAL부분으로 가서
실행하고 다시 while부분으로 오는지 아님 어떤식의 순서로 진행되는지가 궁금합니다.
그리고 OCR0의 용도?
TCNT0과 비교를해서 OC0으로 출력을 한다고 하는데 어떤식으로 비교를해서 하는지
너무 초보적인 질문입니다만 답변 꼭 부탁합니다.

 

 

댓글 2
  • No Profile

    output compare resiser 입니다 ...즉 OC0 값이 TCNT0값이 같아지는 순간 출력을합니다
    초기화 과정을 거치고 인터럽트가 while()문에서 인터럽트 발생하구요
    그즉시 인터럽트 서비스 루틴으로 이동하여 인터럽트 서비스를 실행하고 빠져나옵니다 
     SIGNAL(SIG_OVERFLOW0) 이부분이 인터럽트 벡터 주소입니다....

  • No Profile
    글쓴이 콜록 08.05.28 00:10 댓글 좋아요 0 싫어요 0

    일단 답변 감사합니다. 그런데 여기서 의문점이 OCR0 과 TCNT0 을 비교해서 출력하는건데 그럼 시간은 어떤식으로
    맞춰주어야 하는건가요.;;;; 아~ 타이머 부분 왜이렇게 힘든지.ㅠㅠ

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

search
번호 분류 제목 글쓴이 조회 수 날짜
1 Sensor 설계 HOT사진에 있는 tr 제품명이 먼지 알고 싶습니다 ㅡㅜ5 텐지무용 1160 2010.11.22
  • 성공적인 결혼이란 매일같이 개축해야 하는 건물과 같은 것이다.
    - 모로아
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.