Microprocessor/ATMEGA 128 USART
  • 728x90
    반응형

       

       

       

       

       

     직렬 통신과 병렬 통신
     직렬 통신이란 송신 측과 수신  장비들 간에 하나의 전송 선로만 존재하며  순간에  비트의 데이터만을 전송할  있는 방식이다
    병렬 통신이란 송신 측과 수신  장비들 간에 여러 개의 전송 선로가 존재하여  순간에 여러 비트의 데이터를 한꺼번에 전송할  있는 방식이다전송 속도는 직렬 통신에 비해 빠르지만 회선을 많이 사용하기    때문에 비용이 많이 든다.

    직렬 통신

    병렬 통신

    가격이 저렴하다

    가격이 비싸다

    속도가 느리다

    속도가 빠르다

    거리에 대한 제한이 조금 여유로움

    거리에 대한 제한이 있음

    RS-232

    대량 데이터 통신 (하드 디스크)


      Synchronous and Asynchronous

     
    동기식(Synchronous) 방식
     
    기준 클록인 동기 클록 라인이있고데이터 송수신에 필요한 라인이 있다동기 클록에 동기해서 데이터를 순차적으로 /수신 하는 방법이다이는 높은 전송 효율을 필요로 하고 선로에 잡음이 있거나 장거리 전송에 유리하며 대량의 데이터를 고속으로 전송하는  사용된다 .

     
    비동기식(Asynchronous) 방식
     
    동기가 아니므로 동기 클록 없이 데이터를 송수신하는 방법이다동기 클록이 없으면 무엇인가가 동기를 만들어 주어야하는데이것을 데이터의 전송 속도가 대신하는데 흔히 보레이트 (Buad rate)라고 부르며 1초당 데이터를  개씩 보내느냐에 따라서 달라진다그러면 양쪽에 주고 받는 송수신기는 약속된 속도에 맞추어 데이터를 주고받을  있다 모드는 데이터를 보내기 전에 제어 비트가 필요하다 제어 비트는 시작과 끝을 알리는 Start bit Stop bit 있다

    동기식 방식[Synchronous]

    비동기식 방식[Asynchronous]

    동기 클럭에 데이터를 송수신

    동기 클럭 없이 데이터를 송수신

    높은 전송 효율을 필요

    보울f레이트(Buad rate) 의해 송수신

    선로에 잡음장거리 전송에 유리

     · 수신기는 보울레이트에 맞추어 통신

    대량의 데이터를 고속 전송

    시작과 끝을 알리는 Start bit Stop bit 필요

      USART (범용 동기·비동기 송수신 장치)

      ATmega 128  USART 4가지 모드
    1. Normal Asynchronous mode
    2. Double Speed Asynchronous mode
    3. Master Synchronous mode 
    4. Slave Synchronous mode

     
     ATmega 128  PORT


     
     USART Register
     
    UDRn - USARTn I/O Data Register
     
    UCSRnA – USART Control and Status Register A
     
    UCSRnB – USART Control and Status Register B
     
    UCSRnC – USART Control and Status Register C
     
    UBRRnL  UBRRnH - USART baud rate register
      
     n이란? USART0 USART1에서 0 1 의미함 USART0 사용하면 n=0, USART1이면 n=1

      
     UDRn - USARTn I/O Data Register
         
      데이터 /수신  데이터를 쓰거나 읽는 레지스터
         
      간단하게 데이터를 가지고 있는 레지스터라 생각하면 

     □ 비트7(RXCn) : 수신 버퍼에 읽혀 지지 않은 수신 문자가 들어 있으면 1 버퍼가 비어 있다면 0.
     □ 
    비트6(TCXn) : 송신 시프트 레지스터에 있는 송신 데이터가 모두 송신되고 아직 새로운 데이터가 
                             
    입력되지 않으면 1.
     □ 
    비트5(UDREn) : UDRn 송신 버퍼가 비어 있어서 새로운 송신 데이터를 받을 준비가 되어 있으면 1.
     □ 
    비트4(FEn) : 수신된 데이터의 stop 비트에 에러가 있을 경우에 1 에러가 없으면 0.
     □ 
    비트3(DORn) : 수신된 데이터가 읽혀 지지 않은 상태에서 새로운 데이터가 수신될  1 아니면 0.
     □ 
    비트2(UPEn) : 수신된 데이터의 패리티 에러가 발생하면 1 아니면 0.
     □ 
    비트1(U2Xn) : 비동기 모드에서 클럭의 분주비를 반으로 낮추어 2배의 전송속도를 갖게 하는 것이다.

                              [Double Speed Asynchronous mode]

     □ 비트0(MPCMn) : 멀티프로세서 통신 모드로 설정.
        
     멀티 프로세서 통신 모드는 1개의 마스터 프로세서가 여러개의 슬레이브 프로세서에게 특정한 
        
    드레스를 전송함으로써 1개의 슬레이브 만을 지정하여 데이터를 전송하는 동작 모드이다.

      
     UCSRnB – USART Control and Status Register B

     □ 비트7(RXCIEn) : 수신완료 인터럽트를 허용하는 비트
     □ 
    비트6(TXCIEn) : 송신완료 인터럽트를 허용하는 비트
     □ 
    비트5(UDRIEn) : 송신 데이터 레지스터 준비 완료 인터럽트를 허용하는 비트
     □ 
    비트4(RXENn) : RX 동작하도록 허용하는 비트
     □ 
    비트3(TXENn) : TX 동작하도록 허용하는 비트
     □ 
    비트2(UCSZn2) : UCSZn1~0 비트와 함께 전송 문자의  비트 수를 설정하는데 사용하는 비트
     □ 
    비트1(RXB8n) : 9비트 전송  수신된 9번째 비트 저장하는 공간
     □ 
    비트0(TXB8n) 9비트 전송  송신하는 9번째 비트 저장하는 공간

      
     UCSRnC – USART Control and Status Register C

     □ 비트6(UMSELn) - USART Mode Select Bit 
    1이면 동기전송모드 0이면 비동기 전송모드로 설정한다.

     □ 비트5:4(UPMn1:0) - parity mode 비트
    시리얼 통신의 패리티 모드를 설정한다.

     □ 비트3(USBSn) - USART Stop Bit Select 비트
     
    Stop Bit 설정한다.

     □ 비트2:1(UCSZn1:0) - character size
     
    전송문자의 데이터 비트수를 설정한다.

     □ 비트0(UCPOLn) – Clock Polarity : 동기 전송 모드에서 사용하는 것으로 클럭의 에지를 설정한다
     


      
     UBRRnH, UBRRnL  - USART baud rate register
         
      전송 속도를 의미하는 보율(baud rate) 설정한다
     □ 
    보율(baud rate) 계산


     
    에러
    (Error) 계산




     UBRR 
    계산
         
     Baud Rate - 9600bps
         
     fosc - 16MHz
         
     방식 - 비동기 [Asynchronous ]



     
        
      정확히 나누어 떨어지지 않아 0.2% Error 보임
      
     USART 통신 확인 프로그램

       





     ComMaster  로보틱스 홈페이지에 있음
    .

     
    간단하게 USART 코딩 하기

     9600bps 전송속도를 가지는 비동기[asynchronous]  USART 통신을 하여 'USART'라는 문자를반복적으로 출력하여라.

     □ 코딩 순서
    1. 
    레지스터 설정하기
     UCSR0A    UBRR0H 
     UCSR0B  UBRR0L
     UCSR0C
    2. 
    송신 함수 정의하기
      void USART_TX(unsigned char data)
    3. 
    메인 함수에서 호출하기

       

       

    728x90
    반응형
상단으로