From: Jan K. <jan...@ic...> - 2019-06-07 15:06:33
|
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); } |