The Elektor Forum will close. See also this link. From Friday March 15st it is no longer possible to log in to the forum. However, the content of the forum will remain visible until the end of March. As of April 1st the forum will definitely go off the air.

PWM WITH PIC32MX460F512L

The topic on number crunching

PWM WITH PIC32MX460F512L

Postby sosoebot » Fri Jun 08, 2018 6:26 pm

I am trying to Generate PWM signal using PIC32MX460F512L. I want to use it to drive a motor, I am using a frequency of 10KHz. I have written the code but I tested it and it is not working. Please i would appreciate if someone can advice me on how to proceed.

Code: Select all
#include <plib.h>
#include <stdio.h>
#include <stdint.h>
#include "Cerebot.h"
#include "Lcd.h"
#include "config.h"

void initTimer();
void initOC();


int main(void)
{
   Init_Cerebot32MX();
   initTimer();
   initOC();

   _CP0_SET_COUNT(0);         // Delay 4 Seconds
   while(_CP0_GET_COUNT()< 4*40000000)
   {
      ;
   }
   
   OC1RS = 500;            // Set Duty Cycle to 50%
   TRISG = 0x0000;            // Set PORTG as output

   while(1)
   {
      PORTGbits.RG12 = 0;         // Set pin RG12 as output

   }

} //end main

void initTimer()
{
   T2CONbits.TCKPS = 1;       // Timer 2 Prescaler of 1:8
   PR2 = 999;               // Period = (PR2+1)*N*12.5ns = 100us
   TMR2 = 0;               // Initial TMR2 count is 0
   T2CONbits.ON = 1;         // Turn on Timer 2
}

void initOC()
{
   OC1CONbits.OCM = 0b110;      // PWM Mode without fault pin
   OC1RS = 250;            // Duty Cycle = OC1RS/(PR2+1) = 25%
   OC1R = 250;               // Initialize before turning OC1 on
   OC1CONbits.ON = 1;          // Turn on OC1
}
sosoebot
 
Posts: 1
Joined: Fri Jun 08, 2018 6:24 pm

Return to Microcontrollers & Embedded

Who is online

Users browsing this forum: No registered users and 1 guest