DS18b20 STM32
22.11.2016, 01:03
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
DS18b20 STM32
Обновление!
Если на проводе висит один датчик, используем упрощенную функцию.
Декларируем интерфейс и объект:
|
Код:
|
One_Wire_StructTypeDef OneWire; |
|
Код:
|
DS1822_single_TypeDef Single_DS1822; |
Сюда будем записывать ошибки работы, если требуется:
|
Код:
|
One_Wire_ErrorTypeDef OneWireError; |
Теперь в теле процедуры определяем интерфейс:
|
Код:
|
OneWire.Delay_Func = delay_us;
OneWire.GPIO_Pin = GPIOB;
OneWire.PIN = GPIO_Pin_8; |
Подключаем датчик к интерфейсу:
|
Код:
|
Single_DS1822.One_Wire_Bus = &OneWire; |
Запускаем конвертирование:
|
Код:
|
OneWireError = DS1822_Start_Conversion_Skip_Rom(&Single_DS1822); |
Ждем конца процедуры:
Забираем результат:
|
Код:
|
OneWireError = DS1822_Read_Skip_Rom(&Single_DS1822); |
|
Код:
|
float T = Single_DS1822.Temp; |
Не забываем создать файлик gpio.h с одной лишь строчкой:
|
Код:
|
#include "stm32f10x.h" |
Таким образом, мы говорим, что работаем с stm32. Так же можно и stm8, avr, pic и что угодно еще подключить, если дефайном перенаправить GPIO_TypeDef;
Теперь работа с цепочкой датчиков:
|
Код:
|
DS1822_TypeDef DS1822_SR[5]; |
Мы зарезервировали в памяти 5 датчиков.
Сюда функция вернет количество найденных датчиков:
|
Код:
|
OneWireError = DS1822_Search_Rom(DS1822_SR, &OneWire, &DevF); |
Здесь важно понимать, что все датчики должны висеть на одном интерфейсе, который пропишется в каждый датчик после выполнения поиска. Поэтому мы указываем этот интерфейс в качестве параметра. Это нужно, чтобы работать с разными цепочками датчиков, подключенных к разным интерфейсам без путаницы.
Программируем разрешение каждого датчика:
|
Код:
|
DS1822_SR[0].Resolution = Res_10bit; |
|
Код:
|
OneWireError = DS1822_Configure(&DS1822_SR[0]); |
Запускаем конвертирование первого найденного датчика:
|
Код:
|
OneWireError = DS1822_Start_Conversion(&DS1822_SR[0]); |
Функция помогает рассчитать время конвертирования:
|
Код:
|
delay_ms(DS1822_GetConversionDelayValue(&DS1822_SR[0])); |
Забираем результат:
|
Код:
|
DS1822_Get_Conversion_Result(&DS1822_SR[0]); |
Конвертируем результат с учетом выбранного ранее разрешения:
|
Код:
|
T = DS1822_ConvertTemp(&DS1822_SR[0]); |
Как видите, мы можем собирать произвольные цепочки датчиков на разных линиях ввода-вывода микроконтроллера и даже не тратить лишнее время на конвертирование с условием, что разрешение датчиков у нас может отличаться.
Уж не знаю, чем вас еще теперь удивить-то?
Ну разве что напомню, что у каждого датчика появится серийный номер, который можно будет найти тут:
Последний раз редактировалось Easyrider83; 24.11.2016 в 19:58.
|
|
|
|
Эти 3 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
|
|
|
22.11.2016, 12:56
|
|
|
Частый гость
Регистрация: 31.10.2009
Сообщений: 18
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Похоже произошла избирательная чистка. Потерялись вопросы.
Easyrider83 Скажите немного о "delay_us", теперь ее в библиотеке не будет?
|
|
|
|
22.11.2016, 13:04
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от Straner
|
|
Easyrider83 Скажите немного о "delay_us", теперь ее в библиотеке не будет?
|
Ей там не место. Вообще и GPIO там тоже не место и вероятнее всего все железо-зависимое я вынесу за пределы кода. Оно должно работать одинаково как на PIC, AVR, STM, так и на ардуино и Rapberi Pi.
Будет прослойка в виде GPIO.h файла, где будет просто ссылка на ресурс, где GPIO будет определен. А задержку вынесем наружу, чтобы проще было подключать ее в RTOS.
|
|
|
|
22.11.2016, 20:13
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: DS18b20 STM32
Сообщение от Easyrider83
|
|
Видите, все очень легко и просто.
|
Сообщение от Easyrider83
|
|
Оно должно работать одинаково как на PIC, AVR, STM, так и на ардуино и Rapberi Pi.
|
"Ардуинокал дэтэктэд!"(с). Надо ещё прилепить классы и замесить на С++, для придания важного вида.
Сообщение от Straner
|
|
Потерялись вопросы.
|
"Потерялась потеряшка. Прошу вернуть вознаграждение."(с)
Сообщение от Straner
|
|
Easyrider83 Скажите немного о "delay_us", теперь ее в библиотеке не будет?
|
Да по хорошему, её вообще не должно быть, ни в каком виде.
|
|
|
|
Сказали "Спасибо" STM32F0
|
|
|
22.11.2016, 20:54
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: DS18b20 STM32
Сообщение от STM32F0
|
|
Если вас раздражает чей-то чрезмерный ум, задумайтесь о своей чрезмерной глупости. (С)
|
|
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
24.11.2016, 20:18
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: DS18b20 STM32
Сообщение от Easyrider83
|
Ждем
|
........................
|
|
|
|
24.11.2016, 20:34
|
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
|
Re: DS18b20 STM32
Easyrider83, Паша, это даже не аурдунья. Выкинь все и не позорься ...
__________________
Осторожно , злой кот
|
|
|
|
24.11.2016, 20:43
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: DS18b20 STM32
dosikus, каждый имеет право на лево, "Не стреляйте в пианиста..." Он полезное дело делает. И если кому-то что-то не нравится, есть его никто не неволит.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
24.11.2016, 20:44
|
|
|
Частый гость
Регистрация: 31.10.2009
Сообщений: 18
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: DS18b20 STM32
STM32F0
О, похоже вы дока в задержках. Подскажите пожалуйста правильный и работающий код задержки на пару микросекунд для F103. И как его проверить при помощи лог. анализатора.
|
|
|
|
24.11.2016, 20:54
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: DS18b20 STM32
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:20.
|
|