mirror of
https://github.com/sinseman44/PyCNC.git
synced 2026-01-12 02:40:04 +00:00
test dmagpio to control l293d driver for stepper motor
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from .rpgpio_private import *
|
||||
#from .rpgpio_private import *
|
||||
from rpgpio_private import *
|
||||
|
||||
import time
|
||||
import logging
|
||||
@@ -409,9 +410,7 @@ class DMAWatchdog(DMAProto):
|
||||
self._dma.write_int(self._DMA_CHANNEL_ADDRESS + DMA_NEXTCONBK,
|
||||
self._phys_memory.get_bus_address())
|
||||
|
||||
|
||||
# for testing purpose
|
||||
def main():
|
||||
def test():
|
||||
pin = 21
|
||||
g = GPIO()
|
||||
g.init(pin, GPIO.MODE_INPUT_NOPULL)
|
||||
@@ -462,5 +461,50 @@ def main():
|
||||
pwm.remove_pin(pin)
|
||||
print("pwm stopped")
|
||||
|
||||
# for testing purpose
|
||||
def main():
|
||||
pins = [4,17,27,22]
|
||||
seqs = [[1,0,0,0], # Phase A
|
||||
[1,0,1,0], # Phase AB
|
||||
[0,0,1,0], # Phase B
|
||||
[0,1,1,0], # Phase A'B
|
||||
[0,1,0,0], # Phase A'
|
||||
[0,1,0,1], # Phase A'B'
|
||||
[0,0,0,1], # Phase B'
|
||||
[1,0,0,1]] # Phase AB'
|
||||
g = GPIO()
|
||||
for pin in pins:
|
||||
print("Start output PIN: {}".format(pin))
|
||||
g.init(pin, GPIO.MODE_OUTPUT)
|
||||
|
||||
dg = DMAGPIO()
|
||||
# mask = 0
|
||||
# for pin in pins:
|
||||
# mask += 1 << pin
|
||||
# print("MASK : {}".format(bin(mask)))
|
||||
#
|
||||
# dg.add_pulse(mask, 500000)
|
||||
# dg.add_delay(500000)
|
||||
for seq in seqs:
|
||||
mask = 0
|
||||
for idx, enable in enumerate(seq):
|
||||
if enable:
|
||||
mask += 1 << pins[idx]
|
||||
dg.add_pulse(mask, 10000)
|
||||
dg.add_delay(250000)
|
||||
|
||||
dg.run(True)
|
||||
print("dmagpio is started")
|
||||
try:
|
||||
print("press enter to stop...")
|
||||
sys.stdin.readline()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
dg.stop()
|
||||
|
||||
for pin in pins:
|
||||
print("Stop output PIN: {}".format(pin))
|
||||
g.clear(pin)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user