원래 영문자료여서 한글과 영문이 섞여있음을 이해해주세요
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 UCSRC와 UBRRH는 공유한다. 같은 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;