Timer1 a configurer 16F887

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From French to

Threaded View
Bonjour,

Je debute dans le monde des microcontroleurs ,j'ai reussi a mettre en
place le timer1 mais je n'arrive pas a trouver les bonnes valeurs
Ce projet est un chrono precis au 1/100 de secondes
J'utilise MikroC comme compilateur
Si quelqu'un pourrait arranger sa
http://www.toofiles.com/fr/oip/documents/rar/timeraconfigurertemperatureokchronoo

Merci d'avance

Re: Timer1 a configurer 16F887
Le Sun, 11 Apr 2010 07:18:18 -0700, bigboss59400 a écrit :

Quoted text here. Click to load it
timeraconfigurertemperatureokchronoo

je crois qu'il y a un problème de couper/coller : adresse invalide

Re: Timer1 a configurer 16F887
Quoted text here. Click to load it

Ah en effet DSL ,je viens de regler sa
http://up.sur-la-toile.com/izF9

Re: Timer1 a configurer 16F887

Quoted text here. Click to load it
=================
La précision ne dépendra que du quartz ,
en choisissant un  modèle  de type "IOXO- xx "  d'une fréquence maximum
possible pour
le µC la précision sera  correcte.
La meilleur précision étant assurée par un boîtier quartz thermostaté .




Re: Timer1 a configurer 16F887
Quoted text here. Click to load it

Oui,sa je le sais pour le quartz moi je parlais des valeurs a definir
dans mon code source car je n'arrive pas a trouver les bonnes

Si toi ou quelqu'un pouvez corrige sa

Cordialement

Re: Timer1 a configurer 16F887
bigboss59400 a tapoté du bout de ses petites papattes :
Quoted text here. Click to load it

Ben justement, ça dépend du quartz.

--
LeLapin



Re: Timer1 a configurer 16F887

Quoted text here. Click to load it

Oui,sa je le sais pour le quartz moi je parlais des valeurs a definir
dans mon code source car je n'arrive pas a trouver les bonnes
=============
Valeur ?
As-tu déjà déjà commencé à écrire  le programme  , et dans quel langage ?



Re: Timer1 a configurer 16F887
On Apr 11, 8:20A0%pm, bigboss59400

Quoted text here. Click to load it

Syntax error

Re: Timer1 a configurer 16F887
On Apr 11, 4:42A0%pm, "maiorE9%"

Quoted text here. Click to load it

Avec une bonne paire de chaussettes.

Re: Timer1 a configurer 16F887
J'ai compris la precision  vient que du quartz mais moi mon probleme
c'est que je n'arrive pas a configurer le timer1 pour qu'il fasse des
interruptions toutes les 1/100 secondes

Mon programme tourne mais il n'a surement pas les bonnes valeurs car
sur mon LCD je vois les 1/10 de secondes defiles comme des secondes

Il doit y avoir 5 valeurs en tout a changer(voir commentaire de mon
programme)accesible ici
http://up.sur-la-toile.com/izF9

Merci d'avance

Re: Timer1 a configurer 16F887

Quoted text here. Click to load it

un tres bon programme gratuit pour connaitre le valeurs des timers des pics...

http://pictimer.picbingo.com /

attention, il y a un bug il faut mettre la date de l'ordi en 2009 sinon
il dit "version expirée" ...
et il n'y en a pas de nouvelle !

--
-
Jean-Yves


Re: Timer1 a configurer 16F887
On Apr 12, 9:11 am, bigboss59400

Quoted text here. Click to load it

Je n'ai pas la doc du 16F887 sous la main, mais
ce serait plus enrichissant pour toi de comprendre
ce qui se passe et de faire toi-meme la correction.
A commencer par ces trucs louches dans main()

 sec++;
 if ( sec 3D%3D 59 )
   sec3D%0;

Donc aprE9%s 58 tu passes E0% zE9%ro ?
Faudrait pas plutot comparer E0% 60 ?
 if ( ++sec >3D% 60 ) sec3D%0;
( meme remarque pour les minutes )

Quand au timer, tu sais que son horloge est dE9%rivE9%e
de l'horloge du PIC, suivie de diviseurs.
[osc] ->- [prE9%diviseur] ->- [diviseur] ->- [timer]

Tu dois donc
(1) Connaitre la frE9%quence du quartz.
(2) Connaitre la valeur du prE9%diviseur.
(3) ParamE9%trer le diviseur du timer.
De facon E0% rE9%armer la valeur du timer pour
qu'il tombe par exemple toutes les millisecondes.
Et c'est dans la routine d'interruption void interrupt()
que tu incrE9%mentes les variables, pas dans le main()

Voici un exemple de code 18F2455 d'interruption pour une horloge
E0% 10 ms avec un quartz E0% 16 Mhz : on a Fosc 3D% 48 Mhz et 12 Mips


// DATA : TIMER #1 - Assume speed 3D% 12 Mips ----------

#define TIMERDIVV  0b00110000 // divise par 8
#define TIMER1_STARTVALUE  50536 // 3D% 65536-15000 : every 10 ms

// clock : [ 10MILLISECOND : SECOND : MINUTE : HOUR ]
enum { TiMS3D%0, TiSS, TiMM, TiHH, TiSIZE }; // indexes
unsigned char Tclock[TiSIZE]; // clock


// CODE : SET/RESET TIMER #1 -----------------

void fTimer1(unsigned char how)
{
// disable timer
   TMR1IE 3D% 0;    // interrupt disabled
   TMR1ON 3D% 0; // timer off
   TMR1IF 3D% 0;    // interrupt flag off
   if(!how) return; // done
// init timer
   T1CON 3D% 0b10000000 | TIMERDIVV; // 16-bit : internal_clock(Fosc/
4) : prescale
// enable
   TMR1    3D% TIMER1_STARTVALUE; // restart here
   TMR1ON  3D% 1;    // timer on
   TMR1IE  3D% 1;    // interrupt enabled
   TMR1IP  3D% 1;    // interrupt priority HIGH
}


// CODE : INTERRUPT - TIMER #1 -----------------------

void interrupt ISR_High(void) // high priority
{
  if( TMR1IF ) // Timer #1 interrupt flag
  { TMR1IF 3D% 0; // ACK
 // clock
    if( ++Tclock[TiMS] >3D% 100 ) // one second
    { Tclock[TiMS] 3D% 0;
      Tflag |3D% TFLAG_SYNC;
      if( ++Tclock[TiSS] >3D% 60 ) // second
      { Tclock[TiSS] 3D% 0;
        if( ++Tclock[TiMM] >3D% 60 ) // minute
        { Tclock[TiMM] 3D% 0;
          if( ++Tclock[TiHH] >3D% 24 ) // hour
          { Tclock[TiHH] 3D% 0;
          }
        }
      }
    }
    TMR1 3D% TIMER1_STARTVALUE; // restart here
  } // timer #1 interrupt

// done ISR
}

Re: Timer1 a configurer 16F887

snipped-for-privacy@w42g2000yqm.googlegroups.com...
Quoted text here. Click to load it
=================
Le timer 1 ne convient pas trop pour générer une interruption si courte car
même à 20 Mhz  le temps entre deux interruptions (prescaler 1) est de
65536*0.00213%.107 ms
Par exemple pour incrémenter chaque seconde  il faudrait 1/0.013 = 76
interruptions
Ps possible donc pour une interruption  de 1/100 s (76/100 !  ).....

D'autre part l'affichage d'un LCD est trop lent pour afficher  les dixièmes
de seconde



Re: Timer1 a configurer 16F887
Quoted text here. Click to load it

Bonsoir,

En fait dans ce genre de cas, j'écris directement une valeur de départ dans
le timer (au lieu de zero), ça coûte pas grand chose de plus et ça permet
d'être précis au cycle près !

-- cLx

Re: Timer1 a configurer 16F887

snipped-for-privacy@v20g2000yqv.googlegroups.com...
Quoted text here. Click to load it
http://www.toofiles.com/fr/oip/documents/rar/timeraconfigurertemperatureokchronoo
Quoted text here. Click to load it
bonsoir
quelques remarques:, d'ordre general, ne connaissant pas ton pic
ne faut il pas declarer la variable cnt en volatile ?

le if (cnt = 55536)  est une affectation, il faut mettre ==, et il vaut
mieux mettre if (cnt >= 55536)

ensuite il faut comparer  sec a 60, idem pour minute



Re: Timer1 a configurer 16F887
Le 11/04/2010, bigboss59400 a supposé :
Quoted text here. Click to load it
http://www.toofiles.com/fr/oip/documents/rar/timeraconfigurertemperatureokchronoo
Quoted text here. Click to load it

Bjr,

Alors, on en a assez de abc (satm....) ?

avec le timer 1 il faut le réinitialiser à chaque utilisation !

Il n'est pas très fiable.

Le mieux est d'adjoindre un pcf8583 avec un quarts en i2c

sinon se debrouiller avcec cela :
http://eng-serve.com/pic/pic_timer.html

et un quartz de 11.0592 mhz ca aide bien (voir sélectronic)

Cordialement



Re: Timer1 a configurer 16F887
Quoted text here. Click to load it

Un timer pas trE8%s fiable ?
VoilE0% qui excite ma curiositE9%...

--
-Stan


Re: Timer1 a configurer 16F887
Stan a formulé la demande :
Quoted text here. Click to load it

En complétant ma dernière phrase par "de ce fait" c'est plus complet.

Comme il faut le ré-initialiser à chaque fois, et que l'on n'est pas
très maître de ce qui se passe entre "chaque", la précision n'est de ce
fait pas très fiable.



Re: Timer1 a configurer 16F887
On May 6, 10:47 am, SansNom

Quoted text here. Click to load it


Pour etre fiable et prE9%cis, le timer va dE9%clencher une
interruption de haute prioritE9% afin d'E9%viter que le programme
soit interrompu lors de la rE9%initialisation. Dans ton exemple,
il me semble que ce n'est pas la fiabilitE9% du timer qui soit en cause.

Site Timeline