Hi,
  
    I have tried to implement the SPI  master using the example HELLOIOIO 
SPI example. My application is terminating (It says ioio disconnected ) on 
toggling the button. 

Here is my looper code

class Looper extends BaseIOIOLooper {
            /** The on-board LED. */
            private DigitalOutput led_;
            private SpiMaster SPI;

            int[] slaves = new int[]{0,1,2};
            int[] SS_PINS = new int[]{45,46,47};
            static final int MISO_ = 3;
            static final int MOSI_ = 4;
            static final int CLCK_ = 5;
            final int DATA_SIZE = 19;
            byte[] request = new byte[5];
            byte[] response = new byte[5];
            byte[] incoming = new byte[DATA_SIZE+1];
            /**
             * Called every time a connection with IOIO has been 
established.
             * Typically used to open pins.
             *
             *
             * @throws ConnectionLostException
             *             When IOIO connection is lost.
             *
             * @see ioio.lib.util.IOIOLooper#setup()
             */
            @Override
            protected void setup() throws ConnectionLostException {
                showVersions(ioio_, "IOIO connected!");

                //Lite the LED
                led_ = ioio_.openDigitalOutput(0, true);

                //open SPI Master here
                //SPI = 
ioio_.openSpiMaster(MISO_,MOSI_,CLCK_,SS_PINS,SpiMaster.Rate.RATE_4M);
                SPI = ioio_.openSpiMaster(new DigitalInput.Spec(MISO_,
                                Mode.PULL_UP), new 
DigitalOutput.Spec(MOSI_),
                        new DigitalOutput.Spec(CLCK_),
                        new DigitalOutput.Spec[] { new 
DigitalOutput.Spec(SS_PINS[0]) },
                        new SpiMaster.Config(SpiMaster.Rate.RATE_125K, 
true, true));


                request = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05 };
                enableUi(true);

                if(button_.isChecked()){
                    //led_.write(!button_.isChecked());
                    //just read from slave on pin 45
                    try{
                        SPI.writeRead(slaves[0],request, request.length,1, 
response, response.length);
                    }
                    catch (ConnectionLostException e) {
                        e.printStackTrace();
                    }
                    catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    incoming[request[0]] = response[0];
                }
            }

            /**
             * Called repetitively while the IOIO is connected.
             *
             * @throws ConnectionLostException
             *             When IOIO connection is lost.
             * @throws InterruptedException
             *  When the IOIO thread has been interrupted.
             *
             * @see ioio.lib.util.IOIOLooper#loop()
             */
            @Override
            public void loop() throws ConnectionLostException, 
InterruptedException {

                try {
                    led_.write(false);
                    Thread.sleep(100);
                    led_.write(true);
                    Thread.sleep(100);
                    if(button_.isChecked()){
                        led_.write(true);
                        //just read from slave on pin 45
                        try{
                            SPI.writeRead(slaves[0],request, 
request.length,1, response, response.length);
                        }
                        catch (ConnectionLostException e) {
                            e.printStackTrace();
                        }
                        catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        incoming[request[0]] = response[0];
                    }
                }
                catch (InterruptedException e) {
                }
            }

            /**
             * Called when the IOIO is disconnected.
             *
             * @see ioio.lib.util.IOIOLooper#disconnected()
             */
            @Override
            public void disconnected() {
                enableUi(false);
                toast("IOIO disconnected");
            }

            /**
             * Called when the IOIO is connected, but has an incompatible 
firmware version.
             *
             * @see ioio.lib.util.IOIOLooper#incompatible(IOIO)
             */
            @Override
            public void incompatible() {
                showVersions(ioio_, "Incompatible firmware version!");
            }
        }

I would like to know the whether writeread is a blocking function call or 
not.
Is there any way to test the working of SPI master with out slave. 
Something like using Oscilloscope.


Thanks in advance

-- 
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 https://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to