Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

Основная процедура, относящаяся к теме данной главы, приведена в Программе 15.11. При ВЫСОКОМ уровне на выводе GPIO2 2-байтное число переполнений при низкой температуре LO_TEMP: LO_TEMP+1 заносится в два младших байта EEPROM с использованием подпрограммы ee_put из Программы 15.2.

При ВЫСОКОМ уровне на выводе GPIO3 вычисляется разность между 2-байтными значениями, полученными при высокой и низкой температурах. Если посмотреть на график, приведенный на Рис. 15.8, то можно заметить, что разность отсчетов при изменении температуры на 30 °C в любом случае не превысит 256, так что для хранения этой разности достаточно будет одного байта. Данное значение сохраняется в EEPROM обычным образом.

Программа 15.11. Обновление информации в EEPROM

UPDATE_LO

        movf LO_TEMP,w; Берем старший байт значения для низкой температуры

        bsf STATUS,RP0; Переключаемся в 1-й банк

        movwf EEDATA; Кладем в регистр данных EEPROM

        clrf EEADR; Адрес в EEPROM — h’00’

        call EE_PUT; Запоминаем значение

        movf LO_TEMP+1,w; Берем младший байт значения для низкой температуры

        bsf STATUS,RP0; Переключаемся в 1-й банк

        movwf EEDATA; Кладем в регистр данных EEPROM

        incf EEADR,f; Адрес в EEPROM — h’01’

        call EE_PUT; Запоминаем значение

        goto READING_EXIT

UPDATE_HI; Вычисляем HI_TEMP-LO_TEMP и сохраняем разность в EEPROM

; Достаточно вычесть только младшие байты, поскольку разность не может быть больше 256

        movf HI_TEMP+1,w; Берем старший байт значения при высокой

        subwf L0_TEMP+1,w; Вычитаем младший байт значения при низкой температуре

        movwf DELTA_TEMP; температуре Запоминаем разность

        bsf STATUS,RP0; Переключаемся в 1-й банк

        movwf EEDATA; Разность — по адресу h’02’

        movlw 2

        movwf EEADR

        call EE_PUT

        goto READING_EXIT

Пример 15.3

В Примере 14.3 мы вычисляли энергию разряда дефибриллятора путем суммирования квадратов отклонений напряжения от базового значения. Причем после анализа графика в качестве базового было принято значение 2.6 В. Это среднее значение может изменяться от экземпляра к экземпляру прибора, а также с течением времени. Поэтому было решено доработать программное обеспечение, введя в него возможность самообучения, которое будет осуществляться, скажем, при замыкании кнопки, подключенной к выводу RA4. При нажатии на кнопку надо будет выполнить 256 выборок значений напряжения в режиме ожидания, с последующим их сложением для получения 2-байтной суммы. Взяв старший байт ЭТОЙ суммы, МЫ получим усредненное значение напряжения (взятие старшего байта 2-байтного числа эквивалентно его делению на 256). Это значение мы запишем в EEPROM по адресу h’00’ и впоследствии будем использовать в качестве базового уровня, периодически обновляя его при необходимости. Предполагая, что в вашем распоряжении имеется подпрограмма GET_ANALOG из Программы 14.1 (стр. 516), напишите соответствующую подпрограмму.

Решение

Из Рис. 14.20 на стр. 534 видно, что напряжение с датчика тока дефибриллятора подается на вывод RA0/AIN0 микроконтроллера. С учетом того что модуль АЦП уже инициализирован, как это было сделано в Программе 14.6 на стр. 536, нам останется только 256 раз считать оцифрованное значение с 0-го канала АЦП для накопления 16-битной суммы. Взяв старший байт этой суммы, мы получим усредненное значение, т. е. частное от деления суммы на 256. Если во время взятия отсчетов дефибриллятор находился в режиме ожидания, то полученное среднее значение будет представлять собой базовое напряжение.

После определения базового напряжения это однобайтное значение можно записать в EEPROM обычным образом. Впоследствии его можно будет считать из EEPROM и использовать вместо константы BASELINE (Программа 14.6).

В Программе 15.12 регистр COUNT используется в качестве счетчика итераций цикла. В каждом проходе цикла новое значение АЦП прибавляется к общей сумме, накапливаемой в регистрах ACCUMULATOR: ACCUMULATOR+1. После выхода из цикла содержимое регистра ACCUMULATOR (старший байт суммы) заносится в EEPROM по адресу h’00’ с использованием подпрограммы EE_PUT.

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника