View previous topic :: View next topic |
Author |
Message |
nalixis
Joined: 08 Jan 2005 Posts: 6 Location: Belfort, France
|
18f4431 power control pwm module problem |
Posted: Sat Jan 08, 2005 3:53 pm |
|
|
hey everyone;
I'am working with this PIC on a project and I need to use 4 independant PWM sgnals.
Here is the deal..i've tried everything..checked most forums and and just can't get it to work : NO pwm signal at all on the output pins no matter what I do.
Here is the program I am currently using (programming under CCS):
Code: |
#include <18F4431.h>
#use delay(clock=10000000)
#fuses NOWDT, HS, NOPROTECT, NOLVP, NOPWMPIN, HPOL_HIGH, LPOL_HIGH
void main()
{
PTCON0 = 0; // Time Base config : Free running mode
PWMCON0 = 01001111; // PWM 0 to 5 independant mode
// Fpwm = 10 kHz : Fosc = 10Mhz => PTPER = 0x03E8
// Fosc = 10Mhz => PTPER = 0x00fa
PTPERH = 0x00;
PTPERL = 0xfa;
OVDCOND = 0xff; //pwm output controlled by duty cycle
OVDCONS = 0;
FLTCONFIG = 0b10000111; //fault A config
PDC0L = 0xfa;
PDC0H = 0x00;
PDC1L = 0xfa;
PDC1H = 0x00;
PDC2L = 0xfa;
PDC2H = 0x00;
PDC3L = 0xfa;
PDC3H = 0x00;
PWMCON1 = 0b00000001; // Output overides synched wrt PWM timebase
//PWMCON1 = 0 // (Special Event Trigger) not used
DTCON = 0; // no dead band timer
PTCON1 = 0b10000000; // Activate PWM Time Base*/
// I also added this just to check if this module was working
// (and it does work perfectly...but no use for this project :) )
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_4,249,1);
set_pwm1_duty(200);
}
|
Can anyone see what I'm missing out..??
thanks
michael |
|
|
bluetooth
Joined: 08 Jan 2005 Posts: 74
|
Fault input? |
Posted: Sat Jan 08, 2005 4:11 pm |
|
|
Is /FLTA driven low (or not pulled up)?
Try putting an 0x80 in FLTCONFIG to disable /FLTA assuming your hardware can stand what could happen in a fault condition with the outputs being driven!
Good luck.... |
|
|
nalixis
Joined: 08 Jan 2005 Posts: 6 Location: Belfort, France
|
|
Posted: Sat Jan 08, 2005 4:38 pm |
|
|
you know what..i just tried to correct the FLTCONFIG register, and guess what : IT WORKS !
thanks very much for your help..it was indeed this f..king register that was blocking everything.
So just one more question if I may : was exactly is this register used for and what was I doing wrong (knowing that absolutely nothing is plugged to the chip execpt for the power supply and reset )
thanks again
michael |
|
|
bluetooth
Joined: 08 Jan 2005 Posts: 74
|
|
Posted: Sat Jan 08, 2005 5:47 pm |
|
|
Glad it works.....
From the data sheet (a VERY necessary document in general and for this part in particular):
17.12 PWM Fault Inputs
There are two fault inputs associated with the PWM
module. The main purpose of the input fault pins is to
disable the PWM output signals and drive them into an
inactive state. The action of the fault inputs is
performed directly in hardware so that when a fault
occurs, it can be managed quickly and the PWMs
outputs are put into an inactive state to save the power
devices connected to the PWMs.
The PWM fault inputs are FLTA and FLTB, which can
come from I/O pins, the CPU or another module. The
FLTA and FLTB pins are active-low inputs so it is easy
to “OR” many sources to the same input.
The FLTCONFIG register (Register 17-8) defines the
settings of FLTA and FLTB inputs.
17.12.1 FAULT PIN ENABLE BITS
By setting the bits FLTAEN and FLTBEN in the
FLTCONFIG register, the corresponding fault inputs
are enabled. If both bits are cleared, then the fault
inputs have no effect on the PWM module.
------------
You should read the rest of that section as well.... it's a really handy input if your load can generate a /FLT signal when it's having a problem (typically excess current). This will significantly reduce the odds of your letting the smoke out of your drivers!!!!
|
|
|
|