Can you please post a much shorter version of this code that summarizes
what you're trying to ask?
On May 4, 2014 1:58 PM, "Saaddin" <[email protected]> wrote:
> IOIO Users,
>
> I want to asking about my SPI code, when program is running, the led on
> board is on, and the graphic is running( command: *redraw();* ), but
> seems something wrong about my data SPI ( array: *response_ReadData[3],
> **response_ReadData[4],
> **response_ReadData[5]* on *public void loop()* ) because that array is
> constant value, on my design must be not constant value. Beside that the SS
> pin is high when i check using multimeter, please check this code:
>
> package com.saaddin.dataacquisition;
>> import java.math.BigInteger;
>> import java.text.DecimalFormat;
>> import java.util.Random;
>> import java.util.logging.Logger;
>>
>> import ioio.lib.api.AnalogInput;
>> import ioio.lib.api.DigitalOutput;
>> import ioio.lib.api.SpiMaster;
>> import ioio.lib.api.SpiMaster.Rate;
>> import ioio.lib.api.DigitalInput;
>> import ioio.lib.api.DigitalInput.Spec.Mode;
>> import ioio.lib.api.exception.ConnectionLostException;
>> import ioio.lib.util.AbstractIOIOActivity;
>>
>> import com.androidplot.xy.BoundaryMode;
>> import com.androidplot.xy.LineAndPointFormatter;
>> import com.androidplot.xy.XYPlot;
>> import com.androidplot.xy.XYStepMode;
>> import com.saaddin.dataacquisition.R;
>>
>> import android.graphics.Color;
>> import android.os.Bundle;
>> import android.view.View;
>> import android.view.Window;
>> import android.view.View.OnClickListener;
>> import android.widget.SeekBar;
>> import android.widget.TextView;
>
>
> public class MainActivity extends AbstractIOIOActivity implements
>> OnClickListener {
>>
>> private final int ANALOG_SENSOR_PIN = 40;
>>
>> static final int misoPin = 35;
>> static final int mosiPin = 36;
>> static final int clkPin =37;
>> int ssPin = 6;
>> int[] ssPins = new int[] { 6 };
>>
>> private TextView mValueTextView;
>> private SeekBar mValueSeekBar;
>>
>>
>> private XYPlot dynamicPlot;
>> SampleDynamicSeries series1 = new SampleDynamicSeries(50);
>> Random random = new Random();
>>
>>
>>
>> @Override
>> public void onCreate(Bundle savedInstanceState)
>> {
>> super.onCreate(savedInstanceState);
>> requestWindowFeature(Window.FEATURE_NO_TITLE);
>> setContentView(R.layout.activity_main);
>> findViewById(R.id.dynamicPlot).setOnClickListener(this);
>> setupGraph();
>> dynamicPlot.redraw();
>>
>>
>> mValueTextView = (TextView) findViewById(R.id.tvValue);
>> mValueSeekBar = (SeekBar) findViewById(R.id.sbValue);
>>
>> enableUi(false);
>>
>> }
>>
>> class IOIOThread extends AbstractIOIOActivity.IOIOThread /*implements
>> OnClickListener*/
>> {
>> private AnalogInput mInput;
>>
>> /** The on-board LED. */
>> private DigitalOutput led_;
>> private DigitalOutput PDWN_RESET;
>
> private DigitalOutput START;
>>
>>
>>
>> private XYPlot dynamicPlot;
>> SampleDynamicSeries series1 = new SampleDynamicSeries(50);
>> Random random = new Random();
>>
>>
>> private SpiMaster spi;
>>
>>
>>
>>
>> byte request_SDATAC = (byte)0x11;
>>
>> byte write_CONFIG3 = (byte)0x43;
>
> byte jumlah_register_CONFIG3 = (byte)0x00;
>> byte request_CONFIG3 = (byte)0xC0;
>>
>> byte write_CONFIG1 = (byte)0x41;
>>
> byte jumlah_register_CONFIG1 = (byte)0x00;
>> byte request_CONFIG1 = (byte)0x86;
>> byte write_CONFIG2 = (byte)0x42;
>> byte jumlah_register_CONFIG2 = (byte)0x00;
>> byte request_CONFIG2_default = (byte)0x00;
>
> byte request_CONFIG2_testsignal = (byte)0x10;
>> byte write_CH1SET = (byte)0x45;
>
> byte jumlah_register_CH1SET = (byte)0x00;
>> byte request_CH1SET_inputshort = (byte)0x01;
>> byte request_CH1SET_testsignal = (byte)0x05;
>> byte request_CH1SET_normalinput = (byte)0x10;
>> byte request_RDATAC = (byte)0x10;
>>
>> byte request_RDATA = (byte)0x12;
>>
>> byte request_delay = (byte)0x00;
>>
>> byte[] request_StopRead = new byte[]{ request_SDATAC,
>> request_delay, request_delay, request_delay, request_delay};
>> byte[] response_StopRead = new byte[0];
>> //mensetting internal voltage reference
>> byte[] request_Vref = new byte[]{ write_CONFIG3,
>> jumlah_register_CONFIG3, request_CONFIG3 };
>> byte[] response_Vref = new byte[0];
>>
>>
>>
>> //high resolution with 500sps
>> byte[] request_HighRes = new byte[]{ write_CONFIG1,
>> jumlah_register_CONFIG1, request_CONFIG1 };
>> byte[] response_HighRes = new byte[0];
>> //setting default pada config2
>> byte[] request_default_CONFIG2 = new byte[]{ write_CONFIG2,
>> jumlah_register_CONFIG2, request_CONFIG2_default };
>> byte[] response_default_CONFIG2 = new byte[0];
>>
>> byte[] request_CH1Short = new byte[]{ write_CH1SET,
>> jumlah_register_CH1SET, request_CH1SET_inputshort };
>> byte[] response_CH1Short = new byte[0];
>>
>>
>>
>> byte[] request_ReadData = new byte[]{ request_RDATA };
>> byte[] response_ReadData = new byte[27];
>>
>> byte[] request_TestSignal = new byte[]{ write_CONFIG2,
>> jumlah_register_CONFIG2, request_CONFIG2_testsignal, write_CH1SET,
>> jumlah_register_CH1SET, request_CH1SET_testsignal };
>> byte[] response_TestSignal = new byte[0];
>>
>>
>> byte[] request_CH1_input_gain1 = new byte[]{ write_CH1SET,
>> jumlah_register_CH1SET, request_CH1SET_normalinput };
>> byte[] response_CH1_input_gain1 = new byte[0];
>>
>> @Override
>> public void setup() throws ConnectionLostException,
>> InterruptedException
>> {
>>
>> try {
>> led_ = ioio_.openDigitalOutput(0, false);
>>
>> PDWN_RESET = ioio_.openDigitalOutput(14, true);
>> spi = ioio_.openSpiMaster(new DigitalInput.Spec(misoPin,
>> Mode.PULL_UP), new DigitalOutput.Spec(mosiPin),
>> new DigitalOutput.Spec(clkPin),
>> new DigitalOutput.Spec[] { new
>> DigitalOutput.Spec(ssPin) },
>> new SpiMaster.Config(Rate.RATE_1M, true, true));
>>
>>
>> spi.writeRead( 0, request_StopRead, request_StopRead.length,
>> 5, response_StopRead, response_StopRead.length);
>> spi.writeRead( 0, request_Vref, request_Vref.length, 3,
>> response_Vref, response_Vref.length);
>>
>> spi.writeRead( 0, request_HighRes, request_HighRes.length, 3,
>> response_HighRes, response_HighRes.length);
>> spi.writeRead( 0, request_default_CONFIG2,
>> request_default_CONFIG2.length, 3, response_default_CONFIG2,
>> response_default_CONFIG2.length);
>>
>> spi.writeRead( 0, request_CH1Short, request_CH1Short.length,
>> 3, response_CH1Short, response_CH1Short.length);
>>
>>
>> START = ioio_.openDigitalOutput(13, true);
>>
>> spi.writeRead( 0, request_StopRead, request_StopRead.length,
>> 5, response_StopRead, response_StopRead.length);
>> spi.writeRead( 0, request_TestSignal,
>> request_TestSignal.length, 6, response_TestSignal,
>> response_TestSignal.length);
>>
>>
>>
>> mInput = ioio_.openAnalogInput(ANALOG_SENSOR_PIN);
>> enableUi(true);
>>
>>
>>
>> } catch (ConnectionLostException e) {
>> enableUi(false);
>> throw e;
>> }
>> }
>>
>> @Override
>> public void loop() throws ConnectionLostException
>> {
>>
>> try {
>>
>>
>>
>> spi.writeRead( 0, request_ReadData,
>> request_ReadData.length, 28, response_ReadData, response_ReadData.length);
>>
>> int datahigh = ((int)response_ReadData[3] << 16);
>>
>> int datamed = ((int)response_ReadData[4] <<
>> 8);
>> int datalow = ((int)response_ReadData[5]);
>>
>> int datatot = datahigh + datamed + datalow;
>>
>> float ganteng = (float) ((2.4/8388607)*datatot);
>>
>>
>> final float reading = mInput.read();
>>
>> int gantengseekbar = (int) ganteng;
>> setSeekBar((int) (gantengseekbar));
>>
>> setText(Float.toString(ganteng));
>> addNumberAndRemoveFirst(ganteng);
>> setupGraph();
>> redraw();
>>
> sleep(10);
>> } catch (InterruptedException e) {
>> ioio_.disconnect();
>> } catch (ConnectionLostException e) {
>> enableUi(false);
>> throw e;
>> }
>> }
>>
>>
>> }
>>
>> @Override
>> protected AbstractIOIOActivity.IOIOThread createIOIOThread() {
>> return new IOIOThread();
>> }
>>
>> private void enableUi(final boolean enable) {
>> runOnUiThread(new Runnable() {
>> @Override
>> public void run() {
>> mValueSeekBar.setEnabled(enable);
>> }
>> });
>> }
>>
>>
>>
>> private void setSeekBar(final int value) {
>> runOnUiThread(new Runnable() {
>> @Override
>> public void run() {
>> mValueSeekBar.setProgress(value);
>> }
>> });
>> }
>>
>> private void setText(final String str) {
>> runOnUiThread(new Runnable() {
>> @Override
>> public void run() {
>> mValueTextView.setText(str);
>> }
>> });
>> }
>>
>> private void addNumberAndRemoveFirst(final float nilai) {
>> runOnUiThread(new Runnable() {
>> @Override
>> public void run() {
>> series1.addNumberAndRemoveFirst(nilai);
>> }
>> });
>> }
>>
>> private void redraw() {
>> runOnUiThread(new Runnable() {
>> @Override
>> public void run() {
>> dynamicPlot.redraw();
>> }
>> });
>> }
>>
>>
>> private void setupGraph()
>> {
>>
>> dynamicPlot = (XYPlot) findViewById(R.id.dynamicPlot);
>> // only display whole numbers in domain labels
>> dynamicPlot.getGraphWidget().setDomainValueFormat(new
>> DecimalFormat("0"));
>>
>> dynamicPlot.addSeries(series1, new
>> LineAndPointFormatter(Color.rgb(0, 0, 0), null, Color.rgb(0, 80, 0)));
>> // create a series using a formatter with some transparency
>> applied:
>> LineAndPointFormatter f1 = new LineAndPointFormatter(Color.rgb(0,
>> 0,200), null, Color.rgb(0, 0, 80));
>> f1.getFillPaint().setAlpha(220);
>> dynamicPlot.setGridPadding(5, 0, 5, 0);
>>
>> dynamicPlot.setDomainStepMode(XYStepMode.SUBDIVIDE);
>> dynamicPlot.setDomainStepValue(series1.size());
>>
>> // thin out domain/range tick labels so they don't overlap each
>> other:
>> dynamicPlot.setTicksPerDomainLabel(5);
>> dynamicPlot.setTicksPerRangeLabel(3);
>> dynamicPlot.disableAllMarkup();
>>
>> // freeze the range boundaries:
>> dynamicPlot.setRangeBoundaries(-100, 100, BoundaryMode.FIXED);
>>
>> }
>>
>>
>>
>> @Override
>> public void onClick(View v)
>> {
>> Logger.getAnonymousLogger().info("Added one");
>> series1.addNumberAndRemoveFirst(10f * (random.nextFloat() - .5f));
>> dynamicPlot.redraw();
>> }
>>
>>
>>
>>
>> }
>>
>
>
>
>
> Thanks
>
> Saaddin
>
>
> --
> 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.