Например TDA7294

Форум РадиоКот • Просмотр темы - Всё по DS18(B/S)20.
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пт июл 10, 2020 05:54:42

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


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



Начать новую тему Ответить на тему  [ Сообщений: 1152 ]     ... , , , 56, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср дек 13, 2017 20:58:00 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 259
Откуда: Чебоксары
Рейтинг сообщения: 0
Все четко заработало)Благодарю всех за содействие :beer: :hunger:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Чт дек 14, 2017 05:43:25 
Друг Кота

Карма: 55
Рейтинг сообщений: 778
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 3745
Откуда: Ижевск
Рейтинг сообщения: 2
Операцию деления можно исключить, умножив код на 160 (0,1ºC), 1600(0,01ºC) и т.д. Младший байт отбрасывается (при усечении) или его 7-бит прибавляется к результату, расположенному в старших байтах, а затем оный отбрасывается.


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

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

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

Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Чт дек 14, 2017 14:00:57 
Модератор
Аватар пользователя

Карма: 151
Рейтинг сообщений: 2320
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15531
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
у меня в термометре нет ни умножения, ни деления. есть только сдвиги.
сначала я вывожу целую часть, потом дробную часть умножаю на 10 сдвигами и сложением, и сразу получаю цифру десятых.

_________________
Мудрость приходит вместе с импотенцией...


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Чт дек 14, 2017 15:25:40 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 259
Откуда: Чебоксары
Рейтинг сообщения: 0
Приветствую!Настало время CRC.теорию вроде как понял, осталось реализовать. 1. Первое, что не понятно это СRC8==100110001, как вообще это вычислено? принимаем это как константу так понял. 2. считываю 56 бит с датчика, куда и как столько данных поместить?в какую-то одну переменную или разбить на байты по 8 бит,то тогда вообще не понятно как мне применить ИЛИ-НЕ с 8 битным байтом и 9 битным СRC8...


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

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

Зарегистрироваться на вебинар>>
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Чт дек 14, 2017 15:44:32 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 89
Рейтинг сообщений: 1719
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15524
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ROMan2947 писал(а):
Настало время CRC
по-моему, настало время изучить документацию как следует. там все написано - и что считывать, и куда, и как CRC считать. и на сайте полно статей, и даже моя есть среди них. И даже с примерами...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


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

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

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Чт дек 14, 2017 15:52:00 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 259
Откуда: Чебоксары
Рейтинг сообщения: 0
Цитата:
по-моему, настало время изучить документацию как следует
:roll:


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


Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Чт дек 14, 2017 16:50:24 
Модератор
Аватар пользователя

Карма: 78
Рейтинг сообщений: 817
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4085
Откуда: Планета Земля
Рейтинг сообщения: 2
Медали: 1
Получил миской по аватаре (1)
Starichok51 писал(а):
нет ни умножения, ни деления
Starichok51 писал(а):
умножаю на 10 сдвигами и сложением

Это как ? 2 предложения и оба друг другу противоречат :)
Когда считанное значение делится на 16, получается всё абсолютно тоже самое - выделение целого и дробной частей. А как уже деление делать, сдвигами или операцией деления - дело тридесятое.
Так что, Вы делаете всё тоже самое, только через ...

_________________
Я мненью вашему вращенье придавал, а осью был - мой детородный орган.


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


Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Чт дек 14, 2017 20:41:03 
Модератор
Аватар пользователя

Карма: 151
Рейтинг сообщений: 2320
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15531
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
ну, не корректно выразился.
нет "явного" умножения, с использованием команды mul.
а умножение косвенное - через сдвиги и сложение.
считанные 2 байта я 4 раза сдвигаю влево (умножение на 16 сдвигами). в одном регистре получается целая часть, в другом регистре остается дробная часть.
сначала вывожу целую часть, потом дробную "умножаю" на 10 и вывожу получившуюся цифру десятых.

в общем-то, дело вкуса каждого человека, как ему делать...

_________________
Мудрость приходит вместе с импотенцией...


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

Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пт дек 15, 2017 07:01:11 
Модератор
Аватар пользователя

Карма: 151
Рейтинг сообщений: 2320
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15531
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
как же я тупанул со своим желанием избавиться от применения команды mul...
это же не 2 байта умножить на 2 байта...
тут надо-то всего 2 строчки - загрузить в регистр число 10 и перемножить 2 регистра.
а я взялся двигать, складывать...

_________________
Мудрость приходит вместе с импотенцией...


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


Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пн янв 01, 2018 22:20:23 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 259
Откуда: Чебоксары
Рейтинг сообщения: 0
С Новым годом всех!!!
Сил нет уже втыкать к код, ошибки не вижу но она есть. Считываю ROM побитно в DATA_REGISTR, первый считанный бит 1 ,хоть и должен быть 0. остальные биты считываются исправно. Откуда берется первая 1?


Код:
int read_bit(void)
{
   int bit=0x00;
   
   BUS_LOW;
   _delay_us(3);
   BUS_HIGT;
   _delay_us(20);
   
   if(ds18b20_PIN&(1<<DQ))
   {
      bit=0x01;
   }
   else
   {
      bit=0x00;
   }
   
   _delay_us(60);

   return bit;
}

void registr(void)
{
   int DATA_REGISTR = 0x00;
   int j = 0x00;
   
   while (j<=(SIZE))
   {
      
      if (DATA_REGISTR&0x80) // 0x80==1<<7
      {
         DATA_REGISTR = DATA_REGISTR << 1;
         DATA_REGISTR |= read_bit();               // enter_bit(&i);
         //DATA_REGISTR ^= 0x131;
      }
      else
      {
         DATA_REGISTR = DATA_REGISTR << 1;
         DATA_REGISTR |= read_bit();           //enter_bit(&i);
      }
      
      j++;
   }

}

void read_ID (void)
{
   ds18b20_init();
   write_ds18b20(READ1_ROM);
   registr();

}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пн янв 01, 2018 22:34:11 
Друг Кота
Аватар пользователя

Карма: 83
Рейтинг сообщений: 879
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4439
Откуда: Минск
Рейтинг сообщения: 0
Не вижу разницы между if и else в функции со странным именем registr.

Непонятно, что такое SIZE, и есть чувство, что цикл лишний раз выполняется.

20мкс пауза при чтении бита - как по мне, многовато.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пн янв 01, 2018 22:52:24 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 259
Откуда: Чебоксары
Рейтинг сообщения: 0
Не вижу разницы между if и else в функции со странным именем registr.

это функция для чтения ,бита и вычисления СRC . там в if коммент.вот и стало без разницы, но это после.
Цитата:
#define SIZE 8 // количество считываемых бит


Добавлено after 6 minutes 49 seconds:
Цитата:
20мкс пауза при чтении бита - как по мне, многовато.


считывание ROM все ОК,да с осциллографом щупал там все допустимо и 15мкс выставлял. Но вот откуда первый бит 1 берется ХЗ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Вт янв 02, 2018 11:31:05 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 259
Откуда: Чебоксары
Рейтинг сообщения: 0
Понимаю ни у кого нет никаких предположении... :cry:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Ср фев 07, 2018 15:47:40 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 27
Зарегистрирован: Вт авг 09, 2011 15:01:44
Сообщений: 271
Откуда: Харьков
Рейтинг сообщения: 0
У меня есть вычислитель crc8 1wire: https://github.com/d-el/PS3604L_Regulat ... /src/crc.c
А вот как использовать: https://github.com/d-el/PS3604L_Regulat ... /ds18TSK.c
Лучше прими весь пакет а затем посчитай контрольную сумму.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пн май 21, 2018 11:22:44 
Вымогатель припоя
Аватар пользователя

Карма: 9
Рейтинг сообщений: 153
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 695
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Starichok51 писал(а):
потом дробную часть умножаю на 10 сдвигами и сложением, и сразу получаю цифру десятых.
А как с округлением? Лично я десятые от этой 18х20 делал по таблице в 16 байт. Четыре младших бита кода температуры - вход в таблицу, на выходе - десятичная цифра, которую следует светить после точки. Можно прямо в ASCII, если надо.

Таблица такая:
Код:
"0112334456678899"

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пн май 21, 2018 11:37:49 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 27
Зарегистрирован: Вт авг 09, 2011 15:01:44
Сообщений: 271
Откуда: Харьков
Рейтинг сообщения: 0
Если нужно округление то как обычно:
temperature = (scratchpad * 10 + (16/2)) / 16; //Деление с округлением
К числителю прибавить половину знаменателя.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пн май 21, 2018 13:48:42 
Модератор
Аватар пользователя

Карма: 151
Рейтинг сообщений: 2320
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 15531
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
afz писал(а):
А как с округлением? Лично я десятые от этой 18х20 делал по таблице в 16 байт.
после умножения на 10 получаем целое число (от 0 до 9), потом смотрим старший бит остатка в дробной части. если есть старший бит, то делаем инкремент получившейся цифры десятых.
а можно и по таблице. с таблицей, пожалуй, будет быстрее, чем умножать и потом анализировать округление.

_________________
Мудрость приходит вместе с импотенцией...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пн май 21, 2018 22:18:16 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 27
Зарегистрирован: Вт авг 09, 2011 15:01:44
Сообщений: 271
Откуда: Харьков
Рейтинг сообщения: 0
[quote="afz"]с таблицей, пожалуй, будет быстрее, чем умножать и потом анализировать округление.

Зависит от архитектуры, нужно уточнять.
Табличная математика для такого простого выражения это вообще каменный век.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пт май 25, 2018 06:38:00 
Вымогатель припоя
Аватар пользователя

Карма: 9
Рейтинг сообщений: 153
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 695
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Вот именно, зависит. На STM32, да даже на больших АВР-ках, программируя на Си, естественно, этой ерундой никто не будет заниматься. А вот на мелких ATtiny, на которых нет даже команды умножения и под которые пишут на Асме - самое то. И этой 18х20 даже полноценное преобразование 2->10 не нужно: считаем, сколько раз можно вычесть 100 (без цикла, поскольку вычесть получится не больше одного раза) - получили старшую цифру, в цикле считаем, сколько раз можно вычесть из остатка 10 - вот вторая цифра, остаток - третья, десятые - по таблице. Ну, еще не забыть, что число может быть и отрицательным, тогда надо запомнить где-то знак минуса и сделать всему числу NEG. Максимум, два десятка машинных команд плюс 16-байтовая таблица, и все.

И вся эта возня, естественно, не ради скорости, а ради компактности кода - подобная задачка легко влезет и в тиньку с 1К флеши (512 машинных команд максимум).

Добавлено after 20 minutes 9 seconds:
Starichok51 писал(а):
после умножения на 10 получаем целое число (от 0 до 9), потом смотрим старший бит остатка в дробной части. если есть старший бит, то делаем инкремент получившейся цифры десятых.
а можно и по таблице. с таблицей, пожалуй, будет быстрее, чем умножать и потом анализировать округление.
Программируя на Си, лучше всего умножить код числа на 100, прибавить к нему 5 и преобразовать в строку, после чего отбросить последнюю цифру, предпоследняя будет десятыми, остальные - целой частью. Да, перед этим надо учесть минус.

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Всё по DS18(B/S)20.
СообщениеДобавлено: Пт май 25, 2018 08:52:53 
Друг Кота

Карма: 55
Рейтинг сообщений: 778
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 3745
Откуда: Ижевск
Рейтинг сообщения: 0
И получите в результате фигню. https://radiokot.ru/forum/viewtopic.php ... 8#p3259348


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

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


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