Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной»





Скачать 183.39 Kb.
НазваниеОтчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной»
Дата публикации30.11.2014
Размер183.39 Kb.
ТипОтчет
100-bal.ru > Информатика > Отчет


Федеральное агентство по образованию Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Национальный исследовательский ядерный университет «МИФИ»

Кафедра «Автоматика»

ОТЧЕТ

О УЧЕБНО-ИССЛЕДОВАТЕЛЬСКОЙ РАБОТЕ

по теме «Модуль управления 1-Wire шиной»
Выполнили:

студент группы А6-02 Логинов А.В

студент группы А6-03 Савкин Е.В.

Руководитель:

Рахматулин А.Б.
Москва, 2011

РЕФЕРАТ

Отчет 22 стр., 2 табл., 9 рис., 6 источников.

Ключевые слова: 1-Wire, протокол обмена, передача данных

Объектом исследования является модуль управления 1-Wire шиной

Цель работы – создание модуля управления 1-Wire шиной на примере датчика температуры

Проведена учебно-исследовательская работа.


СОДЕРЖАНИЕ

ВВЕДЕНИЕ 5

Постановка задачи и технические требования 7

7

МОДУЛЬ УПРАВЛЕНИЯ 1-WIRE ШИНОЙ 8

1. Основные принципы работы 1-Wire сети 8

2. Физическая реализация интерфейса 1-Wire 10

3. Передача данных в сети 1-Wire 11

4. Протокол обмена информацией 15

5. Электрическая схема устройства 17

6. Програмная реализация протокола обмена 19

7. Программа обработки и представления информации на LabVIEW. 20

8. Аналоги 22

ЗАКЛЮЧЕНИЕ 23

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 24

ВВЕДЕНИЕ


Однопроводной интерфейс 1-Wire , разработанный в конце 90-х годов фирмой Dallas Semiconductor Corp., регламентирован разработчиками для применения в трех основных сферах-приложениях:

  • приборы в специальных корпусах MicroCAN для решения проблем идентификации, переноса или преобразования информации (технология iButton);

  • программирование встроенной памяти интегральных компонентов;

  • системы автоматизации (технология сетей 1-Wire-сетей).

1-Wire-net представляет собой информационную сеть, использующую одну линию данных и один возвратный (или земляной) провод для осуществления цифровой связи. Таким образом, для реализации среды обмена этой сети могут быть применены доступные кабели, содержащие неэкранированную витую пару той или иной категории, в т.ч. даже обычный телефонный провод. Такие кабели при их прокладке не требуют наличия какого-либо специального оборудования, а ограничение максимальной длины однопроводной линии регламентировано разработчиками на уровне 300м.

Основой архитектуры 1-Wire-сетей, является топология общей шины, когда каждое из устройств подключено непосредственно к единой магистрали, без каких-либо каскадных соединений или ветвлений. При этом в качестве базовой используется структура сети с одним ведущим или мастером и многочисленными ведомыми (т.н. master и slave).

Конфигурация любой 1-Wire-сети может произвольно меняться в процессе ее работы, не создавая помех дальнейшей эксплуатации и работоспособности всей системы в целом, если при этих изменениях соблюдаются основные принципы организации однопроводной шины. Эта возможность достигается благодаря присутствию в протоколе 1-Wire-интерфейса специальной команды поиска ведомых устройств (поиск ПЗУ), которая позволяет быстро определить новых участников информационного обмена. [1]

Основные преимущества 1-Wire сетей:

  • Не требуется дорогого оборудования для передачи данных;

  • Легкое изменение конфигурации сети;

  • Скорость до 125 Кбит / сек;

  • Высокая помехозащищенность;

  • Дальность работы до 300 метров;

  • Большинство датчиков поддерживают паразитное питание.

Чаще всего 1-Wire устройства недороги, наиболее распространенными примерами являются датчики температуры и ключи - "таблетки" для домофонов (т.н. iButton).

Рисунок 1. Пример использования устройства 1-Wire

Постановка задачи и технические требования


В ходе учебно-исследовательской работы требовалось разработать модуль управления 1-Wire шиной. В качестве основы устройства предлагалось использовать микроконтроллер Atmega-8 с частотой 16 МГц. Питание схемы должно осуществляться от источника постоянного напряжения 5В, максимальное токопотребление 100 мА. Модуль управления должен быть выполнен в виде печатной платы с возможностью подключения переходника uart-usb.

