I will not answer to emotions, but let's look into PWM. Technically it has a counter where step is set as a number up to 2^22-1 and comparator value is up to 2^8-1. So, on higher frequencies the resolution is 1 bit (52 nanoseconds per step). I know that the driver in BSP is kinda interesting, but still the hardware provides this range. So, at lowest frequencies you might experience resolution loss, since least significant bits in comparator value do nothing, As far as I know this is described in documentation.
Does that explain the 2ms jump though ? Also I really dont know what any of that means. Is there a source you could direct me to so I can learn more about the pwm drivers?
Let's do a simple math. Input frequency is 19 200 000 Hz. The maximum value of the counter (taking into account 50% duty cycle) is 2^22 (8 integer + 14 fractional bits). This means lowest frequency approx. 4.58Hz or 218.46ms.
Do this for nearest steps [1..12].
And where is the lie exactly?
So, summarize, on lowest frequencies the resolution of frequency is low, but resolution of duty cycle is highest, and otherwise on higher frequencies.
Ok I understand. Thank you for your explanation. No lie, I just wasn't aware of how the pwm driver works.
However I am still having this maddening problem where I can't get an ESC to register pwm input from the Edison. When I send the same exact pwm signal from and arduino (I compared them side by side on an oscilloscope) the ESC immediately recognizes it. Low beep, then high beep, then the motor spins. It simply does not accept the pwm signal from the edison, though it is virtually exactly the same.
The only reason I can come up with as to why this is happening is that there is such a subtle difference in the signals that the esc pics up on, but the oscilloscope does not show. This seems very unlikely to me but is there really any other explanation??
The hardware which reacts so on subtle changes is a badly designed one. What I can think of is pull-up/pull-down bias. By default it set to something interesting like 20k pull-up for some of interfaces.
I agree, not sure that is the case though, just the only thing I could think of given the situation. I have tried all the possible pullup/pulldown values available internally on the Edison, but no luck. Anyway it doesn't seem like pwm output shouldn't be effected by pullup or pulldown resistances.
I am at a complete loss.
I have noticed that the off (or low) part of the pwm signal from the Edison looks to be slightly higher than that of the Arduino. Is this part of the pwm signal supposed to be the ground voltage level?? I have both devices connected to the same ground, yet on the oscilloscope it looks slightly different - about .1 volts if that.
This message was posted on behalf of Intel Corporation
Yes, you are right, the low part of the PWM signal should be at the ground voltage level. However, it's been reported by arfoll, that the resolution of the pwm generator is not very good (as you can see in https://communities.intel.com/message/290158#290158). The workaround that has been provided before for these issues has been to use an external PWM generator (as you can see in https://communities.intel.com/message/378061#378061). Also, the next thread mentions a similar behavior to what you've described: https://communities.intel.com/message/292004#292004, you might be interested in checking it to see if the solution found in there helps you.
I've also noticed that you've posted another thread (https://communities.intel.com/thread/105850). I believe it is about the same issue, am I right? If so, can we continue the support there? We would like to avoid any confusions and maintain all the information in one place.
Yes that is correct, at this point the resolution isn't even the problem, I will explain further on the other post.