Изучение модуля SPI микроконтроллера ATMEGA
Анализ принципов работы интерфейса SPI. Схема подключения к микросхеме 23S17. Алгоритм организации параллельных дискретных портов ввода-вывода по последовательному интерфейсу с применением последовательных интерфейсов PC и SPI. Листинг программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 22.01.2020 |
Размер файла | 43,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Изучение модуля SPI микроконтроллера ATMEGA
Цель работы: Изучить принцип работы интерфейса SPI
Принцип работы будем изучать, подключив к МК «расширитель порта». Довольно часто в практике разработчика возникает необходимость организовать множество параллельных дискретных портов ввода-вывода по последовательному интерфейсу.
Эти порты могут использоваться, например, для опроса состояния различных датчиков или контактов, а также для дискретного управления единичными индикаторами или исполнительными устройствами.
Наиболее предпочтительными для этих целей являются последовательные интерфейсы PC и SPI, которые обладают высокой скоростью, требуют минимального количества линий связи и широко распространены в различной аппаратуре.
Конечно, данную задачу можно решить, применив недорогой микроконтроллер, имеющий встроенный интерфейс PC или SPI. В этом случае микроконтроллер под управлением программы сможет принимать данные по последовательному интерфейсу и транслировать их через параллельные порты ввода-вывода, а также выполнять обратную передачу данных.
Такой микроконтроллер должен иметь большое число выводов, или к нему придется подключить дополнительные регистры.
Однако поставленную задачу можно решить и более простым способом, не требующим использования микроконтроллера, а также создания и отладки программы. Такую возможность предоставляют новые микросхемы MCP23017 и MCP23S17 компании Microchip, которые были представлены на рынке электронных компонентов в 2007 г.
Первая из них является преобразователем последовательного интерфейса I2C в два параллельных 8-разрядных порта ввода-вывода, а вторая - преобразователем последовательного интерфейса SPI в два параллельных 8-разрядных порта ввода-вывода. Рассмотрим состав и основные технические характеристики этих микросхем. Подробнее: [http://smanuals.ru/measurement-technology/articles5439.html]
интерфейс spi программа микросхема
Рисунок 1 -- Схема подключения к микросхеме 23S17
Листинг программы
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
#define SS_SET PORTB&=0b11111011; _delay_ms(1); //активируем
#define SS_CLR PORTB|=0b00000100; _delay_ms(1); //выключаем микросхему
//определяем контрольный байт для чтения или запись
#define ControlByteWrite 0b01000000
#define ControlByteRead 0b01000001
//адреса регистров, в нем 1 выход, 0-вход
#define IODIRA 0x00
#define IODIRB 0x10
//Регистр GPIO отражает значение порта
#define GPIOA 0x09//0x09
#define GPIOB 0x19
char RES;
void spi_init(void)
{
SPCR=(0<<SPIE) | (1<<SPE) | (0<<DORD) | (1<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (1<<SPR0);
SPSR=(0<<SPI2X);
//настраиваем порты на вход-выход
DDRB=0b00101100;
}
void SPI_MasterTransmit(char cData)
{
/* Запуск передачи данных: */
SPDR = cData;
/* Ожидание завершения передачи: */
while(!(SPSR & (1 << SPIF)));
_delay_ms(1);
}
//настройка микросхем 23s17
void SET_IO(void)
{
//настраиваем на вход или выход
SS_SET;
SPI_MasterTransmit(0xFF); //пустая отправка
SS_CLR;
SS_SET;
SPI_MasterTransmit(ControlByteWrite); //адрес микросхемы
SPI_MasterTransmit(0x0A); //адресс регистра IOCON
SPI_MasterTransmit(0x80); //выбираем режим "отдельные адреса для А и В"
SS_CLR;
SS_SET;
SPI_MasterTransmit(ControlByteWrite); //адрес микросхемы
SPI_MasterTransmit(IODIRA); //адресс регистра
SPI_MasterTransmit(0b11111000); //на выход 3 младших
SS_CLR;
SS_SET;
SPI_MasterTransmit(ControlByteWrite); //адрес микросхемы
SPI_MasterTransmit(GPIOA); //адресс регистра
SPI_MasterTransmit(0b00000111); //установить 3 младших
SS_CLR;
SS_SET;
SPI_MasterTransmit(ControlByteWrite); //адрес микросхемы
SPI_MasterTransmit(IODIRB); //адресс регистра
SPI_MasterTransmit(0b00000111); //на вход 3 младших
SS_CLR;
}
void READ_WRITE(void)
{
SS_SET;
SPI_MasterTransmit(ControlByteRead); //адрес микросхемы
SPI_MasterTransmit(GPIOB); //адресс регистра
SPI_MasterTransmit(0xFF); //опросить 3 младших
RES=SPDR;
SS_CLR;
SS_SET;
SPI_MasterTransmit(ControlByteWrite); //адрес микросхемы
SPI_MasterTransmit(GPIOA); //адресс регистра
SPI_MasterTransmit(RES); //установить 3 младших
SS_CLR;
}
int main(void)
{
spi_init();
_delay_ms(1000);
SET_IO();
while (1)
{
_delay_ms(100);
READ_WRITE();
}
}
Размещено на Allbest.ru
...Подобные документы
Микроконтроллер — компьютер на микросхеме, предназначенный для управления электронными устройствами. Структурная схема типичного современного микроконтроллера. Архитектурная особенность построения портов ввода/вывода. Принципиальная схема устройства.
курсовая работа [2,1 M], добавлен 26.11.2013Сущность и предназначение последовательных интерфейсов. Формат асинхронной и синхронной посылки. Функциональные возможности и схема соединения по интерфейсу RS-232C. Назначение сигналов интерфейса. Понятие, конфигурирование и использование СОМ-портов.
контрольная работа [175,2 K], добавлен 09.11.2010Проектирование модуля ввода/вывода аналоговых, дискретных и цифровых сигналов, предназначенного для сбора данных со встроенных дискретных и аналоговых входов с последующей их передачей в сеть. Расчет временных задержек. Выбор резисторов на генераторе.
курсовая работа [307,1 K], добавлен 25.03.2012Особенности интерфейсов подключения периферийных устройств ввода/вывода и хранения информации. Механизм передачи данных, способность к одновременной обработке данных нескольких приложений как важная характеристика. Многозадачность в настольных системах.
статья [32,8 K], добавлен 05.05.2010Создание системы, осуществляющей запуск программы по расписанию, которое хранится в реестре. Методы и средства взаимодействия с аппаратными и программными средствами, типы интерфейсов. Алгоритм работы и листинг программы, проверка ее работоспособности.
курсовая работа [78,6 K], добавлен 13.11.2009Изучение системной поддержки, применения, конфигурирования параллельного (LPT) и последовательного (СОМ) интерфейсов ввода-вывода компьютерных систем, проведение их технической диагностики, устранение неисправностей. Разработка собственных устройств USB.
дипломная работа [7,3 M], добавлен 10.07.2010Приобретение навыков самостоятельной работы по сопряжению макета на базе микроконтроллера AVR АТMEGA128 с компьютером. Принципы управления двунаправленным обменом данными. Программирование последовательного интерфейса в операционных системах Windows.
лабораторная работа [365,4 K], добавлен 16.06.2011Разработка принципиальной схемы, выбор управляющего микроконтроллера. Общий алгоритм работы программы. Блок анализа и реализации команд, принятых от персонального компьютера. Описание используемых интерфейсов. Формат данных RS-232C, листинг программы.
курсовая работа [1,2 M], добавлен 26.12.2012Программа для расчета полинома. Описание и схема алгоритма, распределение памяти под код программы, под данные и стек. Схема хранения операций ввода-вывода и их подключение. Изменения стека во время прогона программы. Листинг программы с комментариями.
курсовая работа [59,0 K], добавлен 02.12.2009Особенности применения светодиодной индикации в микроконтроллерных системах. Характеристика основных приемов программирования универсальных портов ввода-вывода микроконтроллеров AVR. Этапы проектирования елочной гирлянды с микроконтроллерным управлением.
лабораторная работа [291,7 K], добавлен 17.11.2012Анализ операторов ввода и вывода, а также характеристика форматов, используемых в этих операторах. Оформление законченной программы с применением этих операторов. Структура программы. Алфавит языка и типы данных. Ввод и вывод информации. Форматный вывод.
лабораторная работа [62,0 K], добавлен 15.07.2010Аналитический обзор существующих параллельных интерфейсов. Разработка лабораторного стенда и алгоритмов подпрограмм обмена информацией. Создание программ драйвера ИРПР. Команды микропроцессора, алгоритмы подпрограмм инициализации, ввода и вывода символа.
курсовая работа [255,2 K], добавлен 10.07.2017Отличительные особенности микроконтроллеров AVR семейства Mega. Характеристики процессора, подсистемы ввода-вывода. Архитектура ядра и организация памяти. Регистры общего назначения. Алгоритмы моделирования команд. Реализация модели внешнего устройства.
курсовая работа [3,7 M], добавлен 24.06.2013Использование программой функции ввода-вывода данных для реализации дружественного интерфейса с пользователем. Функции консоли и особенности их применения для обеспечения аккуратного ввода информации и упорядоченного вывода. Обзор стандартных функций.
лабораторная работа [40,4 K], добавлен 06.07.2009Изучение подсистемы ввода-вывода и файловой системы ОС семейства Windows NT. Анализ особенностей работы приложения TotalCommander и его взаимодействия с файловой системой и подсистемой ввода-вывода. Взаимодействие TotalCommander с сетевыми адаптерами.
лабораторная работа [1,1 M], добавлен 12.06.2012Характеристика программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит результаты на экран. Описание переменных в программе, ее блок-схема и алгоритм работы. Листинг программы. Описание входных данных и результат вычислений.
курсовая работа [721,4 K], добавлен 10.11.2010Запись в файл и чтение в С++. Общее понятие о структуре. Многомерные и двумерные массивы. Логика работы программы. Схема алгоритма функции Main. Определение суммарного заработка, сотрудника с наибольшей зарплатой. Создание новой базы, листинг программы.
курсовая работа [275,7 K], добавлен 07.10.2012Изучение и проектирование автоматического интерфейса ввода-вывода, состоящего из канала измерения в указанных пределах и канала управления напряжением в определенном диапазоне с максимальной приведенной погрешностью и ограниченным временем измерения.
контрольная работа [93,1 K], добавлен 31.08.2010Написание модуля на языке Ассемблер для вычисления значения выражения. Составление программы корректного ввода исходных данных в таблицу и вывода результата в виде таблицы. Создание модуля для обработки строк и программы корректного ввода исходных данных.
курсовая работа [36,8 K], добавлен 18.09.2010Описание алгоритма работы и разработка структурной схемы МКС. Схема вывода аналогового управляющего сигнала, подключения ЖК-дисплея, клавиатуры и аварийного датчика. Разработка блок-схемы алгоритма главной программы работы МКС. Функция инициализации.
курсовая работа [5,7 M], добавлен 26.06.2016