Skip to content
Snippets Groups Projects
Commit 15e7feac authored by Bengt Ragnemalm's avatar Bengt Ragnemalm
Browse files

ADC example added

parent 728a7a9a
Branches
No related tags found
No related merge requests found
...@@ -250,12 +250,12 @@ ...@@ -250,12 +250,12 @@
<file path="src/ASF/sam0/drivers/sercom/usart/quick_start_callback/qs_usart_callback.h" framework="" version="3.49.1" source="sam0\drivers\sercom\usart\quick_start_callback\qs_usart_callback.h" changed="False" content-id="Atmel.ASF" /> <file path="src/ASF/sam0/drivers/sercom/usart/quick_start_callback/qs_usart_callback.h" framework="" version="3.49.1" source="sam0\drivers\sercom\usart\quick_start_callback\qs_usart_callback.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/sercom/usart/usart.h" framework="" version="3.49.1" source="sam0\drivers\sercom\usart\usart.h" changed="False" content-id="Atmel.ASF" /> <file path="src/ASF/sam0/drivers/sercom/usart/usart.h" framework="" version="3.49.1" source="sam0\drivers\sercom\usart\usart.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/sercom/usart/quick_start_dma/qs_usart_dma_use.h" framework="" version="3.49.1" source="sam0\drivers\sercom\usart\quick_start_dma\qs_usart_dma_use.h" changed="False" content-id="Atmel.ASF" /> <file path="src/ASF/sam0/drivers/sercom/usart/quick_start_dma/qs_usart_dma_use.h" framework="" version="3.49.1" source="sam0\drivers\sercom\usart\quick_start_dma\qs_usart_dma_use.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/adc/adc.h" framework="" version="3.49.1" source="sam0\drivers\adc\adc.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/adc/adc_sam_d_r_h/adc.c" framework="" version="3.49.1" source="sam0\drivers\adc\adc_sam_d_r_h\adc.c" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/adc/adc_sam_d_r_h/adc_feature.h" framework="" version="3.49.1" source="sam0\drivers\adc\adc_sam_d_r_h\adc_feature.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/wdt/wdt.c" framework="" version="3.49.1" source="sam0\drivers\wdt\wdt.c" changed="False" content-id="Atmel.ASF" /> <file path="src/ASF/sam0/drivers/wdt/wdt.c" framework="" version="3.49.1" source="sam0\drivers\wdt\wdt.c" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/wdt/wdt.h" framework="" version="3.49.1" source="sam0\drivers\wdt\wdt.h" changed="False" content-id="Atmel.ASF" /> <file path="src/ASF/sam0/drivers/wdt/wdt.h" framework="" version="3.49.1" source="sam0\drivers\wdt\wdt.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/wdt/quick_start/qs_wdt_basic.h" framework="" version="3.49.1" source="sam0\drivers\wdt\quick_start\qs_wdt_basic.h" changed="False" content-id="Atmel.ASF" /> <file path="src/ASF/sam0/drivers/wdt/quick_start/qs_wdt_basic.h" framework="" version="3.49.1" source="sam0\drivers\wdt\quick_start\qs_wdt_basic.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/adc/adc.h" framework="" version="3.49.1" source="sam0\drivers\adc\adc.h" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/adc/adc_sam_d_r_h/adc.c" framework="" version="3.49.1" source="sam0\drivers\adc\adc_sam_d_r_h\adc.c" changed="False" content-id="Atmel.ASF" />
<file path="src/ASF/sam0/drivers/adc/adc_sam_d_r_h/adc_feature.h" framework="" version="3.49.1" source="sam0\drivers\adc\adc_sam_d_r_h\adc_feature.h" changed="False" content-id="Atmel.ASF" />
</files> </files>
<documentation help="https://asf.microchip.com/docs/3.49.1/common.applications.user_application.sam0_system.user_board.atsamd21g18a/html/index.html" /> <documentation help="https://asf.microchip.com/docs/3.49.1/common.applications.user_application.sam0_system.user_board.atsamd21g18a/html/index.html" />
<offline-documentation help="" /> <offline-documentation help="" />
...@@ -659,12 +659,6 @@ ...@@ -659,12 +659,6 @@
<Compile Include="src\ArduinoZeroTemplate.h"> <Compile Include="src\ArduinoZeroTemplate.h">
<SubType>compile</SubType> <SubType>compile</SubType>
</Compile> </Compile>
<None Include="src\ASF\sam0\drivers\dac\dac.h">
<SubType>compile</SubType>
</None>
<None Include="src\asf.h">
<SubType>compile</SubType>
</None>
<None Include="src\ASF\sam0\drivers\adc\adc.h"> <None Include="src\ASF\sam0\drivers\adc\adc.h">
<SubType>compile</SubType> <SubType>compile</SubType>
</None> </None>
...@@ -674,6 +668,15 @@ ...@@ -674,6 +668,15 @@
<None Include="src\ASF\sam0\drivers\adc\adc_sam_d_r_h\adc_feature.h"> <None Include="src\ASF\sam0\drivers\adc\adc_sam_d_r_h\adc_feature.h">
<SubType>compile</SubType> <SubType>compile</SubType>
</None> </None>
<Compile Include="src\mymacros.h">
<SubType>compile</SubType>
</Compile>
<None Include="src\ASF\sam0\drivers\dac\dac.h">
<SubType>compile</SubType>
</None>
<None Include="src\asf.h">
<SubType>compile</SubType>
</None>
<Compile Include="src\ASF\sam0\drivers\dac\dac_sam_d_c_h\dac.c"> <Compile Include="src\ASF\sam0\drivers\dac\dac_sam_d_c_h\dac.c">
<SubType>compile</SubType> <SubType>compile</SubType>
</Compile> </Compile>
...@@ -1298,9 +1301,6 @@ ...@@ -1298,9 +1301,6 @@
<Compile Include="src\config\asf.h"> <Compile Include="src\config\asf.h">
<SubType>compile</SubType> <SubType>compile</SubType>
</Compile> </Compile>
<Compile Include="src\macros.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="src\main.c"> <Compile Include="src\main.c">
<SubType>compile</SubType> <SubType>compile</SubType>
</Compile> </Compile>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include <asf.h> #include <asf.h>
#include "ArduinoZeroTemplate.h" #include "ArduinoZeroTemplate.h"
#include "macros.h" #include "mymacros.h"
// Globala variabler // Globala variabler
...@@ -58,12 +58,18 @@ void ArduinoZeroTemplate(void) ...@@ -58,12 +58,18 @@ void ArduinoZeroTemplate(void)
} }
} }
// Create example of using ADC // ADC example
ADC_Convert(ADC_INPUT_EXAMPLE);
// DAC example. All configuration needed is already done in Init. DAC is 10 bits and can convert in 350 ksps
dac_chan_write(&dac0_instance_struct, DAC_CHANNEL_0, 1023); // 1023 is the value and is also maximum value.
// Serial.begin(115200);
while (true) while (true)
{ {
}// end while (true) infinite loop }// end while (true) infinite loop
}// end ArduinoZeroTemplate }// end **** ArduinoZeroTemplate ****
void ArduinoZeroTemplateInit(void) void ArduinoZeroTemplateInit(void)
{ {
...@@ -223,7 +229,7 @@ void ArduinoZeroTemplateInit(void) ...@@ -223,7 +229,7 @@ void ArduinoZeroTemplateInit(void)
dac_config_struct.reference = DAC_REFERENCE_AVCC; dac_config_struct.reference = DAC_REFERENCE_AVCC;
dac_init(&dac0_instance_struct, DAC, &dac_config_struct); dac_init(&dac0_instance_struct, DAC, &dac_config_struct);
dac_enable(&dac0_instance_struct); dac_enable(&dac0_instance_struct);
// In the future the above should be done per DAC channel instead there each DAC in a device is supposed to be a channel. // In the future the above should be done per DAC channel there each DAC in a device is supposed to be a channel.
// But in the current version of ASF there is no support for DAC channels. See dac.h // But in the current version of ASF there is no support for DAC channels. See dac.h
// Note: There are just a few SAM devices that has more than one DAC, like the SAM4L-family. // Note: There are just a few SAM devices that has more than one DAC, like the SAM4L-family.
...@@ -232,15 +238,35 @@ void ArduinoZeroTemplateInit(void) ...@@ -232,15 +238,35 @@ void ArduinoZeroTemplateInit(void)
// Internal ADC // Internal ADC
adc_get_config_defaults(&adc_config_struct); adc_get_config_defaults(&adc_config_struct);
adc_config_struct.clock_source = GCLK_GENERATOR_4; adc_config_struct.clock_source = GCLK_GENERATOR_4;
// Clock timer // Clock timer
Init1msClock(); Init1msClock();
} // end init } // **** end init ****
uint_fast16_t ADC_Convert(uint8_t adcinput)
{
static uint_fast16_t light=0;
uint16_t adcValue=0;
uint_fast16_t adcStatus=0;
struct adc_config adc_config_struct; // ADC configuration structure
adc_get_config_defaults(&adc_config_struct);
adc_config_struct.positive_input = adcinput;
adc_config_struct.reference = ADC_REFERENCE_INTVCC0;
adc_init(&adc0_instance_struct, ADC, &adc_config_struct);
adc_start_conversion(&adc0_instance_struct);
do
{
adcStatus = adc_read(&adc0_instance_struct, &adcValue);
}
while (adcStatus == STATUS_BUSY);
light = adcValue;
return light;
}
void usart5_read_callback(struct usart_module *const usart_module) void usart5_read_callback(struct usart_module *const usart_module)
{ {
// Here some signaling to main should be done. This is an example. // Here some signaling to main should be done. This is an example of setting a flag after reception of a command.
usart5_command_received = true; usart5_command_received = true;
} }
......
...@@ -131,18 +131,20 @@ Available for user ...@@ -131,18 +131,20 @@ Available for user
#define TIMEOUT 3 // Nr of retries #define TIMEOUT 3 // Nr of retries
*/ */
// For internal DAC if used // For internal DAC if used. There is only one output so this is it!
// DAC is 10 bits and can convert in 350 ksps
#define DAC_PIN PIN_PA02 // Min 5 kohm load, max 100 pF. #define DAC_PIN PIN_PA02 // Min 5 kohm load, max 100 pF.
// USART5 in UART mode if used: // USART5 in UART mode if used:
#define MAX_USART5_RX_BUFFER_LENGTH 5 #define MAX_USART5_RX_BUFFER_LENGTH 5
// Analog in addition in progress // For ADC if used
// How to read is missing. #define ADC_INPUT_EXAMPLE ADC_POSITIVE_INPUT_PIN1 // PA01.
// Functions // Functions
void ArduinoZeroTemplateInit(void);
void ArduinoZeroTemplate(void); void ArduinoZeroTemplate(void);
void ArduinoZeroTemplateInit(void);
uint_fast16_t ADC_Convert(uint8_t adcinput);
void Update1msClock(void); void Update1msClock(void);
void Init1msClock(void); void Init1msClock(void);
......
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment