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

Le PWM avec MikroC



  1. #1
    inoxxam

    Le PWM avec MikroC

    Hello!
    Pour un projet personnel je veux faire de la MLI avec un PIC18F4431 pour contrôler un moteur. Je simule avec ISIS Proteus VSM parce que je n'ai pas encore tout le matériel. J'ai essayé le script du manuel de MikroC pour la MLI:
    Code:
    char i=0, j=0;
    
    void main()
    {
          PORTC=0xFF;
          Pwm2_Init(5000);
          Pwm2_Start();
          
          while(1)
          {
                for(i=0; i<20; i++) Delay_us(500);
                j++;
                Pwm2_Change_Duty(j);
          }
    }
    Seulement ça ne fonctionne pas sur les entrées PWM0, PWM1, PWM2 et PWM3 mais uniquement sur CCP1 et ce quel que soit le chiffre que je mets dans le nom de la fonction. Quelqu'un sait-il comment on fait pour le mettre sur ces sorties?
    Merci d'avance et à bientôt.

    -----


  2. Publicité
  3. #2
    Niluje__

    Re : Le PWM avec MikroC

    Bonjour,

    Verifie dans le fichier .h de ton PIC, que les fonctions Pwm2_... correspondent aux entrées que tu veux =)

  4. #3
    inoxxam

    Re : Le PWM avec MikroC

    Je ne trouve pas les .h? Je trouve les .c mais dedans il n'y a pas grand chose d'intéressant.
    Sinon connaissez-vous un compilateur comprenant des libraires pour le PWM sur les PICs?

  5. #4
    inoxxam

    Re : Le PWM avec MikroC

    Alors il se trouve que les sorties PWM0 à PWM4 sont enfaite des sorties Power PWM et MikroC n'a pas de librairies qui gèrent le Power PWM. Donc il va falloir que j'improvise. Est-ce que quelqu'un sait commet ca marche le Power PWM?

  6. #5
    BastienBastien
    Invité

    Re : Le PWM avec MikroC

    Bonsoir,

    MikroC gère le PWM. C'est quoi le "Power PWM" ?

    Voici un exemple de code fourni avec le compilateur :

    Code:
    /*
     * Project name:
         PWM1_Test_01 (PWM1 library Demonstration)
     * Copyright:
         (c) MikroElektronika, 2005-2008
     * Description:
         This is a simple demonstration of PWM1 library, which is being used for
         control of the PIC's CCP module. The module is initialized and started,
         after which the PWM1 Duty Ratio can be adjusted by means of two buttons
         connected to pins RA0 and RA1. The changes can be monitored on the CCP
         output pin (RC2).
     * Test configuration:
         MCU:             PIC16F877A
         Dev.Board:       EasyPIC5
         Oscillator:      HS, 08.0000 MHz
         Ext. Modules:     -
         SW:              mikroC v8.0
     * NOTES:
         - Pull-down PORTA and connect button jumper (jumper17) to Vcc.
    */
    
    unsigned short current_duty, old_duty;
    
    void InitMain() {
      PORTB = 0;                          // set PORTB to 0
      TRISB = 0;                          // designate PORTB pins as output
    
      ADCON1 = 7;                         // all ADC pins to digital I/O
      PORTA = 255;
      TRISA = 255;                        // configure PORTA pins as input
    
      PORTC = 0;                          // set PORTC to 0
      TRISC = 0;                          // designate PORTC pins as output
      PWM1_Init(5000);                    // Initialize PWM1 module at 5KHz
    }
    
    void main() {
      initMain();
      
      current_duty     = 16;              // initial value for current_duty
      old_duty    = 0;                    // old_duty will keep the 'old current_duty' value
      PWM1_Start();                       // start PWM1
      
      while (1) {                         // endless loop
        if (Button(&PORTA, 0,1,1))        // button on RA0 pressed
          current_duty++ ;                //    increment current_duty
        if (Button(&PORTA, 1,1,1))        // button on RA1 pressed
          current_duty-- ;                //    decrement current_duty
    
        if (old_duty != current_duty) {   // if change in duty cycle requested
          PWM1_Change_Duty(current_duty); //    set new duty ratio,
          old_duty = current_duty;        //    memorize it
          PORTB = old_duty;               //    and display on PORTB
        }
    //    Delay_ms(200);                    // slow down change pace a little
      }
    }

  7. A voir en vidéo sur Futura
  8. #6
    inoxxam

    Re : Le PWM avec MikroC

    Citation Envoyé par BastienBastien Voir le message
    This is a simple demonstration of PWM1 library, which is being used for control of the PIC's CCP module.
    MikroC gère le PWM mais uniquement par les modules CCP. Or il n'y en a que deux sur le 18F4431. Il y'a aussi des ports PWM dédiés sur ce PIC, qui sont plus nombreux, mais qui ne sont pas gérés pas la librairie de MikroC.

  9. Publicité
  10. #7
    DavidDB

    Re : Le PWM avec MikroC

    Salut,

    Si tu veux une initialisation du PWM moteur pour 18F4431 en Assembleur, fait signe...

    David.

  11. #8
    inoxxam

    Re : Le PWM avec MikroC

    Je pense que je vais changer pour un modèle de PIC avec plus de CCP tel que le 18F8520 (en plus il a plein d'entrées sorties, j'ai une petite idée derrière la tête...) mais fais voir comment tu fais l'initialisation du PWM en assembleur (par curiosité et aussi ca pourrait me servir un jour) s'il te plait.

    Merci d'avance!

  12. #9
    DavidDB

    Re : Le PWM avec MikroC

    Salut,

    Code:
    	; initialisation du PWM Contrôle moteur
    Init:	movlw	0x00		; 1:1 prédiviseur INT PWM, 1:1 prédiviseur(Fosc/4)
    	movwf	PTCON0		; fonctionnement libre (Free Running)
    	; initialisation de la période
    	movlw	0x80		; PTPERL et PTPERH pour un avoir 78,126KHz de fréquence PWM
    	movwf	PTPERL		; PTPERH:PTPERL = ((Fosc/4)/(PWMfreq x PTMRps))-1
    	movlw	0x00		; PTPERH:PTPERL = ((40MHz/4)/(78KHz x 1))-1 = 128d = 80h
    	movwf	PTPERH		; duty-cycle 100% avec 516d = 204h = 1000 0001 00(Q-clocks)
    	; initialisation des sorties PWM
    	movlw	b'01111110'		; PWM 1,3 et 5 OK pour la mise en service(RB1-3-4)
    	movwf	PWMCON0		; fonctionnement indépendant des sorties PWM
    	
    	bsf	PWMCON1, OSYNC	; OVDCON are synchronous to the PWM timebase	
    
    	clrf	DTCON		; pas de temps mort
    	
    	clrf	OVDCOND		; pas d'activité PWM pour le moment
    
    	clrf	OVDCONS		; sortie PWM à gnd quand pas actif
    	
    	clrf	FLTCONFIG		; pas de gestion des défauts
    	
    	clrf	SEVTCMPL		; effacer car pas de besoin de synchro 
    	clrf	SEVTCMPH		; pour la conversion A/D

    Le rapport cyclique est géré par les registres PDCxL et PDCxH.

    David.

  13. #10
    inoxxam

    Re : Le PWM avec MikroC

    Bonjour,
    Genial en plus tu as tout commenté de sorte que je comprenne!

    Merci beaucoup et a bientôt.

  14. #11
    DavidDB

    Re : Le PWM avec MikroC

    Citation Envoyé par inoxxam Voir le message
    Genial en plus tu as tout commenté de sorte que je comprenne!
    Non, ce n'est pas spécialement pour toi que c'est commenté, mais plutôt pour moi lors de la maintenance du programme...

    Un programme peu ou mal commenté devient totalement illisible même pour son auteur quelques mois après son codage.

    De plus, les commentaires permettent de comprendre plus facilement la logique de programmation utilisée par le programmeur.

    David.

  15. #12
    inoxxam

    Re : Le PWM avec MikroC

    Oui c'est vrai, j'ai le défaut de ne pas assez commenter ^^
    Merci encore!

  16. Publicité
  17. #13
    samisouayeh

    Re : Le PWM avec MikroC

    mon pfe de fabrique tester le question :comment peut test valeur de résistance,court circuit,test led, consommation de courant,a bas de pic16f877 avec le mikroC et sumlation avzc iziz?
    merci pour votre attion

Sur le même thème :

Discussions similaires

  1. Programmer un 16F628 avec MikroC
    Par inoxxam dans le forum Électronique
    Réponses: 30
    Dernier message: 16/10/2011, 00h00
  2. débogage InCircuit avec MikroC
    Par BastienBastien dans le forum Électronique
    Réponses: 5
    Dernier message: 06/04/2008, 18h30
  3. problème avec mikroc et les entrées analogiques
    Par lukes dans le forum Électronique
    Réponses: 1
    Dernier message: 09/01/2008, 20h59
  4. Problème de PWM avec L298
    Par gawelec dans le forum Électronique
    Réponses: 4
    Dernier message: 16/12/2007, 18h44
  5. problème avec mikroC
    Par ABN84 dans le forum Électronique
    Réponses: 4
    Dernier message: 07/03/2007, 16h47