2015-04-23 2 views
0

У меня есть некоторые проблемы с чтением строки из памяти программы:AVR PROGMEM читает мусор вместо строки

const char str[] PROGMEM = "Test string here\r\n"; 

Вот мои печатные процедуры:

/** Send string over UART */ 
void uart_puts(char* str) 
{ 
    while (*str) { 
     uart_tx(*str++); 
    } 
} 

/** Send progmem string over UART */ 
void uart_puts_pgm(const char* str) 
{ 
    char c; 
    while (0 != (c = pgm_read_byte(&str))) { 
     uart_tx(c); 
     str++; 
    } 
} 

Нормальный один работает просто отлично, но progmem one печатает бесконечный поток 0xFF. Где ошибка?

Я работал с progmem раньше, и он всегда работал. Кажется, я не могу найти проблему здесь.

ответ

0

D'ой, я не разыменования указателя там ...

pgm_read_byte(&str) 

должен быть только

pgm_read_byte(str) 

Он сейчас работает.