ElectricShock 2015. 12. 29. 15:43

원래 영문자료여서 한글과 영문이 섞여있음을 이해해주세요



Baudrate = Bit per Second

Fosc = System Clock Frequency (초기치는 1MHz이다. External Oscillator를 의미하기도 한다.)

UBBR = Contents of UBRRL and UBRRH Registers.  (UBRRL과 UBRRH 레지스터의 내용물이다.)

========================================================================================

Coding 시, Initializing UART가 중요하다. 단계는 아래와 같다.

1.Setting하기 BaudRate를.

2.Setting하기 Data Size를.

3.활성화시키기 Rx, Tx를 (UCSRB의 TXEN과 RXEN를 1로 Set시킨다.)

4.Setting하기 Parity비트와 Stop비트들을.

1
2
3
4
5
6
7
8
9
10
11
12
// define some macros
#define BAUD 9600                         // define baud
#define BAUDRATE ((F_CPU)/(BAUD*16UL)-1)  // set baud rate value for UBRR
  
// function to initialize UART
void uart_init (void)
{
    UBRRH = (BAUDRATE>>8);                      
// shift the register right by 8 bits
    UBRRL = BAUDRATE;                           
// set baud rate
    UCSRB|= (1<<TXEN)|(1<<RXEN);                // enable receiver and transmitter
    UCSRC|= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);   // 8bit data format
}

Explanation(=설명)

보드레이트를 세팅하기위해 사용된 변수는 BAUD이다.

BAUDRATE는 정의된다. as per 계산식에 따라.

(as per : 비율, 가격, 측청값, 특정 체계, 계획 등을 언급할 때 사용)

(according to : 사람, 서적, 문서, 등을 언급할 때 사용)


한가지 기억해야할건 that UCSRCUBRRH는 공유한다. 같은 I/O 위치를.

그래서 selection/switching 을 제어하는 bit는 URSEL bit이다. in the UCSRC 레지스터안의.

이건 만은 혼동을 야기한다.

만약 이 비트가 올바르게 다뤄지지 않는다면, UART는 동작하지않는다.


만약 URSEL이 Zero이면 during a Write Operation동안에,

the UBRRH값은 will be 업데이트 될것이다.

만약 URSEL이 One이면,

the UCSRC 세팅이 will be 업데이트 될것이다.

이건 의미한다. URSEL 비트가 0이면, even if 우리가 addressing(=교신선택)할지라도 UCSRC를

UBRRH는 will be addressed될것이다.

=========================================================================================




BaudRate를 계산할때 표를 사용하면 편하다. (왼쪽 아이콘을 클릭)

UBRR = UBRRH * 256 + UBRRL;