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
Problème PWM sur pic18
Bonjour,
J'ai essayer de faire marché la PWM d'un PIC18f452 tout à l'heure.
Le problème c'est qu'après configuration des registres j'ai l'impression que celle ci ne fonctionne pas lorsque je la test sur un pic.
Du coup j'ai revérifier les registres mais rien à faire, ça ne fonctionne pas et je n'arrive pas à trouvé d'ou le problème peut venir...
Quelqu'un pourrait me donner un petit coup de main ?
Voici mes fichiers :
PWM_fonc.h:
PWM.c:
main.c
J'ai essayer de faire marché la PWM d'un PIC18f452 tout à l'heure.
Le problème c'est qu'après configuration des registres j'ai l'impression que celle ci ne fonctionne pas lorsque je la test sur un pic.
Du coup j'ai revérifier les registres mais rien à faire, ça ne fonctionne pas et je n'arrive pas à trouvé d'ou le problème peut venir...
Quelqu'un pourrait me donner un petit coup de main ?
Voici mes fichiers :
PWM_fonc.h:
Code : Tout sélectionner
#define MOT_G_PWM PORTCbits.RC2
#define MOT_D_PWM PORTCbits.RC1
#define MOT_G_PWM_DIR TRISCbits.TRISC2
#define MOT_D_PWM_DIR TRISCbits.TRISC1
#define MOT_G_C PORTDbits.RD2
#define MOT_G_D PORTDbits.RD3
#define MOT_D_C PORTDbits.RD0
#define MOT_D_D PORTDbits.RD1
#define MOT_G_C_DIR TRISDbits.TRISD2
#define MOT_G_D_DIR TRISDbits.TRISD3
#define MOT_D_C_DIR TRISDbits.TRISD0
#define MOT_D_D_DIR TRISDbits.TRISD1
#define VITESSE_MOT_G CCPR1L // sur 8 bits 00>FF
#define VITESSE_MOT_D CCPR2L // sur 8 bits 00>FF
#define MOT_G_Avant() MOT_G_C=1; MOT_G_D=0;
#define MOT_G_Arriere() MOT_G_C=0; MOT_G_D=1;
#define MOT_G_Bloque() MOT_G_C=0; MOT_G_D=0;
#define MOT_D_Avant() MOT_D_C=1; MOT_D_D=0;
#define MOT_D_Arriere() MOT_D_C=0; MOT_D_D=1;
#define MOT_D_Bloque() MOT_D_C=0; MOT_D_D=0;
PWM.c:
Code : Tout sélectionner
#include <p18f452.h>
#include "fonctions.h"
#include "PWM_fonc.h"
void Init_PWM(void)
{
TRISD = 0x00;
TRISC = 0x00;
MOT_G_Bloque(); // moteur en CC
MOT_D_Bloque(); // moteur en CC
CCP1CON = 0b00001100; //Mode PWM, bits 0 et 1 = 0 (10bits)
CCP2CON = 0b00001100; //Mode PWM, bits 0 et 1 = 0 (10bits)
PR2 = 0xFF; //Période 4KHz
T2CON = 0b00000100; //Prescaler et Postscaler 1:1 Timer_2 ON c'est parti
VITESSE_MOT_G=0; //vitesse nulle
VITESSE_MOT_D=0;
MOT_G_PWM_DIR=0; // PWM en sorties
MOT_D_PWM_DIR=0;
MOT_G_C_DIR=0; // bits cde moteur en sortie
MOT_G_D_DIR=0;
MOT_D_C_DIR=0;
MOT_D_D_DIR=0;
return;
}
main.c
Code : Tout sélectionner
#include <p18f452.h>
#include "fonctions.h"
#include "PWM_fonc.h"
#pragma config OSC = HS, OSCS = OFF
#pragma config PWRT = OFF, BOR = OFF
#pragma config WDT = OFF
#pragma config CCP2MUX = ON
#pragma config STVR = ON
#pragma config LVP = OFF
#pragma config DEBUG = ON
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
#pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF
#pragma config WRTB = OFF, WRTC = OFF, WRTD = OFF
#pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTRB = OFF
void main(void)
{
Init_ADC();
Init_PWM();
Init_I2C();
TRISE = 0x00;
char vision;
while(1)
{
MOT_G_Avant();
MOT_D_Avant();
VITESSE_MOT_G=0x80; //vitesse 50%
VITESSE_MOT_D=0x80;
vision = conversion();
if (vision >= 20)
{
PORTE = 0xFF;
}
}
return;
}
Problème PWM sur pic18
Bonjour,
Je connais pas grand chose au C, mais en ASM le changement de banque est obligatoire :
Passer en banque approprier
CCP1CON = 0b00001100;
CCP2CON = 0b00001100;
Passer en banque approprier
PR2 = 0xFF; //Fréquence du PWM 3900 Hz de 0% à 99,5%, pas plus grand, sinon plantage
Passer en banque approprier
T2CON = 0b00000100;
A+
Je connais pas grand chose au C, mais en ASM le changement de banque est obligatoire :
Passer en banque approprier
CCP1CON = 0b00001100;
CCP2CON = 0b00001100;
Passer en banque approprier
PR2 = 0xFF; //Fréquence du PWM 3900 Hz de 0% à 99,5%, pas plus grand, sinon plantage
Passer en banque approprier
T2CON = 0b00000100;
A+
Modifié en dernier par Temps-x le dim. 26 févr. 2017 17:05, modifié 2 fois.
Problème PWM sur pic18
Bonjour Astérix,
je ne vois pas l'usage de "LATx" dans tes codes, es-tu bien certain que ce µC ne possède pas cette fonctionnalité?
Il vaudrait mieux utiliser un PIC18F4520, le PIC18F452 est annoncé obsolète:
http://www.microchip.com/wwwproducts/en/PIC18F452
@+
je ne vois pas l'usage de "LATx" dans tes codes, es-tu bien certain que ce µC ne possède pas cette fonctionnalité?
Il vaudrait mieux utiliser un PIC18F4520, le PIC18F452 est annoncé obsolète:
http://www.microchip.com/wwwproducts/en/PIC18F452
@+
Problème PWM sur pic18
Problème PWM sur pic18
Problème PWM sur pic18
Tu ne précises pas la valeur de ton oscillateur, je prends pas défaut 8MHz dans l'exemple ci-dessous
Code : Tout sélectionner
/*
* PWM configuration des registres
* Fosc = 8000000 Hz
* Fpwm = 1000.00 Hz
* Duty Cycle = 50 %
* Resolution 10 bits
* Prescaler 16
*/
PR2 = 0b01111100 ;
T2CON = 0b00000111 ;
CCPR1L = 0b00111110 ;
CCP1CON = 0b00011100 ;
Problème PWM sur pic18
Problème PWM sur pic18
Problème PWM sur pic18
Bonjour Hulk,
Si il me semble que le pic18f452 possède la fonctionnalité de LATx. C'est juste que j'ai peut être pris une mauvaise habitude à ne pas l'utiliser.
Sinon pour la configuration il me manquait en faite la config du registre CCPR1L c'est ça ?
Et merci beaucoup pour le document paulfjuljo en plus le pic18f252 est quasiment le même.
Je posterai un message demain soir pour vous dire si j'ai résolu le problème.
Sur ce, bonne nuit.
Si il me semble que le pic18f452 possède la fonctionnalité de LATx. C'est juste que j'ai peut être pris une mauvaise habitude à ne pas l'utiliser.
Sinon pour la configuration il me manquait en faite la config du registre CCPR1L c'est ça ?
Et merci beaucoup pour le document paulfjuljo en plus le pic18f252 est quasiment le même.
Je posterai un message demain soir pour vous dire si j'ai résolu le problème.
Sur ce, bonne nuit.
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 39 invités