Ввод дискретных сигналов

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

Непосредственно обработка сигнала от дискретного датчика подразумевает:

- либо определение уровня сигнала в текущий момент времени,

- либо ожидание появления сигнала требуемого уровня.

Конкретная программная реализация процедуры зависит от того, каким образом датчик подключен к микроконтроллеру.

Например, при подключении датчика к линии бита 2 порта RA программа определения уровня сигнала в текущий момент времени будет иметь вид:

 

#include <P33FJ32MC204.h>

_FOSC(OSCIOFNC_ON & POSCMD_NONE) // отключение дополнительной

// функции порта RA2 – выход

// тактирующего сигнала

// внутреннего генератора

int main()

{

TRISAbits.TRISA2 = 1; // настройка порта RA2 на вход

if (PORTAbits.RA2)

{

// часть программы, выполняемой при ВЫСОКОМ уровне

// сигнала на входе контроллера

}

if (!PORTAbits.RA2)

{

// часть программы, выполняемой при НИЗКОМ уровне

// сигнала на входе контроллера

}

}

 

Программа ожидания требуемого уровня сигнала на входе микроконтроллера при данном подключении будет иметь вид:

 

#include <P33FJ32MC204.h>

_FOSC(OSCIOFNC_ON & POSCMD_NONE) // отключение дополнительной

// функции порта RA2 – выход

// тактирующего сигнала

// внутреннего генератора

int main()

{

TRISAbits.TRISA2 = 1; // настройка порта RA2 на вход

while (PORTAbits.RA2); // ожидание НИЗКОГО уровня сигнала

while (!PORTAbits.RA2); // ожидание ВЫСОКОГО уровня сигнала

}