Разработка автоматизированной системы контроля и управления бытовой техникой на основе Linux и микроконтроллера AVR

Обеспечение удалённого и централизованного автоматизированного управления устройствами бытовой техники и контроля за помещением. Разработка микропрограммы для микроконтроллера AVR под управлением Linux и отладка клиентского программного обеспечения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 15.09.2012
Размер файла 2,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ЭЛЕКТРОСТАЛЬСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ

(филиал) ФГОУ ВПО «Государственный технологический университет «Московский институт стали и сплавов»

Факультет Э и И УТВЕРЖДАЮ

Кафедра Прикладной информатики Зав. кафедрой Чараев Г.Г,

« »200_г.

Дипломное задание

Студента группы ДИС-04

Авдюхин Алексей Анатольевич

Дипломное задание

1. Тема ДПР. Разработка автоматизированной системы контроля и управления бытовой техникой на основе Linux и микроконтроллера AVR

2. Цели ДПР. Обеспечение удалённого и централизованного управления устройствами различного типа, а также автоматизация этого процесса

3. Исходные данные. Техническая документация различных электронных компонентов

4. Основная литература, в том числе:

4.1 Монографии, учебники и т.п. Арнольд Роббинс. Linux, программирование в примерах. Москва: издательство «Кудиц-образ», 2006

Пауло Франка. C++, учебный курс. Москва: издательский дом «Питер», 2003

П. Хоровиц, У. Хилл.: Искусство схемотехники. Мир, 2006

4.2 Отчёты по НИР, диссертации и т.п.

4.3 Периодическая литература

4..4 Справочная и методическая литература (в том числе литература по методам обработки экспериментальных данных)

5. Перечень основных этапов проектирования, исследования, расчётов и форма промежуточной отчётности по каждому этапу

6. Аппаратура и методики, которые должны быть использованы в работе

7. Использование ПВМ IBM PC класса Intel Core 2 Quad, ОС MS Windows XP,GCC, Borland Delphi 7.0

8. Перечень подлежащих разработке вопросов по экономике и управлению производством

Анализ экономической целесообразности разработки

СогласованоКонсультант по экономике

(подпись)

9. Перечень подлежащих разработке вопросов безопасности жизнедеятельности и экологии

Предусмотреть выполнение требований безопасности при реализации и эксплуатации программных средств

Согласовано Консультант по безопасности жизнедеятельности и экологии

(подпись)

10. Перечень основных вопросов, которые должны быть рассмотрены и проанализированы в литературном обзоре Принципы взаимодействия электронных компонентов, стандартные протоколы, разработка программного обеспечения для ОС «Linux»

11. Перечень графического и иллюстративного материала 1. Структура информационных потоков комплекса.

2. Временные диаграммы протоколов.

3. Изображения клиентского программного обеспечения.

12. Руководитель работы доцент, к. т. н. Ревин С.А.

(должность, звание, Ф.И.О.)

(подпись)

13. Консультанты по работе (с указанием относящихся к ним разделов)

Шеховцова Н.Ф. - по экономике и управлению производством;

Вольшонок И.З. - по БЖД и экологии;

Чараев Г.Г. - по стандартизации, метрологии и нормоконтролю

БЖД и экологии; Чараев Г.Г. - по стандартизации, метрологии и нормоконтролю.

Дата выдачи задания 6 апреля, 2009

Задание принял к исполнению студент

(подпись)

Аннотация

Ключевые слова: микроконтроллер, Linux, автоматизация, роутер, сеть.

Дипломный проект на тему «Разработка автоматизированной системы контроля и управления бытовой техникой на основе Linux и микроконтроллера AVR» посвящен созданию комплексу устройств и программного обеспечения, которые позволяют удалённо и централизованно производить управление бытовой техникой, а также вести контроль за помещением.

В рамках дипломного проекта было проведено:

· исследование и анализ предметной области;

· исследование и анализ электронных компонентов;

· исследование протоколов взаимодействия;

· разработка микропрограммы для микроконтроллера AVR;

· разработка серверного программного обеспечения для ОС «Linux»;

· разработка клиентского программного обеспечения;

· согласование различных элементов комплекса;

В проекте также содержится экономическое обоснование разработки и рекомендации по охране труда с учетом требований эргономики.

автоматизированный бытовой удалённый помещение

Содержание

  • Аннотация
  • Введение
  • 1. Аналитическая часть
    • 1.1 Общая схема работы системы
    • 1.2 Микроконтроллеры AVR
    • 1.3 Компоненты основного модуля
      • 1.3.1 Системная синхронизация и тактовые источники
      • 1.3.2 Знакогенерирующий дисплей
      • 1.3.3 ДУ приёмник
      • 1.3.4 Датчики температуры
      • 1.3.5 Конвертор уровней USART и RS-232
  • 2. Практическая часть
    • 2.1 Разработка программы для микроконтроллера
      • 2.1.2 Работа с контроллером дисплея HD44780
      • 2.1.3 Работа с USART контроллером
      • 2.1.4 Работа с датчиками температуры
      • 2.1.5 Работа с ДУ приёмником
      • 2.1.6 Разработка протокола для обмена данными
      • 2.1.7 Функции основного блока
    • 2.2 Разработка серверного и клиентского программного обеспечения
      • 2.2.1 Разработка серверной части для ОС «Linux»
      • 2.2.2 Модификация роутера для работы с комплексом
      • 2.2.3 Разработка клиентского ПО для Microsoft Windows
      • 2.2.4 Пример использования сторонних приложений
  • 3. Оценка экономической эффективности проекта
    • 3.1 Определение затрат на разработку проекта
    • 3.2 Определение затрат на производство
  • 4. Безопасность жизнедеятельности
    • 4.1 Санитарно-гигиенические требования при работе с ПЭВМ
    • 4.2 Требования к оборудованию рабочих мест
  • Заключение
  • Список источников информации
  • Приложение А

Введение

Целью дипломной работы является разработка автоматизированной системы управления бытовой техникой, которая позволяет включать (выключать) электронные устройства - по телефону, по сети, по таймеру и т.д. В последнее время подобные системы становятся очень популярны в мире, обычно их называют «Smart House» или «умный дом». Реализуются они обычно простыми устройствами, которые заранее оптимизированы для определённого способа управления и не обладают возможностью доработки пользователем. В дипломной работе предлагается реализация концепции «умного дома» на основе микроконтроллеров AVR и операционной системы Linux. Данная реализация может быть доработана с учетом расширяющихся возможностей операционной системы Linux. Именно расширяемость программной части комплекса делает этот проект уникальным. Рядовые пользователи не знакомы с программированием микроконтроллеров, а установить простое программное обеспечение может почти каждый. Программисты-любители же легко смогут разработать свои скрипты для ОС «Linux».

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

