PC와 ATmega128 보드의 비동기USART통신
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

PC와 ATmega128 보드의 비동기USART통신에 대한 보고서 자료입니다.

목차

1. 실험 목적

2. 실험 부품

3. 관련이론

4. 프로그램 소스 해석 (AVR TO PC)

5. 실험결과

6. 추가 실험(AVR TO AVR)

7. 결론 및 고찰

본문내용

<0x40) str[i]에 data가 존재할 때까지
LCD_data_write(str[i]); //LCD에 data를 출력
}
usart.c
#include
#include"usart.h"
// 폴링을 이용한 문자 송수신을 위한 USART 초기화
void USART_init(unsigned char ch, unsigned int ubrr_baud)
{
if( ch == USART0){ // USART0 통신
UCSR0B |= 1< 수신핀
// TXEN0=1, USARTn 송신기능 활성화, TxDn핀 -> 송신핀
UBRR0H = ubrr_baud >> 8;
UBRR0L = ubrr_baud; // 입력받은 UBRR의 값을 UBRR0H와 UBRR0L에 나누어 저장
}else if(ch == USART1){ //USART1 통신
UCSR1B |= 1< 수신핀
// TXEN1=1, USARTn 송신기능 활성화, TxDn핀 -> 송신핀
UBRR1H = ubrr_baud >> 8;
UBRR1L = ubrr_baud;// 입력받은 UBRR의 값을 UBRR0H와 UBRR0L에 나누어 저장
}
}
// 폴링에 의한 문자 송신 함수
void USART1_send(char data)
{
while ( !( UCSR1A & (1< UDR1 = data; // UDRn 레지스터에 값을 기록
}
// 폴링에 의한 문자 수신 함수
unsigned char USART1_receive()
{
while ( !(UCSR1A & (1< return UDR1; // UDRn 레지스터에서 값을 읽는다
}
- 메인 프로그램
main.c
#include
#include
#include"lcd.h"
#include"usart.h"
#defineF_CPU16000000UL // 16MHz 클럭주파수사용
#include
intmain(void)
{char lcd_string[2][MAX_LCD_STRING]; // LCD에 디스플레이할 2차원 배열
LCD_init(); // LCD 초기화함수
USART_init(USART1, 12); // USART 초기화 함수( 초기프레임 포맷 설정)
// 비동기 통신 모드 / 8비트 / 패리티 없음 / 1 정지비트
// USART1 보오레이트 = 76800 (UBRR=12) , 16MHz
sprintf(lcd_string[0], " USART1 Test ");// LCD에 출력
LCD_str_write(0, 0, lcd_string[0]); // (0,0)의 위치에 lcd_string[0]을 출력
unsigned char cnt = 0; // 송신할data 변수 초기화
unsigned char rx_data; // 수신하data 변수 선언
while(1){
cnt++; // cnt 1증가
if(cnt>=255) { // cnt가 255이상이면 0으로 초기화
cnt = 0;
}
USART1_send(cnt); // 폴링을 이용하여 cnt 송신
rx_data = USART1_receive(); // 폴링을 이용하여 문자를 수신한 후 rx_data에 저장
sprintf(lcd_string[1], "RX=%3d", (int)rx_data); // 수신한 data를 lcd_string[]에 저장
LCD_str_write(1, 0, lcd_string[1]); // 수신한 data를 lcd에 디스플레이
_delay_ms(500); // delay
}
return 0;
}
실행 과정
1) 폴링을 이용한 문자 송신, 수신함수
2) sprinf() 함수로 입력받은 정수를 연산하여 LCD창에 출력
실험결과
1443 - 9 조와 1443 - 4조 함께 실험하였습니다.
Rx1핀과 Tx1핀을 서로 연결하여 비동기 USART통신을 수행하였으며 송신하고 수신한 값을 LCD에 출력하였다.
RX값이 1씩 증가되며 디스플레이 되어 송수신이 이루어진다는 것을 확인할 수 있다
7. 결론 및 고찰
ATmega128보드의 비동기 USART 통신 실험을 통하여 비동기모드 USART 통신 방법을 이해할 수 있었다. 폴링을 이용한 문자 송수신 함수를 작성하고 이해하였으며, sprintf() 함수로 입력받은 정수를 LCD_str_write() 함수를 이용하여 LCD창에 출력시키는 동작을 수행하고 그 원리를 이해하였다.
USART 통신은 동기 모드와 비동기모드의 두 가지 방식을 가지며, 이번 실험에서는 비동기 모드 USART 통신을 수행하였다. ATmega128의 Rx핀과 Tx핀을 연결하여 ATmega128에서 data를 송신하고 다시 수신 받는 형태로 진행하였다. USART 초기화 함수, USART_init() 함수를 통하여 기본적인 프레임 포맷을 설정하였다. 초기화를 통하여 비동기 통신모드, 8비트, 패리티 없음, 1 정지비트로 설정하고, 입력받은 UBRR값으로 원하는 보오레이트 값을 설정하였다. 또한 폴링을 이용한 문자 송신과 수신 함수를 사용하였다. 문자 송신함수는 UDR레지스터의 UDREn 비트가 1이 될 때까지, 즉 UDR 레지스터가 빌 때까지 폴링한 후 UDR 레지스터에 값을 기록하였으며, 문자 수신함수는 RXCn 레지스터에 문자 수신을 검사하여 RXCn 비트가 1이 될 때까지 폴링한 후 UDR 레지스터의 값을 읽어 들였다. sprintf()함수를 이용하여 송수신한 data를 lcd_string[]배열에 저장한 후 LCD_str_write()함수를 통하여 LCD에 디스플레이 하였다. data를 내보내고 data를 수신 받는 형태인 ATmega128 보드에서의 USART 통신 과정을 LCD에 디스플레이 함으로써 결과를 정확히 확인하고 이해할할 수 있었다.
  • 가격1,200
  • 페이지수16페이지
  • 등록일2014.11.15
  • 저작시기2013.11
  • 파일형식한글(hwp)
  • 자료번호#950332
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니