Реклама на сайте | Помощь сайту   English version | Free likes 
KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Вопросы и ответы по программированию на C для микроконтроллеров PIC.

Вопрос   Как задать нужные значения для eeprom?

Ответ  Ответ: Наверх [Вернуться в категорию "Вопросы и ответы по программированию на C для микроконтроллеров PIC."]

В ряде случаев нужно предварительно заполнить EEPROM константами, которые будут использоваться в дальнейшем при работе программы. Для этого в исходный текст программы нужно включить следующее определение
(например для заполнения 32 байт, начиная с адреса 0):

__EEPROM_DATA (0x41, 0xA0, 0x42, 0xA1, 0xE0, 0x45, 0xA3, 0xA4);
__EEPROM_DATA (0xA5, 0xA6, 0x4B, 0xA7, 0x4D, 0x48, 0x4F, 0xA8);
__EEPROM_DATA (0x50, 0x43, 0x54, 0xA9, 0xAA, 0x58, 0xE1, 0xAB);
__EEPROM_DATA (0xAC, 0xE2, 0xAD, 0xAE, 0x20, 0xAF, 0xB0, 0xB1);

^^ два символа подчеркивания!!!

Этот текст нужно включать вне какой-либо функции. Память заполняется последовательно, поэтому, если нужно вставить данные по определенному адресу, предыдущие адреса нужно заполнить любой константой.
В результирующий hex-файл будет включена необходимая для записи EEPROM информация и программатор запишет ее.

Есть альтернативный способ, позволяющий записывать данные по любому адресу (код любезно предоставлен Владимиром Раздолиным, rasdolin@mail.ru):

#define __EEPROM_FILL(w) asm(" psect eedata,delta=2,abs,ovrld");
asm(" org 2100h");

asm(" rept 256");
asm(" db " #w);
asm(" endm")

#define __EEPROM_STRING(offs,w) asm(" psect
eedata,delta=2,abs,ovrld");
asm(" org 2100h+"#offs);
asm(" irpc __arg, "#w);
asm(" db
'__arg'");
asm(" endm")

далее в тексте пишем:

__EEPROM_FILL( 0 ); // всю EEPROM заполнили нулями
__EEPROM_STRING( 0x10, my_string ); // по смещению 0x10 записали строку

Не забудьте, при необходимости, изменить размер EEPROM в определении asm(" rept 256");, где 256 - размер в байтах.

[Вопросы и ответы по программированию на C для микроконтроллеров PIC.]

Новости
[06/02/2019] Конференция в МГТУ им. Баумана «Технологии разработки и отладки сложных технических систем» 2019
[09/05/2018] Грандиозная майская распродажа на Gearbest!
[16/05/2017] С 15 по 17 мая в магазине Gearbest проходит грандиозный флэшсейл
[10/05/2017] Так что же такое Спиннер?
[05/12/2016] Новый Год и Рождество с GearBest!
Читать все новости >>
Каталог схем
PDA - интерфейсы и схемы Автозвук Автомобиль Аудио Безопасность Бытовая электроника Видео Видеокамеры Высоковольтные Генераторы Игры, развлечения Измерения Интерфейсы Коммутация Компьютер Медицина Моделирование/ Роботы Музыка Передатчики Питание Получение и накопление данных Предусилители Радио Разное Ремонт Ретро Свет/Лазер/ Cветодиоды/IR Сети Солнечная энергия Сотовая связь ТВ-Мониторы Телефония Управление двигателями Фильтры Цифровые/ Микроконтроллеры Electronic circuits Datasheets Каталог схем Принципиальные схемы
Мicrocontrollers
Drivers for LED dispays Data Logger for iButton LCD-module with MCS-51 Thermometers Dallas Semiconductor Work with EEPROM 24LCxx MSP430 with Flash-memory ATmega169 and AVR-Baterfly CAN interface USB interface
Избранные схемы
Arduino Аудио В Вашу мастерскую Видео Для автомобиля Для дома и быта Для начинающих Зарядные устройства Измерительные приборы Источники питания Компьютер Медицина и здоровье Микроконтроллеры Музыкантам Опасные, но интересные конструкции Охранные устройства Программаторы Радио и связь Радиоуправление моделями Световые эффекты Связь по проводам и не только... Телевидение Телефония Узлы цифровой электроники Фототехника Шпионская техника
Пользователи
Создано аккаунтов:
Сегодня: 0
Вчера: 0
Всего: 146143

Статистика:

 © 2003—2024 «Электронный портал»Обр@тная связь