STM32 Blue pill RTC

а где там такая задержка? Вы ничего не спутали, у DS18B20 время конверсии сотни миллисекунд, а не микро

uint8_t OneWire::reset(void)
{
	IO_REG_TYPE mask = bitmask;
	volatile IO_REG_TYPE *reg IO_REG_ASM = baseReg;
	uint8_t r;
	uint8_t retries = 125;

	noInterrupts();
	DIRECT_MODE_INPUT(reg, mask);
	interrupts();
	// wait until the wire is high... just in case
	do {
		if (--retries == 0) return 0;
		delayMicroseconds(2);
	} while ( !DIRECT_READ(reg, mask));

	noInterrupts();
	DIRECT_WRITE_LOW(reg, mask);
	DIRECT_MODE_OUTPUT(reg, mask);	// drive output low
	interrupts();
	delayMicroseconds(480);
	noInterrupts();
	DIRECT_MODE_INPUT(reg, mask);	// allow it to float
	delayMicroseconds(70);
	r = !DIRECT_READ(reg, mask);
	interrupts();
	delayMicroseconds(410);
	return r;
}

Не правильно отрабатывает reset. т.е после короткого reseta нет ответа от датчика

Сделал тестовую прошивку в Cube IDE


Проблема в ядре получается.

А вот так работает на STM32 в arduino

Почему ссылка на английском ведет на сайт с каким-то кривым гугло-переводом?

Однако ж двойные стандарты, где-то по ссылкам ходим, а где-то интегрированное видео не смотрим :smiley:

Ну если на контенте заголовок для меня непривлекательный, то чего туда ходить? :slight_smile:

1 лайк

девок гламурных нет, чего туда ходить )))

1 лайк