summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/mainpage.dox
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/mainpage.dox')
-rw-r--r--FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/mainpage.dox197
1 files changed, 197 insertions, 0 deletions
diff --git a/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/mainpage.dox b/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/mainpage.dox
new file mode 100644
index 000000000..a2a8664cb
--- /dev/null
+++ b/FreeRTOS/Demo/AVR_ATmega328PB_Xplained_mini_GCC/RTOSDemo/doxygen/mainpage.dox
@@ -0,0 +1,197 @@
+/**
+\mainpage
+
+\section doc_driver_mainpage_intro Introduction
+
+AVR Code is a software library containing drivers, middleware and
+applications for AVR microcontrollers. START, a web-based
+GUI, is used to generate C-code according to the user's needs.
+
+In START, the user selects the device for which to generate code.
+Thereafter, the user selects the driver and middleware components
+that he wants to include in the project. As an example, the user
+may choose the device Tiny817, and add the USART and SPI driver.
+The user can use START to configure the detailed behaviour of the
+drivers, and configure the device's clock system and I/O pins.
+Finally, the user exports the project as an atzip-file, which
+can be opened in Studio or IAR Embedded Workbench. The
+project contains:
+- C and assembly files that can be compiled using the GCC
+or IAR compilers.
+- A directory with doxygen-files documenting the drivers included in the project.
+The doxygen-files can be built into a HTML-document by executing the
+command *doxygen doxyfile.doxygen* on a computer where doxygen is installed.
+The file *doxyfile.doxygen* is found in the *doxygen/generator* directory in
+the atzip-file.
+- Example code documenting the usage of the configured drivers
+
+\section doc_driver_mainpage_driver_overview Driver Overview
+
+After the user has selected a device to configure, he will be able
+to add and configure drivers and middleware available for that
+device. In START, drivers are grouped by functionality, such as
+SPI, USART or Timer. After adding desired functionality, such as
+SPI, the user can configure the SPI function. This includes selecting:
+
+- which hardware instance to use for implementing the functionality
+- which driver to use for implementing the functionality
+
+The devices may have several SPI hardware modules,
+or may implement SPI functions through other hardware modules,
+such as USART.
+
+The combination of hardware and driver is given by the notation
+
+Drivers:*Hardware*:*Driver_name*
+
+where *Hardware* identifies the hardware the driver uses, and *Driver_name*
+is the name of the driver. An example: *Drivers:TCB:Timeout* is the *Timeout*
+driver running on an instance of timer TCB.
+
+
+\section doc_driver_mainpage_configuring Configuring Drivers and Middleware
+
+In general, functionality such as SPI is supported through multiple drivers.
+Providing multiple drivers allows the user to select the flavor best suited to
+his application: He may choose a simple but small SPI driver if this suits his
+application, or a more complex but larger SPI driver if advanced SPI
+functionality is needed.
+
+In general, each peripheral has at least the following drivers:
+- Init: Performs device initialization only, based on the
+ configuration the user selected in START. No API functions other
+ than init() is provided
+- Basic : Basic functionality, provides an init-function and other
+ functions allowing the user to use basic functionality of the peripheral.
+ The Basic drivers are intended to cover functionality commonly found on
+ all hardware implementations, and are therefore very portable across
+ different devices. Typical examples of basic functions for an USART is to send
+ and receive bytes, either in polled or interrupt driven mode.
+
+
+\section doc_driver_mainpage_usage Using the generated code
+
+A project exported from START contains the drivers that the user
+configured, along with a main.c-file that only initializes the drivers and
+peripherals. The user will usually have to add code to main() in main.c
+in order for the code to do something useful.
+
+The example code in the examples directory can be used as a starting point in
+order to learn how to use the drivers and their API. The examples are in the form
+of functions that can be called directly from main().
+
+The generated drivers may use interrupt requests to communicate with hardware.
+The user code must normally enable global interrupts (using ENABLE_INTERRUPTS())
+in order for these interrupts to be serviced. The drivers usually do not
+enable global interrupts as part of their initialization.
+
+
+\section doc_driver_mainpage_documentation Documentation of Drivers and Middleware
+
+Drivers and middlewares are documented using Doxygen. Doxygen comments are
+embedded into the exported C-code. In addition, exported projects have
+a *doxygen* folder containing doxygen files with additional documentation.
+
+The user must generate the doxygen documentation himself after exporting the
+project. This is done by going to the *doxygen/generator* directory and
+issuing the command *doxygen doxyfile.doxygen*. The doxygen application may need
+to be installed on your computer, the installer can be found on the internet.
+
+\subsection doc_driver_mainpage_documentation_user Documenting user code
+
+The user can use doxygen to document his own code together with the code
+generated by START. The file *doxygen/generator/doxyfile.doxygen* can
+be modified to include the user's own code in the generated documentation.
+Modify the tags *INPUT* and *FILE_PATTERNS* in the doxyfile to do this.
+Refer to the doxygen manual for more information.
+
+
+
+\section doc_driver_mainpage_output Generated Output
+
+START exports projects as an <PROJECTNAME>.atzip file. This is a regular
+zip-file which can be unzipped using standard unzip-tools. The contents
+of the atzip-file is of course dependent on the configuration done in START.
+Assume a typical project configured with PWM, SPI, TIMEOUT, TIMER and USART
+drivers. Unzipping the atzip-file, or opening it in one of the supported
+IDEs will reveal the following directory structure:
+
+\code
+MyProject/
+|-- atmel_start.c *Initializes MCU, drivers and middleware*
+|-- atmel_start_config.atstart *START-internal info on configuration of the project*
+|-- AtmelStart.env_conf *START-internal info on configuration of the project*
+|-- AtmelStart.gpdsc *START-internal info on configuration of the project*
+|-- atmel_start.h *Initializes MCU, drivers and middleware*
+|-- config
+| `-- clock_config.h *Definitions regarding the configured clock system*
+|-- doxygen *Doxygen-documentation of the project*
+| |-- generator
+| | |-- doxyfile.doxygen *Doxygen configuration information*
+| | `-- DoxygenLayout.xml *Doxygen layout information*
+| |-- mainpage.dox *Doxygen-documentation of the project*
+| |-- pwm.dox *Doxygen-documentation of the project*
+| |-- pwm_basic.dox *Doxygen-documentation of the project*
+| |-- spi_basic.dox *Doxygen-documentation of the project*
+| |-- spi.dox *Doxygen-documentation of the project*
+| |-- system.dox *Doxygen-documentation of the project*
+| |-- timeout.dox *Doxygen-documentation of the project*
+| |-- timer.dox *Doxygen-documentation of the project*
+| |-- usart_basic.dox *Doxygen-documentation of the project*
+| `-- usart.dox *Doxygen-documentation of the project*
+|-- driver_isr.c *Some drivers place their Interrupt Service Routines here*
+|-- examples *Code examples demonstrating using the drivers*
+| |-- include
+| | |-- adc_basic_example.h *Example using basic ADC driver*
+| | |-- pwm_basic_example.h *Example using basic PWM driver*
+| | |-- spi_basic_example.h *Example using basic SPI driver*
+| | |-- timeout_example.h *Example using timeout driver*
+| | `-- usart_basic_example.h *Example using basic USART driver*
+| |-- src
+| | |-- adc_basic_example.c *Example using basic ADC driver*
+| | |-- pwm_basic_example.c *Example using basic PWM driver*
+| | |-- spi_basic_example.c *Example using basic SPI driver*
+| | |-- timeout_example.c *Example using timeout driver*
+| | `-- usart_basic_example.c *Example using basic USART driver*
+|-- include
+| |-- atmel_start_pins.h *API for the I/O pins configured in START*
+| |-- bod.h *API for the BOD*
+| |-- ccp.h *API for the Configuration Change Protection*
+| |-- clkctrl.h *API for the Clock Controller*
+| |-- cpuint.h *API for the Interrupt Controller*
+| |-- driver_init.h *API for initialization of drivers and middleware*
+| |-- port.h *API for general use of I/O ports*
+| |-- pwm_basic.h *API for PWM driver*
+| |-- rstctrl.h *API for Reset Controller*
+| |-- slpctrl.h *API for Sleep Controller*
+| |-- spi_basic.h *API for basic SPI driver*
+| |-- system.h *API for general system control functions*
+| |-- timeout.h *API for Timeout driver*
+| `-- usart_basic.h *API for basic USART driver*
+|-- main.c *Main application. User adds his own code here*
+|-- src
+| |-- bod.c *API for the BOD*
+| |-- ccp.S *API for the Configuration Change Protection*
+| |-- clkctrl.c *API for the Clock Controller*
+| |-- cpuint.c *API for the Interrupt Controller*
+| |-- driver_init.c *API for initialization of drivers and middleware*
+| |-- pwm_basic.c *API for PWM driver*
+| |-- slpctrl.c *API for Sleep Controller*
+| |-- spi_basic.c *API for basic SPI driver*
+| |-- timeout.c *API for Timeout driver*
+| `-- usart_basic.c *API for basic USART driver*
+`-- utils
+ |-- assembler
+ | |-- gas.h *GNU Assembler specifics*
+ | `-- iar.h *IAR Assembler specifics*
+ |-- assembler.h *Assembler abstraction layer and utilities*
+ |-- atomic.h *Macros used for atomic memory access*
+ |-- compiler.h *Compiler abstraction layer and utilities*
+ |-- interrupt_avr8.h *Interrupt abstraction layer and utilities*
+ |-- utils_assert.h *Definitions for assert*
+ `-- utils.h *Various macros of general use*
+
+
+\endcode
+*/
+