Доброго всем времени суток. Обращаюсь к людям,имеющих опыт общения с мелкосхемой от TI CC2520
Понимаю,что тема избитая,но тем не менее.......
Вобщем собрал на коленках две платы с CC2520. Контроллер Мега88,компилятор CVAVR. Обмен даже наладил,криво правда пока,но данные передаются.
Перерабатывал код от TI для MSP. Так вот,функция чтения из регистров по адресам 0x00-0x3F работает нормально как под отладчиком в пошаговом режиме,так и в "реальном времени"(вывожу через UART на терминал). А вот данные с адресов выше 0x40(CHIPID) нормально считываются только под отладчиком в пошаговом режиме. Если вывожу в терминал,то вижу данные через раз,т.е. считываются значения 0x84 и следом за ним 0x80. В датташите сказано Note that when an address with LSB=0 is read the content of the corresponding address with LSB=1 is buffered. If that address is read immediately after within the same MEMRD instruction, the buffered copy is read. In this way a read of a complete 16 bit word is performed as an atomic operation. Т.е. я считываю буферизированное значение во время второго чтения,но я же это делаю не в одной операции чтения,а в разных! Ткните носом куда копать,4 дня бьюсь над этим. И ещё......Функция чтения регистров при помощи инструкции MEMRD
,взятая из примера для MSP не работает
uint8 CC2520_MEMRD8(uint16 addr)
{
uint8 value;
CC2520_SPI_BEGIN();
CC2520_SPI_TXRX(CC2520_INS_MEMRD | HIBYTE(addr));
CC2520_SPI_TXRX(LOBYTE(addr));
value = CC2520_SPI_TXRX(0x00);
CC2520_SPI_END();
return value;
}

работает вот такая,не подскажете в чём причина,что я не так делаю или хотя бы куда копать надо?
unsigned char MEMRD(unsigned int addr,unsigned char *data,unsigned int size)
{
unsigned char status;
CC2520_CS_ENABLE();

status = spi(0x10 | HIBYTE(addr) );
spi(LOBYTE(addr-1));
spi(0);
spi(0);
while(size--)
{
*data++ = spi(0);
}
CC2520_CS_DISABLE();
return status;
}
Буду очень признателен за любые советы.Самому уже в голву ничего не идёт. Компеловская техподдержка(там покупали трансиверы) ничего вразумительного ответить не может,говорит,что должно всё нормально читаться