[Programmation] Peut-on écrire dans une mémoire interne d'un PIC ?
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Peut-on écrire dans une mémoire interne d'un PIC ?



  1. #1
    AmigaOS

    Peut-on écrire dans une mémoire interne d'un PIC ?


    ------

    Bonjour

    J'ai un un PIC16F18325.
    Est-il possible de stoker quelques octets dans une mémoire interne du µC ?
    Je parle d'une mémoire qui ne s'efface pas au moment où on l'éteint.

    Merci

    -----

  2. #2
    antek

    Re : Peut-on écrire dans une mémoire interne d'un PIC ?

    Citation Envoyé par AmigaOS Voir le message
    J'ai un un PIC16F18325.
    Est-il possible de stoker quelques octets dans une mémoire interne du µC ?
    Je parle d'une mémoire qui ne s'efface pas au moment où on l'éteint.
    Ben heureusement, sinon il faudrait le reprogrammer après chaque mise hors-tension.
    La doc précise comment procéder, et en plus de la mémoire programme il dispose d'EEPROM.

  3. #3
    AmigaOS

    Re : Peut-on écrire dans une mémoire interne d'un PIC ?

    Merci. Fallait juste taper EEPROM dans la doc enfaite^^
    Du coup j'ai essayé de programmer ça et je me demande pourquoi on peut écrire dans les deux mémoires: flash et EEPROM. Une flash plus grande aurait suffit non ? (Là pour tester j'ai pris la EEPROM)

    J'ai suivi le flow chart P125 pour le Access
    Puis le texte P127 pour le Write

    Et dans le texte pour le Write P127 il manque la partie où on donne la donnée à écrire dans la mémoire, du coup je l'ai rajouté.
    Ça marche, mais puisque j'ai l'impression d'avoir fait un bricolage là, pouvez vous me dire si c'est correcte? :


    Code:
    unsigned char ADR=0 ;
    unsigned short int DAT1=0, DAT2=0 ;
    
    ADR = 0 ;
    DAT1 = 9 ;
    DAT2 = 0 ;
    
    // ################ Write :    
        
        NVMDATL = (unsigned char)((DAT1&0b0000000011111111)) ;
        NVMDATH = (unsigned char)((DAT1&0b1111111100000000)>>8) ;
        
    //1. Set the NVMREGS and WREN bits of the
    //NVMCON1 register.
        NVMCON1bits.NVMREGS = 1 ;
        NVMCON1bits.WREN = 1 ;
        
    //2. Write the desired address (address +7000h) into
    //the NVMADRH:NVMADRL register pair
    //(Table 11-2).
        NVMADRL = ADR ;
        NVMADRH = 0x70 ;
        
    //3. Perform the unlock sequence as described in
    //Section 11.4.2 “NVM Unlock Sequence”.
        NVMCON2 = 0x55 ;    // Unlock
        NVMCON2 = 0xAA ;
        NVMCON1bits.WR = 1 ;
    
    // ################ Access :
        
    //Select Memory:
    //Program Flash Memory, EEPROM,
    //Config. Words, User ID (NVMREGS)
        NVMCON1bits.NVMREGS = 1 ;
        
    //Select Word Address
    //(NVMADRH:NVMADRL)
        NVMADRL = ADR ;
        NVMADRH = 0x70 ;
        
    //Start Read Operation
    //Initiate Read Operation
    //(RD = 1)
        NVMCON1bits.RD = 1 ;
        
    //Data read now in
    //NVMDATH:NVMDATL
        DAT2 = (((unsigned short int)NVMDATH<<8)|NVMDATL) ;
    J'ai testé si DAT2 == DAT1 en faisant clignoter une LED...

  4. #4
    antek

    Re : Peut-on écrire dans une mémoire interne d'un PIC ?

    Citation Envoyé par AmigaOS Voir le message
    Fallait juste taper EEPROM dans la doc enfaite^^
    Du coup j'ai essayé de programmer ça et je me demande pourquoi on peut écrire dans les deux mémoires: flash et EEPROM. Une flash plus grande aurait suffit non ? (Là pour tester j'ai pris la EEPROM)
    Ben moi je regarde le sommaire !
    Elles n'ont pas du tout les mêmes caractéristiques ni les mêmes contraintes d'utilisation (voir datasheet) -> nbre cycles écriture, tension garantie de fonctionnement, vitesse d'écriture/lecture, quantité et formats des données, ce qui fait qu'on choisit l'une ou l'autre selon les nécessités.
    Si tu suis la procédure (à lire en entier !) Microchip ça marche, sans oublier la consultation des "errata".

    Les µC c'est avant tout la lecture (et pas le survol !) des datasheet.

  5. A voir en vidéo sur Futura
  6. #5
    AmigaOS

    Re : Peut-on écrire dans une mémoire interne d'un PIC ?

    Ben moi je regarde le sommaire !
    A l'IUT on m'avait appris d'utiliser la barre de recherche du pdf. ^^ Mais je fais avec le sommaire aussi en partie.

    Ok en cherchent "write cycles" j'ai réussis à trouver un tableau de caractéristiques des deux mémoires. Finalement ils ne sont pas si différentes, je trouve.

    Les µC c'est avant tout la lecture (et pas le survol !) des datasheet.
    Oui mais c'est très long et en anglais. Pour comprendre un "module" correctement et en entier il me faudrait des jours..

  7. #6
    antek

    Re : Peut-on écrire dans une mémoire interne d'un PIC ?

    Citation Envoyé par AmigaOS Voir le message
    Oui mais c'est très long et en anglais. Pour comprendre un "module" correctement et en entier il me faudrait des jours..
    Et avec les récents c'est de mieux en mieux.
    Avec les 16F188xx il m'a fallu passer une journée pour comprendre l'utilisation des oscillateurs en association avec les timer.
    Et idem les NCO, pour finir par comprendre que je ne pouvais pas les utiliser . . .

Discussions similaires

  1. Automgen, memoire et bit interne
    Par tocheBC dans le forum Technologies
    Réponses: 0
    Dernier message: 11/05/2012, 18h36
  2. Mémoire interne Nokia N95
    Par robrico dans le forum Matériel - Hardware
    Réponses: 4
    Dernier message: 03/10/2011, 14h57
  3. ecrire plusieur données a la suite dans la mémoire i2c
    Par invite91a552e4 dans le forum Électronique
    Réponses: 2
    Dernier message: 22/05/2010, 10h59
  4. Qui peut m'aider dans mon mémoire de master?
    Par invite20a42349 dans le forum Physique
    Réponses: 6
    Dernier message: 08/02/2010, 11h22
  5. pic16f84 j'ai un probleme pour ecrire dans l'eeprom interne
    Par LABTOOL48 dans le forum Électronique
    Réponses: 26
    Dernier message: 02/12/2008, 21h45
Découvrez nos comparatifs produits sur l'informatique et les technologies.