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] <javascript:>
> > 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> 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