Da das Array Grüesse selbst auch im FLash liegt, kannst du hier nicht
einfach
SendString_P(0,Gruesse[Firma-1]);
über eine Indexoperation zugreifen.
Du musst dir den bewussten Pointer zum Text selbst auch wieder mit einem
pgm_read_word holen
const PGM_P text = pgm_read_word( &Gruesse[Firma-1] );
SendString_P( 0, text );
> Ändere ich in GetGruss int Firma = 1; auf
> int Firma = 2; sendet der µC - wie erwartet - "Guten Tag..."
> an die Com.
Es ist zwar auch in dem Fall falsch, allerdings rettet dich hier der
Optimizer, der den ganzen Zugriff durch das Ergebnis ersetzt (das er ja
kennt, weil es konstant ist). D.h. der Zugriff ins Gruesse Array,
welcher eigentlich ins Flash gehen müsste (es aber nicht tut), findet
überhaupt nicht statt. Und deswegen funkioniert das (und ist ein gutes
Beispiel für: nur weil es funktionioert, muss es noch lange nicht
richtig sein)