main.c File Reference


Detailed Description

Main file of the USB Full custom example.

Author:
Atmel Corporation: http://www.atmel.com
Support and FAQ: http://support.atmel.no/

Definition in file main.c.

#include <stdio.h>
#include "conf_usb.h"
#include "usb_descriptors.h"
#include "compiler.h"
#include "preprocessor.h"
#include "board.h"
#include "print_funcs.h"
#include "intc.h"
#include "pm.h"
#include "gpio.h"
#include "ctrl_access.h"
#include "conf_at45dbx.h"
#include "usb_task.h"
#include "device_ctrl_panel_task.h"
#include "device_mass_storage_task.h"
#include "FreeRTOS.h"
#include "task.h"

Go to the source code of this file.

Defines

#define AT45DBX_ENABLE_NPCS_PIN(NPCS, unused)   {AT45DBX_SPI_NPCS##NPCS##_PIN, AT45DBX_SPI_NPCS##NPCS##_FUNCTION},
#define CRLF   "\r\n"

Functions

static void at45dbx_resources_init (void)
 Initializes AT45DBX resources: GPIO, SPI and AT45DBX.
int main (void)
 Starts the generation of a 48-MHz clock for the USB.

Variables

const char *const pcCtrlPanelVersion = "GCC "__VERSION__" "__DATE__" "__TIME__" ATMEL_CONTROLPANEL_AVR32_UC3_10000"CRLF


Define Documentation

#define AT45DBX_ENABLE_NPCS_PIN ( NPCS,
unused   )     {AT45DBX_SPI_NPCS##NPCS##_PIN, AT45DBX_SPI_NPCS##NPCS##_FUNCTION},

Referenced by at45dbx_resources_init().

#define CRLF   "\r\n"

Definition at line 80 of file main.c.


Function Documentation

static void at45dbx_resources_init ( void   )  [static]

Initializes AT45DBX resources: GPIO, SPI and AT45DBX.

Definition at line 98 of file main.c.

References AT45DBX_ENABLE_NPCS_PIN, AT45DBX_MEM_CNT, AT45DBX_SPI_BITS, AT45DBX_SPI_FIRST_NPCS, and AT45DBX_SPI_MASTER_SPEED.

Referenced by main().

00099 {
00100   static const gpio_map_t AT45DBX_SPI_GPIO_MAP =
00101   {
00102     {AT45DBX_SPI_SCK_PIN,          AT45DBX_SPI_SCK_FUNCTION         },  // SPI Clock.
00103     {AT45DBX_SPI_MISO_PIN,         AT45DBX_SPI_MISO_FUNCTION        },  // MISO.
00104     {AT45DBX_SPI_MOSI_PIN,         AT45DBX_SPI_MOSI_FUNCTION        },  // MOSI.
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   // SPI options.
00112   spi_options_t spiOptions =
00113   {
00114     .reg          = AT45DBX_SPI_FIRST_NPCS,   // Defined in conf_at45dbx.h.
00115     .baudrate     = AT45DBX_SPI_MASTER_SPEED, // Defined in conf_at45dbx.h.
00116     .bits         = AT45DBX_SPI_BITS,         // Defined in conf_at45dbx.h.
00117     .spck_delay   = 0,
00118     .trans_delay  = 0,
00119     .stay_act     = 1,
00120     .spi_mode     = 0,
00121     .modfdis      = 1
00122   };
00123 
00124   // Assign I/Os to SPI.
00125   gpio_enable_module(AT45DBX_SPI_GPIO_MAP,
00126                      sizeof(AT45DBX_SPI_GPIO_MAP) / sizeof(AT45DBX_SPI_GPIO_MAP[0]));
00127 
00128   // Initialize as master.
00129   spi_initMaster(AT45DBX_SPI, &spiOptions);
00130 
00131   // Set selection mode: variable_ps, pcs_decode, delay.
00132   spi_selectionMode(AT45DBX_SPI, 0, 0, 0);
00133 
00134   // Enable SPI.
00135   spi_enable(AT45DBX_SPI);
00136 
00137   // Initialize data flash with SPI clock Osc0.
00138   at45dbx_init(spiOptions, FOSC0);
00139 }

int main ( void   ) 

Starts the generation of a 48-MHz clock for the USB.

Main function. Execution starts here.

Return values:
42 Fatal error.

Definition at line 151 of file main.c.

References at45dbx_resources_init(), device_full_custom_task_init(), device_mass_storage_task_init(), and pcCtrlPanelVersion.

00152 {
00153   // Switch main clock from internal RC to external Oscillator 0
00154   pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);
00155 
00156   // Start Debug RS232 on USART_1
00157   init_dbg_rs232(FOSC0);
00158 
00159 #if (AT45DBX_MEM==ENABLE) &&( EVK1101_CTRL_PANEL_PID==EVK1101_CTRL_PANEL_DEMO_HID_MS_PID )
00160   // This ressource is used by the mass storage device task
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 }


Variable Documentation

const char* const pcCtrlPanelVersion = "GCC "__VERSION__" "__DATE__" "__TIME__" ATMEL_CONTROLPANEL_AVR32_UC3_10000"CRLF

Definition at line 83 of file main.c.

Referenced by main().


Generated on Fri Feb 19 02:22:52 2010 for AVR32 - Control Panel demonstration. by  doxygen 1.5.5