Разработка схемы и алгоритма работы портативного двухканального термометра для измерения температуры в диапазоне -50…,+150 оС, страница 3

Для вызова немаскируемого (NMI) прерывания достаточно установки только индивидуального бита разрешения прерывания.

3.  Механизм обработки маскируемого прерывания.

·  Любая текущая команда выполняется до конца;

·  Содержимое программного счетчика PC, указывающего на следующую команду, помещается в стек;

·  Содержимое регистра статуса SR помещается в стек;

·  Если поступило несколько прерываний во время выполнения последней команды, обрабатывается прерывание с наивысшим приоритетом, остальные ожидают обслуживания;

·  Автоматически сбрасывается флаг одного источника прерывания. Флаги запроса остальных прерываний остаются установленными в ожидании обслуживания программным обеспечением.

·  Регистр SR очищается, за исключением бита SCG0, который программирует один из возможных режимов малого энергопотребления, остающегося неизменным. Процессор переходит из режима пониженного потребления в активный режим;

·  Содержимое вектора прерывания загружается в РС и начинается выполнение процедуры обработки прерывания с загруженного адреса.

·  Возврат из прерывания

Подпрограмма обработки прерывания заканчивается такой командой RETI (возврат из подпрограммы обработки прерывания). Для возврата из прерывания необходимо 5 машинных циклов, чтобы выполнить действия.

·  Восстанавливается из стека содержимое регистра SR. Становятся актуальными все предыдущие установки GIE (глобальное разрешение прерываний), CPUOFF (остановка работы центрального процессорного устройства) и пр., в не зависимости от установок, использовавшихся в процедуре обработке прерывания.

·  Восстанавливается из стека содержимое программного счетчика PC и начинается выполнение программы с того места, где она была прервана.

4.  Перед началом работы необходимо также произвести настройки базового таймера т.к он будет служить источником прерываний. Базовый таймер используется для формирования одной секунды. Это необходимо для того, чтобы производить снятие информации с каналов термометра с определенной периодичностью. В данном случае через каждые 2 секунды. Базовый таймер состоит из двух восьмиразрядных счетчиков BTCNT1 (046h) и BTCNT2 (047h). На выходе BTCNT1 формируется частота ACLK/256.  Эта частота является источником тактирования BTCNT2. На выходе BTCNT2 формируется уже необходимая в конкретном случае частота тактирования. В данном случае, т.к частота ACLK = 32768Гц, а нам необходимо получить частоту 1Гц, надо частоту, формируемую на выходе BTCNT1 - ACLK/256, разделить на 128. Тем самым мы получим 1 секунду на выходе базового таймера.

Настройки таймера можно осуществить с помощью регистра BTCL (040h):

Bit 0 ... 2: IP0 – IP2- биты, задающие частоту прерываний. Т.к, как это уже упоминалось выше, нам необходимо разделить частоту тактирования BTCNT2 (ACLK/256) на 128, в эти биты необходимо занести следующее:

IP0 - 0

IP1 - 1

IP1 – 1

Bit 3 ... 4: Биты FRFQ1 и FRFQ0 позволяют выбирать частоты fLCD. LCD модуль (жидкокристаллический индикатор) использует сигнал fLCD для генерирования сигналов на линиях «common» и «segment». Частота сигнала fLCD тактируется от ACLK. В осцилляторе используется частота 32768 Гц, частота fLCD может быть равной 1024Гц, 512Гц, 256Гц или 128Гц. Частота сигнала fLCD  зависит от характеристик индикатора.

Биты SSEL и DIV определяют частоту тактирования BTCNT2:

В данном случае в эти биты необходимо занести  единицы, т.к частота тактирования BTCNT2 - ACLK/256.

Бит Hold – заканчивает операцию счета. BTCNT2 используется если Hold=1. BTCNT2 используется если DIV=1 и Hold=1. В данном случае для формирования секунды используются оба восьмиразрядных счетчика, поэтому:

SSEL=1;

DIV=1;

Hold=1;

5.  С терморезисторов Pt100, подключенных к микроконтроллеру семейства MSP430, снимается напряжение (терморезисторы Pt100 питаются от внутреннего генератора тока микроконтроллера).

6.     Напряжение с двух каналов термометра подается на аналоговые входы A0…..A5 микроконтроллера (два из этих входов используются как выводы внутреннего генератора тока MSP430).

7.  Как видно из схемы терморезисторы подключаются к двум аналоговым каналам микроконтроллера. Первый терморезистор к А1 и А2, а второй к А4 и А5. Исходя из этого напряжение первого терморезистора будет равным разности напряжение на аналоговых каналах MSP430 А1 и А2, а второго терморезистора разности напряжение на аналоговых каналах MSP430 А4 и А5. Но т.к напряжение на аналоговых каналах микроконтроллера А2 и А5 нулевое (терморезисторы заземлены) информация снимается с каналов микроконтроллера А1 и А4.