// _____________________________________________________________________ void CRaspiGPIO::configPinMode(unsigned int gpio_num, QString mode) { if (mode.toLower() == "output") { setPinModeOutput(gpio_num, 0); m_application->m_print_view->print_debug(this, "GPIO " + QString::number(gpio_num) + " is Digital Output"); } else if (mode.toLower() == "pwm output") { setPinModePWMOutput(gpio_num, 0); m_application->m_print_view->print_debug(this, "GPIO " + QString::number(gpio_num) + " is PWM Outpur"); } else if (mode.toLower() == "input pull up") { setPinModeInput(gpio_num, PUD_UP); m_application->m_print_view->print_debug(this, "GPIO " + QString::number(gpio_num) + " is Input with Pull up"); } else if (mode.toLower() == "input pull down") { setPinModeInput(gpio_num, PUD_DOWN); m_application->m_print_view->print_debug(this, "GPIO " + QString::number(gpio_num) + " is Input with Pull down"); } else if (mode.toLower() == "input") { setPinModeInput(gpio_num, PUD_OFF); m_application->m_print_view->print_debug(this, "GPIO " + QString::number(gpio_num) + " is Input"); } else { // mode inconnu, laisse le GPIO dans son état courant m_application->m_print_view->print_error(this, "Unknown mode \"" + mode + "\" for GPIO " + QString::number(gpio_num)); } }
void setPinModeSoftwarePWM(int pin, int period, int term, unsigned long length) { if (pin >= 0 && pin < NUM_DIGITAL_PINS) { SoftwarePwm* p; for (p = &softwarePwmTable[0]; p < &softwarePwmTable[MaxSoftwarePwmChannels]; p++) { if (!p->valid || p->pin == pin) { setPinModeOutput(pin); p->valid = false; p->pin = pin; p->count = 0; p->period = period; p->term = term; p->length = length; p->out = portOutputRegister(digitalPinToPort(pin)); p->bit = digitalPinToBit(pin); p->valid = true; break; } } } }
void setPinMode(uint8_t pin , uint8_t pinMode) { uint8_t bit = digitalPinToBitMask(pin); uint8_t port = digitalPinToPort(pin); t_SetPortCfg cfg; if(port == NOT_A_PIN) { return; } cfg.pID = portModeRegister(port); if(pinMode == INPUT) { setPinModeInput(&cfg, bit); } else { setPinModeOutput(&cfg, bit); } }
void setPinMode(int pin, PinMode mode) { if (pin >= 0 && pin < NUM_DIGITAL_PINS) { if (getPinMode(pin) != mode) { resetPinMode(pin); switch (mode) { case PinModeUnused: if (setPinModeUnused != NULL) { setPinModeUnused(pin); } goto change; case PinModeInput: if (setPinModeInput != NULL) { setPinModeInput(pin); } goto change; case PinModeOutput: if (setPinModeOutput != NULL) { setPinModeOutput(pin); } goto change; case PinModeInputPullUp: if (setPinModeInputPullUp != NULL) { setPinModeInputPullUp(pin); } goto change; case PinModeOutputHigh: if (setPinModeOutputHigh != NULL) { setPinModeOutputHigh(pin); } goto change; case PinModeOutputOpenDrain: if (setPinModeOutputOpenDrain != NULL) { setPinModeOutputOpenDrain(pin); } goto change; case PinModeAnalogRead: if (setPinModeAnalogRead != NULL) { setPinModeAnalogRead(pin); } goto change; case PinModeAnalogWrite: if (setPinModeAnalogWrite != NULL) { setPinModeAnalogWrite(pin); } goto change; case PinModeTone: if (setPinModeTone != NULL) { setPinModeTone(pin); } goto change; case PinModeServo: if (setPinModeServo != NULL) { setPinModeServo(pin); } goto change; case PinModeDac: if (setPinModeDac != NULL) { setPinModeDac(pin); } goto change; case PinModeOther: if (setPinModeOther != NULL) { setPinModeOther(pin); } change: changePinMode(pin, mode); break; default: break; } } } }