Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Организация и программирование памяти



Микроконтроллеры семейства 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...