[2017-08-02 11:53:40] m-s писал(а): elay_ns100 криво работает
Но она-то сама находится в зоне, оптимизируемой по O2! И ее таки вызывают, проверял отладчиком. Собственно и вызовы ее появились при борьбе с этим багом, в попытках привести циклограмму в соответствие даташиту. Заменю на _delay_us(1) для пробы, наверное...
Самое забавное что в Клинфлае это выглядит просто, без всяческих задержек:
#define DISABLE_MPU6000 IOHi(mpuSpi6000CsPin)
#define ENABLE_MPU6000 IOLo(mpuSpi6000CsPin)
static IO_t mpuSpi6000CsPin = IO_NONE;
bool mpu6000WriteRegister(uint8_t reg, uint8_t data)
{
ENABLE_MPU6000;
spiTransferByte(MPU6000_SPI_INSTANCE, reg);
spiTransferByte(MPU6000_SPI_INSTANCE, data);
DISABLE_MPU6000;
return true;
}
bool mpu6000ReadRegister(uint8_t reg, uint8_t length, uint8_t *data)
{
ENABLE_MPU6000;
spiTransferByte(MPU6000_SPI_INSTANCE, reg | 0x80); // read transaction
spiTransfer(MPU6000_SPI_INSTANCE, data, NULL, length);
DISABLE_MPU6000;
return true;
}
и вроде бы работает...