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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
alex38779
Потрогал лапой паяльник
Сообщения: 386
Зарегистрирован: Чт окт 31, 2013 10:54:32
Контактная информация:

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

Сообщение 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:
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

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

Сообщение BlackKilkennyCat »

Очень любопытно увидеть схему, а не код. Потому что изначально 1-wire подразумевает физически 3 провода. Возможно, проблема всё-таки в аппаратной реализации "PowerOver1-Wire"
О, не знал, что так умеет. Странно, как это проглядел.
Последний раз редактировалось BlackKilkennyCat Сб дек 14, 2019 16:50:56, всего редактировалось 1 раз.
Меня здесь больше нет
Аватара пользователя
bevice
Открыл глаза
Сообщения: 54
Зарегистрирован: Сб июн 06, 2009 11:13:56
Контактная информация:

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

Сообщение 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 переводите порт
После нас - хоть потоп (с) Лойсо
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

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

Впрочем, всё это к датчику мало относится. Берём осциллограф и смотрим шину на соответствие протоколу.
Аватара пользователя
Martin76
Друг Кота
Сообщения: 20159
Зарегистрирован: Пт фев 04, 2011 17:57:51
Откуда: Рыбинск

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

Сообщение Martin76 »

alex38779 писал(а):не работает датчик при 2х проводной схеме, постоянно выдает 85. Подтяжка к 3,3В 2,2к.
А ДСка то вообще знает, что ее на паразитное питание перевели?
Аватара пользователя
alex38779
Потрогал лапой паяльник
Сообщения: 386
Зарегистрирован: Чт окт 31, 2013 10:54:32
Контактная информация:

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

Сообщение alex38779 »

Коты разобрался! Всем спасибо.

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

Вернуться в «ARM»