인터랩터를 이용하여 서보모터 작동하기
- 최초 등록일
- 2013.12.23
- 최종 저작일
- 2012.04
- 6페이지/ 한컴오피스
- 가격 2,000원
목차
없음
본문내용
#include<mega128.h>
unsigned int cycle_20ms=0;
unsigned char out_test=15; //변수값 설정(주기 20ms, 총주기 20ms를 0.1ms의 간격으로 나눴을때 1.5ms에서 모터동작이 0도로 셋)
void main (){
TIMSK=0x01; //오버플로우 인터럽트 사용
TCCR0=0x05; //프리스케일러 분주비를 128로 설정
TCNT0 = 243; //243부터 255까지 카운팅 된 후 243으로 다시 복귀
#asm("sei"); //인터럽트 플래그셋
DDRA=0xFF; // A포트를 출력으로 설정
PORTA=0xFF; //데이터를 포트A에 출력
while(1); //무한루프
}
interrupt [TIM0_OVF]void timer_int0(void){ //타이머/카운터0 사용
TCNT0=243; //243부터 255까지 카운팅 된 후 243으로 다시 복귀
cycle_20ms++; //cycle_20ms를 1씩 증가
if(cycle_20ms>200){ //주기 간격이 0.1ms로써 200이 넘을 경우 if함수 실행
cycle_20ms=0; // 초기화 시킨다
PORTA = 0xFF; //포트A의 출력부분을 OFF상태로 놓는다
}
else{
if(cycle_20ms>7 & cycle_20ms<23){
//주기 간격이 0.1ms로써 200이 넘지 않고 주기 간격이 0.7에서 2.3ms에 있을 때 if함수 실행
참고 자료
없음