Absender: Timo Sandmann
Datum: Mi, 07.10.2009 14:58:25
In-reply-to:
<096FD558C4D20046A1BABE72DFF0C6C33A5FBCEE11@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References:
<000001ca4357$57297170$0200a8c0@mexpnew> <F57D9173-9834-48DD-9B86-5C7A114FEB20@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33A5FBCEE11@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hi Frank, Am 07.10.2009 um 13:40 schrieb Menzel, Frank IT-OO4:
Hallo Timo, zu dem Fehler bei 3. hätte ich wohl doch die Lösung anzubieten: Die Arrays w und o sind als PROGMEM deklariert
ah okay.
, habe den Zugriff darauf später in den defines noch auskommentiert. Bei MCU muss der Zugriff über pgm_read_byte und ...word erfolgen. Dies muss dann also so aussehen, sonst funktioniert es auf dem echten Bot nicht (in dem Patch ist auch noch das Underline hinter pgm_read_byte zu viel):#ifdef PC #define o(ndx) (signed char)o[ndx] #define w(ndx) (signed char)w[ndx] #else #define o(ndx) (signed char)pgm_read_byte(o+(ndx)) #define w(ndx) (signed char)pgm_read_word(w+(ndx))
Das zweite #define hier macht aber so irgendwie keinen Sinn - ein Word lesen und dann nach char casten? Oder ist der Cast hier vielleicht auch falsch?
Ich bin übrigens immer noch entschieden dafür, dass wir die Langversion vom Autor des Codes verwenden, denn unter einem Array "b", "c", "o" und "w" zum Beispiel kann sich niemand etwas vorstellen. Ich weiß nicht, wie viel vom Originalcode du für das Verhalten anpassen musstest und wie aufwendig es dadurch ist, den Schachcode gegen die Variante mit VariablenNAMEN auszutauschen, aber wenn es nicht zu viel Arbeit ist, wäre mir das deutlich lieber.
Gruß, Timo