Как сделать шину в протеусе

Добавил пользователь Дмитрий К.
Обновлено: 09.09.2024

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

Вот, к примеру, имеется какая-то схема

Каждому элементу схемы должен быть сопоставлен какой-то корпус.

Это параметр – PCB Package.

Тип корпуса можно изменить, тыкнув на [?]. Кстати, для резисторов и керамических конденсаторов он обычно называется как-нибудь типа RES40 или С20, где число – это расстояние между выводами. 10th = 2,5мм (тогда RES40 => 10мм между выводами).

Некоторым элементам корпус изначально не сопоставлен (светодиоды), поэтому придется это сделать самим. Разумеется, корпус должен быть соответствующим (для светодиодов выводы промаркированы как анод и катод).

Некоторым же элементам пока невозможно сопоставить корпус, это, например светодиодные индикаторы, катушки индуктивности, кнопки… У них даже нет такого параметра как PCB Package!

Если корпус есть в стандартной библиотеке, можно сопоставить при экспортировании в ARES (этот способ подходит например для потенциометра). Если же в стандартных библиотеках нет подходящего корпуса, то есть 2 выхода:

1) взять нужные корпуса из нестандартных библиотек (в инете их полно). Этого я не пробовал, так что не знаю, будет ли всё работать как и со стандартными или придется прописать “руками” недостающие соединения (ведь в ARES экспортируется не сама схема, а список соединений между корпусами элементов);

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

Например, вот тот индикатор со схемы (всё согласно цоколевке):

Про то, что в ISIS надо было сделать, вроде всё…

Итоговая схема у меня немного усложнилась… Появились дополнительные узлы схемы, входные и выходные разъемы и дополнительные разъемы под индикатор, кнопки, катушки.

Далее нажимаем кнопку [ARES] (наверху, самая правая). Если проект был не сохранен, то ISIS предложит сохранить.

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

Для всех элементов, кроме потенциометра, я пропускаю этот этап, нажимая Skip. Для потенциометра выбрал корпус PRE-SQ3.

Далее нужно ограничить размер печатной платы. Это делается на слое Board Edge с помощью инструментов 2d-графики (наиболее удобен прямоугольник).

Элементы на плате можно расставить руками и автоматически.

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

Получается что-то типа этого.

Нажимаем кнопку авторасстановки [auto-placer].

Далее, появляется окно:

В нем выбираются элементы, которые надо расставить, шаг сетки, предпочтительное расположение элементов, степень группирования….

В общем всё расставили…

И наконец, трассировка…

Первым делом необходимо настроить стратегию трассировки. Для этого заходим в system -> set strategies

1) В самом верху окна сначала выбирается, для каких цепей будем редактировать стратегию, для сигнальных (signal) или для питающих (power).

2) Столбик Pair1 – Pair4 . Тут выбирается по какой стороне платы будут идти дорожки и по какой стороне они будут вертикальны или горизонтальны.

Top Copper – сторона элементов.

Bottom Copper – задняя сторона.

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

Выбирается, по какой стороне будут идти перемычки (top blind, bottom blind), или по обоим сторонам будут идти дорожки (normal), или дорожки будут идти только по одной стороне без перемычек (buried).

4) Tactics – это и так понятно J Как располагать дорожки как питающие, как шину или как сигнал.

optimize? – срезать ли углы. Если выключить, то все углы будут по 90?.

diagonal? – ну это понятно…

6) design rules – здесь устанавливаем минимально допустимые расстояния: площадка-площадка, дорожка-дорожка, площадка-дорожка… Я обычно оставляю площадка-площадка по умолчанию, а остальное ставлю 20, чтоб удобнее было паять.

И так, возвращаемся к плате. Для включения трассировки нажимаем кнопку [autorouter] (находится справа от [auto-placer]).

Появляется окно. Тут я меняю только шаг сетки, ставлю обычно 20 или 25.

Ну всё, тыкаем ОК и ждем

Получается что-то типа этого:

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

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

Для того, чтобы распечатать рисунок на заготовку надо зайти в Output а Set Output Aria и выделяем площадь, которую надо распечатать. Далее Output а Print , там выбираем какую сторону печатать, зеркально или нет, и печатаем.

