/** * \brief Application entry point for smc_lcd example. * * \return Unused (ANSI-C compatibility). */ int main(void) { sysclk_init(); board_init(); /** Configura os botões, o TC e desabilita o Watchdog Timer. */ configure_buttons(); WDT->WDT_MR = WDT_MR_WDDIS; configure_tc(); /** Initialize debug console */ configure_console(); /** Enable peripheral clock */ pmc_enable_periph_clk(ID_SMC); /** Configure SMC interface for Lcd */ smc_set_setup_timing(SMC, ILI93XX_LCD_CS, SMC_SETUP_NWE_SETUP(2) | SMC_SETUP_NCS_WR_SETUP(2) | SMC_SETUP_NRD_SETUP(2) | SMC_SETUP_NCS_RD_SETUP(2)); smc_set_pulse_timing(SMC, ILI93XX_LCD_CS, SMC_PULSE_NWE_PULSE(4) | SMC_PULSE_NCS_WR_PULSE(4) | SMC_PULSE_NRD_PULSE(10) | SMC_PULSE_NCS_RD_PULSE(10)); smc_set_cycle_timing(SMC, ILI93XX_LCD_CS, SMC_CYCLE_NWE_CYCLE(10) | SMC_CYCLE_NRD_CYCLE(22)); #if ((!defined(SAM4S)) && (!defined(SAM4E))) smc_set_mode(SMC, ILI93XX_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE | SMC_MODE_DBW_8_BIT); #else smc_set_mode(SMC, ILI93XX_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE); #endif /** Initialize display parameter */ g_ili93xx_display_opt.ul_width = ILI93XX_LCD_WIDTH; g_ili93xx_display_opt.ul_height = ILI93XX_LCD_HEIGHT; g_ili93xx_display_opt.foreground_color = COLOR_BLACK; g_ili93xx_display_opt.background_color = COLOR_WHITE; /** Switch off backlight */ aat31xx_disable_backlight(); /** Initialize LCD */ ili93xx_init(&g_ili93xx_display_opt); /** Set backlight level */ aat31xx_set_backlight(AAT31XX_AVG_BACKLIGHT_LEVEL); ili93xx_set_foreground_color(COLOR_WHITE); ili93xx_draw_filled_rectangle(0, 0, ILI93XX_LCD_WIDTH, ILI93XX_LCD_HEIGHT); /** Turn on LCD */ ili93xx_display_on(); ili93xx_set_cursor_position(0, 0); /** Escreve os nomes no display. */ ili93xx_set_foreground_color(COLOR_BLACK); ili93xx_draw_string(10, 20, (uint8_t *)"Bruna Tavares"); ili93xx_draw_string(10, 40, (uint8_t *)"Bruno Campos"); ili93xx_draw_string(10, 60, (uint8_t *)"Keneth Yamada"); /** Desenha linha */ ili93xx_set_foreground_color(COLOR_BLUEVIOLET); ili93xx_draw_line(0, 90, 240, 90); /** Escreve contador e tempo no display. */ ili93xx_set_foreground_color(COLOR_BLACK); ili93xx_draw_string(10, 110, (uint8_t *)"Contador"); ili93xx_draw_string(10, 300, (uint8_t *)"Tempo "); /** Escreve valores iniciais do contador. */ ili93xx_draw_string(130, 110, (uint8_t *)"000"); ili93xx_draw_string(140, 300, (uint8_t *)"00:00"); while (1) { // Coloca o microcontrolador em modo Sleep aguardando interrupções. pmc_sleep(SAM_PM_SMODE_SLEEP_WFI); } }
/*! \brief Main function. Execution starts here. */ int main(void) { uint32_t serial_number[4]; // Read Device-ID from SAM3U. Do this before enabling interrupts etc. flash_read_unique_id(serial_number, sizeof(serial_number)); configure_console(); irq_initialize_vectors(); cpu_irq_enable(); // Initialize the sleep manager sleepmgr_init(); #if !SAMD21 && !SAMR21 sysclk_init(); board_init(); #else system_init(); #endif fpga_program_init(); tps56520_init(); //Init CDCE906 Chip cdce906_init(); //Convert serial number to ASCII for USB Serial number for(unsigned int i = 0; i < 4; i++){ sprintf(usb_serial_number+(i*8), "%08x", (unsigned int)serial_number[i]); } usb_serial_number[32] = 0; printf("ChipWhisperer-CW305 Online. Firmware build: %s/%s\n", __TIME__, __DATE__); printf("Serial number: %s\n", usb_serial_number); /* Enable SMC */ pmc_enable_periph_clk(ID_SMC); fpga_pins(true); /* Configure EBI I/O for PSRAM connection */ printf("Setting up FPGA Communication\n"); /* complete SMC configuration between PSRAM and SMC waveforms. */ smc_set_setup_timing(SMC, 0, SMC_SETUP_NWE_SETUP(0) | SMC_SETUP_NCS_WR_SETUP(1) | SMC_SETUP_NRD_SETUP(1) | SMC_SETUP_NCS_RD_SETUP(1)); smc_set_pulse_timing(SMC, 0, SMC_PULSE_NWE_PULSE(3) | SMC_PULSE_NCS_WR_PULSE(1) | SMC_PULSE_NRD_PULSE(3) | SMC_PULSE_NCS_RD_PULSE(1)); smc_set_cycle_timing(SMC, 0, SMC_CYCLE_NWE_CYCLE(4) | SMC_CYCLE_NRD_CYCLE(4)); smc_set_mode(SMC, 0, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE | SMC_MODE_DBW_BIT_8); ui_init(); // Start USB stack to authorize VBus monitoring udc_start(); /* Enable PCLK0 at 96 MHz */ genclk_enable_config(GENCLK_PCK_0, GENCLK_PCK_SRC_MCK, GENCLK_PCK_PRES_1); //Following is 60MHz version //genclk_enable_config(GENCLK_PCK_0, GENCLK_PCK_SRC_PLLBCK, GENCLK_PCK_PRES_4); printf("Event Loop Entered, waiting...\n"); //Turn off FPGA pins for now, will be enabled in event loop fpga_pins(false); // The main loop manages only the power mode // because the USB management is done by interrupt while (true) { sleepmgr_enter_sleep(); process_events(); } }
/** * \brief Application entry point for smc_lcd example. * * \return Unused (ANSI-C compatibility). */ int main(void) { sysclk_init(); board_init(); /** Initialize debug console */ configure_console(); /** Enable peripheral clock */ pmc_enable_periph_clk(ID_SMC); /** Configure SMC interface for Lcd */ smc_set_setup_timing(SMC, ILI93XX_LCD_CS, SMC_SETUP_NWE_SETUP(2) | SMC_SETUP_NCS_WR_SETUP(2) | SMC_SETUP_NRD_SETUP(2) | SMC_SETUP_NCS_RD_SETUP(2)); smc_set_pulse_timing(SMC, ILI93XX_LCD_CS, SMC_PULSE_NWE_PULSE(4) | SMC_PULSE_NCS_WR_PULSE(4) | SMC_PULSE_NRD_PULSE(10) | SMC_PULSE_NCS_RD_PULSE(10)); smc_set_cycle_timing(SMC, ILI93XX_LCD_CS, SMC_CYCLE_NWE_CYCLE(10) | SMC_CYCLE_NRD_CYCLE(22)); #if ((!defined(SAM4S)) && (!defined(SAM4E))) smc_set_mode(SMC, ILI93XX_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE | SMC_MODE_DBW_8_BIT); #else smc_set_mode(SMC, ILI93XX_LCD_CS, SMC_MODE_READ_MODE | SMC_MODE_WRITE_MODE); #endif /** Initialize display parameter */ g_ili93xx_display_opt.ul_width = ILI93XX_LCD_WIDTH; g_ili93xx_display_opt.ul_height = ILI93XX_LCD_HEIGHT; g_ili93xx_display_opt.foreground_color = COLOR_BLACK; g_ili93xx_display_opt.background_color = COLOR_WHITE; /** Switch off backlight */ aat31xx_disable_backlight(); /** Initialize LCD */ ili93xx_init(&g_ili93xx_display_opt); /** Set backlight level */ aat31xx_set_backlight(AAT31XX_AVG_BACKLIGHT_LEVEL); ili93xx_set_foreground_color(COLOR_WHITE); ili93xx_draw_filled_rectangle(0, 0, ILI93XX_LCD_WIDTH, ILI93XX_LCD_HEIGHT); /** Turn on LCD */ ili93xx_display_on(); ili93xx_set_cursor_position(0, 0); /** Draw text, image and basic shapes on the LCD */ ili93xx_set_foreground_color(COLOR_BLACK); ili93xx_draw_string(10, 20, (uint8_t *)"ili93xx_lcd example"); ili93xx_set_foreground_color(COLOR_RED); ili93xx_draw_circle(60, 160, 40); ili93xx_set_foreground_color(COLOR_GREEN); ili93xx_draw_circle(120, 160, 40); ili93xx_set_foreground_color(COLOR_BLUE); ili93xx_draw_circle(180, 160, 40); ili93xx_set_foreground_color(COLOR_VIOLET); ili93xx_draw_line(0, 0, 240, 320); while (1) { } }