programme en C pr uC
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

programme en C pr uC



  1. #1
    invitef4a86cda

    programme en C pr uC


    ------

    Bonjour
    Est ce que qlq un peut m'aider à comprendre ce que fait le programme suivant :
    un programme en C pour le pic18f4620

    Code:
    /** I N C L U D E S **************************************************/
    #include "p18f4620.h"
    #include "delays.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <usart.h>
    /**Bits de configuration**********************************************/
    #pragma config OSC=HSPLL 
    #pragma config PWRT=ON
    #pragma config BOREN=OFF
    #pragma config WDT=OFF
    #pragma config MCLRE=ON
    #pragma config PBADEN=OFF
    #pragma config LVP=OFF
    #pragma config XINST=OFF
    #define CLOCK_FREQ		(40000000)      // Hz
    /*#pragma config OSC = INTIO7//Internal oscillator block, port function on RA6 and RA7
    #pragma config FCMEN = OFF//Fail-Safe Clock Monitor disabled
    #pragma config PWRT = OFF//Power-up Timer disabled
    #pragma config WDT = OFF//Watchdog Timer disabled
    #pragma config MCLRE = ON//MCLR pin enabled; RE3 input pin disabled*/
    
    /**Prototypes**********************************************************/
    void InitInterrupt();
    void InitUART(void);
    void Fonction (int fct);
    void UpdateDutyCycle();
    void low_isr();
    /**Variables***********************************************************/
    unsigned int cnt8000 = 0;
    char cntDty = 0;
    char boolUpdateDty = 0;
    const unsigned char Dty [24] = {128, 160, 191, 218, 238, 251, 255, 251, 238, 218, 191, 160, 128, 95, 64, 37, 17, 4, 0, 4, 17, 37, 64, 95}; // Testing
    unsigned long int tempDty1 = 0, tempDty2 = 0;
    /*SETUP ISR VECTOR******************************************************/
    #pragma code low_vector=0x18    //setup the ISR vector
    void low_interrupt (){
      _asm GOTO low_isr _endasm    //jump to interrupt handler
    }
    #pragma code
    /*ISR********************************************************************/
    #pragma interruptlow low_isr    //the ISR
    void low_isr()
    {
        if (PIR1bits.TMR2IF == 1)
    	{
    		PIR1bits.TMR2IF=0;
    		boolUpdateDty = 1;
    
    		if (cnt8000 < 8000)
    			cnt8000++;
    		else
    			cnt8000 = 0;
        }
    }
    #pragma code
    /** D E C L A R A T I O N S *******************************************/
    void main()
    {
    	InitInterrupt();
    	T2CONbits.TMR2ON = 1;
    
    	while (1)
    	{
    		if (boolUpdateDty==1)
    		{
    			boolUpdateDty = 0;
    			UpdateDutyCycle();
    		}
    	}
    }
    
    void InitInterrupt()
    {
    	PIE1bits.TMR2IE = 1;	//enable Timer2 interrupt
            INTCONbits.PEIE = 1;    //enable peripheral interrupts
            INTCONbits.GIE = 1;     //enable glogal interrupts
    	IPR1bits.TMR2IP = 0;	// low priority
    }
    void UpdateDutyCycle()
    {
    
    	if ((cnt8000%334)==0)
    	{
    		tempDty1 = 50000/255;
    		tempDty2 = Dty[cntDty]*tempDty1/100;
    
    		SetDCPWM1(tempDty2);
    		if (cntDty < 22)
    			cntDty++;
    		else
    			cntDty = 0;
    	}
    }
    Merci Bcp , j'attends vote réponse le plus tôt possible .

    -----

  2. #2
    Seb.26

    Re : programme en C pr uC

    Citation Envoyé par bahya Voir le message
    j'attends vote réponse le plus tôt possible .
    ça arrive ... avec le mars et les 100 balles ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  3. #3
    invite0e5af214

    Re : programme en C pr uC

    Il fait des divisions par 255 (pourquoi 255 ???) , des modulos 334 (pourquoi 334 ???) et des comparaisons à 22 (pourquoi 22 ???) dans un PIC !!!!
    Tout ca sans le moindre commentaire bien entendu.
    OMG
    Donc à balancer !

    Si c'est pour reverseingeenering, on peut dire que de temps en temps il appelle la fonction SetDCPWM1() avec des parametres obscurement calculés.
    N'ayant pas cette fonction, on ne peut pas en dire plus...mais dans SetDCPWM1, il y a PWM...peut-etre une piste

Discussions similaires

  1. programme
    Par invite4fc47b21 dans le forum Électronique
    Réponses: 2
    Dernier message: 13/10/2011, 18h54
  2. programme qui lance un autre programme
    Par invite01c3c114 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/02/2011, 13h26
  3. comment utiliser les résultats d'un programme fortran dans un autre programme
    Par invitedb78a3a3 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 30/09/2010, 20h21
  4. programme en vb
    Par invitedba2660f dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 24/03/2007, 17h51
  5. [Brun] Programme TV
    Par invite8f28c2f6 dans le forum Dépannage
    Réponses: 0
    Dernier message: 12/01/2007, 19h52
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...