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

Probleme interruption PIC (en C)



  1. #1
    Pilou81

    Probleme interruption PIC (en C)


    ------

    Bonjour,

    Je suis débutant en programmation des PIC en C. Dans le cadre d'un petit projet je dois faire une détection de front à l'aide des interruptions sur un PIC18F4525. J'ais bon consulté la doc du PIC j'ai un peu de mal à m'y retouver pour les interruptions.

    Pourriez-vous m'aider en me donnant des pistes pour coder ce petit alogorithme (y compris les initialisations):
    1°) Interruption sur front montant.
    2°) Quand interruption -> lancer Timer1
    3°) Changer de polarité (interruption sur front descendant)
    4°) Quand interruption -> stoper le Timer1
    5°) Si Timer1H>16 alors on recommence 1°)
    6°) Si Timer1H<8 -> front_ok = 1
    7°) Inhiber l'interruption liée au front
    8°) Executer Sous programme TRAME()
    9°) Reboucler 1°)

    Vous me seriez d'un grand secours, d'avance merci

    -----

  2. Publicité
  3. #2
    vede

    Cool Re : Probleme interruption PIC (en C)

    Bonjour,

    pour débuter la programmation avec les PICS,
    c'est un très très très gros projet...
    il faut commencer par réussir à faire clignoter une led...
    avant de tenter le diable...
    car ici on ne va pas te "coder" ton algo...

    envoyes ton début de code:
    1°) Interruption sur front montant.
    2°) Quand interruption -> lancer Timer1
    ...

    et expliques ce que tu comprends pas...
    delà on t'aidera à corriger et comprendre...

    tu utilises quel compilateur C?

    vede
    ;O]
    __________________
    VIVE les PICS ;O]

    ps : pour les interruptions, et comprendre leur fonctionnement
    dans les PICS, cad trouver des infos et explications, rien ne vaut
    une petite recherche sur ce forum ou sur google (avec les mots
    PIC interruption RB0 Timer...)...

  4. #3
    vede

    Cool Re : Probleme interruption PIC (en C)

    Citation Envoyé par vede Voir le message
    (...)c'est un très très très gros projet...(...)
    cad que c'est dans le cadre d'un très très très gros projet...
    dans le cadre d'un premier programme...
    mais j'adore les "petits" projets ;O]
    et les "minis" aussi ;O]

    .
    Dernière modification par vede ; 26/04/2010 à 00h18. Motif: VIVE les PICS ;O]

  5. #4
    vede

    Cool Re : Probleme interruption PIC (en C)

    [umour]
    c'était pour aujourd'hui? ;O]
    [/umour]

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

    Re : Probleme interruption PIC (en C)

    Il s'agit d'une partie d'un gros projet, cette partie concerne l'acquisition des données transmises par un CAN extérieur, je dois donc détecter un front pour ensuite envoyer une trame SCLK au CAN pour qu'il me fasse la conversion. ça a l'air simple a première vu mais la détection de front, enfin plutot un changement d'état selon une durée précise me pose beaucoup de problèmes. Je vais essayé d'avancer de mon coté mais je ne suis pas très doué dans les étapes a suivre pour la gestion des interruptions. Pour info j'utilise le compilateur MikroC...

  8. #6
    Pilou81

    Re : Probleme interruption PIC (en C)

    J'ais fait un bout de code juste pour essayer les interruptions mais visiblement aucun front n'est détecté que se soit sur l'entrée int0 ou int1 de mon pic, HELP:

    Code:
    void InitMain() {
        PORTA = 0;             //reset Ports
        PORTB = 0;
        PORTC = 0;
        PORTD = 0;
        PORTE = 0;
    
                         //Directions Ports
    
        TRISB = 0xE3;
        TRISC = 0x20;
        TRISD = 0;
    
      PWM1_Init(19200);                      //Initialisation PWM CCP1 à 19200Hz
      PWM1_Start();                          //PWM1 ON
      PWM1_Change_Duty(127);                 //Rapport cyclique PWM = 50%
    }
    
    void interrupt(){
                PORTB.pintest1 = 1;
                delay_ms(5);
                PORTB.pintest1 = 0;
                delay_ms(5);
                INTCON = 0xD0;                      //active Interupt Int0 + reset flag
                INTCON2 = 0xF0;                     //config Interupt sur front montant
                INTCON3 = 0x08;                     //active Interupt Int1 + reset flag
                }
                
    void main(){
     InitMain();
     do{
         INTCON = 0xD0;                      //active Interupt Int0
         INTCON2 = 0xF0;                     //config Interupt sur front montant
         INTCON3 = 0x08;                     //active Interupt Int1
     }while (1);
    
     }

  9. Publicité
  10. #7
    Pilou81

    Re : Probleme interruption PIC (en C)

    Bonjour,

    J'ai finalement réussi, après moulte recherche il s'avère qu'il faut configurer les pins AN[12-0] en mode digital pour que l'interruption externe s'effectue. Je réussi à détecter un front mais ce n'est pas le bon. Je compte utiliser le TIMER1 mais visiblement j'ais quelques problemes pour régler la durée du front à distinguer...

Discussions similaires

  1. interruption sur pic
    Par alainav1 dans le forum Électronique
    Réponses: 4
    Dernier message: 02/08/2009, 21h13
  2. interruption pic 18f4520
    Par bird12358 dans le forum Électronique
    Réponses: 19
    Dernier message: 25/07/2009, 23h07
  3. Probleme interruption pic 18f2620
    Par benybe38 dans le forum Électronique
    Réponses: 2
    Dernier message: 04/06/2009, 10h50
  4. interruption PIC 18F452
    Par azerty987 dans le forum Électronique
    Réponses: 4
    Dernier message: 23/02/2009, 21h29
  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.