Anyone know a code for pulsing digital out pins? sort of like pwm signals…when the on time is constant but the off time can be adjusted? I am inputing an anolog signal so it controls the length of the off pulses…
You may want to look into Kevin Watson’s PWM replacement code.
what kind of time scale do you need (ie how long on and off)? There are really 2 methods I can think of:
Timers and interrupts (using this Kevin code as base)
User controlled custom PWMs (using this Kevin code as base)
There is always good code at Kevin’s Repository.
Depending on your application one of these options is better. Can you explain your application more precisely?
NOTE: the interrupt code is old (last processor) but still decent for copying the the timers interrupt and initialization code
Those codes are complicated,…need more time to learn that stuff hahaa.
i dont know if you could do it on a loop count basis, have it increment a counter each time through the loop, and then once it is within a certain range set a digout equal to one? something like
if(counter < 5)
{
counter = counter + 1;
rcdigout01 = 0;
}
elseif(5 <= counter <= 7)
{
counter = counter + 1;
rcdigout01 = 1;
}
else
{
counter = 0
rcdigout01 = 0
}
will this work? I know we did a thing like this when we were working on a delay in our camera search routine to make it pause in between movements
Malhon
When are you reading the analog signal? How are you reading it?
If you are reading the analog signal using the default get_analog_value()
continuously as you try to pulse the digital I/O pins, you may be getting into trouble due to the delays that the get_analog… puts in while it waits for the A/D conversion. You can eliminate most of the delay by using Kevin’s A/D converter which uses the A/D conversion interrupt and a timer to run the conversion continuously in the background.
If you are only checking the analog value once in a while, then using Kevin’s A/D code would not be of as much benefit.