Всё это делает разработанную систему очень гибкой и доступной.

1. Аналитическая часть

1.1 Общая схема работы системы

При разработке комплекса основной целью являлось сделать систему независимой от персонального компьютера, поэтому в основе системы лежит блок с микроконтроллером AVR - ATMEGA16 (рисунок 1), который согласует работу всех устройств, опрашивает датчики, включает и выключает реле, выводит на дисплей информацию и работает с управляющим устройством через RS-232 интерфейс. Работу с сетью обеспечивает ОС «Linux», в качестве такого устройства был взят бытовой роутер, который был доработан для работы с микроконтроллером через RS-232. В результате чего получилось идеальное решение для дома - он не шумит и очень экономно расходует электроэнергию, что позволяет использовать его круглосуточно. Под ОС «Linux» работает серверное программное обеспечение, которое обеспечивает работу с локальной сетью и сетью Интернет. Клиентские приложения могут быть установлены на любое устройство и ОС, после подключения к серверу с их помощью можно удалённо контролировать бытовую технику и управлять ей, а при использовании веб-сервера это можно делать через любой веб-браузер. При желании всю систему можно расширить, подключая дополнительные модули и устанавливая дополнительное программное обеспечение. Таким образом, представленный комплекс позволяет управлять устройствами как локально, так и удалённо.

1.2 Микроконтроллеры AVR

AVR -- это семейство восьмибитных микроконтроллеров фирмы Atmel.

Описание архитектуры

Микроконтроллеры AVR имеют гарвардскую архитектуру (программа и данные находятся в разных адресных пространствах) и систему команд, близкую к идеологии RISC. Процессор AVR имеет 32 8-битных регистра общего назначения, объединённых в регистровый файл. В отличие от «идеального» RISC, регистры не абсолютно ортогональны:

· Три «сдвоенных» 16-битных регистра-указателя X (r26:r27), Y (r28:r29) и Z (r30:r31)

· Некоторые команды работают только с регистрами r16…r31.

· Результат умножения (в тех моделях, в которых есть модуль умножения) всегда помещается в r0:r1

Система команд

Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит). Большинство команд выполняется за 1 такт.

Всё множество команд микроконтроллеров AVR можно разбить на несколько групп:

· команды логических операций

· команды арифметических операций и команды сдвига

· команды операции с битами

· команды пересылки данных

· команды передачи управления

· команды управления системой

Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращённые команды» IN/OUT.

Семейства микроконтроллеров

Стандартные семейства:

· tinyAVR

· Флеш-память 8 Кб, SRAM 512 б, EEPROM 512 б

· Число линий В/В 6-18 (общее количество выводов 8-32)

· Ограниченный набор периферийных устройств

· megaAVR

· Флеш-память 256 Кб, SRAM 8 Кб, EEPROM 4 Кб

· Число линий В/В 23-86 (общее количество выводов 28-100)

· Аппаратный умножитель

· Расширенная система команд и периферийных устройств

· XMEGA AVR

· Флеш-память 384 Кб, SRAM 32 Кб, EEPROM 4 Кб

· 4-ех канальный DMA-контроллер

· Инновационная система обработки событий

Был выбран микроконтроллер ATMEGA16 из серии megaAVR, т.к. он не очень дорогой, имеет при этом достаточное количество памяти, линий данных и лёгкие в освоении средства разработки.

Отличительные особенности ATMEGA16:

· 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением

· Прогрессивная RISC архитектура

· 130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл

· 32 8-разрядных рабочих регистра общего назначения

· Полностью статическая работа

· Производительность приближается к 16 MIPS (при тактовой частоте 16 МГц)

· Встроенный 2-цикловый перемножитель

· Энергонезависимая память программ и данных

· 16 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)

· Обеспечивает 1000 циклов стирания/записи

· Дополнительный сектор загрузочных кодов с независимыми битами блокировки

· Внутрисистемное программирование встроенной программой загрузки

· Обеспечен режим одновременного чтения/записи (Read-While-Write)

· 512 байт EEPROM

· Обеспечивает 100000 циклов стирания/записи

· 1 Кбайт встроенной SRAM

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

· Интерфейс JTAG (совместимый с IEEE 1149.1)

· Возможность сканирования периферии, соответствующая стандарту JTAG

· Расширенная поддержка встроенной отладки

· Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки

· Встроенная периферия

· Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения

· Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения

· Счетчик реального времени с отдельным генератором

· Четыре канала PWM

· 8-канальный 10-разрядный аналого-цифровой преобразователь

· 8 несимметричных каналов

· 7 дифференциальных каналов (только в корпусе TQFP)

· 2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат (только в корпусе TQFP)

· Байт-ориентированный 2-проводный последовательный интерфейс

· Программируемый последовательный USART

· Последовательный интерфейс SPI (ведущий/ведомый)

· Программируемый сторожевой таймер с отдельным встроенным генератором

· Встроенный аналоговый компаратор

· Специальные микроконтроллерные функции

· Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания

· Встроенный калиброванный RC-генератор

· Внутренние и внешние источники прерываний

· Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC

· Выводы I/O и корпуса

· 32 программируемые линии ввода/вывода

· 40-выводной корпус PDIP и 44-выводной корпус TQFP

· Рабочие напряжения

· 2,7 - 5,5 В (ATMEGA16L)

· 4,5 - 5,5 В (ATMEGA16)

· Рабочая частота

· 0 - 8 МГц (ATMEGA16L)

· 0 - 16 МГц (ATMEGA16)

Рисунок 2 - Блок схема ATMEGA16

Рисунок 3 - Расположение выводов ATMEGA16

1.3 Компоненты основного модуля

Кроме микроконтроллера ATMEGA16 в основном модуле используются и другие компоненты:

· Кварцевый резонатор на 16МГц

· Знакогенерирующий дисплей Winstar WH2402A

· Конвертор уровней Maxim MAX232

· Два цифровых датчика температуры Dallas DS1820

· Датчик движения

· Панель с кнопками

· Промежуточные твёрдотельные реле

Рассмотрим каждый из компонентов подробнее.

1.3.1 Системная синхронизация и тактовые источники

