Astable de précision avec un 12F629
 


L'objectif de cette réalisation est de réaliser un astable de précision à l'aide d'un microcontrôleur de type 12F629.
Le montage est cadencé par un quartz de 4,096 MHz qui est relativement courant.
L'évolution du programme fait que l'on peut obtenir une période qui peut aller de 1ms à plusieurs jours.

 


  Le montage comporte 3 sorties.
GP0 : La première est atypique, elle génère un signal carré de 1ms de période.
GP1 : La sortie OUT est la sortie du monostable.
GP3 : La troisième sortie est la sortie complémentée.

Principe du logiciel :

Le logiciel se résume à une interruption TIMER ( le TIMER est en roue libre ).
Il est donc inutile de tester l'origine de cette interruption dans ce programme.
Le contenu du registre OPTION_REG est affecté de la valeur b'01000000'
Le ratio du TIMER0 est donc de 1:2, le contenu du TIMER évoluant entre les valeurs 0 et 255.
La fréquence du quartz est de 4,096 MHz. Une instruction dure 4 cycles.
La durée entre 2 interruptions timer est donc de :
( 4 x ratio x 256 ) / fréquence quartz = ( 4 x 2 x 256 ) / 4 096 000 = 0.5 ms
Un état logique 1 durant 0,5 ms, un état logique 0 durant 0,5 ms => une période de 1ms.

Pour que le traitement de l'information n'influe pas sur la période,
dès l'entrée en interruption, ligne 62, on sélectionne la banque du registre entrées / sorties
ligne 63, on charge un masque et ligne 64 on modifie l'état de la sortie.

Allongement de la durée de la période :

Il suffit d'introduire une variable de comptage supplémentaire : Compteur
Le contenu de cette variable est initialisé à 100 ( exemple ) puis décrémenté.
La période résultante sera donc de 1 ms x 100 = 100 ms.

Remarque : si on considère le quartet de poids faible de la variable Swap,
Si Swap = 07 en décimal = 0 1 1 1 en binaire, ces quatre chiffres son associés
respectivement aux quatre broches GP3, GP2, GP1, GP0
( GP3 n'étant pas affectée ).
 

Exemple :

Dans cet exemple, la constante Tms est affectée de la valeur 5.

Le chronogramme de la voie 1 représente l'état de la sortie GP0.
Un état logique a une durée de 500 µs et la période du signal est de 1 ms.

La voie 2 représente la sortie de l'astable.
Un état logique a une durée de 0,5 ms x Tms = 0,5 x 5 = 2,5 ms
La période du signal est de 5 ms.

La voie 3 représente l'état de la sortie complémentée de l'astable.

Le fichier astable avec une durée de période de 5 ms pour flasher le PIC à titre d'exemple.
Je ne fournis pas pas des durées à la demande. A vous de faire le travail.

En vrac :

La première version du programme permet d'obtenir un astable de période 1 ms.
La deuxième version du programme permet d'obtenir une période de 1 ms à 255 ms avec un pas de 1 ms.
Les programmes en assembleur de ces deux versions sont disponibles dans ce fichier compressé.


Rien ne vous empêche de faire évoluer le logiciel.
Ajouter des variables pour augmenter la durée de la période de l'astable. Dans ce cas veuillez vous reporter à la page Astable longue durée pour vous inspirer de la structure logicielle.
Redéfinir la fonction de la broche GP0 et ajouter une fonction Reset, modifier le logiciel pour avoir un rapport cyclique différent ...
Je ne répondrai pas à des demandes de modifications du logiciel, ni à des demandes d'explications complémentaires

Version : décembre 2011- modifiée janvier 2012