mortaurat
Joined: 23 Jul 2009 Posts: 14
|
how times it takes |
Posted: Sun Oct 18, 2009 11:42 am |
|
|
Hello,
I wrote a part of code and I don't know how many times it takes.
I cannot use a timer because I want to use this function while 10 seconds, then I use an another function.
Code: |
#include "16F628A.h"
#use delay(clock=20000000)
#define BP PIN_A0
#define LED PIN_B0
#define injecteur1_in PIN_A1
#define injecteur2_in PIN_A2
#define injecteur3_in PIN_A3
#define injecteur4_in PIN_A4
#define injecteur1_out PIN_B1
#define injecteur2_out PIN_B2
#define injecteur3_out PIN_B3
#define injecteur4_out PIN_B4
void pilotage_injection_demarage()
{
//------------declaration variables------------
unsigned int32 retard1=0, retard2=0, retard3=0, retard4=0,temp=0 ;
int decrement=2; //1/2 = 50% d'enrichissement
while(temp<60000){
//------------si l'injecteur est piloté (etat bas) on incremente--------
if(input(injecteur1_in)==0)
{
retard1++;
output_low(injecteur1_out);
}
if(input(injecteur2_in)==0)
{
retard2++;
output_low(injecteur2_out);
}
if(input(injecteur3_in)==0)
{
retard3++;
output_low(injecteur3_out);
}
if(input(injecteur4_in)==0)
{
retard4++;
output_low(injecteur4_out);
}
//--------------si le pilotage est arreté, mais que retard > 0
if(input(injecteur1_in)==1 && retard1>0)
{
retard1=retard1-decrement;
output_low(injecteur1_out);
}
if(input(injecteur2_in)==1 && retard2>0)
{
retard2=retard2-decrement;
output_low(injecteur2_out);
}
if(input(injecteur3_in)==1 && retard3>0)
{
retard3=retard3-decrement;
output_low(injecteur3_out);
}
if(input(injecteur4_in)==1 && retard4>0)
{
retard4=retard4-decrement;
output_low(injecteur4_out);
}
//------------si pilotage arreté et que retard <=0
if(input(injecteur1_in)==1 && retard1<=0)
{
output_high(injecteur1_out);
}
if(input(injecteur2_in)==1 && retard2<=0)
{
output_high(injecteur2_out);
}
if(input(injecteur3_in)==1 && retard3<=0)
{
output_high(injecteur3_out);
}
if(input(injecteur4_in)==1 && retard4<=0)
{
output_high(injecteur4_out);
}
}
temp++;
} |
The principle is to increase a duty by 50% while ten seconds, then it's increased by 20%.
In order to do this, I increment a variable when the signal is at the low state, then, when the signal is at the high state, I decrease the variable until it reach 0.
Next the output is at the state high.
If I increment by 1 and decrement by 2 I will have an increase of 50%.
If I increment by 1 and decrement by 5 I will have an increase of 20%.
etc....
So my question is what's the value (of temp) that corresponds to a time of 10sec ?
Thanks a lot |
|