Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Низкоуровневая запись в EEPROM на Си



Рассмотрим вариант низкоуровневой работы с EEPROM, то есть без использования встроенных макросов/функций компиляторов.

Процедура записи в EEPROM состоит из следующих шагов:

1. Ожидаем готовности EEPROM, опрашивая бит EEWE регистра EECR.

2. Устанавливаем адрес в регистре EEAR.

3. Записываем байт данных в регистр EEDR.

4. Устанавливаем основной флаг разрешения записи EEMWE регистра EECE.

5. Устанавливаем флаг разрешения записи EEWE регистра EECE.

Необходимо учитывать, что запись в EEPROM не может производиться одновременно с записью во флэш-память. Если в проекте микроконтроллер обращается к флэш-памяти, то перед записью данных в EEPROM, необходимо проверить флаг SPMEN регистра SPMCR. Он должен быть сброшен в ноль.

Также необходимо учесть, что флаг EEWE должен быть установлен в течение 4 циклов после флага EEMWE. Если в проекте используются прерывания, то на каком-то из этапов, этой последовательности, их нужно запрещать. Это можно сделать или в самом начале или перед установкой флага EEMWE.

В Си коде описанная последовательность будет выглядеть так:

while (EECR & (1< < EEWE));

EEAR = adr;

EEDR = value;

EECR |= (1< < EEMWE);

EECR |= (1< < EEWE);

где adr- это адрес байта в EEPROM, value - данные для записи, EEAR - 16-ти разрядный регистр адреса.

Использовать абсолютный адрес байтов EEPROM неудобно и чаще всего адрес берется у переменной, объявленной в EEPROM. Код в этом случае будет таким:

while (EECR & (1< < EEWE));

EEAR = (int) & data;

EEDR = value;

EECR |= (1< < EEMWE);

EECR |= (1< < EEWE);
где data - переменная объявленная в EEPROM, а & - оператор взятия адреса.

Низкоуровневое чтение из EEPROM на Си

Процедура чтения EEPROM состоит из следующих шагов:

1. Ожидаем готовность EEPROM, опрашивая бит EEWE регистра EECR.

2. Устанавливаем адрес в регистре EEAR.

4. Устанавливаем флаг разрешения чтения EERE регистра EECR.

5. Считываем содержимое регистра данных EEDR.

На Си описанная последовательность будет выглядеть так:

while (EECR & (1< < EEWE));

EEAR = adr;

EECR |= (1< < EERE);

value = EEDR;

Доступ к объявленной в EEPROM переменной:

while (EECR & (1< < EEWE));

EEAR = (int) & data;

EECR |= (1< < EERE);

value = EEDR;

 

 

Упражнение 1.

Задача. К выводу 0 порта B микроконтроллера ATmega32 подключен светодиод. Написать программу мигания светодиода с задержкой 250 мс и запустить программу на отладку в AVR Studio. Рабочая частота МК 4 МГц.

Создать новый проект в среде программирования Code Vision AVR.

Рис. 1.9. Создание проекта в Code Vision AVR

Воспользоваться Code Wizard AVR для автоматической генерации кода.

Рис. 1.10. Использовать мастер генерации кода

Рис. 1.11. Тип МК – ATmega

 

 

Указать мастеру устройство ATmega32.

Рис. 1.12. Выбор чипа МК

Вывод 0 порта B определить как Output.

Рис. 1.13. Конфигурация порта В

Сгенерировать данные настройки.

Рис. 1.14. Генерация настроек

Сохраняем сгенерированные файлы: < Name>.c, < Name>.prj, < Name>.cwp

Рис. 1.15. Сохранение *.c файла

Рис. 1.16. Сохранение *.prj файла

Рис. 1.17. Сохранение *.cwp файла

В появившемся сгенерированном коде добавить подключение библиотеки прерываний, то есть дописать строку #include < delay.h>.

 В бесконечном цикле добавить строки:

     PORTB.0 = 1;

     delay_ms(250);

     PORTB.0 = 0;

     delay_ms(250);

Скомпилировать проект, нажав кнопку  – Build all project files.

Если нет ошибок, то запустить отладку, нажав кнопку  – Run the debugger.

В открывшемся окне AVR Studio 4, нажать кнопку “Open”. В нужной директории выбрать файл с расширением.COFF. Затем появится окно, в котором будет предложено сохранить файл отладки с именем < Имя_файла> _cof. Нажать кнопку «Сохранить».

Далее, будет предложено выбрать отладочную платформу и устройство. Выбрать AVRSimulator и ATmega32 соответственно. Нажать кнопку “Finish”.

Задачи на самостоятельную работу:

1. Реализовать побитовую конъюнкцию числа, записанного в порт А, и «1», сдвинутой влево на пять разрядов. Инвертировать результат и записать в порт С. Порт А сконфигурировать как вход, порт С – как выход. Использовать МК ATmega32 с частотой кварца 4МГц.

2. Число, поступающее в порт В записать в память EEPROM. Из памяти это число передать в порт С, а EEPROM-адрес этого числа записать в порт А. Порт В сконфигурировать как вход, порты А и С – как выходы. Использовать МК ATmega32 с частотой кварца 4МГц.

Контрольные вопросы:

1) Какое ПО (программное обеспечение) используется для написания кода и получения.hex файла в данной лабораторной работе?

2) Какие файлы формируются после компиляции программы? Какие из них нам необходимы в данной лабораторной работе?

3) Что такое МК, сфера его применения?

4) Регистры портов МК. Назначение.

5) Виды ПО для МК

6) Виды эмуляторов для тестирования программ МК. Отличия.

7) RAM/ROMпамять. Назначение.

8) SRAMпамять. Назначение.

9) FLASHпамять. Назначение.

10) EEPROMпамять. Назначение. Регистры EEPROM. Какой регистр используется для записи/чтения из EEPROM?

11) Регистровая память. Назначение.

 

Список использованных источников:

1. Радио-ежегодник, PROTEUS по-русски, 2013 г.

2. Моршнев В.В., Оценка и анализ эффективности архитектуры микроконтроллеров. - «Числом гармонию измерить». – 28 с.

3. Белов А.В., Создаем устройства на микроконтроллерах. – СПб.: Наука и Техника, 2007. – 304 с.: ил.

    4. Лебедев М.Б., CodeVisionAVR: пособие для начинающих. – М.: Додэка – ХХI, 2008. – 592 с.: ил.

5. Роман Абраш, Справочный материал «Книга по работе с WinAVR и AVR Studio» г. Новочеркасск. Выпуск № 4, 2010. – 5 с.

6. Роман Абраш, Справочный материал «Книга по работе с WinAVR и AVR Studio» г. Новочеркасск. Выпуск № 5, 2010. – 4 с.

7. Роман Абраш, Справочный материал «Книга по работе с WinAVR и AVR Studio» г. Новочеркасск. Выпуск № 8, 2010. – 5 с.

 

 


Поделиться:



Последнее изменение этой страницы: 2019-10-05; Просмотров: 333; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.017 с.)
Главная | Случайная страница | Обратная связь