AVR ( External Interrupt 이용한 Step motor 제어)
- 최초 등록일
- 2009.08.10
- 최종 저작일
- 2007.05
- 9페이지/ 한컴오피스
- 가격 1,000원
소개글
인터럽트의 개념을 이해하고
외부 인터럽트 및 외부 인터럽트와 관련된 레지스터에 대해
이해하는 실험의 예비 & 결과 레포트 입니다.
목차
3-1. 실험 제목
3-2. 실험 목적
3-3. 연습 문제
결 과 레 포 트
본문내용
3-1. 실험 제목 - AVR ( External Interrupt 이용한 Step motor 제어)
3-2. 실험 목적
(1)인터럽트의 개념을 이해하여야 한다.
(2)외부 인터럽트의 개념을 이해하여야 한다.
(3)외부 인터럽트와 관련된 레지스터에 대해 이해하여야 한다.
3-3. 연습 문제
(1)모터가 무한히 회전을 하면서, 외부 인터럽트가 걸리면, 회전 방향을 바꾸도록 하는 프로그램을 작성하라.
#include <io.h>
#include <sig-avr.h>
#include <interrupt.h>
typedef unsigned char u08; // u08을 char형 변수 선언
typedef unsigned int u16; // u16을 int형 변수 선언
u08 phase1[4]={0x05,0x06,0x0a,0x09}; // 2상 여자방식을 선언(시계방향)
u08 phase2[4]={0x0a,0x06,0x05,0x09}; // 2상 여자방식을 선언(반시계방향)
u16 d=0;
void delay(u16 time) // 딜레이 함수 지정
int main(void) // 메인 함수
{
outp (0xff, DDRB); // B 포트의 방향 설정(출력)
outp (0x00, PORTB); // B 포트의 초기 값 (low)
outp (0x03, MCUCR); // 인터럽트 발생조건: Rising Edge
outp (0x40, GIMSK); // 인터럽트 소스 선택 - 외부인터럽트 0번
u08 i=0; // i를 int 형 변수선언
sei (); // 인터럽트 허용 함수
while(1){
if(d==0)
{ outp(phase1[i%4],PORTB); //시계방향으로 회전하는 함수
delay(5000); //이 배열 값을 PORTB로 출력
i++;
}
else
{ outp(phase2[i%4],
참고 자료
없음