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

Главная Новости

Урок 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