No nagging, please!
Your loop() has 6 synchronous TWI.writeRead() calls. Each such call incurs
a round-trip latency from the Android to the IOIO and back. This can take
anywhere from a few ms to a few 10's of ms, depending on the connection
type.
A better approach would be to read all registers in one long read ("burst
read" in the datasheet). Instead of having a 1-byte response buffer, have a
6-byte one and read once.
On Mon, Jun 16, 2014 at 2:59 AM, nikhil mhatre <[email protected]> wrote:
> plz help ..
>
>
> On Sunday, 15 June 2014 10:47:10 UTC+5:30, nikhil mhatre wrote:
>
>> mpv 6050 over i2c to ioio. provides slow data. heres my code.
>>
>> class Looper extends BaseIOIOLooper {
>> /** The on-board LED. */
>> private DigitalOutput led_;
>>
>> /**
>> * Called every time a connection with IOIO has been established.
>> * Typically used to open pins.
>> *
>> * @throws ConnectionLostException
>> * When IOIO connection is lost.
>> * @throws InterruptedException
>> *
>> * @see ioio.lib.util.AbstractIOIOActivity.IOIOThread#setup()
>> */
>>
>> @Override
>> public void setup() throws ConnectionLostException, InterruptedException
>> {
>> led_ = ioio_.openDigitalOutput(0, true);
>>
>>
>> // Create the i2c port
>> twi = ioio_.openTwiMaster(0, TwiMaster.Rate.RATE_1MHz, false);
>>
>> ///////////////////////
>> //Get the whoamI register value to check if the sensor is connected
>>
>> byte[] request = new byte[] {0x75};
>> byte[] response = new byte[1];
>> //try {
>> twi.writeRead(0x68, false, request, request.length, response,
>> response.length);
>> //} catch (InterruptedException e1) {
>> //TODO Auto-generated catch block
>> //e1.printStackTrace();
>> //}
>> /*
>> //Make the power control bit high
>> byte[] request1 = new byte[] {0x6B,0x00};
>> //try {
>> twi.writeRead(0x68, false, request1, request1.length, null,0);
>> //} catch (InterruptedException e1) {
>> //TODO Auto-generated catch block
>> //e1.printStackTrace();
>> //}
>> //Set the range of accel
>> request1[0] = 0x1C;
>> request1[1] = 0x10;
>> try {
>> twi.writeRead(0x68, false, request1, request1.length, null,0);
>> } catch (InterruptedException e1) {
>> //TODO Auto-generated catch block
>> e1.printStackTrace();
>> }
>> //////////////////////////////////////////////////////
>> */
>> }
>>
>> /**
>> * Called repetitively while the IOIO is connected.
>> *
>> * @throws ConnectionLostException
>> * When IOIO connection is lost.
>> *
>> * @see ioio.lib.util.AbstractIOIOActivity.IOIOThread#loop()
>> */
>>
>> @Override
>> public void loop() throws ConnectionLostException {
>>
>> //xhigh in request1 and response 1
>> //int tempxH=0;
>> request[0] = 0x3B;
>> try {
>> twi.writeRead(0x68, false, request, request.length, response,
>> response.length);
>> } catch (InterruptedException e1) {
>> // TODO Auto-generated catch block
>> e1.printStackTrace();
>> }
>> tempxH=((int)(response[0]));
>> //xlow in request1 and response 1
>> request[0] = 0x3C;
>> try {
>> twi.writeRead(0x68, false, request, request.length, response,
>> response.length);
>> } catch (InterruptedException e1) {
>> // TODO Auto-generated catch block
>> e1.printStackTrace();
>> }
>>
>> tempxH = (tempxH*255) + response[0];
>> tempxH=tempxH*(0.00024);
>>
>>
>> //yhigh in request 2
>>
>> //int tempyH=0;
>> request[0] = 0x3D;
>> try {
>> twi.writeRead(0x68, false, request, request.length, response,
>> response.length);
>> } catch (InterruptedException e1) {
>> // TODO Auto-generated catch block
>> e1.printStackTrace();
>> }
>> tempyH=((int)(response[0]));
>> //ylow in request1 and response 1
>> request[0] = 0x3E;
>> try {
>> twi.writeRead(0x68, false, request, request.length, response,
>> response.length);
>> } catch (InterruptedException e1) {
>> // TODO Auto-generated catch block
>> e1.printStackTrace();
>> }
>>
>> tempyH = (tempyH*255) + response[0];
>> tempyH=tempyH*(0.00024);
>>
>> //zhigh in request 2
>> //int tempzH=0;
>> request[0] = 0x3F;
>> try {
>> twi.writeRead(0x68, false, request, request.length, response,
>> response.length);
>> } catch (InterruptedException e1) {
>> // TODO Auto-generated catch block
>> e1.printStackTrace();
>> }
>> tempzH=((int)(response[0]));
>> //zlow in request1 and response 1
>> request[0] = 0x40;
>> try {
>> twi.writeRead(0x68, false, request, request.length, response,
>> response.length);
>> } catch (InterruptedException e1) {
>> // TODO Auto-generated catch block
>> e1.printStackTrace();
>> }
>>
>> tempzH = (tempzH*255) + response[0];
>> tempzH=tempzH*(0.00024);
>>
>> str1 = Double.toString(tempxH);
>> str2 = Double.toString(tempyH);
>> str3 = Double.toString(tempzH);
>> //xAxisText.setText("Hello");
>> updateTextView(xAxisText,str1);
>> updateTextView(yAxisText,str2);
>> updateTextView(zAxisText,str3);
>> }
>>
>> }
>>
>> * A method to create our IOIO thread.
>>
>> private void updateTextView(final TextView textView, final String text) {
>> runOnUiThread(new Runnable() {
>> @Override
>> public void run() {
>> textView.setText(text);
>> }
>> });
>> }
>>
>>
>> protected IOIOLooper createIOIOLooper() {
>> return new Looper();
>> }
>> }
>>
>> i tried twimaster rate ie 400khz,100khz. but no use.
>> i tried running app on usb mode without using bluetooth dongle. im
>> getting 1000 values/ 3 sec which is slow for i2c connection when using usb
>> mode.
>>
> --
> 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.