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 ---
Forum général sur le langage C !

Modérateur : Jérémy

TIMER1 avec PIC12F1840
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » mer. 2 mars 2016 21:31

Bonsoir à tous,

Voila, sorti des sentiers battus je me mélange les pinceaux et n'arrive plus à rien.

Étant sur mon programme Bluetooth, je cherche à placer ceci dans un PIC 12F1840 ( DS en haut de ce post).
Je bloque sur la configuration de l’interruption du TIMER1 pour obtenir un temps de 1S afin de mettre à jour le chrono/compteur.

J'ai choisi le TMR1 car sur 16 bits , mais avec un PRE-SCALER de 8 au max.

Les réglages sont différents des Timer que je connais et la configuration alentour aussi.

J'utilise un Quartz de 8Mhz externe , la Fréquence est de 32Mhz et les PLL sont activées.

Je règle donc la partie T1CON pour :
-bit7-6 à 01 =Timer1 clock source is system clock (FOSC)
-bit 5-4 à 11 = 1:8 Prescale value
-bit 3 à 0 = Dedicated Timer1 oscillator circuit disabled
-bit 2 à 0 = Synchronize external clock input with system clock (FOSC)
-bit 1 à 0 = Unimplemented
-bit 0 à 1 = TMR1ON: Timer1 On bit


:?: Ensuite il y a la partie T1GCON , et je ne sais pas à quoi cela correspond ?
:?: L'activation des PLL change-t-elle la valeur de l'OSC ?

La vitesse de l'INT sera de :

32Mhz / 4 = 8M d’instructions par seconde .
Pre-scaler à 8 donc 8M/8 = 1M soit 1M d’incrémentation par seconde.
Une instruction par 1µs.

Donc :
65536 - 50000= 155536 . avec un OFFSET de 15536 , j’obtiendrais une INT toute les 5ms .
Il me faudrat donc compter jusqu'a 200 INT pour avoir ma seconde ?
Pensez vous que ces bons , si mes réglages restent comme cela ?

Merci à vous
C'est en faisant des erreurs, que l'on apprend le mieux !!!

TIMER1 avec PIC12F1840
mazertoc
Passionné
Passionné
Messages : 201
Enregistré en : juillet 2015
Localisation : Auvernha

#2 Message par mazertoc » jeu. 3 mars 2016 02:39

Si tu as des temps longs à prendre en compte choisis plutôt T1CON 7-6 à 00 (Fosc/4).
T1GCON gère une porte de comptage qui permet de prendre en compte T1CLK lorsque des conditions logiques sont satisfaites.
Je crois qu'il y a un problème avec la configuration x4PLL par les mots de configuration,
il vaut mieux utiliser le bit SPLLEN dans OSCCON (après avoir juste jeté un oeil).

Je suis d'ailleurs en train de travailler dessus, c'est assez confusionnant quand on sort d'un 16F877 !

J'ai aussi besoin de compter des temps longs et je vais utiliser la fonction gate du TMR1,
pour avoir un incrément de TMR1 à chaque débordement de TMR0 -> plus d'une heure !
Mais c'est pas pour tout de suite,
là j'en suis aux configurations.

TIMER1 avec PIC12F1840
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#3 Message par Guest » jeu. 3 mars 2016 11:39

bonjour

un element que j'incorpore chaque fois que l'on a le mot TIMER

Code : Tout sélectionner

;*********************** Assignations *******************************
QUARTZ       equ   .20         ;Valeur du quartz en MHz
DIVISEUR1   equ   .8         ;ici 8 du TMR1

TEMPS       equ   .100000         ;Valeur en µs

CYCLE       equ   .4000/QUARTZ      ; en ns

TIMER1       equ   .65535-((QUARTZ*TEMPS)/(.4*DIVISEUR1)-2)
;********************************************************************      
;on veut declenchement int toute les 100ms
;avec un quartz de 20 Mhz le cycle machine vaut 200ns ou 0.0002ms
;pour 100ms il faut donc 100/0.0002= 500 000 cycles machine
;avec un diviseur par 8 cela nous donne 500 000/8 =62 500 cycles
;il faut que timer fasse 62 500 cycles pour declencher une int
; a chaque RAZ il faut donc de le timer est deja fait
; 65535-62500=3035  c'est la valeur a charger dans le timer      
;Pour quoi -2 c'est le temps du chargement de TIMER1
;********************************************************************      
TIMER1L       equ   LOW TIMER1      ;valeur
TIMER1H       equ   HIGH TIMER1      ;pour 100 ms qu'il faudra incorporer dans le timer 1



Bien sur il faut modifier les constantes en fonction de vos besoins
ici quartz 20Mhz temps écoulé entre chaque int ici 100ms et de votre compli ici mpasm

A+

PS il va de soit que c'est le coprocesseur qui fait l’opération

TIMER1 avec PIC12F1840
Claudius
Avatar de l’utilisateur
Passionné
Passionné
Messages : 262
Âge : 70
Enregistré en : septembre 2015
Contact :

#4 Message par Claudius » jeu. 3 mars 2016 14:50

Bonjour,
maï a écrit: PS il va de soit que c'est le coprocesseur qui fait l’opération

Je pense que tu veux dire: il va de soit que c'est le préprocesseur [C] qui fait l’opération ;-)

TIMER1 avec PIC12F1840
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#5 Message par Guest » jeu. 3 mars 2016 17:12

Est oui, je pense a ma division, 48bits/32 donc j'ai posté le fil si tu veux jeter un œil ;)

TIMER1 avec PIC12F1840
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3261
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#6 Message par paulfjujo » ven. 4 mars 2016 16:33

bonsoir,

Pensez vous que ces bons , si mes réglages restent comme cela ?


J'utilise cette feuille excel pour definir/verifier mes tempos timers pour PIC 18F
Timers_18F.zip


avec 3035 comme valeur initiale du timer ..
et en accord avec la proposition de Mazertoc , bit7-6 à 00 =Timer1 clock source is cycle clock (FOSC/4)
tu n'aurais que 16 interrupts par seconde au lieu de 200..

il vaut mieux laisser le timer compter plus longtemps , si tu n'a pas besoin par ailleurs du tics intermediare à 5mS .
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

TIMER1 avec PIC12F1840
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#7 Message par Guest » ven. 4 mars 2016 18:06

paulfjujo a écrit :bonsoir,


J'utilise cette feuille excel pour definir/verifier mes tempos timers pour PIC 18F

Problème c'est que pour toutes modifications il faut ouvrir de nouveau le tableur et lors du transfert risque d'erreur.
Avec les constants pas de problème c'est dans le source et toutes modif et pris directement en compte a moins que votre compli n'a pas de constantes :P

et je rigole......

A+

TIMER1 avec PIC12F1840
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#8 Message par Jérémy » ven. 4 mars 2016 18:13

Trés joli ton tableur Paulfjujo.

J'utilise ceci moi : Timer calculator mais encore faut il que l'on trouve son PIC et ça ne fonctionne pas pour un 12F.

En fait mes questions étaient plus orientées sur le réglage et non sur le calcul ;

Comme avec ces questions ci :

:?: Ensuite il y a la partie T1GCON , et je ne sais pas à quoi cela correspond ?
:?: L'activation des PLL change-t-elle la valeur de l'OSC ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

TIMER1 avec PIC12F1840
mazertoc
Passionné
Passionné
Messages : 201
Enregistré en : juillet 2015
Localisation : Auvernha

#9 Message par mazertoc » ven. 4 mars 2016 18:20

Jérémy a écrit ::?: Ensuite il y a la partie T1GCON , et je ne sais pas à quoi cela correspond ?
:?: L'activation des PLL change-t-elle la valeur de l'OSC ?

Répondu #2 . . .

Le PLL multiplie la fréquence qui y entre par 4.
Dans ce sens oui elle change Fosc.

TIMER1 avec PIC12F1840
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#10 Message par Guest » ven. 4 mars 2016 18:23

Jérémy a écrit :
?: L'activation des PLL change-t-elle la valeur de l'OSC ?


je veux bien répondre a ceci j'ai pas regardé la DS.

les timers suivent le Pointeur instruction cela veux dire qu'a chaque cycle machine tout tes compteurs sont incrémenté DONC oui le PLL a changé la valeur du cycle machine puisque tu va plus vite pour exécuter ton programme.

heu... pour les calcul c'est pas 65536 mais 65535, tu ne diras on n'est pas a 1 cycle machine prés , quoi que le fait de faire -2 dans mon calcul sur 1 H je suis encore a la seconde prés.
1 cycles sur 16 boucles 16 cycles de décalage/S plus le chargement du timer etc etc ..... bon j’arrête.


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités