(A+) 마이크로프로세서응용 ATmega128 USART 보고서
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

(A+) 마이크로프로세서응용 ATmega128 USART 보고서에 대한 보고서 자료입니다.

목차

1. 실험목표
2. 관련이론
3. 데이터시트
4. 실험
5. 실험결과
6. 오차 및 분석

본문내용

택되지 않은 슬레이브들은 계속하여 MPCMn 비트를 1로 유지한 채 어드레스 프레임이 수신 되기를 기다린다.
※ 멀티프로세서 통신 프로토콜 형식 ※
그러면 선택된 슬레이브는 데이터 프레임을 수신하고 이것이 완료되면 다시 MPCMn 비트를 1로 설정하여 어드레스 프레임의 수신 대기 상태로 들어간다.
USART(Universal Synchronous and Asynchronous Receiver and Transmitter) 레지스터
① UDRO 및 UDR1
: UDR 레지스터는 USART 포트의 데이터 버퍼의 기능을 수행한다. 각 포트의 송신 및 수신 버퍼는 동일한 번지에 위치하지만 내부적으로는 서로 다른 별개의 레지스터로서, 송신할 데이터를 UDRn에 라이트하면 이는 송신 데이터 버퍼 TXBn에 저장되고, 수신된 데이터를 UDRn으로 읽으면 이는 수신 데이터 버퍼 RXBn에 수신되어 있는 값이 읽혀진다.
② UCSRnA
: UCSRnA 레지스터는 USART 포트의 송수신 동작을 제어하거나 송수신 상태를 저장하는 기능을 수행한다.
③ UCSRnB
: UCSRB 레지스터는 USART 포트의 송수신 동작을 제어하거나, 전송 데이터를 9비트로 설정한 경우에 전송 데이터의 9번째 비트값을 저장하는 기능을 수행한다. 모든 비트 Read/Write 가능하며, 초기값은 ‘0’이다.
④ UCSRnC
: UCSRC 레지스터는 USART의 동작 모드 및 전송 제어기능을 설정하는 레지스터이다.
⑤ UBRRnH/L
: UBRRnH/L 레지스터는 16비트 중에서 12비트만 유효한 것으로서, USART 포트의 송수신 속도를 설정하는 기능을 수행한다. 즉 이 레지스터 값은 클럭의 분주비로 작용하여 직렬 포트의 전송속도인 보레이트를 결정한다.
16비트 레지스터를 라이트하는 경우에는 항상 상위 바이트인 UBRRH를 먼저 라이트 하고 하위 바이트인 UBRRL를 나중에 라이트해야 한다. 참고로 16비트 레지스터를 읽을 때는 라이트 경우와는 반대로 먼저 하위바이트를 읽고 상위바이트를 읽어야 한다.
3. ASCII 코드 Table
4. Baud Rate Table
5. 전체 회로도
6-1. 예제 코드 1
6-2. 예제 코드 2
7-1. 예제 코드 1 분석
① 헤더 파일 포함 : ‘#include\'를 사용하여 AVR 라이브러리와 표준 입출력 헤더, LCD 제어에 필요한 헤더를 포함시킵니다.
② 어셈블리 코드 선언 : #asm과 #endasm 사이에 어셈블리 코드를 넣어 PORTC를 CLCD 포트로 사용하도록 정의합니다.
③ Usart0_TX 함수 정의 : USART 송신을 위한 함수를 정의합니다. 함수 내부에서는 데이터 레지스터(UDR0)가 비어있을 때까지 기다린 후 데이터를 전송합니다.
④ MAIN 함수 시작 : 프로그램의 진입점인 main 함수를 시작합니다.
⑤ 변수 및 USART 초기화 : 변수 및 USART 초기화 설정을 수행합니다. USART 설정에서는 비동기 모드, 수신기 비활성화, 송신기 활성화, 9600 Baud Rate, 8비트 데이터, 1 스탑 비트, 패리티 없음을 설정합니다.
⑥ LCD 초기화: 16x2 크기의 LCD를 초기화하고 화면을 지웁니다.
⑦ 무한 루프 시작: while(1)은 무한 루프를 나타냅니다. 이 안에서는 변수 a에 10을 대입하고, 이 값을 USART를 통해 송신하며 동시에 LCD에 출력합니다. LCD에는 문자열 형태로 변수 a의 값을 출력하는데, 이를 위해 sprintf 함수를 사용합니다.
7-2. 예제 코드 2 분석
① 헤더 파일 포함: #include를 사용하여 AVR 라이브러리와 표준 입출력 헤더, LCD 제어에 필요한 헤더를 포함시킵니다.
② 어셈블리 코드 선언: #asm과 #endasm 사이에 어셈블리 코드를 넣어 PORTC를 CLCD 포트로 사용하도록 정의합니다.
③ Usart0_RX 함수 정의: USART 수신을 위한 함수를 정의합니다. 함수 내부에서는 수신 완료까지 대기한 후 수신된 데이터를 반환합니다.
④ main 함수 시작: 프로그램의 진입점인 main 함수를 시작합니다.
⑤ 변수 및 USART 초기화: 문자형 변수 a 및 USART를 초기화합니다. USART 설정에서는 비동기 모드, 수신기 활성화, 송신기 비활성화, 9600 Baud Rate, 8비트 데이터, 1 스탑 비트, 패리티 없음을 설정합니다.
⑥ LCD 초기화: 16x2 크기의 LCD를 초기화하고 화면을 지웁니다.
⑦ 무한 루프 시작: while(1)은 무한 루프를 나타냅니다. 이 안에서는 USART를 통해 데이터를 수신하고, 수신된 값을 LCD에 출력합니다. LCD에는 숫자로 표현된 값을 세 자리로 맞추어 출력하고, 그 다음 줄에는 해당 값을 문자로 출력합니다.
8. 오차 및 분석
- 이번 실험에서는 결과가 나오지 않았다.
아래는 내가 생각한 결과가 나오지 않은 이유들이다.
- 첫째로, 소자의 불확실성이다. 이번 강의에 사용한 소자는 우리 학교 랩실 인원들이 하나하나 직접 기판에 납땜을 한 소자로서, 그 과정에서 소자가 손상됐을 가능성이 존재한다.
(실제로, 첫 시간에 저항과 전구 등을 납땜하고 노트북과 연결하여 작동을 확인 할 당시, 8개의 전구 중 하나가 계속 불이 들어오지 않아 당황했었는데, 2시간의 피드백 끝에, ATmega128 소자 불량으로 파악되었다. 자세하게는, 49번 핀인 PA2 부분이 제대로 납땜이 되어 있지 않았던 것이다. 그 부분을 인두기로 다시 제대로 납땜하니, 전구는 정상적으로 들어왔다.)
- 둘째로, 점퍼선(와이어)에서도 저항은 존재한다는 것이다. 그러므로 전류가 그 점퍼선(와이어)을 이동하면서 자연스럽게 그 점퍼선 상에 있는 자그마한 저항의 영향을 받기 때문에 시뮬레이션의 결과처럼 이상적이론적 결과는 현실적으로는 불가능하기 때문에 오차가 생긴 것이라고 생각한다.
- 셋째로는, 점퍼선(와이어)의 결함이라고 생각한다.
소자와 소자 사이를 이을 때, 우린 보통 래핑 와이어를 사용하는데, 절연 소자로 감싸져있는 와이어 속이 미세하게 끊어져 있을 수도 있고, 또는 납땜하는 과정에서 미세하게 전류가 통하지 않게 납땜을 했을 가능성 또한 배제할 수 없다고 생각한다.
  • 가격3,000
  • 페이지수12페이지
  • 등록일2024.11.04
  • 저작시기2023.11
  • 파일형식한글(hwp)
  • 자료번호#1527848
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니