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
PWM 16F877 -16F887
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonsoir à tous,
au vu de cette remarque sybilline concernant le postscaler TMR2
Que veut donc dire cette phrase ?
Le postscaler pourrait etre utilisé pour avoir une frequence de rafraichissement servo,
differente de celle de la sortie PWM
je me disais que ce serai pas mal de pouvoir utiliser le postcaler TMR2
pour avoir un grande dynamique de reglage PWM
surtout vers le Bas , pour un Servomoteur par exemple
quand on garde un FOSC élevé (ie 20Mhz) pour le reste de l'application
Hors celui ci n'est pas utilié en PWM !
J'ai verifié par des tests avec un 16F877 et un 16F887 monté
sur une carte Microchip IRDA Board Demo1
avec 20Mhz (16F877) et Fosc interne 8MHz pour le 16F887
Aucune interaction avec POSTSCALER ..
Programme de test dispo ICI,
avec Terminal pour choix de Prescaler 1/1,1/4,1/16 (commandes predefinies HI,ME,LO)
et valeur de Duty cycle 1 à 254 via clavier (ANA OFF)ou via Potar sur EA0 (ANA ON)
Gamme de PWM de 490Hz à 200KHz (avec perte de resolution)
voir 1MHz sur 2 bits avec FOSC=20Mhz
au vu de cette remarque sybilline concernant le postscaler TMR2
Que veut donc dire cette phrase ?
Le postscaler pourrait etre utilisé pour avoir une frequence de rafraichissement servo,
differente de celle de la sortie PWM
je me disais que ce serai pas mal de pouvoir utiliser le postcaler TMR2
pour avoir un grande dynamique de reglage PWM
surtout vers le Bas , pour un Servomoteur par exemple
quand on garde un FOSC élevé (ie 20Mhz) pour le reste de l'application
Hors celui ci n'est pas utilié en PWM !
J'ai verifié par des tests avec un 16F877 et un 16F887 monté
sur une carte Microchip IRDA Board Demo1
avec 20Mhz (16F877) et Fosc interne 8MHz pour le 16F887
Aucune interaction avec POSTSCALER ..
Programme de test dispo ICI,
avec Terminal pour choix de Prescaler 1/1,1/4,1/16 (commandes predefinies HI,ME,LO)
et valeur de Duty cycle 1 à 254 via clavier (ANA OFF)ou via Potar sur EA0 (ANA ON)
Gamme de PWM de 490Hz à 200KHz (avec perte de resolution)
voir 1MHz sur 2 bits avec FOSC=20Mhz
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
PWM 16F877 -16F887
Bonsoir,
C'est un diviseur supplémentaire pour Timer2, ça te permets d'avoir plus de réglage, car le timer2 ne compte pas aussi haut que le timer1
Et... ils ont raison dans ce qu'ils disent, parce qu'il y a deux diviseurs que tu peux régler indépendamment.
A+
paulfjujo a écrit :Source du message Le postscaler pourrait être utilisé pour avoir une fréquence de rafraichissement servo
C'est un diviseur supplémentaire pour Timer2, ça te permets d'avoir plus de réglage, car le timer2 ne compte pas aussi haut que le timer1
Et... ils ont raison dans ce qu'ils disent, parce qu'il y a deux diviseurs que tu peux régler indépendamment.
A+
PWM 16F877 -16F887
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bojour TempsX et à tous
oui, j'ai bien compris qu'il y avait le prescaler et le postscaler sur ce timer2
permettant donc une division maxi de 16x16=256 ... de FOSC/4
mais le postscaler n'est reservé qu'à la fonction comptage ou timer .. pas au PWM
d'apres mes tests et annotations sur la datasheet le precisant..
Mon questionnement repose sur l'autre explication disant qu'il pourrait être utilisé pour un servo ?
dans ce cas de figure , je pense qu'on ne serait pas en PWM ,
mais uniquement en "Timer" et gestion des interruptions
pour gérer ce fameux "servo"
je l'utilise (le timer2) par ailleur dans un programme 18F26K22
pour gérer 2 servo
Le Timer 2 faisant la base de temps 20mS
//Prescaler 1:16; Postscaler 1:10; TMR2 Preload = 250;
// Actual Interrupt Time : 20.005 ms at 8MHz
mais on perd tout l'avantage du PWM Hardware ... qui sort son signal SANS bouffer des cycles MCU .
Temps-x a écrit :Et... ils ont raison dans ce qu'ils disent, parce qu'il y a deux diviseurs que tu peux régler indépendamment.
oui, j'ai bien compris qu'il y avait le prescaler et le postscaler sur ce timer2
permettant donc une division maxi de 16x16=256 ... de FOSC/4
mais le postscaler n'est reservé qu'à la fonction comptage ou timer .. pas au PWM
d'apres mes tests et annotations sur la datasheet le precisant..
Mon questionnement repose sur l'autre explication disant qu'il pourrait être utilisé pour un servo ?
dans ce cas de figure , je pense qu'on ne serait pas en PWM ,
mais uniquement en "Timer" et gestion des interruptions
pour gérer ce fameux "servo"
je l'utilise (le timer2) par ailleur dans un programme 18F26K22
pour gérer 2 servo
Le Timer 2 faisant la base de temps 20mS
//Prescaler 1:16; Postscaler 1:10; TMR2 Preload = 250;
// Actual Interrupt Time : 20.005 ms at 8MHz
mais on perd tout l'avantage du PWM Hardware ... qui sort son signal SANS bouffer des cycles MCU .
PWM 16F877 -16F887
Bonsoir paulfjujo, et tout le forum,
Il est vrai que je n'ai jamais fait l'essai avec le Postscaler
Dans l'exemple ci-dessous avec Pic18F26K22 j'avais utilisé le Prescaler avec une division de 16, et le Postscaler été à zéro pour PWM
Je vais faire un essai cette semaine avec Pic18F26K22, en mettant le Postscaler avec une division de 16, et Prescaler à zéro avec PWM
Normalement avec quartz de 4 Mhz et 2 timer, on doit pouvoir gérer 8 servos, sans aucun problème, on pourrait même aller jusqu’à 10, mais bon faut laisser de la marge.
Oui.... mais il précise pas dans quelle condition, et là... est tout le problème..
Ah l'anglais......
A+
Il est vrai que je n'ai jamais fait l'essai avec le Postscaler
Dans l'exemple ci-dessous avec Pic18F26K22 j'avais utilisé le Prescaler avec une division de 16, et le Postscaler été à zéro pour PWM
Code : Tout sélectionner
movlw D'99' ; réglage du "débordement" de TMR2
movwf PR2 ; PR2 D'99' donc fréquence à 1250 Hz avec prédiviseur à 16
movlw B'00000110' ; diviseur (prescaler par 16) pour réduire ou augmenter pwm
movwf T2CON ;
movlw B'00001100' ; "1100" 4 bits mode pwm, "00" 2 bits pour variation du rapport cyclique
movwf CCP1CON ; pwm sur RC2
movwf CCP2CON ; pwm sur RC1
Je vais faire un essai cette semaine avec Pic18F26K22, en mettant le Postscaler avec une division de 16, et Prescaler à zéro avec PWM
Normalement avec quartz de 4 Mhz et 2 timer, on doit pouvoir gérer 8 servos, sans aucun problème, on pourrait même aller jusqu’à 10, mais bon faut laisser de la marge.
paulfjujo a écrit :Source du message Mon questionnement repose sur l'autre explication disant qu'il pourrait être utilisé pour un servo ?
Oui.... mais il précise pas dans quelle condition, et là... est tout le problème..
paulfjujo a écrit :Source du message Que veut donc dire cette phrase ?
Ah l'anglais......
A+
PWM 16F877 -16F887
Bonjour à tous
je pense que cela veut juste dire que l'on peut mettre à jour la position des servos à une fréquence fixe, sous-multiple de celle des signaux PWM, pour moins solliciter la cpu.
Les signaux PWM ont une période de 20ms. En utilisant le postscaler on déclenche l'interruption timer au choix toutes les 20, 40, ..., 320ms. C'est à ce moment qu'on met à jour les rapports cycliques des signaux PWM.
Comme le PWM a une résolution de 10 bits, il vaut mieux utiliser un double buffer, pour éviter des problèmes si l'interruption se produit pendant que le programme stocke les nouvelles positions servo.
je pense que cela veut juste dire que l'on peut mettre à jour la position des servos à une fréquence fixe, sous-multiple de celle des signaux PWM, pour moins solliciter la cpu.
Les signaux PWM ont une période de 20ms. En utilisant le postscaler on déclenche l'interruption timer au choix toutes les 20, 40, ..., 320ms. C'est à ce moment qu'on met à jour les rapports cycliques des signaux PWM.
Comme le PWM a une résolution de 10 bits, il vaut mieux utiliser un double buffer, pour éviter des problèmes si l'interruption se produit pendant que le programme stocke les nouvelles positions servo.
PWM 16F877 -16F887
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour à tous,
OK , sur ce point de vue, surtout avec plusieurs Servos, avec le bit TMR2IF sortant du Postscaler pour lancer l'interrupt ...
C'est une explication qui tient la route .
satinas a écrit :Bonjour à tous
je pense que cela veut juste dire que l'on peut mettre à jour la position des servos à une fréquence fixe, sous-multiple de celle des signaux PWM, pour moins solliciter la cpu.
Les signaux PWM ont une période de 20ms. En utilisant le postscaler on déclenche l'interruption timer au choix toutes les 20, 40, ..., 320ms. C'est à ce moment qu'on met à jour les rapports cycliques des signaux PWM.
Comme le PWM a une résolution de 10 bits, il vaut mieux utiliser un double buffer, pour éviter des problèmes si l'interruption se produit pendant que le programme stocke les nouvelles positions servo.
OK , sur ce point de vue, surtout avec plusieurs Servos, avec le bit TMR2IF sortant du Postscaler pour lancer l'interrupt ...
C'est une explication qui tient la route .
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 34 invités