2014-02-18 96 views
0

我試圖得到一些幫助,因爲我動了別人的代碼(即使用一個PROGMEM)到我的閃存的閃存...從PROGMEM到Arduino的

訪問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] = {}; 

我試圖使用其他的筆記本電腦編譯它,然後它實際上開始編寫它,但我注意到並瞭解到PROGRAM是不可能的。我的修改是否正確?>?

我不能完全說整個代碼都能正常工作,因爲這個原因:(我知道這與AVR-GCC有關,它是由bla bla bla progmem所做的,對吧?一分鐘。)。

代碼: prog_uint8_t imageEights = pgm_read_byte(&(Image [column] [eight]));

如果這不起作用,如何從SRAM中讀取字節呢?

+0

使用PROGMEM意味着數據駐留在閃存中。你可能意味着你想把數據放入SRAM中。但是,也許代碼的作者有充分的理由將數據放入FLASH中,因爲SRAM非常有限?現有代碼有什麼問題?你爲什麼要修改它?它會改善某些事物嗎? –

回答

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 } 
};