Conversion analog/num
maryouma1986
Messages postés
23
Statut
Membre
-
maryouma1986 Messages postés 23 Statut Membre -
maryouma1986 Messages postés 23 Statut Membre -
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.
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:
- Conversion analog/num
- Touche verr num - Guide
- Logiciel gratuit conversion calendrier républicain - Télécharger - Études & Formations
- Conversion mb mo ✓ - Forum Matériel & Système
- Check signal cable analog ✓ - Forum Windows
- 2k€ conversion ✓ - Forum Bureautique