본문 바로가기

[ATmega128] 복습

반응형

어제

   

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 대입

       

       

       

       

     

   

반응형
-->