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
TIMER1 avec PIC12F1840
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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
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
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
TIMER1 avec PIC12F1840
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.
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
bonjour
un element que j'incorpore chaque fois que l'on a le mot TIMER
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
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
Bonjour,
Je pense que tu veux dire: il va de soit que c'est le préprocesseur [C] qui fait l’opération
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
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
TIMER1 avec PIC12F1840
TIMER1 avec PIC12F1840
- paulfjujo

Maître- Messages : 3262
- Âge : 75
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
J'utilise cette feuille excel pour definir/verifier mes tempos timers pour PIC 18F
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 .
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
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.
TIMER1 avec PIC12F1840
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
et je rigole......
A+
TIMER1 avec PIC12F1840
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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 ?
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 :
TIMER1 avec PIC12F1840
TIMER1 avec PIC12F1840
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.
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 12 invités


