Пример #1
0
mraa_result_t
mraa_intel_galileo_gen2_i2c_init_pre(unsigned int bus)
{
    mraa_gpio_context io18 = mraa_gpio_init_raw(57);
    int status = 0;

    if (io18 == NULL) {
        return MRAA_ERROR_UNSPECIFIED;
    }
    status += mraa_gpio_dir(io18, MRAA_GPIO_IN);
    status += mraa_gpio_mode(io18, MRAA_GPIO_HIZ);
    mraa_gpio_close(io18);

    mraa_gpio_context io19 = mraa_gpio_init_raw(59);
    if (io19 == NULL) {
        return MRAA_ERROR_UNSPECIFIED;
    }
    status += mraa_gpio_dir(io19, MRAA_GPIO_IN);
    status += mraa_gpio_mode(io19, MRAA_GPIO_HIZ);
    mraa_gpio_close(io19);

    if (status > 0) {
        return MRAA_ERROR_UNSPECIFIED;
    }
    return MRAA_SUCCESS;
}
tb6612::tb6612():
  _dcA(0.0), _dcB(0.0)
{
  
  // _pwmA is pwm channel 0, on pin 20 in mraa
  _pwmA = mraa_pwm_init(20);
  mraa_pwm_period_us(_pwmA, 1000);
  mraa_pwm_enable(_pwmA, 1);
 
  // _pwmB is pwm channel 1, on pin 14 in mraa
  _pwmB = mraa_pwm_init(14);
  mraa_pwm_period_us(_pwmB, 1000);
  mraa_pwm_enable(_pwmB, 1);

  mraa_pwm_write(_pwmA, 0.01);
  mraa_pwm_write(_pwmB, 0.01);
  mraa_pwm_write(_pwmA, 0.0);
  mraa_pwm_write(_pwmB, 0.0);

  // _A1 and _A2 are on GPIO48 and GPIO47, respectively, which are pins 33 and
  //  46 in mraa, respectively.
  _A1 = mraa_gpio_init(33);
  _A2 = mraa_gpio_init(46);
  mraa_gpio_dir(_A1, MRAA_GPIO_OUT);
  mraa_gpio_mode(_A1, MRAA_GPIO_STRONG);
  mraa_gpio_write(_A1, 1);
  mraa_gpio_dir(_A2, MRAA_GPIO_OUT);
  mraa_gpio_mode(_A2, MRAA_GPIO_STRONG);
  mraa_gpio_write(_A2, 1);

  // _B1 and _B2 are on GPIO15 and GPIO14, respectively, which are pins 48 and
  //  36, respectively
  _B1 = mraa_gpio_init(48);
  _B2 = mraa_gpio_init(36);
  mraa_gpio_dir(_B1, MRAA_GPIO_OUT);
  mraa_gpio_mode(_B1, MRAA_GPIO_STRONG);
  mraa_gpio_write(_B1, 1);
  mraa_gpio_dir(_B2, MRAA_GPIO_OUT);
  mraa_gpio_mode(_B2, MRAA_GPIO_STRONG);
  mraa_gpio_write(_B2, 1);

  // _standbyPin is on GPIO49, which is pin 47 in mraa
  _standbyPin = mraa_gpio_init(47);
  mraa_gpio_dir(_standbyPin, MRAA_GPIO_OUT);
  mraa_gpio_mode(_standbyPin, MRAA_GPIO_STRONG);
  mraa_gpio_write(_standbyPin, 1);
}
Пример #3
0
void GPIO_Init(void)
{
	mraa_init();

	//J18-2 --> GPIO-165
	SCS = mraa_gpio_init(15);
	//printf("Ports initialized\n");

  mraa_gpio_use_mmaped(SCS, 1);

	mraa_gpio_mode(SCS, MRAA_GPIO_PULLUP);
	//printf("Ports modes set\n");

	mraa_gpio_dir(SCS, MRAA_GPIO_OUT);
	//printf("Port directions set\n");

	VDD = mraa_gpio_init(31); // GP44
	mraa_gpio_mode(VDD, MRAA_GPIO_PULLUP);
	mraa_gpio_dir(VDD, MRAA_GPIO_OUT);
}
Пример #4
0
void initialize()
{
	pwm1 = mraa_pwm_init(20);
	mraa_pwm_period_us(pwm1, 870);
	mraa_pwm_enable(pwm1, 1);

	pwm2 = mraa_pwm_init(14);
	mraa_pwm_period_us(pwm2, 870);
	mraa_pwm_enable(pwm2, 1);

	mraa_pwm_write(pwm1, 0.01);
	mraa_pwm_write(pwm2, 0.01);
	mraa_pwm_write(pwm1, 0.0);
	mraa_pwm_write(pwm2, 0.0);

	A1 = mraa_gpio_init(48);
	A2 = mraa_gpio_init(36);
	mraa_gpio_dir(A1, MRAA_GPIO_OUT);
	mraa_gpio_mode(A1, MRAA_GPIO_STRONG);
	mraa_gpio_write(A1, 1);
	mraa_gpio_dir(A2, MRAA_GPIO_OUT);
	mraa_gpio_mode(A2, MRAA_GPIO_STRONG);
	mraa_gpio_write(A2, 1);

	B1 = mraa_gpio_init(33);
	B2 = mraa_gpio_init(46);
	mraa_gpio_dir(B1, MRAA_GPIO_OUT);
	mraa_gpio_mode(B1, MRAA_GPIO_STRONG);
	mraa_gpio_write(B1, 1);
	mraa_gpio_dir(B2, MRAA_GPIO_OUT);
	mraa_gpio_mode(B2, MRAA_GPIO_STRONG);
	mraa_gpio_write(B2, 1);

	standbyPin = mraa_gpio_init(47);
	mraa_gpio_dir(standbyPin, MRAA_GPIO_OUT);
	mraa_gpio_mode(standbyPin, MRAA_GPIO_STRONG);
	mraa_gpio_write(standbyPin, 1);
}
Пример #5
0
void GPIO_Init(void)
{
	mraa_init();
	
	//J18-2 --> GPIO-165
	SCS = mraa_gpio_init(15); 
	printf("Ports initialized\n");
	
	mraa_gpio_mode(SCS, MRAA_GPIO_PULLUP);
	printf("Ports modes set\n");
	
	mraa_gpio_dir(SCS, MRAA_GPIO_OUT);
	printf("Port directions set\n");
}
Пример #6
0
int main(int argc, char *argv[])
{
    mraa_init();

    fprintf(stdout, "Hello mraa.\nVersion: %s\n", mraa_get_version());

    // LED
    out = mraa_gpio_init(20);
    if(out == NULL){
        printf("Error: init out.\r\n");
        return 1;
    }
    mraa_gpio_dir(out, MRAA_GPIO_OUT);

    // Switch
    mraa_gpio_context in = mraa_gpio_init(14);
    if(in == NULL){
        printf("Error: init in.\r\n");
        return 1;
    }
    mraa_gpio_dir(in, MRAA_GPIO_IN);
    mraa_gpio_mode(in, MRAA_GPIO_PULLUP);

    // 割込関数の登録
    mraa_gpio_isr(in, MRAA_GPIO_EDGE_BOTH, interrupt_in, (void *)in);

    while(1) {}




    mraa_gpio_isr_exit(in);
    mraa_gpio_close(in);
    mraa_gpio_close(out);

    mraa_deinit();

    return 0;
}
Пример #7
0
 /**
  * Change Gpio mode
  *
  * @param mode The mode to change the gpio into
  * @return Result of operation
  */
 Result
 mode(Mode mode)
 {
     return (Result )mraa_gpio_mode(m_gpio, (mraa_gpio_mode_t) mode);
 }
Пример #8
0
Файл: mraa.c Проект: MFALHI/mraa
mraa_result_t
mraa_setup_mux_mapped(mraa_pin_t meta)
{
    unsigned int mi;
    mraa_result_t ret;
    mraa_gpio_context mux_i = NULL;
    // avoids the unsigned comparison and we should never have a pin that is UINT_MAX!
    unsigned int last_pin = UINT_MAX;

    for (mi = 0; mi < meta.mux_total; mi++) {

        switch(meta.mux[mi].pincmd) {
            case PINCMD_UNDEFINED:              // used for backward compatibility
                if(meta.mux[mi].pin != last_pin) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    mux_i = mraa_gpio_init_raw(meta.mux[mi].pin);
                    if (mux_i == NULL) return MRAA_ERROR_INVALID_HANDLE;
                    last_pin = meta.mux[mi].pin;
                }
                // this function will sometimes fail, however this is not critical as
                // long as the write succeeds - Test case galileo gen2 pin2
                mraa_gpio_dir(mux_i, MRAA_GPIO_OUT);
                ret = mraa_gpio_write(mux_i, meta.mux[mi].value);
                if(ret != MRAA_SUCCESS) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    return MRAA_ERROR_INVALID_RESOURCE;
                }
                break;

            case PINCMD_SET_VALUE:
                if(meta.mux[mi].pin != last_pin) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    mux_i = mraa_gpio_init_raw(meta.mux[mi].pin);
                    if (mux_i == NULL) return MRAA_ERROR_INVALID_HANDLE;
                    last_pin = meta.mux[mi].pin;
                }

                ret = mraa_gpio_write(mux_i, meta.mux[mi].value);

                if(ret != MRAA_SUCCESS) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    return MRAA_ERROR_INVALID_RESOURCE;
                }
                break;

            case PINCMD_SET_DIRECTION:
                if(meta.mux[mi].pin != last_pin) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    mux_i = mraa_gpio_init_raw(meta.mux[mi].pin);
                    if (mux_i == NULL) return MRAA_ERROR_INVALID_HANDLE;
                    last_pin = meta.mux[mi].pin;
                }

                ret = mraa_gpio_dir(mux_i, meta.mux[mi].value);

                if(ret != MRAA_SUCCESS) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    return MRAA_ERROR_INVALID_RESOURCE;
                }
                break;

            case PINCMD_SET_IN_VALUE:
                if(meta.mux[mi].pin != last_pin) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    mux_i = mraa_gpio_init_raw(meta.mux[mi].pin);
                    if (mux_i == NULL) return MRAA_ERROR_INVALID_HANDLE;
                    last_pin = meta.mux[mi].pin;
                }

                ret = mraa_gpio_dir(mux_i, MRAA_GPIO_IN);

                if(ret == MRAA_SUCCESS)
                    ret = mraa_gpio_write(mux_i, meta.mux[mi].value);

                if(ret != MRAA_SUCCESS) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    return MRAA_ERROR_INVALID_RESOURCE;
                }
                break;

            case PINCMD_SET_OUT_VALUE:
                if(meta.mux[mi].pin != last_pin) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    mux_i = mraa_gpio_init_raw(meta.mux[mi].pin);
                    if (mux_i == NULL) return MRAA_ERROR_INVALID_HANDLE;
                    last_pin = meta.mux[mi].pin;
                }

                ret = mraa_gpio_dir(mux_i, MRAA_GPIO_OUT);

                if(ret == MRAA_SUCCESS)
                    ret = mraa_gpio_write(mux_i, meta.mux[mi].value);

                if(ret != MRAA_SUCCESS) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    return MRAA_ERROR_INVALID_RESOURCE;
                }
                break;

            case PINCMD_SET_MODE:
                if(meta.mux[mi].pin != last_pin) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    mux_i = mraa_gpio_init_raw(meta.mux[mi].pin);
                    if (mux_i == NULL) return MRAA_ERROR_INVALID_HANDLE;
                    last_pin = meta.mux[mi].pin;
                }

                ret = mraa_gpio_mode(mux_i, meta.mux[mi].value);

                if(ret != MRAA_SUCCESS) {
                    if (mux_i != NULL) {
                        mraa_gpio_owner(mux_i, 0);
                        mraa_gpio_close(mux_i);
                    }
                    return MRAA_ERROR_INVALID_RESOURCE;
                }
                break;

            case PINCMD_SKIP:
                break;

            default:
                syslog(LOG_NOTICE, "mraa_setup_mux_mapped: wrong command %d on pin %d with value %d", meta.mux[mi].pincmd, meta.mux[mi].pin, meta.mux[mi].value);
                break;
        }
    }

    if (mux_i != NULL) {
        mraa_gpio_owner(mux_i, 0);
        mraa_gpio_close(mux_i);
    }

    return MRAA_SUCCESS;
}
Пример #9
0
 /**
  * Change Gpio mode
  *
  * @param mode The mode to change the gpio into
  * @return Result of operation
  */
 mraa_result_t mode(Mode mode) {
     return mraa_gpio_mode(m_gpio, (gpio_mode_t) mode);
 }