Например TDA7294

Форум РадиоКот • Просмотр темы - DS18B20 в паре с STM32F103C8
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс май 16, 2021 11:47:55

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 29 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пт май 29, 2020 14:37:34 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Всем привет! Столкнулся с проблемой, сижу туплю, ничего не понимаю. Делал я как-то давно устройство для считывания температуры с нескольких датчиков 1-Wire DS18B20. Изначально оно было сделано на ATmega8. На одной шине сидело несколько датчиков и я по персональному ID стучался к каждому датчику и читал с него температуру. Сначала ID каждого датчика жестко прописывал в прошивку, потом, когда датчики начали выходить из строя, чтобы каждый раз контроллер не перепрошивать прикрутил считывание из ROM датчика его ID и сохранение в EEPROM контроллера. Все работало как часы (только время не показывало :)) ). Но вот решил я пересесть с AVR-ок на STM-ки. Попробовал сначала с одним датчиком через команду игнора адреса датчика (0xCC). Работает. Потом жестко прописал адреса нескольких датчиков в прошивке и посадил их на одну шину. РАБОТАЕТ. Начал прикручивать считывание ID из ROM датчика и .... уперся. ОНО НЕ СЧИТЫВАЕТСЯ. Вернее считывается правильно только первый байт, потом полная ахинея. Я просто в ногдауне. Если все остально еработает - следовательно с протоколом все в порядке, код портирован правильно. Именно считывание адреса из ROM не работает и именно на STM32 (кстати не толко на F103, но и на F303). Не могу понять в чем прикол.

Я намеренно не выкладываю свой код, т.к. имею достаточно опыта, чтобы понять, что криминала там нет и забивать вам голову не обязательно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пт май 29, 2020 14:50:00 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 265
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1570
Рейтинг сообщения: 0
Тупо ткнуть осциллограф и логический анализатор в линию религия не позволяет?


Вернуться наверх
 

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пт май 29, 2020 17:53:05 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Вопрос решился, хотя яснее не стало. Читать 64-байтный ROM из датчика нужно не в массив из 8-байт, в 64 байтную переменную. В чем разница - не понятно, по факту абсолютно теже операции.... В AVR работало :dont_know:


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пт май 29, 2020 18:23:23 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 265
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1570
Рейтинг сообщения: 0
Непогрешимый код в очередной раз превратился в лягушку :) Можете дальше его не показывать, чтобы узнать причину.


Вернуться наверх
 
Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пт май 29, 2020 23:29:00 
Друг Кота
Аватар пользователя

Карма: 88
Рейтинг сообщений: 1050
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 11902
Откуда: ДОНЕЦК (ЮГО-ВОСТОК ua/DPR)
Рейтинг сообщения: 0
АВР - 8 битники.
АРМ 32 битный по умолчанию.
Тонкости компилятора для каждого семейства свои.
8)


Вернуться наверх
 
Интеллектуальные ключи верхнего плеча семейства PROFET™+2 12V от Infineon

Компания Infineon представила новое семейство защищенных силовых ключей PROFET™+2 12V. Изделия объединяют в себе функции диагностики и различные защиты. Ключи PROFET™+2 12V имеют одно из самых низких в отрасли сопротивлений в открытом состоянии RDS(ON) (от 2,6 мОм) и выпускаются в миниатюрном корпусе TSDSO-14 с шагом выводов 0,65 мм. Благодаря функции ReverseON все семейство соответствует строгим требованиям по защите от обратной полярности питания, впервые реализованной в одном чипе.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 09:48:00 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Цитата:
Непогрешимый код в очередной раз превратился в лягушку :) Можете дальше его не показывать, чтобы узнать причину.

Интересно, а если бы я дал вам такой вариант кода:
Код:
char sens_address[8];
one_wire_reset();
one_wire_send(0x33);
for (int i=0; i<8; i++)
sens_address[i]=one_wire_read_rom();


вы бы прям так сразу мне: Ну ты чё, чувак, ну разве можно так делать? Нельзя побайтно в массив читать, надо переменную завести 64-разрядную.

