Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Микроконтроллеры семейства 68HC08/908 адресуют 64 Кбайт внутренней памяти (адреса $0000-FFFF). Распределение адресного пространства задается картой памяти, вид которой определяется объемом внутренней памяти и набором периферийных устройств, входящим в состав данной модели микроконтроллера.
Распределение адресного пространства. Различные модели микроконтроллеров отличаются распределением памяти и составом адресуемых регистров. На рис.14 приведена карта памяти для микроконтроллеров MC68HC908GP32. В адресном пространстве имеется ряд неиспользуемых позиций, которые соответствуют ячейкам памяти, отсутствующим в данной модели микроконтроллеров. При обращении к этим адресам производится перезапуск микроконтроллера (см. раздел 5).
Младшие 64 позиции адресного пространства (адреса $000-$003F) занимают регистры служебных и периферийных модулей (табл. 15). Отметим, что 16-разрядные регистры таймерных модулей TCNТ, TMOD, TCHx занимают по две позиции адресного пространства: младший байт с суффиксом l, старший байт с суффиксом h.
В адресном пространстве ОЗУ располагаются ячейки стека, которые адресуются с помощью указателя стека SP. При установке микроконтроллера в начальное состояние (запуске) содержимое SP принимает значение $00FF, адресуя ячейку ОЗУ с данным адресом. В процессе выполнения программы можно установить любое значение указателя стека с помощью команды TXS, которая загружает в SP содержимое индексного регистра H:X, уменьшенное на 1 (см. раздел 3). После записи байта в стек содержимое SP уменьшается на 1, адресуя следующую незаполненную ячейку стека. Таким образом стек заполняется в направлении уменьшения адресов. Адрес вершины стека (последней заполненной ячейки стека) можно загрузить в регистр H:X с помощью команды TSX (см. раздел 3).
Часть адресного пространства занята ячейками служебного ПЗУ, в котором содержится программу-монитор, которая реализует необходимые процедуры при работе микроконтроллера в режиме отладки (см. раздел 6), обеспечивая возможность контроля его внутреннего состояния. Это масочно-программируемое ПЗУ, содержимое которого записывается в процессе изготовления микроконтроллера.
В старших позициях адресного пространства располагаются вектора начального запуска и прерываний (см. раздел 5).
$0000 $003F | Регистры периферийных и служебных модулей (64 байт) |
$0040 $023F | ОЗУ данных (512 байт) |
$0080 $7FFF | Не используется (32 192 байт) |
$8000 $FDFF | Flash-память (32 256 байт) |
$FE00 | Регистр SBSR |
$FE01 | Регистр SRSR |
$FE02 | Резервировано |
$FE03 | Регистр SBFCR |
$FE04 | Регистр INT1 |
$FE05 | Регистр INT2 |
$FE06 | Регистр INT3 |
$FE07 | Резервировано |
$FE08 | Регистр FLCR |
$FE09 | Регистр BRKh |
$FE0A | Регистр BRKl |
$FE0B | Регистр BRKSCR |
$FE0C | Регистр LVISR |
$FE0D $FE1F | Не используется (19 байт) |
$FE20 $FE52 | ПЗУ – монитор отладки (307 байт) |
$FE53 $FF7D | Не используется (43 байт) |
$FF7E | Регистр FLBPR |
$FF7F $FFDB | Не используется (19 байт) |
$FFDC $FFFF | Вектора запуска и прерываний (36 байт) |
Рис.14. Карта памяти для микроконтроллера MC68HC908GP32
Таблица 15. Адреса регистров периферийных модулей
Адрес | Регистр | Назначение |
$0000 | PORTA | Регистры данных Портов A, B, C, D |
$0001 | PORTB | |
$0002 | PORTC | |
$0003 | PORTD | |
$0004 | DDRA | Регистры направления передачи портов A,B,C,D |
$0005 | DDRB | |
$0006 | DDRC | |
$0007 | DDRD | |
$0008 | PORTE | Регистр данных порта E |
$0009-0B | Не используются | |
$000C | DDRE | Регистры управления портами E, A, C, D |
$000D | PTAPUE | |
$000E | PTCPUE | |
$000F | PTDPUE | |
$0010 | SPCR | Регистры синхронного порта SPI08 |
$0011 | SPSR | |
$0012 | SPDR | |
$0013 | SCC1 | Регистры асинхронного порта SCI08 |
$0014 | SCC2 | |
$0015 | SCC3 | |
$0016 | SCS1 | |
$0017 | SCS2 | |
$0018 | SCDR | |
$0019 | SCBR | |
$001A | KBSCR | Регистры модуляKBI08 |
$001B | KBIER | |
$001C | TBCR | Регистр базового таймера TBM08 |
$001D | INTSCR | Регистр прерываний |
$001E | CONFIG2 | Регистры конфигурации |
$001F | CONFIG1 | |
$0020 | T1SC | Регистры таймерного модуля TIM08-A |
$0021-22 | T1CNTh-l | |
$0023-24 | T1MODh-l | |
$0025 | T1SC0 | |
$0026-27 | T1CH0h-l | |
$0028 | T1SC1 | |
$0029-2A | T1CH1h-l | |
$002B | T1SC | Регистры таймерного модуля TIM08-B |
$002C-2D | T1CNTh-l | |
$002E-2F | T1MODh-l | |
$0030 | T1SC0 | |
$0031-32 | T1CH0h-l | |
$0033 | T1SC1 | |
$0034-35 | T1CH1h-l | |
$0036 | PCTL | Регистры генераторного модуля CGM08 |
$0037 | PBWC | |
$0038-39 | PMSh-l | |
$003A | PMRS | |
$003B | PMDS | |
$003C | ADSCR | Регистры модуля ADC08 |
$003D | ADR | |
$003E | ADCLK |
Стирание и программирование Flash-памяти. Микроконтроллер 68HC908GP32 имеет внутреннюю Flash-память, содержимое которой может стираться и записываться при работе в режиме отладки или в процессе выполнения прикладной программы. Допускается до 10000 циклов стирания-программирования Flash -памяти. При этом необходимое повышенное напряжение обеспечивается внутренним преобразователем, поэтому не требуется подключение дополнительных внешних источников напряжения.
Запись Flash -памяти в режиме отладки производится с помощью команд WRITE, IWRITE, как описано в разделе 6. В процессе выполнения программы возможности стирания и записи Flash -памяти определяются содержимым регистра управления FLCR и регистра FBPR, определяющего адреса блоков, доступных для стирания-записи (рис.16).
Микроконтроллер MC68HC908GP32 содержат один модуль Flash -памяти, который размещается в адресном простанстве в виде единого массива объемом 32256 байт (см. рис.14). Этот модуль состоит из блоков размеров 64 байт, которые делятся на две страницы по 32 байт. Таким образом модуль Flash -памяти в этом микроконтроллере содержит 512 блоков. В исходном состоянии (до записи) содержимое всех ячеек Flash -памяти равно $FF.
HVEN | MASS | ERASE | PGM | ||||
а). FLCR (адрес $FE08) | |||||||
BPR7 | BPR6 | BPR5 | BPR4 | BPR3 | BPR2 | BPR1 | BPR0 / 0 |
б). FBPR (адрес $FF7E) |
Рис.16. Формат содержимого регистров FLCR, FBPR, определяющих режим работы Flash-памяти
Содержимое регистров FLCR, FBPR приведено на рис. 16. Отдельные биты в регистре управления FLCR (рис.16,а) имеют следующее назначение:
HVEN – при установке значения HVEN=1 разрешает подачу повышенного напряжения для стирания блока или записи содержимого страницы Flash -памяти;
MASS – определяет режим стирания: при значении MASS=0 производится стирание всего модуля Flash-памяти, при MASS=1 – стирание адресуемого блока;
ERASE – при установке значения ERASE=1 реализуется режим стирания;
PGM - при установке значения PGM=1 реализуется режим программирования.
После запуска микроконтроллера значения всех битов в регистре FLCR равны 0. Установка этих битов в 1 производится при реализации алгоритмов стирания-записи Flash -памяти. При этом установка значения бита HVEN=1 pазрешается только после задания режима стирания (установка ERASE=1) или программирования (PGM=1). Бит MASS может быть установлен в 1 только при значении бита HVEN=1. Биты ERASE, PGM не могут одновременно иметь значение 1 (реализуется либо режим стирания, либо режим записи). После запуска микроконтроллера, когда устанавливаются значения битов ERASE=PGM=0, реализуется режим обычного считывания Flash -памяти.
Регистр адреса защиты FLBPR (рис. 16,б) содержит биты BPR7-0, определяющие адрес защиты Ap, начиная с которого ячейки Flash -памяти являются защищенными - недоступными для операций стирания-программирования.
Для модели 68HC908GP32 значение этого адреса: Ap = 1(BPR7-0)0000000,
где биты BPR7-0 указывают разряды A14-7 адреса Ap, в котором старший бит A15=1, а семь младших битов A6-0=0000000. Например, при значении BPR7-0 = $05 = 00000101 будет запрещено стирание-программирование ячеек Flash-памяти, начиная с адреса Ap=1 00000101 0000000 = $8280 до $FFFF. При значении BPR7-0=$00 все ячейки Flash -памяти защищены от стирания-программирования, при BPR7-0=$FF все ячейки Flash -памяти доступны для стирания-программирования.
Стирание содержимого Flash -памяти производится следующим образом.
1. Устанавливается значение бита стирания ERASE=1 и значение бита MASS в соответствии с реализуемым режимом стирания: MASS=0 - стирание всего модуля Flash -памяти, MASS=1 – стирание адресуемого блока.
2. С помощью команды STA прозводится запись произвольного байта в любую ячейку, находящуюся в стираемом массиве Flash -памяти: модуле или блоке (адресация массива).
3. Реализуется программная задержка длительностью 10 мкс.
4. Устанавливается значение бита HVEN=1, что обеспечивает подачу повышенного напряжения на ячейки Flash -памяти в стираемом массиве.
5. Реализуется программная задержка длительностью 1 мс при стирании блока (бит MASS=1) или 4 мс при стирании всего модуля (бит MASS=0).
6. Устанавливается значение бита стирания ERASE=0.
7. Реализуется программная задержка длительностью 5 мкс при стирании блока (бит MASS=1) или 100 мкс при стирании всего модуля (бит MASS=0).
8. Устанавливается значение бита HVEN=0 (отключение повышенного напряжения).
9. Реализуется программная задержка длительностью 1 мкс, после которой Flash -память переходит в режим считывания.
Программироование Flash -памяти производится побайтно в пределах одной страницы размером 32 байт. Для этого выполняется следующая процедура.
1. Устанавливается значение бита программирования PGM=1.
2. С помощью команды STA прозводится запись произвольного байта в любую ячейку программируемой страницы.
3. Реализуется программная задержка длительностью 10 мкс.
4. Устанавливается значение бита HVEN=1, что обеспечивает подачу повышенного напряжения на ячейки Flash -памяти программируемой страницы.
5. Реализуется программная задержка длительностью 5 мкс.
6. С помощью команды STA прозводится запись байта в одну из ячеек программируемой страницы.
7. Реализуется программная задержка длительностью 30 мкс.
8. При повторении операций 6,7 производится запись всех байтов на данной странице.
9. Устанавливается значение бита стирания PGM=0.
10. Реализуется программная задержка длительностью 5 мкс.
11. Устанавливается значение бита HVEN=0 (отключение повышенного напряжения).
12. Реализуется программная задержка длительностью 1 мкс, после которой Flash -память переходит в режим считывания.
Дата публикования: 2014-11-02; Прочитано: 692 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!