Hallo,

ich habe ein seltsames Problem und kann es mir nicht erklären. Folgender Code:

Code:
#define MSG_off   9
//...
void LCD_Text_EEPROM (U16 Offset)
{
 U8 Zeichen = eeprom_read_byte ((uint8_t *)(uint16_t)Offset);
 while (Zeichen != 0)
 {
  LCD_Zeichen (Zeichen);
  Offset++;
  Zeichen = eeprom_read_byte ((uint8_t *)(uint16_t)Offset);
 }
}
//...
void LCDMsg (U8 Msg)
{
 U16 Addr = Msg<<4;
 LCD_Text_EEPROM (Addr);
}
//...
int main (void)
//...
switch (GSM_Status)
{
 case 0:  { LCDMsg (MSG_off);
//...
Wenn ich das compiliere erhalte ich als Fehlermeldung: P:\AVR\test.c:1186: relocation truncated to fit: R_AVR_7_PCREL against `no symbol'
Zeile 1186 ist dabei die switch-Zeile.

Bei Google habe ich herausgefunden, dass es was mit der Reihenfolge der eingebundenen Bibliotheken zu tun haben könnte. Die Funktionen LCD_Text_EEPROM und LCD_Zeichen sind tatsächlich in einer externen Bib. Aber egal an welche Reihenfolge ich diese Bib einbinde, der Fehler bleibt. Seltsam ist dass das Programm fehlerfrei compiliert wird und läuft, wenn ich die Zeile LCDMsg (MSG_off); auskommentiere. Seltsamerweise sind davor und danach aber auch aufrufe von LCDMsg. Es scheint nur ein Problem an dieser einen Stelle zu geben. Wie komme ich dem Problem auf die Schliche?

Viele Grüße
Andreas