<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Similar documents
<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

[8051] 강의자료.PDF

목차 1. TWI(Two Wire Serial Interface) 2. SPI(Serial Peripheral Interface) 3. TWI(I 2 C) 로 EEPROM 붙이기 4. SPI로 Serial Flash Memory 붙이기 5. TWI로온습도센서제어하기

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

T100MD+

슬라이드 1

1

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

SRC PLUS 제어기 MANUAL

CANTUS Evaluation Board Ap. Note

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

CAN 통신

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

2주차: 입출력 제어 복습

MicrocontrollerAcademy_Lab_ST_040709

Microsoft PowerPoint - polling.pptx

슬라이드 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

PowerPoint 프레젠테이션

슬라이드 제목 없음


ATmega128 교재 - 8장 EEPROM.hwp

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

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

PRO1_09E [읽기 전용]

4) CRC - 16bit MODBUS crc 4. MODBUS Exception Codes Code 01h 02h 03h 04h 05h 06h 10h 11h 12h 13h 14h Name ILLEGAL FUNCTION ILLEGAL DATA ADDRESS ILLEGA

Microsoft Word - DTM-M300_Spec_V1_0.doc

PowerPoint 프레젠테이션

hd1300_k_v1r2_Final_.PDF

Formatvorlage für Arbeitsanweisungen

DTS-L300-V2 Specification Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 50

歯설명서_020925_.PDF

Microsoft PowerPoint - es-arduino-lecture-03

PowerPoint 프레젠테이션

歯superimp.PDF

PowerPoint 프레젠테이션

R50_51_kor_ch1

Microsoft Word - PEB08_USER_GUIDE.doc

MR-3000A-MAN.hwp

1217 WebTrafMon II

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

USB3-FRM01 API 매뉴얼

KEY 디바이스 드라이버

lecture4(6.범용IO).hwp

USB3-DIO01

IoT FND8 7-SEGMENT api

API 매뉴얼

PowerPoint 프레젠테이션

슬라이드 1

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD

슬라이드 제목 없음

BJFHOMINQJPS.hwp

6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25,

27집최종10.22

황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변

ATmega128

The Pocket Guide to TCP/IP Sockets: C Version

PowerPoint 프레젠테이션

목차 1. 개요 USB 드라이버 설치 (FTDI DRIVER) FTDI DRIVER 실행파일 USB 드라이버 확인방법 DEVICE-PROGRAMMER 설치 DEVICE-PROGRAMMER

Microsoft PowerPoint - Master-ChiWeon_Yoon.ppt

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

untitled

Formatvorlage für Arbeitsanweisungen

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

디지털공학 5판 7-8장

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

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

K&R2 Reference Manual 번역본

Microsoft PowerPoint - IOControl [호환 모드]

Ä¡¿ì³»ÁöÃÖÁ¾

MAX+plus II Getting Started - 무작정따라하기

슬라이드 1

일반적인 네트워크의 구성은 다음과 같다

1.LAN의 특징과 각종 방식

AN_0005B_UART

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft Word - AVRISP mkII 장비 운용.doc

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

2009년2학기 임베디드시스템 응용

Chap06(Interprocess Communication).PDF

Index

10.

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

제품소개 MODBUS Tester 는 MODBUS 프로토콜을사용하는산업장비테스트및점검하기위해 PC 를휴대및설치할필요없이쉽고빠르게장비와연결하여원하는작업을진행할수있도록휴대성을강조한 MODBUS 프로토콜테스트장치입니다. MODBUS Tester 에는 3 가지의기능이지원되며,

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

Chapter11OSPF

API 매뉴얼

Microsoft Word - MPC850 SPI Driver.doc

CPX-E-PB_BES_C_ _ k1

() Aloha Netowrk ether(,, )network Ehternet, DEC, ( DIX(DEC, Intel, Xerox) IEEE(, ) 5 9,, (Xerox) (Bob Metcalfe), (, ) A

<4D F736F F F696E74202D20454D43BCB3B0E8B4EBC3A5BBE7B7CA2828C1D629B8B6B7E7C0CEC6F75FBDC5C1D6C8A3292E707074>

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

i-movix 특징 l 안정성 l 뛰어난화질 l 차별화된편의성

MPLAB C18 C

CPX-E-SYS_BES_C_ _ k1

Transcription:

뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr)

INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16

1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex) Internetworks (2 가닥선으로연결된 ) 버스 --> 확장성이좋다! I 2 C USB USB 2.0 USB.0 Master & Slave 구조 Master & Slave 구조채택 통신속도개선 10M 속도대역! IEE EE 194 Master & Slave 구조개선 USB OTG 모드 통신속도개선 최대 480Mbps Master & Slave 구조혁신 Master 와 Slave 로구분하지않음! 통신속도개선 100M 속도대역!

USB.0 1 I 2 C 통신이야기

