Пример #1
0
void gpio_set_input(const char GPIO[]) {
    const char M_PORT = gpio_get_port(GPIO);
    const char M_PIN_NUMBER = gpio_get_pin(GPIO);

    // Mettre à 1 le bit dans TRISx
            switch(M_PORT) {
            case 'B':
                TRISB |= (1<<M_PIN_NUMBER);
                break;
            case 'C':
                TRISC |= (1<<M_PIN_NUMBER);
                break;
            case 'D':
                TRISD |= (1<<M_PIN_NUMBER);
                break;
            case 'E':
                TRISE |= (1<<M_PIN_NUMBER);
                break;
            case 'F':
                TRISF |= (1<<M_PIN_NUMBER);
                break;
            case 'G':
                TRISG |= (1<<M_PIN_NUMBER);
                break;
            default:
                break;
        }

}
Пример #2
0
void gpio_set_output(const char GPIO[]) {
    // Mise à 0 du bit dans TRISx

    const char M_PORT = gpio_get_port(GPIO);
    const char M_PIN_NUMBER = gpio_get_pin(GPIO);

    switch (M_PORT) {
        case 'B':
            TRISB &= ~(1 << M_PIN_NUMBER);
            break;
        case 'C':
            TRISC &= ~(1 << M_PIN_NUMBER);
            break;
        case 'D':
            TRISD &= ~(1 << M_PIN_NUMBER);
            break;
        case 'E':
            TRISE &= ~(1 << M_PIN_NUMBER);
            break;
        case 'F':
            TRISF &= ~(1 << M_PIN_NUMBER);
            break;
        case 'G':
            TRISG &= ~(1 << M_PIN_NUMBER);
            break;
        default:
            break;
    }
}
Пример #3
0
void gpio_toggle(const char GPIO[]) {
    const char M_PORT = gpio_get_port(GPIO);
    const char M_PIN_NUMBER = gpio_get_pin(GPIO);

    switch (M_PORT) {
        case 'B':
            LATB ^= (1 << M_PIN_NUMBER);
            break;
        case 'C':
            LATC ^= (1 << M_PIN_NUMBER);
            break;
        case 'D':
            LATD ^= (1 << M_PIN_NUMBER);
            break;
        case 'E':
            LATE ^= (1 << M_PIN_NUMBER);
            break;
        case 'F':
            LATF ^= (1 << M_PIN_NUMBER);
            break;
        case 'G':
            LATG ^= (1 << M_PIN_NUMBER);
            break;
        default:
            break;
    }
}
Пример #4
0
void gpio_set_high(const char GPIO[]) {
    const char M_PORT = gpio_get_port(GPIO);
    const char M_PIN_NUMBER = gpio_get_pin(GPIO);

    switch (M_PORT) {
        case 'B':
            LATB |= (1 << M_PIN_NUMBER);
            break;
        case 'C':
            LATC |= (1 << M_PIN_NUMBER);
            break;
        case 'D':
            LATD |= (1 << M_PIN_NUMBER);
            break;
        case 'E':
            LATE |= (1 << M_PIN_NUMBER);
            break;
        case 'F':
            LATF |= (1 << M_PIN_NUMBER);
            break;
        case 'G':
            LATG |= (1 << M_PIN_NUMBER);
            break;
        default:
            break;
    }

}
Пример #5
0
void gpio_set_low(const char GPIO[]) {
    const char M_PORT = gpio_get_port(GPIO);
    const char M_PIN_NUMBER = gpio_get_pin(GPIO);

    switch (M_PORT) {
        case 'B':
            LATB &= ~(1 << M_PIN_NUMBER);
            break;
        case 'C':
            LATC &= ~(1 << M_PIN_NUMBER);
            break;
        case 'D':
            LATD &= ~(1 << M_PIN_NUMBER);
            break;
        case 'E':
            LATE &= ~(1 << M_PIN_NUMBER);
            break;
        case 'F':
            LATF &= ~(1 << M_PIN_NUMBER);
            break;
        case 'G':
            LATG &= ~(1 << M_PIN_NUMBER);
            break;
        default:
            break;
    }

}
Пример #6
0
int gpio_get_value(unsigned gpio)
{
	struct gpio_port *port = gpio_get_port(gpio);
	const int shift = gpio % 8;
	u32 val;

	if (!port)
		return -EINVAL;

	val = readl(port->dr);

	return val & (1 << shift) ? 1 : 0;
}
Пример #7
0
int gpio_direction_input(unsigned gpio)
{
	struct gpio_port *port = gpio_get_port(gpio);
	const int shift = gpio % 8;
	u32 val;

	if (!port)
		return -EINVAL;

	val = readl(port->ddr);
	val &= ~(1 << shift);
	writel(val, port->ddr);

	return 0;
}
Пример #8
0
int gpio_direction_output(unsigned gpio, int value)
{
	struct gpio_port *port = gpio_get_port(gpio);
	const int shift = gpio % 8;
	u32 val;

	if (!port)
		return -EINVAL;

	gpio_set_value(gpio, value);

	val = readl(port->ddr);
	val |= 1 << shift;
	writel(val, port->ddr);

	return 0;
}
Пример #9
0
void gpio_set_value(unsigned gpio, int value)
{
	struct gpio_port *port = gpio_get_port(gpio);
	const int shift = gpio % 8;
	u32 val;

	if (!port)
		return;

	val = readl(port->dr);

	if (value)
		val |= 1 << shift;
	else
		val &= ~(1 << shift);

	writel(val, port->dr);
}
Пример #10
0
/*************************************************
 * Lecture
 ************************************************/
bool gpio_read(const char GPIO[]) {
    const char M_PORT = gpio_get_port(GPIO);
    const char M_PIN_NUMBER = gpio_get_pin(GPIO);

    switch (M_PORT) {
        case 'B':
            return ((PORTB & (1 << M_PIN_NUMBER))) >> M_PIN_NUMBER;
        case 'C':
            return ((PORTC & (1 << M_PIN_NUMBER))) >> M_PIN_NUMBER;
        case 'D':
            return ((PORTD & (1 << M_PIN_NUMBER))) >> M_PIN_NUMBER;
        case 'E':
            return ((PORTE & (1 << M_PIN_NUMBER))) >> M_PIN_NUMBER;
        case 'F':
            return ((PORTF & (1 << M_PIN_NUMBER))) >> M_PIN_NUMBER;
        case 'G':
            return ((PORTG & (1 << M_PIN_NUMBER))) >> M_PIN_NUMBER;
        default:
            return 0;
    }

    return 0;

}