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); } |
From: Peter C. H. <pet...@un...> - 2019-06-07 15:29:12
|
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 <amf...@li...> 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/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Tristan W. <ho...@tj...> - 2019-06-07 15:43:10
|
Hello Jan, A quick question first. You have built your AmForth hex files with words/spirw.asm ? Kind regards, Tristan On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Jan K. <jan...@ic...> - 2019-06-07 15:44:53
|
Hello Tristan, No don’t have. Why? Verstuurd vanaf mijn iPad > Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...> het volgende geschreven: > > Hello Jan, > > A quick question first. > > You have built your AmForth hex files with words/spirw.asm ? > > Kind regards, > > Tristan > >> On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ >> Amf...@li... >> https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Tristan W. <ho...@tj...> - 2019-06-07 17:26:10
|
Hi Jan, > No don’t have. Why? Because words/spirw.asm provides c!@spi which makes using the hardware spi easier, and it is used in the recipes http://amforth.sourceforge.net/TG/recipes/SPI.html Separately, if you haven't read it already https://en.wikipedia.org/wiki/Serial_Peripheral_Interface will help a lot, as will starting with a simple SPI device (e.g. io expander, digital potentiometer) first. Kind regards, Tristan > > Verstuurd vanaf mijn iPad > > > Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...> het volgende geschreven: > > > > Hello Jan, > > > > A quick question first. > > > > You have built your AmForth hex files with words/spirw.asm ? > > > > Kind regards, > > > > Tristan > > > >> On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ > >> Amf...@li... > >> https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > > > > _______________________________________________ > > Amforth-devel mailing list for http://amforth.sf.net/ > > Amf...@li... > > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Jan K. <kro...@ho...> - 2019-06-07 17:34:41
|
Hi Tristan, What to load in the right sequence to fellow the examples in http://amforth.sourceforge.net/TG/recipes/SPI.html ? If I have the right sequence of loading the screens I will start as you mentiod. Kind regards, Jan Op 7 jun. 2019, om 19:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: Hi Jan, No don’t have. Why? Because words/spirw.asm provides c!@spi which makes using the hardware spi easier, and it is used in the recipes http://amforth.sourceforge.net/TG/recipes/SPI.html Separately, if you haven't read it already https://en.wikipedia.org/wiki/Serial_Peripheral_Interface will help a lot, as will starting with a simple SPI device (e.g. io expander, digital potentiometer) first. Kind regards, Tristan Verstuurd vanaf mijn iPad Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: Hello Jan, A quick question first. You have built your AmForth hex files with words/spirw.asm ? Kind regards, Tristan On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ Amf...@li...<mailto:Amf...@li...> https://lists.sourceforge.net/lists/listinfo/amforth-devel _______________________________________________ Amforth-devel mailing list for http://amforth.sf.net/ Amf...@li...<mailto:Amf...@li...> https://lists.sourceforge.net/lists/listinfo/amforth-devel _______________________________________________ Amforth-devel mailing list for http://amforth.sf.net/ Amf...@li...<mailto:Amf...@li...> https://lists.sourceforge.net/lists/listinfo/amforth-devel _______________________________________________ Amforth-devel mailing list for http://amforth.sf.net/ Amf...@li...<mailto:Amf...@li...> https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Erich W. <ew....@na...> - 2019-06-07 18:04:31
|
Hello Jan, Jan Kromhout writes: > Hi Tristan, > > What to load in the right sequence to fellow the examples in http://amforth.sourceforge.net/TG/recipes/SPI.html ? > If I have the right sequence of loading the screens I will start as you mentiod. > > Kind regards, > > Jan > > > > Op 7 jun. 2019, om 19:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: > > Hi Jan, > > No don’t have. Why? > > Because words/spirw.asm provides c!@spi which makes using the > hardware spi easier, and it is used in the recipes you see the filename? "words/spirw.asm"? Please note: .asm suffix. This means that in your project directory, you need to add one line to the file "dict_appl.inc". Then you need to reassemble the project and load the resulting .hex files to your controller. I strongly recommend learning this workflow, if you didn't already. Cheers, Erich > > http://amforth.sourceforge.net/TG/recipes/SPI.html > > Separately, if you haven't read it already > > https://en.wikipedia.org/wiki/Serial_Peripheral_Interface > > will help a lot, as will starting with a simple SPI device (e.g. io > expander, digital potentiometer) first. > > Kind regards, > > Tristan > > > Verstuurd vanaf mijn iPad > > Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: > > Hello Jan, > > A quick question first. > > You have built your AmForth hex files with words/spirw.asm ? > > Kind regards, > > Tristan > > On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ > Amf...@li...<mailto:Amf...@li...> > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li...<mailto:Amf...@li...> > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li...<mailto:Amf...@li...> > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li...<mailto:Amf...@li...> > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel -- May the Forth be with you ... |
From: Jan K. <jan...@ic...> - 2019-06-07 18:16:17
|
Hello Tristan,Erich This is far over my knowledge, but will give it a try. But when I try to load the spi.frt I get an error here |C| 97|\ send a byte, ignore recieved byte |S| 98|: c!spi ( c -- ) |S| 99| c!@spi drop |E= ?? -13 6 Is this also a assembler word? Kindly regards, Jan > Op 7 jun. 2019, om 19:50 heeft Erich Wälde <ew....@na...> het volgende geschreven: > > Hello Jan, > > > Jan Kromhout writes: > >> Hi Tristan, >> >> What to load in the right sequence to fellow the examples in http://amforth.sourceforge.net/TG/recipes/SPI.html ? >> If I have the right sequence of loading the screens I will start as you mentiod. >> >> Kind regards, >> >> Jan >> >> >> >> Op 7 jun. 2019, om 19:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: >> >> Hi Jan, >> >> No don’t have. Why? >> >> Because words/spirw.asm provides c!@spi which makes using the >> hardware spi easier, and it is used in the recipes > > you see the filename? "words/spirw.asm"? Please note: .asm > suffix. This means that in your project directory, you need to > add one line to the file "dict_appl.inc". Then you need to > reassemble the project and load the resulting .hex files to your > controller. I strongly recommend learning this workflow, if you > didn't already. > > Cheers, > Erich > > >> >> http://amforth.sourceforge.net/TG/recipes/SPI.html >> >> Separately, if you haven't read it already >> >> https://en.wikipedia.org/wiki/Serial_Peripheral_Interface >> >> will help a lot, as will starting with a simple SPI device (e.g. io >> expander, digital potentiometer) first. >> >> Kind regards, >> >> Tristan >> >> >> Verstuurd vanaf mijn iPad >> >> Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: >> >> Hello Jan, >> >> A quick question first. >> >> You have built your AmForth hex files with words/spirw.asm ? >> >> Kind regards, >> >> Tristan >> >> On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ >> Amf...@li...<mailto:Amf...@li...> >> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ >> Amf...@li...<mailto:Amf...@li...> >> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ >> Amf...@li...<mailto:Amf...@li...> >> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ >> Amf...@li...<mailto:Amf...@li...> >> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ >> Amf...@li... >> https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > -- > May the Forth be with you ... > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ <http://amforth.sf.net/> > Amf...@li... <mailto:Amf...@li...> > https://lists.sourceforge.net/lists/listinfo/amforth-devel <https://lists.sourceforge.net/lists/listinfo/amforth-devel> |
From: Erich W. <ew....@na...> - 2019-06-07 19:37:58
|
Hello Jan, Jan Kromhout via Amforth-devel writes: > Hello Tristan,Erich > > This is far over my knowledge, but will give it a try. > > But when I try to load the spi.frt I get an error here > > |C| 97|\ send a byte, ignore recieved byte > |S| 98|: c!spi ( c -- ) > |S| 99| c!@spi drop > |E=3D ?? -13 6 In avr8/words you will find 3 files: > 2spirw.asm n-spi.asm spirw.asm which in turn will define 4 words: > !@spi n@spi n!spi c!@spi all of these come to life if you include their .asm files and reassemble. Rebuilding your project: yes, it might look intimidating the first time. However, think about the gains: - you can chose another board with a different controller - you can change the clock crystal to another frequency, e.g. I strongly prefer baud rate crystals, e.g. 11059200 Hz. - you can change the baud rate of the serial interface (within limits). - you can extend your AmForth system with a large number or words to fit your project. - you are not locked to use somehow prebuild .hex files The sky is the limit! So: Don't give up too soon, please! This might help if you are linux based: http://amforth.sourceforge.net/UG/linux.html A very long time ago I wrote this: http://amforth.sourceforge.net/pr/Fosdem2011-proceedings-amforth.pdf If you are Windows based, have a look at=20 http://amforth.sourceforge.net/UG/windows.html Cheers, Erich > > Is this also a assembler word? > > Kindly regards, > > Jan > > > > >> Op 7 jun. 2019, om 19:50 heeft Erich Wälde <ew....@na...> het volgende geschreven: >> >> Hello Jan, >> >> >> Jan Kromhout writes: >> >>> Hi Tristan, >>> >>> What to load in the right sequence to fellow the examples in http://amforth.sourceforge.net/TG/recipes/SPI.html ? >>> If I have the right sequence of loading the screens I will start as you mentiod. >>> >>> Kind regards, >>> >>> Jan >>> >>> >>> >>> Op 7 jun. 2019, om 19:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: >>> >>> Hi Jan, >>> >>> No don’t have. Why? >>> >>> Because words/spirw.asm provides c!@spi which makes using the >>> hardware spi easier, and it is used in the recipes >> >> you see the filename? "words/spirw.asm"? Please note: .asm >> suffix. This means that in your project directory, you need to >> add one line to the file "dict_appl.inc". Then you need to >> reassemble the project and load the resulting .hex files to your >> controller. I strongly recommend learning this workflow, if you >> didn't already. >> >> Cheers, >> Erich >> >> >>> >>> http://amforth.sourceforge.net/TG/recipes/SPI.html >>> >>> Separately, if you haven't read it already >>> >>> https://en.wikipedia.org/wiki/Serial_Peripheral_Interface >>> >>> will help a lot, as will starting with a simple SPI device (e.g. io >>> expander, digital potentiometer) first. >>> >>> Kind regards, >>> >>> Tristan >>> >>> >>> Verstuurd vanaf mijn iPad >>> >>> Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: >>> >>> Hello Jan, >>> >>> A quick question first. >>> >>> You have built your AmForth hex files with words/spirw.asm ? >>> >>> Kind regards, >>> >>> Tristan >>> >>> On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ >>> Amf...@li...<mailto:Amf...@li...> >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li...<mailto:Amf...@li...> >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li...<mailto:Amf...@li...> >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li...<mailto:Amf...@li...> >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li... >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> >> >> -- >> May the Forth be with you ... >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ <http://amforth.sf.net/> >> Amf...@li... <mailto:Amf...@li...> >> https://lists.sourceforge.net/lists/listinfo/amforth-devel <https://lists.sourceforge.net/lists/listinfo/amforth-devel> > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel -- May the Forth be with you ... |
From: Tristan W. <ho...@tj...> - 2019-06-07 22:29:37
|
Hello Jan, Erich puts the case for being able to build AmForth very well. I build AmForth on OS X if that is of any help. Kind regards, Tristan On 07Jun19 21:37, Erich Wälde wrote: > Hello Jan, > > Jan Kromhout via Amforth-devel writes: > > > Hello Tristan,Erich > > > > This is far over my knowledge, but will give it a try. > > > > But when I try to load the spi.frt I get an error here > > > > |C| 97|\ send a byte, ignore recieved byte > > |S| 98|: c!spi ( c -- ) > > |S| 99| c!@spi drop > > |E=3D ?? -13 6 > > In avr8/words you will find 3 files: > > 2spirw.asm n-spi.asm spirw.asm > which in turn will define 4 words: > > !@spi n@spi n!spi c!@spi > all of these come to life if you include their .asm files and > reassemble. > > Rebuilding your project: yes, it might look intimidating the > first time. However, think about the gains: > > - you can chose another board with a different controller > > - you can change the clock crystal to another frequency, e.g. I > strongly prefer baud rate crystals, e.g. 11059200 Hz. > > - you can change the baud rate of the serial interface (within > limits). > > - you can extend your AmForth system with a large number or words > to fit your project. > > - you are not locked to use somehow prebuild .hex files > > The sky is the limit! So: Don't give up too soon, please! > > This might help if you are linux based: > http://amforth.sourceforge.net/UG/linux.html > A very long time ago I wrote this: > http://amforth.sourceforge.net/pr/Fosdem2011-proceedings-amforth.pdf > > If you are Windows based, have a look at=20 > http://amforth.sourceforge.net/UG/windows.html > > Cheers, > Erich > > > > > Is this also a assembler word? > > > > Kindly regards, > > > > Jan > > > > > > > > > >> Op 7 jun. 2019, om 19:50 heeft Erich Wälde <ew....@na...> het volgende geschreven: > >> > >> Hello Jan, > >> > >> > >> Jan Kromhout writes: > >> > >>> Hi Tristan, > >>> > >>> What to load in the right sequence to fellow the examples in http://amforth.sourceforge.net/TG/recipes/SPI.html ? > >>> If I have the right sequence of loading the screens I will start as you mentiod. > >>> > >>> Kind regards, > >>> > >>> Jan > >>> > >>> > >>> > >>> Op 7 jun. 2019, om 19:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: > >>> > >>> Hi Jan, > >>> > >>> No don’t have. Why? > >>> > >>> Because words/spirw.asm provides c!@spi which makes using the > >>> hardware spi easier, and it is used in the recipes > >> > >> you see the filename? "words/spirw.asm"? Please note: .asm > >> suffix. This means that in your project directory, you need to > >> add one line to the file "dict_appl.inc". Then you need to > >> reassemble the project and load the resulting .hex files to your > >> controller. I strongly recommend learning this workflow, if you > >> didn't already. > >> > >> Cheers, > >> Erich > >> > >> > >>> > >>> http://amforth.sourceforge.net/TG/recipes/SPI.html > >>> > >>> Separately, if you haven't read it already > >>> > >>> https://en.wikipedia.org/wiki/Serial_Peripheral_Interface > >>> > >>> will help a lot, as will starting with a simple SPI device (e.g. io > >>> expander, digital potentiometer) first. > >>> > >>> Kind regards, > >>> > >>> Tristan > >>> > >>> > >>> Verstuurd vanaf mijn iPad > >>> > >>> Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: > >>> > >>> Hello Jan, > >>> > >>> A quick question first. > >>> > >>> You have built your AmForth hex files with words/spirw.asm ? > >>> > >>> Kind regards, > >>> > >>> Tristan > >>> > >>> On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ > >>> Amf...@li...<mailto:Amf...@li...> > >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel > >>> > >>> > >>> _______________________________________________ > >>> Amforth-devel mailing list for http://amforth.sf.net/ > >>> Amf...@li...<mailto:Amf...@li...> > >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel > >>> > >>> > >>> > >>> _______________________________________________ > >>> Amforth-devel mailing list for http://amforth.sf.net/ > >>> Amf...@li...<mailto:Amf...@li...> > >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel > >>> > >>> > >>> _______________________________________________ > >>> Amforth-devel mailing list for http://amforth.sf.net/ > >>> Amf...@li...<mailto:Amf...@li...> > >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel > >>> > >>> > >>> _______________________________________________ > >>> Amforth-devel mailing list for http://amforth.sf.net/ > >>> Amf...@li... > >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel > >> > >> > >> -- > >> May the Forth be with you ... > >> > >> > >> _______________________________________________ > >> Amforth-devel mailing list for http://amforth.sf.net/ <http://amforth.sf.net/> > >> Amf...@li... <mailto:Amf...@li...> > >> https://lists.sourceforge.net/lists/listinfo/amforth-devel <https://lists.sourceforge.net/lists/listinfo/amforth-devel> > > > > _______________________________________________ > > Amforth-devel mailing list for http://amforth.sf.net/ > > Amf...@li... > > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > -- > May the Forth be with you ... > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Jan K. <jan...@ic...> - 2019-06-08 06:34:46
|
Hello Tristan, That’s nice. Please can you explain how to do it? I know that there are some article thats describe also how to compile forth under windows. It had a simple guideline. I have that uses for playing with the fp packages. And that was working fine. But I have removed is from my computer !! Please someone can help me out with this. With kindly regards, Jan > Op 8 jun. 2019, om 00:29 heeft Tristan Williams <ho...@tj...> het volgende geschreven: > > Hello Jan, > > Erich puts the case for being able to build AmForth very well. > > I build AmForth on OS X if that is of any help. > > Kind regards, > > Tristan > > > On 07Jun19 21:37, Erich Wälde wrote: >> Hello Jan, >> >> Jan Kromhout via Amforth-devel writes: >> >>> Hello Tristan,Erich >>> >>> This is far over my knowledge, but will give it a try. >>> >>> But when I try to load the spi.frt I get an error here >>> >>> |C| 97|\ send a byte, ignore recieved byte >>> |S| 98|: c!spi ( c -- ) >>> |S| 99| c!@spi drop >>> |E=3D ?? -13 6 >> >> In avr8/words you will find 3 files: >>> 2spirw.asm n-spi.asm spirw.asm >> which in turn will define 4 words: >>> !@spi n@spi n!spi c!@spi >> all of these come to life if you include their .asm files and >> reassemble. >> >> Rebuilding your project: yes, it might look intimidating the >> first time. However, think about the gains: >> >> - you can chose another board with a different controller >> >> - you can change the clock crystal to another frequency, e.g. I >> strongly prefer baud rate crystals, e.g. 11059200 Hz. >> >> - you can change the baud rate of the serial interface (within >> limits). >> >> - you can extend your AmForth system with a large number or words >> to fit your project. >> >> - you are not locked to use somehow prebuild .hex files >> >> The sky is the limit! So: Don't give up too soon, please! >> >> This might help if you are linux based: >> http://amforth.sourceforge.net/UG/linux.html >> A very long time ago I wrote this: >> http://amforth.sourceforge.net/pr/Fosdem2011-proceedings-amforth.pdf >> >> If you are Windows based, have a look at=20 >> http://amforth.sourceforge.net/UG/windows.html >> >> Cheers, >> Erich >> >>> >>> Is this also a assembler word? >>> >>> Kindly regards, >>> >>> Jan >>> >>> >>> >>> >>>> Op 7 jun. 2019, om 19:50 heeft Erich Wälde <ew....@na...> het volgende geschreven: >>>> >>>> Hello Jan, >>>> >>>> >>>> Jan Kromhout writes: >>>> >>>>> Hi Tristan, >>>>> >>>>> What to load in the right sequence to fellow the examples in http://amforth.sourceforge.net/TG/recipes/SPI.html ? >>>>> If I have the right sequence of loading the screens I will start as you mentiod. >>>>> >>>>> Kind regards, >>>>> >>>>> Jan >>>>> >>>>> >>>>> >>>>> Op 7 jun. 2019, om 19:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: >>>>> >>>>> Hi Jan, >>>>> >>>>> No don’t have. Why? >>>>> >>>>> Because words/spirw.asm provides c!@spi which makes using the >>>>> hardware spi easier, and it is used in the recipes >>>> >>>> you see the filename? "words/spirw.asm"? Please note: .asm >>>> suffix. This means that in your project directory, you need to >>>> add one line to the file "dict_appl.inc". Then you need to >>>> reassemble the project and load the resulting .hex files to your >>>> controller. I strongly recommend learning this workflow, if you >>>> didn't already. >>>> >>>> Cheers, >>>> Erich >>>> >>>> >>>>> >>>>> http://amforth.sourceforge.net/TG/recipes/SPI.html >>>>> >>>>> Separately, if you haven't read it already >>>>> >>>>> https://en.wikipedia.org/wiki/Serial_Peripheral_Interface >>>>> >>>>> will help a lot, as will starting with a simple SPI device (e.g. io >>>>> expander, digital potentiometer) first. >>>>> >>>>> Kind regards, >>>>> >>>>> Tristan >>>>> >>>>> >>>>> Verstuurd vanaf mijn iPad >>>>> >>>>> Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: >>>>> >>>>> Hello Jan, >>>>> >>>>> A quick question first. >>>>> >>>>> You have built your AmForth hex files with words/spirw.asm ? >>>>> >>>>> Kind regards, >>>>> >>>>> Tristan >>>>> >>>>> On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ >>>>> Amf...@li...<mailto:Amf...@li...> >>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>>> >>>>> >>>>> _______________________________________________ >>>>> Amforth-devel mailing list for http://amforth.sf.net/ >>>>> Amf...@li...<mailto:Amf...@li...> >>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Amforth-devel mailing list for http://amforth.sf.net/ >>>>> Amf...@li...<mailto:Amf...@li...> >>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>>> >>>>> >>>>> _______________________________________________ >>>>> Amforth-devel mailing list for http://amforth.sf.net/ >>>>> Amf...@li...<mailto:Amf...@li...> >>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>>> >>>>> >>>>> _______________________________________________ >>>>> Amforth-devel mailing list for http://amforth.sf.net/ >>>>> Amf...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>> >>>> >>>> -- >>>> May the Forth be with you ... >>>> >>>> >>>> _______________________________________________ >>>> Amforth-devel mailing list for http://amforth.sf.net/ <http://amforth.sf.net/> >>>> Amf...@li... <mailto:Amf...@li...> >>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel <https://lists.sourceforge.net/lists/listinfo/amforth-devel> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li... >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> >> >> -- >> May the Forth be with you ... >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ >> Amf...@li... >> https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Peter C. H. <pet...@un...> - 2019-06-08 08:00:12
|
Jan, You can also use the following words to avoid c!@spi, which is missing from the preassembled package for the Arduino: \ send a byte, ignore received byte : c!spi ( c -- ) SPDR c! ( c addr -- ) ; \ receive a byte, send a dummy one : c@spi ( -- c) 0 SPDR c! 1 ms SPDR c@ ; SPDR is a constant holding the address of the SPI data register (&78) Peter Below the complete package, which we have been using successfully (turn on and off SPI before reading or writing via SPI with +SPI and -SPI): \ basic SPI operations for a single device \ after Trute, but not using the assembly word c!@spi, \ which is not available preloaded for Arduino Uno \ and did not work when included in a newly assembled package -spiwords marker -spiwords \ SPI &78 constant SPDR \ SPI Data Register &77 constant SPSR \ SPI Status Register $80 constant SPSR_SPIF \ SPI Interrupt Flag $40 constant SPSR_WCOL \ Write Collision Flag $01 constant SPSR_SPI2X \ Double SPI Speed Bit &76 constant SPCR \ SPI Control Register $80 constant SPCR_SPIE \ SPI Interrupt Enable $40 constant SPCR_SPE \ SPI Enable $20 constant SPCR_DORD \ Data Order $10 constant SPCR_MSTR \ Master/Slave Select $08 constant SPCR_CPOL \ Clock polarity $04 constant SPCR_CPHA \ Clock Phase $03 constant SPCR_SPR \ SPI Clock Rate Selects \ SPI hardware pins PORTB 5 portpin: spi.clk PORTB 3 portpin: spi.mosi PORTB 4 portpin: spi.miso PORTB 2 portpin: spi.ss \ default SPSR 0 portpin: spi.2x SPCR 6 portpin: spi.enable SPCR 5 portpin: spi.dord SPCR 4 portpin: spi.master SPCR %00001100 bitmask: spi.mode SPCR %00000011 bitmask: spi.speed $0 constant spi.mode0 \ sample rising/-- $4 constant spi.mode1 \ --/sample falling $8 constant spi.mode2 \ sample falling/-- $c constant spi.mode3 \ --/sample rising 0 constant spi.f/4 1 constant spi.f/16 2 constant spi.f/64 3 constant spi.f/128 \ check SPI device datasheet for mode settings : spi.setmode ( spi-mode -- ) spi.mode pin! ; \ speed relative to f_cpu, constants see above : spi.setspeed ( spi.speed -- ) spi.speed pin! ; : +spi \ Slave select *must* be *always* at a controlled level when SPI is activated. \ Changing a pin into output mode change its level to low. that makes a SPI think \ a communication has started which is not the case when this word is called. spi.ss high \ deselect slave spi.ss pin_output \ possibly short low pulse spi.ss high \ spi.f/64 spi.setspeed spi.clk pin_output spi.mosi pin_output spi.miso pin_input spi.miso pin_pullup_on \ now its save to turn on the SPI module spi.master high spi.enable high ; : -spi spi.ss high ; \ send a byte, ignore received byte : c!spi ( c -- ) SPDR c! ( c addr -- ) ; \ receive a byte, send a dummy one : c@spi ( -- c) 0 SPDR c! 1 ms SPDR c@ ; > On 7 Jun 2019, at 20:16, Jan Kromhout via Amforth-devel <amf...@li...> wrote: > > Hello Tristan,Erich > > This is far over my knowledge, but will give it a try. > > But when I try to load the spi.frt I get an error here > > |C| 97|\ send a byte, ignore recieved byte > |S| 98|: c!spi ( c -- ) > |S| 99| c!@spi drop > |E= ?? -13 6 > > Is this also a assembler word? > > Kindly regards, > > Jan > > > > >> Op 7 jun. 2019, om 19:50 heeft Erich Wälde <ew....@na...> het volgende geschreven: >> >> Hello Jan, >> >> >> Jan Kromhout writes: >> >>> Hi Tristan, >>> >>> What to load in the right sequence to fellow the examples in http://amforth.sourceforge.net/TG/recipes/SPI.html ? >>> If I have the right sequence of loading the screens I will start as you mentiod. >>> >>> Kind regards, >>> >>> Jan >>> >>> >>> >>> Op 7 jun. 2019, om 19:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: >>> >>> Hi Jan, >>> >>> No don’t have. Why? >>> >>> Because words/spirw.asm provides c!@spi which makes using the >>> hardware spi easier, and it is used in the recipes >> >> you see the filename? "words/spirw.asm"? Please note: .asm >> suffix. This means that in your project directory, you need to >> add one line to the file "dict_appl.inc". Then you need to >> reassemble the project and load the resulting .hex files to your >> controller. I strongly recommend learning this workflow, if you >> didn't already. >> >> Cheers, >> Erich >> >> >>> >>> http://amforth.sourceforge.net/TG/recipes/SPI.html >>> >>> Separately, if you haven't read it already >>> >>> https://en.wikipedia.org/wiki/Serial_Peripheral_Interface >>> >>> will help a lot, as will starting with a simple SPI device (e.g. io >>> expander, digital potentiometer) first. >>> >>> Kind regards, >>> >>> Tristan >>> >>> >>> Verstuurd vanaf mijn iPad >>> >>> Op 7 jun. 2019 om 17:25 heeft Tristan Williams <ho...@tj...<mailto:ho...@tj...>> het volgende geschreven: >>> >>> Hello Jan, >>> >>> A quick question first. >>> >>> You have built your AmForth hex files with words/spirw.asm ? >>> >>> Kind regards, >>> >>> Tristan >>> >>> On 07Jun19 17:06, Jan Kromhout via Amforth-devel 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/ >>> Amf...@li...<mailto:Amf...@li...> >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li...<mailto:Amf...@li...> >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li...<mailto:Amf...@li...> >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li...<mailto:Amf...@li...> >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li... >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> >> >> -- >> May the Forth be with you ... >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ <http://amforth.sf.net/> >> Amf...@li... <mailto:Amf...@li...> >> https://lists.sourceforge.net/lists/listinfo/amforth-devel <https://lists.sourceforge.net/lists/listinfo/amforth-devel> > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Matthias T. <mt...@we...> - 2019-06-08 18:45:28
|
Hi, > You can also use the following words to avoid c!@spi, which is > missing from the preassembled package for the Arduino: > > > \ send a byte, ignore received byte > : c!spi ( c -- ) > SPDR c! ( c addr -- ) > ; > > \ receive a byte, send a dummy one > : c@spi ( -- c) > 0 SPDR c! 1 ms SPDR c@ > ; > > SPDR is a constant holding the address of the SPI data register (&78) Thanks, I've added some comments to the spi.frt file. Matthias |
From: Jan K. <kro...@ho...> - 2019-06-09 18:52:57
|
Dear Peter This is the code I need to model in amForth // enable SPI.Master SPI.setDataMode(SPI_MODE0); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV4); SPI.begin(); What to do with \ check SPI device datasheet for mode settings : spi.setmode ( spi-mode -- ) spi.mode pin! ; With kindly regards, Jan Op 8 jun. 2019, om 20:45 heeft Matthias Trute <mt...@we...<mailto:mt...@we...>> het volgende geschreven: Hi, You can also use the following words to avoid c!@spi, which is missing from the preassembled package for the Arduino: \ send a byte, ignore received byte : c!spi ( c -- ) SPDR c! ( c addr -- ) ; \ receive a byte, send a dummy one : c@spi ( -- c) 0 SPDR c! 1 ms SPDR c@ ; SPDR is a constant holding the address of the SPI data register (&78) Thanks, I've added some comments to the spi.frt file. Matthias _______________________________________________ Amforth-devel mailing list for http://amforth.sf.net/ Amf...@li...<mailto:Amf...@li...> https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Peter C. H. <pet...@un...> - 2019-06-09 19:51:41
|
Dear Jan, spi.setmode is used to set one of the 4 SPI modes 0, 1, 2, or 3, e.g. "1 spi.setmode". The mode to use depends on the device you want to connect to, and you will find it in the datasheet (perhaps not explicitely stated, but the necessary information will be there). Most common is 0. Peter > On 9 Jun 2019, at 20:52, Jan Kromhout <kro...@ho...> wrote: > > Dear Peter > > This is the code I need to model in amForth > > // enable SPI.Master > SPI.setDataMode(SPI_MODE0); > SPI.setBitOrder(MSBFIRST); > SPI.setClockDivider(SPI_CLOCK_DIV4); > SPI.begin(); > > What to do with > > \ check SPI device datasheet for mode settings > : spi.setmode ( spi-mode -- ) > spi.mode pin! > ; > > With kindly regards, > > Jan > > > > > > Op 8 jun. 2019, om 20:45 heeft Matthias Trute <mt...@we...<mailto:mt...@we...>> het volgende geschreven: > > Hi, > > You can also use the following words to avoid c!@spi, which is > missing from the preassembled package for the Arduino: > > > \ send a byte, ignore received byte > : c!spi ( c -- ) > SPDR c! ( c addr -- ) > ; > > \ receive a byte, send a dummy one > : c@spi ( -- c) > 0 SPDR c! 1 ms SPDR c@ > ; > > SPDR is a constant holding the address of the SPI data register (&78) > > Thanks, I've added some comments to the spi.frt file. > > Matthias > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li...<mailto:Amf...@li...> > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
From: Erich W. <ew....@na...> - 2019-06-09 20:42:15
|
Dear Jan, allow me to observe the following things: > // enable SPI.Master > SPI.setDataMode(SPI_MODE0); > SPI.setBitOrder(MSBFIRST); > SPI.setClockDivider(SPI_CLOCK_DIV4); > SPI.begin(); The words and the concepts behind them are documented in great detail in the datasheet of your controller. You mentioned "arduino" at the beginning of this thread, so I *guess* you are using a "atmega328p" controller. > http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf yes I know, this is a big thing with >600 pages. And no, noone expects you (or anyone else) to learn all of this by heart. However, I do expect you to read the relevant sections. The table of contents will suggest you look at chapter 19. SPI --- Serial Peripheral Interface. SPI is a piece of hardware, which will do the clocking and byte transfers for you, no need to bit bang (i.e. setting pins high and low) it yourself. The price for this nicety is that you need to configure it properly. - is the first bit in transfer the *most* or *least* significant bit? - is the data valid at rising of falling edges of the clock? (19.4 Data Modes) - which speed should the interface be clocked with? - is a transfer currently ongoing or can I write the next Byte to register SPDR and so on. I can give you my routines, but I guess you will be unable to use them if you do not understand these details, I'm afraid. So any spi transfer goes through these steps: setup bitorder, data mode, speed, maybe more (once) turn the spi module on (once or before every tx session) for every byte to transfer - fetch the next byte from a meaningful place - write the next byte to SPDR - wait until tx has completed - read the answer byte from SPDR (yes the same register!) - store the answer byte in a meaningful place repeat until no bytes are left to transmit. c!@spi will do one transfer: it sends the lower byte of the top of stack element to spi and places the result byte on the stack afterwards. It handles the body of the loop outlined above. !@spi will transfer 2 bytes == 1 word instead. it is "!" store "@" fetch spi, every transmit ("!") will provide an answer ("@"). That is why you want "!@spi" and "c!@spi" compiled into your AmForth. The example at > http://amforth.sourceforge.net/TG/recipes/SPI.html might be a bit terse, however, it does point you to trunk/avr8/lib/hardware/spi.frt which defines words and constants for all the details. trunk/avr8/lib/hardware/mmc.frt and trunk/common/lib/hardware/mmc-test.frt create an elaborate example, how to use the spi interface. As others have said: the datasheet is your friend, and once you understand, how to configure a certain piece of the controller for your project, setting the appropriate bits in its Control Register are not a big deal any more. The big deal is to find out, which bits to set. The C libraries do all of this for you, but you need to read the source and the datasheet to understand, why it is working. Once you understand this for SPI you will find that all the other parts of the controller are operated similarly: there is one or a few control registers, a set of data registers, a few flag bits here and there, and possibly a connection to one or few interrupts, to make all of this work. Also, the amforth source is full of examples and use cases. If you are on Linux, grep and find are your friends to find relevant places. If you are on MacOS or Windows, there are other tools to search file names or content, I'm sure. So, don't give up too soon. We have all been through this stage. Cheers, Erich > > What to do with > > \ check SPI device datasheet for mode settings > : spi.setmode ( spi-mode -- ) > spi.mode pin! > ; > > With kindly regards, > > Jan > > > > > > Op 8 jun. 2019, om 20:45 heeft Matthias Trute <mt...@we...<mailto:mt...@we...>> het volgende geschreven: > > Hi, > > You can also use the following words to avoid c!@spi, which is > missing from the preassembled package for the Arduino: > > > \ send a byte, ignore received byte > : c!spi ( c -- ) > SPDR c! ( c addr -- ) > ; > > \ receive a byte, send a dummy one > : c@spi ( -- c) > 0 SPDR c! 1 ms SPDR c@ > ; > > SPDR is a constant holding the address of the SPI data register (&78) > > Thanks, I've added some comments to the spi.frt file. > > Matthias > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li...<mailto:Amf...@li...> > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel -- May the Forth be with you ... |
From: Ian J. <ij...@sa...> - 2019-06-09 22:45:00
|
What a nice RTFM! I have some fond memories of working with a capable C programmer on an Atmel Butterfly as a platform. I relied heavily on the data sheet to understand the capability of the ATmega169 at the time and several times was able to identify paths forward by doing so. We were squeezing a lot of functionality out of this little chip which was probably not wise though I thought it was quite fun. I came to appreciate those data sheets which I found at first intimidating but later I began to really appreciate them and the excellent writing in them. I have not touched embedded stuff for a few years now but I stay on this list just for such posts. Keeps my gray matter functional. Ian On 6/9/19 4:42 PM, Erich Wälde wrote: > Dear Jan, > > allow me to observe the following things: > >> // enable SPI.Master >> SPI.setDataMode(SPI_MODE0); >> SPI.setBitOrder(MSBFIRST); >> SPI.setClockDivider(SPI_CLOCK_DIV4); >> SPI.begin(); > The words and the concepts behind them are documented in great > detail in the datasheet of your controller. You mentioned > "arduino" at the beginning of this thread, so I *guess* > you are using a "atmega328p" controller. > >> http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf > yes I know, this is a big thing with >600 pages. And no, noone > expects you (or anyone else) to learn all of this by heart. > However, I do expect you to read the relevant sections. > > The table of contents will suggest you look at chapter 19. SPI > --- Serial Peripheral Interface. > > SPI is a piece of hardware, which will do the clocking and byte > transfers for you, no need to bit bang (i.e. setting pins high > and low) it yourself. The price for this nicety is that you need > to configure it properly. > > - is the first bit in transfer the *most* or *least* significant > bit? > - is the data valid at rising of falling edges of the clock? > (19.4 Data Modes) > - which speed should the interface be clocked with? > - is a transfer currently ongoing or can I write the next Byte > to register SPDR > and so on. > > I can give you my routines, but I guess you will be unable to > use them if you do not understand these details, I'm afraid. > > > So any spi transfer goes through these steps: > > setup bitorder, data mode, speed, maybe more (once) > turn the spi module on (once or before every tx session) > > for every byte to transfer > - fetch the next byte from a meaningful place > - write the next byte to SPDR > - wait until tx has completed > - read the answer byte from SPDR (yes the same register!) > - store the answer byte in a meaningful place > repeat until no bytes are left to transmit. > > c!@spi will do one transfer: it sends the lower byte of the top > of stack element to spi and places the result byte on the stack > afterwards. It handles the body of the loop outlined above. > > !@spi will transfer 2 bytes == 1 word instead. > > it is "!" store "@" fetch spi, every transmit ("!") will provide > an answer ("@"). > > That is why you want "!@spi" and "c!@spi" compiled into your > AmForth. > > The example at >> http://amforth.sourceforge.net/TG/recipes/SPI.html > might be a bit terse, however, it does point you to > > trunk/avr8/lib/hardware/spi.frt > which defines words and constants for all the details. > > trunk/avr8/lib/hardware/mmc.frt and > trunk/common/lib/hardware/mmc-test.frt > create an elaborate example, how to use the spi interface. > > > As others have said: the datasheet is your friend, and once you > understand, how to configure a certain piece of the controller > for your project, setting the appropriate bits in its Control > Register are not a big deal any more. The big deal is to find > out, which bits to set. The C libraries do all of this for you, > but you need to read the source and the datasheet to understand, > why it is working. Once you understand this for SPI you will > find that all the other parts of the controller are operated > similarly: there is one or a few control registers, a set of > data registers, a few flag bits here and there, and possibly a > connection to one or few interrupts, to make all of this work. > > > Also, the amforth source is full of examples and use cases. If > you are on Linux, grep and find are your friends to find > relevant places. If you are on MacOS or Windows, there are other > tools to search file names or content, I'm sure. > > > So, don't give up too soon. We have all been through this stage. > > Cheers, > Erich > > >> What to do with >> >> \ check SPI device datasheet for mode settings >> : spi.setmode ( spi-mode -- ) >> spi.mode pin! >> ; >> >> With kindly regards, >> >> Jan >> >> >> >> >> >> Op 8 jun. 2019, om 20:45 heeft Matthias Trute <mt...@we...<mailto:mt...@we...>> het volgende geschreven: >> >> Hi, >> >> You can also use the following words to avoid c!@spi, which is >> missing from the preassembled package for the Arduino: >> >> >> \ send a byte, ignore received byte >> : c!spi ( c -- ) >> SPDR c! ( c addr -- ) >> ; >> >> \ receive a byte, send a dummy one >> : c@spi ( -- c) >> 0 SPDR c! 1 ms SPDR c@ >> ; >> >> SPDR is a constant holding the address of the SPI data register (&78) >> >> Thanks, I've added some comments to the spi.frt file. >> >> Matthias >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ >> Amf...@li...<mailto:Amf...@li...> >> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ >> Amf...@li... >> https://lists.sourceforge.net/lists/listinfo/amforth-devel > > -- > May the Forth be with you ... > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |