Перейти к содержанию
    

Вечный вопрос AVR vs DS1821

Доброго Вам времени суток,

Есть Мега32 и датчик DS1821

Где только не постил темы, где только не читал уже имеющиеся сабжи, но НИГДЕ не находил примера

 

КАК ОСУЩЕСТВИТЬ получение температуры с датчика DS1821 на порте D6 микроконтроллера в переменную Temperature

 

Хоть на си хоть на асме, на чём нибуть

Сам пишу на си в асме 0, но если кто знает как сделать на асме, пожалуйста, ПИШИТЕ!

(вставлю в #asm....#endasm)

 

 

Очень надеюсь на Вашу помощь в написании прошивки для Mega32 на си для получения температуры с датчика DS1821 на порту D6

 

Я неоднократно в поиске на этом форуме находил сообщения вроде "УРА получилось законектить DS1821", но авторы отмалчиваются о полученном коде

 

Сам я нашёл сайт http://pinokio3000.narod.ru/sourches/Dallas_1Wire.htm

Но ничего не понял

 

 

Для непосвящённых

DS1821 Это не есть DS1820. У DS1821 шина 1wire поддерживается не полностью, у 21 нет адресса, ->DS1820.h не годится

PS Это последний форум где я надеюсь получить ответ!

Изменено пользователем shev377

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашёл интересный пример со своей библиотечкой, но я не понял Где определяется порт 1wire DS1821 устройства

Если я не ошибаюсь там происходит сканирование Всего порта D, если это так, то как упростить до вышеупомянутых элементарных условий?

1w1821___________.rar

Изменено пользователем shev377

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но я не понял Где определяется порт 1wire DS1821 устройства

// определение портов для шины 1-wire
#define OW_PORT PORTD
#define OW_DDR  DDRD
#define OW_PIN  PIND

#ifdef  OW_MULTIBUS
#define OW_BUS_NUM    4
#define OW_BUS1    PD3
#define OW_BUS2    PD4
#define OW_BUS3    PD5
#define OW_BUS4    PD6
#define OW_BUS_MASK    ((1 << OW_BUS1)|(1 << OW_BUS2)|(1 << OW_BUS3)|(1 << OW_BUS4))

#else
#define OW_BUS  PD3
#define OW_BUS_MASK    (1 << OW_BUS)
#endif

Как можно не найти? Даже с комментарием на русском.

Если датчик один и соответственно OW_MULTIBUS не задефайнено, то шина на PORTD выводе PD3. Можете изменить под себя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

Сам я нашёл сайт http://pinokio3000.narod.ru/sourches/Dallas_1Wire.htm

Но ничего не понял

Бяда... Опишите Ваши непонятки, а то непонятно, с какого места начинать - с азбуки или с алфавита.

Для непосвящённых

DS1821 Это не есть DS1820. У DS1821 шина 1wire поддерживается не полностью, у 21 нет адресса, ->DS1820.h не годится

В даташиты пробовали заглянуть и сравнить? Выкидываете из сорцов для DS1820 всякие SEARCH_ROM, MATCH_ROM, добавляете специфику DS1821 - вот и всё.

PS Это последний форум где я надеюсь получить ответ!

Вероятно, в тырнете не нашлось человека с готовой прогой, обеспечивающей "получение температуры с датчика DS1821 на порте D6 микроконтроллера в переменную Temperature". У меня её тоже нет.

 

ЗЫЖ оно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Похоже это Вы мне писали вчера:)

Попытаюсь объяснить еще здесь.

Исходники - это библиотека для работы с датчиком а не готовый пример для компиляции.

Библиотека имеет три основные функции для групповой работы или с одним датчиком. Это

 

void OW_SendByte(char data); // посылка байта в линию

char OW_DetectPresence(void);// сброс и определение устройства на шине

char OW_ReceiveByte(void); // прием байта с линии

 

Теперь, к примеру, открываем даташит на DS1821 и смотрим ЧТО НУЖНО ПОСЛАТЬ И ПРИНЯТЬ В-ИЗ ДАТЧИК(А) ЧТОБЫ ПОЛУЧИТЬ ТЕМПЕРАТУРУ. Все довольно просто:)

 

Если и теперь Вам не хочется шевелить извилинами в моске, пишите мне на почту, за определённую сумму я с удовольствием пошевелю своими:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак, как я понял,

1) Цепляю Вашу библиотеку OneWire

2) дальше копирую функцию void OW_ReceiveByte(char volatile *ow_data);

и выполнив её я получу в переменной ow_data например 00000000 (при 0 градусов)?

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак, как я понял

Не совсем.:) Сначала изучаете даташит на датчик. За тем понимаете, ЧТО (какое сочетание байтов) нужно послать в датчик, чтобы прочитать температуру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

post-58006-1276956105_thumb.png

что это за AAh куда их слать, как слать

 

Кто-нибудь возьмётся написать кусок кода за небольшое вознаграждение?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

post-58006-1276956105_thumb.png

что это за AAh куда их слать, как слать

1 Там написано: Чтение последнего конвертированного значения температуры из температурного регистра- AAh -Мастер (MCU) получит 8-бит температурного значения из DS1821

2 Слать надо в DS1821

3.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь возьмётся написать кусок кода за небольшое вознаграждение?
Что такое в вашем понятии "небольшое вознаграждение"? Операция File->Open стоит 150 евро. за 250, думаю, можно написать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Припоминаю, у 1821-ого есть важное отличие от 1820-ых. Вообще, 1821 это термостат, фактически автономный. И чтобы он вошёл в режим общения/программирования нужно передёрнуть его питание и подать какие-то команды, возможно за некоторый интервал времени. И если эти команды не подать, то он "превратится" в термостат и линия Din/Dout будет работать только на выход (управление нагрузкой).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое в вашем понятии "небольшое вознаграждение"? Операция File->Open стоит 150 евро. за 250, думаю, можно написать.

 

Смотря чего 250 е или р

PS готовый девайс от мастеркита стоит 900 р

 

 

 

И чтобы он вошёл в режим общения/программирования нужно передёрнуть его питание и подать какие-то команды, возможно за некоторый интервал времени. И если эти команды не подать, то он "превратится" в термостат и линия Din/Dout будет работать только на выход (управление нагрузкой).

 

DS1821 Поставляется в режиме цифрового термометра по типу 1820, но без личного адреса, а в режим термостата датчик переводится при первом программировании, затем вывести датчик из режима термостата практически не реально

 

 

1 Там написано: Чтение последнего конвертированного значения температуры из температурного регистра- AAh -Мастер (MCU) получит 8-бит температурного значения из DS1821

 

С трудом переварил эту фразу :unsure:

 

Ваши ссылки на пдфки я посмотрел, в одной пдфке мне попалась ссылка на один сайт, там я полазил и нашёл что-то похожие на пример DS1821+пример программирования термостата, всё на си на пике.

1wire002.c в корне, очень похож на исходник функций

 

http://www.microchipc.com/sourcecode/PIC_H..._thermostat.zip

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DS1821 Поставляется в режиме цифрового термометра по типу 1820, но без личного адреса, а в режим термостата датчик переводится при первом программировании, затем вывести датчик из режима термостата практически не реально

Ага.

С такими знаниями и на свободе :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читаем внимательно OPERATING MODES в описании на датчик. Датчик в любое время может работать в режиме 1-wire или термостат. Определяется битом T/~R .

Здесь подробно на русском с исходниками. http://www.rtcs.ru/article_detail.asp?id=73

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотря чего 250 е или р
Вы где-то в моем сообщении видели упоминание р?

PS готовый девайс от мастеркита стоит 900 р
Так купите. В чем вопрос? Или вы хотите за разработку изделия под ваши требования заплатить меньше, чем стоит серийное изделие?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...