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.
