Les interruptions en C.
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Les interruptions en C.



  1. #1
    memo1402

    Les interruptions en C.


    ------

    Bonjour,

    Je voudrais comprendre ce que sont les interruptions et essayer de comprendre comment on les utlise à fin de pouvoir mettre 2 timers de mon pic 18f2520 en cascade. J'ulise le compilateur HIGH-TECH universal tool. Merci.

    -----

  2. #2
    drbug

    Re : Les interruptions en C.

    Beaucoup de sites expliquent bien :
    http://fr.wikiversity.org/wiki/Utili...0_en_langage_C
    http://extremeelectronics.co.in/micr...handling-in-c/

    Est-ce que tu as une question en particulier ?

  3. #3
    memo1402

    Re : Les interruptions en C.

    Ppour etre precis, mon but est de fabriquer un signal caré de 50 hz à cycle variable c'est possible?

  4. #4
    terriblement

    Re : Les interruptions en C.

    Oui...Pas forcément besoin de mettre deux timer en cascade, suffit de réduire la fréquence du microcontroller

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

    Re : Les interruptions en C.

    tu fais une boucle avec des temporisation qui mette ON et OFF une sortie et tu set l'oscillation en RC et tu la règle avec un potentiomètre...

  7. #6
    RISC

    Re : Les interruptions en C.

    Salut memo,

    Concernant les timers il n'est pas possible de les cascader de façon hardware.
    Peux-tu changer de PIC ? il y a peut-être des solutions sur d'autres modèles.
    Utilises tu un quartz ou l'horloge interne ?

    Quel compilateur HiTech utilises-tu ? Je pense que c'est une très vieille version.
    Télécharges XC8 (version renommée de Hitech) qui existe aussi en version gratuite.

    a+
    Dernière modification par RISC ; 31/07/2014 à 10h40.

  8. #7
    memo1402

    Re : Les interruptions en C.

    Merci pour vos reponses a tous. Pourquoi il ne serait pas possible de mettre 2 timers en cascades? J'ai vu dans la datasheet qu'on peut faire une interruption en ce qui concerne le debordement du timer. Il me semble que je pourrait profiter de cela mais je ne sais pas comment programmer l'interruption. J'utilise un quartz externe 20Mhz pour l'oscillateur.

  9. #8
    memo1402

    Re : Les interruptions en C.

    Citation Envoyé par mgduc Voir le message
    tu fais une boucle avec des temporisation qui mette ON et OFF une sortie et tu set l'oscillation en RC et tu la règle avec un potentiomètre...
    Merci pour ta réponse qui me semble etre la solution. Si tu pouvais seulement m'expliquer comment faire car je suis débutant en programmation de PIC

  10. #9
    mgduc

    Re : Les interruptions en C.

    Citation Envoyé par memo1402 Voir le message
    Merci pour ta réponse qui me semble etre la solution. Si tu pouvais seulement m'expliquer comment faire car je suis débutant en programmation de PIC
    Je ne connais pas le C malheureusement, je programme seulement en assembleur. Mais si ça peux t'aider, tu n'a pas besoin de programmation pour faire varier la fréquence. Tu règle l'oscillation sur _RC_OSC donc avec une résistance et condensateur mais au lieux d'une résistance tu mets un potentiometre... Pour le reste, tu fait une boucle, tu active une sortie, tu mets une tempo, tu désactive la sortie, tu mets une tempo et tu reviens au début de ta boucle.

    Avec cette technique la précision n'est pas superbe mais si ce n'est pas critique pour ce que tu veux faire, c'est la bonne solution.

  11. #10
    mgduc

    Re : Les interruptions en C.

    Citation Envoyé par memo1402 Voir le message
    J'utilise un quartz externe 20Mhz pour l'oscillateur.
    Pour allez avec ma réponse, le quartz doit être remplacer par un condensateur et un potentiomètre ou une résistance variable...
    Dernière modification par mgduc ; 01/08/2014 à 06h14.

  12. #11
    Murayama

    Re : Les interruptions en C.

    Bonjour!

    Normalement, un carré à 50Hz à cycle variable peut se faire avec un unique timer configuré
    en PWM. Une boucle n'est jamais une bonne solution. Pour tout dire, je ne connais pas le PIC
    mais j'imagine que c'est la même chose.
    Un timer a une période de base et des registres de comparaison.
    Admettons que vous ayez une fréquence de processeur de 1 MHz. Si la période de votre signal
    carré est de 50Hz, alors il faut mettre la période de base à 20 000. (ou à 19999 selon les timers).
    Et le rapport cyclique sera fonction directe du registre de comparateur que vous choisissez.
    Exemple: vous voulez 50%, alors vous mettez le registre de comparaison à 10000 (ou 9999).
    Vous voulez 25, alors ce sera 5000, etc... Et une fois que c'est fait, vous avez le signal carré
    qui va tourner sans charger le processeur, ad vitam, ou du moins jusqu'à ce que vous l'arrêtiez.
    Et pour changer le rapport, il suffit de changer le registre de comparaison.

    Pascal

  13. #12
    mgduc

    Re : Les interruptions en C.

    Je viens de réaliser que ce que tu nomme cycle n'est pas la fréquence mais le Duty... donc oublie mon idée car cela te donnera seulement une fréquence variable du même "cycle"...

  14. #13
    mgduc

    Re : Les interruptions en C.

    50hz en PWM me semble impossible avec un quartz de 20mHZ. Trouve le bon quartz ou utilise l'horloge interne si la stabilité n'est pas importante. Et pour le potentiomètre, tu devra te brancher sur l'ADC du pic pour convertir l'analogique en numérique et définir avec celui si le DUTY "CYCLE" en conséquence.
    Dernière modification par mgduc ; 01/08/2014 à 07h07.

  15. #14
    paulfjujo

    Re : Les interruptions en C.

    bonjour

    Pourquoi il ne serait pas possible de mettre 2 timers en cascades?
    Oui, cela me parait etre une bonne soltution
    un premier timer (ex Timer1 en mode interrupt à 20mS
    qui fait la lecture ADC potar sur voie RA0 0 à 1023 >> 1 ramené => 0 a 512
    que l'on limitera à 10 ..490 par exemple pour les butees mini maxi
    et qui donnera un NBmaxi Overfow Timer0
    arme le Timer0 calé à 40µS (prescaler=2 Tmr0=156)
    Mets la Sortie (ex RA4 ) à 1
    ...
    au bout NBoverflow dans l'interrupt timer0
    on remet la sortie RA4 à 0
    on desarme timer0
    ...
    l'interrupt Timer1 relance le cyclage au bout des 20mS

    et cela devrai laisser (un peu ) de temps dans le main pour faire autre chose ?

  16. #15
    RISC

    Re : Les interruptions en C.

    Salut,

    Si tu peux changer de PIC ,il existe des moyens très simples pour avoir des fréquences basses.
    Certains PICs intègrent des cellules logiques programmables (CLC). Cela permet de router n'importe quel périphérique sur n'importe quel autre.
    Exemple : tu peux prendre la sortie d'un TIMER et l'envoyer sur l'entrée d'un autre. Tu peux aussi faire des diviseurs ou des équations logiques (combiner plusieurs entrées pour sortir du mode sleep).
    Un PIC comme le PIC16F1709 possède ce genre de cellule CLC. De plus les broches peuvent être affectées aux périphériques par soft (PPS).

    a+

  17. #16
    paulfjujo

    Re : Les interruptions en C.

    Soultion (MikroC) avec 2 timers
    variation de 10 à 490 pas de 40µS avec potar sur ADC RA0
    uniquement via interruptions .. donc laisse du temps au MCU pour autre chose..

    voir ma reponse sur cet autre fil traitant apparament le meme probleme..
    http://www.edaboard.com/thread320442.html
    Re: need 2 pwm pulses of 50hz with 180 degree phase shift

Discussions similaires

  1. les interruptions
    Par mmm999 dans le forum Électronique
    Réponses: 1
    Dernier message: 08/05/2012, 17h58
  2. PIC et les interruptions
    Par mmm999 dans le forum Électronique
    Réponses: 6
    Dernier message: 06/05/2012, 10h34
  3. interruptions I2C sur PIC 18f
    Par invite45b23d34 dans le forum Électronique
    Réponses: 2
    Dernier message: 08/02/2011, 08h13
  4. Les interruptions
    Par invite1e012ef4 dans le forum Électronique
    Réponses: 5
    Dernier message: 26/02/2009, 15h11
  5. interruptions
    Par invite715c3fc5 dans le forum Électronique
    Réponses: 0
    Dernier message: 10/06/2008, 14h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.