@"Mike Green"
That took less time than expected to add the SD card words to the glossary (at the top of this thread). As I've no experience with this module and you (will) have, for any mods or additions, please get in touch. Small examples of how words work with each other are always useful, for instance.
Thank you for the warm support. I love this forum.
I have already been reading the Taqoz Assembly. There is so much to learn here.
The word definitions are pretty easy to follow. The part I have a hard time with is the memory definitions at the start. So it would be great to work with someone else on that. I suspect there is more documentation on the assembly language I have not found yet.
We also need to resolve the conflict what is the official repository Peter's dropbox or the github Taqoz repository?
Also we should rewrite the assembly a bit. taqoz now supports multiple dictionaries, we should have the core functionality, stack, and operations, plus pins, in the main dictionary, but separate out the other stuff like erminals, so it can be optionally loaded. That would save some very valuable space in the cogs. No rush. Lots of other things to do first.
I do want to grow this Forth group. I mention it from time to time in the Silicon valley Forth interest group. and on reddit.com/r/forth. I am thinking of offering a Taqoz classes. I have not committed to it. Put up a terminal in a web browser, and connect each student to their own cog over MQTT. The magic is that one has to be able to watch what the students are typing, in order to manage the class. I have all of the tools for that. here is a Teaching Python turtle graphics demo.
Hi Bob,
would you like to add some hint into your great glossary?
repeat, again, until, if, while, else,... are implemented with relative jumps with a maximum distance of 127 words.
I had some very weird behaviour until I found out....
@bob_g4bby ,
I've just discovered the words (except the SETNCO) in SMARTPIN NUMERICALLY CONTROLLED OSCILLATOR section of the glossary are part of the TAQOZ in ROM so I would consider them to be more like kernel words rather than extended (perhaps not formally kernel but still you do not need to load the extend.fth to be able to use them). Very minor thing anyway and not really that important. There are more too like all of the SMARTPIN PULSES section words so it is possible I am misinterpreting the "source" column. Haven't looked further. These have just popped up by chance while I was actually USING your great glossary.
Worth to be included into the glossary regarding SAVETEXT, I think:
1. RO is not needed after SAVETEXT, as SAVETEXT uses FCLOSE, which switches to read-only automatically.
2. If the text is longer than one sector, the transfer speed has to be reduced. I assume to give time to write the sector. 1ms per character worked. It's a pity that there is no handshake....
All good material, thanks fellas, I'll do an update one rainy day very soon - we're enjoying the warm sunny autumn weather by spending as much time outdoors here at the moment. The same goes for the inline assembly document - Bob
Sure, thanks. Enjoy the good weather outdoors while you can. Updates can wait but the sun won't. Besides, we can always return to this thread or the one on inline assembly.
Hi Bob, thanks, great!
In case of bad weather, there are two more items...
You might add some hint about memory space for variables. The original memory space for variables like "long myvar" is only $200 bytes long starting from $1800 and limited until $2000. If you have too much data there, it will overwrite something. So it is advisable to set the data space beginning programs with something like:
org@ := oriorg
$7a000 := userdata
userdata org
This is an example for TRACE! ( cfa -- ) . Trace! sets a limit for the wordcode. So you can control the level of detail of the trace.
: wordA 1 - ;
: wordB wordA ;
: wordC
2
begin wordB dup 0 <= until
drop
;
' wordB trace! \ set detail level and switch trace on
wordC UNTRACE
' wordA trace! \ set (deeper) detail level and switch trace on
wordC UNTRACE
Unfortunately there is "something odd" in the tracing routine. It will sometimes give wrong wordnames for uneven wordcodes. In the more detailed trace of this example, the contents of wordA is affected.
@"Christof Eb."
I'd like to include your 'COG space variable' code as well as the 'Hub memory space set' up tip above. How much memory do you think is available per cog for COG space variables, please?
Cheers, Bob
@bob_g4bby said:
@"Christof Eb."
I'd like to include your 'COG space variable' code as well as the 'Hub memory space set' up tip above. How much memory do you think is available per cog for COG space variables, please?
Cheers, Bob
OH, I think this is a misunderstanding. These variables are located in Hub Ram, as an array of 8 elements each. Each cog finds its cogid and selects the element of the array depending from the cogid. So every cog has it's private variable.
@"Christof Eb."
Aah - serves me right for making assumptions. The glossary now includes the variable space allocation and TRACE! hints - thanks for those, very useful.
Cheers, Bob
Hi. I'm new to Forth/TAQOZ on Propeller. I'm trying to simply read the ADC value from a SmartPin.
and I find I need a bit more direction on what the min/ref values mean on SETADC and how to interpret the result. can anyone shed some light on this for me, please? am I overlooking something more obvious?
@ngeneer said:
Hi. I'm new to Forth/TAQOZ on Propeller. I'm trying to simply read the ADC value from a SmartPin.
and I find I need a bit more direction on what the min/ref values mean on SETADC and how to interpret the result. can anyone shed some light on this for me, please? am I overlooking something more obvious?
Hi,
these words are defined in extended.fth, the calibration is used by the word "VOLTS@":
pub VOLTS@ ( -- volts1000 ) RDPIN AMIN W@ - 1000 AREF W@ U/ ;
SETADC stores calibration values in an array for the active smartpin.
This kind of calibration is useful, because the sigma delta adc of P2 has a range different from 0...3.3V.
The centre is near 1,65Volts but the feedback resistor is 300k, while for gain=1 the measurement resistor is 450k, giving in theory a range of 5.0V, (which is clipped by protecting diodes).
RDPIN will give the raw adc- value for calibration, see extend.fth, after the initial
"40 PIN 40,000 ADC", which sets the pin and the cycles and the pinmode.
I have not tried this calibration myself. Hope these hints might be useful nevertheless.
( usage: 40 PIN 40,000 ADC 7191 7675 SETADC )
Here the theoretical numbers for 40.000 cycles seem to be:
First number (7191), offset for zero volts to GND: 20.000*(1-1,65V/2,5V)= 6800
Second number (7675), scaling: 20.000/2,5V= 8000.
@"Christof Eb." said:
( usage: 40 PIN 40,000 ADC 7191 7675 SETADC )
Here the theoretical numbers for 40.000 cycles seem to be:
First number (7191), offset for zero volts to GND: 20.000*(1-1,65V/2,5V)= 6800
Second number (7675), scaling: 20.000/2,5V= 8000.
Dynamite! thanks. just getting back to this, and just what I was looking for.
@"Christof Eb." I'd like to add a little note in the glossary about this, but I'm a complete newcomer to A/D conversion on P2 and I haven't yet found a decent description of it on the forum:-
Can you point me to a note that describes this more fully including a circuit? OR
Is the 300k resistor internal to the P2?
Is the 450k resistor external to the P2, connected between signal source and P2 pin?
Are the protection diodes internal or external?
Are there any other external components?
How does the chosen calibration value 7191 relate to the formula which equals 6800?
How does the chosen calibration value 7675 relate to the formula which equals 8000?
The difference between the numbers come from limited precision. You can switch the inputs of the adc to +3.3V and to gnd to make calibration more easy. The schematic is incomplete regarding this possibility.
There is still no information about input impedance -depending on gain- and still the misleading ENOB of fancy 18bits for Sync3 mode in the P2 Hardware Manual.
I really hope, that Parallax will provide better information some time.
Christof
Many thanks, Christof, the circuit and your other comments at least get you started. I'll add the diagram and a few comments to the glossary. That"s enough to at least get started with it. I can always add a link to detailed information when it exists - Bob.
Oh, I had another look into the datasheet 2021/07/09, page 47. It says: "Max DC current into an input pin with internal protection diode forward biased" So they are there.
I've up-issued the glossary to version 42 with some explanation of SETADC in the SMARTPIN ANALOGUE section. I can improve on it if and when anyone has suggestions. As it stands it's another useful addition from Christof.
Your useful tip above about what to do if you need more memory for variables begs the question: What is then the largest space available for variables? Also does maximising variable space mean a restriction on something else?
Hi Bob,
these days I am doing stuff with other controllers, with lower pincount, less cores and lower cost.
As far as I remember, the vga screen buffer could be the upper memory limitation. Perhaps I will be back to P2 in a few weeks.....
Christof
Comments
Is there a glossary or other documentation yet for the FILES module, particularly for things like deleting a file or renaming a file?
Files glossary - it's about time there was one, so give me a week or so ;-)
Add to the existing glossary or a separate document? I don't mind which.
Given that the FILES module is included in TAQOZ Reloaded, I would recommend that you add to the existing glossary. Thank you.
@"Mike Green"
That took less time than expected to add the SD card words to the glossary (at the top of this thread). As I've no experience with this module and you (will) have, for any mods or additions, please get in touch. Small examples of how words work with each other are always useful, for instance.
Thank you for the warm support. I love this forum.
I have already been reading the Taqoz Assembly. There is so much to learn here.
The word definitions are pretty easy to follow. The part I have a hard time with is the memory definitions at the start. So it would be great to work with someone else on that. I suspect there is more documentation on the assembly language I have not found yet.
We also need to resolve the conflict what is the official repository Peter's dropbox or the github Taqoz repository?
Also we should rewrite the assembly a bit. taqoz now supports multiple dictionaries, we should have the core functionality, stack, and operations, plus pins, in the main dictionary, but separate out the other stuff like erminals, so it can be optionally loaded. That would save some very valuable space in the cogs. No rush. Lots of other things to do first.
I do want to grow this Forth group. I mention it from time to time in the Silicon valley Forth interest group. and on reddit.com/r/forth. I am thinking of offering a Taqoz classes. I have not committed to it. Put up a terminal in a web browser, and connect each student to their own cog over MQTT. The magic is that one has to be able to watch what the students are typing, in order to manage the class. I have all of the tools for that. here is a Teaching Python turtle graphics demo.
https://demo.forestwiki.com/root/spiral
And for cPython (Pyodide).
https://demo.forestwiki.com/root/cPython/aceedit
Chris
An intro to inline assembly in taqoz - https://forums.parallax.com/discussion/173376/taqoz-reloaded-v2-8-writing-inline-assembly-code-notes#latest
@bob_g4bby
Beautiful, just beautiful.
You have no idea how much time you just saved me.
Thank you
Chris
@bob_g4bby I think this thread should be moved to forthspace (https://forums.parallax.com/discussion/173671/requests-for-threads-to-be-moved)?
Thanks for moving the glossary to Forthspace - so much easier to find forth stuff. I checked all the glossary links to other stuff still worked
Hi Bob,
would you like to add some hint into your great glossary?
repeat, again, until, if, while, else,... are implemented with relative jumps with a maximum distance of 127 words.
I had some very weird behaviour until I found out....
@bob_g4bby ,
I've just discovered the words (except the SETNCO) in SMARTPIN NUMERICALLY CONTROLLED OSCILLATOR section of the glossary are part of the TAQOZ in ROM so I would consider them to be more like kernel words rather than extended (perhaps not formally kernel but still you do not need to load the extend.fth to be able to use them). Very minor thing anyway and not really that important. There are more too like all of the SMARTPIN PULSES section words so it is possible I am misinterpreting the "source" column. Haven't looked further. These have just popped up by chance while I was actually USING your great glossary.
Worth to be included into the glossary regarding SAVETEXT, I think:
1. RO is not needed after SAVETEXT, as SAVETEXT uses FCLOSE, which switches to read-only automatically.
2. If the text is longer than one sector, the transfer speed has to be reduced. I assume to give time to write the sector. 1ms per character worked. It's a pity that there is no handshake....
All good material, thanks fellas, I'll do an update one rainy day very soon - we're enjoying the warm sunny autumn weather by spending as much time outdoors here at the moment. The same goes for the inline assembly document - Bob
Sure, thanks. Enjoy the good weather outdoors while you can. Updates can wait but the sun won't. Besides, we can always return to this thread or the one on inline assembly.
@"Christof Eb." @Maciek ,
I've included your comments in the glossary and the Inline Assembly docs.
Many thanks for those useful hints, Bob
Hi Bob, thanks, great!
In case of bad weather, there are two more items...
Unfortunately there is "something odd" in the tracing routine. It will sometimes give wrong wordnames for uneven wordcodes. In the more detailed trace of this example, the contents of wordA is affected.
@"Christof Eb."
I'd like to include your 'COG space variable' code as well as the 'Hub memory space set' up tip above. How much memory do you think is available per cog for COG space variables, please?
Cheers, Bob
OH, I think this is a misunderstanding. These variables are located in Hub Ram, as an array of 8 elements each. Each cog finds its cogid and selects the element of the array depending from the cogid. So every cog has it's private variable.
@"Christof Eb."
Aah - serves me right for making assumptions. The glossary now includes the variable space allocation and TRACE! hints - thanks for those, very useful.
Cheers, Bob
Hi. I'm new to Forth/TAQOZ on Propeller. I'm trying to simply read the ADC value from a SmartPin.
and I find I need a bit more direction on what the min/ref values mean on SETADC and how to interpret the result. can anyone shed some light on this for me, please? am I overlooking something more obvious?
Hi,
these words are defined in extended.fth, the calibration is used by the word "VOLTS@":
pub VOLTS@ ( -- volts1000 ) RDPIN AMIN W@ - 1000 AREF W@ U/ ;
SETADC stores calibration values in an array for the active smartpin.
This kind of calibration is useful, because the sigma delta adc of P2 has a range different from 0...3.3V.
The centre is near 1,65Volts but the feedback resistor is 300k, while for gain=1 the measurement resistor is 450k, giving in theory a range of 5.0V, (which is clipped by protecting diodes).
RDPIN will give the raw adc- value for calibration, see extend.fth, after the initial
"40 PIN 40,000 ADC", which sets the pin and the cycles and the pinmode.
I have not tried this calibration myself. Hope these hints might be useful nevertheless.
( usage: 40 PIN 40,000 ADC 7191 7675 SETADC )
Here the theoretical numbers for 40.000 cycles seem to be:
First number (7191), offset for zero volts to GND: 20.000*(1-1,65V/2,5V)= 6800
Second number (7675), scaling: 20.000/2,5V= 8000.
Dynamite! thanks. just getting back to this, and just what I was looking for.
@"Christof Eb." I'd like to add a little note in the glossary about this, but I'm a complete newcomer to A/D conversion on P2 and I haven't yet found a decent description of it on the forum:-
Happy New Year to all, Bob
Hi Bob,
unfortunately I do not feel to be the right person for your questions. This is a job for Parallax documentation!
I asked some questions here: https://forums.parallax.com/discussion/169298/adc-sampling-breakthrough#latest
And evanh answered in post #1560 with a schematic he had made: https://forums.parallax.com/discussion/download/128060/Prop2_ADC_functional.png
So all these parts are internal.
Actually there are no protection diodes mentioned there. And not in https://docs.google.com/document/d/1_b6e9_lIGHaPqZKV37E-MmCvqaS3JKYwCvHEJ-uCq8M/edit#heading=h.t13e9n7z5wp7 as far as I can see now.
So their existence seems to be my guess....
The difference between the numbers come from limited precision. You can switch the inputs of the adc to +3.3V and to gnd to make calibration more easy. The schematic is incomplete regarding this possibility.
There is still no information about input impedance -depending on gain- and still the misleading ENOB of fancy 18bits for Sync3 mode in the P2 Hardware Manual.
I really hope, that Parallax will provide better information some time.
Christof
Many thanks, Christof, the circuit and your other comments at least get you started. I'll add the diagram and a few comments to the glossary. That"s enough to at least get started with it. I can always add a link to detailed information when it exists - Bob.
Oh, I had another look into the datasheet 2021/07/09, page 47. It says: "Max DC current into an input pin with internal protection diode forward biased" So they are there.
I've up-issued the glossary to version 42 with some explanation of SETADC in the SMARTPIN ANALOGUE section. I can improve on it if and when anyone has suggestions. As it stands it's another useful addition from Christof.
Hi @"Christof Eb."
Your useful tip above about what to do if you need more memory for variables begs the question: What is then the largest space available for variables? Also does maximising variable space mean a restriction on something else?
Cheers Bob
Hi Bob,
these days I am doing stuff with other controllers, with lower pincount, less cores and lower cost.
As far as I remember, the vga screen buffer could be the upper memory limitation. Perhaps I will be back to P2 in a few weeks.....
Christof