From ff676aee33d4061e9d8186a15ad72c78fa1466a0 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Mon, 28 Mar 2011 15:32:56 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2848 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/dox/adc.dox | 4 +- os/hal/dox/can.dox | 4 +- os/hal/dox/gpt.dox | 7 ++-- os/hal/dox/hal.dox | 21 +++++----- os/hal/dox/i2c.dox | 5 ++- os/hal/dox/icu.dox | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++ os/hal/dox/pwm.dox | 3 +- os/hal/dox/spi.dox | 6 +-- os/hal/dox/uart.dox | 4 +- os/hal/dox/usb.dox | 4 +- 10 files changed, 146 insertions(+), 27 deletions(-) create mode 100644 os/hal/dox/icu.dox (limited to 'os/hal/dox') diff --git a/os/hal/dox/adc.dox b/os/hal/dox/adc.dox index f5b83532d..0d6770f64 100644 --- a/os/hal/dox/adc.dox +++ b/os/hal/dox/adc.dox @@ -21,8 +21,8 @@ /** * @defgroup ADC ADC Driver * @brief Generic ADC Driver. - * @details This module implements a generic ADC driver supporting a - * variety of buffer and conversion modes. + * @details This module implements a generic ADC (Analog to Digital Converter) + * driver supporting a variety of buffer and conversion modes. * @pre In order to use the ADC driver the @p HAL_USE_ADC option * must be enabled in @p halconf.h. * diff --git a/os/hal/dox/can.dox b/os/hal/dox/can.dox index f32630442..1a0c81c0d 100644 --- a/os/hal/dox/can.dox +++ b/os/hal/dox/can.dox @@ -21,8 +21,8 @@ /** * @defgroup CAN CAN Driver * @brief Generic CAN Driver. - * @details This module implements a generic CAN driver allowing the exchange - * of information at frame level. + * @details This module implements a generic CAN (Controller Area Network) + * driver allowing the exchange of information at frame level. * @pre In order to use the CAN driver the @p HAL_USE_CAN option * must be enabled in @p halconf.h. * diff --git a/os/hal/dox/gpt.dox b/os/hal/dox/gpt.dox index 203f7a647..d51ad6af3 100644 --- a/os/hal/dox/gpt.dox +++ b/os/hal/dox/gpt.dox @@ -21,9 +21,10 @@ /** * @defgroup GPT GPT Driver * @brief Generic GPT Driver. - * @details This module implements a generic timer driver. The timer can be - * programmed in order to trigger callbacks after a specified time - * period or continuously with a specified interval. + * @details This module implements a generic GPT (General Purpose Timer) + * driver. The timer can be programmed in order to trigger callbacks + * after a specified time period or continuously with a specified + * interval. * @pre In order to use the GPT driver the @p HAL_USE_GPT option * must be enabled in @p halconf.h. * diff --git a/os/hal/dox/hal.dox b/os/hal/dox/hal.dox index d08f10bcd..15b4401fb 100644 --- a/os/hal/dox/hal.dox +++ b/os/hal/dox/hal.dox @@ -20,16 +20,17 @@ /** * @defgroup HAL HAL Driver - * @brief Hardware Abstraction Layer. - * @details The HAL driver performs the system initialization and includes - * the platform support code shared by the other drivers. This driver does - * contain any API function except for a general initialization function - * @p halInit() that must be invoked before any HAL service can be used, - * usually the HAL initialization should be performed immediately before the - * kernel initialization.
- * Some HAL driver implementations also offer a custom early clock - * setum function that can be invoked before the C runtime initialization - * in order to accellerate the startup time. + * @brief Hardware Abstraction Layer. + * @details The HAL (Hardware Abstraction Layer) driver performs the system + * initialization and includes the platform support code shared by + * the other drivers. This driver does contain any API function + * except for a general initialization function @p halInit() that + * must be invoked before any HAL service can be used, usually the + * HAL initialization should be performed immediately before the + * kernel initialization.
+ * Some HAL driver implementations also offer a custom early clock + * setup function that can be invoked before the C runtime + * initialization in order to accelerate the startup time. * * @ingroup IO */ diff --git a/os/hal/dox/i2c.dox b/os/hal/dox/i2c.dox index 391fbb62e..1ffd2da47 100644 --- a/os/hal/dox/i2c.dox +++ b/os/hal/dox/i2c.dox @@ -20,8 +20,9 @@ /** * @defgroup I2C I2C Driver - * @brief Generic I2C Driver. - * @details This module implements a generic I2C driver. + * @brief Generic I2C Driver. + * @details This module implements a generic I2C (Inter-Integrated Circuit) + * driver. * @pre In order to use the I2C driver the @p HAL_USE_I2C option * must be enabled in @p halconf.h. * diff --git a/os/hal/dox/icu.dox b/os/hal/dox/icu.dox new file mode 100644 index 000000000..c90dc237d --- /dev/null +++ b/os/hal/dox/icu.dox @@ -0,0 +1,115 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * @defgroup ICU ICU Driver + * @brief Generic ICU Driver. + * @details This module implements a generic ICU (Input Capture Unit) driver. + * @pre In order to use the ICU driver the @p HAL_USE_ICU option + * must be enabled in @p halconf.h. + * + * @section icu_1 Driver State Machine + * The driver implements a state machine internally, not all the driver + * functionalities can be used in any moment, any transition not explicitly + * shown in the following diagram has to be considered an error and shall + * be captured by an assertion (if enabled). + * @if LATEX_PDF + * @dot + digraph example { + size="5, 7"; + rankdir="LR"; + + node [shape=circle, fontname=Sans, fontsize=8, fixedsize="true", width="0.9", height="0.9"]; + edge [fontname=Sans, fontsize=8]; + + stop [label="ICU_STOP\nLow Power"]; + uninit [label="ICU_UNINIT", style="bold"]; + ready [label="ICU_READY\nClock Enabled"]; + waiting [label="ICU_WAITING"]; + active [label="ICU_ACTIVE"]; + idle [label="ICU_IDLE"]; + + uninit -> stop [label=" icuInit()", constraint=false]; + stop -> stop [label="\nicuStop()"]; + stop -> ready [label="\nicuStart()"]; + ready -> stop [label="\nicuStop()"]; + ready -> ready [label="\nicuStart()\nicuDisable()"]; + ready -> waiting [label="\nicuEnable()"]; + waiting -> active [label="\nStart Front"]; + waiting -> ready [label="\nicuDisable()"]; + active -> idle [label="\nStop Front\n>width_cb<"]; + active -> ready [label="\nicuDisable()\nicuDisableI()"]; + idle -> active [label="\nStart Front\n>period_cb<"]; + idle -> ready [label="\nicuDisable()\nicuDisableI()"]; + } + * @enddot + * @else + * @dot + digraph example { + rankdir="LR"; + + node [shape=circle, fontname=Sans, fontsize=8, fixedsize="true", width="0.9", height="0.9"]; + edge [fontname=Sans, fontsize=8]; + + stop [label="ICU_STOP\nLow Power"]; + uninit [label="ICU_UNINIT", style="bold"]; + ready [label="ICU_READY\nClock Enabled"]; + waiting [label="ICU_WAITING"]; + active [label="ICU_ACTIVE"]; + idle [label="ICU_IDLE"]; + + uninit -> stop [label=" icuInit()", constraint=false]; + stop -> stop [label="\nicuStop()"]; + stop -> ready [label="\nicuStart()"]; + ready -> stop [label="\nicuStop()"]; + ready -> ready [label="\nicuStart()\nicuDisable()"]; + ready -> waiting [label="\nicuEnable()"]; + waiting -> active [label="\nStart Front"]; + waiting -> ready [label="\nicuDisable()"]; + active -> idle [label="\nStop Front\n>width_cb<"]; + active -> ready [label="\nicuDisable()\nicuDisableI()"]; + idle -> active [label="\nStart Front\n>period_cb<"]; + idle -> ready [label="\nicuDisable()\nicuDisableI()"]; + } + * @enddot + * @endif + * + * @section icu_2 ICU Operations. + * This driver abstracts a generic Input Capture Unit composed of: + * - A clock prescaler. + * - A main up counter. + * - Two capture registers triggered by the rising and falling edges on + * the sampled input. + * . + * The ICU unit can be programmed to synchronize on the rising or falling + * edge of the sample input: + * - ICU_INPUT_ACTIVE_HIGH, a rising edge is the start signal. + * - ICU_INPUT_ACTIVE_LOW, a falling edge is the start signal. + * . + * After the activation the ICU unit can be in one of the following + * states at any time: + * - ICU_WAITING, waiting the first start signal. + * - ICU_ACTIVE, after a start signal. + * - ICU_IDLE, after a stop signal. + * . + * Callbacks are invoked when start or stop signals occur. + * + * @ingroup IO + */ diff --git a/os/hal/dox/pwm.dox b/os/hal/dox/pwm.dox index 3f2bdfd71..fbf61ca9f 100644 --- a/os/hal/dox/pwm.dox +++ b/os/hal/dox/pwm.dox @@ -21,7 +21,8 @@ /** * @defgroup PWM PWM Driver * @brief Generic PWM Driver. - * @details This module implements a generic PWM driver. + * @details This module implements a generic PWM (Pulse Width Modulation) + * driver. * @pre In order to use the PWM driver the @p HAL_USE_PWM option * must be enabled in @p halconf.h. * diff --git a/os/hal/dox/spi.dox b/os/hal/dox/spi.dox index cd462b8ae..047ff646e 100644 --- a/os/hal/dox/spi.dox +++ b/os/hal/dox/spi.dox @@ -21,9 +21,9 @@ /** * @defgroup SPI SPI Driver * @brief Generic SPI Driver. - * @details This module implements a generic SPI driver allowing bidirectional - * and monodirectional transfers, complex atomic transactions are - * supported as well. + * @details This module implements a generic SPI (Serial Peripheral Interface) + * driver allowing bidirectional and monodirectional transfers, + * complex atomic transactions are supported as well. * @pre In order to use the SPI driver the @p HAL_USE_SPI option * must be enabled in @p halconf.h. * diff --git a/os/hal/dox/uart.dox b/os/hal/dox/uart.dox index fe7a31534..7fea38dcb 100644 --- a/os/hal/dox/uart.dox +++ b/os/hal/dox/uart.dox @@ -21,8 +21,8 @@ /** * @defgroup UART UART Driver * @brief Generic UART Driver. - * @details This driver abstracts a generic UART peripheral, the API is - * designed to be: + * @details This driver abstracts a generic UART (Universal Asynchronous + * Receiver Transmitter) peripheral, the API is designed to be: * - Unbuffered and copy-less, transfers are always directly performed * from/to the application-level buffers without extra copy * operations. diff --git a/os/hal/dox/usb.dox b/os/hal/dox/usb.dox index ebf2042a0..62b3aaf12 100644 --- a/os/hal/dox/usb.dox +++ b/os/hal/dox/usb.dox @@ -21,8 +21,8 @@ /** * @defgroup USB USB Driver * @brief Generic USB Driver. - * @details This module implements a generic USB driver supporting device-mode - * operations. + * @details This module implements a generic USB (Universal Serial Bus) driver + * supporting device-mode operations. * @pre In order to use the USB driver the @p HAL_USE_USB option * must be enabled in @p halconf.h. * -- cgit v1.2.3