Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 10 months ago.
How to write a PWM control OFF to ON?
I know that about PWM control in page of 'PWMout': https://developer.mbed.org/handbook/PwmOut, but there is only a type of case for ON to OFF, I want to write a case that OFF to ON in a duty cycle (basic on image), how to write a PWM control program for OFF to ON? Please give me some code, thank you.
1 Answer
7 years, 10 months ago.
I hope this is what you wanted.
If you look at your diagram time ON+ time_OFF is always equal to 1.0 so time_OFF is (1.0-time_ON)
#include "mbed.h" PwmOut led(LED1); float time_OFF=0.2f; int main() { // specify period first led.period(4.0f); // 4 second period // 20% off led.write(1.0f-time_OFF); // 80% on duty cycle, relative to period //led = 0.5f; // shorthand for led.write() //led.pulsewidth(2); // alternative to led.write, set duty cycle time in seconds while(1); }
I am sorry that I cannot use osciallator today, so I want to ask question according to this program. Does this program is start from OFF(low value) and end from ON(high value)? I see that there is also similar to example program (ON first and OFF end). I must start in OFF and end in ON such as image in one duty cycle since this is use for compare to other PWM at same duty cycle.
posted by 20 Feb 2017Hi so k
I understand you want something different. I think there are a couple of ways to do that. a) How about inverting the PWM signal with a logic gate? b) What about manually switching the output to make the first cycle of the PWM?
posted by 20 Feb 2017So, there is no method from program control (eg. inverting PWM,etc...)? Since I have finished hardware part. I need to design again that using your solution. About (b), I will consider if there is no solution from program.
posted by 20 Feb 2017Hi so k, Sometimes the polarity and starting condition is an option in the PWM implementation in the micro controller. You might be able to change these for example by setting a register. Not all these options are supported in the mbed function. Those details are usually in the data sheet. Take a look also at the mbed source code for pwmOut and see if there is anything that can be modified for your micro controller.
You might be able to use SoftPWM https://developer.mbed.org/users/komaida424/code/SoftPWM/
posted by 20 Feb 2017