Mam pytanie dlaczego ten kod działa
a ten kod nie
wiem że problem jest w pętli for ale nie wiem jaki. może funkcja za szybko czyta ??
kilka zmiennych nie jest używanych w tym kodzie ale nie w tym problem.
jedyne co zauważyłem to jeżeli w kodzie mam for to muszę zamienić lsb z msb jakoś inaczej w tablicy są <hmm> dziwne.
int ReadTempCRC8(char a)
{
char i,temp;
uint8_t data[9];
unsigned char msb, lsb;
char tab[17]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
temp=0;
ds=a;
owire_reset();
owire_write_byte(0xCC);
owire_write_byte(0x44);
_delay_ms(250);
owire_reset();
owire_write_byte(0xCC);
owire_write_byte(0xBE);
i=0;
data[0] = owire_read_byte();
data[1] = owire_read_byte();
data[2] = owire_read_byte();
data[3] = owire_read_byte();
data[4] = owire_read_byte();
data[5] = owire_read_byte();
data[6] = owire_read_byte();
data[7] = owire_read_byte();
data[8] = owire_read_byte();
if (data[8]==CountCRC(0x00,data,8))
{
//if CRC OK
lsb=data[0];
msb=data[1];
numb = (lsb+(msb*256))/16;
return numb;
}
else
{
//if CRC BAD
return 0x01;
}
}a ten kod nie
int ReadTempCRC8(char a)
{
char i,temp;
uint8_t data[9];
unsigned char msb, lsb;
char tab[17]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
temp=0;
ds=a;
owire_reset();
owire_write_byte(0xCC);
owire_write_byte(0x44);
_delay_ms(250);
owire_reset();
owire_write_byte(0xCC);
owire_write_byte(0xBE);
i=0;
for (i=0;i<9;i++)
{
data[i]=owire_read_byte();
if (data[8]==CountCRC(0x00,data,8))
{
//if CRC OK
lsb=data[0];
msb=data[1];
numb = (lsb+(msb*256))/16;
return numb;
}
else
{
//if CRC BAD
return 0x01;
}
}
wiem że problem jest w pętli for ale nie wiem jaki. może funkcja za szybko czyta ??
kilka zmiennych nie jest używanych w tym kodzie ale nie w tym problem.
jedyne co zauważyłem to jeżeli w kodzie mam for to muszę zamienić lsb z msb jakoś inaczej w tablicy są <hmm> dziwne.
