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

10.30 이경진 led

by 알 수 없는 사용자 2014. 10. 31.
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);    
  *AT91C_PITC_PIMR = AT91C_PITC_PITEN|AT91C_PITC_PITIEN|0xF4240;

}

void ISR_System(void)  

  if( *AT91C_PITC_PISR != 0 )
  {  
    if( (*AT91C_PITC_PIVR >> PICNT) == 1)
    {  
      ++uiCnt;
    }
    if( uiCnt%3 == 0)
    {
      LED_Toggle();      
    }
    
  }
}



#include "LED.h"

static volatile unsigned int uiState;

void LED_INIT(void)
{  
  *AT91C_PMC_PCER = AT91C_ID_PIOA;
  *AT91C_PIOA_PER = LED_PIN;
  *AT91C_PIOA_OER = LED_PIN;
  *AT91C_PIOA_PPUDR = LED_PIN;  //Pull-up 
  *AT91C_PIOA_SODR = LED_PIN;  
  uiState = __OFF__;
}

void LED_ON(void)
{
  *AT91C_PIOA_CODR = LED_PIN;  
  uiState = __ON__;
}

void LED_OFF(void)
{
  *AT91C_PIOA_SODR = LED_PIN;  
  uiState = __OFF__;
}

void LED_Toggle(void)
{
  if( __OFF__ == uiState)
  {
    LED_ON();
  }
  
  else
  {
    LED_OFF();
  }

}

unsigned int LED_STATE(void)
{
  return  uiState;
}



728x90

'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글

ARM_PIT_LED 손병규  (0) 2014.10.31
ARM Interval Timer LED on, off 김해성  (1) 2014.10.31
ADS LED ON/OFF(PIT) 김진철  (0) 2014.10.31
일일보고서 손병규 - 20141030  (6) 2014.10.31
인터벌 타이머 김재성  (0) 2014.10.31
ADS LED On/Off 양태영  (1) 2014.10.31
ADS LED ON/OFF(PIT) 김화린  (0) 2014.10.31
ADS LED ON/OFF(PIT) 문대영  (0) 2014.10.31