Você está na página 1de 14

Universidade Federal de Uberlndia UFU

Faculdade de Engenharia Eltrica FEELT


Programa de PsGraduao em Engenharia Eltrica

Processadores Digitais de Sinais Filtros FIR


Ponto Flutuante

Alunos: Felippe dos Santos e Silva


Roberto Batista Neto

Uberlndia, 03 de junho de 2013.


1

1) Introduo

Este trabalho mostra o projeto e a implementao de um filtro digital FIR passa baixa
para verificar sua resposta frente a um sinal de teste dada por uma corrente de
alimentao de uma lmpada eletrnica.

A lmpada eletrnica foi escolhida devido a partir do perodo de racionamento vivido


pelo Brasil em 2001, com a escassez da oferta de energia e as medidas adotadas pelo
governo federal, observou-se uma grande procura pelas lmpadas fluorescentes
compactas objetivando-se a reduo e o uso racional da energia eltrica. Entretanto
como principais caractersticas tem-se que elas possuem baixo fator de potncia e
gerao de correntes harmnicas.

A aquisio de dados utilizou-se da instrumentao virtual via computador pela


plataforma LabView 2009, transdutor de efeito hall e placa de aquisio de dados via
comunicao DAQ Assistent. A montagem foi feita no LAcE (Laboratrio de
Acionamentos Eltricos).

Em posse dos dados amostrados fez-se projeto de filtro e validao do mesmo no


MATLAB 2011a e em seguida implementado no ambiente CCS 5.4.0.00091 (Code
Composer Studio) utilizando o TMS320C2000 Experimenter Kit F28335 Delfino
Family em ponto flutuante.

2) Sinal de entrada
Para o sinal de entrada (vetor1 no cdigo do programa) foi amostrado um sinal de
corrente de uma lmpada fluorescente compacta utilizando instrumentao virtual
desenvolvida em LABVIEW 2009, placa de aquisio de dados da National Instruments
e sensor de efeito hall.

Transdutor
Hall de Corrente
Lmpada
Eletrnica

Rede CEMIG

DAQ/LabView

Figura 1: Diagrama de Blocos Simplificado.

Dados Catlogo Lmpada Fluorescente Compacta PHILIPS:

Potncia: 17 W

Tenso de alimentao: 220V

Corrente nominal (RMS): 136 mA

Fator de potncia: 0.56

A instrumentao virtual foi implementada com blocos existentes nas bibliotecas.

Figura 2: Diagrama de blocos LabView 2009.

O painel de instrumentao constitui-se de grficos de tenso e corrente e mostradores


de Potncia Ativa, Potncia Aparente, Tenso (RMS), Corrente (RMS), indicadores de
qualidade de energia THDi% (distoro harmnica total de corrente) e THDv%
(distoro harmnica total de tenso).

Figura 3: Leituras de Tenso, Corrente e Potncia.

Dados Obtidos:

Potncia Aparente: 30 VA;

Potencia Ativa: 17 W;
4

Fator de Potncia: 0,5637;

THDv%: 2,028%;

THDi%: 106,818%;

Tenso (RMS): 221,39 V;

Corrente RMS: 136,7 mA.

