Community
cancel
Showing results for 
Search instead for 
Did you mean: 
idata
Community Manager
1,375 Views

Intel Edison I2C Block not driving I2C motor driving

I am using Intel Edison I2C Block https://learn.sparkfun.com/tutorials/sparkfun-blocks-for-intel-edison---i2c-breakout-block?_ga=1.125... 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 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

9 Replies
Pedro_M_Intel
Employee
46 Views

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.

idata
Community Manager
46 Views

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?

Pedro_M_Intel
Employee
46 Views

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 https://learn.sparkfun.com/tutorials/sparkfun-blocks-for-intel-edison---i2c-breakout-block SparkFun Blocks for Intel® Edison - I2C Breakout Block - learn.sparkfun.com and let us know what happens.

Peter.

idata
Community Manager
46 Views

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?

idata
Community Manager
46 Views

We are using JavaScript on Node.JS

Pedro_M_Intel
Employee
46 Views

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.

idata
Community Manager
46 Views

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

Pedro_M_Intel
Employee
46 Views

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.

Carlos_M_Intel
Employee
46 Views

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