Acquisition du régime moteur

Fermé
flodu12 Messages postés 1 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 8 janvier 2008 - 8 janv. 2008 à 13:53
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 8 janv. 2008 à 15:32
Bonjour, mon but et de realiser un compte tour, de relever un vitesse en temps reel et un bargraph en un seul logiciel via un clavier numerique.En prenant en compte laz taille des roues et le nombre de piston.pourrez-y vous m'aider car je n'arrive pas a acquérir les touches clavier pour ensuite les prendre necompte? .Voila mon logiciel :


#include "1 rapf version3.h"
#include "24C65.C"
#pragma use fast_io(B)

int16 touch,ligne,col,var,i,adrrom;
char a,b,c,d,m,xi,t,valeur,roues;


#int_RTCC
RTCC_isr()
{output_b(ligne);
rotate_left(&ligne,1);
if(ligne==0xef) ligne=0xfe;
delay_us(100);
}

#int_RB
RB_isr()
{disable_interrupts(INT_RTCC);
col=input_b();
if(col<0xf0) touch=col;
delay_ms(100);
enable_interrupts(INT_RTCC);
}

void raz(void)
{i=0;
a=0;
b=0;
c=0;
m=0;
t=0;
}

void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

init_ext_eeprom();
printf("RAPPELLE Florent\n\r");
port_b_pullups(TRUE);
set_tris_b(0xF0);
col=1;
touch=0;
ligne=0xfe;
adrrom=0x0000;
valeur=1;

enable_interrupts(INT_RTCC);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);

raz();
do
{

do
{ while(touch==0)
var=touch;
touch=0;
switch(var)
{
case 119:/*printf("1\n\r");*/
i++;
a=1;
break;
case 183:/*printf("2\n\r");*/
i++;
b=2;
break;
case 215:/*printf("3\n\r");*/
i++;
c=3;
break;
case 231:/*printf("A\n\r");*/
i++;
m=13;
break;
}
}

while(i<=1);
printf("dimension roues ?");
delay_ms(500);
if(a==1 && t<=9)
{t++;
switch(t)
{case 1:printf("0");
break;
case 2:printf("1");
break;
case 3:printf("2");
break;
case 4:printf("3");
break;
}

init_ext_eeprom();
xi=ext_eeprom_ready();
if(b=2)
{valeur++;
write_ext_eeprom(adrrom,valeur);
read_ext_eeprom(adrrom);
printf("valeur = %D \n\r",read_ext_eeprom(adrrom));
delay_ms(100);
adrrom++;
a=0;
}
}
else
{raz();
}
}

while(1);
}

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
8 janv. 2008 à 15:32
while(touch==0)
var=touch;
ça ressemle bien à une boucle infini ça déjà.(pas de modif de touch dans le while) ou alors le programme est en thread.
Ensuite, je trouve tes boucles plutôt étrange.
0