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

20140708 일일보고 2번 고한솔

by 알 수 없는 사용자 2014. 7. 9.
728x90
반응형
(기존 소스)

구조체의 포인터를 통하여 정의된 값을 가져온다.
     -> 구조체 포인터를 통해서 메모리에 접근해서 값을 가져오기 때문에 메모리의 낭비를 줄일 수 있다.
     -> 구조체를 사용하거나 구조체 포인터를 사용하는 것의 속도차이는 없음.

  •  AT91C_BASE_PIOA -> PIO_PER = 0x00000001;


(현재 소스)

디파인 되어있는 주소를 바로 가져와서 사용하도록 설정한다. 
     -> PER등등... 의 주소를 알아야 하기 때문에 AT91SAM7S256.h 헤더파일을 확인해서 define되어있는 주소값을 가져옴
     -> [#define AT91C_PIOA_PER  (AT91_CAST(AT91_REG *)      0xFFFFF400) ] //레지스터 주소의 정의를 해 놓은 소스

  • *AT91C_PIOA_PER = 0x00000001;





Peripheral DMA Controller
이 장치를 통하거나 APB를 통해야 Debug Unit을 사용할 수 있다.

APB
APB를 통해서 주소에 접근한다. (BUS)
     * 우리가 지금 하는 소스는 APB만 사용하면 된다.

Debug Unit
CPU의 상태를 알아 보거나 외부장치를 이용하여 프로그램을 추적 할 수 있다.
디버그 전용으로 따로 만들어 둔 것, USART와 DBGU는 따로있다.
컴퓨터 내용안의 간단한것을 구현 할 때에는 DBGU를 사용하면 더 간편하게 데이터를 주고 받을 수 있다

Power Management Controller
전기를 공급하는 것
->MCK를 넣어줘야 디버그유닛이 동작한다

MCK
메인클럭

Baud Rate Generator
통신 속도를 설정하는 회로

PIO
PIO를 통하여 외부핀에 접근 할 수 있다. (DRXD, DTXD)

ICE Access Handler
디버그할때의 CPU상태 정보를 받아서 시리얼통신으로 보내주는 회로
     *ARMProcessor(CPU) 
  • 외부의 디버깅 정보를 알아보는 회로
  • 내부를 들여다 보기 위해서 신호를 받아 줄 회로가 필요하다. (내장하고 있어야함)



*Debug Unit의 Pin에 대한 설명 - DRXD / DTXD




Boot Program   - 부팅 감시
Trace Manager - 외부장치를 이용하여 상태를 추적






26.3 Product Dependencies
- 다른 장치에 의존적이다.
- 밑의 기능들을 제대로 사용할 줄 알아야 디버그 유닛이 동작한다.




** I/O Lines **

- DBGU로 부터 나가는 외부핀 DRXD의 핀번호





-> PA9, PA10번  
  • PIN하나로 세가지의 용도로 사용할 수 있다. (지금 I/O Line으로 사용하고 있다 -> Peripherl A모드 사용으로 교체)


PA10, PA9 - 입력으로 들어가고 있음
Serial_Con - ARM칩의 PIN 세개짜리 몰렉스




Peripheral A select Register 사용 (데이터시트 248~249P)
  • Peripheral A를 사용하면 DBGU모드로 바뀐다.







** Power Management **


25.2 Master Clock Controller

PLLCK - 낮은 주파수를 높은 주파수로 바꾸어줌
PMC_MCKR - SLCK, MAINCK, PLLCK 중 하나를 선택해 주는 관리자
  • -PMC_MCKR를 건드리면 클럭을 건드릴 수 있다.
  • PMC_MCKR의 PRES를 건드리면 마스터 클럭 프리스케일러를 관리할 수 있음



25.5 Peripheral Clock Controller




** Interrupt Source **

 
AIC -  AIC에서 인터럽트를 안쓰겠다고 해주어야함.








26.4 UART Operations
비동기 밖에 안되므로 USART가 아닌 UART라 부른다. 데이터를 한번에 보낼 때 8bit밖에 보낼 수 없다. (패리티비트 포함)
비동기 이기 때문에 clock핀을 가지고 있을 필요가 없다.


26.4.1 Baud Rate Generator
통신속도 




직접 계산해야함
아트메가의 속도에는 제한이 있는데 57600 = (48000000 / (16*CD))



16-bit Counter - 16bit Counter가 MCK를 갖고있는데 이 16bit 카운터를 관리하는게 CD

Receiver Sampling Clock - 받을때도 클럭이 필요하기 때문에

Receiver - 1을 넣으면 수신활성화

26.4.2.1 Receiver Reset, Enable and Disable

DBGU_CR - RSTRX를 써서 reset모드를 만들 수 있다.








26.4.2.3 Receiver Ready

  • 수신된 캐릭터가 완료되었을때 임의의 (데이터의 크기 조절 불가능) 캐릭터가 왔을 때 전송시킨다.
  • 데이터가 수신되면 DBGU status 레지스터가 1이된다. 
  • receive holding 레지스터 DBGU_RHR이 읽어질때 (누군가 이 레지스터에 접근을 하게 되면) RXRDY라고 부르는 레지스터는 자동적으로 0으로 된다.

S에서 시작하고 데이터를 DRXD가 받는것을 완료하고 나면 RXRDY가 DBGU_RHR에 데이터를 주게되고 RXRDY는 0이된다.
RHR은 데이터 받는것을 완료할 때까지 1을 유지했다가 데이터 받기를 완료하면 자동적으로 0이 된다.



아무도 데이터를 읽지 않으면 쭉 L를 유지하다가 두번째부터 덮어씀











RXCHR - 실제로 사용하는 bit



DBGU_IDR - 여기에 0xfffff 넣으면 다꺼진다.








짝수페리티와 노말모드 설정






--두환오빠꺼



내일은 송/수신 함수를 만든다


728x90