les fuses par serge ve2hls. nous allons dans ce document essayer de démystifier la section des...

29
Les Fuses par Serge VE2HLS

Upload: amarante-devaux

Post on 03-Apr-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Les Fuses

par Serge VE2HLS

Page 2: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans l’écriture d’un programme avec un microcontrôleur de modèle PIC!

Page 3: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Voici le choix de fuses que Claude VE2APS a utilisé pour son programme

"Horloge Calendrier"

XT_OSC,WDT_OFF,MCLR_OFF,PWRT_ON,BOD_ON,LVP_OFF,CPD_OFF,PROTECT_OFF

Page 4: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Après avoir compilé le programme"Horloge Calendrier"

nous obtenonsplusieurs fichiers dont le fichier HEX

"Horloge et calendrier.HEX "

Page 5: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Voici quelques trucs pour mieux comprendre ce fameux fichier " HEX "

Premièrement le fichier HEX est de formatINTEL sa définition complète est disponible

sur WIKIPIDIA à cette adresse :

http://en.wikipedia.org/wiki/.hex

Page 6: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Il est facile d’ouvrir le fichier HEX avec Bloc-notes

Page 7: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

La section qui nous intéresse se situecomplètement dans la bas

de ce fichier "HEX "

Page 8: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Cette ligne représente nos fuses en format "INTEL«

:02400E00413F30

Page 9: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Il faut lire cette ligne en partant de la droite02400E00413F30

mais en regroupant deux nombres à la fois : 02 40 0E 00 41 3F 30

02 40 0E 00 41 3F 3030 est le checksum de la ligne

3F41 défini les fuses qui sont utilisées

Page 10: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Voici un façon simple de comprendre ce que nous indique 3F41

Ce 3F41 représente en hexadécimale :3 = 0011F = 11114 = 01001 = 0001

Page 11: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

La séquence 3F41 format Intel représente

0011 1111 0100 0001 en format Hexadécimale

Page 12: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

0011 1111 0100 0001 est le"Configuration Word"

de 14 bits qui sera envoyé au Pic pour lui indiquer le choix des fuses que le

programmeur a choisit dans son programme

Page 13: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Dans la prochaine positive vous avez toutesles possibilités de configurations pour les fuses

du Pic 16F628 choisit par Claude lors del’écriture de son programme, le tableau est

disponible dans le data sheet

Page 14: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec
Page 15: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Prenons la première fuse XT_OSC dans la séquence choisit par Claude dans la liste :

XT_OSC,WDT_OFF,MCLR_OFF,PWRT_ON,BOD_ON,LVP_OFF,CPD_OFF,PROTECT_OFF

La fuse XT_OSC se sert des Bits 4, 1 et 0dans la séquence 0110 1111 0100 0001

bit 4, 1-0: FOSC2:FOSC0: Oscillator Selection bits(4)111 = ER oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, Resistor on RA7/OSC1/CLKIN110 = ER oscillator: I/O function on RA6/OSC2/CLKOUT pin, Resistor on RA7/OSC1/CLKIN101 = INTRC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN100 = INTRC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN011 = EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN010 = HS oscillator: High speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN001 = XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN000 = LP oscillator: Low power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN

Page 16: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Si on revient à notre "Configuration Word" 0011 1111 0100 0001 nous avons trois bits de trouvés :

0011 1111 0100 0001

XT_OSC equ 3FEC0001h ; XX XXXX XXX0 XX01

Par la suite on refait la même séquence pour la fuse suivante : WDT_OFF

WDT_OFF equ 3FFB0000h ; XX XXXX XXXX X0XX

nous avons maintenant quatre bits de trouvés : 0011 1111 0100 0001

Page 17: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Il est par la suite facile de compléter la séquencepour chacune des autres fuses :

MCLR_OFF,PWRT_ON,BOD_ON,LVP_OFF,CPD_OFF,PROTECT_OFF

C’est ainsi que nous obtenons notre"Configuration Word" de 0011 1111 0100 0001

Page 18: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Voici comment le compilateurPICBASICPRO construit le

"Configuration Word"ce fichier se trouve dans votre

compilateur PicBasicProdans le dans le dossier

C:\PBP\INC et ouvrez "M16F62XA.INC"

Page 19: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

; *** DEVICE Fuses DefinitionsRC_OSC_CLKOUT equ 3FEC0013h ; XX XXXX XXX1 XX11ER_OSC_CLKOUT equ 3FEC0013h ; XX XXXX XXX1 XX11RC_OSC_NOCLKOUT equ 3FEC0012h ; XX XXXX XXX1 XX10ER_OSC_NOCLKOUT equ 3FEC0012h ; XX XXXX XXX1 XX10RC_OSC equ 3FEC0012h ; XX XXXX XXX1 XX10INTRC_OSC_CLKOUT equ FEC0011h ; XX XXXX XXX1 XX01INTOSC_OSC_CLKOUT equ 3FEC0011h ; XX XXXX XXX1 XX01INTRC_OSC_NOCLKOUT equ 3FEC0010h ; XX XXXX XXX1 XX00INTOSC_OSC_NOCLKOUT equ 3FEC0010h ; XX XXXX XXX1 XX00INTRC_OSC equ 3FEC0010h ; XX XXXX XXX1 XX00EXTCLK_OSC equ 3FEC0003h ; XX XXXX XXX0 XX11EC_OSC equ 3FEC0003h ; XX XXXX XXX0 XX11HS_OSC equ 3FEC0002h ; XX XXXX XXX0 XX10

