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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Применение DS1820 и LCD44780 для начинающих, Подключение нескольких DS1820 на шину.
WHALE
сообщение Jan 22 2007, 12:50
Сообщение #16


Знающий
****

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



[quote name='GDI' date='Jan 22 2007, 11:48' post='199881']
[quote](GDI @ Jan 19 2007, 11:44) *

В CV в примерах есть подобный проект с использованием встроенных библиотек 1-wire и HD44780. А еще там есть встроенные функции задержки delay_ms(N) и delay_us(N) где N - это число милли- или микросекунд, соответственно, доступны при подключении delay.h.

В CV встроенные именно 1-wire и HD44780 - их исходный код не доступен, на Си, по крайней мере, а DS18B20 вполне на Си только расширение у файла .lib. Хорошо когда есть выбор использовать встроенные библиотеки или написанные отдельно... Вот только новичку трудно будет ее портировать на CV, а более искушенные разработчики уходят от CV на IAR или на другие компиляторы...



[quote]Но вот если нужно будет не 2 датчика, а например 16?[/quote]

Я делал проект на 8 датчиков на 8 ножках контроллера - все работало.
[/quote]
В CV все либы доступны именно на С,посмотрите внимательнее.
И насчет портирования с IAR-делал много раз,никаких проблем не доставляет.
Проект SasaVitebsk перегнать в СV-дел примерно на полчаса с перекуром.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 22 2007, 13:20
Сообщение #17


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

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



Цитата
В CV все либы доступны именно на С,посмотрите внимательнее.


Предлагаю посмотреть по-лучше вам и в доказательство приведите, пожалуйста исходный код встроенной функции w1_init(void) или w1_read(void) объявленных в 1wire.h
У меня есть версия 1.24.8b Professional, может у вас Full и там это есть?

Цитата
И насчет портирования с IAR-делал много раз,никаких проблем не доставляет.
Проект SasaVitebsk перегнать в СV-дел примерно на полчаса с перекуром.

Ни сколько не сомневаюсь, но и вы, далеко, не начинающий...smile.gif


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jan 22 2007, 14:25
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(SasaVitebsk @ Jan 22 2007, 12:38) *
7+CRC=8. "Близка к 0" это свойство моего характера - выражаться уклончиво. Я думаю если Вы начнёте экспериментировать, то не дождётесь данного события. smile.gif Хотя, можно не экспериментировать и записать все 7 байт на датчик, как это делаю я.

Я больше чем уверен, что дождусь не только не успев состариться, но при 32 датчиках на шине возможно даже чаю попить не успею smile.gif . CRC - 8бит. Абсолютно независимо от входных данных, над которыми выполнялась свертка, возможно всего 256 вариантов CRC. Так что перебрав в среднем 256 датчиков я получу искомое совпадение. Ес-но могу и не получить, но есть вероятность с первого раза вытащить именно такую пару smile.gif

Цитата
Подожди, так в моём варианте это выглядит ещё проще. Подключите датчик улицы - спасибо - Подключите датчик комнаты - спасибо. Даже кнопку нажимать не надо. Я и так увижу. Да и вообще запрос можно не выдавать. Главное по два не подключать. Но можно и два и три. Просто в данном случае неизвестно как система их индентифицирует. Но это не главное. В этом тоже есть своё преимущество. Разъёмы у меня паралельны. Куда бы я не воткнул уличный датчик - он будет уличный.

Но у меня сейчас по другому. Я просто предлагаю воткнуть нужное колличество датчиков и определить какой куда. Тоже интерактивное обучение. smile.gif А имя присвоить или картинку можно к любому любую.
Так чем Вас не устраивает такая модель?

В моем варианте кнопка то-же не обязательна. В отличие от запроса - он необходим для правильного обучения.
А для определения, что на шине появилось устройство достаточно всего лишь выполнить сброс шины, искать ничего не надо.
Разъемы в таком варианте тоже параллельны, отличие чисто софтовые, в алгоритме обучения. Тот что предлагаю я проще, меньше по объему кода и быстрее. Как идентифицировать датчики включаемые по два и три я так и не понял sad.gif

Цитата
Извини, но фраза "немного разгружает контроллер", - это для меня непереводимая игра слов. biggrin.gif Я считаю что программа написана правильно и конроллер под проект выбран правильно если проц загружен на 80% и более. И то в том случае если проект будет развиваться. Но был у меня проект с загрузкой 98% процессорного времени. Это нормально. Это говорит о том, что программист постарался "выжать из камня всё". Программа пишется один раз, а пользуются ей - длительное время. Поэтому нужно попробовать максимально использовать все возможности.

