1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <project.h>
int8 FlagRes=0,FlagConvert=0;//variables globales
int16 Retour;
int main()
{
int16 Resultat;
uint8 Tableau[52];
signed short cpt;
CyGlobalIntEnable; // permet les interruptions
ADC_1_Start(); // lance le convertisseur
ADC_1_IRQ_Enable(); // debloque les interruptions du convertisseur
ADC_1_StartConvert();// lance la conversion
for(;;)
{ if(FlagConvert==1)// lance la recuperation des valeurs
{
while(cpt!=52)// while pour remplir 52cases du tableau
{
Tableau[cpt]=Retour; //remplit le tableau avec la valeur du convertisseur
cpt++;//incremente la case du tableau
}
FlagConvert=0;//remet le flag a 0 quand le traitement est fini
}else{}
FlagRes=1;
}
}
CY_ISR( ADC_ISR ) //programme de sous interruption
{
int8 TopTrame=1,TopLigne=0,CompteurLigne=0;
if(FlagRes==1) //reset des valeurs
{
TopTrame=1;
CompteurLigne=0;
}else{}
TopTrame++;
if(TopTrame>=10)//detection d'une trame
{
TopLigne++;
if(TopLigne==4)//detection d'une ligne
{
CompteurLigne++; //incrémentation du numero de ligne
if(CompteurLigne==150) //environ le milieu de l'image
{
FlagConvert=1; //envoie un signal pour commencer la recuperation des valeurs dans un tableau
Retour=ADC_1_GetResult16(0); //reception du resultat
}else{}
}else{}
}else{}
} |
Partager