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; }
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; } }
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; } }
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; } }
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; } }
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; } }
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); }
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); }
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); }
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; }
/************************************************* * 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; }
uint8_t vnh_get_fault(vnh_s* v) { return gpio_get_pin(v->ena) | gpio_get_pin(v->enb); }