Современная электроника №1/2022
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 39 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2022 работы программы – светодиоды под- свечиваются и гаснут поочерёдно, что наглядно демонстрирует осцил- лограмма, представленная на рис. 16. В момент времени, когда на выводе PВ0 микроконтроллера DD2 едини- ца, на выводе PВ0 микроконтроллера DD3 – ноль. Работа с SPI в микроконтроллерах Mega в Proteus Передача данных через интерфейс SPI между двумя микроконтроллерами AVR Рассмотрим процесс передачи дан- ных между двумя микроконтролле- рами AVR на примере микросхемы ATmega16, для чего создадим в редак- торе Schematic Capture новый про- ект и добавим в его рабочее поле две микросхемы ATmega16, два светоди- ода, два резистора (100 Ом), два сим- вола «земли» и соединим компонен- ты, как показано на рис. 17. Напишем на языке программирования С про- граммный код управления передачей данных. Необходимо отметить, что программа инициализации пишет- ся как для ведущего, так и для ведо- мого микроконтроллера. Определим микроконтроллер DD1 как ведущий, а микроконтроллер DD2 как ведомый. При этом задачей ведущего контрол- лера будет послать управляющий сиг- нал (кодовую комбинацию), задачей ведомого – принять его и последова- тельно включить и выключить оба светодиода. Для удобства соединения можно отразить в рабочей области микросхему DD1, для чего выделим её при помощи левой кнопки мыши, при помощи правой кнопки мыши вызовем контекстное меню и выбе- рем в нём пункт X-Mirror. В резуль- тате микросхема будет отражена по горизонтали в рабочем поле проекта. В таком положении выводы PB4/ SS , PB5/MOSI, PB6/MISO, PB7/SCK обеих микросхем соединить намного про- ще, при этом соединительные линии на схеме будут короче. В окне настроек Edit Component для каждого микроконтроллера установим следующие параметры (см. рис. 18): ● поле CKOPT (Oscillator Options) – (1) Unprogrammed; ● поле BOOTRST (Select Reset Vector) – (1) Unprogrammed; ● поле CKSEL Fuses – (0010) Int.RC 2MHz; ● поле Boot Loader Size – (00) 1024 words. Starts at 0x1C00; ● поле SUT Fuses – (01); ● поле Advanced Properties – Clock Frequency (Default). Окно настроек можно открыть при помощи двойного щелчка левой кноп- кой мыши по выбранному на схеме микроконтроллеру. В модуле SPI имеется три регистра ввода/вывода: ● SPDR – регистр данных, содержит по- сылаемый или принятый байт данных; ● SPCR – регистр управления, опреде- ляет функционирование модуля SPI; ● SPSR – регистр состояния, отобража- ет состояние модуля SPI. Включение/выключение SPI выпол- няется установкой шестого бита (SPE) регистра SPCR, пятый бит (DORD) зада- ёт порядок передачи данных, а четвёр- тый бит (MSTR) этого регистра опреде- ляет режим работы интерфейса. Перед выполнением передачи дан- ных необходимо, прежде всего, разре- шить работу модуля SPI. Для этого сле- дует установить в единицу шестой бит регистра SPCR. Режим работы опре- деляется состоянием четвёртого бита этого регистра: если бит установлен в 1, микроконтроллер работает в режиме Master, если сброшен в 0 – в режиме Slave. Программно (на языке програм- мирования С) эти действия можно реа- лизовать следующим образом: SPCR=0b01010000; // установка битов регистра SPCR ведущего микро- контроллера Рис. 17. Демонстрационная схема с использованием двух микроконтроллеров ATmega16 и светодиодов Рис. 18. Настройка параметров микроконтроллера ATmega16 при передаче данных между двумя устройствами через интерфейс SPI
RkJQdWJsaXNoZXIy MTQ4NjUy