ОК. Привожу код.
Было:
Код:
char sens_address[8];
one_wire_reset();
one_wire_send(0x33);
for (int i=0; i<8; i++)
sens_address[i]=one_wire_read_rom();


char one_wire_read_rom(void)
{
   int bit, i;
   char a=0;
   for (i=0; i<8; i++)
   {
      one_wire_low();
      _delay_us(5);
      one_wire_hight();
      _delay_us(15);
      bit=one_wire_level();
      a|=bit<<i;
      _delay_us(90);
   }
   return a;   
}



Стало:
Код:
long long sens_address

one_wire_reset();
one_wire_send(0x33);
sens_address=one_wire_read_rom();

long long one_wire_read_rom(void)
{
   long long bit=0;
   long long a=0;
   for (int i=0; i<64; i++)
   {
      one_wire_low();
      delay_us(5);
      one_wire_hight();
      delay_us(15);
      bit = one_wire_level();
      a |= bit<<i;
      delay_us(90);
      }
   return a;
   }


первый вариант работает на AVR, на STM32 не работает. Второй вариант работает на STM32, на AVR не пробовал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 10:23:03 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 265
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1570
Рейтинг сообщения: 0
Расположение индейцев в памяти учтено?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 10:23:52 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 456
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3717
Рейтинг сообщения: 0
вы бы прям так сразу мне: Ну ты чё, чувак, ну разве можно так делать? Нельзя побайтно в массив читать, надо переменную завести 64-разрядную.

не надо - тут говнокодик, работает на пиках аврах стм8 стм32...
https://radiokot.ru/forum/viewtopic.php ... 1#p2071361


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 11:10:11 
Держит паяльник хвостом

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 955
Рейтинг сообщения: 0
Такое устроит?

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 11:32:01 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 265
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1570
Рейтинг сообщения: 0
Да чего вы кинулись код то кидать? ТС всего лишь разницу между 8 и 32 битным процом не видит.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 11:35:49 
Держит паяльник хвостом

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 955
Рейтинг сообщения: 0
VladislavS, так ведь и подход абсолютно разный: на аврке нет DMA, там реализовать 1-wire можно только двумя способами: таймер+прерывание или UART. А на STM32 можно таймер с DMA, можно USART с DMA…
// вообще, мегадебильнейший протокол: аппаратно МК не поддерживает, значит, оно нафиг никому не нужно! Я так считаю. И ту древнюю реализацию, код которой скинул, уже давно не поддерживаю, т.к. выкинул из головы эту блажь — использовать идиотские DS18B20, когда есть нормальные датчики, работающие на I2C или SPI!

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 13:25:08 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Цитата:
Да чего вы кинулись код то кидать? ТС всего лишь разницу между 8 и 32 битным процом не видит.


:shock:

"Разрядность" - ну ни фига себе. Надо в словарик записать....

Чем отличаются русский, американский и еврейский форумы?
- на американском форуме вы задаете вопрос и вам дают ответ
- на еврейском форуме вы задаете вопрос и вам задают встречный вопрос
- на русском форуме вы задаете вопрос и вам долго объясняют почему вы такой мудак.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 16:01:21 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 131
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3127
Рейтинг сообщения: 0
ddimochka писал(а):
ОК. Привожу код.
Программное чтение из датчиков?
Почему не USART? https://www.cyberforum.ru/blogs/204791/blog5226.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 16:01:29 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 265
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1570
Рейтинг сообщения: 0
ddimochka, я первым же сообщением под вашим кодом дал информацию для размышления. Это куда полезней, чем просто пережёванное в ротик положить. Я на 95% уверен, что дело в "индейцах".

Почему не USART?
Ещё один :) Вопрос не в этом был!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 17:32:51 
Держит паяльник хвостом
Аватар пользователя

Карма: 4
Рейтинг сообщений: 127
Зарегистрирован: Сб мар 09, 2013 11:29:22
Сообщений: 959
Откуда: 40RUS, Жуков
Рейтинг сообщения: 0
Eddy_Em, DS18B20 не фига не идиотский, пашет себе и пашет.

