Bonjour
J’ai créé un petit programme pour PIC12F683 qui doit mesurer par un CAN la tension donné par un potentiomètre et ensuite ajuster une PWM en fonction de celle-ci.
Le problème est qu’à la mise sous tension du µC, il commence par envoyer une impulsion positive très courte. Même si la PWM est réglé à 0 à ce moment là.
Comme je pense que ça doit venir de la configuration des registres je mets juste le début de mon code :
MerciCode:#include <xc.h> #pragma config IESO = OFF #pragma config BOREN = OFF #pragma config CPD = OFF #pragma config CP = OFF #pragma config MCLRE = ON #pragma config PWRTE = ON #pragma config WDTE = OFF #pragma config FOSC = INTOSCIO // Osc interne + GP4 et GP5 libre #define A0 GPIObits.GP0 #define A1 GPIObits.GP1 #define A2 GPIObits.GP2 #define A4 GPIObits.GP4 //Pas de GP3 #define A5 GPIObits.GP5 #define _XTAL_FREQ 4000000 //la freq de ton oscillateur void main(void) { // OSC : OSCCONbits.IRCF = 0b111; // 4Mhz OSCCONbits.SCS = 0 ; // Configuration de l'horloge systeme TRISIO = 0b00011001 ; // --543210 CMCON0 = 0b00000111 ; A2 = 0 ; // CAN : ADCON0 = 0b00000001 ; // AN0=000 AN3=011 ANSEL = 0b00011001 ; // Fosc/8, AN0 et AN3 Analog // PWM : // Tpwm = (PR2+1)*4*Tosc*TMR2 // a = (CCPR1L:CCR1CON<4:5>)*Tosc*TMR2 PR2 = 124 ; // 500Hz CCPR1L = 123 ; TRISIObits.TRISIO2 = 0 ; T2CON = 0b00000110 ; // Prescal=16 =1x, 4=01, 1=00 CCP1CON = 0b00001100 ; // 00(2LSB)1100 int i, j, k, att=0, cont=1 ; unsigned int POT=0, AMP=0, PWM=0 ; unsigned long int AmpMoy=0 ; signed long int POT32=0, AMP32=0 ; unsigned long int x0=0, x1024=1024 ; ………………………………… ………………………………… ………………………………… ………………………………… }
-----