Проектирование Микроконтролерных устройств

Автор: Пользователь скрыл имя, 15 Марта 2012 в 13:36, контрольная работа

Описание работы

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

Работа содержит 1 файл

кр.docx

— 216.15 Кб (Скачать)

1) ADCON0 - регистр управления и статуса АЦП;

2)  ADCON1 - регистр управления и конфигурации АЦП;

3) ADRES1  - регистр хранения результатов АЦП;

4) ADRES2  - регистр хранения результатов АЦП;

5) INTCON   - регистр управления прерываниями;

6) PCLATH  - старший регистр программного счетчика.

Первые 4-е регистра относятся  к встроенному модулю АЦП и  обеспечивают возможность аналого-цифрового  преобразования входных сигналов.регистры специальных функций МК.

8. Регистр c адресом 07h (порт С) не существует и не является регистром общего назначения.

9. Регистр FSR (f4), в котором хранятся указатели при косвенной адресации стал шириной в 8-мь бит.

10. Величина аппаратного стека увеличена до 8-ми уровней (вместо 2-х в PIC 16С5Х), что позволило существенно увеличить глубину рекурсии программ.

11. Добавлен модуль 4-х канального 8-ми разрядного АЦП, имеющего схему выборки-хранения и среднее время преобразования 30 мкс (включая время выборки) с погрешностью не более одного младшего разряда.

 

 

Рис1. Структурная схема PIC 16С71

12. Адрес сброса при включении питания поменялся на 0000h.

13. Распознаются 5-ть различных типов сбросов (выходов из режима SLEEP).

При этом инициализация регистров  изменена. Они устанавливаются по разному, в зависимости от типа сброса.

14. Добавлена возможность выхода из режима SLEEP через прерывание.

15. Для более надежного запуска добавлены следующие аппаратные задержки: таймер запуска (OST), таймер включения питания (PWRT). Эти таймеры могут быть использованы избирательно, что позволяет избежать ненужных задержек как при включении, так и при выходе из режима SLEEP.

16. Все 5-ть выводов порта А совмещены со входами других функциональных модулей микроконтроллера, что позволило существенно уменьшить необходимое количество входов/выходов.

Так 4-е линии двунаправленного ввода/вывода порта А RA3:RA0 совмещены (запараллелены) с аналоговыми входами 4-х каналов АЦП AIN:3AIN0 соответственно. Причем, на вход RA3 может быть подано также еще и внешнее опорное напряжение Vref.

Пятая же линия RA4 совмещена со входом внешней синхронизации TOCKI таймера-счетчика TMRO.

17. Одна из 8-ми двунаправленных линий ввода/вывода порта В (RS0)совмещена со входом сигнала внешнего прерывания INT.

18. Порт В имеет дополнительные активные нагрузки, которые коммутируются (подключаются и отключаются) программно.

19. Изменение сигналов на входах порта В может вызвать прерывание.

20. Реализован встроенный автомат самопрограммирования. Пользователь может программировать PIC 16С71 используя пять выводов : Vdd, Vss, MCLR/Vpp (тактовая частота), RB6, RB7 (ввод /вывод данных).

Более подробно некоторые  из перечисленных выше архитектурных  особенностей рассмотрены ниже.

Обозначение выводов и их функциональное назначение

 

    PDIP, SOIC, CERDIP


            RA2/AIN2                                                    RA1/AIN1


     RA3/AIN3/Vref                                                     RA0/AIN0


           RA4/RTCC                                                    OSC1/CLKIN


          /MCLR/Vpp                                                     OSC2/CLKOUT


                         Vss                                                     Vdd


                 RB0/INT                                                   RB7


                               RB1                                                     RB6


                        RB2                                                     RB5


                        RB3                                                     RB4


 

     Рис.2. Расположение выводов PIC 16C71

Обозначение выводов PIC 16С71  и их функциональное назначение приведено на рис. 3.2. и в табл. 3.1.

                                  Таблица

Обозначение выводов PIC 16c71 и их функциональное назначение

Обозначение

                 Нормальный режим

RA4/RTCC

Вход через триггер Шмитта. Ножка порта ввода/вывода с открытым стоком или вход частоты для таймера/счетчика RTCC.

RA0/AIN0

Двунаправленная линия ввода/вывода.  Аналоговый вход канала 0. Как цифровой вход имеет уровни ТТЛ.

RA1/AIN1

Двунаправленная линия ввода/вывода.  Аналоговый вход канала 1. Как цифровой вход имеет уровни ТТЛ.

RA2/AIN2

Двунаправленная линия ввода/вывода.  Аналоговый вход канала 2.  Как цифровой вход имеет уровни ТТЛ.

RA2/AIN2

Двунаправленная линия ввода/вывода. Аналоговый вход канала 2. Как цифровой вход имеет уровни ТТЛ.

RA3/AIN3/Vref

Двунаправленная линия ввода/вывода. Аналоговый вход канала 3. Как цифровой вход имеет уровни ТТЛ.

RB0/INT

Двунаправленная линия порта вывода или внешний вход прерывания. Уровни ТТЛ.

RB1 - RB5

Двунаправленные линии ввода/ вывода. Уровни ТТЛ.

RB6

Двунаправленные линии ввода/вывода. Уровни ТТЛ.

RB7

Двунаправленные линии ввода/вывода. Уровни ТТЛ.

/MCLR/Vpp

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

OSC1

Для подключения кварца, RC или вход внешней тактовой частоты.

OSC2

/CLKOUT

Генератор, выход тактовой частоты  в режиме RC генератора, в остальных случаях - для подкл.кварца

Vdd

Напряжение питания