Para uma taxa amostragem de aquisio 7,5 kH foi obtido 250 pontos para o vetor1 que
representa a forma de onda a ser filtrada.
vetor1 = -0.330936, -0.29699, -0.2761, -0.202984, -0.197762, -0.161204, -0.145537, 0.148148, -0.13248, -0.114202, -0.093312, -0.075033, -0.051531, -0.001917, 0.009751, -0.00714, -0.00714, -0.004529, -0.00714, -0.004529, -0.00714, -0.00714, 0.00714, -0.00714, -0.009751, -0.00714, -0.004529, -0.00714, -0.00714, -0.00714, 0.00714, -0.009751, -0.00714, -0.00714, -0.00714, -0.004529, -0.004529, -0.00714, 0.00714, -0.00714, -0.00714, -0.00714, -0.00714, -0.009751, -0.009751, -0.00714, 0.009751, -0.009751, -0.00714, -0.00714, -0.00714, -0.009751, -0.00714, -0.00714, 0.009751, -0.00714, -0.004529, 0.287932, 0.3036, 0.295766, 0.306211, 0.293155,
0.293155, 0.287932, 0.269654, 0.269654, 0.175648, 0.167814, 0.139091, 0.128645,
0.120812, 0.112978, 0.089477, 0.073809, 0.047696, 0.008528, -0.009751, -0.00714, 0.012363, -0.009751, -0.00714, -0.004529, -0.009751, -0.00714, -0.009751, -0.009751,
-0.009751, -0.009751, -0.009751, -0.009751, -0.00714, -0.009751, -0.009751, 0.009751, -0.00714, -0.009751, -0.009751, -0.00714, -0.009751, -0.00714, -0.009751, 0.00714, -0.009751, -0.00714, -0.00714, -0.00714, -0.00714, -0.009751, -0.004529, 0.00714, -0.004529, -0.00714, -0.00714, -0.00714, -0.00714, -0.00714, -0.004529, 0.00714, -0.009751, -0.179483, -0.33877, -0.328325, -0.31788, -0.323102, -0.310046, 0.299601, -0.31788, -0.25521, -0.195151, -0.202984, -0.171649, -0.148148, -0.137703,
-0.124647, -0.11159, -0.095923, -0.080255, -0.059365, -0.004529, -0.004529, 0.004529, -0.001917, -0.004529, -0.00714, -0.004529, -0.004529, -0.004529, 0.004529, -0.001917, -0.00714, -0.00714, -0.009751, -0.00714, -0.00714, -0.00714, 0.00714, -0.009751, -0.00714, -0.00714, -0.00714, -0.00714, -0.00714, -0.001917, 0.00714, -0.004529, -0.00714, -0.00714, -0.00714, -0.00714, -0.00714, -0.009751, 0.00714, -0.009751, -0.009751, -0.009751, -0.00714, -0.00714, -0.00714, -0.00714, 0.004529, -0.00714, -0.00714, 0.28271, 0.329712, 0.314045, 0.308822, 0.290544,
0.295766, 0.293155, 0.251375, 0.246152, 0.170426, 0.165203, 0.144313, 0.136479,
0.120812, 0.105144, 0.086865, 0.07642, 0.050308, 0.011139, -0.00714, -0.009751, 0.009751, -0.00714, -0.012363, -0.00714, -0.009751, -0.00714, -0.009751, -0.009751, 0.00714, -0.009751, -0.009751, -0.009751, -0.00714, -0.00714, -0.00714, -0.00714, 0.009751, -0.004529, -0.004529, -0.009751, -0.00714, -0.001917, -0.00714, -0.00714, 0.00714, -0.004529, -0.00714, -0.00714, -0.004529, -0.009751, -0.009751, -0.009751, 0.00714, -0.00714, -0.00714, -0.00714, -0.009751, -0.004529, -0.009751, -0.00714, 0.00714, -0.179483, -0.328325, -0.330936, -0.325714,-0.320491, -0.294379
O alto ndice de distoro da corrente motivou a visualizao do espectro de corrente.
Como pode ser visto na Figura 4.

Figura 4: Espectros de Tenso ( esquerda) e Corrente ( direita).

3) Projeto do Filtro Digital FIR


Para o projeto dos referido filtro, utilizou-se a GUI Fdatool, do software MATLAB. A
prpria ferramenta Fdatool mostra a resposta em frequncia do filtro projetado e, ao
final, gera os coeficientes utilizados para programao do filtro digital.
Os dados inseridos no projeto do filtro foram:
Fs = 7500;
Fpass = 60;
Fstop = 200;
Apass = 1;
Astop = 40;
dens = 20;

%
%
%
%
%
%

Frequncia de Amostragem (Hz)


Frequncia banda passante (Hz)
Frequncia de corte
Magnitude passante (dB)
Magnitude de corte (dB)
Density Factor

No foi imposto uma ordem especfica para o filtro, foi solicitado que o projeto tivesse
uma ordem mnima que atendesse os dados de entrada. Como resultado o Filter Design
& Analys Tool projetou um filtro de 76 ordem. A reposta do ganho e fase em (dB) para
este filtro poder ser visto na Figura 5.

Magnitude (dB) and Phase Responses


0

Frequncia de ganho de Magnitude.

-0.0898

-10

-1.0626

-20

-2.0353

-30

-3.0081

-40

-3.9809

-50

-4.9537

-60

-5.9265

-70

Phase (radians)

Magnitude (dB)

Frequncia de ganho de Fase.

-6.8993
0

0.5

1.5

2
Frequency (kHz)

2.5

3.5

Figura 5: Respostas do Filtro FIR

Com o coeficientes do filtro foi possvel declarar o vetor b do cdigo.


b[77] = {-0.00858023991873314, -0.0000347652191770424, 0.0000760935784184337,
0.000256513110714093, 0.000516560219296775, 0.000855087208497132,
0.0012719536918125, 0.00176885434047466, 0.00234969558045079,
0.00301135225385597, 0.00375582111381079, 0.00457992464629308,
0.00548426852288823, 0.00646245652876113, 0.00751346651298373,
0.0086295504966837, 0.00980749822255711, 0.0110372551264953,
0.012314154886598, 0.0136267087373359, 0.0149684639220231,
0.0163263198890221, 0.0176927180564,
0.0190537339190931,
0.020400618856995, 0.0217185877506475, 0.022998851085529,
0.0242270549476934, 0.0253938714934042, 0.0264856307720612,
0.0274949375382598, 0.0284097494680282, 0.0292218899487717,
0.0299231057280884, 0.0305089524793309, 0.0309720465423513,
0.0312974138872869, 0.0315046747159177, 0.0315791191315456,
0.0315046747159177, 0.0312974138872869, 0.0309720465423513,
0.0305089524793309, 0.0299231057280884, 0.0292218899487717,
0.0284097494680282, 0.0274949375382598, 0.0264856307720612,
0.0253938714934042, 0.0242270549476934, 0.022998851085529,
0.0217185877506475, 0.020400618856995, 0.0190537339190931,
0.0176927180564,
0.0163263198890221, 0.0149684639220231,
0.0136267087373359, 0.012314154886598, 0.0110372551264953,
0.00980749822255711, 0.0086295504966837, 0.00751346651298373,
0.00646245652876113, 0.00548426852288823, 0.00457992464629308,
0.00375582111381079, 0.00301135225385597, 0.00234969558045079,
0.00176885434047466, 0.0012719536918125, 0.000855087208497132,
0.000516560219296775, 0.000256513110714093, 0.0000760935784184337,
-0.0000347652191770424,
0.00858023991873314};

4) Grficos de entrada e Sada MATLAB


Com posse dos valores de entrada e os coeficientes do filtro foi implementado o filtro
FIR em script do MATLAB para anlise grfica de entrada e sada dos sinais, no caso, o
vetor amostrado da forma de onda da corrente da lmpada, e a sada seria o sinal filtrado
pelo filtro projetado
0.4
fir in
fir out

0.3
0.2
0.1
0
-0.1
-0.2
-0.3
-0.4

0.005

0.01

0.015

0.02

0.025

0.03

0.035

Figura 6: Sinal de entrada e sada filtro FIR.

Nota-se que o sinal de sada possui um atraso de fase significativo em relao ao sinal
de entrada. Para atenuao desse atraso a soluo seria diminuir a ordem do filtro
aumentando a frequncia de corte, mas como o espectro do sinal de entrada mostrado na
Figura 7 evidncia uma significativa presena de harmnicos prximos a banda
passante desejada 60 Hz o sinal de sada apresentaria uma maior distoro. Portando
esse impasse depender da necessidade da aplicao em se ter um menor atraso ou uma
melhor qualidade do sinal de sada.

Amplitude Vetor1

0.2
0.15
0.1
0.05
0

1000

2000

3000
Frequencia (Hz)

4000

5000

6000

1000

2000

3000
Frequencia (Hz)

4000

5000

6000

Amplitude Vetor2

0.1

0.05

Figura 7: Esprectro de frequncia dos sinais de entrada e sada do FIR.

5) Implementao em Cdigo C e verificao experimental do filtro.