XT_OSC equ 3FEC0001h ; XX XXXX XXX0 XX01LP_OSC equ 3FEC0000h ; XX XXXX XXX0 XX00WDT_ON equ 3FFB0004h ; XX XXXX XXXX X1XX

WDT_OFF equ 3FFB0000h ; XX XXXX XXXX X0XX

PWRT_ON equ 3FF70000h ; XX XXXX XXXX 0XXXPWRT_OFF equ 3FF70008h ; XX XXXX XXXX 1XXXMCLR_ON equ 3FDF0020h ; XX XXXX XX1X XXXX

MCLR_OFF equ 3FDF0000h ; XX XXXX XX0X XXXX

BOD_ON equ 3FBF0040h ; XX XXXX X1XX XXXXBOD_OFF equ 3FBF0000h ; XX XXXX X0XX XXXXLVP_ON equ 3F7F0080h ; XX XXXX 1XXX XXXX

LVP_OFF equ 3F7F0000h ; XX XXXX 0XXX XXXXCPD_ON equ 3EFF0000h ; XX XXX0 XXXX XXXX

CPD_OFF equ 3EFF0100h ; XX XXX1 XXXX XXXXPROTECT_ON equ 1FFF0000h ; 0X XXXX XXXX XXXX

PROTECT_OFF equ 1FFF2000h ; 1X XXXX XXXX XXXX

Page 20: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Ceci termine l’explication des fuses utiliséespour le programme "Horloge Calendrier"

avec le PIC 16F628

Pour les prochains ateliers, nous utiliseronsun nouveau PIC, le 16F690, si le programmeavait été écrit avec ce PIC, voici les quelques

changements aux fuses nécessaires aufonctionnement du programme

Page 21: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Premièrement comparons les deux "Configuration Word"

Le 16F628

Le 16F690

Page 22: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Le 16F690 possède deux nouvelles fonctions

"FCMEN" bit 11 et "IESO" bit 10

Page 23: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

FCMENFail-Safe Clock Monitor Enabled

Le "Fail-Safe Clock Monitor" permet au microcontrôleur 16F690 de continuer l'opération en cas d'un échec externe de l'oscillateur en commutantautomatiquement l'horloge du dispositif au bloc interne d'oscillateurPar défaut, le "Fail-Safe Clock Monitor" est désactivé.

bit 11 FCMEN: Fail-Safe Clock Monitor Enabled bit1 = Fail-Safe Clock Monitor is enabled0 = Fail-Safe Clock Monitor is disabled

Page 24: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

IESOInternal External Switchover

Two speed start-up /Internal External switchoverLe mode de démarrage à deux vitesses réduit au minimum la latence entre ledémarrage de l’oscillateur et l'exécution externe du code. Le codecommence à s'exécuter à partir des oscillateurs internes tandis quel'oscillateur externe se stabilise. Quand l'oscillateur externe est stable, ledispositif commute automatiquement à la source extérieure réduisant lespériphériques du programme (program overhead).

bit 10 IESO: Internal External Switchover bit1 = Internal External Switchover mode is enabled0 = Internal External Switchover mode is disabled

Page 25: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec
Page 26: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Claude n’utilise pas ces deux nouvelles fonctions

nous allons donc désactiver ces deux fuses!

Page 27: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Voici la nouvelle ligne des fuses pour le 16F690 :

XT_OSC,WDT_OFF,MCLR_OFF,PWRT_ON,BOD_ON,CPD_OFF,PROTECT_OFF,IESO_OFF, FCMEN_OFF

Note : Le 16F690 ne possède pas la fonction LVP, Low Voltage Programming

Page 28: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

Après compilation avec le nouveau 16F690 du programme "Horloge Calendrier"

nous obtenons dans le fichier HEX les fuses 33C1en hexadécimale 0011 0011 1100 0001

Le "Configuration Word" du 16F690 utilise seulement 12 bits pour programmer le registre

33C1 ou 0011 0011 1100 0001

Page 29: Les Fuses par Serge VE2HLS. Nous allons dans ce document essayer de démystifier la section des Fuses que tous utilisent dans lécriture dun programme avec

J’espère que ce document vous a aidé à mieuxcomprendre la section des Fuses

dans un programme!

Serge VE2HLS Février 2009