aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gadc/AT91SAM7/gadc_lld_config.h
blob: a65d0d07985b202895a3fcbfc6310f45d3afa9d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
 * This file is subject to the terms of the GFX License. If a copy of
 * the license was not distributed with this file, you can obtain one at:
 *
 *              http://chibios-gfx.com/license.html
 */

/**
 * @file    drivers/gadc/AT91SAM7/gadc_lld_config.h
 * @brief   GADC Driver config file.
 *
 * @addtogroup GADC
 * @{
 */

#ifndef GADC_LLD_CONFIG_H
#define GADC_LLD_CONFIG_H

#if GFX_USE_GADC

/*===========================================================================*/
/* Driver hardware support.                                                  */
/*===========================================================================*/

/**
 * @brief	ChibiOS has a nasty bug in its _adc_isr_full_code() routine (defined in adc.h as a macro).
 * 			Do we have the version of ChibiOS with this bug.
 * @detail	Set to TRUE if ChibiOS has this bug.
 * @note	Fixed in ChibiOS 2.4.4stable and 2.5.2unstable (and the repository from 18th Feb 2013)
 * @note	This bug prevents us re-calling adcStartConversionI() from with the ISR even though
 * 			it is clearly designed to handle it. For some reason (on this micro) the high speed timer
 * 			is not affected only the single sample low speed timer. In that situation we wait until
 * 			we get back to thread land. This is terrible for the accuracy of the high speed timer
 * 			but what can we do (other than fix the bug).
 * @note	For the AT91SAM7 ADC driver, it post-dates the finding of the bug so we safely
 * 			say that the bug doesn't exist for this driver.
 */
#define ADC_ISR_FULL_CODE_BUG				FALSE

/**
 * @brief	The maximum sample frequency supported by this CPU
 */
#define GADC_MAX_SAMPLE_FREQUENCY			132000

/**
 * @brief	The number of bits in a sample
 */
#define GADC_BITS_PER_SAMPLE				AT91_ADC1_RESOLUTION

/**
 * @brief	The sample format
 */
#define GADC_SAMPLE_FORMAT					ARRAY_DATA_10BITUNSIGNED

/* Pull in board specific defines */
#if defined(GADC_USE_CUSTOM_BOARD) && GADC_USE_CUSTOM_BOARD
	/* Include the user supplied board definitions */
	#include "gadc_lld_board.h"
#elif defined(BOARD_OLIMEX_SAM7_EX256)
	#include "gadc_lld_board_olimexsam7ex256.h"
#else
	/* Include the user supplied board definitions */
	#include "gadc_lld_board.h"
#endif

#endif	/* GFX_USE_GADC */

#endif	/* GADC_LLD_CONFIG_H */
/** @} */