Например TDA7294

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



Текущее время: Чт июл 09, 2020 13:27:10

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


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



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  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 
Сверлит текстолит когтями
Аватар пользователя

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


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

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

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

Не в сети
 Заголовок сообщения: 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 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

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

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

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


Вернуться наверх
 
Вебинар «Разбор новых уникальных модулей FMAC и CORDIC в микроконтроллерах общего назначения STM32G4» (15.07.2020)

Компания КОМПЭЛ приглашает вас принять участие в вебинаре 15.07.2020, посвященном новому семейству микроконтроллеров общего назначения – STM32G4. Вебинар рассчитан на технических специалистов и тех, кто знаком с основами цифровой обработки сигналов. Мы разберем алгоритм работы CORDIC, а также рассмотрим пример создания цифрового фильтра на базе FMAC.

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

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


Вернуться наверх
 
Как упростить выбор ИП для промышленного применения?

Компания Mean Well выпускает широкий перечень встраиваемых источников питания с креплением на шасси, имеющих, на первый взгляд, схожие характеристики. Статья расскажет о ключевых особенностях выпускаемых семейств и упростит выбор источника питания для промышленного применения.

Читать статью>>
Не в сети
 Заголовок сообщения: 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 
Сверлит текстолит когтями
Аватар пользователя

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


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


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

Карма: 31
Рейтинг сообщений: 410
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3422
Рейтинг сообщения: 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
Сообщений: 579
Рейтинг сообщения: 0
Такое устроит?

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


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


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

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


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

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 579
Рейтинг сообщения: 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 
Собутыльник Кота
Аватар пользователя

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


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

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

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


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

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

_________________
IVL ex UA6PJ OSC_F303&F103


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

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

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

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


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

Карма: 7
Рейтинг сообщений: 109
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 2912
Рейтинг сообщения: 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
Сообщений: 579
Рейтинг сообщения: 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 
Собутыльник Кота
Аватар пользователя

Карма: 7
Рейтинг сообщений: 109
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 2912
Рейтинг сообщения: 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 занят под другие нужды. Ну и да, вопрос не об этом.


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

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


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

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


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

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


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