• 200 likes • 370 Views
AT91SAM7S256(LED 실습 ). 윤 상 민. 시작하기에 앞서. 개발환경 구축에 관한 내용은 없습니다 . SAM-BA 프로그램의 다운과 ADS 프로그램의 설치부분은 넣지 않았습니다 . 개발 환경이 갖추어 지고 난 뒤 제어를 어떻게 할 것인지 부분을 다루기로 합니다. LED 실습. 전력관리 제어기에서 클록 공급 (PMC 관련 레지스터 ) I/O 관련 레지스터에서 해당 핀에 설정 (PIO 관련 레지스터 ). 전력관리 제어기 (PMC). 각종의 클록 신호 발생을 제어해주는 레지스터 .
E N D
AT91SAM7S256(LED 실습) 윤 상 민
시작하기에 앞서 • 개발환경 구축에 관한 내용은 없습니다. • SAM-BA 프로그램의 다운과 ADS 프로그램의 설치부분은 넣지 않았습니다. • 개발 환경이 갖추어 지고 난 뒤 제어를 어떻게 할 것인지 부분을 다루기로 합니다
LED 실습 • 전력관리 제어기에서 클록 공급 • (PMC 관련 레지스터) • I/O관련 레지스터에서 해당 핀에 설정 • (PIO 관련 레지스터)
전력관리 제어기(PMC) • 각종의 클록 신호 발생을 제어해주는 레지스터. • 각종 신호의 클록 발생이란 해당 장치가 동작 하도록 클록을 넣어준다는 것은 우리가 일반적으로 전원을 넣어주는 행위와 비슷하다고 할 수 있다. • PCK( 프로세서 클록), 주변장치 클록 • MCK( 마스터 클록), 프로그래머블 클록 • UDPCK(USB 클록)
전력관리 제어기의 레지스터 맵핑 • 25.9 Power Management Controller (PMC) User Interface( 참고 ) • PMC_PCER (주변장치 클록 허용 레지스터) • PMC_PCDR (주변장치 클록 금지 레지스터 • PMC_PCSR (주변장치 클록 상태 레지스터) • PMC_SCDR (시스템 클록 금지 레지스터) • PMC_SCSR (시스템 클록 상태 레지스터)
주변장치 클록의 허용 • 25.9.4 PMC Peripheral Clock Enable Register (p.202) • PMC_PCER레지스터 • 0= 무효 • (무효란 아무런 값을 설정 하지 않음을 말한다) • 1= 대응하는 주변 장치에 클록 공급을 허용 • (해당 비트에 1을 넣을 경우 클록 공급을 허용)
Peripheral Identifiers(주변장치 식별자) • 주변 장치에 대해서 번호를 지정함 • PID0 ~ PID31번까지의 고유의 PID 번호를 가지고 있다. • ARM DataSheet 10.2 Peripheral Identifiers
PIOA에 클록 공급 허용하기 • Paraller I/O Controller A를 사용하기 위해서는 PID2 번에 클록 공급을 해야 한다. • 그래서 PMC_PCER 레지스터의 PID2번에 1을 설정해서 클록 공급을 허용한다. • Ex) PMC_PCER = (1<<2);
I/O제어 레지스터 27.6 Parallel Input/Output Controller :PIO (p.246) User InterfacePIO_PER : 병렬 입출력 허용 레지스터 • PIO_PDE : 병렬 입출력 금지 레지스터 • PIO_PSR : 병렬 입출력 상태 레지스터 • PIO_OER : PIO 출력 허용 레지스터 • PIO_ODR : PIO 출력 금지 레지스터 • PIO_OSR : PIO 출력 상태 레지스터
오프셋의 시작주소 • PMC관련 레지스터 , PIO 관련 레지스터의 주소는 오프셋 값으로 나타내져 있다. 32비트 주소에서 우리가 아는 값은 오프셋 값뿐이다. 어디서 부터 오프셋을 시켜야 할까? • Figure 8-1. AT91SAM7S512/256/128/64/321/32/161/16 Memory Mapping (p.20)
레지스터 맵핑 코드 • #define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10) • #define PIO_PER (*(volatile unsigned int *) 0xFFFFF400) • #define PIO_OER (*(volatile unsigned int *) 0xFFFFF410) • #define PIO_SODR (*(volatile unsigned int *) 0xFFFFF430)
실습 • 위의 설명들을 토대로 LED제어