Exemple #1
0
static void keyboard_refresh(void){

  static char check[4] = {1,1,1,1};

#ifdef USE_SW1_WITH_POLLING
  if(gpio_get_pin(KEY_PIN(0),0)){
   if (check[0]){
      keyboard_handle_key(0);
      check[0] = 0;
    }
  }
  else{
    check[0] = 1;
  }
#endif

#ifdef USE_SW2_WITH_POLLING
  if(gpio_get_pin(KEY_PIN(1),0)){
   if (check[1]){
      keyboard_handle_key(1);
      check[1] = 0;
    }
  }
  else{
    check[1] = 1;
  }
#endif

#ifdef USE_SW3_WITH_POLLING
  if(gpio_get_pin(KEY_PIN(2),0)){
   if (check[2]){
      keyboard_handle_key(2);
      check[2] = 0;
    }
  }
  else{
    check[2] = 1;
  }
#endif

#ifdef USE_SW4_WITH_POLLING

  if(gpio_get_pin(KEY_PIN(3),0)){
   if (check[3]){
      keyboard_handle_key(3);
      check[3] = 0;
    }
  }
  else{
    check[3] = 1;
  }

#endif


}
static int __init
s3c6410_leds_init(void)
{
	if (machine_is_smdk6410())
		leds_event = smdk6410_leds_event;
	else
		return -1;

	if (machine_is_smdk6410())
	{
		/*GPN12~15 used for LED*/
		/*Set GPN12~15 to output mode */
		gpio_direction_output(S3C_GPN12);
		if(gpio_get_pin(S3C_GPN12) == 0)
		{
			printk(KERN_WARNING "LED: can't set GPN12 output mode\n");
		}

		gpio_direction_output(S3C_GPN13);
		if(gpio_get_pin(S3C_GPN13) == 0)
		{
			printk(KERN_WARNING "LED: can't set GPN13 output mode\n");
		}

		gpio_direction_output(S3C_GPN14);
		if(gpio_get_pin(S3C_GPN14) == 0)
		{
			printk(KERN_WARNING "LED: can't set GPN14 output mode\n");
		}

		gpio_direction_output(S3C_GPN15);
		if(gpio_get_pin(S3C_GPN15) == 0)
		{
			printk(KERN_WARNING "LED: can't set GPN15 output mode\n");
		}

	}

	/* Get irqs */
	set_irq_type(IRQ_EINT9, IRQT_FALLING);
	gpio_pullup(S3C_GPN9, 0x0);
	if (request_irq(IRQ_EINT9, eint9_switch, SA_TRIGGER_FALLING, "EINT9", NULL)) {
		printk(KERN_ERR "leds.c: Could not allocate EINT9 !\n");
		return -EIO;
	}


	leds_event(led_start);
	return 0;
}
Exemple #3
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;
        }

}
Exemple #4
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;
    }
}
Exemple #5
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;
    }
}
Exemple #6
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;
    }

}
Exemple #7
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;
    }

}
Exemple #8
0
void gpio_set_analog(const char GPIO[]) {
    // Mise à 0 du bit dans TRISx

    const char M_ADC_NUMBER = gpio_get_pin(GPIO);

    // Configure la broche en entrée digitale
    TRISB |= (1<<M_ADC_NUMBER); // Configure la broche en entrée

    //Active le mode analogique sur la broche
    AD1PCFG &= ~(1 << M_ADC_NUMBER);
}
Exemple #9
0
void  timer0_mr0_interrupt()
{
  static volatile int counter = 0;
  static volatile int sample_index = 0;
  static volatile unsigned char last_sample;

  if(!counter--){
    counter = 124;
    last_sample = SOUND_DATA_DATA[sample_index];
    if (++sample_index >= SOUND_DATA_LENGTH){
      sample_index = 0;
      gpio_set_pin(0,22,!gpio_get_pin(0,22,1));
    }
  }

  dac_set_value(last_sample);

}
Exemple #10
0
float gpio_analog_read(const char GPIO[]) {
    const char M_ADC_NUMBER = gpio_get_pin(GPIO);

        // Désactivation du module ADC
    AD1CON1bits.ADON = 0;

    // Séléction de la broche sur l'entrée ADC A positive
    AD1CHS = M_ADC_NUMBER << 16;

    // Réactivation du module ADC
    AD1CON1bits.ADON = 1;

    // Démarrage de la conversion
    AD1CON1bits.SAMP = 1;

    while(!AD1CON1bits.DONE)
    {
        // Wait for ADC to complete
    }
    return ((float) ( ADC1BUF0 +(8 *(AD1CON2bits.BUFS & 0x01))   )) / (1023.0 / 3.3);
}
Exemple #11
0
int gpio_Platform_VerProbe(void)
{
	int ii;

	if(!gpio_Platform_rawbufflg) {
		gpio_Platform_rawbufflg = !gpio_Platform_rawbufflg;

		gpio_conf_t ProbeIO[] = {
			{1, 3,  GPIO_DIR_IN,  GPIO_PIN_HIGH},
			{0, 7,  GPIO_DIR_IN,  GPIO_PIN_HIGH},
		};
		unsigned int tmpValue = 0;

		for(ii = 0; ii < ARRAY_SIZE(ProbeIO); ii ++) {
			gpio_pin_init(ProbeIO[ii]);
		}

		udelay(1000); //Delay to Wait Input Signal Level Stable;

		for(ii = 0; ii < ARRAY_SIZE(ProbeIO); ii ++) {
			tmpValue <<= 1;
			if(gpio_get_pin(ProbeIO[ii].grp, ProbeIO[ii].pin) == GPIO_PIN_HIGH) {
				tmpValue  += 1;
			}
		}
		gpio_Platform_rawbufval = tmpValue;
		printk("\nGPIO_PROBE_VALUE : 0x%08X\n", gpio_Platform_rawbufval);
	}

	switch(gpio_Platform_rawbufval) {
	case 0x01:
		return GPIO_PROBE_VER0;
	case 0x00:
		return GPIO_PROBE_VER1;
	case 0x03:
		return GPIO_PROBE_VER2;
	}

	return GPIO_PROBE_VER0;
}
Exemple #12
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;

}
Exemple #13
0
uint8_t vnh_get_fault(vnh_s* v) {
	return gpio_get_pin(v->ena) | gpio_get_pin(v->enb);
}