Пример программирования модуля АЦП.




Описание задачи.

Измерить силу тока в цепи якоря двигателя постоянного тока. Допустимая сила тока по паспорту двигателя составляет 10А.

 

1. Схема эксперимента:

 

 

В качестве датчика тока используем стандартный шунт Rш, рассчитанный на максимальный ток 10А и выдающий при этом токе напряжение на выходе U вых. = 0,75mV.

Схема подключения в этом случае имеет вид:

 

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

 

#define XTAL_FREQ 4MHZ

 

#define byte unsigned char

#define word unsigned int

 

#include <pic.h>

#include <stdio.h>

__CONFIG(HS & WDTDIS & PWRTEN & LVPDIS & DUNPROT & WRTEN);

 

void main() {

 

TRISA = 0x01; // RA0 на выход

ADCON0 = 0x41; // настройка АЦП

ADCON1 = 0X80

OPTION = 0x08; // настройка TMR0

TOIF = 0; // сброс флага TMR0

TMR0 = 0x13; // пуск TMR0

 

 

for(;!TOIF;) { } // ожидание срабатывания таймера

ADIF = 0; // сброс флага АЦП

GO/-DONE = 1; // пуск АЦП

for (;!ADIF;) { } // ожидание преобразования АЦП

 

TXREG = ADRESH; // передача в USART старшего байта АЦП

TXREG = ADRESL; // передача в USART младшего байта АЦП

 

} // конец main

 

Примечание. Настройку модуля USART см. в соответствующем разделе.


19. Таймер TMR0.

Данный таймер имеет следующие основные функциональные возможности:

- 8-разрядный таймер-счетчик,

- возможность чтения и записи текущего состояния счетчика,

- 8-разрядный программируемый предделитель входных импульсов,

- внутренний или внешний источник тактовых входных импульсов,

- выбор активного фронта входных импульсов,

- возможность формирования запроса на прерывание при переполнении счетчика.

Блок-схема таймера TMR0 показана на рис 1.8.

 
 

Настройка таймера TMR0 осуществляется с помощью регистра OPTION-REG (адрес 81h или 181h). Распределение разрядов и обозначение сигналов регистра приведены в таблице 16.

Таблица 16.

Номер разряда                
Обозначение сигнала - - TOCS TOSE PSA PS2 PS1 PS0

 

Назначение сигналов:

TOCS – выбор тактового сигнала для таймера TMR0:

1- внешний тактовый сигнал с вывода RA4,

0- внутренний тактовый сигнал CLKOUT,

TOSE – выбор фронта входного сигнала для таймера:

1 – приращение счетчика таймера по заднему фронту входного сигнала,

0 – то же по переднему фронту,

PSA – выбор способа использования предделителя:

1 – предделитель включен перед сторожевым таймером – WDT,

0 – предделитель включен перед таймером TMR0,

PS2:PS0 – установка коэффициента деления предделителя: см. таблицу 5

 

Принцип работы таймера типовой для большинства таймеров. Вначале производится настройка таймера в соответствии с вышеизложенным. Поскольку счетчик таймера работает на сложение, в регистр TMR0 записывается дополнительный код требуемого времени:

N = FF – t * Т,

где: t – интервал времени в сек, Т – период входного тактового сигнала. Период входного сигнала определяется как величина обратная частоте входного сигнала. Входной сигнал формируется либо внутренним генератором: F = Fosc / 4, либо внешним генератором через вход RA4 (см. таблицу 4)

После переполнения счетчика (регистр TMR0) формируется сигнал готовности таймера – установка в 1 сигнала TOIF (регистр INTCON <2>), который является также сигналом требования прерывания. Само же прерывание может быть разрешено установкой в 1 сигнала TOIE (регистр INTCON <5>). После обработки прерывания сигнал требования прерывания TOIF должен быть программно сброшен в 0. Следующий интервал времени будет получен при повторной записи в регистр TMR0.

Примечания:

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

2. Запись в регистр TMR0 сбрасывает предделитель не изменяя его режим работы.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-02-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: