Пт мар 25, 2022 10:37:06
uint32_t get_weight(void) {
uint32_t adc_value = 0;
TX711_PULSE_RESET();
while (HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_6)) {} // DOUT падает, когда микросхема готова к работе. Проверяем падение
delay_us(10); // ожидание после падения
for (uint8_t i = 0; i < 24; i++) {
TX711_PULSE_SET();
delay_us(25);
adc_value <<= 1;
TX711_PULSE_RESET();
if(HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_6) > 0)
{
adc_value++;
}
delay_us(25);
}
TX711_PULSE_SET();
delay_us(25);
TX711_PULSE_RESET() ;
delay_us(25);
adc_value = adc_value ^ 0x800000;
return adc_value;
}
Сб мар 26, 2022 04:17:27
#define HX711_GAIN 25 // use channel A and x128 gain
#define IGNORE_BITS 4
void HX_delay(void)
{
for (uint32_t i=0; i<5; i++){}
}
void HX711_setup(void)
{
uint32_t i;
(GPIO->P[5]).DOUTSET = HX711_CLK; // enter power-down mode
Delay_ms(1);
(GPIO->P[5]).DOUTCLR = HX711_CLK; // make sure that HX711_CLK is low
// while (!((GPIO->P[4]).DIN & HX711_DOUT)){}
while ((GPIO->P[4]).DIN & HX711_DOUT){} // wait for HX711 ready
for (i=0; i<HX711_GAIN; i++)
{
(GPIO->P[5]).DOUTSET = HX711_CLK; // generate pulses
HX_delay(); // corresponding to the selected gain
(GPIO->P[5]).DOUTCLR = HX711_CLK;
HX_delay();
}
}
uint32_t HX711_getData(void)
{
uint32_t val = 0, i;
while (!((GPIO->P[4]).DIN & HX711_DOUT)){}
while ((GPIO->P[4]).DIN & HX711_DOUT){} // wait for data ready
for (i=0; i<24; i++)
{
(GPIO->P[5]).DOUTSET = HX711_CLK; // generate 24 pulses
val = val << 1;
HX_delay();
(GPIO->P[5]).DOUTCLR = HX711_CLK;
if ((GPIO->P[4]).DIN & HX711_DOUT)
val++;
HX_delay();
}
for ( ; i<HX711_GAIN; i++) // select next measurement
{
(GPIO->P[5]).DOUTSET = HX711_CLK; // generate pulses
HX_delay(); // corresponding to the selected gain
(GPIO->P[5]).DOUTCLR = HX711_CLK;
HX_delay();
}
return(val >> IGNORE_BITS);
}
Как обозначить конец преобразования?
Вт мар 29, 2022 13:10:19
Вт мар 29, 2022 13:58:34
Вт мар 29, 2022 14:04:45