Flash (SRAM, I/O) AVR Enhanced RISC ATmega128 . , AVR (. 2.4-2.13).
. 2.4-2.13 OP , .
R26R31 - (X, Y Z) .
.
63 , Y Z.
X, Y Z, .
32 , 64 - 4096 ATmega128 .
-, , , -, . :
- , .. .
- ( ).
- .
- ().
(XMEM) .
ATmega103. (XMCRA XMCRB) -. ATmega103 , , . , .. ATmega103. ATmega103 :
- (SRW1n = 0b00 SRW1n = 0b01).
- .
- .
- .
- RD, WR ALE ( G ATmega128).
.
:
- AD7:0: / .
- A15:8: ( ).
|
|
- ALE: .
- RD: .
- WR: .
: MCUCR, XMCRA XMCRB.
XMEM , XMEM. XMEM . XMEM , A, C G . ALE 1 0 AD7:0 ( ) . ALE . XMEM , ALE, , RD WR . . , XMEM . . 2.14 , AVR- 8- , SNB.
. XRAM - 8 4 4 2.7.
. 74AHC. , , .
. AD7:0 , . .
XMEM AD7:0 . AD7:0 XMEM .
XMEM.
SRE (7 MCUCR). /XMEM. SRE 1 , AD7:0, A15:8, ALE, WR RD . SRE . SRE , .
SRW10. (6 MCUCR). . ATmega103 SRWn XMCRA. ATmega103 SRW10 1 /.
|
|
XMCRA.
- | SRL2 | SRL1 | SRL0 | SRW01 | SRW00 | SRW11 | - | |
R/W | R | R/W | R/W | R/W | R/W | R/W | R/W | R |
7 .
0. 0 .
6..4 SRL2, SRL1, SRL0. .
. , . SRL2, SRL1 SRL0 (. . 2.9). SRL2, SRL1 SRL0 . , SRW11 SRW10.
2.9. SRL2..0.
SRL2 | SRL1 | SRL0 | |
= = 0x1100 - 0xFFFF | |||
= 0x1100 - 0x1FFF = 0x2000 - 0xFFFF | |||
= 0x1100 - 0x3FFF = 0x4000 - 0xFFFF | |||
= 0x1100 - 0x5FFF = 0x6000 - 0xFFFF | |||
= 0x1100 - 0x7FFF = 0x8000 - 0xFFFF | |||
= 0x1100 - 0x9FFF = 0xA000 - 0xFFFF | |||
= 0x1100 - 0xBFFF = 0xC000 - 0xFFFF | |||
= 0x1100 - 0xDFFF = 0xE000 - 0xFFFF |
1 XMCRA -SRW11 6 MCUCR SRW10. .
SRW11 SRW10 .
3..2 SRW01, SRW00. .
SRW01 SRW00 (. . 2.10).
2.10. .
SRWn1 | SRWn0 | |
/ | ||
/ | ||
/ |
0
XMCRB.
XMBK | - | - | - | - | XMM2 | XMM1 | XMM0 |
R/W | R | R | R | R | R/W | R/W | R/W |
7 XMBK. . XMBK 1 AD7:0. AD7:0 , XMEM . XMBK 0 . XMBK SRE, XMEM , , XMBK=1.
|
|
6..3 - . , , . 0 .
2..0 XMM2, XMM1, XMM0. (. 2.11). . 60 , , , -. XMMn 64 .
2.11. -
XMM2 | XMM1 | XMM0 | ||
8 ( 60 ) | ||||
PC7 | ||||
PC7 - PC6 | ||||
PC7 - PC5 | ||||
PC7 - PC4 | ||||
PC7 - PC3 | ||||
PC7 - PC2 | ||||
64 . 11 , 4352 ( 0x00000x10FF). , 64 , , 32 0x80000x90FF. 15 , 0x80000x90FF 0x00000x10FF . 0x90FF , .. , () . 32 0x11000x90FF. ATmega103, .
ATmega103 4096 . , 4096 0x80000x8FFF. 32 0x10000x8FFF.
64 . , , 60 ( 0x0000 0x10FF ). , . XMMn . 0x0000 - 0x1FFF, 0x00 -. (. ).
.; OFFSET=0x2000 ; ( ) 0x00,; ; ldi r16, 0xFFout DDRC, r16ldi r16, 0x00out PORTC, r16; PC7:5 ldi r16, (1<<XMM1)|(1<<XMM0)sts XMCRB, r16 ldi r16, 0xaa; 0xAA 0x0001 sts 0x0001+OFFSET, r16; PC7:5 ldi r16, (0<<XMM1)|(0<<XMM0)sts XMCRB, r16; 0x55 (OFFSET + 1) ldi r16, 0x55sts 0x0001+OFFSET, r16EEPROM
|
|
ATmega128 4 EEPROM. , . EEPROM 100000 /.
EEPROM. EEPROM , -.
. EEPROM, . VCC / / . , .
EEPROM . EEPROM.
EEPROM CPU 4 . EEPROM CPU .
EEPROM , -.
EEPROM EEARH EEARL
- | - | - | - | EEAR | EEAR | EEAR | EEAR |
EEAR | EEAR | EEAR | EEAR | EEAR | EEAR | EEAR | EEAR |
EEAR15..12. 0. .
11,,0 EEAR11,,0. EEPROM.
EEARH EEARL EEPROM 4 . EEPROM 04096. EEAR . EEPROM.
EEPROM EEDR
EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
70 EEDR7,..,0. EEPROM. EEPROM EEDR , , EEAR. EEPROM EEDR EEAR.
EEPROM EECR
- | - | - | - | EERIE | EEMWE | EEWE | EERE |
R | R | R | R | R/W | R/W | R/W | R/W |
7,,4 ATmega128 0.
3 EERIE. EEPROM. 1 EERIE EEPROM, I SREG. EERIE . EEPROM , EEWE .
2 EEMWE. EEPROM. EEMWE EEWE, EEPROM. EEPROM , EEMWE 1, 4 1 EEWE. EEMWE=0, EEWE . EEMWE .
1 EEWE. EEPROM. EEWE EEPROM. EEPROM EEWE. EEWE EEMWE, EEPROM . EEPROM ( 3 4 ):
1. EEWE .
2. SPMEN SPMCSR.
3. EEPROM EEAR.
4. EEDR EEPROM.
5. 1 EEMWE, EEWE EECR .
|
|
6. 1 EEWE EEMWE.
EEPROM - CPU. , EEPROM -. 2 , . - CPU , 2 .
EEWE . ( ). EEWE CPU .
0 EERE. EEPROM. EEPROM EERE EEPROM. EEAR EERE EEPROM. EEPROM , , . EEPROM CPU , .
EEWE . , EEPROM, EEAR. EEPROM .
EEPROM . , , (, ). , , -. EEPROM SPM.
//
;
EEPROM_write:
sbic EECR,EEWE
rjmp EEPROM_write
out EEARH, r18
; (r18:r17) EEPROM
out EEARL, r17
; (r16) EEPROM
out EEDR,r16
sbi EECR,EEMWE; 1 EEMWE
; EEPROM EEWE
sbi EECR,EEWE
ret
EEPROM. , .
//
;
EEPROM_read:
sbic EECR,EEWE
rjmp EEPROM_read
; (r18:r17) EEAR
out EEARH, r18
out EEARL, r17
; EEPROM EERE
sbi EECR,EERE
; EEPROM
in r16,EEDR
ret;
EEPROM (Power Down). (Power Down) sleep EEPROM, . , , , . , (Power-down).
EEPROM. , VCC CPU EEPROM, EEPROM . , EEPROM, .
EEPROM. EEPROM . .
EEPROM , :
( RESET) . , (BOD). , VCC ( ). , .
. ATmega128 6 , (1) (0) (. 1.12), . 2.13. ( 1) (Chip Erase).
2.12.
- | 1 () | ||
- | 1 () | ||
BLB12 | 1 () | ||
BLB11 | 1 () | ||
BLB02 | 1 () | ||
BLB01 | 1 () | ||
LB2 | 1 () | ||
LB1 | 1 () |
. Atmel (fuse ) , , .. , 1- .
2.13.
LB | LB2 | LB1 | |
. | |||
- EEPROM (SPI/JTAG) . | |||
- EEPROM , SPI/JTAG. | |||
BLB0 | BLB02 | BLB01 | |
SPM (E)LPM . | |||
SPM . | |||
SPM , (E)LPM . , . | |||
(E)LPM . , . | |||
BLB1 | BLB12 | BLB11 | |
SPM (E)LPM . | |||
SPM . | |||
SPM , (E)LPM . , . | |||
(E)LPM . , . |
.
1. SPM-
2. .
ATmega128 . . 2.14 2.16 . , , 0.
2.14.
- | 7-2 | - | |
M103C | ATmega103 | 0 () | |
WDTON | 1() |
2.15.
OCDEN | 1(, ) | ||
JTAGEN | JTAG- | 0(, JTAG ) | |
SPIEN | 0(, SPI ) | ||
CKOPT | 1() | ||
EESAVE | EEPROM | 1(, EEPROM) | |
BOOTSZ1 | 0() | ||
BOOTSZ0 | 0() | ||
BOOTRST | 1() |
.
1. SPIEN SPI.
2. CKOPT CKSEL.
3. BOOTSZ1..0 .
4. OCDEN , JTAGEN. OCDEN , sleep. .
2.16.
BODLEVEL | 1() | ||
BODEN | 1(, ) | ||
SUT1 | 1() | ||
SUT0 | 0() | ||
CKSEL3 | 0() | ||
CKSEL2 | 0() | ||
CKSEL1 | 0() | ||
CKSEL0 | 1()(2) |
.
1. SUT1..0 .
2. AVR , . CKSEL. , (. 2.17).
3. CKSEL3..0 RC- 1 .
. ATmega128 RC-. 0x000, 0x0001, 0x0002 0x0003 1, 2, 4 8 . OSCCAL 1 . , OSCCAL