Hello

I have take a close look into SPI routines.
I really not understand them.

I need simple make a connection withe the arduino in amForth.
The basics I understand how to make a pin high or low etc.
But I don’t know how to start to initialize the SPI etc.
Can someone help me with this or give a simple example?
The interface is using the standard pins for the SPI.

I mark the part of the code with <===========? where I have trouble to convert 
to amForth.

Thanks for any help.

Cheers,

Jan


#include "SPI.h"

#define SCK_PIN   13
#define MISO_PIN  12
#define MOSI_PIN  11
#define SS_PIN    10

void umFPU_begin(void)
{
    digitalWrite(SS_PIN, HIGH);
    pinMode(SS_PIN, OUTPUT);
    umFPU_reset();
}

//------------------- reset -------------------------------------------------

void umFPU_reset()
{
  digitalWrite(SS_PIN, LOW);

  // disable SPI.Master
  SPI.end();   <===========?

  // reset the FPU
  digitalWrite(MOSI_PIN, HIGH);
  for (byte i = 0; i < 80; i++)
  {
    digitalWrite(SCK_PIN, HIGH);
    digitalWrite(SCK_PIN, LOW);
  }
  digitalWrite(MOSI_PIN, LOW);

  delay(10);

  // enable SPI.Master
  SPI.setDataMode(SPI_MODE0);
  SPI.setBitOrder(MSBFIRST);
  SPI.setClockDivider(SPI_CLOCK_DIV4);
  SPI.begin();  <===========?

  digitalWrite(SS_PIN, HIGH);
}

byte umFPU_read(void)
{
  byte bval;
  digitalWrite(SS_PIN, LOW);
  umFPU_readDelay();
  bval = SPI.transfer(0); <===========?
  digitalWrite(SS_PIN, HIGH);
  return bval;
}

void umFPU_write_1(byte b1)
{
  digitalWrite(SS_PIN, LOW);
  SPI.transfer(b1);  <===========?
  digitalWrite(SS_PIN, HIGH);
}

_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to