본문 바로가기

교육/ATmega2560

ATmega2560 - TWI의 동작

F_CPU 클록 주파수


  • TWPS는 TWSR 레지스터에 설정된 프리스케일러 비트값 TWPS1~0이다.


-TWI의 마스터 모드에서 전송속도를 결정하기위한 프리스케일러, 전송속도는 시스템 클록의 주파수와 이 프리스케일러 및 TWBR 레지스터의 설정값에 의하여 결정된다. -





- 프리스케일러의 0 / 0 전송속도 1을 사용한다. -







TWI의 동작
- TWI 통신에서는 동작이 끝날 때마다 인터럽트가 발생하며 다음동작을 지정한다.
  모든 통신 동작은 인터럽트에 의하여 백그라운드로 수행된다.



<마스터가 슬레이브에게 1byte의 데이터를 전송하고자 할 때 어떻게 TWI 하드웨어와 연계되어 직렬통신을 수행하는지에 대한 그림>

/**** EEPROM에서는 Data를 WORD ADDRESS로 받아들인다. ****/
/**** ACK는 EEPROM에서 발생 ****/

[검정] - 시간상 흐름   ~(while)~

         1. TWI 하드웨어가 START 조건을 전송하도록 TWCR의 레지스터를 초기화
                    - TWINT = 1로 셋팅되어 있으면 어떤 동작도 수행 X
                    - 반드시 TWINT 비트에 1을 입력하여 0으로 만들어 주어야함.

         2. START 조건의 전송이 완료되면 TWCR레지스터에서 TWINT = 1로 다시 셋팅된다.
               ~(while)~
         
         3. TWDR레지스터에서 SLA + W를 라이트, TWCR을 초기화한다. 
                    - 반드시 TWINT비트에 1을 입력하여야함
     
         4. TWCR레지스터에서 TWINT = 1로 셋팅되면서 슬레이브가 어드레스 패킷에 대하여 확인신호로 응답했는지의 여부가
            상태 코드로 표시됨.
               ~(while)~

         5. TWDR레지스터에 송신할 데이터를 라이트, TWCR을 초기화한다.
                    - 반드시 TWINT비트에 1을 입력하여야한다.
         
         6. TWCR레지스터에서 TWINT = 1로 셋트되면서 TWSR레지스터에 데이트터 패킷의 전송이 성공적으로 전송되었으며
            슬레이브가 데이터 패킷에 대하여 확인신호로 응답했는지의 여부가 상태코드로 표시됨.
               ~(while)~

         7. STOP조건을 전송하도록 TWCR을 초기화,
                    - 반드시 TWINT비트에 1을 입력하여야한다.

- TWINT에는 모든 각각의 조건을 수행한 후 무조건 1을 입력해주어야한다. (데이터의 엔터역할) -

// EEPROM의 구간과 맞춰주기 위해 단계를 늘림 //



EEPROM




EEPROM은 Page로도 가능하며 Byte로도 가능하다.
Page = 8byte / Byte = 1
한꺼번에 1바이트를 쓸 수도 있고 8바이트를 쓸 수도 있다.
(P2/P1/P0을 사용 X 전부 0으로 채운다.)



  • AT24C16, 16K SERIAL EEPROM
          (내부적으로)블럭이 8개이며 256Page가 있고 각각 8byte로 구성되어있다.
          Random word addressing requires an 11-bit data word address.


/**** TWI의 동작에서는 WORD ADDREWSS를 Data로 받아들인다. ****/

-WORD ADDRESS-


/**** TWI의 동작 5번사용 - 15번지 사용****/
- EEPROM안에있는 데이터 주소를 사용해야 하기 때문에 15번지를 사용한다. -



Read