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

PIC 16F876 et interruption



  1. #1
    lilian42120

    PIC 16F876 et interruption


    ------

    Bonjour tout le monde,

    Je suis coincé sur un programme avec un PIC 16F786 et l'utilisation des interruptions.
    J'utilise MPLAB et CC5X et lors de la compilation j'obtiens cela :

    #pragma origin 4
    ^------
    Error[1] C:\Users\QT2015\Desktop\PIC\Pr ogrammes\Train\Main.c 7 : Overlapping code
    (The pointer to the next free location in each code page can not be
    moved backwards (only forwards). This also applies if locations was
    skipped by an earlier #pragma origin statement)
    Codepage 0 has 11 word(s) : 0 %
    Codepage 1 has 0 word(s) : 0 %
    Codepage 2 has 0 word(s) : 0 %
    Codepage 3 has 0 word(s) : 0 %
    Total of 46 code words (0 %)
    * Estimated CODE SIZE of full optimization: 40 code words (-13 %)
    *** error(s), no code file produced.


    et le début de mon programme :

    #pragma chip PIC16F876
    #include "int16CXX.H"

    #pragma origin 4

    interrupt Timer(void){
    }

    Me manque t'il quelque chose ? (à par la fonction main)

    -----

  2. Publicité
  3. #2
    vede

    Cool Re : PIC 16F876 et interruption

    Bonjour,

    dans l'interruption, il te faudra sauver et sauvegarder les registres...
    2 exemples (avec codes) piochés sur ce forum (recherche > CC5 interruption) :
    http://forums.futura-sciences.com/el...pic16f690.html
    http://forums.futura-sciences.com/el...c5x-svp-2.html
    en lisant ces 2 discussions tu devrais avancer...

    vede
    ;O]
    __________
    ...

  4. #3
    RISC

    Re : PIC 16F876 et interruption

    Salut,

    Un bon tutoriel sur CC5X ici.

    a+

  5. #4
    lilian42120

    Re : PIC 16F876 et interruption

    Merci pour votre rapidité, j'ai déja pas mal travaillé sur les 68HC908 en C avec CodeWarrior mais la prise en main de MPLAB est assez simple.
    Je gère maintenant les interruptions mais pas contre j'ai un soucis avec le PORTA que je déclare en sortie avec TRISA=0; pas d'erreur de compilation mais lors de la mise à 1 d'une sortie du PORTA rien ne se passe !!!! Voici le programme :


    #pragma chip PIC16F876
    //#pragma config |= 0x3ff1 // Suppression du chien de garde
    #include "int16CXX.H"

    #pragma origin 4

    interrupt IntTimer0 (void)
    {
    int_save_registers

    if(T0IF)
    {
    char DecSLecE =0;

    PORTA = 0b00000001;

    do
    {
    PORTA = PORTA << 1; //Décalage d'un bit du PORTA à gauche
    DecSLecE ++; //Incrémentation de la boucle de de lecture
    }

    while(DecSLecE <= 4);
    DecSLecE = 0;
    PORTA = 0b00000000;
    T0IF = 0;
    }
    int_restore_registers
    }


    void main(void)
    {
    // Initialisation des pattes du µC lors du démarrage du programme
    PORTA = 0;
    PORTB = 0;
    PORTC = 0;

    // Initialisation du TIMER0
    TMR0 = 0;

    // Direction des PORTS du µC
    TRISA = 0; // PORTA en sortie
    TRISB = 0b11111111; // PORTB en entrée
    TRISC = 0; // PORTC en sortie

    // Configuration du TIMER0 et des interruptions
    OPTION = 0b10000111; // Prédiviseur à 255 de l'entrée : clock/4 du TIMER0
    INTCON = 0b10100000; // Autorisation des interruptions par le TIMER0

    // Boucle infinie du main
    for(;
    {

    }
    }

    Lorsque je change le PORTA en PORTC cela fonctionne ??? Le portA à 6 sorties (ou entrées) mais dans la doc on déclare TRISA sous 8 bits.

  6. #5
    F1TVB

    Re : PIC 16F876 et interruption

    Bonjour
    Au reset le port A est déclaré analogique, il faut le definir en binaire dans le registre ADCON1.

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

    Re : PIC 16F876 et interruption

    Citation Envoyé par F1TVB Voir le message
    Bonjour
    Au reset le port A est déclaré analogique, il faut le definir en binaire dans le registre ADCON1.
    Exact, je viens de le lire sur la doc du PIC dès le démarrage du µC, les entrées du PORTA sont configurées en EANA.
    Après configuration de ADCON1 = 0b00000111; ca fonctionne !!!!

    Merci F1TVB de ce coup de pouce.

  9. Publicité
  10. #7
    vede

    Cool Re : PIC 16F876 et interruption

    Bonjour,

    Citation Envoyé par F1TVB Voir le message
    Bonjour
    Au reset le port A est déclaré analogique, il faut le definir en binaire dans le registre ADCON1.
    je confirme,
    il faut configurer le portA en numérique car
    il est configuré en entrée analogique au Reset...
    ceci en ajoutant la ligne :
    ADCON1 = 7;
    au tout début de ton programme (juste après main() { )

    plus d'infos dans la section "Analog To Digital Converter" de ta datasheet...

    vede
    ;O]
    ___________
    ...

Sur le même thème :

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/07/2010, 07h34
  2. Différence entre PIC 16F876 et PIC 16F876A
    Par KHEOPS1982 dans le forum Électronique
    Réponses: 2
    Dernier message: 09/03/2008, 15h32
  3. pic 16f876
    Par guiboud-ribaud dans le forum Électronique
    Réponses: 2
    Dernier message: 21/05/2006, 19h19
  4. Pic 16f876
    Par Toufinet dans le forum Électronique
    Réponses: 2
    Dernier message: 22/04/2006, 14h49
  5. interruption A/D DU PIC 16F876
    Par khalid dans le forum Électronique
    Réponses: 5
    Dernier message: 09/01/2006, 21h02
Découvrez nos comparatifs produits sur l'informatique et les technologies.