Problème avec ICD2+PIC, impossible à programmer
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 33

Problème avec ICD2+PIC, impossible à programmer



  1. #1
    invite953f8104

    Problème avec ICD2+PIC, impossible à programmer


    ------

    Bonjour à tous,

    Voilà je fais appel à vous car cela fais 2jours que je n'arrive pas a programmé mon PIC via l'ICD2 de Microchip.

    J'ai toujours les mêmes erreurs qui viennent c'est à dire :

    Running ICD Self Test
    ...Passed
    MPLAB ICD 2 ready for next operation
    Programming Target...
    ...Validating configuration fields
    ...Erasing Part
    ...Programming Program Memory (0x0 - 0x27)
    ...Loading DebugExecutive
    ...Programming DebugExecutive
    ...Programming Debug Vector
    Verifying...
    ...Program Memory
    ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 0x1683, Val Read = 0x3FFF)
    ICD0275: Programming failed.

    MPLAB ICD 2 ready for next operation

    J'ai fais bien attention à ne pas m'être trompé dans les broches PGC et PGD mais rien à faire, même si je les inverses le résultat est le même(bizard non??)
    J'arrive effacé ma cible, lire la EEPROM(même si il y a rien ).

    J'ai chaque fois cet avertissement :ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make sure that the target device is connected and properly powered. Select "OK" to continue, or "CANCEL" to abort the operation.

    Je comprends pas pourquoi ma cible ne peux pas être validée?Donc je fais systématiquement "OK"...

    J'ai essayé avec plusieurs type de PIC et chaque fois sans succès.

    Merci d'avance pour votre aide

    Dark

    -----

  2. #2
    invitee0bbe70d

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonjour,

    As-tu bien sélectionné ton PIC dans MPLAB : Configure > Select Device ?
    Peux-tu poster ton schéma d'interface ?
    (Regarde ici le schéma recommandé par Microchip)
    As-tu une alimentation sur ton prototype ? Combien ?
    Quel PIC utilises-tu ?
    Quelle version de MPLAB ?
    Que vois-tu dans l'onglet POWER de MPLAB ?
    Debugger > Select Tool > MPLAB ICD2
    Debugger > Settings > onglet [Status] et onglet [Power]

    Ci-joint un lien pour résoudre les problèmes sur l'ICD2 : http://www.microchip.com/ICD2help

  3. #3
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Citation Envoyé par microchip Voir le message
    Bonjour,

    As-tu bien sélectionné ton PIC dans MPLAB : Configure > Select Device ?
    Peux-tu poster ton schéma d'interface ?
    (Regarde ici le schéma recommandé par Microchip)
    As-tu une alimentation sur ton prototype ? Combien ?
    Quel PIC utilises-tu ?
    Quelle version de MPLAB ?
    Que vois-tu dans l'onglet POWER de MPLAB ?
    Debugger > Select Tool > MPLAB ICD2
    Debugger > Settings > onglet [Status] et onglet [Power]

    Ci-joint un lien pour résoudre les problèmes sur l'ICD2 : http://www.microchip.com/ICD2help
    -Bon PIC sélectionné
    -Même schéma que Microchip(avec pull-up et reset)
    -Alimentation 0-5V
    -16F877A, mais j'ai aussi essayé sur un 16F84A mais marche pas(devrais-je essayé avec un18F...?)
    -Version 8.14
    -Select Tool : MPLAB ICD2 et programmer none
    -Onglet[Statut]:Connected, Self test : PASS
    -Onglet[Power]: Vdd 5V, Vpp 10.7V et MPLAB ICD2 Vpp 10.87V

    Voilà tout me semble correct j'ai la même chose au boulot exepté la platine de test.

    Merci infiniment de ton aide

    A+

    PS: Le programme que je veux debuggé fonctionne car avec un autre programmeur cela fonctionne...

  4. #4
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    J'arrive, avec l'ICD2, a effacé un programme déjà écrit dans le PIC avec un autre programmeur...

    Sinon si je lance le programme après cette erreur ICD0161:
    Verify failed (MemType = Program, Address = 0x0, Expected Val = 0x1683, Val Read = 0x3FFF)
    ICD0275: Programming failed.

    MPLAB ICD 2 ready for next operation

    Il me dit ceci:


    MPLAB ICD 2 ready for next operation
    ICDWarn0015: Program memory has changed since last program operation? Continue with Debug operation?
    Running Target
    ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information.
    ICD0069: Debug: Unable to run target

    MPLAB ICD 2 ready for next operation

    Je sais pas si cela peux aider mais on sait jamais!

    A+ Merci

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

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonsoir,

    Ton ICD2 est-il un original ? (il y a beaucoup de PB avec les clones)
    Quelle taille fait ton cable (proto <--> ICD2 ) max 30cm ?
    AS-tu bien cablé TOUTES les broches (PGC, PGD, MCLR, Vdd, Vss) ?

    La tension Vpp que tu montres n'est je pense pas normale...Elle devrait être proche de 13V (de mémoire).

    Peux-tu faire une copie de l'onglet STATUS en mode Debugger ou copier les valeurs que tu lis ?

    Ton prototype a sa propre alimentation (non alimenté par l'ICD2) ?
    Si oui, as-tu décoché la case "Power target circuit from MPLAB ICD2" dans l'onglet STATUS du menu Debugger > Settings

    Tu confirmes bien que tu n'as aucune résistance série sur les lignes PGC, PGD et MCLR entre l'ICD2 et ton proto ?

  7. #6
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Citation Envoyé par microchip Voir le message
    Bonsoir,

    Ton ICD2 est-il un original ? (il y a beaucoup de PB avec les clones)
    Quelle taille fait ton cable (proto <--> ICD2 ) max 30cm ?
    AS-tu bien cablé TOUTES les broches (PGC, PGD, MCLR, Vdd, Vss) ?

    La tension Vpp que tu montres n'est je pense pas normale...Elle devrait être proche de 13V (de mémoire).

    Peux-tu faire une copie de l'onglet STATUS en mode Debugger ou copier les valeurs que tu lis ?

    Ton prototype a sa propre alimentation (non alimenté par l'ICD2) ?
    Si oui, as-tu décoché la case "Power target circuit from MPLAB ICD2" dans l'onglet STATUS du menu Debugger > Settings

    Tu confirmes bien que tu n'as aucune résistance série sur les lignes PGC, PGD et MCLR entre l'ICD2 et ton proto ?
    -Oui il s'agit d'un ICD2 original.
    -Longueur du cable, env. 12-13cm.
    -Tout est câblé(vérifier moultes fois...)
    En pièces jointes les print-screen de "status" et de "power"
    -Alimentation indépendante, case décochée dans "power"

    Pourquoi je peux quand même effacé le contenu de mon PIC?cela veux bien dire que mes branchements/configurations sont correctes non?

    Merci beaucoup beaucoup
    Bonne nuit A+

    dark
    Images attachées Images attachées

  8. #7
    invite03481543

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonsoir,

    peux-tu vérifier physiquement sur ta carte avec un voltmètre les tensions (+5V et Vpp), le 10,8V pour Vpp n'est pas normal.

    Quels est ta config des fusibles de programmation?

  9. #8
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonjour,

    Alors physiquement j'ai pour le 5V: 4.99V et pour Vpp j'ai 9.55V alors que dans MPLAB il m'indique 10.65V.

    Le plus étrange c'est que une fois que j'essaie de le programmer et une fois les erreurs de vérifications apparues, je débranche le câble RJ-11 de l'ICD2 et mon programme ce lance!!! Je rebranche le câble et il ne marche plus...

    Je me suis mis en mode programmation dans MPLAB et j'ai effacé la cible, pas de soucis. Mais une fois de retour en mode debug j'écris le programme, je débranche le câble et rien du tout....?!?donc mon écriture dans le PIC est aléatoire à voir....

    Voici mes fusible pour le 16F877A :

    __CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC


    Sinon j'ai comme solution d'acheter ce petit module http://microchipdirect.com/productse...words=AC162051 .
    Mais ce que je voudrais c'est quand même comprendre pourquoi là cela ne fonctionne pas mais au boulot oui....de plus ce module n'est compatible qu'avec les 40pattes...

    Merci d'avance
    dark

  10. #9
    invite953f8104

    J'ai retouché le câblage et maintenant j'obtiens un Vpp à 12.86V et 13.02V dans "Power". Mais quand je veux mesuré sur la plaque j'obtiens 0.09V!!!!!!! J'ai pourtant bien mis la pull-up au Vcc, j'ai pas de bouton "reset" est que le problème peux venir de la? L'alim est de 5V et j'ai bien alimenté toutes les pattes tu PIC.

    Selftest PASS et mais quand je programme il y a "que" cela:

    ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information.


    Voili j'espère que cela aidera plus, en tout cas moi j'ai l'impression de reculé...

    A+

  11. #10
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Purée, _DEBUG_ON voilà j'avais mis _DEBUG_OFF!

    Mais cela ne change rien, le problème est toujours là...

    A+

  12. #11
    invite03481543

    Re : Problème avec ICD2+PIC, impossible à programmer

    Salut,

    essaye avec _PWRTE_OFF, on dirait bien que la cible est bloquée au niveau du MCLR par l'ICD2, d'où le fait que tu reset après avoir déconnecté l'ICD2.

  13. #12
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Ok je viens d'essayer avec _PWRTE_OFF, mais cela ne change rien.

    J'avais pas essayé mais quand je peux lancé le programme et il tourne sur ma cible....par contre c'est ch*** à utilisé car le bearkpoint merdouillent, impossible de fait un step over ou step Out. Mais je vois que mes registres changent!

    Pfff je comprends pas....je vais essayé avec un 18F juste pour voir...

    A+ merci

  14. #13
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bon je viens d'essayer sur un18F, et j'ai les mêmes problèmes....c'est vraiment rageant car j'utilise ce même programme au boulot et tout marche!!!

    Merci A+

    dark

  15. #14
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Personne n'as une petite idée?

    Merci A+

  16. #15
    invitee0bbe70d

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonsoir,

    J'ai pas réussi à voir tes images JPG...Il y a un message d'erreur comme quoi il faut contacter l'admin..

    Essayes de mettre un circuit de Reset externe (R+C +diode ) comme conseillé par Microchip pour que le signal MCLR puisse être bougé sans "patir" du condo.

    As-tu testé ton ICD2 autrepart ?
    Es-tu bien sur d'avoir sélectionné un PIC16F877A et pas un PIC16F877 ?

    Attention pour le mode DEBUG de ne pas programmer le bit de configuration OFF !!

  17. #16
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bizarre car même si je ne suis pas connecté au forum j'arrive à voir les images....

    Le circuit de reset je veux bien mais la diode je la met ou?tu as un schéma parce que je n'ai pas trouvé...merci.

    ICD2 autre part?dans un autre port USB, c'est ca?non j'ai pas essayé mais je vais voir ca.

    Sélection du PIC 100% juste!

    Ouais je dois mettre le fuse _DEBUG_ON, c'est bien cela?

    Merci d'avance A+

  18. #17
    invite03481543

    Re : Problème avec ICD2+PIC, impossible à programmer

    Sinon tu as quelle version de MPLAB et ton OS?
    Arrives-tu simplement à entrer un programme tout simple dans un PIC?

  19. #18
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    J'ai la version 8.14 sous XP

    Le problème c'est que j'arrive à descendre mon programme dans la cible mais je n'arrive pas a le debugger correctement(je peux pas fait de step over/out...)une fois que mon programme est descendu j'ai cette erreur qui arrive :


    ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information.

    et l'aide microchip me dit cela :

    Description: MPLAB ICD 2 was unable to establish communications with the debug software on the target. This will prevent all debug operations (run, step, halt, breakpoint, etc.)


    Je comprends comment cela ce fait il que j'arrive a lui envoyé mon programme mais pas à l'utiliser en debugg.

    Je peux lancé mon programme et il tourne ma LED clignote, mais ca merde si je merde des break points....

    Mon programme ne fais clignoté qu'une LED je pense que c'est assez simple comme programme...lol

    Je viens d'essayer avec un reset externe(résistance + condo) mais rien a faire...

    A+ Merci de votre attention

  20. #19
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bon j'ai réinstallé MPLAB, j'ai supprimé les drivers de l'ICD2 et réinstallé.

    Je problème persiste toujours....es l'ICD qui peut avoir un problème?

    Merci A+

  21. #20
    invitef26bdcba

    Re : Problème avec ICD2+PIC, impossible à programmer

    Citation Envoyé par darkmall Voir le message
    mais je n'arrive pas a le debugger correctement(je peux pas fait de step over/out...)une fois que mon programme est descendu j'ai cette erreur qui arrive :


    ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information.

    et l'aide microchip me dit cela :

    Description: MPLAB ICD 2 was unable to establish communications with the debug software on the target. This will prevent all debug operations (run, step, halt, breakpoint, etc.)


    Je comprends comment cela ce fait il que j'arrive a lui envoyé mon programme mais pas à l'utiliser en debugg.

    Je peux lancé mon programme et il tourne ma LED clignote, mais ca merde si je merde des break points....

    Mon programme ne fais clignoté qu'une LED je pense que c'est assez simple comme programme...lol

    Je viens d'essayer avec un reset externe(résistance + condo) mais rien a faire...
    Salut,

    J'ai déjà eut ce genre de problème sur 18F.

    Le problème venait du fait que je manipulais TRISB et LATB durant le déroulement du programme...

    J'ai résolu ce problème en initialisant ces deux registres en début de programme, et ensuite, plus de manipulation sur ces deux registres.

    Pour résumer en mode débug vaut mieux éviter de manipuler le sens des I/O du PORTB car le PORTB est utilisé par le débugger.

    David.

  22. #21
    invitee0bbe70d

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonjour,

    Après réflexion je pense qu'il vaut mieux retirer l'initialisation du bit de configuration DEBUG de ton fichier source si tu travailles dans MPLAB.

    L'environnement MPLAB manipule automatiquement (dans le cas des compilateurs C18 / C30 C32) ce bit en fonction du mode dans lequel il se trouve :
    Mode Debugger --> ON
    Mode Programmer --> OFF

    La remarque de David a beaucoup de sens
    On peut se faire facilement piéger....

  23. #22
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonjour,

    Merci je rappel juste que je suis sur un 16F, donc pas de LATB. De plus je n'utilise pas le portB uniquement le PORTA, ce dernier est correctement configuré puisque le programme tourne.

    J'ai enlevé le fuse DEBUG mais cela n'a rien changé!

    Merci quand même bon après-midi à vous tous!

    A+

  24. #23
    invitef26bdcba

    Re : Problème avec ICD2+PIC, impossible à programmer

    Salut,

    Montre l'intégralité de ton "programme", avec la totalité des registres de config...

    David.

  25. #24
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonjour à tous

    voici mon programme complet :

    ERRORLEVEL -302 ; suppression du message bank select
    LIST p=16F877a ; Définition de processeur
    #include <p16F877a.inc> ; fichier include

    __CONFIG _CP_OFF & _DEBUG_ON & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC

    ;***************************** ****************************** ******************
    ; ASSIGNATIONS SYSTEME *
    ;***************************** ****************************** ******************

    ; REGISTRE OPTION_REG (configuration)
    ; -----------------------------------
    OPTIONVAL EQU B'00000000'
    ; RBPU b7 : 1= Résistance rappel +5V hors service
    ; INTEDG b6 : 1= Interrupt sur flanc montant de RB0
    ; 0= Interrupt sur flanc descend. de RB0
    ; TOCS b5 : 1= source clock = transition sur RA4 (mode compteur)
    ; 0= horloge interne (mode Timer)
    ; TOSE b4 : 1= Sélection flanc montant RA4(si B5=1)
    ; 0= Sélection flanc descendant RA4
    ; PSA b3 : 1= Assignation prédiviseur sur Watchdog
    ; 0= Assignation prédiviseur sur Tmr0
    ; PS2/PS0 b2/b0 valeur du prédiviseur
    ; 000 = 1/1 (watchdog) ou 1/2 (tmr0)
    ; 001 = 1/2 1/4
    ; 010 = 1/4 1/8
    ; 011 = 1/8 1/16
    ; 100 = 1/16 1/32
    ; 101 = 1/32 1/64
    ; 110 = 1/64 1/128
    ; 111 = 1/128 1/256


    ; REGISTRE INTCON (contrôle interruptions standard)
    ; -------------------------------------------------
    INTCONVAL EQU B'00000000'
    ; GIE b7 : masque autorisation générale interrupt
    ; ne pas mettre ce bit à 1 ici
    ; sera mis en temps utile
    ; PEIE b6 : masque autorisation générale périphériques
    ; T0IE b5 : masque interruption tmr0
    ; INTE b4 : masque interuption RB0/Int
    ; RBIE b3 : masque interruption RB4/RB7
    ; T0IF b2 : flag tmr0
    ; INTF b1 : flag RB0/Int
    ; RBIF b0 : flag interruption RB4/RB7

    ; REGISTRE ADCON0 (ANALOGIQUE/DIGITAL)
    ; ------------------------------------

    ADCON0VAL EQU B'00000000'

    ; b7 : ADCS1 : A/D conversion Clock Select bit 1
    ; b6 : ADCS0 : A/D conversion Clock Select bit 0
    ; ADCS1 ¦ ADCS0 ¦ Diviseur ¦ Fréquence maximale du quartz
    ; 0 ¦ 0 ¦ Fosc/2 ¦ 1,25Mhz
    ; 0 ¦ 1 ¦ Fosc/8 ¦ 5Mhz
    ; 1 ¦ 0 ¦ Fosc/32 ¦ 20 Mhz
    ; 1 ¦ 1 ¦ Osc RC ¦Si > 1MHz, uniquement en mode « sleep »
    ; b5 : CHS2 : analog Channel Select bit 2
    ; b4 : CHS1 : analog Channel Select bit 1
    ; b3 : CHS0 : analog Channel Select bit 0
    ; CHS2 ¦ CHS1 ¦ CHS0 ¦ Canal ¦ Pin
    ; 0 ¦ 0 ¦ 0 ¦ 0 ¦ AN0/RA0
    ; 0 ¦ 0 ¦ 1 ¦ 1 ¦ AN1/RA1
    ; 0 ¦ 1 ¦ 0 ¦ 2 ¦ AN2/RA2
    ; 0 ¦ 1 ¦ 1 ¦ 3 ¦ AN3/RA3
    ; 1 ¦ 0 ¦ 0 ¦ 4 ¦ AN4/RA5
    ; 1 ¦ 0 ¦ 1 ¦ 5 ¦ AN5/RE0
    ; 1 ¦ 1 ¦ 0 ¦ 6 ¦ AN6/RE1
    ; 1 ¦ 1 ¦ 1 ¦ 7 ¦ AN7/RE2
    ; b2 : GO/DONE : A/D conversion status bit, mettre à 1 pour terminer la conversion
    ; Mit à zéro automatiquement à la fin de la conversion
    ; b1 : Inutilisé : lu comme « 0 »
    ; b0 : ADON : A/D ON bit, mettre à 1 pour commancer la conversion


    ; REGISTRE ADCON1 (ANALOGIQUE/DIGITAL)
    ; ------------------------------------
    ADCON1VAL EQU B'00000111'

    ; B7 : Bit ADFM conversion justifié à gauche, bit à 0 (B9 à B2 => ADRESH, B1 et B0 => ADRESL)
    ; ou à droite, bit à 1 (B9 et B8 => ADRESH, B7 à B0 => ADRESL)

    ; B6 à B4 : bits non utilisés

    ;PCFG ¦AN7 ¦AN6 ¦AN5 ¦AN4 ¦ AN3 ¦ AN2 ¦AN1 ¦AN0 ¦ Vref-¦Vref+¦ A/D/R
    ;B3àB0 ¦RE2 ¦RE1 ¦RE0 ¦RA5 ¦ RA3 ¦ RA2 ¦RA1 ¦RA0 ¦ ¦ ¦
    ;0000 ¦ A ¦ A ¦ A ¦ A ¦ A ¦ A ¦ A ¦ A ¦ Vss ¦ Vdd ¦ 8/0/0
    ;0001 ¦ A ¦ A ¦ A ¦ A ¦Vref+¦ A ¦ A ¦ A ¦ Vss ¦ RA3 ¦ 7/0/1
    ;0010 ¦ D ¦ D ¦ D ¦ A ¦ A ¦ A ¦ A ¦ A ¦ Vss ¦ Vdd ¦ 5/3/0
    ;0011 ¦ D ¦ D ¦ D ¦ A ¦Vref+¦ A ¦ A ¦ A ¦ Vss ¦ RA3 ¦ 4/3/1
    ;0100 ¦ D ¦ D ¦ D ¦ D ¦ A ¦ D ¦ A ¦ A ¦ Vss ¦ Vdd ¦ 3/5/0
    ;0101 ¦ D ¦ D ¦ D ¦ D ¦Vref+¦ D ¦ A ¦ A ¦ Vss ¦ RA3 ¦ 2/5/1
    ;0110 ¦ D ¦ D ¦ D ¦ D ¦ D ¦ D ¦ D ¦ D ¦ - ¦ - ¦ 0/8/0
    ;0111 ¦ D ¦ D ¦ D ¦ D ¦ D ¦ D ¦ D ¦ D ¦ - ¦ - ¦ 0/8/0
    ;1000 ¦ A ¦ A ¦ A ¦ A ¦Vref+¦Vref-¦ A ¦ A ¦ RA2 ¦ RA3 ¦ 6/0/2
    ;1001 ¦ D ¦ D ¦ A ¦ A ¦ A ¦ A ¦ A ¦ A ¦ Vss ¦ Vdd ¦ 6/2/0
    ;1010 ¦ D ¦ D ¦ A ¦ A ¦Vref+¦ A ¦ A ¦ A ¦ Vss ¦ RA3 ¦ 5/2/1
    ;1011 ¦ D ¦ D ¦ A ¦ A ¦Vref+¦Vref-¦ A ¦ A ¦ RA2 ¦ RA3 ¦ 4/2/2
    ;1100 ¦ D ¦ D ¦ D ¦ A ¦Vref+¦Vref-¦ A ¦ A ¦ RA2 ¦ RA3 ¦ 3/3/2
    ;1101 ¦ D ¦ D ¦ D ¦ D ¦Vref+¦Vref-¦ A ¦ A ¦ RA2 ¦ RA3 ¦ 2/4/2
    ;1110 ¦ D ¦ D ¦ D ¦ D ¦ D ¦ D ¦ D ¦ A ¦ Vss ¦ Vdd ¦ 1/7/0
    ;1111 ¦ D ¦ D ¦ D ¦ D ¦Vref+¦Vref-¦ D ¦ A ¦ RA2 ¦ RA3 ¦ 1/5/2
    ; D : digital / A : Analogique / R : Reference

    ; DIRECTION DES PORTS I/O
    ; -----------------------

    DIRPORTA EQU B'11110111' ; Direction PORTA (1=entrée)
    DIRPORTB EQU B'11111111' ; Direction PORTB (0=sortie)
    DIRPORTC EQU B'11111111' ; Direction PORTC
    DIRPORTD EQU B'11111111' ; Direction PORTD
    DIRPORTE EQU B'00000111' ; Direction PORTE

    ;***************************** ****************************** ******************
    ; ASSIGNATIONS PROGRAMME *
    ;***************************** ****************************** ******************

    ; exemple
    ; -------
    ;MASQUE EQU H'00FF'

    ;***************************** ****************************** ******************
    ; DEFINE *
    ;***************************** ****************************** ******************

    ; exemple
    ; -------
    #DEFINE led PORTA,3
    ;***************************** ****************************** ******************
    ; MACRO *
    ;***************************** ****************************** ******************

    BANK0 macro ; passer en banque0
    bcf STATUS,RP0
    bcf STATUS,RP1
    endm

    BANK1 macro ; passer en banque1
    bsf STATUS,RP0
    bcf STATUS,RP1
    endm

    BANK2 macro ; passer en banque2
    bcf STATUS,RP0
    bsf STATUS,RP1
    endm

    BANK3 macro ; passer en banque3
    bsf STATUS,RP0
    bsf STATUS,RP1
    endm

    ;***************************** ****************************** ******************
    ; VARIABLES ZONE COMMUNE *
    ;***************************** ****************************** ******************

    ; Zone de 16 bytes
    ; ----------------

    CBLOCK 0x70 ; Début de la zone (0x70 à 0x7F)
    w_temp : 1 ; Sauvegarde registre W
    status_temp : 1 ; sauvegarde registre STATUS
    FSR_temp : 1 ; sauvegarde FSR (si indirect en interrupt)
    PCLATH_temp : 1 ; sauvegarde PCLATH (si prog>2K)

    ENDC
    ;***************************** ****************************** ******************
    ; VARIABLES BANQUE 0 *
    ;***************************** ****************************** ******************

    ; Zone de 80 bytes
    ; ----------------

    CBLOCK 0x20 ; Début de la zone (0x20 à 0x6F)


    ;Exemples
    ;--------
    ; test :1 ; Zone de 1 byte
    ; table : 10 ; zone de 10 bytes

    ENDC ; Fin de la zone
    ;Exemples
    ;--------
    ;var1 EQU H'006E' ; adresse imposée



    ;***************************** ****************************** ******************
    ; VARIABLES BANQUE 1 *
    ;***************************** ****************************** ******************

    ; Zone de 80 bytes
    ; ----------------

    CBLOCK 0xA0 ; Début de la zone (0xA0 à 0xEF)

    ENDC ; Fin de la zone

    ;***************************** ****************************** ******************
    ; VARIABLES BANQUE 2 *
    ;***************************** ****************************** ******************

    ; Zone de 96 bytes
    ; ----------------

    CBLOCK 0x110 ; Début de la zone (0x110 à 0x16F)

    ENDC ; Fin de la zone

    ;***************************** ****************************** ******************
    ; VARIABLES BANQUE 3 *
    ;***************************** ****************************** ******************

    ; Zone de 96 bytes
    ; ----------------

    CBLOCK 0x190 ; Début de la zone (0x190 à 0x1EF)

    ENDC ; Fin de la zone

    ;***************************** ****************************** ******************
    ; DEMARRAGE SUR RESET *
    ;***************************** ****************************** ******************

    org 0x000 ; Adresse de départ après reset
    goto init ; Initialiser

    ; ////////////////////////////////////////////////////////////////////////////

    ; I N T E R R U P T I O N S

    ; ////////////////////////////////////////////////////////////////////////////

    ;***************************** ****************************** ******************
    ; ROUTINE INTERRUPTION *
    ;***************************** ****************************** ******************
    ;-----------------------------------------------------------------------------
    ; Si on n'utilise pas l'adressage indirect dans les interrupts, on se passera
    ; de sauvegarder FSR
    ; Si le programme ne fait pas plus de 2K, on se passera de la gestion de
    ; PCLATH
    ;-----------------------------------------------------------------------------
    ORG 0x04 ; Adresse d'interruption
    ; Sauvgarde des registres
    BANK0
    MOVWF w_temp ; Sauvgarde la valeur de W dans W_TEMP
    SWAPF STATUS,W ; Sauvgarde la valeur de STATUS dans W
    MOVFW status_temp ; Sauvgarde la valeur de STATUS (W) dans STATUS_TEMP


    ;restaurer registres
    ;-------------------
    restorereg
    movf PCLATH_temp , w ; recharger ancien PCLATH
    movwf PCLATH ; le restaurer
    movf FSR_temp , w ; charger FSR sauvé
    movwf FSR ; restaurer FSR
    swapf status_temp,w ; swap ancien status, résultat dans w
    movwf STATUS ; restaurer status
    swapf w_temp,f ; Inversion L et H de l'ancien W
    ; sans modifier Z
    swapf w_temp,w ; Réinversion de L et H dans W
    ; W restauré sans modifier status
    retfie ; return from interrupt



    ; ////////////////////////////////////////////////////////////////////////////

    ; P R O G R A M M E

    ; ////////////////////////////////////////////////////////////////////////////

    ;***************************** ****************************** ******************
    ; INITIALISATIONS *
    ;***************************** ****************************** ******************

    init

    ; initialisation PORTS (banque 0 et 1)
    ; ------------------------------------
    BANK0 ; sélectionner banque0
    clrf PORTA ; Sorties PORTA à 0
    clrf PORTB ; sorties PORTB à 0
    clrf PORTC ; sorties PORTC à 0
    clrf PORTD ; sorties PORTD à 0
    clrf PORTE ; sorties PORTE à 0
    movlw ADCON0VAL ; Paramètre de convertion
    movwf ADCON0 ; écriture dans ADCON0
    BANK1
    movlw ADCON1VAL ; PORTA en mode digital/analogique
    movwf ADCON1 ; écriture dans contrôle A/D
    movlw DIRPORTA ; Direction PORTA
    movwf TRISA ; écriture dans registre direction
    movlw DIRPORTB ; Direction PORTB
    movwf TRISB ; écriture dans registre direction
    movlw DIRPORTC ; Direction PORTC
    movwf TRISC ; écriture dans registre direction
    movlw DIRPORTD ; Direction PORTD
    movwf TRISD ; écriture dans registre direction
    movlw DIRPORTE ; Direction PORTE
    movwf TRISE ; écriture dans registre direction

    ; Registre d'options (banque 1)
    ; -----------------------------
    movlw OPTIONVAL ; charger masque
    movwf OPTION_REG ; initialiser registre option

    ; registres interruptions (banque 1)
    ; ----------------------------------
    movlw INTCONVAL ; charger valeur registre interruption
    movwf INTCON ; initialiser interruptions

    ; Effacer RAM banque 0
    ; ---------------------
    BANK0
    movlw 0x20 ; initialisation pointeur
    movwf FSR ; d'adressage indirect
    init1
    clrf INDF ; effacer ram
    incf FSR,f ; pointer sur suivant
    btfss FSR,7 ; tester si fin zone atteinte (>7F)
    goto init1 ; non, boucler

    ; autoriser interruptions (banque 0)
    ; ----------------------------------
    clrf PIR1 ; effacer flags 1
    clrf PIR2 ; effacer flags 2
    bsf INTCON,GIE ; valider interruptions
    goto start ; programme principal


    ;***************************** ****************************** ******************
    ; PROGRAMME PRINCIPAL *
    ;***************************** ****************************** ******************

    start

    bsf led ; Allumer la led
    bcf led ; Éteindre la led

    goto start ; boucler
    END ; directive fin de programme
    J'ai volontairement pas mis de tempo...de tout façon si je debug(pas à pas) je la vois s'allumer et s'éteindre.

    Lorsque je lance (play)le programme cela me donne le message d'erreur de l'image prob_MPLab1.

    Et quand je veux placé un breakpoint cela me dit lavertissement de l'image prob_MPLab.

    Merci de votre attention

    A+ et bon dimanche à tous ^^
    Images attachées Images attachées

  26. #25
    invite092cb13c

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonjour
    Dans ton post #4, tu dis
    J'arrive, avec l'ICD2, a effacé un programme déjà écrit dans le PIC avec un autre programmeur...

    Sinon si je lance le programme après cette erreur ICD0161:
    Verify failed (MemType = Program, Address = 0x0, Expected Val = 0x1683, Val Read = 0x3FFF)
    ICD0275: Programming failed.
    Comment peux tu savoir que ton ICD2 efface ton pic, car la seule chose qu'il lit c'est des 0x3FFF qui correspond à un pic effacé, mais aussi à une mauvaise liaison entre pic et ICD2, si tu essaies de lire avec un programmateur le contenu d'un pic alors que ce pic n'est pas present sur la target tu obtiendras des 0x3FFF, il ne faut donc pas, à mon avis, se fier aux resultats quand ton ICD2 dit qu'il lit des 0x3FFF.
    Gilles

  27. #26
    invite092cb13c

    Re : Problème avec ICD2+PIC, impossible à programmer

    Pour completer mon precedent message:
    Ce que je veux dire c'est que si ton ICD2 dit je lis 0X3FFF, cela ne veux pas dire que cette valeur est dans le pic, c'est peut etre qu'il n'arrive même pas à entrer en communication avec le pic, ce qui je pense est ton probleme, car ICD2 devrait reconnaitre le pic ce qui ne semble pas etre ton cas.
    Gilles

  28. #27
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Ok je veux bien, mais comment cela ce fait il que je peux écrire dedans? j'arrive à lancé le programme mais pas a placé des breakpoints....tout les autres problèmes sont résolus(j'avais inversé PGD/PGC )

    Je suis toujours preneur si quelqu'un a une possible solution!

    Merci A+

    Dark

  29. #28
    invitef26bdcba

    Re : Problème avec ICD2+PIC, impossible à programmer

    Salut,

    Avec une inversion de PGC et PGD, je ne vois pas comment tu arrivais à programmer ton µC...

    Sinon, pour ton point d'arrêt, place deux nop dans ta boucle principale et place le point d'arrêt sur le premier nop.

    Avant de placer ce point d'arrêt, efface tous les point d'arrêt de ton projet en utilisant l'option "Remove all Breakpoint" dans MPALB.

    David.

  30. #29
    invitee0bbe70d

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonsoir,

    Au vu des messages d'erreur / warning que tu montres je pense que tu n'as pas bien compris la différence entre le mode debugger et programmer.

    Mode debugger : dans ce mode, quand on compile, 2 programmes sont implantés dans la mémoire FLASH : ton programme ET le programme de DEBUG de Microchip qui communique avec l'ICD2 (c'est invisible à l'utilisateur).

    Mode Programmer : dans ce mode, quand on compile, seul ton programme se trouve dans la mémoire FLASH, car il n'est plus nécessaire de communiquer avec l'ICD2.

    Conclusion : il faut TOUJOURS recompiler et reprogrammer un PIC quand on change du mode programmer au mode debugger et vice versa MEME si on a pas changé une ligne de code.

    C'est pourquoi MPLAB te donne un warning quand tu passe d'un mode à l'autre.

    Concernant les breakpoints, n'oublie pas que le PIC16F877A en a très peu (1 ou 2) donc quand tu les utilises tous il faut les libérer pour pouvoir en positionner d'autres.

  31. #30
    invite953f8104

    Re : Problème avec ICD2+PIC, impossible à programmer

    Bonjour à tous,

    Me voilà de retour

    Pour mon problème j'ai trouvé ce qui n'allais pas, c'était ID2 qui est mort....ce qui est sur c'est que ce n'est pas moi qui l'ai brulé...

    Je l'avais emprunté au boulot....donc il faut pas chercher!

    J'ai décidé de m'acheter un PICkit2 pour mon développement personnel, je verrais bien ce que cela vaut par rapport à l'ICD2!

    Merci quand même d'avoir essayé de m'aider.

    A bientôt

    Darkmall

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. programmer un afficheur lcd avec pic 16f877
    Par invited14768ec dans le forum Électronique
    Réponses: 5
    Dernier message: 08/05/2011, 19h49
  2. Réponses: 0
    Dernier message: 05/07/2008, 19h59
  3. programmer les pic avec CCs
    Par invite2980006c dans le forum Électronique
    Réponses: 1
    Dernier message: 18/03/2007, 15h59
  4. Réponses: 0
    Dernier message: 18/03/2007, 15h43
  5. programmer des PIC avec un psion
    Par invite39462866 dans le forum Électronique
    Réponses: 15
    Dernier message: 18/10/2006, 06h37
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...