아두이노를 이용한 라인트레이서 제작

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

UART & Register 2(선택)

UART 관련 register 2

1. UART 상태 register

  • Bit 7 [RXCn] : UART Receive Complete (UART 수신 완료)

  수신 완료 상태 플래그로 수신 버퍼에 문자가 들어오면 논리 1로 설정되며, 수신 버퍼에 수신된 데이터가 없으면 논리 0을로 설정된다. 

  • Bit 5 [UDREn] : UART Data Register Empty (UART 데이터 레지스터 비움)

  송신 버퍼에 새로운 데이터를 쓸 준비가 되어있음을 알리는 상태 플래그로, 논리 1로 설정되면 송신 버퍼가 비어 있어서 송신 데이터를 송신 버퍼에 쓸 준비가 되어 있음을 나타낸다.

 

2. UART 데이터 register

  UART 송신 데이터 버퍼 레지스터(TXBn)와 UART 수신 데이터 버퍼 레지스터(RXBn)는 UDRn이라는 동일한 번지를 공유한다. 동일한 번지에 위치하지만 송수신 버퍼는 물리적으로 분리되어 있으며, UDRn 레지스터에 데이터를 쓰면 TXBn 송신 데이터 버퍼 레지스터에 저장되며, UDRn 레지스터에서 데이터를 읽으면 RXBn 수신 데이터 버퍼 레지스터에서 읽는다. 송신 버퍼는 UCSRAn 레지스터의 UDRE 플래그 비트가 논리 '1'로 세트 되었을 때 작성할 수 있으며, 이 비트가 논리 '0'일 때 UDRn 레지스터에 데이터를 쓰면 송신기는 이를 무시한다.

 

3. UART_Transmit

void UART_Transmit(unsigned char data){
  // Wait for empty transmit buffer
  while(!( UCSR0A & _BV(UDRE0)));
 
  // Put data into buffer, send data
  UDR0 = data;
}

 

4. UART_Receive

unsigned char UART_Receive(void){
  // Wait for data to be received
  while(!(UCSR0A & _BV(RXC0)));
 
  // Get and return received data from buffer
  return UDR0;
}

 

참고자료

  • Atmel AVR 328p datasheet - 20. USART0
  • 이승호 외 3명, "핵심포인트를 꽉 집어주는 AVR ATmega128 완전정복", p.184~189

댓글

댓글 본문
버전 관리
YJ
현재 버전
선택 버전
graphittie 자세히 보기