From f5d6a078c744d81c0e1ceee7d6efeeba6a6c1037 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sun, 23 Aug 2009 12:02:42 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1104 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/ports/GCC/AVR/avr_serial.c | 185 ------------------------------------------ os/ports/GCC/AVR/avr_serial.h | 92 --------------------- os/ports/GCC/AVR/port.dox | 95 ---------------------- 3 files changed, 372 deletions(-) delete mode 100644 os/ports/GCC/AVR/avr_serial.c delete mode 100644 os/ports/GCC/AVR/avr_serial.h delete mode 100644 os/ports/GCC/AVR/port.dox (limited to 'os/ports') diff --git a/os/ports/GCC/AVR/avr_serial.c b/os/ports/GCC/AVR/avr_serial.c deleted file mode 100644 index de45d25c0..000000000 --- a/os/ports/GCC/AVR/avr_serial.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - ChibiOS/RT - Copyright (C) 2006-2007 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 . -*/ - -/** - * @file AVR/avr_serial.c - * @brief AVR Serial driver code. - * @addtogroup AVR_SERIAL - * @{ - */ - -#include - -#include "avr_serial.h" - -static void SetError(uint8_t sra, FullDuplexDriver *com) { - dflags_t sts = 0; - - if (sra & (1 << DOR)) - sts |= SD_OVERRUN_ERROR; - if (sra & (1 << UPE)) - sts |= SD_PARITY_ERROR; - if (sra & (1 << FE)) - sts |= SD_FRAMING_ERROR; - chSysLockFromIsr(); - chFDDAddFlagsI(com, sts); - chSysUnlockFromIsr(); -} - -#if USE_AVR_USART0 || defined(__DOXYGEN__) -/** @brief USART0 serial driver identifier.*/ -FullDuplexDriver SER1; - -static uint8_t ib1[SERIAL_BUFFERS_SIZE]; -static uint8_t ob1[SERIAL_BUFFERS_SIZE]; - -CH_IRQ_HANDLER(USART0_RX_vect) { - uint8_t sra; - - CH_IRQ_PROLOGUE(); - - sra = UCSR0A; - if (sra & ((1 << DOR) | (1 << UPE) | (1 << FE))) - SetError(sra, &SER1); - chSysLockFromIsr(); - chFDDIncomingDataI(&SER1, UDR0); - chSysUnlockFromIsr(); - - CH_IRQ_EPILOGUE(); -} - -CH_IRQ_HANDLER(USART0_UDRE_vect) { - msg_t b; - - CH_IRQ_PROLOGUE(); - - chSysLockFromIsr(); - b = chFDDRequestDataI(&SER1); - chSysUnlockFromIsr(); - if (b < Q_OK) - UCSR0B &= ~(1 << UDRIE); - else - UDR0 = b; - - CH_IRQ_EPILOGUE(); -} - -static void OutNotify1(void) { - - UCSR0B |= (1 << UDRIE); -} - -/** - * @brief USART0 setup. - * @details This function must be invoked with interrupts disabled. - * @param[in] brr the divider value as calculated by the @p UBRR() macro - * @param[in] csrc the value for the @p UCSR0C register - * @note Must be invoked with interrupts disabled. - * @note Does not reset the I/O queues. - */ -void usart0_setup(uint16_t brr, uint8_t csrc) { - - UBRR0L = brr; - UBRR0H = brr >> 8; - UCSR0A = 0; - UCSR0B = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE); - UCSR0C = csrc; -} -#endif /* USE_AVR_USART0 */ - -#if USE_AVR_USART1 || defined(__DOXYGEN__) -/** @brief USART1 serial driver identifier.*/ -FullDuplexDriver SER2; - -static uint8_t ib2[SERIAL_BUFFERS_SIZE]; -static uint8_t ob2[SERIAL_BUFFERS_SIZE]; - -CH_IRQ_HANDLER(USART1_RX_vect) { - uint8_t sra; - - CH_IRQ_PROLOGUE(); - - sra = UCSR1A; - if (sra & ((1 << DOR) | (1 << UPE) | (1 << FE))) - SetError(sra, &SER2); - chSysLockFromIsr(); - chFDDIncomingDataI(&SER2, UDR1); - chSysUnlockFromIsr(); - - CH_IRQ_EPILOGUE(); -} - -CH_IRQ_HANDLER(USART1_UDRE_vect) { - msg_t b; - - CH_IRQ_PROLOGUE(); - - chSysLockFromIsr(); - b = chFDDRequestDataI(&SER2); - chSysUnlockFromIsr(); - if (b < Q_OK) - UCSR1B &= ~(1 << UDRIE); - else - UDR1 = b; - - CH_IRQ_EPILOGUE(); -} - -static void OutNotify2(void) { - - UCSR1B |= (1 << UDRIE); -} - -/** - * @brief USART1 setup. - * @details This function must be invoked with interrupts disabled. - * @param[in] brr the divider value as calculated by the @p UBRR() macro - * @param[in] csrc the value for the @p UCSR1C register - * @note Must be invoked with interrupts disabled. - * @note Does not reset the I/O queues. - */ -void usart1_setup(uint16_t brr, uint8_t csrc) { - - UBRR1L = brr; - UBRR1H = brr >> 8; - UCSR1A = 0; - UCSR1B = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE); - UCSR1C = csrc; -} -#endif /* USE_AVR_USART1 */ - -/** - * @brief Serial driver initialization. - * @note The serial ports are initialized at @p 38400-8-N-1 by default. - */ -void serial_init(void) { - -#if USE_AVR_USART0 - /* I/O queues setup.*/ - chFDDInit(&SER1, ib1, sizeof ib1, NULL, ob1, sizeof ob1, OutNotify1); - usart0_setup(UBRR(DEFAULT_USART_BITRATE), (1 << UCSZ1) | (1 << UCSZ0)); -#endif - -#if USE_AVR_USART1 - chFDDInit(&SER2, ib2, sizeof ib2, NULL, ob2, sizeof ob2, OutNotify2); - usart1_setup(UBRR(DEFAULT_USART_BITRATE), (1 << UCSZ1) | (1 << UCSZ0)); -#endif -} - -/** @} */ diff --git a/os/ports/GCC/AVR/avr_serial.h b/os/ports/GCC/AVR/avr_serial.h deleted file mode 100644 index 5a96044fa..000000000 --- a/os/ports/GCC/AVR/avr_serial.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - ChibiOS/RT - Copyright (C) 2006-2007 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 . -*/ - -/** - * @file AVR/avr_serial.h - * @brief AVR Serial driver macros and structures. - * @addtogroup AVR_SERIAL - * @{ - */ - -#ifndef _AVR_SERIAL_H_ -#define _AVR_SERIAL_H_ - -/** - * @brief Serial buffers size. - * @details Configuration parameter, you can change the depth of the queue - * buffers depending on the requirements of your application. - * @note The default is 32 bytes for both the transmission and receive buffers. - */ -#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__) -#define SERIAL_BUFFERS_SIZE 32 -#endif - -/** - * @brief Default bit rate. - * @details Configuration parameter, at startup the UARTs are configured at - * this speed. - * @note It is possible to use @p SetUART() in order to change the working - * parameters at runtime. - */ -#if !defined(DEFAULT_USART_BITRATE) || defined(__DOXYGEN__) -#define DEFAULT_USART_BITRATE 38400 -#endif - - -/** - * @brief USART0 driver enable switch. - * @details If set to @p TRUE the support for USART0 is included. - * @note The default is @p FALSE. - */ -#if !defined(USE_AVR_USART0) || defined(__DOXYGEN__) -#define USE_AVR_USART0 FALSE -#endif - -/** - * @brief USART1 driver enable switch. - * @details If set to @p TRUE the support for USART1 is included. - * @note The default is @p TRUE. - */ -#if !defined(USE_AVR_USART1) || defined(__DOXYGEN__) -#define USE_AVR_USART1 TRUE -#endif - -/** - * @brief Macro for baud rate computation. - * @note Make sure the final baud rate is within tolerance. - */ -#define UBRR(b) ((F_CPU / (b << 4)) - 1) - -#ifdef __cplusplus -extern "C" { -#endif - void serial_init(void); - void usart0_setup(uint16_t brr, uint8_t csrc); - void usart1_setup(uint16_t brr, uint8_t csrc); -#ifdef __cplusplus -} -#endif - -/** @cond never*/ -extern FullDuplexDriver SER1, SER2; -/** @endcond*/ - -#endif /* _AVR_SERIAL_H_ */ - -/** @} */ diff --git a/os/ports/GCC/AVR/port.dox b/os/ports/GCC/AVR/port.dox deleted file mode 100644 index 90f7970b5..000000000 --- a/os/ports/GCC/AVR/port.dox +++ /dev/null @@ -1,95 +0,0 @@ -/* - ChibiOS/RT - Copyright (C) 2006-2007 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 AVR MegaAVR - * @details AVR port details. This section how the ChibiOS/RT features are - * implemented on this architecture. - * - * @section AVR_STATES Mapping of the System States in the AVR port - * The ChibiOS/RT logical @ref system_states are mapped as follow in the AVR - * port: - * - Init. This state is represented by the startup code and the - * initialization code before @p chSysInit() is executed. It has not a - * special hardware state associated. - * - Normal. This is the state the system has after executing - * @p chSysInit(). Interrupts are enabled. - * - Suspended. Interrupts are disabled. - * - Disabled. Interrupts are enabled. This state is equivalent to the - * Suspended state because there are no fast interrupts in this architecture. - * - Sleep. This state is entered with the execution of the specific - * instruction @p sleep. - * - S-Locked. Interrupts are disabled. - * - I-Locked. This state is equivalent to the SRI state, the - * @p chSysLockI() and @p chSysUnlockI() APIs do nothing (still use them in - * order to formally change state because this may change). - * - Serving Regular Interrupt. Normal interrupt service code. - * - Serving Fast Interrupt. Not present in this architecture. - * - Serving Non-Maskable Interrupt. Not present in this architecture. - * - Halted. Implemented as an infinite loop with interrupts disabled. - * . - * @section AVR_NOTES The AVR port notes - * - The AVR does not have a dedicated interrupt stack, make sure to reserve - * enough stack space for interrupts in each thread stack. This can be done - * by modifying the @p INT_REQUIRED_STACK macro into - * ./ports/AVR/chcore.h. - * . - * @ingroup Ports - */ - -/** - * @defgroup AVR_CONF Configuration Options - * @brief AVR Configuration Options. - * @details The AVR port allows some architecture-specific configurations - * settingsthat can be specified externally, as example on the compiler - * command line: - * - @p INT_REQUIRED_STACK, this value represent the amount of stack space - * used by the interrupt handlers.
- * The default for this value is @p 32, this space is allocated for each - * thread so be careful in order to not waste precious RAM space.
- * The default value is set into ./ports/AVR/chcore.h. - * . - * @ingroup AVR - */ - -/** - * @defgroup AVR_CORE AVR Core Implementation - * @brief AVR specific port code, structures and macros. - * - * @ingroup AVR - * @file AVR/chtypes.h Port types. - * @file AVR/chcore.h Port related structures and macros. - * @file AVR/chcore.c Port related code. - */ - -/** - * @defgroup AVR_DRIVERS AVR Drivers - * @brief Device drivers included in the AVR support. - * - * @ingroup AVR - */ - -/** - * @defgroup AVR_SERIAL USART Support - * @brief USART support. - * @details The serial driver supports both the AVR USARTs in asynchronous - * mode. - * - * @ingroup AVR_DRIVERS - */ -- cgit v1.2.3