Delays got me beat
Scott Dattalo email (remove spam text)
On Fri, 26 May 2000, Tim Hamel wrote:
Sean breaks this down on his site. Perhaps he'll elaborate.
First, there are two nested loops. The inner one:
The time it takes for this loop to execute depends on the contents of
some_reg loop time
x 2 + 3*(x-1) 1 <= x <= 255
This says that it takes three cycles for each pass through the loop except for
the very last one which only takes two cycles.
x=0 is a special case. The first time through the loop, x will decrement to 255.
So what happens is that the maximum delay time occurs for x=0. And in fact, the
time for the loop to execute is 2 + 3*(256-1) cycles. So for x=0 you substitute
x=256 and the general formula:
loop_time = 2 + 3*(x-1)
The outer loop can be abstracted like so:
<some pic code>
In other words, it's structurally identically to the inner loop with some extra
code in the loop. Let's say that the time for this extra code to execute is
'Q'. Then the total time for the outer loop is:
some_other_reg loop time
1 Q + 2
2 2*Q + 5
3 3*Q + 8
y y*Q + 2 + 3*(y-1) 1 <= y <= 255
The same caveat for y = 0 applies. This equation can be simplified:
outer_loop_time = y*(Q+3) + 2 - 3
= y*(Q+3) - 1
Now to combine the two loops, all we have to do is find the value for Q. This is
the time it take for this snippet to execute:
> Pause Movlw "value2"
> Movwf N
> Delay1 Decfsz N
> goto Delay1
There are two cycles for initializing N and then there's the loop. So the total
Q = 2 + (2 + 3*(N-1)) , 1 <= N <= 255
= 4 + 3*N - 3
= 1 + 3*N
The total time for both loops is:
total = M*(Q+3) - 1 , 1 <= M <= 255
= M*(1+3*N +3) - 1
= 3*M*N + 4*M - 1
(keep in mind, if M or N is 0 then we need to replace the 0 with 256)
Benson is wrong.
> some kind soul break down into bits and pieces so I could figure it out? I'm
> going to be doing a weather project, and I'm sure I'll need this knowledge.
> Hopefully, I'll be able to complete the project without being dependant on
> you guys =)
Is this why it's so hard to predict the weather?
In reply to: <email@example.com>
See also: www.piclist.com/techref/microchip/time.htm?key=delay
You must be a member of the
piclist mailing list
(not only a www.piclist.com member) to post to the