Module TPM avec entrée timer sur pin exter et output compare [Forums - Kinetis]
Module TPM avec entrée timer sur pin exter et output compare [Forums - Kinetis]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes



(1) 2 »


Module TPM avec entrée timer sur pin exter et output compare
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1924
Hors Ligne
Bonjour

Je tente de faire compter X fronts à un timer de mon KL15 : un signal carré de rapport cyclique proche de 50% est appliqué sur l'entrée TPMCLKIN0
le timer 0 est configurer pour lever une pin quand le timer atteint 10

Mon KL15 tourne à 20.97 MHz

Si j'applique un signal carré à 2 MHz l'output compare ne se lève qu’après 11 fronts descendants appliqués sur l'entrée

Si j'applique un signal carré à 7.14 MHz l'output compare ne se lève qu’après 12 fronts descendants appliqués sur l'entrée.

Le code utilisé :
/* préparation du timer 0 pour générer PWM a 7.14MHz pin PTC8 TMP0Ch4  qui est reliée à l'entrée horloge du timer 1 */
    
SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK;     // Activation de l'horloge sur le TPM0 le choix de l'horloge est fait dans les inits de l'appli pour tous les timer avec le registre SIM_SOPT2                           
    
    
TPM0_SC 0x00;                     // Arret du timer pour pouvoir changer le mode d'un canal
    
TPM0_CNT 0x00U;                     // Reset counter register
       
    
TPM0_C4SC 0x00U;                    // Clear channel status and control register 
 
    
TPM0_MOD TPM_MOD_MOD(0x0002);       // Set up modulo register 3 (X+1) pour avoir 8MHz de période (un peu moins puisque l'on n'est pas pile à 24MHz sur la FLL avec la référence interne)
    
    
TPM0_C4SC TPM_CnSC_MSB_MASK TPM_CnSC_ELSB_MASK  ;     // PWM, High-true pulses (clear output on compare)
    
    
USB_WR_GPIOenSortie ;                                     // La pin reste en GPIO standard, on lancera le PWM aprés, quand l'ouput compare sera pret
    
    
TPM0_SC = (TPM_SC_CMOD(0x01) | TPM_SC_PS(0x00));         // lancement du timer
    
    
TPM0_C4V 0x01 ;                                  // largeur d'impulsion = 1 => rapport cyclique 50%  
    
/*Préparation du timer 1 pour compter les fronts (descendants ?). Horloge donnée PTE16 + output compare sur PTE20 Timer1Ch0 */
    
SIM_SCGC6 |= SIM_SCGC6_TPM1_MASK;                         // Activation de l'horloge sur le TPM1 le choix de l'horloge est fait dans les inits de l'appli pour tous les timer avec le registre SIM_SOPT2                           
                
    
TPM1_SC ;                                            // Arret du timer 1
    
TPM1_CNT 0;                                             // Reset counter register
    
    
TPM1_C0SC ;
    
    
TPM1_MOD 65535 ;                                         // init du modulo au maximum
                         
    
WR_FTDI_SOURCE_TIMER;                                    // La pin PTE16 prend la fonction du mux 4 : TPMCLKIN0 pour compter les impulsions de WR
    
SIM_SOPT4 &= ~  SIM_SOPT4_TPM1CLKSEL_MASK ;             // La source d'horloge du timer 1 est la pin TPM_CLKIN0 (mise à 0 du bit TPM1CLKSEL)

    
USB_FIN_GPIOenSortie;         USB_FIN0_BASCULE_LIBRE;        // Sortie OutputCompare désactivée pour le moment
    
    
TPM1_C0V 10 ;                           // nombres de fronts à compter
    
    
NVIC_IPR4 &= (uint32_t)~(uint32_t)(NVIC_IP_PRI_18(0xFF));                                   
    
NVIC_ISER |= NVIC_ISER_SETENA(0x00040000);  
    
    
TPM1_C0SC TPM_CnSC_CHF_MASK TPM_CnSC_CHIE_MASK TPM_CnSC_MSA_MASK TPM_CnSC_ELSB_MASK TPM_CnSC_ELSA_MASK//demande et init IT sur outputcompare avec SET de la sortie au compare
    
TPM1_SC =  TPM_SC_CMOD(0x02) | TPM_SC_PS(0x00) ;        // IT timer overflow DEactivée avec source de l'horloge sur la pin externe

Ensuite je donne à la pin horloge du timer sa fonction TPMCLKIN0 (MUX 3)

ensuite jactive la pin pour générer le PWM


Auriez vous une piste à me proposer pour tenter de comprendre ce phénomène ? je suis bien bloqué par ce comportement ?

Merci

Posté le : 30/08/2015 10:51
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
Salut

TPM1_C0SC TPM_CnSC_CHF_MASK TPM_CnSC_CHIE_MASK TPM_CnSC_MSA_MASK TPM_CnSC_ELSB_MASK TPM_CnSC_ELSA_MASK//demande et init IT sur outputcompare avec SET de la sortie au compare


Es-tu sûr de cette configuration?
Le commentaire est-il en erreur (output compare)?

Posté le : 31/08/2015 10:38
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1924
Hors Ligne
Salut

merci d'avoir pris le temps de regarder ma question insipide

oui je confirme, avec ce qui est écrit là j'ai activation de l'it et outputcompare, set output on match

Il me semble que c'est pareil que sur les S08 mais sur la datasheet :
http://cache.freescale.com/files/32bi ... anual/KL15P80M48SF0RM.pdf
page 545

