Programmer de la flash...
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Programmer de la flash...



  1. #1
    invite8f8ffe44

    Programmer de la flash...


    ------

    Bonjour à tous,

    Je dispose d'un PIC 24HJ12GP202 et je souhaite programmer dans sa flash interne.
    J'ai regardé la datasheet et sur le net, mais je n'arrive pas à trouver d'exemples de code, des illustrations ou des principes bien détaillés de la marche à suivre. Je ne sais même pas comment fonctionne la flash en elle-même (j'ai des notions des grands principes, il faut effacer par page, écrire par instructions... etc).
    Par ailleurs, je viens de regarder les exemples de code donnés par microchip sur leur site, mais ils utilisent des librairies toutes faites, ce que je ne veux pas.

    Si quelqu'un a déjà fait cela ou si quelqu'un aurait des exemples de code, le petit coup de main me serait bien utile.

    Cordialement

    Crepuscule3

    -----

  2. #2
    vincent66

    Re : Programmer de la flash...

    Hello !
    Par "programmer dans sa flash interne" tu entends sans doute stocker des valeurs dans la flash par le programme du PIC..?
    Si c'est le cas, ce n'est pas très facile, mais les datasheets de Microchip décrivent très bien la marche à suivre et les registres internes à utiliser.
    En quel langage programmes-tu ?
    Courage !

    Vincent

  3. #3
    invite8f8ffe44

    Re : Programmer de la flash...

    Merci pour ta réponse,

    Oui en effet, je souhaite programmer des valeurs dans ma flash. J'ai écris un programme bidon dans lesquel j'ai quelques variables déclarées et je souhaite leur donner une valeur initiale lorsque j'allume mon pic, qui pourra être modifiable par la suite via la liaison SPI que je me suis amusé à mettre en place ces derniers temps entre mon PIC24HJ12GP202 et mon PIC24HJ12GP201, le 201 étant configuré comme maitre et le 202 comme esclave.
    Ainsi, si j'envoie par exemple 0x44 de mon pic201 à mon pic202, l'idée pourrait être d'incrémenter de 1 les valeurs initiales de toutes mes variables enregistrées dans la flash. Ainsi, lorsque je redémarrerai mon PIC202, celui-ci démarrerait sur ces nouvelles valeurs...

    C'est ça l'idée. On m'a prévenu que ce n'était pas facile, c'est pour cela que je tente de trouver des exemples de code, afin d'evoir une idée plus précise de ce qui m'attend.

    Quant au langage de programmation que j'utilise, c'est le C avec le compilateur C30 et l'IDE MPLAB 8.00. J'utilise aussi le débugger ICD2.

    Crepuscule3

  4. #4
    vincent66

    Re : Programmer de la flash...

    Hello !
    J'ai toujours préféré programmer les PICs en assembleur, ce qui me permet un meilleur contrôle du programme par rapport à l'utilisation, je ne peux donc hélas pas te proposer de routine en C pour ce que tu cherches, et en assembleur non-plus, j'ai toujours utilisé l'EEPROM intégrée pour ce genre d'application.
    Pour écrire dans l'EEPROM aussi bien que dans la FLASH, les PICs sont dotés d'une protection permettant d'éviter des écritures intempestives, il faut utiliser des registres dédiés pour permettre l'écriture que tu souhaiteras.
    Encore une foi, potasse bien la doc de Microchip à ce sujet, un investissement en temps que tu ne regretteras pas..!

    Vincent

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

    Re : Programmer de la flash...

    Personne ne saurait comment configurer les registres du PIC pour programmer des valeurs dans la flash?
    Je ne recherche pas de code à base de librairie!

  7. #6
    invite8f8ffe44

    Re : Programmer de la flash...

    J'ai une piste, mais je n'arrive pas à trouver plus d'info sur le sujet...

    il s'agit des fonctions : __builtin_tblpage() et __builtin_tbloffset()

    Est-ce que quelqu'un sait comment elles fonctionnent dans le compilateur C30?

  8. #7
    invite8f8ffe44

    Re : Programmer de la flash...

    Personne n'aurait-il jamais écrit dans une flash d'un pic?

  9. #8
    RISC

    Re : Programmer de la flash...

    Salut,

    Une chose importante qu'il faut savoir lorsque l'on utilise de la FLASH pour émuler de l'E2PROM est que le nb de cycles de lecture/écriture est limité. C'est pourquoi Microchip a développé une note d'application d'émulation de l'E2PROM dans la FLASH qui optimise la durée de vie et le nombre de cycles.
    Cette note d'application c'est la AN1095 que tu trouves ici :http://www.microchip.com/Stellent/id...pnote=en530593

    Si tu l'étudies dans le détail (le source est fourni), tu pourras comprendre tous les PB associés à cette technique.

    Maintenant, si tu veux découvrir par toi même comment faire, je te recommande d'étudier la section 5 du Family Reference Manual des PIC24H :http://www.microchip.com/stellent/id...cName=en520471

    Pour tout ce qui concerne l'ICSP, il existe un autre document : "dsPIC33F & PIC24H Flash Programming Specification" sur la même page.

    Bonne lecture ;=)

    Concernant les fonctions _builtin que tu as trouvées, tu es sur la bonne voie. Ces fonctions te retournent la page et l'offset dans la page de ce que tu veux lire ou écrire.
    Lis la documentation des librairies du compilateur C30 dans le menu d'aide de MPLAB (voir menu TOPICS > ....)

    a+

  10. #9
    invite8f8ffe44

    Re : Programmer de la flash...

    Merci beaucoup pour tes précieux conseils.

    Je viens de faire quelques tentatives pour résoudre ce problème de flash en utilisant les fonctions citées ci-dessus et quelques autres encore tirées de l'exemple pour 24H donné par microchip dont le code assembleur a été inséré au projet (il s'agit des fonctions : flashPageErase, flashPageRead, flashPageModify, flashPageWrite). Je m'inspire beaucoup du code donné par microchip, seulement voilà, dès que je compile j'obtiens le message d'erreur suivant:

    Link Error: Could not allocate section .nbss, size = 1038 bytes, attributes = bss near
    Link Error: Could not allocate data memory

    Est-ce que quelqu'un saurait ce que ce message d'erreur signifie? J'ai fait une recherche google, et je n'ai trouvé que 5 sites dont 3 en japonais (je ne parle pas cette langue... malheureusement), 1 en allemand (je ne parle pas non plus cette langue...) et un en espagnol (je parle un peu la langue mais sans plus) qui ne répond pas à grand chose...

    Crepuscule3

  11. #10
    invite8f8ffe44

    Re : Programmer de la flash...

    Je précise, voici le code que j'ai inséré dans mon programme :

    ----------------------------------------------------------
    PSVPAG = 0;
    CORCONbits.PSV=1;

    nvmAdru=__builtin_tblpage(&MyR owData5InFlash[0]);
    nvmAdr=__builtin_tbloffset(&My RowData5InFlash[0]);
    nvmAdrPageAligned=nvmAdr & 0xFC00; // Get the Flash Page Aligned address
    nvmRow=((nvmAdr>>7) & 7); // Row in the page
    nvmSize=64;

    temp = flashPageRead(nvmAdru,nvmAdrPa geAligned, pageMirrorBuff);
    ------------------------------------------------------------

    Pour l'instant, je ne cherche qu'à lire la flash, je ne veux pas sauter les étapes.
    Pour toutes les variables utilisées avec ces fonctions mon code, leur déclarations sont tirées de l'exemple de code pour 24HJ12GP202 donné sur le site de microchip (code CE209):
    http://www.microchip.com/stellent/id...GE&nodeId=2623

Discussions similaires

  1. programmer en C++
    Par invite1bc1ddb5 dans le forum Programmation et langages, Algorithmique
    Réponses: 36
    Dernier message: 10/04/2011, 23h37
  2. programmer en maple
    Par invite5b538e71 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 22/07/2006, 17h44
  3. Programmer virus...
    Par invitec13ffb79 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 11
    Dernier message: 17/11/2004, 23h28
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...