Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
25.07.2013, 16:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: ds18b20 + LCd
float ds18b20_temperature(unsigned char *addr)
{
unsigned char resolution;
if (ds18b20_read_spd(addr)==0) return -9999;
resolution=(__ds18b20_scratch_pad.conf_register››5 ) & 3;
if (ds18b20_select(addr)==0) return -9999;
w1_write(0x44); - команда на запуск конвертации
delay_ms(conv_delay[resolution]); - и вот эту задержку надо както заменить...
if (ds18b20_read_spd(addr)==0) return -9999;
w1_init();
return (*((int *) &__ds18b20_scratch_pad.temp_lsb) & ((int) bit_mask[resolution]))*0.0625;
}
вот в библиотеке такой код. Как его лучше изменить чтобы это реализовать.....?
|
|
|
|
25.07.2013, 16:48
|
|
Временная регистрация
Регистрация: 17.07.2006
Сообщений: 70
Сказал спасибо: 20
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
|
Re: ds18b20 + LCd
если ситуация позволяет - то да. А иначе - нужно четко высчитывать задержку в соответствии с частотой контроллера и ждать не менее. А на какой цикл настроен термодатчик? Там несколько вариантов точности преобразований (кажись 4) и соответственно у каждой точности свое время.
Хотя, 750мс самое большое.
|
|
|
|
25.07.2013, 16:52
|
|
Временная регистрация
Регистрация: 17.07.2006
Сообщений: 70
Сказал спасибо: 20
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
|
Re: ds18b20 + LCd
ну, честно говоря, синтаксис С для здесь я не очень помню, в основном пишу на асме. Но должно быть что-то типа
while Port.Number == 0 do {}
те пустой цикл пока порт не станет равным 1
|
|
|
|
25.07.2013, 16:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: ds18b20 + LCd
датчик могу настраивать, библитотека позволяет. Сейчас настроен именно на высокую точность, 4-ую которая 750мс. Частота МК 8МГц. Хотелось бы както так изменить библтотеку чтобы ждать таймером а не delay. Чтобы можно было во время ожидания чтото другое делать.
|
|
|
|
25.07.2013, 16:54
|
|
Временная регистрация
Регистрация: 17.07.2006
Сообщений: 70
Сказал спасибо: 20
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
|
Re: ds18b20 + LCd
При этом нужно следить, чтобы порт был в режиме входа а не выхода.
|
|
|
|
25.07.2013, 16:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: ds18b20 + LCd
Сообщение от aan20132
|
ну, честно говоря, синтаксис С для здесь я не очень помню, в основном пишу на асме. Но должно быть что-то типа
while Port.Number == 0 do {}
те пустой цикл пока порт не станет равным 1
|
Я понял. Попробую, но.... Это же тоже самое получается - мы просто сидим в пустом цыкле. Может можно както на таймер прикрутить. У меня таймер настроен на 1 мс прерывание. Чтобы таймер отсчитал время например 740 мс, проверил состояние порта и если еще не сконвертировало,то..... незнаю что сделать ))
Я буду пробовать как вы сказали(позже, отъехал от рабочего места), но может можно сделать так, чтобы основное тело программы выполнялось, а по истечении 750мс МК проверил состояние датчика и если конвертация готова то считал ее...., а если не готова то незнаю.....
|
|
|
|
25.07.2013, 17:26
|
|
Временная регистрация
Регистрация: 17.07.2006
Сообщений: 70
Сказал спасибо: 20
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
|
Re: ds18b20 + LCd
Ну, почти то же самое. С той лишь разницей, что гарантированно наступит конец преобразования
Как вариант - разбить процедуру чтения температуры на два этапа (две подпрограммы). В первой всё то же до того места, где задержка. Короче говоря, первая просто стартует преобразование.
А вторая подпрограмма просто считывает. А вызывать её или нет можно определить в прерывании таймера проверяя состояние порта. Если линия "на земле", то выход и дальше до следующего прерывания, иначе прочесть. Например, если таймер на 1мс настроен, то считать до 800 и проверять порт.
Последний раз редактировалось aan20132; 25.07.2013 в 17:28.
|
|
|
|
25.07.2013, 17:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: ds18b20 + LCd
Ага понял, попробую завтра и отпишусь! Думаю должно работать
|
|
|
|
25.07.2013, 17:43
|
|
Прописка
Регистрация: 03.11.2010
Адрес: грязань
Сообщений: 153
Сказал спасибо: 58
Сказали Спасибо 74 раз(а) в 35 сообщении(ях)
|
Re: ds18b20 + LCd
Поинтересуюсь, а за какое время отрабатывается вывод чисел на индикаторы через регистры? Я когда себе подобное делал, задержку выполнял с помощью оператора if else и переменной, т.е. на 1 увеличивал значение и при совпадении опрашивал датчик.
|
|
|
|
25.07.2013, 18:04
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: ds18b20 + LCd
Сообщение от miwutka
|
Просто я общаюсь постоянно с неопытными людьми которые работают на всяких заводах типа КИПовцев
|
Чегой ??? Полегче со штампами .
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Подключение LCD (KS0066U) к AVR микроконтроллерам серии mega
|
eez |
Микроконтроллеры, АЦП, память и т.д |
47 |
27.09.2013 14:10 |
ЖКИ и CodeVision: 8-ми битный режим
|
vikpol |
Микроконтроллеры, АЦП, память и т.д |
33 |
09.03.2009 21:55 |
Подключение LCD Nokia 3310
|
vsvetlov |
Микроконтроллеры, АЦП, память и т.д |
0 |
24.09.2007 21:25 |
ATmega8 и DS18B20, не определяется датчик
|
butman |
Микроконтроллеры, АЦП, память и т.д |
21 |
09.06.2007 22:05 |
На чём написано ???
|
Koka |
Proteus, KiCAD и другие ECAD |
18 |
08.10.2006 15:50 |
Часовой пояс GMT +4, время: 02:43.
|
|