Изучение модуля 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.