int main(int argc, char **argv) { if (!bcm2835_init()) { printf("bcm2835 init failed\n"); return 1; } // Set the output pin to Alt Fun 5, to allow PWM channel 0 to be output there bcm2835_gpio_fsel(PIN0, BCM2835_GPIO_FSEL_ALT5); bcm2835_pwm_set_clock(BCM2835_PWM_CLOCK_DIVIDER_2); bcm2835_pwm_set_mode(PWM0, 1, 1); bcm2835_pwm_set_range(PWM0, RANGE); bcm2835_gpio_fsel(PIN1, BCM2835_GPIO_FSEL_ALT5); bcm2835_pwm_set_clock(BCM2835_PWM_CLOCK_DIVIDER_4); bcm2835_pwm_set_mode(PWM1, 1, 1); bcm2835_pwm_set_range(PWM1, RANGE*2); bcm2835_pwm_set_data(PWM0, 1); bcm2835_pwm_set_data(PWM1, 1); while(1) { } bcm2835_close(); return 0; }
int main(int argc, char **argv) { if (!bcm2835_init()) return 1; bcm2835_gpio_fsel(PIN0, BCM2835_GPIO_FSEL_INPT); bcm2835_gpio_fsel(PIN1, BCM2835_GPIO_FSEL_INPT); bcm2835_gpio_set_pud(PIN0, BCM2835_GPIO_PUD_UP); bcm2835_gpio_set_pud(PIN1, BCM2835_GPIO_PUD_UP); bcm2835_gpio_fsel(POUT1, BCM2835_GPIO_FSEL_ALT5); bcm2835_pwm_set_clock(BCM2835_PWM_CLOCK_DIVIDER_256); bcm2835_pwm_set_mode(0, 1, 1); bcm2835_pwm_set_range(0, 1024); int data=0; while (1) { uint8_t in0 = bcm2835_gpio_lev(PIN0); uint8_t in1 = bcm2835_gpio_lev(PIN1); if (in1 == 0) break; data ++; if(data > 1023) data=0; bcm2835_pwm_set_data(0, data); bcm2835_delay(2); } bcm2835_pwm_set_data(0, 0); bcm2835_gpio_fsel(POUT1, BCM2835_GPIO_FSEL_INPT); bcm2835_close(); return 0; }
void setSpeed(double speed) //speed amount { setReverse(speed < 0); int data = speed*51.2; bcm2835_pwm_set_data(pwmChannel, data); std::cout<<"speed "<<speed<<" "<<data<<std::endl; }
/* * Function: pwm_test * Description: be used to test PWM related functions */ void pwm_test(void) { printf("--------------->Start Test PWM<--------------\n"); bcm2835_gpio_fsel(PWM_PIN, BCM2835_GPIO_FSEL_ALT5); //set Phy12 to pwm function /*pwm clock = 24M/240*/ bcm2835_pwm_set_clock(BCM2835_PWM_CLOCK_DIVIDER_16); /*pwm channel mode: cycle mode OR pulse mode*/ bcm2835_pwm_set_mode(PWM_CHANNEL, 1, 1); /*the pwm cycle = pwm clock * PWM_CYCLE */ bcm2835_pwm_set_range(PWM_CHANNEL, PWM_CYCLE); //enable pwm //active state: High level //enable clock for PWM1 //set the pwm duty bcm2835_pwm_set_data(PWM_CHANNEL, PWM_DUTY); printf("--------------->Test Over Of PWM<--------------\n"); }