0% ont trouvé ce document utile (0 vote)
49 vues2 pages

EXP3 Timer0

Le document traite de l'utilisation du TIMER 8 bits du PIC16F84 pour mesurer le temps entre deux événements. Il présente un exemple de programme qui configure le timer et explique les effets des rebonds de contact sur les mesures. Des solutions pour éviter ces rebonds, comme l'utilisation d'un condensateur ou un traitement logiciel, sont également mentionnées.

Transféré par

Hadj Safa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
49 vues2 pages

EXP3 Timer0

Le document traite de l'utilisation du TIMER 8 bits du PIC16F84 pour mesurer le temps entre deux événements. Il présente un exemple de programme qui configure le timer et explique les effets des rebonds de contact sur les mesures. Des solutions pour éviter ces rebonds, comme l'utilisation d'un condensateur ou un traitement logiciel, sont également mentionnées.

Transféré par

Hadj Safa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Le PIC16F84 Exemples


Utilisation du Timer
Le PIC16F84 possède un TIMER 8 bits qui peut être utilisé en compteur d'évènements Le
programme suivant utilise ce timer pour mesurer le temps s'écoulant entre deux évènements
rapprochés.

Le fil RA0 est mis à 1


Fosc/4 Bus par une résistance de
pull up , il est relié
0 Synchro
Ra4 TOIF également à un
1
1 conducteur ( une
Préscaler 0 pointe de touche ) que
TMR0 l'on peut amener
T0SE brièvement en contact
PSA
T0CS avec une plaque reliée
PS2-PS1-PS0 à la masse. On pique
rapidement la plaque et
TOCS TOSE PSA Ps2 Ps1 PSO OPTION_REG le but est de mesurer la
0 0 0 1:2 durée du contact
Taux de 0 0 1 1:4
division 0 1 0 1:8
du 0 1 1 1:16
prescaler 1 0 0 1:32
1 0 1 1:64
1 1 0 1:128
1 1 1 1:256

La structure du circuit
Timer0 est reproduite ci-dessus .Les bits de commande sont placés dans le registre OPTION_REG (
le nom OPTION seul n'est pas admis car c'est le nom d'une instruction du PIC16C54 ) d'adresse 81H ,
donc situé en page 1 .
Avec une prédivision par 256 l'affichage de durée se fait en multiples de 256µS .
Ci-dessous la partie du programme concernant le Timer est en noir.
title'exemple3'
list p=16F84,F=INHX8M
#include "[Link]"
__CONFIG H'3FF1'
;le mot OPTION qui est une instruction du PIC16F54
;ne peut pas être utilisé , ce registre porte
;donc le nom OPTION_REG
org 0
BSF STATUS,RP0 ;page 1
CLRF TRISB ;Portb en sortie
MOVLW 0xFF
MOVWF TRISA ;PortA en entrée
;Le registre OPTION_REG est en page 1 ,je reste donc en page 1
;
MOVLW B'01110111'
MOVWF OPTION_REG ;Pull up en place sur PB
;T0CS=1,T0SE=1,PSA=0,(Prescaler),
;PS2-PS1-PS0=111 division par 256
BCF STATUS,RP0 ;retour en page 0 , car TMRO est en page 0
CLRF TMR0 ;RAZ du compteur interne
MOVLW 0xFF
MOVWF PORTB ;affichage FF en attente de comptage
CONTACT BTFSC PORTA,0
GOTO CONTACT ;boucle sans fin tant que RA0 est au 1
BSF STATUS,RP0 ;retour en page 1
BCF OPTION_REG,T0CS ;source quartz divisé par 4 soit 1Mhz
;départ comptage Timer
FINCONTACT BCF STATUS,RP0 ;page 0
BTFSS PORTA,0 ;boucle en attendant retour au 1
GOTO FINCONTACT

1
Le PIC16F84 Exemples

MOVF TMR0,0 ;lecture compteur interne dans W
MOVWF PORTB ;affichage sur PortB
STOP GOTO STOP ;pour une nouvelle mesure
;il faut relancer le programme.
end

On notera sans doute que le résultat de la mesure est souvent zéro alors que de contact
dure apparemment beaucoup plus, ceci est du à des rebonds de contact. La pointe rebondit sur la
plaque et le niveau sur l'entrée RA0 remonte à 1 au bout de moins d'une milliseconde avant de
redescendre à 0. Le programme qui est conçu pour s'arrêter dès le retour à 1 indique ainsi une durée
faible , souvent nulle. Ces rebonds de contacts peuvent être évités en plaçant un condensateur en
parallèle , mais il est moins coûteux de le traiter de façon logicielle.
Le montage permet d'étudier la durée du premier rebond en diminuant le taux de division du
prédiviseur.

Vous aimerez peut-être aussi