Методички по Микропроцессорам / Приложение Б(134-140)
.doc
Приложение Б
Архитектура и организация памяти микроконтроллера АТ90S8535
В лабораторном комплексе используется (изучается) микроконтроллер AT90S8535 в корпусе PDIP с 40 выводами (рис. Б1).
Рис. Б1. Микроконтроллер AT90S8535 в PDIP корпусе
В табл. Б1 представлено назначение выводов микроконтроллера AT90S8535. Многие выводы имеют альтернативное назначение, которое записано в скобках. Например, выводы порта А РА0…РА7 микроконтроллера могут использоваться как входы аналого–цифровых преобразователей ADC0…ADC7.
На рис. Б2 представлен функциональный состав изучаемого микроконтроллера. Как следует из рис. Б2, микроконтроллер AT90S8535 включает в себя следующие функциональные узлы:
-
8-разрядное арифметико-логическое устройство (АЛУ);
-
внутреннюю flash-память программ объемом 8 Кбайт с возможностью программирования через последовательный интерфейс SPI;
-
32 регистра общего назначения;
-
внутреннюю EEPROM-память данных объемом 512 байт;
-
внутреннее ОЗУ данных объемом 512 байт;
-
4 параллельных 8-разрядных порта;
-
10-разрядный 8-канальный АЦП и аналоговый компаратор;
-
последовательный интерфейс UART и SPI;
-
блоки прерывания и управления (включая сторожевой таймер).
Таблица Б1
-
Номер вывода
Выполняемая функция
1
PB0(T0) – канал 0 порта B (внешний вход таймера/счётчика0)
2
PB1(T1) – канал 1 порта B (внешний вход таймера/счётчика1)
3
PB2(AIN0) – канал 2 порта B (положительный вывод компаратора)
4
PB3(AIN1) – канал 3 порта B (отрицательный вывод компаратора)
5
PB4() – канал 4порта B (вход выбора ведомого SPI)
6
PB5(MOSI) – канал 5 порта B (установка ведущий вывод/ведомый вход SPI)
7
PB6(MISO) – канал 6 порта B (установка ведущий вход/ведомый выход SPI)
8
PB7(SCK) – канал 7 порта B (тактовый сигнал порта SPI)
9
- вход сброса
10
Vcc – внешнее напряжение питания
11
GND – общий вывод (земля)
12
XTAL2 – вход схемы встроенного генератора тактовой частоты
13
XTAL1 – вход схемы встроенного генератора тактовой частоты
14
PD0(RxD) – канал 0 порта D (вход приёмника UART)
15
PD1(TxD) – канал 1 порта D (выход передатчика UART)
16
PD2(INT0) – канал 2 порта D (вход внешнего прерывания 0)
17
PD3(INT1) – канал 3 порта D (вход внешнего прерывания 1)
18
PD4(OC1B) – канал 4 порта D (выход B ШИМ таймера/счётчика1)
19
PD5(OC1A) – канал 5 порта D (выход A ШИМ таймера/счётчика1)
20
PD6(ICP) – канал 6 порта D (вход триггера захвата таймера/счётчика1)
21
PD7(OC2) – канал 7 порта D (выход ШИМ таймера/счётчика2)
22
PC0 – канал 0 порта С
23
PC1 – канал 1 порта С
24
PC2 – канал 2 порта С
25
PC3 – канал 3 порта С
26
PC4 – канал 4 порта С
27
PC5 – канал 5 порта С
28
PC6 (TOSC1) – канал 6 порта С (подключение внешнего генератора)
29
PC7 (TOSC2) – канал 7 порта С (подключение внешнего генератора)
30
AVCC – напряжение питания АЦП
31
AGND – аналоговая земля
32
AREF – вход аналогового напряжения сравнения для АЦП
33
PA7 (ADC7) – канал 7 порта A (7-й АЦП)
34
PA6 (ADC6) – канал 6 порта A (6-й АЦП)
35
PA5 (ADC5) – канал 5 порта A (5-й АЦП)
36
PA4 (ADC4) – канал 4 порта A (4-й АЦП)
37
PA3 (ADC3) – канал 3 порта A (3-й АЦП)
38
PA2 (ADC2) – канал 2 порта A (2-й АЦП)
39
PA1 (ADC1) – канал 1 порта A (1-й АЦП)
40
PA0 (ADC0) – канал 0 порта A (0-й АЦП)
Рис. Б2. Архитектура микроконтроллера AT90S8535
Микроконтроллер AT90S8535 имеет раздельные пространства адресов памяти программ и данных (гарвардская архитектура). Организация памяти контроллера представлена на рис. Б3.
Микроконтроллер AT90S8535 содержит 8 Кбайт внутреннего программируемого Flash ПЗУ. Поскольку все команды имеют формат одного или двух 16-разрядных слов, то и память программ имеет организацию 4К *16. Flash-память обеспечивает не менее 1000 циклов стирания/записи.
Память данных (память DATA) включает в себя 32 регистра общего назначения , 64 регистра ввода/вывода (I/O), 512 байт встроенной оперативной памяти (SRAM) и 512 байт EEPROM.
На рис. Б4 представлена структура 32 регистров общего назначения.
Рис. Б3. Организация памяти микроконтроллера AT90S8535
-
7 0
Адрес
R0
$00
R1
$01
R2
$02
R13
$0D
R14
$0E
R15
$0F
Регистры
R16
$10
общего
R17
$11
назначения
R26
$1A
Младший байт регистра X
R27
S1B
Старший байт регистра X
R28
$1C
Младший байт регистра Y
R29
$1D
Старший байт регистра Y
R30
$1E
Младший байт регистра Z
R31
$1F
Старший байт регистра Z
Рис. Б4. Регистры общего назначения
Все регистровые команды обращаются непосредственно к регистрам в течение одного тактового цикла. Исключением являются пять логических и арифметических операций с константами (SBCI, SUBI, CPI и ANDI) и операция ORI между константой и содержимым регистра, и команда непосредственной загрузки константы LDI. Эти команды используют вторую половину регистров регистрового файла - R16…R31. Самые общие команды SBC, SUB, CP, AND и OR и все прочие операции между двумя регистрами или с одним регистром используют для записи результата регистровый файл.
Шесть регистров (с R26 по R31) регистрового файла (рис. Б5), кроме обычной для прочих регистров функций, выполняют функцию 16-разрядных регистров указателей адреса при косвенной адресации SRAM. Эти три регистра косвенной адресации определяются как регистры X,Y и Z.
В различных режимах адресации эти регистры выполняют функции фиксированного смещения, автоматического инкремента и декремента.
-
15
0
Регистр X
7 0
7 0
R27 ($1B)
R26 ($1A)
15
0
Регистр Y
7 0
7 0
R29 ($1D)
R28 ($1C)
15
0
Регистр Z
7 0
7 0
R31 ($1F)
R30 ($1E)
Рис. Б5. X,Y и Z регистры
Файл регистров общего назначения прямо связан с АЛУ. Каждый из регистров способен работать как аккумулятор. Большинство команд выполняются за один такт, при этом из файла выбираются два операнда, выполняется операция и результат вновь возвращается в файл регистров.
Регистровый файл может использоваться и для обычной адресации памяти. Это объясняется тем, что файл регистров располагается по 32 самым младшим адресам пространств данных, и к ним можно обращаться как к обычным ячейкам памяти.
Пространство памяти I/O содержит 64 адреса периферийных функций CPU таких как: регистры управления, таймеры/счетчики, аналого-цифровые преобразователи и другие I/O функции. К памяти I/O можно обращаться непосредственно или как к ячейкам пространства памяти, соответствующим адресам регистра файлов $20 - $5F.
В табл.Б2 представлены регистры области памяти I/O. Для каждого регистра дается адрес при непосредственном к нему обращении и в скобках – при обращении как к ячейке пространства памяти данных.
Таблица Б2
Адрес |
Обознач. |
Бит 7 |
Бит 6 |
Бит 5 |
Бит 4 |
Бит 3 |
Бит 2 |
Бит 1 |
Бит 0 |
|
$3F ($5F) |
SREG |
I |
T |
H |
S |
V |
N |
Z |
C |
|
$3E ($5E) |
SPH |
— |
— |
— |
— |
— |
— |
SP9 |
SP8 |
|
$3D ($5D) |
SPL |
SP7 |
SP6 |
SP5 |
SP4 |
SP3 |
SP2 |
SP1 |
SP0 |
|
$3C ($5C) |
Reserved |
|
||||||||
$3B ($5B) |
GIMSK |
INT1 |
INT0 |
— |
— |
— |
— |
— |
— |
|
$3A ($5A) |
GIFR |
INTF1 |
INTF0 |
|
|
|
|
|
|
|
$39 ($59) |
TIMSK |
OCIE2 |
TOIE2 |
TICIE1 |
OCIE1A |
OCIE1B |
TOIE1 |
— |
TOIE0 |
|
$38 ($58) |
TIFR |
OCF2 |
TOV2 |
ICF1 |
OCF1A |
OCF1B |
TOV1 |
— |
TOV0 |
|
$37 ($57) |
Reserved |
|
||||||||
$36 ($56) |
Reserved |
|
||||||||
$35 ($55) |
MCUCR |
— |
SE |
SM1 |
SM0 |
ISC11 |
ISC10 |
ISC01 |
ISC00 |
|
$34 ($54) |
MCUSR |
— |
— |
— |
— |
— |
— |
EXTRF |
PORF |
|
$33 ($53) |
TCCR0 |
— |
— |
— |
— |
— |
CS02 |
CS01 |
CS00 |
|
$32 ($52) |
TCNT0 |
Таймер/счетчик0 (8-разрядный) |
||||||||
$31 ($51) |
Reserved |
|
||||||||
$30 ($50) |
Reserved |
|
||||||||
$2F ($4F) |
TCCR1A |
COM1A1 |
COM1A0 |
COM1B1 |
COM1B0 |
— |
— |
PWM11 |
PWM10 |
|
$2E ($4E) |
TCCR1B |
ICNC1 |
ICES1 |
— |
— |
CTC1 |
CS12 |
CS11 |
CS10 |
|
$2D ($4D) |
TCNT1H |
Старший байт регистра счетчика Таймера/ счетчика1 |
||||||||
$2С ($4С) |
TCNT1L |
Младший байт регистра счетчика Таймера/ счетчика1 |
||||||||
$2В ($4В) |
OCR1AH |
Старший байт регистра сравнения A выхода Таймера/счетчика1 |
||||||||
$2A ($4A) |
OCR1AL |
Младший байт регистра сравнения A выхода Таймера/счетчика1 |
||||||||
$29 ($49) |
OCR1BH |
Старший байт регистра сравнения B выхода Таймера/счетчика1 |
||||||||
$28 ($48) |
OCR1BL |
Младший байт регистра сравнения B выхода Таймера/счетчика1 |
||||||||
$27 ($47) |
ICR1H |
Старший байт регистра захвата входа Таймера/счетчика1 |
||||||||
$26 ($46) |
ICR1L |
Младший байт регистра захвата входа Таймера/счетчика1 |
||||||||
$25 ($45) |
TCCR2 |
— |
PWM2 |
COM21 |
COM20 |
CTC2 |
CS22 |
CS21 |
CS20 |
|
$24 ($44) |
TCNT2 |
Таймер/счетчик2 (8-разрядный) |
||||||||
$23 ($43) |
OCR2 |
Регистр сравнения выхода Таймера/счетчика2 |
||||||||
$22 ($42) |
ASSR |
— |
— |
— |
— |
AS2 |
TCN2UB |
OCR2UB |
TCR2UB |
|
$21 ($41) |
WDTCR |
— |
— |
— |
WDTOE |
WDE |
WDP2 |
WDP1 |
WDP0 |
|
$20 ($40) |
Reserved |
|
||||||||
$1F ($3F) |
EEARH |
|
EEAR9 |
|||||||
$1E ($3E) |
EEARL |
EEAR7 |
EEAR6 |
EEAR5 |
EEAR4 |
EEAR3 |
EEAR2 |
EEAR1 |
EEAR0 |
|
$1D ($3D) |
EEDR |
Регистр данных EEPROM |
||||||||
$1C ($3C) |
EECR |
— |
— |
— |
— |
EERIE |
EEMWE |
EEWE |
EERE |
|
$1B ($3B) |
PORTA |
PORTA7 |
PORTA6 |
PORTA5 |
PORTA4 |
PORTA3 |
PORTA2 |
PORTA1 |
PORTA0 |
|
$1A ($3A) |
DDRA |
DDA7 |
DDA6 |
DDA5 |
DDA4 |
DDA3 |
DDA2 |
DDA1 |
DDA0 |
|
$19 ($39) |
PINA |
PINA7 |
PINA6 |
PINA5 |
PINA4 |
PINA3 |
PINA2 |
PINA1 |
PINA0 |
|
$18 ($38) |
PORTB |
PORTB7 |
PORTB6 |
PORTB5 |
PORTB4 |
PORTB3 |
PORTB2 |
PORTB1 |
PORTB0 |
|
$17 ($37) |
DDRB |
DDB7 |
DDB6 |
DDB5 |
DDB4 |
DDB3 |
DDB2 |
DDB1 |
DDB0 |
|
$16 ($36) |
PINB |
PINB7 |
PINB6 |
PINB5 |
PINB4 |
PINB3 |
PINB2 |
PINB1 |
PINB0 |
|
$15 ($35) |
PORTC |
PORTC7 |
PORTC6 |
PORTC5 |
PORTC4 |
PORTC3 |
PORTC2 |
PORTC1 |
PORTC0 |
|
$14 ($34) |
DDRC |
DDC7 |
DDC6 |
DDC5 |
DDC4 |
DDC3 |
DDC2 |
DDC1 |
DDC0 |
|
$13 ($33) |
PINC |
PINC7 |
PINC6 |
PINC5 |
PINC4 |
PINC3 |
PINC2 |
PINC1 |
PINC0 |
|
$12 ($32) |
PORTD |
PORTD7 |
PORTD6 |
PORTD5 |
PORTD4 |
PORTD3 |
PORTD2 |
PORTD1 |
PORTD0 |
|
$11 ($31) |
DDRD |
DDD7 |
DDD6 |
DDD5 |
DDD4 |
DDD3 |
DDD2 |
DDD1 |
DDD0 |
|
$10 ($30) |
PIND |
PIND7 |
PIND6 |
PIND5 |
PIND4 |
PIND3 |
PIND2 |
PIND1 |
PIND0 |
|
$0F ($2F) |
SPDR |
Регистр данных SPI |
||||||||
$0E ($2E) |
SPSR |
SPIF |
WCOL |
— |
— |
— |
— |
— |
— |
|
$0D ($2D) |
SPCR |
SPIE |
SPE |
DORD |
MSTR |
CROL |
CPHA |
SPR1 |
SPR0 |
|
$0C ($2C) |
UDR |
Регистр данных UART |
||||||||
$0B ($2B) |
USR |
RXC |
TXC |
UDRE |
FE |
OR |
— |
— |
— |
|
$0A ($2A) |
UCR |
RXCIE |
TXCIE |
UDRIE |
RXEN |
TXEN |
CHR9 |
RXB8 |
TXB8 |
|
$09 ($29) |
UBRR |
Регистр управления скоростью UART |
||||||||
$08 ($28) |
ACSR |
ACD |
— |
ACO |
ACI |
ACIE |
ACIC |
ACIS1 |
ACIS0 |
|
$07 ($27) |
ADMUX |
— |
— |
— |
— |
— |
MUX2 |
MUX1 |
MUX0 |
|
$06 ($26) |
ADCSR |
ADEN |
ADSC |
ADFR |
ADIF |
ADIE |
ADPS2 |
ADPS1 |
ADPS0 |
|
$05 ($25) |
ADCH |
— |
— |
— |
— |
— |
— |
ADC9 |
ADC8 |
|
$04 ($24) |
ADCL |
ADC7 |
ADC6 |
ADC5 |
ADC4 |
ADC3 |
ADC2 |
ADC1 |
ADC0 |
|
$03 ($20) |
Reserved |
|
||||||||
$02 ($22) |
Reserved |
|
||||||||
$01 ($21) |
Reserved |
|
||||||||
$00 ($20) |
Reserved |
|