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 : mazertoc
Pwm avec Pic 18F27K42 impossible à mettre en fonction
Bonjour tout le frorum,
Voilà mon problème, je n'arrive pas à mettre en fonction le PWM du Pic 18F27K42, je ne comprends pas car j'ai tout configuré comme décrit dans la datasheet qui est disponible ICI
pour l'aide que vous pourriez m'apporter
A+
Voilà mon problème, je n'arrive pas à mettre en fonction le PWM du Pic 18F27K42, je ne comprends pas car j'ai tout configuré comme décrit dans la datasheet qui est disponible ICI
Code : Tout sélectionner
BANKSEL RC0PPS ; bank 58
movlw 0x0D ; mode PWM (PWM5)
movwf RC0PPS ; sortie sur RC0
movlw B'00000000' ;
movwf ANSELC ; mode normal
movlw B'00000000' ; pas de tirage de résistance
movwf WPUC
BANKSEL TRISC ; bank 63
movlw B'00000000' ; 11(RC0), 12(RC1), 13(RC2), 14(RC3), 15(RC4), 16(RC5), 17(RC6), 18(RC7)
movwf TRISC
movlw 0xFF ;
movwf T2PR ; réglage du "débordement" de TMR2
; pwm Period = ((T2PR) +1) * 4 * TOSC * (TMR2 Prescale Value)
movlw B'00000100' ; source d'horloge pour pwm
movwf T2CLK
movlw B'00100001' ; division par 4, mise en fonction du pwm (CKPS)
movwf T2CON
movlw B'00000001' ; utilisation du timer2 pour création du pwm
movwf CCPTMRS1
movlw B'10000000' ; mise en fonction du pwm
movwf PWM5CON
movlw D'1' ; réglage du pwm
movwf PWM5DCH
movlw D'128'
movwf PWM5DCL
pour l'aide que vous pourriez m'apporter
A+
Modifié en dernier par Temps-x le mer. 2 févr. 2022 01:55, modifié 1 fois.
Pwm avec Pic 18F27K42 impossible à mettre en fonction
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour TempsX
si ça peut t'aider ...
j'ai testé sous MPLABX XC8
Test_18F27K42_IVT_PWM10b_2021
avec PWM5 et Timer4 associé
PAR DEFAUT c'est TMR2
The PWM timer can be selected using the PxTSEL bits
in the CCPTMRS1 register.
The default selection for PWMx is T2TMR.
avec ici, pin de sortie :
RC5PPS = 0x0D; //RC5->PWM5:PWM5;
Reglage Duty par saisie valeur au clavier ou via reglage potar sur ADC
gamme 0 à 100% pour 0 à 4095
si ça peut t'aider ...
j'ai testé sous MPLABX XC8
Test_18F27K42_IVT_PWM10b_2021
avec PWM5 et Timer4 associé
PAR DEFAUT c'est TMR2
The PWM timer can be selected using the PxTSEL bits
in the CCPTMRS1 register.
The default selection for PWMx is T2TMR.
avec ici, pin de sortie :
RC5PPS = 0x0D; //RC5->PWM5:PWM5;
Code : Tout sélectionner
void TMR4_Init(void)
{
T4CLKCON = 0x01; // T2CS FOSC/4 ou 0x05 pour 500Khz
T4HLT = 0x00;
T4RST = 0x08; // T4RSEL PWM5OUT;
T4PR = 0xFF; // PR4 255;
T4TMR = 0x00; // TMR4 0;
PIR7bits.TMR4IF = 0; // Clearing IF flag.
T4CON = 0x60; // avec TMR4ON=0=OFF T2CKPS 1:64; T2OUTPS 1:1 not used
T4CONbits.TMR4ON = 1;
}
void PWM5_Init(void)
{
PWM5CON = 0x80; // PWM5EN =1=enabled; PWM5POL=0=normal => active_hi;
PWM5DCH = 0x00; // Duty Cycle= 0
PWM5DCL = 0x00; //
CCPTMRS1bits.P5TSEL = 2; //page 360 Select timer 1=>TMR2 [b] 2=>TMR4 [/b] 3=>TMR6
}
void PWM5_LoadDutyValue(uint16_t dutyValue)
{
// Writing to 8 MSBs of PWM duty cycle in PWMDCH register
PWM5DCH = (dutyValue & 0x03FC)>>2;
// Writing to 2 LSBs of PWM duty cycle in PWMDCL register
PWM5DCL = (dutyValue & 0x0003)<<6;
}
void main ()
{
....
Init_Hardware();
...
....
CPrint(" Module PW5 1Khz 10 bits, (lie a TMR4 ) ,sortie RC5\r\n");
...
TMR4_Init(); // pour 1KHz PWM5
...
CPrint(" Init PWM5 out RC5 = 25%\r\n");
PWM5_Init();
PWM5_LoadDutyValue(250);
...
Reglage Duty par saisie valeur au clavier ou via reglage potar sur ADC
gamme 0 à 100% pour 0 à 4095
Pwm avec Pic 18F27K42 impossible à mettre en fonction
Bonjour
Pour les timers 1/3/5, le bit d'activation dans TxCON est le bit b0
Pour les timers 2/4/6, le bit d'activation dans TxCON est le bit b7
C'est pas gentil de la part de Microchip, mais faut pas que ce soit trop simple aussi hein
donc sauf erreur :
Pour les timers 1/3/5, le bit d'activation dans TxCON est le bit b0
Pour les timers 2/4/6, le bit d'activation dans TxCON est le bit b7
C'est pas gentil de la part de Microchip, mais faut pas que ce soit trop simple aussi hein
donc sauf erreur :
Code : Tout sélectionner
movlw B'10100000' ; division par 4, mise en fonction du pwm (CKPS)
movwf T2CON
Pwm avec Pic 18F27K42 impossible à mettre en fonction
Bonsoir paulfjujo, satinas, et tout le forum,
J'ai été voir sur ton site hier soir, j'ai recopié la version MikroC en la traduisant en version ASM mais rien à faire MikroC continu à bugger
et contamine ASM.
Non d'un canard, ça fonctionne comme tu le décris, pour un sale tour, c'est un sale tour, car rien de marqué dans la datasheet.
Ou as tu eu cette info ?
Je laisse le soin à paulfjujo de le découvrir voir ci-dessous
J'aurais pu chercher longtemps, j'ai passé tout mon dimanche pour comprendre, et il y en a qui disent qu'il faut lire la datasheet
Si la datasheet raconte des bêtises... mais ou va ton ....
à vous deux, je vais m'occuper de la formule à l'aide d'un petit programme pour avoir une automatisation.
A+
paulfjujo a écrit :Source du message j'ai testé sous MPLABX XC8
J'ai été voir sur ton site hier soir, j'ai recopié la version MikroC en la traduisant en version ASM mais rien à faire MikroC continu à bugger
et contamine ASM.
satinas a écrit :Source du message C'est pas gentil de la part de Microchip, mais faut pas que ce soit trop simple aussi hein
Non d'un canard, ça fonctionne comme tu le décris, pour un sale tour, c'est un sale tour, car rien de marqué dans la datasheet.
Ou as tu eu cette info ?
Je laisse le soin à paulfjujo de le découvrir voir ci-dessous
J'aurais pu chercher longtemps, j'ai passé tout mon dimanche pour comprendre, et il y en a qui disent qu'il faut lire la datasheet
Si la datasheet raconte des bêtises... mais ou va ton ....
à vous deux, je vais m'occuper de la formule à l'aide d'un petit programme pour avoir une automatisation.
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Pwm avec Pic 18F27K42 impossible à mettre en fonction
Tout est dans le datasheet, il y a 3 types de timer (0 - 1/3/5 - 2/4/6) avec 2 versions du registre TxCON, cela aide pas quand on fait des recherches par mot clé. Pour chercher les infos sur un module, on affiche le sommaire à gauche. On sélectionne un module, par exemple chapitre 21 pour les timers 1/3/5 ou chapitre 22 pour les timers 2/4/6. Le périphérique est décrit, avec à la fin la liste des registres correspondants, et il y a donc un TxCON pour chacun de ces 2 chapitres.
En recherche rapide sur un registre particulier, on se met en début de document, et on tape TxCON: dans la zone de recherche (le suffixe : a son importance). Le premier qui s'affiche est celui du chapite 21, le second celui du chapitre 22.
Ils ont mis le bit enable en b7 pour aligner CKPS et OUTPS sur un quartet, ce qui simplifie le calcul en hexa de la valeur à mettre dans le registre. Mais bon, ils auraient dû aussi le faire pour les autres timers, car b7 n'y est pas utilisé. En plus c'est aussi b7 pour le timer0, qui a ses propres registres.
En recherche rapide sur un registre particulier, on se met en début de document, et on tape TxCON: dans la zone de recherche (le suffixe : a son importance). Le premier qui s'affiche est celui du chapite 21, le second celui du chapitre 22.
Ils ont mis le bit enable en b7 pour aligner CKPS et OUTPS sur un quartet, ce qui simplifie le calcul en hexa de la valeur à mettre dans le registre. Mais bon, ils auraient dû aussi le faire pour les autres timers, car b7 n'y est pas utilisé. En plus c'est aussi b7 pour le timer0, qui a ses propres registres.
Pwm avec Pic 18F27K42 impossible à mettre en fonction
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir TempsX
tu ne dois pas avoir la bonne version de datasheet
section 22.0 TIMER2/4/6 MODULE
REGISTER 22-5: TxCON: TIMERx CONTROL REGISTER
ref DS40001919F-page 339
test mikroC
ByteToStr(T2CON ,CRam1); donne "000"
TMR2ON_bit=1;
ByteToStr(T2CON ,CRam1) ; donne "128"
tu ne dois pas avoir la bonne version de datasheet
section 22.0 TIMER2/4/6 MODULE
REGISTER 22-5: TxCON: TIMERx CONTROL REGISTER
ref DS40001919F-page 339
test mikroC
ByteToStr(T2CON ,CRam1); donne "000"
TMR2ON_bit=1;
ByteToStr(T2CON ,CRam1) ; donne "128"
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Pwm avec Pic 18F27K42 impossible à mettre en fonction
Bonjour paulfjujo, satinas, et tout le forum,
Exacte, l'erreur que j'ai fait c'est de faire une recherche de T2CON seulement, au lieu de faire une recherche de TXCON
Si c'est la bonne version de la datasheet, merci pour le numéro de la page, je comprends mieux maintenant, regarde en page 314
Pas curiosité j'ai été voir dans le fichier p18f27k42.inc ou sont configurés toutes les adresses des registres avec leurs bits.
Pour T2CON correspond bien (page 339)
Pour T1CON correspond bien (page 314)
Ce que j'en conclus, comme tout les deux en un X Il y a confusion avec TXCON qui corresponds à la page 314 (T1CON, T3CON, T5CON)
et TXCON qui corresponds à la page 339 (T2CON, T4CON, T6CON) qui sont complétement différent.
T1CON, T3CON, T5CON font partie du timer1, timer3, timer5 (page 314)
T2CON, T4CON, T6CON font partie du timer2, timer4, timer6 (page 339)
Il y a un paquet de diviseur dans les timer2, timer4, timer6, très intéressant pour réglage d'un PWM
De toute façon le X m'appartient
Merci pour tout.
A+
satinas a écrit :Source du message Tout est dans le datasheet, il y a 3 types de timer (0 - 1/3/5 - 2/4/6) avec 2 versions du registre TxCON
Exacte, l'erreur que j'ai fait c'est de faire une recherche de T2CON seulement, au lieu de faire une recherche de TXCON
paulfjujo a écrit :Source du message tu ne dois pas avoir la bonne version de datasheet
Si c'est la bonne version de la datasheet, merci pour le numéro de la page, je comprends mieux maintenant, regarde en page 314
Pas curiosité j'ai été voir dans le fichier p18f27k42.inc ou sont configurés toutes les adresses des registres avec leurs bits.
Pour T2CON correspond bien (page 339)
Code : Tout sélectionner
;----- T2CON Bits -----------------------------------------------------
ON_T2CON EQU H'0007'
T2ON EQU H'0007'
T2OUTPS0 EQU H'0000'
T2OUTPS1 EQU H'0001'
T2OUTPS2 EQU H'0002'
T2OUTPS3 EQU H'0003'
T2CKPS0 EQU H'0004'
T2CKPS1 EQU H'0005'
T2CKPS2 EQU H'0006'
OUTPS0 EQU H'0000'
OUTPS1 EQU H'0001'
OUTPS2 EQU H'0002'
OUTPS3 EQU H'0003'
CKPS0_T2CON EQU H'0004'
CKPS1_T2CON EQU H'0005'
CKPS2_T2CON EQU H'0006'
TMR2ON EQU H'0007'
Pour T1CON correspond bien (page 314)
Code : Tout sélectionner
;----- T1CON Bits -----------------------------------------------------
ON_T1CON EQU H'0000'
RD16 EQU H'0001'
NOT_SYNC EQU H'0002'
TMR1ON EQU H'0000'
T1RD16 EQU H'0001'
NOT_T1SYNC EQU H'0002'
T1CKPS0 EQU H'0004'
T1CKPS1 EQU H'0005'
CKPS0_T1CON EQU H'0004'
CKPS1_T1CON EQU H'0005'
Ce que j'en conclus, comme tout les deux en un X Il y a confusion avec TXCON qui corresponds à la page 314 (T1CON, T3CON, T5CON)
et TXCON qui corresponds à la page 339 (T2CON, T4CON, T6CON) qui sont complétement différent.
T1CON, T3CON, T5CON font partie du timer1, timer3, timer5 (page 314)
T2CON, T4CON, T6CON font partie du timer2, timer4, timer6 (page 339)
Il y a un paquet de diviseur dans les timer2, timer4, timer6, très intéressant pour réglage d'un PWM
De toute façon le X m'appartient
Merci pour tout.
A+
Pwm avec Pic 18F27K42 impossible à mettre en fonction
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
TempsX a écrit : Il y a un paquet de diviseur dans les timer2, timer4, timer6, très intéressant pour réglage d'un PWM
Sauf que, malheureusement , le Postscaler n'intervient pas dans le PWM!
on en avait déja discuté il y a longtemps , je ne sais plus dans quel Post .. Avec Satinas
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Pwm avec Pic 18F27K42 impossible à mettre en fonction
Bonjour paulfjujo, et tout le forum,
Exacte, en faisant des essais je me suis rendu compte que le Postscaler ne fonctionnait pas, et je me suis dit : surement un bug de plus de MikroC....
Ton schéma ci joints ci-dessus en explique le pourquoi,
paulfjujo à toujours une longueur d'avance, ce qui me ralentit c'est surtout la langue anglo-saxonne ou je ne comprends qu'a trois quart de ce qui est écrit même en traduisant, heureusement que tu es là avec satinas, car plus beaucoup de monde dans la section ASM à par moi est F6FCO
Je viens de m’apercevoir que le programme PicPWM qui est disponible ICI est compatible pour trouver la valeur du PWM, il vaut que je modifie juste quelle que paramètre pour les Pic 18FxxKxxxx, je vais faire une nouvelle version pour ASM
A+
paulfjujo a écrit :Source du message Sauf que, malheureusement , le Postscaler n'intervient pas dans le PWM !
Exacte, en faisant des essais je me suis rendu compte que le Postscaler ne fonctionnait pas, et je me suis dit : surement un bug de plus de MikroC....
Ton schéma ci joints ci-dessus en explique le pourquoi,
paulfjujo a écrit :Source du message on en avait déja discuté il y a longtemps
paulfjujo à toujours une longueur d'avance, ce qui me ralentit c'est surtout la langue anglo-saxonne ou je ne comprends qu'a trois quart de ce qui est écrit même en traduisant, heureusement que tu es là avec satinas, car plus beaucoup de monde dans la section ASM à par moi est F6FCO
Je viens de m’apercevoir que le programme PicPWM qui est disponible ICI est compatible pour trouver la valeur du PWM, il vaut que je modifie juste quelle que paramètre pour les Pic 18FxxKxxxx, je vais faire une nouvelle version pour ASM
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 100 invités