Você está na página 1de 2

void Trapezio(void){

TimerIntClear(TIMER2_BASE,TIMER_TIMA_TIMEOUT);
TimerMatchSet(TIMER0_BASE, TIMER_A,dutyCycle);
int PERIODO = 1998;//a contagem do periodo vai ate 1999///1998 o duty maximo q
defini que eh quase 100%
int rampa = 66;// o resto que falta pra chegar nos 1999 divido por 10->>>((2/3)*19991999)/10 = 66.
// vou ter 10 pontos de amostra na rampa, por isso dividi por 10;

//2.0/3 pq minha onda tem tres niveis, 6 12 e 18 logo 12 = 2/3 de 18. As constantes t,g,c
e d so os contador
// de 1 at 10 pra fazer a rampa.

//minha quantidade de amostras eh de 400, ou seja, meu contator "i" vai at 400, quando
for 401 recomeca a contagem

if (i>=1 && i<50){


dutyCycle=(2.0/3)*PERIODO;}//saida terica de 12V
else if (i>=50 && i<60){
dutyCycle= (2.0/3)*PERIODO+t*rampa;// 12V + 1*66 + 2*66 + 3*66...(onde 12V =
2/3*Periodo).
t=t+1;}
else if(i>=60 && i<150){
t=1;
dutyCycle=PERIODO;}//sada terica de 18V
else if(i>=150 && i<160){

dutyCycle=PERIODO - rampa*g;
g=g+1;}
else if(i>=160 && i<250){
dutyCycle=(2.0/3)*PERIODO;//sada terica de 12V
g=1;}
else if(i>=250 && i<260){
dutyCycle= (2.0/3)*PERIODO - rampa*c;
c=c+1;}
else if(i>=260 && i<350){
dutyCycle=1.0/3*PERIODO;//sada terica de 6V
c=1;}
else if(i>=350 && i<360){
dutyCycle= (1.0/3)*PERIODO+ rampa*d;
d=d+1;}
else if (i>=360 && i<=400){
dutyCycle=2.0/3*PERIODO;//sada terica de 12V
d=0;

}
i++;
if(i==401)i=1;

Você também pode gostar