[AVR]/Mega82018. 8. 22. 05:55

ATmega88 EVM - Atmel START UART 테스트 예제

ATmega88 EVM - Atmel START UART 테스트 예제




Atemel Studio로 새로운 Atmel START 프로젝트를 생성해서 


"Add software component" 메뉴로 UART 드라이버를 추가 한다.






UART_0 가 생성되고 설정을 클릭해 보면 핀맵 및 보레이트 등의 UART 관련 설정들을 설정할 수 있다.

그리고 printf 지원 여부도 선택 할 수 있다.





이후에 프로젝트 생성하면 기본 코드가 자동으로 생성된다.





자동 생성된 코드는 usart_basic.c 파일로 저장되어 있고 주요 함수를 보면 아래와 같다.

AVR UART 초기화 코드

int8_t USART_0_init()

{


// Module is in UART mode


/* Enable USART0 */

PRR &= ~(1 << PRUSART0);


#define BAUD 115200


#include <utils/setbaud.h>


UBRR0H = UBRRH_VALUE;

UBRR0L = UBRRL_VALUE;


UCSR0A = USE_2X << U2X0 /*  */

         | 0 << MPCM0;  /* Multi-processor Communication Mode: disabled */


UCSR0B = 1 << RXCIE0    /* RX Complete Interrupt Enable: enabled */

         | 0 << UDRIE0  /* USART Data Register Empty Interupt Enable: disabled */

         | 1 << RXEN0   /* Receiver Enable: enabled */

         | 1 << TXEN0   /* Transmitter Enable: enabled */

         | 0 << UCSZ02; /*  */


// UCSR0C = (0 << UMSEL01) | (0 << UMSEL00) /*  */

// | (0 << UPM01) | (0 << UPM00) /* Disabled */

// | 0 << USBS0 /* USART Stop Bit Select: disabled */

// | (1 << UCSZ01) | (1 << UCSZ00); /* 8-bit */


#if defined(__GNUC__)

stdout = &USART_0_stream;

#endif


return 0;

}



AVR UART 송수신 코드

void USART_0_write(const uint8_t data)

{

while (!(UCSR0A & (1 << UDRE0)))

;

UDR0 = data;

}



uint8_t USART_0_read()

{

while (!(UCSR0A & (1 << RXC0)))

;

return UDR0;

}





Posted by nexp

댓글을 달아 주세요