Para verificao experimental do filtro utilizou-se o ambiente CCS 5.4.0.00091 (Code
Composer Studio) . Foi importado o projeto cpu_timer ao qual est presente como
exemplos de projetos na pasta DSP2833x_examples_ccsv4. Para implementao do
filtro em cdigo C utilizou-se o arquivo, enviado como guia, pelo professor
CpuTimer_WD_Main.c. A codificao do programa incluindo o algoritmo do filtro,
vetor de entrada e coeficientes do filtro ficou:

#include "DSP28x_Project.h"
File

// Device Headerfile and Examples Include

#define PONTOS 250


// Prototype statements for functions found within this file.
interrupt void cpu_timer0_isr(void);
interrupt void wakeint_isr(void);
void Toggle_LED1(void);
void Toggle_LED2(void);
// Global variables for this example
Uint32 WakeCount;
Uint32 LoopCount;
int i,j,k;

float vetor1[PONTOS] = { -0.330936, -0.29699, -0.2761, -0.202984, -0.197762,


-0.161204, -0.145537, -0.148148, -0.13248, -0.114202, -0.093312,-0.075033,
-0.051531, -0.001917, -0.009751, -0.00714, -0.00714,-0.004529, -0.00714,
-0.004529, -0.00714, -0.00714, -0.00714, -0.00714,-0.009751, -0.00714,
-0.004529, -0.00714, -0.00714, -0.00714, -0.00714,-0.009751, -0.00714,
-0.00714, -0.00714, -0.004529, -0.004529, -0.00714,-0.00714, -0.00714,
-0.00714, -0.00714, -0.00714, -0.009751, -0.009751,-0.00714, -0.009751,
-0.009751, -0.00714, -0.00714, -0.00714, -0.009751,-0.00714, -0.00714,
-0.009751,
-0.00714,
-0.004529,
0.287932,
0.3036,0.295766,
0.306211,
0.293155,
0.293155,
0.287932,
0.269654,
0.269654,0.175648,
0.167814,
0.139091,
0.128645,
0.120812,
0.112978,
0.089477,0.073809,
0.047696,
0.008528, -0.009751, -0.00714, -0.012363, -0.009751,-0.00714, -0.004529,
-0.009751, -0.00714, -0.009751, -0.009751,-0.009751, -0.009751, -0.009751,
-0.009751, -0.00714, -0.009751,-0.009751, -0.009751, -0.00714, -0.009751,
-0.009751, -0.00714,-0.009751, -0.00714, -0.009751, -0.00714, -0.009751,
-0.00714, -0.00714,-0.00714, -0.00714, -0.009751, -0.004529, -0.00714,
-0.004529, -0.00714,-0.00714, -0.00714, -0.00714, -0.00714, -0.004529,
-0.00714, -0.009751,-0.179483, -0.33877, -0.328325, -0.31788, -0.323102,
-0.310046, -0.299601, -0.31788, -0.25521, -0.195151, -0.202984, -0.171649,
-0.148148, -0.137703, -0.124647, -0.11159, -0.095923, -0.080255,-0.059365,
-0.004529, -0.004529, -0.004529, -0.001917, -0.004529,-0.00714, -0.004529,
-0.004529, -0.004529, -0.004529, -0.001917,-0.00714, -0.00714, -0.009751,
-0.00714, -0.00714, -0.00714, -0.00714,-0.009751, -0.00714, -0.00714,
-0.00714, -0.00714, -0.00714, -0.001917,-0.00714, -0.004529, -0.00714,
-0.00714, -0.00714, -0.00714, -0.00714,-0.009751, -0.00714, -0.009751,
-0.009751, -0.009751, -0.00714,-0.00714, -0.00714, -0.00714, -0.004529,
-0.00714, -0.00714, 0.28271,0.329712, 0.314045, 0.308822, 0.290544, 0.295766,
0.293155,
0.251375,0.246152,
0.170426,
0.165203,
0.144313,
0.136479,
0.120812,
0.105144,0.086865,
0.07642,
0.050308,
0.011139,
-0.00714,
-0.009751, -0.009751,-0.00714, -0.012363, -0.00714, -0.009751, -0.00714,
-0.009751, -0.009751, -0.00714, -0.009751, -0.009751, -0.009751, -0.00714,
-0.00714, -0.00714, -0.00714, -0.009751, -0.004529, -0.004529, -0.009751,
0.00714, -0.001917, -0.00714, -0.00714, -0.00714, -0.004529,
-0.00714,
-0.00714, -0.004529, -0.009751, -0.009751, -0.009751,-0.00714, -0.00714,
-0.00714, -0.00714, -0.009751, -0.004529, -0.009751,-0.00714, -0.00714,
-0.179483, -0.328325, -0.330936, -0.325714,-0.320491, -0.294379 };
float vetor2[PONTOS];
void main(void)
{
// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP2833x_SysCtrl.c file.
InitSysCtrl();
//
//
//
//

Step 2. Initalize GPIO:


This example function is found in the DSP2833x_Gpio.c file and
illustrates how to set the GPIO to it's default state.
InitGpio(); // Skipped for this example

// Step 3. Clear all interrupts and initialize PIE vector table:


// Disable CPU interrupts
DINT;
// Initialize the PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags

10

// are cleared.
// This function is found in the DSP2833x_PieCtrl.c file.
InitPieCtrl();
// Disable CPU interrupts and clear all CPU interrupt flags:
IER = 0x0000;
IFR = 0x0000;
//
//
//
//
//
//

Initialize the PIE vector table with pointers to the shell Interrupt
Service Routines (ISR).
This will populate the entire table, even if the interrupt
is not used in this example. This is useful for debug purposes.
The shell ISR routines are found in DSP2833x_DefaultIsr.c.
This function is found in DSP2833x_PieVect.c.
InitPieVectTable();

// Interrupts that are used in this example are re-mapped to


// ISR functions found within this file.
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.TINT0 = &cpu_timer0_isr; //instala servio de interrupo do
timer 0
PieVectTable.WAKEINT = &wakeint_isr; //instala servio de interrupo do
watchdog
EDIS;
// This is needed to disable write to EALLOW protected registers
// Step 4. Initialize the Device Peripheral. This function can be
//
found in DSP2833x_CpuTimers.c
InitCpuTimers();
// For this example, only initialize the Cpu Timers
// Configure CPU-Timer 0, 1, and 2 to interrupt every second:
// 150MHz CPU Freq, 1 second Period (in uSeconds)
ConfigCpuTimer(&CpuTimer0, 150, 100000);
// To ensure precise timing, use write-only instructions to write to the
entire register. Therefore, if any
// of the configuration bits are changed in ConfigCpuTimer and InitCpuTimers
(in DSP2833x_CpuTimers.h), the
// below settings must also be updated.
CpuTimer0Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS
bit = 0
// Step 5. User specific code, enable interrupts:
// Configura Portas dos LEDS no Control Card do 28335 - Experimenter Kit
// LED2-> GPIO31
e LED3-> GPIO34
EALLOW;
GpioDataRegs.GPACLEAR.bit.GPIO31 = 1;
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO31
= 1;
GpioDataRegs.GPBSET.bit.GPIO34 = 1;
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO34
= 1;
EDIS;

// Reset output latch


// GPIO31 = GPIO31
// GPIO31 = output
// Set output latch
// GPIO34 = GPIO34
// GPIO34 = output

// Connect the watchdog to the WAKEINT interrupt of the PIE


// Write to the whole SCSR register to avoid clearing WDOVERRIDE bit

11

EALLOW;
SysCtrlRegs.SCSR = 0x0002;//set bit 1 (WDENINT)- desabilita reset e
habilita int do watchdog
EDIS;
// Enable CPU int1 which is connected to CPU-Timer 0 and wakeint
IER |= M_INT1;
// Enable TINT0 and wakeint in the PIE: Group 1 interrupt 7 and 8
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
// Enable PIE Group 1 INT7
PieCtrlRegs.PIEIER1.bit.INTx8 = 1;
// Enable PIE Group 1 INT8
// Enable global Interrupts and higher priority real-time debug events:
EINT;
// Enable Global interrupt INTM
ERTM;
// Enable Global realtime interrupt DBGM
// Reset the watchdog counter
ServiceDog();
// Enable the watchdog
//
Watchdog Control Register (WDCR) - pag54 - Sprufb0d.pdf
//
| 7
| 6
| 5 4 3 | 2 1 0|
//
|WDFLAG| WDDIS| WDCHK | WDPS |
//
0
0
1 0 1
1 1 1 b
//
WDPS=111b -> WDCLK = OSCCLK/512/64=150Mhz/512/64 = 4477.6Hz
//
-> 256passos - estouro em 56ms
EALLOW;
SysCtrlRegs.WDCR = 0x002f;
EDIS;
// Step 6. IDLE loop. Just sit and loop forever (optional):
i=0;
k=0;
WakeCount=0;
LoopCount=0;
for(;;)
{
LoopCount++;
}
}

