20140424 - USART Block Diagram 데이터 전송에 대한 전반적인 루트, LCD.c LCD.h 분할 컴파일하기
ATMega128 2014. 4. 24. 14:02데이터 전송에 대한 전반적인 루트
RS-232 - 선 전압 방법 5v의 잡음 때문에 12v로 확실히 전달하기 위해 12v를 쓴다.
high는 12v, low는 -12v
RS-232에 대한 검색결과에 의한 정의
PC와 음향 커플러, 모뎀 등을 접속하는 직렬 방식의 인터페이스의 하나이다. 인터페이스는 포트라고도 하여 일반적으로 직렬 포트라고 불리기도 한다.
번호대로 살펴 보면
1. OSC(Osillator) : 오실레이터에서 기본적으로 최대출력을 9600bps의 속도를 유지한다. 여기서 오실레이터는 ATMega Chip의 속도이며 그 속도는 16Mhz이다. 이 속도를 기준으로 안정적인 통신 속도는 9600bps가 MAX이다.
아래 그림은 16MHz에 대한 내용이다. 실제로 오실레이터는 클럭속도를 전달한다.
2. UBRR : UBRR의 주소값을 통해서 제어하면 통신속도를 조절하도록 명령을 BAUD RATE GENERATOR에게 내린다. 이를 통해 전달하는 통신의 속도나 전달 받는 통신속도를 정한다.
3. BAUD RATE GENERATOR : 통신속도 제어 코드를 생성하는 장치이다. UBRR을 제어함으로써 UBRR이 BRG(BAUD RATE GENERATOR)에게 명령을 전달하면 전달된 명령을 바탕으로 BRG가 통신속도를 제어하는 것이다. 그리고 통신속도 조절한 것을 TRANSMIT SHIFT REGISTER와 CLOCK RECEIVE로 전달된다.
4. UDR : UDR은 UBRR과 마찬가지로 프로그래머가 제어하는 장치이다. 프로그래머가 전달하는 값을 통해 TRANSMIT SHIFT REGISTER를 제어하는 것이다.
5. TRANSMIT SHIFT REGISTER : BRG를 통해서 전달된 통신속도제어와 OSC를 통해서 전달된 통신속도를 바탕으로 데이터를 SHIFT(비트를 한칸 이동)하는 레지스터이다.
전송하는 통신속도와 전달받는 통신속도가 서로 상이하면 전달되는 데이터 자체가 오류난다.
-> URD로 부터 전달된 데이터의 값을 TSR로 전달하면 전달된 데이터는 왼쪽부터 1bit단위로 전압으로 변경하여 전달한다. 현재 셋팅된 통신속도는 8bps이다. 하지만 전달받는 장치의 셋팅된 통신속도가 16bps로 서로 다르다면 실제 위의 값이 HHLLHHLLHHHHLLHH(H:High, L : Low)와 같은 방식으로 전달 받을 것이다.
그 때문에 정확한 데이터의 전송을 위해서는 전송하는 데이터의 통신속도와 받는 데이터의 통신속도를 맞추어야 한다.
6. PARITY GENERATOR : 패리티 코드를 사용하는지 여부에 대해서 제어해주는 장치
패리티 코드란 오류를 검출하기 위한 패리티 비트를 추가해주는 코드를 의미. 이러한 패리티 비트는
EVEN Parity(짝수 패리티)와 ODD Parity(홀수 패리티)로 나뉘어지는데 각 bps속도에 맞추어서 끝에 패리티 코드를 삽입해주는 것이다.
예) ODD Parity로 하겠다고 한다면 8bps의 통신속도에 맞추어서 11010110의 데이터를 전달한다해서 해당 데이터에 High가 총 5개가 있게 된다. High값을 기준으로 Odd Parity로 추가되는 비트에 0이나 1의 값을 주는 것이다. 위의 경우는 1이 5개로 홀수이므로 추가되는 데이터의 제일 끝자리에 0을 추가해서 9개의 bit를 전송해주면 되는 것이다. 이같은 방법은 해당 bit의 숫자를 받는쪽에서 같이 셋팅을 해줌으로써 전달된 데이터가 정확하게 전달이 되었는지 확인을 할 수 있게 된다.
다만 이러한 패리티 코드는 잘못된 데이터를 검출할 수 있으면 수정은 불가능하고 짝수개의 정보가 11로 수정이 된다면 오류검출을 하지 못한다는 단점이 있다.(2개 이상의 잡음(noise)가 발생하면)
7. CLOCK RECOVERY : 클럭 리커버리는 전달받은 데이터를 클럭속도에 맞추어서 데이터를 읽어내는데 도움을 주는 장치. BRG를 통해서 들어오는 통신속도 제어값과 같이 RECEIVE SHIFT REGISTER에 전달되어 정확하게 데이터를 읽어낼 수 있게 된다.
8. DATA RECOVERY : 데이터를 전달받는 장치라 보면 된다.
9. PARITY CHECKER : 패리티 코드가 사용되면 PARITY CHECKER를 통해서 오류가 있는 데이터인지 검출해준다.
10. RECEIVE SHIFT REGISTER : 최종적으로 전달되어 들어온 신호를 SHIFT로 하나씩 읽어가는 것이다. 이렇게 전달받은 데이터는 최종적으로 UDR로 들어와서 프로그래머에게 데이터를 전달 해준다.
참고)
UDR이 전달하는 UDR과 전달받는 UDR이 두 개인 이유는 데이터 시트에서 나오는 해당 UDR에 대한 정보이다. 전달할 때는 TSR의 기능으로 작동하며 전달받을 때는 RSR로 작동이 된다.
USART BLOCK Diagram에 대한 해석
클록 생성 논리 회로는 동기화 에 사용되는 외부 클럭 입력 동기화 논리로 구성 되어 있습니다.
슬레이브 동작 및 전송 속도 생성기.
XCK ( 전송 클락 ) 핀이있을 뿐 동기 전송 모드에서 사용 된다.
송신기는 단일 쓰기 버퍼 직렬 로 구성되어 있습니다
등록 패리티 발생기, 다른 직렬 프레임 유형을 다루기위한 제어 로직을 이동.
더 쓰기 버퍼는 어떤 프레임 사이 의 지연 도없이 데이터 의 연속 전송이 가능 합니다.
더 수신기 는 클럭 및 데이터 복구 에 USART 모듈 중 가장 복잡한 부분입니다.
유닛. 회수 장치는 비동기 데이터 수신 을 위해 사용 된다. 복구 이외에, 단위 수신기 는 패리티 검사기 ,
제어 논리 시프트 레지스터 두 수준을 포함 버퍼 ( UDR ) 을 받는다. 수신기 는 송신기와
동일한 프레임 포맷을 지원 및 CAN 프레임 오류 데이터 오버런 패리티 오류 를 검출한다.
LCD.c와 LCD.h를 만들어 분할 컴파일 하기
Text 자체가 Text로 실행되는 것을 script파일이라 한다.
'ATMega128' 카테고리의 다른 글
20140428 - USCRnC RegisterC, USART 통신하여 문자출력, 문자열출력 (0) | 2014.04.28 |
---|---|
20140425 - UBRRnH and UBRRnL - UBRR (0) | 2014.04.25 |
20140423 - Delay 최적화 시키기, UART가 무엇? (0) | 2014.04.23 |
20140422 - 최적화 시키기, Data함수 a만 쓰는 함수에서 쓰는 함수로 정의 하기, LCD_Data를 이용하여 LCD_Str로 문자열 출력하기, LCD_Str을 이용한 LCD_Num으로 숫자 출력하기 (0) | 2014.04.22 |
20140421 - Contrrl And Display Instruction과 LCD에 a입력하기 (0) | 2014.04.21 |