Page 1 of 1

probleme microcontroleur

Posted: 07 Apr 2010, 17:09
by rolled
bonjour
Alors voila j'ai penser a un moyen de faire un signal PWM(MLI) simplement avec un microcontroleur genre 16f84.
Mais le problème c'est que quand, avec un bouton poussoir j'augmente ou je diminue, le rapport n'augmente pas forcement donc si vous pouviez me dire ce qui ne vas pas dans mon code:



#include"delay.c"

char temp;
char itemp;

void main(void)
{
TRISA = 0xff;
TRISB = 0b00000000;
PORTB = 0x00;
PORTA = 0x00;

temp = 50;
itemp = 50;

for(;;)
{
if(RA1 == 1)
{
temp = temp + 10;
}
while(RA1 == 1)

if(RA0 == 1)
{
temp = temp - 10;
}
while(RA0 == 1)


itemp = 100 - temp;

RB0 = 1;
delay_ms(temp);
RB0 = 0;
delay_ms(itemp);
}
}

je compile sous MPLab et je simule sous ISIS. 'don't no'
ceux qui ont ISIS peuvent essayer il faut juste un micro deux poussoirs et deux resistance.

Re: probleme microcontroleur

Posted: 07 Apr 2010, 22:34
by jC_Omega
pas d'erreur de compil?

quel compilateur C utilise tu?

tu parle d'un bouton poussoir, mais alors pourquoi tu utilise 2 patte d'entré sur le port A?

a tu bien mis des résistance de tirage? peut t'on voir t'on schema?

ton programme manque peut être de valeur de détection de mini -maxi pour la variable temp.

-de plus fait gaffe a la taille de la variable itemp et temp : car tu les a déclarer en char.
tout dépend de ton compilateur, car "char" peut être une variable signé 8bit, qui peut varier de -128 à +128

-soit mets la en "unsigned char", soit en variable 16 bit "unsigned int"

- tes tempo "delay_ms", verifie dans la doc, le type d'argument qu'elle accepte (genre si elle prend une variable 16bit, certain compilateur n'aime pas qu'on lui envoie une variable 8bit.
ou alors tu simplement vérifie bien que tu puisse envoyer "une variable dynamique a delay_ms (car certain fonction delay ne prenne que des argument static (genre 55)

je regarderais en detail ton programme demain soir

Re: probleme microcontroleur

Posted: 08 Apr 2010, 09:00
by rolled
Merci mais dans mon premier post je dis qu'il faut un microcontroleurs,deux poussoirs et deux resistances.
Non il n'y a pas d'erreur de compil et je compile sous MPLab avec CC5X.
Image

Re: probleme microcontroleur

Posted: 08 Apr 2010, 10:52
by jC_Omega
une grosse erreur :
il manque la résistance de tirage vers vcc (10K) sur la patte MCLR.
ca devrait déja mieux demarer avec. 'yeha"

via ISIS grace a ton compilateur et MPLAB, tu peut faire de la simulation pas a pas direct sous ISIS
pour pourra ainsi trouver ainsi le soucis.

tu peut aussi faire de la simulation sous MPLAB.

test déja comme ca, avec la résistance, si ca marche pas, je regarderais en detail ton programme.

Re: probleme microcontroleur

Posted: 08 Apr 2010, 17:32
by rolled
En fait le programme marche mis il faut appuyer au bon moment sur le bouton pour que le rapport augmente 'rhaa'
Et j'arrive pas a trouver ce qui fait ça.

Re: probleme microcontroleur

Posted: 08 Apr 2010, 21:42
by CaZaE
je propose ca :

Code: Select all


while(1)
{
if(but1 && temp<=100)
temp++;

if(but2 && temp>=0)
temp--;


itemp=temp;
while( (temp++)-100)
{
led=1;
delay_ms(1);
}

temp=itemp;
while( temp--)
{
led=0;
delay_ms(1);
}

temp= itemp;

}
Voila ca c'est sur que ca marche apres se sera pas le top car pendant le decomptage tu ne poura augmenter ou diminué le pwm mais en restant appuyer tu le vera monter ou descendre a raison de 100ms par periode .

Voila voila