USART

Mokwon Univ 2008. 8. 16. 17:17
 
일단 ATmega128에는 같은 기능을 수행하는 2개의 USART 직렬통신포트를 가지고 있다
USART0과 USART1
- 동기 및 비동기 전송모드에서 전이중 통신가능
- 멀티프로세서 통신모드로 동작 (먼지 잘 모르겠다;;;)
- 높은 정밀도의 Baud Rate Generator
 
 
동기식
- master : 전송속도를 결정할때 내부 클럭을 사용
- slave : XCKn 단자로 입력되는 클럭 신호에 의해 동작
비동기식 - 항상 내부 클럭에 의하여 Baud Rate가 결정됨
 
전송데이터 - 5~9비트
정지비트 - 1~2비트
 
USART 인터럽트 3가지가 있다
1) TX Complete (송신완료)
2) TX Data Register Empty (송신 데이터 레지스터 준비완료)
3) RX Complete (수신완료)
 
3부분으로 나누기
1) 클럭 발생부 - Baud Rate Generator, 동기모드에서 클럭과 동기를 취하는 회로를 구성
2) 송신부 - 송신 버퍼, 송신 시프트 레지스터, 패리티 발생기(오류체크)
3) 수신부 - 수신 버퍼, 수신 시프트 레지스터, 패리티 검사기
 
 
 
 
사용되는 레지스터
( 자세한 것은 데이터 시트를 봐야겠다. 비트마다 역할이 달라서 표현하기 힘들다
그림 파일도 없고..역시 데이터시트가 최고인것 같다)
 
UDR0
- 송수신 데이터 버퍼의 기능을 수행,
- 송신할 데이터를 UDR0에 라이트하면 이는 송신 데이터 버퍼 TXR0 에 저장
- 수신할 데이터를 UDR0에 읽으면 이는 수신 데이터 버퍼 RXR0에 수신되어 있는 값이 읽혀짐
 
UCSR0A
- 포트의 송수신 동작을 제어, 송수신 상태를 저장하는 기능
 
USCR0B
- 포트의 송수신 동작을 제어
- 전송데이터를 9비트로 설정한 경우에 전송 데이터의 9번째 비트값을 저장하는 기능 수행
 
USCR0C
- 포트의 송수신 동작을 제어
 
UBRR0H/L
- 16비트중 12비트만 유효
- 포트의 송수신 속도를 설정하는 기능을 수행
- 레지스터 라이트 하는 경우 상위 바이트인 UBRR0H부터 먼저 라이트 하고 그담에 UBRR0L 라이트 해야함
Posted by 용학도리
,