From 6ee8b005ae3ee2bc48ea6ac972b0d3b2a2949608 Mon Sep 17 00:00:00 2001 From: Andrew Hannam Date: Fri, 1 Mar 2013 09:04:52 +1000 Subject: GAUDIN implemented with GADC driver --- drivers/gaudin/gadc/gaudin_lld.c | 76 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 drivers/gaudin/gadc/gaudin_lld.c (limited to 'drivers/gaudin/gadc/gaudin_lld.c') diff --git a/drivers/gaudin/gadc/gaudin_lld.c b/drivers/gaudin/gadc/gaudin_lld.c new file mode 100644 index 00000000..12e6aced --- /dev/null +++ b/drivers/gaudin/gadc/gaudin_lld.c @@ -0,0 +1,76 @@ +/* + ChibiOS/GFX - Copyright (C) 2012, 2013 + Joel Bodenmann aka Tectu + + This file is part of ChibiOS/GFX. + + ChibiOS/GFX 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/GFX 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 drivers/gaudin/gadc/gaudin.c + * @brief GAUDIN - Driver file for using the cpu ADC (via GADC). + * + * @addtogroup GAUDIN + * + * @{ + */ +#include "ch.h" +#include "hal.h" + +/** + * We are now implementing the driver - pull in our channel table + * from the board definitions. + */ +#define GAUDIN_LLD_IMPLEMENTATION + + +#include "gfx.h" + +#if GFX_USE_GAUDIN + +/* Double check the GADC system is turned on */ +#if !GFX_USE_GADC + #error "GAUDIN - The GADC driver for GAUDIN requires GFX_USE_GADC to be TRUE" +#endif + +/* Include the driver defines */ +#include "gaudin/lld/gaudin_lld.h" + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +void gaudin_lld_init(const gaudin_params *paud) { + /* Setup the high speed GADC */ + gadcHighSpeedInit(gaudin_lld_physdevs[paud->channel], paud->frequency, paud->buffer, paud->bufcount, paud->samplesPerEvent); + + /* Register ourselves for ISR callbacks */ + gadcHighSpeedSetISRCallback(GAUDIN_ISR_CompleteI); + + /** + * The gadc driver handles any errors for us by restarting the transaction so there is + * no need for us to setup anything for GAUDIN_ISR_ErrorI() + */ +} + +void gadc_lld_start(void) { + gadcHighSpeedStart(); +} + +void gadc_lld_stop(void) { + gadcHighSpeedStop(); +} + +#endif /* GFX_USE_GAUDIN */ +/** @} */ -- cgit v1.2.3