3) Ecriture Eeprom
3) Ecriture Eeprom
3) Ecriture Eeprom
Introduction
Pour ce Projet, on est sensé donner une façon d’écrire dans l’EEPROM du PIC 16F84A qui, comme
nous le savons dispose de 64 octets (64 x 8 bits) de mémoire EEPROM.
Les EEPROM (Electrically Erasable Programmable Read Only Memory) sont effaçables et
programmables par l'utilisateur. Elles sont plus faciles à effacer que les EPROM car elles sont
effaçables électriquement donc sans manipulations physiques. On rappelle qu'une opération
d'écriture dans une mémoire de type EEPROM est très lente : plusieurs millisecondes (1 ms = 5 000
cycles avec un quartz de 20 MHz !).Et elles sont accessibles indirectement à travers les registres
EEADR, EEDATA, EECON1 et EECON2.
Registre EEADR
Dans ce registre, on met l'adresse de la mémoire EEPROM que l'on veut lire ou écrire
Tous bits:
Fonctionne en R/W
Le 16f84 consomme légèrement moins si les bits de ce registre sont à 0, on peut donc commencer un
programme par clrf EEADR
Registre EEDATA
Ce registre contient la valeur de la mémoire EEPROM que l'on veut lire ou écrire; on y met donc la
valeur désirée avant la procédure d'écriture, on va y lire la valeur après une procédure de lecture.
Tous bits
Fonctionne en R/W
Bit 4: EEIF
Fonctionne en R/W
EEIF =0: l'opération d'écriture n'est pas terminée, ou n'a pas commencé
Bit 3: WRERR
Write Error
Fonctionne en R/W
WRERR =1: L'écriture a été interrompue prématurément par un Reset MCLR ou par le Watchdog
Bit 2: WREN
Write Enable
Fonctionne en R/W
Write
Bit 0: RD
Read
Registre EECON2
Ce registre n'est utilisé qu'en écriture lors de l'écriture dans une mémoire EEPROM
Ce registre est virtuel, situé dans l'adresse 0x89 (banque 1) de la mémoire des données (Data RAM).
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
Exemple: (l'adresse de la case EEPROM à lire est dans le registre de travail W, le résultat sera dans W)
movwf EEADR; met cette adresse dans EEADR
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)
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
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.
L' interruption est autorisée si le bit 6 (EEIE) du registre INTCON (0Bh ou 8Bh) est à 1
movlw h'55'
movlw h'aa'
Mémoire de configuration:
(Mémoire flash)
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'.
1 1 RC (par défaut)
1 0 HS
0 1 XT
0 0 LP
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.
Watchdog actif
Oscillateur RC