Hi Joep,
Sorry to say, but the accuracy of your commit is far worse on a
PIC18f14k50 (48MHz), the old code was pretty good, but the new 10us is
far off.
Did make a small improvement in order to use frequencies above 40MHz
(see results at bottom of the post)

procedure report_delay( word in setpoint, word in interval) is

   if (interval > 32768) then
      interval = 0 - interval
   end if

   ; calculate tick time in 100ns steps
   var dword tick = target_clock
   tick = 4000_000_000 / tick
   case ((t1con & 0x30) / 0x10) of
      1 : block
         tick = tick * 2
      end block

      2 : block
         tick = tick * 4
      end block

      3 : block
         tick = tick * 8
      end block

   end case

   print_string(serial_hw_data, m1)

   print_dword_dec(serial_hw_data, setpoint)

   print_string(serial_hw_data, m2)
   print_word_dec(serial_hw_data, (interval * tick) / 1000)
   serial_hw_data = "."
   print_word_dec(serial_hw_data, (interval * tick) % 1000)


I multiplied to tick by 100.


Furthermore, why are you not using the default serial library? Anyway
I like the dutch foo-bar (aap,noot mies) in the code, I also use quite
often ;)
Albert



Old code
Target clock: 48000000 ----------------------------
Test us delays
Test 0 us, measured 0.0 us
Test 1 us, measured 0.996 us
Test 2 us, measured 1.992 us
Test 5 us, measured 4.980 us
Test 9 us, measured 8.964 us
Test 10us delays
Test 10 us, measured 8.383 us
Test 20 us, measured 17.762 us
Test 50 us, measured 45.484 us
Test 100 us, measured 87.814 us
Test 200 us, measured 172.474 us
Test 500 us, measured 426.454 us
Test 1000 us, measured 849.754 us
Test 2000 us, measured 1696.354 us
Test 1ms delays
Test 1000 us, measured 992.680 us
Test 2000 us, measured 1984.32 us
Test 5000 us, measured 4958.752 us
Test 10000 us, measured 9916.176 us
Test 20000 us, measured 19831.688 us

New Code

Test 0 us, measured 0.0 us

Test 1 us, measured 0.996 us
Test 2 us, measured 1.992 us
Test 5 us, measured 4.980 us
Test 9 us, measured 8.964 us

Test 10us delays
Test 10 us, measured 10.126 us
Test 20 us, measured 12.367 us
Test 50 us, measured 16.849 us
Test 100 us, measured 24.319 us
Test 200 us, measured 39.259 us
Test 500 us, measured 84.79 us
Test 1000 us, measured 158.779 us
Test 2000 us, measured 308.179 us
Test 1ms delays
Test 1000 us, measured 997.992 us
Test 2000 us, measured 1993.328 us
Test 5000 us, measured 4981.992 us
Test 10000 us, measured 9961.328 us
Test 20000 us, measured 19921.992 us


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