Для модуля управления необходимо было выполнить разработку электрической схемы, чертеж печатной платы и реализацию прошивки микроконтроллера в пакете WinAVR. Результатом работы должен являться настоящий отчет по УИР.


МОДУЛЬ УПРАВЛЕНИЯ 1-WIRE ШИНОЙ

1. Основные принципы работы 1-Wire сети


Сеть 1-Wire использует два или три провода для осуществления цифровой связи: линия данных, также называемая шиной, земляной провод и иногда, но не всегда, провод питания.

Каждое 1-Wire устройство имеет свой индивидуальный адрес, из чего следует, что сеть может иметь практически неограниченное адресное пространство. При этом, каждый из однопроводных приборов сразу готов к использованию в составе 1-Wire-сети, без каких-либо дополнительных аппаратно-программных модификаций. Однопроводные компоненты являются самотактируемыми полупроводниковыми устройствами, в основе обмена информацией между которыми, лежит управление изменением длительности временных интервалов импульсных сигналов в однопроводной среде и их измерение. Передача сигналов для 1-Wire-интерфейса асинхронная и полудуплексная, а вся информация, циркулирующая в сети, воспринимается абонентами либо как команды, либо как данные. Команды сети генерируются мастером и обеспечивают различные варианты поиска и адресации ведомых устройств, определяют активность на линии даже без непосредственной адресации отдельных компонентов, управляют обменом данными в сети и т.д.

Стандартная скорость работы 1-Wire-сети, которая составляет 15,4 Кбит/сек, была выбрана с учетом обеспечения максимальной надежности передачи данных на большие расстояния, также во внимание принималось быстродействие наиболее широко распространенных типов микроконтроллеров, которые в основном должны использоваться при реализации ведущих устройств однопроводной шины. Это значение скорости обмена может быть уменьшено до любого возможного значения благодаря введению принудительной задержки между передачей в линию отдельных битов данных (растягиванию временных слотов протокола). Или увеличено за счет перехода на специальный ускоренный режим обмена (скорость Overdrive - до 125Кбит/сек), который допускается для отдельных типов однопроводных компонентов на небольшой по расстоянию, качественной, не перегруженной другими приборами линии связи.

При реализации однопроводного интерфейса используются стандартные логические уровни сигналов, а питание большинства однопроводных компонентов может осуществляться от внешнего источника с рабочим напряжением в диапазоне от 2,8В до 6,0В. Альтернативой применению внешнего питания служит механизм паразитного питания, действие которого заключается в использовании каждым из ведомых компонентов 1-Wire-линии электрической энергии импульсов, передаваемых по шине данных, которая аккумулируется специальной, встроенной в прибор емкостью. Кроме того, отдельные компоненты однопроводных сетей могут использовать режим питания по шине данных, когда энергия к приемнику поступает непосредственно от мастера по линии связи, при этом обмен информацией в сети принудительно прекращается.[2]

2. Физическая реализация интерфейса 1-Wire


Как было сказано выше, для обеспечения работы сети требуется ведущее устройство – master и ведомое устройство - slave. На рисунке показана упрощенная схема аппаратной реализации интерфейса 1-Wire.

Рисунок 2 . Аппаратная реализация интерфейса 1-Wire

Вывод DQ устройства представляет собой вход КМОП-логического элемента, который может быть зашунтирован (замкнут на общий провод) полевым транзистором. Сопротивление канала этого транзистора в открытом состоянии - около 100 Ом. Когда транзистор заперт - имеется небольшой ток утечки (примерно 5 мкА) на общий провод.

Шина 1-Wire должна быть подтянута отдельным резистором к напряжению питания устройств. Стандартное сопротивление этого резистора 4.7 КОм, однако, это значение рекомендовано только для достаточно коротких линий. Если шина 1-Wire используется для подключения удаленных на большое расстояние устройств, то сопротивление этого резистора следует уменьшить. Минимально допустимое его сопротивление - около 300 Ом, а максимальное - около 20 - 30 кОм. Данные величины - ориентировочные, и всегда уточняются по характеристикам конкретного устройства 1-Wire его максимальный втекающий ток линии DQ, который и определяет минимум внешнего сопротивления.

3. Передача данных в сети 1-Wire


Основные правила передачи данных в сети 1-Wire:

  • Обмен всегда ведется по инициативе одного ведущего устройства, которое в большинстве случаев является микроконтроллером;

  • Любой обмен информацией начинается с подачи импульса сброса ("RESET Pulse") в линию 1-Wire ведущим устройством;

  • Для интерфейса 1-Wire в общем случае предусматривается "горячее" подключение и отключение устройств;

  • Любое устройство, подключенное к 1-Wire после получения питания выдает в линию DQ импульс присутствия, называемый "PRESENCE pulse". Этот же импульс устройство всегда выдает в линию, если обнаружит сигнал RESET;

  • Появление в шине 1-Wire импульса PRESENCE после выдачи RESET однозначно свидетельствует о наличии хотя бы одного подключенного устройства;

  • Обмен информации ведется так называемыми тайм-слотами: один тайм-слот служит для обмена одним битом информации;

  • Данные передаются побайтно, бит за битом, начиная с младшего бита. Достоверность переданных/принятых данных (проверка отсутствия искажений) гарантируется путем подсчета циклической контрольной суммы.

Перечисленные правила определяют логический низкоуровневый протокол обмена данными. На рисунке показана диаграмма сигналов RESET и PRESENCE, с которых всегда начинается любой обмен данными. Выдача импульса RESET в процессе обмена служит так же для досрочного завершения процедуры обмена информацией.



Рисунок 3. Диаграмма сигналов RESET и PRESENCE

Длительность большинства временных интервалов приблизительная и имеет только ограничение только по минимуму (не меньше указанного). Тем не менее, в настоящей реализации модуля управления используются рекомендованные длительности импульсов и времен задержки между ними.

Импульс RESET формирует ведущий МК, переводя в низкий логический уровень шину 1-Wire и удерживая ее в этом состоянии минимум 480 микросекунд. Затем МК должен "отпустить" шину. Через некоторое время, зависящее от емкости линии и сопротивления подтягивающего резистора, в линии установится высокий логический уровень. Протокол 1-Wire ограничивает время "релаксации" диапазоном от 15 до 60 микросекунд, что и является определяющим для выбора подтягивающего резистора (как правило, емкость линии не поддается изменению, а именно она оказывает существенное влияние на время возврата линии к высокому уровню).

Обнаружив импульс RESET, ведомое устройство приводит свои внутренние узлы в исходное состояние и формирует ответный импульс PRESENCE не позже 60 микросекунд после завершения импульса RESET. Для этого устройство переводит в низкий уровень линию DQ и удерживает ее в этом состоянии от 60 до 240 микросекунд. Конкретное время удержания может варьироваться, но всегда находится в указанном диапазоне. После этого устройство так же "отпускает" шину.

После завершения импульса PRESENCE ведомому устройству дается еще некоторое время для завершения внутренних процедур инициализации, таким образом, МК должен приступить к любому обмену с устройством не ранее, чем через 480 микросекунд после завершения импульса RESET.

Процедура инициализации интерфейса, с которой начинается любой обмен данными между устройствами, длится минимум 960 микросекунд, состоит из передачи от МК сигнала RESET и приему от устройства сигнала PRESENCE. Если сигнал PRESENCE не обнаружен - значит на шине 1-Wire нет готовых к обмену устройств.

Процедуры обмена битами информации осуществляются определенными тайм-слотами, то есть с использованием определенных и довольно жестко лимитированных по времени последовательность смены уровней сигнала в линии 1-Wire. Различают 4 типа тайм-слотов: передача "1" от МК, передача "0" от МК, прием "1" от устройства и прием "0" от устройства.

Любой тайм-слот всегда начинает МК путем перевода шины 1-Wire в низкий логический уровень. Длительность любого тайм-слота должна находиться в пределах от 60 до 120 микросекунд. Между отдельными тайм-слотами всегда должен предусматриваться интервал не менее 1 микросекунды (конкретное значение определяется параметрами ведомого устройства).

Тайм-слоты передачи отличаются от тайм-слотов приема поведением МК: при передаче он только формирует сигналы, при приеме, кроме того, еще и опрашивает (т.е. принимает) уровень сигнала в линии 1-Wire.

Для передачи данных мастер замыкает шину на землю на определенное время: для передачи "1" на 1-15 мкс, для передачи "0" на 60-120 мкс. После передачи каждого бита, необходима пауза минимум в 1 мкс. Общая длительность передачи каждого бита не может быть меньше 61 мкс.

