// Inicialización del LCD void inicio_lcd(void){ instruccion = 2; // Dato para enviar el cursor a la posición inicial config_lcd(); // Llamamos a la función de configuración instruccion = 40; // Dato para seleccionar bus de datos a 4 bits, display a dos lineas y tamaño de caracter 5x7 config_lcd(); // Llamamos a la función de configuración instruccion = 12; // Dato para encender display, apagar el cursor y cursor sin parpadeo config_lcd(); // Llamamos a la función de configuración instruccion = 6; // Dato para el desplazamiento del cursor hacia la derecha y sin desplazamiento automatico de la pantalla config_lcd(); // Llamamos a la función de configuración instruccion = 1; // Dato para limpiar el contenido del LCD config_lcd(); // Llamamos a la función de configuración }
int main (void) { /* Insert system clock initialization code here (sysclk_init()). */ sysclk_init(); board_init(); /* Insert application code here, after the board has been initialized. */ if (SysTick_Config(sysclk_get_cpu_hz() / 1000)) { puts("-E- Systick configuration error\r"); while (1) { /* Capture error */ gpio_set_pin_low(LED2_GPIO); } } config_lcd(); pmc_enable_periph_clk(ID_ENC); //Interrupt for A: pio_set_input(PIOA, GPIO_A, PIO_DEFAULT); pio_pull_down(PIOA, GPIO_A, ENABLE); pio_handler_set(PIOA, ID_ENC, GPIO_A, PIO_IT_RISE_EDGE, pin_handler); pio_enable_interrupt(PIOA, GPIO_A); //Interrupt for B: pio_set_input(PIOA, GPIO_B, PIO_DEFAULT); pio_pull_down(PIOA, GPIO_B, ENABLE); pio_handler_set(PIOA, ID_ENC, GPIO_B, PIO_IT_RISE_EDGE, pin_handler); pio_enable_interrupt(PIOA, GPIO_B); //Interrupt for C: pio_set_input(PIOA, GPIO_C, PIO_DEFAULT); pio_pull_down(PIOA, GPIO_C, ENABLE); //pio_handler_set(PIOA, ID_ENC, GPIO_C, PIO_IT_RISE_EDGE, pin_handler); pio_handler_set(PIOA, ID_ENC, GPIO_C, PIO_IT_FALL_EDGE, pin_handler); pio_enable_interrupt(PIOA, GPIO_C); //Enable Interrupt GPIO: NVIC_DisableIRQ(PIOA_IRQn); NVIC_ClearPendingIRQ(PIOA_IRQn); NVIC_SetPriority(PIOA_IRQn, 0); NVIC_EnableIRQ(PIOA_IRQn); ili9225_set_foreground_color(COLOR_BLACK); ili9225_draw_string(10,10, (uint8_t *)"Encoder Test"); while (1){ ili9225_set_foreground_color(COLOR_WHITE); ili9225_draw_filled_rectangle(0,30,ILI9225_LCD_WIDTH,ILI9225_LCD_HEIGHT); ili9225_set_foreground_color(COLOR_BLACK); graus = ((float)round/ENC_RES)*VOLTA_COMP; snprintf(buf, sizeof(buf), "Graus:%.3f", graus ); ili9225_draw_string(10,50, buf); snprintf(buf, sizeof(buf), "Round:%d", round ); ili9225_draw_string(10,80, buf); mdelay(500); } }