FTM2 channel not delivering PWM

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

FTM2 channel not delivering PWM

968 Views
Robinwithu
Senior Contributor I

Hi Everybody,

 

i m new to the Freescale controllers.can you please see my code and tell me why FTM2 is not working ? FTM0 is working properly.

 

About code:

 

Just trying to generate Hardware PWM in all channels of   MC9S08RN16 µc.

 

 

 

#include <hidef.h> /* for EnableInterrupts macro */

#include "derivative.h" /* include peripheral declarations */

 

 

// Prototype Function

 

void main(void);

void delay();

void PWMInit(unsigned int i);

 

void main(void) {

 

    unsigned int  Period;    

    unsigned int  Duty;      

      

    Period =0x120;    

    PWMInit(Period); 

    Duty = 0x90;   

    DisableInterrupts; 

   

   

  

  PORT_PTAOE =   0x03;                          /* Define PortA all Pin As Output  ; one is Output and Zero is Input for Data Direction */

  PORT_PTBOE =   0xFF;                          /* Define PortB all Pin As Output */

 

 

 

 

//  PORT_PTAD =  0x00;                           /* Initialise the PORTA */

//  PORT_PTBD =  0x00;                              /* Initialise The PORTB */

 

 

 

  /* the following code segment demonstrates setting ICS to FEI mode generating 20MHz bus*/

 

//  ICS_C1 = 0x04;                                 /* internal reference clock to FLL */

//  ICS_C2 = 0x00;

//  ICS_C3 = 0x00;                                 /* BDIV = 0, no prescalar */

 

 

 

 

while (1)

  {

    

     __RESET_WATCHDOG(); 

    

     

   

    

      FTM0_SC=0x10;                            //Channel Zero PWM Timer is config for System clock ; Zero Prescaler and  Counter  Operates in Up counting mode

      FTM2_SC=0x10;       

     

 

      FTM0_C0VH=(Duty>>8);                    //Ton Period or Duty Cycle

      FTM0_C0VL=Duty;

      FTM0_C1VH=(Duty>>8);

      FTM0_C1VL=Duty;

     

     

     

      FTM2_C0VH=(Duty>>8);                    //Ton Period or Duty Cycle

      FTM2_C0VL=Duty;

      FTM2_C1VH=(Duty>>8);

      FTM2_C1VL=Duty;

     

     

     

      FTM0_SC=0x10;                          //Select the PWM functionality for each channel that will be used to generate PWM by using the TPMCnSC register of each channel.

      FTM2_SC=0x10;   

     

  }

 

 

 

}

 

 

 

 

void PWMInit(unsigned int Period)  

{      

    unsigned int Temp=Period;  

      

  //  FTM0_SC=0X10;                          

   

   

   

    FTM0_CNTH=0x00;

    FTM0_CNTL=0x00;

   

    FTM0_MODH = (Temp>>8);                 // T total Period of PWM Cycle                

    FTM0_MODL = Period;        

      

    FTM0_C0VH = 0x00;                      // Ton Period of Total Period

    FTM0_C0VL = 0x00;  

    FTM0_C1VH = 0x00;                      // Ton Period of Total Period

    FTM0_C1VL = 0x00; 

   

   

    FTM0_C0SC = 0x14;    

    FTM0_C1SC = 0x14;

   

   

    FTM2_MODH = (Temp>>8);                 // T total Period of PWM Cycle                

    FTM2_MODL = Period;  

   

    FTM2_C0VH = 0x00;                      // Ton Period of Total Period

    FTM2_C0VL = 0x00;   

    FTM2_C1VH = 0x00;                      // Ton Period of Total Period

    FTM2_C1VL = 0x00;

   

  

   

    FTM2_C0SC = 0x28;    

    FTM2_C1SC = 0x28;

   

   

   

  }      

 

 

 

void delay()

 

{

 

    int i;

    for (i=0;i<25;i++){;}

   

   

}

Labels (1)
0 Kudos
Reply
3 Replies

747 Views
michaelsteffenf
NXP Employee
NXP Employee

Hi,

Please try this code.

FTM2_SC=0x08; // busclk/1=59.6ns per count; buzzer on=0x08, off=0x00

FTM2_C0SC=0x28; // edge-aligned PWM

FTM2_MOD=16778; // 1KHz square wave on FTM0CH1, PTA1, J5-14

FTM2_C0V=16778>>1; // half of the above to produce 50% duty cycle PWM

Michael Steffen

Senior Field Applications Engineer

Freescale Semiconductor

Cell 815-519-1567

0 Kudos
Reply

747 Views
Robinwithu
Senior Contributor I

Hi steffen,

I tried for Both the Timer (FTM0 and FTM2)...FTM0 is working as usual, but no response at FTM2 channel. :smileysad:

DANKE.

0 Kudos
Reply

747 Views
Robinwithu
Senior Contributor I

Hello Steffen,

Does FMT2 Timer has to do something with  Sysem Register (SYS_SOPT2)? or am i going in wrong direction?

0 Kudos
Reply