Hmt.gettick() function usage: Difference between revisions

From Smart LCD
mNo edit summary
Line 68: Line 68:


=== downloads ===
=== downloads ===
[[File:SDM-22-0008-01.png|480x480px]]
demo project: [[Media:SDM-22-0008(unlock 5mode graph touch n slide)(gettick fixed).zip|SDM-22-0008(unlock_5mode_graph_touch_n_slide)(gettick_fixed).zip]]
demo project: [[Media:SDM-22-0008(unlock 5mode graph touch n slide)(gettick fixed).zip|SDM-22-0008(unlock_5mode_graph_touch_n_slide)(gettick_fixed).zip]]


demo video: SDM-22-0008(unlock_5mode_graph_touch_n_slide).mp4
demo video: SDM-22-0008(unlock_5mode_graph_touch_n_slide).mp4

Revision as of 19:33, 22 August 2025

background

Smart LCD provide script function, it can enhance the functionality in applications. hmt.gettick() is a MCU tick time function for timing reference. It is necessary to understand its characteristics to prevent to get hidden bug in the Lua script.

hmt.gettick() function

  • provide system tick close to ms.
  • Using a video clip time count of 51-20=31 second; we can get on screen tick value: 3970754-4000754=30000

  • Using video frame count 97.015 - 44.015 = 53 second; we can get on screen tick value 4137010-4084060=52950

  • hmt.gettick() max value is 4294966

hmt.gettick() application (without overflow check)

  • Lua script
loop_speed=150
loop_tic=hmt.gettick()
luamain = function(void)      -- main loop
if ((hmt.gettick() - loop_tic) >= loop_speed) then      -- looping control
-- routine process
loop_tic=hmt.gettick()
end
return 0
end
-- Lua script end
  • The above Lua script can work normally for about 71minutes
  • After then it will not execute the "routine process"
  • It is easy to be over looked

hmt.gettick() application (with overflow check)

  • Lua script
loop_speed=150
loop_tic=hmt.gettick()
temp=0
luamain = function(void)      -- main loop
temp=hmt.gettick() - loop_tic -- looping control
if ( (temp >= loop_speed) or (temp 'smaller_than' 0)) then
-- routine process
loop_tic=hmt.gettick()
end
return 0
end
-- Lua script end
  • The above Lua script can work continually over 4hour
  • It can do the overflow check and do the "routine process"
  • Run and check the above script at about 71minutes by a video

  • The video capture 4294895(dec) and then 7(dec) which corrosed hmt.gettick() max value (4294966)
  • hmt.gettick() will be overflow every 71min 35second by calculation

note.

  • hmt.gettick() value will be overflow
  • hmt.gettick() max value is 4294966
  • As it need long time to expose the overflow it is necessary to consider the overflow decision logic

downloads

demo project: SDM-22-0008(unlock_5mode_graph_touch_n_slide)(gettick_fixed).zip

demo video: SDM-22-0008(unlock_5mode_graph_touch_n_slide).mp4