Hmmm... You *might* be able to get it working at very low speeds (I would guess 100Hz would be good). It will require quite some effort to do that I believe. You might be able to find a bit-bang I2C code for the PIC and swap the existing driver with it (or add it) on the firmware side.
On Wed, Mar 19, 2014 at 11:08 AM, Rich <[email protected]> wrote: > I wonder if anyone has tried bit-banging the I2C protocol or others and if > there were any issues processing, etc. > > --Rich > > On Friday, March 14, 2014 6:39:09 PM UTC-7, Rich wrote: > >> >> I wanted to interface with NXT motors and sensors. Unfortunately these >> I2C devices operate at 10KHz (unless you know of any projects that have >> done this with the IOIO). I might try these serial to I2C interfaces first ( >> https://www.sparkfun.com/products/9981) and then decide if I want to >> create an MCU interface or explore other options. Thank you very much for >> your help! I really like the IOIO HW/SW and appreciate the documentation, >> and help you provide the community! Cellphones and Android technology are >> going to be found more and more in everyday devices. >> >> On Friday, March 14, 2014 5:28:31 PM UTC-7, Ytai wrote: >>> >>> Fcy is always half of the oscillator frequency. Thus I'm setting the >>> oscillator to 32MHz to achieve the maximum clock rate of 16MHz. >>> Reducing it is non-trivial: certain parts of the code assume a 16MHz >>> clock and would otherwise break. If all you need is a small number of >>> features, you might be able to get away with a small number of changes. >>> There's also a risk that the PIC will not be able to keep up if you clock >>> it too slow. >>> If we take a step back for a second, what is this mysterious device that >>> expects such an uncommon I2C clock rate? Would it be feasible to simply >>> replace it with something more standard? Otherwise, are you willing to >>> consider a small MCU in between the IOIO and the device that mediates the >>> clock rates? >>> >>> >>> On Fri, Mar 14, 2014 at 11:31 AM, Rich <[email protected]> wrote: >>> >>>> >>>> Awesome, great find! Thanks! >>>> >>>> I assumed it was 16 bits, but now when I looked back at the document >>>> (not straight forward since the I2CXBRG register data is in another section >>>> and XC16 I2C examples are hard to find through Microchip) I found the >>>> register table and it is indeed a 9-bit register limiting me to 31KHz >>>> (0x1FF) I2C clock. I re-verified my I2C clock outputs for 0x1FF and I get >>>> about 28 KHz and retried 0x63D or 0x03D and got about 242 KHz (original >>>> Oscilloscope measurement was off, due to the way I scaled it). All >>>> checks-out. >>>> >>>> With Fcy set to 16MHz, are you using an internal clock rate at 32MHz? I >>>> assume this not worth changing to accommodate my speed requirements. Maybe >>>> I'll look into using a serial to I2C interface. >>>> >>>> >>>> >>>> On Thursday, March 13, 2014 9:22:52 PM UTC-7, Ytai wrote: >>>> >>>>> Aha! The BRG register is 9-bits, so your 0x63D became 0x3D => 250KHz >>>>> (not sure why you got 100KHz). So apparently you cannot go so low @ 16MHz. >>>>> The lowest setting would be 0x1FF => 31KHz. >>>>> >>>>> Not sure why BT got messed up for you. Does it work with the stock >>>>> v5.00 firmware for you? If so, something must be problematic with the >>>>> build. I don't regularly build with XC16. >>>>> As a side note, you probably want to use IOIOLib v5.03 and IOIODude >>>>> v1.01 for a happier life (many little bug fixes in addition to the new >>>>> features). >>>>> >>>>> >>>>> On Thu, Mar 13, 2014 at 4:40 PM, Rich <[email protected]> wrote: >>>>> >>>>>> . . . I'm quite sure I'm running the Firmware I compiled. In one >>>>>> build I verified that I can generate 1MHz signal using the Rate_1MHz >>>>>> setting (BRG values{ 0x063D, 0x25, 0x0D }). I then I updated the firmware >>>>>> for the 3rd BRG element ({ 0x063D, 0x25, 0x063D }) and received about >>>>>> 100KHz when setting Rate to Rate_1MHz again. >>>>>> >>>>>> I first compiled everything in the firmware using MPLAB X and XC16. >>>>>> Secondly, I used "tools/make-ioio-bundle firmware/app_layer_v1/dist/ >>>>>> I2C_FirmWare.ioioapp IOIO0030" to create the bundle to download. >>>>>> And finally I used "../IOIODude-0100/ioiodude --port=/dev/ttyACM0 >>>>>> --reset write I2C_FirmWare.ioioapp" to download the firmware to the IOIO >>>>>> board. This wrote to the device since there was Fingerprint mismatch. >>>>>> >>>>>> The Firmware I used was pulled from ioio-master. I modified the IOIO >>>>>> Simple APP under IOIO400 to test the changes. I added the twi commands to >>>>>> the button switch of which I could see output on the I2C lines with my >>>>>> oscilloscope and verify the clock rates. >>>>>> >>>>>> I also noticed that my bluetooth dongle no longer flashed on, so I >>>>>> had to wire directly to my cellphone. >>>>>> >>>>>> >>>>>> >>>>>> On Thursday, March 13, 2014 1:26:40 PM UTC-7, Rich wrote: >>>>>>> >>>>>>> May have replied directly with my reply and didn't post properly . . >>>>>>> . please re-post question here if you got it, else I'll put it back up. >>>>>>> Thanks. >>>>>>> >>>>>>> On Thursday, March 13, 2014 8:43:39 AM UTC-7, Ytai wrote: >>>>>>>> >>>>>>>> This seems the right place to change. Are you sure you are actually >>>>>>>> running the firmware that you've modified? How did you install it on >>>>>>>> the >>>>>>>> IOIO? >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Mar 12, 2014 at 8:06 PM, Rich <[email protected]> wrote: >>>>>>>> >>>>>>>>> Hello, >>>>>>>>> >>>>>>>>> I was wondering, has anyone (users and/or the IOIO inventor) >>>>>>>>> experimented with modifying the I2C clock rates below and beyond the >>>>>>>>> currently supported rates (100KHz, 400kHz, 1MHz)? >>>>>>>>> >>>>>>>>> I have a device that can only run at 10KHz . . . I updated line >>>>>>>>> 129 in the i2c.c IOIO firmware source (static const unsigned int >>>>>>>>> brg_values[] = { 0x063D, 0x25, 0x0D }; //first element updated from >>>>>>>>> 0x9D >>>>>>>>> for 10KHz), compiled and downloaded the firmware. Using the correct >>>>>>>>> enum >>>>>>>>> RATE value, I received about 100KHz on my oscilloscope showing the >>>>>>>>> incorrect clock rate not the new 10KHz. I also built another firmware >>>>>>>>> version updating all of the brg_values to 0x063D to ensure that the >>>>>>>>> changes >>>>>>>>> were being passed properly and I confirmed that when I set the TWI >>>>>>>>> rate to >>>>>>>>> 1MHz for instance, I also receive 100KHz. >>>>>>>>> >>>>>>>>> Does the internal clock runs at 32 MHz? Any possible issues with >>>>>>>>> modifying these values? I don't see anything in the PIC24 datasheet >>>>>>>>> showing >>>>>>>>> that I am limited to these three clock rates. Can anyone confirm? >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks for your help and assistance. >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> Rich >>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "ioio-users" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to [email protected]. >>>>>>>>> To post to this group, send email to [email protected]. >>>>>>>>> Visit this group at http://groups.google.com/group/ioio-users. >>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "ioio-users" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> To post to this group, send email to [email protected]. >>>>>> Visit this group at http://groups.google.com/group/ioio-users. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "ioio-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at http://groups.google.com/group/ioio-users. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- > You received this message because you are subscribed to the Google Groups > "ioio-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/ioio-users. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "ioio-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/ioio-users. For more options, visit https://groups.google.com/d/optout.