И напоследок, как я сам развожу плату (вдруг кому пригодится J )

- задаюсь размерами платы (board edge);

- расставляю элементы какого-нибудь узла схемы, например генератора;

- смотрю как идут дорожки, удачно ли расположил элементы;

- если были какие-то недочеты, переставляю элементы, если же не было, то расставляю соседний узел;

- снова запускаю трассировщик;

- и так далее пока не соберется вся схема.

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

Цель данного руководства – показать вам на примере создания простой схемы, как проводить интерактивное моделирование, используя Proteus VSM. Пока мы сконцентрируемся на использовании Активных Компонентов (Active Components) и возможностях отладки редактора ISIS, мы также рассмотрим основы трассировки и основы управления схемами. Полный обзор этих тем может быть найден в справочной системе ISIS.

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

Пример схемы Traffic.dsn

Пример схемы Traffic.dsn

Пока мы будем рисовать схему с нуля, законченную версию можно будет найти по пути “Samples\Tutorials\Traffic.DSN” в папке, где у вас установлен Proteus. Пользователи, которые знакомы с основными способами работы в ISIS, могут выбрать уже готовую схему и перейти к разделу о программе микроконтроллера. Однако, обратите пожалуйста внимание на то, что файл этого проекта содержит предумышленную ошибку – прочитайте для более подробной информации.

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

Вычерчивание схемы

Размещение элементов

Начнем с размещения двух светофоров и PIC16F84 на новом макете схем. Начните новый проект, выберите иконку Компонент (Component) (все иконки имеют всплывающие подсказки и контекстно-зависимую справку, что помогает их использованию). Затем левый клик на букве ‘P’ наверху переключателя объектов (Object Selector), чтобы открыть окно Браузера Библиотек (Library Browser), которое появится поверх окна редактора (для более подробной информации смотрите Основы Ввода Схем в справочной системе ISIS).

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

Перемещение и ориентация

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

Чтобы повернуть элемент, правый клик на нем так же, как и в предыдущем случае, а затем левый клик на одной из иконок вращения (Rotation). Это повернет элемент на 90 градусов – повторите это столько раз, сколько требуется. Опять же, хороший способ – правый клик на пустом месте схемы, когда вы закончили, чтобы восстановить первоначальное состояние элемента.

Размечайте схему осмысленным способом (например, исходя из простоты восприятия), двигайте и поворачивайте элементы, как требуется. Если у вас возникли проблемы, советуем поработать с руководством в справочной системе ISIS – ISIS Tutorial.

Для нашей цели, мы игнорируем 2D графику, чтобы не запутываться, и сконцентрируемся на создании моделируемой схемы – для тех, кому интересно, полный доклад о графических возможностях ISIS можно найти в разделе 2D графика ( 2D Graphics ).

Масштаб и захват

Как правило, при разводке схемы полезна возможность изменения масштаба требуемой территории. Нажатие клавиши F6 или иконки Увеличить (Zoom In) увеличит масштаб вокруг текущей позиции мыши, или, в качестве альтернативы, зажмите клавишу SHIFT , и зажав левую кнопку мыши, выделите территорию, которую нужно увеличить. Чтобы уменьшить масштаб, нажмите клавишу F7 или иконку Уменьшить (Zoom Out), или, если вы хотите уменьшить так, чтобы видеть всю схему целиком, нажмите клавишу F8 или используйте колесо мыши, чтобы уменьшить или увеличить требуемую территорию. Соответствующие команды могут быть доступны меню Вид (View).

ISIS имеет очень мощные возможности, называемые Real Time Snap. Когда курсор мыши находится поблизости от конца вывода или проводника, местоположение курсора захватывается этими объектами. Это позволяет легко редактировать и управлять схемой. Эта возможность может быть найдена в меню Инструменты (Tools) и по умолчанию включена.

Более подробная информация о масштабе и захвате может быть найдена в справочной системе ISIS – Окно Редактора.

Трассировка соединений

Простейший способ соединения схемы – это использовать опцию автотрассировки проводника (Wire Auto Router) в меню Инструменты (Tools). Убедитесь, что она включена (должна быть видна отметка в меню слева от опции). Для более подробной информации смотрите раздел “Автотрассировка проводника” в Инструкции ISIS. Увеличьте PIC, чтобы все выводы были видны, затем поместите курсор мыши на конец вывода 6 ( RB0/INT ). Вы увидите маленький ‘х’–курсор на конце мыши. Это показывает, что мышь в правильной позиции для присоединения проводника к этому выводу. Левый клик мышью, чтобы начать соединение, и затем переместите мышь к выводу, соединенному с красным фонарём одного из светофоров. Когда вы снова получите ‘х’–курсор над этим выводом, кликните левой кнопкой мыши, чтобы завершить соединение. Повторите этот процесс для подключения обоих светофоров как показано образце схемы.

Пара вопросов о процессе разводки, заслуживающих упоминания:

  • Вы можете делать соединения в любом режиме – ISIS достаточно сообразителен, чтобы понять, что вы делаете.
  • Когда включена автотрассировка проводника (Wire Auto router), разводится вокруг препятствий и, как правило, ищется удобная траектория между соединениями. При этом способе, как правило, вам только нужно сделать левый клик на обоих концах соединения и предоставить ISIS возможность позаботиться о пути между ними.
  • ISIS автоматически переместит экран, если вы затронете границу окна редактора, перемещая проводник. Учитывая это, вы можете увеличить масштаб до подходящего уровня и, при условии, что вы знаете приблизительную позицию элемента-цели, просто подталкивайте экран, пока не увидите его. В качестве альтернативы, вы можете увеличивать и уменьшать масштаб, пока перемещаете проводник (используя клавиши F6 и F7 ).

В заключение, мы должны соединить вывод 4 с клеммой питания. Выберите иконку “Клемма” (Terminal) и выделите “Питание” (POWER) в переключателе объектов. Теперь сделайте левый клик на подходящем месте и поместите клемму. Выберите подходящую ориентацию и присоедините клемму к выводу 4, используя тот же способ, что и раньше.

На этом этапе рекомендуем вам загрузить законченную версию схемы – это избавит от любой неразберихи, если нарисованная вами версия в каком-то месте отличается от нашей! Также, если вы не приобрели библиотеку моделей pic-контроллеров, для того, чтобы продолжить, вы должны загрузить приготовленный файл примера.

Написание программы

Листинг исходной программы

Для успеха нашей консультации мы подготовили следующую программу, которая записывается в PIC для управления светофорами. Эта программа приготовлена в файле TL.ASM и может быть найдена в папке “Samples\Tutorials”.

На самом деле в коде есть предумышленная ошибка, но подробнее об этом позже.

Прикрепление исходного файла

Теперь нужно выбрать программу формирования кода для файла. Для нашей цели подойдет программа MPASM. Эта опция будет доступна из выпадающего списка Code Generation Tool, выберите ее обычным способом, кликая левой кнопкой мыши(обратите внимание, что если вы планируете использовать новый ассемблер или компилятор, вам нужно зарегистрировать его, используя команду “Определить программу формирования кода” (Define Code Generation Tools)).

В завершение, необходимо установить с каким файлом работает процессор. В нашем примере это будет tl.hex (hex-файл, генерируемый MPASM, являющийся результатом трансляции tl.asm). Чтобы прикрепить этот файл к процессору, кликните на pic-контроллере сначала правой кнопкой мыши, а потом левой. Это откроет диалоговую форму редактирования элемента, которая содержит поле “Файл программы” (Program File). Если в нем еще не установлен tl.hex, то введите путь к файлу либо вручную, либо просматривая место, где находится файл, нажав ‘?’ справа от поля. Установив hex-файл, нажмите ОК, чтобы выйти из диалоговой формы.

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

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

Моделирование схемы

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

Режим отладки

