Bitte um Hilfe

Die Größe int16_t tdek4 zur Dimensionierung einer Geschwindigkeitsrampe wird zu Beginn eines Programmslauf im main in einer Routine zur Dimensionierung verschiedener Größen mit einem Wert belegt und aktuell nicht weiter verwendet (wurde früher verwendet, aktuell inaktiv, wird später wieder benutzt) bis auf die hier erwähnte Ausgabe. Diese Größe belegt das Ende der dokumentierten Memorymap.

Die Ausgabe der Größe in einer Liste zusammen mit anderen Werten zeigt unerklärliche Änderungen bei verschiedenen Ausgabeaufrufen >>obwohl<< sie, wie erwähnt, nur ein Mal mit einem festen Wert belegt wird. Sie nimmt dabei offensichtlich zufällige, soweit feststellbar stets andere Werte an. Auch ohne Aufruf der erwähnten Dimensionierungsroutine sind diese Schwankungen festzustellen.

Die sinngleiche Größe tdek1 für eine andere Geschwindigkeit liegt in der memorymap weit entfernt; sie ist stabil. Auch die der tdek4 in der memorymap benachbarte Größe - die vor ihr liegt, zeigt nicht solche Veränderungen.

Hier ein Auszug aus dem zugehörigen *.map-File, die "E E E.."-Einschübe markieren entfernte Passagen.

Code:
Archive member included because of file (symbol)
E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E
-------------------------------------------------------------
Allocating common symbols
Common symbol       size              file
iyp12               0x2               R5MoCo.o
kend1t1             0x2               R5MoCo.o
E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E
-------------------------------------------------------------
m34vorlauf          0x2               R5MoCo.o
nenc1               0x1               R5MoCo.o
tdek4               0x2               R5MoCo.o                      <<==
Memory Configuration
Name             Origin             Length             Attributes
text             0x00000000         0x00020000         xr
data             0x00800060         0x0000ffa0         rw !x
eeprom           0x00810000         0x00010000         rw !x
fuse             0x00820000         0x00000400         rw !x
lock             0x00830000         0x00000400         rw !x
signature        0x00840000         0x00000400         rw !x
*default*        0x00000000         0xffffffff
Linker script and memory map
Address of section .data set to 0x800100
LOAD 
E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E
-------------------------------------------------------------
c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm328p.o
                0x000000a2                __vector_22
                0x000000a2                __vector_12
                0x000000a2                __bad_interrupt
                0x000000a2                __vector_6
                0x000000a2                __vector_3
                0x000000a2                __vector_23
                0x000000a2                __vector_25
                0x000000a2                __vector_11
                0x000000a2                __vector_13
                0x000000a2                __vector_17
                0x000000a2                __vector_5
                0x000000a2                __vector_4
                0x000000a2                __vector_9
                0x000000a2                __vector_15
                0x000000a2                __vector_10
                0x000000a2                __vector_16
                0x000000a2                __vector_20
 .text          0x000000a6     0x25d6 R5MoCo.o
                0x00000430                TC2TMR_init
E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E
-------------------------------------------------------------
                0x00000120                __vector_18
                0x0000024a                itxt_rn
                0x000002ee                init_twi_slave
 .text          0x0000267c        0x0 c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodhi4.o)
 .text          0x0000267c        0x0 
E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E
-------------------------------------------------------------
 *(.fini0)
 .fini0         0x0000281e        0x4 c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_exit.o)
 *(.fini0)
                0x00002822                _etext = .
.data           0x00800100      0x3b6 load address 0x00002822
                0x00800100                PROVIDE (__data_start, .)
 *(.data)
 .data          0x00800100        0x0 c:/programme/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm328p.o
 .data          0x00800100      0x3b6 R5MoCo.o
                0x008004b3                Idelta1
                0x008004a8                m12v
                0x008004a9                m12z
E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E
-------------------------------------------------------------
                0x008008a3                m34vorlauf
                0x008008a5                nenc1
                0x008008a6                tdek4                     <<==
                0x008008a8                PROVIDE (__bss_end, .)
                0x00002822                __data_load_start = LOADADDR (.data)
                0x00002bd8                __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit         0x008008a8        0x0
                0x008008a8                PROVIDE (__noinit_start, .)
 *(.noinit*)
                0x008008a8                PROVIDE (__noinit_end, .)
                0x008008a8                _end = .
                0x008008a8                PROVIDE (__heap_start, .)
.eeprom         0x00810000        0x0
 *(.eeprom*)
                0x00810000                __eeprom_end = .
.fuse
 *(.fuse)
 *(.lfuse)
 *(.hfuse)
 *(.efuse)
Ich bitte um Hinweise woran es liegen könnte und wie ich das abstellen kann.

Ist das RAM so voll, dass der Stackpointer überlauft?
Wie könnte ich besser bzw. eindeutig feststellen, was die Ursache ist?

Ich danke im Voraus für eure Tips und Hilfen.