2019. 8. 5. 14:26ㆍ개발 관련 학습정리/AVR(atmega128) Register 분석
이번에는 TWI라고도 불리우는 I2C통신에 대하여 알아보자.
클럭과 데이터로 구성된 두개의 버스 선으로 이루어져 있으며,
7비트로 128개의 서로 다른 디바이스를 제어할 수 있다.
각 버스선 마다 pull-up저항이 연결되어 있으며, 마스터와 슬레이브 동작을 동시에 지원한다.
기본원리는 간단하고, 주요 기능들은 레지스터에 있으니 바로 레지스터를 알아보도록 하자.
전체적인 모듈 구성도는 위 그림처럼 생겼으며,
SCL,SDA 두개의 선으로 이루어지고 컨트롤 레지스터 두개,
전송속도 레지스터, 주소 레지스터, 데이터 레지스터로 이루어져 있는걸 볼 수 있다.
1. TWBR (TWI Bit Rate Register)
TWBR0...7(TWI Bit Rate Register) : TWI 전송속도를 설정하는 레지스터로, 밑의 그림과 같은 계산식으로 계산한다.
2. TWCR (TWI Control Register)
TWINT (TWI Interrupt Flag) : 작업을 끝마쳤을때 1로 플래그 한다. 자동으로 클리어가 되지 않기 때문에,
처음에 클리어 해야만 한다.
TWEA (TWI Enable Acknowledge Bit) : 수신했다는 신호를 알리는 ACK신호를 만드는 역할을 한다.
1로 세트되어있고, 수신이 완료되었을때 ACK신호를 보내게 된다.
TWSTA (TWI START Condition Bit) : START 조건을 만들어주는 비트로,
TWI버스가 not busy상태일때 조건을 만들고 busy상태이면 기다리는 역할을 한다.
TWSTO (TWI STOP Condition Bit) : TWI 버스 사용이 끝나면 다른 디바이스를 위해 STOP조건을 만들어 전송.
TWWC (TWI Write Collision Flag) : 충돌 플래그로 작업중일때 쓰기를 시도하면 플래그가 성립된다.
TWEN (TWI Enable Bit) : 말그대로 TWI를 활성화하는 비트이다.
TWIE (TWI Interrupt Enable Bit) : TWI 인터럽트를 활성화 하는 비트이다.
3. TWSR (TWI Status Register)
TWS3...7 (TWI Status) : 5개의 비트로 TWI의 로직, 상태를 나타낸다.
TWPS0...1 (TWI Prescaler Bit) : TWI 속도를 계산할때 쓰이는 Prescaler 값을 설정하는 비트.
4. TWDR (TWI Data Register)
TWD0...7 (TWI Data) : 다음 전송할 데이터를 저장하며, 수신일때는 이전 데이터를 갖는다.
5. TWAR (TWI Address Register)
TWA0...6 (TWI slave Address Register) : 7개의 비트로 보낼 slave의 주소를 나타낸다.
TWGCE (TWI General Call Enable) : 1일때 general call을 인식하게 한다.
마스터에서 START신호를 발생하고 TWDR에 0x00을 넣으면 general을 의미하며,
TWGCE가 1인 slave들이 응답하게 된다.
지금까지 3가지 통신방법을 알아보았고,
다음엔 워치독 타이머와 리셋조건에 대해 알아보자.
![[복두출판사]AVR ATmega128 프로그래밍 응용실습:ED-4513 마이크로프로세서 콤보 IT를 이용한, 복두출판사](https://static.coupangcdn.com/image/affiliate/banner/577fb0a8ddb26d4c8ffc130765a1295a@2x.jpg)
'개발 관련 학습정리 > AVR(atmega128) Register 분석' 카테고리의 다른 글
[Atmega128] 11. DATA Memory - EEPROM (1) | 2019.08.06 |
---|---|
[Atmega128] 10. Reset과 Watchdog 타이머 (0) | 2019.08.06 |
[Atmega128] 8. UASRT 통신 (Universal Synchronus Receiver Transmit) (5) | 2019.08.05 |
[Atmega128] 7. SPI 통신 (Serial Peripheral Interface Bus) (0) | 2019.08.05 |
[Atmega128] 6. 아날로그 변환기 ADC (Analog to Digital Converter) (0) | 2019.08.05 |