//-----------------------------------------------------------------------------------------------
//-----------
//병렬 입출력 제어기(PIO) I/O 제어 레지스터
#define PIO_PER (*(volatile unsigned int *) 0xFFFFF400) //PIO 병렬 입출력 허용 레지스터
#define PIO_PDR (*(volatile unsigned int *) 0xFFFFF404) //PIO 병렬 입출력 금지 레지스터
#define PIO_OER (*(volatile unsigned int *) 0xFFFFF410) //PIO 출력 허용 레지스터
#define PIO_ODR (*(volatile unsigned int *) 0xFFFFF414) //PIO 출력 금지 레지스터
#define PIO_IFER (*(volatile unsigned int *) 0xFFFFF420) //PIO 입력 필터 허용 레지스터
#define PIO_SODR (*(volatile unsigned int *) 0xFFFFF430) //PIO 출력 데이터 세트 레지스터
#define PIO_CODR (*(volatile unsigned int *) 0xFFFFF434) //PIO 출력 데이터 클리어 레지스터
#define PIO_IER (*(volatile unsigned int *) 0xFFFFF440) //PIO 인터럽트 허용 레지스터
#define PIO_IDR (*(volatile unsigned int *) 0xFFFFF444) //PIO 인터럽트 금지 레지스터
#define PIO_ISR (*(volatile unsigned int *) 0xFFFFF44C) //PIO 인터럽트 상태 레지스터
#define PIO_PUDR (*(volatile unsigned int *) 0xFFFFF460) //PIO 풀업저항 금지 레지스터
#define PIO_PUER (*(volatile unsigned int *) 0xFFFFF464) //PIO 풀업저항 허용 레지스터
#define PIO_ASR (*(volatile unsigned int *) 0xFFFFF470) //PIO 주변장치 A 선택 레지스터
#define PIO_BSR (*(volatile unsigned int *) 0xFFFFF474) //PIO 주변장치 B 선택 레지스터
//-----------------------------------------------------------------------------------------------
//-----------
//전력관리 제어기(PMC) I/O 제어 레지스터
#define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10) //PMC 주변장치 클록 허용 레지스터
#define MASTERCLOCK 48000000
//-----------------------------------------------------------------------------------------------
//-----------
//인터럽트 제어기(AIC) I/O 제어 레지스터
#define AIC_SMR ( (volatile unsigned int *) 0xFFFFF000) //AIC 소스 모드 레지스터
#define AIC_SVR ( (volatile unsigned int *) 0xFFFFF080) //AIC 소스 벡터 레지스터
#define AIC_IECR (*(volatile unsigned int *) 0xFFFFF120) //AIC 인터럽트 허용 명령 레지스터
#define AIC_IDCR (*(volatile unsigned int *) 0xFFFFF124) //AIC 인터럽트 금지 명령 레지스터
#define AIC_ICCR (*(volatile unsigned int *) 0xFFFFF128) //AIC 인터럽트 클리어 명령 레지스터
//-----------------------------------------------------------------------------------------------
//-----------
//디버그 유닛(DBGU) I/O 제어 레지스터
#define DBGU_CR (*(volatile unsigned int *) 0xFFFFF200) //DBGU 제어 레지스터
#define DBGU_MR (*(volatile unsigned int *) 0xFFFFF204) //DBGU 모드 레지스터
#define DBGU_IER (*(volatile unsigned int *) 0xFFFFF208) //DBGU 인터럽트 허용 레지스터
#define DBGU_IDR (*(volatile unsigned int *) 0xFFFFF20C) //DBGU 인터럽트 금지 레지스터
#define DBGU_IMR (*(volatile unsigned int *) 0xFFFFF210) //DBGU 인터럽트 마스크 레지스터
#define DBGU_SR (*(volatile unsigned int *) 0xFFFFF214) //DBGU 상태 레지스터
#define DBGU_RHR (*(volatile unsigned int *) 0xFFFFF218) //DBGU 수신홀딩 레지스터
#define DBGU_THR (*(volatile unsigned int *) 0xFFFFF21C) //DBGU 송신홀딩레지스터
#define DBGU_BRGR (*(volatile unsigned int *) 0xFFFFF220) //DBGU 보레이트 발생 레지스터
#define DBGU_CIDR (*(volatile unsigned int *) 0xFFFFF240) //DBGU 칩 ID레지스터
#define DBGU_EXID (*(volatile unsigned int *) 0xFFFFF244) //DBGU 칩 ID 확장 레지스터
#define DBGU_FNR (*(volatile unsigned int *) 0xFFFFF248) //DBGU 강제 NTRST레지스터
//-----------------------------------------------------------------------------------------------
//-----------
//타이머 카운터(TC) I/O 제어 레지스터
#define TC0_CCR (*(volatile unsigned int *) 0xFFFA0000) //TC0 채널 제어 레지스터
#define TC0_CMR (*(volatile unsigned int *) 0xFFFA0004) //TC0 채널 모드 레지스터
#define TC0_CV (*(volatile unsigned int *) 0xFFFA0010) //TC0 카운터 값 레지스터
#define TC0_RA (*(volatile unsigned int *) 0xFFFA0014) //TC0 레지스터 A
#define TC0_RB (*(volatile unsigned int *) 0xFFFA0018) //TC0 레지스터 B
#define TC0_RC (*(volatile unsigned int *) 0xFFFA001C) //TC0 레지스터 C
#define TC0_SR (*(volatile unsigned int *) 0xFFFA0020) //TC0 상태 레지스터
#define TC0_IER (*(volatile unsigned int *) 0xFFFA0024) //TC0 인터럽트 허용 레지스터
#define TC0_IDR (*(volatile unsigned int *) 0xFFFA0028) //TC0 인터럽트 금지 레지스터
#define TC0_IMR (*(volatile unsigned int *) 0xFFFA002C) //TC0 인터럽트 마스크 레지스터
#define TC_BCR (*(volatile unsigned int *) 0xFFFA00C0) //TC 블록 제어 레지스터
#define TC_BMR (*(volatile unsigned int *) 0xFFFA00C4) //TC 블록 모드 레지스터
//-----------------------------------------------------------------------------------------------
//-----------
//주기적인 시간간격 타이머(PIT) I/O 제어 레지스터
#define PIT_MR (*(volatile unsigned int *) 0xFFFFFD30) //PIT 모드 레지스터
#define PIT_SR (*(volatile unsigned int *) 0xFFFFFD34) //PIT 상태 레지스터
#define PIT_PIVR (*(volatile unsigned int *) 0xFFFFFD38) //PIT 카운터값 레지스터
#define PIT_PIIR (*(volatile unsigned int *) 0xFFFFFD3C) //PIT 이미지 레지스터
static int p = 0;
void shift_LED()
{
int clear;
clear = PIT_PIVR; //PIVR 값을 읽어서 초기화
p++;
if(p==3)
{
PIO_CODR = 1 << 3;
PIO_SODR = 1 << 0;
}
else if(p == 6)
{
PIO_CODR = 1 << 0;
PIO_SODR = 1 << 1;
}
else if(p == 9)
{
PIO_CODR = 1 << 1;
PIO_SODR = 1 << 2;
}
else if(p == 12)
{
PIO_CODR = 1 << 0;
PIO_SODR = 1 << 3;
p = 0;
}
}
int main(void)
{
PMC_PCER = 1<<2;
AIC_SVR[1] = (unsigned int) shift_LED; //PIT가 AIC_IECR의 b1즉 SYS에 있기 때문에 x에 1을
//넣어준다.
AIC_SMR[1] = 1;
AIC_IECR = 1<<1; //SYS include PIT.
PIT_MR = 0x7A120| 1<<24| 1<<25;//F4240
PIO_OER = 0xF;
PIO_PER = 0xF;
while(1)
{
}
return 0;
}
'About 프로그래밍!!! > ARM' 카테고리의 다른 글
[ARM] 캐릭터 LCD에 글자쓰기 (0) | 2010.07.09 |
---|---|
[ARM]주기적 타이머로 통신하기 (0) | 2010.07.07 |
[ARM]주기적인 시간간격 타이머(PIT) (0) | 2010.07.06 |
[ARM]파형발생 WAVSEL (0) | 2010.07.05 |
[ARM] 카운터 (0) | 2010.07.05 |