어제
COM2< --------------->COM3
속도 9600
스탑비트 1BIT
페리티 X
문자사이즈 8BIT
pc <-------->아트메가 128
속도 19200(병렬) , 9600(직렬= 시리얼)
시리얼로 통신하는 경우 속도를 낮춰줘야 한다.
STOP - 1BIT
패리티 - X
문자사이즈 - 8BIT
제공하는 직렬통신
USART0 , USART1(여기서는 1만 사용하기로 되어있음)
TXD1(28) , RXD1(27)(1이 USART1을 사용한다는 말)
TX = 송신
Rx = 수신.
증폭과 감소를 하는 칩
직렬통신에서 2,3,5번만 사용한다.
포트D에서 사용
레지스터를 건드려서 설정.
<특징>
FULL DUPLEX방식
직렬 송수신 버퍼가 독립적.(수신, 송신하는 곳이 따로 있음)
하드웨어적으로 선 2개를 사용한다는 말.
비동기, 모두 동작
관련레지스터
- UDR1 (USART1 I/O Data Register)<0X9C>
보내거나 받을려고 하는 데이터레지스터
UDR1 =1; //송신버퍼에 1을 입력하는 것
return UDR1; //위에 입력된 1이 올줄
8비트이므로 1바이트만 설정이 가능함.
- UCSR1A (USART Control and Status Register A)
7번, 5번 확인
7번 = RXC1(수신버퍼 확인) - 데이터를 쓸 필요가 없으면 0, 그러나 데이터가 있을 겨우
자동으로 1이되면서 데이터를 받아들임.(UDR1에서 받아들임)
5번 = UDRE1(송신버퍼 확인) - 값이 비어있는지 확인하고 값을 넣어야함. 값을 넣을 수 있는 상태이면 1, 아직 데이터가 남아있으면 0.
UCSR1B (USART Control and Status Register B)- I/O핀 설정.
>>>수신용 송신용으로 쓰겠다는 것을 설정하는 것.
4,3을 써주면 입출력포트에서 통신용으로 바뀜.
27 - RxD
28 - Txd
- UCSR1C (USART Control and Status Register C)
나머지는 설정과 관련된 레지스터
비트 6에는 = 0(비동기 모드)
비트 5번, 비트 4번 = 페리티 모드사용 안함(00)
USBSn-
UBRR1H/L (USART Baud Rate Registers)
마지막은 통신속도를 설정하는 레지스터.
16비트
ubrr - 51/ 0.2오차
9600 - ubrr 103 대입
'About 프로그래밍!!! > ATmega128' 카테고리의 다른 글
[ATmega128] 아트메가랑 PC랑 통신하기1 (0) | 2010.07.20 |
---|---|
[ATmega128]단방향 직렬통신 테스트 (0) | 2010.07.20 |
[ATmega128] PC내에서 통신하기.(양방향) (0) | 2010.07.19 |
[ATmega128] PC내에서 통신하기.(단방향) (0) | 2010.07.19 |
[ATmega128] ATmega128의 메모리 구조. (0) | 2010.07.19 |