Pulse InOut Software

Hello again,
it’s been some time since I investigated on this module in the forums and made quite some progress overall.

However, I’m stuck in a problem I think I can’t resolve without trying to change the Software on the Pulse InOut module itself…

Maybe I should start by describing what I want to do first.

My plan is to control some servos of a model plane (quite a larger one) with this module. At the beginning, this was terribly slow due to some hydra-i2c-module trouble as well as the way that the module did it’s PWM reads. GHI was very helpful in optimizing this, so that I started with a reasonable timing.

However, I’ve come to the point where I have to use 2 of these modules (I need to check 8 Radio Channels and send PWMs to 12 Servos).

Having to read the radio takes approx. 24ms, writing 12 Servos takes another 35ms, this in total is too slow, sadly. Fine adjustments over the radio result in strong ticks when the servos start, reach their new position, stop again. Can’t work that way :confused:

The alternative I see (without having to change too much of the hardware layout) would be to directly work on the Pulse InOut Firmware to make it process the radio channels and generate according PWMs by itself and to just accept some adjustments I send from the Hydra. However, to do so, I would prefer to start on the existing FW than to start from scratch.

Now, the Module page @ GHI states programmers can use the open source software to make such modifications, but, alas, I seem to be too dumb to find that software. I checked the GHI homepage, tinyCLR and codeplex, but was unable to find something. Could someone please point me in the right direction or, alternatively, would have some idea on how I could improve on this in other ways? Any comment is welcome :slight_smile:

Kind regards

I am of no help - Mr Taylor will stumble across this and no doubt impart from DL wisdom…

I just want to here more details about your project :slight_smile:

You’re right, I can’t see the actual firmware.for that module anywhere. But you could start with OpenDL, http://wiki.tinyclr.com/index.php?title=OpenDaisyLink

Maybe you can check DL40IO firmware from forum member taylorza available at http://dl40io.codeplex.com/. DL40 have same processor as Pulse InOut (as far as I know). You have already implemented PWM and also pulse counts.

Hmmm, maybe I should go and ideed check out the OpenDL and/or dl40 project. Does OpenDL include PWM lecture and generation already? I fear not :confused: I had hoped for something rather complete since I’m not that much of an expert for native HW programming. But I could see that as an opportunity to learn, I guess.

For the project as a whole, I have to check how much information can be made public before saying anything that could be regretted later on. For now, suffice to say it’s something sponsored by the ESA, ONERA and some… and results in a Gadgeteer device flying at an altitude of 3km for some 30 km distance whilst doing tricky things. Or not, depending if I can speed things up a little.

So much for now and thanks for the swift replies :slight_smile:

@ Neolyth - Sounds interesting, more incentive for me to finish off my AP…

The DL40IO firmware that @ jernejk referred to includes PWM support so you could use that as a reference.

Note that the Pulse IO module has slightly different PINs mapped to the the sockets for the I2C I guess this was done to free up some of the PWM pins. This means that the DL40IO firmware will not directly run on the Pulse IO module, but the changes should be minor. I don’t own a Pulse IO module so I can’t test it.

@ Justin - Planning to implement anything gadgeteer?

@ taylorza - Thanks for the heads up, I just downloaded the FW and see if I can make any sense of it. This might take a while :slight_smile:

Thanks so far…

@ Neolyth - yup

ping me an email Justin at ingenuitymicro dot com

Whilst waiting for Keil to download, once again (just installed a new PC, so…), I thought about what would be the best way to go… The problem I want out of the way is the fact that, right now, I have to read each channel one after another and then set each channel again with the same values that I’ve read just before, plus some minor changes or channel mixing. This is a very time consuming task. Basically, I see 2 possibilities to get my stuff going:

  • The first one would be changing the FW so that 2 of these modules could talk to each other over DaisyLink. I’d have to make them read some PWM inputs (should be fairly easy given that’s what they do), send some of these values to one another, mix them and use these values to set specific PWM signals for the servos. In a certain way, these would then be standalone modules that only needed to receive some corrective values from my Hydra from time to time.


  • I’d try and change the way that communication between my Hydra and the modules work. I.e. I could try and read all 8 channels from a module at once, not one after another. The same would then be true to set the output channels.

Don’t know what sounds more doable right now. Any opinions are welcome :slight_smile: