The code
is given.Code:DEFINE OSC 20 WHILE A <> 0 Zaehler_Byte = Zaehler_Byte + 1 WEND
Assuming that Zaehler_Byte = 60000, how long did the loop take?
The code
is given.Code:DEFINE OSC 20 WHILE A <> 0 Zaehler_Byte = Zaehler_Byte + 1 WEND
Assuming that Zaehler_Byte = 60000, how long did the loop take?
I think the following will happen. At startup all variables are cleared so A = 0. Therefore the While A <> 0 test will fail and the WHILE/WEND block will be skipped.
HTH
BrianT
Hi, ted
Supposing you use Zaeler_BYTE as a Word ( Good question ... indeed ) :
As you increment Zaeler_BYTE , you'll reach an overflow ( and return to Zero ) for Zaeler_BYTE = 65536 ...
so, you'll count from 60 000 to 60535 ...
that makes ??? loops ...
BUT ... as it is Zaeler_BYTE ...
Overflow will occur for Zaeler_BYTE = 256
And you'll count only from 96 ( 60 000 Lower Byte ) to 255 ...
that really makes ??? ... loops
Jawohl ???
Alain
PS: we suppose A is an input state ... and can be 0 or 1 ...
Last edited by Acetronics2; - 25th June 2008 at 12:30.
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
I think what Ted is actually asking is something like this ...
With a 20MHz osc, how long did it take for Zaehler_Word to reach 60,000?Code:DEFINE OSC 20 WHILE Zaehler_Word <> 60000 Zaehler_Word = Zaehler_Word + 1 WEND
Trent Jackson
Hi, Trent
Once, the littles things I raised up have been solved ... a little round in MPSIM is the next step ...
To be sure ...
Alain
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
I think that the question is very "meaningful" and not so easy to accurately answer without going into assembly routines. I say this because you need to know the number of instruction cycles needed for each mnemonic, the time taken for each cycle (around 1uS at 4MHz I think), and finally what OP codes are driving the PBP instructions. You need to have a good understanding of assembly code to be able to work it out, which I don't have, otherwise I'd provide an answer.
Trent Jackson
Hi,
I remember Darrel wrote a little bit of program to measure program parts duration ... a SEARCH through those columns will be welcome.
The second way is to use MPSIM ( part of MPLAB ) with the stopwatch : result is quite perfect !
Alain
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
I do not understand your answers.
What you need to take out of this:
If you loop a variable from zero to 60000 on a pic being driven by a 20Mhz Quartz using the pbp code WHILE without adding a Pauseus XY into the loop, what does this value tell me about the time being elapsed.
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
I only remember having responded ONCE to you ... and I do think no one here can give you a precise time as an answer. ( except Fernand REYNAUD's " a certain time" ... Lol )your answers.
End of File for me ...
Alain
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
The best way to get your answer is to compile the code, look at the assembly listing, and compute the time to execute one cycle from that. Then multiply it by the number of cycles the loop is expected to run. You also need to check the PIC assembly code docs to see how long it takes to execute each assembly code. I have done this a lot in order to determine how long my interrupt routines are.
Also I think some of the comments are about the fact that the code sample you gave may not run the way you expect. "A" is not defined so the WEND duration is unknown. Also, A does not change so it is not a good loop control variable.
I wonder if someone has written a program that reads assembler files and tags execution times to all the microcode.
Last edited by falingtrea; - 25th June 2008 at 21:51.
Tim Barr
You'll be a new a man in a couple of weeks Alain ...
Chlorpromazine is used to treat psychotic disorders and symptoms such as hallucinations, delusions, and hostility. Take two tablets twice a day with food.
Side Effects
- Shaking (like Parkinson's Disease)
- Stiffness
- Restlessness
- Problems with sex life
- Decreased appitite
Shocking side effects with Chlorpromazine -- I don't know what's worse, being schizophrenia or taking Chlorpromazine!
But I guess that the good news is that you're not schizophrenic Alain, at least I don't think so ...
Trent Jackson
Hi, Trent
I really admire your knowledge about those border subjects ...
Seems you are really used to psychiatric advice.
One thing is sure : your doubts are really boring ... and have been boring for too long a time.
Sorry not to be one of the SuperTrent's fans ...
Alain
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
Definitely not schizophrenic.
Trent Jackson
____________
Undergraduate b.tech
Anyone for a SuperTrent-Non-Fan Club?
Can I point out something (again)?
Still?Date of Birth:
February 8, 1977
Age:
31
Biography:
Fulltime student - Bachelor of Applied Science in IT
Location:
Australia
Interests:
Cars, Computers, Electronics
Occupation:
Currently not employed
falingtrea, thank you for your detailed answer. (Un)fortunately I left assembler behind me a few years ago when I started with PBP. And I would like to not go back.
So do you all agree that it is roughly 3uS per loop as T.Jackson states?
Offtopic:
I am sure that T.Jackson has his reasons to react the way he did.
Coming from his kind of answer compared to all answers in this thread, Acetronics does have mental issues.
It is something between T.Jackson and Acetronics, and you were not invited to be a freeloader, skimask. So stay out of this.
Actually, I think they all agree that you should measure it for yourself.
instruction execution time
http://www.picbasic.co.uk/forum/showthread.php?t=365
And I also think that the Rest of the forum agrees that everyone here needs to calm down.
I have the complaints to back that up.
Mellow out! Or stop posting.
<br>
DT
But Jeremy (skimask) ...
The biggest difference between you and I is that I have nothing to hide, whereas you obviously do to some extent. Your public profile is blank, not even a mention of your location (there used to be), and you seem to go off the rails when ever someone calls you by your name! Incidentally I have recently discovered that your profile did contain some information at one stage, you stated that your location was North Dakota I believe.
Trent Jackson
Ya know, I was going to PM this, but screw it...This might be good for a few laughs...and it's my B/Day and I feel froggy (of course that last fishbowl doesn't help things either!)
Listen up there Trent Jackson, UNEMPLOYED COLLEGE STUDENT, and Supa-Genius (think back to the ol' Wile E. Coyote and Road Runner cartoons) and listen good and hard...Surely your continuous (continuing I might add) institutional education and your connections have enabled you to listen and listen well, even if the average person has to yell up to your level...UP as in the angle sense...as in the vertical sense.
I had a problem with ID theft awhile back that I just recently got fixed...not your standard ID theft either (credit cards, bank accounts, etc), this jerkoff enlisted in the U.S. Navy as me. So all of the sudden, I went from a 20+ year USAF MSgt to a 1 year Seaman Basic, credentials gone, pay grade gone, test scores out, clearances---C'ya!...blah blah blah blah.
I may go 'off the rails' when somebody calls me by name (which I earned that nickname about 20+ years as a result of a cold cold winter and numerous strong beverages), but...well, I don't go into some crazy psycho B.S. rambling crap-ola... Emptying out a profile here is one of the least of my worries when it comes to that whole ID thing...but every little bit of cleaning out information couldn't hurt...
And "Ted's"...if you hang out here enough (which you obviously haven't yet), you'll figure out that Acetronics (Alain) is one of the more educated people around here. So while you're having problems figuring out exactly how many cycles a simple loop runs, all it really takes is a look at the .lst file generated by the compilation process and a bit of math would easily give you your answer. And figuring out how to use MPSIM is a good thing. After all, I don't think anybody here has YOUR hardware, with YOUR configuration. So, even if we were able to give you a correct answer for the majority, who knows...something in YOUR configuration might be just a tad bit off and cause you to have a completely different answer. So, the only true answer is for you to handle it yourself.
And besides that, Alian is absolutely right...your first post is an unanswerable question without having a definition for A.
And while this Trent Jackson, while obviously educated in certain things, sits WAY up there, with his big words and his big acronyms and big medical terms...
Ahhhhhh......that was good.....and I feel.....well, a year older...
skimask, happy birthday.
I created a new code:
There was no lst created but a mac, asm and hex.Code:Zahl VAR WORD DEFINE OSC 20 WHILE Zahl < 60000 Zahl = Zahl + 1 WEND
mac:
asm:Code:NOLIST LABEL?L macro Label RST?RP ifdef PM_USED LALL Label XALL else Label endif endm ADD?WCW macro Win, Cin, Wout if (Wout == Win) if (Cin == 1) CHK?RP Wout incf Wout, F btfsc STATUS, Z incf Wout + 1, F else movlw low (Cin) CHK?RP Wout addwf Wout, F if (((Cin) >> 8) == 0) btfsc STATUS, C incf Wout + 1, F else movlw (Cin) >> 8 btfsc STATUS, C addlw 1 addwf Wout + 1, F endif endif else movlw low (Cin) CHK?RP Win addwf Win, W MOVE?AB Wout if (((Cin) >> 8) == 0) MOVE?BA Win + 1 btfsc STATUS, C addlw 1 MOVE?AB Wout + 1 else movlw (Cin) >> 8 btfsc STATUS, C addlw 1 CHK?RP Win addwf Win + 1, W MOVE?AB Wout + 1 endif endif endm CMPGE?WCL macro Win, Cin, Label MOVE?WW Win, R0 MOVE?CB (Cin) >> 8, R1 + 1 MOVE?CA low (Cin) L?CALL CMPGE BIT?GOTO 0, STATUS, Z, Label endm CMPGE_USED = 1 GOTO?L macro Label L?GOTO Label endm LIST
How do you filter out the information needed?Code:PM_USED EQU 1 INCLUDE "16F628A.INC" ; Define statements. #define OSC 20 RAM_START EQU 00020h RAM_END EQU 0014Fh RAM_BANKS EQU 00003h BANK0_START EQU 00020h BANK0_END EQU 0007Fh BANK1_START EQU 000A0h BANK1_END EQU 000EFh BANK2_START EQU 00120h BANK2_END EQU 0014Fh EEPROM_START EQU 02100h EEPROM_END EQU 0217Fh R0 EQU RAM_START + 000h R1 EQU RAM_START + 002h R2 EQU RAM_START + 004h R3 EQU RAM_START + 006h R4 EQU RAM_START + 008h R5 EQU RAM_START + 00Ah R6 EQU RAM_START + 00Ch R7 EQU RAM_START + 00Eh R8 EQU RAM_START + 010h FLAGS EQU RAM_START + 012h GOP EQU RAM_START + 013h RM1 EQU RAM_START + 014h RM2 EQU RAM_START + 015h RR1 EQU RAM_START + 016h RR2 EQU RAM_START + 017h _Zahl EQU RAM_START + 018h _PORTL EQU PORTB _PORTH EQU PORTA _TRISL EQU TRISB _TRISH EQU TRISA INCLUDE "KKK.MAC" INCLUDE "PBPPIC14.LIB" LABEL?L L00001 CMPGE?WCL _Zahl, 0EA60h, L00002 ADD?WCW _Zahl, 001h, _Zahl GOTO?L L00001 LABEL?L L00002 END
There's a checkbox in MCS for telling MCS to kick out a .lst file during the compilation.
Put easily recognizable labels before and after the code section that your after in your PBP source and when the .lst file gets created, do a search (Ctrl-F) for those labels and you should be able to see them right off.
This is what is written in between
What is more, there is no question about my configuration. It is a timing issue. The osc value determines the speed to let the program know how many cycles one millisecond will take f.i.. Knowing the speed there is enough information to reproduce the question and to give an answer. I am not here to relearn what would take others just a few seconds to reproduce - less than writing a "do it yourself" takes.Code:48 LABEL?L L00001 + LALL + 0019- L00001 49 CMPGE?WCL _Zahl, 0EA60h, L00002 + 0019- 0838 movf _Zahl, W + 001A- 00A0 movwf R0 + 001B- 0839 movf (_Zahl) + 1, W + 001C- 00A1 movwf (R0) + 1 + 001D- 30EA movlw low ((0EA60h) >> 8) + 001E- 00A3 movwf R1 + 1 + 001F- 3060 movlw low (low (0EA60h)) + 0020- 2001 call CMPGE + 0021- 1D03 btfss STATUS, Z + 0022- 2827 goto L00002 50 ADD?WCW _Zahl, 001h, _Zahl + 0023- 0AB8 incf _Zahl, F + 0024- 1903 btfsc STATUS, Z + 0025- 0AB9 incf _Zahl + 1, F 51 GOTO?L L00001 + 0026- 2819 goto L00001 52 LABEL?L L00002 + LALL + 0027- L00002 53
I am going to use Jackson's 3us and this is the end of the story.
Do not make things more complicated than they have to be.
Last edited by Ted's; - 29th June 2008 at 10:49.
Your result is :
504.027000 ms ... @ 8.4 µs per loop !!!
3 minutes to get it with MPSIM , as we had explained you ...
Alain
Last edited by Acetronics2; - 29th June 2008 at 11:15.
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
You see, simple and easy for an experienced programmer.
Why did you not just do that in the first place?
So my code will be:
Code:Zahl VAR WORD time_in_us VAR WORD DEFINE OSC 20 WHILE Zahl < 60000 Zahl = Zahl + 1 WEND time_in_us = Zahl * (84/10)
Last edited by Ted's; - 29th June 2008 at 11:28.
One thing to clarify: Is there a difference regarding the time being elapsed when using BYTE for Zahl instead of WORD?
So
Zahl VAR WORD
is being replaced by
Zahl VAR BYTE
1) Cause here, we teach people how to catch the fish ... it's not a PbP "Drive in" !!!
2) Cause there was NO answer to what you had asked ... and no way to understand what you wanted to do ...as we had explained you ...
3) Still no way to understand ... :
... with this code, "Time_in_us" WON' T be 504 027 ... so, why re-calculate it ???Code:Zahl VAR WORD time_in_us VAR WORD DEFINE OSC 20 WHILE Zahl < 60000 Zahl = Zahl + 1 WEND time_in_us = Zahl * (84/10)
... I do not joke : with the calculation errors ( roundings ) , the showed result will be ... FALSE !!!
Was I Spiritual enough ???
Alain
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
Bookmarks