Connect with us

Problems generating PWM signal with dsPIC30F3014

Discussion in 'Microcontrollers, Programming and IoT' started by alexsoad, Apr 16, 2011.

Scroll to continue with content
  1. alexsoad


    Apr 4, 2011
    I need to generate a PWM signal to command a DC motor via L298N driver.
    I user dsPIC30F3014 to do this, but i cannot generate it and i need some help from you.
    I user C programming language.
    _FOSC(CSW_FSCM_OFF & FRC_PLL16); //using internal oscillator
    //this is for an external interrupt INT0, from a button, to switch on/off the motors.
    int activ;
    void __attribute__ ((interrupt, no_auto_psv)) _INT0Interrupt(void)
    if( activ == 1)
    activ = 0;
    activ = 1;
    IFS0bits.INT0IF = 0

    //this is the interrupt from Timer 2
    void __attribute__((interrupt, no_auto_psv)) _T2Interrupt (void)
    IFS0bits.T2IF = 0;

    // the function to enable the PWM, from OC1 pin
    void enable_pwm()
    PR2=0x0F90; // pwm period
    OC1CON=0x0007; // seting OC1 to "simple PWM" mode
    OC1RS=0x07C8; // duty cycle
    T2CONbits.TON=1; // starting the timer 2


    // main

    int main(void)
    RCONbits.SWDTEN = 0; //disable WDT
    T2CON=0x0000; //set the presclare to 1:1
    TRISB = 0x000000; //portB as output
    TRISD=0x0000; //portd as output
    IFS0bits.INT0IF = 0; //reset the flag from INT0
    IFS0bits.T2IF = 0; //reset the flag from T2
    IEC0bits.INT0IE = 1; //enable INT0
    IEC0bits.T2IE = 1; //enable T2 interrupt
    INTCON2 = 0x0001; //enable INT0 from global interrupts
    activ = 0; //setting activ to 0 , => motors don't start at reset
    if (activ==1)
    enable_pwm(); //enables the PWM
    LATB=0x0033; //settings extra bits from port B to 1

    The motor is controller via L298N. This driver needs 3 pins for a motor. 2 for direction (1 logic and 0 logic: i take them from PORTB). The last pin is for enable. If i take it from a 1 logic pin, the motor does works. If i take it from PWM pin, it doesn't works. So, the PWM isn't generated corretly.

Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day