ПодробнееАнализ сред программирования для МК 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

ПодробнееАнализ сред программирования для МК



Программирование микроконтроллеров является неотъемлемой частью разработки самостоятельного электронного устройства. На данном этапе развития электроники, наиболее популярными микроконтроллерами (МК) есть: PIC, MSP, AVR, STM, ARM (процессор). Для каждого вида МК есть узконаправленная среда программирования. Это связано с внутренней структурой МК и технического обеспечения записи программы в память МК. Если проанализировать существующие среды программирования МК, то найти универсальные среды программирования МК очень сложно. При анализе сред программирования было выявлено только одну универсальную среду программирования микроконтроллеров – FlowCode, функции которой позволяют программировать МК PIC, AVR, ARM.

FlowCode – графическая универсальная середа программирования МК. Программирование осуществляется благодаря построению логической структуры, т.е. блок-схем, аналогично среде HiAsm. Функция экспорта позволяет экспортировать написаний код PIC МК в программу AVR МК и наоборот. Дополнением данной среды программирование является создание HEX-кода, который может быть использовать при прошивки МК, или при проектировании схемы с поддержкой МК, например, в среде Proteus.

Большинство проанализированных сред программирования МК были предназначены для AVR. Среда Algorithm Builder – это графическая среда программирования МК AVR. Тип графической разработки в данной среде, отличается от FlowCode. Як говорит автор программы, написание кода осуществляется в 3-5 раз быстрее. Среда русифицирована и поддерживает автоматическое перекодирование строк в ANSI-кода Windows в код русифицированного буквенно-цифрового ЖКИ. Среда программирования объединяет в себе графический редактор, компилятор алгоритма, симулятор микроконтроллера, внутрисхемный программатор, функции работы с EEPROM.

Среди платных сред программированияAVR МК есть AVR Studio, IAR Systems, Image Craft, WinAVR, CodeVisionAVR.

CodeVisionAVR–популярная условно-бесплатная среда программирования AVR МК. Объединяет в себе Си-подобный язык программирования и ассемблер. Функции программы позволяют самостоятельно прошивать МК и устанавливать fuse-бити и ПЗУ.Конечным результатом разработки программы под. МК есть создание HEX, BIN или ROM-файла, для прошивки МК с помощью программатора.

Среда IAR Systems поддерживает программирования МК AVR и MSP430, но функции программирования двух МК не объединены в одной среде. Для каждого МК были разработаны отдельные среды программирования. Аналогичным образом была разработана среда программированияImage Craft (ICC). ICC поддерживает Си-подобный синтаксис и ассемблер. IAR Systems и Image Craft в их состав входит целенаправленные библиотеки по работе с отдельными частями МК. В состав ICC добавлена утилита для генерации кода и инициализации периферии МК, внедрен ANSI Terminal Emulator, который предоставляет возможность работать с COM-портом.

Среда Code Composer Studio (CCS) для программирования МК MSP основана на базе стоковой универсальной среды программирования Eclipse. CCS как вышеперечисленные среды программирования, имеет Си-подобный язык программирования. Данная среда программирования поддерживает разработку для DSP (Digital signal processor) микроконтроллеров, процессоров АРМ семейства TMS320 и MSP430. Данная среда в сравнении с ICC или CCS использует Java-машину и требует больше системных ресурсов.

Energia – среда программирования для МК MSP430, которая наиболее популярной средой программирования среди начинающих. Имеет Си-подобный язык программирования, но он отличается от языков, которые используются в вышеперечисленных средах. Язык Energia (и Arduino IDE) более понятный, подобный английским словам. Energia поддерживает дополнительные библиотеки, в состав которых входят драйвера для подключение платформы LaunchPad MSP430 на базе ARM Cortex, FraunchPad и lm4f120 StallerPad. Данная среда программирования является модифицированной версией среды Arduino IDE. Работает c 1, 16МГц МК MSP430 и 80 МГц lm4f120. Внедрена функция просмотра COM-порта.

