On Thu, Jun 5, 2014 at 11:04 AM, Sidharta Prahladsingh <
[email protected]> wrote:

> the SPI lines are now confirmed to be in working order. Most things were
> fixed by sleeping after sending and by sampling at trailing clock.
>

I can't see why sleeping would be required. Also, unless you care about the
data coming back, I would use writeReadAsync() and put the entire frame
push in a beginBatch() / endBatch() block.
Sampling at the trailing vs. leading clock edge has to do with what your
slave expects.


>
> About ANY function I put in the looper does not give my feedback to
> android. Say I feed MOSI back to MISO, I KNOW there is a signal but any
> attempt to view the MISO input isn't working. Even tried making a seperate
> infograb function in another class so I can send the data to be viewed in
> Logcat but that also gives nothing. No data wants to leave looper for some
> reason.
>

I have testing code that does a loopback between MISO and MOSI and logs out
data. It works. You have something else going on it seems. The code is in
the TortureTest app, you can check it out.


>
>
> On Thursday, June 5, 2014 5:39:10 PM UTC+2, Ytai wrote:
>
>> Nothing obviously wrong with your code.
>> Since (if I understand correctly) your FPGA is also under development,
>> your best way to proceed is to capture the SPI lines with a logic analyzer
>> and see whether the IOIO is sending valid data.
>> Also, why doesn't Log.d work in your looper? It normally does.
>>
>>
>> On Thu, Jun 5, 2014 at 3:03 AM, Sidharta Prahladsingh <[email protected]
>> > wrote:
>>
>>> oh also spi is fixed. "spi_ = ioio_.openSpiMaster(new
>>> DigitalInput.Spec(4,
>>>      Mode.PULL_UP), new DigitalOutput.Spec(5),
>>>      new DigitalOutput.Spec(3),
>>>      new DigitalOutput.Spec[] { new DigitalOutput.Spec(2) },
>>>      new SpiMaster.Config(Rate.RATE_1M, false, true));" worked better
>>> than
>>> "spi_ = ioio_.openSpiMaster(4, 5, 3, 2, SpiMaster.Rate.RATE_1M);" in our
>>> situation.
>>> The latter produced double information.
>>>
>>> On Thursday, June 5, 2014 11:51:04 AM UTC+2, Sidharta Prahladsingh wrote:
>>>
>>>> Since it would be too much code to go through, I will just at my
>>>> imports, MainActivity with global variables and the Looper class:
>>>> Global variables and imports:
>>>>
>>>> import java.io.BufferedInputStream;
>>>>
>>>> import java.io.File;
>>>>
>>>> import java.io.FileOutputStream;
>>>>
>>>> import java.io.IOException;
>>>>
>>>> import java.io.InputStream;
>>>>
>>>> import java.io.InputStreamReader;
>>>>
>>>> import java.net.MalformedURLException;
>>>>
>>>> import java.net.URL;
>>>>
>>>> import java.net.URLConnection;
>>>>
>>>> import java.nio.ByteBuffer;
>>>>
>>>> import java.util.ArrayList;
>>>>
>>>> import java.util.Arrays;
>>>>
>>>> import java.util.List;
>>>>
>>>> import java.util.concurrent.ExecutionException;
>>>>
>>>>
>>>> import android.R.style;
>>>>
>>>> import android.graphics.Bitmap;
>>>>
>>>> import android.graphics.Bitmap.Config;
>>>>
>>>> import android.graphics.BitmapFactory;
>>>>
>>>> import android.graphics.Canvas;
>>>>
>>>> import android.graphics.Color;
>>>>
>>>> import android.graphics.Matrix;
>>>>
>>>> import android.graphics.Paint;
>>>>
>>>> import android.graphics.Rect;
>>>>
>>>> import android.graphics.Paint.Style;
>>>>
>>>> import android.os.AsyncTask;
>>>>
>>>> import android.os.Bundle;
>>>>
>>>> import android.os.Environment;
>>>>
>>>> import android.util.Log;
>>>>
>>>> import android.view.Menu;
>>>>
>>>> import android.view.MenuInflater;
>>>>
>>>> import android.view.MenuItem;
>>>>
>>>> import android.view.MotionEvent;
>>>>
>>>> import android.view.VelocityTracker;
>>>>
>>>> import android.view.View;
>>>>
>>>> import android.view.WindowManager;
>>>>
>>>> import ioio.lib.api.DigitalInput;
>>>>
>>>> import ioio.lib.api.DigitalInput.Spec.Mode;
>>>>
>>>> import ioio.lib.api.DigitalOutput;
>>>>
>>>> import ioio.lib.api.IOIO;
>>>>
>>>> import ioio.lib.api.SpiMaster;
>>>>
>>>> import ioio.lib.api.SpiMaster.Rate;
>>>>
>>>> import ioio.lib.api.Uart;
>>>>
>>>> import ioio.lib.api.exception.ConnectionLostException;
>>>>
>>>> import ioio.lib.util.BaseIOIOLooper;
>>>>
>>>> import ioio.lib.util.IOIOLooper;
>>>>
>>>> import ioio.lib.util.android.IOIOActivity;
>>>>
>>>> import android.view.View.OnClickListener;
>>>>
>>>> import android.annotation.TargetApi;
>>>>
>>>> import android.app.AlarmManager;
>>>>
>>>> import android.app.Dialog;
>>>>
>>>> import android.app.PendingIntent;
>>>>
>>>> import android.content.Context;
>>>>
>>>> import android.content.Intent;
>>>>
>>>> import android.database.Cursor;
>>>>
>>>> import android.net.Uri;
>>>>
>>>> import android.os.Build;
>>>>
>>>> import android.provider.MediaStore;
>>>>
>>>> import android.widget.ArrayAdapter;
>>>>
>>>> import android.widget.Button;
>>>>
>>>> import android.widget.CheckBox;
>>>>
>>>> import android.widget.EditText;
>>>>
>>>> import android.widget.FrameLayout;
>>>>
>>>> import android.widget.ImageView;
>>>>
>>>> import android.widget.LinearLayout;
>>>>
>>>> import android.widget.Spinner;
>>>>
>>>> import android.widget.TextView;
>>>>
>>>> public class MainActivity extends IOIOActivity{
>>>>  //initiation attributes
>>>> private EditText custtext;
>>>> private EditText urltxt;
>>>> private Button custtxtbut;
>>>>  private Button urlshare;
>>>> private Button picdisplayButton;
>>>> private Button rstButton;
>>>>  private ImageView pictest;
>>>> private static ImageView pictest2;
>>>> private static ImageView pictest3;
>>>>  private ImageView pictest4;
>>>> private GifView gifView;
>>>> private GifDecoder decoder;
>>>> private VelocityTracker mVelocityTracker = null;
>>>>  private static TextView test;
>>>>
>>>> //intiation variables
>>>> //width and height of the LED-matrix
>>>>  private static int picw =33;
>>>> private static int pich = 5;
>>>> private static boolean isgif = false;
>>>>  private boolean bkgchk;
>>>> private boolean check = true;
>>>> private int bkgclr = 0;
>>>> private int txtclr = 3;
>>>>  private static byte[] buffer = new byte[picw*pich*3]; //<----------
>>>> This I want to read out in Looper
>>>> public static List<Bitmap> bmlist = new ArrayList<Bitmap>();
>>>>  private static Bitmap lastpic = null;
>>>> private float touchposx;
>>>> private float touchposy;
>>>>  private float deltax;
>>>> private float deltay;
>>>> private Bitmap lastfullbm = null;
>>>> private Bitmap touchpic =null;
>>>>  private Bitmap oldtouchpic =null;
>>>>
>>>> private static byte[] bufferin= new byte[picw*pich*3];
>>>>
>>>> private static boolean picdone = true;
>>>>
>>>>
>>>> *Looper Class:*
>>>>
>>>> static class Looper extends BaseIOIOLooper {
>>>>
>>>>  //initiation of SPI protocol variable
>>>>
>>>>  private SpiMaster spi_;
>>>>
>>>>  private DigitalOutput pin8;
>>>>
>>>>  @Override
>>>>
>>>>  protected void setup() throws ConnectionLostException {
>>>>
>>>>
>>>>  pin8 = ioio_.openDigitalOutput(8, false);//image_enable
>>>>
>>>>
>>>> }
>>>>
>>>>     @Override
>>>>
>>>>  public void loop() throws ConnectionLostException,
>>>> InterruptedException {
>>>>
>>>>  if (picdone == false)
>>>>
>>>>  {
>>>>
>>>>  if (!isgif){
>>>>
>>>> //picture send process
>>>>
>>>>  spi_ = ioio_.openSpiMaster(new DigitalInput.Spec(4,
>>>>
>>>>
>>>>      Mode.PULL_UP), new DigitalOutput.Spec(5),
>>>>
>>>>      new DigitalOutput.Spec(3),
>>>>
>>>>      new DigitalOutput.Spec[] { new DigitalOutput.Spec(2) },
>>>>
>>>>      new SpiMaster.Config(Rate.RATE_1M, false, true));
>>>>
>>>>  byte[] buffer_= buffer;
>>>>
>>>>   int buffernum = (int) Math.ceil(buffer_.length/48);
>>>>
>>>>
>>>>  byte[] buffer1_= new byte[48];
>>>>
>>>>  byte[] packetlast= new byte[48];
>>>>
>>>>  pin8.write(true);
>>>>
>>>>
>>>>  Thread.sleep(500);
>>>>
>>>>  for (int i =0;i<buffernum;i++){
>>>>
>>>>  System.arraycopy(buffer_, i*48, buffer1_, 0, 48);
>>>>
>>>>
>>>>  spi_.writeRead( buffer1_, buffer1_.length,
>>>>
>>>>
>>>> buffer1_.length, null,0);* <------- e.g. I want to read here the MISO
>>>> and display it on the phone or display the buffer array from here to phone.
>>>> Log.d also doesnt work here but everywhere else.*
>>>>
>>>>  Thread.sleep(100);
>>>>
>>>>
>>>> }
>>>>
>>>>  Thread.sleep(500);
>>>>
>>>>  pin8.write(false);
>>>>
>>>>  spi_.close();
>>>>
>>>>  }
>>>>
>>>>
>>>> else
>>>>
>>>>  {
>>>>
>>>>  //GIF send process
>>>>
>>>>   isgif = false;
>>>>
>>>>  }
>>>>
>>>> picdone =true;//must be true to send 1 image per time.
>>>>
>>>>  }
>>>>
>>>>  }
>>>>
>>>>
>>>>
>>>>
>>>>  }
>>>>
>>>>
>>>>  protected IOIOLooper createIOIOLooper() {
>>>>
>>>>  return new Looper();
>>>>
>>>>  }
>>>>
>>>> On Wednesday, June 4, 2014 5:55:40 PM UTC+2, Ytai wrote:
>>>>
>>>> Regarding SPI: there shouldn't be any lost data. I would try connecting
>>>> a logic analyzer on MOSI/CLK to verify that.
>>>> Note that you can do up to 64 bytes on each transaction.
>>>> To answer the other question I need to look at your code. The static
>>>> variables should work as you expect, but there's probably something else
>>>> about your code that you're missing.
>>>>
>>>>
>>>> On Wed, Jun 4, 2014 at 4:33 AM, Sidharta Prahladsingh <sidki...@
>>>>
>>>> ...
>>>
>>>  --
>>> 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.

Reply via email to