programation en c
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

programation en c



  1. #1
    invitea3a9ef18

    Question programation en c


    ------

    Bonjour tout le monde
    Voila je vous expose mon soucis :
    Je doit tout d'abord généré un signal avec un nombre d'impulsion de 12. Et ensuite tenir un temps de pause de 18. La période du signal est a la fréquence de 30Hz. (pour la photo les valeur sont fausse, mais la forme du signal est bonne)

    Je vous montre pour commencé mon programme qui ne constitue seulement un signal carré.
    Je ne sais pas comme faire pour marqué ce temps d’arrêt : Nom : Snapchat--2345551493430357727.jpg
Affichages : 131
Taille : 131,7 Ko
    Le programme :
    Code:
    *****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.9 Evaluation
    Automatic Program Generator
    © Copyright 1998-2012 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    
    Project : 
    Version : 
    Date : 02/04/2015
    Author : 
    Company : 
    Comments: 
    
    
    Chip type : ATtiny2313
    AVR Core Clock frequency: 8,000000 MHz
    Memory model : Tiny
    External RAM size : 0
    Data Stack size : 32
    *****************************************************/
    
    #include <tiny2313.h>
    
    // La variable periode représente la période du signal produit
    // en nombre de cycles de l'horloge du timer 0 (fréquence 1kHz)
    unsigned int periode = 124; // pour 1ms
    
    // Réponse à l'interruption provoquée par une comparaison réussie entre
    // le timer0 TCNT0 et le registre de comparaison OCR0A
    // Ce programme prépare l'instant de la prochaine inaerruption
    
    interrupt [TIM0_COMPA] void timer0_compa_isr(void)
    {
    	OCR0A = OCR0A+ (periode / 2) ; // prochaine interruption dans 500µs
    }
    
    void main(void)
    {
        // Declare your local variables here
    
        // Configuration de PB2 en sortie 
        DDRB=0x04;
    
        // Timer/Counter 0 initialization
        // Clock source: System Clock
        // Clock value: 125,000 kHz
        // Mode: Normal top=0xFF
        // OC0A output: Toggle on compare match
        // OC0B output: Disconnected
        TCCR0A=(0<<COM0A1) | (1<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
        TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (1<<CS00);
        TCNT0=0x00;
        OCR0A=0x3E;
        OCR0B=0x00;
    
        // Autoriser l'interruption par OCF0A
        TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (0<<TOIE0) | (1<<OCIE0A);
    
        // Autoriser les interruptions
        #asm("sei")
    
        while (1)
        {
            // Place your code here
        }
    
    }
    Ha oui, je suis sous language C et utilise le µc ATTINY2313.
    Si vous avez la moindre question je suis la !
    Et merci d'avance pour votre aide.

    -----
    Dernière modification par Antoane ; 08/05/2015 à 17h47. Motif: Ajout balises [code]

  2. #2
    paulfjujo

    Re : programation en c

    bonjour,



    c'est 12 et 18 ? 12 et 26 sur ton croquis!
    c'est bien 30Hz? .. 38KHz sur ton croquis!
    largeur de l'impulsion ? x µS
    pour connaitre le pas ...


    dans le traitement interuption, calé sur le pas (l'ecart entre) de pulse
    rajoute un compteur .. de pas
    si inferieur à 12 .. genere la pulse de largeur xµS
    si >12 ..on ne fait rien
    si > 30 (12+18?) => Raz dudit compteur

  3. #3
    invitea3a9ef18

    Re : programation en c

    Coucou, merci pour ton aide tout d'abord.
    Ensuite pour les donnée sur la photo j'ai bien précisé que la forme du signal et juste et pas les données.

    Maintenant je vois bien ce que je doit faire, mais en faite je suis plus que nul en programmation. Donc en faite ce qu'il faut faire je l'ai bien compris, mais le mettre en C, je ne sais pas comment faire.

  4. #4
    paulfjujo

    Re : programation en c

    si 30Hz, a periode de repetition du train de 12 pulses est donc de 1000/30=> 33 mS ?
    duree d'une pulse ?
    pas entre les pulses ?

    presente donc un schema corrigé !

    je ne connais pas ATMEL , PIC only..

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

    Re : programation en c

    Déjà il faudrait mettre la variable periode en volatile pour pouvoir l'utiliser dans l'interruption...quoi que tu l'utilise pas vraiment, donc tu pourrais juste mettre un #define
    Sinon pour la suite répond au question dans le poste d'avant...sinon on sait pas faire grand chose!
    Là où va le vent...

Discussions similaires

  1. la programation des pic en C
    Par invite9ee05028 dans le forum Électronique
    Réponses: 7
    Dernier message: 27/12/2012, 18h33
  2. programation PIC
    Par invite225eee92 dans le forum Électronique
    Réponses: 1
    Dernier message: 06/02/2011, 09h50
  3. Programation Pic
    Par invited8a05a7b dans le forum Électronique
    Réponses: 8
    Dernier message: 13/05/2009, 16h37
  4. Programation en C
    Par invite23d08468 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 19/12/2008, 20h18
  5. programation
    Par invite1687c371 dans le forum Électronique
    Réponses: 2
    Dernier message: 10/09/2007, 21h03
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...