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
-~----------~----~----~----~------~----~------~--~---

Reply via email to