Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Générer un signal MLI
Bonjour,
Sur le programme ci-dessous je souhaite générer un signal MLI à partir d'un PIC18F45K80, de fréquence et de rapport cyclique arbitraires. Voici le main que j'ai inscrit sur MikroC :
Comme indiqué sur la datasheet j'ai cablé la sortie PWM sur la broche RC2 du PIC...
Et finalement, même problème que sur mon dernier topic ... Strictement rien en sortie. J'ai bien compilé le programme sur MikroC et implanté dans l'IPE MPLAB X, aucun problème de périphérique... Mais toujours rien en sortie. J'ai changé le PIC pour en prendre un neuf, et pareil, rien du tout. Pourtant le pic est bien alimenté ... Quelle pourrait être la source de ce problème d'après vous?
Sur le programme ci-dessous je souhaite générer un signal MLI à partir d'un PIC18F45K80, de fréquence et de rapport cyclique arbitraires. Voici le main que j'ai inscrit sur MikroC :
Code : Tout sélectionner
void main()
{
TRISC = 0;
PORTC = 0;
PWM1_init(5000);
PWM1_start();
PWM1_Set_Duty(50);
}
Comme indiqué sur la datasheet j'ai cablé la sortie PWM sur la broche RC2 du PIC...
Et finalement, même problème que sur mon dernier topic ... Strictement rien en sortie. J'ai bien compilé le programme sur MikroC et implanté dans l'IPE MPLAB X, aucun problème de périphérique... Mais toujours rien en sortie. J'ai changé le PIC pour en prendre un neuf, et pareil, rien du tout. Pourtant le pic est bien alimenté ... Quelle pourrait être la source de ce problème d'après vous?
Générer un signal MLI
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
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:
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 :
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.
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)
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); // <- boucle sans fin vide
}
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)
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 50 invités