Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Questions concernant PWM du pic 16f877 mikro c
Bonjour tout le monde,
J'ai quelques questions concernant ce programme en C que j 'arrive pas a bien comprendre. Merci de vos réponses.
1- pourquoi le chiffre 16 pour ceci; je pense on doit commencer par un chiffre quelconque.. short current_duty_1 = 16; // initial value for current_duty_1
2- pourquoi ce signe '!' dans cette ligne, if (!RD0_bit) // if button on RD0 pressed c'est un no logique , not ( juste RD0 est relié a 5V via une resistance de 10k ) a la place on pouvait pas écrire if RD0= 0?
J'ai quelques questions concernant ce programme en C que j 'arrive pas a bien comprendre. Merci de vos réponses.
1- pourquoi le chiffre 16 pour ceci; je pense on doit commencer par un chiffre quelconque.. short current_duty_1 = 16; // initial value for current_duty_1
2- pourquoi ce signe '!' dans cette ligne, if (!RD0_bit) // if button on RD0 pressed c'est un no logique , not ( juste RD0 est relié a 5V via une resistance de 10k ) a la place on pouvait pas écrire if RD0= 0?
Code : Tout sélectionner
// Exercice PWM PIC16F877A Mikro c
void main()
{
short current_duty_1 = 16; // initial value for current_duty_1
short current_duty_2 = 16; // initial value for current_duty_2
TRISD = 0xFF; // PORTD as input
TRISC = 0x00; // PORTC as output
PWM1_Init(5000); // frequence 5Khz Initialize PWM1
PWM2_Init(5000); //frequence 5khz Initialize PWM2
PWM1_Start(); // start PWM1
PWM2_Start(); // start PWM2
PWM1_Set_Duty(current_duty_1); // Set current duty for PWM1
PWM2_Set_Duty(current_duty_2); // Set current duty for PWM2
while (1) // endless loop
{
if (!RD0_bit) // if button on RD0 pressed
{
Delay_ms(40);
current_duty_1++; // increment current_duty_1
PWM1_Set_Duty(current_duty_1); //Change the duty cycle
}
if (!RD1_bit) // button on RD1 pressed
{
Delay_ms(40);
current_duty_1--; // decrement current_duty_1
PWM1_Set_Duty(current_duty_1);
}
if (!RD2_bit) // if button on RD2 pressed
{
Delay_ms(40);
current_duty_2++; // increment current_duty_2
PWM2_Set_Duty(current_duty_2);
}
if (!RD3_bit) // if button on RD3 pressed
{
Delay_ms(40);
current_duty_2--; // decrement current_duty_2
PWM2_Set_Duty(current_duty_2);
}
Delay_ms(10); // slow down change pace a little
}
}
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Questions concernant PWM du pic 16f877 mikro c
- paulfjujo
Expert- Messages : 2598
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
dyli a écrit :s.
1- pourquoi le chiffre 16 pour ceci; je pense on doit commencer par un chiffre quelconque.. short current_duty_1 = 16; // initial value for current_duty_1
2- pourquoi ce signe '!' dans cette ligne, if (!RD0_bit) // if button on RD0 pressed c'est un no logique , not ( juste RD0 est relié a 5V via une resistance de 10k ) a la place on pouvait pas écrire if RD0= 0?
1)
c'est à toi de nous le dire .. on ne sait pas à quoi sert ton programme..
on pourrait supposer que ton PWM a une gamme de 0 à 255 .
et 16 pour voir un creneau sur le signal de sortie avec un rapport cyclique de 1/8
avec zero ..tu vois rien
2)
RD0 avec Pullup de 10K au +5V .. on a effectivement un 1 logique si le BP n'est pas pressé
et donc un 0 si on appuie dessus.
a la place on pouvait pas écrire if RD0= 0?
NON !
mais
if(RD0==0) oui
un test se fait avec ==
sinon c'est une affectation .. RD0=0 .. qui ne peut d'ailleur pas marcher ,car on ne peut pas
forcer une entree.
Questions concernant PWM du pic 16f877 mikro c
Bonjour Paul,
Merci de tes réponses,
Le programme , je ne l'ai pas fait moi meme, mais trouvé sur internet, le but était de me familiariser avec PWM du pic16f877a.( un simple exercice)
Donc il y a 4 BP sur le schema qui permettent soit de diminuer le rapport cyclique soit d'augmenter.
le lien de cet exercice que j'ai trouvé sur web.
exercice pwm sur pic 16f877A
Merci de tes réponses,
Le programme , je ne l'ai pas fait moi meme, mais trouvé sur internet, le but était de me familiariser avec PWM du pic16f877a.( un simple exercice)
Donc il y a 4 BP sur le schema qui permettent soit de diminuer le rapport cyclique soit d'augmenter.
le lien de cet exercice que j'ai trouvé sur web.
exercice pwm sur pic 16f877A
Qui est en ligne
Utilisateurs parcourant ce forum : Bing [Bot] et 117 invités