从PROGMEM到Arduino的闪存

时间:2014-02-18 17:13:31

标签: arduino avr

我正在尝试获得一些帮助,因为我正在将其他人的代码(使用PROGMEM)移动到我的闪存......

访问http://forum.arduino.cc/index.php?topic=218899.0

所以,这是我的问题: 这是原始代码段:

prog_uint8_t Image[ImageColumns][LEDEights] PROGMEM = {{ 
B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111,     
B11111111  }
  , {
B11111111, B10110111, B10111001, B11111111, B11111111, B11111111, B11111111, B11111111,                 B11111111  }}; 

这是我修改后的代码:

const int Image[ImageColumns][LEDEights] = {};

我尝试使用其他笔记本电脑编译它,然后它实际上很有用,但我注意到并且了解到程序不可能用于外出。我的修订版是否正确?>?

我不能完全说整个代码都能正常工作,因为:(我知道这与AVR-GCC bla bla bla progmem有关,对吗?我刚刚读过它只是为了一分钟。)。

代码:     prog_uint8_t imageEights = pgm_read_byte(&(Image [column] [8]));

如果这不起作用,那么如何从SRAM中读取字节呢?

1 个答案:

答案 0 :(得分:0)

你的问题不是很清楚。如果您只是想使用PROGMEM切换到具有现有代码的闪存,那么您所拥有的内容就是关闭 - ,除非您将该var初始化为空数组。

你是正确的,你不能在运行时更改PROGMEM。

这有效:

int image[][9]= {
  { 
    B11111111,
    B11111111, 
    B11111111, 
    B11111111, 
    B11111111, 
    B11111111, 
    B11111111, 
    B11111111,     
    B11111111  }
  ,
  {
    B11111111, 
    B10110111, 
    B10111001, 
    B11111111, 
    B11111111, 
    B11111111, 
    B11111111, 
    B11111111,                 
    B11111111  }
};