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.

Reply via email to