Go Down

### Topic: 100KHZ PWM with 41.66% duty cycle (Read 2751 times)previous topic - next topic

#### luckeynag

##### Jul 10, 2017, 03:51 pm
Hi,
I tried a code to obtain 100KHZ PWM output with 41.66% duty cycle by reading an analog value at A0 which is compared with a reference 5V value for obtaining PWM value.

Can some one help me with the code? Any help is very much appreciated.

here is my code.

int Pwmpin=9;//Pwm Output Pin
int Fchange= A0;//Frequency change through Potentiometer
void setup()
{
pinMode(Pwmpin, OUTPUT);//Pwm pin as Output
Serial.begin(9600);
TCCR1A=_BV(COM1A1)|_BV(COM1B1);//Non-inverted Mode
TCCR1B=_BV(WGM13)|_BV(CS11);//Prescalar 8
}

void loop(){
float freq=0;
float count=10000,countt=0,Pinput=0;

while(1){
ICR1=count;//variable Frequency
countt=16*count;
freq= int(16000000/countt);
OCR1A=int(count/2);
Serial.print("Pwm Freq =");
Serial.println(freq);
count=10000;
Serial.println(Pinput);
Pinput=(Pinput/0.0113);
Serial.print("pwm value is:");
Serial.println(Pinput);
count=count+Pinput;
if(count>=100000)
{
count=10000;
}
delay(1000);
}
}

#### _pepe_

#1
##### Aug 23, 2017, 08:54 pmLast Edit: Aug 23, 2017, 08:57 pm by _pepe_
Hi,

"The value of the PWM" is usually refering to the duty cycle, but your code suggests it is the frequency.

Moreover, you have already specified a frequency (100 kHz) and a duty cycle (41.66 %) for the signal.

So what really is "the value of the PWM" that the analog input is supposed to modify ? What parameters are fixed, or variable ?

Go Up