Чтобы удостоверить, что мы тщательны в отладке, мы остановим текущее моделирование. Покончив с этим, вы можете начать отладку нажатием CTRL+F12 . Появятся два окна – первое хранит текущие значения регистров, второе показывает исходный код программы. Любое из них может быть активировано из меню “Отладка” (Debug) вместе с совокупностью других информационных окон. Мы также хотим активировать смотровое окно (Watch Window), в котором мы можем наблюдать внесенные изменения в параметры состояния. Полное разъяснение этого элемента доступно в разделе, озаглавленном “Смотровое окно” , в данной документации.

Установка точки останова

Список клавиш отладки можно найти в меню Debug, но мы, большей частью, будем использовать F11 , чтобы пошагово отлаживать программу. Теперь нажмите F11 и заметьте, что красная стрелка слева переместилась вниз к следующей инструкции. Мы фактически выполнили инструкцию ‘ clrw ’, а затем остановились. Вы можете проверить это, взглянув на регистр W в окне регистров и обратив внимание, что он обнулен.

Теперь нужно определить, что должно произойти при выполнении следующей инструкции, а затем проверить, действительно ли это произошло. Для примера, следующая инструкция перемещает содержимое регистра “ W ” в PORT A , т.е. PORT A будет очищен. Выполнение этой инструкции и проверка окна регистров подтверждают, что это на самом деле так. Продолжайте в том же духе пока не достигните нашей второй точки останова, обратите внимание, что оба порта настроены на выход (как предписано регистром TRISB ) и установлены в нули.

И так, мы остановились на вызове функции, у нас есть опция перешагивания через функции (Stepping Over) (нажатием клавиши F10 ), но для полноты мы прошагаем через каждую инструкцию. Нажатие здесь F11 переносит к первой выполняемой строке функции getmask. Шагнув вперед, мы видим, что операция перемещения была успешна, и что мы попадаем в правильном месте для добавления нулевого сдвига в нашей таблице соответствия. Следовательно, когда мы возвращаемся в основную программу, мы имеем “маску”, которую и ожидали. Делая следующий шаг и записывая маску в порт, мы можем видеть правильный результат на схеме. Еще один шаг для инкриментирования режима также успешен, что подтверждается окном регистров, где значение в регистре W увеличилось на 1.

Следующий шаг содержит инструкцию, предназначенную для охватывания режима нулями, когда он возрастет выше 3. Это, как можно увидеть из смотрового окна, не выполняется. Очевидно, что режим увеличился здесь до 1, что соответствует маске и верно для следующего выполнения цикла.

Поиск ошибки

Скрытый анализ показывает, что причина проблемы в побитовом И с четверкой вместо тройки. Режимы, которые мы хотим 0, 1, 2, 3 при побитовом И их с 4 дают 0. Вот почему, когда запущено моделирование, режим светофоров не меняется. Решение в простой замене проблемной инструкции на И с 3 вместо 4. Это означает, что режим увеличивается до 3, и когда регистр W увеличится до 4, режим будет обнулен. Альтернативное решение в проверке, когда ‘ W ’ возрастет до 4, и сбросе его в ноль.

В статье подробно описана подготовка карты памяти (форматирование и создание образа) для управления ею через микроконтроллер в Proteus. Приведены примеры моделирования схем, имитирующих подключение внешней памяти ММС (MultiMediaCard) к микроконтроллеру ATmega32, компиляция программы инициализации которого выполнена в CodeVisionAVR. Описан программный способ создания файлов, записи информации во внешнюю память, её чтения и отображения на экране терминала и буквенно-цифрового дисплея.


Статья опубликована в журнале СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №6/2021

Введение

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

При проектировании устройства обмена информацией с картой памяти работающего под управлением микроконтроллера AVR написание программы инициализации и её компиляцию удобно выполнить с помощью CodeVisionAVR 3.12 (интегрированной среды разработки программного обеспечения для микроконтроллеров семейства AVR фирмы Atmel, которая имеет в своём составе компилятор языка С для AVR). CodeVisionAVR поддерживает все базовые конструкции языка С, которые используются при написании программ (алфавит, константы, идентификаторы, комментарии) и разрешены архитектурой AVR, с некоторыми добавленными характеристиками, реализующими преиму­щество специфики архитектуры AVR. Используя специальные директивы, в любом месте программы можно включить ассемблерный код. В CodeVisionAVR имеется набор команд управления буквенно-цифровыми и графическими дисплеями, а также библиотеки функций работы с файлами. Программные средства позволяют напрямую обращаться к регистрам микроконтроллера и управлять состоянием линий портов.

Проектирование схемы электрической принципиальной в Proteus

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

Если написание программного кода управления электронной системой предполагается выполнить в CodeVisionAVR, то проект схемы электрической принципиальной, в котором присутствует карта памяти, буквенно-цифровой дисплей, терминал и микроконтроллер создают без использования мастера – при помощи кнопки ISIS (Schematic Capture) верхней панели инструментов Proteus (см. рис. 1).



Рис. 1. Стартовое окно программы Proteus



Рис. 2. Раздел: Memory Cards библиотеки Memory ICs (а), AVR Family библиотеки Microprocessor ICs (б), Alphanumeric LCDs библиотеки Optoelectronics (в)

Выводы карты ММС имеют следующее назначение: CS – выбор карты, DI – вход данных для записи в карту, DO – выход данных для чтения из карты, CLK – синхроимпульсы шины SPI.

При обмене данными по интерфейсу SPI микроконтроллер AVR может работать как ведущий (режим Master) либо как ведомый (режим Slave). Связь между устройствами осуществляется с помощью следующих линий портов ввода/вывода общего назначения микроконтроллера:

MOSI – выход данных для ведущего или вход данных для ведомого устройства;

MISO – вход данных для ведущего или выход данных для ведомого устройства;

SCK – сигнал общей синхронизации интерфейса;

SS – выбор ведомого устройства.

Ведущее устройство формирует один или несколько сигналов SS (slave select) для выбора ведомых устройств. При этом количество формируемых сигналов соответствует количеству ведомых устройств. Ведомое устройство получит данные только в том случае, если оно было выбрано (адресовано) ведущим, то есть если на его выводе присутствует низкий уровень. Передача данных осуществляется посредством линий MOSI и MISO. Процессом передачи данных управляет ведущее устройство (Master), формируя тактовые импульсы через линию SCK. Вывод SCK ведущего микроконтроллера является выходом тактового сигнала. Одновременно с передачей данных от ведущего к ведомому устройству происходит приём данных ведущим устройством от ведомого по кольцу. Таким образом, за один полный цикл сдвига всех разрядов регистра происходит обмен данными между двумя устройствами.

Микросхема LM044L имеет 14 контактов [3], назначение которых следующее:

Vdd – напряжение питания +5 В;

Vee – напряжение регулировки контрастности от 0 до +5 В (настройка контрастности отображаемых на дисплее символов);

RS – выбор регистра данных DR (RS - 1) или команд IR (RS – 0);

RW – выбор операции чтения (RW = 1) или записи (RW = 0);

E – линия синхронизации;

D0…D7 – шина данных/команд.

Микросхема LM044L может работать в двух режимах:

4-разрядном (для обмена информацией используются выводы D4…D7).

В представленном примере вывод данных на экран дисплея разрешением 20 символов на 4 строки выполнен в 4-разрядном режиме.

Для подключения микросхемы LM044L к схеме управления используется параллельная синхронная шина данных/команд (D0…D7), вывод выбора операции чтения/записи (RW), вывод выбора регистра данных/команд (RS) и вывод синхронизации (Е). Подсоединим выводы модуля дисплея D4…D7 к выводам PC4…PC7, а выводы RS, RW и E к выводам PC0…PC2 микроконтроллера ATmega32 так, как показано на рис. 3.



Рис. 3. Сопряжение микроконтроллера ATmega32 с картой памяти и устройствами вывода информации в рабочей области редактора ISIS программы Proteus



Рис. 4. Панель TERMINALS



Рис. 5. Окно свойств: микросхемы LM044L (а), карты памяти (б), микроконтроллера ATmega32 (в)

Size of media (MB) – объём данных;

Card Image File – путь к файлу образа карты;

Require SPI init sequence – необходимость инициализации SPI интерфейса.

Если образ находится в одном каталоге со схемным проектом Proteus, то указывают только его имя с расширением .mmc. На схеме подключение карты в слот выполняют щелчком левой кнопки мыши по её компоненту.



