Почти "победил". Положительные значения считываю без проблем, а вот с отрицательными бяда...
Протокол довольно простой
Код: Выделить всё
ads_output = 0;
byte1=SPI.transfer(0x00); // прием старшего байта
byte1=byte1<<16; // двигаем старший байт влево на два байта
byte2=SPI.transfer(0x00); // прием среднего байта
byte2=byte2<<8; // двигаем средний байт влево на один байт
byte3=SPI.transfer(0x00); // прием младшего байта
ads_output =byte1|byte2|byte3; // собираем три байта данных с АЦП
Код: Выделить всё
long int byte1;
unsigned int byte2;
unsigned int byte3;
long int ads_output= 0;
Код: Выделить всё
if((ads_output&0x800000)==0x800000)
{
ads_output |= 0xff000000;
}
SPI_MODE по умолчанию (должен быть SPI_MODE0).
Что я делаю не так?