UNPKG

w-pwm

Version:

DMA based soft PWM for raspberry pi gpio

47 lines (39 loc) 1.15 kB
const pwm = require('./build/Release/rpiopwm.node'); function create_dma_channel(ch /*int*/, cfg /*json obj*/) { cfg = cfg || {}; const cycle_time_us = cfg.cycle_time_us || 20000; // by default 20ms const step_time_us = cfg.step_time_us || 10; // by default 10us const delay_hw = cfg.delay_hw || 0; // by default 0 (PWM) const invert = cfg.invert || 0; // by default 0 (don't invert) pwm.init_channel(ch, cycle_time_us, step_time_us, delay_hw, invert); function create_pwm(gpio) { pwm.add_gpio(ch, gpio, 0); return { set_width: (newWidth) => pwm.set_width(gpio, newWidth), release: () => pwm.release_gpio(gpio), }; } return { create_pwm, shutdown: () => pwm.shutdown_channel(ch), }; } // need keep sync with LogLevel in dma.h const logLevel = { fatal: 0, error: 1, warning: 2, info: 3, debug: 4, } function set_log_level(logLevel) { pwm.set_log_level(logLevel); } const exp = { // setup: function(minResolutionUs) { pwm.setup(minResolutionUs); }, create_dma_channel, host_is_model_pi4: () => pwm.host_is_model_pi4(), logLevel, set_log_level, }; module.exports = exp;