Vss

Общий(земля)


 

 

Вопрс №2Ввод байта состояния одного датчика

    Пусть, например, необходимо ввести байт состояния датчика дискретных сигналов (Di), сравнить его с уставкой, хранящейся в виде константы Ki в памяти данных, и по результатам сравнения осуществить:

          Для решения данной вопроса необходимо:

  1. Выбрать линии (разряды) портов А и В для ввода сигналов от датчика и вывода импульсных сигналов (например, RB0 ... RB7 - на ввод, а RA0 - на вывод);
  2. Запретить все прерывания;
  3. Осуществить опрос состояния датчика;
  4. Проанализировать его (сравнить полученный байт с константой, используя, например, флаг переноса/заема «С» в регистре STATUS);
  5. Организовать процедуру передачи управления на две подпрограммы в зависимости от результатов сравнения;
  6. Сформировать сигнал заданной длительности при помощи временного интервала, равного времени задержки. Для этого можно использовать:
  • программный счетчик, работающий, например, в декрементном режиме. При этом в счетчик заносится константа, счетчик декрементируется. Обнуление счетчика является сигналом окончания временного интервала; 
  • внутренний таймер-счетчик (TMRO);
  • внешний (дополнительный) таймер-счетчик в случае, если TMRO по какой-либо причине использовать невозможно;
  • одну или несколько холостых команд NOP.
  1. Организовать ввод следующего байта.

На основании предыдущих рассуждений можно предложить вариант  блок-схемы алгоритма рабочей  программы микроконтроллера приведена БСА подпрограммы сравнения двух восьмиразрядных кодов (СОМР), один из которых представляет собой байт состояния датчика (Di), а другой - константу (Ki), хранящуюся в одном из регистров памяти данных.

На основании блок-схем алгоритмов и распределения памяти данных можно предложить текст программы, который приведен ниже:

; Текст программы.                           

LIST p=16C84, r =HEX

Title ‘Z2’

; Секция заголовка

; Описание специальных  регистров

TRISA EQU  85H

TRISB EQU  86H

INTCON EQU  0BH

STATUS EQU  03H

; Описание регистров ввода/вывода  PIC



 

 

 

 

 

 

 

 

 

 

 

 


    

 

 

 

 

 

 

 

 

Вопрос  №3

Предварительная обработка  входных аналоговых сигналов: Почему возникает такая необходимость? Усиление амплитуды до необходимого уровня (Нормирование входных сигналов по уровню)

 

Подключение аналоговых входов осуществляется следующим образом. Пользователь должен установить регистр ACON1 так, чтобы линии аналоговых сигналов были сконфигурированы как аналоговые входы. Так как линии аналоговых сигналов запараллелены с цифровыми выходами, которые имеют диоды защиты, подключенные к Vdd и к Vss в обратном направлении, то входной аналоговый сигнал должен будет ограничиваться этими значениями, иногда с увеличением тока в ножку. Чтобы избежать повреждений входных цепей, рекомендуется иметь последовательный ограничивающий резистор не менее 500Ом.

Для источников сигнала, выходное сопротивление не должно быть больше 10 КОм. Тогда максимальная погрешность, вызванная током утечки, составляет +- 5 мВ или +- 0.25 LSB при Vdd=Vref= 5В (10 КОм * 5мкА). Другая причина ограничения максимального выходного сопротивления источника сигнала -это требование к запоминанию входного сигнала на специальном конденсаторе в схеме выборки-хранения. Для снижения шума иногда добавляют внешний RC фильтр. И в этом случае значение R должно быть таким, чтобы суммарная величина сопротивления не превосходила 10КОм. Любой внешний компонент, подключаемый к аналоговому входу (будь то конденсатор или стабилитрон ), должен иметь очень небольшой ток утечки.

Управляющий регистр  АЦП (ADCON1) (Адрес 88h. Значение при включении питания= 00H) имеет следующее содержание:

 

      7

      6

      5

     4

     3

     2

1

      0

-

-

-

-

-

-

PCFG1

PCFG0


 

PCFG1

PCFG1

- Биты, которые определяют  конфигурацию ножек RA0 - RA3 (см. табл. 3.4)


 

Таблица  3.4

Конфигурация выводов  RA0-RA3

 

  PCFG1,

  PCFG0

RA0,RA1 

   RA2        

  RA3       

 Vref

      00

 аналоговые входы 

  аналоговый вход 

  аналоговый вход

  Vdd

      01

 аналоговые входы 

  аналоговый вход 

  вход опорного

  напряжения

  RA3

      10

 налоговые входы 

  цифровой вход  

  цифровой вход 

  Vdd

      11

 цифровые входы  

  цифровой вход

  цифровой вход 

   —


 

Функционирование  АЦП в режиме SLEEP осуществляется следующим образом.

При входе в режим Sleep следует сбросить бит ADON в регистре ADCON0, чтобы уменьшить потребление тока.

Если АЦП находился  в процессе преобразования ( с использованием RC генератора), то преобразование будет завершено прямо в режиме Sleep. Флаг прерывания ADIF будет взведен и кристалл будет выведен из режима SLEEP, если флаг разрешения прерывания ADIE ранее был установлен. При таком режиме измерения отсутствуют импульсные помехи и обеспечивается максимально возможная точность преобразования, что полезно на высоких тактовых частотах.

Если режим SLEEP инициализируется во время преобразования, которое  использует внутренний генератор, как  источник тактирования —преобразование будет прервано. В этом случае пользователь должен перезапустить АЦП после выхода из режима Sleep, начав с повторной выборки данных.

 


Информация о работе Проектирование Микроконтролерных устройств