Критерии загрузки бывают разные. Для меня например нормально когда память программ заполнена на 10% и большую часть времени контроллер спит. Просто задача требует 44в/в и младшие контроллеры не подходят. Можно конечно взять Мегу8 и кучку регистров внешних, но это выйдет дороже, надежность снизится а потребление вырастет. Так что я использую контроллер "неоптимально" и сплю спокойно smile.gif

Цитата
Решение есть всегда. Настоящий программист такого не напишет. smile.gif
biggrin.gif

Да, это я погорячился. Надо было так - "К сожалению решение ПОКА не найдено" smile.gif

Цитата(GDI @ Jan 22 2007, 11:48) *
В CV встроенные именно 1-wire и HD44780 - их исходный код не доступен, на Си, по крайней мере, а DS18B20 вполне на Си только расширение у файла .lib.

1-wire встроенная, HD44780 - вполне открытая - lcd.h, lcd.lib
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 22 2007, 14:37
Сообщение #19


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

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



Признаю, что с HD44780 я ошибся smile.gif


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
boez
сообщение Jan 22 2007, 16:05
Сообщение #20


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

Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868



Поделюсь опытом развешивания по дому DS18B20 в количестве 10 штук (улица, чердак, погреб, по комнатам, к баку с водой, в общем куда токо можно). Естественно в параллель на шину из телефонного кабеля, ибо звезданутая топология по кабелю вышла бы намного хуже. Да и ног могло бы не хватить.
Так вот, я просто сел и поочередно подключая их к устройству (мега8, выход на RS232) давал команду поиска, записывал в экселевскую табличку ID датчика и складывал датчики в рядочек. А потом табличку распечатал и порезал на ленточки, привязав каждую ленточку скотчем к датчику. И все, теперь можно прямо в ту же табличку на экселе вбить названия мест установки датчиков (что я и сделал) и затем пойти развесить их в соответствие с этой таблицей.
То есть просто нужно пронумеровать датчики заранее (кстати на сами датчики можно наносить не ID, а только порядковые номера), а устанавливать их потом уже строго по таблице. И тогда после включения все само заработает.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jan 22 2007, 17:08
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Я же уже говорил моя библиотека удобна если изделие сделано в одном месте, а используется совершенно в другом. Или например сразу поставили 3 датчика, потом добавили ещё 2. Я делаю идентификацию еще проще. Беру и просто их подключаю. Они у меня нумеруются (автоматически). Далее отображаю их значения и по одному беру в руку. smile.gif Температура начинает расти, и я вижу за какой я взялся.

Поскольку данная операция используется только тогда, когда проводится установка новых датчиков, то она не вызывает никакой сложности. Впоследствии, даже если датчики воткнуты не в те разъёмы, нумерация датчиков не меняется.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jan 22 2007, 21:22
Сообщение #22


Знающий
****

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



ЗвиняюсЬ,1-wire в CV действительно встроенная функция,но найти можно,ничего смертельного там нет.
Например:
_w1_search:
push r20
push r21
clr r1
clr r20
ld r26,y
ldd r27,y+1
_w1_write:
ldi r22,8
ld r23,y+
clr r30

разобраться не сложно.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 23 2007, 12:43
Сообщение #23


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

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



2 WHALE именно это я и имел ввиду, что в Си ее нет, но и с асмом можно разобраться, а изменить куда сложнее - по сути надо заново переписать библиотеку на асмовых вставках, тогда уж лучше использовать сразу Си и представленную выше библиотеку.


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


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(GDI @ Jan 23 2007, 13:43) *
2 WHALE именно это я и имел ввиду, что в Си ее нет, но и с асмом можно разобраться, а изменить куда сложнее - по сути надо заново переписать библиотеку на асмовых вставках, тогда уж лучше использовать сразу Си и представленную выше библиотеку.


Библиотеки тоже разные бывают. Так например, моя библиотека для DS вполне стандартная, кроме наличия возможности работы с несколькими датчиками одновременно. Если нет необходимости в этом, то можно воспользоваться любой аналогичной библиотекой.

Но в библиотеке для LCD есть несколько отличий (не знаю как это реализовано в CV). Подключив мою библиотеку Вы можете пользоваться стандартной ф-цией prinf. Таким образом вы можете вывести число с плавающей точкой не думая как бы его преобразовать. Но не только это. Вы можете вывести число в конкретную позицию экрана. Например таким способом
printf("\CR_CURDIRECT\0x25",Cnt1820);
выведем число в первую строку в пятую позицию.

С одной стороны ничего в этом нет, но это на первый взгляд. Таким образом можно в текстовом выде закодировать экранное меню с положением полей вывода информации. То есть при многостраничном меню, - сами меню хранятся в текстовом виде как строки.
Go to the top of the page
 
+Quote Post

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

 


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


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