Способ доступа к флеш-памяти без использования pgm_read (микроконтроллеры AVR)

Когда вы хотите получить доступ к флэш-памяти, вы должны написать что-то вроде этого:

constexpr uint8_t n PROGMEM = 10;

auto x = pgm_read_byte(&n);

Мне не нравится этот способ доступа к памяти. Я хочу получить доступ к каждому типу памяти одинаково (RAM, флэш, EEPROM …). Я хотел бы написать что-то вроде этого лучше:

constexpr uint8_t n = 10; // constexpr tells the compiler:
// eh! I'm not planning to write in this variable
// so you can put it in flash memory

auto x = n; // copy n into x (but x is uint8_t, not constexpr)

Я наивно пытаюсь реализовать это так:

 namespace Progmem{
class uint8_t{
constexpr uint8_t(::uint8_t x):v{x}{}

// TODO: operator uint8_t() const {return pgm_read_byte(&v);}
// private:
::uint8_t v PROGMEM;
};
}

и проверить это так:

 constexpr Progmem::uint8_t n = 10;

auto x = pgm_read_byte(&(n.v));

Он компилируется, но хранить номер в х не правильно.

Как я могу написать этот класс?

Спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]