реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Вопрос по датчику, DS18B20
Anjey_N
сообщение Jul 17 2007, 07:48
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 12-01-07
Из: Энергодар Украина
Пользователь №: 24 374



Ещё вопрос.
Для того чтобы записать конфигурационный байт нужно подать последовательно такие команды:
- reset;
- skip rom 0xCC;
- write scratchpad 0x4E;
- записать TH;
- записать TL;
- конфигурация.

Так ли это?
А с завода датчики выпускаются с 12-резолюцией?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 17 2007, 13:22
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Anjey_N @ Jul 17 2007, 06:48) *
Для того чтобы записать конфигурационный байт нужно подать последовательно такие команды:
- reset;
- skip rom 0xCC;
- write scratchpad 0x4E;
- записать TH;
- записать TL;
- конфигурация.
А с завода датчики выпускаются с 12-резолюцией?

Да, всё так, если у вас одно устройство на шине. При подаче питания на датчик устанавливается 12-битное разрешение.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Anjey_N
сообщение Jul 19 2007, 08:07
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 12-01-07
Из: Энергодар Украина
Пользователь №: 24 374



Цитата(Anjey_N @ Jul 17 2007, 10:48) *
Ещё вопрос.
Для того чтобы записать конфигурационный байт нужно подать последовательно такие команды:
- reset;
- skip rom 0xCC;
- write scratchpad 0x4E;
- записать TH;
- записать TL;
- конфигурация.

Так ли это?
А с завода датчики выпускаются с 12-резолюцией?


Ещё один вопрос в догонку, скорее по написанию программы.
В файле драйвера DS18B20 (пусть это будет DS18B20.c) я ввожу новую переменную.
Например, flag_znak=0 если температура положительная и flag_znak=1 если температура отрицательная. А опрашивать эту переменную буду в другом файле (допустим main.c).
Вопрос: как определить переменную (char? int? extern?) и в каком файле?
Go to the top of the page
 
+Quote Post
ALexx
сообщение Jul 19 2007, 08:16
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 22-09-04
Из: Burbach, Germany
Пользователь №: 704



Цитата(Anjey_N @ Jul 19 2007, 11:07) *
Ещё один вопрос в догонку, скорее по написанию программы.
В файле драйвера DS18B20 (пусть это будет DS18B20.c) я ввожу новую переменную.
Например, flag_znak=0 если температура положительная и flag_znak=1 если температура отрицательная. А опрашивать эту переменную буду в другом файле (допустим main.c).
Вопрос: как определить переменную (char? int? extern?) и в каком файле?


1) В файле DS18B20.c определяете переменную:
Код
unsigned char flag_znak;

2) В файле DS18B20.h наряду с прототипами функций работы с термометром должна присутствовать строчка:
Код
extern unsigned char flag_znak;

3) В файле main.c должна присутствовать строчка:
Код
#include "DS18B20.h"
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Jul 19 2007, 10:52
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342



Цитата(ALexx @ Jul 19 2007, 11:16) *
3) В файле main.c должна присутствовать строчка:
Код
#include "DS18B20.h"

Маленькое дополнение: очень желательно, чтобы строчка
Код
#include "DS18B20.h"
присутствовала также и в самом "DS18B20.с", для того чтобы компилятор имел возможность во время компиляции проверить соответствие типов объявленной и реализованной переменных. Иначе, если вы, например, внутри "DS18B20.с" поменяете тип этой переменной с unsigned на signed, но не отразите это в "DS18B20.h", то основная программа (в "main.c") будет по прежнему считать ее unsigned, что чревато крайне трудноуловимыми глюками.


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
Anjey_N
сообщение Jul 19 2007, 18:19
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 12-01-07
Из: Энергодар Украина
Пользователь №: 24 374



Цитата(GrayCat @ Jul 19 2007, 13:52) *
Маленькое дополнение: очень желательно, чтобы строчка
Код
#include "DS18B20.h"
присутствовала также и в самом "DS18B20.с", для того чтобы компилятор имел возможность во время компиляции проверить соответствие типов объявленной и реализованной переменных. Иначе, если вы, например, внутри "DS18B20.с" поменяете тип этой переменной с unsigned на signed, но не отразите это в "DS18B20.h", то основная программа (в "main.c") будет по прежнему считать ее unsigned, что чревато крайне трудноуловимыми глюками.


У меня всё заработало!!!! yeah.gif Большое спасибо!!!!!!!
Go to the top of the page
 
+Quote Post
M@T_F@Q
сообщение Jul 19 2007, 19:18
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 25-01-07
Из: Узбекистан
Пользователь №: 24 765



А можно сюда выложить программку, а то я 3 ночь с датчиком разбираюся.
Go to the top of the page
 
+Quote Post
Tcom
сообщение Jul 20 2007, 05:30
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Вот здесь пример смотри разбирайся
http://electronix.ru/forum/index.php?showt...10934&st=15
Go to the top of the page
 
+Quote Post
Anjey_N
сообщение Jul 20 2007, 07:25
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 80
Регистрация: 12-01-07
Из: Энергодар Украина
Пользователь №: 24 374



Цитата(M@T_F@Q @ Jul 19 2007, 22:18) *
А можно сюда выложить программку, а то я 3 ночь с датчиком разбираюся.


Можно, но попозже, когда со всеми глюками разберусь.
краткие характеристики:
Контроллер ATmega16, кварц на 16 МГц, динамическая индикация, 4-разрядный АЛС с ОА, 1 датчик DS18B20.
Дай ссылку на почтовый ящик, закончу - вышлю.
Go to the top of the page
 
+Quote Post
ALexx
сообщение Jul 20 2007, 07:33
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 22-09-04
Из: Burbach, Germany
Пользователь №: 704



Цитата(GrayCat @ Jul 19 2007, 13:52) *
Маленькое дополнение: очень желательно, чтобы строчка
Код
#include "DS18B20.h"
присутствовала также и в самом "DS18B20.с", для того чтобы компилятор имел возможность во время компиляции проверить соответствие типов объявленной и реализованной переменных. Иначе, если вы, например, внутри "DS18B20.с" поменяете тип этой переменной с unsigned на signed, но не отразите это в "DS18B20.h", то основная программа (в "main.c") будет по прежнему считать ее unsigned, что чревато крайне трудноуловимыми глюками.


Это само собой. Любой с-файл, сопровождаемый h-файлом должен содержать в себе его объявление.
Но за уточнение спасибо.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jul 20 2007, 08:36
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



а при линковке соответствие типов не проверяется?


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 20 2007, 09:26
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата(WHALE @ Jul 20 2007, 12:36) *
а при линковке соответствие типов не проверяется?

Это делает компилятор. Линкер занимается другим.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jul 20 2007, 09:31
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Хорошо.Компилятор должен проверять соответствие типов при обьявлении extern типа из другого файла?


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
M@T_F@Q
сообщение Jul 20 2007, 21:03
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 25-01-07
Из: Узбекистан
Пользователь №: 24 765



Цитата(Anjey_N @ Jul 20 2007, 12:25) *
Можно, но попозже, когда со всеми глюками разберусь.
краткие характеристики:
Контроллер ATmega16, кварц на 16 МГц, динамическая индикация, 4-разрядный АЛС с ОА, 1 датчик DS18B20.
Дай ссылку на почтовый ящик, закончу - вышлю.

ООооо это было бы вобще классно. Мой емайл roman_1986@xnet.uz.
Заранее спасибо!!!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 20 2007, 21:17
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(WHALE @ Jul 20 2007, 11:36) *
а при линковке соответствие типов не проверяется?
ИАР проверяет. Думаю, что и другие должны. Например, если в одном файле определить unsigned char A; а в другом объявить extern signed long A; то линкер выругается. Компилятор не имеет возможности отлавливать такие ошибки, ибо при компиляции второго файла не имеет информации о содержимом (и даже о существовании) первого.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th July 2025 - 05:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.03801 секунд с 7
ELECTRONIX ©2004-2016