Bonjour a tous,
je suis en train d'essayer de faire fonctionner mon pic mais rien ne fonctionne
j'explique mon projet (tout bête) :
je lis la valeur d'un potentiomètre, la compare avec une autre valeur prédéfini et suivant si je suis au dessus ou au dessous, j'allume ou j'etteind une led.
Ma source (sous CCS C) :
#include <16F88.h> //fichier propre au pic
#use delay(clock=4000000) //horloge synchroniser avec le registre osccon
#fuses INTRC_IO,MCLR,NOWDT,NOPROTECT, NOPUT,Brownout,
#byte OSCCON = 0x8F //horloge
#byte TRISA = 0x85 //entrée sortie du portA
#byte PORTA = 0x05 //pour utilisation des pattes du portA
#byte TRISB = 0x86 //entrée sortie du portB
#byte PORTB = 0x06 //pour utilisation des pattes du portB
#byte ANSEL = 0x9B //sert à configurer les entrées analogiques du pic
#byte CMCON = 0x9C //comparateur
#byte ADCON0 = 0x1F //pour configuration analogique numerique
#bit ADON = ADCON0.0
#bit GODONE = ADCON0.2
#byte ADRESH = 0x1E //pour lire le resultat de la conversion
int convert;
int seuil;
//declaration des fonctions
int convADC8 (void); //fonction conversion analogique numerique
void synchro (void);
OSCCON = 0x68; //pour horloge synchro avec 4MHz
ANSEL = 0x01; //autorisation convertisseur AN0 de ispdat
CMCON = 7; //Blocage comparateur pour ne pas géner les IO
TRISA = 0xA1; //definition des entrées sorties
TRISB = 0x00; //definition des entrées sorties
bit_set(PORTA,1); // au demarrage la led est allumé
while(1)
{
synchro();
convert = convADC8();
seuil = 150;
if (convert > seuil) //si tension secteur OK
{
bit_set(PORTA,1);
}
else
{
bit_clear(PORTA,1);
}
// FONCTIONS
//---------------------------
int convADC8 (void)
//---------------------------
{
ADCON0 = 0x00; //initialisation du registre de CAN
ADON = 1; //activation de la conversion
delay_us(20);
GODONE = 1; //on lance la conversion
while (GODONE); // on attend que la conversion soir fini
delay_us(40);
ADON = 0; //on arrete la conversion
return (ADRESH); // on stocke le resultat dans le registre ADRESH
}
//-----------------
void synchro (void)
//-----------------
{
convert = convADC8();
if (convert)
{
do
{
convert = convADC8();
}
while(convert); //on boucle jusqu'attent que la variable prend
//la valeur de la conversion
}
delay_ms(5);
}
Mon problème :
je branche ma led s'allume, je tourne mon potentiomètre (câbler entre VCC (5V) et la masse) pour diminuer ma tension, ma led s'etteind je remonte la tension elle ne se rallume plus !!!!
Si quelqu'un a une idée j'en serais ravis car je galère avec ce probleme depuis plusieurs jours...
-----