ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
2 мая
1368304 Топик полностью
Dingo (03.11.2023 05:26, просмотров: 91) ответил reZident на Я извиняюсь за быть может дурацкие подозрения, но разве вы не с оригиналом работаете в виде datasheet ADS1256, а с какими-то чужими исходниками? О.о
Правильно вы выразились - "дурацкие". Мои исходники основываются на datasheet. Возмущаюсь и удивляюсь увиденному в ардуиновских. Мой код пишет и читает регистры, вычитывает значения(картинка тут была), но коэффициент усиления не переключается даже при смене PGA в ADCON. 
void ADC_RegW( uint8_t reg, uint8_t val)
{
	UINT8 reg_a;
	reg_a  = ((reg  & 0x0F) | 0x50);
	SPIx->TRX0 = reg_a; // first byte (command)
	SPIx->TRX1 = 0x00;  // number of REGs
	SPIx->TRX2 = val;  // Third byte (value)
	SPIx_seqLen(3);
	SPIx->Cntrl |= (1<<0);// Start transfer
	wait_clk( 3*T_BYTE+T_TAU(8) ); // t10 interval
	wait_clk( 0*T_BYTE+T_TAU(4) );
}
uint8_t ADC_RegR( uint8_t reg)
{
//	ADC_select0();
	UINT8 reg_a;
	reg_a  = ((reg  & 0x0F) | 0x10);
	SPIx->TRX0 = reg_a;	// first byte
	SPIx->TRX1 =  0x00;	// second
	SPIx_seqLen(2);   // two transactions
	SPIx->Cntrl |= 1<<0;   // Start transfer
	// Wait 2*trx+t6
	wait_clk( 2*T_BYTE+T_TAU(50) );
	// receiving transfer
	SPIx->TRX0 = 0x00;
	SPIx_seqLen(1);
	SPIx->TRX0 = 0x00; // Hold Low level
	SPIx->Cntrl |= 1<<0;   // Start transfer
	wait_clk( T_BYTE+T_TAU(8) );
//	ADC_release0();
	return( SPIx->TRX0 );
}