Et j'ai bien la pin qui se lève... juste un poil trop tard

ici
http://cache.freescale.com/files/32bi ... a_sheet/KL15P35M48SF0.pdf
on voit page 17 que l'entrée asynchrone du TPM est limitée à 8 MHz, je comprendrais que ce soit limite pour les 7.14Mhz mais çà me comtpe un front de trop aussi à 2MHz...


Posté le : 31/08/2015 10:58
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
Merci pour les liens, je regarderais plus en detail un peu plus tard.

En revanche, j'ai besoin d'un peu plus de précision sur ton implémentation.

Est-ce juste?:
B_CLK->Timer0->PWM_OUT->PIN_OUT->PIN_IN->Timer1_CLK.

Je dirais:
-Vérifie que les niveaux électriques sont bons et les transition haut bas soient correctes (slew rate)
-Vérifie que tu n'as pas de filtre sur tes ports (config port µC)...

@++

Posté le : 31/08/2015 13:51
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1924
Hors Ligne
Citation :

Est-ce juste?:
B_CLK->Timer0->PWM_OUT->PIN_OUT->PIN_IN->Timer1_CLK.


je ne comprends pas ce que tu écris là
J'ai la pin PWM en IO générale, (sortie à 1)
La pin output compare en IO standard
puis je configure le PWM
puis je configure le timer de comptage (dont mise à zero) et son output compare.
Puis j'active la pin en output compare
puis j'active la pin du PWM pour quelle fasse son job de pwm.
Citation :

Je dirais:
-Vérifie que les niveaux électriques sont bons et les transition haut bas soient correctes (slew rate)
-Vérifie que tu n'as pas de filtre sur tes ports (config port µC)...
Ci joint l'image de ce qui rentre sur TPM_CLKIN0, c'est le signal qu isort d'une bascule D SN74LVC1G373DCK, faite pour aller bien plus vite que ca. C'est pas trop vilain, non ?
Pour les filtres je ne vois pas. Ce qui concerne la pin TPM_CLK0 est dans le code ci dessus, tout est desactivé sauf le mux de la pin qui la configure en TPM_CLKIN

Attacher un fichier:



jpg  WR qui est compté.jpg (45.07 KB)
46_55e457aa90ef6.jpg 320X234 px

Posté le : 31/08/2015 15:32
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
Mon bou de machin était une "représentation" du signal utile.
B_CLK pour le bus clock, cadence ton TMP0.
Ensuite tu génère un signal PWM 50% qui sort du µC.
Ce signal, apres une electronique, re-entre dans le µC pour cadencer TMP1.
TMP1 compte à la fréquence du signal d'entrée jusqu'à ton TPM1_C0V = 10, puis pilote l'output du fait de la config.

j'espère que ton KL15 n'est pas sensible aux pulses négatif sur les I/O ;)

je vais voir les docs ce soir :)

Posté le : 31/08/2015 16:51
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
Désolé, j'ai pas vraiment eu le temps de regarder hiers soir... Mon ptit bonhomme a fait crise sur crise (à cause de l'orage)...

/*Préparation du timer 1 pour compter les fronts (descendants ?)


déjà pour ceci, il y a cela dans la Datasheet.

Citation :

External clock. TPM external clock can be selected to increment the TPM
counter on every rising edge synchronized to the counter clock.


Check que le niveau idle de ton TPM0 soit bien au niveau bas, pour eviter un increment erroné.
Tu devrais également configurer et démarrer ton TPM1 AVANT TPM0, pour être sûr de ne pas louper des counts sur le démarrage de ton système...

je continue de regarder en offtime :)

Posté le : 01/09/2015 08:54
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
Plop ^^

Je viens de lire ceci, mais je ne pense pas que tu soit dans ce cas là:
Citation :

To guarantee valid operation the selected external clock must be less than half the frequency of the selected TPM clock source.


Update: Je viens également de lire que le sur GB60 (S08) le pulse ne doit pas être inférieur à 50ns avec un bus clock à 20MHz...

Posté le : 02/09/2015 14:29

Edité par ikoria sur 02/09/2015 15:52:21
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1924
Hors Ligne
Salut

Merci pour toutes ces recherches.
De mon coté j'ai fait d'autres essais et
1) je ne comprends pas pourquoi il m'en compte 1 de plus à 2MHz, car il m'en compte aussi 1 de plus à des fréquences plus basses de quelques 100n de Khz, là où on est loin de toutes les limites énoncées et à l'analyseur logique et au scope il n'y a pas photo.
2) à 2.14MHz il en laisse passer non pas 1 mais 2 mais jamais plus, jamais moins, c'est super précis dans l'erreur ! je suppose donc tant que je reste dans des températures constantes...

Bref ça reste un mystère pas très rassurant. Je suis donc parti sur une solution de comptage 100% hardware avec un 4040 qui est lui prévu pour du 210MHz en entrée...ya de la marge !

Merci

Posté le : 02/09/2015 19:59
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Module TPM avec entrée timer sur pin exter et output compare
Accro
Inscrit:
06/07/2007 09:17
Messages: 697
Hors Ligne
Question: Avais-tu vraiment besoin de sortir du µC pour réinjecter dans la source clock du TPM1??
Je ne suis pas entré dans les détails, mais ne pouvais-tu pas utiliser les P.I.C. pour connecter par exemple le TOF TPM0 sur le source clock du TPM1?

Posté le : 04/09/2015 08:03
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Module TPM avec entrée timer sur pin exter et output compare [Forums - Kinetis]