2 ATmega128 TWI(I 2 C) 구조분석 Vcc Slave Slave Slave Slave Device 1 Device 2 Device Device n R1 R2 Master Device SDA SCL 디바이스 (Device) : 주로내부에메모리를포함한 IC 디바이스들구별은어떻게?? -> Device Address 필요!

2 ATmega128 TWI(I 2 C) 구조분석 ATmega128 TWI Device Address : 7-bit 지원 속도 : 100KHz, 400KHz

2 ATmega128 TWI(I 2 C) 구조분석

2 ATmega128 TWI(I 2 C) 구조분석 TWI frame format STA Address Packet 1 2 4 5 6 7 8 9 Data Packet 1 2 4 5 6 7 8 9 STP Address W/R ack Data ack MSB LSB MSB LSB

2 ATmega128 TWI(I 2 C) 구조분석 Start signal Stop signal start t 조건완료체크 데이터전송완료체크 (Option: ACK 신호수신 ) address 전송 주소전송완료체크 (Option: ACK 신호수신 ) data 전송 start address R/W ACK Data ACK stop

TWBR : TWI Bit Rate Register Register 설명실제구현예 TWBR : Bits 7..0 TWI Bit Rate Register TWBR = (CPU_CLOCK CLOCK / TWI_FREQ - 16) / 2; TWI Bit Rate Register 전송속도설정레지스터 전송속도계산식 // CPU_CLOCK : 16000000 // TWI_FREQ : 400000 CPU Clockfrequency // 4 TWPS :?? SCL frequency = TWPS 16 + 2(TWBR) 4 SCL frequency : 100KHz or 400KHz ( 둘중하나 ) CPU frequency : 16MHz (DK128의경우) 4 TWPS : 계산식을간단하게만들려면??

TWCR : TWI Control Register Register 설명실제구현예 Bit 7 소프트웨어에의해서반드시 1 값으로설정 (set) TWCR = (1<<TWINT) (1<<TWEN); TWINT: 현재작업이끝나면하드웨어에의해자동적으로 while (!( TWCR & (1 << TWINT) ) ); TWI 클리어 (Clear) 됨 주의 : 1 값으로 clear Interrupt AVR Core와연결되는입출력라인이다르다?! Flag TWI 작업을위해초기에반드시 1 로설정되어야함 Bit 5 TWSTA: TWI START Condition Bit Bit 4 TWSTO: TWI STOP Condition Bit TWI버스가사용되고있지않으면 (not busy 상태 ) START 조건을만들수있음 TWI 버스가현재사용중이라면 (busy 상태 ) STOP 조건이될때까지기다림 Polling 으로 START 상태를확인해야함! TWI 버스사용이끝나면다른 Device들을위해 STOP 조건을만들어 TWI 버스에전송 START 조건처럼확인할필요는없음! TWCR = (1 << TWINT) (1 << TWSTA) (1 << TWEN); while (!( TWCR & (1 << TWINT) ) ); TWCR = (1 << TWINT) (1 << TWSTO) (1 << TWEN); Bit 2 TWEN: TWI Enable Bit TWI 활성화비트 TWCR = (1 << TWINT) (1 << TWSTO) (1 << TWEN); TWCR = (1 << TWINT) (1 << TWEN);

ATmega128 AVR Core ex4_7_1.hex (firmware) WRITE READ TWINT TWI NOT gate TWCR System Bus

TWSR : TWI Status Register Register 설명실제구현예 TWSR : TWPS1,0 : TWI 속도 (Hz) 를계산하기위해필요한 TWSR = (0 << TWPS1) (0 << TWPS0); TWI Prescaler 값을설정하는비트 Status Register TWPS1 TWPS0 Prescaler Value TWPS ( 4 ) 0 0 1 0 1 4 1 0 16 1 1 64

TWDR : TWI Data Register Register 설명실제구현예 TWDR : 송수신데이터를담기위한레지스터 버퍼 (buffer) TWDR = byte; // Write TWI Data byte = TWDR; // Read Register

Start signal Stop signal start 조건완료체크 데이터전송완료체크 (Option: ACK 신호수신 ) address 전송 주소전송완료체크 (Option: ACK 신호수신 ) data 전송 start Slave Address W ACK Data ACK stop TWCR 초기화 TWINT 설정 TWINT 클리어 TWINT 설정 TWINT 클리어 TWINT 설정 STOP 조건 TWDR 주소입력 데이터입력 TWINT 상태값을 Polling 루틴 (while 문 ) 으로확인하는부분

Start signal start Slave Address W ACK Data ACK stop TWCR 1 초기화 start 조건을내보내기위해서 TWCR을초기화 실제구현예 ) TWCR = (1<<TWINT) (1<<TWSTA) (1<<TWEN);

start 조건완료체크 TWCR start Slave Address W ACK Data ACK stop 2 TWINT 설정 START 조건이 TWI 버스에제대로전송되었는지확인하는부분 실제구현예 ) while (!(TWCR & (1<<TWINT)));

address 전송 TWCR TWDR start Slave Address W ACK Data ACK stop TWINT 클리어 주소입력 Slave Device의 (Device) 주소를 TWDR에입력 TWINT를다시소프트웨어적으로클리어 (clear) 하기위하여 TWINT 값을 1 로설정 실제구현예 ) TWDR = SLA_W; TWCR = (1<<TWINT) (1<<TWEN);

주소전송완료체크 TWCR start Slave Address W ACK Data ACK stop 4 TWINT 설정 Slave Device 주소전송완료 하드웨어에의해자동적으로 TWINT가 1 로설정됨 실제구현예 ) while (!(TWCR & (1<<TWINT)));

data 전송 TWCR TWDR start Slave Address W ACK Data ACK stop 5 TWINT 클리어 데이터입력 실제전송 (write) 할데이터를 TWDR에입력 TWINT를다시소프트웨어적으로클리어 (clear) 하기위하여 TWINT 값을 1 로설정 실제구현예 ) TWDR = DATA; TWCR = (1<<TWINT) (1<<TWEN);

데이터전송완료체크 TWCR start Slave Address W ACK Data ACK stop 6 TWINT 설정 데이터전송완료 하드웨어에의해자동적으로 TWINT가 1 로설정됨 실제구현예 ) while (!(TWCR & (1<<TWINT)));

Stop signal TWCR start Slave Address W ACK Data ACK stop 7 STOP 조건 STOP조건을전송하기위해 TWCR을설정 실제구현예 ) TWCR = (1<<TWINT) (1<<TWEN) (1<<TWSTO);

번호 C 예제코드설명 1 TWCR = (1<<TWINT) (1<<TWSTA) (1<<TWEN) Start 조건을내보낸다. 2 while (!(TWCR & (1<<TWINT))); TWINT 가 1 로설정되기를기다린다. 여기서는 START 조건이완료된것을의미한다. TWDR = SLA_W; TWCR = (1<<TWINT) (1<<TWEN); TWDR 레지스터에 Slave Address 를써넣는다. TWCR 레지스터는 TWINT 를클리어시키기위해서새로써넣는다. 4 while (!(TWCR & (1<<TWINT))); TWINT 가 1 로설정되기를기다린다. 여기서는 Slave Address 전송이완료된것을의미한다. 5 TWDR = DATA; TWCR = (1<<TWINT) (1<<TWEN); TWDR 에실제로보낼데이터를써넣는다. TWCR 레지스터는 TWINT 를클리어시키기위해서새로써넣는다. 6 while (!(TWCR & (1<<TWINT))); TWINT 가 1 로설정되기를기다린다. 여기서는데이터전송이완료된것을의미한다. 7 TWCR = (1<<TWINT) (1<<TWEN) (1<<TWSTO); STOP 조건을만들어준다.

4 ATmega128 TWI(I 2 C) 실습 : AT24C16 ATmega128 SCL SDA AT24C16 2-Wire Serial EEPROM AT24C01 AT24C02 AT24C04 AT24C08 AT24C16 1K (128 x 8) 2K (256 x 8) 4K (512 x 8) 8K (1024 x 8) 16K (2048 x 8)

4 ATmega128 TWI(I 2 C) 실습 : AT24C16 2KB EEPROM 111 1111 1111 마지막주소에저장된데이터 네번째주소에저장된데이터 2 11 세번째주소에저장된데이터 두번째주소에저장된데이터 000 0000 0000 첫번째주소에저장된데이터 8 bit

4 ATmega128 TWI(I 2 C) 실습 : AT24C16 Word address 로해당번지식별 data 영역에서나타냄 2048*8(2KB) 이므로 11bit 의주소표현비트필요 AT24C16 access 위치 ATmega128 (Master) SDA SCL Device address 로해당 device 식별 address 영역 (address packet) 에서나타냄

4 ATmega128 TWI(I 2 C) 실습 : AT24C16 Start Address Packet Data Packet Stop 1 2 4 5 6 7 8 9 Address W/R ack 1 2 4 5 6 7 8 9 Data ack 1 0 1 0 P2 P1 P0 R/W 1 0 1 0 1 1 0 1 AT24C16 (Device address) Word address

4 ATmega128 TWI(I 2 C) 실습 : AT24C16 Byte Write void twi_write_byte(unsigned int addr, unsigned char byte) { twi_ start(); twi_send_byte(0xa0 ((addr >> 7) & 0x000E)); twi_send_byte(addr & 0x00FF); twi_send_byte(byte); twi_stop(); } delay(10);

4 ATmega128 TWI(I 2 C) 실습 : AT24C16 Random Read unsigned char twi_read_byte(unsigned int addr) { unsigned char byte; twi_start(); twi_send_byte(0xa0 ((addr >> 7) & 0x000E)); twi_send_byte(addr & 0x00FF); twi_start(); twi_send_byte(0xa0 ((addr >> 7) & 0x000E) 0x0001); byte = twi_read(); twi_stop(); } return byte;