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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Вопрос по датчику, DS18B20
WHALE
сообщение Jul 21 2007, 06:30
Сообщение #16


Знающий
****

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



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


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 21 2007, 07:30
Сообщение #17


Гуру
******

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



Цитата(WHALE @ Jul 21 2007, 09:30) *
Тогда здесь речь об чем?
Видимо не все линкеры ловят. И даже если ловят, то выдают варнинг, который можно не разобравшись задавить. Вот тогда чудеса и начнутся.


--------------------
На любой вопрос даю любой ответ
"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
Anjey_N
сообщение Jul 25 2007, 15:37
Сообщение #18


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

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



Цитата(M@T_F@Q @ Jul 21 2007, 00:03) *
ООооо это было бы вобще классно. Мой емайл roman_1986@xnet.uz.
Заранее спасибо!!!




посмотри почту
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Jul 30 2007, 07:05
Сообщение #19


Местный
***

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



Цитата(WHALE @ Jul 21 2007, 09:30) *
Тогда здесь речь об чем?

Линкер способен словить несоответствия размеров переменных. А каким образом они объявлены -- signed, unsigned или вообще структура -- о том ведомо только компилятору.


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jul 30 2007, 07:50
Сообщение #20


Знающий
****

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



а вот и нет-signed и unsigned отлавливаются также и именно линкером,по крайней мере в CV.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Aug 1 2007, 06:49
Сообщение #21


Местный
***

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



Цитата(WHALE @ Jul 30 2007, 10:50) *
а вот и нет-signed и unsigned отлавливаются также и именно линкером,по крайней мере в CV.
Ну, значит счастливых пользователей CV можно поздравить с тем, что в объектник пишется полная информация о типах a14.gif Но не стоит расслабляться: так дела обстоят не у всех. Не вечно же вы будете пользоваться только CV! wink.gif Так что не стоит забывать хорошую манеру прописывать объявление переменных в .h-файле и включать его в .c-файл с определением этой же переменной.


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 1 2007, 08:16
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
прописывать объявление переменных в .h-файле и включать его в .c-файл с определением этой же переменной.

iar ругается на такое, типа двойное объявление или что то типа того...


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Aug 1 2007, 08:30
Сообщение #23


Знающий
****

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



СV аналогично.А в чем смысл двойного обьявляния и в хидере и в с-файле?


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Igor26
сообщение Aug 1 2007, 08:57
Сообщение #24


Знающий
****

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



Цитата(WHALE @ Aug 1 2007, 12:30) *
СV аналогично.А в чем смысл двойного обьявляния и в хидере и в с-файле?

В хидере объявляют переменную, если хотят, чтоб её можно было видеть из других файлов. При этом, перед объявлением переменной в хидере, пишут ключевое слово extern. При объявлении этой же переменной в .С-файле это ключевое слово не указывается.
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Aug 1 2007, 17:01
Сообщение #25


Местный
***

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



Цитата(GDI @ Aug 1 2007, 11:16) *
iar ругается на такое, типа двойное объявление или что то типа того...

А вот не надо делать двойное объявление wink.gif . А надо различать объявление и выделение памяти.

Файл functions.h:
Код
// ...
extern unsigned char Variable;
// ...

Файл functions.c:
Код
#include "functions.h"
// ...
unsigned char Variable;
// ...

Файл main.c:
Код
#include "functions.h"
// ...
Variable = 1;
  // ...


Так вот в functions.h содержится именно объявление. Просмотрев строку extern unsigned char Variable; компилятор просто "держит в уме", что где-то эта переменная будет, и знает, каким образом с ней обращаться. Включение "functions.h" в main.c не генерирует никакого кода и не выделяет никакой памяти. На это указывает ключевое слово extern.

А вот в functions.c происходит реальное выделение памяти под unsigned char Variable; . Поскольку в данном случае тип переменной согласуется с тем, что было объявлено в "functions.h", то все в порядке.


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
namelos
сообщение Aug 2 2007, 06:29
Сообщение #26


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Цитата(GrayCat @ Aug 1 2007, 10:49) *
Так что не стоит забывать хорошую манеру прописывать объявление переменных в .h-файле и включать его в .c-файл с определением этой же переменной.

доброе время суток. Если я Вас правильно понял, то так можно обьявлять только extern переменые, а не глобальные для одного *.с файла.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Aug 2 2007, 06:33
Сообщение #27


Знающий
****

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



Цитата(namelos @ Aug 2 2007, 10:29) *
доброе время суток. Если я Вас правильно понял, то так можно обьявлять только extern переменые, а не глобальные для одного *.с файла.

Да.
Go to the top of the page
 
+Quote Post
namelos
сообщение Aug 24 2007, 08:35
Сообщение #28


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Доброе время суток всем. Посадил датчик на 50м кабель и подтягивающий резистор 4,7к, но получаю постоянно ошибкуCRC8. Может кто-нибудь подскажет временные задержки delays для нормальной работы. Заранее спасибо.

Сообщение отредактировал namelos - Aug 24 2007, 08:45
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 24 2007, 09:38
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Что значит для нормальной работы? Ставьте такие задержки которые будут у вас работать. Можно еще подтяжку уменьшить, я уменьшал до 1к, но расстояние у меня было 10м


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
namelos
сообщение Aug 24 2007, 09:44
Сообщение #30


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

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



2 GDI. Поменял pullup соппротивление на 2.2к, но считанные данные проверку на CRC8 не проходят, к сожалению, получаю нули. Буду пробовать подходящие timeslotы. Кстати, большое спасибо за идею параллельного опроса датчиков. a14.gif

Сообщение отредактировал namelos - Aug 24 2007, 09:51
Go to the top of the page
 
+Quote Post

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

 


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


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