pic18f2550 external interrupt int0

Tagged: ,

Viewing 5 reply threads
  • Author
    Posts
    • #5114
      Avatarnadhem
      Participant

      void interrupt_low ()
      {
      if(INT0IF_bit==1)
      { RC1_bit=1; // alimenter la diode rouge
      delay_ms(3000) ;
      RC1_bit=0;
      INT0IF_bit=0; //desactiver le flag
      }
      }
      void main() {
      TRISC=0; // portc output
      TRISB0_bit=1; //select rb0 as input pin
      INTCON = 0xD0; //active Interupt Int0
      INTCON2 = 0x40; //config Interupt sur front montant
      IPEN_bit=0;
      PIE1=0;
      PIE2=0;
      PIR1=0;
      PIR2=0;
      while(1)
      {
      delay_ms(1000);
      RC0_bit=1; //alimenter la diode bleu

      }
      }

      ceci le code. il ne fonctionne pas je le tester sur un pic 16f877A il fonctionne. please helppp

    • #5115
      Bitahwa BinduBitahwa Bindu
      Keymaster

      Comment avez-vous configuré votre horloge et vos bits de configuration? Rappelez-vous que ce PIC a un port USB, ses réglages d’horloge sont différents des autres PIC.

      Comment avez-vous déclenché l’interruption? Avez-vous un bouton connecté à la broche RB0? Comment est-il connecté?

      Comment ce code fonctionne-t-il avec PIC16F877A alors que ce PIC n’a pas de registre INTCON2? comment est-ce possible? Parce qu’avec PIC16F877A, le bit Interrupt Edge Select est défini dans le registre OPTION_REG et non dans le registre INTCON2.

      À l’avenir, merci de poster votre question dans le bon forum, comme vous pouvez le constater, vous avez posté votre question dans le forum Flowcode alors que ce code est pour MPLAB XC8.

    • #5119
      Avatarnadhem
      Participant

      oui je sais que le registre intcon2 ne trouve pas dans pic 16f877A je le remplasse par optionreg le code fonctionne. comment je regler l’horloge. en fonction de quoi je regler l’horloge. oui je fais la simulation isis. je mais un bouton poussoir au RB0 .

    • #5120
      Bitahwa BinduBitahwa Bindu
      Keymaster

      Vous voyez, c’est le problème. Vous publiez un code différent qui, selon vous, ne fonctionne pas pour ce PIC18F2550 mais le même code exact fonctionne pour le PIC16F877A. C’est trompeur et une perte de temps pour la personne qui essaie de vous aider.
      poster le code complet correct que vous avez écrit pour le PIC18F2550 avec les bits de configuration, ce sont les sections de codes qui commencent par #pragma, nous pourrons alors vous aider.

    • #5121
      Avatarnadhem
      Participant

      /******** interruption externe “INTE0” sur le bit RB0 *********/
      void interrupt()
      {
      if(INTCON.INT0IF&& INT0IE_bit)
      {
      INT0IF_bit = 0;
      INT0IE_bit = 0;
      RC1_bit=1; // alimenter la diode rouge
      delay_ms(3000) ;
      RC1_bit=0; //eteindre la diode rouge
      }
      }
      void main() {
      TRISC=0; // portc output
      TRISB0_bit=1; //select rb0 as input pin
      ADCON1 = 0x0F; // AD converter off
      CMCON = 7;

      while(1)
      {
      INTCON = 0x90; //active Interupt Int0
      INTCON2.INTEDG0=0; //config Interupt sur front montant
      RCON.IPEN=0;
      RC0_bit=1; //alimenter la diode bleu
      }
      }

       

      ce programme fonctionne sur pic18F2550 c’est bon

      je travail par mikroc . comme tu vois la configuration des registres INTCON et INTCON2 se trouve dans le boucle while(1)

      merci pour votre attention

    • #5123
      Bitahwa BinduBitahwa Bindu
      Keymaster

      Vous ne pouvez pas configurer les interruptions de cette façon.
      Vous ne pouvez pas mettre la configuration d’interruption dans la boucle while (1), cela ne fonctionnera jamais.

      Vous ne mettez que des choses qui doivent être exécutées de manière continue dans la boucle while (1). Pas la configuration INTCON.
      S’il vous plaît lisez ce tutoriel et suivez exactement comment nous l’avons fait, cela devrait fonctionner exactement avec votre exemple.
      Voir les étapes pour configurer l’interruption.

      https://www.studentcompanion.co.za/pic-microcontroller-interrupts-mikroc/

      Si vous avez besoin d’une vidéo, toutes les étapes sont expliquées clairement dans cette vidéo. Suivez simplement les étapes ici et oubliez votre code précédent et cela devrait fonctionner: https://youtu.be/QzMoSCwfxuM

       

Viewing 5 reply threads
  • You must be logged in to reply to this topic.
Select your currency
ZARSouth African rand
EUR Euro