Общая структура микропроцессорной системы. Развитие фон-Неймовской архитектуры. Микроконтроллеры средней серии Microchip. Программирование микроконтроллеров Microchip средней серии, страница 9

Центральным элементом нулевого таймера является регистр, доступный программно для чтения и записи. Сигналом, поступающим с блока синхронизации 2, содержимое регистра инкриментируется. При переполнении, содержимое регистра обнуляется и возникает сигнал – «запрос прерывания» нулевого таймера (при этом бит TOIF должен быть сброшен программно). На вход синхронизатора 2 сигнал подается на коммутатор 2, который подключает сигнал с выхода коммутатора 1 или напрямую, или через предделитель. Предделитель имеет управляемый коэффициент деления от 2 до 256. Коммутатор 1 задает режим работы, либо режим счетчика, либо режим таймера. В режиме таймера используется сигнал от внутреннего тактового генератора. В режиме счетчика используется на выходе RAH. С помощью бита TOSE можно задавать активный перепад: фронт или спад.

Универсальный синхронно-асинхронный передатчик

Блок условно состоит из 3 частей:

1.  приемник

2.  передатчик

3.  тактовый генератор

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

В синхронном режиме линия данных и линия синхронизации. При этом возможны как симплексный режим обмена, так и полудуплексный.

В асинхронном режиме, поскольку приемник и передатчик относительно автономны, возможны: симплексный режим с одной линией связи, и дуплексный режим с двумя линиями связи.

Центральным элементом приемника является сдвиговый регистр. Сдвиговый регистр будет принимать информацию, если будет установлен бит CREN. Девятый информационный бит может использоваться как контроль по четности, либо как индикатор адреса. В последних контроллерах адресный режим поддерживается аппаратно. После приема очередного байта информации, данные из сдвигового регистра переписываются в программно доступный регистр RCREG, а девятый бит прописывается в бит RX9D. После того, как данные записаны и приняты, устанавливается запрос прерывания RCIF.

Регистр RCREG является двухступенчатым буфером:

1.  байт принят, перенесен в регистр

2.  установился флаг на прерывание

3.  принят следующий байт, который также перенесен в регистр

4.  поскольку регистр двухступенчатый, потери информации не произошло; при двукратном чтении регистра можно получить оба принятых байта

После чтения третьего байта устанавливается бит OERR – ошибка переполнения. Если в принятом байте отсутствует стоповый бит, то устанавливается ошибка формата FERR.

Для управления USART имеются три регистра: SPBRG, RCSTA, TXSTA.

Порядок выполнения операций:

1.  загрузить необходимое значение в регистр SPBRG

2.  разрешить работу асинхронного последовательного порта сбросить бит SYNC = 0 и установить бит SPEN

3.  если предполагается использование прерываний, то установить биты RCIE, GIE, PIE.

4.  если предполагается девяти битный прием, то установить бит RX9

5.  разрешить прием установкой бита CREN

6.  запрос прерывания RCIF будет установлен автоматически, если будет произведен прием

7.  прочитать регистр RESTA чтобы получить девяти битный бит данных и определить, произошли ли ошибка во время приема

8.  прочитать данные в регистре RCREG

9.  если были ошибки, то сбросить и заново установить бит CREN

Передатчик

Малюнка

Основным элементом передатчика является сдвиговый регистр TSR. Данные TSR могут быть программно загружены из программно доступного буфера передатчика TXREG.

Работа контроллера будет следующей: после окончания передачи первого байта, второй из TXREG автоматически переписывается в TSR и начинается передача второго байта. Когда передача заканчивается, автоматически имеется специальный бит TRMT.

Управляющий регистр передатчика TXSTA находится в первом банке

Порядок выполнения операций:

1.  загрузить SPBRG

2.  разрешить асинхронный режим, установить SPEN и сбросить SYNC

3.  установить TXIE, GIE, PIE

4.  если девяти битная передача, то установить TX9

5.  разрешить передачу, установив бит TXEN, при этом также установится бит TXIF

6.  если выбрана девяти битная передача, то загрузить бит TX9D

7.  загрузить данные в TXREG, после чего автоматически начнется передача