Перейти к содержанию
    

Программнай запись во флеш память

Здравствуйте все.

 

Пытаюсь использовать возможность записи во флеш из программы, но почему то при стирании зависает процессор в железе, а в симуляторе нормально.

вот написал код в начале программы

        // начало
        page =__builtin_tblpage(&MyRowData5InFlash[0]);
    offset =__builtin_tbloffset(&MyRowData5InFlash[0]);
        // читаем из флэшки
        TBLPAG = page;
        MyRowDataInRam[0] = __builtin_tblrdl(offset);
        MyRowDataInRam[1] = __builtin_tblrdh(offset);
        // стираем страницу
        NVMCON = 0x4042;
        offset = offset & 0xFF00;
        TBLPAG = page;
        __builtin_tblwtl(offset, 0); // Dummy TBLWT to load address
        __builtin_disi(5); // Disable interrupts for NVM unlock
        __builtin_write_NVM(); // Start write cycle
        // пишем в флешку
        MyRowDataInRam[0] = 0x1234;
       // MyRowDataInRam[1] = 333;
        NVMCON = 0x4001;
        offset = (offset & 0xFFFE);
        TBLPAG = page;
        __builtin_tblwtl(offset, MyRowDataInRam[0]); // Load write latches
        __builtin_tblwth(offset, MyRowDataInRam[1]);
        __builtin_disi(5); // Disable interrupts for NVM unlock
        __builtin_write_NVM(); // Start write cycle
        __builtin_disi(0);
        // конец

может есть еще какие то установки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообщем делюсь своими эксперементальными выводами. Во первых нужно выравнивание константы делать не меньше 256

const  unsigned int MyRowData1InFlash[]  __attribute__((space(prog), aligned(256))) =
{    0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
    0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF...

все функции написал на ассемблере(можно и сишные готовые использовать) . У меня используется АЦП 4 канала. Так вот, после процесса стирания АЦП перестает правильно работать. Нужно перед этим остановить преобразование

AD1CON1bits.ADON = 0;
после включать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...