ups, habe drei kleine Fehler korrigiert:
"char *v" in "unsigned char *v"
"void function (ts_value * value)" in "void function ( const ts_value * 
value)"
"ptr_value = pgm_read_word ( &value->v );" in "ptr_value = (unsigned 
char *) pgm_read_word ( &value->v );"
1  | typedef struct
  | 
2  | {
 | 
3  |   prog_char       x;         // char im Flash
  | 
4  |   prog_char       y;         // char im Flash
  | 
5  |   unsigned char  *v;         // Zeiger im Flash auf char im RAM
  | 
6  | } ts_value;
  | 
7  |  
  | 
8  | unsigned char uc_value = 3;  // hier hin zeigt *v
  | 
9  |                              // struct im Flash
  | 
10  | ts_value PROGMEM  value = { 1, 2, &uc_value };
 | 
11  | 
  | 
12  | void function ( const ts_value *value )
  | 
13  | {                    
 | 
14  |   unsigned char * PROGMEM ptr_value;
  | 
15  |                              // hole Adresse im Flash => Zeiger auf SRAM
  | 
16  |   ptr_value = (unsigned char *) pgm_read_word ( &value->v ); 
  | 
17  |   
  | 
18  |   if ( *ptr_value == 1 )     // s.o.: uc_value = 3;
  | 
19  |   {
 | 
20  |      //code wird ausgeführt
  | 
21  |   }
  | 
22  |   *ptr_value = 4;            // Variable im SRAM soll geändert werden: geht nicht
  | 
23  | }
  | 
Wie bekomme ich es hin, dass ich die Variable im RAM über der Zeiger im 
Flash verändern kann?