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

ADS LED ON/OFF(PIT) 김진철

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

< LED.h>

#ifndef _LED_H_

#define _LED_H_


#include "AT91SAM7S256.h"


#define LED_PIN AT91C_PIO_PA0 // LED PIN을 0을 사용

#define __ON__ 1

#define __OFF__ 0

#define PICNT 20

void LED_Init(void);

void LED_On(void);

void LED_Off(void);

unsigned int LED_State(void);

void LED_Toggle(void);


#endif //_LED_H_


<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; // LED OFF
uiState = __OFF__;
}
void LED_On(void)
{
*AT91C_PIOA_CODR = LED_PIN; // LED ON
uiState = __ON__;
}

void LED_Off(void)
{
*AT91C_PIOA_SODR = LED_PIN; // LED OFF
uiState = __OFF__;
}

unsigned int LED_State(void)
{
return uiState;
}

void LED_Toggle(void)
{
volatile unsigned int iCnt;
if(uiState == __OFF__)
{
LED_On();
uiState = __ON__;
}
else
{
LED_Off();
uiState = __OFF__;
}
}

< main.c>


#include "AT91SAM7S256.h"

#include "LED.h"


void PIT_Init(void);

void ISR_System(void);

//volatile unsigned int iCnt;

int main(void)

{


LED_Init();

PIT_Init();

while (1)

{

}

return 0;

}


void PIT_Init(void)

{

AT91C_AIC_SVR[AT91C_ID_SYS] = (unsigned int)ISR_System;

*AT91C_AIC_IECR = (1<<AT91C_ID_SYS);

*AT91C_PITC_PIMR = AT91C_PITC_PITEN |  AT91C_PITC_PITIEN | 0xF4240; // 0.3333초 마다 인터럽트(1/3초)

}

void ISR_System(void)

{

static unsigned int i;

/*

static unsigned int iCnt;

++iCnt;

if(0 == (iCnt%3))

{

LED_Toggle();

}

*/

if(0 != *AT91C_PITC_PISR)

{

if(1==(*AT91C_PITC_PIVR >> PICNT)) //AT91C_PITC_PIVR 상태를 읽어드릴때 초기화

{

++i;

if((i%3) == 0)

{

LED_Toggle();

}

}

}

}

728x90

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

2014.11.03 업무일지 출석번호21 이재우  (9) 2014.11.04
10.31 이경진  (9) 2014.11.03
ARM_PIT_LED 손병규  (0) 2014.10.31
ARM Interval Timer LED on, off 김해성  (1) 2014.10.31
일일보고서 손병규 - 20141030  (6) 2014.10.31
10.30 이경진 led  (0) 2014.10.31
인터벌 타이머 김재성  (0) 2014.10.31
ADS LED On/Off 양태영  (1) 2014.10.31