Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Xmega - чтение из Flash во время записи EEPROM.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
_Артём_
Добрый...
Вопрос такой: возможно ли чтение из flash (команды LPM/ELPM) во время записи в EEPROM.

Код
__root __flash char StringForRam[32]="ABCDEFGH12345678ABCDEFGH12345678";
volatile unsigned char Var[32];
int main( void )
{
    EEPROM_WriteByte(TEST_PAGE_ADDR_1, TEST_BYTE_ADDR_1, TEST_BYTE_1);
    {
        
        unsigned char i;
        for (i=0; i<32; i++) {
            __delay_cycles(100);
            Var[i]=StringForRam[i];
        }
    }
    while (1) {
    }
}

Код вроде рабочий, но допустимо ли так делать?
Сомнения вызваны этим:
Нажмите для просмотра прикрепленного файла

После запуска записи EEPROM NVM переходит в состояние BUSY и чтение из application section блокируется. Или к командам LPM/ELPM это не относится?
bob1
Добрый.
По коду -- Зачем стоят {} после EEPROM_WriteByte(); rolleyes.gif ???
Не нашел где чтение и запись не пересекаются...
_Артём_
Цитата(bob1 @ May 3 2013, 10:46) *
Не нашел где чтение и запись не пересекаются...

Похоже что так - eeprom и flash друг другу не мешают.

Цитата(bob1 @ May 3 2013, 10:46) *
По коду -- Зачем стоят {} после EEPROM_WriteByte(); rolleyes.gif ???

Так написалось...
mempfis_
Цитата(_Артём_ @ May 2 2013, 19:29) *
Добрый...
Вопрос такой: возможно ли чтение из flash (команды LPM/ELPM) во время записи в EEPROM.


Подчёркнутая вами строка подразумевает блокировку flash области приложения во время записи flash опять же области приложения. К eeprom это никакого отношения не имеет.
_Артём_
Цитата(mempfis_ @ May 6 2013, 16:38) *
Подчёркнутая вами строка подразумевает блокировку flash области приложения во время записи flash опять же области приложения. К eeprom это никакого отношения не имеет.

Получается так.
Но
Цитата
Programming any part of the NVM will automatically block

означает - программирование любой части NVM автоматически блокирует..... eeprom - не одна из частей NVM?
zombi
Цитата(_Артём_ @ May 6 2013, 15:41) *
Похоже что так - eeprom и flash друг другу не мешают.

Если было бы иначе то мк вынужден бы был останавливаться на время записи еепром, т.к. не смог бы прочитать даже комаду из флеш.

а подчёркнутая строка вот что означает :
Цитата
Программирование любой части энергонезависимой памяти приведет к автоматическому блокированию:
. программирования любой другой части энергонезависимой памяти.
. загрузки/стиранию всех страничных буферов Flash-памяти и EEPROM.
. чтению энергонезависимой памяти внешним программатором.
. чтению всей энергонезависимой памяти из сектора прикладной программы.

наверное имеют ввиду только флеш
_Артём_
Цитата(zombi @ May 6 2013, 18:00) *
Если было бы иначе то мк вынужден бы был останавливаться на время записи еепром, т.к. не смог бы прочитать даже комаду из флеш.

А ведь так было:
Цитата
19. Writing EEPROM or Flash while reading any of them will not work
The EEPROM and Flash cannot be written while reading EEPROM or Flash, or while executing code in Active mode.
zombi
Цитата(_Артём_ @ May 6 2013, 18:13) *
А ведь так было:

Ни чё се wacko.gif
Это что ж получается. Запись еепром не возможна при работе мк в активном режиме ?
А это где было?
_Артём_
Цитата(zombi @ May 6 2013, 18:51) *
Это что ж получается. Запись еепром не возможна при работе мк в активном режиме ?
А это где было?

Atxmega192A3 / Atxmega256A3 revision B. Из ерраты это. С A1 ещё веселее было:
Цитата
1. Bootloader Section in Flash is non-functional
The Bootloader Section is non-functional, and bootloader or application code cannot reside
in this part of the Flash.
Problem fix/Workaround
None, do not use the Bootloader Section.

9. EEPROM erase and write does not work with all System Clock sources
When doing EEPROM erase or Write operations with other clock sources than the 2 MHz
RCOSC, Flash will be read wrongly for one or two clock cycles at the end of the EEPROM
operation.
Problem fix/Workaround
Alt 1: Use the internal 2 MHz RCOSC when doing erase or write operations on EEPROM.
Alt 2: Ensure to be in sleep mode while completing erase or write on EEPROM. After starting
erase or write operations on EEPROM, other interrupts should be disabled and the device
put to sleep.


Вот я подумал - вдруг в атмеле баг объявили фичей. Но вроде нет - работает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.