From ffd1c15f51c9235631a4a7f777a538bd48c2a312 Mon Sep 17 00:00:00 2001 From: joeycastillo Date: Tue, 15 Oct 2024 00:50:55 +0000 Subject: [PATCH] deploy: bc5829b32a5977b040c88d4f8550fcc27c1186b0 --- adc_8h_source.html | 129 ++-- annotated.html | 29 +- annotated_dup.js | 9 + app_8h.html | 186 ------ app_8h_source.html | 129 ++-- classes.html | 29 +- dac_8h_source.html | 131 +++-- delay_8h.html | 185 ------ delay_8h_source.html | 63 +- dir_14bc92f4b96c8519b376567118ac28b3.html | 36 +- dir_14bc92f4b96c8519b376567118ac28b3.js | 5 + dir_2df1e86e29aa9f9374c90ba96092d4a1.html | 36 +- dir_a6777e5bccc4f7f7bf9113fb0e621fee.html | 36 +- dir_a6777e5bccc4f7f7bf9113fb0e621fee.js | 5 + dir_ba1d07ed4d5aa49bdda527e4db347ebf.html | 36 +- dir_ba1d07ed4d5aa49bdda527e4db347ebf.js | 4 + dir_bdd9a5d540de89e9fe90efdfc6973a4f.html | 93 +-- dir_bdd9a5d540de89e9fe90efdfc6973a4f.js | 27 + dma_8h_source.html | 157 ++--- dma__util_8h_source.html | 247 ++++---- doxygen.css | 678 +++++----------------- dynsections.js | 6 +- eic_8h.html | 325 ----------- eic_8h_source.html | 167 +++--- evsys_8h_source.html | 101 ++-- files.html | 67 ++- files_dup.js | 5 + gfx_8h.html | 36 +- gfx_8h.js | 21 + gfx_8h_source.html | 36 +- globals.html | 198 +------ globals_defs.html | 29 +- globals_enum.html | 83 --- globals_eval.html | 82 --- globals_func.html | 203 +------ globals_type.html | 82 --- adc_8h.html => group__adc.html | 101 ++-- group__adc.js | 9 + group__app.html | 199 +++++++ group__app.js | 8 + dac_8h.html => group__dac.html | 93 +-- group__dac.js | 7 + group__dma.html | 315 ++++++++++ group__dma.js | 7 + group__eic.html | 340 +++++++++++ group__eic.js | 14 + evsys_8h.html => group__evsys.html | 59 +- group__evsys.js | 4 + i2c_8h.html => group__i2c.html | 146 ++--- group__i2c.js | 13 + group__i2s.html | 185 ++++++ group__i2s.js | 4 + group__opamp.html | 574 ++++++++++++++++++ group__opamp.js | 12 + group__ptc.html | 249 ++++++++ group__ptc.js | 6 + rtc_8h.html => group__rtc.html | 140 +++-- group__rtc.js | 12 + group__slcd.html | 676 +++++++++++++++++++++ group__slcd.js | 16 + spi_8h.html => group__spi.html | 134 +++-- group__spi.js | 11 + group__system.html | 251 ++++++++ group__system.js | 8 + tc_8h.html => group__tc.html | 305 +++++----- group__tc.js | 28 + tcc_8h.html => group__tcc.html | 230 ++++---- group__tcc.js | 19 + uart_8h.html => group__uart.html | 233 ++++---- group__uart.js | 22 + group__usb.html | 205 +++++++ group__usb.js | 7 + hal__gpio_8h.html | 156 ----- hal__gpio_8h_source.html | 555 +++++++++--------- i2c_8h_source.html | 145 +++-- i2s_8h.html | 96 --- i2s_8h_source.html | 124 ++-- index.html | 181 ++---- md__r_e_a_d_m_e.html | 171 +++++- menudata.js | 30 +- navtree.css | 149 +++++ navtree.js | 559 ++++++++++++++++++ navtreedata.js | 62 ++ navtreeindex0.js | 253 ++++++++ navtreeindex1.js | 24 + opamp_8h.html | 559 ------------------ opamp_8h_source.html | 233 ++++---- oso__lcd_8h_source.html | 36 +- pages.html | 30 +- ptc_8h.html | 96 --- ptc_8h_source.html | 230 ++++---- resize.js | 155 +++++ rtc_8h_source.html | 185 +++--- sam_8h_source.html | 36 +- search/all_0.js | 7 +- search/all_1.js | 35 +- search/all_10.js | 26 +- search/all_11.js | 2 +- search/all_12.js | 4 + search/all_2.js | 4 +- search/all_3.js | 19 +- search/all_4.js | 26 +- search/all_5.js | 23 +- search/all_6.js | 32 +- search/all_7.js | 25 +- search/all_8.js | 31 +- search/all_9.js | 4 +- search/all_a.js | 11 +- search/all_b.js | 13 +- search/all_c.js | 18 +- search/all_d.js | 59 +- search/all_e.js | 109 ++-- search/all_f.js | 67 ++- search/enums_0.js | 2 +- search/enums_1.js | 2 +- search/enums_2.js | 5 + search/enumvalues_0.js | 2 +- search/files_0.js | 3 +- search/files_1.js | 3 +- search/files_2.js | 5 - search/files_3.js | 4 - search/files_4.js | 4 - search/files_5.js | 5 - search/files_6.js | 4 - search/files_7.js | 4 - search/files_8.js | 4 - search/files_9.js | 8 - search/files_a.js | 5 - search/files_b.js | 4 - search/functions_0.js | 7 +- search/functions_1.js | 20 +- search/functions_2.js | 14 +- search/functions_3.js | 20 +- search/functions_4.js | 2 +- search/functions_5.js | 21 +- search/functions_6.js | 18 +- search/functions_7.js | 11 +- search/functions_8.js | 20 +- search/functions_9.js | 63 +- search/functions_a.js | 55 +- search/functions_b.js | 22 +- search/functions_c.js | 4 + search/groups_0.js | 9 + search/groups_1.js | 4 + search/groups_2.js | 10 + search/groups_3.js | 7 + search/groups_4.js | 5 + search/groups_5.js | 5 + search/groups_6.js | 4 + search/groups_7.js | 10 + search/groups_8.js | 4 + search/groups_9.js | 4 + search/groups_a.js | 4 + search/groups_b.js | 5 + search/groups_c.js | 4 + search/groups_d.js | 9 + search/groups_e.js | 9 + search/groups_f.js | 5 + search/pages_1.js | 2 +- search/pages_2.js | 4 - search/pages_3.js | 4 - search/search.css | 50 +- search/searchdata.js | 17 +- search/typedefs_0.js | 2 +- sercom_8h.html | 194 ------- sercom_8h_source.html | 113 ++-- sh1107_8h.html | 38 +- sh1107_8h.js | 31 + sh1107_8h_source.html | 36 +- slcd_8h.html | 97 ---- slcd_8h_source.html | 261 +++++---- spi_8h_source.html | 153 ++--- structfifo__buffer__t.html | 32 +- structgossamer__dma__job__t.html | 34 +- structsercom__instance__details__t.html | 32 +- structtc__instance__details__t.html | 32 +- structtcc__instance__details__t.html | 32 +- system_8h.html | 273 --------- system_8h_source.html | 216 +++---- tabs.css | 2 +- tc_8h_source.html | 316 +++++----- tcc_8h_source.html | 259 +++++---- todo.html | 87 --- topics.html | 127 ++++ topics.js | 21 + tusb__config_8h_source.html | 36 +- uart_8h_source.html | 201 ++++--- unionrtc__date__time__t.html | 34 +- usb_8h_source.html | 123 ++-- 189 files changed, 9488 insertions(+), 6723 deletions(-) create mode 100644 annotated_dup.js delete mode 100644 app_8h.html delete mode 100644 delay_8h.html create mode 100644 dir_14bc92f4b96c8519b376567118ac28b3.js create mode 100644 dir_a6777e5bccc4f7f7bf9113fb0e621fee.js create mode 100644 dir_ba1d07ed4d5aa49bdda527e4db347ebf.js create mode 100644 dir_bdd9a5d540de89e9fe90efdfc6973a4f.js delete mode 100644 eic_8h.html create mode 100644 files_dup.js create mode 100644 gfx_8h.js delete mode 100644 globals_enum.html delete mode 100644 globals_eval.html delete mode 100644 globals_type.html rename adc_8h.html => group__adc.html (55%) create mode 100644 group__adc.js create mode 100644 group__app.html create mode 100644 group__app.js rename dac_8h.html => group__dac.html (56%) create mode 100644 group__dac.js create mode 100644 group__dma.html create mode 100644 group__dma.js create mode 100644 group__eic.html create mode 100644 group__eic.js rename evsys_8h.html => group__evsys.html (69%) create mode 100644 group__evsys.js rename i2c_8h.html => group__i2c.html (57%) create mode 100644 group__i2c.js create mode 100644 group__i2s.html create mode 100644 group__i2s.js create mode 100644 group__opamp.html create mode 100644 group__opamp.js create mode 100644 group__ptc.html create mode 100644 group__ptc.js rename rtc_8h.html => group__rtc.html (51%) create mode 100644 group__rtc.js create mode 100644 group__slcd.html create mode 100644 group__slcd.js rename spi_8h.html => group__spi.html (53%) create mode 100644 group__spi.js create mode 100644 group__system.html create mode 100644 group__system.js rename tc_8h.html => group__tc.html (56%) create mode 100644 group__tc.js rename tcc_8h.html => group__tcc.html (57%) create mode 100644 group__tcc.js rename uart_8h.html => group__uart.html (50%) create mode 100644 group__uart.js create mode 100644 group__usb.html create mode 100644 group__usb.js delete mode 100644 hal__gpio_8h.html delete mode 100644 i2s_8h.html create mode 100644 navtree.css create mode 100644 navtree.js create mode 100644 navtreedata.js create mode 100644 navtreeindex0.js create mode 100644 navtreeindex1.js delete mode 100644 opamp_8h.html delete mode 100644 ptc_8h.html create mode 100644 resize.js create mode 100644 search/all_12.js create mode 100644 search/enums_2.js delete mode 100644 search/files_2.js delete mode 100644 search/files_3.js delete mode 100644 search/files_4.js delete mode 100644 search/files_5.js delete mode 100644 search/files_6.js delete mode 100644 search/files_7.js delete mode 100644 search/files_8.js delete mode 100644 search/files_9.js delete mode 100644 search/files_a.js delete mode 100644 search/files_b.js create mode 100644 search/functions_c.js create mode 100644 search/groups_0.js create mode 100644 search/groups_1.js create mode 100644 search/groups_2.js create mode 100644 search/groups_3.js create mode 100644 search/groups_4.js create mode 100644 search/groups_5.js create mode 100644 search/groups_6.js create mode 100644 search/groups_7.js create mode 100644 search/groups_8.js create mode 100644 search/groups_9.js create mode 100644 search/groups_a.js create mode 100644 search/groups_b.js create mode 100644 search/groups_c.js create mode 100644 search/groups_d.js create mode 100644 search/groups_e.js create mode 100644 search/groups_f.js delete mode 100644 search/pages_2.js delete mode 100644 search/pages_3.js delete mode 100644 sercom_8h.html create mode 100644 sh1107_8h.js delete mode 100644 slcd_8h.html delete mode 100644 system_8h.html delete mode 100644 todo.html create mode 100644 topics.html create mode 100644 topics.js diff --git a/adc_8h_source.html b/adc_8h_source.html index 24b93e3..3b115a5 100644 --- a/adc_8h_source.html +++ b/adc_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ + +
+ +
+
+
+ +
- -
adc.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2022 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2022 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33
-
34
-
52void adc_init(void);
-
53
-
57void adc_enable(void);
-
58
-
68void adc_set_sampling_length(uint8_t length);
-
69
-
76uint16_t adc_get_analog_value(uint8_t pin);
-
77
-
83uint16_t adc_get_analog_value_for_channel(uint8_t channel);
-
84
-
88void adc_disable(void);
-
void adc_set_sampling_length(uint8_t length)
Sets the sampling length for the ADC.
Definition adc.c:75
-
uint16_t adc_get_analog_value_for_channel(uint8_t channel)
Gets the analog value on the given ADC channel.
Definition adc.c:81
-
void adc_init(void)
Initializes the ADC peripheral, but does not enable it.
Definition adc.c:102
-
void adc_enable(void)
Enables the ADC peripheral.
Definition adc.c:183
-
void adc_disable(void)
Disables the ADC peripheral.
Definition adc.c:190
-
uint16_t adc_get_analog_value(uint8_t pin)
Gets the analog value on the given ADC pin.
Definition adc.c:93
+
31
+
54void adc_init(void);
+
55
+
59void adc_enable(void);
+
60
+
70void adc_set_sampling_length(uint8_t length);
+
71
+
78uint16_t adc_get_analog_value(uint8_t pin);
+
79
+
85uint16_t adc_get_analog_value_for_channel(uint8_t channel);
+
86
+
90void adc_disable(void);
+
91
+
void adc_set_sampling_length(uint8_t length)
Sets the sampling length for the ADC.
Definition adc.c:75
+
uint16_t adc_get_analog_value_for_channel(uint8_t channel)
Gets the analog value on the given ADC channel.
Definition adc.c:81
+
void adc_init(void)
Initializes the ADC peripheral, but does not enable it.
Definition adc.c:102
+
void adc_enable(void)
Enables the ADC peripheral.
Definition adc.c:183
+
void adc_disable(void)
Disables the ADC peripheral.
Definition adc.c:190
+
uint16_t adc_get_analog_value(uint8_t pin)
Gets the analog value on the given ADC pin.
Definition adc.c:93
+
- + diff --git a/annotated.html b/annotated.html index 45ece97..ad14f40 100644 --- a/annotated.html +++ b/annotated.html @@ -9,6 +9,10 @@ + + + + @@ -48,6 +52,22 @@ +
+ +
+
+
+ +
+ - + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 0000000..43858ea --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,9 @@ +var annotated_dup = +[ + [ "fifo_buffer_t", "structfifo__buffer__t.html", null ], + [ "gossamer_dma_job_t", "structgossamer__dma__job__t.html", null ], + [ "rtc_date_time_t", "unionrtc__date__time__t.html", null ], + [ "sercom_instance_details_t", "structsercom__instance__details__t.html", null ], + [ "tc_instance_details_t", "structtc__instance__details__t.html", null ], + [ "tcc_instance_details_t", "structtcc__instance__details__t.html", null ] +]; \ No newline at end of file diff --git a/app_8h.html b/app_8h.html deleted file mode 100644 index 90e232a..0000000 --- a/app_8h.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - -gossamer: common/app.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
app.h File Reference
-
-
- -

Gossamer application framework. -More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include <stddef.h>
-#include "sam.h"
-#include "pins.h"
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - -

-Functions

void app_init (void)
 A function you will implement to initialize your application's low- level setup. The app_init function is called after system clocks are initialized, and before anything else.
 
void app_wake_from_backup (void)
 OPTIONAL: A function you may implement to restore state after waking up from BACKUP mode on the SAM L21 or L22. This function is called after system_init, but before app_setup. You can stash a bit of your application state in the RTC's BKUP and GPn registers, and use this function as an opportinity to restore it before app_setup is called.
 
-void app_setup (void)
 A function you will implement to set up your app. The app_setup function is like setup() in Arduino. It is called once when the program begins, after app_init and app_wake_from_backup, if it exists. You should use this function to set up your application state and configure any peripherals you need to use.
 
bool app_loop (void)
 A function you will implement to serve as the app's main run loop. This method will be called repeatedly, or if you enter STANDBY mode, as soon as the device wakes from that mode.
 
-void yield (void)
 OPTIONAL: A function to yield control of the CPU to other tasks. This function is called in the delay function to allow other tasks to run while the CPU is busy waiting. By default, this function does nothing, but if you are using the USB peripheral, you should implement this function and call tud_task at minumum, along with any other USB-related tasks you need to run.
 
-

Detailed Description

-

Gossamer application framework.

-

Function Documentation

- -

◆ app_init()

- -
-
- - - - - - - - -
void app_init (void )
-
- -

A function you will implement to initialize your application's low- level setup. The app_init function is called after system clocks are initialized, and before anything else.

-

You may be wondering why there is an app_init function as well as an app_setup function. The main difference is that app_init is only meant to be callec once, at boot, whereas you might want to call app_setup multiple times, for example if you want to disable some peripherals before entering STANDBY mode, and re-enable them after waking up. In essence, you should set up anything that will run forever in app_init, whereas anything that could get turned off in the course of execution should be set up in app_setup.

Note
If your application plans to use the real-time clock perhiperal, you probably want to call the rtc_init function here.
- -
-
- -

◆ app_loop()

- -
-
- - - - - - - - -
bool app_loop (void )
-
- -

A function you will implement to serve as the app's main run loop. This method will be called repeatedly, or if you enter STANDBY mode, as soon as the device wakes from that mode.

-
Note
In order to wake from STANDBY mode, you must set up an interrupt or wake source. Otherwise your app will remain in STANDBY indefinitely.
-
Returns
true if your app is prepared to enter STANDBY mode. If you return false, your app's app_loop method will be called again immediately.
- -
-
- -

◆ app_wake_from_backup()

- -
-
- - - - - - - - -
void app_wake_from_backup (void )
-
- -

OPTIONAL: A function you may implement to restore state after waking up from BACKUP mode on the SAM L21 or L22. This function is called after system_init, but before app_setup. You can stash a bit of your application state in the RTC's BKUP and GPn registers, and use this function as an opportinity to restore it before app_setup is called.

-
Note
You do not need to implement this function unless you are using the SAM L21 or L22 and you want to restore state from BACKUP mode.
- -
-
-
- - - - diff --git a/app_8h_source.html b/app_8h_source.html index f227e01..8a792a0 100644 --- a/app_8h_source.html +++ b/app_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ + +
+ +
+
+
+ +
- -
app.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2020 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2020 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
-
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33#include <stddef.h>
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
+
30#include <stddef.h>
+
31
+
32#include "sam.h"
+
33#include "pins.h"
34
-
35#include "sam.h"
-
36#include "pins.h"
-
37
-
52void app_init(void);
-
53
- -
63
-
70void app_setup(void);
-
71
-
80bool app_loop(void);
-
81
-
89void yield(void);
-
void yield(void)
OPTIONAL: A function to yield control of the CPU to other tasks. This function is called in the delay...
-
void app_wake_from_backup(void)
OPTIONAL: A function you may implement to restore state after waking up from BACKUP mode on the SAM L...
-
void app_setup(void)
A function you will implement to set up your app. The app_setup function is like setup() in Arduino....
-
bool app_loop(void)
A function you will implement to serve as the app's main run loop. This method will be called repeate...
-
void app_init(void)
A function you will implement to initialize your application's low- level setup. The app_init functio...
+
57void app_init(void);
+
58
+ +
68
+
75void app_setup(void);
+
76
+
85bool app_loop(void);
+
86
+
94void yield(void);
+
95
+
void yield(void)
OPTIONAL: A function to yield control of the CPU to other tasks. This function is called in the delay...
+
void app_wake_from_backup(void)
OPTIONAL: A function you may implement to restore state after waking up from BACKUP mode on the SAM L...
+
void app_setup(void)
A function you will implement to set up your app. The app_setup function is like setup() in Arduino....
+
bool app_loop(void)
A function you will implement to serve as the app's main run loop. This method will be called repeate...
+
void app_init(void)
A function you will implement to initialize your application's low- level setup. The app_init functio...
+
- + diff --git a/classes.html b/classes.html index 95c6da7..5345bd0 100644 --- a/classes.html +++ b/classes.html @@ -9,6 +9,10 @@ + + + + @@ -48,6 +52,22 @@ +
+ +
+
+
+ +
+ - + diff --git a/dac_8h_source.html b/dac_8h_source.html index c22d1e5..4928774 100644 --- a/dac_8h_source.html +++ b/dac_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ + +
+ +
+
+
+ +
- -
dac.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2022 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2022 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33
-
34// channel mask enum for dac_enable
-
35typedef enum {
-
36 DAC_CHANNEL_NONE = 0,
-
37 DAC_CHANNEL_0 = 1,
-
38 DAC_CHANNEL_1 = 2,
-
39 DAC_CHANNEL_BOTH = 3
-
40} dac_channel_mask_t;
-
41
-
47void dac_init(void);
-
48
-
55void dac_enable(dac_channel_mask_t channelmask);
-
56
-
65void dac_set_analog_value(uint16_t channel, uint16_t value);
-
66
-
71void dac_disable(uint16_t channel);
-
void dac_enable(dac_channel_mask_t channelmask)
Enables the DAC channels specified in the mask, and disables others.
Definition dac.c:75
-
void dac_set_analog_value(uint16_t channel, uint16_t value)
Set the analog value of the DAC.
Definition dac.c:97
-
void dac_disable(uint16_t channel)
Disables the given DAC channel.
Definition dac.c:110
-
void dac_init(void)
Initializes the DAC peripheral, but does not enable it.
Definition dac.c:40
+
37// channel mask enum for dac_enable
+
38typedef enum {
+
39 DAC_CHANNEL_NONE = 0,
+
40 DAC_CHANNEL_0 = 1,
+
41 DAC_CHANNEL_1 = 2,
+
42 DAC_CHANNEL_BOTH = 3
+
43} dac_channel_mask_t;
+
44
+
50void dac_init(void);
+
51
+
58void dac_enable(dac_channel_mask_t channelmask);
+
59
+
68void dac_set_analog_value(uint16_t channel, uint16_t value);
+
69
+
74void dac_disable(uint16_t channel);
+
75
+
void dac_enable(dac_channel_mask_t channelmask)
Enables the DAC channels specified in the mask, and disables others.
Definition dac.c:75
+
void dac_set_analog_value(uint16_t channel, uint16_t value)
Set the analog value of the DAC.
Definition dac.c:97
+
void dac_disable(uint16_t channel)
Disables the given DAC channel.
Definition dac.c:110
+
void dac_init(void)
Initializes the DAC peripheral, but does not enable it.
Definition dac.c:40
+
- + diff --git a/delay_8h.html b/delay_8h.html deleted file mode 100644 index ef3137e..0000000 --- a/delay_8h.html +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - -gossamer: common/delay.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
delay.h File Reference
-
-
- -

Delay routines. -More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include <stddef.h>
-
-

Go to the source code of this file.

- - - - - - - - - - - -

-Functions

void delay_init (void)
 Initializes the system tick peripheral. This is required to use the delay functions.
 
void delay_ms (const uint16_t ms)
 Delays for the given number of milliseconds.
 
void delay_us (const uint16_t us)
 Delays for the given number of microseconds.
 
-

Detailed Description

-

Delay routines.

-

Function Documentation

- -

◆ delay_init()

- -
-
- - - - - - - - -
void delay_init (void )
-
- -

Initializes the system tick peripheral. This is required to use the delay functions.

-

The system tick only runs while the CPU is running, and does not fire in STANDBY mode.

- -
-
- -

◆ delay_ms()

- -
-
- - - - - - - - -
void delay_ms (const uint16_t ms)
-
- -

Delays for the given number of milliseconds.

-
Parameters
- - -
msThe number of milliseconds to delay.
-
-
- -
-
- -

◆ delay_us()

- -
-
- - - - - - - - -
void delay_us (const uint16_t us)
-
- -

Delays for the given number of microseconds.

-
Parameters
- - -
usThe number of microseconds to delay.
-
-
- -
-
-
- - - - diff --git a/delay_8h_source.html b/delay_8h_source.html index db5dc26..873c294 100644 --- a/delay_8h_source.html +++ b/delay_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ + +
+ +
+
+
+ +
- -
delay.h
-Go to the documentation of this file.
1
-
5#include <stdint.h>
-
6#include <stdbool.h>
-
7#include <stddef.h>
-
8
-
9#pragma once
-
10
-
15void delay_init(void);
-
16
-
21void delay_ms(const uint16_t ms);
-
22
-
27void delay_us(const uint16_t us);
-
void delay_us(const uint16_t us)
Delays for the given number of microseconds.
Definition delay.c:50
-
void delay_ms(const uint16_t ms)
Delays for the given number of milliseconds.
Definition delay.c:37
-
void delay_init(void)
Initializes the system tick peripheral. This is required to use the delay functions.
Definition delay.c:6
+
1
+
2#include <stdint.h>
+
3#include <stdbool.h>
+
4#include <stddef.h>
+
5
+
6#pragma once
+
7
+
18void delay_init(void);
+
19
+
24void delay_ms(const uint16_t ms);
+
25
+
30void delay_us(const uint16_t us);
+
- + diff --git a/dir_14bc92f4b96c8519b376567118ac28b3.html b/dir_14bc92f4b96c8519b376567118ac28b3.html index e17d7a7..173855c 100644 --- a/dir_14bc92f4b96c8519b376567118ac28b3.html +++ b/dir_14bc92f4b96c8519b376567118ac28b3.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
+ +
+
+
+ +
- -
drivers Directory Reference
@@ -86,9 +102,13 @@   + - + diff --git a/dir_14bc92f4b96c8519b376567118ac28b3.js b/dir_14bc92f4b96c8519b376567118ac28b3.js new file mode 100644 index 0000000..484f434 --- /dev/null +++ b/dir_14bc92f4b96c8519b376567118ac28b3.js @@ -0,0 +1,5 @@ +var dir_14bc92f4b96c8519b376567118ac28b3 = +[ + [ "gfx", "dir_a6777e5bccc4f7f7bf9113fb0e621fee.html", "dir_a6777e5bccc4f7f7bf9113fb0e621fee" ], + [ "lcd", "dir_ba1d07ed4d5aa49bdda527e4db347ebf.html", "dir_ba1d07ed4d5aa49bdda527e4db347ebf" ] +]; \ No newline at end of file diff --git a/dir_2df1e86e29aa9f9374c90ba96092d4a1.html b/dir_2df1e86e29aa9f9374c90ba96092d4a1.html index 045ac10..1013bcf 100644 --- a/dir_2df1e86e29aa9f9374c90ba96092d4a1.html +++ b/dir_2df1e86e29aa9f9374c90ba96092d4a1.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
+ +
+
+
+ +
- -
peripherals Directory Reference
+ - + diff --git a/dir_a6777e5bccc4f7f7bf9113fb0e621fee.html b/dir_a6777e5bccc4f7f7bf9113fb0e621fee.html index 90304e3..c645208 100644 --- a/dir_a6777e5bccc4f7f7bf9113fb0e621fee.html +++ b/dir_a6777e5bccc4f7f7bf9113fb0e621fee.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
+ +
+
+
+ +
- -
gfx Directory Reference
@@ -88,9 +104,13 @@   + - + diff --git a/dir_a6777e5bccc4f7f7bf9113fb0e621fee.js b/dir_a6777e5bccc4f7f7bf9113fb0e621fee.js new file mode 100644 index 0000000..eeb0231 --- /dev/null +++ b/dir_a6777e5bccc4f7f7bf9113fb0e621fee.js @@ -0,0 +1,5 @@ +var dir_a6777e5bccc4f7f7bf9113fb0e621fee = +[ + [ "gfx.h", "gfx_8h.html", "gfx_8h" ], + [ "sh1107.h", "sh1107_8h.html", "sh1107_8h" ] +]; \ No newline at end of file diff --git a/dir_ba1d07ed4d5aa49bdda527e4db347ebf.html b/dir_ba1d07ed4d5aa49bdda527e4db347ebf.html index 100d84d..9e75055 100644 --- a/dir_ba1d07ed4d5aa49bdda527e4db347ebf.html +++ b/dir_ba1d07ed4d5aa49bdda527e4db347ebf.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
+ +
+
+
+ +
- -
lcd Directory Reference
@@ -84,9 +100,13 @@   + - + diff --git a/dir_ba1d07ed4d5aa49bdda527e4db347ebf.js b/dir_ba1d07ed4d5aa49bdda527e4db347ebf.js new file mode 100644 index 0000000..fb2897a --- /dev/null +++ b/dir_ba1d07ed4d5aa49bdda527e4db347ebf.js @@ -0,0 +1,4 @@ +var dir_ba1d07ed4d5aa49bdda527e4db347ebf = +[ + [ "oso_lcd.h", "oso__lcd_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_bdd9a5d540de89e9fe90efdfc6973a4f.html b/dir_bdd9a5d540de89e9fe90efdfc6973a4f.html index 0f648cf..ad57671 100644 --- a/dir_bdd9a5d540de89e9fe90efdfc6973a4f.html +++ b/dir_bdd9a5d540de89e9fe90efdfc6973a4f.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
+ +
+
+
+ +
- -
common Directory Reference
@@ -80,78 +96,63 @@ - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - +

Files

 adc.h
 Analog to Digital Converter.
 adc.h
 
 app.h
 Gossamer application framework.
 app.h
 
 dac.h
 Digital to Analog Converter.
 dac.h
 
 delay.h
 Delay routines.
 delay.h
 
 dma.h
 
 dma_util.h
 
 eic.h
 External Interrupt Controller.
 eic.h
 
 evsys.h
 Event System.
 evsys.h
 
 hal_gpio.h
 GPIO Macros.
 hal_gpio.h
 
 i2c.h
 I2C Peripheral.
 i2c.h
 
 i2s.h
 Inter-IC Sound interface (SAM D21 only)
 i2s.h
 
 opamp.h
 Operational Amplifier Peripheral.
 opamp.h
 
 ptc.h
 Peripheral Touch Controller.
 ptc.h
 
 rtc.h
 Real-Time Clock.
 rtc.h
 
 sam.h
 
 sercom.h
 Private functions for helping with SERCOM management.
 sercom.h
 
 slcd.h
 Segment Liquid Crystal Display (SLCD) peripheral driver (SAM L22 only)
 slcd.h
 
 spi.h
 SPI Peripheral.
 spi.h
 
 system.h
 Gossamer system routines.
 system.h
 
 tc.h
 Timer/Counter Peripheral.
 tc.h
 
 tcc.h
 Timer/Counter for Control Applications (TCC) Peripheral.
 tcc.h
 
 tusb_config.h
 
 uart.h
 UART Peripheral.
 uart.h
 
 usb.h
 
+ - + diff --git a/dir_bdd9a5d540de89e9fe90efdfc6973a4f.js b/dir_bdd9a5d540de89e9fe90efdfc6973a4f.js new file mode 100644 index 0000000..cd0c35a --- /dev/null +++ b/dir_bdd9a5d540de89e9fe90efdfc6973a4f.js @@ -0,0 +1,27 @@ +var dir_bdd9a5d540de89e9fe90efdfc6973a4f = +[ + [ "adc.h", "adc_8h_source.html", null ], + [ "app.h", "app_8h_source.html", null ], + [ "dac.h", "dac_8h_source.html", null ], + [ "delay.h", "delay_8h_source.html", null ], + [ "dma.h", "dma_8h_source.html", null ], + [ "dma_util.h", "dma__util_8h_source.html", null ], + [ "eic.h", "eic_8h_source.html", null ], + [ "evsys.h", "evsys_8h_source.html", null ], + [ "hal_gpio.h", "hal__gpio_8h_source.html", null ], + [ "i2c.h", "i2c_8h_source.html", null ], + [ "i2s.h", "i2s_8h_source.html", null ], + [ "opamp.h", "opamp_8h_source.html", null ], + [ "ptc.h", "ptc_8h_source.html", null ], + [ "rtc.h", "rtc_8h_source.html", null ], + [ "sam.h", "sam_8h_source.html", null ], + [ "sercom.h", "sercom_8h_source.html", null ], + [ "slcd.h", "slcd_8h_source.html", null ], + [ "spi.h", "spi_8h_source.html", null ], + [ "system.h", "system_8h_source.html", null ], + [ "tc.h", "tc_8h_source.html", null ], + [ "tcc.h", "tcc_8h_source.html", null ], + [ "tusb_config.h", "tusb__config_8h_source.html", null ], + [ "uart.h", "uart_8h_source.html", null ], + [ "usb.h", "usb_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dma_8h_source.html b/dma_8h_source.html index 97ee26f..e54b83f 100644 --- a/dma_8h_source.html +++ b/dma_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ + +
+ +
+
+
+ +
- -
dma.h
-
1/*
-
2 * MIT License
-
3 *
-
4 * Copyright (c) 2022 Joey Castillo
-
5 * Based heavily on Adafruit_ZeroDMA
-
6 * Written by Phil "PaintYourDragon" Burgess for Adafruit Industries,
-
7 * based partly on DMA insights from Atmel ASFCORE 3.
-
8 *
-
9 * Adafruit invests time and resources providing this open source code,
-
10 * please support Adafruit and open-source hardware by purchasing
-
11 * products from Adafruit!
-
12 *
-
13 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
14 * of this software and associated documentation files (the "Software"), to deal
-
15 * in the Software without restriction, including without limitation the rights
-
16 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
17 * copies of the Software, and to permit persons to whom the Software is
-
18 * furnished to do so, subject to the following conditions:
-
19 *
-
20 * The above copyright notice and this permission notice shall be included in all
-
21 * copies or substantial portions of the Software.
-
22 *
-
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
26 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
28 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
29 * SOFTWARE.
-
30 */
-
31
-
32#pragma once
-
33
-
34#include <stdint.h>
-
35#include <stdbool.h>
-
36#include "dma_util.h"
-
37
-
38#ifndef _SAMD51_
-
39
-
-
40typedef struct {
-
41 uint8_t channel; // (0 to DMAC_CH_NUM-1, or 0xFF)
-
42 volatile dma_status_t jobStatus; // Last known DMA job status
-
43 bool hasDescriptors; // 'true' if one or more descriptors assigned
-
44 bool loopFlag; // 'true' if descriptor chain loops back to start
-
45 void (*callbacks[DMA_CALLBACK_N])(void *); // Callback function (is passed an instance of this struct)
- +
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2022 Joey Castillo
+
6 * Based heavily on Adafruit_ZeroDMA
+
7 * Written by Phil "PaintYourDragon" Burgess for Adafruit Industries,
+
8 * based partly on DMA insights from Atmel ASFCORE 3.
+
9 *
+
10 * Adafruit invests time and resources providing this open source code,
+
11 * please support Adafruit and open-source hardware by purchasing
+
12 * products from Adafruit!
+
13 *
+
14 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
15 * of this software and associated documentation files (the "Software"), to deal
+
16 * in the Software without restriction, including without limitation the rights
+
17 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
18 * copies of the Software, and to permit persons to whom the Software is
+
19 * furnished to do so, subject to the following conditions:
+
20 *
+
21 * The above copyright notice and this permission notice shall be included in all
+
22 * copies or substantial portions of the Software.
+
23 *
+
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
25 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
26 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
27 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
28 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
29 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
30 * SOFTWARE.
+
31 */
+
32
+
33#pragma once
+
34
+
35#include <stdint.h>
+
36#include <stdbool.h>
+
37#include "dma_util.h"
+
38
+
45#ifndef _SAMD51_
+
46
+
+
47typedef struct {
+
48 uint8_t channel; // (0 to DMAC_CH_NUM-1, or 0xFF)
+
49 volatile dma_status_t jobStatus; // Last known DMA job status
+
50 bool hasDescriptors; // 'true' if one or more descriptors assigned
+
51 bool loopFlag; // 'true' if descriptor chain loops back to start
+
52 void (*callbacks[DMA_CALLBACK_N])(void *); // Callback function (is passed an instance of this struct)
+
-
47
-
54void dma_init(void);
-
55
-
72bool dma_configure(gossamer_dma_job_t *dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags);
-
73
-
102DmacDescriptor *dma_add_descriptor(gossamer_dma_job_t *dmaJob, void *src, void *dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel);
-
103
-
104bool dma_start_job(gossamer_dma_job_t *dmaJob);
-
105
-
106#endif
-
Definition dma.h:40
+
54
+
61void dma_init(void);
+
62
+
79bool dma_configure(gossamer_dma_job_t *dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags);
+
80
+
109DmacDescriptor *dma_add_descriptor(gossamer_dma_job_t *dmaJob, void *src, void *dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel);
+
110
+
111bool dma_start_job(gossamer_dma_job_t *dmaJob);
+
112
+
113#endif
+
114
+
void dma_init(void)
Initialize the DMA system.
Definition dma.c:88
+
DmacDescriptor * dma_add_descriptor(gossamer_dma_job_t *dmaJob, void *src, void *dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel)
Adds a descriptor to a DMA job.
Definition dma.c:153
+
bool dma_configure(gossamer_dma_job_t *dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags)
Configures a DMA job.
Definition dma.c:112
+
Definition dma.h:47
+
- + diff --git a/dma__util_8h_source.html b/dma__util_8h_source.html index 96916d8..6a83062 100644 --- a/dma__util_8h_source.html +++ b/dma__util_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
+
+ +
+
+
+ +
- -
dma_util.h
-
1#ifndef DMA_UTIL_H_INCLUDED
-
2#define DMA_UTIL_H_INCLUDED
-
3
-
4#include "sam.h"
-
5
-
7#ifndef _SAMD51_
-
8
-
9typedef enum {
-
10 DMA_CONFIG_LOOP = 1 << 0,
-
11 DMA_CONFIG_RUNSTDBY = 1 << 1,
-
12} dma_configuration_flags_t;
-
13
-
14typedef enum {
-
15 DMA_INCREMENT_NONE = 0,
-
16 DMA_INCREMENT_SOURCE = (1 << 0),
-
17 DMA_INCREMENT_DESTINATION = (1 << 1),
-
18 DMA_INCREMENT_BOTH = (1 << 1) | (1 << 0),
-
19} dma_address_increment_t;
+
1#pragma once
+
2
+
3#include "sam.h"
+
4
+
6#ifndef _SAMD51_
+
7
+
8typedef enum {
+
9 DMA_CONFIG_LOOP = 1 << 0,
+
10 DMA_CONFIG_RUNSTDBY = 1 << 1,
+
11} dma_configuration_flags_t;
+
12
+
13typedef enum {
+
14 DMA_INCREMENT_NONE = 0,
+
15 DMA_INCREMENT_SOURCE = (1 << 0),
+
16 DMA_INCREMENT_DESTINATION = (1 << 1),
+
17 DMA_INCREMENT_BOTH = (1 << 1) | (1 << 0),
+
18} dma_address_increment_t;
+
19
20
-
21
-
22typedef enum {
-
23 DMA_TRIGGER_ACTION_BLOCK = DMAC_CHCTRLB_TRIGACT_BLOCK_Val,
-
24 DMA_TRIGGER_ACTION_BEAT = DMAC_CHCTRLB_TRIGACT_BEAT_Val,
-
25 DMA_TRIGGER_ACTION_TRANSACTION = DMAC_CHCTRLB_TRIGACT_TRANSACTION_Val,
-
26} dma_trigger_action_t;
-
27
-
28typedef enum {
-
29 // First item here is for any transfer errors. A transfer error is
-
30 // flagged if a bus error is detected during an AHB access or when
-
31 // the DMAC fetches an invalid descriptor
-
32 DMA_CALLBACK_TRANSFER_ERROR,
-
33 DMA_CALLBACK_TRANSFER_DONE,
-
34 DMA_CALLBACK_CHANNEL_SUSPEND,
-
35 DMA_CALLBACK_N, // Number of available callbacks
-
36} dma_callback_type_t;
-
37
-
38typedef enum {
-
39 DMA_BEAT_SIZE_BYTE = 0, // 8-bit
-
40 DMA_BEAT_SIZE_HWORD, // 16-bit
-
41 DMA_BEAT_SIZE_WORD, // 32-bit
-
42} dma_beat_size_t;
-
43
-
44typedef enum {
-
45 DMA_EVENT_OUTPUT_DISABLE = 0, // Disable event generation
-
46 DMA_EVENT_OUTPUT_BLOCK, // Event strobe when block xfer complete
-
47 DMA_EVENT_OUTPUT_RESERVED,
-
48 DMA_EVENT_OUTPUT_BEAT, // Event strobe when beat xfer complete
-
49} dma_event_output_selection_t;
-
50
-
51typedef enum {
-
52 DMA_BLOCK_ACTION_NONE = 0,
-
53 // Channel in normal operation and sets transfer complete interrupt
-
54 // flag after block transfer
-
55 DMA_BLOCK_ACTION_INTERRUPT,
-
56 // Trigger channel suspend after block transfer and sets channel
-
57 // suspend interrupt flag once the channel is suspended
-
58 DMA_BLOCK_ACTION_SUSPEND,
-
59 // Sets transfer complete interrupt flag after a block transfer and
-
60 // trigger channel suspend. The channel suspend interrupt flag will
-
61 // be set once the channel is suspended.
-
62 DMA_BLOCK_ACTION_INTERRUPT_AND_SUSPEND,
-
63} dma_block_action_t;
-
64
-
65// DMA step selection. This bit determines whether the step size setting
-
66// is applied to source or destination address.
-
67typedef enum {
-
68 DMA_STEPSEL_DESTINATION = 0,
-
69 DMA_STEPSEL_SOURCE,
-
70} dma_stepsel_t;
-
71
-
72// Address increment step size. These bits select the address increment step
-
73// size. The setting apply to source or destination address, depending on
-
74// STEPSEL setting.
-
75typedef enum {
-
76 DMA_STEPSIZE_1 = 0, // beat size * 1
-
77 DMA_STEPSIZE_2, // beat size * 2
-
78 DMA_STEPSIZE_4, // beat size * 4
-
79 DMA_STEPSIZE_8, // etc...
-
80 DMA_STEPSIZE_16,
-
81 DMA_STEPSIZE_32,
-
82 DMA_STEPSIZE_64,
-
83 DMA_STEPSIZE_128,
-
84} dma_stepsize_t;
-
85
-
86// higher numbers are higher priority
-
87typedef enum {
-
88 DMA_PRIORITY_0, // lowest (default)
-
89 DMA_PRIORITY_1,
-
90 DMA_PRIORITY_2,
-
91 DMA_PRIORITY_3, // highest
-
92} dma_priority_t;
+
21typedef enum {
+
22 DMA_TRIGGER_ACTION_BLOCK = DMAC_CHCTRLB_TRIGACT_BLOCK_Val,
+
23 DMA_TRIGGER_ACTION_BEAT = DMAC_CHCTRLB_TRIGACT_BEAT_Val,
+
24 DMA_TRIGGER_ACTION_TRANSACTION = DMAC_CHCTRLB_TRIGACT_TRANSACTION_Val,
+
25} dma_trigger_action_t;
+
26
+
27typedef enum {
+
28 // First item here is for any transfer errors. A transfer error is
+
29 // flagged if a bus error is detected during an AHB access or when
+
30 // the DMAC fetches an invalid descriptor
+
31 DMA_CALLBACK_TRANSFER_ERROR,
+
32 DMA_CALLBACK_TRANSFER_DONE,
+
33 DMA_CALLBACK_CHANNEL_SUSPEND,
+
34 DMA_CALLBACK_N, // Number of available callbacks
+
35} dma_callback_type_t;
+
36
+
37typedef enum {
+
38 DMA_BEAT_SIZE_BYTE = 0, // 8-bit
+
39 DMA_BEAT_SIZE_HWORD, // 16-bit
+
40 DMA_BEAT_SIZE_WORD, // 32-bit
+
41} dma_beat_size_t;
+
42
+
43typedef enum {
+
44 DMA_EVENT_OUTPUT_DISABLE = 0, // Disable event generation
+
45 DMA_EVENT_OUTPUT_BLOCK, // Event strobe when block xfer complete
+
46 DMA_EVENT_OUTPUT_RESERVED,
+
47 DMA_EVENT_OUTPUT_BEAT, // Event strobe when beat xfer complete
+
48} dma_event_output_selection_t;
+
49
+
50typedef enum {
+
51 DMA_BLOCK_ACTION_NONE = 0,
+
52 // Channel in normal operation and sets transfer complete interrupt
+
53 // flag after block transfer
+
54 DMA_BLOCK_ACTION_INTERRUPT,
+
55 // Trigger channel suspend after block transfer and sets channel
+
56 // suspend interrupt flag once the channel is suspended
+
57 DMA_BLOCK_ACTION_SUSPEND,
+
58 // Sets transfer complete interrupt flag after a block transfer and
+
59 // trigger channel suspend. The channel suspend interrupt flag will
+
60 // be set once the channel is suspended.
+
61 DMA_BLOCK_ACTION_INTERRUPT_AND_SUSPEND,
+
62} dma_block_action_t;
+
63
+
64// DMA step selection. This bit determines whether the step size setting
+
65// is applied to source or destination address.
+
66typedef enum {
+
67 DMA_STEPSEL_DESTINATION = 0,
+
68 DMA_STEPSEL_SOURCE,
+
69} dma_stepsel_t;
+
70
+
71// Address increment step size. These bits select the address increment step
+
72// size. The setting apply to source or destination address, depending on
+
73// STEPSEL setting.
+
74typedef enum {
+
75 DMA_STEPSIZE_1 = 0, // beat size * 1
+
76 DMA_STEPSIZE_2, // beat size * 2
+
77 DMA_STEPSIZE_4, // beat size * 4
+
78 DMA_STEPSIZE_8, // etc...
+
79 DMA_STEPSIZE_16,
+
80 DMA_STEPSIZE_32,
+
81 DMA_STEPSIZE_64,
+
82 DMA_STEPSIZE_128,
+
83} dma_stepsize_t;
+
84
+
85// higher numbers are higher priority
+
86typedef enum {
+
87 DMA_PRIORITY_0, // lowest (default)
+
88 DMA_PRIORITY_1,
+
89 DMA_PRIORITY_2,
+
90 DMA_PRIORITY_3, // highest
+
91} dma_priority_t;
+
92
93
-
94
-
95typedef enum {
-
96 DMA_STATUS_OK = 0,
-
97 DMA_STATUS_ERR_NOT_FOUND,
-
98 DMA_STATUS_ERR_NOT_INITIALIZED,
-
99 DMA_STATUS_ERR_INVALID_ARG,
-
100 DMA_STATUS_ERR_IO,
-
101 DMA_STATUS_ERR_TIMEOUT,
-
102 DMA_STATUS_BUSY,
-
103 DMA_STATUS_SUSPEND,
-
104 DMA_STATUS_ABORTED,
-
105 DMA_STATUS_JOBSTATUS = -1 // For printStatus() function
-
106} dma_status_t;
-
107
-
108#endif
-
109
-
110#endif // DMA_UTIL_H_INCLUDED
+
94typedef enum {
+
95 DMA_STATUS_OK = 0,
+
96 DMA_STATUS_ERR_NOT_FOUND,
+
97 DMA_STATUS_ERR_NOT_INITIALIZED,
+
98 DMA_STATUS_ERR_INVALID_ARG,
+
99 DMA_STATUS_ERR_IO,
+
100 DMA_STATUS_ERR_TIMEOUT,
+
101 DMA_STATUS_BUSY,
+
102 DMA_STATUS_SUSPEND,
+
103 DMA_STATUS_ABORTED,
+
104 DMA_STATUS_JOBSTATUS = -1 // For printStatus() function
+
105} dma_status_t;
+
106
+
107#endif
+
- + diff --git a/doxygen.css b/doxygen.css index 009a9b5..8cff99e 100644 --- a/doxygen.css +++ b/doxygen.css @@ -1,356 +1,14 @@ /* The standard CSS for doxygen 1.9.8*/ -html { -/* page base colors */ ---page-background-color: white; ---page-foreground-color: black; ---page-link-color: #3D578C; ---page-visited-link-color: #4665A2; - -/* index */ ---index-odd-item-bg-color: #F8F9FC; ---index-even-item-bg-color: white; ---index-header-color: black; ---index-separator-color: #A0A0A0; - -/* header */ ---header-background-color: #F9FAFC; ---header-separator-color: #C4CFE5; ---header-gradient-image: url('nav_h.png'); ---group-header-separator-color: #879ECB; ---group-header-color: #354C7B; ---inherit-header-color: gray; - ---footer-foreground-color: #2A3D61; ---footer-logo-width: 104px; ---citation-label-color: #334975; ---glow-color: cyan; - ---title-background-color: white; ---title-separator-color: #5373B4; ---directory-separator-color: #9CAFD4; ---separator-color: #4A6AAA; - ---blockquote-background-color: #F7F8FB; ---blockquote-border-color: #9CAFD4; - ---scrollbar-thumb-color: #9CAFD4; ---scrollbar-background-color: #F9FAFC; - ---icon-background-color: #728DC1; ---icon-foreground-color: white; ---icon-doc-image: url('doc.svg'); ---icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #F9FAFC; ---memdecl-separator-color: #DEE4F0; ---memdecl-foreground-color: #555; ---memdecl-template-color: #4665A2; - -/* detailed member list */ ---memdef-border-color: #A8B8D9; ---memdef-title-background-color: #E2E8F2; ---memdef-title-gradient-image: url('nav_f.png'); ---memdef-proto-background-color: #DFE5F1; ---memdef-proto-text-color: #253555; ---memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---memdef-doc-background-color: white; ---memdef-param-name-color: #602020; ---memdef-template-color: #4665A2; - -/* tables */ ---table-cell-border-color: #2D4068; ---table-header-background-color: #374F7F; ---table-header-foreground-color: #FFFFFF; - -/* labels */ ---label-background-color: #728DC1; ---label-left-top-border-color: #5373B4; ---label-right-bottom-border-color: #C4CFE5; ---label-foreground-color: white; - -/** navigation bar/tree/menu */ ---nav-background-color: #F9FAFC; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_b.png'); ---nav-gradient-hover-image: url('tab_h.png'); ---nav-gradient-active-image: url('tab_a.png'); ---nav-gradient-active-image-parent: url("../tab_a.png"); ---nav-separator-image: url('tab_s.png'); ---nav-breadcrumb-image: url('bc_s.png'); ---nav-breadcrumb-border-color: #C2CDE4; ---nav-splitbar-image: url('splitbar.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #283A5D; ---nav-text-hover-color: white; ---nav-text-active-color: white; ---nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #364D7C; ---nav-menu-background-color: white; ---nav-menu-foreground-color: #555555; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.5); ---nav-arrow-color: #9CAFD4; ---nav-arrow-selected-color: #9CAFD4; - -/* table of contents */ ---toc-background-color: #F4F6FA; ---toc-border-color: #D8DFEE; ---toc-header-color: #4665A2; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: white; ---search-foreground-color: #909090; ---search-magnification-image: url('mag.svg'); ---search-magnification-select-image: url('mag_sel.svg'); ---search-active-color: black; ---search-filter-background-color: #F9FAFC; ---search-filter-foreground-color: black; ---search-filter-border-color: #90A5CE; ---search-filter-highlight-text-color: white; ---search-filter-highlight-bg-color: #3D578C; ---search-results-foreground-color: #425E97; ---search-results-background-color: #EEF1F7; ---search-results-border-color: black; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #555; - -/** code fragments */ ---code-keyword-color: #008000; ---code-type-keyword-color: #604020; ---code-flow-keyword-color: #E08000; ---code-comment-color: #800000; ---code-preprocessor-color: #806020; ---code-string-literal-color: #002080; ---code-char-literal-color: #008080; ---code-xml-cdata-color: black; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #000000; ---code-vhdl-keyword-color: #700070; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #4665A2; ---code-external-link-color: #4665A2; ---fragment-foreground-color: black; ---fragment-background-color: #FBFCFD; ---fragment-border-color: #C4CFE5; ---fragment-lineno-border-color: #00FF00; ---fragment-lineno-background-color: #E8E8E8; ---fragment-lineno-foreground-color: black; ---fragment-lineno-link-fg-color: #4665A2; ---fragment-lineno-link-bg-color: #D8D8D8; ---fragment-lineno-link-hover-fg-color: #4665A2; ---fragment-lineno-link-hover-bg-color: #C8C8C8; ---tooltip-foreground-color: black; ---tooltip-background-color: white; ---tooltip-border-color: gray; ---tooltip-doc-color: grey; ---tooltip-declaration-color: #006318; ---tooltip-link-color: #4665A2; ---tooltip-shadow: 1px 1px 7px gray; ---fold-line-color: #808080; ---fold-minus-image: url('minus.svg'); ---fold-plus-image: url('plus.svg'); ---fold-minus-image-relpath: url('../../minus.svg'); ---fold-plus-image-relpath: url('../../plus.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -} - -@media (prefers-color-scheme: dark) { - html:not(.dark-mode) { - color-scheme: dark; - -/* page base colors */ ---page-background-color: black; ---page-foreground-color: #C9D1D9; ---page-link-color: #90A5CE; ---page-visited-link-color: #A3B4D7; - -/* index */ ---index-odd-item-bg-color: #0B101A; ---index-even-item-bg-color: black; ---index-header-color: #C4CFE5; ---index-separator-color: #334975; - -/* header */ ---header-background-color: #070B11; ---header-separator-color: #141C2E; ---header-gradient-image: url('nav_hd.png'); ---group-header-separator-color: #283A5D; ---group-header-color: #90A5CE; ---inherit-header-color: #A0A0A0; - ---footer-foreground-color: #5B7AB7; ---footer-logo-width: 60px; ---citation-label-color: #90A5CE; ---glow-color: cyan; - ---title-background-color: #090D16; ---title-separator-color: #354C79; ---directory-separator-color: #283A5D; ---separator-color: #283A5D; - ---blockquote-background-color: #101826; ---blockquote-border-color: #283A5D; - ---scrollbar-thumb-color: #283A5D; ---scrollbar-background-color: #070B11; - ---icon-background-color: #334975; ---icon-foreground-color: #C4CFE5; ---icon-doc-image: url('docd.svg'); ---icon-folder-open-image: url('folderopend.svg'); ---icon-folder-closed-image: url('folderclosedd.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #0B101A; ---memdecl-separator-color: #2C3F65; ---memdecl-foreground-color: #BBB; ---memdecl-template-color: #7C95C6; - -/* detailed member list */ ---memdef-border-color: #233250; ---memdef-title-background-color: #1B2840; ---memdef-title-gradient-image: url('nav_fd.png'); ---memdef-proto-background-color: #19243A; ---memdef-proto-text-color: #9DB0D4; ---memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); ---memdef-doc-background-color: black; ---memdef-param-name-color: #D28757; ---memdef-template-color: #7C95C6; - -/* tables */ ---table-cell-border-color: #283A5D; ---table-header-background-color: #283A5D; ---table-header-foreground-color: #C4CFE5; - -/* labels */ ---label-background-color: #354C7B; ---label-left-top-border-color: #4665A2; ---label-right-bottom-border-color: #283A5D; ---label-foreground-color: #CCCCCC; - -/** navigation bar/tree/menu */ ---nav-background-color: #101826; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_bd.png'); ---nav-gradient-hover-image: url('tab_hd.png'); ---nav-gradient-active-image: url('tab_ad.png'); ---nav-gradient-active-image-parent: url("../tab_ad.png"); ---nav-separator-image: url('tab_sd.png'); ---nav-breadcrumb-image: url('bc_sd.png'); ---nav-breadcrumb-border-color: #2A3D61; ---nav-splitbar-image: url('splitbard.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #B6C4DF; ---nav-text-hover-color: #DCE2EF; ---nav-text-active-color: #DCE2EF; ---nav-text-normal-shadow: 0px 1px 1px black; ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #B6C4DF; ---nav-menu-background-color: #05070C; ---nav-menu-foreground-color: #BBBBBB; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.2); ---nav-arrow-color: #334975; ---nav-arrow-selected-color: #90A5CE; - -/* table of contents */ ---toc-background-color: #151E30; ---toc-border-color: #202E4A; ---toc-header-color: #A3B4D7; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: black; ---search-foreground-color: #C5C5C5; ---search-magnification-image: url('mag_d.svg'); ---search-magnification-select-image: url('mag_seld.svg'); ---search-active-color: #C5C5C5; ---search-filter-background-color: #101826; ---search-filter-foreground-color: #90A5CE; ---search-filter-border-color: #7C95C6; ---search-filter-highlight-text-color: #BCC9E2; ---search-filter-highlight-bg-color: #283A5D; ---search-results-background-color: #101826; ---search-results-foreground-color: #90A5CE; ---search-results-border-color: #7C95C6; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; - -/** code fragments */ ---code-keyword-color: #CC99CD; ---code-type-keyword-color: #AB99CD; ---code-flow-keyword-color: #E08000; ---code-comment-color: #717790; ---code-preprocessor-color: #65CABE; ---code-string-literal-color: #7EC699; ---code-char-literal-color: #00E0F0; ---code-xml-cdata-color: #C9D1D9; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #C0C0C0; ---code-vhdl-keyword-color: #CF53C9; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #79C0FF; ---code-external-link-color: #79C0FF; ---fragment-foreground-color: #C9D1D9; ---fragment-background-color: black; ---fragment-border-color: #30363D; ---fragment-lineno-border-color: #30363D; ---fragment-lineno-background-color: black; ---fragment-lineno-foreground-color: #6E7681; ---fragment-lineno-link-fg-color: #6E7681; ---fragment-lineno-link-bg-color: #303030; ---fragment-lineno-link-hover-fg-color: #8E96A1; ---fragment-lineno-link-hover-bg-color: #505050; ---tooltip-foreground-color: #C9D1D9; ---tooltip-background-color: #202020; ---tooltip-border-color: #C9D1D9; ---tooltip-doc-color: #D9E1E9; ---tooltip-declaration-color: #20C348; ---tooltip-link-color: #79C0FF; ---tooltip-shadow: none; ---fold-line-color: #808080; ---fold-minus-image: url('minusd.svg'); ---fold-plus-image: url('plusd.svg'); ---fold-minus-image-relpath: url('../../minusd.svg'); ---fold-plus-image-relpath: url('../../plusd.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -}} body { - background-color: var(--page-background-color); - color: var(--page-foreground-color); + background-color: white; + color: black; } body, table, div, p, dl { font-weight: 400; font-size: 14px; - font-family: var(--font-family-normal); + font-family: Roboto,sans-serif; line-height: 22px; } @@ -359,7 +17,7 @@ body, table, div, p, dl { .title { font-weight: 400; font-size: 14px; - font-family: var(--font-family-normal); + font-family: Roboto,sans-serif; line-height: 28px; font-size: 150%; font-weight: bold; @@ -371,8 +29,8 @@ h1.groupheader { } h2.groupheader { - border-bottom: 1px solid var(--group-header-separator-color); - color: var(--group-header-color); + border-bottom: 1px solid #879ECB; + color: #354C7B; font-size: 150%; font-weight: normal; margin-top: 1.75em; @@ -395,7 +53,7 @@ h1, h2, h3, h4, h5, h6 { } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px var(--glow-color); + text-shadow: 0 0 15px cyan; } dt { @@ -468,15 +126,15 @@ td.navtab { } td.navtabHL { - background-image: var(--nav-gradient-active-image); + background-image: url('tab_a.png'); background-repeat:repeat-x; padding-right: 6px; padding-left: 6px; } td.navtabHL a, td.navtabHL a:visited { - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); } a.navtab { @@ -488,7 +146,7 @@ div.qindex{ width: 100%; line-height: 140%; font-size: 130%; - color: var(--index-separator-color); + color: #A0A0A0; } #main-menu a:focus { @@ -503,7 +161,7 @@ dt.alphachar{ } .alphachar a{ - color: var(--index-header-color); + color: black; } .alphachar a:hover, .alphachar a:visited{ @@ -523,11 +181,11 @@ dt.alphachar{ } .classindex dl.even { - background-color: var(--index-even-item-bg-color); + background-color: white; } .classindex dl.odd { - background-color: var(--index-odd-item-bg-color); + background-color: #F8F9FC; } @media(min-width: 1120px) { @@ -546,13 +204,13 @@ dt.alphachar{ /* @group Link Styling */ a { - color: var(--page-link-color); + color: #3D578C; font-weight: normal; text-decoration: none; } .contents a:visited { - color: var(--page-visited-link-color); + color: #4665A2; } a:hover { @@ -567,11 +225,11 @@ a.elRef { } a.code, a.code:visited, a.line, a.line:visited { - color: var(--code-link-color); + color: #4665A2; } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: var(--code-external-link-color); + color: #4665A2; } a.code.hl_class { /* style for links to class names in code snippets */ } @@ -637,29 +295,29 @@ ul.multicol { } pre.fragment { - border: 1px solid var(--fragment-border-color); - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + color: black; padding: 4px 6px; margin: 4px 8px 4px 2px; overflow: auto; word-wrap: break-word; font-size: 9pt; line-height: 125%; - font-family: var(--font-family-monospace); + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; font-size: 105%; } div.fragment { padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ margin: 4px 8px 4px 2px; - color: var(--fragment-foreground-color); - background-color: var(--fragment-background-color); - border: 1px solid var(--fragment-border-color); + color: black; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; } div.line { - font-family: var(--font-family-monospace); + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; font-size: 13px; min-height: 13px; line-height: 1.2; @@ -691,8 +349,8 @@ div.line:after { } div.line.glow { - background-color: var(--glow-color); - box-shadow: 0 0 10px var(--glow-color); + background-color: cyan; + box-shadow: 0 0 10px cyan; } span.fold { @@ -712,19 +370,19 @@ span.lineno { padding-right: 4px; margin-right: 9px; text-align: right; - border-right: 2px solid var(--fragment-lineno-border-color); - color: var(--fragment-lineno-foreground-color); - background-color: var(--fragment-lineno-background-color); + border-right: 2px solid #00FF00; + color: black; + background-color: #E8E8E8; white-space: pre; } span.lineno a, span.lineno a:visited { - color: var(--fragment-lineno-link-fg-color); - background-color: var(--fragment-lineno-link-bg-color); + color: #4665A2; + background-color: #D8D8D8; } span.lineno a:hover { - color: var(--fragment-lineno-link-hover-fg-color); - background-color: var(--fragment-lineno-link-hover-bg-color); + color: #4665A2; + background-color: #C8C8C8; } .lineno { @@ -757,7 +415,7 @@ div.groupText { } body { - color: var(--page-foreground-color); + color: black; margin: 0; } @@ -805,11 +463,11 @@ address.footer { img.footer { border: 0px; vertical-align: middle; - width: var(--footer-logo-width); + width: 104px; } .compoundTemplParams { - color: var(--memdecl-template-color); + color: #4665A2; font-size: 80%; line-height: 120%; } @@ -817,56 +475,56 @@ img.footer { /* @group Code Colorization */ span.keyword { - color: var(--code-keyword-color); + color: #008000; } span.keywordtype { - color: var(--code-type-keyword-color); + color: #604020; } span.keywordflow { - color: var(--code-flow-keyword-color); + color: #E08000; } span.comment { - color: var(--code-comment-color); + color: #800000; } span.preprocessor { - color: var(--code-preprocessor-color); + color: #806020; } span.stringliteral { - color: var(--code-string-literal-color); + color: #002080; } span.charliteral { - color: var(--code-char-literal-color); + color: #008080; } span.xmlcdata { - color: var(--code-xml-cdata-color); + color: black; } span.vhdldigit { - color: var(--code-vhdl-digit-color); + color: #FF00FF; } span.vhdlchar { - color: var(--code-vhdl-char-color); + color: #000000; } span.vhdlkeyword { - color: var(--code-vhdl-keyword-color); + color: #700070; } span.vhdllogic { - color: var(--code-vhdl-logic-color); + color: #FF0000; } blockquote { - background-color: var(--blockquote-background-color); - border-left: 2px solid var(--blockquote-border-color); + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; margin: 0 24px 0 4px; padding: 0 12px 0 16px; } @@ -880,19 +538,19 @@ td.tiny { .dirtab { padding: 4px; border-collapse: collapse; - border: 1px solid var(--table-cell-border-color); + border: 1px solid #2D4068; } th.dirtab { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); + background-color: #374F7F; + color: #FFFFFF; font-weight: bold; } hr { height: 0px; border: none; - border-top: 1px solid var(--separator-color); + border-top: 1px solid #4A6AAA; } hr.footer { @@ -920,14 +578,14 @@ table.memberdecls { } .memberdecls td.glow, .fieldtable tr.glow { - background-color: var(--glow-color); - box-shadow: 0 0 15px var(--glow-color); + background-color: cyan; + box-shadow: 0 0 15px cyan; } .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: var(--memdecl-background-color); + background-color: #F9FAFC; border: none; margin: 4px; padding: 1px 0 0 8px; @@ -935,11 +593,11 @@ table.memberdecls { .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; - color: var(--memdecl-foreground-color); + color: #555; } .memSeparator { - border-bottom: 1px solid var(--memdecl-separator-color); + border-bottom: 1px solid #DEE4F0; line-height: 1px; margin: 0px; padding: 0px; @@ -954,7 +612,7 @@ table.memberdecls { } .memTemplParams { - color: var(--memdecl-template-color); + color: #4665A2; white-space: nowrap; font-size: 80%; } @@ -967,15 +625,15 @@ table.memberdecls { .memtitle { padding: 8px; - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; border-top-right-radius: 4px; border-top-left-radius: 4px; margin-bottom: -1px; - background-image: var(--memdef-title-gradient-image); + background-image: url('nav_f.png'); background-repeat: repeat-x; - background-color: var(--memdef-title-background-color); + background-color: #E2E8F2; line-height: 1.25; font-weight: 300; float:left; @@ -990,7 +648,7 @@ table.memberdecls { .memtemplate { font-size: 80%; - color: var(--memdef-template-color); + color: #4665A2; font-weight: normal; margin-left: 9px; } @@ -1013,7 +671,7 @@ table.memberdecls { } .memitem.glow { - box-shadow: 0 0 15px var(--glow-color); + box-shadow: 0 0 15px cyan; } .memname { @@ -1026,32 +684,32 @@ table.memberdecls { } .memproto, dl.reflist dt { - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; padding: 6px 0px 6px 0px; - color: var(--memdef-proto-text-color); + color: #253555; font-weight: bold; - text-shadow: var(--memdef-proto-text-shadow); - background-color: var(--memdef-proto-background-color); + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); border-top-right-radius: 4px; } .overload { - font-family: var(--font-family-monospace); + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; font-size: 65%; } .memdoc, dl.reflist dd { - border-bottom: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; padding: 6px 10px 2px 10px; border-top-width: 0; background-image:url('nav_g.png'); background-repeat:repeat-x; - background-color: var(--memdef-doc-background-color); + background-color: white; /* opera specific markup */ border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; @@ -1084,7 +742,7 @@ dl.reflist dd { } .paramname { - color: var(--memdef-param-name-color); + color: #602020; white-space: nowrap; } .paramname em { @@ -1110,7 +768,7 @@ dl.reflist dd { } .params .paramdir, .tparams .paramdir { - font-family: var(--font-family-monospace); + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; vertical-align: top; } @@ -1134,13 +792,13 @@ span.mlabels { } span.mlabel { - background-color: var(--label-background-color); - border-top:1px solid var(--label-left-top-border-color); - border-left:1px solid var(--label-left-top-border-color); - border-right:1px solid var(--label-right-bottom-border-color); - border-bottom:1px solid var(--label-right-bottom-border-color); + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; text-shadow: none; - color: var(--label-foreground-color); + color: white; margin-right: 4px; padding: 2px 3px; border-radius: 3px; @@ -1157,8 +815,8 @@ span.mlabel { div.directory { margin: 10px 0px; - border-top: 1px solid var(--directory-separator-color); - border-bottom: 1px solid var(--directory-separator-color); + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; width: 100%; } @@ -1196,12 +854,12 @@ div.directory { .directory tr.odd { padding-left: 6px; - background-color: var(--index-odd-item-bg-color); + background-color: #F8F9FC; } .directory tr.even { padding-left: 6px; - background-color: var(--index-even-item-bg-color); + background-color: white; } .directory img { @@ -1219,11 +877,11 @@ div.directory { cursor: pointer; padding-left: 2px; padding-right: 2px; - color: var(--page-link-color); + color: #3D578C; } .arrow { - color: var(--nav-arrow-color); + color: #9CAFD4; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; @@ -1237,15 +895,15 @@ div.directory { } .icon { - font-family: var(--font-family-icon); + font-family: Arial,Helvetica; line-height: normal; font-weight: bold; font-size: 12px; height: 14px; width: 16px; display: inline-block; - background-color: var(--icon-background-color); - color: var(--icon-foreground-color); + background-color: #728DC1; + color: white; text-align: center; border-radius: 4px; margin-left: 2px; @@ -1262,7 +920,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:var(--icon-folder-open-image); + background-image:url('folderopen.svg'); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -1272,7 +930,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:var(--icon-folder-closed-image); + background-image:url('folderclosed.svg'); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -1282,7 +940,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:var(--icon-doc-image); + background-image:url('doc.svg'); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; @@ -1303,7 +961,7 @@ div.dynheader { address { font-style: normal; - color: var(--footer-foreground-color); + color: #2A3D61; } table.doxtable caption { @@ -1317,13 +975,13 @@ table.doxtable { } table.doxtable td, table.doxtable th { - border: 1px solid var(--table-cell-border-color); + border: 1px solid #2D4068; padding: 3px 7px 2px; } table.doxtable th { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); + background-color: #374F7F; + color: #FFFFFF; font-size: 110%; padding-bottom: 4px; padding-top: 5px; @@ -1331,7 +989,7 @@ table.doxtable th { table.fieldtable { margin-bottom: 10px; - border: 1px solid var(--memdef-border-color); + border: 1px solid #A8B8D9; border-spacing: 0px; border-radius: 4px; box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); @@ -1343,8 +1001,8 @@ table.fieldtable { .fieldtable td.fieldtype, .fieldtable td.fieldname { white-space: nowrap; - border-right: 1px solid var(--memdef-border-color); - border-bottom: 1px solid var(--memdef-border-color); + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; vertical-align: top; } @@ -1353,7 +1011,7 @@ table.fieldtable { } .fieldtable td.fielddoc { - border-bottom: 1px solid var(--memdef-border-color); + border-bottom: 1px solid #A8B8D9; } .fieldtable td.fielddoc p:first-child { @@ -1369,18 +1027,18 @@ table.fieldtable { } .fieldtable th { - background-image: var(--memdef-title-gradient-image); + background-image: url('nav_f.png'); background-repeat:repeat-x; - background-color: var(--memdef-title-background-color); + background-color: #E2E8F2; font-size: 90%; - color: var(--memdef-proto-text-color); + color: #253555; padding-bottom: 4px; padding-top: 5px; text-align:left; font-weight: 400; border-top-left-radius: 4px; border-top-right-radius: 4px; - border-bottom: 1px solid var(--memdef-border-color); + border-bottom: 1px solid #A8B8D9; } @@ -1388,7 +1046,7 @@ table.fieldtable { top: 0px; left: 10px; height: 36px; - background-image: var(--nav-gradient-image); + background-image: url('tab_b.png'); z-index: 101; overflow: hidden; font-size: 13px; @@ -1397,13 +1055,13 @@ table.fieldtable { .navpath ul { font-size: 11px; - background-image: var(--nav-gradient-image); + background-image: url('tab_b.png'); background-repeat:repeat-x; background-position: 0 -5px; height:30px; line-height:30px; - color:var(--nav-text-normal-color); - border:solid 1px var(--nav-breadcrumb-border-color); + color:#283A5D; + border:solid 1px #C2CDE4; overflow:hidden; margin:0px; padding:0px; @@ -1415,10 +1073,10 @@ table.fieldtable { float:left; padding-left:10px; padding-right:15px; - background-image:var(--nav-breadcrumb-image); + background-image:url('bc_s.png'); background-repeat:no-repeat; background-position:right; - color: var(--nav-foreground-color); + color: #364D7C; } .navpath li.navelem a @@ -1427,16 +1085,16 @@ table.fieldtable { display:block; text-decoration: none; outline: none; - color: var(--nav-text-normal-color); - font-family: var(--font-family-nav); - text-shadow: var(--nav-text-normal-shadow); + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); text-decoration: none; } .navpath li.navelem a:hover { - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); } .navpath li.footer @@ -1448,7 +1106,7 @@ table.fieldtable { background-image:none; background-repeat:no-repeat; background-position:right; - color: var(--footer-foreground-color); + color: #2A3D61; font-size: 8pt; } @@ -1493,11 +1151,11 @@ div.ingroups a div.header { - background-image: var(--header-gradient-image); + background-image: url('nav_h.png'); background-repeat:repeat-x; - background-color: var(--header-background-color); + background-color: #F9FAFC; margin: 0px; - border-bottom: 1px solid var(--header-separator-color); + border-bottom: 1px solid #C4CFE5; } div.headertitle @@ -1600,7 +1258,7 @@ dl.section dd { #projectname { font-size: 200%; - font-family: var(--font-family-title); + font-family: Tahoma,Arial,sans-serif; margin: 0px; padding: 2px 0px; } @@ -1608,7 +1266,7 @@ dl.section dd { #projectbrief { font-size: 90%; - font-family: var(--font-family-title); + font-family: Tahoma,Arial,sans-serif; margin: 0px; padding: 0px; } @@ -1616,7 +1274,7 @@ dl.section dd { #projectnumber { font-size: 50%; - font-family: 50% var(--font-family-title); + font-family: 50% Tahoma,Arial,sans-serif; margin: 0px; padding: 0px; } @@ -1626,8 +1284,8 @@ dl.section dd { padding: 0px; margin: 0px; width: 100%; - border-bottom: 1px solid var(--title-separator-color); - background-color: var(--title-background-color); + border-bottom: 1px solid #5373B4; + background-color: white; } .image @@ -1665,7 +1323,7 @@ dl.citelist { } dl.citelist dt { - color:var(--citation-label-color); + color:#334975; float:left; font-weight:bold; margin-right:10px; @@ -1681,8 +1339,8 @@ dl.citelist dd { div.toc { padding: 14px 25px; - background-color: var(--toc-background-color); - border: 1px solid var(--toc-border-color); + background-color: #F4F6FA; + border: 1px solid #D8DFEE; border-radius: 7px 7px 7px 7px; float: right; height: auto; @@ -1691,16 +1349,16 @@ div.toc { } div.toc li { - background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; - font: 10px/1.2 var(--font-family-toc); + background: url("data:image/svg+xml;utf8,&%238595;") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; margin-top: 5px; padding-left: 10px; padding-top: 2px; } div.toc h3 { - font: bold 12px/1.2 var(--font-family-toc); - color: var(--toc-header-color); + font: bold 12px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + color: #4665A2; border-bottom: 0 none; margin: 0; } @@ -1739,7 +1397,7 @@ span.obfuscator { .inherit_header { font-weight: bold; - color: var(--inherit-header-color); + color: gray; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; @@ -1772,11 +1430,11 @@ tr.heading h2 { #powerTip { cursor: default; /*white-space: nowrap;*/ - color: var(--tooltip-foreground-color); - background-color: var(--tooltip-background-color); - border: 1px solid var(--tooltip-border-color); + color: black; + background-color: white; + border: 1px solid gray; border-radius: 4px 4px 4px 4px; - box-shadow: var(--tooltip-shadow); + box-shadow: 1px 1px 7px gray; display: none; font-size: smaller; max-width: 80%; @@ -1787,7 +1445,7 @@ tr.heading h2 { } #powerTip div.ttdoc { - color: var(--tooltip-doc-color); + color: grey; font-style: italic; } @@ -1796,7 +1454,7 @@ tr.heading h2 { } #powerTip a { - color: var(--tooltip-link-color); + color: #4665A2; } #powerTip div.ttname { @@ -1804,14 +1462,14 @@ tr.heading h2 { } #powerTip div.ttdeci { - color: var(--tooltip-declaration-color); + color: #006318; } #powerTip div { margin: 0px; padding: 0px; font-size: 12px; - font-family: var(--font-family-tooltip); + font-family: Roboto,sans-serif; line-height: 16px; } @@ -1857,12 +1515,12 @@ tr.heading h2 { } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: var(--tooltip-background-color); + border-top-color: white; border-width: 10px; margin: 0px -10px; } #powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { - border-top-color: var(--tooltip-border-color); + border-top-color: gray; border-width: 11px; margin: 0px -11px; } @@ -1885,13 +1543,13 @@ tr.heading h2 { } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: var(--tooltip-background-color); + border-bottom-color: white; border-width: 10px; margin: 0px -10px; } #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: var(--tooltip-border-color); + border-bottom-color: gray; border-width: 11px; margin: 0px -11px; } @@ -1912,13 +1570,13 @@ tr.heading h2 { left: 100%; } #powerTip.e:after { - border-left-color: var(--tooltip-border-color); + border-left-color: gray; border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.e:before { - border-left-color: var(--tooltip-border-color); + border-left-color: gray; border-width: 11px; top: 50%; margin-top: -11px; @@ -1928,13 +1586,13 @@ tr.heading h2 { right: 100%; } #powerTip.w:after { - border-right-color: var(--tooltip-border-color); + border-right-color: gray; border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.w:before { - border-right-color: var(--tooltip-border-color); + border-right-color: gray; border-width: 11px; top: 50%; margin-top: -11px; @@ -1968,7 +1626,7 @@ table.markdownTable { } table.markdownTable td, table.markdownTable th { - border: 1px solid var(--table-cell-border-color); + border: 1px solid #2D4068; padding: 3px 7px 2px; } @@ -1976,8 +1634,8 @@ table.markdownTable tr { } th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); + background-color: #374F7F; + color: #FFFFFF; font-size: 110%; padding-bottom: 4px; padding-top: 5px; @@ -2025,21 +1683,3 @@ details[open]>summary::before { font-size: 80%; } -body { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); -} - -::-webkit-scrollbar { - background-color: var(--scrollbar-background-color); - height: 12px; - width: 12px; -} -::-webkit-scrollbar-thumb { - border-radius: 6px; - box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); - border: solid 2px transparent; -} -::-webkit-scrollbar-corner { - background-color: var(--scrollbar-background-color); -} - diff --git a/dynsections.js b/dynsections.js index b73c828..ee3f142 100644 --- a/dynsections.js +++ b/dynsections.js @@ -123,8 +123,8 @@ function toggleInherit(id) var opened=true; // in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes -var plusImg = [ "var(--fold-plus-image)", "var(--fold-plus-image-relpath)" ]; -var minusImg = [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ]; +var plusImg = [ "url('plus.svg')", "url('../../plus.svg')" ]; +var minusImg = [ "url('minus.svg')", "url('../../minus.svg')" ]; // toggle all folding blocks function codefold_toggle_all(relPath) { @@ -151,7 +151,7 @@ function init_codefold(relPath) { 'margin-right':'2px', 'display':'inline-block', 'width':'54px', - 'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%' + 'background':'linear-gradient(#808080,#808080) no-repeat 46px/2px 100%' }); // add global toggle to first line $('span[class=lineno]:first').append(' - - - - - - -gossamer: common/eic.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
eic.h File Reference
-
-
- -

External Interrupt Controller. -More...

-
#include <stdint.h>
-#include <stdbool.h>
-
-

Go to the source code of this file.

- - - - - - - -

-Typedefs

-typedef enum eic_interrupt_trigger_t eic_interrupt_trigger_t
 An enum defining the types of interrupt trigger you wish to scan for.
 
-typedef void(* eic_cb_t) (uint8_t channel)
 
- - - - -

-Enumerations

enum  eic_interrupt_trigger_t { INTERRUPT_TRIGGER_NONE = 0 -, INTERRUPT_TRIGGER_RISING -, INTERRUPT_TRIGGER_FALLING -, INTERRUPT_TRIGGER_BOTH - }
 An enum defining the types of interrupt trigger you wish to scan for.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-void eic_init (void)
 Initializes the external interrupt controller, but does not enable it.
 
-void eic_enable (void)
 Enables the external interrupt controller.
 
int8_t eic_configure_pin (const uint8_t pin, eic_interrupt_trigger_t trigger)
 Configures an external interrupt on one of the external interrupt pins.
 
bool eic_enable_interrupt (const uint8_t pin)
 Enables an interrupt on the given interrupt channel.
 
bool eic_disable_interrupt (const uint8_t pin)
 Disables the interrupt on the given interrupt channel.
 
bool eic_enable_event (const uint8_t pin)
 Enables an interrupt on the given interrupt channel.
 
bool eic_disable_event (const uint8_t pin)
 Disables the interrupt on the given interrupt channel.
 
void eic_configure_callback (eic_cb_t callback)
 Configures an external interrupt callback.
 
-void eic_disable (void)
 Disables the external interrupt controller.
 
-

Detailed Description

-

External Interrupt Controller.

-

Function Documentation

- -

◆ eic_configure_callback()

- -
-
- - - - - - - - -
void eic_configure_callback (eic_cb_t callback)
-
- -

Configures an external interrupt callback.

-

You only get the one callback, so if you need to handle multiple interrupts, you'll need to check the EIC->INTFLAG register in your callback to determine which interrupt fired.

Parameters
- - -
callbackThe function that will be called when the interrupt fires.
-
-
-
Note
This function is called from the interrupt handler, so it should be as short as possible.
- -
-
- -

◆ eic_configure_pin()

- -
-
- - - - - - - - - - - - - - - - - - -
int8_t eic_configure_pin (const uint8_t pin,
eic_interrupt_trigger_t trigger 
)
-
- -

Configures an external interrupt on one of the external interrupt pins.

-

This function configures the interrupt channel with the specified trigger, but it does not set pin direction, mux or pull; you must set up the pin yourself. This function also does not enable an interrupt or event generation. You must call eic_enable_interrupt() or eic_enable_event() to either wake the processor or generate an event for a peripheral.

Parameters
- - - -
pinThe external interrupt pin you wish to configure — use HAL_GPIO_xxx_PIN() macro.
triggerThe condition on which you wish to trigger: rising, falling or both.
-
-
-
Returns
the EIC channel number associated with the pin, or -1 if the pin is not an interrupt pin.
-
Note
Be sure to check your pin multiplexing table to ensure that you do not have multiple pins assigned to the same interrupt channel. Also note that the NMI pin is not currently supported.
-

FIXME: Should we have macros for this that accept a port / pin?

- -
-
- -

◆ eic_disable_event()

- -
-
- - - - - - - - -
bool eic_disable_event (const uint8_t pin)
-
- -

Disables the interrupt on the given interrupt channel.

-
Parameters
- - -
pinThe external interrupt pin.
-
-
- -
-
- -

◆ eic_disable_interrupt()

- -
-
- - - - - - - - -
bool eic_disable_interrupt (const uint8_t pin)
-
- -

Disables the interrupt on the given interrupt channel.

-
Parameters
- - -
pinThe external interrupt pin.
-
-
- -
-
- -

◆ eic_enable_event()

- -
-
- - - - - - - - -
bool eic_enable_event (const uint8_t pin)
-
- -

Enables an interrupt on the given interrupt channel.

-
Parameters
- - -
pinThe external interrupt pin.
-
-
- -
-
- -

◆ eic_enable_interrupt()

- -
-
- - - - - - - - -
bool eic_enable_interrupt (const uint8_t pin)
-
- -

Enables an interrupt on the given interrupt channel.

-
Parameters
- - -
pinThe external interrupt pin.
-
-
- -
-
-
- - - - diff --git a/eic_8h_source.html b/eic_8h_source.html index be641dc..1a51b38 100644 --- a/eic_8h_source.html +++ b/eic_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ + +
+ +
+
+
+ +
- -
eic.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2022 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2022 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33
-
- -
36 INTERRUPT_TRIGGER_NONE = 0,
-
37 INTERRUPT_TRIGGER_RISING,
-
38 INTERRUPT_TRIGGER_FALLING,
-
39 INTERRUPT_TRIGGER_BOTH,
- +
+ +
39 INTERRUPT_TRIGGER_NONE = 0,
+
40 INTERRUPT_TRIGGER_RISING,
+
41 INTERRUPT_TRIGGER_FALLING,
+
42 INTERRUPT_TRIGGER_BOTH,
+
-
41
-
42typedef void (*eic_cb_t)(uint8_t channel);
-
43
-
46void eic_init(void);
-
47
-
50void eic_enable(void);
-
51
-
63int8_t eic_configure_pin(const uint8_t pin, eic_interrupt_trigger_t trigger);
-
64
-
68bool eic_enable_interrupt(const uint8_t pin);
-
69
-
73bool eic_disable_interrupt(const uint8_t pin);
-
74
-
78bool eic_enable_event(const uint8_t pin);
-
79
-
83bool eic_disable_event(const uint8_t pin);
-
84
-
91void eic_configure_callback(eic_cb_t callback);
-
92
-
95void eic_disable(void);
-
int8_t eic_configure_pin(const uint8_t pin, eic_interrupt_trigger_t trigger)
Configures an external interrupt on one of the external interrupt pins.
Definition eic.c:99
-
bool eic_disable_event(const uint8_t pin)
Disables the interrupt on the given interrupt channel.
Definition eic.c:190
-
bool eic_disable_interrupt(const uint8_t pin)
Disables the interrupt on the given interrupt channel.
Definition eic.c:150
-
void eic_configure_callback(eic_cb_t callback)
Configures an external interrupt callback.
Definition eic.c:219
-
bool eic_enable_interrupt(const uint8_t pin)
Enables an interrupt on the given interrupt channel.
Definition eic.c:129
-
void eic_disable(void)
Disables the external interrupt controller.
Definition eic.c:209
-
eic_interrupt_trigger_t
An enum defining the types of interrupt trigger you wish to scan for.
Definition eic.h:35
-
void eic_init(void)
Initializes the external interrupt controller, but does not enable it.
Definition eic.c:62
-
bool eic_enable_event(const uint8_t pin)
Enables an interrupt on the given interrupt channel.
Definition eic.c:171
-
void eic_enable(void)
Enables the external interrupt controller.
Definition eic.c:87
+
44
+
45typedef void (*eic_cb_t)(uint8_t channel);
+
46
+
49void eic_init(void);
+
50
+
53void eic_enable(void);
+
54
+
66int8_t eic_configure_pin(const uint8_t pin, eic_interrupt_trigger_t trigger);
+
67
+
71bool eic_enable_interrupt(const uint8_t pin);
+
72
+
76bool eic_disable_interrupt(const uint8_t pin);
+
77
+
81bool eic_enable_event(const uint8_t pin);
+
82
+
86bool eic_disable_event(const uint8_t pin);
+
87
+
94void eic_configure_callback(eic_cb_t callback);
+
95
+
98void eic_disable(void);
+
99
+
int8_t eic_configure_pin(const uint8_t pin, eic_interrupt_trigger_t trigger)
Configures an external interrupt on one of the external interrupt pins.
Definition eic.c:99
+
bool eic_disable_event(const uint8_t pin)
Disables the interrupt on the given interrupt channel.
Definition eic.c:190
+
bool eic_disable_interrupt(const uint8_t pin)
Disables the interrupt on the given interrupt channel.
Definition eic.c:150
+
void eic_configure_callback(eic_cb_t callback)
Configures an external interrupt callback.
Definition eic.c:219
+
bool eic_enable_interrupt(const uint8_t pin)
Enables an interrupt on the given interrupt channel.
Definition eic.c:129
+
void eic_disable(void)
Disables the external interrupt controller.
Definition eic.c:209
+
eic_interrupt_trigger_t
An enum defining the types of interrupt trigger you wish to scan for.
Definition eic.h:38
+
void eic_init(void)
Initializes the external interrupt controller, but does not enable it.
Definition eic.c:62
+
bool eic_enable_event(const uint8_t pin)
Enables an interrupt on the given interrupt channel.
Definition eic.c:171
+
void eic_enable(void)
Enables the external interrupt controller.
Definition eic.c:87
+
- + diff --git a/evsys_8h_source.html b/evsys_8h_source.html index 50739f1..6fd4772 100644 --- a/evsys_8h_source.html +++ b/evsys_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
+
+ +
+
+
+ +
- -
evsys.h
-Go to the documentation of this file.
1
-
6/*
-
7 * MIT License
-
8 *
-
9 * Copyright (c) 2024 Joey Castillo
-
10 *
-
11 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
12 * of this software and associated documentation files (the "Software"), to deal
-
13 * in the Software without restriction, including without limitation the rights
-
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
15 * copies of the Software, and to permit persons to whom the Software is
-
16 * furnished to do so, subject to the following conditions:
-
17 *
-
18 * The above copyright notice and this permission notice shall be included in all
-
19 * copies or substantial portions of the Software.
-
20 *
-
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
27 * SOFTWARE.
-
28 */
-
29
-
30#pragma once
-
31
-
32#include <stdint.h>
-
33#include <stdbool.h>
-
34
-
43void evsys_configure_channel(uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous);
-
void evsys_configure_channel(uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous)
Configures an event channel to route an event from a generator to a user.
Definition evsys.c:30
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2024 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
+
16 *
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
+
30
+
46void evsys_configure_channel(uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous);
+
47
+
void evsys_configure_channel(uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous)
Configures an event channel to route an event from a generator to a user.
Definition evsys.c:30
+
- + diff --git a/files.html b/files.html index bd1e868..8665548 100644 --- a/files.html +++ b/files.html @@ -9,6 +9,10 @@ + + + + @@ -48,6 +52,22 @@ +
+ +
+
+
+ +
Here is a list of all documented files with brief descriptions:
[detail level 123]
- - - - + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - + @@ -109,9 +129,12 @@
  common
 adc.hAnalog to Digital Converter
 app.hGossamer application framework
 dac.hDigital to Analog Converter
 delay.hDelay routines
 adc.h
 app.h
 dac.h
 delay.h
 dma.h
 dma_util.h
 eic.hExternal Interrupt Controller
 evsys.hEvent System
 hal_gpio.hGPIO Macros
 i2c.hI2C Peripheral
 i2s.hInter-IC Sound interface (SAM D21 only)
 opamp.hOperational Amplifier Peripheral
 ptc.hPeripheral Touch Controller
 rtc.hReal-Time Clock
 eic.h
 evsys.h
 hal_gpio.h
 i2c.h
 i2s.h
 opamp.h
 ptc.h
 rtc.h
 sam.h
 sercom.hPrivate functions for helping with SERCOM management
 slcd.hSegment Liquid Crystal Display (SLCD) peripheral driver (SAM L22 only)
 spi.hSPI Peripheral
 system.hGossamer system routines
 tc.hTimer/Counter Peripheral
 tcc.hTimer/Counter for Control Applications (TCC) Peripheral
 sercom.h
 slcd.h
 spi.h
 system.h
 tc.h
 tcc.h
 tusb_config.h
 uart.hUART Peripheral
 uart.h
 usb.h
  drivers
  gfx
+ - + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 0000000..e3ebf00 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,5 @@ +var files_dup = +[ + [ "common", "dir_bdd9a5d540de89e9fe90efdfc6973a4f.html", "dir_bdd9a5d540de89e9fe90efdfc6973a4f" ], + [ "drivers", "dir_14bc92f4b96c8519b376567118ac28b3.html", "dir_14bc92f4b96c8519b376567118ac28b3" ] +]; \ No newline at end of file diff --git a/gfx_8h.html b/gfx_8h.html index 2408de1..ef77186 100644 --- a/gfx_8h.html +++ b/gfx_8h.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
+ +
+
+
+ +
- -
Functions | @@ -1154,9 +1170,13 @@

+ diff --git a/gfx_8h.js b/gfx_8h.js new file mode 100644 index 0000000..c3a00f0 --- /dev/null +++ b/gfx_8h.js @@ -0,0 +1,21 @@ +var gfx_8h = +[ + [ "gfx_draw_char", "gfx_8h.html#a5b59e00c08f5d1fd885e1e8047bfd6c5", null ], + [ "gfx_draw_circle", "gfx_8h.html#a0e7d434468150b90226c04f93ca04eee", null ], + [ "gfx_draw_hline", "gfx_8h.html#a86c12e8e89f71a28150038a94c4efe10", null ], + [ "gfx_draw_line", "gfx_8h.html#af2b3e7a099be3adda0ac2eb3306ef5cb", null ], + [ "gfx_draw_pixel", "gfx_8h.html#aae93d867f4a4ec90d4151576297ccf97", null ], + [ "gfx_draw_rect", "gfx_8h.html#a30c7d1c5d2afa278e4e5f6a25b6df272", null ], + [ "gfx_draw_round_rect", "gfx_8h.html#af67b0895515548e42c3de3d4721799b5", null ], + [ "gfx_draw_small_char", "gfx_8h.html#a0b0d8131eb33bece47553bf26f2b2810", null ], + [ "gfx_draw_string", "gfx_8h.html#a81814f310e5d15ec93f1af0e16f56ca1", null ], + [ "gfx_draw_triangle", "gfx_8h.html#a0aad76c5099d8454ad4da704c6e49bff", null ], + [ "gfx_draw_vline", "gfx_8h.html#a05e0868a435653105ef96a17ed36315c", null ], + [ "gfx_fill_circle", "gfx_8h.html#ac95c5a57de69ceba0695baf0a8716ab2", null ], + [ "gfx_fill_rect", "gfx_8h.html#a5602f4b399e2e44a1e9779feb8a8f4a5", null ], + [ "gfx_fill_round_rect", "gfx_8h.html#ac92c473dfbfedda8a7f26c86490d3047", null ], + [ "gfx_fill_screen", "gfx_8h.html#acca94d61e41831484577a489e25b5ad1", null ], + [ "gfx_fill_triangle", "gfx_8h.html#a968191da41b8719840fff7bfb94790c4", null ], + [ "gfx_init", "gfx_8h.html#a8c74f352515fa78338978d379f1b4965", null ], + [ "gfx_set_rotation", "gfx_8h.html#a05b894d2e0ea6e3c6edd8a88df0f9f14", null ] +]; \ No newline at end of file diff --git a/gfx_8h_source.html b/gfx_8h_source.html index 993c5d8..14ace03 100644 --- a/gfx_8h_source.html +++ b/gfx_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +

+
+ +
+
+
+ +
- -
gfx.h
@@ -156,9 +172,13 @@
void gfx_draw_line(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color)
Draws a line from (x0, y0) to (x1, y1).
Definition gfx.c:117
void gfx_draw_round_rect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color)
Draws the outline of a rounded rectangle from (x, y) to (x+w, y+h), with corners of the given radius.
Definition gfx.c:356
+ - + diff --git a/globals.html b/globals.html index dcecd7c..120a6bd 100644 --- a/globals.html +++ b/globals.html @@ -9,6 +9,10 @@ + + + + @@ -48,6 +52,22 @@ +
+ +
+
+
+ +
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
-

- _ -

- - -

- a -

    -
  • adc_disable() : adc.h
  • -
  • adc_enable() : adc.h
  • -
  • adc_get_analog_value() : adc.h
  • -
  • adc_get_analog_value_for_channel() : adc.h
  • -
  • adc_init() : adc.h
  • -
  • adc_set_sampling_length() : adc.h
  • -
  • app_init() : app.h
  • -
  • app_loop() : app.h
  • -
  • app_setup() : app.h
  • -
  • app_wake_from_backup() : app.h
  • -
- - -

- d -

- - -

- e -

    -
  • eic_configure_callback() : eic.h
  • -
  • eic_configure_pin() : eic.h
  • -
  • eic_disable() : eic.h
  • -
  • eic_disable_event() : eic.h
  • -
  • eic_disable_interrupt() : eic.h
  • -
  • eic_enable() : eic.h
  • -
  • eic_enable_event() : eic.h
  • -
  • eic_enable_interrupt() : eic.h
  • -
  • eic_init() : eic.h
  • -
  • eic_interrupt_trigger_t : eic.h
  • -
  • evsys_configure_channel() : evsys.h
  • -
- -

- g -

    -
  • get_cpu_frequency() : system.h
  • gfx_draw_char() : gfx.h
  • gfx_draw_circle() : gfx.h
  • gfx_draw_hline() : gfx.h
  • @@ -144,47 +114,7 @@

    - g -

    -

    - i -

      -
    • i2c_disable() : i2c.h
    • -
    • i2c_disable_instance() : i2c.h
    • -
    • i2c_enable() : i2c.h
    • -
    • i2c_enable_instance() : i2c.h
    • -
    • i2c_init() : i2c.h
    • -
    • i2c_init_instance() : i2c.h
    • -
    • i2c_read() : i2c.h
    • -
    • i2c_read_instance() : i2c.h
    • -
    • i2c_write() : i2c.h
    • -
    • i2c_write_instance() : i2c.h
    • -
    - - -

    - o -

    - - -

    - r -

      -
    • rtc_configure_callback() : rtc.h
    • -
    • rtc_disable_alarm_interrupt() : rtc.h
    • -
    • rtc_enable() : rtc.h
    • -
    • rtc_enable_alarm_interrupt() : rtc.h
    • -
    • rtc_get_date_time() : rtc.h
    • -
    • rtc_init() : rtc.h
    • -
    • rtc_is_enabled() : rtc.h
    • -
    • rtc_set_date_time() : rtc.h
    • -
    - -

    - s -

      -
    • set_cpu_frequency() : system.h
    • sh1107_begin() : sh1107.h
    • sh1107_update() : sh1107.h
    • SH110X_CHARGEPUMP : sh1107.h
    • @@ -213,90 +143,14 @@

      - s -

      - - -

      - t -

        -
      • tc_count16_get_count() : tc.h
      • -
      • tc_count16_set_cc() : tc.h
      • -
      • tc_count16_set_count() : tc.h
      • -
      • tc_count32_get_count() : tc.h
      • -
      • tc_count32_set_cc() : tc.h
      • -
      • tc_count32_set_count() : tc.h
      • -
      • tc_count8_get_count() : tc.h
      • -
      • tc_count8_get_period() : tc.h
      • -
      • tc_count8_set_cc() : tc.h
      • -
      • tc_count8_set_count() : tc.h
      • -
      • tc_count8_set_period() : tc.h
      • -
      • tc_disable() : tc.h
      • -
      • tc_enable() : tc.h
      • -
      • TC_EVENT_ACTION_PPW : tc.h
      • -
      • tc_event_action_t : tc.h
      • -
      • tc_init() : tc.h
      • -
      • tc_is_enabled() : tc.h
      • -
      • tc_retrigger() : tc.h
      • -
      • tc_set_channel_polarity() : tc.h
      • -
      • tc_set_counter_mode() : tc.h
      • -
      • tc_set_event_action() : tc.h
      • -
      • tc_set_run_in_standby() : tc.h
      • -
      • tc_set_wavegen() : tc.h
      • -
      • tc_stop() : tc.h
      • -
      • tcc_disable() : tcc.h
      • -
      • tcc_enable() : tcc.h
      • -
      • tcc_get_count() : tcc.h
      • -
      • tcc_get_period() : tcc.h
      • -
      • tcc_init() : tcc.h
      • -
      • tcc_is_enabled() : tcc.h
      • -
      • tcc_retrigger() : tcc.h
      • -
      • tcc_set_cc() : tcc.h
      • -
      • tcc_set_channel_polarity() : tcc.h
      • -
      • tcc_set_count() : tcc.h
      • -
      • tcc_set_output_matrix() : tcc.h
      • -
      • tcc_set_period() : tcc.h
      • -
      • tcc_set_run_in_standby() : tcc.h
      • -
      • tcc_set_wavegen() : tcc.h
      • -
      • tcc_stop() : tcc.h
      • -
      • tcc_update() : tcc.h
      • -
      - - -

      - u -

        -
      • uart_disable() : uart.h
      • -
      • uart_disable_instance() : uart.h
      • -
      • uart_enable() : uart.h
      • -
      • uart_enable_instance() : uart.h
      • -
      • uart_init() : uart.h
      • -
      • uart_init_instance() : uart.h
      • -
      • uart_irq_handler() : uart.h
      • -
      • uart_read() : uart.h
      • -
      • uart_read_byte() : uart.h
      • -
      • uart_read_byte_instance() : uart.h
      • -
      • uart_read_instance() : uart.h
      • -
      • uart_set_irda_mode() : uart.h
      • -
      • uart_set_irda_mode_instance() : uart.h
      • -
      • uart_set_run_in_standby() : uart.h
      • -
      • uart_set_run_in_standby_instance() : uart.h
      • -
      • uart_write() : uart.h
      • -
      • uart_write_instance() : uart.h
      • -
      - - -

      - y -

+
- + diff --git a/globals_defs.html b/globals_defs.html index 49c8d0f..cfd809b 100644 --- a/globals_defs.html +++ b/globals_defs.html @@ -9,6 +9,10 @@ + + + + @@ -48,6 +52,22 @@ +
+ +
+
+
+ +
SH110X_SETVCOMDETECT : sh1107.h
+
- + diff --git a/globals_enum.html b/globals_enum.html deleted file mode 100644 index c1aa1b5..0000000 --- a/globals_enum.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -gossamer: Globals - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all documented enums with links to the documentation:
    -
  • eic_interrupt_trigger_t : eic.h
  • -
  • tc_event_action_t : tc.h
  • -
-
- - - - diff --git a/globals_eval.html b/globals_eval.html deleted file mode 100644 index 6032cee..0000000 --- a/globals_eval.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -gossamer: Globals - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all documented enum values with links to the documentation:
    -
  • TC_EVENT_ACTION_PPW : tc.h
  • -
-
- - - - diff --git a/globals_func.html b/globals_func.html index ebced58..03f7307 100644 --- a/globals_func.html +++ b/globals_func.html @@ -9,6 +9,10 @@ + + + + @@ -48,6 +52,22 @@ +
+ +
+
+
+ +
-
Here is a list of all documented functions with links to the documentation:
- -

- _ -

- - -

- a -

    -
  • adc_disable() : adc.h
  • -
  • adc_enable() : adc.h
  • -
  • adc_get_analog_value() : adc.h
  • -
  • adc_get_analog_value_for_channel() : adc.h
  • -
  • adc_init() : adc.h
  • -
  • adc_set_sampling_length() : adc.h
  • -
  • app_init() : app.h
  • -
  • app_loop() : app.h
  • -
  • app_setup() : app.h
  • -
  • app_wake_from_backup() : app.h
  • -
- - -

- d -

- - -

- e -

    -
  • eic_configure_callback() : eic.h
  • -
  • eic_configure_pin() : eic.h
  • -
  • eic_disable() : eic.h
  • -
  • eic_disable_event() : eic.h
  • -
  • eic_disable_interrupt() : eic.h
  • -
  • eic_enable() : eic.h
  • -
  • eic_enable_event() : eic.h
  • -
  • eic_enable_interrupt() : eic.h
  • -
  • eic_init() : eic.h
  • -
  • evsys_configure_channel() : evsys.h
  • -
- - -

- g -

    -
  • get_cpu_frequency() : system.h
  • +
    Here is a list of all documented functions with links to the documentation:
    • gfx_draw_char() : gfx.h
    • gfx_draw_circle() : gfx.h
    • gfx_draw_hline() : gfx.h
    • @@ -140,134 +109,16 @@

      - g -

      • gfx_fill_triangle() : gfx.h
      • gfx_init() : gfx.h
      • gfx_set_rotation() : gfx.h
      • -
      - - -

      - i -

        -
      • i2c_disable() : i2c.h
      • -
      • i2c_disable_instance() : i2c.h
      • -
      • i2c_enable() : i2c.h
      • -
      • i2c_enable_instance() : i2c.h
      • -
      • i2c_init() : i2c.h
      • -
      • i2c_init_instance() : i2c.h
      • -
      • i2c_read() : i2c.h
      • -
      • i2c_read_instance() : i2c.h
      • -
      • i2c_write() : i2c.h
      • -
      • i2c_write_instance() : i2c.h
      • -
      - - -

      - o -

      - - -

      - r -

        -
      • rtc_configure_callback() : rtc.h
      • -
      • rtc_disable_alarm_interrupt() : rtc.h
      • -
      • rtc_enable() : rtc.h
      • -
      • rtc_enable_alarm_interrupt() : rtc.h
      • -
      • rtc_get_date_time() : rtc.h
      • -
      • rtc_init() : rtc.h
      • -
      • rtc_is_enabled() : rtc.h
      • -
      • rtc_set_date_time() : rtc.h
      • -
      - - -

      - s -

      - - -

      - t -

        -
      • tc_count16_get_count() : tc.h
      • -
      • tc_count16_set_cc() : tc.h
      • -
      • tc_count16_set_count() : tc.h
      • -
      • tc_count32_get_count() : tc.h
      • -
      • tc_count32_set_cc() : tc.h
      • -
      • tc_count32_set_count() : tc.h
      • -
      • tc_count8_get_count() : tc.h
      • -
      • tc_count8_get_period() : tc.h
      • -
      • tc_count8_set_cc() : tc.h
      • -
      • tc_count8_set_count() : tc.h
      • -
      • tc_count8_set_period() : tc.h
      • -
      • tc_disable() : tc.h
      • -
      • tc_enable() : tc.h
      • -
      • tc_init() : tc.h
      • -
      • tc_is_enabled() : tc.h
      • -
      • tc_retrigger() : tc.h
      • -
      • tc_set_channel_polarity() : tc.h
      • -
      • tc_set_counter_mode() : tc.h
      • -
      • tc_set_event_action() : tc.h
      • -
      • tc_set_run_in_standby() : tc.h
      • -
      • tc_set_wavegen() : tc.h
      • -
      • tc_stop() : tc.h
      • -
      • tcc_disable() : tcc.h
      • -
      • tcc_enable() : tcc.h
      • -
      • tcc_get_count() : tcc.h
      • -
      • tcc_get_period() : tcc.h
      • -
      • tcc_init() : tcc.h
      • -
      • tcc_is_enabled() : tcc.h
      • -
      • tcc_retrigger() : tcc.h
      • -
      • tcc_set_cc() : tcc.h
      • -
      • tcc_set_channel_polarity() : tcc.h
      • -
      • tcc_set_count() : tcc.h
      • -
      • tcc_set_output_matrix() : tcc.h
      • -
      • tcc_set_period() : tcc.h
      • -
      • tcc_set_run_in_standby() : tcc.h
      • -
      • tcc_set_wavegen() : tcc.h
      • -
      • tcc_stop() : tcc.h
      • -
      • tcc_update() : tcc.h
      • -
      - - -

      - u -

        -
      • uart_disable() : uart.h
      • -
      • uart_disable_instance() : uart.h
      • -
      • uart_enable() : uart.h
      • -
      • uart_enable_instance() : uart.h
      • -
      • uart_init() : uart.h
      • -
      • uart_init_instance() : uart.h
      • -
      • uart_irq_handler() : uart.h
      • -
      • uart_read() : uart.h
      • -
      • uart_read_byte() : uart.h
      • -
      • uart_read_byte_instance() : uart.h
      • -
      • uart_read_instance() : uart.h
      • -
      • uart_set_irda_mode() : uart.h
      • -
      • uart_set_irda_mode_instance() : uart.h
      • -
      • uart_set_run_in_standby() : uart.h
      • -
      • uart_set_run_in_standby_instance() : uart.h
      • -
      • uart_write() : uart.h
      • -
      • uart_write_instance() : uart.h
      • -
      - - -

      - y -

+
- + diff --git a/globals_type.html b/globals_type.html deleted file mode 100644 index 7d690aa..0000000 --- a/globals_type.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -gossamer: Globals - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Here is a list of all documented typedefs with links to the documentation:
    -
  • eic_interrupt_trigger_t : eic.h
  • -
-
- - - - diff --git a/adc_8h.html b/group__adc.html similarity index 55% rename from adc_8h.html rename to group__adc.html index 6438298..3ac9ee4 100644 --- a/adc_8h.html +++ b/group__adc.html @@ -5,10 +5,14 @@ -gossamer: common/adc.h File Reference +gossamer: Analog to Digital Converter + + + + @@ -47,6 +51,23 @@ /* @license-end */ +
+
+ +
+
+
+ +
- -
-
adc.h File Reference
+
Analog to Digital Converter
-

Analog to Digital Converter. +

Functions for using the ADC peripheral. More...

-
#include <stdint.h>
-#include <stdbool.h>
-
-

Go to the source code of this file.

- - - - + + + - - - - - - - - - - - - + + + + + + + + + + + - - + +

Functions

void adc_init (void)
 Initializes the ADC peripheral, but does not enable it.
 
+
void adc_init (void)
 Initializes the ADC peripheral, but does not enable it.
 
void adc_enable (void)
 Enables the ADC peripheral.
 
void adc_set_sampling_length (uint8_t length)
 Sets the sampling length for the ADC.
 
uint16_t adc_get_analog_value (uint8_t pin)
 Gets the analog value on the given ADC pin.
 
uint16_t adc_get_analog_value_for_channel (uint8_t channel)
 Gets the analog value on the given ADC channel.
 
+
 Enables the ADC peripheral.
 
void adc_set_sampling_length (uint8_t length)
 Sets the sampling length for the ADC.
 
uint16_t adc_get_analog_value (uint8_t pin)
 Gets the analog value on the given ADC pin.
 
uint16_t adc_get_analog_value_for_channel (uint8_t channel)
 Gets the analog value on the given ADC channel.
 
void adc_disable (void)
 Disables the ADC peripheral.
 
 Disables the ADC peripheral.
 

Detailed Description

-

Analog to Digital Converter.

-

Function Documentation

- -

◆ adc_get_analog_value()

+

Functions for using the ADC peripheral.

+

Function Documentation

+ +

◆ adc_get_analog_value()

@@ -140,8 +152,8 @@

-

◆ adc_get_analog_value_for_channel()

+ +

◆ adc_get_analog_value_for_channel()

@@ -167,8 +179,8 @@

-

◆ adc_init()

+ +

◆ adc_init()

@@ -195,8 +207,8 @@

-

◆ adc_set_sampling_length()

+ +

◆ adc_set_sampling_length()

@@ -217,9 +229,12 @@

+ diff --git a/group__adc.js b/group__adc.js new file mode 100644 index 0000000..eaea6f6 --- /dev/null +++ b/group__adc.js @@ -0,0 +1,9 @@ +var group__adc = +[ + [ "adc_disable", "group__adc.html#ga3b4b977d0665b5346849f3b892ac5106", null ], + [ "adc_enable", "group__adc.html#ga3afdea3b7c9b91013c270f1a1a669782", null ], + [ "adc_get_analog_value", "group__adc.html#ga96ce001b81ec65219abcb7e4a583f55c", null ], + [ "adc_get_analog_value_for_channel", "group__adc.html#ga200744370e2a8505c3dead71aff1c2dc", null ], + [ "adc_init", "group__adc.html#ga2b815e6730e8723a6d1d06d9ef8f31c0", null ], + [ "adc_set_sampling_length", "group__adc.html#ga1b33d0d9bd2841354f016f8c64be3e15", null ] +]; \ No newline at end of file diff --git a/group__app.html b/group__app.html new file mode 100644 index 0000000..eb50086 --- /dev/null +++ b/group__app.html @@ -0,0 +1,199 @@ + + + + + + + +gossamer: Gossamer application framework + + + + + + + + + + + + + +
+
+ + + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Gossamer application framework
+
+
+ +

This section describes the application framework that you will use to write your firmware. +More...

+ + + + + + + + + + + + + + + + + +

+Functions

void app_init (void)
 A function you will implement to initialize your application's low- level setup. The app_init function is called after system clocks are initialized, and before anything else.
 
void app_wake_from_backup (void)
 OPTIONAL: A function you may implement to restore state after waking up from BACKUP mode on the SAM L21 or L22. This function is called after system_init, but before app_setup. You can stash a bit of your application state in the RTC's BKUP and GPn registers, and use this function as an opportinity to restore it before app_setup is called.
 
+void app_setup (void)
 A function you will implement to set up your app. The app_setup function is like setup() in Arduino. It is called once when the program begins, after app_init and app_wake_from_backup, if it exists. You should use this function to set up your application state and configure any peripherals you need to use.
 
bool app_loop (void)
 A function you will implement to serve as the app's main run loop. This method will be called repeatedly, or if you enter STANDBY mode, as soon as the device wakes from that mode.
 
+void yield (void)
 OPTIONAL: A function to yield control of the CPU to other tasks. This function is called in the delay function to allow other tasks to run while the CPU is busy waiting. By default, this function does nothing, but if you are using the USB peripheral, you should implement this function and call tud_task at minumum, along with any other USB-related tasks you need to run.
 
+

Detailed Description

+

This section describes the application framework that you will use to write your firmware.

+

All Gossamer applications are built by implementing the three functions described in this section. There is an optional fourth function that relates to the SAM L21 and L22's BACKUP mode, but you do not need to implement it unless you are using the BACKUP mode functionality.

+

Function Documentation

+ +

◆ app_init()

+ +
+
+ + + + + + + + +
void app_init (void )
+
+ +

A function you will implement to initialize your application's low- level setup. The app_init function is called after system clocks are initialized, and before anything else.

+

You may be wondering why there is an app_init function as well as an app_setup function. The main difference is that app_init is only meant to be callec once, at boot, whereas you might want to call app_setup multiple times, for example if you want to disable some peripherals before entering STANDBY mode, and re-enable them after waking up. In essence, you should set up anything that will run forever in app_init, whereas anything that could get turned off in the course of execution should be set up in app_setup. If your application plans to use the real-time clock perhiperal, you probably want to call the rtc_init function here.

+ +
+
+ +

◆ app_loop()

+ +
+
+ + + + + + + + +
bool app_loop (void )
+
+ +

A function you will implement to serve as the app's main run loop. This method will be called repeatedly, or if you enter STANDBY mode, as soon as the device wakes from that mode.

+
Note
In order to wake from STANDBY mode, you must set up an interrupt or wake source. Otherwise your app will remain in STANDBY indefinitely.
+
Returns
true if your app is prepared to enter STANDBY mode. If you return false, your app's app_loop method will be called again immediately.
+ +
+
+ +

◆ app_wake_from_backup()

+ +
+
+ + + + + + + + +
void app_wake_from_backup (void )
+
+ +

OPTIONAL: A function you may implement to restore state after waking up from BACKUP mode on the SAM L21 or L22. This function is called after system_init, but before app_setup. You can stash a bit of your application state in the RTC's BKUP and GPn registers, and use this function as an opportinity to restore it before app_setup is called.

+
Note
You do not need to implement this function unless you are using the SAM L21 or L22 and you want to restore state from BACKUP mode.
+ +
+
+
+
+ + + + diff --git a/group__app.js b/group__app.js new file mode 100644 index 0000000..654ff1c --- /dev/null +++ b/group__app.js @@ -0,0 +1,8 @@ +var group__app = +[ + [ "app_init", "group__app.html#gadd3190cf715f513666f4be42874d91e2", null ], + [ "app_loop", "group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a", null ], + [ "app_setup", "group__app.html#gacce192accedbd296eb8d2182f8101f16", null ], + [ "app_wake_from_backup", "group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a", null ], + [ "yield", "group__app.html#ga7cb51f5c2b5cad3766f19eb69c92793b", null ] +]; \ No newline at end of file diff --git a/dac_8h.html b/group__dac.html similarity index 56% rename from dac_8h.html rename to group__dac.html index 55354c2..845b351 100644 --- a/dac_8h.html +++ b/group__dac.html @@ -5,10 +5,14 @@ -gossamer: common/dac.h File Reference +gossamer: Digital to Analog Converter + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
- -
-
dac.h File Reference
+
Digital to Analog Converter
-

Digital to Analog Converter. +

Functions for configuring and using the DAC peripheral. More...

-
#include <stdint.h>
-#include <stdbool.h>
-
-

Go to the source code of this file.

- - +

Enumerations

enum  dac_channel_mask_t { DAC_CHANNEL_NONE = 0 +
enum  dac_channel_mask_t { DAC_CHANNEL_NONE = 0 , DAC_CHANNEL_0 = 1 , DAC_CHANNEL_1 = 2 , DAC_CHANNEL_BOTH = 3 }
 
 
- - - - - - - - - - - - + + + + + + + + + + + +

Functions

void dac_init (void)
 Initializes the DAC peripheral, but does not enable it.
 
void dac_enable (dac_channel_mask_t channelmask)
 Enables the DAC channels specified in the mask, and disables others.
 
void dac_set_analog_value (uint16_t channel, uint16_t value)
 Set the analog value of the DAC.
 
void dac_disable (uint16_t channel)
 Disables the given DAC channel.
 
void dac_init (void)
 Initializes the DAC peripheral, but does not enable it.
 
void dac_enable (dac_channel_mask_t channelmask)
 Enables the DAC channels specified in the mask, and disables others.
 
void dac_set_analog_value (uint16_t channel, uint16_t value)
 Set the analog value of the DAC.
 
void dac_disable (uint16_t channel)
 Disables the given DAC channel.
 

Detailed Description

-

Digital to Analog Converter.

-

Function Documentation

- -

◆ dac_disable()

+

Functions for configuring and using the DAC peripheral.

+

Function Documentation

+ +

◆ dac_disable()

@@ -136,8 +148,8 @@

-

◆ dac_enable()

+ +

◆ dac_enable()

@@ -162,8 +174,8 @@

-

◆ dac_init()

+ +

◆ dac_init()

@@ -190,8 +202,8 @@

-

◆ dac_set_analog_value()

+ +

◆ dac_set_analog_value()

@@ -232,9 +244,12 @@

+ diff --git a/group__dac.js b/group__dac.js new file mode 100644 index 0000000..e35a4a7 --- /dev/null +++ b/group__dac.js @@ -0,0 +1,7 @@ +var group__dac = +[ + [ "dac_disable", "group__dac.html#ga6b0e70e8bf5135e2f3491e87fcd804fe", null ], + [ "dac_enable", "group__dac.html#ga27483fa712ea61a534f679e72ffba463", null ], + [ "dac_init", "group__dac.html#ga6e622fafee8436bf9cf9f6b120352e3c", null ], + [ "dac_set_analog_value", "group__dac.html#ga2b43d67fbe14479cc72c1119fb2b7a48", null ] +]; \ No newline at end of file diff --git a/group__dma.html b/group__dma.html new file mode 100644 index 0000000..fa398e5 --- /dev/null +++ b/group__dma.html @@ -0,0 +1,315 @@ + + + + + + + +gossamer: Direct Memory Access Controller + + + + + + + + + + + + + +
+
+ + + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Direct Memory Access Controller
+
+
+ +

WIP functions for configuring and using the Direct Memory Access controller. +More...

+ + + + +

+Data Structures

struct  gossamer_dma_job_t
 
+ + + + + + + + + + + + +

+Functions

void dma_init (void)
 Initialize the DMA system.
 
bool dma_configure (gossamer_dma_job_t *dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags)
 Configures a DMA job.
 
DmacDescriptor * dma_add_descriptor (gossamer_dma_job_t *dmaJob, void *src, void *dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel)
 Adds a descriptor to a DMA job.
 
+bool dma_start_job (gossamer_dma_job_t *dmaJob)
 
+

Detailed Description

+

WIP functions for configuring and using the Direct Memory Access controller.

+

Function Documentation

+ +

◆ dma_add_descriptor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DmacDescriptor * dma_add_descriptor (gossamer_dma_job_tdmaJob,
void * src,
void * dst,
uint32_t count,
dma_beat_size_t size,
dma_address_increment_t addressIncrement,
dma_stepsize_t stepSize,
dma_stepsel_t stepSel 
)
+
+ +

Adds a descriptor to a DMA job.

+

Adds a descriptor to a DMA job. You must configure the job before adding descriptors to it.

Parameters
+ + + + + + + + + + +
dmaJobA pointer to the DMA job. Must be previously configured with dma_configure().
srcThe source address for this descriptor.
dstThe destination address for this descriptor.
countThe number of beats to transfer.
sizeThe beat size. One of:
    +
  • DMA_BEAT_SIZE_BYTE - One byte per beat
  • +
  • DMA_BEAT_SIZE_HWORD - One half word (two bytes) per beat
  • +
  • DMA_BEAT_SIZE_WORD - One word (four bytes) per beat
  • +
+
srcIncWhether to increment the source address after each beat.
dstIncWhether to increment the destination address after each beat.
stepSizeAddress increment step size. One of:
    +
  • DMA_STEPSIZE_1 - Increment by 1 * beat size
  • +
  • DMA_STEPSIZE_2 - Increment by 2 * beat size
  • +
  • DMA_STEPSIZE_4 - Increment by 4 * beat size
  • +
  • DMA_STEPSIZE_8 - ...you get the idea
  • +
  • DMA_STEPSIZE_16
  • +
  • DMA_STEPSIZE_32
  • +
  • DMA_STEPSIZE_64
  • +
  • DMA_STEPSIZE_128
  • +
+
stepSelWhich address to increment by stepSize after each step. You can only have one:
    +
  • DMA_STEPSEL_SOURCE - Increment the source address after each step
  • +
  • DMA_STEPSEL_DESTINATION - Increment the destination address after each step
  • +
+
+
+
+ +
+
+ +

◆ dma_configure()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool dma_configure (gossamer_dma_job_tdmaJob,
uint8_t peripheralTrigger,
dma_trigger_action_t triggerAction,
dma_configuration_flags_t flags 
)
+
+ +

Configures a DMA job.

+

Configures a DMA job with the given peripheral trigger and trigger action. You must configure the job before adding descriptors to it.

Parameters
+ + + + + +
dmaJobA pointer to the DMA job to configure. This will be modified in place.
peripheralTriggerThe peripheral trigger to use for this job. These are defined in your microcontroller's data sheet, in the DMAC's register details section, under a headling like "Trigger Source"
triggerActionThe trigger action to use for this job. One of:
    +
  • DMA_TRIGGER_ACTION_BLOCK
  • +
  • DMA_TRIGGER_ACTION_BEAT
  • +
  • DMA_TRIGGER_ACTION_TRANSACTION
  • +
+
flagsA OR'ed bitmask of flags to use for this job. Available flags are:
    +
  • DMA_CONFIG_LOOP - Loop the job when it completes
  • +
  • DMA_CONFIG_RUNSTDBY - Keep the job running in standby mode
  • +
+
+
+
+ +
+
+ +

◆ dma_init()

+ +
+
+ + + + + + + + +
void dma_init (void )
+
+ +

Initialize the DMA system.

+

Sets up peripheral clocks and points the DMA controller at an empty list of descriptors.

+ +
+
+
+
+ + + + diff --git a/group__dma.js b/group__dma.js new file mode 100644 index 0000000..179cecb --- /dev/null +++ b/group__dma.js @@ -0,0 +1,7 @@ +var group__dma = +[ + [ "gossamer_dma_job_t", "structgossamer__dma__job__t.html", null ], + [ "dma_add_descriptor", "group__dma.html#ga3dca92a07f9089896f3673699863832f", null ], + [ "dma_configure", "group__dma.html#gab907281d8798c56cca6da3444d93a918", null ], + [ "dma_init", "group__dma.html#ga1c9e133b825bded7bf8039c43b49d2c7", null ] +]; \ No newline at end of file diff --git a/group__eic.html b/group__eic.html new file mode 100644 index 0000000..5485de4 --- /dev/null +++ b/group__eic.html @@ -0,0 +1,340 @@ + + + + + + + +gossamer: External Interrupt Controller + + + + + + + + + + + + + +
+
+ + + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
External Interrupt Controller
+
+
+ +

Functions for configuring and using the External Interrupt Controller. +More...

+ + + + + + + +

+Typedefs

+typedef enum eic_interrupt_trigger_t eic_interrupt_trigger_t
 An enum defining the types of interrupt trigger you wish to scan for.
 
+typedef void(* eic_cb_t) (uint8_t channel)
 
+ + + + +

+Enumerations

enum  eic_interrupt_trigger_t { INTERRUPT_TRIGGER_NONE = 0 +, INTERRUPT_TRIGGER_RISING +, INTERRUPT_TRIGGER_FALLING +, INTERRUPT_TRIGGER_BOTH + }
 An enum defining the types of interrupt trigger you wish to scan for.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+void eic_init (void)
 Initializes the external interrupt controller, but does not enable it.
 
+void eic_enable (void)
 Enables the external interrupt controller.
 
int8_t eic_configure_pin (const uint8_t pin, eic_interrupt_trigger_t trigger)
 Configures an external interrupt on one of the external interrupt pins.
 
bool eic_enable_interrupt (const uint8_t pin)
 Enables an interrupt on the given interrupt channel.
 
bool eic_disable_interrupt (const uint8_t pin)
 Disables the interrupt on the given interrupt channel.
 
bool eic_enable_event (const uint8_t pin)
 Enables an interrupt on the given interrupt channel.
 
bool eic_disable_event (const uint8_t pin)
 Disables the interrupt on the given interrupt channel.
 
void eic_configure_callback (eic_cb_t callback)
 Configures an external interrupt callback.
 
+void eic_disable (void)
 Disables the external interrupt controller.
 
+

Detailed Description

+

Functions for configuring and using the External Interrupt Controller.

+

Function Documentation

+ +

◆ eic_configure_callback()

+ +
+
+ + + + + + + + +
void eic_configure_callback (eic_cb_t callback)
+
+ +

Configures an external interrupt callback.

+

You only get the one callback, so if you need to handle multiple interrupts, you'll need to check the EIC->INTFLAG register in your callback to determine which interrupt fired.

Parameters
+ + +
callbackThe function that will be called when the interrupt fires.
+
+
+
Note
This function is called from the interrupt handler, so it should be as short as possible.
+ +
+
+ +

◆ eic_configure_pin()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int8_t eic_configure_pin (const uint8_t pin,
eic_interrupt_trigger_t trigger 
)
+
+ +

Configures an external interrupt on one of the external interrupt pins.

+

This function configures the interrupt channel with the specified trigger, but it does not set pin direction, mux or pull; you must set up the pin yourself. This function also does not enable an interrupt or event generation. You must call eic_enable_interrupt() or eic_enable_event() to either wake the processor or generate an event for a peripheral.

Parameters
+ + + +
pinThe external interrupt pin you wish to configure — use HAL_GPIO_xxx_PIN() macro.
triggerThe condition on which you wish to trigger: rising, falling or both.
+
+
+
Returns
the EIC channel number associated with the pin, or -1 if the pin is not an interrupt pin.
+
Note
Be sure to check your pin multiplexing table to ensure that you do not have multiple pins assigned to the same interrupt channel. Also note that the NMI pin is not currently supported.
+

FIXME: Should we have macros for this that accept a port / pin?

+ +
+
+ +

◆ eic_disable_event()

+ +
+
+ + + + + + + + +
bool eic_disable_event (const uint8_t pin)
+
+ +

Disables the interrupt on the given interrupt channel.

+
Parameters
+ + +
pinThe external interrupt pin.
+
+
+ +
+
+ +

◆ eic_disable_interrupt()

+ +
+
+ + + + + + + + +
bool eic_disable_interrupt (const uint8_t pin)
+
+ +

Disables the interrupt on the given interrupt channel.

+
Parameters
+ + +
pinThe external interrupt pin.
+
+
+ +
+
+ +

◆ eic_enable_event()

+ +
+
+ + + + + + + + +
bool eic_enable_event (const uint8_t pin)
+
+ +

Enables an interrupt on the given interrupt channel.

+
Parameters
+ + +
pinThe external interrupt pin.
+
+
+ +
+
+ +

◆ eic_enable_interrupt()

+ +
+
+ + + + + + + + +
bool eic_enable_interrupt (const uint8_t pin)
+
+ +

Enables an interrupt on the given interrupt channel.

+
Parameters
+ + +
pinThe external interrupt pin.
+
+
+ +
+
+
+
+ + + + diff --git a/group__eic.js b/group__eic.js new file mode 100644 index 0000000..cfbabdf --- /dev/null +++ b/group__eic.js @@ -0,0 +1,14 @@ +var group__eic = +[ + [ "eic_interrupt_trigger_t", "group__eic.html#ga2dcfd365c180eb12af23e9f125089244", null ], + [ "eic_interrupt_trigger_t", "group__eic.html#gac1fe47482a1a2c642408f50c2db9469f", null ], + [ "eic_configure_callback", "group__eic.html#ga5695270545c3f5b6a24682447108e6cd", null ], + [ "eic_configure_pin", "group__eic.html#ga034f0e472fc0d955b11de053a263e8cd", null ], + [ "eic_disable", "group__eic.html#gabaae85c8706e41bb2cc2b7aa7be956e6", null ], + [ "eic_disable_event", "group__eic.html#ga21e4b3925d449c25fe3831b167845161", null ], + [ "eic_disable_interrupt", "group__eic.html#ga48015b16099d943fad32302fad6114a1", null ], + [ "eic_enable", "group__eic.html#gafd8706ad3219397c91636524d2149eb0", null ], + [ "eic_enable_event", "group__eic.html#gae6a140e7799fec385ff48c97f399b7cf", null ], + [ "eic_enable_interrupt", "group__eic.html#ga95932a1b8c5442120cd6caa7a5cb0733", null ], + [ "eic_init", "group__eic.html#gac66cb10fff656315b12df4248f798c41", null ] +]; \ No newline at end of file diff --git a/evsys_8h.html b/group__evsys.html similarity index 69% rename from evsys_8h.html rename to group__evsys.html index 8b86d3d..27b097e 100644 --- a/evsys_8h.html +++ b/group__evsys.html @@ -5,10 +5,14 @@ -gossamer: common/evsys.h File Reference +gossamer: Event System + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
- -
-
evsys.h File Reference
+
Event System
-

Event System. +

Functions for configuring and using the Event System. More...

-
#include <stdint.h>
-#include <stdbool.h>
-
-

Go to the source code of this file.

- - - + + +

Functions

void evsys_configure_channel (uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous)
 Configures an event channel to route an event from a generator to a user.
 
void evsys_configure_channel (uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous)
 Configures an event channel to route an event from a generator to a user.
 

Detailed Description

-

Event System.

+

Functions for configuring and using the Event System.

Note
The Event System has no _init or _enable functions. It is always running.
-

Function Documentation

- -

◆ evsys_configure_channel()

+

Function Documentation

+ +

◆ evsys_configure_channel()

@@ -156,9 +168,12 @@

+ diff --git a/group__evsys.js b/group__evsys.js new file mode 100644 index 0000000..22334f5 --- /dev/null +++ b/group__evsys.js @@ -0,0 +1,4 @@ +var group__evsys = +[ + [ "evsys_configure_channel", "group__evsys.html#ga506dcdef11267257fce99f6deffc4844", null ] +]; \ No newline at end of file diff --git a/i2c_8h.html b/group__i2c.html similarity index 57% rename from i2c_8h.html rename to group__i2c.html index 912c194..199de01 100644 --- a/i2c_8h.html +++ b/group__i2c.html @@ -5,10 +5,14 @@ -gossamer: common/i2c.h File Reference +gossamer: Inter-IC Communications Peripheral + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
- -
-
i2c.h File Reference
+
Inter-IC Communications Peripheral
-

I2C Peripheral. +

The I2C peripheral is used for communication with I2C devices over SDA and SCL pins. More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include <stddef.h>
-
-

Go to the source code of this file.

- - +

Enumerations

enum  i2c_result_t {
+
enum  i2c_result_t {
  I2C_RESULT_SUCCESS = 0 , I2C_RESULT_ERR_ADDR_NACK = -1 , I2C_RESULT_ERR_BUSSTATE = -2 @@ -100,48 +111,48 @@   I2C_RESULT_ERR_DATA_NACK = -4
}
 
 
- - - - + + + - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +

Functions

void i2c_init (void)
 Initializes the I2C peripheral for a board with a defined I2C_SERCOM.
 
+
void i2c_init (void)
 Initializes the I2C peripheral for a board with a defined I2C_SERCOM.
 
void i2c_enable (void)
 Enables the I2C peripheral for a board with a defined I2C_SERCOM.
 
i2c_result_t i2c_write (uint8_t address, uint8_t *data, size_t len)
 Writes data to an I2C device at the provided address.
 
i2c_result_t i2c_read (uint8_t address, uint8_t *data, size_t len)
 Reads data from an I2C device at the provided address.
 
+
 Enables the I2C peripheral for a board with a defined I2C_SERCOM.
 
i2c_result_t i2c_write (uint8_t address, uint8_t *data, size_t len)
 Writes data to an I2C device at the provided address.
 
i2c_result_t i2c_read (uint8_t address, uint8_t *data, size_t len)
 Reads data from an I2C device at the provided address.
 
void i2c_disable (void)
 Disables the I2C peripheral for a board with defined SDA/SCL pins.
 
void i2c_init_instance (uint8_t sercom, uint32_t baud)
 Initializes an I2C peripheral on the given SERCOM.
 
void i2c_enable_instance (uint8_t sercom)
 Enables the I2C peripheral on the given SERCOM.
 
i2c_result_t i2c_write_instance (uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
 Writes data to an I2C device on the given SERCOM at the provided address.
 
i2c_result_t i2c_read_instance (uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
 Reads data from an I2C device on the given SERCOM at the provided address.
 
void i2c_disable_instance (uint8_t sercom)
 Disables the I2C peripheral on the given SERCOM.
 
 Disables the I2C peripheral for a board with defined SDA/SCL pins.
 
void i2c_init_instance (uint8_t sercom, uint32_t baud)
 Initializes an I2C peripheral on the given SERCOM.
 
void i2c_enable_instance (uint8_t sercom)
 Enables the I2C peripheral on the given SERCOM.
 
i2c_result_t i2c_write_instance (uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
 Writes data to an I2C device on the given SERCOM at the provided address.
 
i2c_result_t i2c_read_instance (uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
 Reads data from an I2C device on the given SERCOM at the provided address.
 
void i2c_disable_instance (uint8_t sercom)
 Disables the I2C peripheral on the given SERCOM.
 

Detailed Description

-

I2C Peripheral.

-

Function Documentation

- -

◆ i2c_disable_instance()

+

The I2C peripheral is used for communication with I2C devices over SDA and SCL pins.

+

Function Documentation

+ +

◆ i2c_disable_instance()

@@ -166,8 +177,8 @@

-

◆ i2c_enable_instance()

+ +

◆ i2c_enable_instance()

@@ -192,8 +203,8 @@

-

◆ i2c_init()

+ +

◆ i2c_init()

@@ -213,8 +224,8 @@

-

◆ i2c_init_instance()

+ +

◆ i2c_init_instance()

@@ -251,8 +262,8 @@

-

◆ i2c_read()

+ +

◆ i2c_read()

@@ -295,8 +306,8 @@

-

◆ i2c_read_instance()

+ +

◆ i2c_read_instance()

@@ -346,8 +357,8 @@

-

◆ i2c_write()

+ +

◆ i2c_write()

@@ -390,8 +401,8 @@

-

◆ i2c_write_instance()

+ +

◆ i2c_write_instance()

@@ -442,9 +453,12 @@

+ diff --git a/group__i2c.js b/group__i2c.js new file mode 100644 index 0000000..d5f4b45 --- /dev/null +++ b/group__i2c.js @@ -0,0 +1,13 @@ +var group__i2c = +[ + [ "i2c_disable", "group__i2c.html#gabe70f8fe4c72329b89ec526c749f50d7", null ], + [ "i2c_disable_instance", "group__i2c.html#ga9cc8d8299e418b944243a96fa8adc996", null ], + [ "i2c_enable", "group__i2c.html#ga5a1923e2271df541e858cb4e05d7b895", null ], + [ "i2c_enable_instance", "group__i2c.html#ga88da4919a13ca41408ae8eafdab3855f", null ], + [ "i2c_init", "group__i2c.html#ga5730d9445429351b9f750084c5cb5aae", null ], + [ "i2c_init_instance", "group__i2c.html#gae0163192e71ff834062fcb7591b01e29", null ], + [ "i2c_read", "group__i2c.html#gae5074c1f6733c42bf7ccbd771ad2496c", null ], + [ "i2c_read_instance", "group__i2c.html#ga64cffaf51a6050fb5e58cb35a52e5179", null ], + [ "i2c_write", "group__i2c.html#ga5e6b5b5c02987f6b23765799809d9b25", null ], + [ "i2c_write_instance", "group__i2c.html#ga2f2ad75c678b2e0ebafd9c9686d38674", null ] +]; \ No newline at end of file diff --git a/group__i2s.html b/group__i2s.html new file mode 100644 index 0000000..447eb75 --- /dev/null +++ b/group__i2s.html @@ -0,0 +1,185 @@ + + + + + + + +gossamer: Inter-IC Sound interface + + + + + + + + + + + + + +
+
+ + + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Inter-IC Sound interface
+
+
+ +

Functions for configuring and using the I2S peripheral (SAM D21 only). +More...

+ + + + +

+Enumerations

enum  i2s_mode_t { I2S_MODE_NORMAL +, I2S_MODE_RIGHT_JUSTIFIED +, I2S_MODE_LEFT_JUSTIFIED + }
 
+ + + + + + +

+Functions

void i2s_init (uint8_t instance, uint16_t sampleRate, uint8_t bitsPerSample, i2s_mode_t mode)
 Initializes the I2S peripheral.
 
+void i2s_enable_receiver (uint8_t instance)
 
+

Detailed Description

+

Functions for configuring and using the I2S peripheral (SAM D21 only).

+

Function Documentation

+ +

◆ i2s_init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void i2s_init (uint8_t instance,
uint16_t sampleRate,
uint8_t bitsPerSample,
i2s_mode_t mode 
)
+
+ +

Initializes the I2S peripheral.

+
Parameters
+ + + + + +
instanceThe I2S peripheral instance to initialize.
sampleRateThe sample rate to use.
bitsPerSampleThe number of bits per sample.
modeThe I2S mode to use.
+
+
+
See also
i2s_mode_t
+
Note
This function only initializes the I2S peripheral. You must configure the pins yourself.
+ +
+
+
+
+ + + + diff --git a/group__i2s.js b/group__i2s.js new file mode 100644 index 0000000..e569c91 --- /dev/null +++ b/group__i2s.js @@ -0,0 +1,4 @@ +var group__i2s = +[ + [ "i2s_init", "group__i2s.html#gaff2b590eefc8ca2aa72f83563eeedd76", null ] +]; \ No newline at end of file diff --git a/group__opamp.html b/group__opamp.html new file mode 100644 index 0000000..845d973 --- /dev/null +++ b/group__opamp.html @@ -0,0 +1,574 @@ + + + + + + + +gossamer: Operational Amplifier + + + + + + + + + + + + + +
+
+ + + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Operational Amplifier
+
+
+ +

Functions for configuring and using the operational amplifier on the SAM L21. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

+#define OPAMP_MUXNEG_NEG   (0)
 
+#define OPAMP_MUXNEG_LADDER   (1)
 
+#define OPAMP_MUXNEG_OUT   (2)
 
+#define OPAMP0_MUXNEG_DAC   (3)
 
+#define OPAMP1_MUXNEG_DAC   (3)
 
+#define OPAMP2_MUXNEG_DAC   (5)
 
+#define OPAMP2_MUXNEG_NEG_0   (3)
 
+#define OPAMP2_MUXNEG_NEG_1   (4)
 
+#define OPAMP_MUXPOS_POS   (0)
 
+#define OPAMP_MUXPOS_LADDER   (1)
 
+#define OPAMP0_MUXPOS_DAC   (2)
 
+#define OPAMP1_MUXPOS_OUT_0   (2)
 
+#define OPAMP2_MUXPOS_OUT_1   (2)
 
+#define OPAMP_MUXPOS_GND   (3)
 
+#define OPAMP2_MUXPOS_POS_0   (4)
 
+#define OPAMP2_MUXPOS_POS_1   (5)
 
+#define OPAMP2_MUXPOS_LADDER_0   (6)
 
+#define OPAMP_POTMUX_RATIO_14_2   (0)
 
+#define OPAMP_POTMUX_RATIO_12_4   (1)
 
+#define OPAMP_POTMUX_RATIO_8_8   (2)
 
+#define OPAMP_POTMUX_RATIO_6_10   (3)
 
+#define OPAMP_POTMUX_RATIO_4_12   (4)
 
+#define OPAMP_POTMUX_RATIO_3_13   (5)
 
+#define OPAMP_POTMUX_RATIO_2_14   (6)
 
+#define OPAMP_POTMUX_RATIO_1_15   (7)
 
+#define OPAMP_RES1MUX_POS   (0)
 
+#define OPAMP_RES1MUX_NEG   (1)
 
+#define OPAMP0_RES1MUX_DAC   (2)
 
+#define OPAMP1_RES1MUX_OUT_0   (2)
 
+#define OPAMP2_RES1MUX_OUT_1   (2)
 
+#define OPAMP_RES1MUX_GND   (3)
 
+#define OPAMP_RES1MUX_NC   (4)
 
+#define OPAMP_RES2MUX_VCC   (0)
 
+#define OPAMP_RES2MUX_OUT   (1)
 
+#define OPAMP_RES2MUX_NC   (2)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+void opamp_init (void)
 Initializes the OPAMP peripheral, but does not enable any opamps.
 
void opamp_enable (uint16_t instance)
 Enables the given opamp.
 
void opamp_set_muxpos (uint16_t instance, uint8_t muxpos)
 Sets the positive input mux for the given opamp.
 
void opamp_set_muxneg (uint16_t instance, uint8_t muxneg)
 Sets the negative input mux for the given opamp.
 
void opamp_set_potmux (uint16_t instance, uint8_t potmux)
 Sets the potentiometer (resistor ladder) mux for the given opamp.
 
void opamp_set_res1mux (uint16_t instance, uint8_t res1mux)
 Sets the connection for the bottom of the resistor ladder for the given instance.
 
void opamp_set_res2mux (uint16_t instance, uint8_t res2mux)
 Sets the connection for the top of the resistor ladder for the given instance.
 
void opamp_set_analog_connection (uint16_t instance, bool connected)
 Sets or removes the connection from the opamp output to the ADC / AC.
 
void opamp_disable (uint16_t instance)
 Disables the given opamp.
 
+

Detailed Description

+

Functions for configuring and using the operational amplifier on the SAM L21.

+

Function Documentation

+ +

◆ opamp_disable()

+ +
+
+ + + + + + + + +
void opamp_disable (uint16_t instance)
+
+ +

Disables the given opamp.

+
Parameters
+ + +
instanceThe opamp instance to disable.
+
+
+
Note
You should disable the opamp before reconfiguring it, and re-enable it afterwards.
+ +
+
+ +

◆ opamp_enable()

+ +
+
+ + + + + + + + +
void opamp_enable (uint16_t instance)
+
+ +

Enables the given opamp.

+
Parameters
+ + +
instanceThe opamp instance to enable.
+
+
+ +
+
+ +

◆ opamp_set_analog_connection()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void opamp_set_analog_connection (uint16_t instance,
bool connected 
)
+
+ +

Sets or removes the connection from the opamp output to the ADC / AC.

+
Parameters
+ + + +
instanceThe opamp instance to configure.
connectedTrue to connect the opamp output to the ADC / AC, false to disconnect it.
+
+
+ +
+
+ +

◆ opamp_set_muxneg()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void opamp_set_muxneg (uint16_t instance,
uint8_t muxneg 
)
+
+ +

Sets the negative input mux for the given opamp.

+
Parameters
+ + + +
instanceThe opamp instance to configure.
muxnegThe desired connection, one of:
    +
  • OPAMP_MUXNEG_NEG - the negative input pin for this instance
  • +
  • OPAMP_MUXNEG_LADDER - the resistor ladder tap for this instance
  • +
  • OPAMP_MUXNEG_OUT - the output of this instance
  • +
  • OPAMP0_MUXNEG_DAC - the DAC output (only valid for OPAMP0)
  • +
  • OPAMP1_MUXNEG_DAC - the DAC output (only valid for OPAMP1)
  • +
  • OPAMP2_MUXNEG_DAC - the DAC output (only valid for OPAMP2)
  • +
  • OPAMP2_MUXNEG_NEG_0 - OPAMP0's negative input pin (only valid for OPAMP2)
  • +
  • OPAMP2_MUXNEG_NEG_1 - OPAMP1's negative input pin (only valid for OPAMP2)
  • +
+
+
+
+ +
+
+ +

◆ opamp_set_muxpos()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void opamp_set_muxpos (uint16_t instance,
uint8_t muxpos 
)
+
+ +

Sets the positive input mux for the given opamp.

+
Parameters
+ + + +
instanceThe opamp instance to configure.
muxposThe desired connection, one of:
    +
  • OPAMP_MUXPOS_POS - the positive input pin for this instance
  • +
  • OPAMP_MUXPOS_GND - ground
  • +
  • OPAMP_MUXPOS_LADDER - the resistor ladder tap for this instance
  • +
  • OPAMP0_MUXPOS_DAC - the DAC output (only valid for OPAMP0)
  • +
  • OPAMP1_MUXPOS_OUT_0 - OPAMP0's output (only valid for OPAMP1)
  • +
  • OPAMP2_MUXPOS_OUT_1 - OPAMP1's output (only valid for OPAMP2)
  • +
  • OPAMP2_MUXPOS_POS_0 - OPAMP0's positive input pin (only valid for OPAMP2)
  • +
  • OPAMP2_MUXPOS_POS_1 - OPAMP1's positive input pin (only valid for OPAMP2)
  • +
  • OPAMP2_MUXPOS_LADDER_0 - OPAMP0's resistor ladder tap (only valid for OPAMP2)
  • +
+
+
+
+ +
+
+ +

◆ opamp_set_potmux()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void opamp_set_potmux (uint16_t instance,
uint8_t potmux 
)
+
+ +

Sets the potentiometer (resistor ladder) mux for the given opamp.

+
Parameters
+ + + +
instanceThe opamp instance to configure.
potmuxThe desired resistor ladder ratio, one of:
    +
  • OPAMP_POTMUX_RATIO_14_2 - 14:2 ratio
  • +
  • OPAMP_POTMUX_RATIO_12_4 - 12:4 ratio
  • +
  • OPAMP_POTMUX_RATIO_8_8 - 8:8 ratio
  • +
  • OPAMP_POTMUX_RATIO_6_10 - 6:10 ratio
  • +
  • OPAMP_POTMUX_RATIO_4_12 - 4:12 ratio
  • +
  • OPAMP_POTMUX_RATIO_3_13 - 3:13 ratio
  • +
  • OPAMP_POTMUX_RATIO_2_14 - 2:14 ratio
  • +
  • OPAMP_POTMUX_RATIO_1_15 - 1:15 ratio
  • +
+
+
+
+ +
+
+ +

◆ opamp_set_res1mux()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void opamp_set_res1mux (uint16_t instance,
uint8_t res1mux 
)
+
+ +

Sets the connection for the bottom of the resistor ladder for the given instance.

+
Parameters
+ + + +
instanceThe opamp instance to configure.
res1muxThe desired connection, one of:
    +
  • OPAMP_RES1MUX_POS - the positive input pin for this instance
  • +
  • OPAMP_RES1MUX_NEG - the negative input pin for this instance
  • +
  • OPAMP_RES1MUX_GND - ground
  • +
  • OPAMP0_RES1MUX_DAC - the DAC output (only valid for OPAMP0)
  • +
  • OPAMP1_RES1MUX_OUT_0 - OPAMP0's output (only valid for OPAMP1)
  • +
  • OPAMP2_RES1MUX_OUT_1 - OPAMP1's output (only valid for OPAMP2)
  • +
  • OPAMP_RES1MUX_NC - not connected
  • +
+
+
+
+ +
+
+ +

◆ opamp_set_res2mux()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void opamp_set_res2mux (uint16_t instance,
uint8_t res2mux 
)
+
+ +

Sets the connection for the top of the resistor ladder for the given instance.

+
Parameters
+ + + +
instanceThe opamp instance to configure.
res2muxThe desired connection, one of:
    +
  • OPAMP_RES2MUX_VCC - VDDANA
  • +
  • OPAMP_RES2MUX_OUT - the output of this instance
  • +
  • OPAMP_RES2MUX_NC - not connected
  • +
+
+
+
+ +
+
+
+
+ + + + diff --git a/group__opamp.js b/group__opamp.js new file mode 100644 index 0000000..0cf4d19 --- /dev/null +++ b/group__opamp.js @@ -0,0 +1,12 @@ +var group__opamp = +[ + [ "opamp_disable", "group__opamp.html#ga0dcff33b01f135e8608d0bb90a758e8a", null ], + [ "opamp_enable", "group__opamp.html#ga92d4aa1c45921733f297129e39161fb4", null ], + [ "opamp_init", "group__opamp.html#ga1f92b0993e68ddbf650bd02873de8fcd", null ], + [ "opamp_set_analog_connection", "group__opamp.html#gaa41c70604826026b22c95f1b0448c642", null ], + [ "opamp_set_muxneg", "group__opamp.html#gaae5d775bcd2c346190b9b3c321c528bc", null ], + [ "opamp_set_muxpos", "group__opamp.html#gacdac2a6f48d8d0eca22f3618a7c2bd17", null ], + [ "opamp_set_potmux", "group__opamp.html#ga03227184722fe89e01e8f1fa00df63e3", null ], + [ "opamp_set_res1mux", "group__opamp.html#gabb5b017b5571c2bbc53330f54ba79971", null ], + [ "opamp_set_res2mux", "group__opamp.html#gab9f7e0d2fbaf34171563d8c1ceb5f3b8", null ] +]; \ No newline at end of file diff --git a/group__ptc.html b/group__ptc.html new file mode 100644 index 0000000..f3118be --- /dev/null +++ b/group__ptc.html @@ -0,0 +1,249 @@ + + + + + + + +gossamer: Peripheral Touch Controller + + + + + + + + + + + + + +
+
+ + + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Peripheral Touch Controller
+
+
+ +

Functions for configuring and using the Peripheral Touch Controller. +More...

+ + + + + + + + + + +

+Typedefs

+typedef enum tag_oversample_level_t ptc_oversample_t
 
+typedef enum tag_series_resistor_t ptc_series_resistor_t
 
+typedef enum tag_freq_mode_t ptc_freq_mode_t
 
+typedef enum tag_freq_hop_t ptc_freq_hop_t
 
+ + + + + + + + + +

+Enumerations

enum  tag_oversample_level_t {
+  OVERSAMPLE_1 +, OVERSAMPLE_2 +, OVERSAMPLE_4 +, OVERSAMPLE_8 +,
+  OVERSAMPLE_16 +, OVERSAMPLE_32 +, OVERSAMPLE_64 +
+ }
 
enum  tag_series_resistor_t { RESISTOR_0 +, RESISTOR_20K +, RESISTOR_50K +, RESISTOR_100K + }
 
enum  tag_freq_mode_t { FREQ_MODE_NONE +, FREQ_MODE_HOP +, FREQ_MODE_SPREAD +, FREQ_MODE_SPREAD_MEDIAN + }
 
enum  tag_freq_hop_t {
+  FREQ_HOP_1 +, FREQ_HOP_2 +, FREQ_HOP_3 +, FREQ_HOP_4 +,
+  FREQ_HOP_5 +, FREQ_HOP_6 +, FREQ_HOP_7 +, FREQ_HOP_8 +,
+  FREQ_HOP_9 +, FREQ_HOP_10 +, FREQ_HOP_11 +, FREQ_HOP_12 +,
+  FREQ_HOP_13 +, FREQ_HOP_14 +, FREQ_HOP_15 +, FREQ_HOP_16 +
+ }
 
+ + + + + + + + + + +

+Functions

+void ptc_init (void)
 Initialize the peripheral touch controller.
 
void ptc_enable (uint8_t channel)
 Enable the given PTC channel.
 
uint16_t ptc_get_value (uint8_t channel)
 Get a value from the given channel.
 
+

Detailed Description

+

Functions for configuring and using the Peripheral Touch Controller.

+

Based on Adafruit's FreeTouch library.

+

Function Documentation

+ +

◆ ptc_enable()

+ +
+
+ + + + + + + + +
void ptc_enable (uint8_t channel)
+
+ +

Enable the given PTC channel.

+
Parameters
+ + +
channelThe PTC channel (NOT pin number) to enable.
+
+
+
Note
You are still responsible for configuring the pin mux. Also we don't yet have a way to disable a channel.
+ +
+
+ +

◆ ptc_get_value()

+ +
+
+ + + + + + + + +
uint16_t ptc_get_value (uint8_t channel)
+
+ +

Get a value from the given channel.

+
Parameters
+ + +
channelThe PTC channel (NOT pin number) to read.
+
+
+
Returns
The touch value read from the channel.
+ +
+
+
+
+ + + + diff --git a/group__ptc.js b/group__ptc.js new file mode 100644 index 0000000..8ea5491 --- /dev/null +++ b/group__ptc.js @@ -0,0 +1,6 @@ +var group__ptc = +[ + [ "ptc_enable", "group__ptc.html#gafbc1fa996f33108befc84cedd94b68b2", null ], + [ "ptc_get_value", "group__ptc.html#gaf86d00f3378b8d43718387b2af099295", null ], + [ "ptc_init", "group__ptc.html#gabede495b29954eccc7f30f4841c1d847", null ] +]; \ No newline at end of file diff --git a/rtc_8h.html b/group__rtc.html similarity index 51% rename from rtc_8h.html rename to group__rtc.html index d2c73c7..bab72b8 100644 --- a/rtc_8h.html +++ b/group__rtc.html @@ -5,10 +5,14 @@ -gossamer: common/rtc.h File Reference +gossamer: Real-Time Clock + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
- -
Data Structures | @@ -80,16 +96,12 @@ Typedefs | Enumerations | Functions
-
rtc.h File Reference
+
Real-Time Clock
-

Real-Time Clock. +

Functions for configuring and using the Real-Time Clock peripheral. More...

-
#include <stdint.h>
-#include <stdbool.h>
-
-

Go to the source code of this file.

@@ -98,62 +110,63 @@

Data Structures

- - +

Macros

+
#define RTC_REFERENCE_YEAR   (2020)
 
 
- - - + - +

Typedefs

+
typedef enum rtc_alarm_match_t rtc_alarm_match_t
 
+
 
typedef void(* rtc_cb_t) (uint16_t intflag)
 
 
- - +

Enumerations

enum  rtc_alarm_match_t { ALARM_MATCH_DISABLED = 0 +
enum  rtc_alarm_match_t { ALARM_MATCH_DISABLED = 0 , ALARM_MATCH_SS , ALARM_MATCH_MMSS , ALARM_MATCH_HHMMSS }
 
 
- - - - + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + + +

Functions

void rtc_init (void)
 Initializes the RTC.
 
+
void rtc_init (void)
 Initializes the RTC.
 
void rtc_enable (void)
 Enables the RTC.
 
bool rtc_is_enabled (void)
 Checks if the RTC is enabled.
 
void rtc_set_date_time (rtc_date_time_t date_time)
 Sets the date and time.
 
rtc_date_time_t rtc_get_date_time (void)
 Returns the date and time.
 
void rtc_enable_alarm_interrupt (rtc_date_time_t alarm_time, rtc_alarm_match_t mask)
 Enables the alarm interrupt.
 
+
 Enables the RTC.
 
bool rtc_is_enabled (void)
 Checks if the RTC is enabled.
 
void rtc_set_date_time (rtc_date_time_t date_time)
 Sets the date and time.
 
rtc_date_time_t rtc_get_date_time (void)
 Returns the date and time.
 
void rtc_enable_alarm_interrupt (rtc_date_time_t alarm_time, rtc_alarm_match_t mask)
 Enables the alarm interrupt.
 
void rtc_disable_alarm_interrupt (void)
 Disables the alarm callback.
 
void rtc_configure_callback (rtc_cb_t callback)
 Configures the RTC alarm callback.
 
 Disables the alarm callback.
 
void rtc_configure_callback (rtc_cb_t callback)
 Configures the RTC alarm callback.
 

Detailed Description

-

Real-Time Clock.

-

Function Documentation

- -

◆ rtc_configure_callback()

+

Functions for configuring and using the Real-Time Clock peripheral.

+

Gossamer supports use of the RTC peripheral in MODE2 (calendar) mode only.

+

Function Documentation

+ +

◆ rtc_configure_callback()

@@ -178,8 +191,8 @@

-

◆ rtc_enable_alarm_interrupt()

+ +

◆ rtc_enable_alarm_interrupt()

@@ -215,8 +228,8 @@

-

◆ rtc_get_date_time()

+ +

◆ rtc_get_date_time()

@@ -233,12 +246,12 @@

Returns
A rtc_date_time_t with the current date and time, with a year value from 0-63 representing 2020-2083.
-
See also
rtc_set_date_time for notes about how the year is stored.
+
See also
rtc_set_date_time for notes about how the year is stored.

- -

◆ rtc_init()

+ +

◆ rtc_init()

@@ -258,8 +271,8 @@

-

◆ rtc_is_enabled()

+ +

◆ rtc_is_enabled()

@@ -279,8 +292,8 @@

-

◆ rtc_set_date_time()

+ +

◆ rtc_set_date_time()

@@ -307,9 +320,12 @@

+ diff --git a/group__rtc.js b/group__rtc.js new file mode 100644 index 0000000..7b740da --- /dev/null +++ b/group__rtc.js @@ -0,0 +1,12 @@ +var group__rtc = +[ + [ "rtc_date_time_t", "unionrtc__date__time__t.html", null ], + [ "rtc_configure_callback", "group__rtc.html#ga8dd6108752ed8c8e5dad649d650dc1d5", null ], + [ "rtc_disable_alarm_interrupt", "group__rtc.html#ga0b927833b5d5d87ec161a8c9cb14d633", null ], + [ "rtc_enable", "group__rtc.html#gabec68bd2863d22f5a8e12ab89f8134f4", null ], + [ "rtc_enable_alarm_interrupt", "group__rtc.html#ga7ed60d3c6eddb662a798903454a60f5c", null ], + [ "rtc_get_date_time", "group__rtc.html#ga728694478350f90fa205569ee72a4d55", null ], + [ "rtc_init", "group__rtc.html#gacf9024748b942a7ae375cf75951afa9c", null ], + [ "rtc_is_enabled", "group__rtc.html#ga72309e05f8aa147cfdd0eb6ac2037889", null ], + [ "rtc_set_date_time", "group__rtc.html#ga16c55e20ebca1f6501626e39a38c6425", null ] +]; \ No newline at end of file diff --git a/group__slcd.html b/group__slcd.html new file mode 100644 index 0000000..432fe91 --- /dev/null +++ b/group__slcd.html @@ -0,0 +1,676 @@ + + + + + + + +gossamer: Segment LCD driver + + + + + + + + + + + + + +
+
+ + + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Segment LCD driver
+
+
+ +

Functions for configuring and using the SAM L22's Segment LCD peripheral. +More...

+ + + + + + + + + + + + + + +

+Enumerations

enum  slcd_bias_value_t { SLCD_BIAS_STATIC = 0 +, SLCD_BIAS_HALF = 1 +, SLCD_BIAS_THIRD = 2 +, SLCD_BIAS_FOURTH = 3 + }
 
enum  slcd_duty_value_t {
+  SLCD_DUTY_1_COMMON = 0 +, SLCD_DUTY_2_COMMON = 1 +, SLCD_DUTY_3_COMMON = 2 +, SLCD_DUTY_4_COMMON = 3 +,
+  SLCD_DUTY_6_COMMON = 4 +, SLCD_DUTY_8_COMMON = 5 +
+ }
 
enum  slcd_prescaler_value_t { SLCD_PRESCALER_DIV16 = 0 +, SLCD_PRESCALER_DIV32 = 1 +, SLCD_PRESCALER_DIV64 = 2 +, SLCD_PRESCALER_DIV128 = 3 + }
 
enum  slcd_clocksource_value_t { SLCD_CLOCKSOURCE_ULP = 0 +, SLCD_CLOCKSOURCE_XOSC = 1 + }
 
enum  slcd_clockdiv_value_t {
+  SLCD_CLOCKDIV_1 = 0 +, SLCD_CLOCKDIV_2 = 1 +, SLCD_CLOCKDIV_3 = 2 +, SLCD_CLOCKDIV_4 = 3 +,
+  SLCD_CLOCKDIV_5 = 4 +, SLCD_CLOCKDIV_6 = 5 +, SLCD_CLOCKDIV_7 = 6 +, SLCD_CLOCKDIV_8 = 7 +
+ }
 
enum  slcd_csrshift_value_t { SLCD_CSRSHIFT_LEFT = 0 +, SLCD_CSRSHIFT_RIGHT = 1 + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void slcd_init (uint64_t lcd_pins, slcd_bias_value_t bias, slcd_duty_value_t duty, slcd_clocksource_value_t clocksource, slcd_prescaler_value_t prescaler, slcd_clockdiv_value_t clkdiv)
 Initializes the SLCD peripheral, but does not enable it.
 
void slcd_set_contrast (uint8_t contrast)
 Sets the contrast level for the display. Valid values are from 0-15.
 
+void slcd_enable (void)
 Enables the SLCD peripheral.
 
void slcd_clear (void)
 Clears all display memory.
 
void slcd_set_segment (uint8_t com, uint8_t seg)
 Sets a segment in the display memory.
 
void slcd_clear_segment (uint8_t com, uint8_t seg)
 Clears a segment in the display memory.
 
void slcd_configure_frame_counter (uint8_t fc, uint8_t overflow_count, bool prescale)
 Configures one of the three frame counters.
 
void slcd_set_frame_counter_enabled (uint8_t fc, bool enabled)
 Enables or disables one of the three frame counters.
 
void slcd_configure_blink (bool blink_all, uint8_t bss0, uint8_t bss1, uint8_t fc)
 Configures the blink mode, but does not start blinking.
 
void slcd_set_blink_enabled (bool enabled)
 Enables or disables blinking according to the configuration set by slcd_configure_blink.
 
void slcd_configure_circular_shift_animation (uint16_t initial_value, uint8_t size, slcd_csrshift_value_t shift_dir, uint8_t fc)
 Configures the Circular Shift Register animation, but does not start it. This is pretty obscure and you should consult the datasheet for more information.
 
void slcd_set_circular_shift_animation_enabled (bool enabled)
 Enables or disables circular shift register animation according to the configuration set by slcd_configure_circular_shift_animation.
 
+void slcd_disable (void)
 Disables the SLCD peripheral.
 
+

Detailed Description

+

Functions for configuring and using the SAM L22's Segment LCD peripheral.

+

Function Documentation

+ +

◆ slcd_clear()

+ +
+
+ + + + + + + + +
void slcd_clear (void )
+
+ +

Clears all display memory.

+

TODO: Can we optimize this? If under 32 segments, we can write 0 to just the SDATAL registers. For only 3 or 4 COMs, we can skip higher numbered registers.

+ +
+
+ +

◆ slcd_clear_segment()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void slcd_clear_segment (uint8_t com,
uint8_t seg 
)
+
+ +

Clears a segment in the display memory.

+
Parameters
+ + + +
comThe common line to clear. Valid options are 0-7.
segThe segment to clear. Valid options are 0-39.
+
+
+ +
+
+ +

◆ slcd_configure_blink()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void slcd_configure_blink (bool blink_all,
uint8_t bss0,
uint8_t bss1,
uint8_t fc 
)
+
+ +

Configures the blink mode, but does not start blinking.

+
Note
SLCD must be disabled to configure the blinking mode.
+
Parameters
+ + + + + +
blink_allIf true, all segments will blink. If false, only the segments specified in the next two masks will blink.
bss0Blink segment select 0. A 1 in any bit position (n) will cause the (COMn, SEG0) segment to blink. Ignored if blink_all is true.
bss1Blink segment select 1. A 1 in any bit position (n) will cause the (COMn, SEG1) segment to blink. Ignored if blink_all is true.
fcThe frame counter to use for blinking. Valid options are 0, 1, or 2.
+
+
+ +
+
+ +

◆ slcd_configure_circular_shift_animation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void slcd_configure_circular_shift_animation (uint16_t initial_value,
uint8_t size,
slcd_csrshift_value_t shift_dir,
uint8_t fc 
)
+
+ +

Configures the Circular Shift Register animation, but does not start it. This is pretty obscure and you should consult the datasheet for more information.

+
Note
SLCD must be disabled to configure the circular shift register.
+
Parameters
+ + + + + +
initial_value16 bits. The initial value of the circular shift register.
sizeThe size of the circular shift register. Valid options are 2 through 16.
shift_dirThe direction of the shift. Valid options are SLCD_CSRSHIFT_LEFT or SLCD_CSRSHIFT_RIGHT.
fcThe frame counter to use for shifting. Valid options are 0, 1, or 2.
+
+
+ +
+
+ +

◆ slcd_configure_frame_counter()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void slcd_configure_frame_counter (uint8_t fc,
uint8_t overflow_count,
bool prescale 
)
+
+ +

Configures one of the three frame counters.

+
Note
SLCD must be disabled to configure frame counters.
+
Parameters
+ + + + +
fcThe frame counter to enable. Valid options are 0, 1, or 2.
overflow_countThe number of frames to count before the overflow fires. Maximum value is 32 frames.
prescaleIf true, the frame counter will count every 8th frame instead of every frame. This will let you count up to 256 frames in increments of 8.
+
+
+ +
+
+ +

◆ slcd_init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void slcd_init (uint64_t lcd_pins,
slcd_bias_value_t bias,
slcd_duty_value_t duty,
slcd_clocksource_value_t clocksource,
slcd_prescaler_value_t prescaler,
slcd_clockdiv_value_t clkdiv 
)
+
+ +

Initializes the SLCD peripheral, but does not enable it.

+

This function sets up the SLCD peripheral with some defaults:

    +
  • LCD runs in standby
  • +
  • Lowest possible contrast level (2.45 volts)
  • +
  • Uses the low power waveform
  • +
  • Charge pump refresh at 250Hz (slowest option)
  • +
  • Reference Refresh at 62.5Hz (slowest option)
  • +
  • Bias buffer enabled (side note / TODO: does turning this off save power?)
  • +
+

You will need to specify the remaining configuration options. Duty and bias are easy, but prescaler, clock divider and number of COM lines will combine to determine the frame rate of the display according to this formula: 32768/(prescaler * clock_divider * number_of_common_lines)

Parameters
+ + + + + + + +
lcd_pinsA 64-bit mask of the pins to use for the SLCD, as numbered in the pin mux table in the data sheet (SLCD/LP[n]). For example, PB08 is SLCD/LP[2] and PA05 is SLCD/LP[5], so the mask for using both of these pins would be (1 << 2) | (1 << 5). The lowest pins are always used as the common lines, so for a 1/2 duty LCD using pins 2, 5, 6, 7, 30 and 35, pins 2 and 5 would be the COM0 and COM1, and the rest would be segment lines SEG0-SEG3.
biasThe bias configuration for the SLCD. Valid options are:
    +
  • SLCD_BIAS_STATIC for a static display (0V, VLCD)
  • +
  • SLCD_BIAS_HALF for 1/2 bias (0V, 1/2 VLCD, VLCD)
  • +
  • SLCD_BIAS_THIRD for 1/3 bias (0V, 1/3 VLCD, 2/3 VLCD, VLCD)
  • +
  • SLCD_BIAS_FOURTH for 1/4 bias (0V, 1/4 VLCD, 1/2 VLCD, 3/4 VLCD, VLCD)
  • +
+
dutyThe duty cycle for the SLCD, aka the number of common lines. Valid options are:
    +
  • SLCD_DUTY_1_COMMON for a static display
  • +
  • SLCD_DUTY_2_COMMON for two common lines and a 1/2 duty cycle
  • +
  • SLCD_DUTY_3_COMMON for three common lines and a 1/3 duty cycle
  • +
  • SLCD_DUTY_4_COMMON for four common lines and a 1/4 duty cycle
  • +
  • SLCD_DUTY_6_COMMON for six common lines and a 1/6 duty cycle
  • +
  • SLCD_DUTY_8_COMMON for eight common lines and a 1/8 duty cycle
  • +
+
clocksourceThe clock source for the SLCD. Valid options are:
    +
  • SLCD_CLOCKSOURCE_ULP for the low-accuracy, low-power internal 32kHz oscillator
  • +
  • SLCD_CLOCKSOURCE_XOSC for an external 32kHz crystal oscillator
  • +
+
prescalerThe prescaler factor, which initially divides the 32kHz clock. Valid options are:
    +
  • SLCD_CTRLA_PRESC_PRESC16_Val - Divide by 16
  • +
  • SLCD_CTRLA_PRESC_PRESC32_Val - Divide by 32
  • +
  • SLCD_CTRLA_PRESC_PRESC64_Val - Divide by 64
  • +
  • SLCD_CTRLA_PRESC_PRESC128_Val - Divide by 128
  • +
+
clock_dividerThe clock divider, which divides the prescaled clock. Valid options areL
    +
  • SLCD_CLOCKDIV_1 for no division
  • +
  • SLCD_CLOCKDIV_2 to divide by 2
  • +
  • SLCD_CLOCKDIV_3 to divide by 3
  • +
  • SLCD_CLOCKDIV_4 to divide by 4
  • +
  • SLCD_CLOCKDIV_5 to divide by 5
  • +
  • SLCD_CLOCKDIV_6 to divide by 6
  • +
  • SLCD_CLOCKDIV_7 to divide by 7
  • +
  • SLCD_CLOCKDIV_8 to divide by 8
  • +
+
+
+
+ +
+
+ +

◆ slcd_set_blink_enabled()

+ +
+
+ + + + + + + + +
void slcd_set_blink_enabled (bool enabled)
+
+ +

Enables or disables blinking according to the configuration set by slcd_configure_blink.

+
Note
You can enable blinking at any time; there is no need to disable the SLCD first.
+
Parameters
+ + +
enabledIf true, blinking is enabled. If false, blinking is disabled.
+
+
+ +
+
+ +

◆ slcd_set_circular_shift_animation_enabled()

+ +
+
+ + + + + + + + +
void slcd_set_circular_shift_animation_enabled (bool enabled)
+
+ +

Enables or disables circular shift register animation according to the configuration set by slcd_configure_circular_shift_animation.

+
Note
You can enable the CSR animation at any time; there is no need to disable the SLCD first.
+
Parameters
+ + +
enabledIf true, the CSR animation is enabled. If false, the CSR animation is disabled.
+
+
+ +
+
+ +

◆ slcd_set_contrast()

+ +
+
+ + + + + + + + +
void slcd_set_contrast (uint8_t contrast)
+
+ +

Sets the contrast level for the display. Valid values are from 0-15.

+
Parameters
+ + +
contrastThe contrast configuration for the SLCD
+
+
+

In internal supply mode, VLCD is in the range of 2.45V (contrast 0) to 3.45V (contrast 15).

Note
You can set the contrast level at any time, without disabling the SLCD.
+ +
+
+ +

◆ slcd_set_frame_counter_enabled()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void slcd_set_frame_counter_enabled (uint8_t fc,
bool enabled 
)
+
+ +

Enables or disables one of the three frame counters.

+
Note
You can enable a frame counter at any time; there is no need to disable the SLCD first.
+
Parameters
+ + + +
fcThe frame counter to enable. Valid options are 0, 1, or 2.
enabledIf true, the frame counter is enabled. If false, the frame counter is disabled.
+
+
+ +
+
+ +

◆ slcd_set_segment()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void slcd_set_segment (uint8_t com,
uint8_t seg 
)
+
+ +

Sets a segment in the display memory.

+
Parameters
+ + + +
comThe common line to set. Valid options are 0-7.
segThe segment to set. Valid options are 0-39.
+
+
+ +
+
+
+
+ + + + diff --git a/group__slcd.js b/group__slcd.js new file mode 100644 index 0000000..cd5a3fd --- /dev/null +++ b/group__slcd.js @@ -0,0 +1,16 @@ +var group__slcd = +[ + [ "slcd_clear", "group__slcd.html#gae95a8c8448785a091418cde0ab46cde1", null ], + [ "slcd_clear_segment", "group__slcd.html#ga32700273cbcdb6bec5dbe35aadf675fe", null ], + [ "slcd_configure_blink", "group__slcd.html#gacf507491bc54005057442f48dffd22b5", null ], + [ "slcd_configure_circular_shift_animation", "group__slcd.html#ga4e1060443dcfb767dc7bd6503c318f1b", null ], + [ "slcd_configure_frame_counter", "group__slcd.html#ga4ddbc9636249c6652d298a8c14fb1b19", null ], + [ "slcd_disable", "group__slcd.html#ga0f4187acb065db5da4cde95a729f17cf", null ], + [ "slcd_enable", "group__slcd.html#gaf629b000ff5ce5ded0f46e2df795f8b3", null ], + [ "slcd_init", "group__slcd.html#ga1d5b89a5e4f29c7d807794f9c25caaa1", null ], + [ "slcd_set_blink_enabled", "group__slcd.html#gad12bde6c35bcea61572c6813281be416", null ], + [ "slcd_set_circular_shift_animation_enabled", "group__slcd.html#ga4dec2a1983ffc4fd4c69b31d8fc06b1a", null ], + [ "slcd_set_contrast", "group__slcd.html#gac39467715e72b5336855708198be9b05", null ], + [ "slcd_set_frame_counter_enabled", "group__slcd.html#gaa49c7c6c125badffdf00d71a96e989ee", null ], + [ "slcd_set_segment", "group__slcd.html#gafa6a244c0634d7009cb70b4fe9c2bd54", null ] +]; \ No newline at end of file diff --git a/spi_8h.html b/group__spi.html similarity index 53% rename from spi_8h.html rename to group__spi.html index f0fb6ad..b36f895 100644 --- a/spi_8h.html +++ b/group__spi.html @@ -5,10 +5,14 @@ -gossamer: common/spi.h File Reference +gossamer: SPI Peripheral + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
- -
-
spi.h File Reference
+
SPI Peripheral
-

SPI Peripheral. +

The SPI peripheral is used for synchronous serial communication with other devices. More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include <stddef.h>
-
-

Go to the source code of this file.

- - - + - - + - +

Enumerations

enum  spi_mode_t { SPI_MODE_PERIPHERAL = 2 +
enum  spi_mode_t { SPI_MODE_PERIPHERAL = 2 , SPI_MODE_CONTROLLER = 3 }
 
enum  spi_dopo_t { SPI_DOPO_0_SCK_1 = 0 +
 
enum  spi_dopo_t { SPI_DOPO_0_SCK_1 = 0 , SPI_DOPO_2_SCK_3 , SPI_DOPO_3_SCK_1 , SPI_DOPO_0_SCK_3 }
 
enum  spi_dipo_t {
+
 
enum  spi_dipo_t {
  SPI_DIPO_0 = 0 , SPI_DIPO_1 , SPI_DIPO_2 @@ -110,42 +121,42 @@   SPI_DIPO_NONE = 0xff
}
 
 
- - - - + + + - - - - - - + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + +

Functions

void spi_init (spi_mode_t mode, uint32_t baud)
 Initializes the SPI peripheral for a board with a defined SPI_SERCOM.
 
+
void spi_init (spi_mode_t mode, uint32_t baud)
 Initializes the SPI peripheral for a board with a defined SPI_SERCOM.
 
void spi_enable (void)
 Enables the SPI peripheral for a board with a defined SPI_SERCOM.
 
uint8_t spi_transfer (uint8_t data)
 Transfers a byte over SPI for a board with a defined SPI_SERCOM.
 
+
 Enables the SPI peripheral for a board with a defined SPI_SERCOM.
 
uint8_t spi_transfer (uint8_t data)
 Transfers a byte over SPI for a board with a defined SPI_SERCOM.
 
void spi_disable (void)
 Disables the SPI peripheral for a board with a defined SPI_SERCOM.
 
void spi_init_instance (uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud)
 Initializes a specific SERCOM instance for SPI.
 
void spi_enable_instance (uint8_t sercom)
 Enables a specific SERCOM instance for SPI.
 
uint8_t spi_transfer_instance (uint8_t sercom, uint8_t data)
 Transfers a byte over SPI.
 
void spi_disable_instance (uint8_t sercom)
 Disables a specific SERCOM instance for SPI.
 
 Disables the SPI peripheral for a board with a defined SPI_SERCOM.
 
void spi_init_instance (uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud)
 Initializes a specific SERCOM instance for SPI.
 
void spi_enable_instance (uint8_t sercom)
 Enables a specific SERCOM instance for SPI.
 
uint8_t spi_transfer_instance (uint8_t sercom, uint8_t data)
 Transfers a byte over SPI.
 
void spi_disable_instance (uint8_t sercom)
 Disables a specific SERCOM instance for SPI.
 

Detailed Description

-

SPI Peripheral.

-

Function Documentation

- -

◆ spi_disable_instance()

+

The SPI peripheral is used for synchronous serial communication with other devices.

+

Function Documentation

+ +

◆ spi_disable_instance()

@@ -170,8 +181,8 @@

-

◆ spi_enable_instance()

+ +

◆ spi_enable_instance()

@@ -196,8 +207,8 @@

-

◆ spi_init()

+ +

◆ spi_init()

@@ -234,8 +245,8 @@

-

◆ spi_init_instance()

+ +

◆ spi_init_instance()

@@ -305,8 +316,8 @@

-

◆ spi_transfer()

+ +

◆ spi_transfer()

@@ -332,8 +343,8 @@

-

◆ spi_transfer_instance()

+ +

◆ spi_transfer_instance()

@@ -371,9 +382,12 @@

+ diff --git a/group__spi.js b/group__spi.js new file mode 100644 index 0000000..3c1a153 --- /dev/null +++ b/group__spi.js @@ -0,0 +1,11 @@ +var group__spi = +[ + [ "spi_disable", "group__spi.html#gaa8d2d6d1632faf9abbe03c3ed90d54d4", null ], + [ "spi_disable_instance", "group__spi.html#ga3856b233dc7584708ab420d41c4816fe", null ], + [ "spi_enable", "group__spi.html#ga72cf41d2f19954fefd27f681d6b39532", null ], + [ "spi_enable_instance", "group__spi.html#ga8f1915874847b4564ab22039f2b8762f", null ], + [ "spi_init", "group__spi.html#ga48ef10ade34f68b96d36dee03ebc4415", null ], + [ "spi_init_instance", "group__spi.html#gaee8eaa5f597d774c4fc4a6f7d6d08305", null ], + [ "spi_transfer", "group__spi.html#ga50084189a01c481aebe4e4d1e1968910", null ], + [ "spi_transfer_instance", "group__spi.html#ga03d51191e1fb189fcddf1087999d58a2", null ] +]; \ No newline at end of file diff --git a/group__system.html b/group__system.html new file mode 100644 index 0000000..489c259 --- /dev/null +++ b/group__system.html @@ -0,0 +1,251 @@ + + + + + + + +gossamer: System Internals + + + + + + + + + + + + + +
+
+ + + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
System Internals
+
+
+ +

Functions for configuring the system and putting it in standby mode. +More...

+ + + + + + + + + + + + + + + + + +

+Functions

void sys_init (void)
 Initializes the system clocks and performs any required system-wide setup.
 
uint32_t get_cpu_frequency (void)
 Gets the CPU frequency.
 
bool set_cpu_frequency (uint32_t freq)
 Sets the CPU frequency.
 
void _enable_48mhz_gclk1 (void)
 Enables the 48 MHz clock on GCLK1 for USB operation.
 
void _enter_standby_mode (void)
 Enters the low-power STANDBY mode. Does not return until an interrupt fires.
 
+

Detailed Description

+

Functions for configuring the system and putting it in standby mode.

+

Function Documentation

+ +

◆ _enable_48mhz_gclk1()

+ +
+
+ + + + + + + + +
void _enable_48mhz_gclk1 (void )
+
+ +

Enables the 48 MHz clock on GCLK1 for USB operation.

+

This function is called by the USB stack when it is initialized.

Warning
At this time, the 48 MHz clock is hard-coded to use USB Clock Recovery Mode, and as such will only be available if your device is plugged into a USB host. It is possible to derive the 48 MHz DFLL from an external 32kHz crystal, but this is not currently implemented in Gossamer.
+ +
+
+ +

◆ _enter_standby_mode()

+ +
+
+ + + + + + + + +
void _enter_standby_mode (void )
+
+ +

Enters the low-power STANDBY mode. Does not return until an interrupt fires.

+

You should not generally need to call this function; at the end of every app_loop invocation, the main run loop enters standby mode if your app indicated that it was appropriate.

+ +
+
+ +

◆ get_cpu_frequency()

+ +
+
+ + + + + + + + +
uint32_t get_cpu_frequency (void )
+
+ +

Gets the CPU frequency.

+
Returns
8000000 by default, or another value if set by set_cpu_frequency
+ +
+
+ +

◆ set_cpu_frequency()

+ +
+
+ + + + + + + + +
bool set_cpu_frequency (uint32_t freq)
+
+ +

Sets the CPU frequency.

+
Parameters
+ + +
freqone of 1000000, 2000000, 4000000, 8000000, 12000000 or 16000000.
+
+
+

Supported CPU frequencies vary from chip to chip:

    +
  • On the SAM D11 and D21, you can choose 8, 4, 2 or 1 MHz.
  • +
  • On the SAM L21 and L22, you can choose 16, 12, 8 or 4 MHz. While you can run these chips at higher frequencies using the DFLL, Gossamer aims for simplicity: this means that it only supports the internal oscillator at one of its standard frequencies.
    Note
    Some peripherals like SERCOMs and TC/TCCs read the CPU frequency when they are configured, to set critical timing-related parameters like baud rate or period. If you change the CPU frequency after setting up these peripherals and then attempt to use them, they will very likely behave in unexpected ways. Thus you should de-init any peripherals that depend on GCLK0 before calling set_cpu_frequency, and then re-init them after.
    +
  • +
+ +
+
+ +

◆ sys_init()

+ +
+
+ + + + + + + + +
void sys_init (void )
+
+ +

Initializes the system clocks and performs any required system-wide setup.

+

Gossamer aims for consistency at system startup, no matter which chip you are working with. To that end:

    +
  • GCLK0, the main system clock, is set to 8 MHz.
  • +
  • GCLK2 is the low-power 32768 Hz clock, OSCULP32K
  • +
  • GCLK3 is a 1024 Hz clock, derived from the most accurate source available. GCLK0 is set to ONDEMAND with RUNSTDBY off, so the main clock remains off when in standby mode. GCLK2 and GCLK3 are also ONDEMAND, but RUNSTDBY is on. This ensures that if a peripheral requests it, the clock will remain on in standby, but if no peripheral requests it, it will not run at all. Also note that while GCLK1 is not turned on at startup, it may be reserved for internal use depending on your use case. If you intend to use USB, the usb_init function will claim GCLK1 for the 48 MHz DFLL clock.
  • +
+ +
+
+
+
+ + + + diff --git a/group__system.js b/group__system.js new file mode 100644 index 0000000..c357e63 --- /dev/null +++ b/group__system.js @@ -0,0 +1,8 @@ +var group__system = +[ + [ "_enable_48mhz_gclk1", "group__system.html#gaf6d6cb9ca08e26e456d9ed1d425453e8", null ], + [ "_enter_standby_mode", "group__system.html#ga436af75ad5caf82faa3497787abf4321", null ], + [ "get_cpu_frequency", "group__system.html#ga96fa401b65736262fc29cc0537bed03e", null ], + [ "set_cpu_frequency", "group__system.html#ga4f33e5a16dba970fa7064ea27287fcba", null ], + [ "sys_init", "group__system.html#gaf411a8bc6b7ed4b0af9114e10c959448", null ] +]; \ No newline at end of file diff --git a/tc_8h.html b/group__tc.html similarity index 56% rename from tc_8h.html rename to group__tc.html index 36340ca..d6075c0 100644 --- a/tc_8h.html +++ b/group__tc.html @@ -5,10 +5,14 @@ -gossamer: common/tc.h File Reference +gossamer: Timer/Counter + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
- -
-
tc.h File Reference
+
Timer/Counter
-

Timer/Counter Peripheral. +

Functions for configuring and using the Timer/Counter peripherals. More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include "sam.h"
-#include "system.h"
-
-

Go to the source code of this file.

- - - + - - + - - + - - + - +

Enumerations

enum  tc_prescaler_value_t {
+
enum  tc_prescaler_value_t {
  TC_PRESCALER_DIV1 = 0 , TC_PRESCALER_DIV2 = 1 , TC_PRESCALER_DIV4 = 2 @@ -104,129 +114,129 @@ , TC_PRESCALER_DIV1024 = 7
}
 
enum  tc_counter_mode_t { TC_COUNTER_MODE_16BIT = 0 +
 
enum  tc_counter_mode_t { TC_COUNTER_MODE_16BIT = 0 , TC_COUNTER_MODE_8BIT = 1 , TC_COUNTER_MODE_32BIT = 2 }
 
enum  tc_wavegen_t { TC_WAVEGEN_NORMAL_FREQUENCY = 0 +
 
enum  tc_wavegen_t { TC_WAVEGEN_NORMAL_FREQUENCY = 0 , TC_WAVEGEN_MATCH_FREQUENCY = 1 , TC_WAVEGEN_NORMAL_PWM = 2 , TC_WAVEGEN_MATCH_PWM = 3 }
 
enum  tc_channel_polarity_t { TC_CHANNEL_POLARITY_NORMAL = 0 +
 
enum  tc_channel_polarity_t { TC_CHANNEL_POLARITY_NORMAL = 0 , TC_CHANNEL_POLARITY_INVERTED = 1 }
 
enum  tc_event_action_t {
+
 
enum  tc_event_action_t {
  TC_EVENT_ACTION_DISABLED = 0x0ul , TC_EVENT_ACTION_RETRIGGER = 0x1ul , TC_EVENT_ACTION_COUNT = 0x2ul , TC_EVENT_ACTION_START = 0x3ul ,
  TC_EVENT_ACTION_STAMP = 0x4ul -, TC_EVENT_ACTION_PPW = 0x5ul +, TC_EVENT_ACTION_PPW = 0x5ul , TC_EVENT_ACTION_PWP = 0x6ul , TC_EVENT_ACTION_PW = 0x7ul
}
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

bool tc_init (uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler)
 Enables the peripheral clock for the TC and clocks it with the selected clock source. Also resets the TC to its starting configuration, which is COUNT16 mode.
 
void tc_set_counter_mode (uint8_t instance, tc_counter_mode_t mode)
 Sets the TC's counting mode (an 8, 16 or 32-bit counter),.
 
void tc_set_run_in_standby (uint8_t instance, bool runStandby)
 Sets the TC's run-in-standby mode.
 
void tc_set_wavegen (uint8_t instance, tc_wavegen_t mode)
 Sets the TC's waveform generation mode.
 
void tc_set_channel_polarity (uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity)
 Sets the polarity of one of the waveform output channels.
 
void tc_enable (uint8_t instance)
 Enables the TC. Make sure to call tc_init first to set it up.
 
bool tc_is_enabled (uint8_t instance)
 Checks whether the TC is enabled.
 
void tc_count8_set_period (uint8_t instance, uint8_t period)
 Sets the TC's period or PER register in 8-bit mode.
 
uint8_t tc_count8_get_period (uint8_t instance)
 Gets the TC's period or PER register in 8-bit mode.
 
void tc_count8_set_cc (uint8_t instance, uint8_t channel, uint8_t value)
 Sets the TC's compare channel CC0 or CC1 register in 8-bit mode.
 
void tc_count16_set_cc (uint8_t instance, uint8_t channel, uint16_t value)
 Sets the TC's compare channel CC0 or CC1 register in 16-bit mode.
 
void tc_count32_set_cc (uint8_t instance, uint8_t channel, uint32_t value)
 Sets the TC's compare channel CC0 or CC1 register in 32-bit mode.
 
void tc_count8_set_count (uint8_t instance, uint8_t value)
 Sets the TC's counter value in 8-bit mode.
 
void tc_count16_set_count (uint8_t instance, uint16_t value)
 Sets the TC's counter value in 16-bit mode.
 
void tc_count32_set_count (uint8_t instance, uint32_t value)
 Sets the TC's counter value in 32-bit mode.
 
uint8_t tc_count8_get_count (uint8_t instance)
 Gets the TC's current counter value in 8-bit mode.
 
uint16_t tc_count16_get_count (uint8_t instance)
 Gets the TC's current counter value in 16-bit mode.
 
uint32_t tc_count32_get_count (uint8_t instance)
 Gets the TC's current counter value in 32-bit mode.
 
void tc_set_event_action (uint8_t instance, tc_event_action_t action)
 Sets the action to take when the TC receives an event.
 
void tc_stop (uint8_t instance)
 Issues a STOP command to the TC.
 
void tc_retrigger (uint8_t instance)
 Issues a RETRIGGER command to the TC.
 
void tc_disable (uint8_t instance)
 Disables the TC, but retains all its settings.
 
bool tc_init (uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler)
 Enables the peripheral clock for the TC and clocks it with the selected clock source. Also resets the TC to its starting configuration, which is COUNT16 mode.
 
void tc_set_counter_mode (uint8_t instance, tc_counter_mode_t mode)
 Sets the TC's counting mode (an 8, 16 or 32-bit counter),.
 
void tc_set_run_in_standby (uint8_t instance, bool runStandby)
 Sets the TC's run-in-standby mode.
 
void tc_set_wavegen (uint8_t instance, tc_wavegen_t mode)
 Sets the TC's waveform generation mode.
 
void tc_set_channel_polarity (uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity)
 Sets the polarity of one of the waveform output channels.
 
void tc_enable (uint8_t instance)
 Enables the TC. Make sure to call tc_init first to set it up.
 
bool tc_is_enabled (uint8_t instance)
 Checks whether the TC is enabled.
 
void tc_count8_set_period (uint8_t instance, uint8_t period)
 Sets the TC's period or PER register in 8-bit mode.
 
uint8_t tc_count8_get_period (uint8_t instance)
 Gets the TC's period or PER register in 8-bit mode.
 
void tc_count8_set_cc (uint8_t instance, uint8_t channel, uint8_t value)
 Sets the TC's compare channel CC0 or CC1 register in 8-bit mode.
 
void tc_count16_set_cc (uint8_t instance, uint8_t channel, uint16_t value)
 Sets the TC's compare channel CC0 or CC1 register in 16-bit mode.
 
void tc_count32_set_cc (uint8_t instance, uint8_t channel, uint32_t value)
 Sets the TC's compare channel CC0 or CC1 register in 32-bit mode.
 
void tc_count8_set_count (uint8_t instance, uint8_t value)
 Sets the TC's counter value in 8-bit mode.
 
void tc_count16_set_count (uint8_t instance, uint16_t value)
 Sets the TC's counter value in 16-bit mode.
 
void tc_count32_set_count (uint8_t instance, uint32_t value)
 Sets the TC's counter value in 32-bit mode.
 
uint8_t tc_count8_get_count (uint8_t instance)
 Gets the TC's current counter value in 8-bit mode.
 
uint16_t tc_count16_get_count (uint8_t instance)
 Gets the TC's current counter value in 16-bit mode.
 
uint32_t tc_count32_get_count (uint8_t instance)
 Gets the TC's current counter value in 32-bit mode.
 
void tc_set_event_action (uint8_t instance, tc_event_action_t action)
 Sets the action to take when the TC receives an event.
 
void tc_stop (uint8_t instance)
 Issues a STOP command to the TC.
 
void tc_retrigger (uint8_t instance)
 Issues a RETRIGGER command to the TC.
 
void tc_disable (uint8_t instance)
 Disables the TC, but retains all its settings.
 

Detailed Description

-

Timer/Counter Peripheral.

-

Enumeration Type Documentation

- -

◆ tc_event_action_t

+

Functions for configuring and using the Timer/Counter peripherals.

+

Enumeration Type Documentation

+ +

◆ tc_event_action_t

-
Enumerator
TC_EVENT_ACTION_PPW 

NOTE: Not available on SAM D11 or D21.

+
Enumerator
TC_EVENT_ACTION_PPW 

NOTE: Not available on SAM D11 or D21.

Function Documentation

- -

◆ tc_count16_get_count()

+ +

◆ tc_count16_get_count()

@@ -252,8 +262,8 @@

-

◆ tc_count16_set_cc()

+ +

◆ tc_count16_set_cc()

@@ -296,8 +306,8 @@

-

◆ tc_count16_set_count()

+ +

◆ tc_count16_set_count()

@@ -333,8 +343,8 @@

-

◆ tc_count32_get_count()

+ +

◆ tc_count32_get_count()

@@ -360,8 +370,8 @@

-

◆ tc_count32_set_cc()

+ +

◆ tc_count32_set_cc()

@@ -404,8 +414,8 @@

-

◆ tc_count32_set_count()

+ +

◆ tc_count32_set_count()

@@ -441,8 +451,8 @@

-

◆ tc_count8_get_count()

+ +

◆ tc_count8_get_count()

@@ -468,8 +478,8 @@

-

◆ tc_count8_get_period()

+ +

◆ tc_count8_get_period()

@@ -495,8 +505,8 @@

-

◆ tc_count8_set_cc()

+ +

◆ tc_count8_set_cc()

@@ -539,8 +549,8 @@

-

◆ tc_count8_set_count()

+ +

◆ tc_count8_set_count()

@@ -576,8 +586,8 @@

-

◆ tc_count8_set_period()

+ +

◆ tc_count8_set_period()

@@ -613,8 +623,8 @@

-

◆ tc_disable()

+ +

◆ tc_disable()

@@ -639,8 +649,8 @@

-

◆ tc_enable()

+ +

◆ tc_enable()

@@ -665,8 +675,8 @@

-

◆ tc_init()

+ +

◆ tc_init()

@@ -721,8 +731,8 @@

-

◆ tc_is_enabled()

+ +

◆ tc_is_enabled()

@@ -748,8 +758,8 @@

-

◆ tc_retrigger()

+ +

◆ tc_retrigger()

@@ -774,8 +784,8 @@

-

◆ tc_set_channel_polarity()

+ +

◆ tc_set_channel_polarity()

@@ -824,8 +834,8 @@

-

◆ tc_set_counter_mode()

+ +

◆ tc_set_counter_mode()

@@ -866,8 +876,8 @@

-

◆ tc_set_event_action()

+ +

◆ tc_set_event_action()

@@ -881,7 +891,7 @@

- tc_event_action_t  + tc_event_action_t  action  @@ -900,12 +910,12 @@

See also
tc_event_action_t
+
See also
tc_event_action_t

- -

◆ tc_set_run_in_standby()

+ +

◆ tc_set_run_in_standby()

@@ -941,8 +951,8 @@

-

◆ tc_set_wavegen()

+ +

◆ tc_set_wavegen()

@@ -984,8 +994,8 @@

-

◆ tc_stop()

+ +

◆ tc_stop()

@@ -1011,9 +1021,12 @@

+ diff --git a/group__tc.js b/group__tc.js new file mode 100644 index 0000000..1ec2487 --- /dev/null +++ b/group__tc.js @@ -0,0 +1,28 @@ +var group__tc = +[ + [ "tc_event_action_t", "group__tc.html#gae83a15325ed7aaf529abae8eb9edb996", [ + [ "TC_EVENT_ACTION_PPW", "group__tc.html#ggae83a15325ed7aaf529abae8eb9edb996a4957024d607401030b128f9b775edb7d", null ] + ] ], + [ "tc_count16_get_count", "group__tc.html#ga2e534df47672eea4460487ab3fe1e123", null ], + [ "tc_count16_set_cc", "group__tc.html#ga30b584892c4a1cfce9ddc70933776e7e", null ], + [ "tc_count16_set_count", "group__tc.html#ga2b52ab8a84db926117b40c7c6d6447d6", null ], + [ "tc_count32_get_count", "group__tc.html#gaa5879a623b3133654d474decb14b61f8", null ], + [ "tc_count32_set_cc", "group__tc.html#ga5078d0682876c8bcabbf8da7944865e8", null ], + [ "tc_count32_set_count", "group__tc.html#ga4136a7369f7b79b4a1d29575c1f1f9d8", null ], + [ "tc_count8_get_count", "group__tc.html#ga0350dc913a38a4e3b27b441510a614ba", null ], + [ "tc_count8_get_period", "group__tc.html#ga993860f6b38c672f9ca6ae1b60452282", null ], + [ "tc_count8_set_cc", "group__tc.html#ga8862d572676201371406b19746198c45", null ], + [ "tc_count8_set_count", "group__tc.html#ga363974408ab3135aaf6529cadfd5195b", null ], + [ "tc_count8_set_period", "group__tc.html#gab18ace8a5dd07d75cb9e6957d9e2658c", null ], + [ "tc_disable", "group__tc.html#gaf2ed5cb964a3f29663b89bfc2a661caf", null ], + [ "tc_enable", "group__tc.html#ga2715d5a6f20298805eefa13a8a7a1b99", null ], + [ "tc_init", "group__tc.html#ga1ccf965a51a89fb1df2545988d4739d2", null ], + [ "tc_is_enabled", "group__tc.html#ga1b71bab26fe6c8796a723a10fba63b6b", null ], + [ "tc_retrigger", "group__tc.html#gaabc141b06b22193abcb931edf634a7f5", null ], + [ "tc_set_channel_polarity", "group__tc.html#gafd02ffa629bde002a06ad16a570177ac", null ], + [ "tc_set_counter_mode", "group__tc.html#gabbb61997f4579d174976dcc8e858c87a", null ], + [ "tc_set_event_action", "group__tc.html#ga59bb895d55ef97120fac8149ec78bc47", null ], + [ "tc_set_run_in_standby", "group__tc.html#ga0dec44fc5db357209ea67b67607c7e81", null ], + [ "tc_set_wavegen", "group__tc.html#gaffa4b9e60ccf8ba52074f3f2f28d8823", null ], + [ "tc_stop", "group__tc.html#ga15eaf925943d7ba804ecd8bd466a4b14", null ] +]; \ No newline at end of file diff --git a/tcc_8h.html b/group__tcc.html similarity index 57% rename from tcc_8h.html rename to group__tcc.html index c87a466..d811899 100644 --- a/tcc_8h.html +++ b/group__tcc.html @@ -5,10 +5,14 @@ -gossamer: common/tcc.h File Reference +gossamer: Timer/Counter for Control Applications + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
- -
-
tcc.h File Reference
+
Timer/Counter for Control Applications
-

Timer/Counter for Control Applications (TCC) Peripheral. +

Functions for configuring and using the TCC peripheral, a more advanced timer/counter. More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include "sam.h"
-
-

Go to the source code of this file.

- - - + - - + - - + - +

Enumerations

enum  tcc_prescaler_value_t {
+
enum  tcc_prescaler_value_t {
  TCC_PRESCALER_DIV1 = 0 , TCC_PRESCALER_DIV2 = 1 , TCC_PRESCALER_DIV4 = 2 @@ -103,79 +114,79 @@ , TCC_PRESCALER_DIV1024 = 7
}
 
enum  tcc_wavegen_t { TCC_WAVEGEN_NORMAL_FREQUENCY = 0 +
 
enum  tcc_wavegen_t { TCC_WAVEGEN_NORMAL_FREQUENCY = 0 , TCC_WAVEGEN_MATCH_FREQUENCY = 1 , TCC_WAVEGEN_NORMAL_PWM = 2 }
 
enum  tcc_output_matrix_t { TCC_OUTPUT_MATRIX_MODULO_4 = 0 +
 
enum  tcc_output_matrix_t { TCC_OUTPUT_MATRIX_MODULO_4 = 0 , TCC_OUTPUT_MATRIX_MODULO_2 = 1 , TCC_OUTPUT_MATRIX_ALL_CC0 = 2 , TCC_OUTPUT_MATRIX_WO0_CC0_OTHERS_CC1 = 3 }
 
enum  tcc_channel_polarity_t { TCC_CHANNEL_POLARITY_NORMAL = 0 +
 
enum  tcc_channel_polarity_t { TCC_CHANNEL_POLARITY_NORMAL = 0 , TCC_CHANNEL_POLARITY_INVERTED = 1 }
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

bool tcc_init (uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler)
 Enables the peripheral clock for the TCC and clocks it with the selected clock source. Also resets the TCC to its starting configuration.
 
void tcc_set_run_in_standby (uint8_t instance, bool runStandby)
 Sets whether the TCC should run in standby mode.
 
void tcc_set_wavegen (uint8_t instance, tcc_wavegen_t mode)
 Sets the waveform generation mode for the TCC.
 
void tcc_set_output_matrix (uint8_t instance, tcc_output_matrix_t mode)
 Sets the output matrix for the TCC.
 
void tcc_set_channel_polarity (uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity)
 Sets the polarity of a channel.
 
void tcc_enable (uint8_t instance)
 Enables the TCC. Make sure to call tcc_init first to set it up.
 
bool tcc_is_enabled (uint8_t instance)
 Checks whether the TCC is enabled.
 
void tcc_set_period (uint8_t instance, uint32_t period, bool buffered)
 Sets the period of the TCC.
 
uint32_t tcc_get_period (uint8_t instance)
 Gets the period of the TCC.
 
void tcc_set_cc (uint8_t instance, uint8_t channel, uint32_t value, bool buffered)
 Sets the value of a compare channel.
 
void tcc_set_count (uint8_t instance, uint32_t value)
 Sets the value of the counter.
 
uint32_t tcc_get_count (uint8_t instance)
 Gets the current value of the counter.
 
void tcc_stop (uint8_t instance)
 Issues a STOP command to the TCC.
 
void tcc_retrigger (uint8_t instance)
 Issues a RETRIGGER command to the TCC.
 
void tcc_update (uint8_t instance)
 Issues an UPDATE command to the TCC.
 
void tcc_disable (uint8_t instance)
 Disables the TCC, but retains all its settings.
 
bool tcc_init (uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler)
 Enables the peripheral clock for the TCC and clocks it with the selected clock source. Also resets the TCC to its starting configuration.
 
void tcc_set_run_in_standby (uint8_t instance, bool runStandby)
 Sets whether the TCC should run in standby mode.
 
void tcc_set_wavegen (uint8_t instance, tcc_wavegen_t mode)
 Sets the waveform generation mode for the TCC.
 
void tcc_set_output_matrix (uint8_t instance, tcc_output_matrix_t mode)
 Sets the output matrix for the TCC.
 
void tcc_set_channel_polarity (uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity)
 Sets the polarity of a channel.
 
void tcc_enable (uint8_t instance)
 Enables the TCC. Make sure to call tcc_init first to set it up.
 
bool tcc_is_enabled (uint8_t instance)
 Checks whether the TCC is enabled.
 
void tcc_set_period (uint8_t instance, uint32_t period, bool buffered)
 Sets the period of the TCC.
 
uint32_t tcc_get_period (uint8_t instance)
 Gets the period of the TCC.
 
void tcc_set_cc (uint8_t instance, uint8_t channel, uint32_t value, bool buffered)
 Sets the value of a compare channel.
 
void tcc_set_count (uint8_t instance, uint32_t value)
 Sets the value of the counter.
 
uint32_t tcc_get_count (uint8_t instance)
 Gets the current value of the counter.
 
void tcc_stop (uint8_t instance)
 Issues a STOP command to the TCC.
 
void tcc_retrigger (uint8_t instance)
 Issues a RETRIGGER command to the TCC.
 
void tcc_update (uint8_t instance)
 Issues an UPDATE command to the TCC.
 
void tcc_disable (uint8_t instance)
 Disables the TCC, but retains all its settings.
 

Detailed Description

-

Timer/Counter for Control Applications (TCC) Peripheral.

-

Function Documentation

- -

◆ tcc_disable()

+

Functions for configuring and using the TCC peripheral, a more advanced timer/counter.

+

Function Documentation

+ +

◆ tcc_disable()

@@ -200,8 +211,8 @@

-

◆ tcc_enable()

+ +

◆ tcc_enable()

@@ -226,8 +237,8 @@

-

◆ tcc_get_count()

+ +

◆ tcc_get_count()

@@ -253,8 +264,8 @@

-

◆ tcc_get_period()

+ +

◆ tcc_get_period()

@@ -280,8 +291,8 @@

-

◆ tcc_init()

+ +

◆ tcc_init()

@@ -336,8 +347,8 @@

-

◆ tcc_is_enabled()

+ +

◆ tcc_is_enabled()

@@ -363,8 +374,8 @@

-

◆ tcc_retrigger()

+ +

◆ tcc_retrigger()

@@ -389,8 +400,8 @@

-

◆ tcc_set_cc()

+ +

◆ tcc_set_cc()

@@ -440,8 +451,8 @@

-

◆ tcc_set_channel_polarity()

+ +

◆ tcc_set_channel_polarity()

@@ -490,8 +501,8 @@

-

◆ tcc_set_count()

+ +

◆ tcc_set_count()

@@ -527,8 +538,8 @@

-

◆ tcc_set_output_matrix()

+ +

◆ tcc_set_output_matrix()

@@ -570,8 +581,8 @@

-

◆ tcc_set_period()

+ +

◆ tcc_set_period()

@@ -615,8 +626,8 @@

-

◆ tcc_set_run_in_standby()

+ +

◆ tcc_set_run_in_standby()

@@ -652,8 +663,8 @@

-

◆ tcc_set_wavegen()

+ +

◆ tcc_set_wavegen()

@@ -689,18 +700,18 @@

See also
tcc_set_output_matrix for other options). This mode results in a square wave with a frequency dependent on the PER register, and a duty cycle that depends on the CCn register.
    +
    See also
    tcc_set_output_matrix for other options). This mode results in a square wave with a frequency dependent on the PER register, and a duty cycle that depends on the CCn register.
    • TCC_WAVEGEN_MATCH_FREQUENCY - Match frequency generation. The TOP value is CC0. WO[0] toggles on a match with TOP / CC0 and the counter resets. This results in a square wave with a 50% duty cycle whose frequency depends on CC0.
    • TCC_WAVEGEN_NORMAL_PWM - Normal pulse-width modulation. The TOP value is PER. Waveform output WO[n] is set at the start of the period and cleared on a match with a compare channel (n % 4 by default;
    -tcc_set_output_matrix for other options). This mode results in a square wave with a frequency defined by the PER register, and a duty cycle defined by the CCn register.
    +tcc_set_output_matrix for other options). This mode results in a square wave with a frequency defined by the PER register, and a duty cycle defined by the CCn register.

- -

◆ tcc_stop()

+ +

◆ tcc_stop()

@@ -726,8 +737,8 @@

-

◆ tcc_update()

+ +

◆ tcc_update()

@@ -753,9 +764,12 @@

+ diff --git a/group__tcc.js b/group__tcc.js new file mode 100644 index 0000000..b33e729 --- /dev/null +++ b/group__tcc.js @@ -0,0 +1,19 @@ +var group__tcc = +[ + [ "tcc_disable", "group__tcc.html#ga14a335ba34333f27e6460bf1cf659177", null ], + [ "tcc_enable", "group__tcc.html#ga6ac612aa1426900df32765fb71e79918", null ], + [ "tcc_get_count", "group__tcc.html#ga52b25028c793c126d85096049f1b1f75", null ], + [ "tcc_get_period", "group__tcc.html#ga4123d9f15758b550c9f47ae3bf851a23", null ], + [ "tcc_init", "group__tcc.html#ga55f68c3649be5d58b0e422ad94224b94", null ], + [ "tcc_is_enabled", "group__tcc.html#ga5797bec545a165a39f092514139f5b1e", null ], + [ "tcc_retrigger", "group__tcc.html#gac9b0bb48f6116f8fb3e6036963ad5ac8", null ], + [ "tcc_set_cc", "group__tcc.html#gabbe2f7d3ec62ef888d0c905b03470531", null ], + [ "tcc_set_channel_polarity", "group__tcc.html#gaa449988b4bea75a5e018c01e38d6c058", null ], + [ "tcc_set_count", "group__tcc.html#ga287f26e06ce521f40c6f25190c1098c1", null ], + [ "tcc_set_output_matrix", "group__tcc.html#ga5646c274366bca4fdbc220d732282f2e", null ], + [ "tcc_set_period", "group__tcc.html#ga0e0c7fc6f5730d54bea797616d2471fc", null ], + [ "tcc_set_run_in_standby", "group__tcc.html#ga273b5e8282d26fa117e00925e2a240cc", null ], + [ "tcc_set_wavegen", "group__tcc.html#ga7d6656d2bfabdc18ac7088094cb304a9", null ], + [ "tcc_stop", "group__tcc.html#ga9fccdb4bb693f6a77f5a808b8d5011b2", null ], + [ "tcc_update", "group__tcc.html#gaa135529878d40c76aa1a8fdda73f5b39", null ] +]; \ No newline at end of file diff --git a/uart_8h.html b/group__uart.html similarity index 50% rename from uart_8h.html rename to group__uart.html index 9939fae..6949fc5 100644 --- a/uart_8h.html +++ b/group__uart.html @@ -5,10 +5,14 @@ -gossamer: common/uart.h File Reference +gossamer: UART Peripheral + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
- -
-
uart.h File Reference
+
UART Peripheral
-

UART Peripheral. +

The UART peripheral is used for serial communication over TX and RX pins. More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include <stddef.h>
-
-

Go to the source code of this file.

- - - + + - + +

Enumerations

enum  uart_txpo_t { UART_TXPO_0 = 0 +
enum  uart_txpo_t { UART_TXPO_0 = 0 , UART_TXPO_2 , UART_TXPO_0_FLOW_CONTROL , UART_TXPO_NONE = 0xff }
 
enum  uart_rxpo_t {
+
 UART transmit pinout options.
 
enum  uart_rxpo_t {
  UART_RXPO_0 = 0 , UART_RXPO_1 , UART_RXPO_2 @@ -106,70 +118,71 @@   UART_RXPO_NONE = 0xff
}
 
 UART receive pinout options.
 
- - - - + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

void uart_init (uint32_t baud)
 Initializes the UART peripheral for a board with a defined UART_SERCOM.
 
+
void uart_init (uint32_t baud)
 Initializes the UART peripheral for a board with a defined UART_SERCOM.
 
void uart_enable (void)
 Enables the UART peripheral for a board with a defined UART_SERCOM.
 
void uart_set_run_in_standby (bool run_in_standby)
 Sets whether the UART_SERCOM should run in standby mode.
 
void uart_set_irda_mode (bool irda)
 Sets IRDA mode for the UART_SERCOM.
 
void uart_write (uint8_t *data, size_t length)
 Writes data to the UART peripheral for a board with a defined UART_SERCOM.
 
size_t uart_read (uint8_t *data, size_t max_length)
 Reads data from the UART peripheral for a board with a defined UART_SERCOM.
 
bool uart_read_byte (uint8_t *byte)
 Reads a single byte from the UART peripheral for a board with a defined UART_SERCOM.
 
+
 Enables the UART peripheral for a board with a defined UART_SERCOM.
 
void uart_set_run_in_standby (bool run_in_standby)
 Sets whether the UART_SERCOM should run in standby mode.
 
void uart_set_irda_mode (bool irda)
 Sets IRDA mode for the UART_SERCOM.
 
void uart_write (uint8_t *data, size_t length)
 Writes data to the UART peripheral for a board with a defined UART_SERCOM.
 
size_t uart_read (uint8_t *data, size_t max_length)
 Reads data from the UART peripheral for a board with a defined UART_SERCOM.
 
bool uart_read_byte (uint8_t *byte)
 Reads a single byte from the UART peripheral for a board with a defined UART_SERCOM.
 
void uart_disable (void)
 Disables the UART peripheral for a board with a defined UART_SERCOM.
 
void uart_init_instance (uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud)
 initializes a specific SERCOM UART instance.
 
void uart_set_run_in_standby_instance (uint8_t sercom, bool run_in_standby)
 Enables a specific SERCOM UART instance.
 
void uart_set_irda_mode_instance (uint8_t sercom, bool irda)
 Sets IRDA mode for a specific SERCOM instance.
 
void uart_enable_instance (uint8_t sercom)
 Enables a specific SERCOM UART instance.
 
void uart_write_instance (uint8_t sercom, uint8_t *data, size_t length)
 Writes data to a specific SERCOM UART instance.
 
size_t uart_read_instance (uint8_t sercom, uint8_t *data, size_t max_length)
 Reads data from a specific SERCOM UART instance.
 
bool uart_read_byte_instance (uint8_t sercom, uint8_t *byte)
 Reads a single byte from a specific SERCOM UART instance.
 
void uart_disable_instance (uint8_t sercom)
 Disables a specific SERCOM UART instance.
 
void uart_irq_handler (uint8_t sercom)
 UART IRQ handler.
 
 Disables the UART peripheral for a board with a defined UART_SERCOM.
 
void uart_init_instance (uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud)
 initializes a specific SERCOM UART instance.
 
void uart_set_run_in_standby_instance (uint8_t sercom, bool run_in_standby)
 Enables a specific SERCOM UART instance.
 
void uart_set_irda_mode_instance (uint8_t sercom, bool irda)
 Sets IRDA mode for a specific SERCOM instance.
 
void uart_enable_instance (uint8_t sercom)
 Enables a specific SERCOM UART instance.
 
void uart_write_instance (uint8_t sercom, uint8_t *data, size_t length)
 Writes data to a specific SERCOM UART instance.
 
size_t uart_read_instance (uint8_t sercom, uint8_t *data, size_t max_length)
 Reads data from a specific SERCOM UART instance.
 
bool uart_read_byte_instance (uint8_t sercom, uint8_t *byte)
 Reads a single byte from a specific SERCOM UART instance.
 
void uart_disable_instance (uint8_t sercom)
 Disables a specific SERCOM UART instance.
 
void uart_irq_handler (uint8_t sercom)
 UART IRQ handler.
 

Detailed Description

-

UART Peripheral.

-

The UART peripheral is used for serial communication over TX and RX pins. Note that Gossaermer's UART implementation is interrupt-driven, which is different from the SPI and I2C peripherals. If you want to use the UART, you MUST implement the following function, replacing 'N' with the SERCOM number you are using: void irq_handler_sercomN(void) { uart_irq_handler(N); } This interrupt handler will allow the UART to buffer incoming data to a FIFO, which is what you're actually reading from when you call uart_read.

Warning
If you don't implement the interrupt handler, your application will hang, and you'll be confused until you read this line! (or in my case, write it)
-

Function Documentation

- -

◆ uart_disable_instance()

+

The UART peripheral is used for serial communication over TX and RX pins.

+

Note that Gossaermer's UART implementation is interrupt-driven, which is different from the SPI and I2C peripherals. If you want to use the UART, you MUST implement the following function, replacing 'N' with the SERCOM number you are using: void irq_handler_sercomN(void) { uart_irq_handler(N); } This interrupt handler will allow the UART to buffer incoming data to a FIFO, which is what you're actually reading from when you call uart_read.

Warning
If you don't implement the interrupt handler, your application will hang, and you'll be confused until you read this line! (or in my case, write it)
+

Function Documentation

+ +

◆ uart_disable_instance()

@@ -194,8 +207,8 @@

-

◆ uart_enable_instance()

+ +

◆ uart_enable_instance()

@@ -220,8 +233,8 @@

-

◆ uart_init()

+ +

◆ uart_init()

@@ -246,8 +259,8 @@

-

◆ uart_init_instance()

+ +

◆ uart_init_instance()

@@ -261,13 +274,13 @@

- uart_txpo_t  + uart_txpo_t  txpo, - uart_rxpo_t  + uart_rxpo_t  rxpo, @@ -292,14 +305,14 @@

See also
uart_txpo_t
+
See also
uart_txpo_t
Parameters
rxpoThe RX pinout.
-
See also
uart_rxpo_t
+
See also
uart_rxpo_t
Parameters
@@ -309,8 +322,8 @@

-

◆ uart_irq_handler()

+ +

◆ uart_irq_handler()

@@ -332,12 +345,11 @@

Todo:
Really need to refactor this so it's called from the HAL, not the app.

- -

◆ uart_read()

+ +

◆ uart_read()

@@ -374,8 +386,8 @@

-

◆ uart_read_byte()

+ +

◆ uart_read_byte()

@@ -401,8 +413,8 @@

-

◆ uart_read_byte_instance()

+ +

◆ uart_read_byte_instance()

@@ -439,8 +451,8 @@

-

◆ uart_read_instance()

+ +

◆ uart_read_instance()

@@ -484,8 +496,8 @@

-

◆ uart_set_irda_mode()

+ +

◆ uart_set_irda_mode()

@@ -510,8 +522,8 @@

-

◆ uart_set_irda_mode_instance()

+ +

◆ uart_set_irda_mode_instance()

@@ -547,8 +559,8 @@

-

◆ uart_set_run_in_standby()

+ +

◆ uart_set_run_in_standby()

@@ -573,8 +585,8 @@

-

◆ uart_set_run_in_standby_instance()

+ +

◆ uart_set_run_in_standby_instance()

@@ -609,8 +621,8 @@

-

◆ uart_write()

+ +

◆ uart_write()

@@ -646,8 +658,8 @@

-

◆ uart_write_instance()

+ +

◆ uart_write_instance()

@@ -691,9 +703,12 @@

+ diff --git a/group__uart.js b/group__uart.js new file mode 100644 index 0000000..72e83bc --- /dev/null +++ b/group__uart.js @@ -0,0 +1,22 @@ +var group__uart = +[ + [ "uart_rxpo_t", "group__uart.html#ga689c8ada541f2cd1c4c0618eb428fa91", null ], + [ "uart_txpo_t", "group__uart.html#ga201cbf904c8080f01165f93634d9603f", null ], + [ "uart_disable", "group__uart.html#ga9dbcc0696f2607e16da1f55d3b4d6d94", null ], + [ "uart_disable_instance", "group__uart.html#ga22b6636b750bfa7669521d5be5baed82", null ], + [ "uart_enable", "group__uart.html#gaffcbd24efeade3b1444100dbbc614e88", null ], + [ "uart_enable_instance", "group__uart.html#gad390de8c3b3ddcb3d03a36513262528d", null ], + [ "uart_init", "group__uart.html#gad8f6a793347af79ca41a3363dbd3fd96", null ], + [ "uart_init_instance", "group__uart.html#ga9e514ab7ce443e2fd91fbe99bf8cb207", null ], + [ "uart_irq_handler", "group__uart.html#ga3d2a4f57b803f517096c373734ffa78b", null ], + [ "uart_read", "group__uart.html#gacb00b8879d87fea2a41df7f2772c916c", null ], + [ "uart_read_byte", "group__uart.html#ga6c3fa8ab576e34e015d469a2734d3292", null ], + [ "uart_read_byte_instance", "group__uart.html#gafb3971f7bde4d345bc981b87866267c9", null ], + [ "uart_read_instance", "group__uart.html#ga3ab7120aad2e941879ac328479d40af3", null ], + [ "uart_set_irda_mode", "group__uart.html#gafdbbf43dd9af325b1cae5d5318853a8d", null ], + [ "uart_set_irda_mode_instance", "group__uart.html#ga84eca02c048700d3f3ea086ff1e93451", null ], + [ "uart_set_run_in_standby", "group__uart.html#gaa034660a70fb244c2e25187509985760", null ], + [ "uart_set_run_in_standby_instance", "group__uart.html#ga94d5de1ee0878b0fb2d92c3626c3da22", null ], + [ "uart_write", "group__uart.html#ga6e0844dd68d04ca88f255b6c75326a70", null ], + [ "uart_write_instance", "group__uart.html#gad53a035557ef05336ff3e45547b65861", null ] +]; \ No newline at end of file diff --git a/group__usb.html b/group__usb.html new file mode 100644 index 0000000..16ce641 --- /dev/null +++ b/group__usb.html @@ -0,0 +1,205 @@ + + + + + + + +gossamer: Universal Serial Bus + + + + + + + + + + + + + +
+
+

baudThe desired baud rate
+ + + + + +
+
gossamer 0.0.0 +
+
a very lightweight app framework for SAMD and SAML chips
+
+

+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Universal Serial Bus
+
+
+ +

Functions for configuring and using the USB peripheral. +More...

+ + + + + + + + + + + + + + +

+Functions

+void usb_init (void)
 Initializes the USB preipheral, and assigns the USB pins to their relevant functions. In the process, this function also sets up the 48 MHz DFLL clock on GCLK1.
 
void usb_enable (void)
 Initializes the TinyUSB stack and enables the USB peripheral.
 
bool usb_is_enabled (void)
 Checks if the USB peripheral is enabled.
 
void usb_disable (void)
 Disables the USB peripheral.
 
+

Detailed Description

+

Functions for configuring and using the USB peripheral.

+

Gossamer uses the TinyUSB stack for USB support.

+

Function Documentation

+ +

◆ usb_disable()

+ +
+
+ + + + + + + + +
void usb_disable (void )
+
+ +

Disables the USB peripheral.

+
Note
Has not been extensively tested, TinyUSB may not like this.
+ +
+
+ +

◆ usb_enable()

+ +
+
+ + + + + + + + +
void usb_enable (void )
+
+ +

Initializes the TinyUSB stack and enables the USB peripheral.

+

In order to make use of the tinyUSB stack, there are two additional setup steps you must take:

    +
  1. In your Makefile, set the type and number of TinyUSB device classes you intend to use. For example, if you want to use a USB mass storage class, you would add TINYUSB_MSC=1 to your app's Makefile. You can also add more than one class, e.g. for two CDC interfaces, you would add TINYUSB_CDC=2. Available TinyUSB classes are:
      +
    • TINYUSB_CDC
    • +
    • TINYUSB_MSC
    • +
    • TINYUSB_HID
    • +
    • TINYUSB_MIDI
    • +
    • TINYUSB_VENDOR
    • +
    +
  2. +
  3. You must also set up your USB device descriptor. This is typically done in a usb_descriptors.c file. See the usb app for an example of how to do this.
  4. +
  5. Depending on which classes you enable, you may need to do some additional setup. Check out tinyusb's examples for more info.
  6. +
+ +
+
+ +

◆ usb_is_enabled()

+ +
+
+ + + + + + + + +
bool usb_is_enabled (void )
+
+ +

Checks if the USB peripheral is enabled.

+
Returns
true if the USB peripheral is enabled, false otherwise.
+ +
+
+
+
+ + + + diff --git a/group__usb.js b/group__usb.js new file mode 100644 index 0000000..aae7534 --- /dev/null +++ b/group__usb.js @@ -0,0 +1,7 @@ +var group__usb = +[ + [ "usb_disable", "group__usb.html#ga4ac5d142ab3f1f170a37247f165b0963", null ], + [ "usb_enable", "group__usb.html#ga40bb3f8e62330e22fc9d7c49d682ae40", null ], + [ "usb_init", "group__usb.html#gaddfbdb66f507ffcd08b4496531ed0a3d", null ], + [ "usb_is_enabled", "group__usb.html#gaeff82d6f3bbd31aa4285c58eb8288ec2", null ] +]; \ No newline at end of file diff --git a/hal__gpio_8h.html b/hal__gpio_8h.html deleted file mode 100644 index 81c6550..0000000 --- a/hal__gpio_8h.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -gossamer: common/hal_gpio.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
hal_gpio.h File Reference
-
-
- -

GPIO Macros. -More...

-
#include <stdbool.h>
-#include <stdint.h>
-#include "sam.h"
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

-#define HAL_GPIO_PORTA   0
 
-#define HAL_GPIO_PORTB   1
 
-#define HAL_GPIO_PORTC   2
 
-#define HAL_GPIO_PMUX_A   0
 
-#define HAL_GPIO_PMUX_B   1
 
-#define HAL_GPIO_PMUX_C   2
 
-#define HAL_GPIO_PMUX_D   3
 
-#define HAL_GPIO_PMUX_E   4
 
-#define HAL_GPIO_PMUX_F   5
 
-#define HAL_GPIO_PMUX_G   6
 
-#define HAL_GPIO_PMUX_H   7
 
-#define HAL_GPIO_PMUX_I   8
 
-#define HAL_GPIO_PMUX_J   9
 
-#define HAL_GPIO_PMUX_K   10
 
-#define HAL_GPIO_PMUX_L   11
 
-#define HAL_GPIO_PMUX_M   12
 
-#define HAL_GPIO_PMUX_N   13
 
-#define HAL_GPIO_PIN(name, port, pin)
 
-

Detailed Description

-

GPIO Macros.

-
- - - - diff --git a/hal__gpio_8h_source.html b/hal__gpio_8h_source.html index 6bbd632..fdd056b 100644 --- a/hal__gpio_8h_source.html +++ b/hal__gpio_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +

+
+ +
+
+
+ +
- -
hal_gpio.h
-Go to the documentation of this file.
1
-
5/*
-
6 * Copyright (c) 2014-2016, Alex Taradov <alex@taradov.com>
-
7 * All rights reserved.
-
8 *
-
9 * Redistribution and use in source and binary forms, with or without
-
10 * modification, are permitted provided that the following conditions are met:
-
11 *
-
12 * 1. Redistributions of source code must retain the above copyright notice,
-
13 * this list of conditions and the following disclaimer.
-
14 * 2. Redistributions in binary form must reproduce the above copyright
-
15 * notice, this list of conditions and the following disclaimer in the
-
16 * documentation and/or other materials provided with the distribution.
-
17 * 3. The name of the author may not be used to endorse or promote products
-
18 * derived from this software without specific prior written permission.
-
19 *
-
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-
30 * POSSIBILITY OF SUCH DAMAGE.
-
31 */
+
1/*
+
2 * Copyright (c) 2014-2016, Alex Taradov <alex@taradov.com>
+
3 * All rights reserved.
+
4 *
+
5 * Redistribution and use in source and binary forms, with or without
+
6 * modification, are permitted provided that the following conditions are met:
+
7 *
+
8 * 1. Redistributions of source code must retain the above copyright notice,
+
9 * this list of conditions and the following disclaimer.
+
10 * 2. Redistributions in binary form must reproduce the above copyright
+
11 * notice, this list of conditions and the following disclaimer in the
+
12 * documentation and/or other materials provided with the distribution.
+
13 * 3. The name of the author may not be used to endorse or promote products
+
14 * derived from this software without specific prior written permission.
+
15 *
+
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+
26 * POSSIBILITY OF SUCH DAMAGE.
+
27 */
+
28
+
29#include <stdbool.h>
+
30#include <stdint.h>
+
31#include "sam.h"
32
-
33#include <stdbool.h>
-
34#include <stdint.h>
-
35#include "sam.h"
-
36
-
37#pragma once
-
38
-
39/*- Definitions -------------------------------------------------------------*/
-
40#define HAL_GPIO_PORTA 0
-
41#define HAL_GPIO_PORTB 1
-
42#define HAL_GPIO_PORTC 2
-
43
-
44#define HAL_GPIO_PMUX_A 0
-
45#define HAL_GPIO_PMUX_B 1
-
46#define HAL_GPIO_PMUX_C 2
-
47#define HAL_GPIO_PMUX_D 3
-
48#define HAL_GPIO_PMUX_E 4
-
49#define HAL_GPIO_PMUX_F 5
-
50#define HAL_GPIO_PMUX_G 6
-
51#define HAL_GPIO_PMUX_H 7
-
52#define HAL_GPIO_PMUX_I 8
-
53#define HAL_GPIO_PMUX_J 9
-
54#define HAL_GPIO_PMUX_K 10
-
55#define HAL_GPIO_PMUX_L 11
-
56#define HAL_GPIO_PMUX_M 12
-
57#define HAL_GPIO_PMUX_N 13
+
33#pragma once
+
34
+
35/*- Definitions -------------------------------------------------------------*/
+
36#define HAL_GPIO_PORTA 0
+
37#define HAL_GPIO_PORTB 1
+
38#define HAL_GPIO_PORTC 2
+
39
+
40#define HAL_GPIO_PMUX_A 0
+
41#define HAL_GPIO_PMUX_B 1
+
42#define HAL_GPIO_PMUX_C 2
+
43#define HAL_GPIO_PMUX_D 3
+
44#define HAL_GPIO_PMUX_E 4
+
45#define HAL_GPIO_PMUX_F 5
+
46#define HAL_GPIO_PMUX_G 6
+
47#define HAL_GPIO_PMUX_H 7
+
48#define HAL_GPIO_PMUX_I 8
+
49#define HAL_GPIO_PMUX_J 9
+
50#define HAL_GPIO_PMUX_K 10
+
51#define HAL_GPIO_PMUX_L 11
+
52#define HAL_GPIO_PMUX_M 12
+
53#define HAL_GPIO_PMUX_N 13
+
54
+
55#if __EMSCRIPTEN__
+
56
+
57extern bool pin_levels[3][32];
58
-
59#if __EMSCRIPTEN__
-
60
-
61extern bool pin_levels[3][32];
-
62
-
63#define HAL_GPIO_PIN(name, port, pin) \
-
64 static inline void HAL_GPIO_##name##_set(void) \
-
65 { \
-
66 pin_levels[HAL_GPIO_PORT##port][pin] = true; \
-
67 (void)HAL_GPIO_##name##_set; \
-
68 } \
-
69 \
-
70 static inline void HAL_GPIO_##name##_clr(void) \
-
71 { \
-
72 pin_levels[HAL_GPIO_PORT##port][pin] = false; \
-
73 (void)HAL_GPIO_##name##_clr; \
-
74 } \
-
75 \
-
76 static inline void HAL_GPIO_##name##_toggle(void) \
-
77 { \
-
78 pin_levels[HAL_GPIO_PORT##port][pin] = !pin_levels[HAL_GPIO_PORT##port][pin]; \
-
79 (void)HAL_GPIO_##name##_toggle; \
-
80 } \
-
81 \
-
82 static inline void HAL_GPIO_##name##_write(int value) \
-
83 { \
-
84 pin_levels[HAL_GPIO_PORT##port][pin] = !!value; \
-
85 (void)HAL_GPIO_##name##_write; \
-
86 } \
-
87 \
-
88 static inline void HAL_GPIO_##name##_drvstr(int value) \
-
89 { \
-
90 (void)HAL_GPIO_##name##_write; \
-
91 } \
-
92 \
-
93 static inline void HAL_GPIO_##name##_in(void) \
-
94 { \
-
95 (void)HAL_GPIO_##name##_in; \
-
96 } \
-
97 \
-
98 static inline void HAL_GPIO_##name##_out(void) \
-
99 { \
-
100 (void)HAL_GPIO_##name##_out; \
-
101 } \
-
102 \
-
103 static inline void HAL_GPIO_##name##_off(void) \
-
104 { \
-
105 (void)HAL_GPIO_##name##_off; \
-
106 } \
-
107 \
-
108 static inline void HAL_GPIO_##name##_pullup(void) \
-
109 { \
-
110 (void)HAL_GPIO_##name##_pullup; \
-
111 } \
-
112 \
-
113 static inline void HAL_GPIO_##name##_pulldown(void) \
-
114 { \
-
115 (void)HAL_GPIO_##name##_pulldown; \
-
116 } \
-
117 \
-
118 static inline int HAL_GPIO_##name##_read(void) \
-
119 { \
-
120 return pin_levels[HAL_GPIO_PORT##port][pin]; \
-
121 (void)HAL_GPIO_##name##_read; \
-
122 } \
-
123 \
-
124 static inline int HAL_GPIO_##name##_state(void) \
-
125 { \
-
126 return 0; \
-
127 (void)HAL_GPIO_##name##_state; \
-
128 } \
-
129 \
-
130 static inline void HAL_GPIO_##name##_pmuxen(int mux) \
-
131 { \
-
132 (void)HAL_GPIO_##name##_pmuxen; \
-
133 } \
-
134 \
-
135 static inline void HAL_GPIO_##name##_pmuxdis(void) \
-
136 { \
-
137 (void)HAL_GPIO_##name##_pmuxdis; \
-
138 } \
-
139 \
-
140 static inline uint8_t HAL_GPIO_##name##_pin(void) \
-
141 { \
-
142 return ((HAL_GPIO_PORT##port << 5) | (pin & 0x1f)); \
-
143 (void)HAL_GPIO_##name##_pin; \
-
144 } \
-
145 \
-
146
-
147#else
-
148
-
149#define HAL_GPIO_PIN(name, port, pin) \
-
150 static inline void HAL_GPIO_##name##_set(void) \
-
151 { \
-
152 PORT->Group[HAL_GPIO_PORT##port].OUTSET.reg = (1 << pin); \
-
153 (void)HAL_GPIO_##name##_set; \
-
154 } \
-
155 \
-
156 static inline void HAL_GPIO_##name##_clr(void) \
-
157 { \
-
158 PORT->Group[HAL_GPIO_PORT##port].OUTCLR.reg = (1 << pin); \
-
159 (void)HAL_GPIO_##name##_clr; \
-
160 } \
-
161 \
-
162 static inline void HAL_GPIO_##name##_toggle(void) \
-
163 { \
-
164 PORT->Group[HAL_GPIO_PORT##port].OUTTGL.reg = (1 << pin); \
-
165 (void)HAL_GPIO_##name##_toggle; \
-
166 } \
-
167 \
-
168 static inline void HAL_GPIO_##name##_write(int value) \
-
169 { \
-
170 if (value) \
-
171 PORT->Group[HAL_GPIO_PORT##port].OUTSET.reg = (1 << pin); \
-
172 else \
-
173 PORT->Group[HAL_GPIO_PORT##port].OUTCLR.reg = (1 << pin); \
-
174 (void)HAL_GPIO_##name##_write; \
-
175 } \
-
176 \
-
177 static inline void HAL_GPIO_##name##_drvstr(int value) \
-
178 { \
-
179 if (value) \
-
180 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_DRVSTR; \
-
181 else \
-
182 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg &= ~PORT_PINCFG_DRVSTR; \
-
183 (void)HAL_GPIO_##name##_write; \
-
184 } \
-
185 \
-
186 static inline void HAL_GPIO_##name##_in(void) \
-
187 { \
-
188 PORT->Group[HAL_GPIO_PORT##port].DIRCLR.reg = (1 << pin); \
-
189 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_INEN; \
-
190 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg &= ~PORT_PINCFG_PULLEN; \
-
191 (void)HAL_GPIO_##name##_in; \
-
192 } \
-
193 \
-
194 static inline void HAL_GPIO_##name##_out(void) \
-
195 { \
-
196 PORT->Group[HAL_GPIO_PORT##port].DIRSET.reg = (1 << pin); \
-
197 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_INEN; \
-
198 (void)HAL_GPIO_##name##_out; \
-
199 } \
-
200 \
-
201 static inline void HAL_GPIO_##name##_off(void) \
-
202 { \
-
203 PORT->Group[HAL_GPIO_PORT##port].DIRCLR.reg = (1 << pin); \
-
204 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg &= ~(PORT_PINCFG_PULLEN | PORT_PINCFG_INEN); \
-
205 (void)HAL_GPIO_##name##_off; \
-
206 } \
-
207 \
-
208 static inline void HAL_GPIO_##name##_pullup(void) \
-
209 { \
-
210 PORT->Group[HAL_GPIO_PORT##port].OUTSET.reg = (1 << pin); \
-
211 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_PULLEN; \
-
212 (void)HAL_GPIO_##name##_pullup; \
-
213 } \
-
214 \
-
215 static inline void HAL_GPIO_##name##_pulldown(void) \
-
216 { \
-
217 PORT->Group[HAL_GPIO_PORT##port].OUTCLR.reg = (1 << pin); \
-
218 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_PULLEN; \
-
219 (void)HAL_GPIO_##name##_pulldown; \
-
220 } \
-
221 \
-
222 static inline int HAL_GPIO_##name##_read(void) \
-
223 { \
-
224 return (PORT->Group[HAL_GPIO_PORT##port].IN.reg & (1 << pin)) != 0; \
-
225 (void)HAL_GPIO_##name##_read; \
-
226 } \
-
227 \
-
228 static inline int HAL_GPIO_##name##_state(void) \
-
229 { \
-
230 return (PORT->Group[HAL_GPIO_PORT##port].DIR.reg & (1 << pin)) != 0; \
-
231 (void)HAL_GPIO_##name##_state; \
-
232 } \
-
233 \
-
234 static inline void HAL_GPIO_##name##_pmuxen(int mux) \
-
235 { \
-
236 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_PMUXEN; \
-
237 if (pin & 1) \
-
238 PORT->Group[HAL_GPIO_PORT##port].PMUX[pin>>1].bit.PMUXO = mux; \
-
239 else \
-
240 PORT->Group[HAL_GPIO_PORT##port].PMUX[pin>>1].bit.PMUXE = mux; \
-
241 (void)HAL_GPIO_##name##_pmuxen; \
-
242 } \
-
243 \
-
244 static inline void HAL_GPIO_##name##_pmuxdis(void) \
-
245 { \
-
246 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg &= ~PORT_PINCFG_PMUXEN; \
-
247 (void)HAL_GPIO_##name##_pmuxdis; \
-
248 } \
-
249 \
-
250 static inline uint8_t HAL_GPIO_##name##_pin(void) \
-
251 { \
-
252 return ((HAL_GPIO_PORT##port << 5) | (pin & 0x1f)); \
-
253 (void)HAL_GPIO_##name##_pin; \
-
254 } \
-
255 \
-
256
-
257#endif // __EMSCRIPTEN__
-
258
-
259HAL_GPIO_PIN(SWCLK, A, 30)
-
260HAL_GPIO_PIN(SWDIO, A, 31)
-
261
-
262#ifdef APP_USES_TINYUSB
-
263HAL_GPIO_PIN(USB_N, A, 24)
-
264HAL_GPIO_PIN(USB_P, A, 25)
-
265#endif
+
59#define HAL_GPIO_PIN(name, port, pin) \
+
60 static inline void HAL_GPIO_##name##_set(void) \
+
61 { \
+
62 pin_levels[HAL_GPIO_PORT##port][pin] = true; \
+
63 (void)HAL_GPIO_##name##_set; \
+
64 } \
+
65 \
+
66 static inline void HAL_GPIO_##name##_clr(void) \
+
67 { \
+
68 pin_levels[HAL_GPIO_PORT##port][pin] = false; \
+
69 (void)HAL_GPIO_##name##_clr; \
+
70 } \
+
71 \
+
72 static inline void HAL_GPIO_##name##_toggle(void) \
+
73 { \
+
74 pin_levels[HAL_GPIO_PORT##port][pin] = !pin_levels[HAL_GPIO_PORT##port][pin]; \
+
75 (void)HAL_GPIO_##name##_toggle; \
+
76 } \
+
77 \
+
78 static inline void HAL_GPIO_##name##_write(int value) \
+
79 { \
+
80 pin_levels[HAL_GPIO_PORT##port][pin] = !!value; \
+
81 (void)HAL_GPIO_##name##_write; \
+
82 } \
+
83 \
+
84 static inline void HAL_GPIO_##name##_drvstr(int value) \
+
85 { \
+
86 (void)HAL_GPIO_##name##_write; \
+
87 } \
+
88 \
+
89 static inline void HAL_GPIO_##name##_in(void) \
+
90 { \
+
91 (void)HAL_GPIO_##name##_in; \
+
92 } \
+
93 \
+
94 static inline void HAL_GPIO_##name##_out(void) \
+
95 { \
+
96 (void)HAL_GPIO_##name##_out; \
+
97 } \
+
98 \
+
99 static inline void HAL_GPIO_##name##_off(void) \
+
100 { \
+
101 (void)HAL_GPIO_##name##_off; \
+
102 } \
+
103 \
+
104 static inline void HAL_GPIO_##name##_pullup(void) \
+
105 { \
+
106 (void)HAL_GPIO_##name##_pullup; \
+
107 } \
+
108 \
+
109 static inline void HAL_GPIO_##name##_pulldown(void) \
+
110 { \
+
111 (void)HAL_GPIO_##name##_pulldown; \
+
112 } \
+
113 \
+
114 static inline int HAL_GPIO_##name##_read(void) \
+
115 { \
+
116 return pin_levels[HAL_GPIO_PORT##port][pin]; \
+
117 (void)HAL_GPIO_##name##_read; \
+
118 } \
+
119 \
+
120 static inline int HAL_GPIO_##name##_state(void) \
+
121 { \
+
122 return 0; \
+
123 (void)HAL_GPIO_##name##_state; \
+
124 } \
+
125 \
+
126 static inline void HAL_GPIO_##name##_pmuxen(int mux) \
+
127 { \
+
128 (void)HAL_GPIO_##name##_pmuxen; \
+
129 } \
+
130 \
+
131 static inline void HAL_GPIO_##name##_pmuxdis(void) \
+
132 { \
+
133 (void)HAL_GPIO_##name##_pmuxdis; \
+
134 } \
+
135 \
+
136 static inline uint8_t HAL_GPIO_##name##_pin(void) \
+
137 { \
+
138 return ((HAL_GPIO_PORT##port << 5) | (pin & 0x1f)); \
+
139 (void)HAL_GPIO_##name##_pin; \
+
140 } \
+
141 \
+
142
+
143#else
+
144
+
145#define HAL_GPIO_PIN(name, port, pin) \
+
146 static inline void HAL_GPIO_##name##_set(void) \
+
147 { \
+
148 PORT->Group[HAL_GPIO_PORT##port].OUTSET.reg = (1 << pin); \
+
149 (void)HAL_GPIO_##name##_set; \
+
150 } \
+
151 \
+
152 static inline void HAL_GPIO_##name##_clr(void) \
+
153 { \
+
154 PORT->Group[HAL_GPIO_PORT##port].OUTCLR.reg = (1 << pin); \
+
155 (void)HAL_GPIO_##name##_clr; \
+
156 } \
+
157 \
+
158 static inline void HAL_GPIO_##name##_toggle(void) \
+
159 { \
+
160 PORT->Group[HAL_GPIO_PORT##port].OUTTGL.reg = (1 << pin); \
+
161 (void)HAL_GPIO_##name##_toggle; \
+
162 } \
+
163 \
+
164 static inline void HAL_GPIO_##name##_write(int value) \
+
165 { \
+
166 if (value) \
+
167 PORT->Group[HAL_GPIO_PORT##port].OUTSET.reg = (1 << pin); \
+
168 else \
+
169 PORT->Group[HAL_GPIO_PORT##port].OUTCLR.reg = (1 << pin); \
+
170 (void)HAL_GPIO_##name##_write; \
+
171 } \
+
172 \
+
173 static inline void HAL_GPIO_##name##_drvstr(int value) \
+
174 { \
+
175 if (value) \
+
176 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_DRVSTR; \
+
177 else \
+
178 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg &= ~PORT_PINCFG_DRVSTR; \
+
179 (void)HAL_GPIO_##name##_write; \
+
180 } \
+
181 \
+
182 static inline void HAL_GPIO_##name##_in(void) \
+
183 { \
+
184 PORT->Group[HAL_GPIO_PORT##port].DIRCLR.reg = (1 << pin); \
+
185 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_INEN; \
+
186 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg &= ~PORT_PINCFG_PULLEN; \
+
187 (void)HAL_GPIO_##name##_in; \
+
188 } \
+
189 \
+
190 static inline void HAL_GPIO_##name##_out(void) \
+
191 { \
+
192 PORT->Group[HAL_GPIO_PORT##port].DIRSET.reg = (1 << pin); \
+
193 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_INEN; \
+
194 (void)HAL_GPIO_##name##_out; \
+
195 } \
+
196 \
+
197 static inline void HAL_GPIO_##name##_off(void) \
+
198 { \
+
199 PORT->Group[HAL_GPIO_PORT##port].DIRCLR.reg = (1 << pin); \
+
200 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg &= ~(PORT_PINCFG_PULLEN | PORT_PINCFG_INEN); \
+
201 (void)HAL_GPIO_##name##_off; \
+
202 } \
+
203 \
+
204 static inline void HAL_GPIO_##name##_pullup(void) \
+
205 { \
+
206 PORT->Group[HAL_GPIO_PORT##port].OUTSET.reg = (1 << pin); \
+
207 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_PULLEN; \
+
208 (void)HAL_GPIO_##name##_pullup; \
+
209 } \
+
210 \
+
211 static inline void HAL_GPIO_##name##_pulldown(void) \
+
212 { \
+
213 PORT->Group[HAL_GPIO_PORT##port].OUTCLR.reg = (1 << pin); \
+
214 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_PULLEN; \
+
215 (void)HAL_GPIO_##name##_pulldown; \
+
216 } \
+
217 \
+
218 static inline int HAL_GPIO_##name##_read(void) \
+
219 { \
+
220 return (PORT->Group[HAL_GPIO_PORT##port].IN.reg & (1 << pin)) != 0; \
+
221 (void)HAL_GPIO_##name##_read; \
+
222 } \
+
223 \
+
224 static inline int HAL_GPIO_##name##_state(void) \
+
225 { \
+
226 return (PORT->Group[HAL_GPIO_PORT##port].DIR.reg & (1 << pin)) != 0; \
+
227 (void)HAL_GPIO_##name##_state; \
+
228 } \
+
229 \
+
230 static inline void HAL_GPIO_##name##_pmuxen(int mux) \
+
231 { \
+
232 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg |= PORT_PINCFG_PMUXEN; \
+
233 if (pin & 1) \
+
234 PORT->Group[HAL_GPIO_PORT##port].PMUX[pin>>1].bit.PMUXO = mux; \
+
235 else \
+
236 PORT->Group[HAL_GPIO_PORT##port].PMUX[pin>>1].bit.PMUXE = mux; \
+
237 (void)HAL_GPIO_##name##_pmuxen; \
+
238 } \
+
239 \
+
240 static inline void HAL_GPIO_##name##_pmuxdis(void) \
+
241 { \
+
242 PORT->Group[HAL_GPIO_PORT##port].PINCFG[pin].reg &= ~PORT_PINCFG_PMUXEN; \
+
243 (void)HAL_GPIO_##name##_pmuxdis; \
+
244 } \
+
245 \
+
246 static inline uint8_t HAL_GPIO_##name##_pin(void) \
+
247 { \
+
248 return ((HAL_GPIO_PORT##port << 5) | (pin & 0x1f)); \
+
249 (void)HAL_GPIO_##name##_pin; \
+
250 } \
+
251 \
+
252
+
253#endif // __EMSCRIPTEN__
+
254
+
255HAL_GPIO_PIN(SWCLK, A, 30)
+
256HAL_GPIO_PIN(SWDIO, A, 31)
+
257
+
258#ifdef APP_USES_TINYUSB
+
259HAL_GPIO_PIN(USB_N, A, 24)
+
260HAL_GPIO_PIN(USB_P, A, 25)
+
261#endif
+
- + diff --git a/i2c_8h_source.html b/i2c_8h_source.html index 87ac262..976679c 100644 --- a/i2c_8h_source.html +++ b/i2c_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
+
+ +
+
+
+ +
- -
i2c.h
-Go to the documentation of this file.
1
-
5/*
-
6 Cribbed from the Castor & Pollux Gemini firmware:
-
7 https://github.com/wntrblm/Castor_and_Pollux/
-
8 Copyright (c) 2021 Alethea Katherine Flowers.
-
9 Published under the standard MIT License.
-
10 Full text available at: https://opensource.org/licenses/MIT
-
11*/
-
12
-
13#pragma once
-
14
-
15/* Routines for interacting with I2C devices. */
-
16
-
17#include <stdint.h>
-
18#include <stdbool.h>
-
19#include <stddef.h>
-
20
-
21typedef enum {
-
22 I2C_RESULT_SUCCESS = 0,
-
23 I2C_RESULT_ERR_ADDR_NACK = -1,
-
24 I2C_RESULT_ERR_BUSSTATE = -2,
-
25 I2C_RESULT_ERR_BUSERR = -3,
-
26 I2C_RESULT_ERR_DATA_NACK = -4,
-
27} i2c_result_t;
-
28
-
36void i2c_init(void);
-
37
-
41void i2c_enable(void);
-
42
-
49i2c_result_t i2c_write(uint8_t address, uint8_t* data, size_t len);
-
50
-
57i2c_result_t i2c_read(uint8_t address, uint8_t* data, size_t len);
-
58
-
62void i2c_disable(void);
-
63
-
72void i2c_init_instance(uint8_t sercom, uint32_t baud);
-
73
-
78void i2c_enable_instance(uint8_t sercom);
-
79
-
87i2c_result_t i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t* data, size_t len);
-
88
-
96i2c_result_t i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t* data, size_t len);
-
97
-
102void i2c_disable_instance(uint8_t sercom);
-
i2c_result_t i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
Writes data to an I2C device on the given SERCOM at the provided address.
Definition i2c.c:91
-
void i2c_init(void)
Initializes the I2C peripheral for a board with a defined I2C_SERCOM.
-
void i2c_enable(void)
Enables the I2C peripheral for a board with a defined I2C_SERCOM.
-
i2c_result_t i2c_write(uint8_t address, uint8_t *data, size_t len)
Writes data to an I2C device at the provided address.
-
i2c_result_t i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
Reads data from an I2C device on the given SERCOM at the provided address.
Definition i2c.c:144
-
void i2c_enable_instance(uint8_t sercom)
Enables the I2C peripheral on the given SERCOM.
Definition i2c.c:83
-
void i2c_disable_instance(uint8_t sercom)
Disables the I2C peripheral on the given SERCOM.
Definition i2c.c:190
-
void i2c_disable(void)
Disables the I2C peripheral for a board with defined SDA/SCL pins.
-
void i2c_init_instance(uint8_t sercom, uint32_t baud)
Initializes an I2C peripheral on the given SERCOM.
Definition i2c.c:44
-
i2c_result_t i2c_read(uint8_t address, uint8_t *data, size_t len)
Reads data from an I2C device at the provided address.
+
1
+
2/*
+
3 Cribbed from the Castor & Pollux Gemini firmware:
+
4 https://github.com/wntrblm/Castor_and_Pollux/
+
5 Copyright (c) 2021 Alethea Katherine Flowers.
+
6 Published under the standard MIT License.
+
7 Full text available at: https://opensource.org/licenses/MIT
+
8*/
+
9
+
10#pragma once
+
11
+
12/* Routines for interacting with I2C devices. */
+
13
+
14#include <stdint.h>
+
15#include <stdbool.h>
+
16#include <stddef.h>
+
17
+
24typedef enum {
+
25 I2C_RESULT_SUCCESS = 0,
+
26 I2C_RESULT_ERR_ADDR_NACK = -1,
+
27 I2C_RESULT_ERR_BUSSTATE = -2,
+
28 I2C_RESULT_ERR_BUSERR = -3,
+
29 I2C_RESULT_ERR_DATA_NACK = -4,
+
30} i2c_result_t;
+
31
+
39void i2c_init(void);
+
40
+
44void i2c_enable(void);
+
45
+
52i2c_result_t i2c_write(uint8_t address, uint8_t* data, size_t len);
+
53
+
60i2c_result_t i2c_read(uint8_t address, uint8_t* data, size_t len);
+
61
+
65void i2c_disable(void);
+
66
+
75void i2c_init_instance(uint8_t sercom, uint32_t baud);
+
76
+
81void i2c_enable_instance(uint8_t sercom);
+
82
+
90i2c_result_t i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t* data, size_t len);
+
91
+
99i2c_result_t i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t* data, size_t len);
+
100
+
105void i2c_disable_instance(uint8_t sercom);
+
106
+
i2c_result_t i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
Writes data to an I2C device on the given SERCOM at the provided address.
Definition i2c.c:91
+
void i2c_init(void)
Initializes the I2C peripheral for a board with a defined I2C_SERCOM.
+
void i2c_enable(void)
Enables the I2C peripheral for a board with a defined I2C_SERCOM.
+
i2c_result_t i2c_write(uint8_t address, uint8_t *data, size_t len)
Writes data to an I2C device at the provided address.
+
i2c_result_t i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
Reads data from an I2C device on the given SERCOM at the provided address.
Definition i2c.c:144
+
void i2c_enable_instance(uint8_t sercom)
Enables the I2C peripheral on the given SERCOM.
Definition i2c.c:83
+
void i2c_disable_instance(uint8_t sercom)
Disables the I2C peripheral on the given SERCOM.
Definition i2c.c:190
+
void i2c_disable(void)
Disables the I2C peripheral for a board with defined SDA/SCL pins.
+
void i2c_init_instance(uint8_t sercom, uint32_t baud)
Initializes an I2C peripheral on the given SERCOM.
Definition i2c.c:44
+
i2c_result_t i2c_read(uint8_t address, uint8_t *data, size_t len)
Reads data from an I2C device at the provided address.
+
- + diff --git a/i2s_8h.html b/i2s_8h.html deleted file mode 100644 index 6663570..0000000 --- a/i2s_8h.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -gossamer: common/i2s.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
i2s.h File Reference
-
-
- -

Inter-IC Sound interface (SAM D21 only) -More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include "sam.h"
-
-

Go to the source code of this file.

-

Detailed Description

-

Inter-IC Sound interface (SAM D21 only)

-
- - - - diff --git a/i2s_8h_source.html b/i2s_8h_source.html index 4b104bb..61474a4 100644 --- a/i2s_8h_source.html +++ b/i2s_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +

+
+ +
+
+
+ +
- -
i2s.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2023 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2023 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
-
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33#include "sam.h"
-
34
-
35#ifdef I2S
-
36
-
37typedef enum {
-
38 I2S_MODE_NORMAL,
-
39 I2S_MODE_RIGHT_JUSTIFIED,
-
40 I2S_MODE_LEFT_JUSTIFIED,
-
41} i2s_mode_t;
-
42
-
51void i2s_init(uint8_t instance, uint16_t sampleRate, uint8_t bitsPerSample, i2s_mode_t mode);
-
52
-
53void i2s_enable_receiver(uint8_t instance);
-
54
-
55#endif
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
+
30#include "sam.h"
+
31
+
38#ifdef I2S
+
39
+
40typedef enum {
+
41 I2S_MODE_NORMAL,
+
42 I2S_MODE_RIGHT_JUSTIFIED,
+
43 I2S_MODE_LEFT_JUSTIFIED,
+
44} i2s_mode_t;
+
45
+
54void i2s_init(uint8_t instance, uint16_t sampleRate, uint8_t bitsPerSample, i2s_mode_t mode);
+
55
+
56void i2s_enable_receiver(uint8_t instance);
+
57
+
58#endif
+
59
+
void i2s_init(uint8_t instance, uint16_t sampleRate, uint8_t bitsPerSample, i2s_mode_t mode)
Initializes the I2S peripheral.
+
- + diff --git a/index.html b/index.html index c7fab86..49055aa 100644 --- a/index.html +++ b/index.html @@ -9,6 +9,10 @@ + + + + @@ -48,6 +52,22 @@
+
+ +
+
+
+ +
gossamer
-

-gossamer: a very lightweight firmware framework for SAMD and SAML chips

-

Gossamer is an extremely lightweight framework for developing bare-metal firmware applications for the Microchip SAM D and SAM L series chips. It aims for consistency, simplicity and low power consumption.

-

Gossamer targets four chips at this time: the SAM D11, D21, L21 and L22. These chips are all strikingly similar: they all have Cortex M0+ cores as well as native USB and as familiar peripherals like ADC's, TCC's and SERCOMs. Alas, a lot of the interfaces to these peripherals have slight differences, and at startup, these chips have subtly different clock setups.

-

The primary goal of the project is to provide a simple environment for writing firmware for these chips. The secondary goal is to ensure that the code you write will be compatible across chips in the family. By papering over subtle differences in syntax and setup, you should be able to write code for one chip in the family (like the SAM D21), and then seamlessly compile it for another, like the SAM D11 if you realize you need to cut BOM costs, or the L21 if you decide that low power is your priority.

-

Not all devices have all the same peripherals. Some features, like the segment LCD, are specific to one chip like the SAM L22. Even some devices that do have the same peripherals have different configuration options; for example, the DAC peripheral has two 12-bit channels on the SAM L21, but only one 10-bit channel on the SAM D21 and D11. Still, many of the peripherals are very similar on the different platforms, and gossamer provides a thin layer of translation on top that should make it easy to move up and down the product line.

-

-Clock Tree

-

If you look at the data sheets for these chips, you'll see that some boot with a 1 MHz clock, and others with a 4 MHz clock. No generic clocks are defined, and if you're coming from the Atmel Start world, you'll recall that it was on you to invent a clock tree from sceatch.

-

Gossamer simplifies this by giving you a consistent environment on all four platforms:

+

Gossamer is an extremely lightweight framework for developing bare-metal firmware applications for the Microchip SAM D and SAM L series chips. Before you get started, you might want to take a look at the README.

+

After that, you can get a sense for how to implement an app with the Gossamer application framework.

+

You'll also want to know some stuff about the System Internals.

+

From there, check out all the peripherals available on most chips:

-

Some peripherals are automatically clocked from the source that makes the most sense (i.e. RTC from GCLK3, EIC from GCLK2). SERCOM peripherals are clocked from the main clock, but provide a configurable baud rate in their init functions. More versatile peripherals like the TC and TCC take a generic clock and prescaler factor as parameters in their init functions.

-

-Application Framework

-

Much like an Arduino sketch has setup and loop functions, a Gossamer application is implemented in three functions:

+

There are also special peripherals that are only available on certain chips:

    -
  • app_init is called after the system clocks are initialized, and before anything else. This is an opportunity to change any low-level defaults like processor speed, and configure any additional system clocks and long-running peripherals like the RTC.
  • -
  • app_setup is akin to the Arduino setup() function, and provides an opportunity to set up your application's initial state.
  • -
  • app_loop is akin to the Arduino loop() function, with the difference that your application will return a boolean value indicating whether the application is prepared to enter STANDBY mode:
      -
    • Returning false here ensures that your app_loop will be called again immediately.
    • -
    • Returning true will send the microcontroller into STANDBY mode, where it will remain until woken by an interrupt.
    • +
    • The Segment LCD driver on the SAM L22
    • +
    • The Operational Amplifier on the SAM L21
    -
  • -
-

This last bit — entering standby mode as often as possible — is a key feature of gossamer. In standby mode, the CPU is halted, but peripherals set up to run in standby can still run, and wake the device on an interrupt like a button press, timer tick or even the receipt of data over a UART.

-

This is a great way to conserve energy in battery-powered applications, and gossamer makes it easy.

-

-Peripheral Interface

-

Peripherals are generally thin wrappers around raw register reads and writes, with little more than synchronization logic tacked on. Wrapping the raw register twiddling in function calls allows us to paper over subtle implementation details and hand-wave away register layout differences, like the difference between waiting on STATUS.bit.SYNCBUSY vs SYNCBUSY.reg. This provides a consistent way to enable, disable and operate peripherals:

-
    -
  • peripheral_init enables the peripheral clocks and configures the peripheral, but does not enable it. Generally returns void, but for peripherals whose initialization can fail (i.e. due to a bad parameter), some init functions will return a boolean value: true if successful, false otherwise.
  • -
  • peripheral_enable enables the peripheral (usually a CTRLA.bit.ENABLE, with associated SYNCBUSY wait). Some peripherals have multiple channels (DAC) or instances (SERCOM). In these cases, the enable function takes as a parameter which instance to enable.
  • -
  • peripheral_disable disables the peripheral.
      -
    • For peripherals with multiple channels, this disables the channel, unless all channels are disabled in which case it disables the whole peripheral.
    • -
    • For peripherals with multiple instances, this only disables the specified instance.
    • -
    -
  • -
-

For example, this is how you might set up the RTC peripheral, which has predefined clock defaults:

-
- -
void rtc_enable(void)
Enables the RTC.
Definition rtc.c:73
-
void rtc_init(void)
Initializes the RTC.
Definition rtc.c:49
-

This is how you might output an analog value on DAC channel 0 (the first DAC on the SAM L21, or the only DAC on D21):

-
HAL_GPIO_A0_pmuxen(HAL_GPIO_PMUX_DAC);
- - - -
void dac_enable(dac_channel_mask_t channelmask)
Enables the DAC channels specified in the mask, and disables others.
Definition dac.c:75
-
void dac_set_analog_value(uint16_t channel, uint16_t value)
Set the analog value of the DAC.
Definition dac.c:97
-
void dac_init(void)
Initializes the DAC peripheral, but does not enable it.
Definition dac.c:40
-

This is how you would set up Timer/Counter TC1 to overflow at 500 Hz (i.e. for driving a DMA transaction):

-
tc_init(1, GENERIC_CLOCK_0, TC_PRESCALER_DIV256); // 8 MHz / 256 = 125,000
-
tc_set_counter_mode(1, TC_COUNTER_MODE_8BIT)
-
tc_set_wavegen(1, TC_WAVE_WAVEGEN_MFRQ); // Match frequency mode, overflow at CC0
-
tc_count8_set_cc(1, 0, 250); // 125,000 / 250 = 500 Hz
- -
bool tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler)
Enables the peripheral clock for the TC and clocks it with the selected clock source....
Definition tc.c:36
-
void tc_enable(uint8_t instance)
Enables the TC. Make sure to call tc_init first to set it up.
Definition tc.c:105
-
void tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value)
Sets the TC's compare channel CC0 or CC1 register in 8-bit mode.
Definition tc.c:122
-
void tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode)
Sets the TC's counting mode (an 8, 16 or 32-bit counter),.
Definition tc.c:70
-
void tc_set_wavegen(uint8_t instance, tc_wavegen_t mode)
Sets the TC's waveform generation mode.
Definition tc.c:78
-

For SERCOM peripherals, which have several instances, we provide a shortcut: if your board defines a I2C_SERCOM, SPI_SERCOM, or UART_SERCOM in its pins.h, you can use the i2c_init, spi_init, or uart_init functions without specifying the SERCOM instance. For example, if your board defines a I2C_SERCOM, you would set up the I2C peripheral like this:

-
HAL_GPIO_SDA_pmuxen(HAL_GPIO_PMUX_SERCOM);
-
HAL_GPIO_SCL_pmuxen(HAL_GPIO_PMUX_SERCOM);
- - -
void i2c_init(void)
Initializes the I2C peripheral for a board with a defined I2C_SERCOM.
-
void i2c_enable(void)
Enables the I2C peripheral for a board with a defined I2C_SERCOM.
-

However, if your board does not define I2C_SERCOM, you would use the i2c_init_instance function instead:

-
HAL_GPIO_SDA_pmuxen(HAL_GPIO_PMUX_SERCOM);
-
HAL_GPIO_SCL_pmuxen(HAL_GPIO_PMUX_SERCOM);
- - -
void i2c_init_instance(uint8_t sercom, uint32_t baud)
Initializes an I2C peripheral on the given SERCOM.
Definition i2c.c:44
-

SPI_SERCOM and UART_SERCOM work similarly, although you will also need to specify SPI_SERCOM_DOPO and SPI_SERCOM_DIPO, or UART_SERCOM_TXPO and UART_SERCOM_RXPO to give Gossamer a hint at your pinout.

-

-Flashing Firmware

-

Gossamer is designed to work with Adafruit's UF2 bootloader on SAM D21, L21 and L22 chips. For SAM D11 chips, it's designed to work with the DFU bootloader. The UF2 bootloader is a drag-and-drop bootloader that presents itself as a USB drive, while the DFU bootloader is a USB DFU bootloader that can be flashed using the dfu-util command line tool.

-

Either way, gossamer papers over the differences: with a device in bootloader mode plugged in via USB, running make && make install builds your application and flashes it to a device.

-

-Emscripten Support

-

Gossamer includes a set of "dummy" peripherals that allow your application to compile to WebAssembly using Emscripten. Note that other than the GPIO macros tracking basic pin levels, these peripherals don't actually do anything, but this is an area of interest for future development.

-

-Examples

-

Boards are defined in the /boards directory, which sets up the target as well as predefined macros for all the pins on a given board. So, for example, this is how you get to blinky on any board with a built in LED:

-
#include "app.h"
-
#include "delay.h"
-
-
void app_init(void) {
-
}
-
-
void app_setup(void) {
-
HAL_GPIO_LED_out();
-
}
-
-
bool app_loop(void) {
-
HAL_GPIO_LED_toggle();
-
delay_ms(500);
-
return false;
-
}
-
Gossamer application framework.
-
void app_setup(void)
A function you will implement to set up your app. The app_setup function is like setup() in Arduino....
-
bool app_loop(void)
A function you will implement to serve as the app's main run loop. This method will be called repeate...
-
void app_init(void)
A function you will implement to initialize your application's low- level setup. The app_init functio...
-
Delay routines.
-

A more complex app, which displays "Hello" on an Oddly Specific LCD, makes use of the pin mux assignment macros and the I2C peripheral:

-
#include "app.h"
-
#include "i2c.h"
-
#include "drivers/oso_lcd.h"
-
-
void app_init(void) {
-
}
-
-
void app_setup(void) {
-
// I2C pin mux
-
HAL_GPIO_SDA_pmuxen(HAL_GPIO_PMUX_SERCOM);
-
HAL_GPIO_SCL_pmuxen(HAL_GPIO_PMUX_SERCOM);
-
// initialize the I2C peripheral
- - -
-
// display text on the LCD
-
oso_lcd_begin();
-
oso_lcd_fill(0);
-
oso_lcd_print("hello");
-
}
-
-
bool app_loop(void) {
-
return true;
-
}
-
I2C Peripheral.
-

-Current state and future plans

-

Gossamer is now stable enough for folks to use; in fact, it's the framework underlying Second Movement, the new firmware for Sensor Watch. Having said that, not all peripherals are implemented, and not all of the ones that are implemented are complete. There are lots of features for which we don't have functions defined, and certain peripherals are only implemented on certain chips.

-

But hey: pull requests are welcome!

+

- + diff --git a/md__r_e_a_d_m_e.html b/md__r_e_a_d_m_e.html index 8a90d7c..c184c99 100644 --- a/md__r_e_a_d_m_e.html +++ b/md__r_e_a_d_m_e.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ +
+
+ +
+
+
+ +
-
README
-

///

+

@title README

+

+gossamer: a very lightweight firmware framework for SAMD and SAML chips

+

Gossamer is an extremely lightweight framework for developing bare-metal firmware applications for the Microchip SAM D and SAM L series chips. It aims for consistency, simplicity and low power consumption.

+

Gossamer targets four chips at this time: the SAM D11, D21, L21 and L22. These chips are all strikingly similar: they all have Cortex M0+ cores as well as native USB and as familiar peripherals like ADC's, TCC's and SERCOMs. Alas, a lot of the interfaces to these peripherals have slight differences, and at startup, these chips have subtly different clock setups.

+

The primary goal of the project is to provide a simple environment for writing firmware for these chips. The secondary goal is to ensure that the code you write will be compatible across chips in the family. By papering over subtle differences in syntax and setup, you should be able to write code for one chip in the family (like the SAM D21), and then seamlessly compile it for another, like the SAM D11 if you realize you need to cut BOM costs, or the L21 if you decide that low power is your priority.

+

Not all devices have all the same peripherals. Some features, like the segment LCD, are specific to one chip like the SAM L22. Even some devices that do have the same peripherals have different configuration options; for example, the DAC peripheral has two 12-bit channels on the SAM L21, but only one 10-bit channel on the SAM D21 and D11. Still, many of the peripherals are very similar on the different platforms, and gossamer provides a thin layer of translation on top that should make it easy to move up and down the product line.

+

+Clock Tree

+

If you look at the data sheets for these chips, you'll see that some boot with a 1 MHz clock, and others with a 4 MHz clock. No generic clocks are defined, and if you're coming from the Atmel Start world, you'll recall that it was on you to invent a clock tree from sceatch.

+

Gossamer simplifies this by giving you a consistent environment on all four platforms:

+
    +
  • GCLK0, the main system clock, is set to 8 MHz at boot. You can change this in app_init using the set_cpu_frequency function.
  • +
  • GCLK1 is reserved for the 48 MHz DFLL clock, which is only configured if the USB peripheral is enabled.
  • +
  • GCLK2 is a low-power, low-accuracy 32 kHz clock sourced from OSCULP32K.
  • +
  • GCLK3 is a 1024 Hz clock, derived from the most accurate source available.
  • +
+

Some peripherals are automatically clocked from the source that makes the most sense (i.e. RTC from GCLK3, EIC from GCLK2). SERCOM peripherals are clocked from the main clock, but provide a configurable baud rate in their init functions. More versatile peripherals like the TC and TCC take a generic clock and prescaler factor as parameters in their init functions.

+

+Application Framework

+

Much like an Arduino sketch has setup and loop functions, a Gossamer application is implemented in three functions:

+
    +
  • app_init is called after the system clocks are initialized, and before anything else. This is an opportunity to change any low-level defaults like processor speed, and configure any additional system clocks and long-running peripherals like the RTC.
  • +
  • app_setup is akin to the Arduino setup() function, and provides an opportunity to set up your application's initial state.
  • +
  • app_loop is akin to the Arduino loop() function, with the difference that your application will return a boolean value indicating whether the application is prepared to enter STANDBY mode:
      +
    • Returning false here ensures that your app_loop will be called again immediately.
    • +
    • Returning true will send the microcontroller into STANDBY mode, where it will remain until woken by an interrupt.
    • +
    +
  • +
+

This last bit — entering standby mode as often as possible — is a key feature of gossamer. In standby mode, the CPU is halted, but peripherals set up to run in standby can still run, and wake the device on an interrupt like a button press, timer tick or even the receipt of data over a UART.

+

This is a great way to conserve energy in battery-powered applications, and gossamer makes it easy.

+

+Peripheral Interface

+

Peripherals are generally thin wrappers around raw register reads and writes, with little more than synchronization logic tacked on. Wrapping the raw register twiddling in function calls allows us to paper over subtle implementation details and hand-wave away register layout differences, like the difference between waiting on STATUS.bit.SYNCBUSY vs SYNCBUSY.reg. This provides a consistent way to enable, disable and operate peripherals:

+
    +
  • peripheral_init enables the peripheral clocks and configures the peripheral, but does not enable it. Generally returns void, but for peripherals whose initialization can fail (i.e. due to a bad parameter), some init functions will return a boolean value: true if successful, false otherwise.
  • +
  • peripheral_enable enables the peripheral (usually a CTRLA.bit.ENABLE, with associated SYNCBUSY wait). Some peripherals have multiple channels (DAC) or instances (SERCOM). In these cases, the enable function takes as a parameter which instance to enable.
  • +
  • peripheral_disable disables the peripheral.
      +
    • For peripherals with multiple channels, this disables the channel, unless all channels are disabled in which case it disables the whole peripheral.
    • +
    • For peripherals with multiple instances, this only disables the specified instance.
    • +
    +
  • +
+

For example, this is how you might set up the RTC peripheral, which has predefined clock defaults:

+
+ +
void rtc_enable(void)
Enables the RTC.
Definition rtc.c:73
+
void rtc_init(void)
Initializes the RTC.
Definition rtc.c:49
+

This is how you might output an analog value on DAC channel 0 (the first DAC on the SAM L21, or the only DAC on D21):

+
HAL_GPIO_A0_pmuxen(HAL_GPIO_PMUX_DAC);
+ + + +
void dac_enable(dac_channel_mask_t channelmask)
Enables the DAC channels specified in the mask, and disables others.
Definition dac.c:75
+
void dac_set_analog_value(uint16_t channel, uint16_t value)
Set the analog value of the DAC.
Definition dac.c:97
+
void dac_init(void)
Initializes the DAC peripheral, but does not enable it.
Definition dac.c:40
+

This is how you would set up Timer/Counter TC1 to overflow at 500 Hz (i.e. for driving a DMA transaction):

+
tc_init(1, GENERIC_CLOCK_0, TC_PRESCALER_DIV256); // 8 MHz / 256 = 125,000
+
tc_set_counter_mode(1, TC_COUNTER_MODE_8BIT)
+
tc_set_wavegen(1, TC_WAVE_WAVEGEN_MFRQ); // Match frequency mode, overflow at CC0
+
tc_count8_set_cc(1, 0, 250); // 125,000 / 250 = 500 Hz
+ +
bool tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler)
Enables the peripheral clock for the TC and clocks it with the selected clock source....
Definition tc.c:36
+
void tc_enable(uint8_t instance)
Enables the TC. Make sure to call tc_init first to set it up.
Definition tc.c:105
+
void tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value)
Sets the TC's compare channel CC0 or CC1 register in 8-bit mode.
Definition tc.c:122
+
void tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode)
Sets the TC's counting mode (an 8, 16 or 32-bit counter),.
Definition tc.c:70
+
void tc_set_wavegen(uint8_t instance, tc_wavegen_t mode)
Sets the TC's waveform generation mode.
Definition tc.c:78
+

For SERCOM peripherals, which have several instances, we provide a shortcut: if your board defines a I2C_SERCOM, SPI_SERCOM, or UART_SERCOM in its pins.h, you can use the i2c_init, spi_init, or uart_init functions without specifying the SERCOM instance. For example, if your board defines a I2C_SERCOM, you would set up the I2C peripheral like this:

+
HAL_GPIO_SDA_pmuxen(HAL_GPIO_PMUX_SERCOM);
+
HAL_GPIO_SCL_pmuxen(HAL_GPIO_PMUX_SERCOM);
+ + +
void i2c_init(void)
Initializes the I2C peripheral for a board with a defined I2C_SERCOM.
+
void i2c_enable(void)
Enables the I2C peripheral for a board with a defined I2C_SERCOM.
+

However, if your board does not define I2C_SERCOM, you would use the i2c_init_instance function instead:

+
HAL_GPIO_SDA_pmuxen(HAL_GPIO_PMUX_SERCOM);
+
HAL_GPIO_SCL_pmuxen(HAL_GPIO_PMUX_SERCOM);
+ + +
void i2c_init_instance(uint8_t sercom, uint32_t baud)
Initializes an I2C peripheral on the given SERCOM.
Definition i2c.c:44
+

SPI_SERCOM and UART_SERCOM work similarly, although you will also need to specify SPI_SERCOM_DOPO and SPI_SERCOM_DIPO, or UART_SERCOM_TXPO and UART_SERCOM_RXPO to give Gossamer a hint at your pinout.

+

+Flashing Firmware

+

Gossamer is designed to work with Adafruit's UF2 bootloader on SAM D21, L21 and L22 chips. For SAM D11 chips, it's designed to work with the DFU bootloader. The UF2 bootloader is a drag-and-drop bootloader that presents itself as a USB drive, while the DFU bootloader is a USB DFU bootloader that can be flashed using the dfu-util command line tool.

+

Either way, gossamer papers over the differences: with a device in bootloader mode plugged in via USB, running make && make install builds your application and flashes it to a device.

+

+Emscripten Support

+

Gossamer includes a set of "dummy" peripherals that allow your application to compile to WebAssembly using Emscripten. Note that other than the GPIO macros tracking basic pin levels, these peripherals don't actually do anything, but this is an area of interest for future development.

+

+Examples

+

Boards are defined in the /boards directory, which sets up the target as well as predefined macros for all the pins on a given board. So, for example, this is how you get to blinky on any board with a built in LED:

+
#include "app.h"
+
#include "delay.h"
+
+
void app_init(void) {
+
}
+
+
void app_setup(void) {
+
HAL_GPIO_LED_out();
+
}
+
+
bool app_loop(void) {
+
HAL_GPIO_LED_toggle();
+
delay_ms(500);
+
return false;
+
}
+
void app_setup(void)
A function you will implement to set up your app. The app_setup function is like setup() in Arduino....
+
bool app_loop(void)
A function you will implement to serve as the app's main run loop. This method will be called repeate...
+
void app_init(void)
A function you will implement to initialize your application's low- level setup. The app_init functio...
+

A more complex app, which displays "Hello" on an Oddly Specific LCD, makes use of the pin mux assignment macros and the I2C peripheral:

+
#include "app.h"
+
#include "i2c.h"
+
#include "drivers/oso_lcd.h"
+
+
void app_init(void) {
+
}
+
+
void app_setup(void) {
+
// I2C pin mux
+
HAL_GPIO_SDA_pmuxen(HAL_GPIO_PMUX_SERCOM);
+
HAL_GPIO_SCL_pmuxen(HAL_GPIO_PMUX_SERCOM);
+
// initialize the I2C peripheral
+ + +
+
// display text on the LCD
+
oso_lcd_begin();
+
oso_lcd_fill(0);
+
oso_lcd_print("hello");
+
}
+
+
bool app_loop(void) {
+
return true;
+
}
+

+Current state and future plans

+

Gossamer is now stable enough for folks to use; in fact, it's the framework underlying Second Movement, the new firmware for Sensor Watch. Having said that, not all peripherals are implemented, and not all of the ones that are implemented are complete. There are lots of features for which we don't have functions defined, and certain peripherals are only implemented on certain chips.

+

But hey: pull requests are welcome!

+
- + diff --git a/menudata.js b/menudata.js index 36d536a..61a957a 100644 --- a/menudata.js +++ b/menudata.js @@ -25,6 +25,7 @@ var menudata={children:[ {text:"Main Page",url:"index.html"}, {text:"Related Pages",url:"pages.html"}, +{text:"Topics",url:"topics.html"}, {text:"Data Structures",url:"annotated.html",children:[ {text:"Data Structures",url:"annotated.html"}, {text:"Data Structure Index",url:"classes.html"}]}, @@ -32,32 +33,7 @@ var menudata={children:[ {text:"File List",url:"files.html"}, {text:"Globals",url:"globals.html",children:[ {text:"All",url:"globals.html",children:[ -{text:"_",url:"globals.html#index__5F"}, -{text:"a",url:"globals.html#index_a"}, -{text:"d",url:"globals.html#index_d"}, -{text:"e",url:"globals.html#index_e"}, {text:"g",url:"globals.html#index_g"}, -{text:"i",url:"globals.html#index_i"}, -{text:"o",url:"globals.html#index_o"}, -{text:"r",url:"globals.html#index_r"}, -{text:"s",url:"globals.html#index_s"}, -{text:"t",url:"globals.html#index_t"}, -{text:"u",url:"globals.html#index_u"}, -{text:"y",url:"globals.html#index_y"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"_",url:"globals_func.html#index__5F"}, -{text:"a",url:"globals_func.html#index_a"}, -{text:"d",url:"globals_func.html#index_d"}, -{text:"e",url:"globals_func.html#index_e"}, -{text:"g",url:"globals_func.html#index_g"}, -{text:"i",url:"globals_func.html#index_i"}, -{text:"o",url:"globals_func.html#index_o"}, -{text:"r",url:"globals_func.html#index_r"}, -{text:"s",url:"globals_func.html#index_s"}, -{text:"t",url:"globals_func.html#index_t"}, -{text:"u",url:"globals_func.html#index_u"}, -{text:"y",url:"globals_func.html#index_y"}]}, -{text:"Typedefs",url:"globals_type.html"}, -{text:"Enumerations",url:"globals_enum.html"}, -{text:"Enumerator",url:"globals_eval.html"}, +{text:"s",url:"globals.html#index_s"}]}, +{text:"Functions",url:"globals_func.html"}, {text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/navtree.css b/navtree.css new file mode 100644 index 0000000..6b1e5e4 --- /dev/null +++ b/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree .selected .arrow { + color: #9CAFD4; + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:white; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url('splitbar.png'); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 0000000..93dd3d4 --- /dev/null +++ b/navtree.js @@ -0,0 +1,559 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, setFocus) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ - - - - - - -gossamer: common/opamp.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
opamp.h File Reference
-
-
- -

Operational Amplifier Peripheral. -More...

-
#include <stdint.h>
-#include <stdbool.h>
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

-#define OPAMP_MUXNEG_NEG   (0)
 
-#define OPAMP_MUXNEG_LADDER   (1)
 
-#define OPAMP_MUXNEG_OUT   (2)
 
-#define OPAMP0_MUXNEG_DAC   (3)
 
-#define OPAMP1_MUXNEG_DAC   (3)
 
-#define OPAMP2_MUXNEG_DAC   (5)
 
-#define OPAMP2_MUXNEG_NEG_0   (3)
 
-#define OPAMP2_MUXNEG_NEG_1   (4)
 
-#define OPAMP_MUXPOS_POS   (0)
 
-#define OPAMP_MUXPOS_LADDER   (1)
 
-#define OPAMP0_MUXPOS_DAC   (2)
 
-#define OPAMP1_MUXPOS_OUT_0   (2)
 
-#define OPAMP2_MUXPOS_OUT_1   (2)
 
-#define OPAMP_MUXPOS_GND   (3)
 
-#define OPAMP2_MUXPOS_POS_0   (4)
 
-#define OPAMP2_MUXPOS_POS_1   (5)
 
-#define OPAMP2_MUXPOS_LADDER_0   (6)
 
-#define OPAMP_POTMUX_RATIO_14_2   (0)
 
-#define OPAMP_POTMUX_RATIO_12_4   (1)
 
-#define OPAMP_POTMUX_RATIO_8_8   (2)
 
-#define OPAMP_POTMUX_RATIO_6_10   (3)
 
-#define OPAMP_POTMUX_RATIO_4_12   (4)
 
-#define OPAMP_POTMUX_RATIO_3_13   (5)
 
-#define OPAMP_POTMUX_RATIO_2_14   (6)
 
-#define OPAMP_POTMUX_RATIO_1_15   (7)
 
-#define OPAMP_RES1MUX_POS   (0)
 
-#define OPAMP_RES1MUX_NEG   (1)
 
-#define OPAMP0_RES1MUX_DAC   (2)
 
-#define OPAMP1_RES1MUX_OUT_0   (2)
 
-#define OPAMP2_RES1MUX_OUT_1   (2)
 
-#define OPAMP_RES1MUX_GND   (3)
 
-#define OPAMP_RES1MUX_NC   (4)
 
-#define OPAMP_RES2MUX_VCC   (0)
 
-#define OPAMP_RES2MUX_OUT   (1)
 
-#define OPAMP_RES2MUX_NC   (2)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-void opamp_init (void)
 Initializes the OPAMP peripheral, but does not enable any opamps.
 
void opamp_enable (uint16_t instance)
 Enables the given opamp.
 
void opamp_set_muxpos (uint16_t instance, uint8_t muxpos)
 Sets the positive input mux for the given opamp.
 
void opamp_set_muxneg (uint16_t instance, uint8_t muxneg)
 Sets the negative input mux for the given opamp.
 
void opamp_set_potmux (uint16_t instance, uint8_t potmux)
 Sets the potentiometer (resistor ladder) mux for the given opamp.
 
void opamp_set_res1mux (uint16_t instance, uint8_t res1mux)
 Sets the connection for the bottom of the resistor ladder for the given instance.
 
void opamp_set_res2mux (uint16_t instance, uint8_t res2mux)
 Sets the connection for the top of the resistor ladder for the given instance.
 
void opamp_set_analog_connection (uint16_t instance, bool connected)
 Sets or removes the connection from the opamp output to the ADC / AC.
 
void opamp_disable (uint16_t instance)
 Disables the given opamp.
 
-

Detailed Description

-

Operational Amplifier Peripheral.

-

Function Documentation

- -

◆ opamp_disable()

- -
-
- - - - - - - - -
void opamp_disable (uint16_t instance)
-
- -

Disables the given opamp.

-
Parameters
- - -
instanceThe opamp instance to disable.
-
-
-
Note
You should disable the opamp before reconfiguring it, and re-enable it afterwards.
- -
-
- -

◆ opamp_enable()

- -
-
- - - - - - - - -
void opamp_enable (uint16_t instance)
-
- -

Enables the given opamp.

-
Parameters
- - -
instanceThe opamp instance to enable.
-
-
- -
-
- -

◆ opamp_set_analog_connection()

- -
-
- - - - - - - - - - - - - - - - - - -
void opamp_set_analog_connection (uint16_t instance,
bool connected 
)
-
- -

Sets or removes the connection from the opamp output to the ADC / AC.

-
Parameters
- - - -
instanceThe opamp instance to configure.
connectedTrue to connect the opamp output to the ADC / AC, false to disconnect it.
-
-
- -
-
- -

◆ opamp_set_muxneg()

- -
-
- - - - - - - - - - - - - - - - - - -
void opamp_set_muxneg (uint16_t instance,
uint8_t muxneg 
)
-
- -

Sets the negative input mux for the given opamp.

-
Parameters
- - - -
instanceThe opamp instance to configure.
muxnegThe desired connection, one of:
    -
  • OPAMP_MUXNEG_NEG - the negative input pin for this instance
  • -
  • OPAMP_MUXNEG_LADDER - the resistor ladder tap for this instance
  • -
  • OPAMP_MUXNEG_OUT - the output of this instance
  • -
  • OPAMP0_MUXNEG_DAC - the DAC output (only valid for OPAMP0)
  • -
  • OPAMP1_MUXNEG_DAC - the DAC output (only valid for OPAMP1)
  • -
  • OPAMP2_MUXNEG_DAC - the DAC output (only valid for OPAMP2)
  • -
  • OPAMP2_MUXNEG_NEG_0 - OPAMP0's negative input pin (only valid for OPAMP2)
  • -
  • OPAMP2_MUXNEG_NEG_1 - OPAMP1's negative input pin (only valid for OPAMP2)
  • -
-
-
-
- -
-
- -

◆ opamp_set_muxpos()

- -
-
- - - - - - - - - - - - - - - - - - -
void opamp_set_muxpos (uint16_t instance,
uint8_t muxpos 
)
-
- -

Sets the positive input mux for the given opamp.

-
Parameters
- - - -
instanceThe opamp instance to configure.
muxposThe desired connection, one of:
    -
  • OPAMP_MUXPOS_POS - the positive input pin for this instance
  • -
  • OPAMP_MUXPOS_GND - ground
  • -
  • OPAMP_MUXPOS_LADDER - the resistor ladder tap for this instance
  • -
  • OPAMP0_MUXPOS_DAC - the DAC output (only valid for OPAMP0)
  • -
  • OPAMP1_MUXPOS_OUT_0 - OPAMP0's output (only valid for OPAMP1)
  • -
  • OPAMP2_MUXPOS_OUT_1 - OPAMP1's output (only valid for OPAMP2)
  • -
  • OPAMP2_MUXPOS_POS_0 - OPAMP0's positive input pin (only valid for OPAMP2)
  • -
  • OPAMP2_MUXPOS_POS_1 - OPAMP1's positive input pin (only valid for OPAMP2)
  • -
  • OPAMP2_MUXPOS_LADDER_0 - OPAMP0's resistor ladder tap (only valid for OPAMP2)
  • -
-
-
-
- -
-
- -

◆ opamp_set_potmux()

- -
-
- - - - - - - - - - - - - - - - - - -
void opamp_set_potmux (uint16_t instance,
uint8_t potmux 
)
-
- -

Sets the potentiometer (resistor ladder) mux for the given opamp.

-
Parameters
- - - -
instanceThe opamp instance to configure.
potmuxThe desired resistor ladder ratio, one of:
    -
  • OPAMP_POTMUX_RATIO_14_2 - 14:2 ratio
  • -
  • OPAMP_POTMUX_RATIO_12_4 - 12:4 ratio
  • -
  • OPAMP_POTMUX_RATIO_8_8 - 8:8 ratio
  • -
  • OPAMP_POTMUX_RATIO_6_10 - 6:10 ratio
  • -
  • OPAMP_POTMUX_RATIO_4_12 - 4:12 ratio
  • -
  • OPAMP_POTMUX_RATIO_3_13 - 3:13 ratio
  • -
  • OPAMP_POTMUX_RATIO_2_14 - 2:14 ratio
  • -
  • OPAMP_POTMUX_RATIO_1_15 - 1:15 ratio
  • -
-
-
-
- -
-
- -

◆ opamp_set_res1mux()

- -
-
- - - - - - - - - - - - - - - - - - -
void opamp_set_res1mux (uint16_t instance,
uint8_t res1mux 
)
-
- -

Sets the connection for the bottom of the resistor ladder for the given instance.

-
Parameters
- - - -
instanceThe opamp instance to configure.
res1muxThe desired connection, one of:
    -
  • OPAMP_RES1MUX_POS - the positive input pin for this instance
  • -
  • OPAMP_RES1MUX_NEG - the negative input pin for this instance
  • -
  • OPAMP_RES1MUX_GND - ground
  • -
  • OPAMP0_RES1MUX_DAC - the DAC output (only valid for OPAMP0)
  • -
  • OPAMP1_RES1MUX_OUT_0 - OPAMP0's output (only valid for OPAMP1)
  • -
  • OPAMP2_RES1MUX_OUT_1 - OPAMP1's output (only valid for OPAMP2)
  • -
  • OPAMP_RES1MUX_NC - not connected
  • -
-
-
-
- -
-
- -

◆ opamp_set_res2mux()

- -
-
- - - - - - - - - - - - - - - - - - -
void opamp_set_res2mux (uint16_t instance,
uint8_t res2mux 
)
-
- -

Sets the connection for the top of the resistor ladder for the given instance.

-
Parameters
- - - -
instanceThe opamp instance to configure.
res2muxThe desired connection, one of:
    -
  • OPAMP_RES2MUX_VCC - VDDANA
  • -
  • OPAMP_RES2MUX_OUT - the output of this instance
  • -
  • OPAMP_RES2MUX_NC - not connected
  • -
-
-
-
- -
-
-
- - - - diff --git a/opamp_8h_source.html b/opamp_8h_source.html index 04f5604..768b0c3 100644 --- a/opamp_8h_source.html +++ b/opamp_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
+
+ +
+
+
+ +
- -
opamp.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2022 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2022 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33
-
34#ifdef OPAMP
-
35
-
36#define OPAMP_MUXNEG_NEG (0)
-
37#define OPAMP_MUXNEG_LADDER (1)
-
38#define OPAMP_MUXNEG_OUT (2)
-
39#define OPAMP0_MUXNEG_DAC (3)
-
40#define OPAMP1_MUXNEG_DAC (3)
-
41#define OPAMP2_MUXNEG_DAC (5)
-
42#define OPAMP2_MUXNEG_NEG_0 (3)
-
43#define OPAMP2_MUXNEG_NEG_1 (4)
-
44
-
45#define OPAMP_MUXPOS_POS (0)
-
46#define OPAMP_MUXPOS_LADDER (1)
-
47#define OPAMP0_MUXPOS_DAC (2)
-
48#define OPAMP1_MUXPOS_OUT_0 (2)
-
49#define OPAMP2_MUXPOS_OUT_1 (2)
-
50#define OPAMP_MUXPOS_GND (3)
-
51#define OPAMP2_MUXPOS_POS_0 (4)
-
52#define OPAMP2_MUXPOS_POS_1 (5)
-
53#define OPAMP2_MUXPOS_LADDER_0 (6)
-
54
-
55#define OPAMP_POTMUX_RATIO_14_2 (0)
-
56#define OPAMP_POTMUX_RATIO_12_4 (1)
-
57#define OPAMP_POTMUX_RATIO_8_8 (2)
-
58#define OPAMP_POTMUX_RATIO_6_10 (3)
-
59#define OPAMP_POTMUX_RATIO_4_12 (4)
-
60#define OPAMP_POTMUX_RATIO_3_13 (5)
-
61#define OPAMP_POTMUX_RATIO_2_14 (6)
-
62#define OPAMP_POTMUX_RATIO_1_15 (7)
-
63
-
64#define OPAMP_RES1MUX_POS (0)
-
65#define OPAMP_RES1MUX_NEG (1)
-
66#define OPAMP0_RES1MUX_DAC (2)
-
67#define OPAMP1_RES1MUX_OUT_0 (2)
-
68#define OPAMP2_RES1MUX_OUT_1 (2)
-
69#define OPAMP_RES1MUX_GND (3)
-
70#define OPAMP_RES1MUX_NC (4)
-
71
-
72#define OPAMP_RES2MUX_VCC (0)
-
73#define OPAMP_RES2MUX_OUT (1)
-
74#define OPAMP_RES2MUX_NC (2)
-
75
-
79void opamp_init(void);
-
80
-
85void opamp_enable(uint16_t instance);
-
86
-
101void opamp_set_muxpos(uint16_t instance, uint8_t muxpos);
-
102
-
116void opamp_set_muxneg(uint16_t instance, uint8_t muxneg);
-
117
-
131void opamp_set_potmux(uint16_t instance, uint8_t potmux);
-
132
-
145void opamp_set_res1mux(uint16_t instance, uint8_t res1mux);
-
146
-
155void opamp_set_res2mux(uint16_t instance, uint8_t res2mux);
-
156
-
163void opamp_set_analog_connection(uint16_t instance, bool connected);
-
164
-
170void opamp_disable(uint16_t instance);
-
171
-
172#endif
-
void opamp_set_potmux(uint16_t instance, uint8_t potmux)
Sets the potentiometer (resistor ladder) mux for the given opamp.
Definition opamp.c:54
-
void opamp_disable(uint16_t instance)
Disables the given opamp.
Definition opamp.c:90
-
void opamp_init(void)
Initializes the OPAMP peripheral, but does not enable any opamps.
Definition opamp.c:32
-
void opamp_enable(uint16_t instance)
Enables the given opamp.
Definition opamp.c:38
-
void opamp_set_analog_connection(uint16_t instance, bool connected)
Sets or removes the connection from the opamp output to the ADC / AC.
Definition opamp.c:86
-
void opamp_set_muxneg(uint16_t instance, uint8_t muxneg)
Sets the negative input mux for the given opamp.
Definition opamp.c:50
-
void opamp_set_res2mux(uint16_t instance, uint8_t res2mux)
Sets the connection for the top of the resistor ladder for the given instance.
Definition opamp.c:68
-
void opamp_set_res1mux(uint16_t instance, uint8_t res1mux)
Sets the connection for the bottom of the resistor ladder for the given instance.
Definition opamp.c:59
-
void opamp_set_muxpos(uint16_t instance, uint8_t muxpos)
Sets the positive input mux for the given opamp.
Definition opamp.c:46
+
37#ifdef OPAMP
+
38
+
39#define OPAMP_MUXNEG_NEG (0)
+
40#define OPAMP_MUXNEG_LADDER (1)
+
41#define OPAMP_MUXNEG_OUT (2)
+
42#define OPAMP0_MUXNEG_DAC (3)
+
43#define OPAMP1_MUXNEG_DAC (3)
+
44#define OPAMP2_MUXNEG_DAC (5)
+
45#define OPAMP2_MUXNEG_NEG_0 (3)
+
46#define OPAMP2_MUXNEG_NEG_1 (4)
+
47
+
48#define OPAMP_MUXPOS_POS (0)
+
49#define OPAMP_MUXPOS_LADDER (1)
+
50#define OPAMP0_MUXPOS_DAC (2)
+
51#define OPAMP1_MUXPOS_OUT_0 (2)
+
52#define OPAMP2_MUXPOS_OUT_1 (2)
+
53#define OPAMP_MUXPOS_GND (3)
+
54#define OPAMP2_MUXPOS_POS_0 (4)
+
55#define OPAMP2_MUXPOS_POS_1 (5)
+
56#define OPAMP2_MUXPOS_LADDER_0 (6)
+
57
+
58#define OPAMP_POTMUX_RATIO_14_2 (0)
+
59#define OPAMP_POTMUX_RATIO_12_4 (1)
+
60#define OPAMP_POTMUX_RATIO_8_8 (2)
+
61#define OPAMP_POTMUX_RATIO_6_10 (3)
+
62#define OPAMP_POTMUX_RATIO_4_12 (4)
+
63#define OPAMP_POTMUX_RATIO_3_13 (5)
+
64#define OPAMP_POTMUX_RATIO_2_14 (6)
+
65#define OPAMP_POTMUX_RATIO_1_15 (7)
+
66
+
67#define OPAMP_RES1MUX_POS (0)
+
68#define OPAMP_RES1MUX_NEG (1)
+
69#define OPAMP0_RES1MUX_DAC (2)
+
70#define OPAMP1_RES1MUX_OUT_0 (2)
+
71#define OPAMP2_RES1MUX_OUT_1 (2)
+
72#define OPAMP_RES1MUX_GND (3)
+
73#define OPAMP_RES1MUX_NC (4)
+
74
+
75#define OPAMP_RES2MUX_VCC (0)
+
76#define OPAMP_RES2MUX_OUT (1)
+
77#define OPAMP_RES2MUX_NC (2)
+
78
+
82void opamp_init(void);
+
83
+
88void opamp_enable(uint16_t instance);
+
89
+
104void opamp_set_muxpos(uint16_t instance, uint8_t muxpos);
+
105
+
119void opamp_set_muxneg(uint16_t instance, uint8_t muxneg);
+
120
+
134void opamp_set_potmux(uint16_t instance, uint8_t potmux);
+
135
+
148void opamp_set_res1mux(uint16_t instance, uint8_t res1mux);
+
149
+
158void opamp_set_res2mux(uint16_t instance, uint8_t res2mux);
+
159
+
166void opamp_set_analog_connection(uint16_t instance, bool connected);
+
167
+
173void opamp_disable(uint16_t instance);
+
174
+
175#endif
+
176
+
void opamp_set_potmux(uint16_t instance, uint8_t potmux)
Sets the potentiometer (resistor ladder) mux for the given opamp.
Definition opamp.c:54
+
void opamp_disable(uint16_t instance)
Disables the given opamp.
Definition opamp.c:90
+
void opamp_init(void)
Initializes the OPAMP peripheral, but does not enable any opamps.
Definition opamp.c:32
+
void opamp_enable(uint16_t instance)
Enables the given opamp.
Definition opamp.c:38
+
void opamp_set_analog_connection(uint16_t instance, bool connected)
Sets or removes the connection from the opamp output to the ADC / AC.
Definition opamp.c:86
+
void opamp_set_muxneg(uint16_t instance, uint8_t muxneg)
Sets the negative input mux for the given opamp.
Definition opamp.c:50
+
void opamp_set_res2mux(uint16_t instance, uint8_t res2mux)
Sets the connection for the top of the resistor ladder for the given instance.
Definition opamp.c:68
+
void opamp_set_res1mux(uint16_t instance, uint8_t res1mux)
Sets the connection for the bottom of the resistor ladder for the given instance.
Definition opamp.c:59
+
void opamp_set_muxpos(uint16_t instance, uint8_t muxpos)
Sets the positive input mux for the given opamp.
Definition opamp.c:46
+
- + diff --git a/oso__lcd_8h_source.html b/oso__lcd_8h_source.html index b871582..c00e4de 100644 --- a/oso__lcd_8h_source.html +++ b/oso__lcd_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
+
+ +
+
+
+ +
- -
oso_lcd.h
@@ -129,9 +145,13 @@
45void oso_lcd_clear_indicator(uint8_t indicator);
46void oso_lcd_toggle_colon(void);

+

- + diff --git a/pages.html b/pages.html index fe09812..5b019fa 100644 --- a/pages.html +++ b/pages.html @@ -9,6 +9,10 @@ + + + + @@ -48,6 +52,22 @@
+
+ +
+
+
+ +
Here is a list of all related documentation pages:
+

- + diff --git a/ptc_8h.html b/ptc_8h.html deleted file mode 100644 index c0a3e7e..0000000 --- a/ptc_8h.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -gossamer: common/ptc.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
ptc.h File Reference
-
-
- -

Peripheral Touch Controller. -More...

-
#include <stdbool.h>
-#include <stdint.h>
-#include "sam.h"
-
-

Go to the source code of this file.

-

Detailed Description

-

Peripheral Touch Controller.

-
- - - - diff --git a/ptc_8h_source.html b/ptc_8h_source.html index cbdb16e..55925b2 100644 --- a/ptc_8h_source.html +++ b/ptc_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
+
+ +
+
+
+ +
- -
ptc.h
-Go to the documentation of this file.
1
-
5/*
-
6 * FreeTouch, a QTouch-compatible library - tested on ATSAMD21 only!
-
7 * The MIT License (MIT)
-
8 *
-
9 * Copyright (c) 2017 Limor 'ladyada' Fried for Adafruit Industries
-
10 *
-
11 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
12 * of this software and associated documentation files (the "Software"), to deal
-
13 * in the Software without restriction, including without limitation the rights
-
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
15 * copies of the Software, and to permit persons to whom the Software is
-
16 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * FreeTouch, a QTouch-compatible library - tested on ATSAMD21 only!
+
4 * The MIT License (MIT)
+
5 *
+
6 * Copyright (c) 2017 Limor 'ladyada' Fried for Adafruit Industries
+
7 *
+
8 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
9 * of this software and associated documentation files (the "Software"), to deal
+
10 * in the Software without restriction, including without limitation the rights
+
11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
12 * copies of the Software, and to permit persons to whom the Software is
+
13 * furnished to do so, subject to the following conditions:
+
14 *
+
15 * The above copyright notice and this permission notice shall be included in
+
16 * all copies or substantial portions of the Software.
17 *
-
18 * The above copyright notice and this permission notice shall be included in
-
19 * all copies or substantial portions of the Software.
-
20 *
-
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-
27 * THE SOFTWARE.
-
28 */
-
29
-
30#pragma once
-
31
-
32#include <stdbool.h>
-
33#include <stdint.h>
-
34#include "sam.h"
-
35
-
36#ifdef _SAMD21_
-
37#include "component/samd21_ptc_component.h"
-
38#define HAS_PTC 1
-
39#endif
-
40
-
41#ifdef _SAMD11_
-
42#include "component/samd11_ptc_component.h"
-
43#define HAS_PTC 1
-
44#endif
-
45
-
46#ifdef HAS_PTC
-
47
-
48/* Touch library oversampling (filter) setting */
-
49typedef enum tag_oversample_level_t {
-
50 OVERSAMPLE_1,
-
51 OVERSAMPLE_2,
-
52 OVERSAMPLE_4,
-
53 OVERSAMPLE_8,
-
54 OVERSAMPLE_16,
-
55 OVERSAMPLE_32,
-
56 OVERSAMPLE_64
-
57} ptc_oversample_t;
-
58
-
59/* Touch library series resistor setting */
-
60typedef enum tag_series_resistor_t {
-
61 RESISTOR_0,
-
62 RESISTOR_20K,
-
63 RESISTOR_50K,
-
64 RESISTOR_100K,
-
65} ptc_series_resistor_t;
-
66
-
67typedef enum tag_freq_mode_t {
-
68 FREQ_MODE_NONE,
-
69 FREQ_MODE_HOP,
-
70 FREQ_MODE_SPREAD,
-
71 FREQ_MODE_SPREAD_MEDIAN
-
72} ptc_freq_mode_t;
-
73
-
74typedef enum tag_freq_hop_t {
-
75 FREQ_HOP_1,
-
76 FREQ_HOP_2,
-
77 FREQ_HOP_3,
-
78 FREQ_HOP_4,
-
79 FREQ_HOP_5,
-
80 FREQ_HOP_6,
-
81 FREQ_HOP_7,
-
82 FREQ_HOP_8,
-
83 FREQ_HOP_9,
-
84 FREQ_HOP_10,
-
85 FREQ_HOP_11,
-
86 FREQ_HOP_12,
-
87 FREQ_HOP_13,
-
88 FREQ_HOP_14,
-
89 FREQ_HOP_15,
-
90 FREQ_HOP_16
-
91} ptc_freq_hop_t;
-
92
-
96void ptc_init(void);
-
97
-
104void ptc_enable(uint8_t channel);
-
105
-
111uint16_t ptc_get_value(uint8_t channel);
-
112
-
113#endif
+
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+
24 * THE SOFTWARE.
+
25 */
+
26
+
27#pragma once
+
28
+
29#include <stdbool.h>
+
30#include <stdint.h>
+
31#include "sam.h"
+
32
+
40#ifdef _SAMD21_
+
41#include "component/samd21_ptc_component.h"
+
42#define HAS_PTC 1
+
43#endif
+
44
+
45#ifdef _SAMD11_
+
46#include "component/samd11_ptc_component.h"
+
47#define HAS_PTC 1
+
48#endif
+
49
+
50#ifdef HAS_PTC
+
51
+
52/* Touch library oversampling (filter) setting */
+
53typedef enum tag_oversample_level_t {
+
54 OVERSAMPLE_1,
+
55 OVERSAMPLE_2,
+
56 OVERSAMPLE_4,
+
57 OVERSAMPLE_8,
+
58 OVERSAMPLE_16,
+
59 OVERSAMPLE_32,
+
60 OVERSAMPLE_64
+
61} ptc_oversample_t;
+
62
+
63/* Touch library series resistor setting */
+
64typedef enum tag_series_resistor_t {
+
65 RESISTOR_0,
+
66 RESISTOR_20K,
+
67 RESISTOR_50K,
+
68 RESISTOR_100K,
+
69} ptc_series_resistor_t;
+
70
+
71typedef enum tag_freq_mode_t {
+
72 FREQ_MODE_NONE,
+
73 FREQ_MODE_HOP,
+
74 FREQ_MODE_SPREAD,
+
75 FREQ_MODE_SPREAD_MEDIAN
+
76} ptc_freq_mode_t;
+
77
+
78typedef enum tag_freq_hop_t {
+
79 FREQ_HOP_1,
+
80 FREQ_HOP_2,
+
81 FREQ_HOP_3,
+
82 FREQ_HOP_4,
+
83 FREQ_HOP_5,
+
84 FREQ_HOP_6,
+
85 FREQ_HOP_7,
+
86 FREQ_HOP_8,
+
87 FREQ_HOP_9,
+
88 FREQ_HOP_10,
+
89 FREQ_HOP_11,
+
90 FREQ_HOP_12,
+
91 FREQ_HOP_13,
+
92 FREQ_HOP_14,
+
93 FREQ_HOP_15,
+
94 FREQ_HOP_16
+
95} ptc_freq_hop_t;
+
96
+
100void ptc_init(void);
+
101
+
108void ptc_enable(uint8_t channel);
+
109
+
115uint16_t ptc_get_value(uint8_t channel);
+
116
+
117#endif
+
118
+
void ptc_init(void)
Initialize the peripheral touch controller.
Definition ptc.c:38
+
uint16_t ptc_get_value(uint8_t channel)
Get a value from the given channel.
Definition ptc.c:91
+
void ptc_enable(uint8_t channel)
Enable the given PTC channel.
Definition ptc.c:77
+
- + diff --git a/resize.js b/resize.js new file mode 100644 index 0000000..aaeb6fc --- /dev/null +++ b/resize.js @@ -0,0 +1,155 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var once=1; +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight; + + function readSetting(cookie) + { + if (window.chrome) { + var val = localStorage.getItem(cookie_namespace+'_width'); + if (val) return val; + } else { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + } + return 250; + } + + function writeSetting(cookie, val) + { + if (window.chrome) { + localStorage.setItem(cookie_namespace+"_width",val); + } else { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + writeSetting('width',sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() + { + var newWidth; + if (sidenav.width()>0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/rtc_8h_source.html b/rtc_8h_source.html index 5c7e2ae..ad26da0 100644 --- a/rtc_8h_source.html +++ b/rtc_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +

+
+ +
+
+
+ +
- -
rtc.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2020 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2020 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33
-
34#define RTC_REFERENCE_YEAR (2020)
-
35
-
-
36typedef union {
-
37 struct {
-
38 uint32_t second : 6; // 0-59
-
39 uint32_t minute : 6; // 0-59
-
40 uint32_t hour : 5; // 0-23
-
41 uint32_t day : 5; // 1-31
-
42 uint32_t month : 4; // 1-12
-
43 uint32_t year : 6; // 0-63 (representing 2020-2083)
-
44 } unit;
-
45 uint32_t reg; // the bit-packed value as expected by the RTC peripheral's CLOCK register.
- +
38#define RTC_REFERENCE_YEAR (2020)
+
39
+
+
40typedef union {
+
41 struct {
+
42 uint32_t second : 6; // 0-59
+
43 uint32_t minute : 6; // 0-59
+
44 uint32_t hour : 5; // 0-23
+
45 uint32_t day : 5; // 1-31
+
46 uint32_t month : 4; // 1-12
+
47 uint32_t year : 6; // 0-63 (representing 2020-2083)
+
48 } unit;
+
49 uint32_t reg; // the bit-packed value as expected by the RTC peripheral's CLOCK register.
+
-
47
-
48typedef enum rtc_alarm_match_t {
-
49 ALARM_MATCH_DISABLED = 0,
-
50 ALARM_MATCH_SS,
-
51 ALARM_MATCH_MMSS,
-
52 ALARM_MATCH_HHMMSS,
-
53} rtc_alarm_match_t;
-
54
-
55typedef void (*rtc_cb_t)(uint16_t intflag);
-
56
-
62void rtc_init(void);
-
63
-
66void rtc_enable(void);
+
51
+
52typedef enum rtc_alarm_match_t {
+
53 ALARM_MATCH_DISABLED = 0,
+
54 ALARM_MATCH_SS,
+
55 ALARM_MATCH_MMSS,
+
56 ALARM_MATCH_HHMMSS,
+
57} rtc_alarm_match_t;
+
58
+
59typedef void (*rtc_cb_t)(uint16_t intflag);
+
60
+
66void rtc_init(void);
67
-
71bool rtc_is_enabled(void);
-
72
- -
82
- -
88
-
93void rtc_enable_alarm_interrupt(rtc_date_time_t alarm_time, rtc_alarm_match_t mask);
-
94
- +
70void rtc_enable(void);
+
71
+
75bool rtc_is_enabled(void);
+
76
+ +
86
+ +
92
+
97void rtc_enable_alarm_interrupt(rtc_date_time_t alarm_time, rtc_alarm_match_t mask);
98
-
104void rtc_configure_callback(rtc_cb_t callback);
-
void rtc_disable_alarm_interrupt(void)
Disables the alarm callback.
Definition rtc.c:111
-
void rtc_set_date_time(rtc_date_time_t date_time)
Sets the date and time.
Definition rtc.c:79
-
bool rtc_is_enabled(void)
Checks if the RTC is enabled.
Definition rtc.c:37
-
rtc_date_time_t rtc_get_date_time(void)
Returns the date and time.
Definition rtc.c:86
-
void rtc_enable_alarm_interrupt(rtc_date_time_t alarm_time, rtc_alarm_match_t mask)
Enables the alarm interrupt.
Definition rtc.c:98
-
void rtc_configure_callback(rtc_cb_t callback)
Configures the RTC alarm callback.
Definition rtc.c:107
-
void rtc_enable(void)
Enables the RTC.
Definition rtc.c:73
-
void rtc_init(void)
Initializes the RTC.
Definition rtc.c:49
-
Definition rtc.h:36
+ +
102
+
108void rtc_configure_callback(rtc_cb_t callback);
+
109
+
void rtc_disable_alarm_interrupt(void)
Disables the alarm callback.
Definition rtc.c:111
+
void rtc_set_date_time(rtc_date_time_t date_time)
Sets the date and time.
Definition rtc.c:79
+
bool rtc_is_enabled(void)
Checks if the RTC is enabled.
Definition rtc.c:37
+
rtc_date_time_t rtc_get_date_time(void)
Returns the date and time.
Definition rtc.c:86
+
void rtc_enable_alarm_interrupt(rtc_date_time_t alarm_time, rtc_alarm_match_t mask)
Enables the alarm interrupt.
Definition rtc.c:98
+
void rtc_configure_callback(rtc_cb_t callback)
Configures the RTC alarm callback.
Definition rtc.c:107
+
void rtc_enable(void)
Enables the RTC.
Definition rtc.c:73
+
void rtc_init(void)
Initializes the RTC.
Definition rtc.c:49
+
Definition rtc.h:40
+
- + diff --git a/sam_8h_source.html b/sam_8h_source.html index 416ffa5..2e31170 100644 --- a/sam_8h_source.html +++ b/sam_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
+
+ +
+
+
+ +
- -
sam.h
@@ -285,9 +301,13 @@
201
202#endif // __EMSCRIPTEN__

+
- + diff --git a/search/all_0.js b/search/all_0.js index 5fdf659..fedd024 100644 --- a/search/all_0.js +++ b/search/all_0.js @@ -1,8 +1,5 @@ var searchData= [ - ['_5fenable_5f48mhz_5fgclk1_0',['_enable_48mhz_gclk1',['../system_8h.html#af6d6cb9ca08e26e456d9ed1d425453e8',1,'system.h']]], - ['_5fenter_5fstandby_5fmode_1',['_enter_standby_mode',['../system_8h.html#a436af75ad5caf82faa3497787abf4321',1,'system.h']]], - ['_5fsercom_5fclock_5fsetup_2',['_sercom_clock_setup',['../sercom_8h.html#a76ac345ff33c35b9e6847c719bcb00a3',1,'sercom.c']]], - ['_5fsercom_5fdisable_3',['_sercom_disable',['../sercom_8h.html#abef0ed2b1af8b63d85ceb0bc2d212fc5',1,'sercom.c']]], - ['_5fsercom_5fenable_4',['_sercom_enable',['../sercom_8h.html#a2d6b4fa64e102b375f255222acb1d74a',1,'sercom.c']]] + ['_5fenable_5f48mhz_5fgclk1_0',['_enable_48mhz_gclk1',['../group__system.html#gaf6d6cb9ca08e26e456d9ed1d425453e8',1,'system.h']]], + ['_5fenter_5fstandby_5fmode_1',['_enter_standby_mode',['../group__system.html#ga436af75ad5caf82faa3497787abf4321',1,'system.h']]] ]; diff --git a/search/all_1.js b/search/all_1.js index 5a318b2..5aef99f 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -1,19 +1,22 @@ var searchData= [ - ['a_20very_20lightweight_20firmware_20framework_20for_20samd_20and_20saml_20chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['adc_2eh_1',['adc.h',['../adc_8h.html',1,'']]], - ['adc_5fdisable_2',['adc_disable',['../adc_8h.html#a3b4b977d0665b5346849f3b892ac5106',1,'adc.c']]], - ['adc_5fenable_3',['adc_enable',['../adc_8h.html#a3afdea3b7c9b91013c270f1a1a669782',1,'adc.c']]], - ['adc_5fget_5fanalog_5fvalue_4',['adc_get_analog_value',['../adc_8h.html#a96ce001b81ec65219abcb7e4a583f55c',1,'adc.c']]], - ['adc_5fget_5fanalog_5fvalue_5ffor_5fchannel_5',['adc_get_analog_value_for_channel',['../adc_8h.html#a200744370e2a8505c3dead71aff1c2dc',1,'adc.c']]], - ['adc_5finit_6',['adc_init',['../adc_8h.html#a2b815e6730e8723a6d1d06d9ef8f31c0',1,'adc.c']]], - ['adc_5fset_5fsampling_5flength_7',['adc_set_sampling_length',['../adc_8h.html#a1b33d0d9bd2841354f016f8c64be3e15',1,'adc.c']]], - ['and_20future_20plans_8',['Current state and future plans',['../index.html#autotoc_md7',1,'']]], - ['and_20saml_20chips_9',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['app_2eh_10',['app.h',['../app_8h.html',1,'']]], - ['app_5finit_11',['app_init',['../app_8h.html#add3190cf715f513666f4be42874d91e2',1,'app.h']]], - ['app_5floop_12',['app_loop',['../app_8h.html#ad1cfce0ef962cd2afe2d8b2d2d13482a',1,'app.h']]], - ['app_5fsetup_13',['app_setup',['../app_8h.html#acce192accedbd296eb8d2182f8101f16',1,'app.h']]], - ['app_5fwake_5ffrom_5fbackup_14',['app_wake_from_backup',['../app_8h.html#ab6a9f08ba879ce8d28fb19ca2882890a',1,'app.h']]], - ['application_20framework_15',['Application Framework',['../index.html#autotoc_md2',1,'']]] + ['a_20very_20lightweight_20firmware_20framework_20for_20samd_20and_20saml_20chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['access_20controller_1',['Direct Memory Access Controller',['../group__dma.html',1,'']]], + ['adc_5fdisable_2',['adc_disable',['../group__adc.html#ga3b4b977d0665b5346849f3b892ac5106',1,'adc_disable(void): adc.c'],['../group__adc.html#ga3b4b977d0665b5346849f3b892ac5106',1,'adc_disable(void): adc.c']]], + ['adc_5fenable_3',['adc_enable',['../group__adc.html#ga3afdea3b7c9b91013c270f1a1a669782',1,'adc_enable(void): adc.c'],['../group__adc.html#ga3afdea3b7c9b91013c270f1a1a669782',1,'adc_enable(void): adc.c']]], + ['adc_5fget_5fanalog_5fvalue_4',['adc_get_analog_value',['../group__adc.html#ga96ce001b81ec65219abcb7e4a583f55c',1,'adc_get_analog_value(uint8_t pin): adc.c'],['../group__adc.html#ga96ce001b81ec65219abcb7e4a583f55c',1,'adc_get_analog_value(uint8_t pin): adc.c']]], + ['adc_5fget_5fanalog_5fvalue_5ffor_5fchannel_5',['adc_get_analog_value_for_channel',['../group__adc.html#ga200744370e2a8505c3dead71aff1c2dc',1,'adc_get_analog_value_for_channel(uint8_t channel): adc.c'],['../group__adc.html#ga200744370e2a8505c3dead71aff1c2dc',1,'adc_get_analog_value_for_channel(uint8_t channel): adc.c']]], + ['adc_5finit_6',['adc_init',['../group__adc.html#ga2b815e6730e8723a6d1d06d9ef8f31c0',1,'adc_init(void): adc.c'],['../group__adc.html#ga2b815e6730e8723a6d1d06d9ef8f31c0',1,'adc_init(void): adc.c']]], + ['adc_5fset_5fsampling_5flength_7',['adc_set_sampling_length',['../group__adc.html#ga1b33d0d9bd2841354f016f8c64be3e15',1,'adc_set_sampling_length(uint8_t length): adc.c'],['../group__adc.html#ga1b33d0d9bd2841354f016f8c64be3e15',1,'adc_set_sampling_length(uint8_t length): adc.c']]], + ['amplifier_8',['Operational Amplifier',['../group__opamp.html',1,'']]], + ['analog_20converter_9',['Digital to Analog Converter',['../group__dac.html',1,'']]], + ['analog_20to_20digital_20converter_10',['Analog to Digital Converter',['../group__adc.html',1,'']]], + ['and_20future_20plans_11',['Current state and future plans',['../md__r_e_a_d_m_e.html#autotoc_md7',1,'']]], + ['and_20saml_20chips_12',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['app_5finit_13',['app_init',['../group__app.html#gadd3190cf715f513666f4be42874d91e2',1,'app.h']]], + ['app_5floop_14',['app_loop',['../group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a',1,'app.h']]], + ['app_5fsetup_15',['app_setup',['../group__app.html#gacce192accedbd296eb8d2182f8101f16',1,'app.h']]], + ['app_5fwake_5ffrom_5fbackup_16',['app_wake_from_backup',['../group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a',1,'app.h']]], + ['application_20framework_17',['application framework',['../md__r_e_a_d_m_e.html#autotoc_md2',1,'Application Framework'],['../group__app.html',1,'Gossamer application framework']]], + ['applications_18',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]] ]; diff --git a/search/all_10.js b/search/all_10.js index 69a17de..c1966ac 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -1,4 +1,28 @@ var searchData= [ - ['very_20lightweight_20firmware_20framework_20for_20samd_20and_20saml_20chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]] + ['uart_20peripheral_0',['UART Peripheral',['../group__uart.html',1,'']]], + ['uart_5fdisable_1',['uart_disable',['../group__uart.html#ga9dbcc0696f2607e16da1f55d3b4d6d94',1,'uart.h']]], + ['uart_5fdisable_5finstance_2',['uart_disable_instance',['../group__uart.html#ga22b6636b750bfa7669521d5be5baed82',1,'uart_disable_instance(uint8_t sercom): uart.c'],['../group__uart.html#ga22b6636b750bfa7669521d5be5baed82',1,'uart_disable_instance(uint8_t sercom): uart.c']]], + ['uart_5fenable_3',['uart_enable',['../group__uart.html#gaffcbd24efeade3b1444100dbbc614e88',1,'uart.h']]], + ['uart_5fenable_5finstance_4',['uart_enable_instance',['../group__uart.html#gad390de8c3b3ddcb3d03a36513262528d',1,'uart_enable_instance(uint8_t sercom): uart.c'],['../group__uart.html#gad390de8c3b3ddcb3d03a36513262528d',1,'uart_enable_instance(uint8_t sercom): uart.c']]], + ['uart_5finit_5',['uart_init',['../group__uart.html#gad8f6a793347af79ca41a3363dbd3fd96',1,'uart.h']]], + ['uart_5finit_5finstance_6',['uart_init_instance',['../group__uart.html#ga9e514ab7ce443e2fd91fbe99bf8cb207',1,'uart_init_instance(uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud): uart.c'],['../group__uart.html#ga9e514ab7ce443e2fd91fbe99bf8cb207',1,'uart_init_instance(uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud): uart.c']]], + ['uart_5firq_5fhandler_7',['uart_irq_handler',['../group__uart.html#ga3d2a4f57b803f517096c373734ffa78b',1,'uart_irq_handler(uint8_t sercom): uart.c'],['../group__uart.html#ga3d2a4f57b803f517096c373734ffa78b',1,'uart_irq_handler(uint8_t sercom): uart.c']]], + ['uart_5fread_8',['uart_read',['../group__uart.html#gacb00b8879d87fea2a41df7f2772c916c',1,'uart.h']]], + ['uart_5fread_5fbyte_9',['uart_read_byte',['../group__uart.html#ga6c3fa8ab576e34e015d469a2734d3292',1,'uart.h']]], + ['uart_5fread_5fbyte_5finstance_10',['uart_read_byte_instance',['../group__uart.html#gafb3971f7bde4d345bc981b87866267c9',1,'uart_read_byte_instance(uint8_t sercom, uint8_t *byte): uart.c'],['../group__uart.html#gafb3971f7bde4d345bc981b87866267c9',1,'uart_read_byte_instance(uint8_t sercom, uint8_t *byte): uart.c']]], + ['uart_5fread_5finstance_11',['uart_read_instance',['../group__uart.html#ga3ab7120aad2e941879ac328479d40af3',1,'uart_read_instance(uint8_t sercom, uint8_t *data, size_t max_length): uart.c'],['../group__uart.html#ga3ab7120aad2e941879ac328479d40af3',1,'uart_read_instance(uint8_t sercom, uint8_t *data, size_t max_length): uart.c']]], + ['uart_5frxpo_5ft_12',['uart_rxpo_t',['../group__uart.html#ga689c8ada541f2cd1c4c0618eb428fa91',1,'uart.h']]], + ['uart_5fset_5firda_5fmode_13',['uart_set_irda_mode',['../group__uart.html#gafdbbf43dd9af325b1cae5d5318853a8d',1,'uart.h']]], + ['uart_5fset_5firda_5fmode_5finstance_14',['uart_set_irda_mode_instance',['../group__uart.html#ga84eca02c048700d3f3ea086ff1e93451',1,'uart_set_irda_mode_instance(uint8_t sercom, bool irda): uart.c'],['../group__uart.html#ga84eca02c048700d3f3ea086ff1e93451',1,'uart_set_irda_mode_instance(uint8_t sercom, bool irda): uart.c']]], + ['uart_5fset_5frun_5fin_5fstandby_15',['uart_set_run_in_standby',['../group__uart.html#gaa034660a70fb244c2e25187509985760',1,'uart.h']]], + ['uart_5fset_5frun_5fin_5fstandby_5finstance_16',['uart_set_run_in_standby_instance',['../group__uart.html#ga94d5de1ee0878b0fb2d92c3626c3da22',1,'uart_set_run_in_standby_instance(uint8_t sercom, bool run_in_standby): uart.c'],['../group__uart.html#ga94d5de1ee0878b0fb2d92c3626c3da22',1,'uart_set_run_in_standby_instance(uint8_t sercom, bool run_in_standby): uart.c']]], + ['uart_5ftxpo_5ft_17',['uart_txpo_t',['../group__uart.html#ga201cbf904c8080f01165f93634d9603f',1,'uart.h']]], + ['uart_5fwrite_18',['uart_write',['../group__uart.html#ga6e0844dd68d04ca88f255b6c75326a70',1,'uart.h']]], + ['uart_5fwrite_5finstance_19',['uart_write_instance',['../group__uart.html#gad53a035557ef05336ff3e45547b65861',1,'uart_write_instance(uint8_t sercom, uint8_t *data, size_t length): uart.c'],['../group__uart.html#gad53a035557ef05336ff3e45547b65861',1,'uart_write_instance(uint8_t sercom, uint8_t *data, size_t length): uart.c']]], + ['universal_20serial_20bus_20',['Universal Serial Bus',['../group__usb.html',1,'']]], + ['usb_5fdisable_21',['usb_disable',['../group__usb.html#ga4ac5d142ab3f1f170a37247f165b0963',1,'usb_disable(void): usb.c'],['../group__usb.html#ga4ac5d142ab3f1f170a37247f165b0963',1,'usb_disable(void): usb.c']]], + ['usb_5fenable_22',['usb_enable',['../group__usb.html#ga40bb3f8e62330e22fc9d7c49d682ae40',1,'usb_enable(void): usb.c'],['../group__usb.html#ga40bb3f8e62330e22fc9d7c49d682ae40',1,'usb_enable(void): usb.c']]], + ['usb_5finit_23',['usb_init',['../group__usb.html#gaddfbdb66f507ffcd08b4496531ed0a3d',1,'usb_init(void): usb.c'],['../group__usb.html#gaddfbdb66f507ffcd08b4496531ed0a3d',1,'usb_init(void): usb.c']]], + ['usb_5fis_5fenabled_24',['usb_is_enabled',['../group__usb.html#gaeff82d6f3bbd31aa4285c58eb8288ec2',1,'usb_is_enabled(void): usb.c'],['../group__usb.html#gaeff82d6f3bbd31aa4285c58eb8288ec2',1,'usb_is_enabled(void): usb.c']]] ]; diff --git a/search/all_11.js b/search/all_11.js index cf5d1a4..f40e5ba 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -1,4 +1,4 @@ var searchData= [ - ['yield_0',['yield',['../app_8h.html#a7cb51f5c2b5cad3766f19eb69c92793b',1,'app.h']]] + ['very_20lightweight_20firmware_20framework_20for_20samd_20and_20saml_20chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]] ]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 0000000..d73a53f --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yield_0',['yield',['../group__app.html#ga7cb51f5c2b5cad3766f19eb69c92793b',1,'app.h']]] +]; diff --git a/search/all_2.js b/search/all_2.js index a9b27c1..8935d1f 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -1,6 +1,4 @@ var searchData= [ - ['chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['clock_20tree_1',['Clock Tree',['../index.html#autotoc_md1',1,'']]], - ['current_20state_20and_20future_20plans_2',['Current state and future plans',['../index.html#autotoc_md7',1,'']]] + ['bus_0',['Universal Serial Bus',['../group__usb.html',1,'']]] ]; diff --git a/search/all_3.js b/search/all_3.js index 91a6522..801b39d 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -1,12 +1,13 @@ var searchData= [ - ['dac_2eh_0',['dac.h',['../dac_8h.html',1,'']]], - ['dac_5fdisable_1',['dac_disable',['../dac_8h.html#a6b0e70e8bf5135e2f3491e87fcd804fe',1,'dac.c']]], - ['dac_5fenable_2',['dac_enable',['../dac_8h.html#a27483fa712ea61a534f679e72ffba463',1,'dac.c']]], - ['dac_5finit_3',['dac_init',['../dac_8h.html#a6e622fafee8436bf9cf9f6b120352e3c',1,'dac.c']]], - ['dac_5fset_5fanalog_5fvalue_4',['dac_set_analog_value',['../dac_8h.html#a2b43d67fbe14479cc72c1119fb2b7a48',1,'dac.c']]], - ['delay_2eh_5',['delay.h',['../delay_8h.html',1,'']]], - ['delay_5finit_6',['delay_init',['../delay_8h.html#af3c040fe31e69be32855715a75e0cda4',1,'delay.c']]], - ['delay_5fms_7',['delay_ms',['../delay_8h.html#ad2dd6e794004b50917d231195c324ce5',1,'delay.c']]], - ['delay_5fus_8',['delay_us',['../delay_8h.html#aa17c6e82a9085391c696904957505621',1,'delay.c']]] + ['chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['clock_1',['Real-Time Clock',['../group__rtc.html',1,'']]], + ['clock_20tree_2',['Clock Tree',['../md__r_e_a_d_m_e.html#autotoc_md1',1,'']]], + ['communications_20peripheral_3',['Inter-IC Communications Peripheral',['../group__i2c.html',1,'']]], + ['control_20applications_4',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]], + ['controller_5',['controller',['../group__dma.html',1,'Direct Memory Access Controller'],['../group__eic.html',1,'External Interrupt Controller'],['../group__ptc.html',1,'Peripheral Touch Controller']]], + ['converter_6',['converter',['../group__adc.html',1,'Analog to Digital Converter'],['../group__dac.html',1,'Digital to Analog Converter']]], + ['counter_7',['Timer/Counter',['../group__tc.html',1,'']]], + ['counter_20for_20control_20applications_8',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]], + ['current_20state_20and_20future_20plans_9',['Current state and future plans',['../md__r_e_a_d_m_e.html#autotoc_md7',1,'']]] ]; diff --git a/search/all_4.js b/search/all_4.js index ec59f77..8915784 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -1,18 +1,14 @@ var searchData= [ - ['eic_2eh_0',['eic.h',['../eic_8h.html',1,'']]], - ['eic_5fconfigure_5fcallback_1',['eic_configure_callback',['../eic_8h.html#a5695270545c3f5b6a24682447108e6cd',1,'eic.c']]], - ['eic_5fconfigure_5fpin_2',['eic_configure_pin',['../eic_8h.html#a034f0e472fc0d955b11de053a263e8cd',1,'eic.c']]], - ['eic_5fdisable_3',['eic_disable',['../eic_8h.html#abaae85c8706e41bb2cc2b7aa7be956e6',1,'eic.c']]], - ['eic_5fdisable_5fevent_4',['eic_disable_event',['../eic_8h.html#a21e4b3925d449c25fe3831b167845161',1,'eic.c']]], - ['eic_5fdisable_5finterrupt_5',['eic_disable_interrupt',['../eic_8h.html#a48015b16099d943fad32302fad6114a1',1,'eic.c']]], - ['eic_5fenable_6',['eic_enable',['../eic_8h.html#afd8706ad3219397c91636524d2149eb0',1,'eic.c']]], - ['eic_5fenable_5fevent_7',['eic_enable_event',['../eic_8h.html#ae6a140e7799fec385ff48c97f399b7cf',1,'eic.c']]], - ['eic_5fenable_5finterrupt_8',['eic_enable_interrupt',['../eic_8h.html#a95932a1b8c5442120cd6caa7a5cb0733',1,'eic.c']]], - ['eic_5finit_9',['eic_init',['../eic_8h.html#ac66cb10fff656315b12df4248f798c41',1,'eic.c']]], - ['eic_5finterrupt_5ftrigger_5ft_10',['eic_interrupt_trigger_t',['../eic_8h.html#ac1fe47482a1a2c642408f50c2db9469f',1,'eic_interrupt_trigger_t: eic.h'],['../eic_8h.html#a2dcfd365c180eb12af23e9f125089244',1,'eic_interrupt_trigger_t: eic.h']]], - ['emscripten_20support_11',['Emscripten Support',['../index.html#autotoc_md5',1,'']]], - ['evsys_2eh_12',['evsys.h',['../evsys_8h.html',1,'']]], - ['evsys_5fconfigure_5fchannel_13',['evsys_configure_channel',['../evsys_8h.html#a506dcdef11267257fce99f6deffc4844',1,'evsys.c']]], - ['examples_14',['Examples',['../index.html#autotoc_md6',1,'']]] + ['dac_5fdisable_0',['dac_disable',['../group__dac.html#ga6b0e70e8bf5135e2f3491e87fcd804fe',1,'dac_disable(uint16_t channel): dac.c'],['../group__dac.html#ga6b0e70e8bf5135e2f3491e87fcd804fe',1,'dac_disable(uint16_t channel): dac.c']]], + ['dac_5fenable_1',['dac_enable',['../group__dac.html#ga27483fa712ea61a534f679e72ffba463',1,'dac_enable(dac_channel_mask_t channelmask): dac.c'],['../group__dac.html#ga27483fa712ea61a534f679e72ffba463',1,'dac_enable(dac_channel_mask_t channelmask): dac.c']]], + ['dac_5finit_2',['dac_init',['../group__dac.html#ga6e622fafee8436bf9cf9f6b120352e3c',1,'dac_init(void): dac.c'],['../group__dac.html#ga6e622fafee8436bf9cf9f6b120352e3c',1,'dac_init(void): dac.c']]], + ['dac_5fset_5fanalog_5fvalue_3',['dac_set_analog_value',['../group__dac.html#ga2b43d67fbe14479cc72c1119fb2b7a48',1,'dac_set_analog_value(uint16_t channel, uint16_t value): dac.c'],['../group__dac.html#ga2b43d67fbe14479cc72c1119fb2b7a48',1,'dac_set_analog_value(uint16_t channel, uint16_t value): dac.c']]], + ['digital_20converter_4',['Analog to Digital Converter',['../group__adc.html',1,'']]], + ['digital_20to_20analog_20converter_5',['Digital to Analog Converter',['../group__dac.html',1,'']]], + ['direct_20memory_20access_20controller_6',['Direct Memory Access Controller',['../group__dma.html',1,'']]], + ['dma_5fadd_5fdescriptor_7',['dma_add_descriptor',['../group__dma.html#ga3dca92a07f9089896f3673699863832f',1,'dma_add_descriptor(gossamer_dma_job_t *dmaJob, void *src, void *dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel): dma.c'],['../group__dma.html#ga3dca92a07f9089896f3673699863832f',1,'dma_add_descriptor(gossamer_dma_job_t *dmaJob, void *src, void *dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel): dma.c']]], + ['dma_5fconfigure_8',['dma_configure',['../group__dma.html#gab907281d8798c56cca6da3444d93a918',1,'dma_configure(gossamer_dma_job_t *dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags): dma.c'],['../group__dma.html#gab907281d8798c56cca6da3444d93a918',1,'dma_configure(gossamer_dma_job_t *dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags): dma.c']]], + ['dma_5finit_9',['dma_init',['../group__dma.html#ga1c9e133b825bded7bf8039c43b49d2c7',1,'dma_init(void): dma.c'],['../group__dma.html#ga1c9e133b825bded7bf8039c43b49d2c7',1,'dma_init(void): dma.c']]], + ['driver_10',['Segment LCD driver',['../group__slcd.html',1,'']]] ]; diff --git a/search/all_5.js b/search/all_5.js index 67d7593..ebfedcf 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -1,11 +1,18 @@ var searchData= [ - ['fifo_5fbuffer_5ft_0',['fifo_buffer_t',['../structfifo__buffer__t.html',1,'']]], - ['firmware_1',['Flashing Firmware',['../index.html#autotoc_md4',1,'']]], - ['firmware_20framework_20for_20samd_20and_20saml_20chips_2',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['flashing_20firmware_3',['Flashing Firmware',['../index.html#autotoc_md4',1,'']]], - ['for_20samd_20and_20saml_20chips_4',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['framework_5',['Application Framework',['../index.html#autotoc_md2',1,'']]], - ['framework_20for_20samd_20and_20saml_20chips_6',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['future_20plans_7',['Current state and future plans',['../index.html#autotoc_md7',1,'']]] + ['eic_5fconfigure_5fcallback_0',['eic_configure_callback',['../group__eic.html#ga5695270545c3f5b6a24682447108e6cd',1,'eic_configure_callback(eic_cb_t callback): eic.c'],['../group__eic.html#ga5695270545c3f5b6a24682447108e6cd',1,'eic_configure_callback(eic_cb_t callback): eic.c']]], + ['eic_5fconfigure_5fpin_1',['eic_configure_pin',['../group__eic.html#ga034f0e472fc0d955b11de053a263e8cd',1,'eic_configure_pin(const uint8_t pin, eic_interrupt_trigger_t trigger): eic.c'],['../group__eic.html#ga034f0e472fc0d955b11de053a263e8cd',1,'eic_configure_pin(const uint8_t pin, eic_interrupt_trigger_t trigger): eic.c']]], + ['eic_5fdisable_2',['eic_disable',['../group__eic.html#gabaae85c8706e41bb2cc2b7aa7be956e6',1,'eic_disable(void): eic.c'],['../group__eic.html#gabaae85c8706e41bb2cc2b7aa7be956e6',1,'eic_disable(void): eic.c']]], + ['eic_5fdisable_5fevent_3',['eic_disable_event',['../group__eic.html#ga21e4b3925d449c25fe3831b167845161',1,'eic_disable_event(const uint8_t pin): eic.c'],['../group__eic.html#ga21e4b3925d449c25fe3831b167845161',1,'eic_disable_event(const uint8_t pin): eic.c']]], + ['eic_5fdisable_5finterrupt_4',['eic_disable_interrupt',['../group__eic.html#ga48015b16099d943fad32302fad6114a1',1,'eic_disable_interrupt(const uint8_t pin): eic.c'],['../group__eic.html#ga48015b16099d943fad32302fad6114a1',1,'eic_disable_interrupt(const uint8_t pin): eic.c']]], + ['eic_5fenable_5',['eic_enable',['../group__eic.html#gafd8706ad3219397c91636524d2149eb0',1,'eic_enable(void): eic.c'],['../group__eic.html#gafd8706ad3219397c91636524d2149eb0',1,'eic_enable(void): eic.c']]], + ['eic_5fenable_5fevent_6',['eic_enable_event',['../group__eic.html#gae6a140e7799fec385ff48c97f399b7cf',1,'eic_enable_event(const uint8_t pin): eic.c'],['../group__eic.html#gae6a140e7799fec385ff48c97f399b7cf',1,'eic_enable_event(const uint8_t pin): eic.c']]], + ['eic_5fenable_5finterrupt_7',['eic_enable_interrupt',['../group__eic.html#ga95932a1b8c5442120cd6caa7a5cb0733',1,'eic_enable_interrupt(const uint8_t pin): eic.c'],['../group__eic.html#ga95932a1b8c5442120cd6caa7a5cb0733',1,'eic_enable_interrupt(const uint8_t pin): eic.c']]], + ['eic_5finit_8',['eic_init',['../group__eic.html#gac66cb10fff656315b12df4248f798c41',1,'eic_init(void): eic.c'],['../group__eic.html#gac66cb10fff656315b12df4248f798c41',1,'eic_init(void): eic.c']]], + ['eic_5finterrupt_5ftrigger_5ft_9',['eic_interrupt_trigger_t',['../group__eic.html#gac1fe47482a1a2c642408f50c2db9469f',1,'eic_interrupt_trigger_t: eic.h'],['../group__eic.html#ga2dcfd365c180eb12af23e9f125089244',1,'eic_interrupt_trigger_t: eic.h']]], + ['emscripten_20support_10',['Emscripten Support',['../md__r_e_a_d_m_e.html#autotoc_md5',1,'']]], + ['event_20system_11',['Event System',['../group__evsys.html',1,'']]], + ['evsys_5fconfigure_5fchannel_12',['evsys_configure_channel',['../group__evsys.html#ga506dcdef11267257fce99f6deffc4844',1,'evsys_configure_channel(uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous): evsys.c'],['../group__evsys.html#ga506dcdef11267257fce99f6deffc4844',1,'evsys_configure_channel(uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous): evsys.c']]], + ['examples_13',['Examples',['../md__r_e_a_d_m_e.html#autotoc_md6',1,'']]], + ['external_20interrupt_20controller_14',['External Interrupt Controller',['../group__eic.html',1,'']]] ]; diff --git a/search/all_6.js b/search/all_6.js index da1e2b1..a25ab6f 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -1,26 +1,12 @@ var searchData= [ - ['get_5fcpu_5ffrequency_0',['get_cpu_frequency',['../system_8h.html#a96fa401b65736262fc29cc0537bed03e',1,'system.h']]], - ['gfx_2eh_1',['gfx.h',['../gfx_8h.html',1,'']]], - ['gfx_5fdraw_5fchar_2',['gfx_draw_char',['../gfx_8h.html#a5b59e00c08f5d1fd885e1e8047bfd6c5',1,'gfx.c']]], - ['gfx_5fdraw_5fcircle_3',['gfx_draw_circle',['../gfx_8h.html#a0e7d434468150b90226c04f93ca04eee',1,'gfx.c']]], - ['gfx_5fdraw_5fhline_4',['gfx_draw_hline',['../gfx_8h.html#a86c12e8e89f71a28150038a94c4efe10',1,'gfx.c']]], - ['gfx_5fdraw_5fline_5',['gfx_draw_line',['../gfx_8h.html#af2b3e7a099be3adda0ac2eb3306ef5cb',1,'gfx.c']]], - ['gfx_5fdraw_5fpixel_6',['gfx_draw_pixel',['../gfx_8h.html#aae93d867f4a4ec90d4151576297ccf97',1,'gfx.c']]], - ['gfx_5fdraw_5frect_7',['gfx_draw_rect',['../gfx_8h.html#a30c7d1c5d2afa278e4e5f6a25b6df272',1,'gfx.c']]], - ['gfx_5fdraw_5fround_5frect_8',['gfx_draw_round_rect',['../gfx_8h.html#af67b0895515548e42c3de3d4721799b5',1,'gfx.c']]], - ['gfx_5fdraw_5fsmall_5fchar_9',['gfx_draw_small_char',['../gfx_8h.html#a0b0d8131eb33bece47553bf26f2b2810',1,'gfx.c']]], - ['gfx_5fdraw_5fstring_10',['gfx_draw_string',['../gfx_8h.html#a81814f310e5d15ec93f1af0e16f56ca1',1,'gfx.c']]], - ['gfx_5fdraw_5ftriangle_11',['gfx_draw_triangle',['../gfx_8h.html#a0aad76c5099d8454ad4da704c6e49bff',1,'gfx.c']]], - ['gfx_5fdraw_5fvline_12',['gfx_draw_vline',['../gfx_8h.html#a05e0868a435653105ef96a17ed36315c',1,'gfx.c']]], - ['gfx_5ffill_5fcircle_13',['gfx_fill_circle',['../gfx_8h.html#ac95c5a57de69ceba0695baf0a8716ab2',1,'gfx.c']]], - ['gfx_5ffill_5frect_14',['gfx_fill_rect',['../gfx_8h.html#a5602f4b399e2e44a1e9779feb8a8f4a5',1,'gfx.c']]], - ['gfx_5ffill_5fround_5frect_15',['gfx_fill_round_rect',['../gfx_8h.html#ac92c473dfbfedda8a7f26c86490d3047',1,'gfx.c']]], - ['gfx_5ffill_5fscreen_16',['gfx_fill_screen',['../gfx_8h.html#acca94d61e41831484577a489e25b5ad1',1,'gfx.c']]], - ['gfx_5ffill_5ftriangle_17',['gfx_fill_triangle',['../gfx_8h.html#a968191da41b8719840fff7bfb94790c4',1,'gfx.c']]], - ['gfx_5finit_18',['gfx_init',['../gfx_8h.html#a8c74f352515fa78338978d379f1b4965',1,'gfx.c']]], - ['gfx_5fset_5frotation_19',['gfx_set_rotation',['../gfx_8h.html#a05b894d2e0ea6e3c6edd8a88df0f9f14',1,'gfx.c']]], - ['gossamer_20',['gossamer',['../index.html',1,'']]], - ['gossamer_3a_20a_20very_20lightweight_20firmware_20framework_20for_20samd_20and_20saml_20chips_21',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['gossamer_5fdma_5fjob_5ft_22',['gossamer_dma_job_t',['../structgossamer__dma__job__t.html',1,'']]] + ['fifo_5fbuffer_5ft_0',['fifo_buffer_t',['../structfifo__buffer__t.html',1,'']]], + ['firmware_1',['Flashing Firmware',['../md__r_e_a_d_m_e.html#autotoc_md4',1,'']]], + ['firmware_20framework_20for_20samd_20and_20saml_20chips_2',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['flashing_20firmware_3',['Flashing Firmware',['../md__r_e_a_d_m_e.html#autotoc_md4',1,'']]], + ['for_20control_20applications_4',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]], + ['for_20samd_20and_20saml_20chips_5',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['framework_6',['framework',['../md__r_e_a_d_m_e.html#autotoc_md2',1,'Application Framework'],['../group__app.html',1,'Gossamer application framework']]], + ['framework_20for_20samd_20and_20saml_20chips_7',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['future_20plans_8',['Current state and future plans',['../md__r_e_a_d_m_e.html#autotoc_md7',1,'']]] ]; diff --git a/search/all_7.js b/search/all_7.js index 334499d..f277313 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -1,4 +1,27 @@ var searchData= [ - ['hal_5fgpio_2eh_0',['hal_gpio.h',['../hal__gpio_8h.html',1,'']]] + ['get_5fcpu_5ffrequency_0',['get_cpu_frequency',['../group__system.html#ga96fa401b65736262fc29cc0537bed03e',1,'system.h']]], + ['gfx_2eh_1',['gfx.h',['../gfx_8h.html',1,'']]], + ['gfx_5fdraw_5fchar_2',['gfx_draw_char',['../gfx_8h.html#a5b59e00c08f5d1fd885e1e8047bfd6c5',1,'gfx.c']]], + ['gfx_5fdraw_5fcircle_3',['gfx_draw_circle',['../gfx_8h.html#a0e7d434468150b90226c04f93ca04eee',1,'gfx.c']]], + ['gfx_5fdraw_5fhline_4',['gfx_draw_hline',['../gfx_8h.html#a86c12e8e89f71a28150038a94c4efe10',1,'gfx.c']]], + ['gfx_5fdraw_5fline_5',['gfx_draw_line',['../gfx_8h.html#af2b3e7a099be3adda0ac2eb3306ef5cb',1,'gfx.c']]], + ['gfx_5fdraw_5fpixel_6',['gfx_draw_pixel',['../gfx_8h.html#aae93d867f4a4ec90d4151576297ccf97',1,'gfx.c']]], + ['gfx_5fdraw_5frect_7',['gfx_draw_rect',['../gfx_8h.html#a30c7d1c5d2afa278e4e5f6a25b6df272',1,'gfx.c']]], + ['gfx_5fdraw_5fround_5frect_8',['gfx_draw_round_rect',['../gfx_8h.html#af67b0895515548e42c3de3d4721799b5',1,'gfx.c']]], + ['gfx_5fdraw_5fsmall_5fchar_9',['gfx_draw_small_char',['../gfx_8h.html#a0b0d8131eb33bece47553bf26f2b2810',1,'gfx.c']]], + ['gfx_5fdraw_5fstring_10',['gfx_draw_string',['../gfx_8h.html#a81814f310e5d15ec93f1af0e16f56ca1',1,'gfx.c']]], + ['gfx_5fdraw_5ftriangle_11',['gfx_draw_triangle',['../gfx_8h.html#a0aad76c5099d8454ad4da704c6e49bff',1,'gfx.c']]], + ['gfx_5fdraw_5fvline_12',['gfx_draw_vline',['../gfx_8h.html#a05e0868a435653105ef96a17ed36315c',1,'gfx.c']]], + ['gfx_5ffill_5fcircle_13',['gfx_fill_circle',['../gfx_8h.html#ac95c5a57de69ceba0695baf0a8716ab2',1,'gfx.c']]], + ['gfx_5ffill_5frect_14',['gfx_fill_rect',['../gfx_8h.html#a5602f4b399e2e44a1e9779feb8a8f4a5',1,'gfx.c']]], + ['gfx_5ffill_5fround_5frect_15',['gfx_fill_round_rect',['../gfx_8h.html#ac92c473dfbfedda8a7f26c86490d3047',1,'gfx.c']]], + ['gfx_5ffill_5fscreen_16',['gfx_fill_screen',['../gfx_8h.html#acca94d61e41831484577a489e25b5ad1',1,'gfx.c']]], + ['gfx_5ffill_5ftriangle_17',['gfx_fill_triangle',['../gfx_8h.html#a968191da41b8719840fff7bfb94790c4',1,'gfx.c']]], + ['gfx_5finit_18',['gfx_init',['../gfx_8h.html#a8c74f352515fa78338978d379f1b4965',1,'gfx.c']]], + ['gfx_5fset_5frotation_19',['gfx_set_rotation',['../gfx_8h.html#a05b894d2e0ea6e3c6edd8a88df0f9f14',1,'gfx.c']]], + ['gossamer_20',['gossamer',['../index.html',1,'']]], + ['gossamer_20application_20framework_21',['Gossamer application framework',['../group__app.html',1,'']]], + ['gossamer_3a_20a_20very_20lightweight_20firmware_20framework_20for_20samd_20and_20saml_20chips_22',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['gossamer_5fdma_5fjob_5ft_23',['gossamer_dma_job_t',['../structgossamer__dma__job__t.html',1,'']]] ]; diff --git a/search/all_8.js b/search/all_8.js index a431396..8c1d959 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -1,16 +1,21 @@ var searchData= [ - ['i2c_2eh_0',['i2c.h',['../i2c_8h.html',1,'']]], - ['i2c_5fdisable_1',['i2c_disable',['../i2c_8h.html#abe70f8fe4c72329b89ec526c749f50d7',1,'i2c.h']]], - ['i2c_5fdisable_5finstance_2',['i2c_disable_instance',['../i2c_8h.html#a9cc8d8299e418b944243a96fa8adc996',1,'i2c.c']]], - ['i2c_5fenable_3',['i2c_enable',['../i2c_8h.html#a5a1923e2271df541e858cb4e05d7b895',1,'i2c.h']]], - ['i2c_5fenable_5finstance_4',['i2c_enable_instance',['../i2c_8h.html#a88da4919a13ca41408ae8eafdab3855f',1,'i2c.c']]], - ['i2c_5finit_5',['i2c_init',['../i2c_8h.html#a5730d9445429351b9f750084c5cb5aae',1,'i2c.h']]], - ['i2c_5finit_5finstance_6',['i2c_init_instance',['../i2c_8h.html#ae0163192e71ff834062fcb7591b01e29',1,'i2c.c']]], - ['i2c_5fread_7',['i2c_read',['../i2c_8h.html#ae5074c1f6733c42bf7ccbd771ad2496c',1,'i2c.h']]], - ['i2c_5fread_5finstance_8',['i2c_read_instance',['../i2c_8h.html#a64cffaf51a6050fb5e58cb35a52e5179',1,'i2c.c']]], - ['i2c_5fwrite_9',['i2c_write',['../i2c_8h.html#a5e6b5b5c02987f6b23765799809d9b25',1,'i2c.h']]], - ['i2c_5fwrite_5finstance_10',['i2c_write_instance',['../i2c_8h.html#a2f2ad75c678b2e0ebafd9c9686d38674',1,'i2c.c']]], - ['i2s_2eh_11',['i2s.h',['../i2s_8h.html',1,'']]], - ['interface_12',['Peripheral Interface',['../index.html#autotoc_md3',1,'']]] + ['i2c_5fdisable_0',['i2c_disable',['../group__i2c.html#gabe70f8fe4c72329b89ec526c749f50d7',1,'i2c.h']]], + ['i2c_5fdisable_5finstance_1',['i2c_disable_instance',['../group__i2c.html#ga9cc8d8299e418b944243a96fa8adc996',1,'i2c_disable_instance(uint8_t sercom): i2c.c'],['../group__i2c.html#ga9cc8d8299e418b944243a96fa8adc996',1,'i2c_disable_instance(uint8_t sercom): i2c.c']]], + ['i2c_5fenable_2',['i2c_enable',['../group__i2c.html#ga5a1923e2271df541e858cb4e05d7b895',1,'i2c.h']]], + ['i2c_5fenable_5finstance_3',['i2c_enable_instance',['../group__i2c.html#ga88da4919a13ca41408ae8eafdab3855f',1,'i2c_enable_instance(uint8_t sercom): i2c.c'],['../group__i2c.html#ga88da4919a13ca41408ae8eafdab3855f',1,'i2c_enable_instance(uint8_t sercom): i2c.c']]], + ['i2c_5finit_4',['i2c_init',['../group__i2c.html#ga5730d9445429351b9f750084c5cb5aae',1,'i2c.h']]], + ['i2c_5finit_5finstance_5',['i2c_init_instance',['../group__i2c.html#gae0163192e71ff834062fcb7591b01e29',1,'i2c_init_instance(uint8_t sercom, uint32_t baud): i2c.c'],['../group__i2c.html#gae0163192e71ff834062fcb7591b01e29',1,'i2c_init_instance(uint8_t sercom, uint32_t baud): i2c.c']]], + ['i2c_5fread_6',['i2c_read',['../group__i2c.html#gae5074c1f6733c42bf7ccbd771ad2496c',1,'i2c.h']]], + ['i2c_5fread_5finstance_7',['i2c_read_instance',['../group__i2c.html#ga64cffaf51a6050fb5e58cb35a52e5179',1,'i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len): i2c.c'],['../group__i2c.html#ga64cffaf51a6050fb5e58cb35a52e5179',1,'i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len): i2c.c']]], + ['i2c_5fwrite_8',['i2c_write',['../group__i2c.html#ga5e6b5b5c02987f6b23765799809d9b25',1,'i2c.h']]], + ['i2c_5fwrite_5finstance_9',['i2c_write_instance',['../group__i2c.html#ga2f2ad75c678b2e0ebafd9c9686d38674',1,'i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len): i2c.c'],['../group__i2c.html#ga2f2ad75c678b2e0ebafd9c9686d38674',1,'i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len): i2c.c']]], + ['i2s_5finit_10',['i2s_init',['../group__i2s.html#gaff2b590eefc8ca2aa72f83563eeedd76',1,'i2s.h']]], + ['ic_20communications_20peripheral_11',['Inter-IC Communications Peripheral',['../group__i2c.html',1,'']]], + ['ic_20sound_20interface_12',['Inter-IC Sound interface',['../group__i2s.html',1,'']]], + ['inter_20ic_20communications_20peripheral_13',['Inter-IC Communications Peripheral',['../group__i2c.html',1,'']]], + ['inter_20ic_20sound_20interface_14',['Inter-IC Sound interface',['../group__i2s.html',1,'']]], + ['interface_15',['interface',['../group__i2s.html',1,'Inter-IC Sound interface'],['../md__r_e_a_d_m_e.html#autotoc_md3',1,'Peripheral Interface']]], + ['internals_16',['System Internals',['../group__system.html',1,'']]], + ['interrupt_20controller_17',['External Interrupt Controller',['../group__eic.html',1,'']]] ]; diff --git a/search/all_9.js b/search/all_9.js index 8d45526..4a405e1 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -1,5 +1,5 @@ var searchData= [ - ['lightweight_20firmware_20framework_20for_20samd_20and_20saml_20chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['list_1',['Todo List',['../todo.html',1,'']]] + ['lcd_20driver_0',['Segment LCD driver',['../group__slcd.html',1,'']]], + ['lightweight_20firmware_20framework_20for_20samd_20and_20saml_20chips_1',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]] ]; diff --git a/search/all_a.js b/search/all_a.js index b391c88..35eb7f4 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -1,13 +1,4 @@ var searchData= [ - ['opamp_2eh_0',['opamp.h',['../opamp_8h.html',1,'']]], - ['opamp_5fdisable_1',['opamp_disable',['../opamp_8h.html#a0dcff33b01f135e8608d0bb90a758e8a',1,'opamp.c']]], - ['opamp_5fenable_2',['opamp_enable',['../opamp_8h.html#a92d4aa1c45921733f297129e39161fb4',1,'opamp.c']]], - ['opamp_5finit_3',['opamp_init',['../opamp_8h.html#a1f92b0993e68ddbf650bd02873de8fcd',1,'opamp.c']]], - ['opamp_5fset_5fanalog_5fconnection_4',['opamp_set_analog_connection',['../opamp_8h.html#aa41c70604826026b22c95f1b0448c642',1,'opamp.c']]], - ['opamp_5fset_5fmuxneg_5',['opamp_set_muxneg',['../opamp_8h.html#aae5d775bcd2c346190b9b3c321c528bc',1,'opamp.c']]], - ['opamp_5fset_5fmuxpos_6',['opamp_set_muxpos',['../opamp_8h.html#acdac2a6f48d8d0eca22f3618a7c2bd17',1,'opamp.c']]], - ['opamp_5fset_5fpotmux_7',['opamp_set_potmux',['../opamp_8h.html#a03227184722fe89e01e8f1fa00df63e3',1,'opamp.c']]], - ['opamp_5fset_5fres1mux_8',['opamp_set_res1mux',['../opamp_8h.html#abb5b017b5571c2bbc53330f54ba79971',1,'opamp.c']]], - ['opamp_5fset_5fres2mux_9',['opamp_set_res2mux',['../opamp_8h.html#ab9f7e0d2fbaf34171563d8c1ceb5f3b8',1,'opamp.c']]] + ['memory_20access_20controller_0',['Direct Memory Access Controller',['../group__dma.html',1,'']]] ]; diff --git a/search/all_b.js b/search/all_b.js index f3fb2bc..cc7788b 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -1,6 +1,13 @@ var searchData= [ - ['peripheral_20interface_0',['Peripheral Interface',['../index.html#autotoc_md3',1,'']]], - ['plans_1',['Current state and future plans',['../index.html#autotoc_md7',1,'']]], - ['ptc_2eh_2',['ptc.h',['../ptc_8h.html',1,'']]] + ['opamp_5fdisable_0',['opamp_disable',['../group__opamp.html#ga0dcff33b01f135e8608d0bb90a758e8a',1,'opamp_disable(uint16_t instance): opamp.c'],['../group__opamp.html#ga0dcff33b01f135e8608d0bb90a758e8a',1,'opamp_disable(uint16_t instance): opamp.c']]], + ['opamp_5fenable_1',['opamp_enable',['../group__opamp.html#ga92d4aa1c45921733f297129e39161fb4',1,'opamp_enable(uint16_t instance): opamp.c'],['../group__opamp.html#ga92d4aa1c45921733f297129e39161fb4',1,'opamp_enable(uint16_t instance): opamp.c']]], + ['opamp_5finit_2',['opamp_init',['../group__opamp.html#ga1f92b0993e68ddbf650bd02873de8fcd',1,'opamp_init(void): opamp.c'],['../group__opamp.html#ga1f92b0993e68ddbf650bd02873de8fcd',1,'opamp_init(void): opamp.c']]], + ['opamp_5fset_5fanalog_5fconnection_3',['opamp_set_analog_connection',['../group__opamp.html#gaa41c70604826026b22c95f1b0448c642',1,'opamp_set_analog_connection(uint16_t instance, bool connected): opamp.c'],['../group__opamp.html#gaa41c70604826026b22c95f1b0448c642',1,'opamp_set_analog_connection(uint16_t instance, bool connected): opamp.c']]], + ['opamp_5fset_5fmuxneg_4',['opamp_set_muxneg',['../group__opamp.html#gaae5d775bcd2c346190b9b3c321c528bc',1,'opamp_set_muxneg(uint16_t instance, uint8_t muxneg): opamp.c'],['../group__opamp.html#gaae5d775bcd2c346190b9b3c321c528bc',1,'opamp_set_muxneg(uint16_t instance, uint8_t muxneg): opamp.c']]], + ['opamp_5fset_5fmuxpos_5',['opamp_set_muxpos',['../group__opamp.html#gacdac2a6f48d8d0eca22f3618a7c2bd17',1,'opamp_set_muxpos(uint16_t instance, uint8_t muxpos): opamp.c'],['../group__opamp.html#gacdac2a6f48d8d0eca22f3618a7c2bd17',1,'opamp_set_muxpos(uint16_t instance, uint8_t muxpos): opamp.c']]], + ['opamp_5fset_5fpotmux_6',['opamp_set_potmux',['../group__opamp.html#ga03227184722fe89e01e8f1fa00df63e3',1,'opamp_set_potmux(uint16_t instance, uint8_t potmux): opamp.c'],['../group__opamp.html#ga03227184722fe89e01e8f1fa00df63e3',1,'opamp_set_potmux(uint16_t instance, uint8_t potmux): opamp.c']]], + ['opamp_5fset_5fres1mux_7',['opamp_set_res1mux',['../group__opamp.html#gabb5b017b5571c2bbc53330f54ba79971',1,'opamp_set_res1mux(uint16_t instance, uint8_t res1mux): opamp.c'],['../group__opamp.html#gabb5b017b5571c2bbc53330f54ba79971',1,'opamp_set_res1mux(uint16_t instance, uint8_t res1mux): opamp.c']]], + ['opamp_5fset_5fres2mux_8',['opamp_set_res2mux',['../group__opamp.html#gab9f7e0d2fbaf34171563d8c1ceb5f3b8',1,'opamp_set_res2mux(uint16_t instance, uint8_t res2mux): opamp.c'],['../group__opamp.html#gab9f7e0d2fbaf34171563d8c1ceb5f3b8',1,'opamp_set_res2mux(uint16_t instance, uint8_t res2mux): opamp.c']]], + ['operational_20amplifier_9',['Operational Amplifier',['../group__opamp.html',1,'']]] ]; diff --git a/search/all_c.js b/search/all_c.js index 9ba6c6d..be08e7b 100644 --- a/search/all_c.js +++ b/search/all_c.js @@ -1,14 +1,10 @@ var searchData= [ - ['readme_0',['README',['../md__r_e_a_d_m_e.html',1,'']]], - ['rtc_2eh_1',['rtc.h',['../rtc_8h.html',1,'']]], - ['rtc_5fconfigure_5fcallback_2',['rtc_configure_callback',['../rtc_8h.html#a8dd6108752ed8c8e5dad649d650dc1d5',1,'rtc.c']]], - ['rtc_5fdate_5ftime_5ft_3',['rtc_date_time_t',['../unionrtc__date__time__t.html',1,'']]], - ['rtc_5fdisable_5falarm_5finterrupt_4',['rtc_disable_alarm_interrupt',['../rtc_8h.html#a0b927833b5d5d87ec161a8c9cb14d633',1,'rtc.c']]], - ['rtc_5fenable_5',['rtc_enable',['../rtc_8h.html#abec68bd2863d22f5a8e12ab89f8134f4',1,'rtc.c']]], - ['rtc_5fenable_5falarm_5finterrupt_6',['rtc_enable_alarm_interrupt',['../rtc_8h.html#a7ed60d3c6eddb662a798903454a60f5c',1,'rtc.c']]], - ['rtc_5fget_5fdate_5ftime_7',['rtc_get_date_time',['../rtc_8h.html#a728694478350f90fa205569ee72a4d55',1,'rtc.c']]], - ['rtc_5finit_8',['rtc_init',['../rtc_8h.html#acf9024748b942a7ae375cf75951afa9c',1,'rtc.c']]], - ['rtc_5fis_5fenabled_9',['rtc_is_enabled',['../rtc_8h.html#a72309e05f8aa147cfdd0eb6ac2037889',1,'rtc.c']]], - ['rtc_5fset_5fdate_5ftime_10',['rtc_set_date_time',['../rtc_8h.html#a16c55e20ebca1f6501626e39a38c6425',1,'rtc.c']]] + ['peripheral_0',['peripheral',['../group__i2c.html',1,'Inter-IC Communications Peripheral'],['../group__spi.html',1,'SPI Peripheral'],['../group__uart.html',1,'UART Peripheral']]], + ['peripheral_20interface_1',['Peripheral Interface',['../md__r_e_a_d_m_e.html#autotoc_md3',1,'']]], + ['peripheral_20touch_20controller_2',['Peripheral Touch Controller',['../group__ptc.html',1,'']]], + ['plans_3',['Current state and future plans',['../md__r_e_a_d_m_e.html#autotoc_md7',1,'']]], + ['ptc_5fenable_4',['ptc_enable',['../group__ptc.html#gafbc1fa996f33108befc84cedd94b68b2',1,'ptc_enable(uint8_t channel): ptc.c'],['../group__ptc.html#gafbc1fa996f33108befc84cedd94b68b2',1,'ptc_enable(uint8_t channel): ptc.c']]], + ['ptc_5fget_5fvalue_5',['ptc_get_value',['../group__ptc.html#gaf86d00f3378b8d43718387b2af099295',1,'ptc_get_value(uint8_t channel): ptc.c'],['../group__ptc.html#gaf86d00f3378b8d43718387b2af099295',1,'ptc_get_value(uint8_t channel): ptc.c']]], + ['ptc_5finit_6',['ptc_init',['../group__ptc.html#gabede495b29954eccc7f30f4841c1d847',1,'ptc_init(void): ptc.c'],['../group__ptc.html#gabede495b29954eccc7f30f4841c1d847',1,'ptc_init(void): ptc.c']]] ]; diff --git a/search/all_d.js b/search/all_d.js index fec4ada..65e7482 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -1,51 +1,14 @@ var searchData= [ - ['samd_20and_20saml_20chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['saml_20chips_1',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../index.html#autotoc_md0',1,'']]], - ['sercom_2eh_2',['sercom.h',['../sercom_8h.html',1,'']]], - ['sercom_5finstance_5fdetails_5ft_3',['sercom_instance_details_t',['../structsercom__instance__details__t.html',1,'']]], - ['set_5fcpu_5ffrequency_4',['set_cpu_frequency',['../system_8h.html#a4f33e5a16dba970fa7064ea27287fcba',1,'system.h']]], - ['sh1107_2eh_5',['sh1107.h',['../sh1107_8h.html',1,'']]], - ['sh1107_5fbegin_6',['sh1107_begin',['../sh1107_8h.html#aed0009c4be3de7d50eb4c7b195460c7c',1,'sh1107.c']]], - ['sh1107_5fupdate_7',['sh1107_update',['../sh1107_8h.html#af07fc90517a99581d8fb86c73ff40270',1,'sh1107.c']]], - ['sh110x_5fchargepump_8',['SH110X_CHARGEPUMP',['../sh1107_8h.html#abf9641d62ae268b062acfd5cfb12d8a0',1,'sh1107.h']]], - ['sh110x_5fcolumnaddr_9',['SH110X_COLUMNADDR',['../sh1107_8h.html#ac1c1503e1328e829a6dd7f262a308768',1,'sh1107.h']]], - ['sh110x_5fcomscandec_10',['SH110X_COMSCANDEC',['../sh1107_8h.html#a91b8adfd441c2946e0f1c889bd4d4906',1,'sh1107.h']]], - ['sh110x_5fcomscaninc_11',['SH110X_COMSCANINC',['../sh1107_8h.html#ae9712e9ffac1eca6bb5ceb04ca62bf4a',1,'sh1107.h']]], - ['sh110x_5fdcdc_12',['SH110X_DCDC',['../sh1107_8h.html#a94a3dbbec366cfefca9abfae41c378d1',1,'sh1107.h']]], - ['sh110x_5fdisplayallon_13',['SH110X_DISPLAYALLON',['../sh1107_8h.html#ab9b2e7e0d6543b43b019a2d06ed60fa6',1,'sh1107.h']]], - ['sh110x_5fdisplayallon_5fresume_14',['SH110X_DISPLAYALLON_RESUME',['../sh1107_8h.html#aea006f310625d63558e37cacc88195e1',1,'sh1107.h']]], - ['sh110x_5fdisplayoff_15',['SH110X_DISPLAYOFF',['../sh1107_8h.html#ae0226a22287f65e5b782602d0dc4b07b',1,'sh1107.h']]], - ['sh110x_5fdisplayon_16',['SH110X_DISPLAYON',['../sh1107_8h.html#ae584f468fde42d6ea1d863ab6a214930',1,'sh1107.h']]], - ['sh110x_5finvertdisplay_17',['SH110X_INVERTDISPLAY',['../sh1107_8h.html#ae8816edf9085f2716b5e8481216761cc',1,'sh1107.h']]], - ['sh110x_5fmemorymode_18',['SH110X_MEMORYMODE',['../sh1107_8h.html#a1e3efd44dcffb0b3b8b2381c08ca7071',1,'sh1107.h']]], - ['sh110x_5fnormaldisplay_19',['SH110X_NORMALDISPLAY',['../sh1107_8h.html#a9d3c6f09d004499eca976f2eef35568d',1,'sh1107.h']]], - ['sh110x_5fpageaddr_20',['SH110X_PAGEADDR',['../sh1107_8h.html#a16b68111d8c5b3f2430e000e8db6fc58',1,'sh1107.h']]], - ['sh110x_5fsegremap_21',['SH110X_SEGREMAP',['../sh1107_8h.html#a451f6b37946e3a16ea831e5ca1cadf0a',1,'sh1107.h']]], - ['sh110x_5fsetcompins_22',['SH110X_SETCOMPINS',['../sh1107_8h.html#a1dcd09ef94455a97fa03421d4c0bfcd7',1,'sh1107.h']]], - ['sh110x_5fsetcontrast_23',['SH110X_SETCONTRAST',['../sh1107_8h.html#ad96570bd3f4132f9ca5596f2abfe3c83',1,'sh1107.h']]], - ['sh110x_5fsetdisplayclockdiv_24',['SH110X_SETDISPLAYCLOCKDIV',['../sh1107_8h.html#adf4314c533554230e7f13da80e0beea0',1,'sh1107.h']]], - ['sh110x_5fsetdisplayoffset_25',['SH110X_SETDISPLAYOFFSET',['../sh1107_8h.html#a5875f7bc8903d81ca4f79c2afb6874a8',1,'sh1107.h']]], - ['sh110x_5fsetdispstartline_26',['SH110X_SETDISPSTARTLINE',['../sh1107_8h.html#a8a29779d04227160819959faecf7460e',1,'sh1107.h']]], - ['sh110x_5fsethighcolumn_27',['SH110X_SETHIGHCOLUMN',['../sh1107_8h.html#a16ffc48fb27a08ddaec274dedbe6d60f',1,'sh1107.h']]], - ['sh110x_5fsetlowcolumn_28',['SH110X_SETLOWCOLUMN',['../sh1107_8h.html#a7314bdf59a3a4331fdfbe756eeaf468e',1,'sh1107.h']]], - ['sh110x_5fsetmultiplex_29',['SH110X_SETMULTIPLEX',['../sh1107_8h.html#ae9157f78ad85db7ae436d5b73c496bb7',1,'sh1107.h']]], - ['sh110x_5fsetpageaddr_30',['SH110X_SETPAGEADDR',['../sh1107_8h.html#aa8aedcc0dbae557ae03b382bb742f7ee',1,'sh1107.h']]], - ['sh110x_5fsetprecharge_31',['SH110X_SETPRECHARGE',['../sh1107_8h.html#a5f554794057673d14c6d43fbf43cc93c',1,'sh1107.h']]], - ['sh110x_5fsetstartline_32',['SH110X_SETSTARTLINE',['../sh1107_8h.html#a8224628684ae3ecf84049935b2531118',1,'sh1107.h']]], - ['sh110x_5fsetvcomdetect_33',['SH110X_SETVCOMDETECT',['../sh1107_8h.html#a790498436deaf2d54f8db57419bf5f2a',1,'sh1107.h']]], - ['slcd_2eh_34',['slcd.h',['../slcd_8h.html',1,'']]], - ['spi_2eh_35',['spi.h',['../spi_8h.html',1,'']]], - ['spi_5fdisable_36',['spi_disable',['../spi_8h.html#aa8d2d6d1632faf9abbe03c3ed90d54d4',1,'spi.h']]], - ['spi_5fdisable_5finstance_37',['spi_disable_instance',['../spi_8h.html#a3856b233dc7584708ab420d41c4816fe',1,'spi.c']]], - ['spi_5fenable_38',['spi_enable',['../spi_8h.html#a72cf41d2f19954fefd27f681d6b39532',1,'spi.h']]], - ['spi_5fenable_5finstance_39',['spi_enable_instance',['../spi_8h.html#a8f1915874847b4564ab22039f2b8762f',1,'spi.c']]], - ['spi_5finit_40',['spi_init',['../spi_8h.html#a48ef10ade34f68b96d36dee03ebc4415',1,'spi.h']]], - ['spi_5finit_5finstance_41',['spi_init_instance',['../spi_8h.html#aee8eaa5f597d774c4fc4a6f7d6d08305',1,'spi.c']]], - ['spi_5ftransfer_42',['spi_transfer',['../spi_8h.html#a50084189a01c481aebe4e4d1e1968910',1,'spi.h']]], - ['spi_5ftransfer_5finstance_43',['spi_transfer_instance',['../spi_8h.html#a03d51191e1fb189fcddf1087999d58a2',1,'spi.c']]], - ['state_20and_20future_20plans_44',['Current state and future plans',['../index.html#autotoc_md7',1,'']]], - ['support_45',['Emscripten Support',['../index.html#autotoc_md5',1,'']]], - ['sys_5finit_46',['sys_init',['../system_8h.html#af411a8bc6b7ed4b0af9114e10c959448',1,'system.h']]], - ['system_2eh_47',['system.h',['../system_8h.html',1,'']]] + ['readme_0',['README',['../md__r_e_a_d_m_e.html',1,'']]], + ['real_20time_20clock_1',['Real-Time Clock',['../group__rtc.html',1,'']]], + ['rtc_5fconfigure_5fcallback_2',['rtc_configure_callback',['../group__rtc.html#ga8dd6108752ed8c8e5dad649d650dc1d5',1,'rtc_configure_callback(rtc_cb_t callback): rtc.c'],['../group__rtc.html#ga8dd6108752ed8c8e5dad649d650dc1d5',1,'rtc_configure_callback(rtc_cb_t callback): rtc.c']]], + ['rtc_5fdate_5ftime_5ft_3',['rtc_date_time_t',['../unionrtc__date__time__t.html',1,'']]], + ['rtc_5fdisable_5falarm_5finterrupt_4',['rtc_disable_alarm_interrupt',['../group__rtc.html#ga0b927833b5d5d87ec161a8c9cb14d633',1,'rtc_disable_alarm_interrupt(void): rtc.c'],['../group__rtc.html#ga0b927833b5d5d87ec161a8c9cb14d633',1,'rtc_disable_alarm_interrupt(void): rtc.c']]], + ['rtc_5fenable_5',['rtc_enable',['../group__rtc.html#gabec68bd2863d22f5a8e12ab89f8134f4',1,'rtc_enable(void): rtc.c'],['../group__rtc.html#gabec68bd2863d22f5a8e12ab89f8134f4',1,'rtc_enable(void): rtc.c']]], + ['rtc_5fenable_5falarm_5finterrupt_6',['rtc_enable_alarm_interrupt',['../group__rtc.html#ga7ed60d3c6eddb662a798903454a60f5c',1,'rtc_enable_alarm_interrupt(rtc_date_time_t alarm_time, rtc_alarm_match_t mask): rtc.c'],['../group__rtc.html#ga7ed60d3c6eddb662a798903454a60f5c',1,'rtc_enable_alarm_interrupt(rtc_date_time_t alarm_time, rtc_alarm_match_t mask): rtc.c']]], + ['rtc_5fget_5fdate_5ftime_7',['rtc_get_date_time',['../group__rtc.html#ga728694478350f90fa205569ee72a4d55',1,'rtc_get_date_time(void): rtc.c'],['../group__rtc.html#ga728694478350f90fa205569ee72a4d55',1,'rtc_get_date_time(void): rtc.c']]], + ['rtc_5finit_8',['rtc_init',['../group__rtc.html#gacf9024748b942a7ae375cf75951afa9c',1,'rtc_init(void): rtc.c'],['../group__rtc.html#gacf9024748b942a7ae375cf75951afa9c',1,'rtc_init(void): rtc.c']]], + ['rtc_5fis_5fenabled_9',['rtc_is_enabled',['../group__rtc.html#ga72309e05f8aa147cfdd0eb6ac2037889',1,'rtc_is_enabled(void): rtc.c'],['../group__rtc.html#ga72309e05f8aa147cfdd0eb6ac2037889',1,'rtc_is_enabled(void): rtc.c']]], + ['rtc_5fset_5fdate_5ftime_10',['rtc_set_date_time',['../group__rtc.html#ga16c55e20ebca1f6501626e39a38c6425',1,'rtc_set_date_time(rtc_date_time_t date_time): rtc.c'],['../group__rtc.html#ga16c55e20ebca1f6501626e39a38c6425',1,'rtc_set_date_time(rtc_date_time_t date_time): rtc.c']]] ]; diff --git a/search/all_e.js b/search/all_e.js index ba77692..57b0936 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -1,49 +1,66 @@ var searchData= [ - ['tc_2eh_0',['tc.h',['../tc_8h.html',1,'']]], - ['tc_5fcount16_5fget_5fcount_1',['tc_count16_get_count',['../tc_8h.html#a2e534df47672eea4460487ab3fe1e123',1,'tc.c']]], - ['tc_5fcount16_5fset_5fcc_2',['tc_count16_set_cc',['../tc_8h.html#a30b584892c4a1cfce9ddc70933776e7e',1,'tc.c']]], - ['tc_5fcount16_5fset_5fcount_3',['tc_count16_set_count',['../tc_8h.html#a2b52ab8a84db926117b40c7c6d6447d6',1,'tc.c']]], - ['tc_5fcount32_5fget_5fcount_4',['tc_count32_get_count',['../tc_8h.html#aa5879a623b3133654d474decb14b61f8',1,'tc.c']]], - ['tc_5fcount32_5fset_5fcc_5',['tc_count32_set_cc',['../tc_8h.html#a5078d0682876c8bcabbf8da7944865e8',1,'tc.c']]], - ['tc_5fcount32_5fset_5fcount_6',['tc_count32_set_count',['../tc_8h.html#a4136a7369f7b79b4a1d29575c1f1f9d8',1,'tc.c']]], - ['tc_5fcount8_5fget_5fcount_7',['tc_count8_get_count',['../tc_8h.html#a0350dc913a38a4e3b27b441510a614ba',1,'tc.c']]], - ['tc_5fcount8_5fget_5fperiod_8',['tc_count8_get_period',['../tc_8h.html#a993860f6b38c672f9ca6ae1b60452282',1,'tc.c']]], - ['tc_5fcount8_5fset_5fcc_9',['tc_count8_set_cc',['../tc_8h.html#a8862d572676201371406b19746198c45',1,'tc.c']]], - ['tc_5fcount8_5fset_5fcount_10',['tc_count8_set_count',['../tc_8h.html#a363974408ab3135aaf6529cadfd5195b',1,'tc.c']]], - ['tc_5fcount8_5fset_5fperiod_11',['tc_count8_set_period',['../tc_8h.html#ab18ace8a5dd07d75cb9e6957d9e2658c',1,'tc.c']]], - ['tc_5fdisable_12',['tc_disable',['../tc_8h.html#af2ed5cb964a3f29663b89bfc2a661caf',1,'tc.c']]], - ['tc_5fenable_13',['tc_enable',['../tc_8h.html#a2715d5a6f20298805eefa13a8a7a1b99',1,'tc.c']]], - ['tc_5fevent_5faction_5fppw_14',['TC_EVENT_ACTION_PPW',['../tc_8h.html#ae83a15325ed7aaf529abae8eb9edb996a4957024d607401030b128f9b775edb7d',1,'tc.h']]], - ['tc_5fevent_5faction_5ft_15',['tc_event_action_t',['../tc_8h.html#ae83a15325ed7aaf529abae8eb9edb996',1,'tc.h']]], - ['tc_5finit_16',['tc_init',['../tc_8h.html#a1ccf965a51a89fb1df2545988d4739d2',1,'tc.c']]], - ['tc_5finstance_5fdetails_5ft_17',['tc_instance_details_t',['../structtc__instance__details__t.html',1,'']]], - ['tc_5fis_5fenabled_18',['tc_is_enabled',['../tc_8h.html#a1b71bab26fe6c8796a723a10fba63b6b',1,'tc.c']]], - ['tc_5fretrigger_19',['tc_retrigger',['../tc_8h.html#aabc141b06b22193abcb931edf634a7f5',1,'tc.c']]], - ['tc_5fset_5fchannel_5fpolarity_20',['tc_set_channel_polarity',['../tc_8h.html#afd02ffa629bde002a06ad16a570177ac',1,'tc.c']]], - ['tc_5fset_5fcounter_5fmode_21',['tc_set_counter_mode',['../tc_8h.html#abbb61997f4579d174976dcc8e858c87a',1,'tc.c']]], - ['tc_5fset_5fevent_5faction_22',['tc_set_event_action',['../tc_8h.html#a59bb895d55ef97120fac8149ec78bc47',1,'tc.c']]], - ['tc_5fset_5frun_5fin_5fstandby_23',['tc_set_run_in_standby',['../tc_8h.html#a0dec44fc5db357209ea67b67607c7e81',1,'tc.c']]], - ['tc_5fset_5fwavegen_24',['tc_set_wavegen',['../tc_8h.html#affa4b9e60ccf8ba52074f3f2f28d8823',1,'tc.c']]], - ['tc_5fstop_25',['tc_stop',['../tc_8h.html#a15eaf925943d7ba804ecd8bd466a4b14',1,'tc.c']]], - ['tcc_2eh_26',['tcc.h',['../tcc_8h.html',1,'']]], - ['tcc_5fdisable_27',['tcc_disable',['../tcc_8h.html#a14a335ba34333f27e6460bf1cf659177',1,'tcc.c']]], - ['tcc_5fenable_28',['tcc_enable',['../tcc_8h.html#a6ac612aa1426900df32765fb71e79918',1,'tcc.c']]], - ['tcc_5fget_5fcount_29',['tcc_get_count',['../tcc_8h.html#a52b25028c793c126d85096049f1b1f75',1,'tcc.c']]], - ['tcc_5fget_5fperiod_30',['tcc_get_period',['../tcc_8h.html#a4123d9f15758b550c9f47ae3bf851a23',1,'tcc.c']]], - ['tcc_5finit_31',['tcc_init',['../tcc_8h.html#a55f68c3649be5d58b0e422ad94224b94',1,'tcc.c']]], - ['tcc_5finstance_5fdetails_5ft_32',['tcc_instance_details_t',['../structtcc__instance__details__t.html',1,'']]], - ['tcc_5fis_5fenabled_33',['tcc_is_enabled',['../tcc_8h.html#a5797bec545a165a39f092514139f5b1e',1,'tcc.c']]], - ['tcc_5fretrigger_34',['tcc_retrigger',['../tcc_8h.html#ac9b0bb48f6116f8fb3e6036963ad5ac8',1,'tcc.c']]], - ['tcc_5fset_5fcc_35',['tcc_set_cc',['../tcc_8h.html#abbe2f7d3ec62ef888d0c905b03470531',1,'tcc.c']]], - ['tcc_5fset_5fchannel_5fpolarity_36',['tcc_set_channel_polarity',['../tcc_8h.html#aa449988b4bea75a5e018c01e38d6c058',1,'tcc.c']]], - ['tcc_5fset_5fcount_37',['tcc_set_count',['../tcc_8h.html#a287f26e06ce521f40c6f25190c1098c1',1,'tcc.c']]], - ['tcc_5fset_5foutput_5fmatrix_38',['tcc_set_output_matrix',['../tcc_8h.html#a5646c274366bca4fdbc220d732282f2e',1,'tcc.c']]], - ['tcc_5fset_5fperiod_39',['tcc_set_period',['../tcc_8h.html#a0e0c7fc6f5730d54bea797616d2471fc',1,'tcc.c']]], - ['tcc_5fset_5frun_5fin_5fstandby_40',['tcc_set_run_in_standby',['../tcc_8h.html#a273b5e8282d26fa117e00925e2a240cc',1,'tcc.c']]], - ['tcc_5fset_5fwavegen_41',['tcc_set_wavegen',['../tcc_8h.html#a7d6656d2bfabdc18ac7088094cb304a9',1,'tcc.c']]], - ['tcc_5fstop_42',['tcc_stop',['../tcc_8h.html#a9fccdb4bb693f6a77f5a808b8d5011b2',1,'tcc.c']]], - ['tcc_5fupdate_43',['tcc_update',['../tcc_8h.html#aa135529878d40c76aa1a8fdda73f5b39',1,'tcc.c']]], - ['todo_20list_44',['Todo List',['../todo.html',1,'']]], - ['tree_45',['Clock Tree',['../index.html#autotoc_md1',1,'']]] + ['samd_20and_20saml_20chips_0',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['saml_20chips_1',['gossamer: a very lightweight firmware framework for SAMD and SAML chips',['../md__r_e_a_d_m_e.html#autotoc_md0',1,'']]], + ['segment_20lcd_20driver_2',['Segment LCD driver',['../group__slcd.html',1,'']]], + ['sercom_5finstance_5fdetails_5ft_3',['sercom_instance_details_t',['../structsercom__instance__details__t.html',1,'']]], + ['serial_20bus_4',['Universal Serial Bus',['../group__usb.html',1,'']]], + ['set_5fcpu_5ffrequency_5',['set_cpu_frequency',['../group__system.html#ga4f33e5a16dba970fa7064ea27287fcba',1,'system.h']]], + ['sh1107_2eh_6',['sh1107.h',['../sh1107_8h.html',1,'']]], + ['sh1107_5fbegin_7',['sh1107_begin',['../sh1107_8h.html#aed0009c4be3de7d50eb4c7b195460c7c',1,'sh1107.c']]], + ['sh1107_5fupdate_8',['sh1107_update',['../sh1107_8h.html#af07fc90517a99581d8fb86c73ff40270',1,'sh1107.c']]], + ['sh110x_5fchargepump_9',['SH110X_CHARGEPUMP',['../sh1107_8h.html#abf9641d62ae268b062acfd5cfb12d8a0',1,'sh1107.h']]], + ['sh110x_5fcolumnaddr_10',['SH110X_COLUMNADDR',['../sh1107_8h.html#ac1c1503e1328e829a6dd7f262a308768',1,'sh1107.h']]], + ['sh110x_5fcomscandec_11',['SH110X_COMSCANDEC',['../sh1107_8h.html#a91b8adfd441c2946e0f1c889bd4d4906',1,'sh1107.h']]], + ['sh110x_5fcomscaninc_12',['SH110X_COMSCANINC',['../sh1107_8h.html#ae9712e9ffac1eca6bb5ceb04ca62bf4a',1,'sh1107.h']]], + ['sh110x_5fdcdc_13',['SH110X_DCDC',['../sh1107_8h.html#a94a3dbbec366cfefca9abfae41c378d1',1,'sh1107.h']]], + ['sh110x_5fdisplayallon_14',['SH110X_DISPLAYALLON',['../sh1107_8h.html#ab9b2e7e0d6543b43b019a2d06ed60fa6',1,'sh1107.h']]], + ['sh110x_5fdisplayallon_5fresume_15',['SH110X_DISPLAYALLON_RESUME',['../sh1107_8h.html#aea006f310625d63558e37cacc88195e1',1,'sh1107.h']]], + ['sh110x_5fdisplayoff_16',['SH110X_DISPLAYOFF',['../sh1107_8h.html#ae0226a22287f65e5b782602d0dc4b07b',1,'sh1107.h']]], + ['sh110x_5fdisplayon_17',['SH110X_DISPLAYON',['../sh1107_8h.html#ae584f468fde42d6ea1d863ab6a214930',1,'sh1107.h']]], + ['sh110x_5finvertdisplay_18',['SH110X_INVERTDISPLAY',['../sh1107_8h.html#ae8816edf9085f2716b5e8481216761cc',1,'sh1107.h']]], + ['sh110x_5fmemorymode_19',['SH110X_MEMORYMODE',['../sh1107_8h.html#a1e3efd44dcffb0b3b8b2381c08ca7071',1,'sh1107.h']]], + ['sh110x_5fnormaldisplay_20',['SH110X_NORMALDISPLAY',['../sh1107_8h.html#a9d3c6f09d004499eca976f2eef35568d',1,'sh1107.h']]], + ['sh110x_5fpageaddr_21',['SH110X_PAGEADDR',['../sh1107_8h.html#a16b68111d8c5b3f2430e000e8db6fc58',1,'sh1107.h']]], + ['sh110x_5fsegremap_22',['SH110X_SEGREMAP',['../sh1107_8h.html#a451f6b37946e3a16ea831e5ca1cadf0a',1,'sh1107.h']]], + ['sh110x_5fsetcompins_23',['SH110X_SETCOMPINS',['../sh1107_8h.html#a1dcd09ef94455a97fa03421d4c0bfcd7',1,'sh1107.h']]], + ['sh110x_5fsetcontrast_24',['SH110X_SETCONTRAST',['../sh1107_8h.html#ad96570bd3f4132f9ca5596f2abfe3c83',1,'sh1107.h']]], + ['sh110x_5fsetdisplayclockdiv_25',['SH110X_SETDISPLAYCLOCKDIV',['../sh1107_8h.html#adf4314c533554230e7f13da80e0beea0',1,'sh1107.h']]], + ['sh110x_5fsetdisplayoffset_26',['SH110X_SETDISPLAYOFFSET',['../sh1107_8h.html#a5875f7bc8903d81ca4f79c2afb6874a8',1,'sh1107.h']]], + ['sh110x_5fsetdispstartline_27',['SH110X_SETDISPSTARTLINE',['../sh1107_8h.html#a8a29779d04227160819959faecf7460e',1,'sh1107.h']]], + ['sh110x_5fsethighcolumn_28',['SH110X_SETHIGHCOLUMN',['../sh1107_8h.html#a16ffc48fb27a08ddaec274dedbe6d60f',1,'sh1107.h']]], + ['sh110x_5fsetlowcolumn_29',['SH110X_SETLOWCOLUMN',['../sh1107_8h.html#a7314bdf59a3a4331fdfbe756eeaf468e',1,'sh1107.h']]], + ['sh110x_5fsetmultiplex_30',['SH110X_SETMULTIPLEX',['../sh1107_8h.html#ae9157f78ad85db7ae436d5b73c496bb7',1,'sh1107.h']]], + ['sh110x_5fsetpageaddr_31',['SH110X_SETPAGEADDR',['../sh1107_8h.html#aa8aedcc0dbae557ae03b382bb742f7ee',1,'sh1107.h']]], + ['sh110x_5fsetprecharge_32',['SH110X_SETPRECHARGE',['../sh1107_8h.html#a5f554794057673d14c6d43fbf43cc93c',1,'sh1107.h']]], + ['sh110x_5fsetstartline_33',['SH110X_SETSTARTLINE',['../sh1107_8h.html#a8224628684ae3ecf84049935b2531118',1,'sh1107.h']]], + ['sh110x_5fsetvcomdetect_34',['SH110X_SETVCOMDETECT',['../sh1107_8h.html#a790498436deaf2d54f8db57419bf5f2a',1,'sh1107.h']]], + ['slcd_5fclear_35',['slcd_clear',['../group__slcd.html#gae95a8c8448785a091418cde0ab46cde1',1,'slcd_clear(void): slcd.c'],['../group__slcd.html#gae95a8c8448785a091418cde0ab46cde1',1,'slcd_clear(void): slcd.c']]], + ['slcd_5fclear_5fsegment_36',['slcd_clear_segment',['../group__slcd.html#ga32700273cbcdb6bec5dbe35aadf675fe',1,'slcd_clear_segment(uint8_t com, uint8_t seg): slcd.c'],['../group__slcd.html#ga32700273cbcdb6bec5dbe35aadf675fe',1,'slcd_clear_segment(uint8_t com, uint8_t seg): slcd.c']]], + ['slcd_5fconfigure_5fblink_37',['slcd_configure_blink',['../group__slcd.html#gacf507491bc54005057442f48dffd22b5',1,'slcd_configure_blink(bool blink_all, uint8_t bss0, uint8_t bss1, uint8_t fc): slcd.c'],['../group__slcd.html#gacf507491bc54005057442f48dffd22b5',1,'slcd_configure_blink(bool blink_all, uint8_t bss0, uint8_t bss1, uint8_t fc): slcd.c']]], + ['slcd_5fconfigure_5fcircular_5fshift_5fanimation_38',['slcd_configure_circular_shift_animation',['../group__slcd.html#ga4e1060443dcfb767dc7bd6503c318f1b',1,'slcd_configure_circular_shift_animation(uint16_t initial_value, uint8_t size, slcd_csrshift_value_t shift_dir, uint8_t fc): slcd.c'],['../group__slcd.html#ga4e1060443dcfb767dc7bd6503c318f1b',1,'slcd_configure_circular_shift_animation(uint16_t initial_value, uint8_t size, slcd_csrshift_value_t shift_dir, uint8_t fc): slcd.c']]], + ['slcd_5fconfigure_5fframe_5fcounter_39',['slcd_configure_frame_counter',['../group__slcd.html#ga4ddbc9636249c6652d298a8c14fb1b19',1,'slcd_configure_frame_counter(uint8_t fc, uint8_t overflow_count, bool prescale): slcd.c'],['../group__slcd.html#ga4ddbc9636249c6652d298a8c14fb1b19',1,'slcd_configure_frame_counter(uint8_t fc, uint8_t overflow_count, bool prescale): slcd.c']]], + ['slcd_5fdisable_40',['slcd_disable',['../group__slcd.html#ga0f4187acb065db5da4cde95a729f17cf',1,'slcd_disable(void): slcd.c'],['../group__slcd.html#ga0f4187acb065db5da4cde95a729f17cf',1,'slcd_disable(void): slcd.c']]], + ['slcd_5fenable_41',['slcd_enable',['../group__slcd.html#gaf629b000ff5ce5ded0f46e2df795f8b3',1,'slcd_enable(void): slcd.c'],['../group__slcd.html#gaf629b000ff5ce5ded0f46e2df795f8b3',1,'slcd_enable(void): slcd.c']]], + ['slcd_5finit_42',['slcd_init',['../group__slcd.html#ga1d5b89a5e4f29c7d807794f9c25caaa1',1,'slcd_init(uint64_t lcd_pins, slcd_bias_value_t bias, slcd_duty_value_t duty, slcd_clocksource_value_t clocksource, slcd_prescaler_value_t prescaler, slcd_clockdiv_value_t clkdiv): slcd.c'],['../group__slcd.html#ga1d5b89a5e4f29c7d807794f9c25caaa1',1,'slcd_init(uint64_t lcd_pins, slcd_bias_value_t bias, slcd_duty_value_t duty, slcd_clocksource_value_t clocksource, slcd_prescaler_value_t prescaler, slcd_clockdiv_value_t clkdiv): slcd.c']]], + ['slcd_5fset_5fblink_5fenabled_43',['slcd_set_blink_enabled',['../group__slcd.html#gad12bde6c35bcea61572c6813281be416',1,'slcd_set_blink_enabled(bool enabled): slcd.c'],['../group__slcd.html#gad12bde6c35bcea61572c6813281be416',1,'slcd_set_blink_enabled(bool enabled): slcd.c']]], + ['slcd_5fset_5fcircular_5fshift_5fanimation_5fenabled_44',['slcd_set_circular_shift_animation_enabled',['../group__slcd.html#ga4dec2a1983ffc4fd4c69b31d8fc06b1a',1,'slcd_set_circular_shift_animation_enabled(bool enabled): slcd.c'],['../group__slcd.html#ga4dec2a1983ffc4fd4c69b31d8fc06b1a',1,'slcd_set_circular_shift_animation_enabled(bool enabled): slcd.c']]], + ['slcd_5fset_5fcontrast_45',['slcd_set_contrast',['../group__slcd.html#gac39467715e72b5336855708198be9b05',1,'slcd_set_contrast(uint8_t contrast): slcd.c'],['../group__slcd.html#gac39467715e72b5336855708198be9b05',1,'slcd_set_contrast(uint8_t contrast): slcd.c']]], + ['slcd_5fset_5fframe_5fcounter_5fenabled_46',['slcd_set_frame_counter_enabled',['../group__slcd.html#gaa49c7c6c125badffdf00d71a96e989ee',1,'slcd_set_frame_counter_enabled(uint8_t fc, bool enabled): slcd.c'],['../group__slcd.html#gaa49c7c6c125badffdf00d71a96e989ee',1,'slcd_set_frame_counter_enabled(uint8_t fc, bool enabled): slcd.c']]], + ['slcd_5fset_5fsegment_47',['slcd_set_segment',['../group__slcd.html#gafa6a244c0634d7009cb70b4fe9c2bd54',1,'slcd_set_segment(uint8_t com, uint8_t seg): slcd.c'],['../group__slcd.html#gafa6a244c0634d7009cb70b4fe9c2bd54',1,'slcd_set_segment(uint8_t com, uint8_t seg): slcd.c']]], + ['sound_20interface_48',['Inter-IC Sound interface',['../group__i2s.html',1,'']]], + ['spi_20peripheral_49',['SPI Peripheral',['../group__spi.html',1,'']]], + ['spi_5fdisable_50',['spi_disable',['../group__spi.html#gaa8d2d6d1632faf9abbe03c3ed90d54d4',1,'spi.h']]], + ['spi_5fdisable_5finstance_51',['spi_disable_instance',['../group__spi.html#ga3856b233dc7584708ab420d41c4816fe',1,'spi_disable_instance(uint8_t sercom): spi.c'],['../group__spi.html#ga3856b233dc7584708ab420d41c4816fe',1,'spi_disable_instance(uint8_t sercom): spi.c']]], + ['spi_5fenable_52',['spi_enable',['../group__spi.html#ga72cf41d2f19954fefd27f681d6b39532',1,'spi.h']]], + ['spi_5fenable_5finstance_53',['spi_enable_instance',['../group__spi.html#ga8f1915874847b4564ab22039f2b8762f',1,'spi_enable_instance(uint8_t sercom): spi.c'],['../group__spi.html#ga8f1915874847b4564ab22039f2b8762f',1,'spi_enable_instance(uint8_t sercom): spi.c']]], + ['spi_5finit_54',['spi_init',['../group__spi.html#ga48ef10ade34f68b96d36dee03ebc4415',1,'spi.h']]], + ['spi_5finit_5finstance_55',['spi_init_instance',['../group__spi.html#gaee8eaa5f597d774c4fc4a6f7d6d08305',1,'spi_init_instance(uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud): spi.c'],['../group__spi.html#gaee8eaa5f597d774c4fc4a6f7d6d08305',1,'spi_init_instance(uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud): spi.c']]], + ['spi_5ftransfer_56',['spi_transfer',['../group__spi.html#ga50084189a01c481aebe4e4d1e1968910',1,'spi.h']]], + ['spi_5ftransfer_5finstance_57',['spi_transfer_instance',['../group__spi.html#ga03d51191e1fb189fcddf1087999d58a2',1,'spi_transfer_instance(uint8_t sercom, uint8_t data): spi.c'],['../group__spi.html#ga03d51191e1fb189fcddf1087999d58a2',1,'spi_transfer_instance(uint8_t sercom, uint8_t data): spi.c']]], + ['state_20and_20future_20plans_58',['Current state and future plans',['../md__r_e_a_d_m_e.html#autotoc_md7',1,'']]], + ['support_59',['Emscripten Support',['../md__r_e_a_d_m_e.html#autotoc_md5',1,'']]], + ['sys_5finit_60',['sys_init',['../group__system.html#gaf411a8bc6b7ed4b0af9114e10c959448',1,'system.h']]], + ['system_61',['Event System',['../group__evsys.html',1,'']]], + ['system_20internals_62',['System Internals',['../group__system.html',1,'']]] ]; diff --git a/search/all_f.js b/search/all_f.js index 994056b..b4e17a4 100644 --- a/search/all_f.js +++ b/search/all_f.js @@ -1,21 +1,52 @@ var searchData= [ - ['uart_2eh_0',['uart.h',['../uart_8h.html',1,'']]], - ['uart_5fdisable_1',['uart_disable',['../uart_8h.html#a9dbcc0696f2607e16da1f55d3b4d6d94',1,'uart.h']]], - ['uart_5fdisable_5finstance_2',['uart_disable_instance',['../uart_8h.html#a22b6636b750bfa7669521d5be5baed82',1,'uart.c']]], - ['uart_5fenable_3',['uart_enable',['../uart_8h.html#affcbd24efeade3b1444100dbbc614e88',1,'uart.h']]], - ['uart_5fenable_5finstance_4',['uart_enable_instance',['../uart_8h.html#ad390de8c3b3ddcb3d03a36513262528d',1,'uart.c']]], - ['uart_5finit_5',['uart_init',['../uart_8h.html#ad8f6a793347af79ca41a3363dbd3fd96',1,'uart.h']]], - ['uart_5finit_5finstance_6',['uart_init_instance',['../uart_8h.html#a9e514ab7ce443e2fd91fbe99bf8cb207',1,'uart.c']]], - ['uart_5firq_5fhandler_7',['uart_irq_handler',['../uart_8h.html#a3d2a4f57b803f517096c373734ffa78b',1,'uart.c']]], - ['uart_5fread_8',['uart_read',['../uart_8h.html#acb00b8879d87fea2a41df7f2772c916c',1,'uart.h']]], - ['uart_5fread_5fbyte_9',['uart_read_byte',['../uart_8h.html#a6c3fa8ab576e34e015d469a2734d3292',1,'uart.h']]], - ['uart_5fread_5fbyte_5finstance_10',['uart_read_byte_instance',['../uart_8h.html#afb3971f7bde4d345bc981b87866267c9',1,'uart.c']]], - ['uart_5fread_5finstance_11',['uart_read_instance',['../uart_8h.html#a3ab7120aad2e941879ac328479d40af3',1,'uart.c']]], - ['uart_5fset_5firda_5fmode_12',['uart_set_irda_mode',['../uart_8h.html#afdbbf43dd9af325b1cae5d5318853a8d',1,'uart.h']]], - ['uart_5fset_5firda_5fmode_5finstance_13',['uart_set_irda_mode_instance',['../uart_8h.html#a84eca02c048700d3f3ea086ff1e93451',1,'uart.c']]], - ['uart_5fset_5frun_5fin_5fstandby_14',['uart_set_run_in_standby',['../uart_8h.html#aa034660a70fb244c2e25187509985760',1,'uart.h']]], - ['uart_5fset_5frun_5fin_5fstandby_5finstance_15',['uart_set_run_in_standby_instance',['../uart_8h.html#a94d5de1ee0878b0fb2d92c3626c3da22',1,'uart.c']]], - ['uart_5fwrite_16',['uart_write',['../uart_8h.html#a6e0844dd68d04ca88f255b6c75326a70',1,'uart.h']]], - ['uart_5fwrite_5finstance_17',['uart_write_instance',['../uart_8h.html#ad53a035557ef05336ff3e45547b65861',1,'uart.c']]] + ['tc_5fcount16_5fget_5fcount_0',['tc_count16_get_count',['../group__tc.html#ga2e534df47672eea4460487ab3fe1e123',1,'tc_count16_get_count(uint8_t instance): tc.c'],['../group__tc.html#ga2e534df47672eea4460487ab3fe1e123',1,'tc_count16_get_count(uint8_t instance): tc.c']]], + ['tc_5fcount16_5fset_5fcc_1',['tc_count16_set_cc',['../group__tc.html#ga30b584892c4a1cfce9ddc70933776e7e',1,'tc_count16_set_cc(uint8_t instance, uint8_t channel, uint16_t value): tc.c'],['../group__tc.html#ga30b584892c4a1cfce9ddc70933776e7e',1,'tc_count16_set_cc(uint8_t instance, uint8_t channel, uint16_t value): tc.c']]], + ['tc_5fcount16_5fset_5fcount_2',['tc_count16_set_count',['../group__tc.html#ga2b52ab8a84db926117b40c7c6d6447d6',1,'tc_count16_set_count(uint8_t instance, uint16_t value): tc.c'],['../group__tc.html#ga2b52ab8a84db926117b40c7c6d6447d6',1,'tc_count16_set_count(uint8_t instance, uint16_t value): tc.c']]], + ['tc_5fcount32_5fget_5fcount_3',['tc_count32_get_count',['../group__tc.html#gaa5879a623b3133654d474decb14b61f8',1,'tc_count32_get_count(uint8_t instance): tc.c'],['../group__tc.html#gaa5879a623b3133654d474decb14b61f8',1,'tc_count32_get_count(uint8_t instance): tc.c']]], + ['tc_5fcount32_5fset_5fcc_4',['tc_count32_set_cc',['../group__tc.html#ga5078d0682876c8bcabbf8da7944865e8',1,'tc_count32_set_cc(uint8_t instance, uint8_t channel, uint32_t value): tc.c'],['../group__tc.html#ga5078d0682876c8bcabbf8da7944865e8',1,'tc_count32_set_cc(uint8_t instance, uint8_t channel, uint32_t value): tc.c']]], + ['tc_5fcount32_5fset_5fcount_5',['tc_count32_set_count',['../group__tc.html#ga4136a7369f7b79b4a1d29575c1f1f9d8',1,'tc_count32_set_count(uint8_t instance, uint32_t value): tc.c'],['../group__tc.html#ga4136a7369f7b79b4a1d29575c1f1f9d8',1,'tc_count32_set_count(uint8_t instance, uint32_t value): tc.c']]], + ['tc_5fcount8_5fget_5fcount_6',['tc_count8_get_count',['../group__tc.html#ga0350dc913a38a4e3b27b441510a614ba',1,'tc_count8_get_count(uint8_t instance): tc.c'],['../group__tc.html#ga0350dc913a38a4e3b27b441510a614ba',1,'tc_count8_get_count(uint8_t instance): tc.c']]], + ['tc_5fcount8_5fget_5fperiod_7',['tc_count8_get_period',['../group__tc.html#ga993860f6b38c672f9ca6ae1b60452282',1,'tc_count8_get_period(uint8_t instance): tc.c'],['../group__tc.html#ga993860f6b38c672f9ca6ae1b60452282',1,'tc_count8_get_period(uint8_t instance): tc.c']]], + ['tc_5fcount8_5fset_5fcc_8',['tc_count8_set_cc',['../group__tc.html#ga8862d572676201371406b19746198c45',1,'tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value): tc.c'],['../group__tc.html#ga8862d572676201371406b19746198c45',1,'tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value): tc.c']]], + ['tc_5fcount8_5fset_5fcount_9',['tc_count8_set_count',['../group__tc.html#ga363974408ab3135aaf6529cadfd5195b',1,'tc_count8_set_count(uint8_t instance, uint8_t value): tc.c'],['../group__tc.html#ga363974408ab3135aaf6529cadfd5195b',1,'tc_count8_set_count(uint8_t instance, uint8_t value): tc.c']]], + ['tc_5fcount8_5fset_5fperiod_10',['tc_count8_set_period',['../group__tc.html#gab18ace8a5dd07d75cb9e6957d9e2658c',1,'tc_count8_set_period(uint8_t instance, uint8_t period): tc.c'],['../group__tc.html#gab18ace8a5dd07d75cb9e6957d9e2658c',1,'tc_count8_set_period(uint8_t instance, uint8_t period): tc.c']]], + ['tc_5fdisable_11',['tc_disable',['../group__tc.html#gaf2ed5cb964a3f29663b89bfc2a661caf',1,'tc_disable(uint8_t instance): tc.c'],['../group__tc.html#gaf2ed5cb964a3f29663b89bfc2a661caf',1,'tc_disable(uint8_t instance): tc.c']]], + ['tc_5fenable_12',['tc_enable',['../group__tc.html#ga2715d5a6f20298805eefa13a8a7a1b99',1,'tc_enable(uint8_t instance): tc.c'],['../group__tc.html#ga2715d5a6f20298805eefa13a8a7a1b99',1,'tc_enable(uint8_t instance): tc.c']]], + ['tc_5fevent_5faction_5fppw_13',['TC_EVENT_ACTION_PPW',['../group__tc.html#ggae83a15325ed7aaf529abae8eb9edb996a4957024d607401030b128f9b775edb7d',1,'tc.h']]], + ['tc_5fevent_5faction_5ft_14',['tc_event_action_t',['../group__tc.html#gae83a15325ed7aaf529abae8eb9edb996',1,'tc.h']]], + ['tc_5finit_15',['tc_init',['../group__tc.html#ga1ccf965a51a89fb1df2545988d4739d2',1,'tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler): tc.c'],['../group__tc.html#ga1ccf965a51a89fb1df2545988d4739d2',1,'tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler): tc.c']]], + ['tc_5finstance_5fdetails_5ft_16',['tc_instance_details_t',['../structtc__instance__details__t.html',1,'']]], + ['tc_5fis_5fenabled_17',['tc_is_enabled',['../group__tc.html#ga1b71bab26fe6c8796a723a10fba63b6b',1,'tc_is_enabled(uint8_t instance): tc.c'],['../group__tc.html#ga1b71bab26fe6c8796a723a10fba63b6b',1,'tc_is_enabled(uint8_t instance): tc.c']]], + ['tc_5fretrigger_18',['tc_retrigger',['../group__tc.html#gaabc141b06b22193abcb931edf634a7f5',1,'tc_retrigger(uint8_t instance): tc.c'],['../group__tc.html#gaabc141b06b22193abcb931edf634a7f5',1,'tc_retrigger(uint8_t instance): tc.c']]], + ['tc_5fset_5fchannel_5fpolarity_19',['tc_set_channel_polarity',['../group__tc.html#gafd02ffa629bde002a06ad16a570177ac',1,'tc_set_channel_polarity(uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity): tc.c'],['../group__tc.html#gafd02ffa629bde002a06ad16a570177ac',1,'tc_set_channel_polarity(uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity): tc.c']]], + ['tc_5fset_5fcounter_5fmode_20',['tc_set_counter_mode',['../group__tc.html#gabbb61997f4579d174976dcc8e858c87a',1,'tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode): tc.c'],['../group__tc.html#gabbb61997f4579d174976dcc8e858c87a',1,'tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode): tc.c']]], + ['tc_5fset_5fevent_5faction_21',['tc_set_event_action',['../group__tc.html#ga59bb895d55ef97120fac8149ec78bc47',1,'tc_set_event_action(uint8_t instance, tc_event_action_t action): tc.c'],['../group__tc.html#ga59bb895d55ef97120fac8149ec78bc47',1,'tc_set_event_action(uint8_t instance, tc_event_action_t action): tc.c']]], + ['tc_5fset_5frun_5fin_5fstandby_22',['tc_set_run_in_standby',['../group__tc.html#ga0dec44fc5db357209ea67b67607c7e81',1,'tc_set_run_in_standby(uint8_t instance, bool runStandby): tc.c'],['../group__tc.html#ga0dec44fc5db357209ea67b67607c7e81',1,'tc_set_run_in_standby(uint8_t instance, bool runStandby): tc.c']]], + ['tc_5fset_5fwavegen_23',['tc_set_wavegen',['../group__tc.html#gaffa4b9e60ccf8ba52074f3f2f28d8823',1,'tc_set_wavegen(uint8_t instance, tc_wavegen_t mode): tc.c'],['../group__tc.html#gaffa4b9e60ccf8ba52074f3f2f28d8823',1,'tc_set_wavegen(uint8_t instance, tc_wavegen_t mode): tc.c']]], + ['tc_5fstop_24',['tc_stop',['../group__tc.html#ga15eaf925943d7ba804ecd8bd466a4b14',1,'tc_stop(uint8_t instance): tc.c'],['../group__tc.html#ga15eaf925943d7ba804ecd8bd466a4b14',1,'tc_stop(uint8_t instance): tc.c']]], + ['tcc_5fdisable_25',['tcc_disable',['../group__tcc.html#ga14a335ba34333f27e6460bf1cf659177',1,'tcc_disable(uint8_t instance): tcc.c'],['../group__tcc.html#ga14a335ba34333f27e6460bf1cf659177',1,'tcc_disable(uint8_t instance): tcc.c']]], + ['tcc_5fenable_26',['tcc_enable',['../group__tcc.html#ga6ac612aa1426900df32765fb71e79918',1,'tcc_enable(uint8_t instance): tcc.c'],['../group__tcc.html#ga6ac612aa1426900df32765fb71e79918',1,'tcc_enable(uint8_t instance): tcc.c']]], + ['tcc_5fget_5fcount_27',['tcc_get_count',['../group__tcc.html#ga52b25028c793c126d85096049f1b1f75',1,'tcc_get_count(uint8_t instance): tcc.c'],['../group__tcc.html#ga52b25028c793c126d85096049f1b1f75',1,'tcc_get_count(uint8_t instance): tcc.c']]], + ['tcc_5fget_5fperiod_28',['tcc_get_period',['../group__tcc.html#ga4123d9f15758b550c9f47ae3bf851a23',1,'tcc_get_period(uint8_t instance): tcc.c'],['../group__tcc.html#ga4123d9f15758b550c9f47ae3bf851a23',1,'tcc_get_period(uint8_t instance): tcc.c']]], + ['tcc_5finit_29',['tcc_init',['../group__tcc.html#ga55f68c3649be5d58b0e422ad94224b94',1,'tcc_init(uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler): tcc.c'],['../group__tcc.html#ga55f68c3649be5d58b0e422ad94224b94',1,'tcc_init(uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler): tcc.c']]], + ['tcc_5finstance_5fdetails_5ft_30',['tcc_instance_details_t',['../structtcc__instance__details__t.html',1,'']]], + ['tcc_5fis_5fenabled_31',['tcc_is_enabled',['../group__tcc.html#ga5797bec545a165a39f092514139f5b1e',1,'tcc_is_enabled(uint8_t instance): tcc.c'],['../group__tcc.html#ga5797bec545a165a39f092514139f5b1e',1,'tcc_is_enabled(uint8_t instance): tcc.c']]], + ['tcc_5fretrigger_32',['tcc_retrigger',['../group__tcc.html#gac9b0bb48f6116f8fb3e6036963ad5ac8',1,'tcc_retrigger(uint8_t instance): tcc.c'],['../group__tcc.html#gac9b0bb48f6116f8fb3e6036963ad5ac8',1,'tcc_retrigger(uint8_t instance): tcc.c']]], + ['tcc_5fset_5fcc_33',['tcc_set_cc',['../group__tcc.html#gabbe2f7d3ec62ef888d0c905b03470531',1,'tcc_set_cc(uint8_t instance, uint8_t channel, uint32_t value, bool buffered): tcc.c'],['../group__tcc.html#gabbe2f7d3ec62ef888d0c905b03470531',1,'tcc_set_cc(uint8_t instance, uint8_t channel, uint32_t value, bool buffered): tcc.c']]], + ['tcc_5fset_5fchannel_5fpolarity_34',['tcc_set_channel_polarity',['../group__tcc.html#gaa449988b4bea75a5e018c01e38d6c058',1,'tcc_set_channel_polarity(uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity): tcc.c'],['../group__tcc.html#gaa449988b4bea75a5e018c01e38d6c058',1,'tcc_set_channel_polarity(uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity): tcc.c']]], + ['tcc_5fset_5fcount_35',['tcc_set_count',['../group__tcc.html#ga287f26e06ce521f40c6f25190c1098c1',1,'tcc_set_count(uint8_t instance, uint32_t value): tcc.c'],['../group__tcc.html#ga287f26e06ce521f40c6f25190c1098c1',1,'tcc_set_count(uint8_t instance, uint32_t value): tcc.c']]], + ['tcc_5fset_5foutput_5fmatrix_36',['tcc_set_output_matrix',['../group__tcc.html#ga5646c274366bca4fdbc220d732282f2e',1,'tcc_set_output_matrix(uint8_t instance, tcc_output_matrix_t mode): tcc.c'],['../group__tcc.html#ga5646c274366bca4fdbc220d732282f2e',1,'tcc_set_output_matrix(uint8_t instance, tcc_output_matrix_t mode): tcc.c']]], + ['tcc_5fset_5fperiod_37',['tcc_set_period',['../group__tcc.html#ga0e0c7fc6f5730d54bea797616d2471fc',1,'tcc_set_period(uint8_t instance, uint32_t period, bool buffered): tcc.c'],['../group__tcc.html#ga0e0c7fc6f5730d54bea797616d2471fc',1,'tcc_set_period(uint8_t instance, uint32_t period, bool buffered): tcc.c']]], + ['tcc_5fset_5frun_5fin_5fstandby_38',['tcc_set_run_in_standby',['../group__tcc.html#ga273b5e8282d26fa117e00925e2a240cc',1,'tcc_set_run_in_standby(uint8_t instance, bool runStandby): tcc.c'],['../group__tcc.html#ga273b5e8282d26fa117e00925e2a240cc',1,'tcc_set_run_in_standby(uint8_t instance, bool runStandby): tcc.c']]], + ['tcc_5fset_5fwavegen_39',['tcc_set_wavegen',['../group__tcc.html#ga7d6656d2bfabdc18ac7088094cb304a9',1,'tcc_set_wavegen(uint8_t instance, tcc_wavegen_t mode): tcc.c'],['../group__tcc.html#ga7d6656d2bfabdc18ac7088094cb304a9',1,'tcc_set_wavegen(uint8_t instance, tcc_wavegen_t mode): tcc.c']]], + ['tcc_5fstop_40',['tcc_stop',['../group__tcc.html#ga9fccdb4bb693f6a77f5a808b8d5011b2',1,'tcc_stop(uint8_t instance): tcc.c'],['../group__tcc.html#ga9fccdb4bb693f6a77f5a808b8d5011b2',1,'tcc_stop(uint8_t instance): tcc.c']]], + ['tcc_5fupdate_41',['tcc_update',['../group__tcc.html#gaa135529878d40c76aa1a8fdda73f5b39',1,'tcc_update(uint8_t instance): tcc.c'],['../group__tcc.html#gaa135529878d40c76aa1a8fdda73f5b39',1,'tcc_update(uint8_t instance): tcc.c']]], + ['time_20clock_42',['Real-Time Clock',['../group__rtc.html',1,'']]], + ['timer_20counter_43',['Timer/Counter',['../group__tc.html',1,'']]], + ['timer_20counter_20for_20control_20applications_44',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]], + ['to_20analog_20converter_45',['Digital to Analog Converter',['../group__dac.html',1,'']]], + ['to_20digital_20converter_46',['Analog to Digital Converter',['../group__adc.html',1,'']]], + ['touch_20controller_47',['Peripheral Touch Controller',['../group__ptc.html',1,'']]], + ['tree_48',['Clock Tree',['../md__r_e_a_d_m_e.html#autotoc_md1',1,'']]] ]; diff --git a/search/enums_0.js b/search/enums_0.js index 9b90f88..bfa94fb 100644 --- a/search/enums_0.js +++ b/search/enums_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['eic_5finterrupt_5ftrigger_5ft_0',['eic_interrupt_trigger_t',['../eic_8h.html#ac1fe47482a1a2c642408f50c2db9469f',1,'eic.h']]] + ['eic_5finterrupt_5ftrigger_5ft_0',['eic_interrupt_trigger_t',['../group__eic.html#gac1fe47482a1a2c642408f50c2db9469f',1,'eic.h']]] ]; diff --git a/search/enums_1.js b/search/enums_1.js index e9fadbd..d254631 100644 --- a/search/enums_1.js +++ b/search/enums_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['tc_5fevent_5faction_5ft_0',['tc_event_action_t',['../tc_8h.html#ae83a15325ed7aaf529abae8eb9edb996',1,'tc.h']]] + ['tc_5fevent_5faction_5ft_0',['tc_event_action_t',['../group__tc.html#gae83a15325ed7aaf529abae8eb9edb996',1,'tc.h']]] ]; diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 0000000..bbdd397 --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['uart_5frxpo_5ft_0',['uart_rxpo_t',['../group__uart.html#ga689c8ada541f2cd1c4c0618eb428fa91',1,'uart.h']]], + ['uart_5ftxpo_5ft_1',['uart_txpo_t',['../group__uart.html#ga201cbf904c8080f01165f93634d9603f',1,'uart.h']]] +]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js index 59a8906..06cfa1f 100644 --- a/search/enumvalues_0.js +++ b/search/enumvalues_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['tc_5fevent_5faction_5fppw_0',['TC_EVENT_ACTION_PPW',['../tc_8h.html#ae83a15325ed7aaf529abae8eb9edb996a4957024d607401030b128f9b775edb7d',1,'tc.h']]] + ['tc_5fevent_5faction_5fppw_0',['TC_EVENT_ACTION_PPW',['../group__tc.html#ggae83a15325ed7aaf529abae8eb9edb996a4957024d607401030b128f9b775edb7d',1,'tc.h']]] ]; diff --git a/search/files_0.js b/search/files_0.js index 2221f6f..3221efc 100644 --- a/search/files_0.js +++ b/search/files_0.js @@ -1,5 +1,4 @@ var searchData= [ - ['adc_2eh_0',['adc.h',['../adc_8h.html',1,'']]], - ['app_2eh_1',['app.h',['../app_8h.html',1,'']]] + ['gfx_2eh_0',['gfx.h',['../gfx_8h.html',1,'']]] ]; diff --git a/search/files_1.js b/search/files_1.js index c64b8e2..021e3a1 100644 --- a/search/files_1.js +++ b/search/files_1.js @@ -1,5 +1,4 @@ var searchData= [ - ['dac_2eh_0',['dac.h',['../dac_8h.html',1,'']]], - ['delay_2eh_1',['delay.h',['../delay_8h.html',1,'']]] + ['sh1107_2eh_0',['sh1107.h',['../sh1107_8h.html',1,'']]] ]; diff --git a/search/files_2.js b/search/files_2.js deleted file mode 100644 index c06ba87..0000000 --- a/search/files_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['eic_2eh_0',['eic.h',['../eic_8h.html',1,'']]], - ['evsys_2eh_1',['evsys.h',['../evsys_8h.html',1,'']]] -]; diff --git a/search/files_3.js b/search/files_3.js deleted file mode 100644 index 3221efc..0000000 --- a/search/files_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['gfx_2eh_0',['gfx.h',['../gfx_8h.html',1,'']]] -]; diff --git a/search/files_4.js b/search/files_4.js deleted file mode 100644 index 334499d..0000000 --- a/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hal_5fgpio_2eh_0',['hal_gpio.h',['../hal__gpio_8h.html',1,'']]] -]; diff --git a/search/files_5.js b/search/files_5.js deleted file mode 100644 index 9ae8779..0000000 --- a/search/files_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['i2c_2eh_0',['i2c.h',['../i2c_8h.html',1,'']]], - ['i2s_2eh_1',['i2s.h',['../i2s_8h.html',1,'']]] -]; diff --git a/search/files_6.js b/search/files_6.js deleted file mode 100644 index 0ce9a5b..0000000 --- a/search/files_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['opamp_2eh_0',['opamp.h',['../opamp_8h.html',1,'']]] -]; diff --git a/search/files_7.js b/search/files_7.js deleted file mode 100644 index 8df26e6..0000000 --- a/search/files_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ptc_2eh_0',['ptc.h',['../ptc_8h.html',1,'']]] -]; diff --git a/search/files_8.js b/search/files_8.js deleted file mode 100644 index 57b8d57..0000000 --- a/search/files_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['rtc_2eh_0',['rtc.h',['../rtc_8h.html',1,'']]] -]; diff --git a/search/files_9.js b/search/files_9.js deleted file mode 100644 index f98deae..0000000 --- a/search/files_9.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['sercom_2eh_0',['sercom.h',['../sercom_8h.html',1,'']]], - ['sh1107_2eh_1',['sh1107.h',['../sh1107_8h.html',1,'']]], - ['slcd_2eh_2',['slcd.h',['../slcd_8h.html',1,'']]], - ['spi_2eh_3',['spi.h',['../spi_8h.html',1,'']]], - ['system_2eh_4',['system.h',['../system_8h.html',1,'']]] -]; diff --git a/search/files_a.js b/search/files_a.js deleted file mode 100644 index 4cc7777..0000000 --- a/search/files_a.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['tc_2eh_0',['tc.h',['../tc_8h.html',1,'']]], - ['tcc_2eh_1',['tcc.h',['../tcc_8h.html',1,'']]] -]; diff --git a/search/files_b.js b/search/files_b.js deleted file mode 100644 index 29f20c0..0000000 --- a/search/files_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['uart_2eh_0',['uart.h',['../uart_8h.html',1,'']]] -]; diff --git a/search/functions_0.js b/search/functions_0.js index 5fdf659..fedd024 100644 --- a/search/functions_0.js +++ b/search/functions_0.js @@ -1,8 +1,5 @@ var searchData= [ - ['_5fenable_5f48mhz_5fgclk1_0',['_enable_48mhz_gclk1',['../system_8h.html#af6d6cb9ca08e26e456d9ed1d425453e8',1,'system.h']]], - ['_5fenter_5fstandby_5fmode_1',['_enter_standby_mode',['../system_8h.html#a436af75ad5caf82faa3497787abf4321',1,'system.h']]], - ['_5fsercom_5fclock_5fsetup_2',['_sercom_clock_setup',['../sercom_8h.html#a76ac345ff33c35b9e6847c719bcb00a3',1,'sercom.c']]], - ['_5fsercom_5fdisable_3',['_sercom_disable',['../sercom_8h.html#abef0ed2b1af8b63d85ceb0bc2d212fc5',1,'sercom.c']]], - ['_5fsercom_5fenable_4',['_sercom_enable',['../sercom_8h.html#a2d6b4fa64e102b375f255222acb1d74a',1,'sercom.c']]] + ['_5fenable_5f48mhz_5fgclk1_0',['_enable_48mhz_gclk1',['../group__system.html#gaf6d6cb9ca08e26e456d9ed1d425453e8',1,'system.h']]], + ['_5fenter_5fstandby_5fmode_1',['_enter_standby_mode',['../group__system.html#ga436af75ad5caf82faa3497787abf4321',1,'system.h']]] ]; diff --git a/search/functions_1.js b/search/functions_1.js index 0728776..7a57d65 100644 --- a/search/functions_1.js +++ b/search/functions_1.js @@ -1,13 +1,13 @@ var searchData= [ - ['adc_5fdisable_0',['adc_disable',['../adc_8h.html#a3b4b977d0665b5346849f3b892ac5106',1,'adc.c']]], - ['adc_5fenable_1',['adc_enable',['../adc_8h.html#a3afdea3b7c9b91013c270f1a1a669782',1,'adc.c']]], - ['adc_5fget_5fanalog_5fvalue_2',['adc_get_analog_value',['../adc_8h.html#a96ce001b81ec65219abcb7e4a583f55c',1,'adc.c']]], - ['adc_5fget_5fanalog_5fvalue_5ffor_5fchannel_3',['adc_get_analog_value_for_channel',['../adc_8h.html#a200744370e2a8505c3dead71aff1c2dc',1,'adc.c']]], - ['adc_5finit_4',['adc_init',['../adc_8h.html#a2b815e6730e8723a6d1d06d9ef8f31c0',1,'adc.c']]], - ['adc_5fset_5fsampling_5flength_5',['adc_set_sampling_length',['../adc_8h.html#a1b33d0d9bd2841354f016f8c64be3e15',1,'adc.c']]], - ['app_5finit_6',['app_init',['../app_8h.html#add3190cf715f513666f4be42874d91e2',1,'app.h']]], - ['app_5floop_7',['app_loop',['../app_8h.html#ad1cfce0ef962cd2afe2d8b2d2d13482a',1,'app.h']]], - ['app_5fsetup_8',['app_setup',['../app_8h.html#acce192accedbd296eb8d2182f8101f16',1,'app.h']]], - ['app_5fwake_5ffrom_5fbackup_9',['app_wake_from_backup',['../app_8h.html#ab6a9f08ba879ce8d28fb19ca2882890a',1,'app.h']]] + ['adc_5fdisable_0',['adc_disable',['../group__adc.html#ga3b4b977d0665b5346849f3b892ac5106',1,'adc_disable(void): adc.c'],['../group__adc.html#ga3b4b977d0665b5346849f3b892ac5106',1,'adc_disable(void): adc.c']]], + ['adc_5fenable_1',['adc_enable',['../group__adc.html#ga3afdea3b7c9b91013c270f1a1a669782',1,'adc_enable(void): adc.c'],['../group__adc.html#ga3afdea3b7c9b91013c270f1a1a669782',1,'adc_enable(void): adc.c']]], + ['adc_5fget_5fanalog_5fvalue_2',['adc_get_analog_value',['../group__adc.html#ga96ce001b81ec65219abcb7e4a583f55c',1,'adc_get_analog_value(uint8_t pin): adc.c'],['../group__adc.html#ga96ce001b81ec65219abcb7e4a583f55c',1,'adc_get_analog_value(uint8_t pin): adc.c']]], + ['adc_5fget_5fanalog_5fvalue_5ffor_5fchannel_3',['adc_get_analog_value_for_channel',['../group__adc.html#ga200744370e2a8505c3dead71aff1c2dc',1,'adc_get_analog_value_for_channel(uint8_t channel): adc.c'],['../group__adc.html#ga200744370e2a8505c3dead71aff1c2dc',1,'adc_get_analog_value_for_channel(uint8_t channel): adc.c']]], + ['adc_5finit_4',['adc_init',['../group__adc.html#ga2b815e6730e8723a6d1d06d9ef8f31c0',1,'adc_init(void): adc.c'],['../group__adc.html#ga2b815e6730e8723a6d1d06d9ef8f31c0',1,'adc_init(void): adc.c']]], + ['adc_5fset_5fsampling_5flength_5',['adc_set_sampling_length',['../group__adc.html#ga1b33d0d9bd2841354f016f8c64be3e15',1,'adc_set_sampling_length(uint8_t length): adc.c'],['../group__adc.html#ga1b33d0d9bd2841354f016f8c64be3e15',1,'adc_set_sampling_length(uint8_t length): adc.c']]], + ['app_5finit_6',['app_init',['../group__app.html#gadd3190cf715f513666f4be42874d91e2',1,'app.h']]], + ['app_5floop_7',['app_loop',['../group__app.html#gad1cfce0ef962cd2afe2d8b2d2d13482a',1,'app.h']]], + ['app_5fsetup_8',['app_setup',['../group__app.html#gacce192accedbd296eb8d2182f8101f16',1,'app.h']]], + ['app_5fwake_5ffrom_5fbackup_9',['app_wake_from_backup',['../group__app.html#gab6a9f08ba879ce8d28fb19ca2882890a',1,'app.h']]] ]; diff --git a/search/functions_2.js b/search/functions_2.js index 72c206a..f356000 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -1,10 +1,10 @@ var searchData= [ - ['dac_5fdisable_0',['dac_disable',['../dac_8h.html#a6b0e70e8bf5135e2f3491e87fcd804fe',1,'dac.c']]], - ['dac_5fenable_1',['dac_enable',['../dac_8h.html#a27483fa712ea61a534f679e72ffba463',1,'dac.c']]], - ['dac_5finit_2',['dac_init',['../dac_8h.html#a6e622fafee8436bf9cf9f6b120352e3c',1,'dac.c']]], - ['dac_5fset_5fanalog_5fvalue_3',['dac_set_analog_value',['../dac_8h.html#a2b43d67fbe14479cc72c1119fb2b7a48',1,'dac.c']]], - ['delay_5finit_4',['delay_init',['../delay_8h.html#af3c040fe31e69be32855715a75e0cda4',1,'delay.c']]], - ['delay_5fms_5',['delay_ms',['../delay_8h.html#ad2dd6e794004b50917d231195c324ce5',1,'delay.c']]], - ['delay_5fus_6',['delay_us',['../delay_8h.html#aa17c6e82a9085391c696904957505621',1,'delay.c']]] + ['dac_5fdisable_0',['dac_disable',['../group__dac.html#ga6b0e70e8bf5135e2f3491e87fcd804fe',1,'dac_disable(uint16_t channel): dac.c'],['../group__dac.html#ga6b0e70e8bf5135e2f3491e87fcd804fe',1,'dac_disable(uint16_t channel): dac.c']]], + ['dac_5fenable_1',['dac_enable',['../group__dac.html#ga27483fa712ea61a534f679e72ffba463',1,'dac_enable(dac_channel_mask_t channelmask): dac.c'],['../group__dac.html#ga27483fa712ea61a534f679e72ffba463',1,'dac_enable(dac_channel_mask_t channelmask): dac.c']]], + ['dac_5finit_2',['dac_init',['../group__dac.html#ga6e622fafee8436bf9cf9f6b120352e3c',1,'dac_init(void): dac.c'],['../group__dac.html#ga6e622fafee8436bf9cf9f6b120352e3c',1,'dac_init(void): dac.c']]], + ['dac_5fset_5fanalog_5fvalue_3',['dac_set_analog_value',['../group__dac.html#ga2b43d67fbe14479cc72c1119fb2b7a48',1,'dac_set_analog_value(uint16_t channel, uint16_t value): dac.c'],['../group__dac.html#ga2b43d67fbe14479cc72c1119fb2b7a48',1,'dac_set_analog_value(uint16_t channel, uint16_t value): dac.c']]], + ['dma_5fadd_5fdescriptor_4',['dma_add_descriptor',['../group__dma.html#ga3dca92a07f9089896f3673699863832f',1,'dma_add_descriptor(gossamer_dma_job_t *dmaJob, void *src, void *dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel): dma.c'],['../group__dma.html#ga3dca92a07f9089896f3673699863832f',1,'dma_add_descriptor(gossamer_dma_job_t *dmaJob, void *src, void *dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel): dma.c']]], + ['dma_5fconfigure_5',['dma_configure',['../group__dma.html#gab907281d8798c56cca6da3444d93a918',1,'dma_configure(gossamer_dma_job_t *dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags): dma.c'],['../group__dma.html#gab907281d8798c56cca6da3444d93a918',1,'dma_configure(gossamer_dma_job_t *dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags): dma.c']]], + ['dma_5finit_6',['dma_init',['../group__dma.html#ga1c9e133b825bded7bf8039c43b49d2c7',1,'dma_init(void): dma.c'],['../group__dma.html#ga1c9e133b825bded7bf8039c43b49d2c7',1,'dma_init(void): dma.c']]] ]; diff --git a/search/functions_3.js b/search/functions_3.js index ec3f2f0..11e9b4a 100644 --- a/search/functions_3.js +++ b/search/functions_3.js @@ -1,13 +1,13 @@ var searchData= [ - ['eic_5fconfigure_5fcallback_0',['eic_configure_callback',['../eic_8h.html#a5695270545c3f5b6a24682447108e6cd',1,'eic.c']]], - ['eic_5fconfigure_5fpin_1',['eic_configure_pin',['../eic_8h.html#a034f0e472fc0d955b11de053a263e8cd',1,'eic.c']]], - ['eic_5fdisable_2',['eic_disable',['../eic_8h.html#abaae85c8706e41bb2cc2b7aa7be956e6',1,'eic.c']]], - ['eic_5fdisable_5fevent_3',['eic_disable_event',['../eic_8h.html#a21e4b3925d449c25fe3831b167845161',1,'eic.c']]], - ['eic_5fdisable_5finterrupt_4',['eic_disable_interrupt',['../eic_8h.html#a48015b16099d943fad32302fad6114a1',1,'eic.c']]], - ['eic_5fenable_5',['eic_enable',['../eic_8h.html#afd8706ad3219397c91636524d2149eb0',1,'eic.c']]], - ['eic_5fenable_5fevent_6',['eic_enable_event',['../eic_8h.html#ae6a140e7799fec385ff48c97f399b7cf',1,'eic.c']]], - ['eic_5fenable_5finterrupt_7',['eic_enable_interrupt',['../eic_8h.html#a95932a1b8c5442120cd6caa7a5cb0733',1,'eic.c']]], - ['eic_5finit_8',['eic_init',['../eic_8h.html#ac66cb10fff656315b12df4248f798c41',1,'eic.c']]], - ['evsys_5fconfigure_5fchannel_9',['evsys_configure_channel',['../evsys_8h.html#a506dcdef11267257fce99f6deffc4844',1,'evsys.c']]] + ['eic_5fconfigure_5fcallback_0',['eic_configure_callback',['../group__eic.html#ga5695270545c3f5b6a24682447108e6cd',1,'eic_configure_callback(eic_cb_t callback): eic.c'],['../group__eic.html#ga5695270545c3f5b6a24682447108e6cd',1,'eic_configure_callback(eic_cb_t callback): eic.c']]], + ['eic_5fconfigure_5fpin_1',['eic_configure_pin',['../group__eic.html#ga034f0e472fc0d955b11de053a263e8cd',1,'eic_configure_pin(const uint8_t pin, eic_interrupt_trigger_t trigger): eic.c'],['../group__eic.html#ga034f0e472fc0d955b11de053a263e8cd',1,'eic_configure_pin(const uint8_t pin, eic_interrupt_trigger_t trigger): eic.c']]], + ['eic_5fdisable_2',['eic_disable',['../group__eic.html#gabaae85c8706e41bb2cc2b7aa7be956e6',1,'eic_disable(void): eic.c'],['../group__eic.html#gabaae85c8706e41bb2cc2b7aa7be956e6',1,'eic_disable(void): eic.c']]], + ['eic_5fdisable_5fevent_3',['eic_disable_event',['../group__eic.html#ga21e4b3925d449c25fe3831b167845161',1,'eic_disable_event(const uint8_t pin): eic.c'],['../group__eic.html#ga21e4b3925d449c25fe3831b167845161',1,'eic_disable_event(const uint8_t pin): eic.c']]], + ['eic_5fdisable_5finterrupt_4',['eic_disable_interrupt',['../group__eic.html#ga48015b16099d943fad32302fad6114a1',1,'eic_disable_interrupt(const uint8_t pin): eic.c'],['../group__eic.html#ga48015b16099d943fad32302fad6114a1',1,'eic_disable_interrupt(const uint8_t pin): eic.c']]], + ['eic_5fenable_5',['eic_enable',['../group__eic.html#gafd8706ad3219397c91636524d2149eb0',1,'eic_enable(void): eic.c'],['../group__eic.html#gafd8706ad3219397c91636524d2149eb0',1,'eic_enable(void): eic.c']]], + ['eic_5fenable_5fevent_6',['eic_enable_event',['../group__eic.html#gae6a140e7799fec385ff48c97f399b7cf',1,'eic_enable_event(const uint8_t pin): eic.c'],['../group__eic.html#gae6a140e7799fec385ff48c97f399b7cf',1,'eic_enable_event(const uint8_t pin): eic.c']]], + ['eic_5fenable_5finterrupt_7',['eic_enable_interrupt',['../group__eic.html#ga95932a1b8c5442120cd6caa7a5cb0733',1,'eic_enable_interrupt(const uint8_t pin): eic.c'],['../group__eic.html#ga95932a1b8c5442120cd6caa7a5cb0733',1,'eic_enable_interrupt(const uint8_t pin): eic.c']]], + ['eic_5finit_8',['eic_init',['../group__eic.html#gac66cb10fff656315b12df4248f798c41',1,'eic_init(void): eic.c'],['../group__eic.html#gac66cb10fff656315b12df4248f798c41',1,'eic_init(void): eic.c']]], + ['evsys_5fconfigure_5fchannel_9',['evsys_configure_channel',['../group__evsys.html#ga506dcdef11267257fce99f6deffc4844',1,'evsys_configure_channel(uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous): evsys.c'],['../group__evsys.html#ga506dcdef11267257fce99f6deffc4844',1,'evsys_configure_channel(uint8_t channel, uint8_t generator, uint8_t user, bool run_in_standby, bool asynchronous): evsys.c']]] ]; diff --git a/search/functions_4.js b/search/functions_4.js index d8c38d0..8dc3801 100644 --- a/search/functions_4.js +++ b/search/functions_4.js @@ -1,6 +1,6 @@ var searchData= [ - ['get_5fcpu_5ffrequency_0',['get_cpu_frequency',['../system_8h.html#a96fa401b65736262fc29cc0537bed03e',1,'system.h']]], + ['get_5fcpu_5ffrequency_0',['get_cpu_frequency',['../group__system.html#ga96fa401b65736262fc29cc0537bed03e',1,'system.h']]], ['gfx_5fdraw_5fchar_1',['gfx_draw_char',['../gfx_8h.html#a5b59e00c08f5d1fd885e1e8047bfd6c5',1,'gfx.c']]], ['gfx_5fdraw_5fcircle_2',['gfx_draw_circle',['../gfx_8h.html#a0e7d434468150b90226c04f93ca04eee',1,'gfx.c']]], ['gfx_5fdraw_5fhline_3',['gfx_draw_hline',['../gfx_8h.html#a86c12e8e89f71a28150038a94c4efe10',1,'gfx.c']]], diff --git a/search/functions_5.js b/search/functions_5.js index 43a9441..c1c252e 100644 --- a/search/functions_5.js +++ b/search/functions_5.js @@ -1,13 +1,14 @@ var searchData= [ - ['i2c_5fdisable_0',['i2c_disable',['../i2c_8h.html#abe70f8fe4c72329b89ec526c749f50d7',1,'i2c.h']]], - ['i2c_5fdisable_5finstance_1',['i2c_disable_instance',['../i2c_8h.html#a9cc8d8299e418b944243a96fa8adc996',1,'i2c.c']]], - ['i2c_5fenable_2',['i2c_enable',['../i2c_8h.html#a5a1923e2271df541e858cb4e05d7b895',1,'i2c.h']]], - ['i2c_5fenable_5finstance_3',['i2c_enable_instance',['../i2c_8h.html#a88da4919a13ca41408ae8eafdab3855f',1,'i2c.c']]], - ['i2c_5finit_4',['i2c_init',['../i2c_8h.html#a5730d9445429351b9f750084c5cb5aae',1,'i2c.h']]], - ['i2c_5finit_5finstance_5',['i2c_init_instance',['../i2c_8h.html#ae0163192e71ff834062fcb7591b01e29',1,'i2c.c']]], - ['i2c_5fread_6',['i2c_read',['../i2c_8h.html#ae5074c1f6733c42bf7ccbd771ad2496c',1,'i2c.h']]], - ['i2c_5fread_5finstance_7',['i2c_read_instance',['../i2c_8h.html#a64cffaf51a6050fb5e58cb35a52e5179',1,'i2c.c']]], - ['i2c_5fwrite_8',['i2c_write',['../i2c_8h.html#a5e6b5b5c02987f6b23765799809d9b25',1,'i2c.h']]], - ['i2c_5fwrite_5finstance_9',['i2c_write_instance',['../i2c_8h.html#a2f2ad75c678b2e0ebafd9c9686d38674',1,'i2c.c']]] + ['i2c_5fdisable_0',['i2c_disable',['../group__i2c.html#gabe70f8fe4c72329b89ec526c749f50d7',1,'i2c.h']]], + ['i2c_5fdisable_5finstance_1',['i2c_disable_instance',['../group__i2c.html#ga9cc8d8299e418b944243a96fa8adc996',1,'i2c_disable_instance(uint8_t sercom): i2c.c'],['../group__i2c.html#ga9cc8d8299e418b944243a96fa8adc996',1,'i2c_disable_instance(uint8_t sercom): i2c.c']]], + ['i2c_5fenable_2',['i2c_enable',['../group__i2c.html#ga5a1923e2271df541e858cb4e05d7b895',1,'i2c.h']]], + ['i2c_5fenable_5finstance_3',['i2c_enable_instance',['../group__i2c.html#ga88da4919a13ca41408ae8eafdab3855f',1,'i2c_enable_instance(uint8_t sercom): i2c.c'],['../group__i2c.html#ga88da4919a13ca41408ae8eafdab3855f',1,'i2c_enable_instance(uint8_t sercom): i2c.c']]], + ['i2c_5finit_4',['i2c_init',['../group__i2c.html#ga5730d9445429351b9f750084c5cb5aae',1,'i2c.h']]], + ['i2c_5finit_5finstance_5',['i2c_init_instance',['../group__i2c.html#gae0163192e71ff834062fcb7591b01e29',1,'i2c_init_instance(uint8_t sercom, uint32_t baud): i2c.c'],['../group__i2c.html#gae0163192e71ff834062fcb7591b01e29',1,'i2c_init_instance(uint8_t sercom, uint32_t baud): i2c.c']]], + ['i2c_5fread_6',['i2c_read',['../group__i2c.html#gae5074c1f6733c42bf7ccbd771ad2496c',1,'i2c.h']]], + ['i2c_5fread_5finstance_7',['i2c_read_instance',['../group__i2c.html#ga64cffaf51a6050fb5e58cb35a52e5179',1,'i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len): i2c.c'],['../group__i2c.html#ga64cffaf51a6050fb5e58cb35a52e5179',1,'i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len): i2c.c']]], + ['i2c_5fwrite_8',['i2c_write',['../group__i2c.html#ga5e6b5b5c02987f6b23765799809d9b25',1,'i2c.h']]], + ['i2c_5fwrite_5finstance_9',['i2c_write_instance',['../group__i2c.html#ga2f2ad75c678b2e0ebafd9c9686d38674',1,'i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len): i2c.c'],['../group__i2c.html#ga2f2ad75c678b2e0ebafd9c9686d38674',1,'i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len): i2c.c']]], + ['i2s_5finit_10',['i2s_init',['../group__i2s.html#gaff2b590eefc8ca2aa72f83563eeedd76',1,'i2s.h']]] ]; diff --git a/search/functions_6.js b/search/functions_6.js index c7fd657..52c0bf5 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -1,12 +1,12 @@ var searchData= [ - ['opamp_5fdisable_0',['opamp_disable',['../opamp_8h.html#a0dcff33b01f135e8608d0bb90a758e8a',1,'opamp.c']]], - ['opamp_5fenable_1',['opamp_enable',['../opamp_8h.html#a92d4aa1c45921733f297129e39161fb4',1,'opamp.c']]], - ['opamp_5finit_2',['opamp_init',['../opamp_8h.html#a1f92b0993e68ddbf650bd02873de8fcd',1,'opamp.c']]], - ['opamp_5fset_5fanalog_5fconnection_3',['opamp_set_analog_connection',['../opamp_8h.html#aa41c70604826026b22c95f1b0448c642',1,'opamp.c']]], - ['opamp_5fset_5fmuxneg_4',['opamp_set_muxneg',['../opamp_8h.html#aae5d775bcd2c346190b9b3c321c528bc',1,'opamp.c']]], - ['opamp_5fset_5fmuxpos_5',['opamp_set_muxpos',['../opamp_8h.html#acdac2a6f48d8d0eca22f3618a7c2bd17',1,'opamp.c']]], - ['opamp_5fset_5fpotmux_6',['opamp_set_potmux',['../opamp_8h.html#a03227184722fe89e01e8f1fa00df63e3',1,'opamp.c']]], - ['opamp_5fset_5fres1mux_7',['opamp_set_res1mux',['../opamp_8h.html#abb5b017b5571c2bbc53330f54ba79971',1,'opamp.c']]], - ['opamp_5fset_5fres2mux_8',['opamp_set_res2mux',['../opamp_8h.html#ab9f7e0d2fbaf34171563d8c1ceb5f3b8',1,'opamp.c']]] + ['opamp_5fdisable_0',['opamp_disable',['../group__opamp.html#ga0dcff33b01f135e8608d0bb90a758e8a',1,'opamp_disable(uint16_t instance): opamp.c'],['../group__opamp.html#ga0dcff33b01f135e8608d0bb90a758e8a',1,'opamp_disable(uint16_t instance): opamp.c']]], + ['opamp_5fenable_1',['opamp_enable',['../group__opamp.html#ga92d4aa1c45921733f297129e39161fb4',1,'opamp_enable(uint16_t instance): opamp.c'],['../group__opamp.html#ga92d4aa1c45921733f297129e39161fb4',1,'opamp_enable(uint16_t instance): opamp.c']]], + ['opamp_5finit_2',['opamp_init',['../group__opamp.html#ga1f92b0993e68ddbf650bd02873de8fcd',1,'opamp_init(void): opamp.c'],['../group__opamp.html#ga1f92b0993e68ddbf650bd02873de8fcd',1,'opamp_init(void): opamp.c']]], + ['opamp_5fset_5fanalog_5fconnection_3',['opamp_set_analog_connection',['../group__opamp.html#gaa41c70604826026b22c95f1b0448c642',1,'opamp_set_analog_connection(uint16_t instance, bool connected): opamp.c'],['../group__opamp.html#gaa41c70604826026b22c95f1b0448c642',1,'opamp_set_analog_connection(uint16_t instance, bool connected): opamp.c']]], + ['opamp_5fset_5fmuxneg_4',['opamp_set_muxneg',['../group__opamp.html#gaae5d775bcd2c346190b9b3c321c528bc',1,'opamp_set_muxneg(uint16_t instance, uint8_t muxneg): opamp.c'],['../group__opamp.html#gaae5d775bcd2c346190b9b3c321c528bc',1,'opamp_set_muxneg(uint16_t instance, uint8_t muxneg): opamp.c']]], + ['opamp_5fset_5fmuxpos_5',['opamp_set_muxpos',['../group__opamp.html#gacdac2a6f48d8d0eca22f3618a7c2bd17',1,'opamp_set_muxpos(uint16_t instance, uint8_t muxpos): opamp.c'],['../group__opamp.html#gacdac2a6f48d8d0eca22f3618a7c2bd17',1,'opamp_set_muxpos(uint16_t instance, uint8_t muxpos): opamp.c']]], + ['opamp_5fset_5fpotmux_6',['opamp_set_potmux',['../group__opamp.html#ga03227184722fe89e01e8f1fa00df63e3',1,'opamp_set_potmux(uint16_t instance, uint8_t potmux): opamp.c'],['../group__opamp.html#ga03227184722fe89e01e8f1fa00df63e3',1,'opamp_set_potmux(uint16_t instance, uint8_t potmux): opamp.c']]], + ['opamp_5fset_5fres1mux_7',['opamp_set_res1mux',['../group__opamp.html#gabb5b017b5571c2bbc53330f54ba79971',1,'opamp_set_res1mux(uint16_t instance, uint8_t res1mux): opamp.c'],['../group__opamp.html#gabb5b017b5571c2bbc53330f54ba79971',1,'opamp_set_res1mux(uint16_t instance, uint8_t res1mux): opamp.c']]], + ['opamp_5fset_5fres2mux_8',['opamp_set_res2mux',['../group__opamp.html#gab9f7e0d2fbaf34171563d8c1ceb5f3b8',1,'opamp_set_res2mux(uint16_t instance, uint8_t res2mux): opamp.c'],['../group__opamp.html#gab9f7e0d2fbaf34171563d8c1ceb5f3b8',1,'opamp_set_res2mux(uint16_t instance, uint8_t res2mux): opamp.c']]] ]; diff --git a/search/functions_7.js b/search/functions_7.js index e1d6011..0374ffa 100644 --- a/search/functions_7.js +++ b/search/functions_7.js @@ -1,11 +1,6 @@ var searchData= [ - ['rtc_5fconfigure_5fcallback_0',['rtc_configure_callback',['../rtc_8h.html#a8dd6108752ed8c8e5dad649d650dc1d5',1,'rtc.c']]], - ['rtc_5fdisable_5falarm_5finterrupt_1',['rtc_disable_alarm_interrupt',['../rtc_8h.html#a0b927833b5d5d87ec161a8c9cb14d633',1,'rtc.c']]], - ['rtc_5fenable_2',['rtc_enable',['../rtc_8h.html#abec68bd2863d22f5a8e12ab89f8134f4',1,'rtc.c']]], - ['rtc_5fenable_5falarm_5finterrupt_3',['rtc_enable_alarm_interrupt',['../rtc_8h.html#a7ed60d3c6eddb662a798903454a60f5c',1,'rtc.c']]], - ['rtc_5fget_5fdate_5ftime_4',['rtc_get_date_time',['../rtc_8h.html#a728694478350f90fa205569ee72a4d55',1,'rtc.c']]], - ['rtc_5finit_5',['rtc_init',['../rtc_8h.html#acf9024748b942a7ae375cf75951afa9c',1,'rtc.c']]], - ['rtc_5fis_5fenabled_6',['rtc_is_enabled',['../rtc_8h.html#a72309e05f8aa147cfdd0eb6ac2037889',1,'rtc.c']]], - ['rtc_5fset_5fdate_5ftime_7',['rtc_set_date_time',['../rtc_8h.html#a16c55e20ebca1f6501626e39a38c6425',1,'rtc.c']]] + ['ptc_5fenable_0',['ptc_enable',['../group__ptc.html#gafbc1fa996f33108befc84cedd94b68b2',1,'ptc_enable(uint8_t channel): ptc.c'],['../group__ptc.html#gafbc1fa996f33108befc84cedd94b68b2',1,'ptc_enable(uint8_t channel): ptc.c']]], + ['ptc_5fget_5fvalue_1',['ptc_get_value',['../group__ptc.html#gaf86d00f3378b8d43718387b2af099295',1,'ptc_get_value(uint8_t channel): ptc.c'],['../group__ptc.html#gaf86d00f3378b8d43718387b2af099295',1,'ptc_get_value(uint8_t channel): ptc.c']]], + ['ptc_5finit_2',['ptc_init',['../group__ptc.html#gabede495b29954eccc7f30f4841c1d847',1,'ptc_init(void): ptc.c'],['../group__ptc.html#gabede495b29954eccc7f30f4841c1d847',1,'ptc_init(void): ptc.c']]] ]; diff --git a/search/functions_8.js b/search/functions_8.js index 7e05b52..620776c 100644 --- a/search/functions_8.js +++ b/search/functions_8.js @@ -1,15 +1,11 @@ var searchData= [ - ['set_5fcpu_5ffrequency_0',['set_cpu_frequency',['../system_8h.html#a4f33e5a16dba970fa7064ea27287fcba',1,'system.h']]], - ['sh1107_5fbegin_1',['sh1107_begin',['../sh1107_8h.html#aed0009c4be3de7d50eb4c7b195460c7c',1,'sh1107.c']]], - ['sh1107_5fupdate_2',['sh1107_update',['../sh1107_8h.html#af07fc90517a99581d8fb86c73ff40270',1,'sh1107.c']]], - ['spi_5fdisable_3',['spi_disable',['../spi_8h.html#aa8d2d6d1632faf9abbe03c3ed90d54d4',1,'spi.h']]], - ['spi_5fdisable_5finstance_4',['spi_disable_instance',['../spi_8h.html#a3856b233dc7584708ab420d41c4816fe',1,'spi.c']]], - ['spi_5fenable_5',['spi_enable',['../spi_8h.html#a72cf41d2f19954fefd27f681d6b39532',1,'spi.h']]], - ['spi_5fenable_5finstance_6',['spi_enable_instance',['../spi_8h.html#a8f1915874847b4564ab22039f2b8762f',1,'spi.c']]], - ['spi_5finit_7',['spi_init',['../spi_8h.html#a48ef10ade34f68b96d36dee03ebc4415',1,'spi.h']]], - ['spi_5finit_5finstance_8',['spi_init_instance',['../spi_8h.html#aee8eaa5f597d774c4fc4a6f7d6d08305',1,'spi.c']]], - ['spi_5ftransfer_9',['spi_transfer',['../spi_8h.html#a50084189a01c481aebe4e4d1e1968910',1,'spi.h']]], - ['spi_5ftransfer_5finstance_10',['spi_transfer_instance',['../spi_8h.html#a03d51191e1fb189fcddf1087999d58a2',1,'spi.c']]], - ['sys_5finit_11',['sys_init',['../system_8h.html#af411a8bc6b7ed4b0af9114e10c959448',1,'system.h']]] + ['rtc_5fconfigure_5fcallback_0',['rtc_configure_callback',['../group__rtc.html#ga8dd6108752ed8c8e5dad649d650dc1d5',1,'rtc_configure_callback(rtc_cb_t callback): rtc.c'],['../group__rtc.html#ga8dd6108752ed8c8e5dad649d650dc1d5',1,'rtc_configure_callback(rtc_cb_t callback): rtc.c']]], + ['rtc_5fdisable_5falarm_5finterrupt_1',['rtc_disable_alarm_interrupt',['../group__rtc.html#ga0b927833b5d5d87ec161a8c9cb14d633',1,'rtc_disable_alarm_interrupt(void): rtc.c'],['../group__rtc.html#ga0b927833b5d5d87ec161a8c9cb14d633',1,'rtc_disable_alarm_interrupt(void): rtc.c']]], + ['rtc_5fenable_2',['rtc_enable',['../group__rtc.html#gabec68bd2863d22f5a8e12ab89f8134f4',1,'rtc_enable(void): rtc.c'],['../group__rtc.html#gabec68bd2863d22f5a8e12ab89f8134f4',1,'rtc_enable(void): rtc.c']]], + ['rtc_5fenable_5falarm_5finterrupt_3',['rtc_enable_alarm_interrupt',['../group__rtc.html#ga7ed60d3c6eddb662a798903454a60f5c',1,'rtc_enable_alarm_interrupt(rtc_date_time_t alarm_time, rtc_alarm_match_t mask): rtc.c'],['../group__rtc.html#ga7ed60d3c6eddb662a798903454a60f5c',1,'rtc_enable_alarm_interrupt(rtc_date_time_t alarm_time, rtc_alarm_match_t mask): rtc.c']]], + ['rtc_5fget_5fdate_5ftime_4',['rtc_get_date_time',['../group__rtc.html#ga728694478350f90fa205569ee72a4d55',1,'rtc_get_date_time(void): rtc.c'],['../group__rtc.html#ga728694478350f90fa205569ee72a4d55',1,'rtc_get_date_time(void): rtc.c']]], + ['rtc_5finit_5',['rtc_init',['../group__rtc.html#gacf9024748b942a7ae375cf75951afa9c',1,'rtc_init(void): rtc.c'],['../group__rtc.html#gacf9024748b942a7ae375cf75951afa9c',1,'rtc_init(void): rtc.c']]], + ['rtc_5fis_5fenabled_6',['rtc_is_enabled',['../group__rtc.html#ga72309e05f8aa147cfdd0eb6ac2037889',1,'rtc_is_enabled(void): rtc.c'],['../group__rtc.html#ga72309e05f8aa147cfdd0eb6ac2037889',1,'rtc_is_enabled(void): rtc.c']]], + ['rtc_5fset_5fdate_5ftime_7',['rtc_set_date_time',['../group__rtc.html#ga16c55e20ebca1f6501626e39a38c6425',1,'rtc_set_date_time(rtc_date_time_t date_time): rtc.c'],['../group__rtc.html#ga16c55e20ebca1f6501626e39a38c6425',1,'rtc_set_date_time(rtc_date_time_t date_time): rtc.c']]] ]; diff --git a/search/functions_9.js b/search/functions_9.js index 7180047..9a0ea5e 100644 --- a/search/functions_9.js +++ b/search/functions_9.js @@ -1,41 +1,28 @@ var searchData= [ - ['tc_5fcount16_5fget_5fcount_0',['tc_count16_get_count',['../tc_8h.html#a2e534df47672eea4460487ab3fe1e123',1,'tc.c']]], - ['tc_5fcount16_5fset_5fcc_1',['tc_count16_set_cc',['../tc_8h.html#a30b584892c4a1cfce9ddc70933776e7e',1,'tc.c']]], - ['tc_5fcount16_5fset_5fcount_2',['tc_count16_set_count',['../tc_8h.html#a2b52ab8a84db926117b40c7c6d6447d6',1,'tc.c']]], - ['tc_5fcount32_5fget_5fcount_3',['tc_count32_get_count',['../tc_8h.html#aa5879a623b3133654d474decb14b61f8',1,'tc.c']]], - ['tc_5fcount32_5fset_5fcc_4',['tc_count32_set_cc',['../tc_8h.html#a5078d0682876c8bcabbf8da7944865e8',1,'tc.c']]], - ['tc_5fcount32_5fset_5fcount_5',['tc_count32_set_count',['../tc_8h.html#a4136a7369f7b79b4a1d29575c1f1f9d8',1,'tc.c']]], - ['tc_5fcount8_5fget_5fcount_6',['tc_count8_get_count',['../tc_8h.html#a0350dc913a38a4e3b27b441510a614ba',1,'tc.c']]], - ['tc_5fcount8_5fget_5fperiod_7',['tc_count8_get_period',['../tc_8h.html#a993860f6b38c672f9ca6ae1b60452282',1,'tc.c']]], - ['tc_5fcount8_5fset_5fcc_8',['tc_count8_set_cc',['../tc_8h.html#a8862d572676201371406b19746198c45',1,'tc.c']]], - ['tc_5fcount8_5fset_5fcount_9',['tc_count8_set_count',['../tc_8h.html#a363974408ab3135aaf6529cadfd5195b',1,'tc.c']]], - ['tc_5fcount8_5fset_5fperiod_10',['tc_count8_set_period',['../tc_8h.html#ab18ace8a5dd07d75cb9e6957d9e2658c',1,'tc.c']]], - ['tc_5fdisable_11',['tc_disable',['../tc_8h.html#af2ed5cb964a3f29663b89bfc2a661caf',1,'tc.c']]], - ['tc_5fenable_12',['tc_enable',['../tc_8h.html#a2715d5a6f20298805eefa13a8a7a1b99',1,'tc.c']]], - ['tc_5finit_13',['tc_init',['../tc_8h.html#a1ccf965a51a89fb1df2545988d4739d2',1,'tc.c']]], - ['tc_5fis_5fenabled_14',['tc_is_enabled',['../tc_8h.html#a1b71bab26fe6c8796a723a10fba63b6b',1,'tc.c']]], - ['tc_5fretrigger_15',['tc_retrigger',['../tc_8h.html#aabc141b06b22193abcb931edf634a7f5',1,'tc.c']]], - ['tc_5fset_5fchannel_5fpolarity_16',['tc_set_channel_polarity',['../tc_8h.html#afd02ffa629bde002a06ad16a570177ac',1,'tc.c']]], - ['tc_5fset_5fcounter_5fmode_17',['tc_set_counter_mode',['../tc_8h.html#abbb61997f4579d174976dcc8e858c87a',1,'tc.c']]], - ['tc_5fset_5fevent_5faction_18',['tc_set_event_action',['../tc_8h.html#a59bb895d55ef97120fac8149ec78bc47',1,'tc.c']]], - ['tc_5fset_5frun_5fin_5fstandby_19',['tc_set_run_in_standby',['../tc_8h.html#a0dec44fc5db357209ea67b67607c7e81',1,'tc.c']]], - ['tc_5fset_5fwavegen_20',['tc_set_wavegen',['../tc_8h.html#affa4b9e60ccf8ba52074f3f2f28d8823',1,'tc.c']]], - ['tc_5fstop_21',['tc_stop',['../tc_8h.html#a15eaf925943d7ba804ecd8bd466a4b14',1,'tc.c']]], - ['tcc_5fdisable_22',['tcc_disable',['../tcc_8h.html#a14a335ba34333f27e6460bf1cf659177',1,'tcc.c']]], - ['tcc_5fenable_23',['tcc_enable',['../tcc_8h.html#a6ac612aa1426900df32765fb71e79918',1,'tcc.c']]], - ['tcc_5fget_5fcount_24',['tcc_get_count',['../tcc_8h.html#a52b25028c793c126d85096049f1b1f75',1,'tcc.c']]], - ['tcc_5fget_5fperiod_25',['tcc_get_period',['../tcc_8h.html#a4123d9f15758b550c9f47ae3bf851a23',1,'tcc.c']]], - ['tcc_5finit_26',['tcc_init',['../tcc_8h.html#a55f68c3649be5d58b0e422ad94224b94',1,'tcc.c']]], - ['tcc_5fis_5fenabled_27',['tcc_is_enabled',['../tcc_8h.html#a5797bec545a165a39f092514139f5b1e',1,'tcc.c']]], - ['tcc_5fretrigger_28',['tcc_retrigger',['../tcc_8h.html#ac9b0bb48f6116f8fb3e6036963ad5ac8',1,'tcc.c']]], - ['tcc_5fset_5fcc_29',['tcc_set_cc',['../tcc_8h.html#abbe2f7d3ec62ef888d0c905b03470531',1,'tcc.c']]], - ['tcc_5fset_5fchannel_5fpolarity_30',['tcc_set_channel_polarity',['../tcc_8h.html#aa449988b4bea75a5e018c01e38d6c058',1,'tcc.c']]], - ['tcc_5fset_5fcount_31',['tcc_set_count',['../tcc_8h.html#a287f26e06ce521f40c6f25190c1098c1',1,'tcc.c']]], - ['tcc_5fset_5foutput_5fmatrix_32',['tcc_set_output_matrix',['../tcc_8h.html#a5646c274366bca4fdbc220d732282f2e',1,'tcc.c']]], - ['tcc_5fset_5fperiod_33',['tcc_set_period',['../tcc_8h.html#a0e0c7fc6f5730d54bea797616d2471fc',1,'tcc.c']]], - ['tcc_5fset_5frun_5fin_5fstandby_34',['tcc_set_run_in_standby',['../tcc_8h.html#a273b5e8282d26fa117e00925e2a240cc',1,'tcc.c']]], - ['tcc_5fset_5fwavegen_35',['tcc_set_wavegen',['../tcc_8h.html#a7d6656d2bfabdc18ac7088094cb304a9',1,'tcc.c']]], - ['tcc_5fstop_36',['tcc_stop',['../tcc_8h.html#a9fccdb4bb693f6a77f5a808b8d5011b2',1,'tcc.c']]], - ['tcc_5fupdate_37',['tcc_update',['../tcc_8h.html#aa135529878d40c76aa1a8fdda73f5b39',1,'tcc.c']]] + ['set_5fcpu_5ffrequency_0',['set_cpu_frequency',['../group__system.html#ga4f33e5a16dba970fa7064ea27287fcba',1,'system.h']]], + ['sh1107_5fbegin_1',['sh1107_begin',['../sh1107_8h.html#aed0009c4be3de7d50eb4c7b195460c7c',1,'sh1107.c']]], + ['sh1107_5fupdate_2',['sh1107_update',['../sh1107_8h.html#af07fc90517a99581d8fb86c73ff40270',1,'sh1107.c']]], + ['slcd_5fclear_3',['slcd_clear',['../group__slcd.html#gae95a8c8448785a091418cde0ab46cde1',1,'slcd_clear(void): slcd.c'],['../group__slcd.html#gae95a8c8448785a091418cde0ab46cde1',1,'slcd_clear(void): slcd.c']]], + ['slcd_5fclear_5fsegment_4',['slcd_clear_segment',['../group__slcd.html#ga32700273cbcdb6bec5dbe35aadf675fe',1,'slcd_clear_segment(uint8_t com, uint8_t seg): slcd.c'],['../group__slcd.html#ga32700273cbcdb6bec5dbe35aadf675fe',1,'slcd_clear_segment(uint8_t com, uint8_t seg): slcd.c']]], + ['slcd_5fconfigure_5fblink_5',['slcd_configure_blink',['../group__slcd.html#gacf507491bc54005057442f48dffd22b5',1,'slcd_configure_blink(bool blink_all, uint8_t bss0, uint8_t bss1, uint8_t fc): slcd.c'],['../group__slcd.html#gacf507491bc54005057442f48dffd22b5',1,'slcd_configure_blink(bool blink_all, uint8_t bss0, uint8_t bss1, uint8_t fc): slcd.c']]], + ['slcd_5fconfigure_5fcircular_5fshift_5fanimation_6',['slcd_configure_circular_shift_animation',['../group__slcd.html#ga4e1060443dcfb767dc7bd6503c318f1b',1,'slcd_configure_circular_shift_animation(uint16_t initial_value, uint8_t size, slcd_csrshift_value_t shift_dir, uint8_t fc): slcd.c'],['../group__slcd.html#ga4e1060443dcfb767dc7bd6503c318f1b',1,'slcd_configure_circular_shift_animation(uint16_t initial_value, uint8_t size, slcd_csrshift_value_t shift_dir, uint8_t fc): slcd.c']]], + ['slcd_5fconfigure_5fframe_5fcounter_7',['slcd_configure_frame_counter',['../group__slcd.html#ga4ddbc9636249c6652d298a8c14fb1b19',1,'slcd_configure_frame_counter(uint8_t fc, uint8_t overflow_count, bool prescale): slcd.c'],['../group__slcd.html#ga4ddbc9636249c6652d298a8c14fb1b19',1,'slcd_configure_frame_counter(uint8_t fc, uint8_t overflow_count, bool prescale): slcd.c']]], + ['slcd_5fdisable_8',['slcd_disable',['../group__slcd.html#ga0f4187acb065db5da4cde95a729f17cf',1,'slcd_disable(void): slcd.c'],['../group__slcd.html#ga0f4187acb065db5da4cde95a729f17cf',1,'slcd_disable(void): slcd.c']]], + ['slcd_5fenable_9',['slcd_enable',['../group__slcd.html#gaf629b000ff5ce5ded0f46e2df795f8b3',1,'slcd_enable(void): slcd.c'],['../group__slcd.html#gaf629b000ff5ce5ded0f46e2df795f8b3',1,'slcd_enable(void): slcd.c']]], + ['slcd_5finit_10',['slcd_init',['../group__slcd.html#ga1d5b89a5e4f29c7d807794f9c25caaa1',1,'slcd_init(uint64_t lcd_pins, slcd_bias_value_t bias, slcd_duty_value_t duty, slcd_clocksource_value_t clocksource, slcd_prescaler_value_t prescaler, slcd_clockdiv_value_t clkdiv): slcd.c'],['../group__slcd.html#ga1d5b89a5e4f29c7d807794f9c25caaa1',1,'slcd_init(uint64_t lcd_pins, slcd_bias_value_t bias, slcd_duty_value_t duty, slcd_clocksource_value_t clocksource, slcd_prescaler_value_t prescaler, slcd_clockdiv_value_t clkdiv): slcd.c']]], + ['slcd_5fset_5fblink_5fenabled_11',['slcd_set_blink_enabled',['../group__slcd.html#gad12bde6c35bcea61572c6813281be416',1,'slcd_set_blink_enabled(bool enabled): slcd.c'],['../group__slcd.html#gad12bde6c35bcea61572c6813281be416',1,'slcd_set_blink_enabled(bool enabled): slcd.c']]], + ['slcd_5fset_5fcircular_5fshift_5fanimation_5fenabled_12',['slcd_set_circular_shift_animation_enabled',['../group__slcd.html#ga4dec2a1983ffc4fd4c69b31d8fc06b1a',1,'slcd_set_circular_shift_animation_enabled(bool enabled): slcd.c'],['../group__slcd.html#ga4dec2a1983ffc4fd4c69b31d8fc06b1a',1,'slcd_set_circular_shift_animation_enabled(bool enabled): slcd.c']]], + ['slcd_5fset_5fcontrast_13',['slcd_set_contrast',['../group__slcd.html#gac39467715e72b5336855708198be9b05',1,'slcd_set_contrast(uint8_t contrast): slcd.c'],['../group__slcd.html#gac39467715e72b5336855708198be9b05',1,'slcd_set_contrast(uint8_t contrast): slcd.c']]], + ['slcd_5fset_5fframe_5fcounter_5fenabled_14',['slcd_set_frame_counter_enabled',['../group__slcd.html#gaa49c7c6c125badffdf00d71a96e989ee',1,'slcd_set_frame_counter_enabled(uint8_t fc, bool enabled): slcd.c'],['../group__slcd.html#gaa49c7c6c125badffdf00d71a96e989ee',1,'slcd_set_frame_counter_enabled(uint8_t fc, bool enabled): slcd.c']]], + ['slcd_5fset_5fsegment_15',['slcd_set_segment',['../group__slcd.html#gafa6a244c0634d7009cb70b4fe9c2bd54',1,'slcd_set_segment(uint8_t com, uint8_t seg): slcd.c'],['../group__slcd.html#gafa6a244c0634d7009cb70b4fe9c2bd54',1,'slcd_set_segment(uint8_t com, uint8_t seg): slcd.c']]], + ['spi_5fdisable_16',['spi_disable',['../group__spi.html#gaa8d2d6d1632faf9abbe03c3ed90d54d4',1,'spi.h']]], + ['spi_5fdisable_5finstance_17',['spi_disable_instance',['../group__spi.html#ga3856b233dc7584708ab420d41c4816fe',1,'spi_disable_instance(uint8_t sercom): spi.c'],['../group__spi.html#ga3856b233dc7584708ab420d41c4816fe',1,'spi_disable_instance(uint8_t sercom): spi.c']]], + ['spi_5fenable_18',['spi_enable',['../group__spi.html#ga72cf41d2f19954fefd27f681d6b39532',1,'spi.h']]], + ['spi_5fenable_5finstance_19',['spi_enable_instance',['../group__spi.html#ga8f1915874847b4564ab22039f2b8762f',1,'spi_enable_instance(uint8_t sercom): spi.c'],['../group__spi.html#ga8f1915874847b4564ab22039f2b8762f',1,'spi_enable_instance(uint8_t sercom): spi.c']]], + ['spi_5finit_20',['spi_init',['../group__spi.html#ga48ef10ade34f68b96d36dee03ebc4415',1,'spi.h']]], + ['spi_5finit_5finstance_21',['spi_init_instance',['../group__spi.html#gaee8eaa5f597d774c4fc4a6f7d6d08305',1,'spi_init_instance(uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud): spi.c'],['../group__spi.html#gaee8eaa5f597d774c4fc4a6f7d6d08305',1,'spi_init_instance(uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud): spi.c']]], + ['spi_5ftransfer_22',['spi_transfer',['../group__spi.html#ga50084189a01c481aebe4e4d1e1968910',1,'spi.h']]], + ['spi_5ftransfer_5finstance_23',['spi_transfer_instance',['../group__spi.html#ga03d51191e1fb189fcddf1087999d58a2',1,'spi_transfer_instance(uint8_t sercom, uint8_t data): spi.c'],['../group__spi.html#ga03d51191e1fb189fcddf1087999d58a2',1,'spi_transfer_instance(uint8_t sercom, uint8_t data): spi.c']]], + ['sys_5finit_24',['sys_init',['../group__system.html#gaf411a8bc6b7ed4b0af9114e10c959448',1,'system.h']]] ]; diff --git a/search/functions_a.js b/search/functions_a.js index 94af3b9..d574894 100644 --- a/search/functions_a.js +++ b/search/functions_a.js @@ -1,20 +1,41 @@ var searchData= [ - ['uart_5fdisable_0',['uart_disable',['../uart_8h.html#a9dbcc0696f2607e16da1f55d3b4d6d94',1,'uart.h']]], - ['uart_5fdisable_5finstance_1',['uart_disable_instance',['../uart_8h.html#a22b6636b750bfa7669521d5be5baed82',1,'uart.c']]], - ['uart_5fenable_2',['uart_enable',['../uart_8h.html#affcbd24efeade3b1444100dbbc614e88',1,'uart.h']]], - ['uart_5fenable_5finstance_3',['uart_enable_instance',['../uart_8h.html#ad390de8c3b3ddcb3d03a36513262528d',1,'uart.c']]], - ['uart_5finit_4',['uart_init',['../uart_8h.html#ad8f6a793347af79ca41a3363dbd3fd96',1,'uart.h']]], - ['uart_5finit_5finstance_5',['uart_init_instance',['../uart_8h.html#a9e514ab7ce443e2fd91fbe99bf8cb207',1,'uart.c']]], - ['uart_5firq_5fhandler_6',['uart_irq_handler',['../uart_8h.html#a3d2a4f57b803f517096c373734ffa78b',1,'uart.c']]], - ['uart_5fread_7',['uart_read',['../uart_8h.html#acb00b8879d87fea2a41df7f2772c916c',1,'uart.h']]], - ['uart_5fread_5fbyte_8',['uart_read_byte',['../uart_8h.html#a6c3fa8ab576e34e015d469a2734d3292',1,'uart.h']]], - ['uart_5fread_5fbyte_5finstance_9',['uart_read_byte_instance',['../uart_8h.html#afb3971f7bde4d345bc981b87866267c9',1,'uart.c']]], - ['uart_5fread_5finstance_10',['uart_read_instance',['../uart_8h.html#a3ab7120aad2e941879ac328479d40af3',1,'uart.c']]], - ['uart_5fset_5firda_5fmode_11',['uart_set_irda_mode',['../uart_8h.html#afdbbf43dd9af325b1cae5d5318853a8d',1,'uart.h']]], - ['uart_5fset_5firda_5fmode_5finstance_12',['uart_set_irda_mode_instance',['../uart_8h.html#a84eca02c048700d3f3ea086ff1e93451',1,'uart.c']]], - ['uart_5fset_5frun_5fin_5fstandby_13',['uart_set_run_in_standby',['../uart_8h.html#aa034660a70fb244c2e25187509985760',1,'uart.h']]], - ['uart_5fset_5frun_5fin_5fstandby_5finstance_14',['uart_set_run_in_standby_instance',['../uart_8h.html#a94d5de1ee0878b0fb2d92c3626c3da22',1,'uart.c']]], - ['uart_5fwrite_15',['uart_write',['../uart_8h.html#a6e0844dd68d04ca88f255b6c75326a70',1,'uart.h']]], - ['uart_5fwrite_5finstance_16',['uart_write_instance',['../uart_8h.html#ad53a035557ef05336ff3e45547b65861',1,'uart.c']]] + ['tc_5fcount16_5fget_5fcount_0',['tc_count16_get_count',['../group__tc.html#ga2e534df47672eea4460487ab3fe1e123',1,'tc_count16_get_count(uint8_t instance): tc.c'],['../group__tc.html#ga2e534df47672eea4460487ab3fe1e123',1,'tc_count16_get_count(uint8_t instance): tc.c']]], + ['tc_5fcount16_5fset_5fcc_1',['tc_count16_set_cc',['../group__tc.html#ga30b584892c4a1cfce9ddc70933776e7e',1,'tc_count16_set_cc(uint8_t instance, uint8_t channel, uint16_t value): tc.c'],['../group__tc.html#ga30b584892c4a1cfce9ddc70933776e7e',1,'tc_count16_set_cc(uint8_t instance, uint8_t channel, uint16_t value): tc.c']]], + ['tc_5fcount16_5fset_5fcount_2',['tc_count16_set_count',['../group__tc.html#ga2b52ab8a84db926117b40c7c6d6447d6',1,'tc_count16_set_count(uint8_t instance, uint16_t value): tc.c'],['../group__tc.html#ga2b52ab8a84db926117b40c7c6d6447d6',1,'tc_count16_set_count(uint8_t instance, uint16_t value): tc.c']]], + ['tc_5fcount32_5fget_5fcount_3',['tc_count32_get_count',['../group__tc.html#gaa5879a623b3133654d474decb14b61f8',1,'tc_count32_get_count(uint8_t instance): tc.c'],['../group__tc.html#gaa5879a623b3133654d474decb14b61f8',1,'tc_count32_get_count(uint8_t instance): tc.c']]], + ['tc_5fcount32_5fset_5fcc_4',['tc_count32_set_cc',['../group__tc.html#ga5078d0682876c8bcabbf8da7944865e8',1,'tc_count32_set_cc(uint8_t instance, uint8_t channel, uint32_t value): tc.c'],['../group__tc.html#ga5078d0682876c8bcabbf8da7944865e8',1,'tc_count32_set_cc(uint8_t instance, uint8_t channel, uint32_t value): tc.c']]], + ['tc_5fcount32_5fset_5fcount_5',['tc_count32_set_count',['../group__tc.html#ga4136a7369f7b79b4a1d29575c1f1f9d8',1,'tc_count32_set_count(uint8_t instance, uint32_t value): tc.c'],['../group__tc.html#ga4136a7369f7b79b4a1d29575c1f1f9d8',1,'tc_count32_set_count(uint8_t instance, uint32_t value): tc.c']]], + ['tc_5fcount8_5fget_5fcount_6',['tc_count8_get_count',['../group__tc.html#ga0350dc913a38a4e3b27b441510a614ba',1,'tc_count8_get_count(uint8_t instance): tc.c'],['../group__tc.html#ga0350dc913a38a4e3b27b441510a614ba',1,'tc_count8_get_count(uint8_t instance): tc.c']]], + ['tc_5fcount8_5fget_5fperiod_7',['tc_count8_get_period',['../group__tc.html#ga993860f6b38c672f9ca6ae1b60452282',1,'tc_count8_get_period(uint8_t instance): tc.c'],['../group__tc.html#ga993860f6b38c672f9ca6ae1b60452282',1,'tc_count8_get_period(uint8_t instance): tc.c']]], + ['tc_5fcount8_5fset_5fcc_8',['tc_count8_set_cc',['../group__tc.html#ga8862d572676201371406b19746198c45',1,'tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value): tc.c'],['../group__tc.html#ga8862d572676201371406b19746198c45',1,'tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value): tc.c']]], + ['tc_5fcount8_5fset_5fcount_9',['tc_count8_set_count',['../group__tc.html#ga363974408ab3135aaf6529cadfd5195b',1,'tc_count8_set_count(uint8_t instance, uint8_t value): tc.c'],['../group__tc.html#ga363974408ab3135aaf6529cadfd5195b',1,'tc_count8_set_count(uint8_t instance, uint8_t value): tc.c']]], + ['tc_5fcount8_5fset_5fperiod_10',['tc_count8_set_period',['../group__tc.html#gab18ace8a5dd07d75cb9e6957d9e2658c',1,'tc_count8_set_period(uint8_t instance, uint8_t period): tc.c'],['../group__tc.html#gab18ace8a5dd07d75cb9e6957d9e2658c',1,'tc_count8_set_period(uint8_t instance, uint8_t period): tc.c']]], + ['tc_5fdisable_11',['tc_disable',['../group__tc.html#gaf2ed5cb964a3f29663b89bfc2a661caf',1,'tc_disable(uint8_t instance): tc.c'],['../group__tc.html#gaf2ed5cb964a3f29663b89bfc2a661caf',1,'tc_disable(uint8_t instance): tc.c']]], + ['tc_5fenable_12',['tc_enable',['../group__tc.html#ga2715d5a6f20298805eefa13a8a7a1b99',1,'tc_enable(uint8_t instance): tc.c'],['../group__tc.html#ga2715d5a6f20298805eefa13a8a7a1b99',1,'tc_enable(uint8_t instance): tc.c']]], + ['tc_5finit_13',['tc_init',['../group__tc.html#ga1ccf965a51a89fb1df2545988d4739d2',1,'tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler): tc.c'],['../group__tc.html#ga1ccf965a51a89fb1df2545988d4739d2',1,'tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler): tc.c']]], + ['tc_5fis_5fenabled_14',['tc_is_enabled',['../group__tc.html#ga1b71bab26fe6c8796a723a10fba63b6b',1,'tc_is_enabled(uint8_t instance): tc.c'],['../group__tc.html#ga1b71bab26fe6c8796a723a10fba63b6b',1,'tc_is_enabled(uint8_t instance): tc.c']]], + ['tc_5fretrigger_15',['tc_retrigger',['../group__tc.html#gaabc141b06b22193abcb931edf634a7f5',1,'tc_retrigger(uint8_t instance): tc.c'],['../group__tc.html#gaabc141b06b22193abcb931edf634a7f5',1,'tc_retrigger(uint8_t instance): tc.c']]], + ['tc_5fset_5fchannel_5fpolarity_16',['tc_set_channel_polarity',['../group__tc.html#gafd02ffa629bde002a06ad16a570177ac',1,'tc_set_channel_polarity(uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity): tc.c'],['../group__tc.html#gafd02ffa629bde002a06ad16a570177ac',1,'tc_set_channel_polarity(uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity): tc.c']]], + ['tc_5fset_5fcounter_5fmode_17',['tc_set_counter_mode',['../group__tc.html#gabbb61997f4579d174976dcc8e858c87a',1,'tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode): tc.c'],['../group__tc.html#gabbb61997f4579d174976dcc8e858c87a',1,'tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode): tc.c']]], + ['tc_5fset_5fevent_5faction_18',['tc_set_event_action',['../group__tc.html#ga59bb895d55ef97120fac8149ec78bc47',1,'tc_set_event_action(uint8_t instance, tc_event_action_t action): tc.c'],['../group__tc.html#ga59bb895d55ef97120fac8149ec78bc47',1,'tc_set_event_action(uint8_t instance, tc_event_action_t action): tc.c']]], + ['tc_5fset_5frun_5fin_5fstandby_19',['tc_set_run_in_standby',['../group__tc.html#ga0dec44fc5db357209ea67b67607c7e81',1,'tc_set_run_in_standby(uint8_t instance, bool runStandby): tc.c'],['../group__tc.html#ga0dec44fc5db357209ea67b67607c7e81',1,'tc_set_run_in_standby(uint8_t instance, bool runStandby): tc.c']]], + ['tc_5fset_5fwavegen_20',['tc_set_wavegen',['../group__tc.html#gaffa4b9e60ccf8ba52074f3f2f28d8823',1,'tc_set_wavegen(uint8_t instance, tc_wavegen_t mode): tc.c'],['../group__tc.html#gaffa4b9e60ccf8ba52074f3f2f28d8823',1,'tc_set_wavegen(uint8_t instance, tc_wavegen_t mode): tc.c']]], + ['tc_5fstop_21',['tc_stop',['../group__tc.html#ga15eaf925943d7ba804ecd8bd466a4b14',1,'tc_stop(uint8_t instance): tc.c'],['../group__tc.html#ga15eaf925943d7ba804ecd8bd466a4b14',1,'tc_stop(uint8_t instance): tc.c']]], + ['tcc_5fdisable_22',['tcc_disable',['../group__tcc.html#ga14a335ba34333f27e6460bf1cf659177',1,'tcc_disable(uint8_t instance): tcc.c'],['../group__tcc.html#ga14a335ba34333f27e6460bf1cf659177',1,'tcc_disable(uint8_t instance): tcc.c']]], + ['tcc_5fenable_23',['tcc_enable',['../group__tcc.html#ga6ac612aa1426900df32765fb71e79918',1,'tcc_enable(uint8_t instance): tcc.c'],['../group__tcc.html#ga6ac612aa1426900df32765fb71e79918',1,'tcc_enable(uint8_t instance): tcc.c']]], + ['tcc_5fget_5fcount_24',['tcc_get_count',['../group__tcc.html#ga52b25028c793c126d85096049f1b1f75',1,'tcc_get_count(uint8_t instance): tcc.c'],['../group__tcc.html#ga52b25028c793c126d85096049f1b1f75',1,'tcc_get_count(uint8_t instance): tcc.c']]], + ['tcc_5fget_5fperiod_25',['tcc_get_period',['../group__tcc.html#ga4123d9f15758b550c9f47ae3bf851a23',1,'tcc_get_period(uint8_t instance): tcc.c'],['../group__tcc.html#ga4123d9f15758b550c9f47ae3bf851a23',1,'tcc_get_period(uint8_t instance): tcc.c']]], + ['tcc_5finit_26',['tcc_init',['../group__tcc.html#ga55f68c3649be5d58b0e422ad94224b94',1,'tcc_init(uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler): tcc.c'],['../group__tcc.html#ga55f68c3649be5d58b0e422ad94224b94',1,'tcc_init(uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler): tcc.c']]], + ['tcc_5fis_5fenabled_27',['tcc_is_enabled',['../group__tcc.html#ga5797bec545a165a39f092514139f5b1e',1,'tcc_is_enabled(uint8_t instance): tcc.c'],['../group__tcc.html#ga5797bec545a165a39f092514139f5b1e',1,'tcc_is_enabled(uint8_t instance): tcc.c']]], + ['tcc_5fretrigger_28',['tcc_retrigger',['../group__tcc.html#gac9b0bb48f6116f8fb3e6036963ad5ac8',1,'tcc_retrigger(uint8_t instance): tcc.c'],['../group__tcc.html#gac9b0bb48f6116f8fb3e6036963ad5ac8',1,'tcc_retrigger(uint8_t instance): tcc.c']]], + ['tcc_5fset_5fcc_29',['tcc_set_cc',['../group__tcc.html#gabbe2f7d3ec62ef888d0c905b03470531',1,'tcc_set_cc(uint8_t instance, uint8_t channel, uint32_t value, bool buffered): tcc.c'],['../group__tcc.html#gabbe2f7d3ec62ef888d0c905b03470531',1,'tcc_set_cc(uint8_t instance, uint8_t channel, uint32_t value, bool buffered): tcc.c']]], + ['tcc_5fset_5fchannel_5fpolarity_30',['tcc_set_channel_polarity',['../group__tcc.html#gaa449988b4bea75a5e018c01e38d6c058',1,'tcc_set_channel_polarity(uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity): tcc.c'],['../group__tcc.html#gaa449988b4bea75a5e018c01e38d6c058',1,'tcc_set_channel_polarity(uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity): tcc.c']]], + ['tcc_5fset_5fcount_31',['tcc_set_count',['../group__tcc.html#ga287f26e06ce521f40c6f25190c1098c1',1,'tcc_set_count(uint8_t instance, uint32_t value): tcc.c'],['../group__tcc.html#ga287f26e06ce521f40c6f25190c1098c1',1,'tcc_set_count(uint8_t instance, uint32_t value): tcc.c']]], + ['tcc_5fset_5foutput_5fmatrix_32',['tcc_set_output_matrix',['../group__tcc.html#ga5646c274366bca4fdbc220d732282f2e',1,'tcc_set_output_matrix(uint8_t instance, tcc_output_matrix_t mode): tcc.c'],['../group__tcc.html#ga5646c274366bca4fdbc220d732282f2e',1,'tcc_set_output_matrix(uint8_t instance, tcc_output_matrix_t mode): tcc.c']]], + ['tcc_5fset_5fperiod_33',['tcc_set_period',['../group__tcc.html#ga0e0c7fc6f5730d54bea797616d2471fc',1,'tcc_set_period(uint8_t instance, uint32_t period, bool buffered): tcc.c'],['../group__tcc.html#ga0e0c7fc6f5730d54bea797616d2471fc',1,'tcc_set_period(uint8_t instance, uint32_t period, bool buffered): tcc.c']]], + ['tcc_5fset_5frun_5fin_5fstandby_34',['tcc_set_run_in_standby',['../group__tcc.html#ga273b5e8282d26fa117e00925e2a240cc',1,'tcc_set_run_in_standby(uint8_t instance, bool runStandby): tcc.c'],['../group__tcc.html#ga273b5e8282d26fa117e00925e2a240cc',1,'tcc_set_run_in_standby(uint8_t instance, bool runStandby): tcc.c']]], + ['tcc_5fset_5fwavegen_35',['tcc_set_wavegen',['../group__tcc.html#ga7d6656d2bfabdc18ac7088094cb304a9',1,'tcc_set_wavegen(uint8_t instance, tcc_wavegen_t mode): tcc.c'],['../group__tcc.html#ga7d6656d2bfabdc18ac7088094cb304a9',1,'tcc_set_wavegen(uint8_t instance, tcc_wavegen_t mode): tcc.c']]], + ['tcc_5fstop_36',['tcc_stop',['../group__tcc.html#ga9fccdb4bb693f6a77f5a808b8d5011b2',1,'tcc_stop(uint8_t instance): tcc.c'],['../group__tcc.html#ga9fccdb4bb693f6a77f5a808b8d5011b2',1,'tcc_stop(uint8_t instance): tcc.c']]], + ['tcc_5fupdate_37',['tcc_update',['../group__tcc.html#gaa135529878d40c76aa1a8fdda73f5b39',1,'tcc_update(uint8_t instance): tcc.c'],['../group__tcc.html#gaa135529878d40c76aa1a8fdda73f5b39',1,'tcc_update(uint8_t instance): tcc.c']]] ]; diff --git a/search/functions_b.js b/search/functions_b.js index cf5d1a4..69dd505 100644 --- a/search/functions_b.js +++ b/search/functions_b.js @@ -1,4 +1,24 @@ var searchData= [ - ['yield_0',['yield',['../app_8h.html#a7cb51f5c2b5cad3766f19eb69c92793b',1,'app.h']]] + ['uart_5fdisable_0',['uart_disable',['../group__uart.html#ga9dbcc0696f2607e16da1f55d3b4d6d94',1,'uart.h']]], + ['uart_5fdisable_5finstance_1',['uart_disable_instance',['../group__uart.html#ga22b6636b750bfa7669521d5be5baed82',1,'uart_disable_instance(uint8_t sercom): uart.c'],['../group__uart.html#ga22b6636b750bfa7669521d5be5baed82',1,'uart_disable_instance(uint8_t sercom): uart.c']]], + ['uart_5fenable_2',['uart_enable',['../group__uart.html#gaffcbd24efeade3b1444100dbbc614e88',1,'uart.h']]], + ['uart_5fenable_5finstance_3',['uart_enable_instance',['../group__uart.html#gad390de8c3b3ddcb3d03a36513262528d',1,'uart_enable_instance(uint8_t sercom): uart.c'],['../group__uart.html#gad390de8c3b3ddcb3d03a36513262528d',1,'uart_enable_instance(uint8_t sercom): uart.c']]], + ['uart_5finit_4',['uart_init',['../group__uart.html#gad8f6a793347af79ca41a3363dbd3fd96',1,'uart.h']]], + ['uart_5finit_5finstance_5',['uart_init_instance',['../group__uart.html#ga9e514ab7ce443e2fd91fbe99bf8cb207',1,'uart_init_instance(uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud): uart.c'],['../group__uart.html#ga9e514ab7ce443e2fd91fbe99bf8cb207',1,'uart_init_instance(uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud): uart.c']]], + ['uart_5firq_5fhandler_6',['uart_irq_handler',['../group__uart.html#ga3d2a4f57b803f517096c373734ffa78b',1,'uart_irq_handler(uint8_t sercom): uart.c'],['../group__uart.html#ga3d2a4f57b803f517096c373734ffa78b',1,'uart_irq_handler(uint8_t sercom): uart.c']]], + ['uart_5fread_7',['uart_read',['../group__uart.html#gacb00b8879d87fea2a41df7f2772c916c',1,'uart.h']]], + ['uart_5fread_5fbyte_8',['uart_read_byte',['../group__uart.html#ga6c3fa8ab576e34e015d469a2734d3292',1,'uart.h']]], + ['uart_5fread_5fbyte_5finstance_9',['uart_read_byte_instance',['../group__uart.html#gafb3971f7bde4d345bc981b87866267c9',1,'uart_read_byte_instance(uint8_t sercom, uint8_t *byte): uart.c'],['../group__uart.html#gafb3971f7bde4d345bc981b87866267c9',1,'uart_read_byte_instance(uint8_t sercom, uint8_t *byte): uart.c']]], + ['uart_5fread_5finstance_10',['uart_read_instance',['../group__uart.html#ga3ab7120aad2e941879ac328479d40af3',1,'uart_read_instance(uint8_t sercom, uint8_t *data, size_t max_length): uart.c'],['../group__uart.html#ga3ab7120aad2e941879ac328479d40af3',1,'uart_read_instance(uint8_t sercom, uint8_t *data, size_t max_length): uart.c']]], + ['uart_5fset_5firda_5fmode_11',['uart_set_irda_mode',['../group__uart.html#gafdbbf43dd9af325b1cae5d5318853a8d',1,'uart.h']]], + ['uart_5fset_5firda_5fmode_5finstance_12',['uart_set_irda_mode_instance',['../group__uart.html#ga84eca02c048700d3f3ea086ff1e93451',1,'uart_set_irda_mode_instance(uint8_t sercom, bool irda): uart.c'],['../group__uart.html#ga84eca02c048700d3f3ea086ff1e93451',1,'uart_set_irda_mode_instance(uint8_t sercom, bool irda): uart.c']]], + ['uart_5fset_5frun_5fin_5fstandby_13',['uart_set_run_in_standby',['../group__uart.html#gaa034660a70fb244c2e25187509985760',1,'uart.h']]], + ['uart_5fset_5frun_5fin_5fstandby_5finstance_14',['uart_set_run_in_standby_instance',['../group__uart.html#ga94d5de1ee0878b0fb2d92c3626c3da22',1,'uart_set_run_in_standby_instance(uint8_t sercom, bool run_in_standby): uart.c'],['../group__uart.html#ga94d5de1ee0878b0fb2d92c3626c3da22',1,'uart_set_run_in_standby_instance(uint8_t sercom, bool run_in_standby): uart.c']]], + ['uart_5fwrite_15',['uart_write',['../group__uart.html#ga6e0844dd68d04ca88f255b6c75326a70',1,'uart.h']]], + ['uart_5fwrite_5finstance_16',['uart_write_instance',['../group__uart.html#gad53a035557ef05336ff3e45547b65861',1,'uart_write_instance(uint8_t sercom, uint8_t *data, size_t length): uart.c'],['../group__uart.html#gad53a035557ef05336ff3e45547b65861',1,'uart_write_instance(uint8_t sercom, uint8_t *data, size_t length): uart.c']]], + ['usb_5fdisable_17',['usb_disable',['../group__usb.html#ga4ac5d142ab3f1f170a37247f165b0963',1,'usb_disable(void): usb.c'],['../group__usb.html#ga4ac5d142ab3f1f170a37247f165b0963',1,'usb_disable(void): usb.c']]], + ['usb_5fenable_18',['usb_enable',['../group__usb.html#ga40bb3f8e62330e22fc9d7c49d682ae40',1,'usb_enable(void): usb.c'],['../group__usb.html#ga40bb3f8e62330e22fc9d7c49d682ae40',1,'usb_enable(void): usb.c']]], + ['usb_5finit_19',['usb_init',['../group__usb.html#gaddfbdb66f507ffcd08b4496531ed0a3d',1,'usb_init(void): usb.c'],['../group__usb.html#gaddfbdb66f507ffcd08b4496531ed0a3d',1,'usb_init(void): usb.c']]], + ['usb_5fis_5fenabled_20',['usb_is_enabled',['../group__usb.html#gaeff82d6f3bbd31aa4285c58eb8288ec2',1,'usb_is_enabled(void): usb.c'],['../group__usb.html#gaeff82d6f3bbd31aa4285c58eb8288ec2',1,'usb_is_enabled(void): usb.c']]] ]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 0000000..d73a53f --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yield_0',['yield',['../group__app.html#ga7cb51f5c2b5cad3766f19eb69c92793b',1,'app.h']]] +]; diff --git a/search/groups_0.js b/search/groups_0.js new file mode 100644 index 0000000..588e8f8 --- /dev/null +++ b/search/groups_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['access_20controller_0',['Direct Memory Access Controller',['../group__dma.html',1,'']]], + ['amplifier_1',['Operational Amplifier',['../group__opamp.html',1,'']]], + ['analog_20converter_2',['Digital to Analog Converter',['../group__dac.html',1,'']]], + ['analog_20to_20digital_20converter_3',['Analog to Digital Converter',['../group__adc.html',1,'']]], + ['application_20framework_4',['Gossamer application framework',['../group__app.html',1,'']]], + ['applications_5',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]] +]; diff --git a/search/groups_1.js b/search/groups_1.js new file mode 100644 index 0000000..8935d1f --- /dev/null +++ b/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bus_0',['Universal Serial Bus',['../group__usb.html',1,'']]] +]; diff --git a/search/groups_2.js b/search/groups_2.js new file mode 100644 index 0000000..50f4a27 --- /dev/null +++ b/search/groups_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['clock_0',['Real-Time Clock',['../group__rtc.html',1,'']]], + ['communications_20peripheral_1',['Inter-IC Communications Peripheral',['../group__i2c.html',1,'']]], + ['control_20applications_2',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]], + ['controller_3',['controller',['../group__dma.html',1,'Direct Memory Access Controller'],['../group__eic.html',1,'External Interrupt Controller'],['../group__ptc.html',1,'Peripheral Touch Controller']]], + ['converter_4',['converter',['../group__adc.html',1,'Analog to Digital Converter'],['../group__dac.html',1,'Digital to Analog Converter']]], + ['counter_5',['Timer/Counter',['../group__tc.html',1,'']]], + ['counter_20for_20control_20applications_6',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]] +]; diff --git a/search/groups_3.js b/search/groups_3.js new file mode 100644 index 0000000..ae4a281 --- /dev/null +++ b/search/groups_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['digital_20converter_0',['Analog to Digital Converter',['../group__adc.html',1,'']]], + ['digital_20to_20analog_20converter_1',['Digital to Analog Converter',['../group__dac.html',1,'']]], + ['direct_20memory_20access_20controller_2',['Direct Memory Access Controller',['../group__dma.html',1,'']]], + ['driver_3',['Segment LCD driver',['../group__slcd.html',1,'']]] +]; diff --git a/search/groups_4.js b/search/groups_4.js new file mode 100644 index 0000000..a77cd2c --- /dev/null +++ b/search/groups_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['event_20system_0',['Event System',['../group__evsys.html',1,'']]], + ['external_20interrupt_20controller_1',['External Interrupt Controller',['../group__eic.html',1,'']]] +]; diff --git a/search/groups_5.js b/search/groups_5.js new file mode 100644 index 0000000..b1e7584 --- /dev/null +++ b/search/groups_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['for_20control_20applications_0',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]], + ['framework_1',['Gossamer application framework',['../group__app.html',1,'']]] +]; diff --git a/search/groups_6.js b/search/groups_6.js new file mode 100644 index 0000000..65ac37e --- /dev/null +++ b/search/groups_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gossamer_20application_20framework_0',['Gossamer application framework',['../group__app.html',1,'']]] +]; diff --git a/search/groups_7.js b/search/groups_7.js new file mode 100644 index 0000000..0e3d880 --- /dev/null +++ b/search/groups_7.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['ic_20communications_20peripheral_0',['Inter-IC Communications Peripheral',['../group__i2c.html',1,'']]], + ['ic_20sound_20interface_1',['Inter-IC Sound interface',['../group__i2s.html',1,'']]], + ['inter_20ic_20communications_20peripheral_2',['Inter-IC Communications Peripheral',['../group__i2c.html',1,'']]], + ['inter_20ic_20sound_20interface_3',['Inter-IC Sound interface',['../group__i2s.html',1,'']]], + ['interface_4',['Inter-IC Sound interface',['../group__i2s.html',1,'']]], + ['internals_5',['System Internals',['../group__system.html',1,'']]], + ['interrupt_20controller_6',['External Interrupt Controller',['../group__eic.html',1,'']]] +]; diff --git a/search/groups_8.js b/search/groups_8.js new file mode 100644 index 0000000..b93144c --- /dev/null +++ b/search/groups_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lcd_20driver_0',['Segment LCD driver',['../group__slcd.html',1,'']]] +]; diff --git a/search/groups_9.js b/search/groups_9.js new file mode 100644 index 0000000..35eb7f4 --- /dev/null +++ b/search/groups_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['memory_20access_20controller_0',['Direct Memory Access Controller',['../group__dma.html',1,'']]] +]; diff --git a/search/groups_a.js b/search/groups_a.js new file mode 100644 index 0000000..a2391eb --- /dev/null +++ b/search/groups_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operational_20amplifier_0',['Operational Amplifier',['../group__opamp.html',1,'']]] +]; diff --git a/search/groups_b.js b/search/groups_b.js new file mode 100644 index 0000000..740f0ed --- /dev/null +++ b/search/groups_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['peripheral_0',['peripheral',['../group__i2c.html',1,'Inter-IC Communications Peripheral'],['../group__spi.html',1,'SPI Peripheral'],['../group__uart.html',1,'UART Peripheral']]], + ['peripheral_20touch_20controller_1',['Peripheral Touch Controller',['../group__ptc.html',1,'']]] +]; diff --git a/search/groups_c.js b/search/groups_c.js new file mode 100644 index 0000000..2ae9d1d --- /dev/null +++ b/search/groups_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['real_20time_20clock_0',['Real-Time Clock',['../group__rtc.html',1,'']]] +]; diff --git a/search/groups_d.js b/search/groups_d.js new file mode 100644 index 0000000..573603c --- /dev/null +++ b/search/groups_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['segment_20lcd_20driver_0',['Segment LCD driver',['../group__slcd.html',1,'']]], + ['serial_20bus_1',['Universal Serial Bus',['../group__usb.html',1,'']]], + ['sound_20interface_2',['Inter-IC Sound interface',['../group__i2s.html',1,'']]], + ['spi_20peripheral_3',['SPI Peripheral',['../group__spi.html',1,'']]], + ['system_4',['Event System',['../group__evsys.html',1,'']]], + ['system_20internals_5',['System Internals',['../group__system.html',1,'']]] +]; diff --git a/search/groups_e.js b/search/groups_e.js new file mode 100644 index 0000000..a50888c --- /dev/null +++ b/search/groups_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['time_20clock_0',['Real-Time Clock',['../group__rtc.html',1,'']]], + ['timer_20counter_1',['Timer/Counter',['../group__tc.html',1,'']]], + ['timer_20counter_20for_20control_20applications_2',['Timer/Counter for Control Applications',['../group__tcc.html',1,'']]], + ['to_20analog_20converter_3',['Digital to Analog Converter',['../group__dac.html',1,'']]], + ['to_20digital_20converter_4',['Analog to Digital Converter',['../group__adc.html',1,'']]], + ['touch_20controller_5',['Peripheral Touch Controller',['../group__ptc.html',1,'']]] +]; diff --git a/search/groups_f.js b/search/groups_f.js new file mode 100644 index 0000000..3d617c8 --- /dev/null +++ b/search/groups_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['uart_20peripheral_0',['UART Peripheral',['../group__uart.html',1,'']]], + ['universal_20serial_20bus_1',['Universal Serial Bus',['../group__usb.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js index feadd94..72b4213 100644 --- a/search/pages_1.js +++ b/search/pages_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['list_0',['Todo List',['../todo.html',1,'']]] + ['readme_0',['README',['../md__r_e_a_d_m_e.html',1,'']]] ]; diff --git a/search/pages_2.js b/search/pages_2.js deleted file mode 100644 index 72b4213..0000000 --- a/search/pages_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['readme_0',['README',['../md__r_e_a_d_m_e.html',1,'']]] -]; diff --git a/search/pages_3.js b/search/pages_3.js deleted file mode 100644 index 83220ef..0000000 --- a/search/pages_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['todo_20list_0',['Todo List',['../todo.html',1,'']]] -]; diff --git a/search/search.css b/search/search.css index 19f76f9..d7b0f90 100644 --- a/search/search.css +++ b/search/search.css @@ -25,9 +25,9 @@ dark-mode-toggle { #MSearchBox { display: inline-block; white-space : nowrap; - background: var(--search-background-color); + background: white; border-radius: 0.65em; - box-shadow: var(--search-box-shadow); + box-shadow: inset 0.5px 0.5px 3px 0px #555; z-index: 102; } @@ -42,7 +42,7 @@ dark-mode-toggle { vertical-align: middle; width: 20px; height: 19px; - background-image: var(--search-magnification-select-image); + background-image: url('mag_sel.svg'); margin: 0 0 0 0.3em; padding: 0; } @@ -52,7 +52,7 @@ dark-mode-toggle { vertical-align: middle; width: 10px; height: 19px; - background-image: var(--search-magnification-image); + background-image: url('mag.svg'); margin: 0 0 0 0.5em; padding: 0; } @@ -67,9 +67,9 @@ dark-mode-toggle { padding: 0; line-height: 1em; border:none; - color: var(--search-foreground-color); + color: #909090; outline: none; - font-family: var(--font-family-search); + font-family: Arial,Verdana,sans-serif; -webkit-border-radius: 0px; border-radius: 0px; background: none; @@ -106,7 +106,7 @@ dark-mode-toggle { } .MSearchBoxActive #MSearchField { - color: var(--search-active-color); + color: black; } @@ -117,8 +117,8 @@ dark-mode-toggle { display: none; position: absolute; left: 0; top: 0; - border: 1px solid var(--search-filter-border-color); - background-color: var(--search-filter-background-color); + border: 1px solid #90A5CE; + background-color: #F9FAFC; z-index: 10001; padding-top: 4px; padding-bottom: 4px; @@ -131,7 +131,7 @@ dark-mode-toggle { } .SelectItem { - font: 8pt var(--font-family-search); + font: 8pt Arial,Verdana,sans-serif; padding-left: 2px; padding-right: 12px; border: 0px; @@ -139,7 +139,7 @@ dark-mode-toggle { span.SelectionMark { margin-right: 4px; - font-family: var(--font-family-monospace); + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; outline-style: none; text-decoration: none; } @@ -147,7 +147,7 @@ span.SelectionMark { a.SelectItem { display: block; outline-style: none; - color: var(--search-filter-foreground-color); + color: black; text-decoration: none; padding-left: 6px; padding-right: 12px; @@ -155,14 +155,14 @@ a.SelectItem { a.SelectItem:focus, a.SelectItem:active { - color: var(--search-filter-foreground-color); + color: black; outline-style: none; text-decoration: none; } a.SelectItem:hover { - color: var(--search-filter-highlight-text-color); - background-color: var(--search-filter-highlight-bg-color); + color: white; + background-color: #3D578C; outline-style: none; text-decoration: none; cursor: pointer; @@ -180,8 +180,8 @@ iframe#MSearchResults { display: none; position: absolute; left: 0; top: 0; - border: 1px solid var(--search-results-border-color); - background-color: var(--search-results-background-color); + border: 1px solid black; + background-color: #EEF1F7; z-index:10000; width: 300px; height: 400px; @@ -207,7 +207,7 @@ iframe#MSearchResults { div.SRPage { margin: 5px 2px; - background-color: var(--search-results-background-color); + background-color: #EEF1F7; } .SRChildren { @@ -220,16 +220,16 @@ div.SRPage { .SRSymbol { font-weight: bold; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); + color: #425E97; + font-family: Arial,Verdana,sans-serif; text-decoration: none; outline: none; } a.SRScope { display: block; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); + color: #425E97; + font-family: Arial,Verdana,sans-serif; font-size: 8pt; text-decoration: none; outline: none; @@ -242,14 +242,14 @@ a.SRScope:focus, a.SRScope:active { span.SRScope { padding-left: 4px; - font-family: var(--font-family-search); + font-family: Arial,Verdana,sans-serif; } .SRPage .SRStatus { padding: 2px 5px; font-size: 8pt; font-style: italic; - font-family: var(--font-family-search); + font-family: Arial,Verdana,sans-serif; } .SRResult { @@ -266,7 +266,7 @@ div.searchresults { .pages b { color: white; padding: 5px 5px 3px 5px; - background-image: var(--nav-gradient-active-image-parent); + background-image: url("../tab_a.png"); background-repeat: repeat-x; text-shadow: 0 1px 1px #000000; } diff --git a/search/searchdata.js b/search/searchdata.js index 403ce5c..6f6b594 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -1,14 +1,15 @@ var indexSectionsWithContent = { - 0: "_acdefghiloprstuvy", + 0: "_abcdefgilmoprstuvy", 1: "fgrst", - 2: "adeghioprstu", - 3: "_adegiorstuy", + 2: "gs", + 3: "_adegioprstuy", 4: "e", - 5: "et", + 5: "etu", 6: "t", 7: "s", - 8: "glrt" + 8: "abcdefgilmoprstu", + 9: "gr" }; var indexSectionNames = @@ -21,7 +22,8 @@ var indexSectionNames = 5: "enums", 6: "enumvalues", 7: "defines", - 8: "pages" + 8: "groups", + 9: "pages" }; var indexSectionLabels = @@ -34,6 +36,7 @@ var indexSectionLabels = 5: "Enumerations", 6: "Enumerator", 7: "Macros", - 8: "Pages" + 8: "Modules", + 9: "Pages" }; diff --git a/search/typedefs_0.js b/search/typedefs_0.js index 305ce8d..1e4552e 100644 --- a/search/typedefs_0.js +++ b/search/typedefs_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['eic_5finterrupt_5ftrigger_5ft_0',['eic_interrupt_trigger_t',['../eic_8h.html#a2dcfd365c180eb12af23e9f125089244',1,'eic.h']]] + ['eic_5finterrupt_5ftrigger_5ft_0',['eic_interrupt_trigger_t',['../group__eic.html#ga2dcfd365c180eb12af23e9f125089244',1,'eic.h']]] ]; diff --git a/sercom_8h.html b/sercom_8h.html deleted file mode 100644 index 3363efa..0000000 --- a/sercom_8h.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - -gossamer: common/sercom.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
sercom.h File Reference
-
-
- -

Private functions for helping with SERCOM management. -More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include <stddef.h>
-#include "system.h"
-
-

Go to the source code of this file.

- - - - - - - - - - - -

-Functions

void _sercom_clock_setup (uint8_t sercom)
 Sets up the clocks required to run a SERCOM peripheral.
 
void _sercom_enable (uint8_t sercom)
 Enables a SERCOM peripheral.
 
void _sercom_disable (uint8_t sercom)
 Disables a SERCOM peripheral.
 
-

Detailed Description

-

Private functions for helping with SERCOM management.

-

Function Documentation

- -

◆ _sercom_clock_setup()

- -
-
- - - - - - - - -
void _sercom_clock_setup (uint8_t sercom)
-
- -

Sets up the clocks required to run a SERCOM peripheral.

-
Parameters
- - -
sercomThe SERCOM instance to set up.
-
-
-
Note
This function is not intended to be called directly. Use the functions defined in spi.h, i2c.h, or uart.h.
- -
-
- -

◆ _sercom_disable()

- -
-
- - - - - - - - -
void _sercom_disable (uint8_t sercom)
-
- -

Disables a SERCOM peripheral.

-
Parameters
- - -
sercomThe SERCOM instance to disable.
-
-
-
Note
This function is not intended to be called directly. Use the functions defined in spi.h, i2c.h, or uart.h.
- -
-
- -

◆ _sercom_enable()

- -
-
- - - - - - - - -
void _sercom_enable (uint8_t sercom)
-
- -

Enables a SERCOM peripheral.

-
Parameters
- - -
sercomThe SERCOM instance to enable.
-
-
-
Note
This function is not intended to be called directly. Use the functions defined in spi.h, i2c.h, or uart.h.
- -
-
-
- - - - diff --git a/sercom_8h_source.html b/sercom_8h_source.html index bbba867..a3a3171 100644 --- a/sercom_8h_source.html +++ b/sercom_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +

+
+ +
+
+
+ +
- -
sercom.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2023 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
-
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
-
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33#include <stddef.h>
-
34#include "system.h"
-
35
-
42void _sercom_clock_setup(uint8_t sercom);
-
43
-
50void _sercom_enable(uint8_t sercom);
-
51
-
58void _sercom_disable(uint8_t sercom);
-
void _sercom_enable(uint8_t sercom)
Enables a SERCOM peripheral.
Definition sercom.c:54
-
void _sercom_clock_setup(uint8_t sercom)
Sets up the clocks required to run a SERCOM peripheral.
Definition sercom.c:5
-
void _sercom_disable(uint8_t sercom)
Disables a SERCOM peripheral.
Definition sercom.c:60
-
Gossamer system routines.
+
1/*
+
2 * MIT License
+
3 *
+
4 * Copyright (c) 2023 Joey Castillo
+
5 *
+
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
7 * of this software and associated documentation files (the "Software"), to deal
+
8 * in the Software without restriction, including without limitation the rights
+
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
10 * copies of the Software, and to permit persons to whom the Software is
+
11 * furnished to do so, subject to the following conditions:
+
12 *
+
13 * The above copyright notice and this permission notice shall be included in all
+
14 * copies or substantial portions of the Software.
+
15 *
+
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
22 * SOFTWARE.
+
23 */
+
24
+
25#pragma once
+
26
+
27#include <stdint.h>
+
28#include <stdbool.h>
+
29#include <stddef.h>
+
30#include "system.h"
+
31
+
38void _sercom_clock_setup(uint8_t sercom);
+
39
+
46void _sercom_enable(uint8_t sercom);
+
47
+
54void _sercom_disable(uint8_t sercom);
+
- + diff --git a/sh1107_8h.html b/sh1107_8h.html index c715284..56143f2 100644 --- a/sh1107_8h.html +++ b/sh1107_8h.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ +
+
+ +
+
+
+ +
- -
Macros | @@ -255,7 +271,7 @@

See also
gfx_init()) and the I2C peripheral
-i2c_init() before calling this function.
+i2c_init() before calling this function.

@@ -281,9 +297,13 @@

+ diff --git a/sh1107_8h.js b/sh1107_8h.js new file mode 100644 index 0000000..49124f3 --- /dev/null +++ b/sh1107_8h.js @@ -0,0 +1,31 @@ +var sh1107_8h = +[ + [ "SH110X_CHARGEPUMP", "sh1107_8h.html#abf9641d62ae268b062acfd5cfb12d8a0", null ], + [ "SH110X_COLUMNADDR", "sh1107_8h.html#ac1c1503e1328e829a6dd7f262a308768", null ], + [ "SH110X_COMSCANDEC", "sh1107_8h.html#a91b8adfd441c2946e0f1c889bd4d4906", null ], + [ "SH110X_COMSCANINC", "sh1107_8h.html#ae9712e9ffac1eca6bb5ceb04ca62bf4a", null ], + [ "SH110X_DCDC", "sh1107_8h.html#a94a3dbbec366cfefca9abfae41c378d1", null ], + [ "SH110X_DISPLAYALLON", "sh1107_8h.html#ab9b2e7e0d6543b43b019a2d06ed60fa6", null ], + [ "SH110X_DISPLAYALLON_RESUME", "sh1107_8h.html#aea006f310625d63558e37cacc88195e1", null ], + [ "SH110X_DISPLAYOFF", "sh1107_8h.html#ae0226a22287f65e5b782602d0dc4b07b", null ], + [ "SH110X_DISPLAYON", "sh1107_8h.html#ae584f468fde42d6ea1d863ab6a214930", null ], + [ "SH110X_INVERTDISPLAY", "sh1107_8h.html#ae8816edf9085f2716b5e8481216761cc", null ], + [ "SH110X_MEMORYMODE", "sh1107_8h.html#a1e3efd44dcffb0b3b8b2381c08ca7071", null ], + [ "SH110X_NORMALDISPLAY", "sh1107_8h.html#a9d3c6f09d004499eca976f2eef35568d", null ], + [ "SH110X_PAGEADDR", "sh1107_8h.html#a16b68111d8c5b3f2430e000e8db6fc58", null ], + [ "SH110X_SEGREMAP", "sh1107_8h.html#a451f6b37946e3a16ea831e5ca1cadf0a", null ], + [ "SH110X_SETCOMPINS", "sh1107_8h.html#a1dcd09ef94455a97fa03421d4c0bfcd7", null ], + [ "SH110X_SETCONTRAST", "sh1107_8h.html#ad96570bd3f4132f9ca5596f2abfe3c83", null ], + [ "SH110X_SETDISPLAYCLOCKDIV", "sh1107_8h.html#adf4314c533554230e7f13da80e0beea0", null ], + [ "SH110X_SETDISPLAYOFFSET", "sh1107_8h.html#a5875f7bc8903d81ca4f79c2afb6874a8", null ], + [ "SH110X_SETDISPSTARTLINE", "sh1107_8h.html#a8a29779d04227160819959faecf7460e", null ], + [ "SH110X_SETHIGHCOLUMN", "sh1107_8h.html#a16ffc48fb27a08ddaec274dedbe6d60f", null ], + [ "SH110X_SETLOWCOLUMN", "sh1107_8h.html#a7314bdf59a3a4331fdfbe756eeaf468e", null ], + [ "SH110X_SETMULTIPLEX", "sh1107_8h.html#ae9157f78ad85db7ae436d5b73c496bb7", null ], + [ "SH110X_SETPAGEADDR", "sh1107_8h.html#aa8aedcc0dbae557ae03b382bb742f7ee", null ], + [ "SH110X_SETPRECHARGE", "sh1107_8h.html#a5f554794057673d14c6d43fbf43cc93c", null ], + [ "SH110X_SETSTARTLINE", "sh1107_8h.html#a8224628684ae3ecf84049935b2531118", null ], + [ "SH110X_SETVCOMDETECT", "sh1107_8h.html#a790498436deaf2d54f8db57419bf5f2a", null ], + [ "sh1107_begin", "sh1107_8h.html#aed0009c4be3de7d50eb4c7b195460c7c", null ], + [ "sh1107_update", "sh1107_8h.html#af07fc90517a99581d8fb86c73ff40270", null ] +]; \ No newline at end of file diff --git a/sh1107_8h_source.html b/sh1107_8h_source.html index 0a21c13..b3dcb56 100644 --- a/sh1107_8h_source.html +++ b/sh1107_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +

+
+ +
+
+
+ +
- -
sh1107.h
@@ -132,9 +148,13 @@
void sh1107_begin(void)
Initializes the SH1107 display.
Definition sh1107.c:30
void sh1107_update(void)
Pushes the current contents of the GFX buffer to the display.
Definition sh1107.c:68

+
- + diff --git a/slcd_8h.html b/slcd_8h.html deleted file mode 100644 index 4509b08..0000000 --- a/slcd_8h.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -gossamer: common/slcd.h File Reference - - - - - - - - - -
-
- - - - - - -
-
gossamer 0.0.0 -
-
a very lightweight app framework for SAMD and SAML chips
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
slcd.h File Reference
-
-
- -

Segment Liquid Crystal Display (SLCD) peripheral driver (SAM L22 only) -More...

-
#include <stdint.h>
-#include <stdbool.h>
-#include <stddef.h>
-#include "system.h"
-
-

Go to the source code of this file.

-

Detailed Description

-

Segment Liquid Crystal Display (SLCD) peripheral driver (SAM L22 only)

-
- - - - diff --git a/slcd_8h_source.html b/slcd_8h_source.html index 4177374..74af36f 100644 --- a/slcd_8h_source.html +++ b/slcd_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +

+
+ +
+
+
+ +
- -
slcd.h
-Go to the documentation of this file.
1
-
5/*
-
6 * MIT License
-
7 *
-
8 * Copyright (c) 2023 Joey Castillo
-
9 *
-
10 * Permission is hereby granted, free of charge, to any person obtaining a copy
-
11 * of this software and associated documentation files (the "Software"), to deal
-
12 * in the Software without restriction, including without limitation the rights
-
13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-
14 * copies of the Software, and to permit persons to whom the Software is
-
15 * furnished to do so, subject to the following conditions:
+
1
+
2/*
+
3 * MIT License
+
4 *
+
5 * Copyright (c) 2023 Joey Castillo
+
6 *
+
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
+
8 * of this software and associated documentation files (the "Software"), to deal
+
9 * in the Software without restriction, including without limitation the rights
+
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+
11 * copies of the Software, and to permit persons to whom the Software is
+
12 * furnished to do so, subject to the following conditions:
+
13 *
+
14 * The above copyright notice and this permission notice shall be included in all
+
15 * copies or substantial portions of the Software.
16 *
-
17 * The above copyright notice and this permission notice shall be included in all
-
18 * copies or substantial portions of the Software.
-
19 *
-
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-
21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-
25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-
26 * SOFTWARE.
-
27 */
-
28
-
29#pragma once
-
30
-
31#include <stdint.h>
-
32#include <stdbool.h>
-
33#include <stddef.h>
-
34#include "system.h"
-
35
-
36#ifdef SLCD
-
37
-
38typedef enum {
-
39 SLCD_BIAS_STATIC = 0,
-
40 SLCD_BIAS_HALF = 1,
-
41 SLCD_BIAS_THIRD = 2,
-
42 SLCD_BIAS_FOURTH = 3,
-
43} slcd_bias_value_t;
-
44
-
45typedef enum {
-
46 SLCD_DUTY_1_COMMON = 0,
-
47 SLCD_DUTY_2_COMMON = 1,
-
48 SLCD_DUTY_3_COMMON = 2,
-
49 SLCD_DUTY_4_COMMON = 3,
-
50 SLCD_DUTY_6_COMMON = 4,
-
51 SLCD_DUTY_8_COMMON = 5,
-
52} slcd_duty_value_t;
-
53
-
54typedef enum {
-
55 SLCD_PRESCALER_DIV16 = 0,
-
56 SLCD_PRESCALER_DIV32 = 1,
-
57 SLCD_PRESCALER_DIV64 = 2,
-
58 SLCD_PRESCALER_DIV128 = 3,
-
59} slcd_prescaler_value_t;
-
60
-
61typedef enum {
-
62 SLCD_CLOCKSOURCE_ULP = 0,
-
63 SLCD_CLOCKSOURCE_XOSC = 1,
-
64} slcd_clocksource_value_t;
-
65
-
66typedef enum {
-
67 SLCD_CLOCKDIV_1 = 0,
-
68 SLCD_CLOCKDIV_2 = 1,
-
69 SLCD_CLOCKDIV_3 = 2,
-
70 SLCD_CLOCKDIV_4 = 3,
-
71 SLCD_CLOCKDIV_5 = 4,
-
72 SLCD_CLOCKDIV_6 = 5,
-
73 SLCD_CLOCKDIV_7 = 6,
-
74 SLCD_CLOCKDIV_8 = 7,
-
75} slcd_clockdiv_value_t;
-
76
-
77typedef enum {
-
78 SLCD_CSRSHIFT_LEFT = 0,
-
79 SLCD_CSRSHIFT_RIGHT = 1,
-
80} slcd_csrshift_value_t;
-
81
-
136void slcd_init(uint64_t lcd_pins, slcd_bias_value_t bias, slcd_duty_value_t duty, slcd_clocksource_value_t clocksource, slcd_prescaler_value_t prescaler, slcd_clockdiv_value_t clkdiv);
-
137
-
145void slcd_set_contrast(uint8_t contrast);
-
146
-
150void slcd_enable(void);
-
151
-
155void slcd_clear(void);
-
156
-
162void slcd_set_segment(uint8_t com, uint8_t seg);
-
163
-
169void slcd_clear_segment(uint8_t com, uint8_t seg);
-
170
-
180void slcd_configure_frame_counter(uint8_t fc, uint8_t overflow_count, bool prescale);
-
181
-
188void slcd_set_frame_counter_enabled(uint8_t fc, bool enabled);
-
189
-
201void slcd_configure_blink(bool blink_all, uint8_t bss0, uint8_t bss1, uint8_t fc);
-
202
-
208void slcd_set_blink_enabled(bool enabled);
-
209
-
219void slcd_configure_circular_shift_animation(uint16_t initial_value, uint8_t size, slcd_csrshift_value_t shift_dir, uint8_t fc);
-
220
-
227void slcd_set_circular_shift_animation_enabled(bool enabled);
-
228
-
232void slcd_disable(void);
-
233
-
234
-
235#endif // SLCD
-
Gossamer system routines.
+
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+
23 * SOFTWARE.
+
24 */
+
25
+
26#pragma once
+
27
+
28#include <stdint.h>
+
29#include <stdbool.h>
+
30#include <stddef.h>
+
31#include "system.h"
+
32
+
39#ifdef SLCD
+
40
+
41typedef enum {
+
42 SLCD_BIAS_STATIC = 0,
+
43 SLCD_BIAS_HALF = 1,
+
44 SLCD_BIAS_THIRD = 2,
+
45 SLCD_BIAS_FOURTH = 3,
+
46} slcd_bias_value_t;
+
47
+
48typedef enum {
+
49 SLCD_DUTY_1_COMMON = 0,
+
50 SLCD_DUTY_2_COMMON = 1,
+
51 SLCD_DUTY_3_COMMON = 2,
+
52 SLCD_DUTY_4_COMMON = 3,
+
53 SLCD_DUTY_6_COMMON = 4,
+
54 SLCD_DUTY_8_COMMON = 5,
+
55} slcd_duty_value_t;
+
56
+
57typedef enum {
+
58 SLCD_PRESCALER_DIV16 = 0,
+
59 SLCD_PRESCALER_DIV32 = 1,
+
60 SLCD_PRESCALER_DIV64 = 2,
+
61 SLCD_PRESCALER_DIV128 = 3,
+
62} slcd_prescaler_value_t;
+
63
+
64typedef enum {
+
65 SLCD_CLOCKSOURCE_ULP = 0,
+
66 SLCD_CLOCKSOURCE_XOSC = 1,
+
67} slcd_clocksource_value_t;
+
68
+
69typedef enum {
+
70 SLCD_CLOCKDIV_1 = 0,
+
71 SLCD_CLOCKDIV_2 = 1,
+
72 SLCD_CLOCKDIV_3 = 2,
+
73 SLCD_CLOCKDIV_4 = 3,
+
74 SLCD_CLOCKDIV_5 = 4,
+
75 SLCD_CLOCKDIV_6 = 5,
+
76 SLCD_CLOCKDIV_7 = 6,
+
77 SLCD_CLOCKDIV_8 = 7,
+
78} slcd_clockdiv_value_t;
+
79
+
80typedef enum {
+
81 SLCD_CSRSHIFT_LEFT = 0,
+
82 SLCD_CSRSHIFT_RIGHT = 1,
+
83} slcd_csrshift_value_t;
+
84
+
139void slcd_init(uint64_t lcd_pins, slcd_bias_value_t bias, slcd_duty_value_t duty, slcd_clocksource_value_t clocksource, slcd_prescaler_value_t prescaler, slcd_clockdiv_value_t clkdiv);
+
140
+
148void slcd_set_contrast(uint8_t contrast);
+
149
+
153void slcd_enable(void);
+
154
+
158void slcd_clear(void);
+
159
+
165void slcd_set_segment(uint8_t com, uint8_t seg);
+
166
+
172void slcd_clear_segment(uint8_t com, uint8_t seg);
+
173
+
183void slcd_configure_frame_counter(uint8_t fc, uint8_t overflow_count, bool prescale);
+
184
+
191void slcd_set_frame_counter_enabled(uint8_t fc, bool enabled);
+
192
+
204void slcd_configure_blink(bool blink_all, uint8_t bss0, uint8_t bss1, uint8_t fc);
+
205
+
211void slcd_set_blink_enabled(bool enabled);
+
212
+
222void slcd_configure_circular_shift_animation(uint16_t initial_value, uint8_t size, slcd_csrshift_value_t shift_dir, uint8_t fc);
+
223
+ +
231
+
235void slcd_disable(void);
+
236
+
237
+
238#endif // SLCD
+
239
+
void slcd_disable(void)
Disables the SLCD peripheral.
Definition slcd.c:166
+
void slcd_init(uint64_t lcd_pins, slcd_bias_value_t bias, slcd_duty_value_t duty, slcd_clocksource_value_t clocksource, slcd_prescaler_value_t prescaler, slcd_clockdiv_value_t clkdiv)
Initializes the SLCD peripheral, but does not enable it.
Definition slcd.c:34
+
void slcd_clear_segment(uint8_t com, uint8_t seg)
Clears a segment in the display memory.
Definition slcd.c:101
+
void slcd_configure_frame_counter(uint8_t fc, uint8_t overflow_count, bool prescale)
Configures one of the three frame counters.
Definition slcd.c:105
+
void slcd_set_circular_shift_animation_enabled(bool enabled)
Enables or disables circular shift register animation according to the configuration set by slcd_conf...
Definition slcd.c:161
+
void slcd_configure_circular_shift_animation(uint16_t initial_value, uint8_t size, slcd_csrshift_value_t shift_dir, uint8_t fc)
Configures the Circular Shift Register animation, but does not start it. This is pretty obscure and y...
Definition slcd.c:154
+
void slcd_set_frame_counter_enabled(uint8_t fc, bool enabled)
Enables or disables one of the three frame counters.
Definition slcd.c:121
+
void slcd_set_contrast(uint8_t contrast)
Sets the contrast level for the display. Valid values are from 0-15.
Definition slcd.c:66
+
void slcd_configure_blink(bool blink_all, uint8_t bss0, uint8_t bss1, uint8_t fc)
Configures the blink mode, but does not start blinking.
Definition slcd.c:138
+
void slcd_set_blink_enabled(bool enabled)
Enables or disables blinking according to the configuration set by slcd_configure_blink.
Definition slcd.c:149
+
void slcd_clear(void)
Clears all display memory.
Definition slcd.c:75
+
void slcd_enable(void)
Enables the SLCD peripheral.
Definition slcd.c:70
+
void slcd_set_segment(uint8_t com, uint8_t seg)
Sets a segment in the display memory.
Definition slcd.c:97
+
- + diff --git a/spi_8h_source.html b/spi_8h_source.html index 504cf95..4e7537f 100644 --- a/spi_8h_source.html +++ b/spi_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
+
+ +
+
+
+ +
- -
spi.h
-Go to the documentation of this file.
1
-
5/*
-
6 Cribbed from the Castor & Pollux Gemini firmware:
-
7 https://github.com/wntrblm/Castor_and_Pollux/
-
8 Copyright (c) 2021 Alethea Katherine Flowers.
-
9 Published under the standard MIT License.
-
10 Full text available at: https://opensource.org/licenses/MIT
-
11*/
-
12
-
13#pragma once
-
14
-
15#include <stdint.h>
-
16#include <stdbool.h>
-
17#include <stddef.h>
-
18
-
19typedef enum {
-
20 SPI_MODE_PERIPHERAL = 2,
-
21 SPI_MODE_CONTROLLER = 3,
-
22} spi_mode_t;
-
23
-
24typedef enum {
-
25 SPI_DOPO_0_SCK_1 = 0,
-
26 SPI_DOPO_2_SCK_3,
-
27 SPI_DOPO_3_SCK_1,
-
28 SPI_DOPO_0_SCK_3,
-
29} spi_dopo_t;
-
30
-
31typedef enum {
-
32 SPI_DIPO_0 = 0,
-
33 SPI_DIPO_1,
-
34 SPI_DIPO_2,
-
35 SPI_DIPO_3,
-
36 SPI_DIPO_NONE = 0xff
-
37} spi_dipo_t;
-
38
-
45void spi_init(spi_mode_t mode, uint32_t baud);
-
46
-
50void spi_enable(void);
-
51
-
57uint8_t spi_transfer(uint8_t data);
-
58
-
62void spi_disable(void);
-
63
-
73void spi_init_instance(uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud);
-
74
-
79void spi_enable_instance(uint8_t sercom);
-
80
-
87uint8_t spi_transfer_instance(uint8_t sercom, uint8_t data);
-
88
-
93void spi_disable_instance(uint8_t sercom);
-
uint8_t spi_transfer_instance(uint8_t sercom, uint8_t data)
Transfers a byte over SPI.
Definition spi.c:70
-
void spi_disable_instance(uint8_t sercom)
Disables a specific SERCOM instance for SPI.
Definition spi.c:80
-
void spi_init(spi_mode_t mode, uint32_t baud)
Initializes the SPI peripheral for a board with a defined SPI_SERCOM.
-
uint8_t spi_transfer(uint8_t data)
Transfers a byte over SPI for a board with a defined SPI_SERCOM.
-
void spi_enable(void)
Enables the SPI peripheral for a board with a defined SPI_SERCOM.
-
void spi_enable_instance(uint8_t sercom)
Enables a specific SERCOM instance for SPI.
Definition spi.c:66
-
void spi_disable(void)
Disables the SPI peripheral for a board with a defined SPI_SERCOM.
-
void spi_init_instance(uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud)
Initializes a specific SERCOM instance for SPI.
Definition spi.c:35
+
1
+
2/*
+
3 Cribbed from the Castor & Pollux Gemini firmware:
+
4 https://github.com/wntrblm/Castor_and_Pollux/
+
5 Copyright (c) 2021 Alethea Katherine Flowers.
+
6 Published under the standard MIT License.
+
7 Full text available at: https://opensource.org/licenses/MIT
+
8*/
+
9
+
10#pragma once
+
11
+
12#include <stdint.h>
+
13#include <stdbool.h>
+
14#include <stddef.h>
+
15
+
22typedef enum {
+
23 SPI_MODE_PERIPHERAL = 2,
+
24 SPI_MODE_CONTROLLER = 3,
+
25} spi_mode_t;
+
26
+
27typedef enum {
+
28 SPI_DOPO_0_SCK_1 = 0,
+
29 SPI_DOPO_2_SCK_3,
+
30 SPI_DOPO_3_SCK_1,
+
31 SPI_DOPO_0_SCK_3,
+
32} spi_dopo_t;
+
33
+
34typedef enum {
+
35 SPI_DIPO_0 = 0,
+
36 SPI_DIPO_1,
+
37 SPI_DIPO_2,
+
38 SPI_DIPO_3,
+
39 SPI_DIPO_NONE = 0xff
+
40} spi_dipo_t;
+
41
+
48void spi_init(spi_mode_t mode, uint32_t baud);
+
49
+
53void spi_enable(void);
+
54
+
60uint8_t spi_transfer(uint8_t data);
+
61
+
65void spi_disable(void);
+
66
+
76void spi_init_instance(uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud);
+
77
+
82void spi_enable_instance(uint8_t sercom);
+
83
+
90uint8_t spi_transfer_instance(uint8_t sercom, uint8_t data);
+
91
+
96void spi_disable_instance(uint8_t sercom);
+
97
+
uint8_t spi_transfer_instance(uint8_t sercom, uint8_t data)
Transfers a byte over SPI.
Definition spi.c:70
+
void spi_disable_instance(uint8_t sercom)
Disables a specific SERCOM instance for SPI.
Definition spi.c:80
+
void spi_init(spi_mode_t mode, uint32_t baud)
Initializes the SPI peripheral for a board with a defined SPI_SERCOM.
+
uint8_t spi_transfer(uint8_t data)
Transfers a byte over SPI for a board with a defined SPI_SERCOM.
+
void spi_enable(void)
Enables the SPI peripheral for a board with a defined SPI_SERCOM.
+
void spi_enable_instance(uint8_t sercom)
Enables a specific SERCOM instance for SPI.
Definition spi.c:66
+
void spi_disable(void)
Disables the SPI peripheral for a board with a defined SPI_SERCOM.
+
void spi_init_instance(uint8_t sercom, spi_dopo_t dopo, spi_dipo_t dipo, spi_mode_t mode, uint32_t baud)
Initializes a specific SERCOM instance for SPI.
Definition spi.c:35
+
- + diff --git a/structfifo__buffer__t.html b/structfifo__buffer__t.html index 4f1a7da..da393f2 100644 --- a/structfifo__buffer__t.html +++ b/structfifo__buffer__t.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

+
+ +
+
+
+ +
-
@@ -92,9 +112,13 @@
  • peripherals/uart.c
  • +
    - + diff --git a/structgossamer__dma__job__t.html b/structgossamer__dma__job__t.html index 6b7669f..887f9b6 100644 --- a/structgossamer__dma__job__t.html +++ b/structgossamer__dma__job__t.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

    +
    + +
    +
    +
    + +
    -
    -
    gossamer_dma_job_t Struct Reference
    +
    gossamer_dma_job_t Struct Reference
    @@ -98,9 +118,13 @@
  • common/dma.h
  • + - + diff --git a/structsercom__instance__details__t.html b/structsercom__instance__details__t.html index bf7db37..34d3c56 100644 --- a/structsercom__instance__details__t.html +++ b/structsercom__instance__details__t.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
    + +
    +
    +
    + +
    -
    @@ -95,9 +115,13 @@
  • common/system.h
  • + - + diff --git a/structtc__instance__details__t.html b/structtc__instance__details__t.html index bc7fbb3..2e1d0ff 100644 --- a/structtc__instance__details__t.html +++ b/structtc__instance__details__t.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
    + +
    +
    +
    + +
    -
    @@ -92,9 +112,13 @@
  • common/system.h
  • + - + diff --git a/structtcc__instance__details__t.html b/structtcc__instance__details__t.html index 3a4284d..231b3ae 100644 --- a/structtcc__instance__details__t.html +++ b/structtcc__instance__details__t.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ + +
    + +
    +
    +
    + +
    -
    @@ -92,9 +112,13 @@
  • common/system.h
  • + - + diff --git a/system_8h.html b/system_8h.html deleted file mode 100644 index 42892cc..0000000 --- a/system_8h.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -gossamer: common/system.h File Reference - - - - - - - - - -
    -
    -
    - - - - - -
    -
    gossamer 0.0.0 -
    -
    a very lightweight app framework for SAMD and SAML chips
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    system.h File Reference
    -
    -
    - -

    Gossamer system routines. -More...

    -
    #include <stdint.h>
    -#include <stdbool.h>
    -#include <stddef.h>
    -#include "sam.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  tc_instance_details_t
     
    struct  tcc_instance_details_t
     
    struct  sercom_instance_details_t
     
    - - - - - - - - - - - - - - - - - -

    -Functions

    void sys_init (void)
     Initializes the system clocks and performs any required system-wide setup.
     
    uint32_t get_cpu_frequency (void)
     Gets the CPU frequency.
     
    bool set_cpu_frequency (uint32_t freq)
     Sets the CPU frequency.
     
    void _enable_48mhz_gclk1 (void)
     Enables the 48 MHz clock on GCLK1 for USB operation.
     
    void _enter_standby_mode (void)
     Enters the low-power STANDBY mode. Does not return until an interrupt fires.
     
    - - - - - - - - - - - - - - - -

    -Variables

    -const tc_instance_details_t TC_Peripherals []
     
    -const uint8_t Num_TC_Instances
     
    -const uint8_t TC_First_Index
     
    -const tcc_instance_details_t TCC_Peripherals []
     
    -const uint8_t Num_TCC_Instances
     
    -const sercom_instance_details_t SERCOM_Peripherals []
     
    -const uint8_t Num_SERCOM_Instances
     
    -

    Detailed Description

    -

    Gossamer system routines.

    -

    Function Documentation

    - -

    ◆ _enable_48mhz_gclk1()

    - -
    -
    - - - - - - - - -
    void _enable_48mhz_gclk1 (void )
    -
    - -

    Enables the 48 MHz clock on GCLK1 for USB operation.

    -

    This function is called by the USB stack when it is initialized.

    Warning
    At this time, the 48 MHz clock is hard-coded to use USB Clock Recovery Mode, and as such will only be available if your device is plugged into a USB host. It is possible to derive the 48 MHz DFLL from an external 32kHz crystal, but this is not currently implemented in Gossamer.
    - -
    -
    - -

    ◆ _enter_standby_mode()

    - -
    -
    - - - - - - - - -
    void _enter_standby_mode (void )
    -
    - -

    Enters the low-power STANDBY mode. Does not return until an interrupt fires.

    -

    You should not generally need to call this function; at the end of every app_loop invocation, the main run loop enters standby mode if your app indicated that it was appropriate.

    - -
    -
    - -

    ◆ get_cpu_frequency()

    - -
    -
    - - - - - - - - -
    uint32_t get_cpu_frequency (void )
    -
    - -

    Gets the CPU frequency.

    -
    Returns
    8000000 by default, or another value if set by set_cpu_frequency
    - -
    -
    - -

    ◆ set_cpu_frequency()

    - -
    -
    - - - - - - - - -
    bool set_cpu_frequency (uint32_t freq)
    -
    - -

    Sets the CPU frequency.

    -
    Parameters
    - - -
    freqone of 1000000, 2000000, 4000000, 8000000, 12000000 or 16000000.
    -
    -
    -

    Supported CPU frequencies vary from chip to chip:

      -
    • On the SAM D11 and D21, you can choose 8, 4, 2 or 1 MHz.
    • -
    • On the SAM L21 and L22, you can choose 16, 12, 8 or 4 MHz. While you can run these chips at higher frequencies using the DFLL, Gossamer aims for simplicity: this means that it only supports the internal oscillator at one of its standard frequencies.
      Note
      Some peripherals like SERCOMs and TC/TCCs read the CPU frequency when they are configured, to set critical timing-related parameters like baud rate or period. If you change the CPU frequency after setting up these peripherals and then attempt to use them, they will very likely behave in unexpected ways. Thus you should de-init any peripherals that depend on GCLK0 before calling set_cpu_frequency, and then re-init them after.
      -
    • -
    - -
    -
    - -

    ◆ sys_init()

    - -
    -
    - - - - - - - - -
    void sys_init (void )
    -
    - -

    Initializes the system clocks and performs any required system-wide setup.

    -

    Gossamer aims for consistency at system startup, no matter which chip you are working with. To that end:

      -
    • GCLK0, the main system clock, is set to 8 MHz.
    • -
    • GCLK2 is the low-power 32768 Hz clock, OSCULP32K
    • -
    • GCLK3 is a 1024 Hz clock, derived from the most accurate source available. GCLK0 is set to ONDEMAND with RUNSTDBY off, so the main clock remains off when in standby mode. GCLK2 and GCLK3 are also ONDEMAND, but RUNSTDBY is on. This ensures that if a peripheral requests it, the clock will remain on in standby, but if no peripheral requests it, it will not run at all. Also note that while GCLK1 is not turned on at startup, it may be reserved for internal use depending on your use case. If you intend to use USB, the usb_init function will claim GCLK1 for the 48 MHz DFLL clock.
    • -
    - -
    -
    -
    - - - - diff --git a/system_8h_source.html b/system_8h_source.html index 2487b78..f847df1 100644 --- a/system_8h_source.html +++ b/system_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +

    +
    + +
    +
    +
    + +
    - -
    system.h
    -Go to the documentation of this file.
    1
    -
    5/*
    -
    6 * MIT License
    -
    7 *
    -
    8 * Copyright (c) 2020 Joey Castillo
    -
    9 *
    -
    10 * Permission is hereby granted, free of charge, to any person obtaining a copy
    -
    11 * of this software and associated documentation files (the "Software"), to deal
    -
    12 * in the Software without restriction, including without limitation the rights
    -
    13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    -
    14 * copies of the Software, and to permit persons to whom the Software is
    -
    15 * furnished to do so, subject to the following conditions:
    -
    16 *
    -
    17 * The above copyright notice and this permission notice shall be included in all
    -
    18 * copies or substantial portions of the Software.
    -
    19 *
    -
    20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -
    21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -
    22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -
    23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -
    24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    -
    26 * SOFTWARE.
    -
    27 */
    -
    28
    -
    29#include <stdint.h>
    -
    30#include <stdbool.h>
    -
    31#include <stddef.h>
    -
    32#include "sam.h"
    +
    1/*
    +
    2 * MIT License
    +
    3 *
    +
    4 * Copyright (c) 2020 Joey Castillo
    +
    5 *
    +
    6 * Permission is hereby granted, free of charge, to any person obtaining a copy
    +
    7 * of this software and associated documentation files (the "Software"), to deal
    +
    8 * in the Software without restriction, including without limitation the rights
    +
    9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +
    10 * copies of the Software, and to permit persons to whom the Software is
    +
    11 * furnished to do so, subject to the following conditions:
    +
    12 *
    +
    13 * The above copyright notice and this permission notice shall be included in all
    +
    14 * copies or substantial portions of the Software.
    +
    15 *
    +
    16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +
    17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +
    18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +
    19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +
    20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +
    21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +
    22 * SOFTWARE.
    +
    23 */
    +
    24
    +
    25#include <stdint.h>
    +
    26#include <stdbool.h>
    +
    27#include <stddef.h>
    +
    28#include "sam.h"
    +
    29
    +
    30#pragma once
    +
    31
    +
    32#if __EMSCRIPTEN__
    33
    -
    34#pragma once
    -
    35
    -
    36#if __EMSCRIPTEN__
    +
    34typedef int tc_instance_details_t;
    +
    35typedef int tcc_instance_details_t;
    +
    37
    -
    38typedef int tc_instance_details_t;
    -
    39typedef int tcc_instance_details_t;
    - -
    41
    -
    42#else
    -
    43
    -
    -
    44typedef struct {
    -
    45 Tc* tc;
    -
    46 uint32_t clock_enable_mask;
    -
    47 uint8_t gclk_id;
    - +
    38#else
    +
    39
    +
    +
    40typedef struct {
    +
    41 Tc* tc;
    +
    42 uint32_t clock_enable_mask;
    +
    43 uint8_t gclk_id;
    +
    -
    49
    -
    -
    50typedef struct {
    -
    51 Tcc* tcc;
    -
    52 uint32_t clock_enable_mask;
    -
    53 uint8_t gclk_id;
    - +
    45
    +
    +
    46typedef struct {
    +
    47 Tcc* tcc;
    +
    48 uint32_t clock_enable_mask;
    +
    49 uint8_t gclk_id;
    +
    -
    55
    -
    -
    56typedef struct {
    -
    57 Sercom* sercom;
    -
    58 uint32_t clock_enable_mask;
    -
    59 uint8_t gclk_id;
    -
    60 uint8_t interrupt_line;
    - +
    51
    +
    +
    52typedef struct {
    +
    53 Sercom* sercom;
    +
    54 uint32_t clock_enable_mask;
    +
    55 uint8_t gclk_id;
    +
    56 uint8_t interrupt_line;
    +
    -
    62
    -
    63#endif
    +
    58
    +
    59#endif
    +
    60
    +
    61extern const tc_instance_details_t TC_Peripherals[];
    +
    62extern const uint8_t Num_TC_Instances;
    +
    63extern const uint8_t TC_First_Index;
    64
    -
    65extern const tc_instance_details_t TC_Peripherals[];
    -
    66extern const uint8_t Num_TC_Instances;
    -
    67extern const uint8_t TC_First_Index;
    -
    68
    -
    69extern const tcc_instance_details_t TCC_Peripherals[];
    -
    70extern const uint8_t Num_TCC_Instances;
    -
    71
    -
    72extern const sercom_instance_details_t SERCOM_Peripherals[];
    -
    73extern const uint8_t Num_SERCOM_Instances;
    -
    74
    -
    76
    -
    78
    -
    92void sys_init(void);
    -
    93
    -
    97uint32_t get_cpu_frequency(void);
    -
    98
    -
    114bool set_cpu_frequency(uint32_t freq);
    -
    115
    - -
    125
    - -
    132
    -
    Definition system.h:56
    -
    Definition system.h:44
    -
    Definition system.h:50
    -
    void _enter_standby_mode(void)
    Enters the low-power STANDBY mode. Does not return until an interrupt fires.
    -
    bool set_cpu_frequency(uint32_t freq)
    Sets the CPU frequency.
    -
    uint32_t get_cpu_frequency(void)
    Gets the CPU frequency.
    -
    void sys_init(void)
    Initializes the system clocks and performs any required system-wide setup.
    -
    void _enable_48mhz_gclk1(void)
    Enables the 48 MHz clock on GCLK1 for USB operation.
    +
    65extern const tcc_instance_details_t TCC_Peripherals[];
    +
    66extern const uint8_t Num_TCC_Instances;
    +
    67
    +
    68extern const sercom_instance_details_t SERCOM_Peripherals[];
    +
    69extern const uint8_t Num_SERCOM_Instances;
    +
    70
    +
    72
    +
    93void sys_init(void);
    +
    94
    +
    98uint32_t get_cpu_frequency(void);
    +
    99
    +
    115bool set_cpu_frequency(uint32_t freq);
    +
    116
    + +
    126
    + +
    133
    +
    void _enter_standby_mode(void)
    Enters the low-power STANDBY mode. Does not return until an interrupt fires.
    +
    bool set_cpu_frequency(uint32_t freq)
    Sets the CPU frequency.
    +
    uint32_t get_cpu_frequency(void)
    Gets the CPU frequency.
    +
    void sys_init(void)
    Initializes the system clocks and performs any required system-wide setup.
    +
    void _enable_48mhz_gclk1(void)
    Enables the 48 MHz clock on GCLK1 for USB operation.
    +
    Definition system.h:52
    +
    Definition system.h:40
    +
    Definition system.h:46
    +
    - + diff --git a/tabs.css b/tabs.css index 71c8a47..8920117 100644 --- a/tabs.css +++ b/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important;color:#555555;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} \ No newline at end of file diff --git a/tc_8h_source.html b/tc_8h_source.html index 8125fea..70e9bac 100644 --- a/tc_8h_source.html +++ b/tc_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
    +
    + +
    +
    +
    + +
    - -
    tc.h
    -Go to the documentation of this file.
    1
    -
    5/*
    -
    6 * MIT License
    -
    7 *
    -
    8 * Copyright (c) 2022 Joey Castillo
    -
    9 *
    -
    10 * Permission is hereby granted, free of charge, to any person obtaining a copy
    -
    11 * of this software and associated documentation files (the "Software"), to deal
    -
    12 * in the Software without restriction, including without limitation the rights
    -
    13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    -
    14 * copies of the Software, and to permit persons to whom the Software is
    -
    15 * furnished to do so, subject to the following conditions:
    +
    1
    +
    2/*
    +
    3 * MIT License
    +
    4 *
    +
    5 * Copyright (c) 2022 Joey Castillo
    +
    6 *
    +
    7 * Permission is hereby granted, free of charge, to any person obtaining a copy
    +
    8 * of this software and associated documentation files (the "Software"), to deal
    +
    9 * in the Software without restriction, including without limitation the rights
    +
    10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +
    11 * copies of the Software, and to permit persons to whom the Software is
    +
    12 * furnished to do so, subject to the following conditions:
    +
    13 *
    +
    14 * The above copyright notice and this permission notice shall be included in all
    +
    15 * copies or substantial portions of the Software.
    16 *
    -
    17 * The above copyright notice and this permission notice shall be included in all
    -
    18 * copies or substantial portions of the Software.
    -
    19 *
    -
    20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -
    21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -
    22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -
    23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -
    24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    -
    26 * SOFTWARE.
    -
    27 */
    -
    28
    -
    29#pragma once
    -
    30
    -
    31#include <stdint.h>
    -
    32#include <stdbool.h>
    -
    33#include "sam.h"
    -
    34#include "system.h"
    -
    35
    -
    36typedef enum {
    -
    37 TC_PRESCALER_DIV1 = 0,
    -
    38 TC_PRESCALER_DIV2 = 1,
    -
    39 TC_PRESCALER_DIV4 = 2,
    -
    40 TC_PRESCALER_DIV8 = 3,
    -
    41 TC_PRESCALER_DIV16 = 4,
    -
    42 TC_PRESCALER_DIV64 = 5,
    -
    43 TC_PRESCALER_DIV256 = 6,
    -
    44 TC_PRESCALER_DIV1024 = 7
    -
    45} tc_prescaler_value_t;
    -
    46
    -
    47typedef enum {
    -
    48 TC_COUNTER_MODE_16BIT = 0,
    -
    49 TC_COUNTER_MODE_8BIT = 1,
    -
    50 TC_COUNTER_MODE_32BIT = 2,
    -
    51} tc_counter_mode_t;
    -
    52
    -
    53typedef enum {
    -
    54 TC_WAVEGEN_NORMAL_FREQUENCY = 0,
    -
    55 TC_WAVEGEN_MATCH_FREQUENCY = 1,
    -
    56 TC_WAVEGEN_NORMAL_PWM = 2,
    -
    57 TC_WAVEGEN_MATCH_PWM = 3,
    -
    58} tc_wavegen_t;
    -
    59
    -
    60typedef enum {
    -
    61 TC_CHANNEL_POLARITY_NORMAL = 0,
    -
    62 TC_CHANNEL_POLARITY_INVERTED = 1,
    -
    63} tc_channel_polarity_t;
    -
    64
    -
    -
    65typedef enum {
    -
    66 TC_EVENT_ACTION_DISABLED = 0x0ul,
    -
    67 TC_EVENT_ACTION_RETRIGGER = 0x1ul,
    -
    68 TC_EVENT_ACTION_COUNT = 0x2ul,
    -
    69 TC_EVENT_ACTION_START = 0x3ul,
    -
    70 TC_EVENT_ACTION_STAMP = 0x4ul,
    - -
    72 TC_EVENT_ACTION_PWP = 0x6ul,
    -
    73 TC_EVENT_ACTION_PW = 0x7ul,
    - +
    17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +
    18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +
    19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +
    20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +
    21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +
    22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +
    23 * SOFTWARE.
    +
    24 */
    +
    25
    +
    26#pragma once
    +
    27
    +
    28#include <stdint.h>
    +
    29#include <stdbool.h>
    +
    30#include "sam.h"
    +
    31#include "system.h"
    +
    32
    +
    39typedef enum {
    +
    40 TC_PRESCALER_DIV1 = 0,
    +
    41 TC_PRESCALER_DIV2 = 1,
    +
    42 TC_PRESCALER_DIV4 = 2,
    +
    43 TC_PRESCALER_DIV8 = 3,
    +
    44 TC_PRESCALER_DIV16 = 4,
    +
    45 TC_PRESCALER_DIV64 = 5,
    +
    46 TC_PRESCALER_DIV256 = 6,
    +
    47 TC_PRESCALER_DIV1024 = 7
    +
    48} tc_prescaler_value_t;
    +
    49
    +
    50typedef enum {
    +
    51 TC_COUNTER_MODE_16BIT = 0,
    +
    52 TC_COUNTER_MODE_8BIT = 1,
    +
    53 TC_COUNTER_MODE_32BIT = 2,
    +
    54} tc_counter_mode_t;
    +
    55
    +
    56typedef enum {
    +
    57 TC_WAVEGEN_NORMAL_FREQUENCY = 0,
    +
    58 TC_WAVEGEN_MATCH_FREQUENCY = 1,
    +
    59 TC_WAVEGEN_NORMAL_PWM = 2,
    +
    60 TC_WAVEGEN_MATCH_PWM = 3,
    +
    61} tc_wavegen_t;
    +
    62
    +
    63typedef enum {
    +
    64 TC_CHANNEL_POLARITY_NORMAL = 0,
    +
    65 TC_CHANNEL_POLARITY_INVERTED = 1,
    +
    66} tc_channel_polarity_t;
    +
    67
    +
    +
    68typedef enum {
    +
    69 TC_EVENT_ACTION_DISABLED = 0x0ul,
    +
    70 TC_EVENT_ACTION_RETRIGGER = 0x1ul,
    +
    71 TC_EVENT_ACTION_COUNT = 0x2ul,
    +
    72 TC_EVENT_ACTION_START = 0x3ul,
    +
    73 TC_EVENT_ACTION_STAMP = 0x4ul,
    + +
    75 TC_EVENT_ACTION_PWP = 0x6ul,
    +
    76 TC_EVENT_ACTION_PW = 0x7ul,
    +
    -
    75
    -
    97bool tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler);
    -
    98
    -
    118void tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode);
    -
    119
    -
    125void tc_set_run_in_standby(uint8_t instance, bool runStandby);
    -
    126
    -
    151void tc_set_wavegen(uint8_t instance, tc_wavegen_t mode);
    -
    152
    -
    165void tc_set_channel_polarity(uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity);
    -
    166
    -
    170void tc_enable(uint8_t instance);
    -
    171
    -
    176bool tc_is_enabled(uint8_t instance);
    -
    177
    -
    184void tc_count8_set_period(uint8_t instance, uint8_t period);
    -
    185
    -
    191uint8_t tc_count8_get_period(uint8_t instance);
    -
    192
    -
    200void tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value);
    -
    201
    -
    209void tc_count16_set_cc(uint8_t instance, uint8_t channel, uint16_t value);
    -
    210
    -
    217void tc_count32_set_cc(uint8_t instance, uint8_t channel, uint32_t value);
    -
    218
    -
    224void tc_count8_set_count(uint8_t instance, uint8_t value);
    -
    225
    -
    233void tc_count16_set_count(uint8_t instance, uint16_t value);
    -
    234
    -
    240void tc_count32_set_count(uint8_t instance, uint32_t value);
    -
    241
    -
    247uint8_t tc_count8_get_count(uint8_t instance);
    -
    248
    -
    256uint16_t tc_count16_get_count(uint8_t instance);
    -
    257
    -
    263uint32_t tc_count32_get_count(uint8_t instance);
    -
    264
    -
    270void tc_set_event_action(uint8_t instance, tc_event_action_t action);
    -
    271
    -
    279void tc_stop(uint8_t instance);
    -
    280
    -
    288void tc_retrigger(uint8_t instance);
    -
    289
    -
    293void tc_disable(uint8_t instance);
    -
    Gossamer system routines.
    -
    uint8_t tc_count8_get_count(uint8_t instance)
    Gets the TC's current counter value in 8-bit mode.
    Definition tc.c:156
    -
    void tc_set_run_in_standby(uint8_t instance, bool runStandby)
    Sets the TC's run-in-standby mode.
    Definition tc.c:74
    -
    void tc_stop(uint8_t instance)
    Issues a STOP command to the TC.
    Definition tc.c:176
    -
    bool tc_is_enabled(uint8_t instance)
    Checks whether the TC is enabled.
    Definition tc.c:110
    -
    bool tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler)
    Enables the peripheral clock for the TC and clocks it with the selected clock source....
    Definition tc.c:36
    -
    void tc_enable(uint8_t instance)
    Enables the TC. Make sure to call tc_init first to set it up.
    Definition tc.c:105
    -
    void tc_count16_set_count(uint8_t instance, uint16_t value)
    Sets the TC's counter value in 16-bit mode.
    Definition tc.c:138
    -
    uint16_t tc_count16_get_count(uint8_t instance)
    Gets the TC's current counter value in 16-bit mode.
    Definition tc.c:161
    -
    void tc_count16_set_cc(uint8_t instance, uint8_t channel, uint16_t value)
    Sets the TC's compare channel CC0 or CC1 register in 16-bit mode.
    Definition tc.c:126
    -
    void tc_count8_set_count(uint8_t instance, uint8_t value)
    Sets the TC's counter value in 8-bit mode.
    Definition tc.c:134
    -
    void tc_count32_set_count(uint8_t instance, uint32_t value)
    Sets the TC's counter value in 32-bit mode.
    Definition tc.c:142
    -
    void tc_count32_set_cc(uint8_t instance, uint8_t channel, uint32_t value)
    Sets the TC's compare channel CC0 or CC1 register in 32-bit mode.
    Definition tc.c:130
    -
    void tc_set_event_action(uint8_t instance, tc_event_action_t action)
    Sets the action to take when the TC receives an event.
    Definition tc.c:171
    -
    void tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value)
    Sets the TC's compare channel CC0 or CC1 register in 8-bit mode.
    Definition tc.c:122
    -
    uint8_t tc_count8_get_period(uint8_t instance)
    Gets the TC's period or PER register in 8-bit mode.
    Definition tc.c:118
    -
    uint32_t tc_count32_get_count(uint8_t instance)
    Gets the TC's current counter value in 32-bit mode.
    Definition tc.c:166
    -
    void tc_retrigger(uint8_t instance)
    Issues a RETRIGGER command to the TC.
    Definition tc.c:180
    -
    void tc_count8_set_period(uint8_t instance, uint8_t period)
    Sets the TC's period or PER register in 8-bit mode.
    Definition tc.c:114
    -
    void tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode)
    Sets the TC's counting mode (an 8, 16 or 32-bit counter),.
    Definition tc.c:70
    -
    tc_event_action_t
    Definition tc.h:65
    -
    @ TC_EVENT_ACTION_PPW
    NOTE: Not available on SAM D11 or D21.
    Definition tc.h:71
    -
    void tc_disable(uint8_t instance)
    Disables the TC, but retains all its settings.
    Definition tc.c:184
    -
    void tc_set_channel_polarity(uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity)
    Sets the polarity of one of the waveform output channels.
    Definition tc.c:86
    -
    void tc_set_wavegen(uint8_t instance, tc_wavegen_t mode)
    Sets the TC's waveform generation mode.
    Definition tc.c:78
    +
    78
    +
    100bool tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler);
    +
    101
    +
    121void tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode);
    +
    122
    +
    128void tc_set_run_in_standby(uint8_t instance, bool runStandby);
    +
    129
    +
    154void tc_set_wavegen(uint8_t instance, tc_wavegen_t mode);
    +
    155
    +
    168void tc_set_channel_polarity(uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity);
    +
    169
    +
    173void tc_enable(uint8_t instance);
    +
    174
    +
    179bool tc_is_enabled(uint8_t instance);
    +
    180
    +
    187void tc_count8_set_period(uint8_t instance, uint8_t period);
    +
    188
    +
    194uint8_t tc_count8_get_period(uint8_t instance);
    +
    195
    +
    203void tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value);
    +
    204
    +
    212void tc_count16_set_cc(uint8_t instance, uint8_t channel, uint16_t value);
    +
    213
    +
    220void tc_count32_set_cc(uint8_t instance, uint8_t channel, uint32_t value);
    +
    221
    +
    227void tc_count8_set_count(uint8_t instance, uint8_t value);
    +
    228
    +
    236void tc_count16_set_count(uint8_t instance, uint16_t value);
    +
    237
    +
    243void tc_count32_set_count(uint8_t instance, uint32_t value);
    +
    244
    +
    250uint8_t tc_count8_get_count(uint8_t instance);
    +
    251
    +
    259uint16_t tc_count16_get_count(uint8_t instance);
    +
    260
    +
    266uint32_t tc_count32_get_count(uint8_t instance);
    +
    267
    +
    273void tc_set_event_action(uint8_t instance, tc_event_action_t action);
    +
    274
    +
    282void tc_stop(uint8_t instance);
    +
    283
    +
    291void tc_retrigger(uint8_t instance);
    +
    292
    +
    296void tc_disable(uint8_t instance);
    +
    297
    +
    uint8_t tc_count8_get_count(uint8_t instance)
    Gets the TC's current counter value in 8-bit mode.
    Definition tc.c:156
    +
    void tc_set_run_in_standby(uint8_t instance, bool runStandby)
    Sets the TC's run-in-standby mode.
    Definition tc.c:74
    +
    void tc_stop(uint8_t instance)
    Issues a STOP command to the TC.
    Definition tc.c:176
    +
    bool tc_is_enabled(uint8_t instance)
    Checks whether the TC is enabled.
    Definition tc.c:110
    +
    bool tc_init(uint8_t instance, generic_clock_generator_t clocksource, tc_prescaler_value_t prescaler)
    Enables the peripheral clock for the TC and clocks it with the selected clock source....
    Definition tc.c:36
    +
    void tc_enable(uint8_t instance)
    Enables the TC. Make sure to call tc_init first to set it up.
    Definition tc.c:105
    +
    void tc_count16_set_count(uint8_t instance, uint16_t value)
    Sets the TC's counter value in 16-bit mode.
    Definition tc.c:138
    +
    uint16_t tc_count16_get_count(uint8_t instance)
    Gets the TC's current counter value in 16-bit mode.
    Definition tc.c:161
    +
    void tc_count16_set_cc(uint8_t instance, uint8_t channel, uint16_t value)
    Sets the TC's compare channel CC0 or CC1 register in 16-bit mode.
    Definition tc.c:126
    +
    void tc_count8_set_count(uint8_t instance, uint8_t value)
    Sets the TC's counter value in 8-bit mode.
    Definition tc.c:134
    +
    void tc_count32_set_count(uint8_t instance, uint32_t value)
    Sets the TC's counter value in 32-bit mode.
    Definition tc.c:142
    +
    void tc_count32_set_cc(uint8_t instance, uint8_t channel, uint32_t value)
    Sets the TC's compare channel CC0 or CC1 register in 32-bit mode.
    Definition tc.c:130
    +
    void tc_set_event_action(uint8_t instance, tc_event_action_t action)
    Sets the action to take when the TC receives an event.
    Definition tc.c:171
    +
    void tc_count8_set_cc(uint8_t instance, uint8_t channel, uint8_t value)
    Sets the TC's compare channel CC0 or CC1 register in 8-bit mode.
    Definition tc.c:122
    +
    uint8_t tc_count8_get_period(uint8_t instance)
    Gets the TC's period or PER register in 8-bit mode.
    Definition tc.c:118
    +
    uint32_t tc_count32_get_count(uint8_t instance)
    Gets the TC's current counter value in 32-bit mode.
    Definition tc.c:166
    +
    void tc_retrigger(uint8_t instance)
    Issues a RETRIGGER command to the TC.
    Definition tc.c:180
    +
    void tc_count8_set_period(uint8_t instance, uint8_t period)
    Sets the TC's period or PER register in 8-bit mode.
    Definition tc.c:114
    +
    void tc_set_counter_mode(uint8_t instance, tc_counter_mode_t mode)
    Sets the TC's counting mode (an 8, 16 or 32-bit counter),.
    Definition tc.c:70
    +
    tc_event_action_t
    Definition tc.h:68
    +
    void tc_disable(uint8_t instance)
    Disables the TC, but retains all its settings.
    Definition tc.c:184
    +
    void tc_set_channel_polarity(uint8_t instance, uint8_t channel, tc_channel_polarity_t polarity)
    Sets the polarity of one of the waveform output channels.
    Definition tc.c:86
    +
    void tc_set_wavegen(uint8_t instance, tc_wavegen_t mode)
    Sets the TC's waveform generation mode.
    Definition tc.c:78
    +
    @ TC_EVENT_ACTION_PPW
    NOTE: Not available on SAM D11 or D21.
    Definition tc.h:74
    +
    - + diff --git a/tcc_8h_source.html b/tcc_8h_source.html index 333e2a0..3754b0f 100644 --- a/tcc_8h_source.html +++ b/tcc_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
    +
    + +
    +
    +
    + +
    - -
    tcc.h
    -Go to the documentation of this file.
    1
    -
    5/*
    -
    6 * MIT License
    -
    7 *
    -
    8 * Copyright (c) 2022 Joey Castillo
    -
    9 *
    -
    10 * Permission is hereby granted, free of charge, to any person obtaining a copy
    -
    11 * of this software and associated documentation files (the "Software"), to deal
    -
    12 * in the Software without restriction, including without limitation the rights
    -
    13 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    -
    14 * copies of the Software, and to permit persons to whom the Software is
    -
    15 * furnished to do so, subject to the following conditions:
    +
    1
    +
    2/*
    +
    3 * MIT License
    +
    4 *
    +
    5 * Copyright (c) 2022 Joey Castillo
    +
    6 *
    +
    7 * Permission is hereby granted, free of charge, to any person obtaining a copy
    +
    8 * of this software and associated documentation files (the "Software"), to deal
    +
    9 * in the Software without restriction, including without limitation the rights
    +
    10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +
    11 * copies of the Software, and to permit persons to whom the Software is
    +
    12 * furnished to do so, subject to the following conditions:
    +
    13 *
    +
    14 * The above copyright notice and this permission notice shall be included in all
    +
    15 * copies or substantial portions of the Software.
    16 *
    -
    17 * The above copyright notice and this permission notice shall be included in all
    -
    18 * copies or substantial portions of the Software.
    -
    19 *
    -
    20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -
    21 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -
    22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -
    23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -
    24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    25 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    -
    26 * SOFTWARE.
    -
    27 */
    -
    28
    -
    29#pragma once
    -
    30
    -
    31#include <stdint.h>
    -
    32#include <stdbool.h>
    -
    33#include "sam.h"
    -
    34
    -
    35typedef enum {
    -
    36 TCC_PRESCALER_DIV1 = 0,
    -
    37 TCC_PRESCALER_DIV2 = 1,
    -
    38 TCC_PRESCALER_DIV4 = 2,
    -
    39 TCC_PRESCALER_DIV8 = 3,
    -
    40 TCC_PRESCALER_DIV16 = 4,
    -
    41 TCC_PRESCALER_DIV64 = 5,
    -
    42 TCC_PRESCALER_DIV256 = 6,
    -
    43 TCC_PRESCALER_DIV1024 = 7
    -
    44} tcc_prescaler_value_t;
    -
    45
    -
    46typedef enum {
    -
    47 TCC_WAVEGEN_NORMAL_FREQUENCY = 0,
    -
    48 TCC_WAVEGEN_MATCH_FREQUENCY = 1,
    -
    49 TCC_WAVEGEN_NORMAL_PWM = 2,
    -
    50// These modes may be supported in the future, but I don't have a use for them right now.
    -
    51 // TCC_WAVEGEN_DUAL_SLOPE_TOP = 7,
    -
    52 // TCC_WAVEGEN_DUAL_SLOPE_BOTTOM = 5,
    -
    53 // TCC_WAVEGEN_DUAL_SLOPE_BOTH = 6,
    -
    54 // TCC_WAVEGEN_DUAL_SLOPE_CRITICAL = 4,
    -
    55} tcc_wavegen_t;
    -
    56
    -
    57typedef enum {
    -
    58 TCC_OUTPUT_MATRIX_MODULO_4 = 0,
    -
    59 TCC_OUTPUT_MATRIX_MODULO_2 = 1,
    -
    60 TCC_OUTPUT_MATRIX_ALL_CC0 = 2,
    -
    61 TCC_OUTPUT_MATRIX_WO0_CC0_OTHERS_CC1 = 3,
    -
    62} tcc_output_matrix_t;
    -
    63
    -
    64typedef enum {
    -
    65 TCC_CHANNEL_POLARITY_NORMAL = 0,
    -
    66 TCC_CHANNEL_POLARITY_INVERTED = 1,
    -
    67} tcc_channel_polarity_t;
    -
    68
    -
    89bool tcc_init(uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler);
    -
    90
    -
    96void tcc_set_run_in_standby(uint8_t instance, bool runStandby);
    -
    97
    -
    116void tcc_set_wavegen(uint8_t instance, tcc_wavegen_t mode);
    -
    117
    -
    133void tcc_set_output_matrix(uint8_t instance, tcc_output_matrix_t mode);
    -
    134
    -
    146void tcc_set_channel_polarity(uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity);
    -
    147
    -
    151void tcc_enable(uint8_t instance);
    -
    152
    -
    157bool tcc_is_enabled(uint8_t instance);
    -
    158
    -
    170void tcc_set_period(uint8_t instance, uint32_t period, bool buffered);
    -
    171
    -
    177uint32_t tcc_get_period(uint8_t instance);
    -
    178
    -
    190void tcc_set_cc(uint8_t instance, uint8_t channel, uint32_t value, bool buffered);
    -
    191
    -
    197void tcc_set_count(uint8_t instance, uint32_t value);
    -
    198
    -
    204uint32_t tcc_get_count(uint8_t instance);
    -
    205
    -
    218void tcc_stop(uint8_t instance);
    -
    219
    -
    224void tcc_retrigger(uint8_t instance);
    -
    225
    -
    230void tcc_update(uint8_t instance);
    -
    231
    -
    235void tcc_disable(uint8_t instance);
    -
    void tcc_set_period(uint8_t instance, uint32_t period, bool buffered)
    Sets the period of the TCC.
    Definition tcc.c:85
    -
    void tcc_disable(uint8_t instance)
    Disables the TCC, but retains all its settings.
    Definition tcc.c:145
    -
    void tcc_set_run_in_standby(uint8_t instance, bool runStandby)
    Sets whether the TCC should run in standby mode.
    Definition tcc.c:56
    -
    void tcc_set_count(uint8_t instance, uint32_t value)
    Sets the value of the counter.
    Definition tcc.c:119
    -
    uint32_t tcc_get_period(uint8_t instance)
    Gets the period of the TCC.
    Definition tcc.c:100
    -
    uint32_t tcc_get_count(uint8_t instance)
    Gets the current value of the counter.
    Definition tcc.c:124
    -
    bool tcc_init(uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler)
    Enables the peripheral clock for the TCC and clocks it with the selected clock source....
    Definition tcc.c:33
    -
    void tcc_set_output_matrix(uint8_t instance, tcc_output_matrix_t mode)
    Sets the output matrix for the TCC.
    Definition tcc.c:64
    -
    bool tcc_is_enabled(uint8_t instance)
    Checks whether the TCC is enabled.
    Definition tcc.c:81
    -
    void tcc_enable(uint8_t instance)
    Enables the TCC. Make sure to call tcc_init first to set it up.
    Definition tcc.c:76
    -
    void tcc_set_wavegen(uint8_t instance, tcc_wavegen_t mode)
    Sets the waveform generation mode for the TCC.
    Definition tcc.c:60
    -
    void tcc_stop(uint8_t instance)
    Issues a STOP command to the TCC.
    Definition tcc.c:130
    -
    void tcc_update(uint8_t instance)
    Issues an UPDATE command to the TCC.
    Definition tcc.c:140
    -
    void tcc_set_channel_polarity(uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity)
    Sets the polarity of a channel.
    Definition tcc.c:68
    -
    void tcc_set_cc(uint8_t instance, uint8_t channel, uint32_t value, bool buffered)
    Sets the value of a compare channel.
    Definition tcc.c:104
    -
    void tcc_retrigger(uint8_t instance)
    Issues a RETRIGGER command to the TCC.
    Definition tcc.c:135
    +
    17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +
    18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +
    19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +
    20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +
    21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +
    22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +
    23 * SOFTWARE.
    +
    24 */
    +
    25
    +
    26#pragma once
    +
    27
    +
    28#include <stdint.h>
    +
    29#include <stdbool.h>
    +
    30#include "sam.h"
    +
    31
    +
    38typedef enum {
    +
    39 TCC_PRESCALER_DIV1 = 0,
    +
    40 TCC_PRESCALER_DIV2 = 1,
    +
    41 TCC_PRESCALER_DIV4 = 2,
    +
    42 TCC_PRESCALER_DIV8 = 3,
    +
    43 TCC_PRESCALER_DIV16 = 4,
    +
    44 TCC_PRESCALER_DIV64 = 5,
    +
    45 TCC_PRESCALER_DIV256 = 6,
    +
    46 TCC_PRESCALER_DIV1024 = 7
    +
    47} tcc_prescaler_value_t;
    +
    48
    +
    49typedef enum {
    +
    50 TCC_WAVEGEN_NORMAL_FREQUENCY = 0,
    +
    51 TCC_WAVEGEN_MATCH_FREQUENCY = 1,
    +
    52 TCC_WAVEGEN_NORMAL_PWM = 2,
    +
    53// These modes may be supported in the future, but I don't have a use for them right now.
    +
    54 // TCC_WAVEGEN_DUAL_SLOPE_TOP = 7,
    +
    55 // TCC_WAVEGEN_DUAL_SLOPE_BOTTOM = 5,
    +
    56 // TCC_WAVEGEN_DUAL_SLOPE_BOTH = 6,
    +
    57 // TCC_WAVEGEN_DUAL_SLOPE_CRITICAL = 4,
    +
    58} tcc_wavegen_t;
    +
    59
    +
    60typedef enum {
    +
    61 TCC_OUTPUT_MATRIX_MODULO_4 = 0,
    +
    62 TCC_OUTPUT_MATRIX_MODULO_2 = 1,
    +
    63 TCC_OUTPUT_MATRIX_ALL_CC0 = 2,
    +
    64 TCC_OUTPUT_MATRIX_WO0_CC0_OTHERS_CC1 = 3,
    +
    65} tcc_output_matrix_t;
    +
    66
    +
    67typedef enum {
    +
    68 TCC_CHANNEL_POLARITY_NORMAL = 0,
    +
    69 TCC_CHANNEL_POLARITY_INVERTED = 1,
    +
    70} tcc_channel_polarity_t;
    +
    71
    +
    92bool tcc_init(uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler);
    +
    93
    +
    99void tcc_set_run_in_standby(uint8_t instance, bool runStandby);
    +
    100
    +
    119void tcc_set_wavegen(uint8_t instance, tcc_wavegen_t mode);
    +
    120
    +
    136void tcc_set_output_matrix(uint8_t instance, tcc_output_matrix_t mode);
    +
    137
    +
    149void tcc_set_channel_polarity(uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity);
    +
    150
    +
    154void tcc_enable(uint8_t instance);
    +
    155
    +
    160bool tcc_is_enabled(uint8_t instance);
    +
    161
    +
    173void tcc_set_period(uint8_t instance, uint32_t period, bool buffered);
    +
    174
    +
    180uint32_t tcc_get_period(uint8_t instance);
    +
    181
    +
    193void tcc_set_cc(uint8_t instance, uint8_t channel, uint32_t value, bool buffered);
    +
    194
    +
    200void tcc_set_count(uint8_t instance, uint32_t value);
    +
    201
    +
    207uint32_t tcc_get_count(uint8_t instance);
    +
    208
    +
    221void tcc_stop(uint8_t instance);
    +
    222
    +
    227void tcc_retrigger(uint8_t instance);
    +
    228
    +
    233void tcc_update(uint8_t instance);
    +
    234
    +
    238void tcc_disable(uint8_t instance);
    +
    239
    +
    void tcc_set_period(uint8_t instance, uint32_t period, bool buffered)
    Sets the period of the TCC.
    Definition tcc.c:85
    +
    void tcc_disable(uint8_t instance)
    Disables the TCC, but retains all its settings.
    Definition tcc.c:145
    +
    void tcc_set_run_in_standby(uint8_t instance, bool runStandby)
    Sets whether the TCC should run in standby mode.
    Definition tcc.c:56
    +
    void tcc_set_count(uint8_t instance, uint32_t value)
    Sets the value of the counter.
    Definition tcc.c:119
    +
    uint32_t tcc_get_period(uint8_t instance)
    Gets the period of the TCC.
    Definition tcc.c:100
    +
    uint32_t tcc_get_count(uint8_t instance)
    Gets the current value of the counter.
    Definition tcc.c:124
    +
    bool tcc_init(uint8_t instance, generic_clock_generator_t clocksource, tcc_prescaler_value_t prescaler)
    Enables the peripheral clock for the TCC and clocks it with the selected clock source....
    Definition tcc.c:33
    +
    void tcc_set_output_matrix(uint8_t instance, tcc_output_matrix_t mode)
    Sets the output matrix for the TCC.
    Definition tcc.c:64
    +
    bool tcc_is_enabled(uint8_t instance)
    Checks whether the TCC is enabled.
    Definition tcc.c:81
    +
    void tcc_enable(uint8_t instance)
    Enables the TCC. Make sure to call tcc_init first to set it up.
    Definition tcc.c:76
    +
    void tcc_set_wavegen(uint8_t instance, tcc_wavegen_t mode)
    Sets the waveform generation mode for the TCC.
    Definition tcc.c:60
    +
    void tcc_stop(uint8_t instance)
    Issues a STOP command to the TCC.
    Definition tcc.c:130
    +
    void tcc_update(uint8_t instance)
    Issues an UPDATE command to the TCC.
    Definition tcc.c:140
    +
    void tcc_set_channel_polarity(uint8_t instance, uint8_t channel, tcc_channel_polarity_t polarity)
    Sets the polarity of a channel.
    Definition tcc.c:68
    +
    void tcc_set_cc(uint8_t instance, uint8_t channel, uint32_t value, bool buffered)
    Sets the value of a compare channel.
    Definition tcc.c:104
    +
    void tcc_retrigger(uint8_t instance)
    Issues a RETRIGGER command to the TCC.
    Definition tcc.c:135
    +
    - + diff --git a/todo.html b/todo.html deleted file mode 100644 index 8f5a141..0000000 --- a/todo.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -gossamer: Todo List - - - - - - - - - -
    -
    - - - - - - -
    -
    gossamer 0.0.0 -
    -
    a very lightweight app framework for SAMD and SAML chips
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    -
    Todo List
    -
    -
    -
    -
    Global uart_irq_handler (uint8_t sercom)
    -
    Really need to refactor this so it's called from the HAL, not the app.
    -
    -
    -
    - - - - diff --git a/topics.html b/topics.html new file mode 100644 index 0000000..8ad5615 --- /dev/null +++ b/topics.html @@ -0,0 +1,127 @@ + + + + + + + +gossamer: Topics + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    gossamer 0.0.0 +
    +
    a very lightweight app framework for SAMD and SAML chips
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Topics
    +
    +
    +
    Here is a list of all topics with brief descriptions:
    + + + + + + + + + + + + + + + + + + + +
     Analog to Digital ConverterFunctions for using the ADC peripheral
     Gossamer application frameworkThis section describes the application framework that you will use to write your firmware
     Digital to Analog ConverterFunctions for configuring and using the DAC peripheral
     Direct Memory Access ControllerWIP functions for configuring and using the Direct Memory Access controller
     External Interrupt ControllerFunctions for configuring and using the External Interrupt Controller
     Event SystemFunctions for configuring and using the Event System
     Inter-IC Communications PeripheralThe I2C peripheral is used for communication with I2C devices over SDA and SCL pins
     Inter-IC Sound interfaceFunctions for configuring and using the I2S peripheral (SAM D21 only)
     Operational AmplifierFunctions for configuring and using the operational amplifier on the SAM L21
     Peripheral Touch ControllerFunctions for configuring and using the Peripheral Touch Controller
     Real-Time ClockFunctions for configuring and using the Real-Time Clock peripheral
     Segment LCD driverFunctions for configuring and using the SAM L22's Segment LCD peripheral
     SPI PeripheralThe SPI peripheral is used for synchronous serial communication with other devices
     System InternalsFunctions for configuring the system and putting it in standby mode
     Timer/CounterFunctions for configuring and using the Timer/Counter peripherals
     Timer/Counter for Control ApplicationsFunctions for configuring and using the TCC peripheral, a more advanced timer/counter
     UART PeripheralThe UART peripheral is used for serial communication over TX and RX pins
     Universal Serial BusFunctions for configuring and using the USB peripheral
    +
    +
    +
    + + + + diff --git a/topics.js b/topics.js new file mode 100644 index 0000000..e04ec0c --- /dev/null +++ b/topics.js @@ -0,0 +1,21 @@ +var topics = +[ + [ "Analog to Digital Converter", "group__adc.html", "group__adc" ], + [ "Gossamer application framework", "group__app.html", "group__app" ], + [ "Digital to Analog Converter", "group__dac.html", "group__dac" ], + [ "Direct Memory Access Controller", "group__dma.html", "group__dma" ], + [ "External Interrupt Controller", "group__eic.html", "group__eic" ], + [ "Event System", "group__evsys.html", "group__evsys" ], + [ "Inter-IC Communications Peripheral", "group__i2c.html", "group__i2c" ], + [ "Inter-IC Sound interface", "group__i2s.html", "group__i2s" ], + [ "Operational Amplifier", "group__opamp.html", "group__opamp" ], + [ "Peripheral Touch Controller", "group__ptc.html", "group__ptc" ], + [ "Real-Time Clock", "group__rtc.html", "group__rtc" ], + [ "Segment LCD driver", "group__slcd.html", "group__slcd" ], + [ "SPI Peripheral", "group__spi.html", "group__spi" ], + [ "System Internals", "group__system.html", "group__system" ], + [ "Timer/Counter", "group__tc.html", "group__tc" ], + [ "Timer/Counter for Control Applications", "group__tcc.html", "group__tcc" ], + [ "UART Peripheral", "group__uart.html", "group__uart" ], + [ "Universal Serial Bus", "group__usb.html", "group__usb" ] +]; \ No newline at end of file diff --git a/tusb__config_8h_source.html b/tusb__config_8h_source.html index 0ed108d..4cebd40 100644 --- a/tusb__config_8h_source.html +++ b/tusb__config_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
    +
    + +
    +
    +
    + +
    - -
    tusb_config.h
    @@ -206,9 +222,13 @@
    122
    123#endif /* _TUSB_CONFIG_H_ */
    +

    - + diff --git a/uart_8h_source.html b/uart_8h_source.html index b0a2f97..9f77b38 100644 --- a/uart_8h_source.html +++ b/uart_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ +
    +
    + +
    +
    +
    + +
    - -
    uart.h
    -Go to the documentation of this file.
    1
    -
    16#pragma once
    -
    17
    -
    18#include <stdint.h>
    -
    19#include <stdbool.h>
    -
    20#include <stddef.h>
    -
    21
    -
    22typedef enum {
    -
    23 UART_TXPO_0 = 0,
    -
    24 UART_TXPO_2,
    -
    25 UART_TXPO_0_FLOW_CONTROL,
    -
    26 UART_TXPO_NONE = 0xff
    -
    27} uart_txpo_t;
    -
    28
    -
    29typedef enum {
    -
    30 UART_RXPO_0 = 0,
    -
    31 UART_RXPO_1,
    -
    32 UART_RXPO_2,
    -
    33 UART_RXPO_3,
    -
    34 UART_RXPO_NONE = 0xff
    -
    35} uart_rxpo_t;
    -
    36
    -
    41void uart_init(uint32_t baud);
    -
    42
    -
    46void uart_enable(void);
    -
    47
    -
    52void uart_set_run_in_standby(bool run_in_standby);
    -
    53
    -
    58void uart_set_irda_mode(bool irda);
    -
    59
    -
    65void uart_write(uint8_t *data, size_t length);
    -
    66
    -
    73size_t uart_read(uint8_t *data, size_t max_length);
    +
    1
    +
    2/*
    +
    3 * MIT License
    +
    4 *
    +
    5 * Copyright (c) 2024 Joey Castillo
    +
    6 *
    +
    7 * Permission is hereby granted, free of charge, to any person obtaining a copy
    +
    8 * of this software and associated documentation files (the "Software"), to deal
    +
    9 * in the Software without restriction, including without limitation the rights
    +
    10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +
    11 * copies of the Software, and to permit persons to whom the Software is
    +
    12 * furnished to do so, subject to the following conditions:
    +
    13 *
    +
    14 * The above copyright notice and this permission notice shall be included in all
    +
    15 * copies or substantial portions of the Software.
    +
    16 *
    +
    17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +
    18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +
    19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +
    20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +
    21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +
    22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +
    23 * SOFTWARE.
    +
    24 */
    +
    25
    +
    26#pragma once
    +
    27
    +
    28#include <stdint.h>
    +
    29#include <stdbool.h>
    +
    30#include <stddef.h>
    +
    31
    +
    +
    48typedef enum {
    +
    49 UART_TXPO_0 = 0,
    +
    50 UART_TXPO_2,
    +
    51 UART_TXPO_0_FLOW_CONTROL,
    +
    52 UART_TXPO_NONE = 0xff
    + +
    +
    54
    +
    +
    56typedef enum {
    +
    57 UART_RXPO_0 = 0,
    +
    58 UART_RXPO_1,
    +
    59 UART_RXPO_2,
    +
    60 UART_RXPO_3,
    +
    61 UART_RXPO_NONE = 0xff
    + +
    +
    63
    +
    68void uart_init(uint32_t baud);
    +
    69
    +
    73void uart_enable(void);
    74
    -
    80bool uart_read_byte(uint8_t *byte);
    -
    81
    -
    85void uart_disable(void);
    +
    79void uart_set_run_in_standby(bool run_in_standby);
    +
    80
    +
    85void uart_set_irda_mode(bool irda);
    86
    -
    94void uart_init_instance(uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud);
    -
    95
    -
    100void uart_set_run_in_standby_instance(uint8_t sercom, bool run_in_standby);
    +
    92void uart_write(uint8_t *data, size_t length);
    +
    93
    +
    100size_t uart_read(uint8_t *data, size_t max_length);
    101
    -
    107void uart_set_irda_mode_instance(uint8_t sercom, bool irda);
    +
    107bool uart_read_byte(uint8_t *byte);
    108
    -
    113void uart_enable_instance(uint8_t sercom);
    -
    114
    -
    121void uart_write_instance(uint8_t sercom, uint8_t *data, size_t length);
    +
    112void uart_disable(void);
    +
    113
    +
    121void uart_init_instance(uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud);
    122
    -
    130size_t uart_read_instance(uint8_t sercom, uint8_t *data, size_t max_length);
    -
    131
    -
    138bool uart_read_byte_instance(uint8_t sercom, uint8_t *byte);
    -
    139
    -
    144void uart_disable_instance(uint8_t sercom);
    -
    145
    -
    156void uart_irq_handler(uint8_t sercom);
    -
    void uart_disable_instance(uint8_t sercom)
    Disables a specific SERCOM UART instance.
    Definition uart.c:200
    -
    size_t uart_read_instance(uint8_t sercom, uint8_t *data, size_t max_length)
    Reads data from a specific SERCOM UART instance.
    Definition uart.c:174
    -
    void uart_irq_handler(uint8_t sercom)
    UART IRQ handler.
    Definition uart.c:204
    -
    bool uart_read_byte(uint8_t *byte)
    Reads a single byte from the UART peripheral for a board with a defined UART_SERCOM.
    -
    void uart_write(uint8_t *data, size_t length)
    Writes data to the UART peripheral for a board with a defined UART_SERCOM.
    -
    void uart_set_irda_mode_instance(uint8_t sercom, bool irda)
    Sets IRDA mode for a specific SERCOM instance.
    Definition uart.c:159
    -
    void uart_set_run_in_standby_instance(uint8_t sercom, bool run_in_standby)
    Enables a specific SERCOM UART instance.
    Definition uart.c:155
    -
    void uart_disable(void)
    Disables the UART peripheral for a board with a defined UART_SERCOM.
    -
    void uart_init_instance(uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud)
    initializes a specific SERCOM UART instance.
    Definition uart.c:105
    -
    void uart_set_run_in_standby(bool run_in_standby)
    Sets whether the UART_SERCOM should run in standby mode.
    -
    size_t uart_read(uint8_t *data, size_t max_length)
    Reads data from the UART peripheral for a board with a defined UART_SERCOM.
    -
    void uart_enable_instance(uint8_t sercom)
    Enables a specific SERCOM UART instance.
    Definition uart.c:164
    -
    void uart_write_instance(uint8_t sercom, uint8_t *data, size_t length)
    Writes data to a specific SERCOM UART instance.
    Definition uart.c:168
    -
    void uart_init(uint32_t baud)
    Initializes the UART peripheral for a board with a defined UART_SERCOM.
    -
    bool uart_read_byte_instance(uint8_t sercom, uint8_t *byte)
    Reads a single byte from a specific SERCOM UART instance.
    Definition uart.c:183
    -
    void uart_set_irda_mode(bool irda)
    Sets IRDA mode for the UART_SERCOM.
    -
    void uart_enable(void)
    Enables the UART peripheral for a board with a defined UART_SERCOM.
    +
    127void uart_set_run_in_standby_instance(uint8_t sercom, bool run_in_standby);
    +
    128
    +
    134void uart_set_irda_mode_instance(uint8_t sercom, bool irda);
    +
    135
    +
    140void uart_enable_instance(uint8_t sercom);
    +
    141
    +
    148void uart_write_instance(uint8_t sercom, uint8_t *data, size_t length);
    +
    149
    +
    157size_t uart_read_instance(uint8_t sercom, uint8_t *data, size_t max_length);
    +
    158
    +
    165bool uart_read_byte_instance(uint8_t sercom, uint8_t *byte);
    +
    166
    +
    171void uart_disable_instance(uint8_t sercom);
    +
    172
    +
    182void uart_irq_handler(uint8_t sercom);
    +
    183
    +
    uart_txpo_t
    UART transmit pinout options.
    Definition uart.h:48
    +
    void uart_disable_instance(uint8_t sercom)
    Disables a specific SERCOM UART instance.
    Definition uart.c:200
    +
    size_t uart_read_instance(uint8_t sercom, uint8_t *data, size_t max_length)
    Reads data from a specific SERCOM UART instance.
    Definition uart.c:174
    +
    void uart_irq_handler(uint8_t sercom)
    UART IRQ handler.
    Definition uart.c:204
    +
    uart_rxpo_t
    UART receive pinout options.
    Definition uart.h:56
    +
    bool uart_read_byte(uint8_t *byte)
    Reads a single byte from the UART peripheral for a board with a defined UART_SERCOM.
    +
    void uart_write(uint8_t *data, size_t length)
    Writes data to the UART peripheral for a board with a defined UART_SERCOM.
    +
    void uart_set_irda_mode_instance(uint8_t sercom, bool irda)
    Sets IRDA mode for a specific SERCOM instance.
    Definition uart.c:159
    +
    void uart_set_run_in_standby_instance(uint8_t sercom, bool run_in_standby)
    Enables a specific SERCOM UART instance.
    Definition uart.c:155
    +
    void uart_disable(void)
    Disables the UART peripheral for a board with a defined UART_SERCOM.
    +
    void uart_init_instance(uint8_t sercom, uart_txpo_t txpo, uart_rxpo_t rxpo, uint32_t baud)
    initializes a specific SERCOM UART instance.
    Definition uart.c:105
    +
    void uart_set_run_in_standby(bool run_in_standby)
    Sets whether the UART_SERCOM should run in standby mode.
    +
    size_t uart_read(uint8_t *data, size_t max_length)
    Reads data from the UART peripheral for a board with a defined UART_SERCOM.
    +
    void uart_enable_instance(uint8_t sercom)
    Enables a specific SERCOM UART instance.
    Definition uart.c:164
    +
    void uart_write_instance(uint8_t sercom, uint8_t *data, size_t length)
    Writes data to a specific SERCOM UART instance.
    Definition uart.c:168
    +
    void uart_init(uint32_t baud)
    Initializes the UART peripheral for a board with a defined UART_SERCOM.
    +
    bool uart_read_byte_instance(uint8_t sercom, uint8_t *byte)
    Reads a single byte from a specific SERCOM UART instance.
    Definition uart.c:183
    +
    void uart_set_irda_mode(bool irda)
    Sets IRDA mode for the UART_SERCOM.
    +
    void uart_enable(void)
    Enables the UART peripheral for a board with a defined UART_SERCOM.
    +
    - + diff --git a/unionrtc__date__time__t.html b/unionrtc__date__time__t.html index 9a78543..ae0321c 100644 --- a/unionrtc__date__time__t.html +++ b/unionrtc__date__time__t.html @@ -9,6 +9,10 @@ + + + + @@ -47,6 +51,23 @@ /* @license-end */ +

    +
    + +
    +
    +
    + +
    -
    -
    rtc_date_time_t Union Reference
    +
    rtc_date_time_t Union Reference
    @@ -109,9 +129,13 @@
  • common/rtc.h
  • + - + diff --git a/usb_8h_source.html b/usb_8h_source.html index 424df30..ba2dc69 100644 --- a/usb_8h_source.html +++ b/usb_8h_source.html @@ -9,6 +9,10 @@ + + + + @@ -52,6 +56,23 @@ $(document).ready(function() { init_codefold(0); }); /* @license-end */ + +
    + +
    +
    +
    + +
    - -
    usb.h
    -
    1/*
    -
    2 * MIT License
    -
    3 *
    -
    4 * Copyright (c) 2023 Joey Castillo
    -
    5 *
    -
    6 * Permission is hereby granted, free of charge, to any person obtaining a copy
    -
    7 * of this software and associated documentation files (the "Software"), to deal
    -
    8 * in the Software without restriction, including without limitation the rights
    -
    9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    -
    10 * copies of the Software, and to permit persons to whom the Software is
    -
    11 * furnished to do so, subject to the following conditions:
    -
    12 *
    -
    13 * The above copyright notice and this permission notice shall be included in all
    -
    14 * copies or substantial portions of the Software.
    -
    15 *
    -
    16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -
    17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -
    18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    -
    19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    -
    20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    -
    21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    -
    22 * SOFTWARE.
    -
    23 */
    -
    24
    -
    25#if APP_USES_TINYUSB || defined(__EMSCRIPTEN__)
    -
    26
    -
    27#pragma once
    -
    28
    -
    29#include <stdint.h>
    -
    30#include <stdbool.h>
    -
    31#include "tusb.h"
    -
    32
    -
    37void usb_init(void);
    -
    38
    -
    60void usb_enable(void);
    -
    61
    -
    66bool usb_is_enabled(void);
    -
    67
    -
    72void usb_disable(void);
    -
    73
    -
    74#endif
    +
    1
    +
    2/*
    +
    3 * MIT License
    +
    4 *
    +
    5 * Copyright (c) 2023 Joey Castillo
    +
    6 *
    +
    7 * Permission is hereby granted, free of charge, to any person obtaining a copy
    +
    8 * of this software and associated documentation files (the "Software"), to deal
    +
    9 * in the Software without restriction, including without limitation the rights
    +
    10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +
    11 * copies of the Software, and to permit persons to whom the Software is
    +
    12 * furnished to do so, subject to the following conditions:
    +
    13 *
    +
    14 * The above copyright notice and this permission notice shall be included in all
    +
    15 * copies or substantial portions of the Software.
    +
    16 *
    +
    17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +
    18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +
    19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +
    20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +
    21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +
    22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    +
    23 * SOFTWARE.
    +
    24 */
    +
    25
    +
    26#if APP_USES_TINYUSB || defined(__EMSCRIPTEN__)
    +
    27
    +
    28#pragma once
    +
    29
    +
    30#include <stdint.h>
    +
    31#include <stdbool.h>
    +
    32#include "tusb.h"
    +
    33
    +
    45void usb_init(void);
    +
    46
    +
    68void usb_enable(void);
    +
    69
    +
    74bool usb_is_enabled(void);
    +
    75
    +
    80void usb_disable(void);
    +
    81
    +
    84#endif
    +
    void usb_enable(void)
    Initializes the TinyUSB stack and enables the USB peripheral.
    Definition usb.c:61
    +
    void usb_disable(void)
    Disables the USB peripheral.
    Definition usb.c:69
    +
    void usb_init(void)
    Initializes the USB preipheral, and assigns the USB pins to their relevant functions....
    Definition usb.c:33
    +
    bool usb_is_enabled(void)
    Checks if the USB peripheral is enabled.
    Definition usb.c:65
    +
    - +