我用ADS1118做采集,输出偶尔跳变,有些时候是在12小时以内跳,有些时候是在48小时以内跳。
采集程序如下:
unsigned char SPI_Read(unsigned char SPI_Cmd)
{
UCB0TXBUF = SPI_Cmd;
while (!(IFG2 & UCB0TXIFG)); // USCI_B0 TX buffer ready?
//IFG2 &= ~UCB0TXIFG;
while (!(IFG2 & UCB0RXIFG)); // USCI_B0 RX buffer ready?
SPI_Data = UCB0RXBUF; // Increment expected slave value
//IFG2 &= ~UCB0RXIFG;
while (UCBUSY & UCB0STAT); // USCI_B0 busy?
return SPI_Data;
}
----------------------------------------------------------------------------------------------------------------
int main(void)
{
while(1)
{
SLV_Data1 = 0;
SLV_Data2 = 0;
SLV_Data3 = 0;
SLV_Data4 = 0;
P3OUT &= ~BIT7; //CS拉低
SLV_Data1 = SPI_Read(0xBB); //1011 1011
SLV_Data2 = SPI_Read(0x0A); //0000 1010
SLV_Data3 = SPI_Read(0x00); //1011 1011
SLV_Data4 = SPI_Read(0x00); //0000 1010
while(P1IN & BIT6); //DATA OUTPUT AND DATA READY
P3OUT |= BIT7; //CS拉低
}
}