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

ADS LED ON/OFF(PIT) 김화린

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

main.c


#include "AT91SAM7S256.h"
#include "LED.h"

#define PICNT 20 

void PIT_Init(void);
void ISR_System(void);

int main()
{
  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(0!=*AT91C_PITC_PISR)
  {
    if(1 == ((*AT91C_PITC_PIVR >> PICNT) ))
    {
      LED_TOGGLE();
    } 
  }
}




LED.c


#include "LED.h"

static volatile unsigned int uiState;

void LED_Init(void)
{
  *AT91C_PMC_PCER = (1<<AT91C_ID_PIOA); 
  *AT91C_PIOA_PER = LED_PIN; 
  *AT91C_PIOA_OER = LED_PIN;
  *AT91C_PIOA_PPUDR = LED_PIN;
  *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__;
}

unsigned int LED_STATE(void)
{
  return uiState; 
}

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

}



LED.h


#ifndef __LED_H__
#define __LED_H__

#include "AT91SAM7S256.h"

#define LED_PIN AT91C_PIO_PA0 

#define  __ON__     1
#define __OFF__    0

void LED_ON(void);

void LED_OFF(void);

void LED_Init(void);
unsigned int LED_STATE(void);
void LED_TOGGLE(void);

#endif 




728x90

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

일일보고서 손병규 - 20141030  (6) 2014.10.31
10.30 이경진 led  (0) 2014.10.31
인터벌 타이머 김재성  (0) 2014.10.31
ADS LED On/Off 양태영  (1) 2014.10.31
ADS LED ON/OFF(PIT) 문대영  (0) 2014.10.31
ARM PIT 이용한 LED - 허수웅  (0) 2014.10.31
ADS LED ON/OFF  (0) 2014.10.31
10.30 PIT 활용 LED On/Off [오두환]  (0) 2014.10.30