I am thinking that normally you have some inline asm code in a program, you just write it in. In this case, it initialises with nothing and you put it in later. so the fake code to fill up the space might be
org 0
long fakelong1
long fakelong2
etc
and/or maybe there is a way of filling up 300 longs quickly in assembly. NOP? Some sort of array declaration?
ok, next problem, you are pulling in named overlay files off the sd card. Or (down the track), off the ram chip. (and your board from cluso will be very useful for testing this sort of thing)
When you have the name of an overlay, do you mindlessly search through the names of files on the sd card till you find it? Or, at the beginning of the program, do you grab the names of all the files and put them in a list somewhere?
Or (even better) grab the names of all the files, put them in a list, and also put the files themselves on the ram chip for faster access?
I guess it can be built up in stages. Probably for the moment search the slow way on the sd card.
Then another issue - each time you call a subroutine that you know is going to call a task overlay, do you mindlessly load it into the cog each time? Or do you keep a record of the last overlay to go into the cog, and only reload if the new name is different to the name of the current overlay?
I was just looking at the Sirc_rx code that JonnyMac worked up, I like the clean look of the propBASIC program. Makes the program relatively easy to follow. Having said that, I am having trouble following this particular line of code, 'keyIn = keyIn & $0F'. I know this is a bitwise AND operation, which is not making any sense to me. Here is what I know, $0F=%1111, the incoming number values will be between 1 and 7= %1 and %111. I can not follow what is trying to be achieved here. When I tried the program, the LED lights up when the corresponding key is pressed on the remote, but it is not limited to the 1 through 8 keys. There are other keys that light up an LED which have a greater key value number of eight. Other than that, everything looks good.
Well, goes to show that no good dead goes unpunished!
At 1AM I was tired and probably chose a bad mask value for keyIn -- which is hardly the point, anyway; you wanted to know how to decode 12-bits SIRCS with PropBASIC and now you can. I updated the masking of the program to prevent the Volume and Channel keys from changing LEDs.
Another note on the update: Since PropBASIC only uses the __paramx variables to passing values back and forth they are safe to use in SUBs and FUNCs. I have aliased the variables used in GET_SIRCS_12 to minimize the number of variables consuming cog ram.
For fun and to show that you can embed PASM into your PropBASIC programs, I took my SIRCS decoder from the January 2010 issue of Nuts & Volts and built it into a PropBASIC program. Note that this differs from my Spin version in that it's part of the main code -- later I'll move this to its own task so that it doesn't block. Note, too, that this program gives you the SIRCS code and bit count. The attached image shows output from the key on my TV/DVD remote; the first line press (20 bits) was in DVD mode, the next line (12 bits) in TV mode.
There's a lot of interesting PASM code in ObEx and this shows that you can -- with a little effort -- take advantage of it.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
I'd like to point out that PropBASIC users shouldn't get too wound up about the 496 instruction limit per cog. This nice demo that Jon wrote uses 145 LONGS. And some of that is HUB constants. So he only used about 30% of the space in one cog for this program.
If you use subroutines for commands that generate alot of code, you really can do alot in 496 PASM instructions.
Bean.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Use BASIC on the Propeller with the speed of assembly language.
Rsadeika said...
@JonnyMac, I just tried to compile sircs_rx_v3.pbas, and I get -
line 198
error 7 invalid number of parameters; 'return irCode,irBits'
For some reason I am getting a lot of those type of errors.
Download the latest version of the compiler -- we just changed it yesterday to accommodate multiple return parameters. In the future, please trust that if I post something it has been tested.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
I'd like to point out that PropBASIC users shouldn't get too wound up about the 496 instruction limit per cog. This nice demo that Jon wrote uses 145 LONGS. And some of that is HUB constants. So he only used about 30% of the space in one cog for this program.
If you use subroutines for commands that generate alot of code, you really can do alot in 496 PASM instructions.
There is a lot room for code in a single cog. IMO It is cog’s that·will be·premium.
I will see if I can get some code working and start a new thread. Lets see if I can draw a few others into exploring PropBasic.
Okay, I'm worn out on SIRCS, so here's my final demo -- pure PropBASIC and handles 12- and 20-bit codes. Note that some registers in the Propeller, like phsa and phsb that are used in my program, cannot be treated like simple RAM variables in some applications. You'll see that I capture these registers into __temp1 so that I get the correct value from the accumulator.
[noparse][[/noparse]Edit] Bean updated the compiler (0.66) so that we can use phsa and phsb like any other value in a comparison, for example:
IF phsa > BIT_1 THEN
...now handles the gritty details of the phs registers; this keeps our PropBASIC code a little simpler and cleaner
(Jan 19) I just noticed that I had uploaded the Spin output instead of the .pbas source file -- sorry about that.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
Just a question. Is the Syntax guide finished or is there more commands needed to be added to the list? Compaired to the BS2, how many commands are available for use? I have a program known to work in BS2, but I"m having trouble converting it to Propeller's code.
Joe
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I'm going insaine. It's SOOOOOO much fun. lol
@Joe, you may want to take up Bean's offer to convert a BS2 program to propBASIC, check out Bean's earlier post for details. As for the propBASIC commands, I think it is pretty firm that there will not be any more commands added. What specific commands are you concerned with?
I'll have to add more coding in the BS2 section. My program wasn't compleated due to the BS2's lack of multiple cogs & in ability to work my program without accuracy, but let me work on my bs2 program & I'll post it then.
Joe
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I'm going insaine. It's SOOOOOO much fun. lol
jknightandkarr said...
Just a question. Is the Syntax guide finished or is there more commands needed to be added to the list? Compaired to the BS2, how many commands are available for use? I have a program known to work in BS2, but I"m having trouble converting it to Propeller's code.
Joe
The "fancy" syntax guide lists all the commands that are part of PropBASIC 1.0, but they are not fully explained. Bean and I are working hard to test all the included commands so that we can move from beta to an official release.
Bean made the offer to translate programs from PBASIC to PropBASIC to help us test. I'll help too; I have a lot of experience (probably more than most) translating PBASIC to SX/B, and PropBASIC and SX/B are very similar. Post your PBASIC program and let us show you how you might translate it to PropBASIC.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
Where are all the programs to blink lights? And what happened to the private forum?
Another question, when I modify the code below
DEVICE P8X32A, XTAL1, PLL16X ' Device Settings
FREQ 80_000_000 ' Clock Frequency
LED PIN 16 LOW ' Pin 16 is named LED, and set LOW
PROGRAM Start ' Program starts at label "Start"
Start: ' Program label
HIGH LED ' Make LED pin HIGH
PAUSE 500 ' Wait 500 milliseconds
LOW LED ' Make LED pin LOW
PAUSE 500 ' Wait 500 milliseconds
GOTO Start ' Repeat forever
END ' End of program
to this
DEVICE P8X32A ' Device Settings
LED PIN 16 LOW ' Pin 16 is named LED, and set LOW
PROGRAM Start ' Program starts at label "Start"
Start: ' Program label
HIGH LED ' Make LED pin HIGH
PAUSE 500 ' Wait 500 milliseconds
LOW LED ' Make LED pin LOW
PAUSE 500 ' Wait 500 milliseconds
GOTO Start ' Repeat forever
END ' End of program
it will give an error (no specified frequency). How can this be prevented?
I want to use the internal clock and no crystal.
humanoido
Post Edited (humanoido) : 1/17/2010 8:22:18 AM GMT
Floating point is fairly expensive in terms of resources on the Propeller. You need one or two cogs devoted to a floating point processor and, although the existing floating point code is quite fast (about 40us for basic operations), it's several orders of magnitude slower than integer arithmetic. You don't want to use floating point unless you really need it and you need to keep its use to a minimum.
Post Edited (Mike Green) : 1/17/2010 5:17:36 PM GMT
' {$STAMP BS2}
' {$PBASIC 2.5}
vss VAR Word
Mph VAR Word
Segs VAR OUTL ' Segments on P0 - P7
SegsDirs VAR DIRL ' DIRS for segments
Digs VAR OUTC ' Digit control pins
Blank CON %00000000 ' all segments off
theDig VAR Nib ' current display digit
' .GFEDCBA
Digit0 DATA %00111111 ' digit patterns
Digit1 DATA %00000110
Digit2 DATA %01011011
Digit3 DATA %01001111
Digit4 DATA %01100110
Digit5 DATA %01101101
Digit6 DATA %01111101
Digit7 DATA %00000111
Digit8 DATA %01111111
Digit9 DATA %01100111
DigSel DATA %1110 ' digit 0 active
DATA %1101 ' digit 1 active
DATA %1011 ' digit 2 active
DATA %0111 ' digit 2 active
Digs = %1111 ' all off
DIRS = $0FFF ' make segs & digs outputs
DO
COUNT 15, 1000, vss 'Get vehical speed signal
vss=67 'temporary line
Mph = vss * 9 'Turn vss signal into speed reading
DEBUG HOME, " MPH = ", DEC Mph DIG 3,DEC Mph DIG 2, DEC Mph DIG 1, DEC Mph DIG 0,CR 'temporary line Mph to pc terminal
Segs = Blank ' clear display
READ (DigSel + theDig), Digs ' select digit
READ (Digit0 + (Mph DIG theDig)), Segs ' move digit pattern to segs
theDig = theDig + 1 // 4 ' update digit pointer
LOOP
Ok here's my program I need converted to Propeller. As a note my "COUNT 15, 1000, vss" line needs to constantly run in its own cog by itself & then the "Mph=vss*9" needs to start in the other cog & loop. The vss=67 is only a temporary line, to simulate a vss signal of 67Hz, which should give me 060.3 mph after reading out on the leds. I was going to run an odometer in this as well, but I've got another job for the odometer digits as well, so I'll work on that code later.
Joe
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I'm going insaine. It's SOOOOOO much fun. lol
DEVICE P8X32A, XTAL1, PLL16X ' {$STAMP BS2} ' {$PBASIC 2.5}
FREQ 80_000_000
Blank CON %00000000 ' all segments off
Baud CON "T115200" ' Baud rate to PC
Segs PIN 0..7 OUTPUT ' Segs VAR OUTL ' Segments on P0 - P7
' SegsDirs VAR DIRL ' DIRS for segments
Digs PIN 8..11 OUTPUT ' Digs VAR OUTC ' Digit control pins
TX PIN 30 HIGH ' Serial pin to PC
vss VAR LONG ' vss VAR Word
mph VAR LONG ' Mph VAR Word
theDig VAR LONG ' theDig VAR Nib ' current display digit
wait VAR LONG ' Used to accumulated count for 1 second
ascii VAR LONG(12) ' Used to hold string to send to PC
temp VAR LONG ' Temporary variable
digits HUB BYTE(4) = "0" ' Digits to show on multiplex display
' .GFEDCBA
Digit0 DATA %00111111 ' digit patterns
Digit1 DATA %00000110
Digit2 DATA %01011011
Digit3 DATA %01001111
Digit4 DATA %01100110
Digit5 DATA %01101101
Digit6 DATA %01111101
Digit7 DATA %00000111
Digit8 DATA %01111111
Digit9 DATA %01100111
DigSel DATA %1110 ' digit 0 active
DATA %1101 ' digit 1 active
DATA %1011 ' digit 2 active
DATA %0111 ' digit 2 active
Multiplex TASK
PROGRAM Start
Start:
Digs = %1111 ' all off
' DIRS = $0FFF ' make segs & digs outputs
COUNTERA 80, 15, 0, 1, 0 ' Setup counter to accumulate count from pin P15
ascii(0) = " "
ascii(1) = "M"
ascii(2) = "P"
ascii(3) = "H"
ascii(4) = " "
ascii(5) = "="
ascii(6) = " "
ascii(11) = 13 ' Carrage return
COGSTART Multiplex ' Start task that handles the multiplexed display
wait = cnt + _Freq
DO
WAITCNT wait, _Freq ' COUNT 15, 1000, vss 'Get vehical speed signal
vss = phsa ' Get accumulated count from counter
phsa = 0 ' Zero accumulated count
vss=67 ' ***** temporary line
mph = vss * 9 'Turn vss signal into speed reading
' DEBUG HOME, " MPH = ", DEC Mph DIG 3,DEC Mph DIG 2, DEC Mph DIG 1, DEC Mph DIG 0,CR 'temporary line Mph to pc terminal
STR ascii(7), mph, 4 ' Convert mph to ascii characters
WRBYTE Digits(0), ascii(7) ' Update digits to show on multiplex display
WRBYTE Digits(1), ascii(8)
WRBYTE Digits(2), ascii(9)
WRBYTE Digits(3), ascii(10)
FOR temp = 0 TO 11 ' Send string to PC
IF temp = 10 THEN
SEROUT TX, Baud, "."
ENDIF
SEROUT TX, Baud, ascii(temp)
NEXT
LOOP
END
TASK Multiplex
theDig VAR LONG = 0
temp VAR LONG
DO
Segs = Blank ' clear display
RDBYTE DigSel(theDig), temp ' READ (DigSel + theDig), Digs ' select digit
Digs = temp
RDBYTE Digits(theDig), temp
temp = temp - "0"
RDBYTE Digit0(temp), temp
Segs = temp
INC theDig ' theDig = theDig + 1 // 4 ' update digit pointer
theDig = theDig AND 3
PAUSE 5 ' Time to display digit
LOOP
ENDTASK
Note that you DON'T need a seperate task to do the COUNT. The hardware counters will handle that. But you do need one for the multiplex display.
I havne't tested it fully because I don't have the hardware, but it should be really close.
Bean.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Use BASIC on the Propeller with the speed of assembly language.
Thanks for the solution. After putting in RCFAST and deleting the Crystal and PLL16X Device Settings and the clock frequency, it works perfect!
This compiled PROPBASIC is absolutely fantastic. I love the choice commands and features, which are highly useful in many programming applications. It allows some really nice features running on my new Prop computer, and it's very easy to use with PropBASICide.
Other compiled languages can be a pain for those of us that don't care to type in cryptic command lines into the black box, but PROPBASIC makes it a breeze to use. I wish other languages could take the approach of PROPBASIC. You guys really did a terrific job on this, and making it more easy to use is a big key in writing code.
It's a lot of fun, and easy to use, and opens up all new doors of possibilities for the Propeller chip. A big thanks and a lot of admiration and praise to everyone involved in its development and documentation.
Note that you DON'T need a seperate task to do the COUNT. The hardware counters will handle that. But you do need one for the multiplex display.
I havne't tested it fully because I don't have the hardware, but it should be really close.
Bean.
Thanks. I gotta rig my display up since i had put an order for a better display didn't go as planned. But if id need PropBasic to do my odometer display the counting part would need a constant task to count, for accuracy reasons I would think. I for got about the speedometer itself not needing that.
Joe
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I'm going insaine. It's SOOOOOO much fun. lol
Just as Bean showed you how you can spawn the display multiplexing into its own cog you can do the same thing with the tach input -- it might look something like what follows.
TASK Speedo
timer VAR Long
pulses VAR Long
COUNTERA 112, TachIn, 0, 1, 0 ' assume low-going input
timer = cnt + _FREQ ' sync with system counter
DO
WAITCNT timer, _FREQ ' wait one second
pulses = phsa ' grab pulse count
phsa = 0 ' reset for next second
WRLONG tachPulses, pulses ' write to hub
LOOP
ENDTASK
This task depends on a pin called TachIn and a hub long called tachPulses.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
I too found PropBASICIDE a little, erm, lacking in places (!) - no TAB key; only one undo level; no colour; etc - so I've just started using NotePad++ (sorry - it's Windows only). This overcomes all of those issues, and I'm able to compile too (NotePad++ is available from notepad-plus.sourceforge.net/uk/site.htm)
To get colour coding I created the attached "userDefineLang.xml". In Windows7, extract the zip contents to "C:\Users\<YOURLOGINID>\AppData\Roaming\Notepad++", then:
(NOTE: I found that NotePad++ has a few "issues" with Window7 - toolbar buttons don't work - so the following needs to be undertaken with Admin' privileges )
1. View > User-Defined dialogue...
2. Creat new - name it PropBASIC
3. Language > PropBASIC - this sets the CURRENT document to use the PropBASIC styling/colours
To compile, I set-up a new RUN command; as follows:
1. Run > Run...
2. Browse to PropBASICIDE
3. Add $(FULL_CURRENT_PATH) to the end of the path
4. Save...
5. Name it Compile - that's what will appear in the Run menu
Using this Run command will compile your PropBASIC file to it's SPIN equivallent and place it in the same folder.
I'm gonna see if I can get a command that'll compile AND load to RAM or EEPROM too (@BEAN: Any idea what the command line call to Propellent would be?)
Anyways - I hope this is useful. Enjoy.
@BEAN: This is WAY cool - thanks
<EDIT 2010-01-22>Uploaded new version of userDefineLang.zip</EDIT>
I've not been able to test this yet, but here's what I think will load your PropBASIC compiled program to the Propeller:
1. Run > Run...
2. Browse to Propellent.exe
3. Add $(CURRENT_DIRECTORY)\$(NAME_PART).spin to the end of the command
4. Click Save...
5. Name it "Load to Propeller" - that's what will appear in the Run menu
@Bean: Don't get me wrong; your IDE's just right for getting started - and I'd much rather you spend your time making PropBASIC the best it can be I just happened to have a copy of NotePad++ installed, so thought I'd see if I could get it to fit (I find it much easier if the code's coloured).
BTW: I'm lovin' PropBASIC - now I have the simplicity of BASIC with the speed of PASM. That's just BRILLIANT, and I'm finding it a great tutorial for PASM to boot! Thank you
Also: that "much better solution" wouldn't be PropTool or BST would it?
Comments
I am thinking that normally you have some inline asm code in a program, you just write it in. In this case, it initialises with nothing and you put it in later. so the fake code to fill up the space might be
org 0
long fakelong1
long fakelong2
etc
and/or maybe there is a way of filling up 300 longs quickly in assembly. NOP? Some sort of array declaration?
ok, next problem, you are pulling in named overlay files off the sd card. Or (down the track), off the ram chip. (and your board from cluso will be very useful for testing this sort of thing)
When you have the name of an overlay, do you mindlessly search through the names of files on the sd card till you find it? Or, at the beginning of the program, do you grab the names of all the files and put them in a list somewhere?
Or (even better) grab the names of all the files, put them in a list, and also put the files themselves on the ram chip for faster access?
I guess it can be built up in stages. Probably for the moment search the slow way on the sd card.
Then another issue - each time you call a subroutine that you know is going to call a task overlay, do you mindlessly load it into the cog each time? Or do you keep a record of the last overlay to go into the cog, and only reload if the new name is different to the name of the current overlay?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.smarthome.viviti.com/propeller
At 1AM I was tired and probably chose a bad mask value for keyIn -- which is hardly the point, anyway; you wanted to know how to decode 12-bits SIRCS with PropBASIC and now you can. I updated the masking of the program to prevent the Volume and Channel keys from changing LEDs.
Another note on the update: Since PropBASIC only uses the __paramx variables to passing values back and forth they are safe to use in SUBs and FUNCs. I have aliased the variables used in GET_SIRCS_12 to minimize the number of variables consuming cog ram.
Post Edited (JonnyMac) : 1/14/2010 4:33:10 PM GMT
There's a lot of interesting PASM code in ObEx and this shows that you can -- with a little effort -- take advantage of it.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
I'd like to point out that PropBASIC users shouldn't get too wound up about the 496 instruction limit per cog. This nice demo that Jon wrote uses 145 LONGS. And some of that is HUB constants. So he only used about 30% of the space in one cog for this program.
If you use subroutines for commands that generate alot of code, you really can do alot in 496 PASM instructions.
Bean.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Use BASIC on the Propeller with the speed of assembly language.
PropBASIC thread http://forums.parallax.com/showthread.php?p=867134·
line 198
error 7 invalid number of parameters; 'return irCode,irBits'
For some reason I am getting a lot of those type of errors.
Download the latest version of the compiler -- we just changed it yesterday to accommodate multiple return parameters. In the future, please trust that if I post something it has been tested.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
Bean said
There is a lot room for code in a single cog. IMO It is cog’s that·will be·premium.
I will see if I can get some code working and start a new thread. Lets see if I can draw a few others into exploring PropBasic.
Ron
[noparse][[/noparse]Edit] Bean updated the compiler (0.66) so that we can use phsa and phsb like any other value in a comparison, for example:
...now handles the gritty details of the phs registers; this keeps our PropBASIC code a little simpler and cleaner
(Jan 19) I just noticed that I had uploaded the Spin output instead of the .pbas source file -- sorry about that.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
Post Edited (JonnyMac) : 1/20/2010 6:36:57 AM GMT
Joe
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I'm going insaine. It's SOOOOOO much fun. lol
It's a quantum leap from BS2 to Prop, but PropBasic will ease the pain.
You should post some code if you really want people to help.
Ron
Ray
Joe
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I'm going insaine. It's SOOOOOO much fun. lol
The "fancy" syntax guide lists all the commands that are part of PropBASIC 1.0, but they are not fully explained. Bean and I are working hard to test all the included commands so that we can move from beta to an official release.
Bean made the offer to translate programs from PBASIC to PropBASIC to help us test. I'll help too; I have a lot of experience (probably more than most) translating PBASIC to SX/B, and PropBASIC and SX/B are very similar. Post your PBASIC program and let us show you how you might translate it to PropBASIC.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
Another question, when I modify the code below
to this
it will give an error (no specified frequency). How can this be prevented?
I want to use the internal clock and no crystal.
humanoido
Post Edited (humanoido) : 1/17/2010 8:22:18 AM GMT
Use RCFAST ( ~12MHz) or RCSLOW (~20kHz) in place of XTAL1.This is covered in the syntax guide by JonnyMac
regards
Gerry
We closed the private forum because nobody but Bean and I had any time to do boring testing.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
Floating point is fairly expensive in terms of resources on the Propeller. You need one or two cogs devoted to a floating point processor and, although the existing floating point code is quite fast (about 40us for basic operations), it's several orders of magnitude slower than integer arithmetic. You don't want to use floating point unless you really need it and you need to keep its use to a minimum.
Post Edited (Mike Green) : 1/17/2010 5:17:36 PM GMT
Ok here's my program I need converted to Propeller. As a note my "COUNT 15, 1000, vss" line needs to constantly run in its own cog by itself & then the "Mph=vss*9" needs to start in the other cog & loop. The vss=67 is only a temporary line, to simulate a vss signal of 67Hz, which should give me 060.3 mph after reading out on the leds. I was going to run an odometer in this as well, but I've got another job for the odometer digits as well, so I'll work on that code later.
Joe
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I'm going insaine. It's SOOOOOO much fun. lol
Note that you DON'T need a seperate task to do the COUNT. The hardware counters will handle that. But you do need one for the multiplex display.
I havne't tested it fully because I don't have the hardware, but it should be really close.
Bean.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Use BASIC on the Propeller with the speed of assembly language.
PropBASIC thread http://forums.parallax.com/showthread.php?p=867134
Post Edited (Bean (Hitt Consulting)) : 1/18/2010 3:01:59 PM GMT
Thanks for the solution. After putting in RCFAST and deleting the Crystal and PLL16X Device Settings and the clock frequency, it works perfect!
This compiled PROPBASIC is absolutely fantastic. I love the choice commands and features, which are highly useful in many programming applications. It allows some really nice features running on my new Prop computer, and it's very easy to use with PropBASICide.
Other compiled languages can be a pain for those of us that don't care to type in cryptic command lines into the black box, but PROPBASIC makes it a breeze to use. I wish other languages could take the approach of PROPBASIC. You guys really did a terrific job on this, and making it more easy to use is a big key in writing code.
It's a lot of fun, and easy to use, and opens up all new doors of possibilities for the Propeller chip. A big thanks and a lot of admiration and praise to everyone involved in its development and documentation.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
humanoido
*Stamp SEED Supercomputer *Basic Stamp Supercomputer *TriCore Stamp Supercomputer
*Minuscule Stamp Supercomputer *Three Dimensional Computer *Penguin with 12 Brains
*Penguin Tech *StampOne News! *Penguin Robot Society
*Handbook of BASIC Stamp Supercomputing
*Ultimate List Propeller Languages
*MC Prop Computer
Thanks. I gotta rig my display up since i had put an order for a better display didn't go as planned. But if id need PropBasic to do my odometer display the counting part would need a constant task to count, for accuracy reasons I would think. I for got about the speedometer itself not needing that.
Joe
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I'm going insaine. It's SOOOOOO much fun. lol
This task depends on a pin called TachIn and a hub long called tachPulses.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Jon McPhalen
Hollywood, CA
PropBasic is great! Thank you very much!
Only one question: Is there a possibility to tell the IDE to use the tabulator key?
Christof
To get colour coding I created the attached "userDefineLang.xml". In Windows7, extract the zip contents to "C:\Users\<YOURLOGINID>\AppData\Roaming\Notepad++", then:
(NOTE: I found that NotePad++ has a few "issues" with Window7 - toolbar buttons don't work - so the following needs to be undertaken with Admin' privileges )
1. View > User-Defined dialogue...
2. Creat new - name it PropBASIC
3. Language > PropBASIC - this sets the CURRENT document to use the PropBASIC styling/colours
To compile, I set-up a new RUN command; as follows:
1. Run > Run...
2. Browse to PropBASICIDE
3. Add $(FULL_CURRENT_PATH) to the end of the path
4. Save...
5. Name it Compile - that's what will appear in the Run menu
Using this Run command will compile your PropBASIC file to it's SPIN equivallent and place it in the same folder.
I'm gonna see if I can get a command that'll compile AND load to RAM or EEPROM too (@BEAN: Any idea what the command line call to Propellent would be?)
Anyways - I hope this is useful. Enjoy.
@BEAN: This is WAY cool - thanks
<EDIT 2010-01-22>Uploaded new version of userDefineLang.zip</EDIT>
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
www.norfolkhelicopterclub.com
Announcement: To cut costs in the current economic climate, we have switched-off the light at the end of the tunnel.
Post Edited (simonl) : 1/22/2010 10:59:00 PM GMT
1. Run > Run...
2. Browse to Propellent.exe
3. Add $(CURRENT_DIRECTORY)\$(NAME_PART).spin to the end of the command
4. Click Save...
5. Name it "Load to Propeller" - that's what will appear in the Run menu
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
www.norfolkhelicopterclub.com
Announcement: To cut costs in the current economic climate, we have switched-off the light at the end of the tunnel.
Yeah I'm not much of an IDE programmer. It is just enough so members wouldn't have to use batch files.
A much better solution is in the works.
Bean
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Use BASIC on the Propeller with the speed of assembly language.
PropBASIC thread http://forums.parallax.com/showthread.php?p=867134·
BTW: I'm lovin' PropBASIC - now I have the simplicity of BASIC with the speed of PASM. That's just BRILLIANT, and I'm finding it a great tutorial for PASM to boot! Thank you
Also: that "much better solution" wouldn't be PropTool or BST would it?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheers,
Simon
www.norfolkhelicopterclub.com
Announcement: To cut costs in the current economic climate, we have switched-off the light at the end of the tunnel.