int gpio_set_value(unsigned gpio, int value) { #ifdef AXP_GPIO if (gpio >= SUNXI_GPIO_AXP0_START) return axp_gpio_set_value(gpio - SUNXI_GPIO_AXP0_START, value); #endif return sunxi_gpio_output(gpio, value); }
void lcd_set_data(unsigned uValue) { sunxi_gpio_output(SUNXI_GPG(10), uValue & 0x01); sunxi_gpio_output(SUNXI_GPG(9), uValue & 0x02); sunxi_gpio_output(SUNXI_GPB(3), uValue & 0x04); sunxi_gpio_output(SUNXI_GPE(11), uValue & 0x08); sunxi_gpio_output(SUNXI_GPB(4), uValue & 0x10); sunxi_gpio_output(SUNXI_GPE(10), uValue & 0x20); sunxi_gpio_output(SUNXI_GPE(9), uValue & 0x40); sunxi_gpio_output(SUNXI_GPE(8), uValue & 0x80); }
int gpio_direction_output(unsigned gpio, int value) { #ifdef AXP_GPIO if (gpio >= SUNXI_GPIO_AXP0_START) return axp_gpio_direction_output(gpio - SUNXI_GPIO_AXP0_START, value); #endif sunxi_gpio_set_cfgpin(gpio, SUNXI_GPIO_OUTPUT); return sunxi_gpio_output(gpio, value); }
/** * Set output value of GPIO. Pin must be configured as output or else raises * exception. For high output level - 1, low - 0. * * @param self * @param args Tuple that holds GPIO number and value * @return none */ static PyObject* py_output(PyObject* self, PyObject* args) { int gpio; int value; /* Parse arguments. Two integers are required. */ if (!PyArg_ParseTuple(args, "ii", &gpio, &value)) return NULL; /* Set output value and check return status. */ if (sunxi_gpio_output(gpio, value) < 0) { return PyErr_SetFromErrno(PyExc_IOError); } Py_RETURN_NONE; }
int main(int argc, const char* argv[] ) { //30ms delay delay(30); init_lcd_pin_direction(); delay(30); /* lcd_set_RS(0); lcd_set_RW(0); lcd_set_E(0); lcd_set_data(0x3A); lcd_set_E(1); delay(30); lcd_set_E(0); lcd_set_data(0x0F); lcd_set_E(1); delay(30); lcd_set_E(0); */ int pin; char *port; int i, k, val; val = 0; printf("app startup\n"); printf("argv[1]:%s argv[2]:%s\n", argv[1], argv[2]); port = argv[1]; pin = atoi(argv[2]); printf("port:%s\n",port); printf("pin:%d\n",pin); if(!strcmp(port, "G")) { while(1) { //sunxi_gpio_output(SUNXI_GPG(9), 0); sunxi_gpio_output(SUNXI_GPG(pin), 0); delay(3000); //sunxi_gpio_output(SUNXI_GPG(9), 1); sunxi_gpio_output(SUNXI_GPG(pin), 1); delay(3000); }; } else if(!strcmp(port, "A")) { while(1) { sunxi_gpio_output(SUNXI_GPA(pin), 0); //sunxi_gpio_output(SUNXI_GPA(pin), 0); delay(3000); sunxi_gpio_output(SUNXI_GPA(pin), 1); //sunxi_gpio_output(SUNXI_GPA(pin), 1); delay(3000); }; } else if(!strcmp(port, "B")) { while(1) { sunxi_gpio_output(SUNXI_GPB(pin), 0); //sunxi_gpio_output(SUNXI_GPA(pin), 0); delay(3000); sunxi_gpio_output(SUNXI_GPB(pin), 1); //sunxi_gpio_output(SUNXI_GPA(pin), 1); delay(3000); }; } else if(!strcmp(port, "I")) { while(1) { sunxi_gpio_output(SUNXI_GPI(pin), 0); //sunxi_gpio_output(SUNXI_GPA(pin), 0); delay(3000); sunxi_gpio_output(SUNXI_GPI(pin), 1); //sunxi_gpio_output(SUNXI_GPA(pin), 1); delay(3000); }; } return 0; }
void lcd_set_E(unsigned uValue) { sunxi_gpio_output(SUNXI_GPB(1), uValue); }
void lcd_set_RW(unsigned uValue) { sunxi_gpio_output(SUNXI_GPG(11), uValue); }
/* * digitalWrite: * Set an output bit ********************************************************************************* */ void digitalWrite(int pin, int value) { sunxi_gpio_output(pinWiringOli(pin), value); }
int gpio_set_value(unsigned gpio, int value) { return sunxi_gpio_output(gpio, value); }
int gpio_direction_output(unsigned gpio, int value) { sunxi_gpio_set_cfgpin(gpio, SUNXI_GPIO_OUTPUT); return sunxi_gpio_output(gpio, value); }