#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#define HIGH 1
#define LOW 0
#define PWM1 2
#define PWM2 3
#define PWM3 50
#define PWM4 22
#define PWM5 51
#define PWM6 23
#define Z1IN 44
#define Z2IN 45
#define Z3IN 46
#define Z4IN 47
#define Z5IN 48
#define Z6IN 49
void set_pin(int pin_num, int value)
{
char gpio_path[40] = {0};
char str_value[2] = {0};
sprintf(str_value, "%d", value);
sprintf(gpio_path, "/sys/class/gpio/gpio%d/value", pin_num);
int fd = open(gpio_path, O_WRONLY);
if(fd == -1){
perror(gpio_path);
exit(1);
}
int nread = write(fd, str_value, 1);
if( nread < 0){
perror("write()");
exit(1);
}
close(fd);
}
int get_pin(int pin_num)
{
char gpio_path[40] = {0};
char str_value[2] = {0};
sprintf(gpio_path, "/sys/class/gpio/gpio%d/value", pin_num);
int fd = open(gpio_path, O_RDONLY);
if(fd == -1){
perror(gpio_path);
exit(1);
}
read(fd, str_value, sizeof(str_value - 1));
close(fd);
return strtol(str_value, NULL, 10);
}
int main()
{
set_pin(PWM1, LOW);
set_pin(PWM2, LOW);
set_pin(PWM3, LOW);
set_pin(PWM4, LOW);
set_pin(PWM5, LOW);
set_pin(PWM6, LOW);
sleep(1);
printf("PWM1: %i Z1IN: %i \n", get_pin(PWM1), get_pin(Z1IN));
printf("PWM2: %i Z2IN: %i \n", get_pin(PWM2), get_pin(Z2IN));
printf("PWM3: %i Z3IN: %i \n", get_pin(PWM3), get_pin(Z3IN));
printf("PWM4: %i Z4IN: %i \n", get_pin(PWM4), get_pin(Z4IN));
printf("PWM5: %i Z5IN: %i \n", get_pin(PWM5), get_pin(Z5IN));
printf("PWM6: %i Z6IN: %i \n", get_pin(PWM6), get_pin(Z6IN));
printf("\n");
/***********************************************************/
set_pin(PWM1, HIGH);
set_pin(PWM2, HIGH);
set_pin(PWM3, HIGH);
set_pin(PWM4, HIGH);
set_pin(PWM5, HIGH);
set_pin(PWM6, HIGH);
sleep(1);
printf("PWM1: %i Z1IN: %i \n", get_pin(PWM1), get_pin(Z1IN));
printf("PWM2: %i Z2IN: %i \n", get_pin(PWM2), get_pin(Z2IN));
printf("PWM3: %i Z3IN: %i \n", get_pin(PWM3), get_pin(Z3IN));
printf("PWM4: %i Z4IN: %i \n", get_pin(PWM4), get_pin(Z4IN));
printf("PWM5: %i Z5IN: %i \n", get_pin(PWM5), get_pin(Z5IN));
printf("PWM6: %i Z6IN: %i \n", get_pin(PWM6), get_pin(Z6IN));
return 0;
}--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups "BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/5885cd25-64f8-4989-940a-35ba85365828%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#define GPIO0 (0x44E07000)
#define GPIO1 (0x4804C000)
#define GPIO2 (0x481AC000)
#define GPIO3 (0x481AE000)
#define GPIO_SIZE (0x2000)
#define GPIO_DATAOUT (0x13C)
#define GPIO_DATAIN (0x138)
#define PWM1 (1<<2) /*gpio_0*/
#define PWM2 (1<<3) /*gpio_0*/
#define PWM3 (1<<18) /*gpio_1*/
#define PWM4 (1<<22) /*gpio_0*/
#define PWM5 (1<<19) /*gpio_1*/
#define PWM6 (1<<23) /*gpio_0*/
#define Z1IN (1<<12) /*gpio_1*/
#define Z2IN (1<<13) /*gpio_1*/
#define Z3IN (1<<14) /*gpio_1*/
#define Z4IN (1<<15) /*gpio_1*/
#define Z5IN (1<<16) /*gpio_1*/
#define Z6IN (1<<17) /*gpio_1*/
int main(int argc, char *argv[])
{
void *gpio_addr;
unsigned int *gpio0_out;
unsigned int *gpio1_out, *gpio1_in;
int fd = open("/dev/mem", O_RDWR);
gpio_addr = mmap(0, GPIO_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, GPIO0);
gpio0_out = gpio_addr + GPIO_DATAOUT;
gpio_addr = mmap(0, GPIO_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, GPIO1);
gpio1_out = gpio_addr + GPIO_DATAOUT;
gpio1_in = gpio_addr + GPIO_DATAIN;
close(fd);
*gpio0_out |= PWM1 + PWM2 + PWM4 + PWM6;
*gpio1_out |= PWM3 + PWM5;
sleep(1);
printf("PWM1 %u Z1IN %u\n", !! (*gpio0_out & PWM1), !!(*gpio1_in & Z1IN));
printf("PWM2 %u Z2IN %u\n", !! (*gpio0_out & PWM2), !!(*gpio1_in & Z2IN));
printf("PWM3 %u Z3IN %u\n", !! (*gpio1_out & PWM3), !!(*gpio1_in & Z3IN));
printf("PWM4 %u Z4IN %u\n", !! (*gpio0_out & PWM4), !!(*gpio1_in & Z4IN));
printf("PWM5 %u Z5IN %u\n", !! (*gpio1_out & PWM5), !!(*gpio1_in & Z5IN));
printf("PWM6 %u Z6IN %u\n", !! (*gpio0_out & PWM6), !!(*gpio1_in & Z6IN));
printf("\n");
*gpio0_out &= ~(PWM1 + PWM2 + PWM4 + PWM6);
*gpio1_out &= ~(PWM3 + PWM5);
sleep(1);
printf("PWM1 %u Z1IN %u\n", !! (*gpio0_out & PWM1), !!(*gpio1_in & Z1IN));
printf("PWM2 %u Z2IN %u\n", !! (*gpio0_out & PWM2), !!(*gpio1_in & Z2IN));
printf("PWM3 %u Z3IN %u\n", !! (*gpio1_out & PWM3), !!(*gpio1_in & Z3IN));
printf("PWM4 %u Z4IN %u\n", !! (*gpio0_out & PWM4), !!(*gpio1_in & Z4IN));
printf("PWM5 %u Z5IN %u\n", !! (*gpio1_out & PWM5), !!(*gpio1_in & Z5IN));
printf("PWM6 %u Z6IN %u\n", !! (*gpio0_out & PWM6), !!(*gpio1_in & Z6IN));
return 0;
}sleep(.2);
printf("PWM1 %u Z1IN %u\n", !!(*gpio0_out & PWM1), !!(*gpio1_in & Z1IN));
printf("PWM2 %u Z2IN %u\n", !!(*gpio0_out & PWM2), !!(*gpio1_in & Z2IN));
printf("PWM3 %u Z3IN %u\n", !!(*gpio1_out & PWM3), !!(*gpio1_in & Z3IN));
printf("PWM4 %u Z4IN %u\n", !!(*gpio0_out & PWM4), !!(*gpio1_in & Z4IN));
printf("PWM5 %u Z5IN %u\n", !!(*gpio1_out & PWM5), !!(*gpio1_in & Z5IN));
printf("PWM6 %u Z6IN %u\n", !!(*gpio0_out & PWM6), !!(*gpio1_in & Z6IN));
printf("\n");
*gpio0_out &= ~(PWM1 + PWM2 + PWM4 + PWM6);
*gpio1_out &= ~(PWM3 + PWM5);
sleep(.2);
printf("PWM1 %u Z1IN %u\n", !!(*gpio0_out & PWM1), !!(*gpio1_in & Z1IN));
printf("PWM2 %u Z2IN %u\n", !!(*gpio0_out & PWM2), !!(*gpio1_in & Z2IN));
printf("PWM3 %u Z3IN %u\n", !!(*gpio1_out & PWM3), !!(*gpio1_in & Z3IN));
printf("PWM4 %u Z4IN %u\n", !!(*gpio0_out & PWM4), !!(*gpio1_in & Z4IN));
printf("PWM5 %u Z5IN %u\n", !!(*gpio1_out & PWM5), !!(*gpio1_in & Z5IN));
printf("PWM6 %u Z6IN %u\n", !!(*gpio0_out & PWM6), !!(*gpio1_in & Z6IN));