Hi,

yes I have pull-ups to the 3.3 coming from the ioio and I have the sensor 
on a separate source at 2.6 with all grounds connected.

so what you mean is I should do this...

*try {*
* Log.d(TAG, ":| Trying to read");*
* if (port.writeRead(address, false, 
request,request.length,response,response.length)){*
* Log.i(TAG, ":) Got Initial response"); *
* for(int i=0; i<response.length; i++){*
* Log.i(TAG, "EEPROM Dump "+i+" = "+ response[i]);*
* if(i == 0xf7){*
* Log.i(TAG, "Triming Value = "+ response[i]);*
* }*
* }*
* }else{*
* Log.i(TAG, ":( NO response"); *
* }*


... right? But then again I have the problem that when *response.length = 
255*, I get "*:( NO response"* but when *response.length = 120* I get a 
bunch of numbers but not the one I need which is 247. I'm not sure if that 
is part of the problem, but I'm curious since I don't know yet why that 
happens.

On Thursday, March 20, 2014 8:12:44 PM UTC-4, Ytai wrote:
>
> The writeRead() function returns a boolean that will be false in case 
> anything goes wrong (for example, failing to get an ACK from the device).
> The contents of the response array do not matter, only its size.
> Do you have pull-ups on SDA and SCL?
>
>
> On Thu, Mar 20, 2014 at 2:29 PM, Santiago Alfaro 
> <[email protected]<javascript:>
> > wrote:
>
>> Here is where I keep getting into trouble.
>>
>> I've tried with 0x00 meaning that 
>>
>> byte[] request = new byte[] { 0x00 }; //Byte address to ask for sensor 
>> data
>>
>> but that gives me an EEPROM dump of 0 and I know that is not right.
>>
>> I added the "0x50" on the request byte because I figured I was doing 
>> something wrong and on the Datasheet it shows that EEPROM Dump has the 
>> Slave Address and a Write, then the command (0x00) and then the 
>> slaveaddress (again) and a Read so since just 0x00 was not working I tried 
>> that and won't work either.
>>
>> How do I check for the return value of writeRead? won't that be the 
>> actual EEPROM Dump that I get with the for loop?
>>
>> also, in the arduino code I can use this line i2c_start_wait(0xA0);
>>  which Issues a start condition and sends address and transfer direction. If 
>> device is busy, use ack polling to wait until device is ready is there a 
>> way to do this with the ioio?
>>
>> Lastly, in playing with variables and trying things I realized that if I 
>> have the response byte be { 0xFF } my EEPROM dump will be all 0. But if I 
>> change the response Byte to { 0x7F } then I get a bunch of numbers. I don't 
>> understand why the length of the response byte changes the values of the 
>> response.
>>
>> Thanks
>> Santiago
>>
>>
>> On Wednesday, March 19, 2014 5:58:11 PM UTC-4, Ytai wrote:
>>
>>> You only need your twi write to be one byte long (0x00).
>>> Also make sure to check the return value of writeRead
>>> On Mar 19, 2014 2:29 PM, "Santiago Alfaro" <[email protected]> wrote:
>>>
>>>>  Hello All
>>>>
>>>> I'm starting to get a handle on TWI on the ioio but I have not been 
>>>> able to get an EEPROM dump from this sensor.
>>>>
>>>> The datasheet for the sensor can be found here http://www.melexis.com/
>>>> MLX90620
>>>>
>>>> and what I think are the relevant parts of it are these:
>>>>
>>>>
>>>> <https://lh4.googleusercontent.com/-DQO16I0bc_8/UyoLocosLAI/AAAAAAAAFU4/Df0qFbs20Xo/s1600/EEPROM.png>
>>>>
>>>> and
>>>>
>>>>
>>>>
>>>> <https://lh4.googleusercontent.com/-D2PP5yuAifY/UyoKBahwBOI/AAAAAAAAFUs/5NfmDToaRdc/s1600/ExportWholeEEPROM.png>
>>>>
>>>>
>>>> The code I have so far is this:
>>>>
>>>>    
>>>> *  twiEeprom = ioio_.openTwiMaster(0, TwiMaster.Rate.RATE_400KHz, 
>>>> false); *
>>>>
>>>> *     ...*
>>>>
>>>> *     ReadEeprom(0x50, twiEeprom);*
>>>>
>>>> *     ...*
>>>>
>>>> *     public void ReadEeprom(int address, TwiMaster port) {*
>>>>
>>>> * byte[] request = new byte[] { 0x00, 0x50 }; //Byte address to ask for 
>>>> sensor data*
>>>>
>>>> * byte[] response = new byte[ 0xFF ]; //Byte to save sensor data*
>>>>
>>>> * try {*
>>>>
>>>> * Log.d(TAG, ":| Trying to read");*
>>>>
>>>> * port.writeRead(address, false, 
>>>> request,request.length,response,response.length);*
>>>>
>>>> * for(int i=0; i<response.length; i++){*
>>>>
>>>> * Log.i(TAG, "EEPROM Dump "+i+" = "+ response[i]);*
>>>>
>>>> * }*
>>>>
>>>> * Log.d(TAG, ":) success reading");*
>>>>
>>>> *     ...*
>>>>
>>>> My problem is that I keep getting all zeros on the EEPROM Dump. I know 
>>>> I'm correctly connected because it works on an Arduino. (also because I 
>>>> already burnt a IOIO trying to figure another thing out :D but now the new 
>>>> one is surviving )
>>>>
>>>>
>>>> Is there anything that jumps out that I'm doing wrong? I can send more 
>>>> detail if needed.
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> Santiago
>>>>
>>>>  -- 
>>>> 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