1. 하강엣지 설정부분(디텍터)
AIC_ICCR = 1<<PIOA;// 안전을 위해 장치를 끄고,
PIO_IFER=1<<INT_PIN;//해당 핀을 글리치(glitch)한 다음,
AIC_ISCR= 1<<PIOA; //다시 장치를 활성화 시킨다.
위에 선언된 레지스터는 전부 인터럽트 관련된 레지스터
그리고 다음과 같이 PIO와 AIC_IECR를 활성화 한다.
PIO_IER = 1<<INT_PIN;
AIC_IECR= 1<<PIOA;
Aic_Handler()함수 만들기
지역변수는 함수가 종료되면, 사라져버린다.
함수가 빠르고 빈번하게 호출되기 때문에 static변수를 쓴다.
그러나, static은 프로그램종료가 되지 않으면, 계속 존재하므로
함부로 쓰지는 않는다.
volatile static unsigned int uipinstatus;
15번비트자리를 제외하고 모두 0으로 만들기 위해 &연산자를
사용한다. 0이 아닐때, Led_toggle()을 호출하여 스위치를 눌렀을때,
LED를 깜박이게 한다.
if(0!=(uipinstatus&(1<<INT_PIN)))
{
Led_toggle();
}
for(iCnt=0;iCnt<1000000;++iCnt);// 지연시킨다.
스위치에 잡음(?)이 남아있어 원하는 동작이 자연스럽게 나오지
않아 조금 개선하고자, 지연시켜버린다.
uipinstatus= PIO_ISR;
인터럽트 상태 레지스터.
인터럽트는 중첩을 허용할 수도 있다. 지금, 중첩을 허용하지 않기 위해
방지하는 장치가 필요하다. 아래와 같이 선언하면, 허용을 하지 않는다.
AIC_EOICR=0;
'코스웨어 > 13년 스마트컨트롤러' 카테고리의 다른 글
ARM 소스파일 - 임태형 (0) | 2013.05.23 |
---|---|
초음파센서 소스 - 전영기 (3) | 2013.05.23 |
[인터럽트 요청시 사용되는 용어 명확한 설명]by 문남경 (5) | 2013.05.22 |
5월 20일 AIC_init()만들기 -송시혁 (6) | 2013.05.22 |
2013.05.20_[타이머카운터복습/인터럽트/풀업풀다운저항]_김성엽 (12) | 2013.05.22 |
[타이머/카운터와 인터럽트로 1초간격 LED 깜빡이기] - by 문남경 (10) | 2013.05.21 |
5월 13일 수업 정리 - 임기준 (11) | 2013.05.20 |
2013.5.14 (화) Review - C언어 13장 do - while , 조건부컴파일 [손초롱] (8) | 2013.05.20 |