Работа периферийных устройств
4 - в МК типа m163 при SPI2X = 1
При завершении выдачи/приема байта устанавливается в единичное состояние разряд SPIF регистра состояния SPSR и при единичном состоянии разряда SPIE регистра SPCR в блок прерываний поступает запрос прерывания SPI STC (SPI Serial Transfer Complete).
Разряд SPIF сбрасывается в нулевое состояние аппаратно при переходе к выполнению соответствующей прерывающ
ей программы или при чтении регистра SPSR перед записью нового байта в регистр SPDR (W).
При записи нового байта в регистр SPDR (W) в процессе сдвига Ранее записанного байта устанавливается в единичное состояние разряд WCOL регистра SPSR (ошибка при вводе). Разряд WCOL сбрасывается в нулевое состояние при чтении регистра SPSR.
При MSTR = 0 порт работает в режиме ведомого. В этом случае вывод MOSI работает как вход, вывод MISO - как выход, выводы SСК и SS - как входы. Выводы порта подключаются к соответствующим выводам порта РВ при установке в единичное состояние разряда SPE регистра SPCR. Порт переходит в рабочее состояние при нулевом значении сигнала на входе SS.
При поступлении серии импульсов на вход SCK из регистра SPDR (W) на вывод MISO последовательно выводится байт, ранее записанный в этот регистр. Одновременно в регистр вводится байт, поступающий на вход MOSI. При завершении обмена байтами устанавливается в единичное состояние разряд SPIF регистра SPSR и при единичном состоянии разряда SPIE в регистре SPCR в блок прерываний поступает запрос прерывания SPI STC.
Состояние разрядов CPOL и DORD в регистре SPCR у ведомого порта должно совпадать с состоянием одноименных разрядов у ведущего порта. Состояние разрядов SPR0 и SPR1 не влияет на работу порта.
Состояние разряда СРНА определяет значение сигнала на выходе MISO при переходе порта в рабочее состояние (SS = 0) до и после обмена байтами. При СРНА = 0 при переходе порта в рабочее состояние па выходе MISO появляется значение бита, который будет выдаваться первым, а значение сигнала после выдачи восьмого бита является неопределенным. При СРНА= 1 значение сигнала на выходе MISO при переходе порта в активное состояние является неопределенным, а после передачи восьмого бита на выходе MISO сохраняется значение переданного бита.
При подключении к ведущему порту нескольких ведомых портов шины MOSI, MISO и SCK являются общими для всех портов, а выводы SS ведомых микроконтроллеров должны быть соединены со специальными выходами ведущего микроконтроллера с помощью отдельных шин. В качестве специальных выходов ведущего микроконтроллера могут использоваться любые выводы любых портов, не используемые в иных целях.
3. Последовательный порт ввода-вывода UART
Порт UART входит в состав периферийных устройств микроконтроллеров типа 2313, 4433,8515, 8535, ml63 и m10
Порт UART содержит передатчик, приемник, тактовый генератор и аппаратуру управления передачей и приемом. Передатчик получает байт из шины данных микроконтроллера и формирует и выдает последовательность битов (кадр.), которая кроме битов, составляющих байт (DO, D1,. ., D7), содержит стартовый бит (start), имеющий нулевое значение, и столовый бит (stop), имеющий единичное значение. Между старшим битом байта (D7) п стоповым битом может помещаться дополнительный бит (СВ).
Приемник выделяет стартовый бит, принимает кадр, формат которого (число битов) задан, расформировывает принятый кадр и подготавливает байт для выдачи в шипу данных микроконтроллера.
Тактовый генератор формирует сигнал, определяющий скорость передачи и приема битов и позволяющий выделять биты при приеме кадра.
В состав порта входят регистр данных передатчика UDR (Т), регистр Данных приемника UDR (R), регистр управления UCR или UCSRB (№ $0А), регистр состояния USR пли UCSRA (№ $0В), регистр задания скорости передачи/приема UBRR (№ $09) и другие элементы. Регистры Данных передатчика и приемника имеют один номер - $0С. При обращении для записи выбирается регистр UDR (T), при обращении Для чтения - регистр UDR (R).
Передатчик готов к работе при установке в единичное состояние разряда TXEN регистра управления UCR. При этом выход передатчика TXD подключается к выводу определенного порта микроконтроллера. Передача кадра начинается при загрузке байта в регистр UDR (T). Загрузку можно выполнять при единичном состоянии разряда UDRE регистра состояния USR. При сбросе микроконтроллера в исходное состояние устанавливается UDRE = 1.
Загруженный байт передается в сдвигающий регистр передатчика TSR и происходит выдача кадра на выход микроконтроллера TXD.
При нулевом состоянии разряда CHR9 регистра UCR формируется кадр из десяти битов. При CHR9 = 1 кадр содержит одиннадцать битов. Значение дополнительного бита в этом случае должно быть указано в разряде ТХВ8 регистра UCR.
Первый байт при загрузке немедленно передается в регистр TSR и разряд UDRE регистра USR сохраняет единичное состояние, что позволяет сразу после загрузки первого байта загружать в регистр UDR (T) второй байт. Второй и последующие байты сохраняются в регистре UDR (Т) до завершения выдачи из регистра TSR предыдущего кадра. При этом разряд UDRE регистра USR находится в нулевом состоянии и загрузка очередного байта в регистр UDR (T) запрещена.
При завершении выдачи кадра из регистра TSR и отсутствии очередного байта в регистре UDR (T) устанавливается в единичное состояние разряд ТХС регистра USR и при единичном состоянии разряда TXCIE регистра UCR в блок прерываний поступает запрос прерывания UART ТХС.
Разряд ТХС регистра USR сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению соответствующей прерывающей программы или программно при выполнении команды установка бита в единичное состояние.
При единичном состоянии разряда UDRE регистра USR и единичном состоянии разряда UDRIE регистра UCR в блок прерываний поступает запрос прерывания UART DRE. Разряд UDRE сбрасывается в нулевое состояние при записи байта в регистр UDR (T). Прерывающая программа, выполняемая по запросу прерывания UART DRE, должна содержать команду записи в регистр UDR (T) для прекращения действия этого запроса прерывания.
Приемник готов к работе при установке в единичное состояние разряда RXEN регистра UCR. При этом вход приемника RXD подключается к выводу определенного порта микроконтроллера. При обнаружении на входе RXD отрицательного фронта сигнала, приемник определяет уровень сигнала в момент времени, отстоящий от фронта на половину интервала, отводимого на передачу бита при заданной скорости передачи. При обнаружении нулевого уровня принимается решение о приеме стартового бита и далее определяются уровни сигнала в моменты времени, отстоящие друг от друга на интервал, отводимый на передачу бита. Получаемая последовательность значений вводится в сдвигающий регистр приемника RSR. Если принимается кадр из одиннадцати битов (CHR9 = 1), дополнительный бит принимается в Разряд RXB8 регистра UCR. Если на месте ожидаемого стопового бита сигнал имеет пулевое значение, устанавливается в единичное состояние Разряд FE регистра USR (ошибка формата). Разряд FE сбрасывается в нулевое состояние при появлении единичного значения стопового бита.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности