summaryrefslogtreecommitdiff
path: root/atmel-samd/asf4/samd51/examples/driver_examples.c
diff options
context:
space:
mode:
Diffstat (limited to 'atmel-samd/asf4/samd51/examples/driver_examples.c')
-rw-r--r--atmel-samd/asf4/samd51/examples/driver_examples.c138
1 files changed, 138 insertions, 0 deletions
diff --git a/atmel-samd/asf4/samd51/examples/driver_examples.c b/atmel-samd/asf4/samd51/examples/driver_examples.c
new file mode 100644
index 000000000..0b0b9ffef
--- /dev/null
+++ b/atmel-samd/asf4/samd51/examples/driver_examples.c
@@ -0,0 +1,138 @@
+/*
+ * Code generated from Atmel Start.
+ *
+ * This file will be overwritten when reconfiguring your Atmel Start project.
+ * Please copy examples or other code you want to keep to a separate file
+ * to avoid losing it when reconfiguring.
+ */
+
+#include "driver_examples.h"
+#include "driver_init.h"
+#include "utils.h"
+
+/**
+ * Example of using ADC_0 to generate waveform.
+ */
+void ADC_0_example(void)
+{
+ uint8_t buffer[2];
+
+ adc_sync_enable_channel(&ADC_0, 0);
+
+ while (1) {
+ adc_sync_read_channel(&ADC_0, 0, buffer, 2);
+ }
+}
+
+/**
+ * Example of using DAC_0 to generate waveform.
+ */
+void DAC_0_example(void)
+{
+ uint16_t i = 0;
+
+ dac_sync_enable_channel(&DAC_0, 0);
+
+ for (;;) {
+ dac_sync_write(&DAC_0, 0, &i, 1);
+ i = (i + 1) % 1024;
+ }
+}
+
+static struct timer_task TIMER_0_task1, TIMER_0_task2;
+/**
+ * Example of using TIMER_0.
+ */
+static void TIMER_0_task1_cb(const struct timer_task *const timer_task)
+{
+}
+
+static void TIMER_0_task2_cb(const struct timer_task *const timer_task)
+{
+}
+
+void TIMER_0_example(void)
+{
+ TIMER_0_task1.interval = 100;
+ TIMER_0_task1.cb = TIMER_0_task1_cb;
+ TIMER_0_task1.mode = TIMER_TASK_REPEAT;
+ TIMER_0_task2.interval = 200;
+ TIMER_0_task2.cb = TIMER_0_task2_cb;
+ TIMER_0_task2.mode = TIMER_TASK_REPEAT;
+
+ timer_add_task(&TIMER_0, &TIMER_0_task1);
+ timer_add_task(&TIMER_0, &TIMER_0_task2);
+ timer_start(&TIMER_0);
+}
+
+/**
+ * Example of using SPI_0 to write "Hello World" using the IO abstraction.
+ */
+static uint8_t example_SPI_0[12] = "Hello World!";
+
+void SPI_0_example(void)
+{
+ struct io_descriptor *io;
+ spi_m_sync_get_io_descriptor(&SPI_0, &io);
+
+ spi_m_sync_enable(&SPI_0);
+ io_write(io, example_SPI_0, 12);
+}
+
+void I2C_0_example(void)
+{
+ struct io_descriptor *I2C_0_io;
+
+ i2c_m_sync_get_io_descriptor(&I2C_0, &I2C_0_io);
+ i2c_m_sync_enable(&I2C_0);
+ i2c_m_sync_set_slaveaddr(&I2C_0, 0x12, I2C_M_SEVEN);
+ io_write(I2C_0_io, (uint8_t *)"Hello World!", 12);
+}
+
+/**
+ * Example of using USART_0 to write "Hello World" using the IO abstraction.
+ */
+void USART_0_example(void)
+{
+ struct io_descriptor *io;
+ usart_sync_get_io_descriptor(&USART_0, &io);
+ usart_sync_enable(&USART_0);
+
+ io_write(io, (uint8_t *)"Hello World!", 12);
+}
+
+void delay_example(void)
+{
+ delay_ms(5000);
+}
+
+/**
+ * Example of using PWM_0.
+ */
+void PWM_0_example(void)
+{
+ pwm_set_parameters(&PWM_0, 10000, 5000);
+ pwm_enable(&PWM_0);
+}
+
+/**
+ * Example of using RAND_0 to generate waveform.
+ */
+void RAND_0_example(void)
+{
+ uint32_t random_n[4];
+ rand_sync_enable(&RAND_0);
+ random_n[0] = rand_sync_read32(&RAND_0);
+ random_n[1] = rand_sync_read32(&RAND_0);
+ rand_sync_read_buf32(&RAND_0, &random_n[2], 2);
+ if (random_n[0] == random_n[1]) {
+ /* halt */
+ while (1)
+ ;
+ }
+ if (random_n[2] == random_n[3]) {
+ /* halt */
+ while (1)
+ ;
+ }
+}