Bonjour à tous!
voila j'ai un souci avec mon code
Le but étant de décrémenter la luminosité d'une led en modifiant le rapport cyclique de la PWM interne du PIC.
La PWM fonctionne bien seulement j'ai modifié mon code pour ajouter la gestion du Timer1 et décrémenter CCPR1L tout les 61 débordements du registre TMR1 et depuis plus rien
voici mon code:Je suis perdu,je m'embrouille tout seul, j'ai besoin d'un œil avisé externe,de plus je doute de cette ligne de code :Code:#pragma interruptSaveCheck n // no warning or error #pragma bit out0 @ PORTC.0 int a; // //programme d'interruption Timer1 #pragma origin 4 interrupt timer1(void) { a--; if(TMR1IF==1) { if (a==0) { CCPR1L--; // Diminution du DCB de la PWM a=61; out0=1; } TMR1IF = 0; } } // Initialisation void init() { OSCCON = 0b.0111.0000; //configuration horloge interne du pic à 32 MHz OSCTUNE = 0b.0100.0000; //activer la PLL *4 => 32MHz PORTC = 0b.0000.0000; //initialisation du PORTC T1CON = 0b.1000.0000; // pas de préscaler et timer pas mis en route T2CON = 0b.0000.0111; INTCON = 0b.1100.0000; //activation des interruptions PIE1 = 0b.0000.0010; ANSEL = 0b.0000.0000; PIR1 = 0b.0000.0010; PR2 = 0b.1111.1111; CCPR1L = 0b.1111.1111; //Valeur Pour le DCB de la PWM->ici 100% CCP1CON = 0b.0010.1100; // configuration mode PWM et sortie sur P1A-->RC5 TRISC = 0b.0000.0000; // declaration I/O PORTC TMR1IE =1; //activation timer1 out0=1; a=61; } // programme principal void main(void) { init(); for(;;) { out0=0; } }Est-ce que l'on peut décrémenté un mot de 8bits en direct ou il faut passé par une conversion décimale ou autre opérateur logique?Code:CCPR1L--;
merci d'avance pour votre aide
Adrien
-----