G120 - IO60P16 support

I need to extent IO on our PCB design for the G120, i see there is “Gadgeteer.Modules.GHIElectronics.IO60P16” for using the "CY8C9560A"
This would be perfect :slight_smile: but i also notice these module is “on sale” at the moment, is this going to be supported in the future?
Or is there a better approuch to extend availible IO’s on the G120?

It has been on sale for awhile.

Yes, i have seen this but will the “class” be supported by GHI in the future? i want to add the “CY8C9560A” chip to the pcb desigb because the it’s availble and ready for use, but also want to be sure we dont have to redesign after 6 months because GHI is dropping support in version 4.5 or so :slight_smile:

@ andre.m - True, but i prefer to use a “supported” sollution

@ GHI, is this topic below solved in 4.2 ?
In the release page is see “•Fixed SoftwareI2C on all OSHW devices”

Or are there better way’s to extend the IO’s for G120?

I agree. I didn’t have any success with interrupts on IO60P16. But in the dl40 module and taylorza drivers (http://www.tinyclr.com/codeshare/entry/633) it’s very easy.

agree use the dl40.
i couldn’t get the IO60P16 to work either.

IO60P16 is no longer on sale.

The IO60P16 supports IO read/write and 8bit PWM. It does not support interrupts, at least not in official drivers but Ian has built nice drivers for it that supports interrupts.

@ Makla - I have a look at this later this week, if IO60P16 is a pain i keep away from this :wink:
(did you use the drivers from Ian?)

Did you have a play with interupt inputs on DL? and with a gadgeteer module?

I only see the MaxO for output and the Pulse InOut for PWM, nothing for inputs? should we build something around the DL40?

@ David@ Emrol, taylorza already started a project to extend DL40 firmware. It supports counters, interrupts, PWM and ADC. At the moment I’m working on signal generator and pin capture, but Im very busy at the moment, so I dont have time do any of this. Of course you are also welcome to contribute.
The project is located at http://dl40io.codeplex.com/ builded firmware and driver is also located here: http://www.tinyclr.com/codeshare/entry/633.

@ jernejk - at this moment i just have to decide the path to use for the electronic engineers in my team to start with the pcb design (i’m just a software guy with a electronic education but that was 25 years ago…)

I will be happy to contribute but my critical path in the project i’m on right now call’s for available solutions.

The codeplex link is not valid but i already seen the one from taylorza.

@ David, My driver is located at:

Let me know if you run into any problems.

@ ianlee74 - Did you find that module to be as troublesome as others do?

Being new to FEZ, Gadgeteer, NETMF, I2C, and all other relevant concepts at the same time, and then choosing to make the IO60P16 driver my introductory “hello world” program on top of that were the main problems I faced… (ID-10T errors)

Once I knew what I was doing, though, it really only took about 30 minutes to port your driver to pure NETMF and get it to generate interrupts properly.


Still need educating so I can “fork my driver to your Git”…??

The IO60P16 is very finicky and needs a very clean I2C signal to work properly. Unfortunately, this module was built to use SoftwareI2C which in 4.2 (I haven’t test the very latest release yet…) has proven to still be unreliable in regards to this module. I can get fairly good results from it using hardware I2C. However, I believe there are better modules today (MaxO, PulseInOut, etc.) that did not exist when the IO60P16 was first released which I would use before I would put the IO60P16 in a project.

To fork in Git, simply go to my link above and hit the “Fork” button in the upper right corner. This will create you a copy of my project that you can then manage as your own repo. Once you commit your changes, I can compare them to my repo and see if it’s possible to consolidate your changes into my driver. Perhaps we could add another compile option (ex. “BASIC_NETMF”).

posted in new

Yes I did. Didn’t work well. I must tell that ianlee74 try to help me a lot, but … :frowning: It fires only a few interrupts but then nothing.

I ordered some DL stuff to play with for the future, right now we just stripped the display support from the G120 and will use 16 IO’s from there and create a separate display module on a second G120 that communicates over the internal CAN bus. This is flexible and takes some load away from the first G120 that has to run the logic.


If the option works for you, I’d like to reiterate ianlee’s assertion that while running on hardware I2C, rather than software, all of these modules work awesome, including interrupts. To overlap DaisyLink devices on the hardware bus, just choose fixed addresses for the DL modules, that don’t conflict with any fixed-address devices.

As I understand it, DL was built to run on SoftwareI2C so you could host multiple busses. If you don’t need to, go hardware; seems to be simpler.

I had the same problem with my current G120 design. Used up all the pins.
I found a solution that may help you also.
I added an 8 to 1 analog MUX to the design.
First all analog readings where connected to the analog MUX and than I added digital inputs that can be polled at a low rate.
This released the 4 pins I needed.