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.

Reply via email to