Для чтения данных мастер замыкает шину на землю на 1 - 15 мкс, после чего проверяет – если шина удерживается устройством, значит прочитан "0", если же возвращается в вернуться в исходное состояние резистором, значит прочитана "1". Проверка идет в пределах 15 мкс после спада.



Рисунок 4. Временные диаграммы передачи данных в сети 1-Wire на примере передачи и приема двух битов

Ошибки в сети могут появиться в результате неправильной установки временных интервалов. Для исключения возникновения такой ситуации нужно все сигналы, формируемые микроконтроллером, следует формировать по принципу необходимого минимума длительности (т.е. немного больше, чем указанная минимальная длительность), а от устройства следует ожидать сигналов по принципу наихудшего (т.е. ориентироваться на самые худшие варианты временных параметров сигнала). [3][4]

4. Протокол обмена информацией


Каждое устройство 1-Wire обладает уникальным идентификационным 64-битным номером, программируемым на этапе производства микросхемы. Перед установкой ведомого устройства в сеть требуется определить его номер.

Модуль управления посылает импульс RESET, принимаемый всеми устройствами, они же выдают импульс PRESENCE. Затем мастер посылает в шину команду, которую принимают все устройства. Команд определено несколько общих для всех типов 1-Wire-устройств, а так же могут быть команды, уникальные для отдельных типов. Далее следует таблица наиболее часто используемых команд.

Таблица 1. Некоторые команды 1-Wire сети

Команда

Значение

Описание

SEARCH ROM

0xF0

Поиск адресов - используется при универсальном алгоритме определения количества и адресов подключенных устройств

READ ROM

0x33

Чтение адреса устройства - используется для определения адреса единственного устройства на шине

MATCH ROM

0x55

Выбор адреса - используется для обращения к конкретному адресу устройства из многих подключенных

SKIP ROM

0xCC

Игнорировать адрес - используется для обращения к единственному устройству на шине, при этом адрес устройства игнорируется (можно обращаться к неизвестному устройству)

Порядок действий ведущего и ведомого устройства можно рассмотреть на примере команды MATCH ROM. Модуль управления сетью передает один байт команды: 0x55, после чего 8 байт конкретного адреса устройства, с которым будет осуществляться последующий обмен данными. Приняв эту команду, каждое устройство сравнивает передаваемый адрес со своим собственным. Все устройства, адрес которых не совпал, прекращают анализ и выдачу сигналов в линии 1-Wire, а опознавшее адрес устройство продолжает работу. Далее все данные, передаваемые МК, обрабатываются только данным адресованным устройством. То, какие именно данные надо послать в устройство или получить от него после его адресации, зависит от конкретного устройства, например, в данной работе используется запрос чтения значения температуры из памяти термодатчика.

Уникальные адрес ведомого устройства состоит из 8 байт: одного байта идентификатора семейства, шести байт (48 бит) собственно уникального адреса и одного байта контрольной суммы всех предыдущих байтов.

Контрольная сумма (CRC) - это байт, значение которого передается последним и вычисляется по специальному алгоритму на основе значения всех семи предыдущих байтов. Алгоритм подсчета таков, что если все байты переданы-приняты без искажений, принятый байт контрольной суммы обязательно совпадет с рассчитанным в модуле управления значением. Т.е. при реализации программного алгоритма обмена информацией при передаче и приеме байтов требуется подсчитывать их контрольную сумму по строго определенному алгоритму, а сравнить расчетное значение с принятым значением CRC. Только при совпадении обоих CRC нужно считать принятые данные достоверными. В противном случае продолжение обмена невозможно. Алгоритм подсчета CRC должен быть одинаковым для ведущего и ведомого устройств, он стандартизирован и описан в документации. [5]

5. Электрическая схема устройства




Рисунок 5. Схема электрическая принципиальная

Шина данных подтянута к питанию резистором на 4.7 КОм, такое значение сопротивления обуславливается предположительно малой емкостью цепи 1-Wire сети. Напряжение питания выравнивается стабилизатором L7805 с максимальным током 100мА. Имеются три выхода: экран (в данном проекте остается незадействованным), к переходнику uart-usb и собственно 1-Wire шина.

На рисунке ниже представлен внешний вид модуля управления 1-Wire шиной с подключенными к нему переходником uart-usb и датчиком температуры ds18s20.

Рисунок 6. Внешний вид модуля управления

6. Програмная реализация протокола обмена


Создание прошивки для микропроцессора производилось в пакете программ WinAVR. Язык программирования близок по структуре к языку С.

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

Таблица 2. Пример подпрограммы

Код

Пояснение

uint8_t ow_get_bit(void) {




uint8_t result;




ow_delay;

Защитная пауза длиной 10 мкс

cli();

Запрет прерываний на время чтения

wire_0;

Просадка шины в 0

_delay_us(6);

Удержание шины в 0

wire_1;

Отпускание шины

_delay_us(7);

Пауза, ожидание ответа от slave

result = (OW_PIN >> OW_P) & 1;

Чтение состояния шины

sei();

Разрешение прерываний

_delay_us(90);

Задержка перед следующей командой

return result;

Возвращение результата

}






Полный листинг программы находится в приложении А.


7. Программа обработки и представления информации на LabVIEW.


В ходе разработки информационно – измерительной системы написана программа обработки и представления информации на LabVIEW, основанная на представленном разработчиками системы программирования примере.



Рисунок 7. Внешний вид программы

На рисунке можно видеть график зависимости температуры, поступающей от термодатчика в 1-Wire сети, от времени. В окне сверху отображаются данные, поступившие от модуля управления и представляющие собой значение температуры, умноженное на 1000.

Рисунок 8. Визуальное представление структуры программы

Программа на LabVIEW удобна своей универсальностью – например, ее легко можно изменить для случая нескольких датчиков. Параметры отображения данных на графике и частота получения данных (кратная 100мс) настраиваются.

8. Аналоги


Существует множетсво устройств, управляющих 1-Wire шиной. Наиболее часто человек встречатется с такими устройствами в домофонах. Примером управляющего устройства, которое может найти применение в лаборатории, является переходник 1-Wire – USB : DS9490R.

Рисунок 9. Внешний вид переходника DS9490R

Преимущества:

1. USB интерфейс не требует установки специальных драйверов;

2. Поддерживает как стандартное, так и высокоскоростное (Overdrive) 1-Wire соединение;

3. Простое подключение сети с датчиками;

4. Существуют готовые компьютерные программы для обработки поступающих данных. [6]

Минусом такого устройства по сравнению с разработанным модулем управления является цена от 27$.

ЗАКЛЮЧЕНИЕ


В учебно-исследовательской работе требовалось создать и исследовать модуль управления 1-Wire шиной. В результате работы был изучен протокол обмена данными 1-Wire, созданы принципиальная схема и собрано устройство модуля. Прошивка устройства была реализована и зашита в микроконтроллер. В качестве ведомого устройства был выбран термодатчик, данные с которого считываются модулем управления, обрабатываются и передаются на компьютер.

Макет модуля может быть использован в лабораторных условиях в учебных целях, но для использования в промышленных целях требуется доработка. Уменьшение размера и цены устройства может быть достигнуто использованием более дешевого микроконтроллера, например Attiny2313, также возможно изготовление печатной платы на заводе.

В будущем предполагается доработать прошивку устройства, добавив возможность работы сразу с несколькими ведомыми устройствами разных типов, а также программная реализация usb интерфейса, что позволит передавать данные на компьютер напрямую.

По результатам работы был создан настоящий отчет

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


  1. http://www.elin.ru/1-Wire/

  2. http://revolution.allbest.ru/programming/00061409_0.html

  3. http://logic-bratsk.ru/radio/interface/1_wire/1_wire/1_wire.htm

  4. http://usb-osc.narod.ru/1-wire.htm

  5. http://www.elin.ru/1-Wire/

  6. http://lib.chipdip.ru/302/DOC000302212.pdf

Приложение А

Исходный код прошивки микроконтроллера

Файл main.h

// Подключение кнопок

#define SW_PORT PORTD

#define SW_DDR DDRD

#define SW_PIN PIND

#define SW1 2

#define SW2 3
//----- Переобозначения ---------------------------------------

#define Reset_pin_DDR DDRB //pin to reset AD9834

#define Reset_pin_PORT PORTB //pin to reset AD9834

#define Reset_pin 0 //pin to reset AD9834

#define CS_DDR DDRB //pin to select AD8370

#define CS_PORT PORTB //pin to select AD8370

#define CS 1 //pin to select AD8370

#define FSYNC_DDR DDRB // SPI

#define FSYNC_Port PORTB // SPI

#define FSYNC PORTB4 // SPI

#define SCK 7

#define MISO 6

#define MOSI 5

//#define SS 4

#define UsartPort PORTD

#define UsartPortDDR DDRD

#define Rx PORTD0

#define Tx PORTD1

#define TIMER_CLK_STOP 0x00

#define TIMER_CLK_DIV1 0x01

#define TIMER_CLK_DIV8 0x02

#define TIMER_CLK_DIV64 0x03

#define TIMER_CLK_DIV256 0x04

#define TIMER_CLK_DIV1024 0x05

#define TIMER_CLK_T_FALL 0x06

#define TIMER_CLK_T_RISE 0x07
Файл main.c

#include

#include

#include

#include "main.h"

#include "uart.h"

#include

#include

#include

#include

#include

#include "1w.h"

#define UART_BAUD_RATE 115200
uint8_t buf[9];

uint8_t temp_x100(int *temp)

{

uint8_t result = 1, // результат опроса датчика

crc; // контрольная сумма

int16_t *tmp = (void*)buf; // указатель на температуру, принятую из датчика

int t, tt; // вспомогательные переменные

result = 1;

ow_reset(); // сброс 1-wire

ow_write_byte(OW_SKIP_ROM_CMD); // команда "пропустить адрес"

ow_write_byte(CMD_RD_SCRPAD); // команда "считать регистры датчика"

crc = 0;

for(uint8_t i=0;i<9;i++){ // чтение данных из датчика

buf[i] = ow_read_byte(); // чтение байта

crc = ow_crc(crc, buf[i]); // и подсчет контрольной суммы

}

if(crc)

result = 0; // если контрольная сумма не нулевая - это ошибка

else { //иначе - рассчет температуры

tt = 100 * (*tmp>>1); // отброс мл.бита температуры из датчика

t = tt - 25 + (16 - buf[6])*100/16;

// это "стандартный" алгоритм извлечения долей градуса

*temp = t; // готовый результат в переменную-приемник

}

ow_reset(); // сброс 1-wire

ow_write_byte(OW_SKIP_ROM_CMD); // команда "пропустить адрес"

ow_write_byte(CMD_START_CONV); // команда "начать измерение"

ow_reset(); // сброс 1-wire

return result;

}
FILE uart_str = FDEV_SETUP_STREAM(uart_putc, uart_getc, _FDEV_SETUP_RW);

ISR(INT0_vect){

//Кнопки пока не используются

}

ISR(INT1_vect){

}
int main(void)

{

UsartPortDDR &=~(1 << Rx); //set Rx0 as input

UsartPortDDR |= (1 << Tx); //set Tx0 as output

uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );

SW_DDR &= ~((1 << SW1)|(1 << SW2));

SW_PORT |= (1 << SW1)|(1 << SW2);

GIMSK |= (1<
stdout = stdin = &uart_str;

sei();

int i;

char s[9];

while(1)

{

if( temp_x100( &i ))

printf( "%i\n\r", i );

_delay_ms(1000);

}

}
Файл 1w.h
#ifndef _1_WIRE_H_

#define _1_WIRE_H_ 1
// Назначение порта и пина для подключения датчика

#define OW_PORT PORTC /* порт управления */

#define OW_DDR DDRC /* регистр направления порта */

#define OW_PIN PINC /* регистр пинов порта */

#define OW_P 0 /* номер бита порта */
// прототипы функций низкого уровня

uint8_t ow_reset(void);

void ow_put_bit(uint8_t bit);

uint8_t ow_get_bit(void);

void ow_write_byte(uint8_t data);

uint8_t ow_read_byte(void);

uint8_t ow_crc(uint8_t crc, uint8_t x);
//Основные команды 1-Wire протокола

#define OW_OVRDRV_SKIP_CMD 0x3c

#define OW_SEARCH_ALRM_CMD 0xec

#define OW_SEARCH_ROM_CMD 0xf0

#define OW_READ_ROM_CMD 0x33

#define OW_MATCH_ROM_CMD 0x55

#define OW_SKIP_ROM_CMD 0xcc

#define OW_FAMILY_ROM 0x09

#define OW_FAMILY_TEMP 0x10

#define CMD_START_CONV 0x44

#define CMD_RD_SCRPAD 0xbe

#define CMD_WR_SCRPAD 0x4e

#define CMD_CPY_SCRPAD 0x48

#define CMD_RECALL 0xb8

#define CMD_RD_PSU 0xb4
#endif
Файл 1w.c

#include

#include

#include

#include

#include

#include

#include "1w.h"
#define ow_delay _delay_us(10) /* защитная пауза */

#define wire_0 OW_DDR |= (1<
#define wire_1 OW_DDR &= ~(1<
uint8_t ow_reset(void) {

uint8_t result = 1;

OW_PORT &= ~(1 << OW_P); // 0 в порт для "просадки" в ноль

wire_0; // включение "просадки"

_delay_us(500); // RESET Pulse

wire_1; // отключение просадки

_delay_us(100);

if (OW_PIN & (1 << OW_P)) result = 0;

_delay_us(400); // защитная пауза в конце

return result

}
void ow_put_bit(uint8_t bit){

ow_delay;

cli();

wire_0;

_delay_us(6);

sei();

if (bit){

wire_1;

_delay_us(90);

} else {

_delay_us(90);

wire_1;

}

ow_delay;

}

uint8_t ow_get_bit(void) {

uint8_t result;

ow_delay;

cli();

wire_0;

_delay_us(6);

wire_1;

_delay_us(7);

result = (OW_PIN >> OW_P) & 1;

sei();

_delay_us(90);

return result;

}
void ow_write_byte(uint8_t data) {

uint8_t i;
for (i = 0; i < 8; i++) {

ow_put_bit(data & 0x01);

data >>= 1;

}

}

uint8_t ow_read_byte(void) {

uint8_t i, result = 0;
for (i = 0; i < 8; i++) {

result >>= 1;

result |= ow_get_bit()<<7;

}

return result;

}
uint8_t __attribute__ ((weak, alias ("_crc_ibutton_update"))) ow_crc(uint8_t crc, uint8_t x);


Добавить документ в свой блог или на сайт

Похожие:

Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе
Гост 32-2001. Межгосударственный стандарт. Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе
Межгосударственный стандарт (гост 32-2001). Отчет о научно-исследовательской работе. Структура и правила оформления (редакция 2005...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет №2 о научно-исследовательской работе по теме: «Грид-технологии»
Ключевые слова: грид, поток задач, многошаговые задания, система управления заданиями, программные интерфейсы, интерфейсы пользователя,...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconРеферат Отчет о научно-исследовательской работе состоит
Отчет о научно-исследовательской работе состоит из 33 рисунков, 8 разделов, 12 подразделов, 9 формул, 31 источника. Общий объем 48...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОбщие положения отчет
Отчет о научно-исследовательской работе (нир) документ, который содержит систематизированные данные о научно-исследовательской работе,...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе по теме: «Внутренний аудит,...
Внешний аудит, внутренний аудит, внутренний контроль, уровень существенности, оценка, программа аудита, рабочие документы аудитора,...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет №3 о научно-исследовательской работе по теме: «Грид-технологии»
Разработка методов эффективного решения задач обработки, хранения, передачи и защиты информации
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconТема Модуль
Цель изучения курса: развитие исследовательской компетент­ности учащихся посредством освоения ими методов научного позна­ния и умений...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе по теме «Эффективность использования...
Отчет по теме № са-12-39 «Эффективность использования отраслевых информационных систем» Минкультуры России
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconНаучно-исследовательская работа это научный отчет о выполненной работе,...
Цель: повторить и обобщить зун по теме «Агрегатные состояния вещества»; сформировать представления о фазе вещества и фазового перехода;...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе по государственному контракту...
Русский язык и культура речи: учебно-методический комплекс для студентов очной формы обучения / сост. И. А. Крым; Кузбасский институт...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе по теме: «Совершенствование...
Агрохолдинг, интеграция, экономическая эффективность, рейтинг, функциональный анализ
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconПоложение об исследовательской работе обучающегося 9-ого класса мкоу...
Исследовательской работой считается изложение в письменном виде содержания и результатов обучающимся собственной учебно-исследовательской...
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе по теме «Экспериментально-теоретическое...
Фгбоу впо «Белгородская государственная сельскохозяйственная академия им. В. Я. Горина»
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе по теме: «Разработка комплекса...
Федеральное государственное образовательное учреждение высшего профессионального образования Воронежский институт
Отчет о учебно-исследовательской работе по теме «Модуль управления 1-Wire шиной» iconОтчет о научно-исследовательской работе по теме: «Исследование отрасли...
Директор Областного государственного бюджетного учреждения «Электронный Ульяновск»


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск