• Главная
  • ВАЗ
  • Приора
Логин:
Пароль:
| Регистрация< | Забыли пароль? |
Поиск:

Урок 9. Передача данных через SPI в AVR микроконтроллерах

Опубликовано: 05.09.2018

видео Урок 9. Передача данных через SPI в AVR микроконтроллерах

Программирование МК AVR. УРОК 33. Часть 1. SPI. Карта SD

Данный урок посвящен последовательному интерфейсу — SPI. Интерфейс позволяет передавать информацию между несколькими устройствами, не обязательно микроконтроллерами. Особенность заключается в том, что имеется одно ведущее устройство и одно или несколько ведомых. Так же интерфейс используется многими программаторами для прошивки микроконтроллеров.


Программирование МК STM32. УРОК 23. HAL. SPI. Сдвиговый регистр 74HC595

SPI достаточно прост в использовании, рассмотрим пример, в котором используется один ведущий (master — босс :D) и два ведомых микроконтроллера (slave — работяги).

SCK — Тактовый сигнал. Используется для синхронизации данных.


AVR микроконтроллеры для начинащих (урок 10) SPI-интерфейс

MOSI — передатчик ведущего, приемник ведомого

MISO — приемник ведущего, передатчик ведомого

SS — выбор ведомого

Для того, чтобы ведомый 0 принимал команды, нужно на его вход SS подать логический 0. Тогда он будет знать, что общение идет именно с ним, ведомый 1 будет все игнорировать. Аналогично, чтобы «активировать» ведомого 1, нужно подать на его вход SS логический 0, а на вход SS ведомого 0 — логическую единицу. В таком случае слушать команды будет только ведомый 1.

В отличие от предыдущих уроков, здесь придется создать 2 прошивки. Задача ведущего: активировать ведомого 0, послать команду мигнуть светодиодом, переключиться на 1, снова послать команду мигнуть светодиодом, повторить. Задача ведомых принять команду и мигать светодиодом. Получится одна прошивка для ведущего, вторая для двух ведомых. Создаем проект, на закладке SPI для master настройки слева, для slave справа. Не забудьте поставить галочку SPI Interrupt у slave.

Прошивка для ведущего будет выглядеть так:

#include <mega8.h> #include <spi.h> #include <delay.h> void main ( void ) { // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=Out Func4=In Func3=Out Func2=Out Func1=Out Func0=Out // State7=T State6=T State5=0 State4=T State3=0 State2=0 State1=1 State0=0 PORTB = 0x02 ; DDRB = 0x2F ; PORTC = 0x03 ; DDRC = 0x00 ; // SPI initialization // SPI Type: Master // SPI Clock Rate: 125,000 kHz // SPI Clock Phase: Cycle Half // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR = 0x52 ; SPSR = 0x00 ; while ( 1 ) { PORTB.2 = 0 ; //Переключаемся на ведомого 0 spi ( '1' ) ; //Отсылаем ему 1, чтобы он включил светодиод delay_ms ( 100 ) ; //ждем spi ( '0' ) ; //Отсылаем ему 0, чтобы он выключил светодиод delay_ms ( 100 ) ; //ждем PORTB.2 = 1 ; //Делаем ведомого 0 не активным PORTB.1 = 0 ; //Переключаемся на ведомого 1, далее по аналогии с 0 spi ( '1' ) ; delay_ms ( 100 ) ; spi ( '0' ) ; delay_ms ( 100 ) ; PORTB.1 = 1 ; } ; }

Для ведомых прошивка будет выглядеть так:

#include <mega8.h> interrupt [ SPI_STC ] void spi_isr ( void ) { unsigned char data ; data =SPDR ; //читаем приходящие байты if ( data == '1' ) //если пришла 1, включить светодиод { PORTD = 0xFF ; } if ( data == '0' ) //если пришел 0, выключить светодиод { PORTD = 0x00 ; } } void main ( void ) { PORTB = 0x00 ; DDRB = 0x10 ; PORTD = 0x00 ; DDRD = 0xFF ; // SPI initialization // SPI Type: Slave // SPI Clock Rate: 125,000 kHz // SPI Clock Phase: Cycle Half // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR = 0xC2 ; SPSR = 0x00 ; // Clear the SPI interrupt flag #asm in r30 ,spsr in r30 ,spdr #endasm // Global enable interrupts #asm("sei") while ( 1 ) { } ; }

Обратите внимание, что прием происходит в прерывании, т.е. в основном цикле мы можем делать, что угодно, а как только информация придет по SPI, автоматически начнет исполняться код в прерывании.

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

 

Новости
    Где купить объектив на телефон

    При возникновении неполадок с объективом вашего телефона Вы всегда сможете обратиться в настоящий интернет-магазин, где сможете приобрести объективы

    Диагностика дизеля
    В современных дизелях огромное значение уделяется диагностике электроники узлов автомобиля. На данный момент на рынке диагностики грузового транспорта, автобусов и спецтехники есть два главных производителя

    Установка своими руками •
    Миниатюризация идет по двум вариантам. Первый вариант предусматривает изготовление только миниатюрных инструментов – дисков, фрез и т.д. Второй вариант предусматривает именно изготовление шлифовального

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

    Трамблер ваз 2106
    В целом регулировка системы выполняется за три этапа. К первому относится корректировка угла замкнутого состояния контактов. Учитывайте, что он зависит непосредственно от величины зазора в контактах трамблера.

    Тюнинг ваз 2105 своими руками
    Тюнинг ВАЗ 2105 можно проводить и внутри салона, и снаружи машины, все зависит от количества денежных средств, которые водитель может выделить на работы. Если денег достаточно, стоит провести модернизацию

    Массажное оборудование
    Зачастую люди сами не понимают, чего они собственно, в этой жизни хотят. Но, следует понять, что в первую очередь, нужно удовлетворять потребности, начиная с низших и так до самых возвышенных, которые,

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

    Магазин автозапчастей
    Независимо от того, какой маркой и моделью транспортного средства владеет автомобилист, рано или поздно, чаще или реже, но ему все равно приходится сталкиваться с проблемой поиска необходимых запасных

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

Реклама
Архив
rss