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

Optimisation programme - µC 16F688 - CAN



  1. #1
    SebMK

    Optimisation programme - µC 16F688 - CAN


    ------

    Bonjour à tous !

    Voila je suis débutant en µC et programmation. J'ai un petit projet à faire pour le bahu : utiliser un microcontrolleur (PIC 16F688) pour mesurer plusieurs niveaux de tensions grâce CAN du PIC, une fois fait commander des relais ( via un transistor) et faire clignoter une led différemment suivant chaque cas.

    J'ai fait un programme en c, compilé avec PCWHD (ccs). Ce programme fonctionne mais trop lentement à mon gout (2sec pour changer de cas) ! Je vous fournis le schéma + la prog en c, pour que vous disiez se que vous en pensez. Quel moyen d'optimiser cette prog ??

    En effet le programme lance une CAN sur 8bit, je récupère le résultat qui est multiplié par une constante pour avoir une tension. Cette tension mesurée parcours des boucle if,else : "si" je suis dans le cas je fait "ça" sinon je met à zéro mes PIN concernées. voilà en gros mon petit programme.

    Je prends tout les conseils qui viendrons

    Code:
    #include <16F688.h>
    #device adc=8
    
    #use delay(clock=8000000)
    
    float vin0,Rtemp;
    int n=0,i;
    
    void seq_1 ()
    {
    output_high(PIN_C0);
    output_high(PIN_C1);
    output_high(PIN_C3);
    }  
    
    void seq_2 ()
    {
     output_high(PIN_C2);
     for(i=0;i<2;i++)
     {
      output_high(PIN_C3);
      delay_ms(500);
      output_low(PIN_C3);
      delay_ms(500);     
     }
    }
    
    void seq_3 ()
    {
     output_high(PIN_C2);
     for(i=0;i<2;i++)
     {
      output_high(PIN_C3);
      delay_ms(50);
      output_low(PIN_C3);
      delay_ms(100);     
     }
    } 
     
    void seq_4 ()
    {
     for(i=0;i<2;i++)
     {
      output_high(PIN_C4);
      delay_ms(2500);
      output_low(PIN_C4);
      delay_ms(2500);     
     }
    }  
    
    
    main()
    {
      
       setup_oscillator(OSC_8MHZ);
       setup_adc_ports(sAN2);
       setup_adc(ADC_CLOCK_INTERNAL);
       set_adc_channel(2);
    
    while(1)
    {
    
           
          //delay_ms(500);
          Rtemp=read_adc();
          
          vin0=Rtemp/51;
          
          
          if((vin0>=0) && (vin0<1.5))  // tension à 1V
          { 
           seq_1();
          }
          else output_low(PIN_C2);
          
          if((vin0>=1.5) && (vin0<2.2)) // tension à 2V
          { 
          seq_2();
          }
          
          
          if((vin0>=2.2) && (vin0<2.9)) // tension à 2.5V
          { 
          seq_3();
          }
          else 
          {
           output_low(PIN_C0);
           output_low(PIN_C1);
           output_low(PIN_C3);
          }
          
           if((vin0>=2.9) && (vin0<3.5)) // tension à 3V
          { 
          seq_4();
          }
         
      
    }      
    
    }
    Pièce jointe supprimée

    -----
    Dernière modification par JPL ; 29/05/2012 à 14h08.

  2. #2
    JPL

    Re : Optimisation programme - µC 16F688 - CAN

    Les schémas doivent être postés dans un format graphique (gif, png ou jpg). Merci.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    SebMK

    Re : Optimisation programme - µC 16F688 - CAN

    Je repost mon schéma en jpg (dsl)
    Images attachées Images attachées

Sur le même thème :

Discussions similaires

  1. l'oscillateur interne du PIC 16F688
    Par arzew dans le forum Électronique
    Réponses: 11
    Dernier message: 23/05/2012, 06h30
  2. optimisation de programme sous matlab
    Par soldius87 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 14/05/2012, 11h26
  3. comment utiliser les résultats d'un programme fortran dans un autre programme
    Par physicstudent dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 30/09/2010, 20h21
  4. PIC 16F688 et TMR0
    Par blinbling dans le forum Électronique
    Réponses: 26
    Dernier message: 05/07/2010, 14h26
  5. PICBASIC PRO: Thermometre + LCD + 16F688
    Par nquere dans le forum Électronique
    Réponses: 7
    Dernier message: 07/11/2008, 19h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.