본문 바로가기
코스웨어/14년 스마트컨트롤러

10.30 PIT 활용 LED On/Off [오두환]

by 알 수 없는 사용자 2014. 10. 30.
728x90
반응형

#include "LED.h"

#include "AT91SAM7S256.h"

#define PICNT 20



void ISR_System(void);

void PIT_INIT(void);


volatile unsigned int uiCnt;

int main(void)

{

LED_INIT();

PIT_INIT();

while (1);

return 0;

}


void PIT_INIT(void)

{

AT91C_AIC_SVR[AT91C_ID_SYS] = ((volatile unsigned int)ISR_System); // 함수 등록 

*AT91C_AIC_IECR = (1 << AT91C_ID_SYS); // Interrupt Enable

*AT91C_PITC_PIMR = AT91C_PITC_PITEN|AT91C_PITC_PITIEN|0xF4240;

// PIMR -> PITEN, PITIEN, 활성화, 0xF4240 마다 IRQ 발생 //

}


void ISR_System(void) // PIT 말고도 다른 sys 쪽도 발생할수 있다

{ // Interrupt Service Routine

if( *AT91C_PITC_PISR != 0 )

{

if( (*AT91C_PITC_PIVR >> PICNT) == 1)        // PICNT 는 Set, Clear 를 반복, Set 이 될 때 마다 0.3 초 마다 uiCnt 상승

{

++uiCnt;

}

if( uiCnt%3 == 0)

{

LED_Toggle();

}

}

}


main.c 

728x90