본문 바로가기

[ARM]인터럽트(그냥)

반응형

   

   

인터럽트를 읽었다고 확인을 하지 않았기 때문에 계속 깜빡인다.

   

//---------- 인터럽트 제어기 IO설정 

   

#define AIC_IECR (*(volatile unsigned int *) 0xFFFFF120)  // 인터럽트 허용 레지스터

#define AIC_IDCR (*(volatile unsigned int *) 0xFFFFF124)  // 인터럽트 금지 레지스터

#define AIC_ICCR (*(volatile unsigned int *) 0xFFFFF128)  // 인터럽트 클리어 레지스터

#define AIC_SMR  ((volatile unsigned int *) 0xFFFFF000)    // AIC 소스 모드 레지스터

#define AIC_SVR  ((volatile unsigned int *) 0xFFFFF080)    // AIC 소스 벡터 레지스터

   

   

//---------- 입출력 IO설정 

#define PIO_ODR (*(volatile unsigned int *) 0xFFFFF414)

   

#define PIO_PUDR (*(volatile unsigned int *) 0xFFFFF460)  // PIO Pull-Up Disable Register

#define PIO_PUER (*(volatile unsigned int *) 0xFFFFF464)  // PIO Pull-Up Enable Register

   

#define PIO_ISR (*(volatile unsigned int *) 0xFFFFF44C)

#define PIO_IER  (*(volatile unsigned int *) 0xFFFFF440)  // PIO Interrupt Enable Register

#define PIO_IDR  (*(volatile unsigned int *) 0xFFFFF444)  // PIO Interrupt Disable Register

#define PIO_IMR  (*(volatile unsigned int *) 0xFFFFF448)  // PIO Interrupt Mask Register

   

#define PIO_IFER (*(volatile unsigned int *) 0xFFFFF420)  // PIO Glitch Input Filter Enable Register

#define PIO_IFDR (*(volatile unsigned int *) 0xFFFFF424)  // PIO Glitch Input Filter Disable Register

   

#define PIO_SODR (*(volatile unsigned int *) 0xFFFFF430) //출력 

#define PIO_CODR (*(volatile unsigned int *) 0xFFFFF434) //출력 하지 않음

#define PIO_OER  (*(volatile unsigned int *) 0xFFFFF410) //출력 방향 설정

#define PIO_PER  (*(volatile unsigned int *) 0xFFFFF400) //병렬 입출력 제어 레지스터 병렬 입출력 포트로 사용한다.

   

   

//---------- 전력 제어 설정

   

#define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10)

   

   

#define MASTERCLOCK 48000000

#define INTERR    0x00000100

#define LED      0x00000010 

   

//--------- 전역 변수

   

void Delayms(unsigned int ms) //딜레이 함수..

{ 

  volatile unsigned int count, countmax = (MASTERCLOCK / 10000) * ms;

   

  for(count = 0; count < countmax; count++);

}

   

void ledToggle()

{  

   

    

  //unsigned int status;  //읽었다고 상태확인.

  //status = PIO_ISR;    //확인을 하지 않으면 계속 불이 들어옴.

  PIO_SODR = 0x000000FF;

  Delayms(500);

  PIO_CODR = 0x000000FF;

  Delayms(500);

}

   

int main(void)

{

   

  PMC_PCER = (unsigned int)1<<2;

   

  PIO_PER = 0x00000FFF; // 병령 I/O포트로 사용설정 디폴트로 I/O 포트로사용하도록 되어있다

   

  PIO_PUER = 1<<8;

  PIO_ODR = 0x0100;  //출력 버퍼 금지 레지스터 설정

  Delayms(50);

   

  PIO_OER  = 0x000000FF; 

   

  PIO_IFER = 0x00000100//글리치 필터 사용

   

  AIC_IDCR = (unsigned  int)1<<2//마스크 설정

  PIO_IER = 0x00000100//인터럽트 인애이블 레지스터

  AIC_SVR[2= (unsigned int)ledToggle; // 인터럽트 함수 설정

  AIC_SMR[2= 5//

  AIC_IECR = (unsigned  int)1<<2; //AIC는 인터럽트 제어기

   

   

  while(1)// 무한반복.

  {

  }

    

  return 0;

} // End Main....

   

   


반응형

'About 프로그래밍!!! > ARM' 카테고리의 다른 글

[ARM]인터럽트(두 개 거는 것)  (0) 2010.06.28
[ARM]인터럽트 확인.(초기화)  (0) 2010.06.28
[ARM]풀업저항, 풀다운저항.  (0) 2010.06.28
[ARM]인터럽터2  (0) 2010.06.25
[ARM]인터럽터  (0) 2010.06.24
-->