Electronique
  lelectronique.com : Le Portail dédié à l'électronique : Montage électronique, schéma dépannage Forum électronique  
Electronique
Des questions sans réponses sur l'électronique, posez les sur ce forum d'électronique

Affichage des résultats 1 à 5 sur 5
  1. #1
    Novice Novice
    Date d'inscription
    avril 2004
    Messages
    3
    Pouvoir de réputation
    0

    Par défaut EEprom du pic 16F628 qui sait?

    Bonjour,

    Qui a déjà fait marcher lalecture/ecriture dans l'eeprom du pic 16f628 ?
    J'ai quelques problèmes avec les datasheets fausses et les erratums.
    Merci d'avance, JM

  2. # ADS
    Circuit publicitaire
    Date d'inscription
    Toujours
    Messages
    Plusieurs
     

  3. #2
    Job à plein temps Job à plein temps
    Date d'inscription
    mars 2004
    Messages
    413
    Pouvoir de réputation
    11

    Par défaut

    Salut,
    Je suppose que tu programmes en assembleur.
    Dans ce cas, je me souviens qu'il y a des routines tres précises à respecter en positionnant certains btits ( voir data et site de microchip), mais comme je programme en C maintenant je me souviens plus précisément.
    De plus il y a un timing à respecter.

    Voici la marche a suivre pour lire un bit: écriture de l'adresse dans EEADR , mise à 1 du bit RD du registre EECON1, lecture des données dans le registre EEDATA

    Pour l'écriture: écriture de l'adresse dans EEADR, écriture de la donnée dans EEDATA, exécution de morceau de code:

    Code:
    MOVLW 55
    MOVWF EECON2
    MOVLW AA
    MOVWF EECON2
    BSF EECON1,WR
    Lorsque l'écriture est terminée , le bit EEIF de EECON1 passe à 1

    @+
    "Software is like Sex, it's better when it's free"
    Linus Torvald

    www.robot-serveur.net création d'un robot domestique autonome.... enfin pas tout de suite non plus...

  4. #3
    Novice Novice
    Date d'inscription
    avril 2004
    Messages
    3
    Pouvoir de réputation
    0

    Par défaut

    Salut,

    Je dirais meme plus !

    ; lire eeprom
    REEPROM macro adeeprom ; lire eeprom(adresse dans adeeprom & résultat en w)
    movlw adeeprom ; charger adresse eeprom
    clrwdt ; reset watchdog
    BANK1 ; passer en banque1
    movwf EEADR ; pointer sur adresse eeprom
    bsf EECON1,RD ; ordre de lecture
    movf EEDATA,w ; charger valeur lue
    BANK0 ; passer en banque0
    endm

    ;ecriture en EEPROM
    WEEPROM macro addwrite ; la donnée se trouve dans W
    LOCAL loop
    BANK1 ; passer en banque1
    movwf EEDATA ; placer data dans registre
    movf addwrite,w ; charger adresse d'écriture
    movwf EEADR ; placer dans registre
    bsf EECON1 , WREN ; autoriser accès écriture
    bcf INTCON , GIE ; interdire interruptions
    movlw 0x55 ; charger 0x55
    movwf EECON2 ; envoyer commande
    movlw 0xAA ; charger 0xAA
    movwf EECON2 ; envoyer commande
    bsf EECON1 , WR ; lancer cycle d'écriture
    ;bsf INTCON , GIE ; réautoriser interruptions
    loop
    btfsc EECON1 , WR ; tester si écriture terminée
    goto loop ; non, attendre
    bcf EECON1 , WREN ; verrouiller prochaine écriture
    BANK0 ; passer en banque0
    endm


    Malgré celà, ça ne veut pas écrire. Mais ça lit c déjà bien.
    Si tu as une idée, elle sera la bienvenue. Merci, JM

  5. #4
    Bricoleur Bricoleur
    Date d'inscription
    avril 2004
    Messages
    83
    Pouvoir de réputation
    11

    Par défaut eeprom 16f628

    Salut

    je viens de faire un copier coller :


    REEPROM macro adeeprom ; lire eeprom (adresse dans adeeprom & résultat en w)
    movlw adeeprom ; charger adresse eeprom (passage de la valeur en litteral)
    clrwdt ; reset watchdog
    BANK1 ; passer en banque1
    movwf EEADR ; pointer sur adresse eeprom
    bsf EECON1,RD ; ordre de lecture
    movf EEDATA,w ; charger valeur lue
    BANK0 ; passer en banque0
    endm


    WEEPROM macro addwrite ; la donnée se trouve dans W
    LOCAL loop
    BANK1 ; passer en banque1
    movwf EEDATA ; placer data dans registre
    movlw addwrite ; charger adresse d'écriture (passage de la valeur en litteral)
    movwf EEADR ; placer dans registre
    bsf EECON1 , WREN ; autoriser accès écriture
    bcf INTCON , GIE ; interdire interruptions
    movlw 0x55 ; charger 0x55
    movwf EECON2 ; envoyer commande
    movlw 0xAA ; charger 0xAA
    movwf EECON2 ; envoyer commande
    bsf EECON1 , WR ; lancer cycle d'écriture
    bsf INTCON , GIE ; réautoriser interruptions
    loop
    btfsc EECON1 , WR ; tester si écriture terminée
    goto loop ; non, attendre
    bcf EECON1 , WREN ; verrouiller prochaine écriture
    BANK0 ; passer en banque0
    endm

    exemple de lecture :


    START

    ;Lire la valeur de la vitesse dans l'eeprom

    VALVIT
    REEPROM D'0' ; lire emplacement eeprom 0x00
    movwf VIT
    REEPROM D'1'
    movwf MODE
    mise en memoire :

    MEM1
    movlw D'1' ; place en memoire 1 le mode 1
    movwf MODE
    WEEPROM D'1'

    ps avec le 16F628 j' ai eu quelques soucis pour programmer des valeurs lors de la programmation du pic , donc pour eviter cela je rentre la premiere fois des valeurs en eprom et ensuite si le programme doit les modifier elle restent en mémoire ...


    @+++ dan

  6. #5
    Bricoleur Bricoleur
    Date d'inscription
    avril 2004
    Messages
    83
    Pouvoir de réputation
    11

    Par défaut 16f628

    re

    j' ai oublié pour la zone mémoire:

    org h'2100'
    DE 1,1,1,1,1,


    END ; directive fin de programme

    @+++ dan

Informations de la discussion

Utilisateur(s) sur cette discussion

Il y a actuellement 1 utilisateur(s) naviguant sur cette discussion. (0 utilisateur(s) et 1 invité(s))

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  



Contactez-nous | Données personnelles | Bannières | Flux RSS | Publicité | Plan du site
©2001-2014 lelectronique.com - Tous droits de reproduction et de représentation réservés