void Toggle_LED1(void)
{
GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1;
}
void Toggle_LED2(void)
{
GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
}
// ******* sevio de interrupo do timer 0
interrupt void cpu_timer0_isr(void)
{
k++;
if(k>=10) {

12

Toggle_LED1();
Toggle_LED2();
k=0;
}
// Implementao Filtro FIR
const float b[77] = {-0.00858023991873314, -0.0000347652191770424,
0.0000760935784184337,
0.000256513110714093,
0.000516560219296775,
0.000855087208497132,0.0012719536918125,
0.00176885434047466,
0.00234969558045079,
0.00301135225385597,
0.00375582111381079,
0.00457992464629308,
0.00548426852288823,
0.00646245652876113,
0.00751346651298373,0.0086295504966837,
0.00980749822255711,
0.0110372551264953, 0.012314154886598,
0.0136267087373359,
0.0149684639220231, 0.0163263198890221,
0.0176927180564,
0.0190537339190931, 0.020400618856995,
0.0217185877506475, 0.022998851085529, 0.0242270549476934,
0.0253938714934042, 0.0264856307720612, 0.0274949375382598,
0.0284097494680282, 0.0292218899487717, 0.0299231057280884,
0.0305089524793309, 0.0309720465423513, 0.0312974138872869,
0.0315046747159177, 0.0315791191315456, 0.0315046747159177,
0.0312974138872869, 0.0309720465423513, 0.0305089524793309,
0.0299231057280884, 0.0292218899487717, 0.0284097494680282,
0.0274949375382598, 0.0264856307720612, 0.0253938714934042,
0.0242270549476934, 0.022998851085529, 0.0217185877506475,
0.020400618856995, 0.0190537339190931, 0.0176927180564,
0.0163263198890221, 0.0149684639220231, 0.0136267087373359,
0.012314154886598, 0.0110372551264953, 0.00980749822255711,
0.0086295504966837, 0.00751346651298373,
0.00646245652876113,
0.00548426852288823,
0.00457992464629308,
0.00375582111381079,
0.00301135225385597,
0.00234969558045079,
0.00176885434047466,
0.0012719536918125,
0.000855087208497132,
0.000516560219296775,
0.000256513110714093,
0.0000760935784184337,
0.0000347652191770424,
-0.00858023991873314};

int M;
int ordem=76;

for (i=0;i<250;i++)
{
float soma = 0;
if (i<ordem+1)
{
M=i;
}
else
{
M=ordem+1;
}
for (j=0; j<M; j++)
{
soma = soma + b[j]*vetor1[i-j];
}
vetor2[i] = soma;
}

13

// Reset the watchdog counter


ServiceDog();
// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

// ******* sevio de interrupo do watchdog


interrupt void wakeint_isr(void)
{
WakeCount++; //verifique a atuaao do watchdog observando WakeCount em
Watch Window
for(j=0;j<PONTOS;j++) //zera vetor1 se watdog atuar
{
vetor1[i]=0;
}
// Acknowledge this interrupt to get more from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

//===========================================================================
// No more.
//===========================================================================

Como resultado obteve-se as seguintes curvas visualizadas na Figura 8, em que a curva


superior representa o sinal de entrada e a curva inferior o sinal filtrado pelo filtro FIR
projetado.

Figura 8 Entrada e sada do sinal no Code Composer v5.4.

14