Microsoft PowerPoint - AVR 시리얼 통신.ppt [호환 모드]

Similar documents
<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Chapter 8_USART Serial Communication

2주차: 입출력 제어 복습

목차 1. UART와 RS232 개요 2. ATMega128의 USART 포트 3. UART로 Hello 보내기 4. UART로 PC와데이터주고받기

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

개요

<BDC7C7E83720BFB9BAF1BAB8B0EDBCAD2E687770>

데이터 통신

1

MAX232 MAXIM사에서생산되는 RS-232통신을가능토록해주는송수신 IC이다. 송수신드라이브를각각 2개씩가지고있다. AVR과컴퓨터가인식하는 0과 1의값이다르기때문에.. 마이컴컴퓨터 이차이를해결해주는것이다. 0 0V -10V 1 5V 10V TTL IC 의전원단자와다

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

슬라이드 1

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

CANTUS Evaluation Board Ap. Note

Microsoft PowerPoint - 9.Serial.pptx

시리얼통신 (USART) 범용동기및비동기시리얼수신기와송신기 (USART) 는매우유연한시리얼통신장치이다. 주요특징은다음과같다. w 송수신레지스터가독립적으로운용되는전이중방식. w 비동기또는동기동작. w 마스터또는슬레이브동기동작. w 고해상도전송속도생성기. w 5, 6, 7

MR-3000A-MAN.hwp

V. 통신망 기술

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

hd1300_k_v1r2_Final_.PDF

6주차.key

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

T100MD+

SRC PLUS 제어기 MANUAL

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

PowerPoint 프레젠테이션

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

ATmega128 교재 - 8장 EEPROM.hwp

슬라이드 1

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

(8)

제품 설명

Microsoft Word - IRM9600x Spec.doc

Nordic Chipset BLE Test Application Note

M16_32KIT_Manual.hwp

ATmega128

KEY 디바이스 드라이버

정보보안 개론과 실습:네트워크

DSP_MON 프로그램 메뉴얼

Microsoft PowerPoint - polling.pptx

Microsoft Word - ASG AT90CAN128 모듈.doc

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

AVR Atmega128

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

뉴티씨 (NEWTC) ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을

Microsoft PowerPoint - chap06-2pointer.ppt

K&R2 Reference Manual 번역본

슬라이드 제목 없음

BY-FDP-4-70.hwp

untitled

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

BMP 파일 처리

슬라이드 1

고급 프로그래밍 설계

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

PowerPoint 프레젠테이션

<4D F736F F D20B1E2BCFAC0DAB7E1202D20454F435220B8F0B5E5B9F6BDBA20C5EBBDC5C1A6C7B020BBE7BFEBB9FD202D F302E646F63>

PowerPoint 프레젠테이션

OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech

HITEC UHF Transceiver

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech

Mango-E-Toi Board Developer Manual

USB2CAN USB2CAN-UART USB2CAN-FIFO API Reference Manual Copyright NTREXLAB

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Robostar Robot Controller Manual 로보스타로봇 RCS 시리즈옵션 C-NET 옵션모듈 - C-NET ( 주 ) 로보스타

untitled

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

2. Deferred Interrupt Processing A. Binary Semaphores를이용한동기 (Synchronization) i. Binary Semaphores는 Interrupt가발생하였을때특정한 를 Unblock 하는데사용할수있다. 이러한기능은 In

뉴티씨 (NEWTC) 2. FB-CY4E-DEV (FPGA 개발 키트) 구성도 Port Select SW 7 Segment Text LCD UART RS-232C JTAG PORTA (5V) Active Serial PORTB (5V) OSC. 50MHz Analog

슬라이드 1

XDesignerPlus V2.0 접속 매뉴얼

ARDUINO Open Physical Computing Platform 오탈자, 문의및보완이필요한내용은 으로알려주세요.

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

(MHT-SB112\273\347\276\347\274\255.hwp)

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

Microsoft PowerPoint - [2009] 02.pptx

슬라이드 제목 없음

Microsoft Word - AM-2560PRO_V01 메뉴얼.doc

Microsoft Word - EWKit-RS232.doc

OCW_C언어 기초

CAN 통신

Microsoft PowerPoint - 부호기와 복호기.PPT

C 언어 프로그래밊 과제 풀이

금오공대 컴퓨터공학전공 강의자료

歯9장.PDF

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

금오공대 컴퓨터공학전공 강의자료

(SW3704) Gingerbread Source Build & Working Guide

Microsoft Word - WGM-447Xx9 Spec_Transceiver_.doc

Microsoft Word - STM32 BxCAN.doc

슬라이드 1

MicrocontrollerAcademy_Lab_ST_040709

LS XGT SERIES Connection Manual

Transcription:

AVR UART 통신 류대우 davidryu@newtc.co.kr

시리얼 (Serial) 통신이란? Serial 통신은하나의신호선을이용해서데이터를비트단위로보내는방식 8 비트비동기식통신콘트롤러 (UART : Universal Asynchronous Receiver Transmitter) 데이터는 LSB 부터 MSB 순으로데이터전송

Serial interface 통신규격 Serial interface 통신규격 RS-232C, RS-422, RS-423, RS-485 < RS-232C 의예 >

시리얼 (Serial) 통신 Serial 통신이점 적은수의통신라인사용과먼거리전송 Serial 통신전송방식 Simplex 단방향전송방식 - 라디오 half duplex 반이중전송방식 ( 서로다른시간양방향전송방식 ) - 무전기 (full) duplex 속도 전이중전송방식 ( 동시양방향전송방식 ) - 8051 bps(bits per second) : 1 초당전송되는비트의수 baud rate : 1 초당전송되는변조된신호의수 * 8051 에서는하나의비트가하나의신호이므로같은의미

시리얼 (Serial) 종류 Specification RS232C RS423 RS422 RS485 동작모드 Single-Ended Single-Ended Differential Differential 최대 Driver / 1 Driver 1 Driver 1 Driver 32 Drivers Receiver 수 1 Receiver 10 Receivers 32 Receivers 32 Receivers 최대통달거리약 15 m 약 1.2 km 약 1.2 km 약 1.2 km 최고통신속도 20 Kb/s 100 Kb/s 10 Mb/s 10 Mb/s 지원전송방식 Full Duplex Full Duplex Full Duplex Half Duplex 최대출력전압 ±25V ±6V -0.25V to +6V -7V to +12V 최대입력전압 ±15V ±12V -7V to +7V -7V to +12V

RS-232C TXD - Transmit Data 직렬통신데이터가나오는신호선 RXD - Receive Data 직렬통신데이터를입력받는신호선 RTS - Ready To Send DTE장치가 DCE장치에게준비가됐음을나타내는신호선 CTS - Clear To Send DCE 장치가 DTE 장치에게준비가됐음을나타내는신호선 DTR - Data Terminal Ready 터미널이모뎀에게자신이송수신가능한상태임을알리는신호선 DSR - Data Set Ready 모뎀이터미널에게자신이송수신가능한상태임을알려주는신호선 DCD - Data Carrier Detect 모뎀이상대편모뎀과전화선등을통해서접속이완료되었을때상대편모뎀이캐리어신호를보내오며이신호를검출하였음을컴퓨터또는터미널에알려주는신호선 RI - Ring Indicator 상대편모뎀이통신을하기위해서먼저전화를걸어오면전화벨이울리게된다. 이때이신호를모뎀이인식하여컴퓨터또는터미널에알려주는신호선이다.

RS-232C

시리얼포트보우레이트 U2X = 0 으로하였을때의보우레이트계산식, 아래와같이계산하면 UBRR 에세팅해야하는값이나옴 코딩은아래와같이하면편리하다 (UBRR 값이 255 보다크게나올경우는주의 )

시리얼보우레이트

시리얼보우레이트

시리얼보우레이트

시리얼보우레이트

ATMEGA128_ 관련레지스터 USRnA(USARTn Control & Status Register A) BIT 7 : RXCn(USART Receive Complete) RXCn(USARTn Receive Complete) 비트는수신버퍼에읽혀지지 않은수신문자가들어있으면 "1" 로셋되고 CPU가이를읽어서수신버퍼가비어있는상태라면 "0" 으로클리어되었음을나타내는상태플래그이다. RXCn 비트는수신완료인터럽트를발생시킬때사용한다. BIT 6 : RXCn(USARTn Transmit Complete) TXCn(USARTn Transmit Complete) 비트는송신시포트레지스터에있는송신데이터가모두송신되고 UDRn의송신버퍼에아직새로운송신데이터가라이트되지않은상태이면"1" 로셋되는상태를지시하는플래그이다. TXCn 비트는송신완료인터럽트를발생시킬때사용된다

ATMEGA128_ 관련레지스터 BIT 5 : UDREn(USARTn Data Register Empty) UDREn(USARTn Data Register Empty) 비트는 UDRn의송신버퍼에새로운송신데이터를받을준비가되어있으면 "1" 로셋되는상태플래그이다 UDREn 비트는 UDARTn Data Register Empty 인터럽트를발생할때사용한다. BIT 4 : FEn(Frame Error) FEn(USARTn Frame Error) 비트는 UDRn 의수신버퍼에현재저장되어있는데이터를수신하는동안프레임에러가발생하였음을나타내는상태플래그로, 프레임에러는수신문자의첫번째스톱비트가 "0" 으로검출되면발생 (1로셋되고 ) 하고 UCSRAn 레지스터를라이트하면이비트는 "0" 으로클리어된다 BIT 3 : DORn*Data OverRun DORn(USARTn Data Overrun Error) 비트는수신동작에서오버런에러가발생하였음을나타내는상태플래그로 OverRun Error는 UDRn의수신버퍼에현재읽지않은수신문자가들어있는상태에서, 수신시포트레지스터에새로운문자가수신완료되면, 다시그다음수신데이터인 3번째문자의스타트비트가검출되면발생한다. UCSRnA 레지스터를라이트하면이비트는 "0" 으로클리어된다.

ATMEGA128_ 관련레지스터 BIT 2 : PEn(Parity Error) PEn(Parity Error) 비트는 UDR의수신버퍼에현재저장되어있는데이터를수신하는동안패리티에러가발생하였음을나타내는상태플래그로패리티에러는 UCSRnC 레지스터의 UPMn1 비트를"1" 설정하여패리티비트를사용하도록설정한경우에만발생할수있다. UCSRnA 레지스터를라이트하면이비트는 "0" 으로클리어된다 BIT 1 : UCXn(Double the USARTn Transmission Speed) U2Xn(Double the USART Transmisson Speed) 비트는비동기모드에서만사용가능한것으로서클록의 n 분주비를 16 에서 8 로 1/2 만큼낮추어전송속도를 2 배높이는기능을한다 BIT 0 : MPCMn(USART Multi-Processor Communication Mode) 비트는 USARTn 을멀티프로세서통신모드로설정하고멀티프로세서통신어드레스정보를포함하지않는모든수신데이터는수신부에의하여무시된다.

ATMEGA128_ 관련레지스터 USRnC(USARTTn Control & Status Register C) BIT 7 에약 BIT 6 UMSELn(USARTn Mode Select) UMSELn(USARTn Mode Select) 비트는 "1" 이면 USARTn 모듈을동기전송모드로설정하고 "0" 이면비동기전송모드로설정한다 BIT5,4 UPMn1, 0(Parity Mode) 이비트를 "1" 로설정하면패리티를발생시키고검사를할수있고송신기는자동적으로각프레임의송신데이터에페리티비트를더하여송신한다. 수신기는 UPM0 비트와수신된데이터를비교한다. 만약에오류가발생하면UCSRnA 레지스터의 PE 플래그가 "1" 로셋된다 UPMn 비트설정표 -------------------------------------------- UPMn1 UPMn0 Parity모드 ------------------------------------------- 0 0 Disable 0 1 예약 1 0 Enabled Even Panrity 1 1 Enabled Odd Parity

ATMEGA128_ 관련레지스터 BIT 3 : USBSn(Stop S Bit Select) USBSn(Stop Bit Select) 비트가 "0 이면 USARTn 모듈에서데이터포맷을구성하는스톱비트를 1개로설정하고 "1" 이면스톱비트를 2개로설정한다. --------------- USBSn StopBIt --------------- 0 1-bit 1 2-bit BIT 2,1 : UCSZn1,0(Character Size) - 데이터비트수를설정 ------------------------------------------------------------ UPMn1 UPMn0 UCSZn0 Parity모드 -------------------------------------------------------------------- 0 0 0 5-bit 0 0 1 6-bit 0 1 0 7-bit 0 1 1 8-bit 1 0 0 에약 1 0 1 에약 1 1 0 에약 1 1 1 9-bit

ATMEGA128_ 관련레지스터 BIT 0 : UCPOLn ------------------------- USBSn TxDn 의출력 StopBIt ------------------------- 0 XCKn 상승 XCKn 하강 1 XCKn 하강 XCKn 상승

시리얼프로그래밍 UBRR0H = 0x00; UBRnH/L(USARTTn Baud Rate Register) 레지스터는 16 비 트중에서 12 비트만사용하여 USARTTn 모듈의송 수신속도를설 정하는기능을한다. BIT 15~23 : 에약비트 BIT 11~0 : UBRRn11~0(USARTn Baud Rate Register) 2 비트를이용하여 USARTn 의보율 (baud rate) 을결정하는데 UBRRnH 의 4 비트와 UBRRnL 의 8 비트가조합을이루고있다

시리얼프로그래밍 USRnB(USARTTn Control & Status Register B) BIT 7 : RXCIEn(RX Complete Interrupt enable) EXCIEn(USARTn RX Complete Interrupt t Enable) 비트는수신 완료인터럽트를개별적으로 enable하고 "1" 로설정하고 SREG 레지스터의비트가 "1" 이고 UCSRnA 레지스터의 RXCn 비트가 "1" 로설정되어있으면수신완료인터럽트가발생한다 BIT 6 : TXCIEn(TX Complete Interrupt Enable) TXCIEn(USARTn TX Complete Interrupt Enable) 비트는수신완료인터럽트를개별적으로 enable(1) 로설정하고 SREG 레지스터의비트가 "1" 이고 UCSRnA와 UCSRnA레지트터의 TXCn 비트가 "1" 로설정되어있으면송신완료인터럽트가발생한다

시리얼프로그래밍 BIT 5 : UDRIEn(USARTn Data Register Empty Interrupt Enable) 비트 USARTn Data Register Empty 인터럽트를개별적으로 enable하는비트로 "1" 로설정하고 SREG 레지스터의비트가 "1" 이고 UCSRnA 레지스터의 UDREn 비트가 "1" 로되면 USARTn Data Register Empty 인터럽트가발생된다 BIT 4 : RXENn(Receiver Enable) RXEN(Receiver Enable) 비트는USARTn 모듈의수신부가동작하도록 enable하는것으로 RXDn 핀이병렬 I/O 포트가아니라직렬데이터수신단자로동작하도록설정한다. BIT 3 : TXENn(Transmitter Enable) TXENn(Transmitter Enable) 비트는 USARTn 모듈의송신부가동작하도록 enable 하는것으로 TXDn핀이병렬 I/O 포트가아니라직렬데이터송신단자로동작하도록설정한다. BIT 2 : UCSZn2(Character Size) UCSZn2(USARTn Character Size) 비트는 UCSRnC 레지스터의 UCSZn1~0 비트와함께전송문자의데이터비트수를설정하는데사용된다

시리얼프로그래밍 BIT 1 : RXB8n(Transmit data Bit 8) RXB8n(Receive Data Bit 8) 은수신문자가 9 비트로설정된 경우에수신된문자의 9 번째비트 (MSB) 를저장한다 BIT 0 : TXB8n(Transmit data BIt 8) 송신문자가 8 비트로설정된경우에송신된문자의 9 번째비트 (MSB) 를저장한다

시리얼프로그래밍 #pragma interrupt_handler uart0_rx_isr:19 void uart0_rx_isr(void) { //uart has received a character in UDR cmd=udr0; } // 시리얼통신에서받은데이터 (UART Data Register) 를 cmd변수에저장

volatile volatile은휘발성메모리라는뜻 컴파일러가최적화 (Optimize) 하더라도프로그래머의의도대로되도록이부분을최적화 (Optimize) 하지말라는뜻 변수값을메모리에서읽어들이도록함.

시리얼통신문자열처리 시리얼은한비트씩한바이트가한패킷이되어들어오는통신 문제 : 시리얼통신에서사용자가터미널에어떠한문자를입력하고, 이문자를다친후에 1 을입력하면이를출력하게하여라 치는동안에는 ATmega128 에서기억하고있게한다. 예 : asdlfjks1sdljflasdjk1

시리얼통신문자열처리 char data[100] = {0}; volatile int cnt = 0; #pragma interrupt_handler uart0_rx_isr:19rx void uart0_rx_isr(void) { data[cnt] = UDR0; if(data[cnt] == '1'){ cnt = -1; data[cnt+1] = 0x00; printf("%s", data); } cnt++; //uart has received a character in UDR }

시리얼포워더만들기

시리얼포워더만들기 #pragma interrupt_handler uart0_rx_isr:19 void uart0_rx_isr(void) { } //uart has received a character in UDR UDR0 = UDR0; // 컴파일후 ATmega128 에포팅한다.

시리얼포워더만들기

시리얼포워더만들기

시리얼포워더만들기

시리얼포워더만들기 키보드를눌러도아무런반응이없다.

시리얼포워더만들기 Open Com Port 를눌른다.

시리얼포워더만들기

Printf 사용하기 void main(){ init_devices(); } printf("serial Forwarder v0.1\r\n"); while(1){ ; }

컴파일러별차이점 AVR Studio + WINAVR printf를사용하기위하여 초기화루틴에 fdevopen(putchar,0); 를적어준다. #include <avr/io.h> #include <avr/interrupt.h> #include "c:/winavr/avr/include/avr/iom128.h" #include <stdio.h> static int Putchar(char message, FILE *stream) { while (((UCSR0A>>UDRE0)&0x01) == 0) ; // UDRE, data register empty UDR0 = message; }

컴파일러별차이점 Codevision #include <mega128.h> #include <delay.h> #include <string.h> #include <stdio.h> 그냥 printf 를사용하면된다. 내장함수를별도로써주지않아도됨.

컴파일러별차이점 IAR EwAVR #include <iom128.h> #include <stdio.h> int getchar(void){ int in; while ((UCSR0A & 0x80) == 0); in = UDR0; return in; } int putchar(int c){ while (((UCSR0A>>5)&0x01) == 0) ; // UDRE, data register empty UDR0 = c; return c; }

컴파일러별차이점 ICCAVR #include <iom128v.h> #include <macros.h> #include <stdio.h> int putchar(char c) // printf 함수사용시추가할것. { while (((UCSR0A>>UDRE0)&0x01) == 0) ; UDR0 = c; return c; } int getchar(void){ // scanf 함수사용시추가할것. while ((UCSR0A & 0x80) == 0); return UDR0; }