Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C51] Задание верхей уставки для датчика DS18B20. Прошу помочь 
:(
    Опции темы
ChristopherRobin
Дата 21.5.2011, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.5.2011

Репутация: нет
Всего: нет



Здравствуйте. Очень прошу помочь разобраться в вопросе задания уставок для датчика DS18B20.

В мануале написано, что для этого служат регистры TH и TL. Как я понял в них загружается значение температуры, с которым сравнивается измеренное значение. Если измеренная темп-ра выше верхней уставки, то устанавливается флаг аварии.

Но вот как это реализовать программно в ассемблере ума не хватает.

------------------------

Собрана схема измерения на контроллере AT89C51.
Мне нужно сделать, чтобы при превышении температуры в 50 градусов, на заданный порт контроллера приходил сигнал. К планируется подключить светодиод, показывающий аварийное состояние.

Может кто-то делал уже что-то подобное, подскажите пожалста.


PM MAIL   Вверх
Mazzi
Дата 21.5.2011, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Исходник и схему можно посмотреть?


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
UniBomb
Дата 21.5.2011, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(ChristopherRobin @  21.5.2011,  11:11 Найти цитируемый пост)
Может кто-то делал уже что-то подобное

Делал устройство, срабатывающее по двум температурным порогам. Но встроенную фичу температурной микросхеы не использовал и в программе сам контролировал температуру. Мне кажется это более гибкий способ, позволяющий меньшими силами изменять значения порогов.
PM MAIL ICQ Skype   Вверх
ChristopherRobin
Дата 22.5.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.5.2011

Репутация: нет
Всего: нет



Mazzi, Схему собирал отсюда - http://www.atomlink.ru/~courier/ds1307/ds1307.htm

Тока контроллер поменял на AT89C51. В итоге получилось так 
user posted image

UniBomb, а на чем писал? не на ассемблере?

Это сообщение отредактировал(а) ChristopherRobin - 22.5.2011, 17:53

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  main.asm 26,49 Kb
PM MAIL   Вверх
UniBomb
Дата 24.5.2011, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



ChristopherRobin, да, писал на Си, и ещё, как оказалось, одно отличие - микросхема с которой я работал была с интерфейсом TWI. Но особой разницы нет.

Итак, что имеем. вариант 1 - использовать решистры Tl и Th. В твоей программе определена функция "OUT_BYTE", которая передаёт "IO_BYTE" на шину 1-wire. Действуй согласно даташиту:

Цитата

Для записи данных в байты Tl, Th, и CONFIGURATION REGISTER ОЗУ используем команду Write Scratchpad [4Eh]; данные должны быть переданы к DS18B20, начиная с байта 2. Чтобы проверить корректность записи данных, необходимо выполнить чтение (используя команду чтения Read Scratchpad [BEh]) после того, как данные будут записаны. Обратите внимание, что при чтении данные DS18B20 начинает передавать с 0 байта. Чтобы сохранить TH, TL и данные регистра конфигурации в EEPROM, устройство управление должно выдать команду Copy Scratchpad [48h].


вариант 2 - использовать программные пороги. В программе есть процедура "GET_T", которая и занимается получением температуры. Результат можно прочитать либо из "TEMP_BYTE_1" в нормальном виде, либо из "TEMP_C" в двоично-десятичном представлении (преобразование сделано для удобства индикации). В ту же функцию ты можешь добавить любую свою проверку.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.