Цитата(rezident @ Feb 15 2007, 15:42)

Цитата(Dan_Dima @ Feb 15 2007, 17:31)

через дебагер видно что он массив при работе копирунт в RAM. В звязи с этим вопрос как от этого избавиться.
Приведите исходный код для изучения такого странного поведения компилятора. Вы printf/sprintf для работы с этим массивом случайно не используете?
const unsigned char addres[128]= {0x01,0x02,0x5a,0x51,0x52,0x53,0x54,0x56,0x57,0x58, //1
0x59,0x4d,0x50,0x5b,0x03,0x0c,0x0d,0x0e,0x0f,0x33, //2
0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D, //3
0x3e,0x4a,0x41,0x42,0x43,0x44,0x45,0x49,0x46,0x47, //4
0x48,0x4c,0x40,0x4b,0x70,0x71,0x72,0x60,0x6a,0x6b, //5
0x6c,0x6d,0x6e,0x6f,0x74,6,7,8,9,10, //6
1,2,3,4,5,6,7,8,9,10, //7
1,2,3,4,5,6,7,8,9,10, //8
1,2,3,4,5,6,7,8,9,10, //9
1,2,3,4,5,6,7,8,9,10, //10
1,2,3,4,5,6,7,8,9,10, //11
1,2,3,4,5,6,7,8,9,10, //12
1,2,3,4,5,6,7,8}; //13
const unsigned char byte[128]= {0x40,0x00,0x85,0x01,0x00,0x00,0x00,0x03,0x00,0x00, //1
0x00,0x00,0x10,0x00,0x00,0x14,0x28,0x42,0x56,0x0a, //2
0x03,0x03,0x00,0xff,0xff,0x85,0x34,0xa2,0x38,0x98, //3
0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00, //4
0x00,0x00,0x40,0x01,0x82,0x00,0x00,0x00,0x00,0x00, //5
0x00,0x00,0x00,0x00,0x01,6,7,8,9,10, //6
1,2,3,4,5,6,7,8,9,10, //7
1,2,3,4,5,6,7,8,9,10, //8
1,2,3,4,5,6,7,8,9,10, //9
1,2,3,4,5,6,7,8,9,10, //10
1,2,3,4,5,6,7,8,9,10, //11
1,2,3,4,5,6,7,8,9,10, //12
1,2,3,4,5,6,7,8}; //13
void write_spi( char addr,unsigned wr_byte)
{
int i;
mask=128;
SCSN_DOWN;
delay();
//send byte addres ///
for (i=7;i>=0;i--)
{
SSCK_DOWN;
if ((GET_BIT(addr,mask))!=0) { MOSI_1; } else { MOSI_0; };
mask>>=1;
NOP; NOP;
SSCK_UP;
NOP; NOP;
};
//send byte addres ///
delay();
//write byte from nRF
mask=1;
for (i=7;i>=0;i--)
{
SSCK_DOWN;
if ((GET_BIT(wr_byte,mask))!=0) { MOSI_1; } else { MOSI_0; };
mask<<=1;
NOP;NOP;
SSCK_UP;
NOP; NOP;
};
//write byte from nRF
delay();
SCSN_UP;
};
void main( void )
{
unsigned char i;
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1=RSEL3+XT2OFF;
Init_spi();
while(1)
{
for (i=0;i<55;i++)
{
write_spi(addres[i],byte[i]);
};
while(1);
};
// return 0;
}