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 ---
3)Troisième partie : clignotement d'une LED par Watchdog
3) Troisième partie : clignotement d'une LED par Watchdog
Bonjour,
- Comme convenu, je ne parlerai pas des sujets déjà évoqués, voir à ce sujet ici : viewtopic.php?p=6621#p6621
Très cordialement
___________________________________________________________________________________________________________________
Sujet non terminé, en cours de traitement, quand j'aurais le temps je terminerais
___________________________________________________________________________________________________________________
Le Watchdog Timer
- Le watchdog, ou chien de garde est un mécanisme de protection de votre programme, il sert à surveiller si celui-ci s’exécute
- toujours dans l’espace et dans le temps que vous lui avez attribués.
Le principe de fonctionnement
- La mise en service ou l’arrêt du watchdog se décide au moment de la programmation de votre PIC, à l’aide de la directive _CONFIG
- Si _WDT_OFF, le watchdog ne sera pas en service.
- Si _WDT_ON, le watchdog sera actif.
- Le fonctionnement du watchdog est lié à un timer interne spécifique, qui n’est pas synchronisé au programme, ni à un événement
- extérieur.
- La durée spécifique de débordement de ce timer est approximativement de 18ms, pour la plupart des Pics, cette valeur est à prendre
- avec précaution, car elle varie en fonction de différents paramètres, comme la tension d’alimentation ou la température.
- C'est un compteur 8 bits programmable
- Il n'est ni lisible ni inscriptible
- En fonctionnement normal, le dépassement du compteur provoque un reset
- Seul son taux de division est programmable par les bits zéro(PS0) bits un(PS1) bits deux(PS2) du registre OPTION_REG
- Le taux de division peut être modifié en cours de programme
- Il est utilisé après le Watchdog lorsque le bit trois(PSA) du registre OPTION_REG est à 1
- La remise à zéro du Watchdog remet le prescaler à zéro
- Le prescaler fonctionne pour le module Timer ou pour le Watchdog , mais pas pour les deux simultanément.
mais cette durée peut être allongée en utilisant le prescaler pour atteindre jusqu'à 2 ou 3 secondes
Le bit 4 (TO) du registre STATUS (03h et 83h) passe à 0
Les instructions clwdt et sleep remettent à zéro le Watchdog et le prescaler s'il lui est attribué
Le Watchdog peut être utilisé contre les plantages du programme: celui ci remet périodiquement le compteur à 0 par l'instruction clrwdt,
si le programme plante, il n'y a pas de remise à 0, il y a dépassement compteur et reset.
En mode sleep(mode sommeil), le watchdog, est capable de réveiller le Pic pour des temps que vous lui avez spécifier,
voir pour les temps dans votre datasheet du Pic.
Quand votre Pic est en sommeil, les Timer ne peuvent pas fonctionné
Exemple pour faire clignoter une LED, en se servant du watchdog, avec un 16F88, ci-Joint fichier source plus fichier compilé :
Le fonctionnement est très simple. le PIC est mis en sommeil. Une fois le temps du watchgog écoulé,
le PIC se réveille et exécute l’instruction suivante. Voilà donc un programme de clignotement de votre LED ultracourt et
avec une consommation minimale.
Bonjour,
- Comme convenu, je ne parlerai pas des sujets déjà évoqués, voir à ce sujet ici : viewtopic.php?p=6621#p6621
Très cordialement
___________________________________________________________________________________________________________________
Sujet non terminé, en cours de traitement, quand j'aurais le temps je terminerais
___________________________________________________________________________________________________________________
Le Watchdog Timer
- Le watchdog, ou chien de garde est un mécanisme de protection de votre programme, il sert à surveiller si celui-ci s’exécute
- toujours dans l’espace et dans le temps que vous lui avez attribués.
Le principe de fonctionnement
- La mise en service ou l’arrêt du watchdog se décide au moment de la programmation de votre PIC, à l’aide de la directive _CONFIG
- Si _WDT_OFF, le watchdog ne sera pas en service.
- Si _WDT_ON, le watchdog sera actif.
- Le fonctionnement du watchdog est lié à un timer interne spécifique, qui n’est pas synchronisé au programme, ni à un événement
- extérieur.
- La durée spécifique de débordement de ce timer est approximativement de 18ms, pour la plupart des Pics, cette valeur est à prendre
- avec précaution, car elle varie en fonction de différents paramètres, comme la tension d’alimentation ou la température.
- C'est un compteur 8 bits programmable
- Il n'est ni lisible ni inscriptible
- En fonctionnement normal, le dépassement du compteur provoque un reset
- Seul son taux de division est programmable par les bits zéro(PS0) bits un(PS1) bits deux(PS2) du registre OPTION_REG
- Le taux de division peut être modifié en cours de programme
- Il est utilisé après le Watchdog lorsque le bit trois(PSA) du registre OPTION_REG est à 1
- La remise à zéro du Watchdog remet le prescaler à zéro
- Le prescaler fonctionne pour le module Timer ou pour le Watchdog , mais pas pour les deux simultanément.
mais cette durée peut être allongée en utilisant le prescaler pour atteindre jusqu'à 2 ou 3 secondes
Le bit 4 (TO) du registre STATUS (03h et 83h) passe à 0
Les instructions clwdt et sleep remettent à zéro le Watchdog et le prescaler s'il lui est attribué
Le Watchdog peut être utilisé contre les plantages du programme: celui ci remet périodiquement le compteur à 0 par l'instruction clrwdt,
si le programme plante, il n'y a pas de remise à 0, il y a dépassement compteur et reset.
En mode sleep(mode sommeil), le watchdog, est capable de réveiller le Pic pour des temps que vous lui avez spécifier,
voir pour les temps dans votre datasheet du Pic.
Quand votre Pic est en sommeil, les Timer ne peuvent pas fonctionné
Exemple pour faire clignoter une LED, en se servant du watchdog, avec un 16F88, ci-Joint fichier source plus fichier compilé :
Code : Tout sélectionner
;**********************************************************************************************
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
radix dec ; on travaille en décimal par défaut
LIST P=PIC16F88 ; Définition de processeur
#include <p16F88.inc> ; fichier include
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_IO
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
;*************************************** Assignations *****************************************
#DEFINE led PORTA,2 ; led corresponds à RA2
;**************************** adresse de depart après reset **********************************
ORG H'00'
goto debut
;******************************** configuration du Pic ****************************************
debut
BANKSEL OPTION_REG ; on passe en bank 1
movlw B'10001101' ; valeur à charger dans le registre OPTION_REG,
movwf OPTION_REG ; préscaler du watchdog à 32, (18 milliseconde * 32 = 576 milliseconde)
movlw B'00001000' ; toutes les pattes en sortie, exception MCLR(RA4) en entrée
movwf TRISA ;
movlw B'00000000' ; toutes les pattes en sortie
movwf TRISB
BANKSEL PORTA ; on passe en bank 0
movlw B'10010000' ; masque interruption
movwf INTCON ; charger interrupt control
goto start ; sauter programme principal
;********************************** programme principal ***************************************
start
bsf LED ; Allumage de la LED
sleep ; mise en sommeil
bcf LED ; extinction de la LED
sleep ; mise en sommeil
goto start ; boucler
END ; directive fin de programme
Le fonctionnement est très simple. le PIC est mis en sommeil. Une fois le temps du watchgog écoulé,
le PIC se réveille et exécute l’instruction suivante. Voilà donc un programme de clignotement de votre LED ultracourt et
avec une consommation minimale.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 26 invités