bonjour,
la seule interference avec RC2 serait eventuellement la Gate du Timer1
verifier si c'est bien PWM1_Init qui est associé à RC2 et non RC1 !
car sur les 16F rescent:
PWM1 module is initialized on the RC1 pin and PWM2 module on RC2 pin.
ECCP1 compare output and
ECCP1 PWM output; takes priority over port data => sur
RD4 ?
d'autant que dans le fichier listing *.lst resultant de la compilation on peut y voir :
Code : Tout sélectionner
_PWM1_Start:
;__Lib_PWM_d4c2675.c,19 ::
;__Lib_PWM_d4c2675.c,20 ::
0x006C 0x9895 BCF TRISD4_bit, BitPos(TRISD4_bit+0)
;__Lib_PWM_d4c2675.c,21 ::
0x006E 0x84CA BSF T2CON, 2
;__Lib_PWM_d4c2675.c,22 ::
0x0070 0x0E0C MOVLW 12
0x0072 0x12BB IORWF CCP1CON, 1
;__Lib_PWM_d4c2675.c,23 ::
L_end_PWM1_Start:
0x0074 0x0012 RETURN 0
Rajouter une boucle sans fin en fin de programme..le PIC reste alive..
remarque : s'abituer à mettre les syntaxes exactes .. meme si c'est un peu contraignant,au départ
la portabilité des sources s'en trouve nettement améliorée.
Tools
Options
Compiler
Case sensitive (cochée)
un petit test prealable de la sortie RC2 (clignotement d'une led !) s'impose:
pour verifier que les bits de config soient bien transferés et que le PIC oscille bien à la frequence désirée.
et que les bits de config soient aussi bien present dans le HEX à charger dans le PIC.
Code : Tout sélectionner
void main()
{
int i=0;
TRISC = 0;
PORTC = 0;
while(i<5)
{
LATC2_bit=1;
Delay_ms(1000);
LATC2_bit=0;
Delay_ms(1000);
i++;
}
PWM1_init(5000);
PWM1_start();
PWM1_Set_Duty(50);
while(1); }
j'en conclue qu'il faut utiliser
PWM2_Init(5000);etc ..
avec cela on a bien
0x006C 0x9494 BCF TRISC2_bit, BitPos(TRISC2_bit+0)