#include "AT91SAM7S256.h"
#include "lib_AT91SAM7S256.h"
#include "OK7S256ads.h"
#define DBGU_SR (*(volatile unsigned int *) 0xFFFFF214)
#define DBGU_RHR (*(volatile unsigned int *) 0xFFFFF218)
#define DBGU_THR (*(volatile unsigned int *) 0xFFFFF21C)
#define DBGU_MR (*(volatile unsigned int *) 0xFFFFF204)
#define DBGU_BRGR (*(volatile unsigned int *) 0xFFFFF220)
#define DBGU_CR (*(volatile unsigned int *) 0xFFFFF200)
#define PIO_ASR (*(volatile unsigned int *) 0xFFFFF470)
#define PIO_BSR (*(volatile unsigned int *) 0xFFFFF474)
#define PIO_PDR (*(volatile unsigned int *) 0xFFFFF404)
#define PIO_SODR (*(volatile unsigned int *) 0xFFFFF430)
#define PIO_CODR (*(volatile unsigned int *) 0xFFFFF434)
#define PIO_OER (*(volatile unsigned int *) 0xFFFFF410)
#define PIT_MR (*(volatile unsigned int *) 0xFFFFFD30)
#define AIC_SVR ((volatile unsigned int *) 0xFFFFF080)
#define AIC_SMR ((volatile unsigned int *) 0xFFFFF000)
#define AIC_IDCR (*(volatile unsigned int *) 0xFFFFF124)
#define AIC_ICCR (*(volatile unsigned int *) 0xFFFFF128)
#define AIC_IECR (*(volatile unsigned int *) 0xFFFFF120)
#define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10)
volatile unsigned int PIT_count=0;
volatile unsigned int PIT_flag = 0;
void Delayms(unsigned int ms) //딜레이 함수..
{
volatile unsigned int count, countmax = (48000000 / 10000) * ms;
for(count = 0; count < countmax; count++);
}
unsigned int DBGU_RX_char(void)
{
while(!(DBGU_SR & 0x0001)); // wait until RXRDY=1
return DBGU_RHR; // receive a character
}
void DBGU_TX_char(unsigned int data)
{
while(!(DBGU_SR & 0x0002)); // wait until TXRDY=1
DBGU_THR = data; // transmit a character
}
void DBGU_string(char *string)
{
while(*string != '\0')
{
DBGU_TX_char (*string);
string++;
}
}
void PIT_ISR(void)
{
AT91F_PITGetPIVR(AT91C_BASE_PITC);
PIT_count++;
if(PIT_count<10)
return;
PIT_count = 0;
PIT_flag ^= 0x01;
if(PIT_flag == 1)
{
PIO_SODR = 0x00000007;
DBGU_string("켬");
}
else
{
PIO_CODR = 0x00000007;
DBGU_string("끔");
}
}
int main(void)
{
PIO_OER = 0x00000FFF;
PMC_PCER =(unsigned int)1 << (unsigned int)1;
PIO_ASR = ((unsigned int)1<<10| (unsigned int)1<<9);
PIO_BSR = 0;
PIO_PDR = ((unsigned int)1<<10 | (unsigned int)1<<9); // Set in Periph mode
DBGU_MR = 0x00000800; // normal mode, no parity
DBGU_BRGR = 26; // MCK/16/26 = 115200 bps
DBGU_CR = 0x00000150; // TX, RX enable
//AT91F_PITC_CfgPMC();
AT91F_PITInit(AT91C_BASE_PITC,200000,48);
//PIT_MR = period? (period * pit_frequency + 8) >> 4 : 0;
//PIT_MR |= (unsigned int) 0x1 << 24);
AT91F_PITSetPIV(AT91C_BASE_PITC,600000-1);
AT91F_PITEnableInt(AT91C_BASE_PITC);
//AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_SYS, 7, 1, PIT_ISR);
AIC_IDCR = 0x1 << (unsigned int) 1;
AIC_SVR[1] = (unsigned int)PIT_ISR; //이부분은 배열이라서 선언할때 조심!!!!!!
AIC_SMR[1] = 7; //이부분은 배열이라서 선언할때 조심!!!!!!
AIC_ICCR = 0x1 << (unsigned int) 1;
//AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS);
AIC_IECR = 0x1 << (unsigned int) 1;
while(1);
}
'ARM7' 카테고리의 다른 글
운동로봇 2011 4월 29일 임시 저장 arm7부분 Serial (0) | 2011.04.28 |
---|---|
arm7 pc로 부터 문자 받아 다시 보내기(시리얼 통신) (0) | 2011.04.27 |
초음파 sfr05 arm7 으로 돌리기.2011 4월 22일 (0) | 2011.04.22 |
ARM 7 타이머 카운트의 정리 (0) | 2010.03.11 |
가속도 센서 로 스텝모터 전후진 하기 (0) | 2010.02.10 |