Acquisition du régime moteur

flodu12 Messages postés 1 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
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);
}
A voir également:

1 réponse

Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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