9 Replies Latest reply on Mar 11, 2016 5:18 PM by CMata_Intel

    Intel Edison I2C Block not driving I2C motor driving

    OmarBarlas

      I am using Intel Edison I2C Block SparkFun Blocks for Intel® Edison - I2C Breakout Block - learn.sparkfun.com to send commands to i2c Motor Driver 

      http://www.seeedstudio.com/depot/Grove-I2C-Motor-Driver-p-907.html

       

      It works fine when i use it with Edison Breakout board and shield at 5.0V settings, but when i used this i2C block (Sparkfun) it would not work, 

       

      can some one help me, i already set SparkFun Block to 5.0 v setting and put the Jumper Wire for 5V on the pad, but still not working

       

      I am using Node.JS and Java script libraries of Grove I2C Motor Driver, which is working on Edison Breakout Board for Arduino but not with SparkFun Block

        • 1. Re: Intel Edison I2C Block not driving I2C motor driving
          Intel_Peter

          Hello OmarBarlas,

           

          Since you are using JavaScript I guess you are using mraa, am I right? If so, then that would explain why this might be happening since mraa automatically sets the multiplexors when the library detects that you are working either on the Arduino Expansion Board or the Mini Breakout board.

          If this is you case, you will have to manually set the board to enable the I2C interface. In case you are interested this is a script that enables I2C on the Mini Breakout Board, I believe it should be similar on the I2C block.

           

          #!/bin/sh
          echo 28 > /sys/class/gpio/export
          echo 27 > /sys/class/gpio/export
          echo mode1 > /sys/kernel/debug/gpio_debug/gpio28/current_pinmux
          echo mode1 > /sys/kernel/debug/gpio_debug/gpio27/current_pinmux
          

           

          Peter.

          • 2. Re: Intel Edison I2C Block not driving I2C motor driving
            OmarBarlas

            Peter i got to run these commands on Terminal services (Putty)?

            I wonder if i got to set I2C clock speed some where, because I was reading somewhere that I2C may have different clock speeds.

             

            Strange thing is same Edison Module (with software loaded) when i move to Edison Breakout board for Arduino (within Shield) it starts working, but when i move it to SparkFun I2C Block it would not work?

            • 3. Re: Intel Edison I2C Block not driving I2C motor driving
              Intel_Peter

              Are you using a script when using the Edison's interface or are you using it manually? What happens with the I2C block is that if you are using a script based on mraa, it'll probably cause some issues since the library was not written for this block, I'd like to see if your Edison is even able to find the sensor you are trying to connect. Try following the guide found in SparkFun Blocks for Intel® Edison - I2C Breakout Block - learn.sparkfun.com and let us know what happens.

               

              Peter.

              • 4. Re: Intel Edison I2C Block not driving I2C motor driving
                OmarBarlas

                ok When i run the command:

                i2cdetect -y -r 1

                I get this in result :

                -- ^C[  609.883698] i2c-designware-pci 0000:00:08.0: ===== REGISTER DUMP (i2c) =====

                [  609.883794] i2c-designware-pci 0000:00:08.0: DW_IC_CON:               0x65

                [  609.883866] i2c-designware-pci 0000:00:08.0: DW_IC_TAR:               0x16

                [  609.883935] i2c-designware-pci 0000:00:08.0: DW_IC_SS_SCL_HCNT:       0x2f8

                [  609.884004] i2c-designware-pci 0000:00:08.0: DW_IC_SS_SCL_LCNT:       0x37b

                [  609.884073] i2c-designware-pci 0000:00:08.0: DW_IC_FS_SCL_HCNT:       0x87

                [  609.884142] i2c-designware-pci 0000:00:08.0: DW_IC_FS_SCL_LCNT:       0x10a

                [  609.884211] i2c-designware-pci 0000:00:08.0: DW_IC_INTR_STAT:         0x0

                [  609.884279] i2c-designware-pci 0000:00:08.0: DW_IC_INTR_MASK:         0x246

                [  609.884348] i2c-designware-pci 0000:00:08.0: DW_IC_RAW_INTR_STAT:     0x10

                [  609.884417] i2c-designware-pci 0000:00:08.0: DW_IC_RX_TL:             0x20

                [  609.884485] i2c-designware-pci 0000:00:08.0: DW_IC_TX_TL:             0x20

                [  609.884553] i2c-designware-pci 0000:00:08.0: DW_IC_ENABLE:            0x1

                [  609.884621] i2c-designware-pci 0000:00:08.0: DW_IC_STATUS:            0x2

                [  609.884689] i2c-designware-pci 0000:00:08.0: DW_IC_TXFLR:             0x1

                [  609.884756] i2c-designware-pci 0000:00:08.0: DW_IC_RXFLR:             0x0

                [  609.884824] i2c-designware-pci 0000:00:08.0: DW_IC_TX_ABRT_SOURCE:    0x0

                [  609.884891] i2c-designware-pci 0000:00:08.0: DW_IC_DATA_CMD:          0x0

                [  609.884958] i2c-designware-pci 0000:00:08.0: ===============================

                [  609.885058] CPU: 0 PID: 363 Comm: i2cdetect Tainted: G        W  O 3.10.17-poky-edison+ #1

                [  609.885063] Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542 2015.01.21:18.19.48

                [  609.885070] task: f57e5370 ti: f573e000 task.ti: f573e000

                [  609.885133] Stack:

                [  609.885202] Call Trace:

                [  609.885624] Code: e8 2f 59 6b 00 8b 15 c0 6c bd c1 b8 02 00 00 00 ff 52 7c eb 0f b8 58 89 41 00 e8 c8 65 2b 00 83 eb 01 74 09 f6 05 00 7b c7 c1 03 <75> e8 f0 80 25 f4 f3 d1 c1 fe eb ab 8b 15 c0 6c bd c1 55 b8 20

                [  609.885649] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G        W  O 3.10.17-poky-edison+ #1

                [  609.885654] Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542 2015.01.21:18.19.48

                [  609.885662] task: f6c83d30 ti: f6e1e000 task.ti: f6e1e000

                [  609.885726] Stack:

                [  609.885795] Call Trace:

                [  609.886004] Code: 50 08 83 e2 08 75 39 31 d2 83 c0 08 89 d1 0f 01 c8 0f ae f0 89 f6 89 e0 25 00 e0 ff ff 8b 40 08 a8 08 75 07 b1 01 89 f0 0f 01 c9 <85> 1d 78 60 c1 c1 75 0d 8d 55 f0 b8 05 00 00 00 e8 47 1a d7 ff

                [  609.886635] i2c-1: try to abort xfer, scl_gpio 19, sda_gpio 20

                [  609.888356] i2c-1: scl_gpio val 0, sda_gpio val 0

                [  609.888437] i2c-1: toggle begin

                [  609.892383] i2c-1: toggle SCL loop 0

                [  609.892548] i2c-1: toggle SCL loop 1

                [  609.892713] i2c-1: toggle SCL loop 2

                [  609.892873] i2c-1: toggle SCL loop 3

                [  609.893033] i2c-1: toggle SCL loop 4

                [  609.893193] i2c-1: toggle SCL loop 5

                [  609.893352] i2c-1: toggle SCL loop 6

                [  609.893514] i2c-1: toggle SCL loop 7

                [  609.893677] i2c-1: toggle SCL loop 8

                [  609.893724] i2c-1: toggle end

                 

                So not sure what that means, and how to make it to work?

                • 5. Re: Intel Edison I2C Block not driving I2C motor driving
                  OmarBarlas

                  We are using JavaScript on Node.JS

                  • 6. Re: Intel Edison I2C Block not driving I2C motor driving
                    Intel_Peter

                    How are you powering the motor? Are you using an external power supply for it? Or, are you powering directly from the board? In case it is the latter, I believe that may be the reason why you are having this behavior. For example, I have experienced it when trying to power an LCD by powering the board just with the micro USB port but when I changed to an external power supply the behavior stopped. Do you think that could be what's happening to you?

                     

                    Peter.

                    • 7. Re: Intel Edison I2C Block not driving I2C motor driving
                      OmarBarlas

                      Yes I am powering it up via external power supply, in any case the 2 LEDs on the Motor driver should go on or off as I switch direction in my application, while both LEDs Red and Green remain ON all the time

                       

                      Omar Barlas

                      • 8. Re: Intel Edison I2C Block not driving I2C motor driving
                        Intel_Peter

                        I think that behavior is baffling, if the script works on the Mini Breakout Board it shouldn't be that different on the I2C block. Can you share your script? I would like to take a look at it and see if I can find something odd with it (since I don't have an I2C block to try to replicate the issue). Also, which image are you using? You can find out with the command configure_edison --version.

                         

                        Peter.

                        • 9. Re: Intel Edison I2C Block not driving I2C motor driving
                          CMata_Intel

                          Hi Omar,

                           

                          Have you been able to run your script on the I2C Block? Could you share your script?

                          Have you tried to check the signals with an oscilloscope or logic analyzer?

                          Have you checked the schematic of the I2C Block? The Block could has pull-up or pull-down resistors that may be causing this behavior.

                           

                          Regards,

                          Charlie