Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Cherche programme ASM d'écriture / lecture dans mémoire flash d'un 16F877



  1. #1
    Toufinet

    Cherche programme ASM d'écriture / lecture dans mémoire flash d'un 16F877


    ------

    Bonjour à tous,

    Tout est dans le titre

    Je tente d'insérer puis de lire des données dans la mémoire programme d'un 16F877.

    J'ai TOUT essayé .. en passant par du bigo-copied, par di microchip-copied .. niet, rien n'y fait, il y a un truc qui cloche quelquepart ! Mais où ???

    Le programme en lui même monte jusqu'à l'adresse 0x028F, j'ai donc essayé d'écrire/lire un octet à l'adresse 0x0300 ( histoire de pas avoir de changement de page .. on sait jamais ), mais rien de rien.

    Le PIC est cadencé à 14.745 MHz, donc je pense pas être au dessus des temps de lecture/écriture.

    Bref .. si quelqu'un pourrait me filer la partie de son code qui réalise la lecture/écriture, ce serait sympa, que je puisse comparer ( en assembleur seulement ).

    Merci.

    -----

  2. Publicité
  3. #2
    Toufinet

    Re : Cherche programme ASM d'écriture / lecture dans mémoire flash d'un 16F877

    Bon je fourni un bou de code au cas où ...


    ReadMem macro
    BSF STATUS, RP1 ;
    BCF STATUS, RP0 ;Bank 2
    MOVF LSBAddr, W ;Write the
    MOVWF EEADR ;address bytes
    MOVF MSBAddr,W ;for the desired
    MOVWF EEADRH ;address to read
    BSF STATUS, RP0 ;Bank 3
    BSF EECON1, EEPGD ;Point to Program memory
    BSF EECON1, RD ;Start read operation
    NOP ;Required two NOPs
    NOP ;
    BCF STATUS, RP0 ;Bank 2
    MOVF EEDATA, W ;LSBData = EEDATA
    MOVWF LSBData ;
    MOVF EEDATH,W ;MSBData = EEDATH
    MOVWF MSBData ;
    BCF STATUS, RP1 ;
    BCF STATUS, RP0 ;Bank 0
    ENDM

    [...]

    MOVLW 0x18
    MOVWF MSBAddr
    MOVLW 0x7B
    MOVWF LSBAddr
    MOVLW 0x0A
    MOVWF pass
    MOVWF pass+1

    ReadMem

    MOVF MSBData,0
    SUBWF pass,0
    BTFSS STATUS, Z
    GOTO wrong_pass
    MOVF LSBData,0
    SUBWF pass+1,0
    BTFSS STATUS, Z
    GOTO wrong_pass
    GOTO ok

    [...]

    ORG 0x187B
    DA 0x0A0A

    end;
    Voilà je pense le plus important.
    Problème : le PIC va toujours sur le label "wrong_pass", alors qu'il devrait clairement aller sur "ok"

    Voilà, qu'en pensez-vous ?
    Même si vous pensez qu'il n'y a pas d'erreur dans le code, faites le moi savoir svp.

    Merci.


    PS : ma config :
    __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC

  4. #3
    freepicbasic

    Re : Cherche programme ASM d'écriture / lecture dans mémoire flash d'un 16F877

    dans la macro
    LSBData ;
    MSBData ;
    sont en bank2

    dans le debut du prog ce n'est pas spécifié.
    et en fin on lit en bank0.

    ça fonctionne pas !
    mettre les banks des datas correctement...
    A+, pat

  5. #4
    Toufinet

    Re : Cherche programme ASM d'écriture / lecture dans mémoire flash d'un 16F877

    LSBData et MSBData sont des variables définies en début de programme dans un CBLOCK.

    C'est vrai que j'ai pensé à ça, mais je me suis dit que vu que c'était des variables, elles devaient être accessibles partout ... non ?

  6. #5
    freepicbasic

    Re : Cherche programme ASM d'écriture / lecture dans mémoire flash d'un 16F877

    non !
    sauf en zone haute de mémoire RAM qui est commune.
    70h à 7Fh
    A+, pat

  7. A voir en vidéo sur Futura
  8. #6
    Toufinet

    Re : Cherche programme ASM d'écriture / lecture dans mémoire flash d'un 16F877

    Super !

    Merci beaucoup, je l'ignorais totalement !

    Bisous pour la peine

  9. Publicité
  10. #7
    freepicbasic

    Re : Cherche programme ASM d'écriture / lecture dans mémoire flash d'un 16F877

    attention a ne pas utiliser de la Ram qui serait déja utilisée pour la sauvegarde des registres sous interruptions.
    Généralement cette zone est utilisée , un peu comme une pile data faute de mieux.
    A+, pat

Discussions similaires

  1. Convertir un programme en C en ASM
    Par zanzeoo dans le forum Électronique
    Réponses: 6
    Dernier message: 17/04/2012, 16h43
  2. Programme en C pour PIC 16F877
    Par riquet dans le forum Électronique
    Réponses: 7
    Dernier message: 11/04/2012, 12h25
  3. ASM : Pb affichage apres CAN - 16F877
    Par tbs dans le forum Électronique
    Réponses: 2
    Dernier message: 16/06/2007, 14h02
  4. PIC 16f877, source ASM !
    Par NYghost dans le forum Électronique
    Réponses: 5
    Dernier message: 02/04/2003, 07h05