Author: robhamerling
Date: Sat Sep 6 12:44:35 2008
New Revision: 286
Modified:
trunk/unvalidated/include/jal/delay_any_mc.jal
Log:
Made short delay procedures _inline_ (accurate!)
Modified: trunk/unvalidated/include/jal/delay_any_mc.jal
==============================================================================
--- trunk/unvalidated/include/jal/delay_any_mc.jal (original)
+++ trunk/unvalidated/include/jal/delay_any_mc.jal Sat Sep 6 12:44:35 2008
@@ -1,125 +1,114 @@
-- Title: Delays procedures at any processor frequency
-- Author: Stef Mientki, Copyright (c) 2002..2006, all rights reserved.
--- Adapted-by: Sebastien Lelong.
+-- Adapted-by: Sebastien Lelong, Rob Hamerling.
-- Compiler: >=2.4g
---
+--
-- This file is part of jallib (http://jallib.googlecode.com)
-- Released under the BSD license
(http://www.opensource.org/licenses/bsd-license.php)
--
-- Description: library for delays at any processor frequency.
-- It's based on the JAL v2 compiler generator _usec_delay.
--
--- Notes: delay_1us is not very accurate. You've been warned !
---
--- Fixed delays for the small times
--- delay_1us, delay_2uS, delay_3uS, delay_4uS, delay_5uS,
--- delay_6uS, delay_7uS, delay_8uS, delay_9uS
--- With programs crossing the 2k boundery, these delays maybe a litlle
longer.
---
--- For the larger delays, routines with paramter N ( 1.. 255)
--- delay_10us ( N )
--- delay_1ms ( N )
--- delay_100ms ( N )
+-- Fixed delays for the short intervals:
+-- delay_1us, delay_2us, delay_3us, delay_4us, delay_5us,
+-- delay_6us, delay_7us, delay_8us, delay_9us
+-- These procedures are 'inline' and are as accurate as the ocillator
source.
--
-
+-- For the longer delays, procedure with parameter N ( 1.. 255)
+-- delay_10us(n)
+-- delay_1ms(n)
+-- delay_100ms(n)
+-- These procedures are due to call/return overhead slightly clock
+-- frequency dependent.
-- fixed delay of 1 usec (no arguments)
-procedure delay_1us() is ; (2) call
- asm nop ; (1)
-end procedure ; (2)
-
+procedure delay_1us() is
+ pragma inline
+ _usec_delay(1)
+end procedure
-- fixed delay of 2 usec (no arguments)
procedure delay_2us() is
- _usec_delay(1)
- asm nop
+ pragma inline
+ _usec_delay(2)
end procedure
-
-- fixed delay of 3 usec (no arguments)
procedure delay_3us() is
- _usec_delay(2)
- asm nop
+ pragma inline
+ _usec_delay(3)
end procedure
-
-- fixed delay of 4 usec (no arguments)
procedure delay_4us() is
- _usec_delay(3)
- asm nop
+ pragma inline
+ _usec_delay(4)
end procedure
-
-- fixed delay of 5 usec (no arguments)
procedure delay_5us() is
- _usec_delay(4)
- asm nop
+ pragma inline
+ _usec_delay(5)
end procedure
-
-- fixed delay of 6 usec (no arguments)
procedure delay_6us() is
- _usec_delay(5)
- asm nop
+ pragma inline
+ _usec_delay(6)
end procedure
-
-- fixed delay of 7 usec (no arguments)
procedure delay_7us() is
- _usec_delay(6)
- asm nop
+ pragma inline
+ _usec_delay(7)
end procedure
-
-- fixed delay of 8 usec (no arguments)
procedure delay_8us() is
- _usec_delay(7)
- asm nop
+ pragma inline
+ _usec_delay(8)
end procedure
-
-- fixed delay of 9 usec (no arguments)
procedure delay_9us() is
- _usec_delay(8)
- asm nop
+ pragma inline
+ _usec_delay(9)
end procedure
-
--- Delays for N * 10 usec
-procedure delay_10us(byte in N) is
- if N==1 then
- _usec_delay(7)
- elsif N==2 then
- _usec_delay(16)
- elsif N==3 then
- _usec_delay(25)
- elsif N==4 then
- _usec_delay(34)
- else
- for N loop
- _usec_delay(8)
- end loop
- end if
- -- to compensate for low valus of N
- asm nop
- asm nop
- asm nop
- asm nop
+-- Delays for n * 10 usec
+procedure delay_10us(byte in n) is
+ if n==1 then
+ _usec_delay(7)
+ elsif n==2 then
+ _usec_delay(16)
+ elsif n==3 then
+ _usec_delay(25)
+ elsif n==4 then
+ _usec_delay(34)
+ else
+ for n loop
+ _usec_delay(8)
+ end loop
+ end if
+ -- to compensate for low values of N
+ asm nop
+ asm nop
+ asm nop
+ asm nop
+end procedure
+
+-- Delays for n * 1 msec
+procedure delay_1ms(byte in n) is
+ for n loop
+ _usec_delay(995)
+ end loop
end procedure
-
--- Delays for N * 1 msec
-procedure delay_1ms(byte in N) is
- for N loop
- _usec_delay(995)
+-- Delays for n * 100 msec
+procedure delay_100ms(word in n) is
+ for n loop
+ _usec_delay(99995)
end loop
end procedure
-
--- Delays for N * 100 msec
-procedure delay_100ms(word in N) is
- for N loop
- _usec_delay(99995)
- end loop
-end procedure
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jallib" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/jallib?hl=en
-~----------~----~----~----~------~----~------~--~---