_________________
IVL ex UA6PJ OSC_F303&F103


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 18:10:53 
Держит паяльник хвостом

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 955
Рейтинг сообщения: 0
240265, очень даже идиотский, т.к. в низшей ценовой категории нет ни одного микроконтроллера, аппаратно поддерживающего 1-wire.
И приходится городить велосипед-квадратные-колеса, абы этот говнопротокол реализовать!

В итоге теряем 1 канал DMA + USART или таймер!
А был бы датчик на I2C или SPI, ничего терять не пришлось бы... Ну или хотя бы взять 5-рублевый терморезистор и повесить его на свободный канал АЦП! Всяко более удачное решение (да и врать будет ничуть не хуже DS18).

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пн июн 01, 2020 23:27:20 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 131
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3127
Рейтинг сообщения: 0
Eddy_Em писал(а):
в низшей ценовой категории нет ни одного микроконтроллера, аппаратно поддерживающего 1-wire.
Они вообще есть? Пока что не не попадались МК аппаратно поддерживающие 1Wire.
Eddy_Em писал(а):
А был бы датчик на I2C или SPI, ничего терять не пришлось бы.
Выводов нужно больше. Допустим нужно подключить 100 датчиков на значительном (десятки метров) расстоянии от МК. У I2C или SPI будет преимущество?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 10:28:28 
Держит паяльник хвостом

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 955
Рейтинг сообщения: 0
Допустим нужно подключить 100 датчиков на значительном (десятки метров) расстоянии от МК. У I2C или SPI будет преимущество?

Конечно: городим по узлу на гроздь датчиков, узлы соединяем по CAN-шине — вуаля! Вот — работает, 5 узлов, CAN-шина, 80 термодатчиков (но я тоже через одно место сделал: по-человечески, надо было брать аналоговые платиновые калиброванные термодатчики и городить на каждой "грозди" АЦП с мультиплексорами по трехпроводной схеме, тогда можно было бы действительно достигнуть точности в 0.01°C в заданном диапазоне).
А 1-wire вам в этом случае вообще никак не поможет, потому что 100 датчиков на десятках метров удаления вы на одну шину не посадите! В случае же с CAN-шиной по витухе пускается и 12..36В напруги, в итоге и связь есть, и питание. А датчики подключаем к узлам кабелями не длинней 2..3м.

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 13:35:21 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 131
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3127
Рейтинг сообщения: 0
Eddy_Em писал(а):
Конечно: городим по узлу на гроздь датчиков, узлы соединяем по CAN-шине — вуаля!
Что конечно? Вы считаете преимуществом кучу дополнительных электронных компонентов?

Eddy_Em писал(а):
А 1-wire вам в этом случае вообще никак не поможет, потому что 100 датчиков на десятках метров удаления вы на одну шину не посадите!
Почему же можно.

Eddy_Em писал(а):
А датчики подключаем к узлам кабелями не длинней 2..3м.
Доп. компоненты, доп. расходы. Они должны быть обоснованными. В таком случае на 100 датчиков понадобится 100 преобразователей CAN<->интерфейс датчика. Получится слишком дорого и громоздко.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 14:32:51 
Открыл глаза

Зарегистрирован: Чт мар 22, 2012 20:28:49
Сообщений: 74
Рейтинг сообщения: 0
Цитата:
ddimochka, я первым же сообщением под вашим кодом дал информацию для размышления. Это куда полезней, чем просто пережёванное в ротик положить. Я на 95% уверен, что дело в "индейцах".



Ды я понял. И так уж размышляю в этом направлении. Но пока в принципе все получается, я не буду лезть в дебри - не до того, хотя на досуге нужно бы плотно разобраться.

Цитата:
Мурик писал(а):
Почему не USART?
Ещё один :) Вопрос не в этом был!!!


USART занят под другие нужды. Ну и да, вопрос не об этом.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: C1c и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y