Рис. 6. Выбор виртуального терминала на панели INSTRUMENTS программы Proteus



Рис. 7. Установка шрифта с поддержкой кириллицы: выбор команды Set Font в контекстном меню, открытом из области окна терминала (а), окно настройки шрифта (б)

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

Создание образа карты памяти



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

Создание программного кода в CodeVisionAVR

Формирование программного кода в CodeVisionAVR выполняют при помощи автоматического генератора CodeWizardAVR или вручную с нуля, используя синтаксис языка программирования С и функции стандартных библиотек программы. Удобство применения генератора состоит в быстром получении кода выполнения функций инициализации микроконтроллера и его портов ввода/вывода, аналогового компаратора, таймеров/счётчиков, интерфейса UART и SPI, буквенно-цифровых и графических дисплеев и др. Однако в процессе работы мастера формируется достаточно объёмный код, который впоследствии приходится редактировать.



Receiver – активизация приёмника USART;

Transmitter – активизация передатчика USART;

Baud Rate – скорость передачи в режимах приёмника и передатчика;

Baud Rate Error – ошибка скорости передачи (вычисляется автоматически);

Communication Parameters – установка параметров связи (Data – количество битов данных, Stop – количество стоповых битов, Parity – чётность);

Mode – выбор режима связи: Asynchronous (асинхронный), Sync. Master UCPOL=0 (синхронный ведущий со сброшенным битом UCPOL регистра UCSRC), Sync. Master UCPOL=1 (синхронный ведущий с установленным битом UCPOL регистра UCSRC), Sync. Slave UCPOL=0 (синхронный ведомый со сброшенным битом UCPOL регистра UCSRC), Sync. Slave UCPOL=1 (синхронный ведомый с установленным битом UCPOL регистра UCSRC).

На вкладке SPI Settings определяют следующие параметры SPI:

SPI Enabled – активизация работы SPI-интерфейса;

SPI Interrupt – разрешение прерывания от SPI-интерфейса;

Clock Rate x2 – удвоение тактовой частоты SPI-интерфейса;

SPI Mode – режим работы SPI;

SPI Clock Rate – выбор тактовой частоты для последовательной передачи данных по SPI-интерфейсу;

Clock Phase – выбор позиции фронта стробирующего сигнала относительно бита данных: Cycle Start (начало цикла), Cycle Half (половина цикла);

Clock Polarity – уровень полярности тактовых импульсов: Low (низкий), High (высокий);

SPI Type – выбор роли микроконтроллера в SPI-интерфейсе: Slave – ведомый, Master – ведущий;

Data Order – порядок данных при последовательной передаче: MSB First (первый старший байт), LSB First (первый младший байт).



Рис. 10. Окно Configure Project: вкладка MMC/SD/SD HC Card (а), вкладка Code Generation (б)

Применение функций библиотеки sdcard.h для чтения и записи данных во внешнюю память

Для работы с картами памяти MMC/SD/SD HC, отформатированными в FAT12, FAT16 или FAT32 в CodeVisionAVR предусмотрены библиотеки sdcard.h и ff.h. С помощью функций disk_read и disk_write библиотеки sdcard.h удобно выполнить чтение и запись текстовых данных во внешнюю память, когда образ карты памяти создан с помощью редактора Блокнот. В коде программы функция чтения информации имеет следующий формат записи: disk_read (unsigned char drv, unsigned char* buff, unsigned long sector, unsigned char count), где drv – это номер устройства (нумерация начинается с 0), buff – переменная для записи массива считанных данных, sector – номер блока, с которого начнётся чтение, count – количество блоков для чтения (нумерация начинается с 1). Функция записи имеет следующий формат: disk_write (unsigned char drv, unsigned char* buff, unsigned long sector, unsigned char count), где drv – это номер устройства, buff – переменная, в которой хранятся данные для записи, sector – номер блока, с которого начнётся запись, count – количество блоков для записи. Чтение и запись информации во внешнюю память выполняют блоками объёмом 512 байт.

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


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

Читайте также: