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 ---
Commentez, partagez et proposez des Tutos en langage ASM !
3)Troisième partie : clignotement d'une LED par Watchdog
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#1 Message par Temps-x » ven. 8 sept. 2017 12:50

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é :
Watchdog.zip


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.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Retourner vers « Langage ASM »

Qui est en ligne

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