В микроконтроллерах AVR доступен широкий выбор источников тактовой частоты центрального процессора. Выбор между ними следует делать на основе технических требований от итогового устройства.

На рисунке ниже представлены источники синхронизации и распределение синхроимпульсов к встроенным блокам ATMEGA16. Не обязательно вся синхронизация должна работать в одно и тоже время. В целях снижения энергопотребления тактирование неиспользуемых модулей может быть прекращено путем перевода в различные режимы сна.

Рисунок 4 - Источники синхронизации

Синхронизация ЦПУ - clkCPU

Синхронизация ЦПУ подключается к модулям микроконтроллера, которые связаны с работой ядра AVR. Примерами таких модулей являются файл регистров общего назначения, регистр статуса и память данных, выполняющая функцию стека. Остановка синхронизации ЦПУ приводит к прекращению выполнения ядром любых действий и вычислений.

Синхронизация ввода-вывода - clkI/O

Синхронизация ввода-вывода используется основными модулями ввода-вывода, в т.ч. таймеры-счетчики, SPI и USART. Она также используется модулем внешних прерываний, но в некоторых случаях внешние прерывания детектируются в асинхронном режиме для поддержки работоспособности внешних прерываний даже при отключенной синхронизации. Также обратите внимание, что после отключения данной синхронизации (во всех режимах сна) двухпроводной интерфейс TWI продолжает наблюдать за передаваемым по шине адресом асинхронно.

Синхронизация флэш-памяти - clkFLASH

Синхронизация флэш-памяти тактирует работу интерфейса флэш-памяти. Обычно эта синхронизация работает одновременно с синхронизацией ЦПУ.

Синхронизация асинхронного таймера - clkASY

Синхронизация асинхронного таймера используется для тактирования асинхронного таймера-счетчика внешним кварцевым резонатором частотой 32 кГц. Данный тактовый генератор позволяет использовать таймер-счетчик как счетчик реального времени, даже при переводе микроконтроллера в режим сна.

Синхронизация АЦП - clkADC

АЦП тактируется обособленным блоком синхронизации. Это позволяет остановить работу синхронизации ЦПУ и ввода-вывода на время преобразования АЦП в целях снижения влияния цифрового шума на результат преобразования. С помощью этого достигается более точный результат преобразования.

Источники синхронизации

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

Таблица 1 - Выбор опций синхронизации

Источники синхронизации

CKSEL3..0(1)

Внешний кварцевый/керамический резонатор

1111 - 1010

Внешний низкочастотный кварцевый резонатор

1001

Внешний RC-генератор

1000 - 0101

Встроенный калиброванный RC-генератор

0100 - 0001

Внешняя синхронизация

0000

При выходе ЦПУ из режима выключения (Power-down) или экономичного режима (Power-save) выбранный источник синхронизации используется по истечении времени на запуск, тем самым гарантируя стабильность работы генератора перед первым выполнением инструкции. Запуск микроконтроллера, инициированный сбросом (reset), сопровождается дополнительной задержкой для достижения питанием стабильного уровня перед переводом микроконтроллера в нормальный режим работы. Генератор сторожевого таймера используется для синхронизации данного модуля, который формирует задержку при запуске. Длительность генерируемой задержки определяется количеством импульсов генератора сторожевого таймера. Частота генератора сторожевого таймера зависит от напряжения питания.

Таблица 2 - Количество тактов сторожевого таймера

Типичное время переполнения (VCC = 5.0В)

Типичное время переполнения (VCC = 3.0В)

Количество тактов

4.1 мс

4.3 мс

4K (4096)

65 мс

69 мс

64K (65536)

Первоначальный источник синхронизации

Микроконтроллер поставляется с установками CKSEL = “0001” и SUT = “10”. Эти значения соответствуют выбору в качестве источника синхронизации внутреннего RC-генератора с максимальным временем старта. Данная настройка гарантирует всем пользователям возможность установить требуемый источник синхронизации с помощью внутрисистемного или параллельного программатора.

Кварцевый генератор

XTAL1 и XTAL2 - вход и выход, соответственно, инвертирующего усилителя, который может быть настроен для использования в качестве встроенного генератора. Для задания частоты может использоваться либо кварцевый либо керамический резонатор. Конфигурационный бит CKOPT выбирает один из двух режимов усилителя генератора. Если CKOPT запрограммирован, то амплитуда колебаний выходного сигнала генератора будет ограничена уровнями питания. Данный режим рекомендуется использовать при высоком уровне окружающих шумов или при использовании выхода XTAL2 в качестве источника синхронизации внешней схемы. Данный режим характеризуется широким частотным диапазоном. Если CKOPT - не запрограммирован, то амплитуда выходных колебаний генератора снижается. Использование данного режима позволяет существенно снизить потребляемую мощность, но при этом ограничен частотный диапазон и нельзя XTAL2 использовать для внешней синхронизации.

При использовании резонаторов максимальная частота равна 8 МГц, если CKOPT - не запрограммирован, и 16 МГц, если CKOPT- запрограммирован. C1 и C2 должны быть всегда равны независимо от использования кварцевого или керамического резонатора. Оптимальное значение емкостей конденсаторов зависит от используемого кварцевого или керамического резонатора, от значения паразитной емкости и от окружающего уровня электромагнитного шума. Рекомендации по выбору номиналов конденсаторов приведены в таблице ниже. Для керамических резонаторов необходимо использовать конденсаторы с номиналом, рекомендуемым производителем.

Таблица 3 - Рабочие режимы кварцевого генератора

CKOPT

CKSEL3..1

Частотный диапазон(1), МГц

Рекомендуемый диапазон номиналов C1 и C2 при использовании кварцевого резонатора

1

101

0.4-0.9

-

1

110

0.9-3.0

12пФ-22пФ

1

111

3.0-8.0

12пФ-22пФ

0

101, 110, 111

1.0-

12пФ-22пФ

Таблица 4 - Временная задержка при запуске для различных настроек

CKSEL0

SUT1..0

Длительность задержки при выходе из режима выключения и экономичного режима

Дополнительная задержка после сброса (VCC= 5.0В)

Рекомендуемая область применения

0

00

258 CK

4.1 мс

Керамический резонатор, быстро нарастающее питание

0

01

258 CK

65 мс

Керамический резонатор, медленно нарастающее питание

0

10

1K CK

-

Керамический резонатор, детектор питания (BOD) включен

0

11

1K CK

4.1 мс

Керамический резонатор, быстро нарастающее питание

1

00

1K CK

65 мс

Керамический резонатор, медленно нарастающее питание

1

01

16K CK

-

Кварцевый генератор, детектор питания (BOD) включен

1

10

16K CK

4.1 мс

Кварцевый резонатор, быстро нарастающее питание

1

11

16K CK

65 мс

Кварцевый резонатор, медленно нарастающее питание

Низкочастотный кварцевый генератор

Для использования часового кварцевого резонатора 32768 кГц в качестве источника синхронизации необходимо выбрать низкочастотный кварцевый генератор путем установки конфигурационных бит CKSEL равными “1001”. Подключение кварцевого резонатора показано на рисунке 19. Путем программирования конфигурационного бита пользователь может разрешить подключение встроенных конденсаторов к выводам XTAL1 и XTAL2, тем самым исключая необходимость применения внешних конденсаторов. Внутренние конденсаторы имеют номинал 36 пФ. После выбора данного генератора, длительности задержек при старте определяются конфигурационными битами SUT (Таблица 5).

Таблица 5 - Длительности задержек

SUT1..0

Длительность задержки при выходе из режима выключения и экономичного режима

Дополнительная задержка после сброса (VCC= 5.0В)

Рекомендуемая область применения

00

1K CK(1)

4.1 мс

Быстро нарастающее питание или включен детектор питания BOD

01

1K CK(1)

65 мс

Медленно нарастающее питание

10

32K CK

65 мс

Стабильная частота при старте

11

Зарезервировано

Внешний RC-генератор

Для приложений некритичных к стабильности временных характеристик в качестве источника синхронизации может использоваться внешняя RC-цепь, подключение. Тактовая частота грубо определяется выражением f = 1/(3RC). Номинал конденсатора C должен быть не менее 22 пФ. Путем программирования конфигурационного бита CKOPT пользователь может разрешить подключение внутреннего конденсатора 36 пФ между XTAL1 и GND (рисунок), тем самым исключая необходимость применения внешнего конденсатора. Более подробная информация о работе генератора и о выборе номиналов R и C приведена в рекомендациях по применению внешнего RC-генератора.

Рисунок 5 - Внешний RC генератор

Генератор может работать в четырех различных режимах, каждый из которых ориентирован на специфический частотный диапазон. Рабочий режим выбирается конфигурационными битами CKSEL3..0 (

Таблица 6).

Таблица 6 - Рабочие режимы внешнего RC генератора

CKSEL3..0

Частотный диапазон, МГц

0101

- 0.9

0110

0.9 - 3.0

0111

3.0 - 8.0

1000

8.0 - 12.0

После разрешения работы данного генератора длительность задержки при старте определяется установками конфигурационных бит (Таблица 5).

Таблица 7 - Длительности задержек при старт после выбора внешнего RC-генератора

SUT1..0

Длительность задержки при выходе из режима выключения и экономичного режима

Дополнительная задержка после сброса (VCC= 5.0В)

Рекомендуемая область применения

00

18 CK(1)

-

Включен детектор питания BOD

01

18 CK

4.1 мс

Быстро нарастающее питание

10

18 CK

65 мс

Медленно нарастающее питание

11

6 CK (1)

4.1 мс

Быстро нарастающее питание или включенный детектор питания BOD

Встроенный калиброванный RC-генератор

Встроенный калиброванный RC-генератор формирует фиксированные тактовые частоты 1.0, 2.0, 4.0 или 8.0 МГц. Данные значения частот являются номинальными и определены для напряжения питания 5В при 25 градусах. Одна из этих частот может быть выбрана в качестве тактовой, если запрограммировать конфигурационные биты CKSEL (

Таблица 8). После выбора микроконтроллер будет работать без внешних компонентов. Конфигурационный бит CKOPT должен быть всегда незапрограммированным, если используется внутренний RC-генератор. В процессе сброса калибровочный байт аппаратно записывается регистр OSCCAL, тем самым автоматически выполняя калибровку RC-генератора. При питании 5В, температуре 25 градусов и выбранной частоте генератора 1.0 МГц данный метод калибровки обеспечивает погрешность генерации частоты не хуже ± 3% от номинального значения. Использование методов калибровки во время работы микроконтроллера позволяет достичь точности ± 1% при любой заданной температуре и напряжении VCC. При использовании данного генератора в качестве тактового генератор сторожевого таймера также останется использоваться для тактирования сторожевого таймера и для задания длительности задержки при сбросе. Более подробная информация о предварительно запрограммированном калибровочном значении приведена в разделе “Калибровочный байт”.

Таблица 8 - Режимы встроенного калибрированного RC-генератора

CKSEL3..0

Номинальная частота, МГц

0001(1)

1.0

0010

2.0

0011

4.0

0100

8.0

После выбора данного генератора длительность задержки при запуске микроконтроллера определяется установками конфигурационных бит SUT (Таблица 9). Выводы XTAL1 и XTAL2 должны быть оставлены неподключенными (NC).

Таблица 9 - Длительности задержек при запуске с различными настройками встроенного калибрированного RC-генератора

SUT1..0

Длительность задержки при выходе из режима выключения и экономичного режима

Дополнительная задержка после сброса (VCC= 5.0В)

Рекомендуемые условия для применения

00

6 CK

-

Включен детектор питания BOD

01

6 CK

4.1 мс

Быстро нарастающее питание

10

6 CK

65 мс

Медленно нарастающее питание

11

Зарезервировано

Регистр калибровки генератора - OSCCAL

Разряды 7..0 - CAL7..0: Калибровочное значение для генератора

Запись значения калибровочного байта в данный регистр приведет к подстройке генератора на номинальную частоту. В процессе сброса калибровочное значение для частоты 1МГц (расположен в старшем байте строки сигнатуры) автоматически записывается в регистр OSCCAL. Если встроенный RC-генератор используется на других частотах, то калибровочный байт необходимо записывать программно. Для этого необходимо с помощью программатора считать значение калибровочного байта, затем сохранить его значение во флэш-память или ЭСППЗУ. После этого, калибровочное значение может быть считано программно, а затем записано в регистр OSCCAL. Если в регистр OSCCAL записать ноль, то выбирается минимальная частота. Запись ненулевого значения приводит к повышению частоты генератора. Запись $FF - к выбору максимальной частоты. Калиброванный генератор используется для синхронизации доступа к ЭСППЗУ и флэш-памяти. Во время выполнения записи в ЭССПЗУ или во флэш-память не следует выполнять калибровку на частоту выше на 10% от номинальной. В противном случае, запись в ЭССПЗУ или во флэш-память может быть некорректной. Обратите внимание, что генератор откалиброван отдельно на частоты 1.0, 2.0, 4.0 или 8.0 МГц (

Таблица 10).

Таблица 10 - Диапазон частот встроенного RC-генератора

Значение OSCCAL

Минимальная частота в процентах от номинальной, %

Максимальная частота в процентах от номинальной, %

$00

50

100

$7F

75

150

$FF

100

200

Внешняя синхронизация

Если необходимо тактировать микроконтроллер от внешнего источника, то его необходимо подключить к выводу XTAL1. В этом случае внешняя синхронизация должна быть разрешена записью в конфигурационные биты CKSEL значения “0000”. Если запрограммировать конфигурационный бит CKOPT, то между XTAL1 и GND будет подключен внутренний конденсатор номиналом 36 пФ.

Рисунок 6 - Схема подключения внешнего источника синхронизации

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

Таблица 11)

Таблица 11 - Длительность задержки при запуске при выборе внешней синхронизации

SUT1..0

Длительность задержки при выходе из режима выключения и экономичного режима

Дополнительная задержка после сброса (VCC= 5.0В)

Рекомендуемые условия для применения

00

6 CK

-

Включен детектор питания BOD

01

6 CK

4.1 мс

Быстро нарастающее питание

10(1)

6 CK

65 мс

Медленно нарастающее питание

11

Зарезервировано

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

Генератор таймер-счетчика

Выводы генератора таймера-счетчика TOSC1 и TOSC2 предназначены для непосредственного подключения кварцевого резонатора. В этом случае не требуются внешние конденсаторы. Генератор оптимизирован для совместной работы с часовым кварцевым резонатором 32.768 кГц. Подключение внешнего тактового источника к выводу TOSC1 не рекомендуется.

Планируется использовать часы, также понадобится достаточно точный отсчёт времени, поэтому было решено использовать внешний кварцевый резонатор на 8 МГц.

1.3.2 Знакогенерирующий дисплей

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

Рисунок 7 - Внешний вид дисплея

Дисплей поставляется уже с поддержкой кириллических символов (Рисунок 8), также в него можно загрузить до восьми собственных символов. Данные передаются по восьми или четырём проводам по протоколу контроллера HD44780, который является одним из самых распространённых среди дисплеев. Было решено использовать четырёхпроводную схему. Помимо шины данных требуется подключить ещё три провода для синхронизации, итого семь проводов. Для этого был выделен отдельный порт - скорость передачи данных в таком случае немного ниже, но при этом хватает выводов, что приводит к значительной экономии.

Рисунок 8 - Заводской шрифт в CGRAM памяти дисплея

1.3.3 ДУ приёмник

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

Этот ДУ приёмник поддерживает большинство бытовых пультов дистанционного управления, поэтому почти в любом доме можно найти пульт дистанционного управления, который сразу будет работать с системой. Можно использовать пульт от телевизора, видеомагнитофона и т.п. TSOP1736 имеет всего три контакта - земля (GND), питание (Vs) и данные (OUT). На самом деле он представляет из себя сложный комплекс устройств (Рисунок 10), который позволяет получить на выходе уже цифровой сигнал, остаётся его только декодировать и выполнить соответствующую команду.

Рисунок 10 - Схема строения ДУ приёмника

1.3.4 Датчики температуры

Было решено не ограничиваться контролем бытовой техники и использовать некоторые датчики системе. Так были установлены два датчика температуры DS1820. В них используется технология «One-Wire», разработанная компанией Dallas, которая позволяет подключить к одному проводу неограниченное количество датчиков и получать информацию о температуре прямо в цифровом виде. DS1820 поставляется в корпусе TO92 и имеет три контакта. Технология One-Wire позволяет использовать паразитное питание, т.е. питать датчик от линии данных. Было решено сделать именно так, в результате используется только два контакта - земля (GND) и данные (DQ).

Линия данных работает как на приём, так и на передачу. Таким образом, теоретически неограниченное количество датчиков используют только один вывод на микроконтроллере, что очень экономично. Каждый датчик имеет свой уникальный 64-битный серийный номер, который записан в ROM память, диапазон температур тоже очень широкий: от -55°C до +125°C, а точность измерения при этом составляет ±0.5°C. Всё это делает датчики DS1820 отличным выбором для проекта.

1.3.5 Конвертор уровней USART и RS-232

В микроконтроллере ATMEGA16 есть встроенный USART (Universal Asynchronous Receiver/Transmitter) контроллер. Это универсальный асинхронный приёмопередатчик, используется он для связи микроконтроллера с другими цифровыми устройствами и компьютером. Было решено использовать USART для связи с Linux устройством, при этом планируется сделать интерфейс как можно более универсальным. Встаёт несколько проблем:

· На персональных компьютерах нет USART порта, но есть COM порт, который работает с данными по протоколу RS-232.

· Длина провода при соединении устройств через USART сильно ограничена, буквально до нескольких сантиметров. При использовании протокола RS-232 это ограничение увеличивается до десятков метров.

USART отличается от RS-232 только уровнями напряжений, существует множество готовых устройств для преобразования этих уровней. Было решено воспользоваться MAX232 от компании Maxim, эта микросхема уже давно стала индустриальным стандартом, и её можно встретить почти в каждом устройстве, работающим с RS-232. Использовать её достаточно легко (Рисунок 12), из дополнительных компонентов нужно использовать только четыре конденсатора на 1 мкФ.

Рисунок 12 - Схема подключения конвертера

Работает MAX232 как на приём, так и на передачу. Это позволяет легко реализовать двухстороннюю связь на большом расстоянии с любым устройством, обладающим COM (RS-232) портом.

2. Практическая часть

2.1 Разработка программы для микроконтроллера

Во втором разделе дипломной работы подробно рассматривается разработка программного обеспечения комплекса. В случае с микроконтроллером микропрограмма, записываемая в него, называется прошивкой. Было решено написать её на языке C, используя среду WinAVR. Этот пакет содержит компилятор C/C++ для микроконтроллеров AVR и набор готовых библиотек, облегчающих разработку. Самое сложное в данном проекте - согласование всех цифровых компонентов, ведь у каждого из них свой протокол обмена данными, соответственно надо написать модули для работы с этими протоколами, основываясь на технической документации к компонентам. Рассмотрим каждый из них подробнее.

2.1.1 Работа с контроллером дисплея HD44780

Разработку устройства, основанного на микроконтроллере, стоит начинать с организации ввода и вывода, иначе контролировать выполняемую программу будет невозможно. Дисплей Winstar WH2404 основан на контроллере HD44780, это очень популярный контроллер, на нём основаны почти все знакогенерирующие дисплеи. Для его связи с микроконтроллером используется семь проводов, под которые был выделен отдельный порт:

· A0 - RS, определяет тип данных

· A1 - RW, определяет направление данных

· A2 - E, синхронизация

· A3 - D4, данные

· A4 - D5, данные

· A5 - D6, данные

· A6 - D7, данные

Логическая структура LCD контроллера HD44780.

Контроллер имеет свой блок управления, который обрабатывает команды и память. Она делится на три вида:

DDRAM - память дисплея. Все что запишется в DDRAM, будет выведено на экран. Например, при записи туда кода 0?31 -- на экране выскочит символ “1? т.к. 0х31 это ASCII код цифры 1. Но есть тут одна особенность - DDRAM память гораздо больше, чем видимая область экрана. DDRAM содержит 80 ячеек -- 40 в первой строке и 40 во второй, а дисплей может двигаться по этой памяти, высвечивая видимую область. Для перемещения дисплея есть специальная команда. Также есть понятие курсора -- это место, в которое будет записан следующий символ, т.е. текущее значение счетчика адреса. Курсор не обязательно может быть на экране, он может располагаться и за экраном или быть отключен вовсе.

CGROM - таблица символов. Когда мы записываем в ячейку DDRAM байт, то из таблицы берется символ и рисуется на экране. CGROM нельзя изменить, поэтому важно, чтобы она имела кириллические символы.

CGRAM - тоже таблица символов, но ее мы можем менять, создавая свои символы. Адресуется она линейно, то есть вначале идет 8 байт одного символа, построчно, снизу вверх -- один бит равен одной точке на экране. Потом второй символ также. Поскольку знакоместо составляет 5 на 8 точек, то старшие три бита роли не играют. Всего в CGRAM может быть 8 символов, соответственно CGRAM имеет 64 байта памяти. Эти программируемые символы имеют коды от 0х00 до 0х08. Например, записав в первые 8 байт CGRAM (первый символ с кодом 00) какую-то информацию, и записав в DDRAM нуль (код первого символа в CGRAM) мы увидим на экране наш символ.

Доступ к памяти осуществляется достаточно легко: выбираем командой в какую именно память и начиная с какого адреса будут записываться данные, затем просто посылаем эти данные. Если указано, что записываем в DDRAM то данные выводятся на экран (или в скрытую область), а если в CGRAM то данные будут записаны в память знакогенератора.

Контроллер DH44780 предоставляет нам несколько простых команд. О том, что передается дисплею - команда или данные, определяется состоянием вывода RS. Сама команда состоит из старшего бита, определяющего, за что отвечает данная команда, и битов параметров, указывающих контроллеру HD44780 что именно требуется сделать. Таблица команд приведена ниже.

Таблица 12 - Команды контроллера HD44780

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Значение

0

0

0

0

0

0

0

1

Очистка экрана. Счетчик адреса на 0 позицию DDRAM

0

0

0

0

0

0

1

-

Адресация на DDRAM сброс сдвигов, Счетчик адреса на 0

0

0

0

0

0

1

I/D

S

Настройка сдвига экрана и курсора

0

0

0

0

1

D

C

B

Настройка режима отображения

0

0

0

1

S/C

R/L

-

-

Сдвиг курсора или экрана, в зависимости от битов

0

0

1

DL

N

F

-

-

Выбор числа линий, ширины шины и размера символа

0

1

AG

AG

AG

AG

AG

AG

Переключить адресацию на SGRAM и задать адрес в SGRAM

1

AD

AD

AD

AD

AD

AD

AD

Переключить адресацию на DDRAM и задать адрес в DDRAM

Значения бит:

· I/D - инкремент или декремент счетчика адреса. По умолчанию стоит «0» - инкремент. Т.е. каждый следующий байт будет записан в n+1 ячейку. Если поставить 1 - будет декремент.

· S - сдвиг экрана, если поставить «1», то с каждым новым символом будет сдвигаться окно экрана, пока не достигнет конца DDRAM.

· D - включить дисплей. Если поставить туда «0» то изображение исчезнет, а чтобы картинка появилась в эту позицию надо записать «1».

· С - включить курсор в виде прочерка. «1» - включился курсор, «0» - выключить.

· B - вид курсора. «1» - в виде прямоугольника, «0» - в виде чёрточки.

· S/C - сдвиг курсора или экрана. «0» - сдвигается курсор, «1» - экран. По одному разу за команду

· R/L - определяет направление сдвига курсора и экрана. «0» - влево, «1» - вправо.

· D/L - бит определяющий ширину шины данных. «1» - 8 бит, «0» - 4 бита.

· N - число строк. «0» - одна строка, «1» - две строки.

· F - размер символа. «0» - 5х8 точек, «1» - 5х10 точек.

· AG - адрес в памяти CGRAM.

· АD - адрес в памяти DDRAM.

Соответственно перед началом работы (т.е. при включении устройства) нужно сначала инициализировать дисплей. Для этого требуется выполнить следующие команды (Рисунок 13).

Рисунок 13 - Инициализация дисплея

Для наглядности привожу временные диаграммы для записи и чтения данных.

Рисунок 14 - Запись данных

Рисунок 15 - Чтение данных

Для упрощения работы с передачей и приёмом данных было написано несколько функций.

Функция «hd44780_outnibble» для записи 4 бит данных, т.к. используется четырёхбитную шину передачи данных:

static void

hd44780_outnibble(uint8_t n, uint8_t rs)

{

uint8_t x;

HD44780_PORTOUT &= ~_BV(HD44780_RW);

if (rs)

HD44780_PORTOUT |= _BV(HD44780_RS);

else

HD44780_PORTOUT &= ~_BV(HD44780_RS);

x = (HD44780_PORTOUT & ~HD44780_DATABITS) | ((n << HD44780_D4) & HD44780_DATABITS);

HD44780_PORTOUT = x;

(void)hd44780_pulse_e(false);

}

Функция «hd44780_outbyte» для записи байта данных, соответственно она два вызывает функцию «hd44780_outnibble»:

void

hd44780_outbyte(uint8_t b, uint8_t rs)

{

hd44780_outnibble(b >> 4, rs);

hd44780_outnibble(b & 0xf, rs);

}

Функция «hd44780_innibble» для чтения четырёх бит данных:

static uint8_t

hd44780_innibble(uint8_t rs)

{

uint8_t x;

HD44780_PORTOUT |= _BV(HD44780_RW);

HD44780_DDR &= ~HD44780_DATABITS;

if (rs)

HD44780_PORTOUT |= _BV(HD44780_RS);

else

HD44780_PORTOUT &= ~_BV(HD44780_RS);

x = hd44780_pulse_e(true);

HD44780_DDR |= HD44780_DATABITS;

HD44780_PORTOUT &= ~_BV(HD44780_RW);

return (x & HD44780_DATABITS) >> HD44780_D4;

}

Функция «hd44780_inbyte» для чтения байта данных:

uint8_t

hd44780_inbyte(uint8_t rs)

{

uint8_t x;

x = hd44780_innibble(rs) << 4;

x |= hd44780_innibble(rs);

return x;

}

Вспомогательная функция «hd44780_wait_ready», которая ожидает ответа от дисплея:

void

hd44780_wait_ready(void)

{

while (hd44780_incmd() & HD44780_BUSYFLAG) ;

}

На основе всего этого теперь легко написать функцию «hd44780_init», которая инициализирует дисплей:

void

hd44780_init(void)

{

HD44780_DDR = _BV(HD44780_RS) | _BV(HD44780_RW) | _BV(HD44780_E)

| HD44780_DATABITS;

_delay_ms(15); /* 40 ms needed for Vcc = 2.7 V */

hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);

_delay_ms(4.1);

hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);

_delay_ms(0.1);

hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0);

hd44780_outnibble(HD44780_FNSET(0, 1, 0) >> 4, 0);

hd44780_wait_ready();

hd44780_outcmd(HD44780_FNSET(0, 1, 0));

hd44780_wait_ready();

hd44780_outcmd(HD44780_DISPCTL(0, 0, 0));

hd44780_wait_ready();

}

Все эти функции были помещены в файл «hd44780.c», который представляет из себя модуль низкоуровневой работы с дисплеем. Более высокоуровневые функции размещены в модуле «lcd.c».

Полная инициализация дисплея:

void

lcd_init(void)

{

hd44780_outcmd(HD44780_CLR);

hd44780_wait_ready();

hd44780_outcmd(HD44780_ENTMODE(1, 0));

hd44780_wait_ready();

hd44780_outcmd(HD44780_DISPCTL(1, 0, 0));

hd44780_wait_ready();

}

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

Для вывода буфера используется функция «lcd_update»:

void lcd_update()

{

unsigned char c;

hd44780_wait_ready();

hd44780_outcmd(HD44780_DDADDR(0));

for (c = 0; c<24; c++)

{

hd44780_wait_ready();

hd44780_outdata(MainBuff[c]);

}

hd44780_wait_ready();

hd44780_outcmd(HD44780_DDADDR(40));

for (c = 24; c<48; c++)

{

hd44780_wait_ready();

hd44780_outdata(MainBuff[c]);

}

}

А для записи в буфер используется функция «lcd_putchar»:

int lcd_putchar(char c)

{

c = RusEncode(c);

if (c == '\n')

{

iBuffPos = 24;

} else {

if (iBuffPos == -1) return 0;

MainBuff[iBuffPos] = c;

iBuffPos++;

if ((iBuffPos == 24) || (iBuffPos == 48)) iBuffPos = -1;

}

return 0;

}

Для записи данных в буфер была написана функция «lcd_print»:

void lcd_print(char* text)

{

while (*text)

{

lcd_putchar(*text);

text++;

}

}

Таким образом, можно вывести текст на дисплей, используя всего два вызвова: «lcd_print(`Текст')» и «lcd_update()», но лучше так не делать. Дело в том, что изначально все константы хранятся в оперативной памяти программы, а у микроконтроллера ATMEGA16 её всего два килобайта. Поэтому следует использовать специальную директиву компилятора «PROGMEM», чтобы хранить данные в программной области. Делается это так:

char Text PROGMEM = `Текст';

Однако, это накладывает некоторые ограничения - эти данные нельзя использовать напрямую, необходимо вызывать специальные функции для их чтения: «pgm_read_byte», «pgm_read_word» и т.д. Поэтому была написана ещё и функция, которая выводит на экран текст, автоматически читая его из программной области памяти:

void lcd_print_pgm(char* text)

{

char c;

while (c = pgm_read_byte(text), c)

{

lcd_putchar(c);

text++;

}

}

2.1.3 Работа с USART контроллером

Дисплей используется для взаимодействия устройства с человеком. Для связи с другими устройствами было решено использовать USART контроллер, который уже встроен в ATMEGA16.

Универсальный синхронный и асинхронный последовательный приемопередатчик (USART) предназначен для организации гибкой последовательной связи.

Отличительные особенности:

· Полнодуплексная работа (раздельные регистры последовательного приема и передачи)

· Асинхронная или синхронная работа

· Ведущее или подчиненное тактирование связи в синхронном режиме работы

· Высокая разрешающая способность генератора скорости связи

· Поддержка формата передаваемых данных с 5, 6, 7, 8 или 9 битами данных и 1 или 2 стоп-битами

· Аппаратная генерация и проверка бита паритета (четность/нечетность)

· Определение переполнения данных

· Определение ошибки в структуре посылки

· Фильтрация шума с детекцией ложного старт-бита и цифровым ФНЧ

· Три раздельных прерывания по завершении передачи, освобождении регистра передаваемых данных и завершении приема

· Режим многопроцессорной связи

· Режим удвоения скорости связи в асинхронном режиме

Краткий обзор.

Ниже представлена упрощенная функциональная схема USART. На рисунке жирным шрифтом выделены регистры и выводы USART.

Рисунок 16 - Передача одного байта информации через USART

Рисунок 17 - Функциональная схема USART контроллера

Пунктирной линией выделены три основных блока USART: тактовый генератор, передатчик и приемник. Регистры управления используются всеми блоками. Логика тактового генератора состоит из логики синхронизации, связанной с внешним тактовым входом (используется в подчиненном режиме) и генератора скорости связи. Вывод XCK (синхронизация передачи) используется только в режиме синхронной передачи. Передатчик состоит из одного буфера записи, последовательного сдвигового регистра, генератора паритета и управляющей логики, которая поддерживает различные форматы последовательной посылки. Буфер записи позволяет непрерывно передавать данные без каких-либо задержек между передачей посылок. Приемник является более сложным блоком USART, т.к. в его состав входят модули обнаружения данных и синхронизации. Модули обнаружения необходимы для асинхронного приема данных. Помимо модулей обнаружения в приемник входит устройство проверки паритета, сдвиговый регистр, и двухуровневый приемный буфер (UDR). Приемник поддерживает те же последовательные форматы, что и передатчик, и может определить ошибку в посылке (кадре), переполнение данных и ошибку паритета.

Инициализация.

Инициализация USART осуществляется через регистры UCSR и UBRR. Для этого была написана функция «USART_init»:

void USART_init(void)

{

#if F_CPU < 2000000UL && defined(U2X)

UCSRA = _BV(U2X);

UBRRL = (F_CPU / (8UL * UART_BAUD)) - 1;

#else

UBRRL = (F_CPU / (16UL * UART_BAUD)) - 1;

#endif

UCSRB = _BV(TXEN) | _BV(RXEN) | _BV(RXCIE);

}

Эта функция универсальная за счёт использования в ней формул с константой F_CPU, которая равна текущей тактовой частоте микроконтроллера в герцах.

Для передачи данных используется функция «USART_TransmitByte»:

void USART_TransmitByte( unsigned char data )

{

while ( !( UCSRA & (1<<UDRE)) );

UDR = data;

}

Она передаёт один байт данных, ожидая перед этим завершения предыдущей передачи. Для приёма данных используется прерывание RXC, которое вызывается автоматически.

2.1.4 Работа с датчиками температуры

Датчики температуры DS1820 работают на основе протокола «1-Wire». Интерфейс 1-Wire разработан фирмой Dallas Semiconductor. Этот протокол привлекателен малым количеством выводов микроконтроллера, требующихся для подключения практически неограниченного количества микросхем. В самом деле, двусторонний обмен требует всего 1 линию. Кроме того, ассортимент устройств с этим интерфейсом весьма широк. Наконец, протокол обмена по этому интерфейсу очень прост и легко реализуется программно практически на любых микроконтроллерах.

Рисунок 18 - Схема подключения 1-Wire устройств

На рисунке показана упрощенная схема аппаратной реализации интерфейса 1-Wire. Вывод DQ устройства представляет собой вход КМОП-логического элемента, который может быть зашунтирован (замкнут на общий провод) полевым транзистором. Сопротивление канала этого транзистора в открытом состоянии - около 100 Ом. Когда транзистор заперт - имеется небольшой ток утечки (примерно 5 мкА) на общий провод. Шина 1-Wire должна быть подтянута отдельным резистором к напряжению питания устройств (которое, кстати, может быть от 3 до 5В - уточняется по характеристикам конкретного устройства). Сопротивление этого резистора 4.7 К, однако, это значение рекомендовано только для достаточно коротких линий. Если шина 1-Wire используется для подключения удаленных на большое расстояние устройств, то сопротивление этого резистора следует уменьшить. Минимально допустимое его сопротивление - около 300 Ом, а максимальное - около пары-тройки десятков килоом.

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

Как происходит обмен информацией по шине 1-Wire.

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

· Любой обмен информацией начинается с подачи импульса сброса («Reset Pulse» или просто «RESET») в линию 1-Wire ведущим устройством.

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

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

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

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

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

Рисунок 19 - Имульс RESET

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


Подобные документы

  • Роль микроконтроллеров в современных системах управления. Проектирование схемы на основе микроконтроллера Aduc812, которая будет контролировать работу бытовой стиральной машины. Элементная база, описание и функционирование программы, ее листинг.

    курсовая работа [101,3 K], добавлен 23.12.2012

  • Архитектура автоматизированной информационной системы управления складом. Заказ материалов, подсистема учета материалов бытовой техники на цеховом складе. Внемашинное информационное обеспечение. Выбор инструментальной платформы для реализации системы.

    курсовая работа [1,6 M], добавлен 04.12.2014

  • Linux - ядро операционной системы с монолитной архитектурой. Прародители операционной системы Linux, ее стабильные и экспериментальные версии. Процесс внедрения Linux и свободного программного обеспечения в школах и государственных учреждениях России.

    реферат [18,2 K], добавлен 19.01.2013

  • Идея создания системы удаленного управления и контроля устройств. Разработка электрической принципиальной и структурной схемы. Обоснование выбора микроконтроллера и чипа ENC28J60. Обоснование выбора и отладки среды моделирования, программы и компилятора.

    курсовая работа [3,5 M], добавлен 26.08.2014

  • Методические аспекты перехода на СПО в условиях школьного образования. Аналоги Linux-программ при создании школьного комплекта свободного программного обеспечения. Методика использования альтернативной реализации Windows-интерфейса в системе Linux.

    дипломная работа [2,3 M], добавлен 03.05.2012

  • Понятие и сущность операционных систем, особенности их возникновения. История создания операционной системы Linux, ее основные характеристики, сетевые возможности. Анализ бизнес-модели производства и распространения "свободного" программного обеспечения.

    реферат [35,8 K], добавлен 05.04.2010

  • Изучение IT-инфраструктуры компании проката автомобилей. Основные требования к автоматизации движения товаров. Анализ создания конфигурации для оптового склада бытовой техники. Разработка информационно-логической модели автоматизированной системы.

    курсовая работа [1,1 M], добавлен 22.03.2021

  • Разработка приложения, которое осуществляет удаленный доступ управления компьютером с операционной системой Linux с компьютера с ОС Windows. Реализация функциональной части. Графический интерфейс клиента и сервера. Разработка интеграционных тестов.

    курсовая работа [1,1 M], добавлен 28.04.2014

  • Разработка встраиваемого в электронную аппаратуру микроконтроллера с целью обеспечения ввода данных с клавиатуры и отображения результатов обработки на индикации. Описание активного элемента (системная шина ISA). Программное обеспечение микроконтроллера.

    курсовая работа [848,9 K], добавлен 05.02.2016

  • Создание программного продукта, предназначенного для небольшой сети с оптимизацией ее работы на платформе операционной системы Linux; администрирование. Разработка модуля протоколов управления; методика тестирования подсистемы; системотехнический анализ.

    дипломная работа [5,4 M], добавлен 27.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.