.


:




:

































 

 

 

 


TWI AVR




. , TWI TWI. , . .

TWI : , , (TWAR), TWINT ( , TWI). TWINT TWINT. TWI .

, TWINT , SCL . .

TWINT :

/

_ + / ( /)

TWI

( )

SCL SDA. . IIC. , 50 . , PORTD.0 (SCL), PORTD.1 (SDA). .

. SCL . SCL IIC (TWBR) TWI (TWSR). , CPU 16 SCL. , SCL, TWI. SCL :

FSCL= FCPU/[16+2(TWBR) 4TWPS],

TWBR - TWI;

TWPS - TWI.

. TWBR 10, TWI . TWBR 10, SDA SCL. +_+ / .

. (TWDR), / . TWDR , . 8-. TWDR , () . . TWI (TWCR). () . TWSR.

/ , . / , . .

TWI , , . TWI , , .

. , 7- TWAR. TWGCE TWAR, . , . TWCR TWI , . , , . TWI , .. , (, INT0), TWI (Idle). , , , (Power-down), .

TWI.

TWI TWBR.

7,,0. TWI. TWBR . - , SCL . .

TWI TWCR.

               
TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIE
W/R W/R W/R W/R R W/R R W/R

 

TWCR TWI. TWI, , , TWDR. TWDR, .

7 TWINT. TWI. , TWI . I SREG TWIE TWCR , TWI. SCL , TWINT. TWINT 1. , . , TWI. , TWAR, TWSR TWDR.

6 TWEA. . TWEA . TWEA 1, TWI, :

1. .

2. , TWGCE TWAR.

3. .

0 TWEA . 1.

5 TWSTA. . . TWI , . , TWI , . TWSTA .

4 TWSTO. . TWSTO . , TWSTO . TWSTO . , TWI SCL SDA .

3 TWWC. . TWWC TWDR, TWINT . TWDR, TWINT=1.

2 TWEN. TWI. TWEN TWI TWI. TWEN , TWI - SCL SDA. . , TWI .

1 - . 0.

0 TWIE. TWI. 1 I SREG, TWI , TWINT.

TWI TWSR.

               
  TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0
W/R R R R R R R W/R W/R
               

 

7,,3 TWS. TWI. 5 TWI . . TWSR 5- 2- , . . .

2 - . 0.

1,0 TWPS. TWI. (/) ( 2.60).

 

2.60. TWI

TWPS1 TWPS0
     
     
     
     

 

. TWPS1..0 .

TWI TWDR.

               
  TWD7 TWD6 TWD5 TWD4 TWD3 TWD2 TWD1 TWD0
W/R W/R W/R W/R W/R W/R W/R W/R W/R
               

 

TWDR . TWDR . TWI . , TWINT. . TWDR TWINT. . TWDR , TWI. TWDR . , , . TWI, CPU .

7,...,0 TWD7-0. TWI. 8 , , .

TWI TWAR.

               
  TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE
W/R W/R W/R W/R W/R W/R W/R W/R W/R
               

 

TWI , , ( 7 TWAR). . TWAR , .

TWAR ($00). ( ) . , .

7,,1 TWA. TWI. TWI.

0 TWGCE. TWI. ,

TWI. TWI . , , . TWI . , TWINT , TWIE TWCR, SREG. TWIE , TWINT TWI.

TWINT TWI . TWI (TWSR) , TWI. TWI, TWCR TWDR.

. . , .

1. TWI .

TWCR :

 

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIE
  x     x     x

 

TWEN. 1 TWSTA , 1 TWINT TWINT. TWI . INT, TWSR $08.

, , TWINT. 1 TWINT . TWI , TWINT TWCR. TWINT .

ldi r16, (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);

out TWCR, r16;

 

2. TWINT TWCR, TWSR , .

; TWINT.

wait1:

in r16,TWCR

sbrs r16,TWINT

rjmp wait1

 

3. TWSR, , . TWSR , , , . , _+ TWDR. , TWDR , . TWDR _+ TWCR (. 2.61), _+, TWDR.

2.61. _+

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIE
  x     x     x

 

, TWINT. 1 TWINT . TWI TWINT TWCR. TWINT .

 

in r16,TWSR; TWSR

andi r16, 0xF8; .

cpi r16, START; START

brne ERROR; START,

; ERROR

; _ + TWDR.

ldi r16, SLA_W

out TWDR, r16

; TWINT TWCR

ldi r16, (1<<TWINT) | (1<<TWEN)

out TWCR, r16

 

4. TWINT TWCR, TWSR , . , .

TWINT. _ + / (/_).

wait2:

in r16,TWCR

sbrs r16,TWINT

rjmp wait2

 

5. TWSR, . . TWSR , , , . , TWDR. TWCR , TWI , TWDR.

TWDR , TWINT 1. TWWC TWCR. TWDR TWINT ( 1) . TWCR:

TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIE
  x     x     x

 

, .

, TWINT. 1 TWINT . TWI , TWINT TWCR. TWINT .

 

in r16,TWSR; .

andi r16, 0xF8; .

; MT_SLA_ACK,

; ERROR

cpi r16, MT_SLA_ACK

brne ERROR

 

; TWDR. TWINT TWCR

;

ldi r16, DATA

out TWDR, r16

ldi r16, (1<<TWINT) | (1<<TWEN)

out TWCR, r16

 

6. TWINT TWCR, TWSR , . , .

 

TWINT. ,

; / .

wait3:

in r16,TWCR

sbrs r16,TWINT

rjmp wait3

7. TWSR, , . TWSR , , .. . , TWCR, TWI . , . , TWINT. TWINT . TWI , TWINT TWCR. TWINT . , TWINT .

; TWI.

in r16,TWSR

andi r16, 0xF8; .

cpi r16, MT_DATA_ACK;

; TWI.

; MT_DATA_ACK,

; ERROR.

brne ERROR

; .

ldi r16, (1<<TWINT)|(1<<TWEN)|(1<<TWSTO)

out TWCR, r16

 

, , TWI. :

TWI TWINT . , TWINT.

TWINT , TWI , TWI. , TWDR , .

TWI TWCR. TWCR , TWINT. 1 TWINT . TWI TWCR.

 





:


: 2016-11-02; !; : 1382 |


:

:

- , , .
==> ...

1513 - | 1328 -


© 2015-2024 lektsii.org - -

: 0.091 .