Advertisement
Guest User

Untitled

a guest
Jun 29th, 2016
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. // IGEP v2 pwm-demo rev.F --- Demonstrate usage of the dm3730-pwm library
  2. // Based on the omap3730-pwm-demo by Mark A. Yoder
  3. // Modified by Pavel Kopylov 29-June-2016
  4. // Copyright (c) 2010 Thomas W. Most <twm@freecog.net>
  5. //
  6. // The contents of this file may be used subject to the terms of either of the
  7. // following licenses:
  8. //
  9. // GNU LGPL 2.1 license:
  10. //
  11. // This library is free software; you can redistribute it and/or modify it
  12. // under the terms of the GNU Lesser General Public License as published by the
  13. // Free Software Foundation; either version 2.1 of the License, or (at your
  14. // option) any later version.
  15. //
  16. // This library is distributed in the hope that it will be useful, but WITHOUT
  17. // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  18. // FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
  19. // for more details.
  20. //
  21. // You should have received a copy of the GNU Lesser General Public License
  22. // along with this library; if not, write to the Free Software Foundation,
  23. // Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  24. //
  25. // MIT license:
  26. //
  27. // Permission is hereby granted, free of charge, to any person obtaining a copy
  28. // of this software and associated documentation files (the "Software"), to deal
  29. // in the Software without restriction, including without limitation the rights
  30. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  31. // copies of the Software, and to permit persons to whom the Software is
  32. // furnished to do so, subject to the following conditions:
  33. //
  34. // The above copyright notice and this permission notice shall be included in
  35. // all copies or substantial portions of the Software.
  36. //
  37. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  38. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  39. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  40. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  41. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  42. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  43. // THE SOFTWARE.
  44.  
  45. #include <glib.h>
  46. #include <unistd.h>
  47. #include <stdio.h>
  48. #include <errno.h>
  49. #include <stdlib.h>
  50. #include <sys/mman.h>
  51.  
  52. #include "dm3730-pwm.h"
  53.  
  54. int main(int argc, char **argv)
  55. {
  56. int pwm_frequency;
  57. guint32 resolution;
  58. guint8 *gpt8;
  59.  
  60.  
  61. if (argc < 2)
  62. {
  63. printf("Usage: %s <frequency>\n", argv[0]);
  64. printf("Sets up a PWM signal on gpio 145 and 146 at the given frequency\n");
  65. printf("and sweeps the duty-cycle up and down once\n");
  66. return -1;
  67. }
  68.  
  69. pwm_frequency = atoi(argv[1]);
  70. printf("frequency: %d Hz\n", pwm_frequency);
  71.  
  72. int mem_fd = pwm_open_devmem();
  73. if (mem_fd == -1)
  74. {
  75. g_error("Unable to open /dev/mem, are you root?: %s", g_strerror(errno));
  76. return -2;
  77. }
  78.  
  79. // Set instances 8 to use the 32kHz clock
  80. pwm_config_clock(mem_fd, FALSE);
  81.  
  82. gpt8 = pwm_mmap_instance(mem_fd);
  83. if (gpt8 == MAP_FAILED)
  84. {
  85. g_error("Unable to mmap GPT8: %s", g_strerror(errno));
  86. pwm_close_devmem(mem_fd);
  87. return -3;
  88. }
  89.  
  90. // Get the resolution for 20 kHz PWM
  91. resolution = pwm_calc_resolution(pwm_frequency, PWM_FREQUENCY_32KHZ);
  92. // PWM duty = 50%
  93. pwm_config_timer(gpt8, resolution, 50.0 / 100.0);
  94.  
  95. pwm_munmap_instance(gpt8);
  96. pwm_close_devmem(mem_fd);
  97.  
  98. return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement