sinegen.py 562 B

12345678910111213141516171819202122232425262728
  1. import math
  2. M_PI = 3.14159265358979323846
  3. def sine(val, r, scale, stepping):
  4. global M_PI, flip
  5. re = int(math.sin(val * (M_PI * scale) / r) * r) + r
  6. re = re & 0xff
  7. re = re * stepping
  8. return re
  9. def main():
  10. cnt = 64
  11. stepping = 1
  12. upper = 0xff
  13. s = "#define PWM_SINE_MAX %i\nuint8_t pwm_sine_table[] = {\n" % cnt
  14. for i in range(0, cnt):
  15. if i > 0 and i % 16 == 0:
  16. s += "\n"
  17. s += "0x%02x," % sine(i, upper / 2, (float(upper) / cnt), stepping)
  18. s = s[:-1]
  19. s += "\n};\n"
  20. print s
  21. main()