Les mémoires

 

 

Mémoire programme:

1Ko (mémoire flash)

Elle contient la suite des Instructions du programme

Chaque instruction occupe 14 bits

Elle utilise un bus dédié de 14 bits

Cette mémoire est non volatile

Elle ne peut être écrite et effacée que 1000 fois

Elle s'étend de 0000h à 03FFh

0000h contient le RESET VECTOR

0004h contient le INTERRUPT VECTOR

Mémoire programme (mémoire flash)
Adresse en décimal Adresse en hexadécimal Contenu sur14 bits
0 0000h Reset Vector
1 0001h Instruction programme
2 0002h Instruction programme
3 0003h Instruction programme
4 0004h Interrupt Vector
5 0005h Instruction programme
Instruction programme
Instruction programme
Instruction programme
1023 03FFh Instruction programme

Cette mémoire programme peut être protégée contre la lecture par la directive __config

Les registres:

SFR (Special Function Register)

Il y a 15 registres directement adressables

Leur contenance est de 8 bits

Il sont en mémoire volatile (RAM statique)

 

Registres en RAM statique: SFR (SpecialFunction register)
Adresse en décimal Adresse en hexadécimal

(Page 0)

Nom du Registre Adresse en décimal

(Page 1)

Adresse en hexadécimal Nom du Registre
0 00h INDF 128 80h INDF
1 01h TMR0 129 81h OPTION_REG
2 02h PCL 130 82h PCL
3 03h STATUS 131 83h STATUS
4 04h FSR 132 84h FSR
5 05h PORT A 133 85h TRISA
6 06h PORT B 134 86h TRISB
7 07h   135 87h  
8 08h EEDATA 136 88h EECON1
9 09h EEADR 137 89h EECON2
10 0Ah PCLATH 138 8Ah PCLATH
11 0Bh INTCON 139 8Bh INTCON

Les registres sont adressés indirectement en utilisant le bit 5 (RP0) du registre STATUS:

RP0=0 correspond aux adresses de00hà 0Bh, on parle de banque ou de page 0 (Bank 0) (obtenu par l'instruction bcf STATUS,RP0)

RP0=1 correspond aux adresses de80h à 8Bh (Banque 1) (obtenu par l'instruction bsf STATUS,RP0)

Le bit 6 RP1 doit rester à 0, il donne accès à des banques 2 et 3 non disponibles sur le 16F84

 

Mémoire de données RAM:

RAM GPR (General Purpose register)

Il y a 68 cases mémoire directement adressables

Leur contenance est de 8 bits

Elles sont en mémoire volatile (RAM statique)

 

Mémoire de données en RAM Statique: GPR (General Purpose register)
Adresse en décimal Adresse en hexadécimal Contenu sur 8 bits
12 0Ch Donnée
13 0Dh Donnée
14 0Eh Donnée
Donnée
Donnée
Donnée
Donnée
79 4Fh Donnée

Pour l'accès à ces mémoires, l'état du bit 5 (RP0) du registre STATUS est indifférent

 

Mémoire de données EEPROM:

La zone EEPROM commence à 2100h, mais l'adressage ne peut être qu'indirect; l'adresse 2100h n'est utilisée que lors de l'écriture à la programmation du PIC

Il y a 64 cases mémoire de 8 bits

La mémoire EEPROM est on volatile, mais ne peut être écrite et effacée que 10 millions de fois, en outre l'accès est plus lent qu'avec la RAM

 

Mémoire de données en EEPROM
Adresse en décimal Adresse en hexadécimal Contenu sur 8 bits
0 00h Donnée
1 01h Donnée
2 02h Donnée
3 03h Donnée
Donnée
Donnée
Donnée
63 3Fh Donnée

Ces mémoires peuvent être lues et écrites

La lecture peut se faire même si la mémoire programme a été mise en mode protégé

La mémoire EEPROM ne peut être adressée qu'indirectement:

Le contenu 8 bits de la case mémoire est dans le registre EEDATA (08h)

L'adresse de la case mémoire est dans le registre EEADR (09h)

Cette adresse ne peut aller que de 00h à 3Fh (64 cases mémoire)

Le temps d'écriture dépend de la tension d'alimentation et de la température

 

Lecture de la mémoire EEPROM:

L'opération dans l'ordre est la suivante:

L'adresse est mise dans le registre EEADR (09h)

Le bit 0 RD du registre EECON1 (88h) est mis à 1 (par bsf EECON1,RD), il passera seul à 0 quand la lecture sera terminée

La lecture du contenu se fait par lecture du registre EEDATA (08h)

Exemple: (l'adresse de la case EEPROM à lire est dans le registre de travail W, le résultat sera dans W)

Ecriture de la mémoire EEPROM:

L'opération dans l'ordre est la suivante:

L'adresse est mise dans le registre EEADR (09h)

Le contenu à transférer est mis dans le registre EEDATA (08h)

Toutes les interruptions sont inhibées par mise à 0 du bit 7 GIE du registre INTCON (0Bh ou 8Bh)

L'écriture est autorisée par mise à 1 du bit 2 WREN du registre EECON1 (88h)

Mettre la valeur 55h dans le registre EECON2

Mettre la valeur AAh dans le registre EECON2

Lancer l'écriture dans l'EEPROM par mise à 1 du bit 1 WR du registre EECON1 (88h); ce bit passera seul à 0 quand l'écriture sera terminée, ce qui peut prendre une dizaine de millisecondes.

Remettre l'autorisation des interruptions par mise à 1 du bit 7 GIE du registre INTCON

Interdire l'écriture par mise à 0 du bit 2 WREN du registre EECON1 (88h)

 

Le Power up Timer de 72 ms interdit une écriture accidentelle à l'allumage

Lorsque l'écriture a eu lieu, le bit 4 (EEIF) du registre EECON1 (88h) passe à 1

Il peut être bon de vérifier que l'opération d'écriture s'est bien passée, le bit 3 WRERR du registre EECON1 (88h) est à 1 quand l'opération a été interrompue par un Reset MCLR ou un Watchdog; il faut alors recommencer, mais les valeurs dans EEDATA et EEADR sont toujours valables.

Une interruption peut être générée à la fin de cette écriture:

L' interruption est autorisée si le bit 6 (EEIE) du registre INTCON (0Bh ou 8Bh) est à 1

Exemple: (La valeur à écrire et l'adresse sont dans EEDATA etEEADR)

Ecriture à la programmation:

L'EEPROM peut aussi être écrite au moment de la programmation du PIC grâce à la directive DE après avoir précisé comme origine h'2100'

 

Mémoire de configuration:

(mémoire flash)

Elle s'étend de h'2000' à h'2007' et contient des bits de configuration

Chaque mémoire occupe 14 bits mais tous ne sont pas accessibles

Cette mémoire est non volatile

Elle ne peut être écrite et effacée que 1000 fois

Elle n'est accessible qu'à la programmation du PIC

Cases Mémoire 2000h à 2003h:

Il est possible d'y inscrire des informations d'identification sur les 4 bits de poids faible grâce à la directive DE après avoir précisé comme origine h'2000'.

Case Mémoire 2007h:

Les bits 0 et 1 (FOSC0) et (FOSC1) déterminent le Type d'oscillateur utilisé

Mémoire programme 2007h
Bit 1 (FOSC1) Bit 0 (FOSC0) Type d'oscillateur
1 1 RC (par défaut)
1 0 HS
0 1 XT
0 0 LP

 

Le bit 2 (WDTE) autorise ou non le fonctionnement du Watchdog Timer

Mémoire de configuration 2007h
Bit 2 (WDTE) WatchDog Timer Enable  
1 par défaut Watch Dog actif
0 Watch Dog désactivé

 

Le bit 3 (PWRTE) autorise ou non le fonctionnement du Power UP Timer produisant un délai de 72 ms à l'allumage qui prolonge le Power On Reset (POR)

Mémoire de configuration 2007h
Bit 3 (PWRTE) Power-Up Timer Enable  
1 par défaut Power-Up Timer désactivé
0 Power-Up Timer actif

Ce délai dépend de la température et de la tension d'alimentation.

 

Le bits 4 (CP) Code Protection permet d'interdire la lecture du code programme dans le microcontroleur, son effacement est toujours autorisé, et les EEPROMS sont toujours lisibles.

Mémoire de configuration 2007h
Bits 4 (CP) Program memory Code Protection  
1 par défaut La lecture n'est pas protégée
0 La lecture est interdite

Les 5 bits sont à 1 par défaut, soit

Code Protect Power Up Timer Watchdog Oscillateur
bit 4 bit 3 bit 2 bit 1, bit 0
0->Oui 0->Oui 0->Non

00->LP, 01->XT

1->Non 1->Non 1->Oui 10->HS, 11->RC

 

On écrit dans la mémoire de configuration avec la directive __config

 

Retour au sommaire

© 1999-2009 A. Ducros F5AD