Advertisement
rralston

ESP32 Square Waves

May 15th, 2022
734
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.97 KB | None | 0 0
  1. # RMT1   5/15/22 rr
  2. # continuous 5 MHz square wave
  3. import esp32
  4. from machine import Pin
  5. r = esp32.RMT(0, pin=Pin(22), clock_div=8)
  6. r.loop(True)
  7. r.write_pulses((1,0))
  8.  
  9.  
  10. #RMT2   5/15/22 rr
  11. # configure 7 channels to output different frequency square waves simultaneously
  12. import esp32
  13. from machine import Pin
  14.  
  15. r15 = esp32.RMT(0, pin=Pin(15), clock_div=160) #    250,000 Hz pin D15
  16. r16 = esp32.RMT(1, pin=Pin(16), clock_div=80)  #    500,000 Hz pin RX2
  17. r17 = esp32.RMT(2, pin=Pin(17), clock_div=40)  #  1,000,000 Hz pin TX2
  18. r18 = esp32.RMT(3, pin=Pin(18), clock_div=20)  #  2,000,000 Hz pin D18
  19. r19 = esp32.RMT(4, pin=Pin(19), clock_div=16)  #  2,500,000 Hz pin D19
  20. r21 = esp32.RMT(5, pin=Pin(21), clock_div=10)  #  4,000,000 Hz pin D21
  21. r22 = esp32.RMT(6, pin=Pin(22), clock_div=8)   #  5,000,000 Hz pin D22
  22.  
  23. r15.loop(True), r16.loop(True), r17.loop(True), r18.loop(True)
  24. r19.loop(True), r21.loop(True), r22.loop(True)
  25.  
  26. r15.write_pulses((1, 0))
  27. r16.write_pulses((1, 0))
  28. r17.write_pulses((1, 0))
  29. r18.write_pulses((1, 0))
  30. r19.write_pulses((1, 0))
  31. r21.write_pulses((1, 0))
  32. r22.write_pulses((1, 0))
  33.  
  34.  
  35. #RMT3   5/15/22/rr
  36. # read the RMT RAM configured by the r.write_pulses statement
  37. import esp32
  38. from machine import mem32, Pin
  39. from micropython import const
  40.  
  41. RMT_RAM1 = const(0x3FF56800) # RMT RAM pulses 1-2; start of channel 0 RAM
  42. RMT_RAM2 = const(0x3FF56804) # RMT RAM pulses 3-4
  43. RMT_RAM3 = const(0x3FF56808) # RMT RAM pulses 5-6
  44. RMT_RAM4 = const(0x3FF5680C) # RMT RAM pulses 7-8
  45. RMT_RAM5 = const(0x3FF56810) # RMT RAM pulses 9-10
  46. RMT_RAM6 = const(0x3FF56814) # RMT RAM zero to indicate end of transmission
  47.  
  48. r = esp32.RMT(0, pin=Pin(22), clock_div=8, idle_level=False)
  49. r.write_pulses((10, 9, 8, 7, 6, 5, 4, 3, 2, 1),1)
  50.  
  51. value1 = '{:032b}'.format(int(hex(mem32[RMT_RAM1])))
  52. print('RMT_RAM1 =',' '.join(value1[i:i+4] for i in range(0,len(value1),4)))
  53.  
  54. value2 = '{:032b}'.format(int(hex(mem32[RMT_RAM2])))
  55. print('RMT_RAM2 =',' '.join(value2[i:i+4] for i in range(0,len(value2),4)))
  56.  
  57. value3 = '{:032b}'.format(int(hex(mem32[RMT_RAM3])))
  58. print('RMT_RAM3 =',' '.join(value3[i:i+4] for i in range(0,len(value3),4)))
  59.  
  60. value4 = '{:032b}'.format(int(hex(mem32[RMT_RAM4])))
  61. print('RMT_RAM4 =',' '.join(value4[i:i+4] for i in range(0,len(value4),4)))
  62.  
  63. value5 = '{:032b}'.format(int(hex(mem32[RMT_RAM5])))
  64. print('RMT_RAM5 =',' '.join(value5[i:i+4] for i in range(0,len(value5),4)))
  65.  
  66. value6 = '{:032b}'.format(int(hex(mem32[RMT_RAM6])))
  67. print('RMT_RAM6 =',' '.join(value6[i:i+4] for i in range(0,len(value5),4)))
  68.  
  69.  
  70. #RMT4   5/11/22 rr
  71. # practice code to format output
  72. value1 = 0x01234567  # plug in any 32 bit value
  73.  
  74. print(hex(value1)) # hex, no leading zeroes
  75. print('0x'+'{:08X}'.format(value1)) # hex & leading zeroes
  76. print('{:010}'.format(int(hex(value1)))) # decimal & leading zeroes
  77. print('{:032b}'.format(int(hex(value1)))) # binary 32 bits
  78. value2 = ('{:032b}'.format(int(bin(value1)))) # binary 8 groups of 4 digits
  79. print(' '.join(value2[i:i+4] for i in range(0,len(value2),4)))
  80.  
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement