예제 #1
0
파일: timer_test.c 프로젝트: raphui/rnk
void thread_a(void)
{
	while (1) {
		printk("Timer launched !\n");

#ifdef DEBUG_IO_SLEEP
#ifdef SOFT_TIMER
		timer_soft_oneshot(5000, &callback, NULL);
#else
		timer_oneshot(200, &callback, NULL);
#endif
		printk("Sleeping...");
		pio_set_value(GPIOA_BASE, 3);
		usleep(200000);
		pio_clear_value(GPIOA_BASE, 3);
		printk("Waking up !\n");
#else
		pio_set_value(GPIOA_BASE, 3);
#ifdef SOFT_TIMER
		timer_soft_oneshot(5000, &callback, NULL);
#else
		timer_oneshot(200, &callback, NULL);

#endif
		printk("Sleeping...");
		pio_set_value(GPIOC_BASE, 7);
		usleep(100000);
		pio_clear_value(GPIOC_BASE, 7);
		printk("Waking up !\n");

#endif /* DEBUG_IO_SLEEP */
	}
}
예제 #2
0
파일: ili9341.c 프로젝트: raphui/rnk
void ili9341_send_data(unsigned char data)
{
	pio_set_value(GPIOD_BASE, 13);
	pio_clear_value(GPIOC_BASE, 2);
	spi_write(&spi, data);
	pio_set_value(GPIOC_BASE, 2);
}
예제 #3
0
void move_steps(int steps_x, int steps_y, int dir_x, int dir_y)
{
	int i = 0;
	int stepPin;
	int dirPin;
        int steps_max;
        if(steps_x >= steps_y)
          steps_max = steps_x;
        else
          steps_max = steps_y;

        pio_set_value(GPIO_NUM + MOTOR_1_DIR, dir_x);
        pio_set_value(GPIO_NUM + MOTOR_2_DIR, dir_y);
	for(i; i < steps_max; i++){
		//write 1 to move one step
		pio_set_value(GPIO_NUM + MOTOR_1_STEP, 1);
		pio_set_value(GPIO_NUM + MOTOR_2_STEP, 1);
                usleep(500);
		//need to reset value to 0
		pio_set_value(GPIO_NUM + MOTOR_1_STEP, 0);
		pio_set_value(GPIO_NUM + MOTOR_2_STEP, 0);
                usleep(500);
                pio_set_value(GPIO_NUM + MOTOR_1_STEP, 1);
		pio_set_value(GPIO_NUM + MOTOR_2_STEP, 1);
                usleep(500);
		//need to reset value to 0
		pio_set_value(GPIO_NUM + MOTOR_1_STEP, 0);
		pio_set_value(GPIO_NUM + MOTOR_2_STEP, 0);

		//delay 6ms 
		usleep(10000);
	}
}
예제 #4
0
void df_cs_deactive(int cs)
{
	switch (cs) {
	case 0:
		pio_set_value(AT91C_PIN_PA(14), 1);
		break;
	case 1:
		pio_set_value(AT91C_PIN_PA(7), 1);
		break;
	}
}
예제 #5
0
void setup_motors()
{
	pio_enable(GPIO_NUM + MOTOR_1_STEP);
	pio_enable(GPIO_NUM + MOTOR_2_STEP);
	pio_enable(GPIO_NUM + MOTOR_1_DIR);
	pio_enable(GPIO_NUM + MOTOR_2_DIR);
	pio_set_direction(GPIO_NUM + MOTOR_1_STEP, GPIO_OUT); 
	pio_set_direction(GPIO_NUM + MOTOR_2_STEP, GPIO_OUT);
	pio_set_direction(GPIO_NUM + MOTOR_1_DIR, GPIO_OUT);
	pio_set_direction(GPIO_NUM + MOTOR_2_DIR, GPIO_OUT);
        pio_set_value(GPIO_NUM + MOTOR_1_STEP, 0);
        pio_set_value(GPIO_NUM + MOTOR_2_STEP, 0);
        pio_set_value(GPIO_NUM + MOTOR_1_DIR, 0);
        pio_set_value(GPIO_NUM + MOTOR_2_DIR, 0);
}
static void data_access_enable(void)
{
	pio_set_value(CONFIG_SYS_PSRAM_DATA_ACCESS_PIN, 0);
}
예제 #7
0
static void spi_cs_deactivate(void)
{
    pio_set_value(CONFIG_SYS_SPI_PCS, 1);
}
예제 #8
0
void mag_on_off(int state)
{
	pio_set_value(MAGNET_PIO, state);
}