示例#1
0
void keyboardInit()
{
	extKIrqHandler = 0;
	kBuffer = 16;
	int x;
	/*
	 * set 5-8 lines to input with pull down,
	 * detecting rising edge
	 */
	for (x = 5; x <= 8; x++) {
		setGpioFunct(pinToGpio[x], GPINPUT);
		setPull(pinToGpio[x], GPDOWN);
		setDetect(pinToGpio[x], GPENABLE, GPRISE);
	}
	/*
	 * turn 1-4 lines high to allow interrupt
	 * to be generated
	 */
	for (x = 1; x <= 4; x++) {
		setGpioFunct(pinToGpio[x], GPOUTPUT);
		setPin(pinToGpio[x]);
		setPull(pinToGpio[x], GPDOWN);
	}
	/*
	 * sets interrupt controller
	 */
	*irqEnable2 = ((1 << 20) | (1 << 19) | (1 << 18) | (1 << 17));
	/*
	 * takes care of CPSR
	 */
	irqEnable();
	return;
}
示例#2
0
 //% help=pins/set-pull weight=3 advanced=true
 //% blockId=device_set_pull block="set pull|pin %pin|to %pull"
 //% pin.fieldEditor="gridpicker" pin.fieldOptions.columns=4
 //% pin.fieldOptions.tooltips="false" pin.fieldOptions.width="300"
 void setPull(DigitalPin name, PinPullMode pull) {
     PinMode m = pull == PinPullMode::PullDown
         ? PinMode::PullDown
         : pull == PinPullMode::PullUp ? PinMode::PullUp
         : PinMode::PullNone;
     PINOP(setPull(m));
 }
示例#3
0
bool DisplayStateA::parseSuitableMessage(const CanFrame &frame)
{
    bool update = false;
    update =  setRb       (frame[2] & (1 << 7)) || update;
    update =  setRbs      (frame[2] & (1 << 6)) || update;
    update =  setVk       (frame[2] & (1 << 5)) || update;
    update =  setPull     (frame[2] & (1 << 3)) || update;
    update =  setOtpr     (frame[2] & (1 << 2)) || update;
    update =  setOc       (frame[2] & (1 << 1)) || update;
    update =  setK20      (frame[2] & (1 << 0)) || update;
    update =  setFreq     (frame[3] & (1 << 7)) || update;

    if (frame[3] & (1 << 6))
        update = update || setDriveMode (WORKING);
    else if (frame[2] & (1 << 4))
        update = update || setDriveMode (SHUNTING);
    else
        update = update || setDriveMode (TRAIN);

    return update;
}