KXTJ2-1009.lua 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. module(...,package.seeall)
  2. local i2cid,intregaddr = 0,0x1A
  3. local initstr,indcnt1,indcnt2 = "",0,0
  4. local function clrint()
  5. print("shk.clrint 1")
  6. if pincfg.GSENSOR() == 0 then
  7. print("shk.clrint 2")
  8. local rlt = i2c.read(i2cid,intregaddr,1)
  9. print("shk.clrint rlt",rlt)
  10. end
  11. end
  12. local function init2()
  13. local cmd,i = {0x1B,0x00,0x6A,0x01,0x1E,0x20,0x21,0x04,0x1B,0x00,0x1B,0xDA,0x1B,0xDA}
  14. --local cmd,i = {0x1B,0x00,0x6A,0x01,0x1E,0x20,0x21,0x04,0x1D,0x06,0x1B,0x1A,0x1B,0x9A}
  15. --local cmd,i = {0x1B,0x00,0x6A,0x01,0x1E,0x20,0x21,0x04,0x1B,0x1A,0x1B,0x9A}
  16. for i=1,#cmd,2 do
  17. i2c.write(i2cid,cmd[i],cmd[i+1])
  18. print("shk.init2",string.format("%02X",cmd[i]),string.format("%02X",string.byte(i2c.read(i2cid,cmd[i],1))))
  19. initstr = initstr..","..(string.format("%02X",cmd[i]) or "nil")..":"..(string.format("%02X",string.byte(i2c.read(i2cid,cmd[i],1))) or "nil")
  20. end
  21. clrint()
  22. end
  23. local function checkready()
  24. local s = i2c.read(i2cid,0x1D,1)
  25. print("shk.checkready",s,(s and s~="") and string.byte(s) or "nil")
  26. if s and s~="" then
  27. if bit.band(string.byte(s),0x80)==0 then
  28. init2()
  29. return
  30. end
  31. end
  32. sys.timerStart(checkready,1000)
  33. end
  34. local function init()
  35. local i2cslaveaddr = 0x0E
  36. if i2c.setup(i2cid,i2c.SLOW,i2cslaveaddr) ~= i2c.SLOW then
  37. print("shk.init fail")
  38. initstr = "fail"
  39. return
  40. end
  41. i2c.write(i2cid,0x1D,0x80)
  42. sys.timerStart(checkready,1000)
  43. end
  44. local function init3()
  45. i2c.write(i2cid,0x1D,0x80)
  46. sys.timerStart(checkready,1000)
  47. end
  48. function checkabnormal()
  49. print(nil,"shk.checkabnormal")
  50. local val = i2c.read(i2cid,0x1B,1)
  51. if not val or val=="" or string.byte(val)~=0xDA then
  52. print(nil,"shk.checkabnormal 0x1B")
  53. --i2c.close(i2cid)
  54. init3()
  55. init()
  56. return
  57. end
  58. end
  59. function getdebugstr()
  60. return initstr..";".."indcnt1:"..indcnt1..";".."indcnt2:"..indcnt2
  61. end
  62. function ind(data)
  63. print("shk.ind",data,cpu.INT_GPIO_NEGEDGE)
  64. if data == cpu.INT_GPIO_NEGEDGE then --ϽµÑØÖжÏ
  65. clrint()
  66. print("shk.ind DEV_SHK_IND")
  67. sys.publish("DEV_SHK_IND")
  68. end
  69. end
  70. init()
  71. sys.timerLoopStart(clrint,30000)
  72. sys.timerLoopStart(checkabnormal,300000)