Цитата(mempfis_ @ Aug 18 2008, 15:08)

Осталась проблема с sram. Если использовать глобальную переменную crc8_result_table всё работает, если я её делаю статической - не работает

. Мистика. В чём может быть проблема?
Если вы пишете
Код
unsigned char crc8_table_sram(unsigned char *pcBlock, unsigned char len)
{
crc8_result_table = 0xFF;
while (len--)
...
}
, то присвоение crc8_result_table = 0xFF происходит каждый раз при входе в функцию.
А если добавить static:
Код
static unsigned char crc8_result_table = 0xFF;
, то присвоение происходит один раз, при старте программы.
Поэтому для правильного подсчёта надо добавить строчку
Код
unsigned char crc8_table_sram(unsigned char *pcBlock, unsigned char len)
{
static unsigned char crc8_result_table;
crc8_result_table = 0xFF;
while (len--)
...
}
Хотя мне не ясно, зачем здесь глобальная либо статическая переменная...
Если бы я знал, что такое электричество...