Jan,

Can I suggest that in order to get to grips with it, rather than starting with 
the Arduino example, study the data book for the microcontroller to learn how 
SPI is controlled with the related registers, and then study the SPI words 
provided with the AmForth package.  

C/C++/Arduino language examples often are based on libraries which are not 
transparent, and thus a direct translation to Forth is not possible.

Peter



 

> On 7 Jun 2019, at 17:06, Jan Kromhout via Amforth-devel 
> <amforth-devel@lists.sourceforge.net> wrote:
> 
> 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



_______________________________________________
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