Virtual breadboard – середа разработки с поддержкой проектирования электрической схемы на базе платформы Arduino под управлением МК ATMEL AVR. При анализе использовалась программа версии 4.2.9, которая поддерживает разработку программ под. МК PIC. Синтаксис подобный среде программирования Energia и Arduino IDE. Данная середа является платной, в программу внедрены примеры, и модели электронных элементов на основе которых проектируется устройство.

Для разработки программ под МК PIC существует среда MPLAB IDE. Создание программы проходит в структурированном виде, встроенный программный симулятор моделирования исполнения программ в МК с учетом состояния портов ввода-вывода, эмулятор работы МК в масштабе реального времени непосредственно в устройстве пользователя. Разработка проекта ведется на языке С или ассемблер. Еще одной средой программирования для МК PIC является mikгоС. Среда mikгоС включает в себя библиотеки, которые поддерживают следующие устройства и интерфейсы:

— встроенный аналого-цифровой перекодировщик (АЦП) микроконтроллера;
— встроенную энергонезависимую память EEPROM микроконтроллера;
— встроенные широтно-импульсные модуляторы (PWM) микроконтроллера;
— внешние сменные карты памяти типа MMC, SD и Compact Flash;
— файловую систему FAT;
— алфавитно-цифровой жидкокристаллические индикаторы (LCD PKI);
— графические жидкокристаллические индикаторы (GLCD, РК-дисплей);
— интерфейсы I2C, SPI, 1-Wire, USART, RS-485, CAN, PS / 2, USB (HID) и Ethernet.

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

Если Вы используете другую среду программирования МК, которая в данном посте не указана, пожалуйста, напишите. Указанная вами среда будет проанализирована и добавлена в пост.

 

D Workshop IDE

Специализированная программная среда, предназначенная для работы с микропроцессорами в графических контроллерах и готовых дисплейных модулях компании 4D Systems. Freeware.

Подробнее

ПРОГРАММНАЯ ЧАСТЬ

 

Языки программирования.

 

Машинный язык – язык низкого уровня – является единственным языком,

который непосредственно воспринимает управляющее устройство процессора.

Он характеризуется высокой степенью детализации выполняемых операций Команды, написанные на машинном языке, представляются в виде двоичных кодов. Для программиста этот язык неудобен, так как требуется оперировать с

длинными кодовыми комбинациями. Написание длинных программ на этом языке весьма трудоемко, а чтение затруднительно. Процесс написания программ занимает много времени, возможно появление значительного количества ошибок, процесс редактирования весьма трудоемкий. К достоинствам языка относятся высокая производительность при написании коротких программ, высокая скорость выполнения программы и минимальный объем занимаемой памяти.

 

Язык Ассемблера

 

Язык ассемблера (от англ. to assemble – собирать, компоновать) – это символическое представление машинного языка. Команды языка ассемблера позволяют существенно упростить составление, чтение и отладку программ функционирования микропроцессорной системы по сравнению с командами на машинном языке. Язык ассемблера, считают наиболее простым языком программирования.Имеется практически взаимооднозначное соответствие между командами языка ассемблера и машинными командами микропроцессора. Каждая машинная команда обозначается символом, представляющим собой сокращенную форму полной записи наименования данной команды на английском языке. Символ кодирования названия и содержания команды запоминается и воспринимается намного легче, чем сочетание нулей и единиц. Примеры типичных операций и их мнемонических обозначений приведены в таблице 3.2.1. При записи полного набора команд программы мнемонические обозначения применяют как для кода операции, так и для операндов и их адресов (последние представляются символическими именами).

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

Программист получает распечатку программ, называемую листингом, который содержит и исходную, и транслированную программы.

 

Таблица 3.2.1

Типичные операции

 

Транслятор, который осуществляет перевод программы, написанной на языке

ассемблера, в машинный код, называют ассемблером. Язык ассемблера – наиболее распространенный язык программирования. Программа на языке ассемблера – это последовательность команд (операторов), описывающая решение задачи. Все команды имеют одинаковую структуру. Команда, написанная на языке ассемблера, делится на четыре части, которые называют полями: Метка, Операция, Операнд, Комментарий. Краткая характеристика приведена ниже.

Метка – это имя, присваиваемое тем командам, на которые в программе имеются ссылки. Иначе говоря, помечают те операции, к которым хотят обращаться в программе по ходу ее выполнения. Но так как ссылаются не на каждую команду, то отдельные поля остаются пустыми. Поле метки отделяют от соседнего поля двоеточием.

Операция – это действие, которое предписывается командой. Поле операции содержит мнемонический код операции.

Операнды – данные, над которыми выполняется операция. В поле операнда может быть помещен не сам операнд, а его адрес. Если в этом поле заняты дваоперанда, то их разделяют запятой.

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

ориентированные языки ориентированы на определенные классы однотипных задач и представляют своим пользователям средства определения более или менее широкого набора функций, подлежащих выполнению. Такие языки определяют задание для ЭВМ в терминах функций, которые надо выполнить без детализации шагов, позволяющих осуществить эти функции. Проблемное ориентирование достигается в результате использования пакетов прикладных программ (иначе называемых проблемными или функциональными), т. е. программ, осуществляющих решение задачи, необходимой непосредственно пользователю вычислительной системы. Естественно, что для ввода программы, написанной на языке высокого уровня, в микропрограммируемое устройство необходимы трансляторы. Получаемые в результате трансляции программы, представленные на машинном языке, требуют существенно большего объема памяти, чем ассемблированные программы.

Мера превышения зависит от опыта программиста. Важно подчеркнуть, что высококвалифицированный программист составляет программу на языке высокого уровня в 5,…, 10 раз быстрее, чем на языке ассемблера.

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

 

Виды программ

 

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

Для выполнения трансляции исходной программы в объектную, получения

рабочей программы и ввода ее в микропроцессорную систему изготовитель микропроцессора или микро-ЭВМ снабжает пользователя набором вспомогательных (служебных, сервисных) программ. Они относятся к системному программному обеспечению, которое разделяют на резидентное программное обеспечение и кроссовое программное обеспечение. Резидентное обеспечение стоит из набора служебных программ, реализованных в той же микро-ЭВМ (микропроцессорной системе), которая будет работать согласно прикладной программе пользователя.

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

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

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

Управление функционированием микро-ЭВМ при трансляции, проверке, корректировке и вводе прикладных программ пользователя проводится с помощь резидентной программы-монитора.

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

программы, называемой редактором текста, или просто редактором.

 

Отладка программы

 

При составлении программы могут быть допущены ошибки. Их необходимо выявить и исключить. Эта процедура называется отладкой программы. Для проведения отладки используют аппаратные и программные средства. Как уже указывалось, существует специальная служебная программа-отладчик. Ее записывают в ПЗУ микропроцессорной системы. Отладчик позволяет проверить содержимое ячеек внешней памяти и регистров микропроцессора, которое при необходимости может быть изменено. Если в проверяемой программе указаны контрольные точки, то по достижении такой точки выполнение программы приостанавливается. Программист получает возможность сверить состояние микропроцессорной системы с ожидаемым состоянием и сделать заключение о том, между какими двумя контрольными точками находится ошибка Уменьшением расстояния между двумя точками удается локализовать ошибку. Иногда для исправления ошибки программы в нее требуется вставить несколько команд. Такую вставку делают в исходной программе, и после получается новая версия объектной программы.

Касаясь аппаратных средств, применяемых для отладки, следует сказать об эмуляторе. Под эмуляцией [от англ. emulation – подражание (примеру)] в вычислительной технике понимают метод приспособления одних вычислительных машин к решению задач, подготовленных для других машин. Иначе говоря, эмуляция – это имитация одной системы средствами другой системы без какой-либо потери функциональных возможностей или искажения получаемых результатов. Эмулятор представляет собой специализированный программируемый контроллер, который при выполнении отладки заменяет микропроцессор в микропроцессорной системе. Подобный блок позволяет без перепрограммирования выполнять на проверяемой микропроцессорной системе программу, использующую коды или способы выполнения операций, отличные от данной микропроцессорной системы. Ввод программы в память микропроцессорной системы. Если программа находится в ПЗУ, то она в него введена изготовителем, и ее изменить нельзя. Однако, как отмечалось, нередко в составе микропроцессорной системы содержатся ППЗУ или РППЗУ, которые могут программироваться пользователем. Для ввода данных в ячейку запоминающего устройства требуется указать адрес ячейки и помещаемое в нее число.

 

Пример программы для PIC16F676

 

Пример программы для PIC16F676 (для работы с одним устройством на линии).

 

 

 

Запись в память [4Eh]

 

Эта команда позволяет устройству управления записывать 3 байта данных в память DS18B20.

Первый байт данных записывается в регистр (TH), второй байт записывается в регистр (TL), и третий байт записывается в регистр конфигурации.

Данные должны быть переданы наименьшим значащим битом вперед.

Для датчиков температуры с паразитным питанием все три байта ДОЛЖНЫ быть записаны командой КОПИРОВАНИЕ ОЗУ В ПЗУ [48h] прежде, чем устройством управления будет сгенерирован импульс сброса, иначе данные будут потеряны.

 

Чтение памяти [BEh]

 

Эта команда позволяет Устройство управленияу читать содержание ПАМЯТИ. Передача данных начинается с наименьшего значащего бита байта 0 и продолжается до 9-ого байта (байт 8 - циклический контроль избыточности). Устройство управления может выполнить сброс, чтобы закончить чтение в любое время, если необходимо только часть данных.

 

Копирование ОЗУ В ПЗУ [48h]

 

Эта команда копирует содержание регистров (TH, TL) и регистра конфигурации (байты 2, 3 и 4) в ПЗУ. Если устройство используется в режиме паразитного питания, то в пределах не позднее 10 μs

(максимально) после подачи этой команды устройство управление должно установить высокий уровень на шине и поддерживать его в течении не менее 10ms.

 

Краткий обзор Команды

 

Устройства iButtons могут работать как автономно на шине, так и поддерживают следующие Сетевые Команды на основе ROM:

 

• Чтение ROM [33h] (Read)

• Пропуск ROM [CCh] (Skip)

• Соответствие ROM [55h] (Match)

• Поиск ROM [F0h] (Search)

 

После выполнения любой команды ROM, устройства достигает уровня Транспорта (способно передавать свои данные памяти).

Чтение ROM [33h] (Read) используется, чтобы прочитать ROM память устройства, если на шине оно только одно. После посылки этой команды Главное устройство должен генерировать 64 слота времени считывания. iButton пошлет содержимое его ROM памяти младшим битом вперед, начиная с кода семейства, сопровождаемого серийным номером и байтом циклического контроля избыточности.

Если на шине несколько iButtons устройств, то для чтения ROM памяти необходимо воспользоваться командой Поиск ROM [F0h] (Search), чтобы определить содержание ROM памяти устройств прежде, чем к ним можно будет обратиться.

Если содержание ROM памяти не представляет интерес, потому что на шине только одно iButton, поиск может быть пропущен, посылая команду Пропуск ROM [CCh] (Skip). Немедленно после этой команды, устройство достигает Транспортного уровня.

Команды Соответствие ROM [55h] (Match) может использоваться, чтобы обратиться к интересующему устройству, если на шине присутствует несколько iButtons устройств.

Код ROM выполняет функцию адреса устройства, чтобы активизировать его Транспортный уровень. Тот же самый Код ROM не может активировать более 1 устройства, так как соответствие кодов ROM только одному устройству определено при их производстве. Если два iButtons имеют то же самое серийный номер, их семейные коды будут отличны. Этим способом, исключается любой беспорядок или неопределенность.

После подачи команды Соответствие ROM [55h] (Match), Главное устройством будет послано в течение следующих 64 слотов времени содержание ROM памяти требуемого устройства. Последовательность битов

должна быть тем же самым, как они были получены при чтении ROM, то есть, младшим битом вперед, начинаясь с семейного кода, сопровождаемого серийным номером и циклическим контролем избыточности. Все iButtons, ROM которого не соответствует требуемому коду, останутся в неактивном состоянии пока они получат другой Импульс Сброса.

 

Команда Поиск ROM [F0h] (Search)

 

Если Главное устройство не знает серийный номер устройства подключенного к шине, то существует возможность идентифицировать коды ROM каждого устройства подключенного к шине. Для этого необходимо использовать команду Поиск ROM [F0h] (Search). Эта команда действует как команда Чтения ROM объединенная с командой Соответствия ROM.

Процесс выглядит следующим образом: После формирования главным устройством команды Поиск ROM [F0h] (Search) все устройства iButtons последовательно будут формировать на шине состояние «0» и «1» соответствующие их значению фактического бита ROM в течение двух Времен (тактов) считывания после формирования команды ROM Поиска.

Если все устройства содержат в этой позиции двоичного разряда:

• «0», чтение будет «01»;

• «1», результат будет «10»;

Если устройства содержат в этой позиции двоичного разряда и «1» и «0», чтение приведет «00» битов, указывая на конфликт.

Главное устройство в следующем (третьем такте) слоте Времени формирует разрядное значение 1 или 0, чтобы отобрать устройства, которые останутся в процессе выбора.

Все устройства у которых бит не соответствует биту сформированному главным устройством перейдут в состояние ожидания и будут находиться в нем пока они не получают Импульс Сброса. После первой стадия выбора, будут следовать 63 читающих/выбора цикла, пока, наконец, главное устройство не определит Код ROM одного подчиненного устройства и обратиться к нему.

Каждая стадия выбора состоит из двух слотов Времени считывания и один слот Времени записи. Полный процесс изучения и одновременная адресация - приблизительно три раза длина команды ROM Соответствия, но это позволяет выбрать из всех связанных устройств последовательно все коды ROM.

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

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

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

Четыре устройства установлены на шине. Их двоичное содержание ROM следующее:

устройство 1: xxxxxx10101100

устройство 2: xxxxxx01010101

устройство 3: xxxxxx10101111

устройство 4: xxxxxx10001000

для упрощения символом «x» заменены старшие биты и показаны только младшие восемь битов содержания ROM.

Поиск младшего бита происходить следующим образом:

1. Главное устройство начинает последовательность инициализации

• формирует Импульс Сброса.

• iButtons отвечают формированием импульсов Присутствия.

2. Тогда Главное устройство формирует команду Поиск ROM.

3. Главное устройство читает один бит с шины. Каждое устройство ответит, помещая значение первого бита соответствующего его данным ROM. Устройства 1 и 4 поместят «0» на шину, то есть, они установят на шине низкий уровень. Устройства 2 и 3 сформируют «1» позволяя на линии оставаться в высоком уровне. Результат – «логическое И» всех устройств на линии; поэтому Главное устройство читает 0.

Главное устройство будет читать следующий бит. (С тех пор когда команда Search ROM выполняется, все устройства отвечают одновременно). Все устройства помещают на шину дополнение первого бита их соответствующего. Устройства 1 и 4 сформируют «1»; устройства 2 и 3 сформируют «0». Таким образом, на шине будет состояние логического «0». Главное устройство снова читает «0» при формировании дополнительного кода первого информационного разряда ROM (чтение дает «00» - состояние разрядных

конфликтов). Это говорит Главному устройству, что есть устройства на шине содержащие в первом бите как «0», так и «1».

Если бы все устройства имели «0» в этой позиции двоичного разряда, чтение дало бы результат «01»; если бы позиция двоичного разряда содержала во всех устройства «1» результат был бы «10».

4. Главное устройство теперь решает писать «0» и формирует запись его на шину. Эта операция переводит Устройства 2 и 3 (содержащие в этом разряде «1») в пассивное состояние, оставляя только устройства 1 и 4 для участия в процессе поиска.

5. Главное устройство выполняет еще два чтения и получает «01». Это говорит, что все активные устройства имеют 0 в этой позиции двоичного разряда их ROM.

6. Главное устройство тогда пишет 0, чтобы сохранить устройства 1 и 4 активными.

7. Главное устройство выполняет два чтения и получает два «00» биты. Это снова указывает, что в этом разряде присутствуют устройства имеющие «1» и «0».

8. Главное устройство снова пишет 0. Это деактивирует устройство 1, оставляя устройство 4 как единственный активный элемент.

9. Следующие чтения до конца ROM не будет давать состояние разрядных конфликтов. Отсутствие разрядных конфликтов до конца цикла поиска говорит, что происходит чтение ROM только одного активного элемента. Прочитав следующий бит Главное устройство снова посылает этот бит, чтобы сохранить устройство активным. Как только все биты ROM устройства будут известны и последний бит снова послан Главным устройством, устройство готово к принятию команды Транспортного уровня (для обмена информацией).

10. Главное устройство должно изучить данные ROM других устройств.

Поэтому оно запускает следующую последовательность Поиска ROM, повторяя шаги 1 - 7.

11. В самой старшей позиции двоичного разряда, где Главное устройство писало «0» в первом проходе (шаг 8), оно теперь пишет «1». Это снимает выделение устройства 4, оставляя устройство 1 активным.

12. Как в шаге 9, следующие чтения до конца ROM не будет давать состояние разрядным конфликтам. Этим заканчивается второй Поиск ROM, где Главное устройство считывает содержание ROM другого устройства.

13. Главное устройство должен изучить данные ROM других устройств.

Поэтому, оно запускает следующую последовательность Поиска ROM, повторяя шаги 1 - 3.

14. Во втором проходе в наивысшей степени позиция двоичного разряда, где Главное устройство написал 0 в первом проходе (шаг 4), это теперь пишет 1. Это снимает выделение устройств 1 и 4, оставляя устройства 2 и 3 активными.

15. Главное устройство посылает два слота времени считывания и получает

два 0 битов, указывая маленький конфликт.

16. Главное устройство снова решает писать 0. Это снимает выделение устройство 3, оставляя устройство 2 как единственное активное устройство.

17. Как в шаге 9, следующие чтения до конца ROM не будет показывать разрядным конфликтам. Этим заканчивается третий Поиск ROM проходит, где Главное устройство имеет изученный содержание другого ROM.

18. Главное устройство должен изучить данные ROM других устройств.

Поэтому это запускает другую последовательность Поиска ROM, повторяя шаги 13 - 15.

19. В самой высокой позиции двоичного разряда, где Главное устройство написал 0 в предыдущем проходе (ступают 16), это теперь пишет 1. Это снимает выделение устройства 2, оставляя устройство 3 активным.

20. Как в шаге 17, следующие чтения до конца ROM не будет показывать разрядным конфликтам. Это заканчивает четвертый Поиск ROM проходит, где Главное устройство имеет изученный содержание другого ROM.

Общий принцип этого процесса поиска должен снять выделение одно устройство за другим в каждой противоречивой позиции двоичного разряда. В конце каждого процесса Поиска ROM, Главное устройство узнал содержание другого ROM. Следующий проход является тем же самым как предыдущий проход до пункта последнее решение. В этом пункте Главное устройство входит в противоположность руководство и продолжается. Если другой конфликт найден, снова 0 написан, и так далее. После обоих путей в самом высоком противоречивая позиция двоичного разряда сопровождается до конца, Главное устройство идет тот же самый путь как прежде, но решающий противоположно в более низкой противоречивой позиции двоичного разряда, и так далее, до всех Данные ROM идентифицированы.

Оптимизированная блок-схема алгоритма ROM Поиска показана на рисунке 3.5.1. Это число объясняет, как выполнить общий поиск ROM. Ради этого блок-схема, данные ROM накоплены в маленький массив, названный Бит ROM, с битами нумеровал 1 - 64. Установка должна назовите перед любой другой функцией, чтобы инициализировать Система с 1 проводом.

Звонок "в Первые" сбросы поиск к начало и идентифицирует первый код ROM, и призывает "Затем" идентифицируйте последовательные коды ROM. Ложное значение возвращенное указывает не больше кодов ROM, которые будут найдены. Время, требуемое изучать содержание одного ROM (нет считая процессорное время Главное устройство) - 960 ms + (8+3*64) *61 ms =13.16 ms. Таким образом возможно идентифицировать до 75 различный iButtons в секунду.

 

Рисунок 3.5.1. Алгоритм работы

 

 



Поделиться:


Последнее изменение этой страницы: 2016-12-26; просмотров: 660; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.129.100 (0.116 с.)