Recherche exemple Interruption
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Recherche exemple Interruption



  1. #1
    invite55fe29e6

    Recherche exemple Interruption


    ------

    Bonjour à tous,

    Voici quelques temps que plusieurs personnes m'aide et on pris le temps de m'expliquer comment fonctionne les interruption, Hors je travaille sous NotePad (WinAVR) et je cherher comment programmé en C/C++ une interrutpion externe, j'ai bien compri qu'il faut définir la librairie (#include <avr/interupt.h>) mais enssuite je ne sais pas comment faire de trop, lol. Le principe je pense l'avoir acquis mais la façon de le programmé me semble juste le dernier obstacle à mon aboutissement.

    J'ai vu que cette librairie inclué un petit exemple qui me parle pas beaucoup à vraie dire.

    Si quelqu'un un petit exemple à me faire part sa serai gentil!!!

    En vous remerciant d'avance pour votre aide,

    PS: le programme de scrutage fonctionne le problême était si simple que je n'avai pas vu d'ou sa vené juste une faute de frappe et au lieu de == j'avai mi = et comprenai bien la catastrophe que sa a causé

    Je posterai le programme entier une fois achevé

    En vous remerciant d'avance
    Cordialement
    Paulochon

    -----

  2. #2
    invite55fe29e6

    Re : Recherche exemple Interruption

    Je vien de tourvé un petit exemple que je vais devoir modifier je vous le post et je post ma modification juste à près

    #include <avr/io.h>
    #include <avr/interrupt.h> //Librairie pour la gestion des interruptions


    ISR(INT0_vect) //Vecteur d'interruption de INT0
    {
    PORTA++; //Incrémente PORTA
    }

    int main (void)
    {


    DDRD &=~_BV(2); //INT0 en entrée
    PORTD |= _BV(2); //Active la résistance de tirage sur l'entrée INT0

    DDRA = 0xFF; //Port A en sortie

    GICR |= _BV(INT0); //Interruption sur INT0

    MCUCR |= _BV(ISC01); //Interruption sur front descendant donc dans le registre MCUCR ISC01 = 1 ISC00 =0
    //Vu que MCUCR à comme valeur par defaut 0 on a juste à mettre ISC01 à 1 Cf : datasheet

    sei(); //Active les interruptions

    while(1); //Boncle sans fin


    return 1;
    }

  3. #3
    invite55fe29e6

    Re : Recherche exemple Interruption

    Je vien de faire plusieurs essaie mais sa n'a rien donné, gggrrrrrrrrr

    Une question reste en suspant pour autant puis-je mettre n'importe quel bit d'un port en mode d'interruption

    Je m'explique

    j'utilise l'Atmega8535 est que par exemple je peut mettre les 4 premier bit de mon PORTB en interrution pour que si l'un d'entre en vienne à venir à 1 il lance le scrutage des portes

    Sinon je pensé mettre en interruption INT0 puis enssuite detecter l'ouverture d"un des 4 portes et lancé le scrutage.

    Je vien de reprendre une fois de plus ma doc pour allé voir les registres et essaié de la faire maintenant en C
    Mais la seul chose que manque c'est l'écriture exate qu'il faut employé,
    Merci d'avance Paulochon

  4. #4
    invite55fe29e6

    Re : Recherche exemple Interruption

    ReBonsoir,

    je sais je dois être un , ,

    Mais je viens d'essayer de modifier ce petit exemple pour mon applique,
    Alors dite moi si j'ai bien compri

    ISR(INT0_vect) //Vecteur d'interruption de INT0
    {
    .... Programme de scrutage des portes sur le PORTB ...
    }
    Ici je met mon programme qui va se lancer lorqsue j'orai une interruption
    Essuite

    DDRD &=~_BV(2); //INT0 en entrée
    PORTD |= _BV(2); //Active la résistance de tirage sur l'entrée INT0
    GICR |= _BV(INT0); //Interruption sur INT0
    MCUCR |= _BV(ISC01);

    sei(); //Active les interruptions
    La je défini mes registre pour dire au micro que j'utilise INT0
    Hors je ne vois pas dons cette exemple la gestion du SREG je ne sais pas si il est deja géré par la bibliothèque mais j'aimerai savoir si je suis sur la bonne voie et pourquoi sa ne fonctionne pas pour l'instant voila une aprem que je reli et reli la datasheet,

    Vous allez sans doute me dire que je suis un peu lent à la détente ,


    En vous remerciant d'avance de l'aide que vous allez m'apportez
    Cordialement Paulochon

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

    Re : Recherche exemple Interruption

    Rebonsoir,

    Je relance un peu la discution,

    Je voudrai savoir si quelqu'un a deja programmé sous WinAvr un atmega8535 pour géré ces interruption.

    Merci d'avance Paulochon

  7. #6
    Jack
    Modérateur

    Re : Recherche exemple Interruption

    Je t'aurais bien aidé, mais je ne connais pas les ATMEL.

    N'empêche, quel que soit le µC utilisé, il me semble que tous les compilateurs demandent l'ajout d'un mot réservé lors de la déclaration de la fonction. En général, il s'agit du mot réservé "interrupt".

    C'est forcément renseigné dans la doc de ton compilateur.

    A+

  8. #7
    Jack
    Modérateur

    Re : Recherche exemple Interruption

    Je viens de jeter un rapide coup d'oeil. ISR est une macro qui permet effectivement de déclarer une fonction d'interruption.

    Mais il faut néanmoins renseigner la table des vecteurs d'interruption pour que ton µC fasse le saut.

    A+

  9. #8
    invite55fe29e6

    Re : Recherche exemple Interruption

    Merci Jack, je vais regardé ma doc (encore une fois )

  10. #9
    invite55fe29e6

    Re : Recherche exemple Interruption

    Hummm je reste face a un problême,

    Je tien une lutte sangunaire pour la déclaration du registre GICR qu'il ne veut pas complilé,

    Il me dit que GICR n'est pas déclaré, alors que MCUCR il le reconnais bien

    Comprenais ma frustration d'avoir compris comment fonctionne des interruption mais d'être incapable de finalisé en language C sous WinAVR (NotePad).

    Si quelqu'un a une idée je suis prenneur
    Dans l'attente d'une de vos réponse
    Je vous remercie d'avance
    Cordialement
    Paulochon

  11. #10
    invite923be736

    Re : Recherche exemple Interruption

    Vérifie la revision de ton composant, quand j'utilisait le 8535 il n'y avait pas encore de registre gicr juste un gimsk. Si ca se trouve tu as une datasheet plus recente que ton composant. Le reste de ton programme parait correct.
    Si vraiment tu ne trouve pas la solution essais un programme en assembler, ton code n'est pas très compliqué.

  12. #11
    invite55fe29e6

    Re : Recherche exemple Interruption

    Tu veux dire quoi part la,

    Il faut que je vérifie la bobliothèque des interuption,
    En faite j'ai tout essayé,
    Et pourtan le registre GICR est existant dans le composant,
    J'ai une des dernière version de WinAVR

    Par ou commencerai tu ????

    Merci d'avance
    Cordialement
    Paulochon

  13. #12
    invite55fe29e6

    Re : Recherche exemple Interruption

    Je vien de trouver l'erreur,

    Bon la déclaration dans en dehors du main est bonne,

    Voila la déclaration des registre que WinAVR prend en compte pour la partie du programme principal

    cli();
    GIMSK = 0xC0; // autoriser Int0 Int1
    MCUCR = 0x0A;
    sei();


    Je tien le post au courant de mes avancement
    Merci
    Cordialement
    Paulochon

Discussions similaires

  1. Recherche désespérement un exemple de mouvement en 1 dimension
    Par invite3877a168 dans le forum Physique
    Réponses: 12
    Dernier message: 16/09/2007, 19h43
  2. recherche exemple de programme en C
    Par invite0566787c dans le forum Électronique
    Réponses: 6
    Dernier message: 22/06/2007, 22h32
  3. Interruption I2C
    Par inviteb44153e1 dans le forum Électronique
    Réponses: 4
    Dernier message: 19/01/2007, 10h20
  4. recherche d'un contre-exemple (analyse)
    Par invite74de5f91 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 30/10/2006, 10h20
  5. A la recherche d'un contre exemple [continuité et applications partielles]
    Par GuYem dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 08/09/2005, 21h14
Découvrez nos comparatifs produits sur l'informatique et les technologies.