IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

mettre en mémoire flash pic32MX795


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Août 2008
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2008
    Messages : 377
    Par défaut mettre en mémoire flash pic32MX795
    Bon je patauge dans la semoule comme on dit, je n'arrive pas à enregistrer des datas dans la flash, j'ai repris la méthode du document

    http://ww1.microchip.com/downloads/e...Doc/61121F.pdf

    dans un exemple avec les fonctions

    unsigned int NVMUnlock (unsigned int nvmop)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    unsigned int NVMUnlock (unsigned int nvmop)
    {
    unsigned int status;
    unsigned int intStatus;
     
    // Suspend or Disable all Interrupts
    intStatus = INTDisableInterrupts();
    // Enable Flash Write/Erase Operations and Select
    // Flash operation to perform
    NVMCON = nvmop;
    // Write Keys
    NVMKEY = 0xAA996655;
    NVMKEY = 0x556699AA;
    // Start the operation using the Set Register
    NVMCONSET = 0x8000;
    // Wait for operation to complete
    while (NVMCON & 0x8000);
    // Restore Interrupts
    INTRestoreInterrupts(intStatus);
    // Disable NVM write enable
    NVMCONCLR = 0x0004000;
    // Return WRERR and LVDERR Error Status Bits
    return (NVMCON & 0x3000);
    }
    unsigned int NVMWriteWord (void* address, unsigned int data)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    unsigned int NVMWriteWord (void* address, unsigned int data)
    {
    unsigned int res;
     
    // Load data into NVMDATA register
    NVMDATA = data;
    // Load address to program into NVMADDR register
    NVMADDR = (unsigned int) address;
    // Unlock and Write Word
    res = NVMUnlock (0x4001);
    // Return Result
    return res;
    }
    Seulement ils ne donne rien au sujet de la lecture des données, j'ai donc repris celle en écriture en la modifiant évidement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void NVMReadWord (void* address, unsigned int data)
    {
    unsigned int res;
     
    // Load address to program into NVMADDR register
    NVMADDR = (unsigned int) address;
    data=NVMDATA;
     
    // Unlock and Write Word
    res = NVMUnlock (0x0000);
    // Return Result
    return res;
    }
    Dans mon main, je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int DEEdata=4566,DEEdata1;
     
     
    NVMWriteWord (&DEEdata,0);
    NVMReadWord (&DEEdata1,0);
    Je sais pas si c'est correct, notamment pour la lecture, seul fonction que j'ai fait

  2. #2
    Membre très actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Août 2008
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2008
    Messages : 377
    Par défaut
    Bon par contre je viens de me rendre compte d'avoir inversé les arguments des fonction, ce que j'ai corrigé tout de suite mais le problème ne venait pas de là malheureusement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DEEdata2=NVMWriteWord (0,DEEdata);
    DEEdata3=NVMReadWord (0,DEEdata);

  3. #3
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Le problème c'est que ce n'est pas un probleme lié au langage C , mais plus avec le pic32MX795 , je pense que sur le forum embarqué y'aurait plus de chance de réponse, sininil y a surement une documentation officiel pour la lecture/écriture dans le flash d'un pic.

  4. #4
    Membre très actif
    Homme Profil pro
    Electronicien
    Inscrit en
    Août 2008
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2008
    Messages : 377
    Par défaut
    J'ai regarder chez Microchip et d'autres fonction existe, seulement pour d'autres pic avec des registre légèrement différents.

    C'est pour ça que je pense ne pas être loin de la solution, seulement une susceptibilité m'échappe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [BIOS] que veut dire mémoire flash-ROM ?
    Par beegees dans le forum Composants
    Réponses: 4
    Dernier message: 12/03/2007, 11h36
  2. Réponses: 3
    Dernier message: 12/12/2006, 14h40
  3. [Lecteur MP3] flasher une mémoire flash (USB)
    Par JauB dans le forum Périphériques
    Réponses: 5
    Dernier message: 01/12/2006, 12h11
  4. mettre une annimation flash sur une page web
    Par megaramos dans le forum Flash
    Réponses: 3
    Dernier message: 16/08/2006, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo