00001
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 #include <stdio.h>
00049 #include "conf_usb.h"
00050 #include "usb_descriptors.h"
00051 #include "compiler.h"
00052 #include "preprocessor.h"
00053 #include "board.h"
00054 #include "print_funcs.h"
00055 #include "intc.h"
00056 #include "pm.h"
00057 #include "gpio.h"
00058 #if( EVK1101_CTRL_PANEL_PID==EVK1101_CTRL_PANEL_DEMO_HID_MS_PID )
00059 # include "ctrl_access.h"
00060 #endif
00061 #if (AT45DBX_MEM==ENABLE) &&( EVK1101_CTRL_PANEL_PID==EVK1101_CTRL_PANEL_DEMO_HID_MS_PID )
00062 # include "conf_at45dbx.h"
00063 #endif
00064 #include "usb_task.h"
00065 #if USB_DEVICE_FEATURE == ENABLED
00066 # include "device_ctrl_panel_task.h"
00067 # if( EVK1101_CTRL_PANEL_PID==EVK1101_CTRL_PANEL_DEMO_HID_MS_PID )
00068 # include "device_mass_storage_task.h"
00069 # endif
00070 #endif
00071 #include "FreeRTOS.h"
00072 #include "task.h"
00073
00074
00075
00076
00077
00078
00079
00080 #define CRLF "\r\n"
00081
00082 #if __GNUC__
00083 const char *const pcCtrlPanelVersion = "GCC "__VERSION__" "__DATE__" "__TIME__" ATMEL_CONTROLPANEL_AVR32_UC3_10000"CRLF;
00084 #elif __ICCAVR32__
00085 const char *const pcCtrlPanelVersion = "IAR "ASTRINGZ(__VER__)"A "__DATE__" "__TIME__" ATMEL_CONTROLPANEL_AVR32_UC3_10000"CRLF;
00086 #endif
00087
00088
00089
00090
00091
00092
00093
00094 #if (AT45DBX_MEM==ENABLE) &&( EVK1101_CTRL_PANEL_PID==EVK1101_CTRL_PANEL_DEMO_HID_MS_PID )
00095
00098 static void at45dbx_resources_init(void)
00099 {
00100 static const gpio_map_t AT45DBX_SPI_GPIO_MAP =
00101 {
00102 {AT45DBX_SPI_SCK_PIN, AT45DBX_SPI_SCK_FUNCTION },
00103 {AT45DBX_SPI_MISO_PIN, AT45DBX_SPI_MISO_FUNCTION },
00104 {AT45DBX_SPI_MOSI_PIN, AT45DBX_SPI_MOSI_FUNCTION },
00105 #define AT45DBX_ENABLE_NPCS_PIN(NPCS, unused) \
00106 {AT45DBX_SPI_NPCS##NPCS##_PIN, AT45DBX_SPI_NPCS##NPCS##_FUNCTION}, // Chip Select NPCS.
00107 MREPEAT(AT45DBX_MEM_CNT, AT45DBX_ENABLE_NPCS_PIN, ~)
00108 #undef AT45DBX_ENABLE_NPCS_PIN
00109 };
00110
00111
00112 spi_options_t spiOptions =
00113 {
00114 .reg = AT45DBX_SPI_FIRST_NPCS,
00115 .baudrate = AT45DBX_SPI_MASTER_SPEED,
00116 .bits = AT45DBX_SPI_BITS,
00117 .spck_delay = 0,
00118 .trans_delay = 0,
00119 .stay_act = 1,
00120 .spi_mode = 0,
00121 .modfdis = 1
00122 };
00123
00124
00125 gpio_enable_module(AT45DBX_SPI_GPIO_MAP,
00126 sizeof(AT45DBX_SPI_GPIO_MAP) / sizeof(AT45DBX_SPI_GPIO_MAP[0]));
00127
00128
00129 spi_initMaster(AT45DBX_SPI, &spiOptions);
00130
00131
00132 spi_selectionMode(AT45DBX_SPI, 0, 0, 0);
00133
00134
00135 spi_enable(AT45DBX_SPI);
00136
00137
00138 at45dbx_init(spiOptions, FOSC0);
00139 }
00140
00141 #endif // AT45DBX_MEM == ENABLE
00142
00143
00151 int main(void)
00152 {
00153
00154 pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);
00155
00156
00157 init_dbg_rs232(FOSC0);
00158
00159 #if (AT45DBX_MEM==ENABLE) &&( EVK1101_CTRL_PANEL_PID==EVK1101_CTRL_PANEL_DEMO_HID_MS_PID )
00160
00161 at45dbx_resources_init();
00162 #endif
00163
00164 #if( EVK1101_CTRL_PANEL_PID==EVK1101_CTRL_PANEL_DEMO_HID_MS_PID )
00165 if (!ctrl_access_init())
00166 {
00167 portDBG_TRACE("The module CTRL_ACCESS could not be initialized.");
00168 return 42;
00169 }
00170 #endif
00171
00172 pm_configure_usb_clock();
00173 usb_task_init();
00174
00175 #if USB_DEVICE_FEATURE == ENABLED
00176 device_full_custom_task_init();
00177 #if( EVK1101_CTRL_PANEL_PID==EVK1101_CTRL_PANEL_DEMO_HID_MS_PID )
00178 device_mass_storage_task_init();
00179 #endif
00180 #endif
00181
00182 portDBG_TRACE("AVR UC3B Control Panel Firmware.");
00183 portDBG_TRACE(pcCtrlPanelVersion);
00184 vTaskStartScheduler();
00185 portDBG_TRACE("FreeRTOS returned.");
00186 return 42;
00187 }