ssquared
Junior Member level 3
I am working on a project to generate PWM signal with PIC32MX460F512L to drive a motor. I have written the code to drive a motor with a signal of frequency 10KHz. I have tried to test my code but it is not work. I would appreciate of someone can advice me one how to proceed.
Code:
#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
}