Использование портов для цифрового ввода-вывода 


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



ЗНАЕТЕ ЛИ ВЫ?

Использование портов для цифрового ввода-вывода



 

Каждый разряд порта представляет собой двунаправленную линию ввода-вывода с возможностью подключение внутреннего сопротивления нагрузки. На рис. 1.8 показана, функциональна схема одной линии порта ввода-вывода. Выходной контакт этой линии обозначен на схеме Pxn.

 

Рис. 1.8 - Упрощённая схема одной линии цифрового ввода-вывода

 

Конфигурация выводов

Каждый разряд порта связан с тремя разрядами трёх специальных регистров: DDxn; PORTxn; PINxn.

Как уже говорилось:

♦ бит DDxn – это разряд номер n регистра DDRx;

♦ бит PORTxn – это разряд номер n регистра PORTx;

♦ бит PINxn – это разряд номер n регистра PINx.

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

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

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

 

 

Описание лабораторной установки

 

Лабораторная установка представляет собой: макетную отладочную плату, изображенную на рис 2.1.

 


 

Рис.2.1.Макетная плата для микроконтроллера AtTiny2313

 

В состав входят следующие устройства:


1 - микроконтроллер AtTiny2313
2 - кварц
3 - разъем ISP для программирования
4 - разъем UART
5 - универсальный разъем для подключения к портам ввода/вывода
6 - кнопка сброса
7 - кнопки для ввода данных, в данном случаи я их повесил на порт В
8 - разъем питания этого добра
9 - конденсатор
10 - светодиоды, подключены через резисторы номиналом 330 Ом, предназначены для индикации битов порта B

Для того чтобы запрограммировать микроконтроллер нам понадобится программа формирующая файл прошивки. (*.hex) В качестве этой программы компилирующей файл прошивки мы будет использовать CodeVisionAVR

CodeVisionAVR — интегрированная среда разработки программного обеспечения для микроконтроллеров семейства Atmel AVR.

Программа является 32-битовым приложением, которое работает под операционными системами Windows95,98, NT4, 2000 и XP

CodeVisionAVR обеспечивает выполнение почти всех элементов языка Си, которые разрешены архитектурой AVR, с некоторыми добавленными характеристиками, которые реализуют преимущество специфики архитектуры AVR

CodeVisionAVR включает в себя следующие компоненты:

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

- компилятор языка ассемблер для AVR;

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

- модуль взаимодействия с отладочной платой STK-500;

- модуль взаимодействия с программатором;

- терминал.

 

Выходными файлами CodeVisionAVR являются:

HEX, BIN или ROM-файл для загрузки в микроконтроллер посредством программатора;

COFF — файл, содержащий информацию для отладчика;

OBJ — файл;

Работа с CodeVisionAVR начинается с создания нового проекта

 

МК должен быть сконфигурирован с помощью визадра под ATtiny2313

 

 

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

File- New

 

На вопрос, что бы будем создавать выбираем - Project

Использовать ли визард – отвечаем -Yes

Откроется окно нового проекта. На закладке Chip выберем нужный МК – в нашем случае это – Attyny2313. Установим рабочую частоту тут же.

Переходим на закладку Ports и подзакладкуPortB. Здесь мы выбираем, порт B его мы сконфигурируем на выход. Напротив каждого бита выберите In\Out так чтобы все выходы были Out

 

Переходим на закладку Ports и подзакладкуPortD. Здесь мы выбираем, порт D его мы сконфигурируем на вход. Проверьте чтобы Биты 0,1,2 стояли на вход – In

 

 

 

 

Далее открываем Меню – Program - Выбираем пункт Generate, SaveendExit.

Далее программа спросит имя файла (*.с) напишите любое название

имя файла (*.prj) напишите любое название – Это и Есть ваш проект

имя файла (*.сwp) напишите любое название

После этого у вас откроется созданный мастером код.

Чтобы до конца создать проект и сделать прошивку для МК (файл *.hex)

Идем в меню Project- Build

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

Ошибок 0 Предупреждений 0.

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

#include<delay.h>

Вставить ее надо ниже  #include<tiny2313.h> вставленной мастером.

Далее надо описать переменные, у нас пока она будет одна. – она будет отвечать за то какой светодиод будет гореть назовем ее – I

Третья строка это и есть описание переменной I - целый тип (integer)

int i;

Мастер сконфигурировал нам порты на вход и выход, теперь мы должны написать сам код нашей программы идем в самый низ кода и ищем строку:

While (1)

{

// Place your code here

};

Это тело программы

 

Сюда мы вставимцикл в котором мы зажигаем светодиоды и обрабатываем нажатие кнопки:

 

While (1)

{

if (PIND.0==0)

for (i=0; i<=7; i++)

  {

  PORTB = 0b00000001 <<i;

delay_ms(1000);

}

}

 

Теперь обсудим то что написали:

while (1) - это цикл который выполняется до выполнения условия прописанного в скобках

именно этот цикл будет бесконечным.

 

if (PIND.0==0) - это наше прерывание оно нам говорит что когда на 0 бите(ноге микросхемы) порта D - напряжение соответствует логическому нулю, выполнить условие идущее дальше в скобках.

 

for (i=0; i<=7; i++) - это цикл выполняющийся от 0 до 7 увеличивая I на 1 единицу каждый шаг.

Т.е. он нам переберет 0,1,2,3,4,5,6,7.

PORTB = 0b00000001 <<i; - записать в порт B - в бинарном виде (0b- приставка бинарного числа) числа 00000001 и сдвинуть справа на лево число разрядов равных i

 

Т.е. каждый цикл мы сдвигаем на 1 место единицу в порте B. Порт B – это всего 8 выходов микросхемы ATtyny2313. 0\1 соответствует нижнему и верхнему логическим уровням т.е. 0\5 в

И при подключении светодиода через резистор 330м – он будет гореть. Т.е. одновременно будет гореть у нас только 1 светодиод.

delay_ms(1000); - задержка для нашего цикла «перебирающего» биты порта B.

время за которое зажигается светодиод 15 мсек, если мы не поставим паузу не заметим кАк гаснет и загорается светодиод.

Как же мы проверим наш проект,до того чтобы паять нашу плату? Для этого мы используем симулятор. Proteus

Знакомство с PROTEUS

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


Кроме этого в пакет Proteus заложена специальная система проектирования и моделирования печатных плат. Программа Proteus умеет симулировать работу таких контроллеров: ARM7, 8051, PIC, AVR, Motorola, BasicStamp. Внутренняя библиотека компонентов имеет различные справочные данные. Она поддерживает МК: 8051, PIC, HC11, AVR, ARM7/LPC2000 и другие широко распространенные процессоры. Вдобавок к этому в программе содержатся более 6000 цифровых и аналоговых моделей всевозможных устройств.


Программа Proteus прекрасно работает с большинством компиляторов и ассемблерами. PROTEUS VSM делает довольно достоверно моделирование и отлаживание весьма сложных устройств, в которых может находиться несколько «МК» разных семейств в одном устройстве!


Необходимо учитывать и понимать, что любое моделирование электронных схем не может, абсолютно точно повторяет работу реального устройства. Но для общего отлаживания, какого-либо алгоритма работы «МК», этого вполне будет достаточно. Программа PROTEUS имеет большую библиотеку электронных компонентов, а отсутствующие модели можно сделать самостоятельно. В случае, когда какой-либо компонент не программируемый, то на сайте производителя скачать его SPICE модель, и добавить в подходящий корпус.


Программа Proteus состоит из 2 основных модулей:

 

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


2) ARES - это графический редактор печатных плат со встроенным автотрассировщиком ELECTRA, автоматической расстановкой компонентов на печатной плате и отличным менеджером библиотек.


Программа PROTEUS имеет отличные возможности:

 

COMPIM - этот компонент позволяет вашему виртуальному устройству подключиться к РЕАЛЬНОМУ COM-порту вашего ПК.

USBCONN - этот инструмент позволяет подключиться к реальному USB порту компьютера.

Открываем программу.

 

Нажимаем на левой панели маленькую букву «Р»

 

Откроется менеджер добавляющий элементы в проект.

В строке поиска Keywords – пишем «2313» и программа предложит те элементы в которых содержится эта цифра.

Выбираем ATtyny2313 – на панели показан будет тип корпуса и схема элемента- нажимаем –ок.

 

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

Резисторы – выбираем категорию Resistors – в столбце Descriptionвыбираем резистор с сопротивлением 1КОм (1К ОНМ)

Светодиоды-В строке поиска Keywords – пишем «led»и выбираем светодиод

 

 

 

Добавляем с TerminalsMode питание(Powers) и землю (Ground)

 

 

Добавлять элементы следует в ComponentMode.

 

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

Чтобы соединить элементы надо выбрать в левом верхнем углу стрелку, далее выбрать угол одного элемента и соединить с углом второго эелемента.

 

 

Далее нам понадобиться файл *.hexкоторый мы получил от компиляции нашей программы в CVAVR.

2 раза кликнем по нашему контроллеру левой кнопкой.

 

В строке programfiles – выбираем наш файл *.hexнажимаем ок.(фал находитсяв той же папке где вы сохранили ваш проектCodeVisionAVR в директории exe)

 

Внизу проекта нажимаем Play.

Наша схема изменится появятся красные и синие квадратики соответствующие нижнему \ верхнему лог уровню. Теперь можно нажать кнопкой мыши - на пиктограмме кнопки (button).

И наш контроллер начнет выполнять программу.

 

Выглядеть будет так. При нажатии кнопки с паузой в 1 сек будут зажигаться последовательно светодиоды с 0 по 7 соответстующим битам порта B.

 

Порядок выполнения работы

1. Получить задание у преподавателя

2. Разработать алгоритм

3. Разработать программу в CodeVisionAVR

4. Скомпилировать файл прошивки

5. Спроектировать макетную плату в PROTEUS

6. Загрузить файл (*.hex) в PROTEUS и запустить симуляцию в проекте.

Оформление отчета

Отчет должен содержать:

а) формулировку цели работы,

б)схему устройства

в) код программы в CodeVisionAVR

г)схема проекта в PROTEUS

д) Выводы по работе

 

 

 

Список использованной литературы

1) М.Б. Лебедев. CodeVision AVR. Пособие для начинающих. Додэка XXI, 2008. 592 с.

 

Содержание:

1.Методические указания по подготовке к работе

1.1. Основные сведения из теории:

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

Устройство микроконтроллера на примере ATtiny 2313

Гавардская архитектура микроконтроллеров AVR

Понятие стека

АЛУ – арифметико-логическое устройство

X-регистр, Y-регистр и Z-регистр

Системная перепрограммируемая Flash-память программ

Память данных SRAM

Порты ввода-вывода

Использование портов для цифрового ввода-вывода



Поделиться:


Последнее изменение этой страницы: 2021-01-08; просмотров: 174; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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