.


:




:

































 

 

 

 





Mega (UART), / (USART) . (. 2.28) , .

 
 

. 2.28.

UART

 

:

( )

.

5, 6, 7, 8 9 1 2 -.

(/).

.

.

- .

, .

.

.

ATmega128 : 0 1. . 0 1 -. ATmega103 1 , UBRR0H UCRS0C. , ATmega103 0.

: , . . , ( ) . XCK ( ) . , , , . - . , .. . . , , (UDR). , , (), .

. . : , , . UMSEL (UCSRC) . ( ) U2X UCSRA. (UMSEL=1) XCK (DDR_XCK) ( ) ( ). XCK .

- . .

(UBRR) . (fosc) UBRR UBRRL. . (= fosc/(UBRR+1)). 2, 8 16 . . , 2, 8 16 , UMSEL, U2X DDR_XCK.

. 2.54 ( ) UBRR .

 

2.54.

UBRR
(U2X=0)
(U2X=1)

. 2.54 :

- BAUD - , 9600 ( , );

- UBRR - UBRRH UBRRL, (0 4095);

- fOSC - .

 

 

(U2X). , U2X UCSRA. . .

16 8, , . , 16 8 , , . - .

. .

XCK . , . CPU , , XCK : .

, fosc , - .

. (UMSEL=1), XCK ( ) ( ). . , ( RxD) XCK, , ( TxD).

UCPOL UCRSC , XCK , . UCPOL=0 XCK, XCK. , UCPOL, XCK, XCK.

. , ( -), . 30 :

1 -

5, 6, 7, 8 9

, ,

1 2 -

 
 

-, , . ( 9), . , , -. ( ).

 

 

2.29 . .

- St - - .

- 08 - .

- P - : .

- Sp1,Sp2 - - .

- IDLE - , RxD TxD. .

, , UCSZ2:0, UPM1:0 USBS UCSRB UCSRC. . , , .

(UCSZ2:0) . (UPM1:0) / : , . - - (USBS). -. FE , - 0.

. Ȼ . , . :

,

P - ; P - ;

dn - n- .

, -.

. . UCSRA, UCSRB UCSR, UBBRH:UBBRL (. ).

. , . , , (.. ).

, , , , . TXC , RXC - . , TXC ( UDR).

. , ( ) . . , r17:r16.

USART_Init:; out UBRRH, r17out UBRRL, r16; ldi r16, (1<<RXEN)|(1<<TXEN)out UCSRB,r16; : 8 , 2-ldi r16, (1<<USBS)|(3<<UCSZ0)out UCSRC,r16ret

 

, , , , .. , , , -.

- . (TXEN) UCSRB. , TxD . , - . , XCK - .

58 . . CPU UDR, -. , . ( ) - . , , , U2X XCK .

, (UDRE). 8 , UDR . . , R16 .

USART_Transmit:; sbis UCSRA,UDRErjmp USART_Transmit; (r16) , out UDR,r16 ret

UDRE.

9 . 9 (UCSZ=7), 9- TXB8 UCSRB, UDR. 9 . , R17:R16.

USART_Transmit:; sbis UCSRA,UDRErjmp USART_Transmit; 9- r17 TXB8cbi UCSRB,TXB8sbrc r17,0sbi UCSRB,TXB8; (r16) , out UDR,r16ret

9- .

. , : (UDRE) (TXC). . (UDRE) . , , . UCSRA.

1 (UDRIE) UCSRB, , UDRE ( , ). UDRE UDR. , UDR UDRE . .

(TXC) , . TXC 1. TXC (, RS485), , .

(TXCIE=1) UCSRB, , TXC ( , ). TXC, .. .

. . (UPM1 = 1), - .

. TXEN , , .. . TxD.

- . , 1 (RXEN) UCSRB. RxD : . , . , XCK .

58 . -. - XCK . - . -, .. , . - UDR.

, (RXC). 8, UDR . .

USART_Receive:; sbis UCSRA, RXCrjmp USART_Receive; in r16, UDRret

, RXC.

9 . 9 (UCSZ=7), UDR 9- RXB8 UCSRB. FE, DOR UPE: UCSRA, UDR. , , , UDR FIFO , , TXB8, FE, DOR UPE . 9 .

USART_Receive:; sbis UCSRA, RXCrjmp USART_Receive; 9- in r18, UCSRAin r17, UCSRBin r16, UDR; , andi r18,(1<<FE)|(1<<DOR)|(1<<UPE)breq USART_ReceiveNoErrorldi r17, HIGH(-1)ldi r16, LOW(-1)USART_ReceiveNoError:; 9- lsr r17andi r17, 0x01ret

- - . , .. , .

. , .

(RXC) . 1, , 0, (.. - ). (RXEN=0), RXC .

(RXCIE) UCSRB, RXC ( , ). , UDR, RXC. .

. : () FE, DOR UPE. UCSRA. , , . , , UCSRA (UDR), .. UDR . . , UCSRA . .

() FE - . FE 0, - , 1, , .. 0. , . FE USBS UCSRC, .. - . 0 UCSRA.

(DOR) - . , ( ), -. DOR , UDR. 0 UCSRA. DOR , .

(UPE) , . , . 0 UCSRA.

. UPM1. : UPM0. . -. UPE , . UPE , , , (UPM1 = 1). (UDR).

. , . , . (.. RXEN=0) RxD. FIFO , , .

. FIFO , .. . . , , , UDR RXC. , .

USART_Flush:sbis UCSRA, RXCretin r16, UDRrjmp USART_Flush

. . . RxD. () , . , ( ).

. . . 2.30 - . 16 8 . . (U2X=1). , 0, RxD (.. ).

( ) () RxD, -. , 1 . 8, 9, 10 4, 5, 6 - ( ). ( ), - , 1 0. -, , . -.

 
 

. 2.30. - U2X=0 U2X=1

. - . 16 8 . . 2.31 i- . , .

 
 

. 2.31. U2X=0 U2X=1

 

 

, . . : , 1. , 0. , , RxD. , .. -. , - , . 2.32 - - .

 
 

. 2.32. - -

 

, -, . - , FE.

1 0 - , , . , () 2.32. ( ). (C) -. - ( ).

 

 

- UDRn

               
  RXBn[7:0]
  TXBn[7:0]
W/R W/R W/R W/R W/R W/R W/R W/R W/R
               

 

n -, n UDRn. UDRn, TXBn. , UDRn RXBn.

5-, 6- 7- , .

, UDREn UCSRAn. UDRn UDREn n. , . TxDn. FIFO ( - ). FIFO , . , -- (SBI CBI). (SBIC SBIS), .. FIFO.

UCSRnA.

               
  RXCn TXCn UDREn FEn DORn UPEn U2Xn MPCMn
W/R R W/R R R R R W/R W/R
               

 

7 RXCn. . , , (.., ). , , , RXCn . RXCn (. RXCIEn).

6 TXCn. . , UDRn . TXCn 1 . TXCn (. TXCIEn).

5 UDREn. . UDREn UDRn . UDREn=1, , , . UDREn (. UDRIEn). UDREn , .

4 FEn. . , , , . - . (UDRn). FEn , - . UCSRnA 0.

3 DORn. . , . , ( ), , -. (UDRn). UCSRnA . 0.

2 UPEn. . , , (UPMn1 = 1). (UDRn). UCSRnA 0.

1 - U2Xn. . . 0. 1 16 8, .

0 MPCMn. . . MPCMn 1, , . MPCMn .

B n - UCSRnB

               
  RXCIEn TXCIEn UDRIEn RXENn TXENn UCSZn2 RXB8n TXB8n
W/R W/R W/R W/R W/R W/R W/R . W/R
               

 

7 RXCIEn. . 1 RXCn. n , RXCIEn=1 I=1 ( SREG), RXCn UCSRnA.

6 TXCIE. . 1 TXCn. n , TXCIEn=1 I=1 ( SREG), TXCn UCSRnA.

5 UDRIEn. . UDREn. , UDRIEn=1, I=1 ( SREG) UDREn UCSRnA.

4 RXENn. . 1 n. , , RxDn. , FEn, DORn UPEn.

3 TXENn. . 1 n. , TxDn. ( . 0 TXENn) , .. . TxDn -.

2 - UCSZn2. . UCSZn2 UCSZn1:0 UCSRnC , , .

1 - RXB8n. 8- . RXB8n 9- 9- . , 8 UDRn.

0 - TXB8n. 8- . TXB8n 9- 9- . , UDRn.

 

- UCSRnC

               
  - UMSELn UPMn1 UPMn0 USBSn UCSZn1 UCSZn0 UCPOLn
W/R W/R W/R W/R W/R W/R W/R W/R W/R
               

. ATmega103.

 

7 - . . UCSRnC . 0.

6 UMSELn. . (. 2.55).

 

2.55. UMSELn

UMSELn
 
 

5,4 UPMn 1,0. . . . , UPEn UCSRnA (. 2.56).

2.56. UPMn

UPMn1 UPMn0
   
    ()
   
   

 

3 USBSn. -. . (. 2.57).

 

2.57. USBSn

USBSn -
  1
  2

 

2,1 - UCSZn1,0. . UCSZn1,0 UCSZn2 UCSRnB , , (. 2.58).

2.58. UCSZn

UCSZn2 UCSZn1 UCSZn0
      5
      6
      7
      8
     
     
     
      9

 

0 UCPOLn. . . , 0. UCPOLn (XCKn) (. 2.59).

 

2.59. UCPOLn

UCPOLn TxDn RxDn
  XCKn XCKn
  XCKn XCKn

 

 

- UBRRnL UBRRnH

               
UBRRnH - - - - UBRRn[11:8]
UBRRnL UBRRn[7:0]
W/R R R R R W/R W/R W/R W/R
  W/R W/R W/R W/R W/R W/R W/R W/R
               
               

 

UBRRnH ATmega103

15:12. .

11:0 - UBRRn11:0. . UBRR - 12- , . UBRRnH 4 , UBRRnL 8 n. , . UBRRnL .

 





:


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


:

:

. .
==> ...

1307 - | 1270 -


© 2015-2024 lektsii.org - -

: 0.118 .