Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // IGEP v2 pwm-demo rev.F --- Demonstrate usage of the dm3730-pwm library
- // Based on the omap3730-pwm-demo by Mark A. Yoder
- // Modified by Pavel Kopylov 29-June-2016
- // Copyright (c) 2010 Thomas W. Most <twm@freecog.net>
- //
- // The contents of this file may be used subject to the terms of either of the
- // following licenses:
- //
- // GNU LGPL 2.1 license:
- //
- // This library is free software; you can redistribute it and/or modify it
- // under the terms of the GNU Lesser General Public License as published by the
- // Free Software Foundation; either version 2.1 of the License, or (at your
- // option) any later version.
- //
- // This library is distributed in the hope that it will be useful, but WITHOUT
- // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- // FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
- // for more details.
- //
- // You should have received a copy of the GNU Lesser General Public License
- // along with this library; if not, write to the Free Software Foundation,
- // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- //
- // MIT license:
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- // THE SOFTWARE.
- #include <glib.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <sys/mman.h>
- #include "dm3730-pwm.h"
- int main(int argc, char **argv)
- {
- int pwm_frequency;
- guint32 resolution;
- guint8 *gpt8;
- if (argc < 2)
- {
- printf("Usage: %s <frequency>\n", argv[0]);
- printf("Sets up a PWM signal on gpio 145 and 146 at the given frequency\n");
- printf("and sweeps the duty-cycle up and down once\n");
- return -1;
- }
- pwm_frequency = atoi(argv[1]);
- printf("frequency: %d Hz\n", pwm_frequency);
- int mem_fd = pwm_open_devmem();
- if (mem_fd == -1)
- {
- g_error("Unable to open /dev/mem, are you root?: %s", g_strerror(errno));
- return -2;
- }
- // Set instances 8 to use the 32kHz clock
- pwm_config_clock(mem_fd, FALSE);
- gpt8 = pwm_mmap_instance(mem_fd);
- if (gpt8 == MAP_FAILED)
- {
- g_error("Unable to mmap GPT8: %s", g_strerror(errno));
- pwm_close_devmem(mem_fd);
- return -3;
- }
- // Get the resolution for 20 kHz PWM
- resolution = pwm_calc_resolution(pwm_frequency, PWM_FREQUENCY_32KHZ);
- // PWM duty = 50%
- pwm_config_timer(gpt8, resolution, 50.0 / 100.0);
- pwm_munmap_instance(gpt8);
- pwm_close_devmem(mem_fd);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement