Conversion analog/num

Fermé
maryouma1986 Messages postés 18 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 17 mai 2009 - 4 févr. 2009 à 17:35
maryouma1986 Messages postés 18 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 17 mai 2009 - 5 févr. 2009 à 22:41
Bonjour,
je proframme mon pic 16F877 à l'aide du picc.
j'ai une entrée analogique à l'aide d'un potentiometre et un horloge externe de freq 50hz. par rapport à cette valeur je dois réquperer en sortie à chaque front montant un signal nul pendant une durée relative à l'entree analogique , puis à 1 pendant 1ms puis il revient à 0 jusq'à 10ms.
cad pour 5v-->retard=9ms
0v-->retard=0ms
voici mon programme mais ca na pas marcher. le retard ne varie pas.
#include<16F877.h>
#use delay (clock=20000000)
#define out1 PIN_B1
#define out2 PIN_B2
#use rs232 (BAUD=9600,xmit=PIN_C6,rcv=PIN_C7)
//#define in PIN_BO
int retard_amorcage();
int interruption();

int16 tr=0;
int16 retard;
#INT_EXT
void interruption()
{
retard=retard_amorcage();
delay_us(retard);
output_high(out1);
delay_ms(1);
output_low(out1);

delay_us(10000-1000);
output_high(out2);
delay_ms(1);
output_low(out2);

}

int retard_amorcage()
{
int8 value;
int16 val;

value= read_adc();
delay_us(10);
val= value*9000;
retard=val/255;
printf("%lu\r", retard);
return retard;
}

void main ()
{
int8 retard,value;
setup_adc_ports(RA0_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
ext_int_edge(L_TO_H); // init interrupt triggering for button press
enable_interrupts(INT_EXT);// turn on interrupts
enable_interrupts(GLOBAL);

while(1)
{}
}
je pense que le pbleme est à cause que val ne peut pas etre sur 16 bit.
si je le transforme en 32 bit je ne peut pas faire un delay_us car le max est 16 bit.
et si je travaille en ms cad 9ms au lieu de 9000us je risque d'avoir 0 pour le retard.
merci de me repondre voici mon email meryem_online@yahoo.fr
merci d 'avance.
A voir également:

1 réponse

maryouma1986 Messages postés 18 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 17 mai 2009
5 févr. 2009 à 22:41
bonjour
j ai besoin d'avoir un signal carré de freq 50hz en isis.
j ai utilisé l'option clock mais elle n'est pas stable sur l'oscilloscope dans isis.
que dois je faire?
si quelqun peut m'aider n'hesiter pas.
merci d'avance
0