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

attiny1626, не пишет в eeprom

Не пойму в чем дело. Пытаюсь писать в eeprom, и никаких признаков что пишется не наблюдаю. В гугле есть аналогичный вопрос, без ответа торчит.

void WriteFlash(const void* Src, void* Dst, int Len) {
  while (NVMCTRL.STATUS & 3) {};

  uint8_t* SrcB = (uint8_t*)Src;
  volatile uint8_t* DstB = (uint8_t*)Dst;

  CPU_CCP=0x9D;// unlock for next 4 cycles. ints skipped for 4 cycles
  NVMCTRL.CTRLA=NVMCTRL_CMD_PAGEBUFCLR_gc;

  while (NVMCTRL.STATUS & 3) {};

  for (int i=0; i<Len; i++) {
    *(DstB++) = *(SrcB++);
    }

  CPU_CCP=0x9D;// unlock for next 4 cycles. ints skipped for 4 cycles
  NVMCTRL.CTRLA=NVMCTRL_CMD_PAGEERASEWRITE_gc;

  while (NVMCTRL.STATUS & 3) {};
  }

#define SETTINGS_ADDR 0x1400
WriteFlash ((void*)&settings, (void*)SETTINGS_ADDR, sizeof (struct SETTINGS));

// пробовал и штатную функцию вызывать. эффект аналогичный:
#include <avr/eeprom.h>
eeprom_write_block ((void*)&settings, (void*)0/*SETTINGS_ADDR*/, sizeof (struct SETTINGS));

смотрел дамп в mplab x 5.50. везде ff ff...

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


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

Разобрался. Код этот рабочий, с размером блока напортачил. Плюс IDE в дампе EEPROM не обновляет дамп в реальном времени (обновляет только при запуске отладчика) и затирает EEPROM по умолчанию при программировании.

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


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

4 hours ago, jeka said:

затирает EEPROM по умолчанию при программировании.

Есть FUSE bit под названием EESAVE, который запрещает/разрешает это делать.

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


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

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

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

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

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

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

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

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

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

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