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

Как обращаться с 32-битными адресами EEPROM в PIC18

Уважаемые!

Было одно оборудование на PIC18F27K40, которое работало себе, но понадобилась модернизация, которая задействует EEPROM. И тут выяснилась странная штука.
В адресном пространстве EEPROM занимает поле от 0x310000 до 0x3103FF, т.е минимум 24-битная разрядность. В то же время в описании контроллера соответствующий регистр адреса имеет всего 16 разрядов (на самом деле 11). Более того, MCC выдал вот такую, например, функцию:
 

void DATAEE_WriteByte(uint16_t bAdd, uint8_t bData)
{
	uint8_t GIEBitValue = INTCONbits.GIE;   // Save interrupt enable

    NVMADRH = ((bAdd >> 8) & 0x03);
    NVMADRL = (bAdd & 0xFF);
    NVMDAT = bData;
    NVMCON1bits.NVMREG = 0;
    NVMCON1bits.WREN = 1;
	INTCONbits.GIE = 0;     // Disable interrupts
    NVMCON2 = 0x55;
    NVMCON2 = 0xAA;
    NVMCON1bits.WR = 1;
    // Wait for write to complete
    while (NVMCON1bits.WR)
    {
    }

bAdd - 16 бит.
Попытка использовать эту функцию ни к чему не приводит, нет записи. Но и ошибки нет.

Чего не хватает?

Спасибо!

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


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

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

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

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

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

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

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

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

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

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