git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5381 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
05b47dec01
commit
9528cd80ca
|
@ -91,6 +91,14 @@ ADCDriver ADCD6;
|
|||
/* Driver local variables and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief Number of active ADC FIFOs.
|
||||
*/
|
||||
static uint32_t adc_active_fifos;
|
||||
|
||||
/**
|
||||
* @brief Static setup for input resistors.
|
||||
*/
|
||||
static const uint16_t pudcrs[8] = SPC5_ADC_PUDCR;
|
||||
|
||||
#if SPC5_ADC_USE_ADC0_Q0 || defined(__DOXYGEN__)
|
||||
|
@ -466,6 +474,9 @@ static void adc_serve_dma_error_irq(edma_channel_t channel,
|
|||
*/
|
||||
void adc_lld_init(void) {
|
||||
|
||||
/* FIFOs initially all not in use.*/
|
||||
adc_active_fifos = 0;
|
||||
|
||||
#if SPC5_ADC_USE_ADC0_Q0
|
||||
/* Driver initialization.*/
|
||||
adcObjectInit(&ADCD1);
|
||||
|
@ -548,12 +559,15 @@ void adc_lld_init(void) {
|
|||
*/
|
||||
void adc_lld_start(ADCDriver *adcp) {
|
||||
|
||||
chDbgAssert(adc_active_fifos < 6, "adc_lld_start(), #1", "too many FIFOs");
|
||||
|
||||
if (adcp->state == ADC_STOP) {
|
||||
/* Enables the peripheral.*/
|
||||
#if SPC5_ADC_USE_ADC0_Q0
|
||||
if (&ADCD1 == adcp) {
|
||||
adcp->cfifo_channel = edmaChannelAllocate(&adc_cfifo0_dma_config);
|
||||
adcp->rfifo_channel = edmaChannelAllocate(&adc_rfifo0_dma_config);
|
||||
adc_active_fifos++;
|
||||
}
|
||||
#endif /* SPC5_ADC_USE_ADC0_Q0 */
|
||||
|
||||
|
@ -561,6 +575,7 @@ void adc_lld_start(ADCDriver *adcp) {
|
|||
if (&ADCD2 == adcp) {
|
||||
adcp->cfifo_channel = edmaChannelAllocate(&adc_cfifo1_dma_config);
|
||||
adcp->rfifo_channel = edmaChannelAllocate(&adc_rfifo1_dma_config);
|
||||
adc_active_fifos++;
|
||||
}
|
||||
#endif /* SPC5_ADC_USE_ADC0_Q1 */
|
||||
|
||||
|
@ -568,6 +583,7 @@ void adc_lld_start(ADCDriver *adcp) {
|
|||
if (&ADCD3 == adcp) {
|
||||
adcp->cfifo_channel = edmaChannelAllocate(&adc_cfifo2_dma_config);
|
||||
adcp->rfifo_channel = edmaChannelAllocate(&adc_rfifo2_dma_config);
|
||||
adc_active_fifos++;
|
||||
}
|
||||
#endif /* SPC5_ADC_USE_ADC0_Q2 */
|
||||
|
||||
|
@ -575,6 +591,7 @@ void adc_lld_start(ADCDriver *adcp) {
|
|||
if (&ADCD4 == adcp) {
|
||||
adcp->cfifo_channel = edmaChannelAllocate(&adc_cfifo3_dma_config);
|
||||
adcp->rfifo_channel = edmaChannelAllocate(&adc_rfifo3_dma_config);
|
||||
adc_active_fifos++;
|
||||
}
|
||||
#endif /* SPC5_ADC_USE_ADC1_Q3 */
|
||||
|
||||
|
@ -582,6 +599,7 @@ void adc_lld_start(ADCDriver *adcp) {
|
|||
if (&ADCD5 == adcp) {
|
||||
adcp->cfifo_channel = edmaChannelAllocate(&adc_cfifo4_dma_config);
|
||||
adcp->rfifo_channel = edmaChannelAllocate(&adc_rfifo4_dma_config);
|
||||
adc_active_fifos++;
|
||||
}
|
||||
#endif /* SPC5_ADC_USE_ADC1_Q4 */
|
||||
|
||||
|
@ -589,13 +607,18 @@ void adc_lld_start(ADCDriver *adcp) {
|
|||
if (&ADCD6 == adcp) {
|
||||
adcp->cfifo_channel = edmaChannelAllocate(&adc_cfifo5_dma_config);
|
||||
adcp->rfifo_channel = edmaChannelAllocate(&adc_rfifo5_dma_config);
|
||||
adc_active_fifos++;
|
||||
}
|
||||
#endif /* SPC5_ADC_USE_ADC1_Q5 */
|
||||
|
||||
/* If this is the first FIFO activated then the ADC is enabled.*/
|
||||
if (adc_active_fifos == 1)
|
||||
adc_enable();
|
||||
}
|
||||
|
||||
chDbgAssert((adcp->cfifo_channel != EDMA_ERROR) &&
|
||||
(adcp->rfifo_channel != EDMA_ERROR),
|
||||
"adc_lld_start(), #1", "channel cannot be allocated");
|
||||
"adc_lld_start(), #2", "channel cannot be allocated");
|
||||
|
||||
/* HW triggers setup.*/
|
||||
SIU.ETISR.R = adcp->config->etisr;
|
||||
|
@ -611,12 +634,18 @@ void adc_lld_start(ADCDriver *adcp) {
|
|||
*/
|
||||
void adc_lld_stop(ADCDriver *adcp) {
|
||||
|
||||
chDbgAssert(adc_active_fifos < 6, "adc_lld_stop(), #1", "too many FIFOs");
|
||||
|
||||
if (adcp->state == ADC_READY) {
|
||||
/* Resets the peripheral.*/
|
||||
|
||||
/* Releases the allocated EDMA channels.*/
|
||||
edmaChannelRelease(adcp->cfifo_channel);
|
||||
edmaChannelRelease(adcp->rfifo_channel);
|
||||
|
||||
/* If it is the last active FIFO then the ADC is disable too.*/
|
||||
if (--adc_active_fifos == 0)
|
||||
adc_disable();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -676,7 +705,8 @@ void adc_lld_start_conversion(ADCDriver *adcp) {
|
|||
|
||||
/* Enabling CFIFO, conversion starts.*/
|
||||
cfifo_enable(adcp->fifo, adcp->grpp->cfcr,
|
||||
EQADC_IDCR_CFFE | EQADC_IDCR_RFDE);
|
||||
EQADC_IDCR_CFFE | EQADC_IDCR_CFFS |
|
||||
EQADC_IDCR_RFDE | EQADC_IDCR_RFDS);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?>
|
||||
|
||||
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="0.1678860195">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1678860195" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.1678860195" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
|
||||
<folderInfo id="0.1678860195." name="/" resourcePath="">
|
||||
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.1571587928" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
|
||||
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.1571587928.1795056389" name=""/>
|
||||
<builder autoBuildTarget="all" cleanBuildTarget="clean" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="org.eclipse.cdt.build.core.settings.default.builder.1130620788" incrementalBuildTarget="all" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
|
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.437964627" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
|
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.1681283326" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
|
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.760214315" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
|
||||
</tool>
|
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.1674700670" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
|
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.916577449" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
|
||||
</tool>
|
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.450240264" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
|
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1298250760" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="SPC563Mxx-ADC.null.2088541646" name="SPC563Mxx-ADC"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="0.1678860195">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
<storageModule moduleId="refreshScope"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
</cproject>
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>SPC563Mxx-ADC</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
<linkedResources>
|
||||
<link>
|
||||
<name>board</name>
|
||||
<type>2</type>
|
||||
<locationURI>CHIBIOS/boards/GENERIC_SPC563M</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>os</name>
|
||||
<type>2</type>
|
||||
<locationURI>CHIBIOS/os</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
</projectDescription>
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
# Compiler options here.
|
||||
ifeq ($(USE_OPT),)
|
||||
USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
|
||||
USE_OPT = -O1 -ggdb -fomit-frame-pointer -falign-functions=16
|
||||
endif
|
||||
|
||||
# C specific options here (added to USE_OPT).
|
||||
|
|
|
@ -236,7 +236,8 @@ static const ADCConversionGroup adcgrpcfg1 = {
|
|||
ADC_GRP1_NUM_CHANNELS,
|
||||
NULL,
|
||||
adcerrorcallback,
|
||||
EQADC_CFCR_SSE | EQADC_CFCR_MODE_SWSS,
|
||||
// EQADC_CFCR_SSE | EQADC_CFCR_MODE_SWSS,
|
||||
EQADC_CFCR_MODE_SWCS,
|
||||
ADC_GRP1_BUF_DEPTH,
|
||||
adcgrpcfg1_commands
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue