Файл: Самоучитель по программированию PIC контроллеров для начинающих (Е.А. Корабельников,2008).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 3629
Скачиваний: 3
Если галочка установлена, то при переходе на начало программы (сбросе программы), секундомер будет автоматически сбрасываться в ноль, а если не установлена, то такого сброса не будет.
Лично у меня, она установлена, что советую и Вам. Сбросьте программу Multi.asm на начало.
Несколько раз пощёлкайте по кнопке со следами ног (или понажимайте клавишу F7), и Вы увидите, что секундомер подсчитывает количество машинных циклов исполнения программы и переводит их в микросекунды.
Примечание: обозначение микросекунды выглядит как us потому, что в английском алфавите нет буквы "мю" (эта буква - греческая), а английская буква u наиболее к ней близка по написанию.
Секундомер "все посчитает в лучшем виде", с учетом самых сложных "кульбитов", которые "проделывает" рабочая точка программы.
Вконечном итоге, он выдаст точный результат подсчета времени исполнения команд на том участке программы, на котором Вы работаете.
Практический вывод из этого следующий: если программисту необходимо подобрать значение константы (констант) для формирования какого-то калиброванного интервала времени, то ему вовсе не обязательно скрупулезно подсчитывать на бумаге количество машинных циклов исполнения команд, а достаточно "грубой прикидки".
"Доводка до нормы" производится путем изменения, в небольших пределах, значения константы (констант), а если этого не достаточно, то и установкой того или иного количества NOPов, с постоянным контролем результатов этих изменений по секундомеру, до получения нужного результата.
Сам по себе, этот процесс довольно-таки не сложен (нужно только "руку набить").
Таким немудрёным образом, можно, с минимальными трудозатратами, отстроить временные характеристики даже очень "навороченных" программ.
Если имеется "чужая" программа и Вам необходимо внести свои коррективы в ее временные характеристики, то это тоже делается при помощи секундомера.
И т.д. Вариаций много.
Естественно, что в таких случаях, без "автомата" не обойтись.
На практике, результат применения такого метода проб и ошибок (с использованием секундомера), часто оказывается гораздо более эффективным, чем точные вычисления на бумаге, но "сбрасывать их со счетов" не нужно.
Видеале, нужен комплексный подход.
"Самоучитель по программированию PIC контроллеров для начинающих" http://ikarab.narod.ru E-mail: karabea@lipetsk.ru
69
6. Что дальше?
То, что Вы узнали (а я надеюсь, что и усвоили), изучая предыдущие разделы, есть основа "прожиточного минимума" программиста ПИКов, необходимая для того, чтобы иметь первичное представление о том, "с какого бока подойти к этой корове и за что ее дергать, чтобы она дала молоко".
Всоответствии с ранее сформулированной тактикой обучения, я "оставил за скобками" то, без чего, на первых порах, можно обойтись.
Вдальнейшем это будет наверстано.
Если Вы хорошо потрудились, то к настоящему времени, у Вас должна сложиться более - менее целостная картина предмета обучения. Хотя бы в общем виде.
Внастоящее время, Ваши знания в области программирования ПИКов, вернее всего, технологичны и представляют собой набор достаточно разобщенных сведений.
Это вполне естественно и нормально.
Поздравляю Вас с преодолением самой нудной и не слишком интересной части работы (естественно, при условии, что Вы хорошо потрудились).
На данный момент, имеется все необходимое для перехода к "плотной" работе с текстами программ, успешное завершение которой будет способствовать "превращению" разобщенного в единое целое.
Вэтом отношении, ничего лучшего, чем пример поэтапной разработки конкретного устройства на ПИКе, не существует.
Вконечном итоге, я, на Ваших глазах, поэтапно "разложу на молекулы" весь процесс конструирования достаточно сложного и "серьезного" устройства.
Причем, это будет сделано нестандартно.
Обычно, конструкторы публикуют конечный, "отлакированный" результат своего труда, но при этом теряется информация о "кухне" конструирования.
А ведь именно это и есть самое важное в процессе конструирования!!!
Мало того, я сознательно усложняю (для себя) задачу.
А именно, устройство будет создано на базе достаточно сложного, современного, электронного компонента, принцип работы которого изначально не известен.
Проще говоря, я поэтапно и с детальным объяснением всех "телодвижений", постараюсь провести Вас по всей "цепочке", от возникновения идеи и до ее практической реализации. Подобного рода информация является исключительной редкостью по той причине, что существуют весьма значительные трудности, связанные с ее "извлечением из глубин" сознания и подсознания, и с "удобоваримым переносом этой информации на бумагу". Тем не менее, на свой страх и риск, я проделаю эту работу в надежде на то, что "мой скорбный труд" реально поможет людям, для которых конструирование электронных
устройств является либо любимым занятием, либо жизненноважной необходимостью, либо и тем, и другим.
При выборе "предметов объяснения", передо мной встала сложная задача: каким образом сделать так, чтобы "угодить" как можно большему количеству людей?
Ведь электроника многообразна: одному нужно одно, а другому другое, и описать всё и вся невозможно по определению.
Я исхожу из того, что существуют устройства, которые совмещают в себе разнообразные базовые функции, и если на примере одного из таких устройств, подробно объяснить, как эти базовые функции реализуются на практике, то в процессе конструирования, такого рода знания могут быть использованы для решения широчайшего класса задач.
Вкачестве такого устройства я выбрал 3-х диапазонный частотомер с функцией цифровой шкалы.
Может быть, кого-то из Вас и не устроит такой выбор, но суть предлагаемого состоит совсем не в этом конкретном выборе (можно выбрать и что-то другое), а в том, что по ходу объяснений, будут формулироваться общие принципы организации тех или иных процедур, с дальнейшим их "разложением на молекулы".
Все это будет "привязано" к последовательному и логически мотивированному объяснению работы конкретного устройства, которое, в конечном итоге, Вы самостоятельно сможете изготовить.
На мой взгляд, это самый эффективный способ достижения поставленной цели.
"Въезд" в конструирование устройств на м/контроллерах представляет собой непрерывную цепочку последовательных действий, разрывать которую не рекомендуется (получите
70
"штрафные круги", как в биатлоне).
Можете это рассматривать как мой призыв к Вашему здравомыслию и прагматизму.
"Лезть на Эверест" без специальной подготовки ("прыгать через две ступеньки") не стОит, так как ничего хорошего из этого не выйдет.
Сначала нужно получить "базовые" знания и навыки, а только после этого "выходить на "охоту в страну непуганых зверей", а то ведь "задерут как пить дать" ("звери" там серьезные и совсем без чувства сострадания и юмора).
Понимаю, что это и трудно, и хлопотно, и терпения нужен "целый вагон", но это и есть самый короткий и эффективный путь.
Более эффективного варианта "въезда" просто не существует (Вы уж поверьте человеку, которого собственная бестолковость многократно "водила носом по батарее"). Надеюсь, что я Вас убедил.
Так что, давайте создавать "базу". Начинаем "вгрызаться" в то, что имеем.
Для начала, я объясню Вам детали процесса конструирования какого-нибудь простого устройства.
Если Вы думаете, что далее последует что-то типа "сверления зуба", то Вы ошибаетесь и будете приятно удивлены тем, что речь пойдет не о "страшном и ужасном".
Из личного опыта:
При "въезде" в м/процессорную технику, на мой взгляд, существует некая, достаточно четкая, "граница" (сужу по своим ощущениям).
До нее "каша в мозгах, шизофрения, битье головой о стену" и прочие гадости. После нее что-то типа "просветления"/"нирваны" ("всё становится на свои места").
В том смысле, что происходит "чудесный въезд" в "глобальную" стратегию конструирования устройств на м/контроллерах: человек начинает понимать истинный смысл и предназначение того, что раньше было "темным лесом", и самое главное, приобретает способность свободно манипулировать этим "оружием" в своих целях.
Остальное (тактика), как говорится, дело наживное.
Все это можно отнести к "проделкам" подсознания, но ведь "эти проделки на голом месте не рождаются и с неба не падают".
Чтобы подсознание преподнесло человеку такой приятный "сюрприз", нужно хорошенько поработать со своим сознанием, и не примитивно, как отличник, которому нужно заработать пятерки для получения золотой медали, а живя этим занятием.
Лично у меня, критерий "включения" подсознания такой: если снится работа над программой (не важно какая, пусть даже самая идиотская), значит все в полном порядке.
У разных людей по-разному, но так или иначе, то что я назвал "границей", реально существует.
Желаю Вам ее "перейти".
"Самоучитель по программированию PIC контроллеров для начинающих" http://ikarab.narod.ru E-mail: karabea@lipetsk.ru
71
7. Пример создания программы (начало).
Общие положения
Порядок разработки устройств на микроконтроллерах следующий:
Предположим, что возникла идея создания устройства на микроконтроллере, которая "упирается" в создание программы, обеспечивающей реализацию замысла конструктора.
Программа создается не сама для себя, а под конкретное устройство.
Цель программы - обеспечения "нормального" (в соответствии с задуманным) функционирования этого устройства.
Значительная часть электронной начинки задуманного устройства (кроме внешних, по отношению к микроконтроллеру, устройств) находится внутри микроконтроллера.
Всоответствии с логикой (алгоритмом) работы программы, заданной программистом, программа формирует состав этой электронной начинки (что-то включает, что-то выключает) и обеспечивает логическое взаимодействие ее составных частей.
Специфика конструирования устройств на микроконтроллерах заключается в том, что в большинстве случаев, наличия отработанной блок - схемы программы оказывается достаточным для создания его полной принципиальной схемы или той части принципиальной схемы, которая включает в себя микроконтроллер.
И в самом деле, если осуществлена "жесткая привязка" внешних (по отношению к микроконтроллеру) цепей и устройств к конкретным выводам микроконтроллера (функции выводов определены), типы внешних цепей и устройств определены и "привязаны" к рабочим уровням напряжения на выводах микроконтроллера, то он представляет собой базовый блок с "четко" определенными функциями, к выводам которого подключаются входы (управление внешними устройствами) и выходы (управление базовым блоком) внешних устройств.
Впроцессе "доведения аппаратуры до ума", при неизменных функциях базового блока, внешние устройства могут видоизменяться, заменяться на аналогичные и т.д.
Именно к такого рода определенности и нужно стремиться при конструировании устройств на микроконтроллерах.
Естественно, что в процессе работы, могут производиться корректировки/изменения (например, переназначение функций выводов портов, изменение логики управления внешними устройствами и т.д.).
Процесс создания "электронной начинки" устройства можно разделить на два этапа, которые характеризуются словами "грубо" и "точно" (по аналогии со стратегией и тактикой).
"Грубый" этап включает в себя создание блок-схемы устройства, в которой "центром вселенной" является базовый блок на микроконтроллере.
Блок-схема устройства состоит из блок-схемы программы (основная "масса") и "квадратиков" (условно), обозначающих внешние устройства.
На этом этапе работы, нужно ясно и четко представлять себе функции, выполняемые той или иной составной частью блок - схемы, а также и порядок их взаимодействия.
Например, если в блок - схему программы введен счетчик, то как минимум, необходимо знать правильный ответ на вопрос: "Зачем он вообще нужен и каковы его функции в "общей картине" устройства"?
Если без него обойтись нельзя, то в контексте задумки, нужно определиться с его параметрами (время и направление счета, активный фронт и т.д.).
Это потребуется при составлении программы.
Естественно, что необходимо знать принципы работы устройств цифровой техники (а часто и аналоговой), а иначе будет "ёжик в тумане".
По этой причине, "ставки" начинающих программистов, имеющих опыт практической работы в области цифровой и аналоговой техники, выше "ставок" начинающих программистов, которые этого опыта не имеют, хотя, в конечном итоге, результат работы зависит от трудолюбия и "упёртости".
После того, как определены элементы блок - схемы программы и порядок их взаимодействия, определяются функции выводов микроконтроллера.
То есть, в соответствии с функциональным предназначением выводов м/контроллера, определяется порядок подключения, к ним, входов и выходов внешних устройств.
Вдальнейшем, при составлении программы, этот порядок подключения будет определять содержание команд, производящих действия с данными, поступающими в микроконтроллер от внешних устройств, и с данными, которые формируются микроконтроллером для
72