Gast
#508927
Hi
Ich habe ein Progamm mit einem Array in welchem die Configuration für
einen Schrittmotorcontroller abgelegt ist. (Trinamic TMC428).
Dieses Array wird nun also beim Start in den RAM des Controllers
geschaufelt. Nach langer Fehlersuche, habe ich herausgefunden, das die
ersten beiden Bytes im Array, zur Laufzeit, scheinbar nicht die Werte
haben, die ich initialisiert habe.
Wenn ich nach direkt nach der Schleife, die das Array rüberschaufelt,
noch einmal die ersten beiden Bytes explizit beschreibe, läuft alles
prima.
Also hier mal ein paar schnippel:
Das Array:
unsigned char driver_table[128]=
{
//Datagrams
0x10, 0x05, 0x04, 0x03, 0x02, 0x06, 0x10, 0x0D, 0x0C, 0x0B, 0x0A, 0x2E,
//Motor0
0x10, 0x05, 0x04, 0x03, 0x02, 0x06, 0x10, 0x0D, 0x0C, 0x0B, 0x0A, 0x2E,
//Motor1
0x10, 0x05, 0x04, 0x03, 0x02, 0x06, 0x10, 0x0D, 0x0C, 0x0B, 0x0A, 0x2E,
//Motor3
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
0x11, 0x11, 0x11, 0x11,
// microstep wave table
0x00,0x02,0x03,0x05,0x06,0x08,0x09,0x0B,0x0C,0x0E,0x0F,0x11,0x12,0x14,0x
15,0x17,
0x18,0x1A,0x1B,0x1C,0x1E,0x1F,0x20,0x22,0x23,0x24,0x26,0x27,0x28,0x29,0x
2A,0x2B,
0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x34,0x35,0x36,0x37,0x38,0x38,0x
39,0x3A,
0x3A,0x3B,0x3B,0x3C,0x3C,0x3D,0x3D,0x3D,0x3E,0x3E,0x3E,0x3F,0x3F,0x3F,0x
3F,0x3F
};
Und die Schleife die es rüberschaufelt.
for(i=128; i<256; i+=2)
Send428(i, 0, driver_table[i-127], driver_table[i-128]);
Wenn ich das nochmal danach mache klappt alles wunderbar:
Send428(128, 0, 0x05, 0x10);
In der Symbol-Datei sehe ich auch nichts auffälliges.
Mein Verdacht ist halt, das irgendwas die ersten beiden bytes
überschreibt.
Vielen Dank
David Knochenhauer