Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:


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

signal TTL et pic

  1. KHEOPS1982

    Date d'inscription
    janvier 2003
    Âge
    30
    Messages
    490

    signal TTL et pic

    Salut à tous,

    je voudrais générer un signal TTL de fréquence 10 kHz sur un des ports de mon pic16F84A pendant 5 minutes. Je programme en basic. J'ai essayé plusieurs code mais ça ne fonctionne pas. Je ne sais pas comment je peux faire pour générer le signal pendant un timing. J'arrive bien à programmer le signal mais le timing pose problème
    quelqu'un aurait-il une idée ?

    Merci
     


    • Publicité




      Poursuivez votre recherche
      Recherche personnalisée

  2. invite_P89
    Invité

    Re : signal TTL et pic

    Lu

    Tu peux utiliser le trimer0 pour le calcul du temps voir les feuilles de données

    à bientot
     

  3. HULK28

    Date d'inscription
    janvier 2006
    Localisation
    dans le labo d'essais...
    Âge
    48
    Messages
    9 015

    Re : signal TTL et pic

    Salut,

    comme dit Pom26 tu peux utiliser le timer0, il faut se servir de l'interruption TMR0IF pour incrémenter une variable qui une fois atteinte stoppera ton appli.

    Faire varier le port alternativement de 0 à 5V implique un cadencement à 20KHz, pour produire une fréquence réelle de 10KHz.

    On fixe le quartz à 4MHz:

    TIMER0 -> timer 8 bits => débordement pour 0xFF +1
    On précharge le Timer0 pour un débordement à 50µs.

    Donc il te faut surveiller le bit TMR0IF qui indique un débordement du timer qui correspond à t0=50µs

    Ensuite 5mn correspond à t1=5*60=300s

    Soit une variable t1=300/50µs=6 000 000

    Il te faudra 3 octets pour coder cette variable (long int).

    ce qui donnerait en C:

    Code:
    // Programme pour faire varier l'état du port B2 à 10KHz et arrêt programmé
    // pour t=5mn (utilisation du timer0)
    // Hulk28 pour KHEOPS1982
    // Programme tournant sur PIC16F84A @ 4MHz (mode XT)
    // Compilateur MikroC 7.0.0.3 gratuit pour cette config
    
    // déclaration des variables globales
    
    long int t1;
    
    // Entrée du programme
    
    void main ()
    {
     PORTB.F2=0;             // On initialise le port B2 à 0.
     TRISB.F2=0;             // Direction du port en sortie.
     OPTION_REG=0b01000000;  // Mode Timer, Prescaler sur Timer0 (1:2), horloge interne
     TMR0=231;               // préchargement du timer0 ( (256-231)*2µs=50µs -> 20KHz
                             // car port cyclant alternativement de 0 à 5V -> 10KHz
     INTCON.F5=1;            // interruption autorisée sur Timer0 (TOIF).
     INTCON.F7=1;            // GIE=1 (global interrupt enable)
     t1=0;
    
    
    while(1){} //Le programme tourne dans cette boucle infinie
    
    }     // fin main()
    
    void interrupt()
       {
       if(INTCON.F2==1)       // si le flag d'interruption (TOIF) est détecté on a atteint 50µs
          {
          TMR0=231;           // on recharge Timer0
          PORTB.F2=~PORTB.F2; // on inverse la valeur du port B2.
          INTCON.F2=0;        // on efface le flag pour un nouveau cycle
          t1++;               // on incrémente la variable d'arrêt de 1.
    
          if(t1==6000000)     // ici on atteint le temps t2=300s soit 5mn
           {
           t1=0;
           PORTB.F2=0;        // on arrête l'activité du port B2
           INTCON.F7=0;       // on interdit toute nouvelle interruption
           }
          }
       }  // fin interruption
    8% de ROM utilisé.
    33% de RAM utilisée.

    Prog pas testé mais OK en compilation.
    Tu peux télécharger MikroC si tu veux modifier ce prog.
    On peut faire mieux, mais tu as au moins le principe.

    A toi de jouer.
    Dernière modification par HULK28 ; 24/12/2007 à 02h24. Motif: Erreur sur le quartz corrigée
    HULK

    "Pour la carotte, le lapin est la parfaite incarnation du Mal."
    Robert Scheckley.
     

  4. HULK28

    Date d'inscription
    janvier 2006
    Localisation
    dans le labo d'essais...
    Âge
    48
    Messages
    9 015

    Re : signal TTL et pic

    Je te joins le hex et le fichier c correspondant, il suffit de l'enregistrer en enlevant l'extension .txt.
    @+
    Fichiers attachés
    Dernière modification par HULK28 ; 24/12/2007 à 02h17.
    HULK

    "Pour la carotte, le lapin est la parfaite incarnation du Mal."
    Robert Scheckley.
     

  5. KHEOPS1982

    Date d'inscription
    janvier 2003
    Âge
    30
    Messages
    490

    Re : signal TTL et pic

    Salut à tous,

    merci pour ces renseignements. Je n'avais plus pensé à utilisé le timer0.

    @+
     

  6. HULK28

    Date d'inscription
    janvier 2006
    Localisation
    dans le labo d'essais...
    Âge
    48
    Messages
    9 015

    Re : signal TTL et pic

    Tiens nous au courant du test.
    HULK

    "Pour la carotte, le lapin est la parfaite incarnation du Mal."
    Robert Scheckley.
     


    • Publicité



  7. KHEOPS1982

    Date d'inscription
    janvier 2003
    Âge
    30
    Messages
    490

    Re : signal TTL et pic

    Salut à tous,

    ça fonctionne.

    Merci
     


Poursuivez votre recherche :




Sur le même thème :




 

Discussions similaires

  1. Generer signal PWM precis avec un PIC
    Par black_is_beautiful dans le forum Électronique
    Réponses: 9
    Dernier message: 06/04/2012, 20h05
  2. Générer un signal carré 500hz avec flowcode sur pic 16f84
    Par lacostebizu dans le forum Électronique
    Réponses: 2
    Dernier message: 09/02/2007, 21h25
  3. exploiter un signal créneau avec un pic
    Par rnbtx dans le forum Électronique
    Réponses: 1
    Dernier message: 10/08/2006, 15h04
  4. traitement de signal a base d'un pic
    Par khalid dans le forum Électronique
    Réponses: 12
    Dernier message: 23/11/2005, 21h44
  5. probleme de generation de signal à partir d'un PIC
    Par Vincent_69 dans le forum Électronique
    Réponses: 4
    Dernier message: 22/08/2004, 19h00


Les tags pour cette discussion