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

2015-07-21 32번 천정호 AT91ARM7S256 Chip 분석 및 ARM을 이용한 LED 제어

by 알 수 없는 사용자 2015. 7. 22.
728x90
반응형

오전 이승규 선생님의 수업은 중간프로젝트 기간으로 개인 프로젝트 공부와 프로젝트 보고서 작성을 하였기에 수업내용은 없습니다.


AT91ARM7S256 Chip 회로도 분석


- ARM 7S -


- Jump Or Pin -


- Power -

- Max3232 -


- USB -


- Switch -


- Switch II -


- Noise -



ARM 7S을 이용하여 LED 제어

//#include "project.h"


// 기준이 되는 Pin 레지스터

#define PIOA         (*((volatile unsigned int *)0xFFFFF400))


#define PIO_PER (*(volatile unsigned int *)0xFFFFF400)

#define PIO_PDR (*(volatile unsigned int *)0xFFFFF404)

// 상태출력 레지스터

#define PIO_PSR (*(volatile unsigned int *)0xFFFFF408)


// 출력활성화 레지스터

#define PIO_OER (*(volatile unsigned int *)0xFFFFF410)

#define PIO_ODR (*(volatile unsigned int *)0xFFFFF414)

#define PIO_OSR (*(volatile unsigned int *)0xFFFFF418)


#define PIO_IFER         (*(volatile unsigned int *)0xFFFFF420)

#define PIO_IFDR         (*(volatile unsigned int *)0xFFFFF424)

#define PIO_IFSR         (*(volatile unsigned int *)0xFFFFF428)


#define PIO_SODR     (*(volatile unsigned int *)0xFFFFF430)

#define PIO_CODR (*(volatile unsigned int *)0xFFFFF434)

#define PIO_ODSR         (*(volatile unsigned int *)0xFFFFF438)

#define PIO_PDSR         (*(volatile unsigned int *)0xFFFFF43C)


#define PIO_IER (*(volatile unsigned int *)0xFFFFF440)

#define PIO_IDR (*(volatile unsigned int *)0xFFFFF444)

#define PIO_IMR (*(volatile unsigned int *)0xFFFFF448)

#define PIO_ISR (*(volatile unsigned int *)0xFFFFF44C)


#define PIO_MDER (*(volatile unsigned int *)0xFFFFF450)

#define PIO_MDDR (*(volatile unsigned int *)0xFFFFF454)

#define PIO_MDSR (*(volatile unsigned int *)0xFFFFF458)


#define PIO_PUDR         (*(volatile unsigned int *)0xFFFFF460)

#define PIO_PUER         (*(volatile unsigned int *)0xFFFFF464)

#define PIO_PUSR         (*(volatile unsigned int *)0xFFFFF468)


#define PIO_ASR (*(volatile unsigned int *)0xFFFFF470)

#define PIO_BSR (*(volatile unsigned int *)0xFFFFF474)

#define PIO_ABSR         (*(volatile unsigned int *)0xFFFFF478)

#define PIO_OWER (*(volatile unsigned int *)0xFFFFF4A0)

#define PIO_OWDR (*(volatile unsigned int *)0xFFFFF4A4)

#define PIO_OWSR (*(volatile unsigned int *)0xFFFFF4A8)


#define PMC (*((volatile unsigned int *)0xFFFFFC00))

#define RSTC         (*((volatile unsigned int *)0xFFFFFD00))

#define RTT (*((volatile unsigned int *)0xFFFFFD20))

#define PIT (*((volatile unsigned int *)0xFFFFFD30))

#define WDT (*((volatile unsigned int *)0xFFFFFD40))

#define VREG         (*((volatile unsigned int *)0xFFFFFD60))

#define MC (*((volatile unsigned int *)0xFFFFFF00))


int main()

{

volatile unsigned int iCount = 0;


// PIO_PER의 PIN을 활성화 시키는 레지스터

PIO_PER = 0X00000001;

// 외부출력 설정 레지스터

PIO_OER = 0X00000001;


while (1)

{

// AVR과 ARM의 가장 큰 차이!

/* 원하는 포트의 비트에 SODR에 1을 넣으면 해당 비트만

High로 변경되고 반대로 CODR에 1을 넣으면 해당 비트만

Low로 변경이 된다. */


// Data Output 설정을 1로 변경 (Set)

PIO_SODR = 0X00000001;

for (iCount = 0; 1000000 >= iCount; ++iCount);


// Data Output 설정을 0로 변경(Clear)

PIO_CODR = 0X00000001;

for (iCount = 0; 1000000 >= iCount; ++iCount);

}


while (1);


return 0;

}


ARM 7S 256 보드에 코드 넣기


- 코드가 있는 해당 폴더에서 관리자 모드로 콘솔창을 띄워서 코드들을 make 시켜 컴파일 한다.


- 컴파일이 무사히 완료된다면 컴퓨터와 보드를 연결시킨다.

- Connection에는 \usb\ARM*의 형태로 잡혀야하고 보드는 AT91SAM7S256-EK로 사용자가 직접 선택해준다.

- 주의 -

- 이전에 ARM 7S에 코드를 넣은 경우가 있다면 ARM 7S 보드가 연결되지 않는다.

- 이럴때는 보드에서 삼바를 초기화 시켜줘야하는데 삼바 초기화는 아래 그림을 참조하기 바람.


- SAM-BA Program과 보드가 연결된 후 코드를 넣기위한 기본창


- 보드에 넣을 파일 선택


- 파일 전송


- 파일 전송 옵션 선택 I


- 파일 전송 옵션 선택 II


- 전송 완료 후 정상작동 테스트


728x90