probleme microcontroleur

=> A vos fer à souder ^^ :) ! Des questions en rapport avec un projet ou une de vos réalisation . Une réalisation/projet, à nous présenter au fur et à mesure de sa réalisation.
Rubrique spéciale "Réalisations finies".
MERCI DE NE PAS CRÉER UN DOUBLON DANS LA RUBRIQUE DE DESSOUS.
Post Reply
rolled
Rang "1 LEDs"
Rang "1 LEDs"
Posts: 23
Joined: 22 Dec 2009, 18:27

probleme microcontroleur

Unread post 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.
jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Posts: 904
Joined: 10 Aug 2008, 09:45
Contact:

Re: probleme microcontroleur

Unread post 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
Mes projets perso :
Image
rolled
Rang "1 LEDs"
Rang "1 LEDs"
Posts: 23
Joined: 22 Dec 2009, 18:27

Re: probleme microcontroleur

Unread post 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
jC_Omega
Rang "6 LEDs"
Rang "6 LEDs"
Posts: 904
Joined: 10 Aug 2008, 09:45
Contact:

Re: probleme microcontroleur

Unread post 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.
Mes projets perso :
Image
rolled
Rang "1 LEDs"
Rang "1 LEDs"
Posts: 23
Joined: 22 Dec 2009, 18:27

Re: probleme microcontroleur

Unread post 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.
CaZaE
Rang "6 LEDs"
Rang "6 LEDs"
Posts: 629
Joined: 01 Jan 2009, 18:48
Contact:

Re: probleme microcontroleur

Unread post 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
Http://ULPprepa.free.fr
Le site des prepa lumières unique au monde
__________________________________________________________________________________
Image
Post Reply