Dexter_- 2016. 9. 30. 09:52
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
반응형