Programme avec PIC16F505 ne fonctionne pas
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Programme avec PIC16F505 ne fonctionne pas



  1. #1
    michel5002

    Programme avec PIC16F505 ne fonctionne pas


    ------

    Bonjour à vous tous,

    j'ai réalisé ce programme pour un PIC16F505 et celui-ci ne fonctionne pas.
    La première opération qu'il doit faire est de lancer le buzzer.
    Mais rien ne se passe.
    Je souhaiterai savoir si jei n'ai pas fais une erreur de configuration dans cette partie de programme.
    En 2 mots, est-ce que mon PIC est bien configuré?
    Merci à tous ceux qui voudront bien jeter un coup d'oeil.
    Michel5002

    Voici la partie du programme en question:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////// Standard Header file for the PIC16F505 device ////////////////
    #device PIC16F505
    #nolist
    //////// Program memory: 1024x12 Data RAM: 72 Stack: 2
    //////// I/O: 12 Analog Pins: 0
    //////// C Scratch area: 08 ID Location: 0400
    //////// Oscilator Calibration Address: 05
    //////// Fuses: LP,XT,HS,EC_IO,NOWDT,WDT,PROTE CT,NOPROTECT,NOMCLR,MCLR,RC
    //////// Fuses: INTRC_IO,INTRC,RC_IO
    ////////
    ////////////////////////////////////////////////////////////////// I/O
    // Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
    // PORT_x_PULLUPS(), INPUT(),
    // OUTPUT_LOW(), OUTPUT_HIGH(),
    // OUTPUT_FLOAT(), OUTPUT_BIT()
    // Constants used to identify pins in the above are:

    #define PIN_B0 48
    #define PIN_B1 49
    #define PIN_B2 50
    #define PIN_B3 51
    #define PIN_B4 52
    #define PIN_B5 53

    #define PIN_C0 56
    #define PIN_C1 57
    #define PIN_C2 58
    #define PIN_C3 59
    #define PIN_C4 60
    #define PIN_C5 61

    ////////////////////////////////////////////////////////////////// Useful defines
    #define FALSE 0
    #define TRUE 1

    #define BYTE int8
    #define BOOLEAN int1

    #define getc getch
    #define fgetc getch
    #define getchar getch
    #define putc putchar
    #define fputc putchar
    #define fgets gets
    #define fputs puts

    ////////////////////////////////////////////////////////////////// Control
    // Control Functions: RESET_CPU(), SLEEP(), RESTART_CAUSE()
    // Constants returned from RESTART_CAUSE() are:
    #define WDT_FROM_SLEEP 3
    #define WDT_TIMEOUT 11
    #define MCLR_FROM_SLEEP 19
    #define MCLR_FROM_RUN 27
    #define NORMAL_POWER_UP 25
    #define BROWNOUT_RESTART 26


    ////////////////////////////////////////////////////////////////// Timer 0
    // Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or SETUP_TIMER_0(),
    // SET_TIMER0() or SET_RTCC(),
    // GET_TIMER0() or GET_RTCC()
    // Constants used for SETUP_TIMER_0() are:
    #define RTCC_INTERNAL 0
    #define RTCC_EXT_L_TO_H 32
    #define RTCC_EXT_H_TO_L 48

    #define RTCC_DIV_1 8
    #define RTCC_DIV_2 0
    #define RTCC_DIV_4 1
    #define RTCC_DIV_8 2
    #define RTCC_DIV_16 3
    #define RTCC_DIV_32 4
    #define RTCC_DIV_64 5
    #define RTCC_DIV_128 6
    #define RTCC_DIV_256 7


    #define RTCC_8_BIT 0

    // Constants used for SETUP_COUNTERS() are the above
    // constants for the 1st param and the following for
    // the 2nd param:

    ////////////////////////////////////////////////////////////////// WDT
    // Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)
    // RESTART_WDT()
    // WDT base is 18ms
    //

    #define WDT_18MS 0x8008
    #define WDT_36MS 9
    #define WDT_72MS 10
    #define WDT_144MS 11
    #define WDT_288MS 12
    #define WDT_576MS 13
    #define WDT_1152MS 14
    #define WDT_2304MS 15

    //#define DISABLE_PULLUPS 0x40 // for 508 and 509 only
    //#define DISABLE_WAKEUP_ON_CHANGE 0x80 // for 508 and 509 only
    //#ifndef PIN_CHANGE_FROM_SLEEP
    //#define PIN_CHANGE_FROM_SLEEP 0x90 // for 508 and 509 only
    //#endif


    #list


    #device adc=8
    #use delay(clock=4000000)
    #fuses WDT,NOPROTECT,NOMCLR,INTRC_IO
    #define RB0 PIN_B0
    #define RB1 PIN_B1
    #define RB2 PIN_B2
    #define RC0 PIN_C0
    #define RC1 PIN_C1
    #define RC2 PIN_C2
    #define RC3 PIN_C3
    #define RC4 PIN_C4
    #define RC5 PIN_C5
    #define RB3 PIN_B3
    #define RB4 PIN_B4
    #define RB5 PIN_B5
    #use fast_io(B)
    #use fast_io(C)


    #BYTE TRISB = 0x85
    #BYTE TRISC = 0x87
    //#BYTE WPUB = 0x95 // Résistances internes PORTB
    //#BYTE WPUC = 0x95 // Résistances internes PORTC
    //#BYTE OSCTUNE = 0x90

    void bips_boucle_ouverte(void);
    void enclenchement_relais_sirene(vo id);
    void bip_apres_alarme(void);


    byte depart=0;
    byte duree=0;
    byte attente_bip_sortie=5; // 15=30sec
    byte attente_bip_entree=5; // 15=30sec
    byte memoire_alarme=0;
    byte controle=1;
    byte attente_bip_boucle_ouverte=30; // 400=15min


    void main()
    {
    debut:
    if (memoire_alarme==0)
    {
    output_low (RC3);
    memoire_alarme=1;
    }
    if (memoire_alarme==1)
    {
    TRISB=0x04; // 04=00000100 = RB2 en input
    TRISC=0x10; // 10=00010000 = RC4 en input
    // WPUB=0x00; // 30=00110000
    // WPUC=0x00; // 24=00100100
    // OSCTUNE=0x06; // BINAIRE=110 ===> 4Mz voir datasheet
    output_low (RB0);
    output_low (RB1);
    output_low (RB2);
    output_low (RC0);
    output_low (RB5);
    setup_wdt(WDT_2304MS);
    output_high(RB4);
    output_high(RC5);

    }
    if (depart==0)
    {
    if (attente_bip_sortie>0)
    {
    output_high (PIN_C2);//(RC2); // actionne le buzzer
    attente_bip_sortie-=1;
    }
    if (attente_bip_sortie==0)
    {
    output_low (RC2); // arrête le buzzer
    depart=1;
    }
    }

    etc....

    -----

  2. #2
    Seb.26

    Re : Programme avec PIC16F505 ne fonctionne pas

    c'est pas lisible ...

    Code:
    comme ça, c'est mieux;
    non ?
    PS: tu compile avec quoi ?

  3. #3
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    Bonjour,
    compilateur CCS vers. 4.023
    programmateur Pickit 1 flash starter.
    michel5002

  4. #4
    Seb.26

    Re : Programme avec PIC16F505 ne fonctionne pas

    Et tu utilise quoi comme IDE ?

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

    Re : Programme avec PIC16F505 ne fonctionne pas

    Dans CCS, c'est #fuse, qui fait les configurations bits, non ?
    ... j'en vois pas beaucoup dans ton code, il en manquerait pas ? ( celui de l'horloge au pif )
    ( c'est juste une idée comme ça ... je ne connais ni ton PIC, ni ton compilo ... )

    Perso, j'utilise toujours MPLab comme IDE ...

    Autre point, ton source commence par :
    Code:
    //////// Standard Header file for the PIC16F505 device ////////////////
    Tu serais pas en train de mettre du code dans un .h par hasard ???

  7. #6
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    Je trouve la réponse où??
    - câble de liaison IDE dans le PC??? (80 broches)
    - câble de liaison programmateur (USB B) vers PC (USB A)??
    A+

  8. #7
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    OK! pour l'IDE,
    IDE ==> MPLab version 8.00

    J'ai mis le fichier développé "16F505.h" au début de mon programme pour vous éviter de le chercher.
    Sinon j'aurai écrit:
    #include <16F505.h>
    A+
    michel5002

  9. #8
    Seb.26

    Re : Programme avec PIC16F505 ne fonctionne pas

    Citation Envoyé par michel5002 Voir le message
    J'ai mis le fichier développé "16F505.h" au début de mon programme pour vous éviter de le chercher.
    Ok, j'ai eu peur que tu ais pris le fichier .h et que tu ais ajouté ton code dedans ... ...

    Quand à la réponse ... ?!

    J'ai juste proposé une piste : le #fuse pour definir quel horloge tu utilise ...
    genre LP,XT,HS,EC_IO ... je crois pas avoir vu ce #fuse là ... c'est peut être un erreur de ma part ou c'est voulu ... je sais pas ... c'etait juste une piste ...

  10. #9
    Seb.26

    Re : Programme avec PIC16F505 ne fonctionne pas

    PS: tu as essayé une bête boucle sans fin qui fait bouger une sortie avec une pause pour que ce soit visible à l'oeil nu ? ... ça marche ?

  11. #10
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    J'ai cette ligne dans le programme et il semblerait que cela suffise pour caler l'horloge à 4Mz:
    "#use delay(clock=4000000)"
    j'avais également ajouté cette ligne que j'ai maintenant supprimée , car inutile:
    // OSCTUNE=0x06; // BINAIRE=110 ===> 4Mz voir datasheet
    parce que, par défaut, l'oscillateur du PIC est calé à 4Mz.
    Mais de toute façon sans effet lorsque j'ai mis le PIC sur ma plaque d'essai.

    D'autre part, pour info, comment mettre un programme dans un cadre comme plus haut??
    "code:
    comme ça, c'est mieux; non ?"

    merci et A+
    michel5002

  12. #11
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    Je viens d'essayer ce petit bout de programme, mais rien ne se passe.
    J'ai pris en autre PIC16F505, au cas où!!, mais c'est pareil.
    Je n'ai aucune led, sur le programmateur, qui s'allume.

    Voici le petit programme:

    ///////////////////////////////////////////////////////////////////////////////////////

    #device adc=8
    #use delay(clock=4000000)
    #fuses WDT,NOPROTECT,NOMCLR,INTRC_IO
    #define RB0 PIN_B0
    #define RB1 PIN_B1
    #define RB2 PIN_B2
    #define RC0 PIN_C0
    #define RC1 PIN_C1
    #define RC2 PIN_C2
    #define RC3 PIN_C3
    #define RC4 PIN_C4
    #define RC5 PIN_C5
    #define RB3 PIN_B3
    #define RB4 PIN_B4
    #define RB5 PIN_B5
    #use fast_io(B)
    #use fast_io(C)

    #BYTE TRISB = 0x85
    #BYTE TRISC = 0x87

    byte depart=0;
    byte attente_bip_sortie=15; // 15=30sec


    void main()
    {
    debut:

    TRISB=0x04; // 04=00000100 = RB2 en input
    TRISC=0x10; // 10=00010000 = RC4 en input
    output_low (RB0);
    output_low (RB1);
    output_low (RB2);
    output_low (RC0);
    output_low (RB5);
    setup_wdt(WDT_2304MS);


    if (depart==0)
    {
    if (attente_bip_sortie>0)
    {
    output_high (RC2);
    attente_bip_sortie-=1;
    }
    if (attente_bip_sortie==0)
    {
    output_low (RC2);
    }
    }
    }
    ///////////////////////////////////////////////////////////////////////////////////////


    Je n'y comprends rien!!!!
    A+

  13. #12
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    Je viens d'adapter le petit programme ci-dessus à un PIC16F684 et il fonctionne très bien, j'actionne bien mon buzzer.
    Je pense que mon PIC16F505 est mal configuré.
    PS: Lorsque je compile le programme pour le PIC16F505 ou pour le PIC16F684,
    je n'ai aucune erreur de signalée par CCS.

  14. #13
    Seb.26

    Re : Programme avec PIC16F505 ne fonctionne pas

    Code:
    Pour ecrire comme ça...
    il faut utiliser le bouton '#' à coté de QUOTE ;)
    Tu as donc un "HelloWorld" qui fonctionne sur un PIC mais pas sur l'autre ... je pense aussi à un problème de config ...

    Tu utilise quoi comme horloge sur chacun des PIC ?

  15. #14
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    J'utilise l'horloge interne de chacun des PICs (20Mz), que j'ai configurée à 4Mz avec linstruction:
    "#use delay(clock=4000000)"
    A+

  16. #15
    Seb.26

    Re : Programme avec PIC16F505 ne fonctionne pas

    Citation Envoyé par michel5002 Voir le message
    J"#use delay(clock=4000000)"
    Cela configure aussi le FOSC ???

    je pensais que c'etait juste pour que le compilo connaisse la freq pour les delay_ms(int) & Co ...
    ( mais je connais pas ton compilo ... donc si tu es sûr de toi ... )

  17. #16
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    Il faut que je re-vérifie sur le datasheet!!! du 16F505.
    A+

  18. #17
    RISC

    Re : Programme avec PIC16F505 ne fonctionne pas

    Michel,

    Tu devrais télécharger le manuel du compilateur C de CCS pour bien comprendre la syntaxe des fusibles de programmation ( #fuses ....).
    http://www.ccsinfo.com/downloads/CReferenceManual.pdf


    D'après ce manuel cette directive fait uniquement appel à une librairie mais ne configure pas l'oscillateur : #use delay(clock=4000000).

    Par contre ta ligne semble correcte :
    #fuses WDT,NOPROTECT,NOMCLR,INTRC_IO

    Dans un premier temps tu devrais peut-etre désactiver le watchdog "NOWDT" ?

    a+

  19. #18
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    Bonjour à vous tous,
    comme suite à tous nos échecs et ce, malgré l'intervension de plusieurs collègues que je remercie au passage, nous n'avons pas encore réussi à solutionner le problème.
    Aussi, je propose de reprendre le problème différemment.
    Est-ce que quelqu'un parmi vous, veut bien écrire un simple progamme qui allume une led avec un PIC16F505.
    Je ne souhaite rien compliqué, je voudrai juste voir la led s'allumer à la mise sous tension du PIC.
    Par-contre:
    programmation en langage C;
    compatible avec:
    -IDE ==> MPLab version 8.00 de Microchip;
    -compilateur CCS vers. 4.023;
    -programmateur Pickit 1 flash starter version 2.2.
    Merci par avance,
    michel5002

  20. #19
    michel5002

    Re : Programme avec PIC16F505 ne fonctionne pas

    Bonjour à tous,
    Personne pour tenter de régler mon problème de config du PIC16F505 ??
    A bientôt
    michel5002

Discussions similaires

  1. ça ne fonctionne pas
    Par turquier dans le forum Électronique
    Réponses: 2
    Dernier message: 23/06/2007, 12h23
  2. [Blanc] Lave linge Thomson access ne fonctionne pas en programme long
    Par jpp2 dans le forum Dépannage
    Réponses: 23
    Dernier message: 17/02/2007, 11h19
  3. pc ecran noir pas d'amorce fonctionne pas
    Par superspops dans le forum Matériel - Hardware
    Réponses: 2
    Dernier message: 26/05/2006, 15h30
  4. Autorun ne fonctionne pas avec les programmes MFC???
    Par invitebcf59f9d dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 24/05/2006, 10h59
  5. mes javascript:popupimage ne fonctionne pas sur mon site web mais fonctionne en local
    Par invite4ff499e4 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 28/01/2006, 17h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.