Страница 1 из 1

Двухпроводная схема ds18b20

Добавлено: Сб дек 14, 2019 16:34:56
alex38779
Мяу коты.

Столкнулся с проблемой, не работает датчик при 2х проводной схеме, постоянно выдает 85. Подтяжка к 3,3В 2,2к.
3х проводная схема работает, с ней нет проблем.

Я вычитал что во время преобразования нужно порт перенастроить в пуш пулл, что бы обеспечить питание.

Собственно код. После подачи команды конвертации, настраиваю на пуш пулл, далее жду время, и далее перенастраиваем вывод обратно в режим опен драин.

Код: Выделить всё

   DS18B20_writeByte(convert_t); //44

	//out pp
	GPIOA->MODER &= ~GPIO_MODER_MODER0;
	GPIOA->MODER |= GPIO_MODER_MODER0_0;
	GPIOA->OTYPER &= ~GPIO_OTYPER_OT_0;	
	GPIOA->BSRR |= GPIO_BSRR_BS_0;

	delay(delay_wait_convert);

	//50MHz out open-drain
	GPIOA->MODER &= ~GPIO_MODER_MODER0;
	GPIOA->MODER |= GPIO_MODER_MODER0_0;
	GPIOA->OTYPER |= GPIO_OTYPER_OT_0;
	GPIOA->OSPEEDR |= GPIO_OSPEEDR_OSPEEDR0;
	GPIOA->BSRR |= GPIO_BSRR_BS_0;

Правда это не помогает. В чем может быть проблема? :? :cry:

Re: Двухпроводная схема ds18b20

Добавлено: Сб дек 14, 2019 16:43:52
BlackKilkennyCat
Очень любопытно увидеть схему, а не код. Потому что изначально 1-wire подразумевает физически 3 провода. Возможно, проблема всё-таки в аппаратной реализации "PowerOver1-Wire"
О, не знал, что так умеет. Странно, как это проглядел.

Re: Двухпроводная схема ds18b20

Добавлено: Сб дек 14, 2019 16:44:50
bevice
а зачем вы передергиваете MODER и остальное?

Код: Выделить всё

GPIOA->BSRR |= GPIO_BSRR_BS_0;
GPIOA->OTYPER &= ~GPIO_OTYPER_OT_0;   // включили Push-pull с выходом в 1
delay(...)
GPIOA->OTYPER  |= GPIO_OTYPER_OT_0; //  включили OD
остальное трогать вам вроде бы не нужно, а еще на пару тактов в HiZ переводите порт

Re: Двухпроводная схема ds18b20

Добавлено: Сб дек 14, 2019 16:47:04
VladislavS
Что это за "судороги"?
1. Зачем MODER дёргать, если значение в нём в результате остаётся то же?
2. OSPEEDR зачем трогать?
3. GPIOA->BSRR |= GPIO_BSRR_BS_0; это вооооообще что? Что ты из BSRR читать собрался?

Впрочем, всё это к датчику мало относится. Берём осциллограф и смотрим шину на соответствие протоколу.

Re: Двухпроводная схема ds18b20

Добавлено: Сб дек 14, 2019 17:04:01
Martin76
alex38779 писал(а):не работает датчик при 2х проводной схеме, постоянно выдает 85. Подтяжка к 3,3В 2,2к.
А ДСка то вообще знает, что ее на паразитное питание перевели?

Re: Двухпроводная схема ds18b20

Добавлено: Сб дек 14, 2019 17:05:49
alex38779
Коты разобрался! Всем спасибо.

оказался один тайминг не правильный.