From 3f9d13fd75a02b047ce4b1622b88adac6fe8d3aa Mon Sep 17 00:00:00 2001 From: Ritalinjing <51888075+LinjingZhang@users.noreply.github.com> Date: Tue, 28 Jan 2025 11:31:22 +0100 Subject: [PATCH 001/366] squash!Initialize ArduinoCore-API update (#323) * init: delete old core and add new core API. Starting point for rewriting the xmc-arduino core * chore: sync .gitignore and add arduino-core-api as submodule * ops: setup development environment * doc: document new dev env * ci: Update compile-platform-examples.yml, set-up submodule and symlink --- .../workflows/compile-platform-examples.yml | 4 + .gitignore | 6 +- .gitmodules | 3 + CONTRIBUTING.md | 2 +- cores/Arduino.h | 350 -------- cores/Client.h | 52 -- cores/HardwareSerial.cpp | 239 ------ cores/HardwareSerial.h | 110 --- cores/IPAddress.cpp | 112 --- cores/IPAddress.h | 85 -- cores/Main.cpp | 57 -- cores/Print.cpp | 230 ------ cores/Print.h | 104 --- cores/Printable.h | 46 -- cores/RingBuffer.cpp | 52 -- cores/RingBuffer.h | 41 - cores/Server.h | 35 - cores/Stream.cpp | 332 -------- cores/Stream.h | 171 ---- cores/Tone.cpp | 143 ---- cores/Tone.h | 37 - cores/Udp.h | 80 -- cores/WCharacter.h | 127 --- cores/WInterrupts.c | 217 ----- cores/WInterrupts.h | 52 -- cores/WMath.cpp | 63 -- cores/WMath.h | 37 - cores/WString.cpp | 704 ---------------- cores/WString.h | 288 ------- cores/Wprogram.h | 31 - cores/abi.cpp | 49 -- cores/avr/dtostrf.c | 116 --- cores/avr/dtostrf.h | 39 - cores/avr/interrupt.h | 23 - cores/avr/io.h | 38 - cores/avr/pgmspace.h | 134 --- cores/binary.h | 536 ------------ cores/hooks.c | 32 - cores/itoa.c | 172 ---- cores/itoa.h | 46 -- cores/new.cpp | 38 - cores/reset.c | 70 -- cores/reset.h | 44 - cores/usblib/Class/CDCClass.h | 85 -- cores/usblib/Class/Common/CDCClassCommon.h | 395 --------- cores/usblib/Class/Common/HIDClassCommon.h | 686 ---------------- cores/usblib/Class/Common/HIDParser.h | 118 --- cores/usblib/Class/Common/HIDReportData.h | 130 --- .../Class/Common/MassStorageClassCommon.h | 372 --------- cores/usblib/Class/Device/CDCClassDevice.c | 354 -------- cores/usblib/Class/Device/CDCClassDevice.h | 351 -------- cores/usblib/Class/Device/HIDClassDevice.c | 217 ----- cores/usblib/Class/Device/HIDClassDevice.h | 213 ----- .../Class/Device/MassStorageClassDevice.c | 220 ----- .../Class/Device/MassStorageClassDevice.h | 165 ---- cores/usblib/Class/HIDClass.h | 86 -- cores/usblib/Class/MassStorageClass.h | 85 -- cores/usblib/Common/ArchitectureSpecific.h | 79 -- cores/usblib/Common/Architectures.h | 72 -- cores/usblib/Common/Attributes.h | 208 ----- cores/usblib/Common/BoardTypes.h | 261 ------ cores/usblib/Common/Common.h | 226 ----- cores/usblib/Common/CompilerSpecific.h | 105 --- cores/usblib/Common/Endianness.h | 465 ----------- cores/usblib/Common/memcpy.c | 62 -- cores/usblib/Core/ConfigDescriptors.c | 149 ---- cores/usblib/Core/ConfigDescriptors.h | 290 ------- cores/usblib/Core/Device.h | 157 ---- cores/usblib/Core/DeviceStandardReq.h | 162 ---- cores/usblib/Core/EndPoint.h | 128 --- cores/usblib/Core/EndpointStream.h | 122 --- cores/usblib/Core/Events.c | 43 - cores/usblib/Core/Events.h | 390 --------- cores/usblib/Core/Host.h | 143 ---- cores/usblib/Core/HostStandardReq.c | 326 -------- cores/usblib/Core/HostStandardReq.h | 296 ------- cores/usblib/Core/OTG.h | 79 -- cores/usblib/Core/Pipe.h | 143 ---- cores/usblib/Core/PipeStream.h | 99 --- cores/usblib/Core/StdDescriptors.h | 775 ------------------ cores/usblib/Core/StdRequestType.h | 262 ------ cores/usblib/Core/USBController.h | 163 ---- cores/usblib/Core/USBInterrupt.h | 70 -- cores/usblib/Core/USBMode.h | 125 --- cores/usblib/Core/USBTask.c | 93 --- cores/usblib/Core/USBTask.h | 194 ----- cores/usblib/Core/XMC4000/Device_XMC4000.h | 135 --- .../Core/XMC4000/EndpointStream_XMC4000.c | 310 ------- .../Core/XMC4000/EndpointStream_XMC4000.h | 443 ---------- cores/usblib/Core/XMC4000/Endpoint_XMC4000.c | 254 ------ cores/usblib/Core/XMC4000/Endpoint_XMC4000.h | 413 ---------- .../Core/XMC4000/USBController_XMC4000.c | 564 ------------- .../Core/XMC4000/USBController_XMC4000.h | 291 ------- cores/usblib/usblib.h | 419 ---------- cores/wiring_analog.c | 473 ----------- cores/wiring_analog.h | 175 ---- cores/wiring_constants.h | 109 --- cores/wiring_digital.c | 55 -- cores/wiring_digital.h | 85 -- cores/wiring_pulse.c | 121 --- cores/wiring_pulse.h | 45 - cores/wiring_shift.c | 64 -- cores/wiring_shift.h | 44 - cores/wiring_time.c | 503 ------------ cores/wiring_time.h | 423 ---------- cores/yield.c | 27 - extras/arduino-core-api | 1 + tools/dev-setup.sh | 40 + 108 files changed, 53 insertions(+), 19252 deletions(-) delete mode 100644 cores/Arduino.h delete mode 100644 cores/Client.h delete mode 100644 cores/HardwareSerial.cpp delete mode 100644 cores/HardwareSerial.h delete mode 100644 cores/IPAddress.cpp delete mode 100644 cores/IPAddress.h delete mode 100644 cores/Main.cpp delete mode 100644 cores/Print.cpp delete mode 100644 cores/Print.h delete mode 100644 cores/Printable.h delete mode 100644 cores/RingBuffer.cpp delete mode 100644 cores/RingBuffer.h delete mode 100644 cores/Server.h delete mode 100644 cores/Stream.cpp delete mode 100644 cores/Stream.h delete mode 100644 cores/Tone.cpp delete mode 100644 cores/Tone.h delete mode 100644 cores/Udp.h delete mode 100644 cores/WCharacter.h delete mode 100644 cores/WInterrupts.c delete mode 100644 cores/WInterrupts.h delete mode 100644 cores/WMath.cpp delete mode 100644 cores/WMath.h delete mode 100644 cores/WString.cpp delete mode 100644 cores/WString.h delete mode 100644 cores/Wprogram.h delete mode 100644 cores/abi.cpp delete mode 100644 cores/avr/dtostrf.c delete mode 100644 cores/avr/dtostrf.h delete mode 100644 cores/avr/interrupt.h delete mode 100644 cores/avr/io.h delete mode 100644 cores/avr/pgmspace.h delete mode 100644 cores/binary.h delete mode 100644 cores/hooks.c delete mode 100644 cores/itoa.c delete mode 100644 cores/itoa.h delete mode 100644 cores/new.cpp delete mode 100644 cores/reset.c delete mode 100644 cores/reset.h delete mode 100644 cores/usblib/Class/CDCClass.h delete mode 100644 cores/usblib/Class/Common/CDCClassCommon.h delete mode 100644 cores/usblib/Class/Common/HIDClassCommon.h delete mode 100644 cores/usblib/Class/Common/HIDParser.h delete mode 100644 cores/usblib/Class/Common/HIDReportData.h delete mode 100644 cores/usblib/Class/Common/MassStorageClassCommon.h delete mode 100644 cores/usblib/Class/Device/CDCClassDevice.c delete mode 100644 cores/usblib/Class/Device/CDCClassDevice.h delete mode 100644 cores/usblib/Class/Device/HIDClassDevice.c delete mode 100644 cores/usblib/Class/Device/HIDClassDevice.h delete mode 100644 cores/usblib/Class/Device/MassStorageClassDevice.c delete mode 100644 cores/usblib/Class/Device/MassStorageClassDevice.h delete mode 100644 cores/usblib/Class/HIDClass.h delete mode 100644 cores/usblib/Class/MassStorageClass.h delete mode 100644 cores/usblib/Common/ArchitectureSpecific.h delete mode 100644 cores/usblib/Common/Architectures.h delete mode 100644 cores/usblib/Common/Attributes.h delete mode 100644 cores/usblib/Common/BoardTypes.h delete mode 100644 cores/usblib/Common/Common.h delete mode 100644 cores/usblib/Common/CompilerSpecific.h delete mode 100644 cores/usblib/Common/Endianness.h delete mode 100644 cores/usblib/Common/memcpy.c delete mode 100644 cores/usblib/Core/ConfigDescriptors.c delete mode 100644 cores/usblib/Core/ConfigDescriptors.h delete mode 100644 cores/usblib/Core/Device.h delete mode 100644 cores/usblib/Core/DeviceStandardReq.h delete mode 100644 cores/usblib/Core/EndPoint.h delete mode 100644 cores/usblib/Core/EndpointStream.h delete mode 100644 cores/usblib/Core/Events.c delete mode 100644 cores/usblib/Core/Events.h delete mode 100644 cores/usblib/Core/Host.h delete mode 100644 cores/usblib/Core/HostStandardReq.c delete mode 100644 cores/usblib/Core/HostStandardReq.h delete mode 100644 cores/usblib/Core/OTG.h delete mode 100644 cores/usblib/Core/Pipe.h delete mode 100644 cores/usblib/Core/PipeStream.h delete mode 100644 cores/usblib/Core/StdDescriptors.h delete mode 100644 cores/usblib/Core/StdRequestType.h delete mode 100644 cores/usblib/Core/USBController.h delete mode 100644 cores/usblib/Core/USBInterrupt.h delete mode 100644 cores/usblib/Core/USBMode.h delete mode 100644 cores/usblib/Core/USBTask.c delete mode 100644 cores/usblib/Core/USBTask.h delete mode 100644 cores/usblib/Core/XMC4000/Device_XMC4000.h delete mode 100644 cores/usblib/Core/XMC4000/EndpointStream_XMC4000.c delete mode 100644 cores/usblib/Core/XMC4000/EndpointStream_XMC4000.h delete mode 100644 cores/usblib/Core/XMC4000/Endpoint_XMC4000.c delete mode 100644 cores/usblib/Core/XMC4000/Endpoint_XMC4000.h delete mode 100644 cores/usblib/Core/XMC4000/USBController_XMC4000.c delete mode 100644 cores/usblib/Core/XMC4000/USBController_XMC4000.h delete mode 100644 cores/usblib/usblib.h delete mode 100644 cores/wiring_analog.c delete mode 100644 cores/wiring_analog.h delete mode 100644 cores/wiring_constants.h delete mode 100644 cores/wiring_digital.c delete mode 100644 cores/wiring_digital.h delete mode 100644 cores/wiring_pulse.c delete mode 100644 cores/wiring_pulse.h delete mode 100644 cores/wiring_shift.c delete mode 100644 cores/wiring_shift.h delete mode 100644 cores/wiring_time.c delete mode 100644 cores/wiring_time.h delete mode 100644 cores/yield.c create mode 160000 extras/arduino-core-api create mode 100644 tools/dev-setup.sh diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml index 64ba263a..7beb9d4a 100644 --- a/.github/workflows/compile-platform-examples.yml +++ b/.github/workflows/compile-platform-examples.yml @@ -161,6 +161,10 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + + - name: Set Environment + run: | + bash tools/dev-setup.sh - name: Compile examples uses: arduino/compile-sketches@v1.1.1 diff --git a/.gitignore b/.gitignore index be93e381..08197b70 100644 --- a/.gitignore +++ b/.gitignore @@ -25,5 +25,7 @@ err.xml # Ignore docs build (Sphinx) docs/build docs/source/_build -__pycache__/ -_build/ \ No newline at end of file +_build/ + +# Arduino core api symlinked +cores/xmc/api diff --git a/.gitmodules b/.gitmodules index 743eb3c3..4392e751 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "arduino-core-tests"] path = tests/arduino-core-tests url = https://github.com/Infineon/arduino-core-tests.git +[submodule "cores/arduino-core-api"] + path = extras/arduino-core-api + url = https://github.com/arduino/ArduinoCore-API.git diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2985ab1d..1fb4b239 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,4 +11,4 @@ Please contribute and raise issues via the [github repository](https://github.co - Once we merged your changes to the master branch, they are automatically included in the next release. ## Development -Please check [development instructions](https://xmc-arduino.readthedocs.io/en/latest/development-instructions.html) section in our documentation for more information on how to set up your development enviroment and start developing XMC4Arduino! \ No newline at end of file +Please check [development instructions](https://xmc-arduino.readthedocs.io/en/latest/development-instructions.html) section in our documentation for more information on how to set up your development enviroment and start developing XMC4Arduino! diff --git a/cores/Arduino.h b/cores/Arduino.h deleted file mode 100644 index 87c1ad4c..00000000 --- a/cores/Arduino.h +++ /dev/null @@ -1,350 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ -#ifndef _ARDUINO_H_ -#define _ARDUINO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -//**************************************************************************** -// @Std Includes -//**************************************************************************** -#include -#include -#include -#include -#include -#include -#include - -//**************************************************************************** -// @XMC Lib Includes -//**************************************************************************** -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define clockCyclesPerMicrosecond() (F_CPU / 1000000L) -#define clockCyclesToMicroseconds(a) (((a) * 1000L) / (F_CPU / 1000L)) -#define microsecondsToClockCycles(a) ((a) * (F_CPU / 1000000L)) - -// default XMC_SPI instance is XMC_SPI_0 for all variants -#define XMC_SPI_default XMC_SPI_0 -// default XMC_I2C instance is XMC_I2C_0 for all variants -#define XMC_I2C_default XMC_I2C_0 -// used by XMC_I2S -#define BUFFER_SIZE 512 - -//**************************************************************************** -// @Typedefs -//**************************************************************************** -/* - * XMC USIC channel input selection types - */ -typedef enum { - XMC_INPUT_A = 0U, /*< Input-A */ - XMC_INPUT_B, /*< Input-B */ - XMC_INPUT_C, /*< Input-C */ - XMC_INPUT_D, /*< Input-D */ - XMC_INPUT_E, /*< Input-E */ - XMC_INPUT_F, /*< Input-F */ - XMC_INPUT_G, /*< Input-G */ - XMC_INPUT_INVALID /*< This is to check during mode switch */ -} XMC_USIC_INPUT_t; - -/* - * XMC port pin type - */ -typedef struct { - XMC_GPIO_PORT_t *port; - unsigned pin; -} XMC_PORT_PIN_t; - -/* - * XMC pin interrupt type - */ -#if defined(INTERRUPT_USE_ERU) -typedef struct { - XMC_ERU_t *eru; - XMC_ERU_ETL_INPUT_A_t input_a; - XMC_ERU_ETL_INPUT_B_t input_b; - uint8_t etl; - uint8_t ogu; - uint8_t irq_num; -} XMC_PIN_INTERRUPT_t; -#else -typedef struct { - XMC_CCU4_MODULE_t *ccu; - XMC_CCU4_SLICE_t *slice; - uint8_t slice_num; - uint8_t irq_num; - XMC_CCU4_SLICE_INPUT_t input; -} XMC_PIN_INTERRUPT_t; -#endif - -/* - * XMC PWM type (CCU4) - */ -typedef struct { - XMC_CCU4_MODULE_t *ccu; - XMC_CCU4_SLICE_t *slice; - uint8_t slice_num; - XMC_PORT_PIN_t port_pin; - XMC_GPIO_MODE_t port_mode; - XMC_CCU4_SLICE_PRESCALER_t prescaler; - uint32_t period_timer_val; - bool enabled; -} XMC_PWM4_t; - -#if defined(CCU8V2) || defined(CCU8V3) || defined(CCU8V1) -/* - * XMC PWM type (CCU8) - */ -typedef struct { - XMC_CCU8_MODULE_t *ccu; - XMC_CCU8_SLICE_t *slice; - uint8_t slice_num; - XMC_CCU8_SLICE_COMPARE_CHANNEL_t slice_channel; - XMC_PORT_PIN_t port_pin; - XMC_GPIO_MODE_t port_mode; - XMC_CCU8_SLICE_PRESCALER_t prescaler; - uint32_t period_timer_val; - bool enabled; -} XMC_PWM8_t; -#endif - -#ifdef DAC -// TODO: find a better name; XMC_DAC_t is already used by XMCLib -/* - * XMC DAC type - */ -typedef struct { - XMC_DAC_t *group; - uint8_t channel; - uint8_t resolution; // number of resolution bits -} XMC_ARD_DAC_t; -#endif - -/* - * XMC VADC type (with or without adc grouping) - */ -typedef struct { - XMC_VADC_GLOBAL_t *global; - uint8_t channel_num; -#if (XMC_VADC_GROUP_AVAILABLE == 1U) - XMC_VADC_GROUP_t *group; - uint8_t group_num; - uint32_t result_reg_num; -#endif - bool enabled; -} XMC_ADC_t; - -/* - * XMC UART type - */ -typedef struct { - XMC_USIC_CH_t *channel; - XMC_PORT_PIN_t rx; - XMC_GPIO_CONFIG_t rx_config; - XMC_PORT_PIN_t tx; - XMC_GPIO_CONFIG_t tx_config; - XMC_USIC_INPUT_t input_source_dx0; - // Use to activate additional Input MUXs to select input pin (if not used if use: - // XMC_INPUT_INVALID) - XMC_USIC_INPUT_t input_source_dx1; - XMC_USIC_INPUT_t input_source_dx2; - XMC_USIC_INPUT_t input_source_dx3; - IRQn_Type irq_num; - uint32_t irq_service_request; -} XMC_UART_t; - -/* - * XMC SPI type - */ -typedef struct { - XMC_USIC_CH_t *channel; - XMC_SPI_CH_CONFIG_t channel_config; - XMC_PORT_PIN_t mosi; - XMC_GPIO_CONFIG_t mosi_config; - XMC_PORT_PIN_t miso; - XMC_GPIO_CONFIG_t miso_config; - XMC_USIC_INPUT_t input_source; - XMC_PORT_PIN_t sclkout; - XMC_GPIO_CONFIG_t sclkout_config; -} XMC_SPI_t; - -/* - * XMC I2C type - */ -typedef struct { - XMC_USIC_CH_t *channel; - XMC_I2C_CH_CONFIG_t channel_config; - XMC_PORT_PIN_t sda; - XMC_GPIO_CONFIG_t sda_config; - XMC_PORT_PIN_t scl; - XMC_GPIO_CONFIG_t scl_config; - XMC_USIC_INPUT_t input_source_dx0; - XMC_USIC_INPUT_t input_source_dx1; - IRQn_Type slave_receive_irq_num; - uint32_t slave_receive_irq_service_request; - IRQn_Type protocol_irq_num; - uint32_t protocol_irq_service_request; -} XMC_I2C_t; - -/* - * XMC I2S type - */ -typedef struct { - XMC_GPIO_CONFIG_t input_config; - XMC_GPIO_CONFIG_t sclk_config; - XMC_GPIO_CONFIG_t wa_config; - IRQn_Type protocol_irq_num; - uint32_t protocol_irq_service_request; -#if (UC_SERIES == XMC14) - XMC_SCU_IRQCTRL_t protocol_irq_source; -#endif -} XMC_I2S_t; - -#ifdef CAN_xmc -/* - * XMC (Arduino) CAN type - */ - -typedef enum { XMC_NODE_NUM_0, XMC_NODE_NUM_1 } XMC_CAN_NODE_NUM_t; - -typedef struct { - CAN_NODE_TypeDef *can_node; - XMC_CAN_NODE_NUM_t can_node_num; - XMC_CAN_CANCLKSRC_t can_clock; - uint32_t can_frequency; - XMC_PORT_PIN_t rx; - XMC_GPIO_CONFIG_t rx_config; - XMC_PORT_PIN_t tx; - XMC_GPIO_CONFIG_t tx_config; - XMC_CAN_NODE_RECEIVE_INPUT_t node_input; - IRQn_Type irq_num; - uint32_t irq_service_request; - #if (UC_SERIES == XMC14) - XMC_SCU_IRQCTRL_t irq_source; - #endif -} XMC_ARD_CAN_t; -#endif - -//**************************************************************************** -// @Imported Global Variables -//**************************************************************************** -extern const XMC_PORT_PIN_t mapping_port_pin[]; -extern const XMC_PIN_INTERRUPT_t mapping_interrupt[]; -extern const uint8_t mapping_pin_PWM4[][2]; -extern XMC_PWM4_t mapping_pwm4[]; -extern XMC_ADC_t mapping_adc[]; -#if defined(CCU8V2) || defined(CCU8V3) || defined(CCU8V1) -extern const uint8_t mapping_pin_PWM8[][2]; -extern XMC_PWM8_t mapping_pwm8[]; -#endif -#ifdef DAC -extern const uint8_t mapping_pin_DAC[][2]; -extern XMC_ARD_DAC_t mapping_dac[]; -#endif -extern XMC_UART_t XMC_UART_debug; -extern XMC_UART_t XMC_UART_on_board; - -extern XMC_SPI_t XMC_SPI_0; -// Some boards for eg. XMC4700 Relax Kit has more than one SPI instance -extern XMC_SPI_t XMC_SPI_1; -extern XMC_SPI_t XMC_SPI_2; - -extern XMC_I2C_t XMC_I2C_0; -// Some boards for eg. XMC4700 Relax Kit has more than one I2C instance -extern XMC_I2C_t XMC_I2C_1; - -extern XMC_I2S_t i2s_config; - -#ifdef CAN_xmc -extern XMC_ARD_CAN_t XMC_CAN_0; -#endif -//**************************************************************************** -// @Prototypes Of Global Functions -//**************************************************************************** - -/* - * \brief Arduino yield function. - */ -void yield(void); - -/* - * \brief Arduino Main setup function. Called only once at the beginning. - */ -extern void setup(void); - -/* - * \brief Arduino Main loop function. Called in an endless loop. - */ -extern void loop(void); - -//**************************************************************************** -// @Arduino Core Includes -//**************************************************************************** -#include "wiring_constants.h" -#include "binary.h" -#include "wiring_digital.h" -#include "wiring_analog.h" -#include "wiring_shift.h" -#include "wiring_time.h" -#include "wiring_pulse.h" -#include "itoa.h" -#include "dtostrf.h" -#include "WCharacter.h" -#include "WInterrupts.h" - -//**************************************************************************** -// @Infineon Core Includes -//**************************************************************************** -#include "reset.h" - -#ifdef __cplusplus -} // extern "C" - #include "Tone.h" - #include "WMath.h" -#endif // __cplusplus - -#include "Print.h" -#include "HardwareSerial.h" - -//**************************************************************************** -// @Board Variant Includes -//**************************************************************************** -#include - -#endif /*_ARDUINO_H_ */ \ No newline at end of file diff --git a/cores/Client.h b/cores/Client.h deleted file mode 100644 index 111f335d..00000000 --- a/cores/Client.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef client_h -#define client_h - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Print.h" -#include "Stream.h" -#include "IPAddress.h" - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class Client : public Stream { - -public: - virtual int connect(IPAddress ip, uint16_t port) = 0; - virtual int connect(const char *host, uint16_t port) = 0; - virtual size_t write(uint8_t) = 0; - virtual size_t write(const uint8_t *buf, size_t size) = 0; - virtual int available() = 0; - virtual int read() = 0; - virtual int read(uint8_t *buf, size_t size) = 0; - virtual int peek() = 0; - virtual void flush() = 0; - virtual void stop() = 0; - virtual uint8_t connected() = 0; - virtual operator bool() = 0; - -protected: - uint8_t *rawIPAddress(IPAddress &addr) { return addr.raw_address(); }; -}; - -#endif /* client_h */ diff --git a/cores/HardwareSerial.cpp b/cores/HardwareSerial.cpp deleted file mode 100644 index 685f0558..00000000 --- a/cores/HardwareSerial.cpp +++ /dev/null @@ -1,239 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -// Constructors //////////////////////////////////////////////////////////////// - -HardwareSerial::HardwareSerial(XMC_UART_t *xmc_uart_config, - RingBuffer *rx_buffer, - RingBuffer *tx_buffer) { - _XMC_UART_config = xmc_uart_config; - _rx_buffer = rx_buffer; - _tx_buffer = tx_buffer; -} - -// Public Methods ////////////////////////////////////////////////////////////// - -void HardwareSerial::begin(uint32_t speed) { begin(speed, SERIAL_8N1); } - -void HardwareSerial::begin(uint32_t speed, XMC_UART_MODE_t config) { - XMC_UART_CH_CONFIG_t uart_ch_config; - uart_ch_config.oversampling = 0; // Must be 0 or valid oversample for baud rate calculations - uart_ch_config.baudrate = speed; - uart_ch_config.data_bits = (uint8_t)(config & 0x00fU); - uart_ch_config.frame_length = uart_ch_config.data_bits; // Set same as data bits length - uart_ch_config.parity_mode = (XMC_USIC_CH_PARITY_MODE_t)(config & ~0xffU); - uart_ch_config.stop_bits = (uint8_t)((config & 0x0f0U) >> 4); - - XMC_UART_CH_Init(_XMC_UART_config->channel, &uart_ch_config); - - // dx0 is UART RX: source must be set - XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX0, - _XMC_UART_config->input_source_dx0); - - // Additional input multiplexing - // Check if dx1 is used - if (_XMC_UART_config->input_source_dx1 != XMC_INPUT_INVALID) - XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX1, - _XMC_UART_config->input_source_dx1); - - // Check if dx2 is used - if (_XMC_UART_config->input_source_dx2 != XMC_INPUT_INVALID) - XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX2, - _XMC_UART_config->input_source_dx2); - - // Check if dx3 is used - if (_XMC_UART_config->input_source_dx3 != XMC_INPUT_INVALID) - XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX3, - _XMC_UART_config->input_source_dx3); - - XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_ALTERNATIVE_RECEIVE | - XMC_UART_CH_EVENT_STANDARD_RECEIVE); - XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, - _XMC_UART_config->irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE, - _XMC_UART_config->irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_TRANSMIT_BUFFER, - _XMC_UART_config->irq_service_request); - NVIC_SetPriority(_XMC_UART_config->irq_num, 3); - NVIC_EnableIRQ(_XMC_UART_config->irq_num); - - XMC_UART_CH_Start(_XMC_UART_config->channel); - - // TX pin setup put here to avoid startup corrupted characters being first sent - XMC_GPIO_Init(_XMC_UART_config->tx.port, _XMC_UART_config->tx.pin, - &(_XMC_UART_config->tx_config)); - - XMC_GPIO_Init(_XMC_UART_config->rx.port, _XMC_UART_config->rx.pin, - &(_XMC_UART_config->rx_config)); -} - -void HardwareSerial::end(void) { - // Wait for any outstanding data to be sent - flush(); - // Disable UART interrupt in NVIC - NVIC_DisableIRQ(_XMC_UART_config->irq_num); - // Clear any received data after stopping interrupts - _rx_buffer->_iHead = _rx_buffer->_iTail; -} - -void HardwareSerial::setInterruptPriority(uint32_t priority) { - NVIC_SetPriority(_XMC_UART_config->irq_num, priority & 0x03); -} - -uint32_t HardwareSerial::getInterruptPriority() { - return NVIC_GetPriority(_XMC_UART_config->irq_num); -} - -int HardwareSerial::available(void) { - int head = _rx_buffer->_iHead; // Snapshot index affected by irq - if (head >= _rx_buffer->_iTail) - return head - _rx_buffer->_iTail; - return SERIAL_BUFFER_SIZE - _rx_buffer->_iTail + head; -} - -int HardwareSerial::availableForWrite(void) { - int tail = _tx_buffer->_iTail; // Snapshot index affected by irq - if (_tx_buffer->_iHead >= tail) - return SERIAL_BUFFER_SIZE - 1 - _tx_buffer->_iHead + tail; - return tail - _tx_buffer->_iHead - 1; -} - -int HardwareSerial::peek(void) { - if (_rx_buffer->_iHead == _rx_buffer->_iTail) - return -1; - return _rx_buffer->_aucBuffer[_rx_buffer->_iTail]; -} - -int HardwareSerial::read(void) { - // if the head isn't ahead of the tail, we don't have any characters - if (_rx_buffer->_iHead == _rx_buffer->_iTail) - return -1; - - uint8_t uc = _rx_buffer->_aucBuffer[_rx_buffer->_iTail]; - _rx_buffer->_iTail++; - if (_rx_buffer->_iTail >= SERIAL_BUFFER_SIZE) - _rx_buffer->_iTail = 0; - return uc; -} - -void HardwareSerial::flush(void) { - while (_tx_buffer->_iHead != _tx_buffer->_iTail) - ; // wait for transmit data to be sent - - while (XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) - ; -} - -size_t HardwareSerial::write(const uint8_t uc_data) { -// Is the hardware currently busy? -#if defined(SERIAL_USE_U1C1) - if (_tx_buffer->_iTail != _tx_buffer->_iHead) -#else - if ((XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) || - (_tx_buffer->_iTail != _tx_buffer->_iHead)) -#endif - { - // If busy we buffer - int nextWrite = _tx_buffer->_iHead + 1; - if (nextWrite >= SERIAL_BUFFER_SIZE) - nextWrite = 0; - - // This should always be false but in case transmission is completed before buffer, we need - // to reenable IRQ - if (XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) != - XMC_USIC_CH_TBUF_STATUS_BUSY) { - XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); - XMC_UART_CH_Transmit(_XMC_UART_config->channel, - _tx_buffer->_aucBuffer[_tx_buffer->_iTail]); - _tx_buffer->_iTail++; - if (_tx_buffer->_iTail >= SERIAL_BUFFER_SIZE) - _tx_buffer->_iTail %= SERIAL_BUFFER_SIZE; // If iTail is larger than Serial Buffer - // Size calculate the correct index value - } - - unsigned long startTime = millis(); - while (_tx_buffer->_iTail == nextWrite) { - if (millis() - startTime > 1000) { - return 0; // Spin locks if we're about to overwrite the buffer. This continues once - // the data is - // sent - } - } - - _tx_buffer->_aucBuffer[_tx_buffer->_iHead] = uc_data; - _tx_buffer->_iHead = nextWrite; - } else { - // Make sure TX interrupt is enabled - XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); - // Bypass buffering and send character directly - XMC_UART_CH_Transmit(_XMC_UART_config->channel, uc_data); - } - return 1; -} - -void HardwareSerial::IrqHandler(void) { - uint32_t status = XMC_UART_CH_GetStatusFlag(_XMC_UART_config->channel); - - // Did we receive data? - if ((status & (XMC_UART_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION | - XMC_UART_CH_STATUS_FLAG_RECEIVE_INDICATION)) != 0U) { - XMC_UART_CH_ClearStatusFlag(_XMC_UART_config->channel, - (XMC_UART_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION | - XMC_UART_CH_STATUS_FLAG_RECEIVE_INDICATION)); - - while (_XMC_UART_config->channel->RBUFSR & - (USIC_CH_RBUFSR_RDV0_Msk | USIC_CH_RBUFSR_RDV1_Msk)) - _rx_buffer->store_char(XMC_UART_CH_GetReceivedData(_XMC_UART_config->channel)); - } - - // Do we need to keep sending data? - if ((status & XMC_UART_CH_STATUS_FLAG_TRANSMIT_BUFFER_INDICATION) != 0U) { - XMC_UART_CH_ClearStatusFlag(_XMC_UART_config->channel, - XMC_UART_CH_STATUS_FLAG_TRANSMIT_BUFFER_INDICATION); - - if (_tx_buffer->_iTail != _tx_buffer->_iHead) { - XMC_UART_CH_Transmit(_XMC_UART_config->channel, - _tx_buffer->_aucBuffer[_tx_buffer->_iTail]); - _tx_buffer->_iTail++; - if (_tx_buffer->_iTail >= SERIAL_BUFFER_SIZE) - _tx_buffer->_iTail %= SERIAL_BUFFER_SIZE; // If iTail is larger than Serial Buffer - // Size calculate the correct index value - } else { - // Mask off transmit interrupt so we don't get it any more - XMC_UART_CH_DisableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); - } - } -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** \ No newline at end of file diff --git a/cores/HardwareSerial.h b/cores/HardwareSerial.h deleted file mode 100644 index ccb6f92a..00000000 --- a/cores/HardwareSerial.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef HardwareSerial_h -#define HardwareSerial_h - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** -#ifdef __cplusplus - - //**************************************************************************** - // @Project Includes - //**************************************************************************** - #include "RingBuffer.h" - #include "Stream.h" - -//**************************************************************************** -// @Typedefs -//**************************************************************************** -typedef enum XMC_UART_MODE { - SERIAL_5N1 = 0x15 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_6N1 = 0x16 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_7N1 = 0x17 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_8N1 = 0x18 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_5N2 = 0x25 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_6N2 = 0x26 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_7N2 = 0x27 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_8N2 = 0x28 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_5E1 = 0x15 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_6E1 = 0x16 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_7E1 = 0x17 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_8E1 = 0x18 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_5E2 = 0x25 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_6E2 = 0x26 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_7E2 = 0x27 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_8E2 = 0x28 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_5O1 = 0x15 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_6O1 = 0x16 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_7O1 = 0x17 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_8O1 = 0x18 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_5O2 = 0x25 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_6O2 = 0x26 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_7O2 = 0x27 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_8O2 = 0x28 | XMC_USIC_CH_PARITY_MODE_ODD -} XMC_UART_MODE_t; - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class HardwareSerial : public Stream { -public: - XMC_UART_t *_XMC_UART_config; - - HardwareSerial(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer, RingBuffer *tx_buffer); - - void begin(uint32_t speed); - void begin(uint32_t speed, XMC_UART_MODE_t config); - void end(void); - int available(void); - int availableForWrite(void); - int peek(void); - void flush(void); - int read(void); - - // virtual size_t readBytes(char *buffer, size_t length) ; // read chars from stream into buffer - // virtual size_t readBytes(uint8_t *buffer, size_t length) ; - - size_t write(const uint8_t); - - // virtual size_t write(const uint8_t *buffer, size_t size) ; - inline size_t write(unsigned long n) { return write((uint8_t)n); } - - inline size_t write(long n) { return write((uint8_t)n); } - - inline size_t write(unsigned int n) { return write((uint8_t)n); } - - inline size_t write(int n) { return write((uint8_t)n); } - - using Print::write; // pull in write(str) and write(buf, size) from Print - - operator bool() { return true; } - - void setInterruptPriority(uint32_t priority); - uint32_t getInterruptPriority(); - - void IrqHandler(void); - -private: - RingBuffer *_rx_buffer; - RingBuffer *_tx_buffer; -}; -#endif /* cplusplus */ - -#endif /* HardwareSerial_h */ diff --git a/cores/IPAddress.cpp b/cores/IPAddress.cpp deleted file mode 100644 index 6b0fe4df..00000000 --- a/cores/IPAddress.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include -#include - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -// Constructors //////////////////////////////////////////////////////////////// - -IPAddress::IPAddress() { _address.dword = 0; } - -// Public Methods ////////////////////////////////////////////////////////////// - -IPAddress::IPAddress(uint8_t first_octet, - uint8_t second_octet, - uint8_t third_octet, - uint8_t fourth_octet) { - _address.bytes[0] = first_octet; - _address.bytes[1] = second_octet; - _address.bytes[2] = third_octet; - _address.bytes[3] = fourth_octet; -} - -IPAddress::IPAddress(uint32_t address) { _address.dword = address; } - -IPAddress::IPAddress(const uint8_t *address) { - memcpy(_address.bytes, address, sizeof(_address.bytes)); -} - -bool IPAddress::fromString(const char *address) { - // TODO: add support for "a", "a.b", "a.b.c" formats - - uint16_t acc = 0; // Accumulator - uint8_t dots = 0; - - while (*address) { - char c = *address++; - if (c >= '0' && c <= '9') { - acc = acc * 10 + (c - '0'); - if (acc > 255) { - // Value out of [0..255] range - return false; - } - } else if (c == '.') { - if (dots == 3) { - // Too much dots (there must be 3 dots) - return false; - } - _address.bytes[dots++] = acc; - acc = 0; - } else { - // Invalid char - return false; - } - } - - if (dots != 3) { - // Too few dots (there must be 3 dots) - return false; - } - _address.bytes[3] = acc; - return true; -} - -IPAddress &IPAddress::operator=(const uint8_t *address) { - memcpy(_address.bytes, address, sizeof(_address.bytes)); - return *this; -} - -IPAddress &IPAddress::operator=(uint32_t address) { - _address.dword = address; - return *this; -} - -bool IPAddress::operator==(const uint8_t *addr) const { - return memcmp(addr, _address.bytes, sizeof(_address.bytes)) == 0; -} - -size_t IPAddress::printTo(Print &p) const { - size_t n = 0; - for (int i = 0; i < 3; i++) { - n += p.print(_address.bytes[i], DEC); - n += p.print('.'); - } - n += p.print(_address.bytes[3], DEC); - return n; -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/IPAddress.h b/cores/IPAddress.h deleted file mode 100644 index aa68ab30..00000000 --- a/cores/IPAddress.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef IPAddress_h -#define IPAddress_h - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include -#include "Printable.h" -#include "WString.h" - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class IPAddress : public Printable { -private: - union { - uint8_t bytes[4]; // IPv4 address - uint32_t dword; - } _address; - - // Access the raw byte array containing the address. Because this returns a pointer - // to the internal structure rather than a copy of the address this function should only - // be used when you know that the usage of the returned uint8_t* will be transient and not - // stored. - uint8_t *raw_address() { return _address.bytes; }; - -public: - // Constructors - IPAddress(); - IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet); - IPAddress(uint32_t address); - IPAddress(const uint8_t *address); - - bool fromString(const char *address); - - bool fromString(const String &address) { return fromString(address.c_str()); } - - // Overloaded cast operator to allow IPAddress objects to be used where a pointer - // to a four-byte uint8_t array is expected - operator uint32_t() const { return _address.dword; }; - - bool operator==(const IPAddress &addr) const { return _address.dword == addr._address.dword; }; - - bool operator==(const uint8_t *addr) const; - - // Overloaded index operator to allow getting and setting individual octets of the address - uint8_t operator[](int index) const { return _address.bytes[index]; }; - - uint8_t &operator[](int index) { return _address.bytes[index]; }; - - // Overloaded copy operators to allow initialisation of IPAddress objects from other types - IPAddress &operator=(const uint8_t *address); - IPAddress &operator=(uint32_t address); - - virtual size_t printTo(Print &p) const; - - friend class EthernetClass; - friend class UDP; - friend class Client; - friend class Server; - friend class DhcpClass; - friend class DNSClient; -}; - -const IPAddress INADDR_NONE(0, 0, 0, 0); - -#endif diff --git a/cores/Main.cpp b/cores/Main.cpp deleted file mode 100644 index 39865cf9..00000000 --- a/cores/Main.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define ARDUINO_MAIN - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" - -// work around to use new operator -extern "C" void *_sbrk(int incr); -void dummy_sbrk_caller() __attribute__((__used__)); - -void dummy_sbrk_caller() { _sbrk(0); } - -int main(void) { - /* - * Initialization Time first to get closer to startup time accuracy - */ - wiring_time_init(); - wiring_analog_init(); -// Initialize the reset pin for the XMC1100 Boot Kit series and XMC1400 Kit for Arduino as they are -// based on Arduino form-factor Hence, a dedicated reset pin is required. -#ifdef HAS_GPIO_RESET - reset_init(); -#endif - - // Arduino's main() function just calls setup() and loop().... - setup(); - while (1) { - loop(); - serialEventRun(); - } -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/Print.cpp b/cores/Print.cpp deleted file mode 100644 index 8d61cba2..00000000 --- a/cores/Print.cpp +++ /dev/null @@ -1,230 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include -#include -#include -#include -#include "Arduino.h" - -// Public Methods ////////////////////////////////////////////////////////////// - -/* default implementation: may be overridden */ -size_t Print::write(const uint8_t *buffer, size_t size) { - size_t n = 0; - while (size--) { - if (write(*buffer++)) { - n++; - } else { - break; - } - } - return n; -} - -size_t Print::print(const __FlashStringHelper *ifsh) { - return print(reinterpret_cast(ifsh)); -} - -size_t Print::print(const String &s) { return write(s.c_str(), s.length()); } - -size_t Print::print(const char str[]) { return write(str); } - -size_t Print::print(char c) { return write(c); } - -size_t Print::print(unsigned char b, int base) { return print((unsigned long)b, base); } - -size_t Print::print(int n, int base) { return print((long)n, base); } - -size_t Print::print(unsigned int n, int base) { return print((unsigned long)n, base); } - -size_t Print::print(long n, int base) { - if (base == 0) { - return write(n); - } else if (base == 10) { - if (n < 0) { - int t = print('-'); - n = -n; - return printNumber(n, 10) + t; - } - return printNumber(n, 10); - } else { - return printNumber(n, base); - } -} - -size_t Print::print(unsigned long n, int base) { - if (base == 0) { - return write(n); - } else { - return printNumber(n, base); - } -} - -size_t Print::print(double n, int digits) { return printFloat(n, digits); } - -size_t Print::println(const __FlashStringHelper *ifsh) { - size_t n = print(ifsh); - n += println(); - return n; -} - -size_t Print::print(const Printable &x) { return x.printTo(*this); } - -size_t Print::println(void) { return write("\r\n"); } - -size_t Print::println(const String &s) { - size_t n = print(s); - n += println(); - return n; -} - -size_t Print::println(const char c[]) { - size_t n = print(c); - n += println(); - return n; -} - -size_t Print::println(char c) { - size_t n = print(c); - n += println(); - return n; -} - -size_t Print::println(unsigned char b, int base) { - size_t n = print(b, base); - n += println(); - return n; -} - -size_t Print::println(int num, int base) { - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(unsigned int num, int base) { - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(long num, int base) { - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(unsigned long num, int base) { - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(double num, int digits) { - size_t n = print(num, digits); - n += println(); - return n; -} - -size_t Print::println(const Printable &x) { - size_t n = print(x); - n += println(); - return n; -} - -// Private Methods ///////////////////////////////////////////////////////////// - -size_t Print::printNumber(unsigned long n, uint8_t base) { - char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte. - char *str = &buf[sizeof(buf) - 1]; - - *str = '\0'; - - // prevent crash if called with base == 1 - if (base < 2) { - base = 10; - } - - do { - char c = n % base; - n /= base; - - *--str = c < 10 ? c + '0' : c + 'A' - 10; - } while (n); - - return write(str); -} - -size_t Print::printFloat(double number, uint8_t digits) { - size_t n = 0; - - if (isnan(number)) { - return print("nan"); - } - if (isinf(number)) { - return print("inf"); - } - if (number > 4294967040.0) { - return print("ovf"); // constant determined empirically - } - if (number < -4294967040.0) { - return print("ovf"); // constant determined empirically - } - - // Handle negative numbers - if (number < 0.0) { - n += print('-'); - number = -number; - } - - // Round correctly so that print(1.999, 2) prints as "2.00" - double rounding = 0.5; - for (uint8_t i = 0; i < digits; ++i) { - rounding /= 10.0; - } - - number += rounding; - - // Extract the integer part of the number and print it - unsigned long int_part = (unsigned long)number; - double remainder = number - (double)int_part; - n += print(int_part); - - // Print the decimal point, but only if there are digits beyond - if (digits > 0) { - n += print("."); - } - - // Extract digits from the remainder one at a time - while (digits-- > 0) { - remainder *= 10.0; - unsigned int toPrint = (unsigned int)remainder; - n += print(toPrint); - remainder -= toPrint; - } - - return n; -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/Print.h b/cores/Print.h deleted file mode 100644 index e879c5ab..00000000 --- a/cores/Print.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef PRINT_H_ -#define PRINT_H_ - -#ifdef __cplusplus - - //**************************************************************************** - // @Project Includes - //**************************************************************************** - #include - #include // for size_t - #include "WString.h" - #include "Printable.h" - - //**************************************************************************** - // @Defines - //**************************************************************************** - #define DEC 10 - #define HEX 16 - #define OCT 8 - #define BIN 2 - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class Print { -private: - int write_error; - size_t printNumber(unsigned long, uint8_t); - size_t printFloat(double, uint8_t); - -protected: - void setWriteError(int err = 1) { write_error = err; } - -public: - Print() - : write_error(0) {} - - int getWriteError() { return write_error; } - - void clearWriteError() { setWriteError(0); } - - virtual size_t write(uint8_t) = 0; - - size_t write(const char *str) { - if (str == NULL) { - return 0; - } - return write((const uint8_t *)str, strlen(str)); - } - - virtual size_t write(const uint8_t *buffer, size_t size); - - size_t write(const char *buffer, size_t size) { return write((const uint8_t *)buffer, size); } - - size_t print(const __FlashStringHelper *); - size_t print(const uint8_t *buffer, size_t size); - size_t print(const String &); - size_t print(const char[]); - size_t print(char); - size_t print(unsigned char, int = DEC); - size_t print(int, int = DEC); - size_t print(unsigned int, int = DEC); - size_t print(long, int = DEC); - size_t print(unsigned long, int = DEC); - size_t print(double, int = 2); - size_t print(const Printable &); - - size_t println(const __FlashStringHelper *); - size_t println(const uint8_t *buffer, size_t size); - size_t println(const String &s); - size_t println(const char[]); - size_t println(char); - size_t println(unsigned char, int = DEC); - size_t println(int, int = DEC); - size_t println(unsigned int, int = DEC); - size_t println(long, int = DEC); - size_t println(unsigned long, int = DEC); - size_t println(double, int = 2); - size_t println(const Printable &); - size_t println(void); -}; - -// extern Print Serial; -#endif // __cplusplus - -#endif /* PRINT_H_ */ diff --git a/cores/Printable.h b/cores/Printable.h deleted file mode 100644 index 3f7395bf..00000000 --- a/cores/Printable.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef Printable_h -#define Printable_h - -#ifdef __cplusplus - - //**************************************************************************** - // @Project Includes - //**************************************************************************** - #include - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class Print; - -/** The Printable class provides a way for new classes to allow themselves to be printed. - By deriving from Printable and implementing the printTo method, it will then be possible - for users to print out instances of this class by passing them into the usual - Print::print and Print::println methods. -*/ -class Printable { -public: - virtual size_t printTo(Print &p) const = 0; -}; - -#endif // __cplusplus - -#endif diff --git a/cores/RingBuffer.cpp b/cores/RingBuffer.cpp deleted file mode 100644 index 0d7ff8ad..00000000 --- a/cores/RingBuffer.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "RingBuffer.h" -#include - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -// Constructors //////////////////////////////////////////////////////////////// - -RingBuffer::RingBuffer(void) { - memset((void *)_aucBuffer, 0, SERIAL_BUFFER_SIZE); - _iHead = 0; - _iTail = 0; -} - -void RingBuffer::store_char(uint8_t c) { - int i = (uint32_t)(_iHead + 1) % SERIAL_BUFFER_SIZE; - - // if we should be storing the received character into the location - // just before the tail (meaning that the head would advance to the - // current location of the tail), we're about to overflow the buffer - // and so we don't write the character or advance the head. - if (i != _iTail) { - _aucBuffer[_iHead] = c; - _iHead = i; - } -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/RingBuffer.h b/cores/RingBuffer.h deleted file mode 100644 index 3b7e94e5..00000000 --- a/cores/RingBuffer.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef _RING_BUFFER_ -#define _RING_BUFFER_ - -#include - -// Define constants and variables for buffering incoming serial data. We're -// using a ring buffer, in which head is the index of the location -// to which to write the next incoming character and tail is the index of the -// location from which to read. -#define SERIAL_BUFFER_SIZE 128 - -class RingBuffer { -public: - volatile uint8_t _aucBuffer[SERIAL_BUFFER_SIZE]; - volatile int _iHead; - volatile int _iTail; - -public: - RingBuffer(void); - void store_char(uint8_t c); -}; - -#endif /* _RING_BUFFER_ */ diff --git a/cores/Server.h b/cores/Server.h deleted file mode 100644 index 64053f57..00000000 --- a/cores/Server.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef server_h -#define server_h - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Print.h" - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class Server : public Print { -public: - virtual void begin() = 0; -}; - -#endif /* server_h */ diff --git a/cores/Stream.cpp b/cores/Stream.cpp deleted file mode 100644 index 1963dc16..00000000 --- a/cores/Stream.cpp +++ /dev/null @@ -1,332 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -// Private Methods ////////////////////////////////////////////////////////////// - -// private method to read stream with timeout -int Stream::timedRead() { - int c; - _startMillis = millis(); - do { - c = read(); - if (c >= 0) { - return c; - } - } while (millis() - _startMillis < _timeout); - return -1; // -1 indicates timeout -} - -// private method to peek stream with timeout -int Stream::timedPeek() { - int c; - _startMillis = millis(); - do { - c = peek(); - if (c >= 0) { - return c; - } - } while (millis() - _startMillis < _timeout); - return -1; // -1 indicates timeout -} - -// returns peek of the next digit in the stream or -1 if timeout -// discards non-numeric characters -int Stream::peekNextDigit(LookaheadMode lookahead, bool detectDecimal) { - int c; - while (1) { - c = timedPeek(); - - if (c < 0 || c == '-' || (c >= '0' && c <= '9') || (detectDecimal && c == '.')) { - return c; - } - - switch (lookahead) { - case SKIP_NONE: - return -1; // Fail code. - case SKIP_WHITESPACE: - switch (c) { - case ' ': - case '\t': - case '\r': - case '\n': - break; - default: - return -1; // Fail code. - } - case SKIP_ALL: - break; - } - read(); // discard non-numeric - } -} - -// Public Methods ////////////////////////////////////////////////////////////// - -void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait -{ - _timeout = timeout; -} - -// find returns true if the target string is found -bool Stream::find(char *target) { return findUntil(target, strlen(target), NULL, 0); } - -// reads data from the stream until the target string of given length is found -// returns true if target string is found, false if timed out -bool Stream::find(char *target, size_t length) { return findUntil(target, length, NULL, 0); } - -// as find but search ends if the terminator string is found -bool Stream::findUntil(char *target, char *terminator) { - return findUntil(target, strlen(target), terminator, strlen(terminator)); -} - -// reads data from the stream until the target string of the given length is found -// search terminated if the terminator string is found -// returns true if target string is found, false if terminated or timed out -bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen) { - if (terminator == NULL) { - MultiTarget t[1] = {{target, targetLen, 0}}; - return findMulti(t, 1) == 0 ? true : false; - } else { - MultiTarget t[2] = {{target, targetLen, 0}, {terminator, termLen, 0}}; - return findMulti(t, 2) == 0 ? true : false; - } -} - -// returns the first valid (long) integer value from the current position. -// lookahead determines how parseInt looks ahead in the stream. -// See LookaheadMode enumeration at the top of the file. -// Lookahead is terminated by the first character that is not a valid part of an integer. -// Once parsing commences, 'ignore' will be skipped in the stream. -long Stream::parseInt(LookaheadMode lookahead, char ignore) { - bool isNegative = false; - long value = 0; - int c; - - c = peekNextDigit(lookahead, false); - // ignore non numeric leading characters - if (c < 0) { - return 0; // zero returned if timeout - } - - do { - if (c == ignore) - ; // ignore this character - else if (c == '-') { - isNegative = true; - } else if (c >= '0' && c <= '9') // is c a digit? - { - value = value * 10 + c - '0'; - } - read(); // consume the character we got with peek - c = timedPeek(); - } while ((c >= '0' && c <= '9') || c == ignore); - - if (isNegative) { - value = -value; - } - return value; -} - -// as parseInt but returns a floating point value -float Stream::parseFloat(LookaheadMode lookahead, char ignore) { - bool isNegative = false; - bool isFraction = false; - long value = 0; - int c; - float fraction = 1.0; - - c = peekNextDigit(lookahead, true); - // ignore non numeric leading characters - if (c < 0) { - return 0; // zero returned if timeout - } - - do { - if (c == ignore) - ; // ignore - else if (c == '-') { - isNegative = true; - } else if (c == '.') { - isFraction = true; - } else if (c >= '0' && c <= '9') // is c a digit? - { - value = value * 10 + c - '0'; - if (isFraction) { - fraction *= 0.1; - } - } - read(); // consume the character we got with peek - c = timedPeek(); - } while ((c >= '0' && c <= '9') || (c == '.' && !isFraction) || c == ignore); - - if (isNegative) { - value = -value; - } - if (isFraction) { - return value * fraction; - } else { - return value; - } -} - -// read characters from stream into buffer -// terminates if length characters have been read, or timeout (see setTimeout) -// returns the number of characters placed in the buffer -// the buffer is NOT null terminated. -// -size_t Stream::readBytes(char *buffer, size_t length) { - size_t count = 0; - while (count < length) { - int c = timedRead(); - if (c < 0) { - break; - } - *buffer++ = (char)c; - count++; - } - return count; -} - -// as readBytes with terminator character -// terminates if length characters have been read, timeout, or if the terminator character detected -// returns the number of characters placed in the buffer (0 means no valid data found) - -size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) { - if (length < 1) { - return 0; - } - size_t index = 0; - while (index < length) { - int c = timedRead(); - if (c < 0 || c == terminator) { - break; - } - *buffer++ = (char)c; - index++; - } - return index; // return number of characters, not including null terminator -} - -String Stream::readString() { - String ret; - int c = timedRead(); - while (c >= 0) { - ret += (char)c; - c = timedRead(); - } - return ret; -} - -String Stream::readStringUntil(char terminator) { - String ret; - int c = timedRead(); - while (c >= 0 && c != terminator) { - ret += (char)c; - c = timedRead(); - } - return ret; -} - -int Stream::findMulti(struct Stream::MultiTarget *targets, int tCount) { - // any zero length target string automatically matches and would make - // a mess of the rest of the algorithm. - for (struct MultiTarget *t = targets; t < targets + tCount; ++t) { - if (t->len <= 0) { - return t - targets; - } - } - - while (1) { - int c = timedRead(); - if (c < 0) { - return -1; - } - - for (struct MultiTarget *t = targets; t < targets + tCount; ++t) { - // the simple case is if we match, deal with that first. - if (c == t->str[t->index]) { - if (++t->index == t->len) { - return t - targets; - } else { - continue; - } - } - - // if not we need to walk back and see if we could have matched further - // down the stream (ie '1112' doesn't match the first position in '11112' - // but it will match the second position so we can't just reset the current - // index to 0 when we find a mismatch. - if (t->index == 0) { - continue; - } - - int origIndex = t->index; - do { - --t->index; - // first check if current char works against the new current index - if (c != t->str[t->index]) { - continue; - } - - // if it's the only char then we're good, nothing more to check - if (t->index == 0) { - t->index++; - break; - } - - // otherwise we need to check the rest of the found string - int diff = origIndex - t->index; - size_t i; - for (i = 0; i < t->index; ++i) { - if (t->str[i] != t->str[i + diff]) { - break; - } - } - - // if we successfully got through the previous loop then our current - // index is good. - if (i == t->index) { - t->index++; - break; - } - - // otherwise we just try the next index - } while (t->index); - } - } - // unreachable - return -1; -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/Stream.h b/cores/Stream.h deleted file mode 100644 index 4a4da9c3..00000000 --- a/cores/Stream.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef Stream_h -#define Stream_h - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include -#include "Print.h" - -//**************************************************************************** -// @Defines -//**************************************************************************** - -// compatability macros for testing -/* -#define getInt() parseInt() -#define getInt(ignore) parseInt(ignore) -#define getFloat() parseFloat() -#define getFloat(ignore) parseFloat(ignore) -#define getString( pre_string, post_string, buffer, length) -readBytesBetween( pre_string, terminator, buffer, length) -*/ - -#define NO_IGNORE_CHAR '\x01' // a char not found in a valid ASCII numeric field - -//**************************************************************************** -// @Typedefs -//**************************************************************************** - -// This enumeration provides the lookahead options for parseInt(), parseFloat() -// The rules set out here are used until either the first valid character is found -// or a time out occurs due to lack of input. -enum LookaheadMode { - SKIP_ALL, // All invalid characters are ignored. - SKIP_NONE, // Nothing is skipped, and the stream is not touched unless the first waiting - // character is valid. - SKIP_WHITESPACE // Only tabs, spaces, line feeds & carriage returns are skipped. -}; - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class Stream : public Print { -protected: - unsigned long - _timeout; // number of milliseconds to wait for the next char before aborting timed read - unsigned long _startMillis; // used for timeout measurement - int timedRead(); // private method to read stream with timeout - int timedPeek(); // private method to peek stream with timeout - int peekNextDigit( - LookaheadMode lookahead, - bool detectDecimal); // returns the next numeric digit in the stream or -1 if timeout - -public: - virtual int available() = 0; - virtual int read() = 0; - virtual int peek() = 0; - virtual void flush() = 0; - - Stream() { _timeout = 1000; } - - // parsing methods - - void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, - // default is 1 second - - unsigned long getTimeout(void) { return _timeout; } - - bool find(char *target); // reads data from the stream until the target string is found - - bool find(uint8_t *target) { return find((char *)target); } - - // returns true if target string is found, false if timed out (see setTimeout) - - bool find(char *target, size_t length); // reads data from the stream until the target string of - // given length is found - - bool find(uint8_t *target, size_t length) { return find((char *)target, length); } - - // returns true if target string is found, false if timed out - - bool find(char target) { return find(&target, 1); } - - bool findUntil(char *target, - char *terminator); // as find but search ends if the terminator string is found - - bool findUntil(uint8_t *target, char *terminator) { - return findUntil((char *)target, terminator); - } - - bool findUntil(char *target, - size_t targetLen, - char *terminate, - size_t termLen); // as above but search ends if the terminate string is found - - bool findUntil(uint8_t *target, size_t targetLen, char *terminate, size_t termLen) { - return findUntil((char *)target, targetLen, terminate, termLen); - } - - long parseInt(LookaheadMode lookahead = SKIP_ALL, char ignore = NO_IGNORE_CHAR); - // returns the first valid (long) integer value from the current position. - // lookahead determines how parseInt looks ahead in the stream. - // See LookaheadMode enumeration at the top of the file. - // Lookahead is terminated by the first character that is not a valid part of an integer. - // Once parsing commences, 'ignore' will be skipped in the stream. - - float parseFloat(LookaheadMode lookahead = SKIP_ALL, char ignore = NO_IGNORE_CHAR); - // float version of parseInt - - size_t readBytes(char *buffer, size_t length); // read chars from stream into buffer - - size_t readBytes(uint8_t *buffer, size_t length) { return readBytes((char *)buffer, length); } - - // terminates if length characters have been read or timeout (see setTimeout) - // returns the number of characters placed in the buffer (0 means no valid data found) - - size_t readBytesUntil(char terminator, - char *buffer, - size_t length); // as readBytes with terminator character - - size_t readBytesUntil(char terminator, uint8_t *buffer, size_t length) { - return readBytesUntil(terminator, (char *)buffer, length); - } - - // terminates if length characters have been read, timeout, or if the terminator character - // detected returns the number of characters placed in the buffer (0 means no valid data found) - - // Arduino String functions to be added here - String readString(); - String readStringUntil(char terminator); - -protected: - long parseInt(char ignore) { return parseInt(SKIP_ALL, ignore); } - - float parseFloat(char ignore) { return parseFloat(SKIP_ALL, ignore); } - - // These overload exists for compatibility with any class that has derived - // Stream and used parseFloat/Int with a custom ignore character. To keep - // the public API simple, these overload remains protected. - - struct MultiTarget { - const char *str; // string you're searching for - size_t len; // length of string you're searching for - size_t index; // index used by the search routine. - }; - - // This allows you to search for an arbitrary number of strings. - // Returns index of the target that is found first or -1 if timeout occurs. - int findMulti(struct MultiTarget *targets, int tCount); -}; - -#undef NO_IGNORE_CHAR -#endif /* Stream_h */ diff --git a/cores/Tone.cpp b/cores/Tone.cpp deleted file mode 100644 index 8df48269..00000000 --- a/cores/Tone.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -/* Tones are Systick timer event related not hardware timer related - So take care in selecting frequencies range of 1 - 500 Hz supported */ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" - -//**************************************************************************** -// @Macros -//**************************************************************************** -#define FREQUENCY_TO_MILLIS(f) (SYSTIMER_TICK_PERIOD_US / (2 * f)) - -//**************************************************************************** -// @Defines -//**************************************************************************** - -//**************************************************************************** -// @Global Variables -//**************************************************************************** -// Valid Arduino pin or 255 for not allocated -volatile uint8_t tone_pins[NUM_TONE_PINS]; -// Toggle counts > 0 toggles to do -// 0 is next time stop -// < 0 is continuous running -volatile long timer_toggle_count[NUM_TONE_PINS]; -// arrays initialised -uint8_t tone_init = 0; - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -static int8_t toneBegin(uint8_t _pin) { - int8_t i; - - // check all arrays initialised - if (tone_init == 0) { - // No preset them for number of Tine pins - memset((void *)tone_pins, 255, sizeof(tone_pins)); - memset((void *)timer_toggle_count, 0, sizeof(timer_toggle_count)); - tone_init++; - } - - // Once initialised - // if we're already using the pin, the timer should be configured. - for (i = 0; i < NUM_TONE_PINS; i++) - if (tone_pins[i] == _pin) - return i; - - // search for an unused timer. - for (i = 0; i < NUM_TONE_PINS; i++) - if (tone_pins[i] == 255) { - tone_pins[i] = _pin; - pinMode(_pin, OUTPUT); - break; - } - - return (i < NUM_TONE_PINS) ? i : -1; -} - -// Frequency (in hertz) and duration (in milliseconds). -// Max frequency usable = 500 Hz -// Min frequency usable = 1 Hz -// Duration default of 0 for permanently on -// Timer task ID is tone pin index _timer -void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) { - int8_t _timer; - - // Check valid frequency range first - if (frequency > 0 && frequency <= 500) { - _timer = toneBegin(_pin); - - if (_timer >= 0 && _timer < NUM_TONE_PINS) { - // Calculate the toggle count - if (duration > 0) - timer_toggle_count[_timer] = 2 * frequency * duration / 1000; - else - timer_toggle_count[_timer] = -1; // Continuous - // Set internal task parameters - setParam(_timer, _timer); - setInterval(_timer, (unsigned int)FREQUENCY_TO_MILLIS(frequency)); - startTask(_timer); - } - } -} - -// Stops tone at next 1ms Systick -void noTone(uint8_t _pin) { - int8_t i; - - for (i = 0; i < NUM_TONE_PINS; i++) - if (tone_pins[i] == _pin) { - tone_pins[i] = 255; - break; - } - - if (i < NUM_TONE_PINS) // Only if found set to stop at max next Systick event - { - noInterrupts(); // Interrupt disable guard to be safe - timer_toggle_count[i] = 0; // Stop on next Systick - setInterval(i, 1); - interrupts(); - } -} - -/* Interrupt GPIO action - On normal operation to continue returns 1 - On end of operations returns 0 to stop tasks -*/ -int tone_irq_action(int ID, int16_t tone) { - if (timer_toggle_count[tone]) { - digitalToggle(tone_pins[tone]); - if (timer_toggle_count[tone] > 0) - timer_toggle_count[tone]--; - } else { - setInterval(ID, 0); // no longer wanted to run - digitalWrite(tone_pins[tone], LOW); - return 0; - } - return 1; -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/Tone.h b/cores/Tone.h deleted file mode 100644 index 5551f152..00000000 --- a/cores/Tone.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ -#ifndef _WIRING_TONE_ -#define _WIRING_TONE_ - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** -extern void tone(uint8_t, unsigned int, unsigned long = 0); -#ifdef __cplusplus -extern "C" { -#endif -extern void noTone(uint8_t); -extern int tone_irq_action(int, int16_t); -#ifdef __cplusplus -} -#endif - -#endif /* _WIRING_TONE_ */ diff --git a/cores/Udp.h b/cores/Udp.h deleted file mode 100644 index 6788a84f..00000000 --- a/cores/Udp.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef udp_h -#define udp_h - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class UDP : public Stream { - -public: - virtual uint8_t - begin(uint16_t) = 0; // initialize, start listening on specified port. Returns 1 if - // successful, 0 if there are no sockets available to use - virtual void stop() = 0; // Finish with the UDP socket - - // Sending UDP packets - - // Start building up a packet to send to the remote host specific in ip and port - // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port - virtual int beginPacket(IPAddress ip, uint16_t port) = 0; - // Start building up a packet to send to the remote host specific in host and port - // Returns 1 if successful, 0 if there was a problem resolving the hostname or port - virtual int beginPacket(const char *host, uint16_t port) = 0; - // Finish off this packet and send it - // Returns 1 if the packet was sent successfully, 0 if there was an error - virtual int endPacket() = 0; - // Write a single byte into the packet - virtual size_t write(uint8_t) = 0; - // Write size bytes from buffer into the packet - virtual size_t write(const uint8_t *buffer, size_t size) = 0; - - // Start processing the next available incoming packet - // Returns the size of the packet in bytes, or 0 if no packets are available - virtual int parsePacket() = 0; - // Number of bytes remaining in the current packet - virtual int available() = 0; - // Read a single byte from the current packet - virtual int read() = 0; - // Read up to len bytes from the current packet and place them into buffer - // Returns the number of bytes read, or 0 if none are available - virtual int read(unsigned char *buffer, size_t len) = 0; - // Read up to len characters from the current packet and place them into buffer - // Returns the number of characters read, or 0 if none are available - virtual int read(char *buffer, size_t len) = 0; - // Return the next byte from the current packet without moving on to the next byte - virtual int peek() = 0; - virtual void flush() = 0; // Finish reading the current packet - - // Return the IP address of the host who sent the current incoming packet - virtual IPAddress remoteIP() = 0; - // Return the port of the host who sent the current incoming packet - virtual uint16_t remotePort() = 0; - -protected: - uint8_t *rawIPAddress(IPAddress &addr) { return addr.raw_address(); }; -}; - -#endif /* udp_h */ diff --git a/cores/WCharacter.h b/cores/WCharacter.h deleted file mode 100644 index 2d36d1c6..00000000 --- a/cores/WCharacter.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef Character_h -#define Character_h - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -#ifdef __cplusplus -extern "C" { -#endif - -// WCharacter.h prototypes -#if defined(__GNUC__) -inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); -inline boolean isAlpha(int c) __attribute__((always_inline)); -inline boolean isAscii(int c) __attribute__((always_inline)); -inline boolean isWhitespace(int c) __attribute__((always_inline)); -inline boolean isControl(int c) __attribute__((always_inline)); -inline boolean isDigit(int c) __attribute__((always_inline)); -inline boolean isGraph(int c) __attribute__((always_inline)); -inline boolean isLowerCase(int c) __attribute__((always_inline)); -inline boolean isPrintable(int c) __attribute__((always_inline)); -inline boolean isPunct(int c) __attribute__((always_inline)); -inline boolean isSpace(int c) __attribute__((always_inline)); -inline boolean isUpperCase(int c) __attribute__((always_inline)); -inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); -inline int toAscii(int c) __attribute__((always_inline)); -inline int toLowerCase(int c) __attribute__((always_inline)); -inline int toUpperCase(int c) __attribute__((always_inline)); -#elif defined(__ICCARM__) -#endif - -// Checks for an alphanumeric character. -// It is equivalent to (isalpha(c) || isdigit(c)). -inline boolean isAlphaNumeric(int c) { return (isalnum(c) == 0 ? false : true); } - -// Checks for an alphabetic character. -// It is equivalent to (isupper(c) || islower(c)). -inline boolean isAlpha(int c) { return (isalpha(c) == 0 ? false : true); } - -// Checks whether c is a 7-bit unsigned char value -// that fits into the ASCII character set. -inline boolean isAscii(int c) { - /* return ( isascii(c) == 0 ? false : true); */ - return ((c & ~0x7f) != 0 ? false : true); -} - -// Checks for a blank character, that is, a space or a tab. -inline boolean isWhitespace(int c) { return (isblank(c) == 0 ? false : true); } - -// Checks for a control character. -inline boolean isControl(int c) { return (iscntrl(c) == 0 ? false : true); } - -// Checks for a digit (0 through 9). -inline boolean isDigit(int c) { return (isdigit(c) == 0 ? false : true); } - -// Checks for any printable character except space. -inline boolean isGraph(int c) { return (isgraph(c) == 0 ? false : true); } - -// Checks for a lower-case character. -inline boolean isLowerCase(int c) { return (islower(c) == 0 ? false : true); } - -// Checks for any printable character including space. -inline boolean isPrintable(int c) { return (isprint(c) == 0 ? false : true); } - -// Checks for any printable character which is not a space -// or an alphanumeric character. -inline boolean isPunct(int c) { return (ispunct(c) == 0 ? false : true); } - -// Checks for white-space characters. For the avr-libc library, -// these are: space, formfeed ('\f'), newline ('\n'), carriage -// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). -inline boolean isSpace(int c) { return (isspace(c) == 0 ? false : true); } - -// Checks for an uppercase letter. -inline boolean isUpperCase(int c) { return (isupper(c) == 0 ? false : true); } - -// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 -// 8 9 a b c d e f A B C D E F. -inline boolean isHexadecimalDigit(int c) { return (isxdigit(c) == 0 ? false : true); } - -// Converts c to a 7-bit unsigned char value that fits into the -// ASCII character set, by clearing the high-order bits. -inline int toAscii(int c) { - /* return toascii (c); */ - return (c & 0x7f); -} - -// Warning: -// Many people will be unhappy if you use this function. -// This function will convert accented letters into random -// characters. - -// Converts the letter c to lower case, if possible. -inline int toLowerCase(int c) { return tolower(c); } - -// Converts the letter c to upper case, if possible. -inline int toUpperCase(int c) { return toupper(c); } - -#ifdef __cplusplus -} -#endif - -#endif /* Character_h */ diff --git a/cores/WInterrupts.c b/cores/WInterrupts.c deleted file mode 100644 index 9b6d8460..00000000 --- a/cores/WInterrupts.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" - -//**************************************************************************** -// @Prototypes Of Local Functions -//**************************************************************************** -static interrupt_cb_t interrupt_0_cb = NULL; -static interrupt_cb_t interrupt_1_cb = NULL; - -//**************************************************************************** -// @Local Functions -//**************************************************************************** -#if defined(INTERRUPT_USE_ERU) -void ERU0_3_IRQHandler(void) { - if (interrupt_0_cb) { - interrupt_0_cb(); - } -} - - #if defined(XMC4200_Platform2GO) -void ERU0_0_IRQHandler(void) { - if (interrupt_1_cb) { - interrupt_1_cb(); - } -} - #else -void ERU1_0_IRQHandler(void) { - if (interrupt_1_cb) { - interrupt_1_cb(); - } -} - #endif - -#else -void CCU40_0_IRQHandler(void) { - if (interrupt_0_cb) { - interrupt_0_cb(); - } -} - -void CCU40_1_IRQHandler(void) { - if (interrupt_1_cb) { - interrupt_1_cb(); - } -} -#endif - -void attachInterrupt(uint32_t interrupt_num, interrupt_cb_t callback, uint32_t mode) { - if (interrupt_num < NUM_INTERRUPT) { - XMC_PIN_INTERRUPT_t pin_irq = mapping_interrupt[interrupt_num]; -#if defined(INTERRUPT_USE_ERU) - XMC_ERU_ETL_EDGE_DETECTION_t event_config = 0; - - switch (mode) { - case CHANGE: - event_config = XMC_ERU_ETL_EDGE_DETECTION_BOTH; - break; - - case RISING: - event_config = XMC_ERU_ETL_EDGE_DETECTION_RISING; - break; - - case FALLING: - event_config = XMC_ERU_ETL_EDGE_DETECTION_FALLING; - break; - - default: - event_config = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_NONE; - break; - } - - XMC_ERU_Enable(pin_irq.eru); - XMC_ERU_ETL_SetInput(pin_irq.eru, pin_irq.etl, pin_irq.input_a, pin_irq.input_b); - XMC_ERU_ETL_SetEdgeDetection(pin_irq.eru, pin_irq.etl, event_config); - XMC_ERU_ETL_SetSource(pin_irq.eru, pin_irq.etl, XMC_ERU_ETL_SOURCE_B); - XMC_ERU_ETL_EnableOutputTrigger(pin_irq.eru, pin_irq.etl, pin_irq.ogu); - XMC_ERU_OGU_SetServiceRequestMode(pin_irq.eru, pin_irq.ogu, - XMC_ERU_OGU_SERVICE_REQUEST_ON_TRIGGER); - - if (pin_irq.irq_num == 0) { - NVIC_SetPriority(ERU0_3_IRQn, 3); - interrupt_0_cb = callback; - NVIC_EnableIRQ(ERU0_3_IRQn); - } else if (pin_irq.irq_num == 1) { - #if defined(XMC4200_Platform2GO) - NVIC_SetPriority(ERU0_0_IRQn, 3); - interrupt_1_cb = callback; - NVIC_EnableIRQ(ERU0_0_IRQn); - #else - NVIC_SetPriority(ERU1_0_IRQn, 3); - interrupt_1_cb = callback; - NVIC_EnableIRQ(ERU1_0_IRQn); - #endif - } -#else - XMC_CCU4_SLICE_EVENT_CONFIG_t event_config = {0}; - - switch (mode) { - case CHANGE: - event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_DUAL_EDGE; - break; - - case RISING: - event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_RISING_EDGE; - break; - - case FALLING: - event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_FALLING_EDGE; - break; - - default: - event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_NONE; - break; - } - - XMC_CCU4_Init(pin_irq.ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU4_EnableClock(pin_irq.ccu, pin_irq.slice_num); - - if (pin_irq.irq_num == 0) { - #if defined(XMC1100_Boot_Kit) || defined(XMC1400_Arduino_Kit) || defined(XMC1400_XMC2GO) - /* P1_4 external interrupt goes through USIC to CCU4 */ - XMC_USIC_CH_Enable(XMC_USIC0_CH0); - XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX5, USIC0_C0_DX5_P1_4); - XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_DX5INS); - #endif - XMC_CCU4_SLICE_EnableMultipleEvents(pin_irq.slice, XMC_CCU4_SLICE_MULTI_IRQ_ID_EVENT0); - XMC_CCU4_SLICE_SetInterruptNode(pin_irq.slice, XMC_CCU4_SLICE_IRQ_ID_EVENT0, 0); - NVIC_SetPriority(CCU40_0_IRQn, 3); - - event_config.mapped_input = pin_irq.input; - XMC_CCU4_SLICE_ConfigureEvent(pin_irq.slice, XMC_CCU4_SLICE_EVENT_0, &event_config); - - interrupt_0_cb = callback; - NVIC_EnableIRQ(CCU40_0_IRQn); - } else if (pin_irq.irq_num == 1) { - #if defined(XMC1300_Boot_Kit) - /* P0_13 external interrupt goes through USIC to CCU4 */ - XMC_USIC_CH_Enable(XMC_USIC0_CH0); - XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_P0_13); - #endif - #if defined(XMC1400_Arduino_Kit) - /* P1_1 external interrupt goes through USIC to CCU4 */ - XMC_USIC_CH_Enable(XMC_USIC0_CH1); - XMC_USIC_CH_SetInputSource(XMC_USIC0_CH1, XMC_USIC_CH_INPUT_DX2, USIC0_C1_DX2_P1_1); - #endif - XMC_CCU4_SLICE_EnableMultipleEvents(pin_irq.slice, XMC_CCU4_SLICE_MULTI_IRQ_ID_EVENT1); - XMC_CCU4_SLICE_SetInterruptNode(pin_irq.slice, XMC_CCU4_SLICE_IRQ_ID_EVENT1, 1); - NVIC_SetPriority(CCU40_1_IRQn, 3); - - event_config.mapped_input = pin_irq.input; - XMC_CCU4_SLICE_ConfigureEvent(pin_irq.slice, XMC_CCU4_SLICE_EVENT_1, &event_config); - - interrupt_1_cb = callback; - NVIC_EnableIRQ(CCU40_1_IRQn); - } -#endif - } -} - -void detachInterrupt(uint32_t interrupt_num) { - if (interrupt_num < NUM_INTERRUPT) { -#if defined(INTERRUPT_USE_ERU) - XMC_PIN_INTERRUPT_t pin_irq = mapping_interrupt[interrupt_num]; - switch (pin_irq.irq_num) { - case 0: - NVIC_DisableIRQ(ERU0_3_IRQn); - break; - - case 1: - #if defined(XMC4200_Platform2GO) - NVIC_DisableIRQ(ERU0_0_IRQn); - #else - NVIC_DisableIRQ(ERU1_0_IRQn); - #endif - break; -#else - switch (interrupt_num) { - case 0: - NVIC_DisableIRQ(CCU40_0_IRQn); - break; - - case 1: - NVIC_DisableIRQ(CCU40_1_IRQn); - break; -#endif - default: - break; - } - } -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/WInterrupts.h b/cores/WInterrupts.h deleted file mode 100644 index db61c505..00000000 --- a/cores/WInterrupts.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ - -#ifndef W_INTERRUPTS_H -#define W_INTERRUPTS_H - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define INT0 0 -#define INT1 1 - -#define PIN_INTERRUPT_NO_MODE 5 -#define FALLING 0 // same define as for LOW -#define RISING 1 // same define as for HIGH -#define CHANGE 2 - -//**************************************************************************** -// @Typedefs -//**************************************************************************** -typedef void (*interrupt_cb_t)(void); - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** -void attachInterrupt(uint32_t, interrupt_cb_t, uint32_t); -void detachInterrupt(uint32_t); - -#endif /* W_INTERRUPTS_H */ diff --git a/cores/WMath.cpp b/cores/WMath.cpp deleted file mode 100644 index b6128522..00000000 --- a/cores/WMath.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -extern "C" { -#include "stdlib.h" -#include "stdint.h" -} - -#include "WMath.h" - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -void randomSeed(uint32_t dwSeed) { - if (dwSeed != 0) { - srand(dwSeed); - } -} - -long random(long howbig) { - if (howbig == 0) { - return 0; - } - - return rand() % howbig; -} - -long random(long howsmall, long howbig) { - if (howsmall >= howbig) { - return howsmall; - } - - long diff = howbig - howsmall; - - return random(diff) + howsmall; -} - -extern uint16_t makeWord(uint16_t w) { return w; } - -uint16_t makeWord(uint8_t h, uint8_t l) { return (h << 8) | l; } - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/WMath.h b/cores/WMath.h deleted file mode 100644 index 1c188fc4..00000000 --- a/cores/WMath.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef _WIRING_MATH_ -#define _WIRING_MATH_ - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** -extern long random(long); -extern long random(long, long); -extern void randomSeed(uint32_t dwSeed); - -extern uint16_t makeWord(uint16_t w); -extern uint16_t makeWord(uint8_t h, uint8_t l); - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define word(...) makeWord(__VA_ARGS__) - -#endif /* _WIRING_MATH_ */ diff --git a/cores/WString.cpp b/cores/WString.cpp deleted file mode 100644 index 7fb9b6bf..00000000 --- a/cores/WString.cpp +++ /dev/null @@ -1,704 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#define _STDBOOL_H 1 -#include "Arduino.h" -#include "itoa.h" -#include "dtostrf.h" -#include -#include -#include - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -// Constructors //////////////////////////////////////////////////////////////// - -String::String(const char *cstr) { - init(); - if (cstr) { - copy(cstr, strlen(cstr)); - } -} - -String::String(const String &value) { - init(); - *this = value; -} - -String::String(char c) { - init(); - char buf[2]; - buf[0] = c; - buf[1] = 0; - *this = buf; -} - -String::String(unsigned char value, unsigned char base) { - init(); - char buf[9]; - utoa(value, buf, base); - *this = buf; -} - -String::String(int value, unsigned char base) { - init(); - char buf[18]; - itoa(value, buf, base); - *this = buf; -} - -String::String(unsigned int value, unsigned char base) { - init(); - char buf[17]; - utoa(value, buf, base); - *this = buf; -} - -String::String(long value, unsigned char base) { - init(); - char buf[34]; - ltoa(value, buf, base); - *this = buf; -} - -String::String(unsigned long value, unsigned char base) { - init(); - char buf[33]; - ultoa(value, buf, base); - *this = buf; -} - -String::String(float value, unsigned char decimalPlaces) { - init(); - char buf[33]; - *this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf); -} - -String::String(double value, unsigned char decimalPlaces) { - init(); - char buf[33]; - *this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf); -} - -String::~String() { free(buffer); } - -// Public Methods ////////////////////////////////////////////////////////////// - -/*********************************************/ -/* Memory Management */ -/*********************************************/ - -inline void String::init(void) { - buffer = NULL; - capacity = 0; - len = 0; -} - -void String::invalidate(void) { - if (buffer) { - free(buffer); - } - buffer = NULL; - capacity = len = 0; -} - -unsigned char String::reserve(unsigned int size) { - if (buffer && capacity >= size) { - return 1; - } - if (changeBuffer(size)) { - if (len == 0) { - buffer[0] = 0; - } - return 1; - } - return 0; -} - -unsigned char String::changeBuffer(unsigned int maxStrLen) { - char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); - if (newbuffer) { - buffer = newbuffer; - capacity = maxStrLen; - return 1; - } - return 0; -} - -/*********************************************/ -/* Copy and Move */ -/*********************************************/ - -String &String::copy(const char *cstr, unsigned int length) { - if (!reserve(length)) { - invalidate(); - return *this; - } - len = length; - strcpy(buffer, cstr); - return *this; -} - -String &String::operator=(const String &rhs) { - if (this == &rhs) { - return *this; - } - - if (rhs.buffer) { - copy(rhs.buffer, rhs.len); - } else { - invalidate(); - } - - return *this; -} - -String &String::operator=(const char *cstr) { - if (cstr) { - copy(cstr, strlen(cstr)); - } else { - invalidate(); - } - - return *this; -} - -/*********************************************/ -/* concat */ -/*********************************************/ - -unsigned char String::concat(const String &s) { return concat(s.buffer, s.len); } - -unsigned char String::concat(const char *cstr, unsigned int length) { - unsigned int newlen = len + length; - if (!cstr) { - return 0; - } - if (length == 0) { - return 1; - } - if (!reserve(newlen)) { - return 0; - } - strcpy(buffer + len, cstr); - len = newlen; - return 1; -} - -unsigned char String::concat(const char *cstr) { - if (!cstr) { - return 0; - } - return concat(cstr, strlen(cstr)); -} - -unsigned char String::concat(char c) { - char buf[2]; - buf[0] = c; - buf[1] = 0; - return concat(buf, 1); -} - -unsigned char String::concat(unsigned char num) { - char buf[4]; - itoa(num, buf, 10); - return concat(buf, strlen(buf)); -} - -unsigned char String::concat(int num) { - char buf[12]; - itoa(num, buf, 10); - return concat(buf, strlen(buf)); -} - -unsigned char String::concat(unsigned int num) { - char buf[11]; - utoa(num, buf, 10); - return concat(buf, strlen(buf)); -} - -unsigned char String::concat(long num) { - char buf[12]; - ltoa(num, buf, 10); - return concat(buf, strlen(buf)); -} - -unsigned char String::concat(unsigned long num) { - char buf[11]; - ultoa(num, buf, 10); - return concat(buf, strlen(buf)); -} - -unsigned char String::concat(float num) { - char buf[20]; - char *string = dtostrf(num, 4, 2, buf); - return concat(string, strlen(string)); -} - -unsigned char String::concat(double num) { - char buf[20]; - char *string = dtostrf(num, 4, 2, buf); - return concat(string, strlen(string)); -} - -/*********************************************/ -/* Concatenate */ -/*********************************************/ - -StringSumHelper &operator+(const StringSumHelper &lhs, const String &rhs) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(rhs.buffer, rhs.len)) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, const char *cstr) { - StringSumHelper &a = const_cast(lhs); - if (!cstr || !a.concat(cstr, strlen(cstr))) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, char c) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(c)) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, unsigned char num) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(num)) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, int num) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(num)) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, unsigned int num) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(num)) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, long num) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(num)) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, unsigned long num) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(num)) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, float num) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(num)) { - a.invalidate(); - } - return a; -} - -StringSumHelper &operator+(const StringSumHelper &lhs, double num) { - StringSumHelper &a = const_cast(lhs); - if (!a.concat(num)) { - a.invalidate(); - } - return a; -} - -/*********************************************/ -/* Comparison */ -/*********************************************/ - -int String::compareTo(const String &s) const { - if (!buffer || !s.buffer) { - if (s.buffer && s.len > 0) { - return 0 - *(unsigned char *)s.buffer; - } - if (buffer && len > 0) { - return *(unsigned char *)buffer; - } - return 0; - } - return strcmp(buffer, s.buffer); -} - -unsigned char String::equals(const String &s2) const { - return (len == s2.len && compareTo(s2) == 0); -} - -unsigned char String::equals(const char *cstr) const { - if (len == 0) { - return (cstr == NULL || *cstr == 0); - } - if (cstr == NULL) { - return buffer[0] == 0; - } - return strcmp(buffer, cstr) == 0; -} - -unsigned char String::operator<(const String &rhs) const { return compareTo(rhs) < 0; } - -unsigned char String::operator>(const String &rhs) const { return compareTo(rhs) > 0; } - -unsigned char String::operator<=(const String &rhs) const { return compareTo(rhs) <= 0; } - -unsigned char String::operator>=(const String &rhs) const { return compareTo(rhs) >= 0; } - -unsigned char String::equalsIgnoreCase(const String &s2) const { - if (this == &s2) { - return 1; - } - if (len != s2.len) { - return 0; - } - if (len == 0) { - return 1; - } - const char *p1 = buffer; - const char *p2 = s2.buffer; - while (*p1) { - if (tolower(*p1++) != tolower(*p2++)) { - return 0; - } - } - return 1; -} - -unsigned char String::startsWith(const String &s2) const { - if (len < s2.len) { - return 0; - } - return startsWith(s2, 0); -} - -unsigned char String::startsWith(const String &s2, unsigned int offset) const { - if (offset > len - s2.len || !buffer || !s2.buffer) { - return 0; - } - return strncmp(&buffer[offset], s2.buffer, s2.len) == 0; -} - -unsigned char String::endsWith(const String &s2) const { - if (len < s2.len || !buffer || !s2.buffer) { - return 0; - } - return strcmp(&buffer[len - s2.len], s2.buffer) == 0; -} - -/*********************************************/ -/* Character Access */ -/*********************************************/ - -char String::charAt(unsigned int loc) const { return operator[](loc); } - -void String::setCharAt(unsigned int loc, char c) { - if (loc < len) { - buffer[loc] = c; - } -} - -char &String::operator[](unsigned int index) { - static char dummy_writable_char; - if (index >= len || !buffer) { - dummy_writable_char = 0; - return dummy_writable_char; - } - return buffer[index]; -} - -char String::operator[](unsigned int index) const { - if (index >= len || !buffer) { - return 0; - } - return buffer[index]; -} - -void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const { - if (!bufsize || !buf) { - return; - } - if (index >= len) { - buf[0] = 0; - return; - } - unsigned int n = bufsize - 1; - if (n > len - index) { - n = len - index; - } - strncpy((char *)buf, buffer + index, n); - buf[n] = 0; -} - -/*********************************************/ -/* Search */ -/*********************************************/ - -int String::indexOf(char c) const { return indexOf(c, 0); } - -int String::indexOf(char ch, unsigned int fromIndex) const { - if (fromIndex >= len) { - return -1; - } - const char *temp = strchr(buffer + fromIndex, ch); - if (temp == NULL) { - return -1; - } - return temp - buffer; -} - -int String::indexOf(const String &s2) const { return indexOf(s2, 0); } - -int String::indexOf(const String &s2, unsigned int fromIndex) const { - if (fromIndex >= len) { - return -1; - } - const char *found = strstr(buffer + fromIndex, s2.buffer); - if (found == NULL) { - return -1; - } - return found - buffer; -} - -int String::lastIndexOf(char theChar) const { return lastIndexOf(theChar, len - 1); } - -int String::lastIndexOf(char ch, unsigned int fromIndex) const { - if (fromIndex >= len) { - return -1; - } - char tempchar = buffer[fromIndex + 1]; - buffer[fromIndex + 1] = '\0'; - char *temp = strrchr(buffer, ch); - buffer[fromIndex + 1] = tempchar; - if (temp == NULL) { - return -1; - } - return temp - buffer; -} - -int String::lastIndexOf(const String &s2) const { return lastIndexOf(s2, len - s2.len); } - -int String::lastIndexOf(const String &s2, unsigned int fromIndex) const { - if (s2.len == 0 || len == 0 || s2.len > len) { - return -1; - } - if (fromIndex >= len) { - fromIndex = len - 1; - } - int found = -1; - for (char *p = buffer; p <= buffer + fromIndex; p++) { - p = strstr(p, s2.buffer); - if (!p) { - break; - } - if ((unsigned int)(p - buffer) <= fromIndex) { - found = p - buffer; - } - } - return found; -} - -String String::substring(unsigned int left, unsigned int right) const { - if (left > right) { - unsigned int temp = right; - right = left; - left = temp; - } - String out; - if (left > len) { - return out; - } - if (right > len) { - right = len; - } - char temp = buffer[right]; // save the replaced character - buffer[right] = '\0'; - out = buffer + left; // pointer arithmetic - buffer[right] = temp; // restore character - return out; -} - -/*********************************************/ -/* Modification */ -/*********************************************/ - -void String::replace(char find, char replace) { - if (!buffer) { - return; - } - for (char *p = buffer; *p; p++) { - if (*p == find) { - *p = replace; - } - } -} - -void String::replace(const String &find, const String &replace) { - if (len == 0 || find.len == 0) { - return; - } - int diff = replace.len - find.len; - char *readFrom = buffer; - char *foundAt; - if (diff == 0) { - while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { - memcpy(foundAt, replace.buffer, replace.len); - readFrom = foundAt + replace.len; - } - } else if (diff < 0) { - char *writeTo = buffer; - while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { - unsigned int n = foundAt - readFrom; - memcpy(writeTo, readFrom, n); - writeTo += n; - memcpy(writeTo, replace.buffer, replace.len); - writeTo += replace.len; - readFrom = foundAt + find.len; - len += diff; - } - strcpy(writeTo, readFrom); - } else { - unsigned int size = len; // compute size needed for result - while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { - readFrom = foundAt + find.len; - size += diff; - } - if (size == len) { - return; - } - if (size > capacity && !changeBuffer(size)) { - return; // XXX: tell user! - } - int index = len - 1; - while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) { - readFrom = buffer + index + find.len; - memmove(readFrom + diff, readFrom, len - (readFrom - buffer)); - len += diff; - buffer[len] = 0; - memcpy(buffer + index, replace.buffer, replace.len); - index--; - } - } -} - -void String::remove(unsigned int index) { - if (index >= len) { - return; - } - int count = len - index; - remove(index, count); -} - -void String::remove(unsigned int index, unsigned int count) { - if (index >= len) { - return; - } - if (count <= 0) { - return; - } - if (index + count > len) { - count = len - index; - } - char *writeTo = buffer + index; - len = len - count; - strncpy(writeTo, buffer + index + count, len - index); - buffer[len] = 0; -} - -void String::toLowerCase(void) { - if (!buffer) { - return; - } - for (char *p = buffer; *p; p++) { - *p = tolower(*p); - } -} - -void String::toUpperCase(void) { - if (!buffer) { - return; - } - for (char *p = buffer; *p; p++) { - *p = toupper(*p); - } -} - -void String::trim(void) { - if (!buffer || len == 0) { - return; - } - char *begin = buffer; - while (isspace(*begin)) { - begin++; - } - char *end = buffer + len - 1; - while (isspace(*end) && end >= begin) { - end--; - } - len = end + 1 - begin; - if (begin > buffer) { - memcpy(buffer, begin, len); - } - buffer[len] = 0; -} - -/*********************************************/ -/* Parsing / Conversion */ -/*********************************************/ - -long String::toInt(void) const { - if (buffer) { - return atol(buffer); - } - return 0; -} - -float String::toFloat(void) const { - if (buffer) { - return float(atof(buffer)); - } - return 0; -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/WString.h b/cores/WString.h deleted file mode 100644 index d724a681..00000000 --- a/cores/WString.h +++ /dev/null @@ -1,288 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef String_class_h -#define String_class_h -#ifdef __cplusplus - - //**************************************************************************** - // @Project Includes - //**************************************************************************** - #include - #include - #include - #include "dtostrf.h" - -// When compiling programs with this class, the following gcc parameters -// dramatically increase performance and memory (RAM) efficiency, typically -// with little or no increase in code size. -// -felide-constructors -// -std=c++0x - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class __FlashStringHelper; - #define F(string_literal) (reinterpret_cast(PSTR(string_literal))) - -// An inherited class for holding the result of a concatenation. These -// result objects are assumed to be writable by subsequent concatenations. -class StringSumHelper; - -// The string class -class String { - // use a function pointer to allow for "if (s)" without the - // complications of an operator bool(). for more information, see: - // http://www.artima.com/cppsource/safebool.html - typedef void (String::*StringIfHelperType)() const; - - void StringIfHelper() const {} - -public: - // constructors - // creates a copy of the initial value. - // if the initial value is null or invalid, or if memory allocation - // fails, the string will be marked as invalid (i.e. "if (s)" will - // be false). - String(const char *cstr = ""); - String(const String &str); - String(const __FlashStringHelper *str); - explicit String(char c); - explicit String(unsigned char, unsigned char base = 10); - explicit String(int, unsigned char base = 10); - explicit String(unsigned int, unsigned char base = 10); - explicit String(long, unsigned char base = 10); - explicit String(unsigned long, unsigned char base = 10); - explicit String(float, unsigned char decimalPlaces = 2); - explicit String(double, unsigned char decimalPlaces = 2); - ~String(void); - - // memory management - // return true on success, false on failure (in which case, the string - // is left unchanged). reserve(0), if successful, will validate an - // invalid string (i.e., "if (s)" will be true afterwards) - unsigned char reserve(unsigned int size); - - inline unsigned int length(void) const { return len; } - - // creates a copy of the assigned value. if the value is null or - // invalid, or if the memory allocation fails, the string will be - // marked as invalid ("if (s)" will be false). - String &operator=(const String &rhs); - String &operator=(const char *cstr); - String &operator=(const __FlashStringHelper *str); - - // concatenate (works w/ built-in types) - - // returns true on success, false on failure (in which case, the string - // is left unchanged). if the argument is null or invalid, the - // concatenation is considered unsucessful. - unsigned char concat(const String &str); - unsigned char concat(const char *cstr); - unsigned char concat(char c); - unsigned char concat(unsigned char c); - unsigned char concat(int num); - unsigned char concat(unsigned int num); - unsigned char concat(long num); - unsigned char concat(unsigned long num); - unsigned char concat(float num); - unsigned char concat(double num); - unsigned char concat(const __FlashStringHelper *str); - - // if there's not enough memory for the concatenated value, the string - // will be left unchanged (but this isn't signalled in any way) - String &operator+=(const String &rhs) { - concat(rhs); - return (*this); - } - - String &operator+=(const char *cstr) { - concat(cstr); - return (*this); - } - - String &operator+=(char c) { - concat(c); - return (*this); - } - - String &operator+=(unsigned char num) { - concat(num); - return (*this); - } - - String &operator+=(int num) { - concat(num); - return (*this); - } - - String &operator+=(unsigned int num) { - concat(num); - return (*this); - } - - String &operator+=(long num) { - concat(num); - return (*this); - } - - String &operator+=(unsigned long num) { - concat(num); - return (*this); - } - - String &operator+=(float num) { - concat(num); - return (*this); - } - - String &operator+=(double num) { - concat(num); - return (*this); - } - - String &operator+=(const __FlashStringHelper *str) { - concat(str); - return (*this); - } - - friend StringSumHelper &operator+(const StringSumHelper &lhs, const String &rhs); - friend StringSumHelper &operator+(const StringSumHelper &lhs, const char *cstr); - friend StringSumHelper &operator+(const StringSumHelper &lhs, char c); - friend StringSumHelper &operator+(const StringSumHelper &lhs, unsigned char num); - friend StringSumHelper &operator+(const StringSumHelper &lhs, int num); - friend StringSumHelper &operator+(const StringSumHelper &lhs, unsigned int num); - friend StringSumHelper &operator+(const StringSumHelper &lhs, long num); - friend StringSumHelper &operator+(const StringSumHelper &lhs, unsigned long num); - friend StringSumHelper &operator+(const StringSumHelper &lhs, float num); - friend StringSumHelper &operator+(const StringSumHelper &lhs, double num); - friend StringSumHelper &operator+(const StringSumHelper &lhs, const __FlashStringHelper *rhs); - - // comparison (only works w/ Strings and "strings") - operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; } - - int compareTo(const String &s) const; - unsigned char equals(const String &s) const; - unsigned char equals(const char *cstr) const; - - unsigned char operator==(const String &rhs) const { return equals(rhs); } - - unsigned char operator==(const char *cstr) const { return equals(cstr); } - - unsigned char operator!=(const String &rhs) const { return !equals(rhs); } - - unsigned char operator!=(const char *cstr) const { return !equals(cstr); } - - unsigned char operator<(const String &rhs) const; - unsigned char operator>(const String &rhs) const; - unsigned char operator<=(const String &rhs) const; - unsigned char operator>=(const String &rhs) const; - unsigned char equalsIgnoreCase(const String &s) const; - unsigned char startsWith(const String &prefix) const; - unsigned char startsWith(const String &prefix, unsigned int offset) const; - unsigned char endsWith(const String &suffix) const; - - // character acccess - char charAt(unsigned int index) const; - void setCharAt(unsigned int index, char c); - char operator[](unsigned int index) const; - char &operator[](unsigned int index); - void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index = 0) const; - - void toCharArray(char *buf, unsigned int bufsize, unsigned int index = 0) const { - getBytes((unsigned char *)buf, bufsize, index); - } - - const char *c_str() const { return buffer; } - - // search - int indexOf(char ch) const; - int indexOf(char ch, unsigned int fromIndex) const; - int indexOf(const String &str) const; - int indexOf(const String &str, unsigned int fromIndex) const; - int lastIndexOf(char ch) const; - int lastIndexOf(char ch, unsigned int fromIndex) const; - int lastIndexOf(const String &str) const; - int lastIndexOf(const String &str, unsigned int fromIndex) const; - - String substring(unsigned int beginIndex) const { return substring(beginIndex, len); }; - - String substring(unsigned int beginIndex, unsigned int endIndex) const; - - // modification - void replace(char find, char replace); - void replace(const String &find, const String &replace); - void remove(unsigned int index); - void remove(unsigned int index, unsigned int count); - void toLowerCase(void); - void toUpperCase(void); - void trim(void); - - // parsing/conversion - long toInt(void) const; - float toFloat(void) const; - - char *buffer; // the actual char array - unsigned int capacity; // the array length minus one (for the '\0') - unsigned int len; // the String length (not counting the '\0') - - void init(void); - void invalidate(void); - unsigned char changeBuffer(unsigned int maxStrLen); - unsigned char concat(const char *cstr, unsigned int length); - - // copy and move - String ©(const char *cstr, unsigned int length); - String ©(const __FlashStringHelper *pstr, unsigned int length); -}; - -class StringSumHelper : public String { -public: - StringSumHelper(const String &s) - : String(s) {} - - StringSumHelper(const char *p) - : String(p) {} - - StringSumHelper(char c) - : String(c) {} - - StringSumHelper(unsigned char num) - : String(num) {} - - StringSumHelper(int num) - : String(num) {} - - StringSumHelper(unsigned int num) - : String(num) {} - - StringSumHelper(long num) - : String(num) {} - - StringSumHelper(unsigned long num) - : String(num) {} - - StringSumHelper(float num) - : String(num) {} - - StringSumHelper(double num) - : String(num) {} -}; - -#endif // __cplusplus -#endif // String_class_h diff --git a/cores/Wprogram.h b/cores/Wprogram.h deleted file mode 100644 index 56ea2fef..00000000 --- a/cores/Wprogram.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright (c) 2011 Arduino. All right reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -See the GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef WPROGRAM_H_ -#define WPROGRAM_H_ - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define _STDBOOL_H - -//**************************************************************************** -// @Project Includes -//**************************************************************************** - -#endif /* WPROGRAM_H_ */ diff --git a/cores/abi.cpp b/cores/abi.cpp deleted file mode 100644 index a9567602..00000000 --- a/cores/abi.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** -extern "C" void __cxa_pure_virtual(void) __attribute__((__noreturn__)); -extern "C" void __cxa_deleted_virtual(void) __attribute__((__noreturn__)); - -//**************************************************************************** -// @Local Functions -//**************************************************************************** -void __cxa_pure_virtual(void) { - // We might want to write some diagnostics to uart in this case - // std::terminate(); - while (1) - ; -} - -void __cxa_deleted_virtual(void) { - // We might want to write some diagnostics to uart in this case - // std::terminate(); - while (1) - ; -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/avr/dtostrf.c b/cores/avr/dtostrf.c deleted file mode 100644 index 906a8960..00000000 --- a/cores/avr/dtostrf.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "dtostrf.h" -#include -#include -#include -#include - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -char * dtostrf(double number, signed int width, unsigned int prec, char *s) { - bool negative = false; - - if (isnan(number)) { - strcpy(s, "nan"); - return s; - } - if (isinf(number)) { - strcpy(s, "inf"); - return s; - } - - char* out = s; - - int fillme = width; // how many cells to fill for the integer part - if (prec > 0) { - fillme -= (prec+1); - } - - // Handle negative numbers - if (number < 0.0) { - negative = true; - fillme--; - number = -number; - } - - // Round correctly so that print(1.999, 2) prints as "2.00" - // I optimized out most of the divisions - double rounding = 2.0; - for (unsigned int i = 0; i < prec; ++i) - rounding *= 10.0; - rounding = 1.0 / rounding; - - number += rounding; - - // Figure out how big our number really is - double tenpow = 1.0; - unsigned int digitcount = 1; - while (number >= 10.0 * tenpow) { - tenpow *= 10.0; - digitcount++; - } - - number /= tenpow; - fillme -= digitcount; - - // Pad unused cells with spaces - while (fillme-- > 0) { - *out++ = ' '; - } - - // Handle negative sign - if (negative) *out++ = '-'; - - // Print the digits, and if necessary, the decimal point - digitcount += prec; - int8_t digit = 0; - while (digitcount-- > 0) { - digit = (int8_t)number; - if (digit > 9) digit = 9; // insurance - *out++ = (char)('0' | digit); - if ((digitcount == prec) && (prec > 0)) { - *out++ = '.'; - } - number -= digit; - number *= 10.0; - } - - // make sure the string is terminated - *out = 0; - return s; -} - - - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - - - -//**************************************************************************** -// END OF FILE -//**************************************************************************** - diff --git a/cores/avr/dtostrf.h b/cores/avr/dtostrf.h deleted file mode 100644 index 41d874bf..00000000 --- a/cores/avr/dtostrf.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - - -#ifndef DTOSTRF_H_ -#define DTOSTRF_H_ - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -/* - * \brief Converts a double into string.. - * - * \param val The double value to convert - * \param width Number of digits before the "." - * \param prec Number of digits after the "." - * \param s Resultant output string - */ - -char* dtostrf (double val, signed int width, unsigned int prec, char *s); - - -#endif /* DTOSTRF_H_ */ diff --git a/cores/avr/interrupt.h b/cores/avr/interrupt.h deleted file mode 100644 index 950509dd..00000000 --- a/cores/avr/interrupt.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - Copyright (c) 2015 Arduino LCC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -/* - Empty file. - This file is here to allow compatibility with sketches (made for AVR) - that includes -*/ diff --git a/cores/avr/io.h b/cores/avr/io.h deleted file mode 100644 index eb7ac22f..00000000 --- a/cores/avr/io.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - io.h - Definitions for compatibility with AVR io macros - - Copyright (c) 2016 Arduino LLC - - 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 -*/ - -//#ifndef _IO_H_ -//#define _IO_H_ -// -//#define RAMSTART (HMCRAMC0_ADDR) -//#define RAMSIZE (HMCRAMC0_SIZE) -//#define RAMEND (RAMSTART + RAMSIZE - 1) -// -//#endif - -/* - Empty file. - This file is here to allow compatibility with sketches (made for AVR) - that includes -*/ \ No newline at end of file diff --git a/cores/avr/pgmspace.h b/cores/avr/pgmspace.h deleted file mode 100644 index 46bc6504..00000000 --- a/cores/avr/pgmspace.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - pgmspace.h - Definitions for compatibility with AVR pgmspace macros - - Copyright (c) 2015 Arduino LLC - - Based on work of Paul Stoffregen on Teensy 3 (http://pjrc.com) - - 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 -*/ - -#ifndef __PGMSPACE_H_ -#define __PGMSPACE_H_ 1 - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define PROGMEM -#define PGM_P const char * -#define PSTR(str) (str) - -#define _SFR_BYTE(n) (n) - -//**************************************************************************** -// @Typedefs -//**************************************************************************** -typedef void prog_void; -typedef char prog_char; -typedef unsigned char prog_uchar; -typedef int8_t prog_int8_t; -typedef uint8_t prog_uint8_t; -typedef int16_t prog_int16_t; -typedef uint16_t prog_uint16_t; -typedef int32_t prog_int32_t; -typedef uint32_t prog_uint32_t; -typedef int64_t prog_int64_t; -typedef uint64_t prog_uint64_t; - -typedef const void* int_farptr_t; -typedef const void* uint_farptr_t; - -//**************************************************************************** -// @Macros -//**************************************************************************** -#define memchr_P(s, c, n) memchr((s), (c), (n)) -#define memcmp_P(s1, s2, n) memcmp((s1), (s2), (n)) -#define memccpy_P(dest, src, c, n) memccpy((dest), (src), (c), (n)) -#define memcpy_P(dest, src, n) memcpy((dest), (src), (n)) -#define memmem_P(haystack, haystacklen, needle, needlelen) memmem((haystack), (haystacklen), (needle), (needlelen)) -#define memrchr_P(s, c, n) memrchr((s), (c), (n)) -#define strcat_P(dest, src) strcat((dest), (src)) -#define strchr_P(s, c) strchr((s), (c)) -#define strchrnul_P(s, c) strchrnul((s), (c)) -#define strcmp_P(a, b) strcmp((a), (b)) -#define strcpy_P(dest, src) strcpy((dest), (src)) -#define strcasecmp_P(s1, s2) strcasecmp((s1), (s2)) -#define strcasestr_P(haystack, needle) strcasestr((haystack), (needle)) -#define strcspn_P(s, accept) strcspn((s), (accept)) -#define strlcat_P(s1, s2, n) strlcat((s1), (s2), (n)) -#define strlcpy_P(s1, s2, n) strlcpy((s1), (s2), (n)) -#define strlen_P(a) strlen((a)) -#define strnlen_P(s, n) strnlen((s), (n)) -#define strncmp_P(s1, s2, n) strncmp((s1), (s2), (n)) -#define strncasecmp_P(s1, s2, n) strncasecmp((s1), (s2), (n)) -#define strncat_P(s1, s2, n) strncat((s1), (s2), (n)) -#define strncpy_P(s1, s2, n) strncpy((s1), (s2), (n)) -#define strpbrk_P(s, accept) strpbrk((s), (accept)) -#define strrchr_P(s, c) strrchr((s), (c)) -#define strsep_P(sp, delim) strsep((sp), (delim)) -#define strspn_P(s, accept) strspn((s), (accept)) -#define strstr_P(a, b) strstr((a), (b)) -#define strtok_P(s, delim) strtok((s), (delim)) -#define strtok_rP(s, delim, last) strtok((s), (delim), (last)) - -#define strlen_PF(a) strlen((a)) -#define strnlen_PF(src, len) strnlen((src), (len)) -#define memcpy_PF(dest, src, len) memcpy((dest), (src), (len)) -#define strcpy_PF(dest, src) strcpy((dest), (src)) -#define strncpy_PF(dest, src, len) strncpy((dest), (src), (len)) -#define strcat_PF(dest, src) strcat((dest), (src)) -#define strlcat_PF(dest, src, len) strlcat((dest), (src), (len)) -#define strncat_PF(dest, src, len) strncat((dest), (src), (len)) -#define strcmp_PF(s1, s2) strcmp((s1), (s2)) -#define strncmp_PF(s1, s2, n) strncmp((s1), (s2), (n)) -#define strcasecmp_PF(s1, s2) strcasecmp((s1), (s2)) -#define strncasecmp_PF(s1, s2, n) strncasecmp((s1), (s2), (n)) -#define strstr_PF(s1, s2) strstr((s1), (s2)) -#define strlcpy_PF(dest, src, n) strlcpy((dest), (src), (n)) -#define memcmp_PF(s1, s2, n) memcmp((s1), (s2), (n)) - -#define sprintf_P(s, f, ...) sprintf((s), (f), __VA_ARGS__) -#define snprintf_P(s, f, ...) snprintf((s), (f), __VA_ARGS__) - -#define pgm_read_byte(addr) (*(const unsigned char *)(addr)) -#define pgm_read_word(addr) (*(const unsigned short *)(addr)) -#define pgm_read_dword(addr) (*(const unsigned long *)(addr)) -#define pgm_read_float(addr) (*(const float *)(addr)) -#define pgm_read_ptr(addr) (*(const void *)(addr)) - -#define pgm_read_byte_near(addr) pgm_read_byte(addr) -#define pgm_read_word_near(addr) pgm_read_word(addr) -#define pgm_read_dword_near(addr) pgm_read_dword(addr) -#define pgm_read_float_near(addr) pgm_read_float(addr) -#define pgm_read_ptr_near(addr) pgm_read_ptr(addr) - -#define pgm_read_byte_far(addr) pgm_read_byte(addr) -#define pgm_read_word_far(addr) pgm_read_word(addr) -#define pgm_read_dword_far(addr) pgm_read_dword(addr) -#define pgm_read_float_far(addr) pgm_read_float(addr) -#define pgm_read_ptr_far(addr) pgm_read_ptr(addr) - -#define pgm_get_far_address(addr) (&(addr)) - -#endif /* __PGMSPACE_H_ */ diff --git a/cores/binary.h b/cores/binary.h deleted file mode 100644 index 07dacad3..00000000 --- a/cores/binary.h +++ /dev/null @@ -1,536 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef Binary_h -#define Binary_h - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define B0 0 -#define B00 0 -#define B000 0 -#define B0000 0 -#define B00000 0 -#define B000000 0 -#define B0000000 0 -#define B00000000 0 -#define B1 1 -#define B01 1 -#define B001 1 -#define B0001 1 -#define B00001 1 -#define B000001 1 -#define B0000001 1 -#define B00000001 1 -#define B10 2 -#define B010 2 -#define B0010 2 -#define B00010 2 -#define B000010 2 -#define B0000010 2 -#define B00000010 2 -#define B11 3 -#define B011 3 -#define B0011 3 -#define B00011 3 -#define B000011 3 -#define B0000011 3 -#define B00000011 3 -#define B100 4 -#define B0100 4 -#define B00100 4 -#define B000100 4 -#define B0000100 4 -#define B00000100 4 -#define B101 5 -#define B0101 5 -#define B00101 5 -#define B000101 5 -#define B0000101 5 -#define B00000101 5 -#define B110 6 -#define B0110 6 -#define B00110 6 -#define B000110 6 -#define B0000110 6 -#define B00000110 6 -#define B111 7 -#define B0111 7 -#define B00111 7 -#define B000111 7 -#define B0000111 7 -#define B00000111 7 -#define B1000 8 -#define B01000 8 -#define B001000 8 -#define B0001000 8 -#define B00001000 8 -#define B1001 9 -#define B01001 9 -#define B001001 9 -#define B0001001 9 -#define B00001001 9 -#define B1010 10 -#define B01010 10 -#define B001010 10 -#define B0001010 10 -#define B00001010 10 -#define B1011 11 -#define B01011 11 -#define B001011 11 -#define B0001011 11 -#define B00001011 11 -#define B1100 12 -#define B01100 12 -#define B001100 12 -#define B0001100 12 -#define B00001100 12 -#define B1101 13 -#define B01101 13 -#define B001101 13 -#define B0001101 13 -#define B00001101 13 -#define B1110 14 -#define B01110 14 -#define B001110 14 -#define B0001110 14 -#define B00001110 14 -#define B1111 15 -#define B01111 15 -#define B001111 15 -#define B0001111 15 -#define B00001111 15 -#define B10000 16 -#define B010000 16 -#define B0010000 16 -#define B00010000 16 -#define B10001 17 -#define B010001 17 -#define B0010001 17 -#define B00010001 17 -#define B10010 18 -#define B010010 18 -#define B0010010 18 -#define B00010010 18 -#define B10011 19 -#define B010011 19 -#define B0010011 19 -#define B00010011 19 -#define B10100 20 -#define B010100 20 -#define B0010100 20 -#define B00010100 20 -#define B10101 21 -#define B010101 21 -#define B0010101 21 -#define B00010101 21 -#define B10110 22 -#define B010110 22 -#define B0010110 22 -#define B00010110 22 -#define B10111 23 -#define B010111 23 -#define B0010111 23 -#define B00010111 23 -#define B11000 24 -#define B011000 24 -#define B0011000 24 -#define B00011000 24 -#define B11001 25 -#define B011001 25 -#define B0011001 25 -#define B00011001 25 -#define B11010 26 -#define B011010 26 -#define B0011010 26 -#define B00011010 26 -#define B11011 27 -#define B011011 27 -#define B0011011 27 -#define B00011011 27 -#define B11100 28 -#define B011100 28 -#define B0011100 28 -#define B00011100 28 -#define B11101 29 -#define B011101 29 -#define B0011101 29 -#define B00011101 29 -#define B11110 30 -#define B011110 30 -#define B0011110 30 -#define B00011110 30 -#define B11111 31 -#define B011111 31 -#define B0011111 31 -#define B00011111 31 -#define B100000 32 -#define B0100000 32 -#define B00100000 32 -#define B100001 33 -#define B0100001 33 -#define B00100001 33 -#define B100010 34 -#define B0100010 34 -#define B00100010 34 -#define B100011 35 -#define B0100011 35 -#define B00100011 35 -#define B100100 36 -#define B0100100 36 -#define B00100100 36 -#define B100101 37 -#define B0100101 37 -#define B00100101 37 -#define B100110 38 -#define B0100110 38 -#define B00100110 38 -#define B100111 39 -#define B0100111 39 -#define B00100111 39 -#define B101000 40 -#define B0101000 40 -#define B00101000 40 -#define B101001 41 -#define B0101001 41 -#define B00101001 41 -#define B101010 42 -#define B0101010 42 -#define B00101010 42 -#define B101011 43 -#define B0101011 43 -#define B00101011 43 -#define B101100 44 -#define B0101100 44 -#define B00101100 44 -#define B101101 45 -#define B0101101 45 -#define B00101101 45 -#define B101110 46 -#define B0101110 46 -#define B00101110 46 -#define B101111 47 -#define B0101111 47 -#define B00101111 47 -#define B110000 48 -#define B0110000 48 -#define B00110000 48 -#define B110001 49 -#define B0110001 49 -#define B00110001 49 -#define B110010 50 -#define B0110010 50 -#define B00110010 50 -#define B110011 51 -#define B0110011 51 -#define B00110011 51 -#define B110100 52 -#define B0110100 52 -#define B00110100 52 -#define B110101 53 -#define B0110101 53 -#define B00110101 53 -#define B110110 54 -#define B0110110 54 -#define B00110110 54 -#define B110111 55 -#define B0110111 55 -#define B00110111 55 -#define B111000 56 -#define B0111000 56 -#define B00111000 56 -#define B111001 57 -#define B0111001 57 -#define B00111001 57 -#define B111010 58 -#define B0111010 58 -#define B00111010 58 -#define B111011 59 -#define B0111011 59 -#define B00111011 59 -#define B111100 60 -#define B0111100 60 -#define B00111100 60 -#define B111101 61 -#define B0111101 61 -#define B00111101 61 -#define B111110 62 -#define B0111110 62 -#define B00111110 62 -#define B111111 63 -#define B0111111 63 -#define B00111111 63 -#define B1000000 64 -#define B01000000 64 -#define B1000001 65 -#define B01000001 65 -#define B1000010 66 -#define B01000010 66 -#define B1000011 67 -#define B01000011 67 -#define B1000100 68 -#define B01000100 68 -#define B1000101 69 -#define B01000101 69 -#define B1000110 70 -#define B01000110 70 -#define B1000111 71 -#define B01000111 71 -#define B1001000 72 -#define B01001000 72 -#define B1001001 73 -#define B01001001 73 -#define B1001010 74 -#define B01001010 74 -#define B1001011 75 -#define B01001011 75 -#define B1001100 76 -#define B01001100 76 -#define B1001101 77 -#define B01001101 77 -#define B1001110 78 -#define B01001110 78 -#define B1001111 79 -#define B01001111 79 -#define B1010000 80 -#define B01010000 80 -#define B1010001 81 -#define B01010001 81 -#define B1010010 82 -#define B01010010 82 -#define B1010011 83 -#define B01010011 83 -#define B1010100 84 -#define B01010100 84 -#define B1010101 85 -#define B01010101 85 -#define B1010110 86 -#define B01010110 86 -#define B1010111 87 -#define B01010111 87 -#define B1011000 88 -#define B01011000 88 -#define B1011001 89 -#define B01011001 89 -#define B1011010 90 -#define B01011010 90 -#define B1011011 91 -#define B01011011 91 -#define B1011100 92 -#define B01011100 92 -#define B1011101 93 -#define B01011101 93 -#define B1011110 94 -#define B01011110 94 -#define B1011111 95 -#define B01011111 95 -#define B1100000 96 -#define B01100000 96 -#define B1100001 97 -#define B01100001 97 -#define B1100010 98 -#define B01100010 98 -#define B1100011 99 -#define B01100011 99 -#define B1100100 100 -#define B01100100 100 -#define B1100101 101 -#define B01100101 101 -#define B1100110 102 -#define B01100110 102 -#define B1100111 103 -#define B01100111 103 -#define B1101000 104 -#define B01101000 104 -#define B1101001 105 -#define B01101001 105 -#define B1101010 106 -#define B01101010 106 -#define B1101011 107 -#define B01101011 107 -#define B1101100 108 -#define B01101100 108 -#define B1101101 109 -#define B01101101 109 -#define B1101110 110 -#define B01101110 110 -#define B1101111 111 -#define B01101111 111 -#define B1110000 112 -#define B01110000 112 -#define B1110001 113 -#define B01110001 113 -#define B1110010 114 -#define B01110010 114 -#define B1110011 115 -#define B01110011 115 -#define B1110100 116 -#define B01110100 116 -#define B1110101 117 -#define B01110101 117 -#define B1110110 118 -#define B01110110 118 -#define B1110111 119 -#define B01110111 119 -#define B1111000 120 -#define B01111000 120 -#define B1111001 121 -#define B01111001 121 -#define B1111010 122 -#define B01111010 122 -#define B1111011 123 -#define B01111011 123 -#define B1111100 124 -#define B01111100 124 -#define B1111101 125 -#define B01111101 125 -#define B1111110 126 -#define B01111110 126 -#define B1111111 127 -#define B01111111 127 -#define B10000000 128 -#define B10000001 129 -#define B10000010 130 -#define B10000011 131 -#define B10000100 132 -#define B10000101 133 -#define B10000110 134 -#define B10000111 135 -#define B10001000 136 -#define B10001001 137 -#define B10001010 138 -#define B10001011 139 -#define B10001100 140 -#define B10001101 141 -#define B10001110 142 -#define B10001111 143 -#define B10010000 144 -#define B10010001 145 -#define B10010010 146 -#define B10010011 147 -#define B10010100 148 -#define B10010101 149 -#define B10010110 150 -#define B10010111 151 -#define B10011000 152 -#define B10011001 153 -#define B10011010 154 -#define B10011011 155 -#define B10011100 156 -#define B10011101 157 -#define B10011110 158 -#define B10011111 159 -#define B10100000 160 -#define B10100001 161 -#define B10100010 162 -#define B10100011 163 -#define B10100100 164 -#define B10100101 165 -#define B10100110 166 -#define B10100111 167 -#define B10101000 168 -#define B10101001 169 -#define B10101010 170 -#define B10101011 171 -#define B10101100 172 -#define B10101101 173 -#define B10101110 174 -#define B10101111 175 -#define B10110000 176 -#define B10110001 177 -#define B10110010 178 -#define B10110011 179 -#define B10110100 180 -#define B10110101 181 -#define B10110110 182 -#define B10110111 183 -#define B10111000 184 -#define B10111001 185 -#define B10111010 186 -#define B10111011 187 -#define B10111100 188 -#define B10111101 189 -#define B10111110 190 -#define B10111111 191 -#define B11000000 192 -#define B11000001 193 -#define B11000010 194 -#define B11000011 195 -#define B11000100 196 -#define B11000101 197 -#define B11000110 198 -#define B11000111 199 -#define B11001000 200 -#define B11001001 201 -#define B11001010 202 -#define B11001011 203 -#define B11001100 204 -#define B11001101 205 -#define B11001110 206 -#define B11001111 207 -#define B11010000 208 -#define B11010001 209 -#define B11010010 210 -#define B11010011 211 -#define B11010100 212 -#define B11010101 213 -#define B11010110 214 -#define B11010111 215 -#define B11011000 216 -#define B11011001 217 -#define B11011010 218 -#define B11011011 219 -#define B11011100 220 -#define B11011101 221 -#define B11011110 222 -#define B11011111 223 -#define B11100000 224 -#define B11100001 225 -#define B11100010 226 -#define B11100011 227 -#define B11100100 228 -#define B11100101 229 -#define B11100110 230 -#define B11100111 231 -#define B11101000 232 -#define B11101001 233 -#define B11101010 234 -#define B11101011 235 -#define B11101100 236 -#define B11101101 237 -#define B11101110 238 -#define B11101111 239 -#define B11110000 240 -#define B11110001 241 -#define B11110010 242 -#define B11110011 243 -#define B11110100 244 -#define B11110101 245 -#define B11110110 246 -#define B11110111 247 -#define B11111000 248 -#define B11111001 249 -#define B11111010 250 -#define B11111011 251 -#define B11111100 252 -#define B11111101 253 -#define B11111110 254 -#define B11111111 255 - -#endif /* Binary_h */ diff --git a/cores/hooks.c b/cores/hooks.c deleted file mode 100644 index 3fd476f1..00000000 --- a/cores/hooks.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - Copyright (c) 2012 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -/** - * Empty yield() hook. - * - * This function is intended to be used by library writers to build - * libraries or sketches that supports cooperative threads. - * - * Its defined as a weak symbol and it can be redefined to implement a - * real cooperative scheduler. - */ -static void __empty() { - // Empty -} - -void yield(void) __attribute__((weak, alias("__empty"))); diff --git a/cores/itoa.c b/cores/itoa.c deleted file mode 100644 index d0698dcb..00000000 --- a/cores/itoa.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "itoa.h" -#include - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -#if 0 - /* reverse: reverse string s in place */ - static void reverse( char s[] ) - { - int i, j ; - char c ; - - for ( i = 0, j = strlen(s) - 1 ; i < j ; i++, j-- ) - { - c = s[i] ; - s[i] = s[j] ; - s[j] = c ; - } - } - - /* itoa: convert n to characters in s */ - extern void itoa( int n, char s[] ) - { - int i, sign ; - - if ( (sign = n) < 0 ) /* record sign */ - { - n = -n; /* make n positive */ - } - - i = 0; - do - { - /* generate digits in reverse order */ - s[i++] = n % 10 + '0'; /* get next digit */ - } - while ((n /= 10) > 0) ; /* delete it */ - - if (sign < 0 ) - { - s[i++] = '-'; - } - - s[i] = '\0'; - - reverse( s ) ; - } - -#else - -extern char *itoa(int value, char *string, int radix) { return ltoa(value, string, radix); } - -extern char *ltoa(long value, char *string, int radix) { - char tmp[33]; - char *tp = tmp; - long i; - unsigned long v; - int sign; - char *sp; - - if (string == NULL) { - return 0; - } - - if (radix > 36 || radix <= 1) { - return 0; - } - - sign = (radix == 10 && value < 0); - if (sign) { - v = -value; - } else { - v = (unsigned long)value; - } - - while (v || tp == tmp) { - i = v % radix; - v = v / radix; - if (i < 10) { - *tp++ = i + '0'; - } else { - *tp++ = i + 'a' - 10; - } - } - - sp = string; - - if (sign) { - *sp++ = '-'; - } - while (tp > tmp) { - *sp++ = *--tp; - } - *sp = 0; - - return string; -} - -extern char *utoa(unsigned int value, char *string, int radix) { - return ultoa(value, string, radix); -} - -extern char *ultoa(unsigned long value, char *string, int radix) { - char tmp[33]; - char *tp = tmp; - long i; - unsigned long v = value; - char *sp; - - if (string == NULL) { - return 0; - } - - if (radix > 36 || radix <= 1) { - return 0; - } - - while (v || tp == tmp) { - i = v % radix; - v = v / radix; - if (i < 10) { - *tp++ = i + '0'; - } else { - *tp++ = i + 'a' - 10; - } - } - - sp = string; - - while (tp > tmp) { - *sp++ = *--tp; - } - *sp = 0; - - return string; -} -#endif /* 0 */ - -#ifdef __cplusplus -} // extern "C" -#endif // __cplusplus - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/itoa.h b/cores/itoa.h deleted file mode 100644 index 0a065793..00000000 --- a/cores/itoa.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef _ITOA_ -#define _ITOA_ - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -#if 0 - - extern void itoa( int n, char s[] ) ; - -#else - -extern char *itoa(int value, char *string, int radix); -extern char *ltoa(long value, char *string, int radix); -extern char *utoa(unsigned int value, char *string, int radix); -extern char *ultoa(unsigned long value, char *string, int radix); -#endif /* 0 */ - -#ifdef __cplusplus -} // extern "C" -#endif // __cplusplus - -#endif // _ITOA_ diff --git a/cores/new.cpp b/cores/new.cpp deleted file mode 100644 index 969e0294..00000000 --- a/cores/new.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -void *operator new(size_t size) { return malloc(size); } - -void *operator new[](size_t size) { return malloc(size); } - -void operator delete(void *ptr) { free(ptr); } - -void operator delete[](void *ptr) { free(ptr); } - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/reset.c b/cores/reset.c deleted file mode 100644 index 4539fc17..00000000 --- a/cores/reset.c +++ /dev/null @@ -1,70 +0,0 @@ -/** - * reset.c - Handling the reset for the XMC1100 Boot Kit. - * - * Have a look at the application note/reference manual for more information. - * - * Copyright (c) 2018 Infineon Technologies AG - * - * Redistribution and use in source and binary forms, with or without modification, are permitted - * provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of conditions - * and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions - * and the following disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the copyright holders nor the names of its contributors may be used to - * endorse or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - */ -#include -#ifdef HAS_GPIO_RESET - #include - #include - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -void ERU0_0_IRQHandler(void) { - XMC_SCU_RESET_ClearDeviceResetReason(); - XMC_SCU_RESET_AssertMasterReset(); -} - -void reset_init(void) { - // Configuring the generation of the reset event - static XMC_ERU_ETL_CONFIG_t reset_event_generator_config; - reset_event_generator_config.enable_output_trigger = true; - reset_event_generator_config.status_flag_mode = XMC_ERU_ETL_STATUS_FLAG_MODE_HWCTRL; - reset_event_generator_config.edge_detection = XMC_ERU_ETL_EDGE_DETECTION_FALLING; - reset_event_generator_config.output_trigger_channel = XMC_ERU_ETL_OUTPUT_TRIGGER_CHANNEL0; - reset_event_generator_config.source = XMC_ERU_ETL_SOURCE_A; - reset_event_generator_config.input = ERU0_ETL0_INPUTA_P2_4; - // Configuring the detection of the reset event - static XMC_ERU_OGU_CONFIG_t reset_event_detection_config; - reset_event_detection_config.service_request = XMC_ERU_OGU_SERVICE_REQUEST_ON_TRIGGER; - - XMC_ERU_ETL_Init(ERU0_ETL0, &reset_event_generator_config); - XMC_ERU_OGU_Init(ERU0_OGU0, &reset_event_detection_config); - - XMC_GPIO_CONFIG_t config_reset; - config_reset.mode = XMC_GPIO_MODE_INPUT_PULL_UP; - // Set large threshold for improved noise immunity on reset pin - config_reset.input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_LARGE; - XMC_GPIO_Init(P2_4, &config_reset); - - NVIC_SetPriority(ERU0_0_IRQn, 3U); - NVIC_EnableIRQ(ERU0_0_IRQn); -} -#endif diff --git a/cores/reset.h b/cores/reset.h deleted file mode 100644 index 030f7f25..00000000 --- a/cores/reset.h +++ /dev/null @@ -1,44 +0,0 @@ -/** - * reset.h - Handling the reset for the XMC1100 Boot Kit. - * - * Have a look at the application note/reference manual for more information. - * - * Copyright (c) 2018 Infineon Technologies AG - * - * Redistribution and use in source and binary forms, with or without modification, are permitted - * provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of conditions - * and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions - * and the following disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the copyright holders nor the names of its contributors may be used to - * endorse or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - */ - -#ifndef Reset_h -#define Reset_h - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -/* - * \brief Configures the reset pin for the selected board. - */ -extern void reset_init(void); - -#endif diff --git a/cores/usblib/Class/CDCClass.h b/cores/usblib/Class/CDCClass.h deleted file mode 100644 index 3afbbdb9..00000000 --- a/cores/usblib/Class/CDCClass.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Master include file for the library USB CDC-ACM Class driver. - * - * Master include file for the library USB CDC Class driver, for both host and device modes, where available. - * - * This file should be included in all user projects making use of this optional class driver, instead of - * including any headers in the USB/ClassDriver/Device, USB/ClassDriver/Host or USB/ClassDriver/Common subdirectories. - */ - -/** \ingroup Group_USBClassDrivers - * \defgroup Group_USBClassCDC CDC-ACM (Virtual Serial) Class Driver - * \brief USB class driver for the USB-IF CDC-ACM (Virtual Serial) class standard. - * - * \section Sec_USBClassCDC_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - LUFA/Drivers/USB/Class/Device/CDCClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - LUFA/Drivers/USB/Class/Host/CDCClassHost.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - * \section Sec_USBClassCDC_ModDescription Module Description - * CDC Class Driver module. This module contains an internal implementation of the USB CDC-ACM class Virtual Serial - * Ports, for both Device and Host USB modes. User applications can use this class driver instead of implementing the - * CDC class manually via the low-level LUFA APIs. - * - * This module is designed to simplify the user code by exposing only the required interface needed to interface with - * Hosts or Devices using the USB CDC Class. - * - * @{ - */ - -#ifndef _CDC_CLASS_H_ -#define _CDC_CLASS_H_ -#if defined(USB0) - /* Macros: */ - #define __INCLUDE_FROM_USB_DRIVER - #define __INCLUDE_FROM_CDC_DRIVER - - /* Includes: */ - #include <../Core/USBMode.h> - - #if defined(USB_CAN_BE_DEVICE) - #include - #endif - - #if defined(USB_CAN_BE_HOST) - #include - #endif - -#endif -#endif -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Common/CDCClassCommon.h b/cores/usblib/Class/Common/CDCClassCommon.h deleted file mode 100644 index fc310c26..00000000 --- a/cores/usblib/Class/Common/CDCClassCommon.h +++ /dev/null @@ -1,395 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common definitions and declarations for the library USB CDC Class driver. - * - * Common definitions and declarations for the library USB CDC Class driver. - * - * \note This file should not be included directly. It is automatically included as needed by the USB module driver - * dispatch header located in LUFA/Drivers/USB.h. - */ - -/** \ingroup Group_USBClassCDC - * \defgroup Group_USBClassCDCCommon Common Class Definitions - * - * \section Sec_USBClassCDCCommon_ModDescription Module Description - * Constants, Types and Enum definitions that are common to both Device and Host modes for the USB - * CDC Class. - * - * @{ - */ - -#ifndef _CDC_CLASS_COMMON_H_ -#define _CDC_CLASS_COMMON_H_ - - /* Includes: */ - #include <../../Core/StdDescriptors.h> - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_CDC_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. - #endif - - /* Macros: */ - /** \name Virtual Control Line Masks */ - //@{ - /** Mask for the DTR handshake line for use with the \ref CDC_REQ_SetControlLineState class-specific request - * from the host, to indicate that the DTR line state should be high. - */ - #define CDC_CONTROL_LINE_OUT_DTR (1 << 0) - - /** Mask for the RTS handshake line for use with the \ref CDC_REQ_SetControlLineState class-specific request - * from the host, to indicate that the RTS line state should be high. - */ - #define CDC_CONTROL_LINE_OUT_RTS (1 << 1) - - /** Mask for the DCD handshake line for use with the \ref CDC_NOTIF_SerialState class-specific notification - * from the device to the host, to indicate that the DCD line state is currently high. - */ - #define CDC_CONTROL_LINE_IN_DCD (1 << 0) - - /** Mask for the DSR handshake line for use with the \ref CDC_NOTIF_SerialState class-specific notification - * from the device to the host, to indicate that the DSR line state is currently high. - */ - #define CDC_CONTROL_LINE_IN_DSR (1 << 1) - - /** Mask for the BREAK handshake line for use with the \ref CDC_NOTIF_SerialState class-specific notification - * from the device to the host, to indicate that the BREAK line state is currently high. - */ - #define CDC_CONTROL_LINE_IN_BREAK (1 << 2) - - /** Mask for the RING handshake line for use with the \ref CDC_NOTIF_SerialState class-specific notification - * from the device to the host, to indicate that the RING line state is currently high. - */ - #define CDC_CONTROL_LINE_IN_RING (1 << 3) - - /** Mask for use with the \ref CDC_NOTIF_SerialState class-specific notification from the device to the host, - * to indicate that a framing error has occurred on the virtual serial port. - */ - #define CDC_CONTROL_LINE_IN_FRAMEERROR (1 << 4) - - /** Mask for use with the \ref CDC_NOTIF_SerialState class-specific notification from the device to the host, - * to indicate that a parity error has occurred on the virtual serial port. - */ - #define CDC_CONTROL_LINE_IN_PARITYERROR (1 << 5) - - /** Mask for use with the \ref CDC_NOTIF_SerialState class-specific notification from the device to the host, - * to indicate that a data overrun error has occurred on the virtual serial port. - */ - #define CDC_CONTROL_LINE_IN_OVERRUNERROR (1 << 6) - //@} - - /** Macro to define a CDC class-specific functional descriptor. CDC functional descriptors have a - * uniform structure but variable sized data payloads, thus cannot be represented accurately by - * a single \c typedef \c struct. A macro is used instead so that functional descriptors can be created - * easily by specifying the size of the payload. This allows \c sizeof() to work correctly. - * - * \param[in] DataSize Size in bytes of the CDC functional descriptor's data payload. - */ - #define CDC_FUNCTIONAL_DESCRIPTOR(DataSize) \ - struct \ - { \ - USB_Descriptor_Header_t Header; \ - uint8_t SubType; \ - uint8_t Data[DataSize]; \ - } - - /* Enums: */ - /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the CDC - * device class. - */ - enum CDC_Descriptor_ClassSubclassProtocol_t - { - CDC_CSCP_CDCClass = 0x02, /**< Descriptor Class value indicating that the device or interface - * belongs to the CDC class. - */ - CDC_CSCP_NoSpecificSubclass = 0x00, /**< Descriptor Subclass value indicating that the device or interface - * belongs to no specific subclass of the CDC class. - */ - CDC_CSCP_ACMSubclass = 0x02, /**< Descriptor Subclass value indicating that the device or interface - * belongs to the Abstract Control Model CDC subclass. - */ - CDC_CSCP_ATCommandProtocol = 0x01, /**< Descriptor Protocol value indicating that the device or interface - * belongs to the AT Command protocol of the CDC class. - */ - CDC_CSCP_NoSpecificProtocol = 0x00, /**< Descriptor Protocol value indicating that the device or interface - * belongs to no specific protocol of the CDC class. - */ - CDC_CSCP_VendorSpecificProtocol = 0xFF, /**< Descriptor Protocol value indicating that the device or interface - * belongs to a vendor-specific protocol of the CDC class. - */ - CDC_CSCP_CDCDataClass = 0x0A, /**< Descriptor Class value indicating that the device or interface - * belongs to the CDC Data class. - */ - CDC_CSCP_NoDataSubclass = 0x00, /**< Descriptor Subclass value indicating that the device or interface - * belongs to no specific subclass of the CDC data class. - */ - CDC_CSCP_NoDataProtocol = 0x00, /**< Descriptor Protocol value indicating that the device or interface - * belongs to no specific protocol of the CDC data class. - */ - }; - - /** Enum for the CDC class specific control requests that can be issued by the USB bus host. */ - enum CDC_ClassRequests_t - { - CDC_REQ_SendEncapsulatedCommand = 0x00, /**< CDC class-specific request to send an encapsulated command to the device. */ - CDC_REQ_GetEncapsulatedResponse = 0x01, /**< CDC class-specific request to retrieve an encapsulated command response from the device. */ - CDC_REQ_SetLineEncoding = 0x20, /**< CDC class-specific request to set the current virtual serial port configuration settings. */ - CDC_REQ_GetLineEncoding = 0x21, /**< CDC class-specific request to get the current virtual serial port configuration settings. */ - CDC_REQ_SetControlLineState = 0x22, /**< CDC class-specific request to set the current virtual serial port handshake line states. */ - CDC_REQ_SendBreak = 0x23, /**< CDC class-specific request to send a break to the receiver via the carrier channel. */ - }; - - /** Enum for the CDC class specific notification requests that can be issued by a CDC device to a host. */ - enum CDC_ClassNotifications_t - { - CDC_NOTIF_SerialState = 0x20, /**< Notification type constant for a change in the virtual serial port - * handshake line states, for use with a \ref USB_Request_Header_t - * notification structure when sent to the host via the CDC notification - * endpoint. - */ - }; - - /** Enum for the CDC class specific interface descriptor subtypes. */ - enum CDC_DescriptorSubtypes_t - { - CDC_DSUBTYPE_CSInterface_Header = 0x00, /**< CDC class-specific Header functional descriptor. */ - CDC_DSUBTYPE_CSInterface_CallManagement = 0x01, /**< CDC class-specific Call Management functional descriptor. */ - CDC_DSUBTYPE_CSInterface_ACM = 0x02, /**< CDC class-specific Abstract Control Model functional descriptor. */ - CDC_DSUBTYPE_CSInterface_DirectLine = 0x03, /**< CDC class-specific Direct Line functional descriptor. */ - CDC_DSUBTYPE_CSInterface_TelephoneRinger = 0x04, /**< CDC class-specific Telephone Ringer functional descriptor. */ - CDC_DSUBTYPE_CSInterface_TelephoneCall = 0x05, /**< CDC class-specific Telephone Call functional descriptor. */ - CDC_DSUBTYPE_CSInterface_Union = 0x06, /**< CDC class-specific Union functional descriptor. */ - CDC_DSUBTYPE_CSInterface_CountrySelection = 0x07, /**< CDC class-specific Country Selection functional descriptor. */ - CDC_DSUBTYPE_CSInterface_TelephoneOpModes = 0x08, /**< CDC class-specific Telephone Operation Modes functional descriptor. */ - CDC_DSUBTYPE_CSInterface_USBTerminal = 0x09, /**< CDC class-specific USB Terminal functional descriptor. */ - CDC_DSUBTYPE_CSInterface_NetworkChannel = 0x0A, /**< CDC class-specific Network Channel functional descriptor. */ - CDC_DSUBTYPE_CSInterface_ProtocolUnit = 0x0B, /**< CDC class-specific Protocol Unit functional descriptor. */ - CDC_DSUBTYPE_CSInterface_ExtensionUnit = 0x0C, /**< CDC class-specific Extension Unit functional descriptor. */ - CDC_DSUBTYPE_CSInterface_MultiChannel = 0x0D, /**< CDC class-specific Multi-Channel Management functional descriptor. */ - CDC_DSUBTYPE_CSInterface_CAPI = 0x0E, /**< CDC class-specific Common ISDN API functional descriptor. */ - CDC_DSUBTYPE_CSInterface_Ethernet = 0x0F, /**< CDC class-specific Ethernet functional descriptor. */ - CDC_DSUBTYPE_CSInterface_ATM = 0x10, /**< CDC class-specific Asynchronous Transfer Mode functional descriptor. */ - }; - - /** Enum for the possible line encoding formats of a virtual serial port. */ - enum CDC_LineEncodingFormats_t - { - CDC_LINEENCODING_OneStopBit = 0, /**< Each frame contains one stop bit. */ - CDC_LINEENCODING_OneAndAHalfStopBits = 1, /**< Each frame contains one and a half stop bits. */ - CDC_LINEENCODING_TwoStopBits = 2, /**< Each frame contains two stop bits. */ - }; - - /** Enum for the possible line encoding parity settings of a virtual serial port. */ - enum CDC_LineEncodingParity_t - { - CDC_PARITY_None = 0, /**< No parity bit mode on each frame. */ - CDC_PARITY_Odd = 1, /**< Odd parity bit mode on each frame. */ - CDC_PARITY_Even = 2, /**< Even parity bit mode on each frame. */ - CDC_PARITY_Mark = 3, /**< Mark parity bit mode on each frame. */ - CDC_PARITY_Space = 4, /**< Space parity bit mode on each frame. */ - }; - - /* Type Defines: */ - /** \brief CDC class-specific Functional Header Descriptor (LUFA naming conventions). - * - * Type define for a CDC class-specific functional header descriptor. This indicates to the host that the device - * contains one or more CDC functional data descriptors, which give the CDC interface's capabilities and configuration. - * See the CDC class specification for more details. - * - * \see \ref USB_CDC_StdDescriptor_FunctionalHeader_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ - uint8_t Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors, - * must be \ref CDC_DSUBTYPE_CSInterface_Header. - */ - uint16_t CDCSpecification; /**< Version number of the CDC specification implemented by the device, - * encoded in BCD format. - * - * \see \ref VERSION_BCD() utility macro. - */ - } ATTR_PACKED USB_CDC_Descriptor_FunctionalHeader_t; - - /** \brief CDC class-specific Functional Header Descriptor (USB-IF naming conventions). - * - * Type define for a CDC class-specific functional header descriptor. This indicates to the host that the device - * contains one or more CDC functional data descriptors, which give the CDC interface's capabilities and configuration. - * See the CDC class specification for more details. - * - * \see \ref USB_CDC_Descriptor_FunctionalHeader_t for the version of this type with non-standard LUFA specific - * element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bFunctionLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - uint8_t bDescriptorSubType; /**< Sub type value used to distinguish between CDC class-specific descriptors, - * must be \ref CDC_DSUBTYPE_CSInterface_Header. - */ - uint16_t bcdCDC; /**< Version number of the CDC specification implemented by the device, encoded in BCD format. - * - * \see \ref VERSION_BCD() utility macro. - */ - } ATTR_PACKED USB_CDC_StdDescriptor_FunctionalHeader_t; - - /** \brief CDC class-specific Functional ACM Descriptor (LUFA naming conventions). - * - * Type define for a CDC class-specific functional ACM descriptor. This indicates to the host that the CDC interface - * supports the CDC ACM subclass of the CDC specification. See the CDC class specification for more details. - * - * \see \ref USB_CDC_StdDescriptor_FunctionalACM_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ - uint8_t Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors, - * must be \ref CDC_DSUBTYPE_CSInterface_ACM. - */ - uint8_t Capabilities; /**< Capabilities of the ACM interface, given as a bit mask. For most devices, - * this should be set to a fixed value of \c 0x06 - for other capabilities, refer - * to the CDC ACM specification. - */ - } ATTR_PACKED USB_CDC_Descriptor_FunctionalACM_t; - - /** \brief CDC class-specific Functional ACM Descriptor (USB-IF naming conventions). - * - * Type define for a CDC class-specific functional ACM descriptor. This indicates to the host that the CDC interface - * supports the CDC ACM subclass of the CDC specification. See the CDC class specification for more details. - * - * \see \ref USB_CDC_Descriptor_FunctionalACM_t for the version of this type with non-standard LUFA specific - * element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bFunctionLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - uint8_t bDescriptorSubType; /**< Sub type value used to distinguish between CDC class-specific descriptors, - * must be \ref CDC_DSUBTYPE_CSInterface_ACM. - */ - uint8_t bmCapabilities; /**< Capabilities of the ACM interface, given as a bit mask. For most devices, - * this should be set to a fixed value of 0x06 - for other capabilities, refer - * to the CDC ACM specification. - */ - } ATTR_PACKED USB_CDC_StdDescriptor_FunctionalACM_t; - - /** \brief CDC class-specific Functional Union Descriptor (LUFA naming conventions). - * - * Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific - * CDC control and data interfaces are related. See the CDC class specification for more details. - * - * \see \ref USB_CDC_StdDescriptor_FunctionalUnion_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ - uint8_t Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors, - * must be \ref CDC_DSUBTYPE_CSInterface_Union. - */ - uint8_t MasterInterfaceNumber; /**< Interface number of the CDC Control interface. */ - uint8_t SlaveInterfaceNumber; /**< Interface number of the CDC Data interface. */ - } ATTR_PACKED USB_CDC_Descriptor_FunctionalUnion_t; - - /** \brief CDC class-specific Functional Union Descriptor (USB-IF naming conventions). - * - * Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific - * CDC control and data interfaces are related. See the CDC class specification for more details. - * - * \see \ref USB_CDC_Descriptor_FunctionalUnion_t for the version of this type with non-standard LUFA specific - * element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bFunctionLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - uint8_t bDescriptorSubType; /**< Sub type value used to distinguish between CDC class-specific descriptors, - * must be \ref CDC_DSUBTYPE_CSInterface_Union. - */ - uint8_t bMasterInterface; /**< Interface number of the CDC Control interface. */ - uint8_t bSlaveInterface0; /**< Interface number of the CDC Data interface. */ - } ATTR_PACKED USB_CDC_StdDescriptor_FunctionalUnion_t; - - /** \brief CDC Virtual Serial Port Line Encoding Settings Structure. - * - * Type define for a CDC Line Encoding structure, used to hold the various encoding parameters for a virtual - * serial port. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second. */ - uint8_t CharFormat; /**< Character format of the virtual serial port, a value from the - * \ref CDC_LineEncodingFormats_t enum. - */ - uint8_t ParityType; /**< Parity setting of the virtual serial port, a value from the - * \ref CDC_LineEncodingParity_t enum. - */ - uint8_t DataBits; /**< Bits of data per character of the virtual serial port. */ - } ATTR_PACKED CDC_LineEncoding_t; - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Common/HIDClassCommon.h b/cores/usblib/Class/Common/HIDClassCommon.h deleted file mode 100644 index 45cf2368..00000000 --- a/cores/usblib/Class/Common/HIDClassCommon.h +++ /dev/null @@ -1,686 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common definitions and declarations for the library USB HID Class driver. - * - * Common definitions and declarations for the library USB HID Class driver. - * - * \note This file should not be included directly. It is automatically included as needed by the USB module driver - * dispatch header located in LUFA/Drivers/USB.h. - */ - -/** \ingroup Group_USBClassHID - * \defgroup Group_USBClassHIDCommon Common Class Definitions - * - * \section Sec_USBClassHIDCommon_ModDescription Module Description - * Constants, Types and Enum definitions that are common to both Device and Host modes for the USB - * HID Class. - * - * @{ - */ - -#ifndef _HID_CLASS_COMMON_H_ -#define _HID_CLASS_COMMON_H_ - - /* Includes: */ - #include <../../Core/StdDescriptors.h> - #include "HIDParser.h" - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_HID_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. - #endif - - /* Macros: */ - /** \name Keyboard Standard Report Modifier Masks */ - //@{ - /** Constant for a keyboard report modifier byte, indicating that the keyboard's left control key is currently pressed. */ - #define HID_KEYBOARD_MODIFIER_LEFTCTRL (1 << 0) - - /** Constant for a keyboard report modifier byte, indicating that the keyboard's left shift key is currently pressed. */ - #define HID_KEYBOARD_MODIFIER_LEFTSHIFT (1 << 1) - - /** Constant for a keyboard report modifier byte, indicating that the keyboard's left alt key is currently pressed. */ - #define HID_KEYBOARD_MODIFIER_LEFTALT (1 << 2) - - /** Constant for a keyboard report modifier byte, indicating that the keyboard's left GUI key is currently pressed. */ - #define HID_KEYBOARD_MODIFIER_LEFTGUI (1 << 3) - - /** Constant for a keyboard report modifier byte, indicating that the keyboard's right control key is currently pressed. */ - #define HID_KEYBOARD_MODIFIER_RIGHTCTRL (1 << 4) - - /** Constant for a keyboard report modifier byte, indicating that the keyboard's right shift key is currently pressed. */ - #define HID_KEYBOARD_MODIFIER_RIGHTSHIFT (1 << 5) - - /** Constant for a keyboard report modifier byte, indicating that the keyboard's right alt key is currently pressed. */ - #define HID_KEYBOARD_MODIFIER_RIGHTALT (1 << 6) - - /** Constant for a keyboard report modifier byte, indicating that the keyboard's right GUI key is currently pressed. */ - #define HID_KEYBOARD_MODIFIER_RIGHTGUI (1 << 7) - //@} - - /** \name Keyboard Standard Report LED Masks */ - //@{ - /** Constant for a keyboard output report LED byte, indicating that the host's NUM LOCK mode is currently set. */ - #define HID_KEYBOARD_LED_NUMLOCK (1 << 0) - - /** Constant for a keyboard output report LED byte, indicating that the host's CAPS LOCK mode is currently set. */ - #define HID_KEYBOARD_LED_CAPSLOCK (1 << 1) - - /** Constant for a keyboard output report LED byte, indicating that the host's SCROLL LOCK mode is currently set. */ - #define HID_KEYBOARD_LED_SCROLLLOCK (1 << 2) - - /** Constant for a keyboard output report LED byte, indicating that the host's COMPOSE mode is currently set. */ - #define HID_KEYBOARD_LED_COMPOSE (1 << 3) - - /** Constant for a keyboard output report LED byte, indicating that the host's KANA mode is currently set. */ - #define HID_KEYBOARD_LED_KANA (1 << 4) - //@} - - /** \name Keyboard Standard Report Key Scan-codes */ - //@{ - #define HID_KEYBOARD_SC_ERROR_ROLLOVER 0x01 - #define HID_KEYBOARD_SC_POST_FAIL 0x02 - #define HID_KEYBOARD_SC_ERROR_UNDEFINED 0x03 - #define HID_KEYBOARD_SC_A 0x04 - #define HID_KEYBOARD_SC_B 0x05 - #define HID_KEYBOARD_SC_C 0x06 - #define HID_KEYBOARD_SC_D 0x07 - #define HID_KEYBOARD_SC_E 0x08 - #define HID_KEYBOARD_SC_F 0x09 - #define HID_KEYBOARD_SC_G 0x0A - #define HID_KEYBOARD_SC_H 0x0B - #define HID_KEYBOARD_SC_I 0x0C - #define HID_KEYBOARD_SC_J 0x0D - #define HID_KEYBOARD_SC_K 0x0E - #define HID_KEYBOARD_SC_L 0x0F - #define HID_KEYBOARD_SC_M 0x10 - #define HID_KEYBOARD_SC_N 0x11 - #define HID_KEYBOARD_SC_O 0x12 - #define HID_KEYBOARD_SC_P 0x13 - #define HID_KEYBOARD_SC_Q 0x14 - #define HID_KEYBOARD_SC_R 0x15 - #define HID_KEYBOARD_SC_S 0x16 - #define HID_KEYBOARD_SC_T 0x17 - #define HID_KEYBOARD_SC_U 0x18 - #define HID_KEYBOARD_SC_V 0x19 - #define HID_KEYBOARD_SC_W 0x1A - #define HID_KEYBOARD_SC_X 0x1B - #define HID_KEYBOARD_SC_Y 0x1C - #define HID_KEYBOARD_SC_Z 0x1D - #define HID_KEYBOARD_SC_1_AND_EXCLAMATION 0x1E - #define HID_KEYBOARD_SC_2_AND_AT 0x1F - #define HID_KEYBOARD_SC_3_AND_HASHMARK 0x20 - #define HID_KEYBOARD_SC_4_AND_DOLLAR 0x21 - #define HID_KEYBOARD_SC_5_AND_PERCENTAGE 0x22 - #define HID_KEYBOARD_SC_6_AND_CARET 0x23 - #define HID_KEYBOARD_SC_7_AND_AMPERSAND 0x24 - #define HID_KEYBOARD_SC_8_AND_ASTERISK 0x25 - #define HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS 0x26 - #define HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS 0x27 - #define HID_KEYBOARD_SC_ENTER 0x28 - #define HID_KEYBOARD_SC_ESCAPE 0x29 - #define HID_KEYBOARD_SC_BACKSPACE 0x2A - #define HID_KEYBOARD_SC_TAB 0x2B - #define HID_KEYBOARD_SC_SPACE 0x2C - #define HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE 0x2D - #define HID_KEYBOARD_SC_EQUAL_AND_PLUS 0x2E - #define HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE 0x2F - #define HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE 0x30 - #define HID_KEYBOARD_SC_BACKSLASH_AND_PIPE 0x31 - #define HID_KEYBOARD_SC_NON_US_HASHMARK_AND_TILDE 0x32 - #define HID_KEYBOARD_SC_SEMICOLON_AND_COLON 0x33 - #define HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE 0x34 - #define HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE 0x35 - #define HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN 0x36 - #define HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN 0x37 - #define HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK 0x38 - #define HID_KEYBOARD_SC_CAPS_LOCK 0x39 - #define HID_KEYBOARD_SC_F1 0x3A - #define HID_KEYBOARD_SC_F2 0x3B - #define HID_KEYBOARD_SC_F3 0x3C - #define HID_KEYBOARD_SC_F4 0x3D - #define HID_KEYBOARD_SC_F5 0x3E - #define HID_KEYBOARD_SC_F6 0x3F - #define HID_KEYBOARD_SC_F7 0x40 - #define HID_KEYBOARD_SC_F8 0x41 - #define HID_KEYBOARD_SC_F9 0x42 - #define HID_KEYBOARD_SC_F10 0x43 - #define HID_KEYBOARD_SC_F11 0x44 - #define HID_KEYBOARD_SC_F12 0x45 - #define HID_KEYBOARD_SC_PRINT_SCREEN 0x46 - #define HID_KEYBOARD_SC_SCROLL_LOCK 0x47 - #define HID_KEYBOARD_SC_PAUSE 0x48 - #define HID_KEYBOARD_SC_INSERT 0x49 - #define HID_KEYBOARD_SC_HOME 0x4A - #define HID_KEYBOARD_SC_PAGE_UP 0x4B - #define HID_KEYBOARD_SC_DELETE 0x4C - #define HID_KEYBOARD_SC_END 0x4D - #define HID_KEYBOARD_SC_PAGE_DOWN 0x4E - #define HID_KEYBOARD_SC_RIGHT_ARROW 0x4F - #define HID_KEYBOARD_SC_LEFT_ARROW 0x50 - #define HID_KEYBOARD_SC_DOWN_ARROW 0x51 - #define HID_KEYBOARD_SC_UP_ARROW 0x52 - #define HID_KEYBOARD_SC_NUM_LOCK 0x53 - #define HID_KEYBOARD_SC_KEYPAD_SLASH 0x54 - #define HID_KEYBOARD_SC_KEYPAD_ASTERISK 0x55 - #define HID_KEYBOARD_SC_KEYPAD_MINUS 0x56 - #define HID_KEYBOARD_SC_KEYPAD_PLUS 0x57 - #define HID_KEYBOARD_SC_KEYPAD_ENTER 0x58 - #define HID_KEYBOARD_SC_KEYPAD_1_AND_END 0x59 - #define HID_KEYBOARD_SC_KEYPAD_2_AND_DOWN_ARROW 0x5A - #define HID_KEYBOARD_SC_KEYPAD_3_AND_PAGE_DOWN 0x5B - #define HID_KEYBOARD_SC_KEYPAD_4_AND_LEFT_ARROW 0x5C - #define HID_KEYBOARD_SC_KEYPAD_5 0x5D - #define HID_KEYBOARD_SC_KEYPAD_6_AND_RIGHT_ARROW 0x5E - #define HID_KEYBOARD_SC_KEYPAD_7_AND_HOME 0x5F - #define HID_KEYBOARD_SC_KEYPAD_8_AND_UP_ARROW 0x60 - #define HID_KEYBOARD_SC_KEYPAD_9_AND_PAGE_UP 0x61 - #define HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT 0x62 - #define HID_KEYBOARD_SC_KEYPAD_DOT_AND_DELETE 0x63 - #define HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE 0x64 - #define HID_KEYBOARD_SC_APPLICATION 0x65 - #define HID_KEYBOARD_SC_POWER 0x66 - #define HID_KEYBOARD_SC_KEYPAD_EQUAL_SIGN 0x67 - #define HID_KEYBOARD_SC_F13 0x68 - #define HID_KEYBOARD_SC_F14 0x69 - #define HID_KEYBOARD_SC_F15 0x6A - #define HID_KEYBOARD_SC_F16 0x6B - #define HID_KEYBOARD_SC_F17 0x6C - #define HID_KEYBOARD_SC_F18 0x6D - #define HID_KEYBOARD_SC_F19 0x6E - #define HID_KEYBOARD_SC_F20 0x6F - #define HID_KEYBOARD_SC_F21 0x70 - #define HID_KEYBOARD_SC_F22 0x71 - #define HID_KEYBOARD_SC_F23 0x72 - #define HID_KEYBOARD_SC_F24 0x73 - #define HID_KEYBOARD_SC_EXECUTE 0x74 - #define HID_KEYBOARD_SC_HELP 0x75 - #define HID_KEYBOARD_SC_MENU 0x76 - #define HID_KEYBOARD_SC_SELECT 0x77 - #define HID_KEYBOARD_SC_STOP 0x78 - #define HID_KEYBOARD_SC_AGAIN 0x79 - #define HID_KEYBOARD_SC_UNDO 0x7A - #define HID_KEYBOARD_SC_CUT 0x7B - #define HID_KEYBOARD_SC_COPY 0x7C - #define HID_KEYBOARD_SC_PASTE 0x7D - #define HID_KEYBOARD_SC_FIND 0x7E - #define HID_KEYBOARD_SC_MUTE 0x7F - #define HID_KEYBOARD_SC_VOLUME_UP 0x80 - #define HID_KEYBOARD_SC_VOLUME_DOWN 0x81 - #define HID_KEYBOARD_SC_LOCKING_CAPS_LOCK 0x82 - #define HID_KEYBOARD_SC_LOCKING_NUM_LOCK 0x83 - #define HID_KEYBOARD_SC_LOCKING_SCROLL_LOCK 0x84 - #define HID_KEYBOARD_SC_KEYPAD_COMMA 0x85 - #define HID_KEYBOARD_SC_KEYPAD_EQUAL_SIGN_AS400 0x86 - #define HID_KEYBOARD_SC_INTERNATIONAL1 0x87 - #define HID_KEYBOARD_SC_INTERNATIONAL2 0x88 - #define HID_KEYBOARD_SC_INTERNATIONAL3 0x89 - #define HID_KEYBOARD_SC_INTERNATIONAL4 0x8A - #define HID_KEYBOARD_SC_INTERNATIONAL5 0x8B - #define HID_KEYBOARD_SC_INTERNATIONAL6 0x8C - #define HID_KEYBOARD_SC_INTERNATIONAL7 0x8D - #define HID_KEYBOARD_SC_INTERNATIONAL8 0x8E - #define HID_KEYBOARD_SC_INTERNATIONAL9 0x8F - #define HID_KEYBOARD_SC_LANG1 0x90 - #define HID_KEYBOARD_SC_LANG2 0x91 - #define HID_KEYBOARD_SC_LANG3 0x92 - #define HID_KEYBOARD_SC_LANG4 0x93 - #define HID_KEYBOARD_SC_LANG5 0x94 - #define HID_KEYBOARD_SC_LANG6 0x95 - #define HID_KEYBOARD_SC_LANG7 0x96 - #define HID_KEYBOARD_SC_LANG8 0x97 - #define HID_KEYBOARD_SC_LANG9 0x98 - #define HID_KEYBOARD_SC_ALTERNATE_ERASE 0x99 - #define HID_KEYBOARD_SC_SYSREQ 0x9A - #define HID_KEYBOARD_SC_CANCEL 0x9B - #define HID_KEYBOARD_SC_CLEAR 0x9C - #define HID_KEYBOARD_SC_PRIOR 0x9D - #define HID_KEYBOARD_SC_RETURN 0x9E - #define HID_KEYBOARD_SC_SEPARATOR 0x9F - #define HID_KEYBOARD_SC_OUT 0xA0 - #define HID_KEYBOARD_SC_OPER 0xA1 - #define HID_KEYBOARD_SC_CLEAR_AND_AGAIN 0xA2 - #define HID_KEYBOARD_SC_CRSEL_AND_PROPS 0xA3 - #define HID_KEYBOARD_SC_EXSEL 0xA4 - #define HID_KEYBOARD_SC_KEYPAD_00 0xB0 - #define HID_KEYBOARD_SC_KEYPAD_000 0xB1 - #define HID_KEYBOARD_SC_THOUSANDS_SEPARATOR 0xB2 - #define HID_KEYBOARD_SC_DECIMAL_SEPARATOR 0xB3 - #define HID_KEYBOARD_SC_CURRENCY_UNIT 0xB4 - #define HID_KEYBOARD_SC_CURRENCY_SUB_UNIT 0xB5 - #define HID_KEYBOARD_SC_KEYPAD_OPENING_PARENTHESIS 0xB6 - #define HID_KEYBOARD_SC_KEYPAD_CLOSING_PARENTHESIS 0xB7 - #define HID_KEYBOARD_SC_KEYPAD_OPENING_BRACE 0xB8 - #define HID_KEYBOARD_SC_KEYPAD_CLOSING_BRACE 0xB9 - #define HID_KEYBOARD_SC_KEYPAD_TAB 0xBA - #define HID_KEYBOARD_SC_KEYPAD_BACKSPACE 0xBB - #define HID_KEYBOARD_SC_KEYPAD_A 0xBC - #define HID_KEYBOARD_SC_KEYPAD_B 0xBD - #define HID_KEYBOARD_SC_KEYPAD_C 0xBE - #define HID_KEYBOARD_SC_KEYPAD_D 0xBF - #define HID_KEYBOARD_SC_KEYPAD_E 0xC0 - #define HID_KEYBOARD_SC_KEYPAD_F 0xC1 - #define HID_KEYBOARD_SC_KEYPAD_XOR 0xC2 - #define HID_KEYBOARD_SC_KEYPAD_CARET 0xC3 - #define HID_KEYBOARD_SC_KEYPAD_PERCENTAGE 0xC4 - #define HID_KEYBOARD_SC_KEYPAD_LESS_THAN_SIGN 0xC5 - #define HID_KEYBOARD_SC_KEYPAD_GREATER_THAN_SIGN 0xC6 - #define HID_KEYBOARD_SC_KEYPAD_AMP 0xC7 - #define HID_KEYBOARD_SC_KEYPAD_AMP_AMP 0xC8 - #define HID_KEYBOARD_SC_KEYPAD_PIPE 0xC9 - #define HID_KEYBOARD_SC_KEYPAD_PIPE_PIPE 0xCA - #define HID_KEYBOARD_SC_KEYPAD_COLON 0xCB - #define HID_KEYBOARD_SC_KEYPAD_HASHMARK 0xCC - #define HID_KEYBOARD_SC_KEYPAD_SPACE 0xCD - #define HID_KEYBOARD_SC_KEYPAD_AT 0xCE - #define HID_KEYBOARD_SC_KEYPAD_EXCLAMATION_SIGN 0xCF - #define HID_KEYBOARD_SC_KEYPAD_MEMORY_STORE 0xD0 - #define HID_KEYBOARD_SC_KEYPAD_MEMORY_RECALL 0xD1 - #define HID_KEYBOARD_SC_KEYPAD_MEMORY_CLEAR 0xD2 - #define HID_KEYBOARD_SC_KEYPAD_MEMORY_ADD 0xD3 - #define HID_KEYBOARD_SC_KEYPAD_MEMORY_SUBTRACT 0xD4 - #define HID_KEYBOARD_SC_KEYPAD_MEMORY_MULTIPLY 0xD5 - #define HID_KEYBOARD_SC_KEYPAD_MEMORY_DIVIDE 0xD6 - #define HID_KEYBOARD_SC_KEYPAD_PLUS_AND_MINUS 0xD7 - #define HID_KEYBOARD_SC_KEYPAD_CLEAR 0xD8 - #define HID_KEYBOARD_SC_KEYPAD_CLEAR_ENTRY 0xD9 - #define HID_KEYBOARD_SC_KEYPAD_BINARY 0xDA - #define HID_KEYBOARD_SC_KEYPAD_OCTAL 0xDB - #define HID_KEYBOARD_SC_KEYPAD_DECIMAL 0xDC - #define HID_KEYBOARD_SC_KEYPAD_HEXADECIMAL 0xDD - #define HID_KEYBOARD_SC_LEFT_CONTROL 0xE0 - #define HID_KEYBOARD_SC_LEFT_SHIFT 0xE1 - #define HID_KEYBOARD_SC_LEFT_ALT 0xE2 - #define HID_KEYBOARD_SC_LEFT_GUI 0xE3 - #define HID_KEYBOARD_SC_RIGHT_CONTROL 0xE4 - #define HID_KEYBOARD_SC_RIGHT_SHIFT 0xE5 - #define HID_KEYBOARD_SC_RIGHT_ALT 0xE6 - #define HID_KEYBOARD_SC_RIGHT_GUI 0xE7 - #define HID_KEYBOARD_SC_MEDIA_PLAY 0xE8 - #define HID_KEYBOARD_SC_MEDIA_STOP 0xE9 - #define HID_KEYBOARD_SC_MEDIA_PREVIOUS_TRACK 0xEA - #define HID_KEYBOARD_SC_MEDIA_NEXT_TRACK 0xEB - #define HID_KEYBOARD_SC_MEDIA_EJECT 0xEC - #define HID_KEYBOARD_SC_MEDIA_VOLUME_UP 0xED - #define HID_KEYBOARD_SC_MEDIA_VOLUME_DOWN 0xEE - #define HID_KEYBOARD_SC_MEDIA_MUTE 0xEF - #define HID_KEYBOARD_SC_MEDIA_WWW 0xF0 - #define HID_KEYBOARD_SC_MEDIA_BACKWARD 0xF1 - #define HID_KEYBOARD_SC_MEDIA_FORWARD 0xF2 - #define HID_KEYBOARD_SC_MEDIA_CANCEL 0xF3 - #define HID_KEYBOARD_SC_MEDIA_SEARCH 0xF4 - #define HID_KEYBOARD_SC_MEDIA_SLEEP 0xF8 - #define HID_KEYBOARD_SC_MEDIA_LOCK 0xF9 - #define HID_KEYBOARD_SC_MEDIA_RELOAD 0xFA - #define HID_KEYBOARD_SC_MEDIA_CALCULATOR 0xFB - //@} - - /** \name Common HID Device Report Descriptors */ - //@{ - /** \hideinitializer - * A list of HID report item array elements that describe a typical HID USB Joystick. The resulting report - * descriptor is structured according to the following layout: - * - * \code - * struct - * { - * intA_t X; // Signed X axis value - * intA_t Y; // Signed Y axis value - * intA_t Z; // Signed Z axis value - * uintB_t Buttons; // Pressed buttons bitmask - * } Joystick_Report; - * \endcode - * - * Where \c uintA_t is a type large enough to hold the ranges of the signed \c MinAxisVal and \c MaxAxisVal values, - * and \c intB_t is a type large enough to hold one bit per button. - * - * \param[in] MinAxisVal Minimum logical axis value (16-bit). - * \param[in] MaxAxisVal Maximum logical axis value (16-bit). - * \param[in] MinPhysicalVal Minimum physical axis value, for movement resolution calculations (16-bit). - * \param[in] MaxPhysicalVal Maximum physical axis value, for movement resolution calculations (16-bit). - * \param[in] Buttons Total number of buttons in the device (8-bit). - */ - #define HID_DESCRIPTOR_JOYSTICK(MinAxisVal, MaxAxisVal, MinPhysicalVal, MaxPhysicalVal, Buttons) \ - HID_RI_USAGE_PAGE(8, 0x01), \ - HID_RI_USAGE(8, 0x04), \ - HID_RI_COLLECTION(8, 0x01), \ - HID_RI_USAGE(8, 0x01), \ - HID_RI_COLLECTION(8, 0x00), \ - HID_RI_USAGE(8, 0x30), \ - HID_RI_USAGE(8, 0x31), \ - HID_RI_USAGE(8, 0x32), \ - HID_RI_LOGICAL_MINIMUM(16, MinAxisVal), \ - HID_RI_LOGICAL_MAXIMUM(16, MaxAxisVal), \ - HID_RI_PHYSICAL_MINIMUM(16, MinPhysicalVal), \ - HID_RI_PHYSICAL_MAXIMUM(16, MaxPhysicalVal), \ - HID_RI_REPORT_COUNT(8, 3), \ - HID_RI_REPORT_SIZE(8, (((MinAxisVal >= -128) && (MaxAxisVal <= 127)) ? 8 : 16)), \ - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), \ - HID_RI_END_COLLECTION(0), \ - HID_RI_USAGE_PAGE(8, 0x09), \ - HID_RI_USAGE_MINIMUM(8, 0x01), \ - HID_RI_USAGE_MAXIMUM(8, Buttons), \ - HID_RI_LOGICAL_MINIMUM(8, 0x00), \ - HID_RI_LOGICAL_MAXIMUM(8, 0x01), \ - HID_RI_REPORT_SIZE(8, 0x01), \ - HID_RI_REPORT_COUNT(8, Buttons), \ - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), \ - HID_RI_REPORT_SIZE(8, (Buttons % 8) ? (8 - (Buttons % 8)) : 0), \ - HID_RI_REPORT_COUNT(8, 0x01), \ - HID_RI_INPUT(8, HID_IOF_CONSTANT), \ - HID_RI_END_COLLECTION(0) - - /** \hideinitializer - * A list of HID report item array elements that describe a typical HID USB keyboard. The resulting report descriptor - * is compatible with \ref USB_KeyboardReport_Data_t when \c MaxKeys is equal to 6. For other values, the report will - * be structured according to the following layout: - * - * \code - * struct - * { - * uint8_t Modifier; // Keyboard modifier byte indicating pressed modifier keys (\c HID_KEYBOARD_MODIFER_* masks) - * uint8_t Reserved; // Reserved for OEM use, always set to 0. - * uint8_t KeyCode[MaxKeys]; // Length determined by the number of keys that can be reported - * } Keyboard_Report; - * \endcode - * - * \param[in] MaxKeys Number of simultaneous keys that can be reported at the one time (8-bit). - */ - #define HID_DESCRIPTOR_KEYBOARD(MaxKeys) \ - HID_RI_USAGE_PAGE(8, 0x01), \ - HID_RI_USAGE(8, 0x06), \ - HID_RI_COLLECTION(8, 0x01), \ - HID_RI_USAGE_PAGE(8, 0x07), \ - HID_RI_USAGE_MINIMUM(8, 0xE0), \ - HID_RI_USAGE_MAXIMUM(8, 0xE7), \ - HID_RI_LOGICAL_MINIMUM(8, 0x00), \ - HID_RI_LOGICAL_MAXIMUM(8, 0x01), \ - HID_RI_REPORT_SIZE(8, 0x01), \ - HID_RI_REPORT_COUNT(8, 0x08), \ - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), \ - HID_RI_REPORT_COUNT(8, 0x01), \ - HID_RI_REPORT_SIZE(8, 0x08), \ - HID_RI_INPUT(8, HID_IOF_CONSTANT), \ - HID_RI_USAGE_PAGE(8, 0x08), \ - HID_RI_USAGE_MINIMUM(8, 0x01), \ - HID_RI_USAGE_MAXIMUM(8, 0x05), \ - HID_RI_REPORT_COUNT(8, 0x05), \ - HID_RI_REPORT_SIZE(8, 0x01), \ - HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), \ - HID_RI_REPORT_COUNT(8, 0x01), \ - HID_RI_REPORT_SIZE(8, 0x03), \ - HID_RI_OUTPUT(8, HID_IOF_CONSTANT), \ - HID_RI_LOGICAL_MINIMUM(8, 0x00), \ - HID_RI_LOGICAL_MAXIMUM(8, 0xFF), \ - HID_RI_USAGE_PAGE(8, 0x07), \ - HID_RI_USAGE_MINIMUM(8, 0x00), \ - HID_RI_USAGE_MAXIMUM(8, 0xFF), \ - HID_RI_REPORT_COUNT(8, MaxKeys), \ - HID_RI_REPORT_SIZE(8, 0x08), \ - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_ARRAY | HID_IOF_ABSOLUTE), \ - HID_RI_END_COLLECTION(0) - - /** \hideinitializer - * A list of HID report item array elements that describe a typical HID USB mouse. The resulting report descriptor - * is compatible with \ref USB_MouseReport_Data_t if the \c MinAxisVal and \c MaxAxisVal values fit within a \c int8_t range - * and the number of Buttons is less than 8. For other values, the report is structured according to the following layout: - * - * \code - * struct - * { - * uintA_t Buttons; // Pressed buttons bitmask - * intB_t X; // X axis value - * intB_t Y; // Y axis value - * } Mouse_Report; - * \endcode - * - * Where \c intA_t is a type large enough to hold one bit per button, and \c intB_t is a type large enough to hold the - * ranges of the signed \c MinAxisVal and \c MaxAxisVal values. - * - * \param[in] MinAxisVal Minimum X/Y logical axis value (16-bit). - * \param[in] MaxAxisVal Maximum X/Y logical axis value (16-bit). - * \param[in] MinPhysicalVal Minimum X/Y physical axis value, for movement resolution calculations (16-bit). - * \param[in] MaxPhysicalVal Maximum X/Y physical axis value, for movement resolution calculations (16-bit). - * \param[in] Buttons Total number of buttons in the device (8-bit). - * \param[in] AbsoluteCoords Boolean \c true to use absolute X/Y coordinates (e.g. touchscreen). - */ - #define HID_DESCRIPTOR_MOUSE(MinAxisVal, MaxAxisVal, MinPhysicalVal, MaxPhysicalVal, Buttons, AbsoluteCoords) \ - HID_RI_USAGE_PAGE(8, 0x01), \ - HID_RI_USAGE(8, 0x02), \ - HID_RI_COLLECTION(8, 0x01), \ - HID_RI_USAGE(8, 0x01), \ - HID_RI_COLLECTION(8, 0x00), \ - HID_RI_USAGE_PAGE(8, 0x09), \ - HID_RI_USAGE_MINIMUM(8, 0x01), \ - HID_RI_USAGE_MAXIMUM(8, Buttons), \ - HID_RI_LOGICAL_MINIMUM(8, 0x00), \ - HID_RI_LOGICAL_MAXIMUM(8, 0x01), \ - HID_RI_REPORT_COUNT(8, Buttons), \ - HID_RI_REPORT_SIZE(8, 0x01), \ - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), \ - HID_RI_REPORT_COUNT(8, 0x01), \ - HID_RI_REPORT_SIZE(8, (Buttons % 8) ? (8 - (Buttons % 8)) : 0), \ - HID_RI_INPUT(8, HID_IOF_CONSTANT), \ - HID_RI_USAGE_PAGE(8, 0x01), \ - HID_RI_USAGE(8, 0x30), \ - HID_RI_USAGE(8, 0x31), \ - HID_RI_LOGICAL_MINIMUM(16, MinAxisVal), \ - HID_RI_LOGICAL_MAXIMUM(16, MaxAxisVal), \ - HID_RI_PHYSICAL_MINIMUM(16, MinPhysicalVal), \ - HID_RI_PHYSICAL_MAXIMUM(16, MaxPhysicalVal), \ - HID_RI_REPORT_COUNT(8, 0x02), \ - HID_RI_REPORT_SIZE(8, (((MinAxisVal >= -128) && (MaxAxisVal <= 127)) ? 8 : 16)), \ - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | (AbsoluteCoords ? HID_IOF_ABSOLUTE : HID_IOF_RELATIVE)), \ - HID_RI_END_COLLECTION(0), \ - HID_RI_END_COLLECTION(0) - - /** \hideinitializer - * A list of HID report item array elements that describe a typical Vendor Defined byte array HID report descriptor, - * used for transporting arbitrary data between the USB host and device via HID reports. The resulting report should be - * a \c uint8_t byte array of the specified length in both Device to Host (IN) and Host to Device (OUT) directions. - * - * \param[in] VendorPageNum Vendor Defined HID Usage Page index, ranging from 0x00 to 0xFF. - * \param[in] CollectionUsage Vendor Usage for the encompassing report IN and OUT collection, ranging from 0x00 to 0xFF. - * \param[in] DataINUsage Vendor Usage for the IN report data, ranging from 0x00 to 0xFF. - * \param[in] DataOUTUsage Vendor Usage for the OUT report data, ranging from 0x00 to 0xFF. - * \param[in] NumBytes Length of the data IN and OUT reports. - */ - #define HID_DESCRIPTOR_VENDOR(VendorPageNum, CollectionUsage, DataINUsage, DataOUTUsage, NumBytes) \ - HID_RI_USAGE_PAGE(16, (0xFF00 | VendorPageNum)), \ - HID_RI_USAGE(8, CollectionUsage), \ - HID_RI_COLLECTION(8, 0x01), \ - HID_RI_USAGE(8, DataINUsage), \ - HID_RI_LOGICAL_MINIMUM(8, 0x00), \ - HID_RI_LOGICAL_MAXIMUM(8, 0xFF), \ - HID_RI_REPORT_SIZE(8, 0x08), \ - HID_RI_REPORT_COUNT(8, NumBytes), \ - HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), \ - HID_RI_USAGE(8, DataOUTUsage), \ - HID_RI_LOGICAL_MINIMUM(8, 0x00), \ - HID_RI_LOGICAL_MAXIMUM(8, 0xFF), \ - HID_RI_REPORT_SIZE(8, 0x08), \ - HID_RI_REPORT_COUNT(8, NumBytes), \ - HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), \ - HID_RI_END_COLLECTION(0) - //@} - - /* Type Defines: */ - /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the HID - * device class. - */ - enum HID_Descriptor_ClassSubclassProtocol_t - { - HID_CSCP_HIDClass = 0x03, /**< Descriptor Class value indicating that the device or interface - * belongs to the HID class. - */ - HID_CSCP_NonBootSubclass = 0x00, /**< Descriptor Subclass value indicating that the device or interface - * does not implement a HID boot protocol. - */ - HID_CSCP_BootSubclass = 0x01, /**< Descriptor Subclass value indicating that the device or interface - * implements a HID boot protocol. - */ - HID_CSCP_NonBootProtocol = 0x00, /**< Descriptor Protocol value indicating that the device or interface - * does not belong to a HID boot protocol. - */ - HID_CSCP_KeyboardBootProtocol = 0x01, /**< Descriptor Protocol value indicating that the device or interface - * belongs to the Keyboard HID boot protocol. - */ - HID_CSCP_MouseBootProtocol = 0x02, /**< Descriptor Protocol value indicating that the device or interface - * belongs to the Mouse HID boot protocol. - */ - }; - - /** Enum for the HID class specific control requests that can be issued by the USB bus host. */ - enum HID_ClassRequests_t - { - HID_REQ_GetReport = 0x01, /**< HID class-specific Request to get the current HID report from the device. */ - HID_REQ_GetIdle = 0x02, /**< HID class-specific Request to get the current device idle count. */ - HID_REQ_GetProtocol = 0x03, /**< HID class-specific Request to get the current HID report protocol mode. */ - HID_REQ_SetReport = 0x09, /**< HID class-specific Request to set the current HID report to the device. */ - HID_REQ_SetIdle = 0x0A, /**< HID class-specific Request to set the device's idle count. */ - HID_REQ_SetProtocol = 0x0B, /**< HID class-specific Request to set the current HID report protocol mode. */ - }; - - /** Enum for the HID class specific descriptor types. */ - enum HID_DescriptorTypes_t - { - HID_DTYPE_HID = 0x21, /**< Descriptor header type value, to indicate a HID class HID descriptor. */ - HID_DTYPE_Report = 0x22, /**< Descriptor header type value, to indicate a HID class HID report descriptor. */ - }; - - /** Enum for the different types of HID reports. */ - enum HID_ReportItemTypes_t - { - HID_REPORT_ITEM_In = 0, /**< Indicates that the item is an IN report type. */ - HID_REPORT_ITEM_Out = 1, /**< Indicates that the item is an OUT report type. */ - HID_REPORT_ITEM_Feature = 2, /**< Indicates that the item is a FEATURE report type. */ - }; - - /** \brief HID class-specific HID Descriptor (LUFA naming conventions). - * - * Type define for the HID class-specific HID descriptor, to describe the HID device's specifications. Refer to the HID - * specification for details on the structure elements. - * - * \see \ref USB_HID_StdDescriptor_HID_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ - - uint16_t HIDSpec; /**< BCD encoded version that the HID descriptor and device complies to. - * - * \see \ref VERSION_BCD() utility macro. - */ - uint8_t CountryCode; /**< Country code of the localized device, or zero if universal. */ - - uint8_t TotalReportDescriptors; /**< Total number of HID report descriptors for the interface. */ - - uint8_t HIDReportType; /**< Type of HID report, set to \ref HID_DTYPE_Report. */ - uint16_t HIDReportLength; /**< Length of the associated HID report descriptor, in bytes. */ - } ATTR_PACKED USB_HID_Descriptor_HID_t; - - /** \brief HID class-specific HID Descriptor (USB-IF naming conventions). - * - * Type define for the HID class-specific HID descriptor, to describe the HID device's specifications. Refer to the HID - * specification for details on the structure elements. - * - * \see \ref USB_HID_Descriptor_HID_t for the version of this type with non-standard LUFA specific - * element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - - uint16_t bcdHID; /**< BCD encoded version that the HID descriptor and device complies to. - * - * \see \ref VERSION_BCD() utility macro. - */ - uint8_t bCountryCode; /**< Country code of the localized device, or zero if universal. */ - - uint8_t bNumDescriptors; /**< Total number of HID report descriptors for the interface. */ - - uint8_t bDescriptorType2; /**< Type of HID report, set to \ref HID_DTYPE_Report. */ - uint16_t wDescriptorLength; /**< Length of the associated HID report descriptor, in bytes. */ - } ATTR_PACKED USB_HID_StdDescriptor_HID_t; - - /** \brief Standard HID Boot Protocol Mouse Report. - * - * Type define for a standard Boot Protocol Mouse report - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t Button; /**< Button mask for currently pressed buttons in the mouse. */ - int8_t X; /**< Current delta X movement of the mouse. */ - int8_t Y; /**< Current delta Y movement on the mouse. */ - } ATTR_PACKED USB_MouseReport_Data_t; - - /** \brief Standard HID Boot Protocol Keyboard Report. - * - * Type define for a standard Boot Protocol Keyboard report - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (a combination of - * \c HID_KEYBOARD_MODIFER_* masks). - */ - uint8_t Reserved; /**< Reserved for OEM use, always set to 0. */ - uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys. */ - } ATTR_PACKED USB_KeyboardReport_Data_t; - - /** Type define for the data type used to store HID report descriptor elements. */ - typedef uint8_t USB_Descriptor_HIDReport_Datatype_t; - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Common/HIDParser.h b/cores/usblib/Class/Common/HIDParser.h deleted file mode 100644 index 36f0b13e..00000000 --- a/cores/usblib/Class/Common/HIDParser.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB Human Interface Device (HID) Class report descriptor parser. - * - * This file allows for the easy parsing of complex HID report descriptors, which describes the data that - * a HID device transmits to the host. It also provides an easy API for extracting and processing the data - * elements inside a HID report sent from an attached HID device. - */ - -/** \ingroup Group_USB - * \defgroup Group_HIDParser HID Report Parser - * \brief USB Human Interface Device (HID) Class report descriptor parser. - * - * \section Sec_HIDParser_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - LUFA/Drivers/USB/Class/Host/HIDParser.c (Makefile source module name: LUFA_SRC_USB) - * - * \section Sec_HIDParser_ModDescription Module Description - * Human Interface Device (HID) class report descriptor parser. This module implements a parser than is - * capable of processing a complete HID report descriptor, and outputting a flat structure containing the - * contents of the report in an a more friendly format. The parsed data may then be further processed and used - * within an application to process sent and received HID reports to and from an attached HID device. - * - * A HID report descriptor consists of a set of HID report items, which describe the function and layout - * of data exchanged between a HID device and a host, including both the physical encoding of each item - * (such as a button, key press or joystick axis) in the sent and received data packets - known as "reports" - - * as well as other information about each item such as the usages, data range, physical location and other - * characteristics. In this way a HID device can retain a high degree of flexibility in its capabilities, as it - * is not forced to comply with a given report layout or feature-set. - * - * This module also contains routines for the processing of data in an actual HID report, using the parsed report - * descriptor data as a guide for the encoding. - * - * @{ - */ - -#ifndef __HIDPARSER_H__ -#define __HIDPARSER_H__ - - /* Includes: */ - #include <../../Common/Common.h> - - #include "HIDReportData.h" - #include "HIDClassCommon.h" - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - - - #if !defined(HID_MAX_REPORT_IDS) || defined(__DOXYGEN__) - /** Constant indicating the maximum number of unique report IDs that can be processed in the report item - * descriptor for the report size information array in the user HID Report Info structure. A large value - * allows for more report ID report sizes to be stored, but consumes more memory. By default this is set - * to 10 items, but this can be overridden by defining \c HID_MAX_REPORT_IDS to another value in the user project - * makefile, and passing the define to the compiler using the -D compiler switch. Note that IN, OUT and FEATURE - * items sharing the same report ID consume only one size item in the array. - */ - #define HID_MAX_REPORT_IDS 10 - #endif - - /** Returns the value a given HID report item (once its value has been fetched via \ref USB_GetHIDReportItemInfo()) - * left-aligned to the given data type. This allows for signed data to be interpreted correctly, by shifting the data - * leftwards until the data's sign bit is in the correct position. - * - * \param[in] ReportItem HID Report Item whose retrieved value is to be aligned. - * \param[in] Type Data type to align the HID report item's value to. - * - * \return Left-aligned data of the given report item's pre-retrieved value for the given datatype. - */ - #define HID_ALIGN_DATA(ReportItem, Type) ((Type)(ReportItem->Value << ((8 * sizeof(Type)) - ReportItem->Attributes.BitSize))) - - - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Common/HIDReportData.h b/cores/usblib/Class/Common/HIDReportData.h deleted file mode 100644 index 21026db1..00000000 --- a/cores/usblib/Class/Common/HIDReportData.h +++ /dev/null @@ -1,130 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Constants for HID report item attributes. - * - * HID report item constants for report item attributes. Refer to the HID specification for - * details on each flag's meaning when applied to an IN, OUT or FEATURE item. - */ - -/** \ingroup Group_HIDParser - * \defgroup Group_HIDReportItemConst HID Report Descriptor Item Constants - * - * General HID constant definitions for HID Report Descriptor elements. - * - * @{ - */ - -#ifndef __HIDREPORTDATA_H__ -#define __HIDREPORTDATA_H__ - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Macros: */ - #define HID_RI_DATA_SIZE_MASK 0x03 - #define HID_RI_TYPE_MASK 0x0C - #define HID_RI_TAG_MASK 0xF0 - - #define HID_RI_TYPE_MAIN 0x00 - #define HID_RI_TYPE_GLOBAL 0x04 - #define HID_RI_TYPE_LOCAL 0x08 - - #define HID_RI_DATA_BITS_0 0x00 - #define HID_RI_DATA_BITS_8 0x01 - #define HID_RI_DATA_BITS_16 0x02 - #define HID_RI_DATA_BITS_32 0x03 - #define HID_RI_DATA_BITS(DataBits) CONCAT_EXPANDED(HID_RI_DATA_BITS_, DataBits) - - #define _HID_RI_ENCODE_0(Data) - #define _HID_RI_ENCODE_8(Data) , (Data & 0xFF) - #define _HID_RI_ENCODE_16(Data) _HID_RI_ENCODE_8(Data) _HID_RI_ENCODE_8(Data >> 8) - #define _HID_RI_ENCODE_32(Data) _HID_RI_ENCODE_16(Data) _HID_RI_ENCODE_16(Data >> 16) - #define _HID_RI_ENCODE(DataBits, ...) CONCAT_EXPANDED(_HID_RI_ENCODE_, DataBits(__VA_ARGS__)) - - #define _HID_RI_ENTRY(Type, Tag, DataBits, ...) (Type | Tag | HID_RI_DATA_BITS(DataBits)) _HID_RI_ENCODE(DataBits, (__VA_ARGS__)) - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** \name HID Input, Output and Feature Report Descriptor Item Flags */ - //@{ - #define HID_IOF_CONSTANT (1 << 0) - #define HID_IOF_DATA (0 << 0) - #define HID_IOF_VARIABLE (1 << 1) - #define HID_IOF_ARRAY (0 << 1) - #define HID_IOF_RELATIVE (1 << 2) - #define HID_IOF_ABSOLUTE (0 << 2) - #define HID_IOF_WRAP (1 << 3) - #define HID_IOF_NO_WRAP (0 << 3) - #define HID_IOF_NON_LINEAR (1 << 4) - #define HID_IOF_LINEAR (0 << 4) - #define HID_IOF_NO_PREFERRED_STATE (1 << 5) - #define HID_IOF_PREFERRED_STATE (0 << 5) - #define HID_IOF_NULLSTATE (1 << 6) - #define HID_IOF_NO_NULL_POSITION (0 << 6) - #define HID_IOF_VOLATILE (1 << 7) - #define HID_IOF_NON_VOLATILE (0 << 7) - #define HID_IOF_BUFFERED_BYTES (1 << 8) - #define HID_IOF_BITFIELD (0 << 8) - //@} - - /** \name HID Report Descriptor Item Macros */ - //@{ - #define HID_RI_INPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x80, DataBits, __VA_ARGS__) - #define HID_RI_OUTPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x90, DataBits, __VA_ARGS__) - #define HID_RI_COLLECTION(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xA0, DataBits, __VA_ARGS__) - #define HID_RI_FEATURE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xB0, DataBits, __VA_ARGS__) - #define HID_RI_END_COLLECTION(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0xC0, DataBits, __VA_ARGS__) - #define HID_RI_USAGE_PAGE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x00, DataBits, __VA_ARGS__) - #define HID_RI_LOGICAL_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x10, DataBits, __VA_ARGS__) - #define HID_RI_LOGICAL_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x20, DataBits, __VA_ARGS__) - #define HID_RI_PHYSICAL_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x30, DataBits, __VA_ARGS__) - #define HID_RI_PHYSICAL_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x40, DataBits, __VA_ARGS__) - #define HID_RI_UNIT_EXPONENT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x50, DataBits, __VA_ARGS__) - #define HID_RI_UNIT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x60, DataBits, __VA_ARGS__) - #define HID_RI_REPORT_SIZE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x70, DataBits, __VA_ARGS__) - #define HID_RI_REPORT_ID(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x80, DataBits, __VA_ARGS__) - #define HID_RI_REPORT_COUNT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0x90, DataBits, __VA_ARGS__) - #define HID_RI_PUSH(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xA0, DataBits, __VA_ARGS__) - #define HID_RI_POP(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_GLOBAL, 0xB0, DataBits, __VA_ARGS__) - #define HID_RI_USAGE(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x00, DataBits, __VA_ARGS__) - #define HID_RI_USAGE_MINIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x10, DataBits, __VA_ARGS__) - #define HID_RI_USAGE_MAXIMUM(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_LOCAL , 0x20, DataBits, __VA_ARGS__) - //@} - -/** @} */ - -#endif - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Common/MassStorageClassCommon.h b/cores/usblib/Class/Common/MassStorageClassCommon.h deleted file mode 100644 index 6904acec..00000000 --- a/cores/usblib/Class/Common/MassStorageClassCommon.h +++ /dev/null @@ -1,372 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common definitions and declarations for the library USB Mass Storage Class driver. - * - * Common definitions and declarations for the library USB Mass Storage Class driver. - * - * \note This file should not be included directly. It is automatically included as needed by the USB module driver - * dispatch header located in LUFA/Drivers/USB.h. - */ - -/** \ingroup Group_USBClassMS - * \defgroup Group_USBClassMSCommon Common Class Definitions - * - * \section Sec_USBClassMSCommon_ModDescription Module Description - * Constants, Types and Enum definitions that are common to both Device and Host modes for the USB - * Mass Storage Class. - * - * @{ - */ - -#ifndef _MS_CLASS_COMMON_H_ -#define _MS_CLASS_COMMON_H_ - - /* Includes: */ - #include <../../Core/StdDescriptors.h> - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_MS_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. - #endif - - /* Macros: */ - /** Magic signature for a Command Block Wrapper used in the Mass Storage Bulk-Only transport protocol. */ - #define MS_CBW_SIGNATURE 0x43425355UL - - /** Magic signature for a Command Status Wrapper used in the Mass Storage Bulk-Only transport protocol. */ - #define MS_CSW_SIGNATURE 0x53425355UL - - /** Mask for a Command Block Wrapper's flags attribute to specify a command with data sent from host-to-device. */ - #define MS_COMMAND_DIR_DATA_OUT (0 << 7) - - /** Mask for a Command Block Wrapper's flags attribute to specify a command with data sent from device-to-host. */ - #define MS_COMMAND_DIR_DATA_IN (1 << 7) - - /** \name SCSI Commands*/ - //@{ - /** SCSI Command Code for an INQUIRY command. */ - #define SCSI_CMD_INQUIRY 0x12 - - /** SCSI Command Code for a REQUEST SENSE command. */ - #define SCSI_CMD_REQUEST_SENSE 0x03 - - /** SCSI Command Code for a TEST UNIT READY command. */ - #define SCSI_CMD_TEST_UNIT_READY 0x00 - - /** SCSI Command Code for a READ CAPACITY (10) command. */ - #define SCSI_CMD_READ_CAPACITY_10 0x25 - - /** SCSI Command Code for a START STOP UNIT command. */ - #define SCSI_CMD_START_STOP_UNIT 0x1B - - /** SCSI Command Code for a SEND DIAGNOSTIC command. */ - #define SCSI_CMD_SEND_DIAGNOSTIC 0x1D - - /** SCSI Command Code for a PREVENT ALLOW MEDIUM REMOVAL command. */ - #define SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1E - - /** SCSI Command Code for a WRITE (10) command. */ - #define SCSI_CMD_WRITE_10 0x2A - - /** SCSI Command Code for a READ (10) command. */ - #define SCSI_CMD_READ_10 0x28 - - /** SCSI Command Code for a WRITE (6) command. */ - #define SCSI_CMD_WRITE_6 0x0A - - /** SCSI Command Code for a READ (6) command. */ - #define SCSI_CMD_READ_6 0x08 - - /** SCSI Command Code for a VERIFY (10) command. */ - #define SCSI_CMD_VERIFY_10 0x2F - - /** SCSI Command Code for a MODE SENSE (6) command. */ - #define SCSI_CMD_MODE_SENSE_6 0x1A - - /** SCSI Command Code for a MODE SENSE (10) command. */ - #define SCSI_CMD_MODE_SENSE_10 0x5A - //@} - - /** \name SCSI Sense Key Values */ - //@{ - /** SCSI Sense Code to indicate no error has occurred. */ - #define SCSI_SENSE_KEY_GOOD 0x00 - - /** SCSI Sense Code to indicate that the device has recovered from an error. */ - #define SCSI_SENSE_KEY_RECOVERED_ERROR 0x01 - - /** SCSI Sense Code to indicate that the device is not ready for a new command. */ - #define SCSI_SENSE_KEY_NOT_READY 0x02 - - /** SCSI Sense Code to indicate an error whilst accessing the medium. */ - #define SCSI_SENSE_KEY_MEDIUM_ERROR 0x03 - - /** SCSI Sense Code to indicate a hardware error has occurred. */ - #define SCSI_SENSE_KEY_HARDWARE_ERROR 0x04 - - /** SCSI Sense Code to indicate that an illegal request has been issued. */ - #define SCSI_SENSE_KEY_ILLEGAL_REQUEST 0x05 - - /** SCSI Sense Code to indicate that the unit requires attention from the host to indicate - * a reset event, medium removal or other condition. - */ - #define SCSI_SENSE_KEY_UNIT_ATTENTION 0x06 - - /** SCSI Sense Code to indicate that a write attempt on a protected block has been made. */ - #define SCSI_SENSE_KEY_DATA_PROTECT 0x07 - - /** SCSI Sense Code to indicate an error while trying to write to a write-once medium. */ - #define SCSI_SENSE_KEY_BLANK_CHECK 0x08 - - /** SCSI Sense Code to indicate a vendor specific error has occurred. */ - #define SCSI_SENSE_KEY_VENDOR_SPECIFIC 0x09 - - /** SCSI Sense Code to indicate that an EXTENDED COPY command has aborted due to an error. */ - #define SCSI_SENSE_KEY_COPY_ABORTED 0x0A - - /** SCSI Sense Code to indicate that the device has aborted the issued command. */ - #define SCSI_SENSE_KEY_ABORTED_COMMAND 0x0B - - /** SCSI Sense Code to indicate an attempt to write past the end of a partition has been made. */ - #define SCSI_SENSE_KEY_VOLUME_OVERFLOW 0x0D - - /** SCSI Sense Code to indicate that the source data did not match the data read from the medium. */ - #define SCSI_SENSE_KEY_MISCOMPARE 0x0E - //@} - - /** \name SCSI Additional Sense Codes */ - //@{ - /** SCSI Additional Sense Code to indicate no additional sense information is available. */ - #define SCSI_ASENSE_NO_ADDITIONAL_INFORMATION 0x00 - - /** SCSI Additional Sense Code to indicate that the logical unit (LUN) addressed is not ready. */ - #define SCSI_ASENSE_LOGICAL_UNIT_NOT_READY 0x04 - - /** SCSI Additional Sense Code to indicate an invalid field was encountered while processing the issued command. */ - #define SCSI_ASENSE_INVALID_FIELD_IN_CDB 0x24 - - /** SCSI Additional Sense Code to indicate that a medium that was previously indicated as not ready has now - * become ready for use. - */ - #define SCSI_ASENSE_NOT_READY_TO_READY_CHANGE 0x28 - - /** SCSI Additional Sense Code to indicate that an attempt to write to a protected area was made. */ - #define SCSI_ASENSE_WRITE_PROTECTED 0x27 - - /** SCSI Additional Sense Code to indicate an error whilst formatting the device medium. */ - #define SCSI_ASENSE_FORMAT_ERROR 0x31 - - /** SCSI Additional Sense Code to indicate an invalid command was issued. */ - #define SCSI_ASENSE_INVALID_COMMAND 0x20 - - /** SCSI Additional Sense Code to indicate a write to a block out outside of the medium's range was issued. */ - #define SCSI_ASENSE_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE 0x21 - - /** SCSI Additional Sense Code to indicate that no removable medium is inserted into the device. */ - #define SCSI_ASENSE_MEDIUM_NOT_PRESENT 0x3A - //@} - - /** \name SCSI Additional Sense Key Code Qualifiers */ - //@{ - /** SCSI Additional Sense Qualifier Code to indicate no additional sense qualifier information is available. */ - #define SCSI_ASENSEQ_NO_QUALIFIER 0x00 - - /** SCSI Additional Sense Qualifier Code to indicate that a medium format command failed to complete. */ - #define SCSI_ASENSEQ_FORMAT_COMMAND_FAILED 0x01 - - /** SCSI Additional Sense Qualifier Code to indicate that an initializing command must be issued before the issued - * command can be executed. - */ - #define SCSI_ASENSEQ_INITIALIZING_COMMAND_REQUIRED 0x02 - - /** SCSI Additional Sense Qualifier Code to indicate that an operation is currently in progress. */ - #define SCSI_ASENSEQ_OPERATION_IN_PROGRESS 0x07 - //@} - - /* Enums: */ - /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Mass - * Storage device class. - */ - enum MS_Descriptor_ClassSubclassProtocol_t - { - MS_CSCP_MassStorageClass = 0x08, /**< Descriptor Class value indicating that the device or interface - * belongs to the Mass Storage class. - */ - MS_CSCP_SCSITransparentSubclass = 0x06, /**< Descriptor Subclass value indicating that the device or interface - * belongs to the SCSI Transparent Command Set subclass of the Mass - * storage class. - */ - MS_CSCP_BulkOnlyTransportProtocol = 0x50, /**< Descriptor Protocol value indicating that the device or interface - * belongs to the Bulk Only Transport protocol of the Mass Storage class. - */ - }; - - /** Enum for the Mass Storage class specific control requests that can be issued by the USB bus host. */ - enum MS_ClassRequests_t - { - MS_REQ_GetMaxLUN = 0xFE, /**< Mass Storage class-specific request to retrieve the total number of Logical - * Units (drives) in the SCSI device. - */ - MS_REQ_MassStorageReset = 0xFF, /**< Mass Storage class-specific request to reset the Mass Storage interface, - * ready for the next command. - */ - }; - - /** Enum for the possible command status wrapper return status codes. */ - enum MS_CommandStatusCodes_t - { - MS_SCSI_COMMAND_Pass = 0, /**< Command completed with no error */ - MS_SCSI_COMMAND_Fail = 1, /**< Command failed to complete - host may check the exact error via a - * SCSI REQUEST SENSE command. - */ - MS_SCSI_COMMAND_PhaseError = 2, /**< Command failed due to being invalid in the current phase. */ - }; - - /* Type Defines: */ - /** \brief Mass Storage Class Command Block Wrapper. - * - * Type define for a Command Block Wrapper, used in the Mass Storage Bulk-Only Transport protocol. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint32_t Signature; /**< Command block signature, must be \ref MS_CBW_SIGNATURE to indicate a valid Command Block. */ - uint32_t Tag; /**< Unique command ID value, to associate a command block wrapper with its command status wrapper. */ - uint32_t DataTransferLength; /**< Length of the optional data portion of the issued command, in bytes. */ - uint8_t Flags; /**< Command block flags, indicating command data direction. */ - uint8_t LUN; /**< Logical Unit number this command is issued to. */ - uint8_t SCSICommandLength; /**< Length of the issued SCSI command within the SCSI command data array. */ - uint8_t SCSICommandData[16]; /**< Issued SCSI command in the Command Block. */ - } ATTR_PACKED MS_CommandBlockWrapper_t; - - /** \brief Mass Storage Class Command Status Wrapper. - * - * Type define for a Command Status Wrapper, used in the Mass Storage Bulk-Only Transport protocol. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint32_t Signature; /**< Status block signature, must be \ref MS_CSW_SIGNATURE to indicate a valid Command Status. */ - uint32_t Tag; /**< Unique command ID value, to associate a command block wrapper with its command status wrapper. */ - uint32_t DataTransferResidue; /**< Number of bytes of data not processed in the SCSI command. */ - uint8_t Status; /**< Status code of the issued command - a value from the \ref MS_CommandStatusCodes_t enum. */ - } ATTR_PACKED MS_CommandStatusWrapper_t; - - /** \brief Mass Storage Class SCSI Sense Structure - * - * Type define for a SCSI Sense structure. Structures of this type are filled out by the - * device via the \ref MS_Host_RequestSense() function, indicating the current sense data of the - * device (giving explicit error codes for the last issued command). For details of the - * structure contents, refer to the SCSI specifications. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t ResponseCode; - - uint8_t SegmentNumber; - - unsigned SenseKey : 4; - unsigned Reserved : 1; - unsigned ILI : 1; - unsigned EOM : 1; - unsigned FileMark : 1; - - uint8_t Information[4]; - uint8_t AdditionalLength; - uint8_t CmdSpecificInformation[4]; - uint8_t AdditionalSenseCode; - uint8_t AdditionalSenseQualifier; - uint8_t FieldReplaceableUnitCode; - uint8_t SenseKeySpecific[3]; - } ATTR_PACKED SCSI_Request_Sense_Response_t; - - /** \brief Mass Storage Class SCSI Inquiry Structure. - * - * Type define for a SCSI Inquiry structure. Structures of this type are filled out by the - * device via the \ref MS_Host_GetInquiryData() function, retrieving the attached device's - * information. - * - * For details of the structure contents, refer to the SCSI specifications. - */ - typedef ATTR_IAR_PACKED struct - { - unsigned DeviceType : 5; - unsigned PeripheralQualifier : 3; - - unsigned Reserved : 7; - unsigned Removable : 1; - - uint8_t Version; - - unsigned ResponseDataFormat : 4; - unsigned Reserved2 : 1; - unsigned NormACA : 1; - unsigned TrmTsk : 1; - unsigned AERC : 1; - - uint8_t AdditionalLength; - uint8_t Reserved3[2]; - - unsigned SoftReset : 1; - unsigned CmdQue : 1; - unsigned Reserved4 : 1; - unsigned Linked : 1; - unsigned Sync : 1; - unsigned WideBus16Bit : 1; - unsigned WideBus32Bit : 1; - unsigned RelAddr : 1; - - uint8_t VendorID[8]; - uint8_t ProductID[16]; - uint8_t RevisionID[4]; - } ATTR_PACKED SCSI_Inquiry_Response_t; - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Device/CDCClassDevice.c b/cores/usblib/Class/Device/CDCClassDevice.c deleted file mode 100644 index 5aa7d282..00000000 --- a/cores/usblib/Class/Device/CDCClassDevice.c +++ /dev/null @@ -1,354 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ -#if defined(USB0) -#define __INCLUDE_FROM_USB_DRIVER -#include <../../Core/USBMode.h> - -#if defined(USB_CAN_BE_DEVICE) - -#define __INCLUDE_FROM_CDC_DRIVER -#define __INCLUDE_FROM_CDC_DEVICE_C -#include - -void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - if (!(Endpoint_IsSETUPReceived())) - return; - - if (USB_ControlRequest.wIndex != CDCInterfaceInfo->Config.ControlInterfaceNumber) - return; - - switch (USB_ControlRequest.bRequest) - { - case CDC_REQ_GetLineEncoding: - if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - - while (!(Endpoint_IsINReady())); - - Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS); - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat); - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType); - Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits); - - Endpoint_ClearIN(); - Endpoint_ClearStatusStage(); - } - - break; - case CDC_REQ_SetLineEncoding: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - - while (!(Endpoint_IsOUTReceived())) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - } - - CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE(); - CDCInterfaceInfo->State.LineEncoding.CharFormat = Endpoint_Read_8(); - CDCInterfaceInfo->State.LineEncoding.ParityType = Endpoint_Read_8(); - CDCInterfaceInfo->State.LineEncoding.DataBits = Endpoint_Read_8(); - - Endpoint_ClearOUT(); - Endpoint_ClearStatusStage(); - - EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo); - } - - break; - case CDC_REQ_SetControlLineState: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - - CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue; - - EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo); - } - - break; - case CDC_REQ_SendBreak: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - - EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue); - } - - break; - } -} - -bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - memset(&CDCInterfaceInfo->State, 0x00, sizeof(CDCInterfaceInfo->State)); - - CDCInterfaceInfo->Config.DataINEndpoint.Type = EP_TYPE_BULK; - CDCInterfaceInfo->Config.DataOUTEndpoint.Type = EP_TYPE_BULK; - CDCInterfaceInfo->Config.NotificationEndpoint.Type = EP_TYPE_INTERRUPT; - - if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataINEndpoint, 1))) - return false; - - if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.DataOUTEndpoint, 1))) - return false; - - if (!(Endpoint_ConfigureEndpointTable(&CDCInterfaceInfo->Config.NotificationEndpoint, 1))) - return false; - - return true; -} - -void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - return; - - #if !defined(NO_CLASS_DRIVER_AUTOFLUSH) - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); - - if (Endpoint_IsINReady()) - CDC_Device_Flush(CDCInterfaceInfo); - #endif -} - -uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const char* const String) -{ - if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - return ENDPOINT_RWSTREAM_DeviceDisconnected; - - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); - return Endpoint_Write_Stream_LE(String, strlen(String), NULL); -} - -uint8_t CDC_Device_SendData(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const void* const Buffer, - const uint16_t Length) -{ - if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - return ENDPOINT_RWSTREAM_DeviceDisconnected; - - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); - return Endpoint_Write_Stream_LE(Buffer, Length, NULL); -} - -uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const uint8_t Data) -{ - if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - return ENDPOINT_RWSTREAM_DeviceDisconnected; - - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); - - if (!(Endpoint_IsReadWriteAllowed())) - { - Endpoint_ClearIN(); - - uint8_t ErrorCode; - - if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError) - return ErrorCode; - } - - Endpoint_Write_8(Data); - return ENDPOINT_READYWAIT_NoError; -} - -uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - return ENDPOINT_RWSTREAM_DeviceDisconnected; - - uint8_t ErrorCode; - - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address); - - if (!(Endpoint_BytesInEndpoint())) - return ENDPOINT_READYWAIT_NoError; - - bool BankFull = !(Endpoint_IsReadWriteAllowed()); - - Endpoint_ClearIN(); - - if (BankFull) - { - if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError) - return ErrorCode; - - Endpoint_ClearIN(); - } - - return ENDPOINT_READYWAIT_NoError; -} - -uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - return 0; - - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpoint.Address); - - if (Endpoint_IsOUTReceived()) - { - if (!(Endpoint_BytesInEndpoint())) - { - Endpoint_ClearOUT(); - return 0; - } - else - { - return Endpoint_BytesInEndpoint(); - } - } - else - { - return 0; - } -} - -int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - return -1; - - int16_t ReceivedByte = -1; - - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpoint.Address); - - if (Endpoint_IsOUTReceived()) - { - if (Endpoint_BytesInEndpoint()) - ReceivedByte = Endpoint_Read_8(); - - if (!(Endpoint_BytesInEndpoint())) - Endpoint_ClearOUT(); - } - - return ReceivedByte; -} - -void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ - if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS)) - return; - - Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.NotificationEndpoint.Address); - - USB_Request_Header_t Notification = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE), - .bRequest = CDC_NOTIF_SerialState, - .wValue = CPU_TO_LE16(0), - .wIndex = CPU_TO_LE16(0), - .wLength = CPU_TO_LE16(sizeof(CDCInterfaceInfo->State.ControlLineStates.DeviceToHost)), - }; - - Endpoint_Write_Stream_LE(&Notification, sizeof(USB_Request_Header_t), NULL); - Endpoint_Write_Stream_LE(&CDCInterfaceInfo->State.ControlLineStates.DeviceToHost, - sizeof(CDCInterfaceInfo->State.ControlLineStates.DeviceToHost), - NULL); - Endpoint_ClearIN(); -} - -#if defined(FDEV_SETUP_STREAM) -void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - FILE* const Stream) -{ - *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar, _FDEV_SETUP_RW); - fdev_set_udata(Stream, CDCInterfaceInfo); -} - -void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - FILE* const Stream) -{ - *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW); - fdev_set_udata(Stream, CDCInterfaceInfo); -} - -static int CDC_Device_putchar(char c, - FILE* Stream) -{ - return CDC_Device_SendByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : 0; -} - -static int CDC_Device_getchar(FILE* Stream) -{ - int16_t ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream)); - - if (ReceivedByte < 0) - return _FDEV_EOF; - - return ReceivedByte; -} - -static int CDC_Device_getchar_Blocking(FILE* Stream) -{ - int16_t ReceivedByte; - - while ((ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream))) < 0) - { - if (USB_DeviceState == DEVICE_STATE_Unattached) - return _FDEV_EOF; - - CDC_Device_USBTask((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream)); - USB_USBTask(); - } - - return ReceivedByte; -} -#endif - -__WEAK void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ -} - -__WEAK void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) -{ -} - -__WEAK void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const uint8_t Duration) -{ -} - - -#endif -#endif - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Device/CDCClassDevice.h b/cores/usblib/Class/Device/CDCClassDevice.h deleted file mode 100644 index 8643f6b5..00000000 --- a/cores/usblib/Class/Device/CDCClassDevice.h +++ /dev/null @@ -1,351 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Device mode driver for the library USB CDC Class driver. - * - * Device mode driver for the library USB CDC Class driver. - * - * \note This file should not be included directly. It is automatically included as needed by the USB module driver - * dispatch header located in LUFA/Drivers/USB.h. - */ - -/** \ingroup Group_USBClassCDC - * \defgroup Group_USBClassCDCDevice CDC Class Device Mode Driver - * - * \section Sec_USBClassCDCDevice_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - LUFA/Drivers/USB/Class/Device/CDCClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - * \section Sec_USBClassCDCDevice_ModDescription Module Description - * Device Mode USB Class driver framework interface, for the CDC USB Class driver. - * - * \note There are several major drawbacks to the CDC-ACM standard USB class, however - * it is very standardized and thus usually available as a built-in driver on - * most platforms, and so is a better choice than a proprietary serial class. - * - * One major issue with CDC-ACM is that it requires two Interface descriptors, - * which will upset most hosts when part of a multi-function "Composite" USB - * device. This is because each interface will be loaded into a separate driver - * instance, causing the two interfaces be become unlinked. To prevent this, you - * should use the "Interface Association Descriptor" addendum to the USB 2.0 standard - * which is available on most OSes when creating Composite devices. - * - * Another major oversight is that there is no mechanism for the host to notify the - * device that there is a data sink on the host side ready to accept data. This - * means that the device may try to send data while the host isn't listening, causing - * lengthy blocking timeouts in the transmission routines. It is thus highly recommended - * that the virtual serial line DTR (Data Terminal Ready) signal be used where possible - * to determine if a host application is ready for data. - * - * @{ - */ - -#ifndef _CDC_CLASS_DEVICE_H_ -#define _CDC_CLASS_DEVICE_H_ -#if defined(USB0) - /* Includes: */ - #include <../../usblib.h> - #include <../Common/CDCClassCommon.h> - - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_CDC_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Type Defines: */ - /** \brief CDC Class Device Mode Configuration and State Structure. - * - * Class state structure. An instance of this structure should be made for each CDC interface - * within the user application, and passed to each of the CDC class driver functions as the - * CDCInterfaceInfo parameter. This stores each CDC interface's configuration and state information. - */ - typedef struct - { - struct - { - uint8_t ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device. */ - - USB_Endpoint_Table_t DataINEndpoint; /**< Data IN endpoint configuration table. */ - USB_Endpoint_Table_t DataOUTEndpoint; /**< Data OUT endpoint configuration table. */ - USB_Endpoint_Table_t NotificationEndpoint; /**< Notification IN Endpoint configuration table. */ - } Config; /**< Config data for the USB class interface within the device. All elements in this section - * must be set or the interface will fail to enumerate and operate correctly. - */ - struct - { - struct - { - uint16_t HostToDevice; /**< Control line states from the host to device, as a set of \c CDC_CONTROL_LINE_OUT_* - * masks. This value is updated each time \ref CDC_Device_USBTask() is called. - */ - uint16_t DeviceToHost; /**< Control line states from the device to host, as a set of \c CDC_CONTROL_LINE_IN_* - * masks - to notify the host of changes to these values, call the - * \ref CDC_Device_SendControlLineStateChange() function. - */ - } ControlLineStates; /**< Current states of the virtual serial port's control lines between the device and host. */ - - CDC_LineEncoding_t LineEncoding; /**< Line encoding used in the virtual serial port, for the device's information. - * This is generally only used if the virtual serial port data is to be - * reconstructed on a physical UART. - */ - } State; /**< State data for the USB class interface within the device. All elements in this section - * are reset to their defaults when the interface is enumerated. - */ - } USB_ClassInfo_CDC_Device_t; - - /* Function Prototypes: */ - /** Configures the endpoints of a given CDC interface, ready for use. This should be linked to the library - * \ref EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration containing - * the given CDC interface is selected. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * - * \return Boolean \c true if the endpoints were successfully configured, \c false otherwise. - */ - bool CDC_Device_ConfigureEndpoints(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** Processes incoming control requests from the host, that are directed to the given CDC class interface. This should be - * linked to the library \ref EVENT_USB_Device_ControlRequest() event. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - */ - void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** General management task for a given CDC class interface, required for the correct operation of the interface. This should - * be called frequently in the main program loop, before the master USB management task \ref USB_USBTask(). - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - */ - void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** CDC class driver event for a line encoding change on a CDC interface. This event fires each time the host requests a - * line encoding change (containing the serial parity, baud and other configuration information) and may be hooked in the - * user program by declaring a handler function with the same name and parameters listed here. The new line encoding - * settings are available in the \c LineEncoding structure inside the CDC interface structure passed as a parameter. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - */ - void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** CDC class driver event for a control line state change on a CDC interface. This event fires each time the host requests a - * control line state change (containing the virtual serial control line states, such as DTR) and may be hooked in the - * user program by declaring a handler function with the same name and parameters listed here. The new control line states - * are available in the \c ControlLineStates.HostToDevice value inside the CDC interface structure passed as a parameter, set as - * a mask of \c CDC_CONTROL_LINE_OUT_* masks. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - */ - void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** CDC class driver event for a send break request sent to the device from the host. This is generally used to separate - * data or to indicate a special condition to the receiving device. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * \param[in] Duration Duration of the break that has been sent by the host, in milliseconds. - */ - void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1); - - /** Sends a given data buffer to the attached USB host, if connected. If a host is not connected when the function is - * called, the string is discarded. Bytes will be queued for transmission to the host until either the endpoint bank - * becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to the host. This allows - * for multiple bytes to be packed into a single endpoint packet, increasing data throughput. - * - * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or - * the call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * \param[in] Buffer Pointer to a buffer containing the data to send to the device. - * \param[in] Length Length of the data to send to the host. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t CDC_Device_SendData(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const void* const Buffer, - const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - - /** Sends a given null terminated string to the attached USB host, if connected. If a host is not connected when - * the function is called, the string is discarded. Bytes will be queued for transmission to the host until either - * the endpoint bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to - * the host. This allows for multiple bytes to be packed into a single endpoint packet, increasing data throughput. - * - * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or - * the call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * \param[in] String Pointer to the null terminated string to send to the host. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - - /** Sends a given byte to the attached USB host, if connected. If a host is not connected when the function is called, the - * byte is discarded. Bytes will be queued for transmission to the host until either the endpoint bank becomes full, or the - * \ref CDC_Device_Flush() function is called to flush the pending data to the host. This allows for multiple bytes to be - * packed into a single endpoint packet, increasing data throughput. - * - * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or - * the call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * \param[in] Data Byte of data to send to the host. - * - * \return A value from the \ref Endpoint_WaitUntilReady_ErrorCodes_t enum. - */ - uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const uint8_t Data) ATTR_NON_NULL_PTR_ARG(1); - - /** Determines the number of bytes received by the CDC interface from the host, waiting to be read. This indicates the number - * of bytes in the OUT endpoint bank only, and thus the number of calls to \ref CDC_Device_ReceiveByte() which are guaranteed to - * succeed immediately. If multiple bytes are to be received, they should be buffered by the user application, as the endpoint - * bank will not be released back to the USB controller until all bytes are read. - * - * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or - * the call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * - * \return Total number of buffered bytes received from the host. - */ - uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** Reads a byte of data from the host. If no data is waiting to be read of if a USB host is not connected, the function - * returns a negative value. The \ref CDC_Device_BytesReceived() function may be queried in advance to determine how many - * bytes are currently buffered in the CDC interface's data receive endpoint bank, and thus how many repeated calls to this - * function which are guaranteed to succeed. - * - * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or - * the call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * - * \return Next received byte from the host, or a negative value if no data received. - */ - int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** Flushes any data waiting to be sent, ensuring that the send buffer is cleared. - * - * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or - * the call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * - * \return A value from the \ref Endpoint_WaitUntilReady_ErrorCodes_t enum. - */ - uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** Sends a Serial Control Line State Change notification to the host. This should be called when the virtual serial - * control lines (DCD, DSR, etc.) have changed states, or to give BREAK notifications to the host. Line states persist - * until they are cleared via a second notification. This should be called each time the CDC class driver's - * \c ControlLineStates.DeviceToHost value is updated to push the new states to the USB host. - * - * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or - * the call will fail. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - */ - void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - #if defined(FDEV_SETUP_STREAM) || defined(__DOXYGEN__) - /** Creates a standard character stream for the given CDC Device instance so that it can be used with all the regular - * functions in the standard library that accept a \c FILE stream as a destination (e.g. \c fprintf()). The created - * stream is bidirectional and can be used for both input and output functions. - * - * Reading data from this stream is non-blocking, i.e. in most instances, complete strings cannot be read in by a single - * fetch, as the endpoint will not be ready at some point in the transmission, aborting the transfer. However, this may - * be used when the read data is processed byte-per-bye (via \c getc()) or when the user application will implement its own - * line buffering. - * - * \note The created stream can be given as \c stdout if desired to direct the standard output from all \c functions - * to the given CDC interface. - * \n\n - * - * \note This function is not available on all microcontroller architectures. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * \param[in,out] Stream Pointer to a FILE structure where the created stream should be placed. - */ - void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - FILE* const Stream) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - - /** Identical to \ref CDC_Device_CreateStream(), except that reads are blocking until the calling stream function terminates - * the transfer. While blocking, the USB and CDC service tasks are called repeatedly to maintain USB communications. - * - * \note This function is not available on all microcontroller architectures. - * - * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. - * \param[in,out] Stream Pointer to a FILE structure where the created stream should be placed. - */ - void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - FILE* const Stream) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - #endif - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Function Prototypes: */ - #if defined(__INCLUDE_FROM_CDC_DEVICE_C) - #if defined(FDEV_SETUP_STREAM) - static int CDC_Device_putchar(char c, - FILE* Stream) ATTR_NON_NULL_PTR_ARG(2); - static int CDC_Device_getchar(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1); - static int CDC_Device_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1); - #endif - - void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo); - void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo); - void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, - const uint8_t Duration); - #endif - - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif -#endif -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Device/HIDClassDevice.c b/cores/usblib/Class/Device/HIDClassDevice.c deleted file mode 100644 index ddf002b8..00000000 --- a/cores/usblib/Class/Device/HIDClassDevice.c +++ /dev/null @@ -1,217 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ -#if defined(USB0) -#define __INCLUDE_FROM_USB_DRIVER -#include <../../Core/USBMode.h> - -#if defined(USB_CAN_BE_DEVICE) - -#define __INCLUDE_FROM_HID_DRIVER -#define __INCLUDE_FROM_HID_DEVICE_C -#include - -void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) -{ - if (!(Endpoint_IsSETUPReceived())) - return; - - if (USB_ControlRequest.wIndex != HIDInterfaceInfo->Config.InterfaceNumber) - return; - - switch (USB_ControlRequest.bRequest) - { - case HID_REQ_GetReport: - if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) - { - uint16_t ReportSize = 0; - uint8_t ReportID = (USB_ControlRequest.wValue & 0xFF); - uint8_t ReportType = (USB_ControlRequest.wValue >> 8) - 1; - uint8_t ReportData[HIDInterfaceInfo->Config.PrevReportINBufferSize]; - - memset(ReportData, 0, sizeof(ReportData)); - - //CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportType, ReportData, &ReportSize); - - if (HIDInterfaceInfo->Config.PrevReportINBuffer != NULL) - { - MEMCPY(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportData, - HIDInterfaceInfo->Config.PrevReportINBufferSize); - } - - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); - - Endpoint_ClearSETUP(); - - if (ReportID) - Endpoint_Write_8(ReportID); - - Endpoint_Write_Control_Stream_LE(ReportData, ReportSize); - Endpoint_ClearOUT(); - } - - break; - case HID_REQ_SetReport: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - uint16_t ReportSize = USB_ControlRequest.wLength; - uint8_t ReportID = (USB_ControlRequest.wValue & 0xFF); - uint8_t ReportType = (USB_ControlRequest.wValue >> 8) - 1; - uint8_t ReportData[ReportSize]; - - Endpoint_ClearSETUP(); - Endpoint_Read_Control_Stream_LE(ReportData, ReportSize); - Endpoint_ClearIN(); - - CALLBACK_HID_Device_ProcessHIDReport(HIDInterfaceInfo, ReportID, ReportType, - &ReportData[ReportID ? 1 : 0], ReportSize - (ReportID ? 1 : 0)); - } - - break; - case HID_REQ_GetProtocol: - if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - while (!(Endpoint_IsINReady())); - Endpoint_Write_8(HIDInterfaceInfo->State.UsingReportProtocol); - Endpoint_ClearIN(); - Endpoint_ClearStatusStage(); - } - - break; - case HID_REQ_SetProtocol: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - - HIDInterfaceInfo->State.UsingReportProtocol = ((USB_ControlRequest.wValue & 0xFF) != 0x00); - } - - break; - case HID_REQ_SetIdle: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - - HIDInterfaceInfo->State.IdleCount = ((USB_ControlRequest.wValue & 0xFF00) >> 6); - } - - break; - case HID_REQ_GetIdle: - if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - while (!(Endpoint_IsINReady())); - Endpoint_Write_8(HIDInterfaceInfo->State.IdleCount >> 2); - Endpoint_ClearIN(); - Endpoint_ClearStatusStage(); - } - - break; - } -} - -bool HID_Device_ConfigureEndpoints(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) -{ - memset(&HIDInterfaceInfo->State, 0x00, sizeof(HIDInterfaceInfo->State)); - HIDInterfaceInfo->State.UsingReportProtocol = true; - HIDInterfaceInfo->State.IdleCount = 750; - - HIDInterfaceInfo->Config.ReportINEndpoint.Type = EP_TYPE_INTERRUPT; - - if (!(Endpoint_ConfigureEndpointTable(&HIDInterfaceInfo->Config.ReportINEndpoint, 1))) - return false; - - return true; -} -void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, int8_t _ReportINData[], uint8_t _ReportID, uint16_t _ReportINSize, bool ForceSend ) -//void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) -{ - if (USB_DeviceState != DEVICE_STATE_Configured) - return; - - if (HIDInterfaceInfo->State.PrevFrameNum == USB_Device_GetFrameNumber()) - { - #if defined(USB_DEVICE_OPT_LOWSPEED) - if (!(USB_Options & USB_DEVICE_OPT_LOWSPEED)) - return; - #else - return; - #endif - } - - Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpoint.Address); - - if (Endpoint_IsReadWriteAllowed()) - { - uint8_t ReportINData[HIDInterfaceInfo->Config.PrevReportINBufferSize]; - uint8_t ReportID =0;// _ReportID; - uint16_t ReportINSize =0;// _ReportINSize; - - memset(ReportINData, 0, sizeof(ReportINData)); - memcpy(ReportINData, _ReportINData, sizeof(ReportINData)); - - // ForceSend = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID,HID_REPORT_ITEM_In, ReportINData, &ReportINSize); - ReportID = _ReportID; - ReportINSize = _ReportINSize; - bool StatesChanged = false; - bool IdlePeriodElapsed = (HIDInterfaceInfo->State.IdleCount && !(HIDInterfaceInfo->State.IdleMSRemaining)); - - if (HIDInterfaceInfo->Config.PrevReportINBuffer != NULL) - { - StatesChanged = (memcmp(ReportINData, HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINSize) != 0); - MEMCPY(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINData, HIDInterfaceInfo->Config.PrevReportINBufferSize); - } - - if (ReportINSize && (ForceSend || StatesChanged || IdlePeriodElapsed)) - { - HIDInterfaceInfo->State.IdleMSRemaining = HIDInterfaceInfo->State.IdleCount; - - Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpoint.Address); - - if (ReportID) - Endpoint_Write_8(ReportID); - - Endpoint_Write_Stream_LE(ReportINData, ReportINSize, NULL); - - Endpoint_ClearIN(); - } - - HIDInterfaceInfo->State.PrevFrameNum = USB_Device_GetFrameNumber(); - } -} - -#endif -#endif - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Device/HIDClassDevice.h b/cores/usblib/Class/Device/HIDClassDevice.h deleted file mode 100644 index 345d09b3..00000000 --- a/cores/usblib/Class/Device/HIDClassDevice.h +++ /dev/null @@ -1,213 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Device mode driver for the library USB HID Class driver. - * - * Device mode driver for the library USB HID Class driver. - * - * \note This file should not be included directly. It is automatically included as needed by the USB module driver - * dispatch header located in LUFA/Drivers/USB.h. - */ - -/** \ingroup Group_USBClassHID - * \defgroup Group_USBClassHIDDevice HID Class Device Mode Driver - * - * \section Sec_USBClassHIDDevice_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - LUFA/Drivers/USB/Class/Device/HIDClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - * \section Sec_USBClassHIDDevice_ModDescription Module Description - * Device Mode USB Class driver framework interface, for the HID USB Class driver. - * - * @{ - */ - -#ifndef _HID_CLASS_DEVICE_H_ -#define _HID_CLASS_DEVICE_H_ -#if defined(USB0) - /* Includes: */ - #include <../../usblib.h> - #include <../Common/HIDClassCommon.h> - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_HID_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. - #endif - /* Public Interface - May be used in end-application: */ - /* Type Defines: */ - /** \brief HID Class Device Mode Configuration and State Structure. - * - * Class state structure. An instance of this structure should be made for each HID interface - * within the user application, and passed to each of the HID class driver functions as the - * \c HIDInterfaceInfo parameter. This stores each HID interface's configuration and state information. - * - * \note Due to technical limitations, the HID device class driver does not utilize a separate OUT - * endpoint for host->device communications. Instead, the host->device data (if any) is sent to - * the device via the control endpoint. - */ - typedef struct - { - struct - { - uint8_t InterfaceNumber; /**< Interface number of the HID interface within the device. */ - - USB_Endpoint_Table_t ReportINEndpoint; /**< Data IN HID report endpoint configuration table. */ - - void* PrevReportINBuffer; /**< Pointer to a buffer where the previously created HID input report can be - * stored by the driver, for comparison purposes to detect report changes that - * must be sent immediately to the host. This should point to a buffer big enough - * to hold the largest HID input report sent from the HID interface. If this is set - * to \c NULL, it is up to the user to force transfers when needed in the - * \ref CALLBACK_HID_Device_CreateHIDReport() callback function. - * - * \note Due to the single buffer, the internal driver can only correctly compare - * subsequent reports with identical report IDs. In multiple report devices, - * this buffer should be set to \c NULL and the decision to send reports made - * by the user application instead. - */ - uint8_t PrevReportINBufferSize; /**< Size in bytes of the given input report buffer. This is used to create a - * second buffer of the same size within the driver so that subsequent reports - * can be compared. If the user app is to determine when reports are to be sent - * exclusively (i.e. \c PrevReportINBuffer is \c NULL) this value must still be - * set to the size of the largest report the device can issue to the host. - */ - } Config; /**< Config data for the USB class interface within the device. All elements in this section - * must be set or the interface will fail to enumerate and operate correctly. - */ - struct - { - bool UsingReportProtocol; /**< Indicates if the HID interface is set to Boot or Report protocol mode. */ - uint16_t PrevFrameNum; /**< Frame number of the previous HID report packet opportunity. */ - uint16_t IdleCount; /**< Report idle period, in milliseconds, set by the host. */ - uint16_t IdleMSRemaining; /**< Total number of milliseconds remaining before the idle period elapsed - this - * should be decremented by the user application if non-zero each millisecond. */ - } State; /**< State data for the USB class interface within the device. All elements in this section - * are reset to their defaults when the interface is enumerated. - */ - } USB_ClassInfo_HID_Device_t; - - /* Function Prototypes: */ - /** Configures the endpoints of a given HID interface, ready for use. This should be linked to the library - * \ref EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration - * containing the given HID interface is selected. - * - * \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state. - * - * \return Boolean \c true if the endpoints were successfully configured, \c false otherwise. - */ - bool HID_Device_ConfigureEndpoints(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** Processes incoming control requests from the host, that are directed to the given HID class interface. This should be - * linked to the library \ref EVENT_USB_Device_ControlRequest() event. - * - * \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state. - */ - void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** General management task for a given HID class interface, required for the correct operation of the interface. This should - * be called frequently in the main program loop, before the master USB management task \ref USB_USBTask(). - * - * \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state. - */ - void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, int8_t _ReportINData[], uint8_t _ReportID, uint16_t _ReportINSize, bool ForceSend ) ATTR_NON_NULL_PTR_ARG(1); - - //void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** HID class driver callback for the user creation of a HID IN report. This callback may fire in response to either - * HID class control requests from the host, or by the normal HID endpoint polling procedure. Inside this callback the - * user is responsible for the creation of the next HID input report to be sent to the host. - * - * \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state. - * \param[in,out] ReportID If preset to a non-zero value, this is the report ID being requested by the host. If zero, - * this should be set to the report ID of the generated HID input report (if any). If multiple - * reports are not sent via the given HID interface, this parameter should be ignored. - * \param[in] ReportType Type of HID report to generate, either \ref HID_REPORT_ITEM_In or \ref HID_REPORT_ITEM_Feature. - * \param[out] ReportData Pointer to a buffer where the generated HID report should be stored. - * \param[out] ReportSize Number of bytes in the generated input report, or zero if no report is to be sent. - * - * \return Boolean \c true to force the sending of the report even if it is identical to the previous report and still within - * the idle period (useful for devices which report relative movement), \c false otherwise. - */ - bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, - uint8_t* const ReportID, - const uint8_t ReportType, - void* ReportData, - uint16_t* const ReportSize) ATTR_NON_NULL_PTR_ARG(1) - ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(4) ATTR_NON_NULL_PTR_ARG(5); - - /** HID class driver callback for the user processing of a received HID OUT report. This callback may fire in response to - * either HID class control requests from the host, or by the normal HID endpoint polling procedure. Inside this callback - * the user is responsible for the processing of the received HID output report from the host. - * - * \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state. - * \param[in] ReportID Report ID of the received output report. If multiple reports are not received via the given HID - * interface, this parameter should be ignored. - * \param[in] ReportType Type of received HID report, either \ref HID_REPORT_ITEM_Out or \ref HID_REPORT_ITEM_Feature. - * \param[in] ReportData Pointer to a buffer where the received HID report is stored. - * \param[in] ReportSize Size in bytes of the received report from the host. - */ - void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, - const uint8_t ReportID, - const uint8_t ReportType, - const void* ReportData, - const uint16_t ReportSize) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(4); - - /* Inline Functions: */ - /** Indicates that a millisecond of idle time has elapsed on the given HID interface, and the interface's idle count should be - * decremented. This should be called once per millisecond so that hardware key-repeats function correctly. It is recommended - * that this be called by the \ref EVENT_USB_Device_StartOfFrame() event, once SOF events have been enabled via - * \ref USB_Device_EnableSOFEvents(). - * - * \param[in,out] HIDInterfaceInfo Pointer to a structure containing a HID Class configuration and state. - */ - static inline void HID_Device_MillisecondElapsed(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) ATTR_ALWAYS_INLINE ATTR_NON_NULL_PTR_ARG(1); - static inline void HID_Device_MillisecondElapsed(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo) - { - if (HIDInterfaceInfo->State.IdleMSRemaining) - HIDInterfaceInfo->State.IdleMSRemaining--; - } - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif -#endif -#endif -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Device/MassStorageClassDevice.c b/cores/usblib/Class/Device/MassStorageClassDevice.c deleted file mode 100644 index 1a39ef60..00000000 --- a/cores/usblib/Class/Device/MassStorageClassDevice.c +++ /dev/null @@ -1,220 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ -#if defined(USB0) -#define __INCLUDE_FROM_USB_DRIVER -#include <../../Core/USBMode.h> - -#if defined(USB_CAN_BE_DEVICE) - -#define __INCLUDE_FROM_MS_DRIVER -#define __INCLUDE_FROM_MASSSTORAGE_DEVICE_C -#define INTERRUPT_CONTROL_ENDPOINT -#include - -void MS_Device_ProcessControlRequest(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) -{ - if (!(Endpoint_IsSETUPReceived())) - return; - - if (USB_ControlRequest.wIndex != MSInterfaceInfo->Config.InterfaceNumber) - return; - - switch (USB_ControlRequest.bRequest) - { - case MS_REQ_MassStorageReset: - if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - Endpoint_ClearStatusStage(); - - MSInterfaceInfo->State.IsMassStoreReset = true; - } - - break; - case MS_REQ_GetMaxLUN: - if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) - { - Endpoint_ClearSETUP(); - while (!(Endpoint_IsINReady())); - Endpoint_Write_8(MSInterfaceInfo->Config.TotalLUNs - 1); - Endpoint_ClearIN(); - Endpoint_ClearStatusStage(); - } - - break; - } -} - -bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) -{ - memset(&MSInterfaceInfo->State, 0x00, sizeof(MSInterfaceInfo->State)); - - MSInterfaceInfo->Config.DataINEndpoint.Type = EP_TYPE_BULK; - MSInterfaceInfo->Config.DataOUTEndpoint.Type = EP_TYPE_BULK; - - if (!(Endpoint_ConfigureEndpointTable(&MSInterfaceInfo->Config.DataINEndpoint, 1))) - return false; - - if (!(Endpoint_ConfigureEndpointTable(&MSInterfaceInfo->Config.DataOUTEndpoint, 1))) - return false; - - return true; -} - -void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) -{ - if (USB_DeviceState != DEVICE_STATE_Configured) - return; - - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpoint.Address); - - if (Endpoint_IsOUTReceived()) - { - if (MS_Device_ReadInCommandBlock(MSInterfaceInfo)) - { - if (MSInterfaceInfo->State.CommandBlock.Flags & MS_COMMAND_DIR_DATA_IN) - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataINEndpoint.Address); - - bool SCSICommandResult = CALLBACK_MS_Device_SCSICommandReceived(MSInterfaceInfo); - - MSInterfaceInfo->State.CommandStatus.Status = (SCSICommandResult) ? MS_SCSI_COMMAND_Pass : MS_SCSI_COMMAND_Fail; - MSInterfaceInfo->State.CommandStatus.Signature = CPU_TO_LE32(MS_CSW_SIGNATURE); - MSInterfaceInfo->State.CommandStatus.Tag = MSInterfaceInfo->State.CommandBlock.Tag; - MSInterfaceInfo->State.CommandStatus.DataTransferResidue = MSInterfaceInfo->State.CommandBlock.DataTransferLength; - - if (!(SCSICommandResult) && (le32_to_cpu(MSInterfaceInfo->State.CommandStatus.DataTransferResidue))) - Endpoint_StallTransaction(); - - MS_Device_ReturnCommandStatus(MSInterfaceInfo); - } - } - - if (MSInterfaceInfo->State.IsMassStoreReset) - { - Endpoint_ResetEndpoint(MSInterfaceInfo->Config.DataOUTEndpoint.Address); - Endpoint_ResetEndpoint(MSInterfaceInfo->Config.DataINEndpoint.Address); - - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpoint.Address); - Endpoint_ClearStall(); - Endpoint_ResetDataToggle(); - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataINEndpoint.Address); - Endpoint_ClearStall(); - Endpoint_ResetDataToggle(); - - MSInterfaceInfo->State.IsMassStoreReset = false; - } -} - -static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) -{ - uint16_t BytesProcessed; - - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpoint.Address); - - BytesProcessed = 0; - while (Endpoint_Read_Stream_LE(&MSInterfaceInfo->State.CommandBlock, - (sizeof(MS_CommandBlockWrapper_t) - 16), &BytesProcessed) == - ENDPOINT_RWSTREAM_IncompleteTransfer) - { - if (MSInterfaceInfo->State.IsMassStoreReset) - return false; - } - - if ((MSInterfaceInfo->State.CommandBlock.Signature != CPU_TO_LE32(MS_CBW_SIGNATURE)) || - (MSInterfaceInfo->State.CommandBlock.LUN >= MSInterfaceInfo->Config.TotalLUNs) || - (MSInterfaceInfo->State.CommandBlock.Flags & 0x1F) || - (MSInterfaceInfo->State.CommandBlock.SCSICommandLength == 0) || - (MSInterfaceInfo->State.CommandBlock.SCSICommandLength > 16)) - { - Endpoint_StallTransaction(); - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataINEndpoint.Address); - Endpoint_StallTransaction(); - - return false; - } - - BytesProcessed = 0; - while (Endpoint_Read_Stream_LE(&MSInterfaceInfo->State.CommandBlock.SCSICommandData, - MSInterfaceInfo->State.CommandBlock.SCSICommandLength, &BytesProcessed) == - ENDPOINT_RWSTREAM_IncompleteTransfer) - { - if (MSInterfaceInfo->State.IsMassStoreReset) - return false; - } - - Endpoint_ClearOUT(); - - return true; -} - -static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) -{ - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpoint.Address); - - while (Endpoint_IsStalled()) - { - #if !defined(INTERRUPT_CONTROL_ENDPOINT) - USB_USBTask(); - #endif - - if (MSInterfaceInfo->State.IsMassStoreReset) - return; - } - - Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataINEndpoint.Address); - - while (Endpoint_IsStalled()) - { - #if !defined(INTERRUPT_CONTROL_ENDPOINT) - USB_USBTask(); - #endif - - if (MSInterfaceInfo->State.IsMassStoreReset) - return; - } - - uint16_t BytesProcessed = 0; - while (Endpoint_Write_Stream_LE(&MSInterfaceInfo->State.CommandStatus, - sizeof(MS_CommandStatusWrapper_t), &BytesProcessed) == - ENDPOINT_RWSTREAM_IncompleteTransfer) - { - if (MSInterfaceInfo->State.IsMassStoreReset) - return; - } - - Endpoint_ClearIN(); -} -#endif -#endif - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/Device/MassStorageClassDevice.h b/cores/usblib/Class/Device/MassStorageClassDevice.h deleted file mode 100644 index 81f0d13e..00000000 --- a/cores/usblib/Class/Device/MassStorageClassDevice.h +++ /dev/null @@ -1,165 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Device mode driver for the library USB Mass Storage Class driver. - * - * Device mode driver for the library USB Mass Storage Class driver. - * - * \note This file should not be included directly. It is automatically included as needed by the USB module driver - * dispatch header located in LUFA/Drivers/USB.h. - */ - -/** \ingroup Group_USBClassMS - * \defgroup Group_USBClassMSDevice Mass Storage Class Device Mode Driver - * - * \section Sec_USBClassMSDevice_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - * \section Sec_USBClassMSDevice_ModDescription Module Description - * Device Mode USB Class driver framework interface, for the Mass Storage USB Class driver. - * - * @{ - */ - -#ifndef _MS_CLASS_DEVICE_H_ -#define _MS_CLASS_DEVICE_H_ -#if defined(USB0) - /* Includes: */ - #include <../../usblib.h> - #include <../Common/MassStorageClassCommon.h> - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_MS_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Type Defines: */ - /** \brief Mass Storage Class Device Mode Configuration and State Structure. - * - * Class state structure. An instance of this structure should be made for each Mass Storage interface - * within the user application, and passed to each of the Mass Storage class driver functions as the - * \c MSInterfaceInfo parameter. This stores each Mass Storage interface's configuration and state information. - */ - typedef struct - { - struct - { - uint8_t InterfaceNumber; /**< Interface number of the Mass Storage interface within the device. */ - - USB_Endpoint_Table_t DataINEndpoint; /**< Data IN endpoint configuration table. */ - USB_Endpoint_Table_t DataOUTEndpoint; /**< Data OUT endpoint configuration table. */ - - uint8_t TotalLUNs; /**< Total number of logical drives in the Mass Storage interface. */ - } Config; /**< Config data for the USB class interface within the device. All elements in this section - * must be set or the interface will fail to enumerate and operate correctly. - */ - struct - { - MS_CommandBlockWrapper_t CommandBlock; /**< Mass Storage class command block structure, stores the received SCSI - * command from the host which is to be processed. - */ - MS_CommandStatusWrapper_t CommandStatus; /**< Mass Storage class command status structure, set elements to indicate - * the issued command's success or failure to the host. - */ - volatile bool IsMassStoreReset; /**< Flag indicating that the host has requested that the Mass Storage interface be reset - * and that all current Mass Storage operations should immediately abort. - */ - } State; /**< State data for the USB class interface within the device. All elements in this section - * are reset to their defaults when the interface is enumerated. - */ - } USB_ClassInfo_MS_Device_t; - - /* Function Prototypes: */ - /** Configures the endpoints of a given Mass Storage interface, ready for use. This should be linked to the library - * \ref EVENT_USB_Device_ConfigurationChanged() event so that the endpoints are configured when the configuration - * containing the given Mass Storage interface is selected. - * - * \param[in,out] MSInterfaceInfo Pointer to a structure containing a Mass Storage Class configuration and state. - * - * \return Boolean \c true if the endpoints were successfully configured, \c false otherwise. - */ - bool MS_Device_ConfigureEndpoints(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** Processes incoming control requests from the host, that are directed to the given Mass Storage class interface. This should be - * linked to the library \ref EVENT_USB_Device_ControlRequest() event. - * - * \param[in,out] MSInterfaceInfo Pointer to a structure containing a Mass Storage Class configuration and state. - */ - void MS_Device_ProcessControlRequest(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** General management task for a given Mass Storage class interface, required for the correct operation of the interface. This should - * be called frequently in the main program loop, before the master USB management task \ref USB_USBTask(). - * - * \param[in,out] MSInterfaceInfo Pointer to a structure containing a Mass Storage configuration and state. - */ - void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /** Mass Storage class driver callback for the user processing of a received SCSI command. This callback will fire each time the - * host sends a SCSI command which requires processing by the user application. Inside this callback the user is responsible - * for the processing of the received SCSI command from the host. The SCSI command is available in the CommandBlock structure - * inside the Mass Storage class state structure passed as a parameter to the callback function. - * - * \param[in,out] MSInterfaceInfo Pointer to a structure containing a Mass Storage Class configuration and state. - * - * \return Boolean \c true if the SCSI command was successfully processed, \c false otherwise. - */ - bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Function Prototypes: */ - #if defined(__INCLUDE_FROM_MASSSTORAGE_DEVICE_C) - static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); - #endif - - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif -#endif -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/HIDClass.h b/cores/usblib/Class/HIDClass.h deleted file mode 100644 index df0451e2..00000000 --- a/cores/usblib/Class/HIDClass.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Master include file for the library USB HID Class driver. - * - * Master include file for the library USB HID Class driver, for both host and device modes, where available. - * - * This file should be included in all user projects making use of this optional class driver, instead of - * including any headers in the USB/ClassDriver/Device, USB/ClassDriver/Host or USB/ClassDriver/Common subdirectories. - */ - -/** \ingroup Group_USBClassDrivers - * \defgroup Group_USBClassHID HID Class Driver - * \brief USB class driver for the USB-IF Human Interface Device (HID) class standard. - * - * \section Sec_USBClassHID_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - LUFA/Drivers/USB/Class/Device/HIDClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - LUFA/Drivers/USB/Class/Host/HIDClassHost.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - LUFA/Drivers/USB/Class/Host/HIDParser.c (Makefile source module name: LUFA_SRC_USB) - * - * \section Sec_USBClassHID_ModDescription Module Description - * HID Class Driver module. This module contains an internal implementation of the USB HID Class, for both Device - * and Host USB modes. User applications can use this class driver instead of implementing the HID class manually - * via the low-level LUFA APIs. - * - * This module is designed to simplify the user code by exposing only the required interface needed to interface with - * Hosts or Devices using the USB HID Class. - * - * @{ - */ - -#ifndef _HID_CLASS_H_ -#define _HID_CLASS_H_ -#if defined(USB0) - /* Macros: */ - #define __INCLUDE_FROM_USB_DRIVER - #define __INCLUDE_FROM_HID_DRIVER - - /* Includes: */ - #include <../Core/USBMode.h> - - #if defined(USB_CAN_BE_DEVICE) - #include - #endif - - #if defined(USB_CAN_BE_HOST) - #include - #endif - -#endif -#endif -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Class/MassStorageClass.h b/cores/usblib/Class/MassStorageClass.h deleted file mode 100644 index 15513a8a..00000000 --- a/cores/usblib/Class/MassStorageClass.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Master include file for the library USB Mass Storage Class driver. - * - * Master include file for the library USB Mass Storage Class driver, for both host and device modes, where available. - * - * This file should be included in all user projects making use of this optional class driver, instead of - * including any headers in the USB/ClassDriver/Device, USB/ClassDriver/Host or USB/ClassDriver/Common subdirectories. - */ - -/** \ingroup Group_USBClassDrivers - * \defgroup Group_USBClassMS Mass Storage Class Driver - * \brief USB class driver for the USB-IF Bulk-Only Transport Mass Storage class standard. - * - * \section Sec_USBClassMS_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - LUFA/Drivers/USB/Class/Device/MassStorageClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - LUFA/Drivers/USB/Class/Host/MassStorageClassHost.c (Makefile source module name: LUFA_SRC_USBCLASS) - * - * \section Sec_USBClassMS_ModDescription Module Description - * Mass Storage Class Driver module. This module contains an internal implementation of the USB Mass Storage Class, for both - * Device and Host USB modes. User applications can use this class driver instead of implementing the Mass Storage class - * manually via the low-level LUFA APIs. - * - * This module is designed to simplify the user code by exposing only the required interface needed to interface with - * Hosts or Devices using the USB Mass Storage Class. - * - * @{ - */ - -#ifndef _MS_CLASS_H_ -#define _MS_CLASS_H_ -#if defined(USB0) - /* Macros: */ - #define __INCLUDE_FROM_USB_DRIVER - #define __INCLUDE_FROM_MS_DRIVER - - /* Includes: */ - #include <../Core/USBMode.h> - - #if defined(USB_CAN_BE_DEVICE) - #include - #endif - - #if defined(USB_CAN_BE_HOST) - #include - #endif - -#endif -#endif -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Common/ArchitectureSpecific.h b/cores/usblib/Common/ArchitectureSpecific.h deleted file mode 100644 index b808cdfd..00000000 --- a/cores/usblib/Common/ArchitectureSpecific.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Architecture specific definitions relating to specific processor architectures. - * - * \copydetails Group_ArchitectureSpecific - * - * \note Do not include this file directly, rather include the Common.h header file instead to gain this file's - * functionality. - */ - -/** \ingroup Group_Common - * \defgroup Group_ArchitectureSpecific Architecture Specific Definitions - * \brief Architecture specific definitions relating to specific processor architectures. - * - * Architecture specific macros, functions and other definitions, which relate to specific architectures. This - * definitions may or may not be available in some form on other architectures, and thus should be protected by - * preprocessor checks in portable code to prevent compile errors. - * - * @{ - */ - -#ifndef __LUFA_ARCHSPEC_H__ -#define __LUFA_ARCHSPEC_H__ - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_COMMON_H) - #error Do not include this file directly. Include LUFA/Common/Common.h instead to gain this functionality. - #endif - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Common/Architectures.h b/cores/usblib/Common/Architectures.h deleted file mode 100644 index 048c649b..00000000 --- a/cores/usblib/Common/Architectures.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Supported library architecture defines. - * - * \copydetails Group_Architectures - * - * \note Do not include this file directly, rather include the Common.h header file instead to gain this file's - * functionality. - */ - -/** \ingroup Group_Common - * \defgroup Group_Architectures Hardware Architectures - * \brief Supported library architecture defines. - * - * Architecture macros for selecting the desired target microcontroller architecture. One of these values should be - * defined as the value of \c ARCH in the user project makefile via the \c -D compiler switch to GCC, to select the - * target architecture. - * - * The selected architecture should remain consistent with the makefile \c ARCH value, which is used to select the - * underlying driver source files for each architecture. - * - * @{ - */ - -#ifndef __LUFA_ARCHITECTURES_H__ -#define __LUFA_ARCHITECTURES_H__ - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_COMMON_H) - #error Do not include this file directly. Include LUFA/Common/Common.h instead to gain this functionality. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Common/Attributes.h b/cores/usblib/Common/Attributes.h deleted file mode 100644 index 8237ce0d..00000000 --- a/cores/usblib/Common/Attributes.h +++ /dev/null @@ -1,208 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Special function/variable attribute macros. - * - * \copydetails Group_FuncVarAttributes - * - * \note Do not include this file directly, rather include the Common.h header file instead to gain this file's - * functionality. - */ - -/** \ingroup Group_Common - * \defgroup Group_FuncVarAttributes Function/Variable Attributes - * \brief Special function/variable attribute macros. - * - * This module contains macros for applying specific attributes to functions and variables to control various - * optimizer and code generation features of the compiler. Attributes may be placed in the function prototype - * or variable declaration in any order, and multiple attributes can be specified for a single item via a space - * separated list. - * - * On incompatible versions of GCC or on other compilers, these macros evaluate to nothing unless they are - * critical to the code's function and thus must throw a compile error when used. - * - * @{ - */ - -#ifndef __LUFA_ATTR_H__ -#define __LUFA_ATTR_H__ - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_COMMON_H) - #error Do not include this file directly. Include LUFA/Common/Common.h instead to gain this functionality. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - #if defined(__GNUC__) || defined(__DOXYGEN__) - /** Indicates to the compiler that the function can not ever return, so that any stack restoring or - * return code may be omitted by the compiler in the resulting binary. - */ - #define ATTR_NO_RETURN __attribute__ ((noreturn)) - - /** Indicates that the function returns a value which should not be ignored by the user code. When - * applied, any ignored return value from calling the function will produce a compiler warning. - */ - #define ATTR_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result)) - - /** Indicates that the specified parameters of the function are pointers which should never be \c NULL. - * When applied as a 1-based comma separated list the compiler will emit a warning if the specified - * parameters are known at compiler time to be \c NULL at the point of calling the function. - */ - #define ATTR_NON_NULL_PTR_ARG(...) __attribute__ ((nonnull (__VA_ARGS__))) - - /** Removes any preamble or postamble from the function. When used, the function will not have any - * register or stack saving code. This should be used with caution, and when used the programmer - * is responsible for maintaining stack and register integrity. - */ - #define ATTR_NAKED __attribute__ ((naked)) - - /** Prevents the compiler from considering a specified function for in-lining. When applied, the given - * function will not be in-lined under any circumstances. - */ - #define ATTR_NO_INLINE __attribute__ ((noinline)) - - /** Forces the compiler to inline the specified function. When applied, the given function will be - * in-lined under all circumstances. - */ - #define ATTR_ALWAYS_INLINE __attribute__ ((always_inline)) - - /** Indicates that the specified function is pure, in that it has no side-effects other than global - * or parameter variable access. - */ - #define ATTR_PURE __attribute__ ((pure)) - - /** Indicates that the specified function is constant, in that it has no side effects other than - * parameter access. - */ - #define ATTR_CONST __attribute__ ((const)) - - /** Marks a given function as deprecated, which produces a warning if the function is called. */ - #define ATTR_DEPRECATED __attribute__ ((deprecated)) - - /** Marks a function as a weak reference, which can be overridden by other functions with an - * identical name (in which case the weak reference is discarded at link time). - */ - #define ATTR_WEAK - - /** Forces the compiler to not automatically zero the given global variable on startup, so that the - * current RAM contents is retained. Under most conditions this value will be random due to the - * behavior of volatile memory once power is removed, but may be used in some specific circumstances, - * like the passing of values back after a system watchdog reset. - */ - #define ATTR_NO_INIT __attribute__ ((section (".noinit"))) - - /** Places the function in one of the initialization sections, which execute before the main function - * of the application. Refer to the avr-libc manual for more information on the initialization sections. - * - * \param[in] SectionIndex Initialization section number where the function should be placed. - */ - #define ATTR_INIT_SECTION(SectionIndex) __attribute__ ((used, naked, section (".init" #SectionIndex ))) - - /** Marks a function as an alias for another function. - * - * \param[in] Func Name of the function which the given function name should alias. - */ - #define ATTR_ALIAS(Func) - - /** Marks a variable or struct element for packing into the smallest space available, omitting any - * alignment bytes usually added between fields to optimize field accesses. - */ - #define ATTR_PACKED __attribute__ ((packed)) - #define ATTR_IAR_PACKED - - /** Indicates the minimum alignment in bytes for a variable or struct element. - * - * \param[in] Bytes Minimum number of bytes the item should be aligned to. - */ - #define ATTR_ALIGNED(Bytes) __attribute__ ((aligned(Bytes))) - - #elif defined(__ICCARM__) - #define ATTR_NO_RETURN - #define ATTR_WARN_UNUSED_RESULT - #define ATTR_NON_NULL_PTR_ARG(...) - #define ATTR_NAKED - #define ATTR_NO_INLINE - #define ATTR_ALWAYS_INLINE - #define ATTR_PURE - #define ATTR_CONST - #define ATTR_DEPRECATED - #define ATTR_WEAK - #define ATTR_NO_INIT - #define ATTR_INIT_SECTION(SectionIndex) - #define ATTR_ALIAS(Func) - #define ATTR_PACKED - #define ATTR_IAR_PACKED __packed - #define ATTR_ALIGNED(Bytes) - #elif defined ( __CC_ARM ) - #define ATTR_NO_RETURN - #define ATTR_WARN_UNUSED_RESULT - #define ATTR_NON_NULL_PTR_ARG(...) - #define ATTR_NAKED - #define ATTR_NO_INLINE - #define ATTR_ALWAYS_INLINE - #define ATTR_PURE - #define ATTR_CONST - #define ATTR_DEPRECATED - #define ATTR_WEAK - #define ATTR_NO_INIT - #define ATTR_INIT_SECTION(SectionIndex) - #define ATTR_ALIAS(Func) - #define ATTR_PACKED __attribute__((packed)) - #define ATTR_IAR_PACKED - #define ATTR_ALIGNED(Bytes) - #elif defined ( __TASKING__ ) - #define ATTR_NO_RETURN - #define ATTR_WARN_UNUSED_RESULT - #define ATTR_NON_NULL_PTR_ARG(...) - #define ATTR_NAKED - #define ATTR_NO_INLINE - #define ATTR_ALWAYS_INLINE - #define ATTR_PURE - #define ATTR_CONST - #define ATTR_DEPRECATED - #define ATTR_WEAK - #define ATTR_NO_INIT - #define ATTR_INIT_SECTION(SectionIndex) - #define ATTR_ALIAS(Func) - #define ATTR_PACKED __packed__ - #define ATTR_IAR_PACKED - #define ATTR_ALIGNED(Bytes) - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Common/BoardTypes.h b/cores/usblib/Common/BoardTypes.h deleted file mode 100644 index ca2c97f8..00000000 --- a/cores/usblib/Common/BoardTypes.h +++ /dev/null @@ -1,261 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Supported pre-made board hardware defines. - * - * \copydetails Group_BoardTypes - * - * \note Do not include this file directly, rather include the Common.h header file instead to gain this file's - * functionality. - */ - -/** \ingroup Group_Common - * \defgroup Group_BoardTypes Board Types - * \brief Supported pre-made board hardware defines. - * - * Board macros for indicating the chosen physical board hardware to the library. These macros should be used when - * defining the \c BOARD token to the chosen hardware via the \c -D switch in the project makefile. If a custom - * board is used, the \ref BOARD_NONE or \ref BOARD_USER values should be selected. - * - * @{ - */ - -#ifndef __LUFA_BOARDTYPES_H__ -#define __LUFA_BOARDTYPES_H__ - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_COMMON_H) - #error Do not include this file directly. Include LUFA/Common/Common.h instead to gain this functionality. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** Selects the user-defined board drivers, which should be placed in the user project's folder - * under a directory named \c /Board/. Each board driver should be named identically to the LUFA - * master board driver (i.e., driver in the \c LUFA/Drivers/Board directory) so that the library - * can correctly identify it. - */ - #define BOARD_USER 0 - - /** Disables board drivers when operation will not be adversely affected (e.g. LEDs) - use of board drivers - * such as the Joystick driver, where the removal would adversely affect the code's operation is still disallowed. */ - #define BOARD_NONE 1 - - /** Selects the USBKEY specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */ - #define BOARD_USBKEY 2 - - /** Selects the STK525 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */ - #define BOARD_STK525 3 - - /** Selects the STK526 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */ - #define BOARD_STK526 4 - - /** Selects the RZUSBSTICK specific board drivers, including the driver for the boards LEDs. */ - #define BOARD_RZUSBSTICK 5 - - /** Selects the ATAVRUSBRF01 specific board drivers, including the driver for the board LEDs. */ - #define BOARD_ATAVRUSBRF01 6 - - /** Selects the BUMBLEB specific board drivers, using the officially recommended peripheral layout. */ - #define BOARD_BUMBLEB 7 - - /** Selects the XPLAIN (Revision 2 or newer) specific board drivers, including LED and Dataflash drivers. */ - #define BOARD_XPLAIN 8 - - /** Selects the XPLAIN (Revision 1) specific board drivers, including LED and Dataflash drivers. */ - #define BOARD_XPLAIN_REV1 9 - - /** Selects the EVK527 specific board drivers, including Temperature, Button, Dataflash, Joystick and LED drivers. */ - #define BOARD_EVK527 10 - - /** Selects the Teensy version 1.x specific board drivers, including the driver for the board LEDs. */ - #define BOARD_TEENSY 11 - - /** Selects the USBTINY MKII specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_USBTINYMKII 12 - - /** Selects the Benito specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_BENITO 13 - - /** Selects the JM-DB-U2 specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_JMDBU2 14 - - /** Selects the Olimex AVR-USB-162 specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_OLIMEX162 15 - - /** Selects the UDIP specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_UDIP 16 - - /** Selects the BUI specific board drivers, including the driver for the board LEDs. */ - #define BOARD_BUI 17 - - /** Selects the Arduino Uno specific board drivers, including the driver for the board LEDs. */ - #define BOARD_UNO 18 - - /** Selects the Busware CUL V3 specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_CULV3 19 - - /** Selects the Blackcat USB JTAG specific board drivers, including the driver for the board LEDs. */ - #define BOARD_BLACKCAT 20 - - /** Selects the Maximus specific board drivers, including the driver for the board LEDs. */ - #define BOARD_MAXIMUS 21 - - /** Selects the Minimus specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_MINIMUS 22 - - /** Selects the Adafruit U4 specific board drivers, including the Button driver. */ - #define BOARD_ADAFRUITU4 23 - - /** Selects the Microsin AVR-USB162 specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_MICROSIN162 24 - - /** Selects the Kernel Concepts USBFOO specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_USBFOO 25 - - /** Selects the Sparkfun ATMEGA8U2 specific board drivers, including the driver for the board LEDs. */ - #define BOARD_SPARKFUN8U2 26 - - /** Selects the Atmel EVK1101 specific board drivers, including the Button, Joystick and LED drivers. */ - #define BOARD_EVK1101 27 - - /** Selects the Busware TUL specific board drivers, including the Button and LED drivers. */ - #define BOARD_TUL 28 - - /** Selects the Atmel EVK1100 specific board drivers, including the Button, Joystick and LED drivers. */ - #define BOARD_EVK1100 29 - - /** Selects the Atmel EVK1104 specific board drivers, including the Button and LED drivers. */ - #define BOARD_EVK1104 30 - - /** Selects the Atmel XMEGA A3BU Xplained specific board drivers, including Dataflash, Button and LED drivers. */ - #define BOARD_A3BU_XPLAINED 31 - - /** Selects the Teensy version 2.x specific board drivers, including the driver for the board LEDs. */ - #define BOARD_TEENSY2 32 - - /** Selects the USB2AX version 1 and 2 specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_USB2AX 33 - - /** Selects the USB2AX version 3 specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_USB2AX_V3 34 - - /** Selects the Micropendous 32U2 specific board drivers, including the Button and LED drivers. */ - #define BOARD_MICROPENDOUS_32U2 35 - - /** Selects the Micropendous A specific board drivers, including the driver for the board Button. */ - #define BOARD_MICROPENDOUS_A 36 - - /** Selects the Micropendous 1 specific board drivers, including the driver for the board Button. */ - #define BOARD_MICROPENDOUS_1 37 - - /** Selects the Micropendous 2 specific board drivers, including the driver for the board Button. */ - #define BOARD_MICROPENDOUS_2 38 - - /** Selects the Micropendous 3 specific board drivers, including the driver for the board Button. */ - #define BOARD_MICROPENDOUS_3 39 - - /** Selects the Micropendous 4 specific board drivers, including the driver for the board Button. */ - #define BOARD_MICROPENDOUS_4 40 - - /** Selects the Micropendous DIP specific board drivers, including the driver for the board Button. */ - #define BOARD_MICROPENDOUS_DIP 41 - - /** Selects the Micropendous (Arduino-like) revision 1 specific board drivers, including the Button and LED drivers. */ - #define BOARD_MICROPENDOUS_REV1 42 - - /** Selects the Micropendous (Arduino-like) revision 2 specific board drivers, including the Button and LED drivers. */ - #define BOARD_MICROPENDOUS_REV2 43 - - /** Selects the XMEGA B1 Xplained specific board drivers, including the Button and LED drivers. */ - #define BOARD_B1_XPLAINED 44 - - /** Selects the Bitwizard Multio specific board drivers, including the driver for the board LEDs. */ - #define BOARD_MULTIO 45 - - /** Selects the Bitwizard Big-Multio specific board drivers, including the driver for the board LEDs. */ - #define BOARD_BIGMULTIO 46 - - /** Selects the DorkbotPDX Duce specific board drivers, including the driver for the board LEDs. */ - #define BOARD_DUCE 47 - - /** Selects the Olimex AVR-USB-32U4 specific board drivers, including the Button and LED drivers. */ - #define BOARD_OLIMEX32U4 48 - - /** Selects the Olimex AVR-USB-T32U4 specific board drivers, including the Button and LED drivers. */ - #define BOARD_OLIMEXT32U4 49 - - /** Selects the Olimex AVR-ISP-MK2 specific board drivers, including the Button and LED drivers. */ - #define BOARD_OLIMEXISPMK2 50 - - /** Selects the Arduino Leonardo specific board drivers, including the driver for the board LEDs. */ - #define BOARD_LEONARDO 51 - - /** Selects the UC3-A3 Xplained specific board drivers, including the Button and LED drivers. */ - #define BOARD_UC3A3_XPLAINED 52 - - /** Selects the USB2AX version 3.1 specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_USB2AX_V31 53 - - /** Selects the Stange-ISP specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_STANGE_ISP 54 - - /** Selects the XMEGA C3 XPLAINED specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_C3_XPLAINED 55 - - /** Selects the U2S specific board drivers, including the Button and LEDs drivers. */ - #define BOARD_U2S 56 - - /** Selects the Arduino YUN specific board drivers, including the driver for the board LEDs. */ - #define BOARD_YUN 57 - - /** Selects the Arduino Micro specific board drivers, including the driver for the board LEDs. */ - #define BOARD_MICRO 58 - - /** Selects the Atmel Xplained-MINI specific board drivers, including the driver for the board LEDs. */ - #define BOARD_XPLAINED_MINI 59 - - #if !defined(__DOXYGEN__) - #define BOARD_ BOARD_NONE - - #if !defined(BOARD) - #define BOARD BOARD_NONE - #endif - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Common/Common.h b/cores/usblib/Common/Common.h deleted file mode 100644 index 68240e8b..00000000 --- a/cores/usblib/Common/Common.h +++ /dev/null @@ -1,226 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \dir - * \brief Common library header files. - * - * This folder contains header files which are common to all parts of the LUFA library. They may be used freely in - * user applications. - */ - -/** \file - * \brief Common library convenience headers, macros and functions. - * - * \copydetails Group_Common - */ - -/** \defgroup Group_Common Common Utility Headers - LUFA/Drivers/Common/Common.h - * \brief Common library convenience headers, macros and functions. - * - * Common utility headers containing macros, functions, enums and types which are common to all - * aspects of the library. - * - * @{ - */ - -/** \defgroup Group_GlobalInt Global Interrupt Macros - * \brief Convenience macros for the management of interrupts globally within the device. - * - * Macros and functions to create and control global interrupts within the device. - */ - -#ifndef __LUFA_COMMON_H__ -#define __LUFA_COMMON_H__ - - /* Macros: */ - #define __INCLUDE_FROM_COMMON_H - - /* Includes: */ - #include - #include - #include - #include - - #include - #include - #include - #include - #include - - #if defined(USE_LUFA_CONFIG_HEADER) - #include - #endif - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Architecture specific utility includes: */ - #if defined(__DOXYGEN__) - /** Type define for an unsigned integer the same width as the selected architecture's machine register. - * This is distinct from the non-specific standard int data type, whose width is machine dependant but - * which may not reflect the actual machine register width on some targets (e.g. AVR8). - */ - typedef MACHINE_REG_t uint_reg_t; - #else - #include - - #define ARCH_LITTLE_ENDIAN - #include - - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - #if !defined(__DOXYGEN__) - // Obsolete, retained for compatibility with user code - #define MACROS do - #define MACROE while (0) - #endif - - /** Convenience macro to determine the larger of two values. - * - * \attention This macro should only be used with operands that do not have side effects from being evaluated - * multiple times. - * - * \param[in] x First value to compare - * \param[in] y First value to compare - * - * \return The larger of the two input parameters - */ - #if !defined(MAX) || defined(__DOXYGEN__) - #define MAX(x, y) (((x) > (y)) ? (x) : (y)) - #endif - - /** Convenience macro to determine the smaller of two values. - * - * \attention This macro should only be used with operands that do not have side effects from being evaluated - * multiple times. - * - * \param[in] x First value to compare. - * \param[in] y First value to compare. - * - * \return The smaller of the two input parameters - */ - #if !defined(MIN) || defined(__DOXYGEN__) - #define MIN(x, y) (((x) < (y)) ? (x) : (y)) - #endif - - #if !defined(STRINGIFY) || defined(__DOXYGEN__) - /** Converts the given input into a string, via the C Preprocessor. This macro puts literal quotation - * marks around the input, converting the source into a string literal. - * - * \param[in] x Input to convert into a string literal. - * - * \return String version of the input. - */ - #define STRINGIFY(x) #x - - /** Converts the given input into a string after macro expansion, via the C Preprocessor. This macro puts - * literal quotation marks around the expanded input, converting the source into a string literal. - * - * \param[in] x Input to expand and convert into a string literal. - * - * \return String version of the expanded input. - */ - #define STRINGIFY_EXPANDED(x) STRINGIFY(x) - #endif - - #if !defined(CONCAT) || defined(__DOXYGEN__) - /** Concatenates the given input into a single token, via the C Preprocessor. - * - * \param[in] x First item to concatenate. - * \param[in] y Second item to concatenate. - * - * \return Concatenated version of the input. - */ - #define CONCAT(x, y) x ## y - - /** CConcatenates the given input into a single token after macro expansion, via the C Preprocessor. - * - * \param[in] x First item to concatenate. - * \param[in] y Second item to concatenate. - * - * \return Concatenated version of the expanded input. - */ - #define CONCAT_EXPANDED(x, y) CONCAT(x, y) - #endif - - #if !defined(ISR) || defined(__DOXYGEN__) - /** Macro for the definition of interrupt service routines, so that the compiler can insert the required - * prologue and epilogue code to properly manage the interrupt routine without affecting the main thread's - * state with unintentional side-effects. - * - * Interrupt handlers written using this macro may still need to be registered with the microcontroller's - * Interrupt Controller (if present) before they will properly handle incoming interrupt events. - * - * \note This macro is only supplied on some architectures, where the standard library does not include a valid - * definition. If an existing definition exists, the alternative definition here will be ignored. - * - * \ingroup Group_GlobalInt - * - * \param[in] Name Unique name of the interrupt service routine. - */ - #define ISR(Name, ...) void Name (void) __attribute__((__interrupt__)) __VA_ARGS__; void Name (void) - #endif - - /* Inline Functions: */ - /** Function to reverse the individual bits in a byte - i.e. bit 7 is moved to bit 0, bit 6 to bit 1, - * etc. - * - * \param[in] Byte Byte of data whose bits are to be reversed. - * - * \return Input data with the individual bits reversed (mirrored). - */ - static inline uint8_t BitReverse(uint8_t Byte) ATTR_WARN_UNUSED_RESULT ATTR_CONST; - static inline uint8_t BitReverse(uint8_t Byte) - { - Byte = (((Byte & 0xF0) >> 4) | ((Byte & 0x0F) << 4)); - Byte = (((Byte & 0xCC) >> 2) | ((Byte & 0x33) << 2)); - Byte = (((Byte & 0xAA) >> 1) | ((Byte & 0x55) << 1)); - - return Byte; - } - - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Common/CompilerSpecific.h b/cores/usblib/Common/CompilerSpecific.h deleted file mode 100644 index cfd4f5b4..00000000 --- a/cores/usblib/Common/CompilerSpecific.h +++ /dev/null @@ -1,105 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Compiler specific definitions for code optimization and correctness. - * - * \copydetails Group_CompilerSpecific - * - * \note Do not include this file directly, rather include the Common.h header file instead to gain this file's - * functionality. - */ - -/** \ingroup Group_Common - * \defgroup Group_CompilerSpecific Compiler Specific Definitions - * \brief Compiler specific definitions for code optimization and correctness. - * - * Compiler specific definitions to expose certain compiler features which may increase the level of code optimization - * for a specific compiler, or correct certain issues that may be present such as memory barriers for use in conjunction - * with atomic variable access. - * - * Where possible, on alternative compilers, these macros will either have no effect, or default to returning a sane value - * so that they can be used in existing code without the need for extra compiler checks in the user application code. - * - * @{ - */ - -#ifndef __LUFA_COMPILERSPEC_H__ -#define __LUFA_COMPILERSPEC_H__ - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_COMMON_H) - #error Do not include this file directly. Include LUFA/Common/Common.h instead to gain this functionality. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - #if defined(__GNUC__) || defined(__DOXYGEN__) - /** Forces GCC to use pointer indirection (via the device's pointer register pairs) when accessing the given - * struct pointer. In some cases GCC will emit non-optimal assembly code when accessing a structure through - * a pointer, resulting in a larger binary. When this macro is used on a (non \c const) structure pointer before - * use, it will force GCC to use pointer indirection on the elements rather than direct store and load - * instructions. - * - * \param[in, out] StructPtr Pointer to a structure which is to be forced into indirect access mode. - */ - #define GCC_FORCE_POINTER_ACCESS(StructPtr) __asm__ __volatile__("" : "=b" (StructPtr) : "0" (StructPtr)) - - /** Forces GCC to create a memory barrier, ensuring that memory accesses are not reordered past the barrier point. - * This can be used before ordering-critical operations, to ensure that the compiler does not re-order the resulting - * assembly output in an unexpected manner on sections of code that are ordering-specific. - */ - #define GCC_MEMORY_BARRIER() __asm__ __volatile__("" ::: "memory"); - - /** Determines if the specified value can be determined at compile-time to be a constant value when compiling under GCC. - * - * \param[in] x Value to check compile-time constantness of. - * - * \return Boolean \c true if the given value is known to be a compile time constant, \c false otherwise. - */ - #define GCC_IS_COMPILE_CONST(x) __builtin_constant_p(x) - - #define MEMCPY(dst,src,len) thumb2_memcpy(dst,src,len) - void* thumb2_memcpy(void* pDest, const void* pSource, size_t length); - #else - #define GCC_FORCE_POINTER_ACCESS(StructPtr) - #define GCC_MEMORY_BARRIER() - #define GCC_IS_COMPILE_CONST(x) 0 - #define MEMCPY(dst,src,len) memcpy(dst,src,len) - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Common/Endianness.h b/cores/usblib/Common/Endianness.h deleted file mode 100644 index 05f5359e..00000000 --- a/cores/usblib/Common/Endianness.h +++ /dev/null @@ -1,465 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Endianness and Byte Ordering macros and functions. - * - * \copydetails Group_Endianness - */ - -/** \ingroup Group_Endianness - * \defgroup Group_ByteSwapping Byte Reordering - * \brief Macros and functions for forced byte reordering. - */ - -/** \ingroup Group_Endianness - * \defgroup Group_EndianConversion Endianness Conversion - * \brief Macros and functions for automatic endianness conversion. - */ - -/** \ingroup Group_Common - * \defgroup Group_Endianness Endianness and Byte Ordering - * \brief Convenience macros and functions relating to byte (re-)ordering - * - * Common library convenience macros and functions relating to byte (re-)ordering. - * - * @{ - */ - -#ifndef __LUFA_ENDIANNESS_H__ -#define __LUFA_ENDIANNESS_H__ - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_COMMON_H) - #error Do not include this file directly. Include LUFA/Common/Common.h instead to gain this functionality. - #endif - - #if !(defined(ARCH_BIG_ENDIAN) || defined(ARCH_LITTLE_ENDIAN)) - #error ARCH_BIG_ENDIAN or ARCH_LITTLE_ENDIAN not set for the specified architecture. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** Swaps the byte ordering of a 16-bit value at compile-time. Do not use this macro for swapping byte orderings - * of dynamic values computed at runtime, use \ref SwapEndian_16() instead. The result of this macro can be used - * inside struct or other variable initializers outside of a function, something that is not possible with the - * inline function variant. - * - * \hideinitializer - * - * \ingroup Group_ByteSwapping - * - * \param[in] x 16-bit value whose byte ordering is to be swapped. - * - * \return Input value with the byte ordering reversed. - */ - #define SWAPENDIAN_16(x) (uint16_t)((((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8)) - - /** Swaps the byte ordering of a 32-bit value at compile-time. Do not use this macro for swapping byte orderings - * of dynamic values computed at runtime- use \ref SwapEndian_32() instead. The result of this macro can be used - * inside struct or other variable initializers outside of a function, something that is not possible with the - * inline function variant. - * - * \hideinitializer - * - * \ingroup Group_ByteSwapping - * - * \param[in] x 32-bit value whose byte ordering is to be swapped. - * - * \return Input value with the byte ordering reversed. - */ - #define SWAPENDIAN_32(x) (uint32_t)((((x) & 0xFF000000UL) >> 24UL) | (((x) & 0x00FF0000UL) >> 8UL) | \ - (((x) & 0x0000FF00UL) << 8UL) | (((x) & 0x000000FFUL) << 24UL)) - - #if defined(ARCH_BIG_ENDIAN) && !defined(le16_to_cpu) - #define le16_to_cpu(x) SwapEndian_16(x) - #define le32_to_cpu(x) SwapEndian_32(x) - #define be16_to_cpu(x) (x) - #define be32_to_cpu(x) (x) - #define cpu_to_le16(x) SwapEndian_16(x) - #define cpu_to_le32(x) SwapEndian_32(x) - #define cpu_to_be16(x) (x) - #define cpu_to_be32(x) (x) - #define LE16_TO_CPU(x) SWAPENDIAN_16(x) - #define LE32_TO_CPU(x) SWAPENDIAN_32(x) - #define BE16_TO_CPU(x) (x) - #define BE32_TO_CPU(x) (x) - #define CPU_TO_LE16(x) SWAPENDIAN_16(x) - #define CPU_TO_LE32(x) SWAPENDIAN_32(x) - #define CPU_TO_BE16(x) (x) - #define CPU_TO_BE32(x) (x) - #elif !defined(le16_to_cpu) - /** \name Run-time endianness conversion */ - //@{ - - /** Performs a conversion between a Little Endian encoded 16-bit piece of data and the - * Endianness of the currently selected CPU architecture. - * - * On little endian architectures, this macro does nothing. - * - * \note This macro is designed for run-time conversion of data - for compile-time endianness - * conversion, use \ref LE16_TO_CPU instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define le16_to_cpu(x) (x) - - /** Performs a conversion between a Little Endian encoded 32-bit piece of data and the - * Endianness of the currently selected CPU architecture. - * - * On little endian architectures, this macro does nothing. - * - * \note This macro is designed for run-time conversion of data - for compile-time endianness - * conversion, use \ref LE32_TO_CPU instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define le32_to_cpu(x) (x) - - /** Performs a conversion between a Big Endian encoded 16-bit piece of data and the - * Endianness of the currently selected CPU architecture. - * - * On big endian architectures, this macro does nothing. - * - * \note This macro is designed for run-time conversion of data - for compile-time endianness - * conversion, use \ref BE16_TO_CPU instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define be16_to_cpu(x) SwapEndian_16(x) - - /** Performs a conversion between a Big Endian encoded 32-bit piece of data and the - * Endianness of the currently selected CPU architecture. - * - * On big endian architectures, this macro does nothing. - * - * \note This macro is designed for run-time conversion of data - for compile-time endianness - * conversion, use \ref BE32_TO_CPU instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define be32_to_cpu(x) SwapEndian_32(x) - - /** Performs a conversion on a natively encoded 16-bit piece of data to ensure that it - * is in Little Endian format regardless of the currently selected CPU architecture. - * - * On little endian architectures, this macro does nothing. - * - * \note This macro is designed for run-time conversion of data - for compile-time endianness - * conversion, use \ref CPU_TO_LE16 instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define cpu_to_le16(x) (x) - - /** Performs a conversion on a natively encoded 32-bit piece of data to ensure that it - * is in Little Endian format regardless of the currently selected CPU architecture. - * - * On little endian architectures, this macro does nothing. - * - * \note This macro is designed for run-time conversion of data - for compile-time endianness - * conversion, use \ref CPU_TO_LE32 instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define cpu_to_le32(x) (x) - - /** Performs a conversion on a natively encoded 16-bit piece of data to ensure that it - * is in Big Endian format regardless of the currently selected CPU architecture. - * - * On big endian architectures, this macro does nothing. - * - * \note This macro is designed for run-time conversion of data - for compile-time endianness - * conversion, use \ref CPU_TO_BE16 instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define cpu_to_be16(x) SwapEndian_16(x) - - /** Performs a conversion on a natively encoded 32-bit piece of data to ensure that it - * is in Big Endian format regardless of the currently selected CPU architecture. - * - * On big endian architectures, this macro does nothing. - * - * \note This macro is designed for run-time conversion of data - for compile-time endianness - * conversion, use \ref CPU_TO_BE32 instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define cpu_to_be32(x) SwapEndian_32(x) - - //@} - - /** \name Compile-time endianness conversion */ - //@{ - - /** Performs a conversion between a Little Endian encoded 16-bit piece of data and the - * Endianness of the currently selected CPU architecture. - * - * On little endian architectures, this macro does nothing. - * - * \note This macro is designed for compile-time conversion of data - for run time endianness - * conversion, use \ref le16_to_cpu instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define LE16_TO_CPU(x) (x) - - /** Performs a conversion between a Little Endian encoded 32-bit piece of data and the - * Endianness of the currently selected CPU architecture. - * - * On little endian architectures, this macro does nothing. - * - * \note This macro is designed for compile-time conversion of data - for run time endianness - * conversion, use \ref le32_to_cpu instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define LE32_TO_CPU(x) (x) - - /** Performs a conversion between a Big Endian encoded 16-bit piece of data and the - * Endianness of the currently selected CPU architecture. - * - * On big endian architectures, this macro does nothing. - * - * \note This macro is designed for compile-time conversion of data - for run-time endianness - * conversion, use \ref be16_to_cpu instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define BE16_TO_CPU(x) SWAPENDIAN_16(x) - - /** Performs a conversion between a Big Endian encoded 32-bit piece of data and the - * Endianness of the currently selected CPU architecture. - * - * On big endian architectures, this macro does nothing. - * - * \note This macro is designed for compile-time conversion of data - for run-time endianness - * conversion, use \ref be32_to_cpu instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define BE32_TO_CPU(x) SWAPENDIAN_32(x) - - /** Performs a conversion on a natively encoded 16-bit piece of data to ensure that it - * is in Little Endian format regardless of the currently selected CPU architecture. - * - * On little endian architectures, this macro does nothing. - * - * \note This macro is designed for compile-time conversion of data - for run-time endianness - * conversion, use \ref cpu_to_le16 instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define CPU_TO_LE16(x) (x) - - /** Performs a conversion on a natively encoded 32-bit piece of data to ensure that it - * is in Little Endian format regardless of the currently selected CPU architecture. - * - * On little endian architectures, this macro does nothing. - * - * \note This macro is designed for compile-time conversion of data - for run-time endianness - * conversion, use \ref cpu_to_le32 instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define CPU_TO_LE32(x) (x) - - /** Performs a conversion on a natively encoded 16-bit piece of data to ensure that it - * is in Big Endian format regardless of the currently selected CPU architecture. - * - * On big endian architectures, this macro does nothing. - * - * \note This macro is designed for compile-time conversion of data - for run-time endianness - * conversion, use \ref cpu_to_be16 instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define CPU_TO_BE16(x) SWAPENDIAN_16(x) - - /** Performs a conversion on a natively encoded 32-bit piece of data to ensure that it - * is in Big Endian format regardless of the currently selected CPU architecture. - * - * On big endian architectures, this macro does nothing. - * - * \note This macro is designed for compile-time conversion of data - for run-time endianness - * conversion, use \ref cpu_to_be32 instead. - * - * \ingroup Group_EndianConversion - * - * \param[in] x Data to perform the endianness conversion on. - * - * \return Endian corrected version of the input value. - */ - #define CPU_TO_BE32(x) SWAPENDIAN_32(x) - - //! @} - #endif - - /* Inline Functions: */ - /** Function to reverse the byte ordering of the individual bytes in a 16 bit value. - * - * \ingroup Group_ByteSwapping - * - * \param[in] Word Word of data whose bytes are to be swapped. - * - * \return Input data with the individual bytes reversed. - */ - static inline uint16_t SwapEndian_16(const uint16_t Word) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE; - static inline uint16_t SwapEndian_16(const uint16_t Word) - { - if (GCC_IS_COMPILE_CONST(Word)) - return SWAPENDIAN_16(Word); - - return __REV16(Word); - } - - /** Function to reverse the byte ordering of the individual bytes in a 32 bit value. - * - * \ingroup Group_ByteSwapping - * - * \param[in] DWord Double word of data whose bytes are to be swapped. - * - * \return Input data with the individual bytes reversed. - */ - static inline uint32_t SwapEndian_32(const uint32_t DWord) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE; - static inline uint32_t SwapEndian_32(const uint32_t DWord) - { - if (GCC_IS_COMPILE_CONST(DWord)) - return SWAPENDIAN_32(DWord); - - return __REV(DWord); - } - - /** Function to reverse the byte ordering of the individual bytes in a n byte value. - * - * \ingroup Group_ByteSwapping - * - * \param[in,out] Data Pointer to a number containing an even number of bytes to be reversed. - * \param[in] Length Length of the data in bytes. - * - * \return Input data with the individual bytes reversed. - */ - static inline void SwapEndian_n(void* const Data, - uint8_t Length) ATTR_NON_NULL_PTR_ARG(1); - static inline void SwapEndian_n(void* const Data, - uint8_t Length) - { - uint8_t* CurrDataPos = (uint8_t*)Data; - - while (Length > 1) - { - uint8_t Temp = *CurrDataPos; - *CurrDataPos = *(CurrDataPos + Length - 1); - *(CurrDataPos + Length - 1) = Temp; - - CurrDataPos++; - Length -= 2; - } - } - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Common/memcpy.c b/cores/usblib/Common/memcpy.c deleted file mode 100644 index 1acda9d9..00000000 --- a/cores/usblib/Common/memcpy.c +++ /dev/null @@ -1,62 +0,0 @@ -#ifdef XMC4_SERIES - -/* Copyright (C) 2013 - Adam Green (https://github.com/adamgreen) - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ -#if defined(USB0) -#include - -#if defined(__GNUC__) -/* This is a hand written Thumb-2 assembly language version of the - standard C memcpy() function that can be used by the lwIP networking - stack to improve its performance. It copies 4 bytes at a time and - unrolls the loop to perform 4 of these copies per loop iteration. -*/ -__attribute__((naked)) void thumb2_memcpy(void* pDest, const void* pSource, size_t length) -{ - __asm ( - ".syntax unified\n" - ".thumb\n" - - // Copy 16 bytes at a time first. - " lsrs r3, r2, #4\n" - " beq.n 2$\n" - "1$: ldr r12, [r1], #4\n" - " str r12, [r0], #4\n" - " ldr r12, [r1], #4\n" - " str r12, [r0], #4\n" - " ldr r12, [r1], #4\n" - " str r12, [r0], #4\n" - " ldr r12, [r1], #4\n" - " str r12, [r0], #4\n" - " subs r3, #1\n" - " bne 1$\n" - - // Copy byte by byte for what is left. - "2$:\n" - " ands r3, r2, #0xf\n" - " beq.n 4$\n" - "3$: ldrb r12, [r1], #1\n" - " strb r12, [r0], #1\n" - " subs r3, #1\n" - " bne 3$\n" - - // Return to caller. - "4$: bx lr\n" - ); -} -#endif - -#endif -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/ConfigDescriptors.c b/cores/usblib/Core/ConfigDescriptors.c deleted file mode 100644 index 2dc10cd6..00000000 --- a/cores/usblib/Core/ConfigDescriptors.c +++ /dev/null @@ -1,149 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -#define __INCLUDE_FROM_USB_DRIVER -#include - -#if defined(USB_CAN_BE_HOST) -uint8_t USB_Host_GetDeviceConfigDescriptor(const uint8_t ConfigNumber, - uint16_t* const ConfigSizePtr, - void* const BufferPtr, - const uint16_t BufferSize) -{ - uint8_t ErrorCode; - uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)]; - - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetDescriptor, - .wValue = ((DTYPE_Configuration << 8) | (ConfigNumber - 1)), - .wIndex = 0, - .wLength = sizeof(USB_Descriptor_Configuration_Header_t), - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - if ((ErrorCode = USB_Host_SendControlRequest(ConfigHeader)) != HOST_SENDCONTROL_Successful) - return ErrorCode; - - *ConfigSizePtr = le16_to_cpu(DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize); - - if (*ConfigSizePtr > BufferSize) - return HOST_GETCONFIG_BuffOverflow; - - USB_ControlRequest.wLength = *ConfigSizePtr; - - if ((ErrorCode = USB_Host_SendControlRequest(BufferPtr)) != HOST_SENDCONTROL_Successful) - return ErrorCode; - - if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration) - return HOST_GETCONFIG_InvalidData; - - return HOST_GETCONFIG_Successful; -} -#endif - -void USB_GetNextDescriptorOfType(uint16_t* const BytesRem, - void** const CurrConfigLoc, - const uint8_t Type) -{ - while (*BytesRem) - { - USB_GetNextDescriptor(BytesRem, CurrConfigLoc); - - if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type) - return; - } -} - -void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem, - void** const CurrConfigLoc, - const uint8_t Type, - const uint8_t BeforeType) -{ - while (*BytesRem) - { - USB_GetNextDescriptor(BytesRem, CurrConfigLoc); - - if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type) - { - return; - } - else if (DESCRIPTOR_TYPE(*CurrConfigLoc) == BeforeType) - { - *BytesRem = 0; - return; - } - } -} - -void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem, - void** const CurrConfigLoc, - const uint8_t Type, - const uint8_t AfterType) -{ - USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, AfterType); - - if (*BytesRem) - USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, Type); -} - -uint8_t USB_GetNextDescriptorComp(uint16_t* const BytesRem, - void** const CurrConfigLoc, - ConfigComparatorPtr_t const ComparatorRoutine) -{ - uint8_t ErrorCode; - - while (*BytesRem) - { - uint8_t* PrevDescLoc = *CurrConfigLoc; - uint16_t PrevBytesRem = *BytesRem; - - USB_GetNextDescriptor(BytesRem, CurrConfigLoc); - - if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound) - { - if (ErrorCode == DESCRIPTOR_SEARCH_Fail) - { - *CurrConfigLoc = PrevDescLoc; - *BytesRem = PrevBytesRem; - } - - return ErrorCode; - } - } - - return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor; -} - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/ConfigDescriptors.h b/cores/usblib/Core/ConfigDescriptors.h deleted file mode 100644 index 13abdb9a..00000000 --- a/cores/usblib/Core/ConfigDescriptors.h +++ /dev/null @@ -1,290 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB Configuration Descriptor definitions. - * \copydetails Group_ConfigDescriptorParser - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_StdDescriptors - * \defgroup Group_ConfigDescriptorParser Configuration Descriptor Parser - * \brief USB Configuration Descriptor definitions. - * - * This section of the library gives a friendly API which can be used in host applications to easily - * parse an attached device's configuration descriptor so that endpoint, interface and other descriptor - * data can be extracted and used as needed. - * - * @{ - */ - -#ifndef __CONFIGDESCRIPTORS_H__ -#define __CONFIGDESCRIPTORS_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** Casts a pointer to a descriptor inside the configuration descriptor into a pointer to the given - * descriptor type. - * - * Usage Example: - * \code - * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header - * USB_Descriptor_Configuration_Header_t* ConfigHeaderPtr = DESCRIPTOR_PCAST(CurrDescriptor, - * USB_Descriptor_Configuration_Header_t); - * - * // Can now access elements of the configuration header struct using the -> indirection operator - * \endcode - */ - #define DESCRIPTOR_PCAST(DescriptorPtr, Type) ((Type*)(DescriptorPtr)) - - /** Casts a pointer to a descriptor inside the configuration descriptor into the given descriptor - * type (as an actual struct instance rather than a pointer to a struct). - * - * Usage Example: - * \code - * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header - * USB_Descriptor_Configuration_Header_t ConfigHeader = DESCRIPTOR_CAST(CurrDescriptor, - * USB_Descriptor_Configuration_Header_t); - * - * // Can now access elements of the configuration header struct using the . operator - * \endcode - */ - #define DESCRIPTOR_CAST(DescriptorPtr, Type) (*DESCRIPTOR_PCAST(DescriptorPtr, Type)) - - /** Returns the descriptor's type, expressed as the 8-bit type value in the header of the descriptor. - * This value's meaning depends on the descriptor's placement in the descriptor, but standard type - * values can be accessed in the \ref USB_DescriptorTypes_t enum. - */ - #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_PCAST(DescriptorPtr, USB_Descriptor_Header_t)->Type - - /** Returns the descriptor's size, expressed as the 8-bit value indicating the number of bytes. */ - #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_PCAST(DescriptorPtr, USB_Descriptor_Header_t)->Size - - /* Type Defines: */ - /** Type define for a Configuration Descriptor comparator function (function taking a pointer to an array - * of type void, returning a uint8_t value). - * - * \see \ref USB_GetNextDescriptorComp function for more details. - */ - typedef uint8_t (* ConfigComparatorPtr_t)(void*); - - /* Enums: */ - /** Enum for the possible return codes of the \ref USB_Host_GetDeviceConfigDescriptor() function. */ - enum USB_Host_GetConfigDescriptor_ErrorCodes_t - { - HOST_GETCONFIG_Successful = 0, /**< No error occurred while retrieving the configuration descriptor. */ - HOST_GETCONFIG_DeviceDisconnect = 1, /**< The attached device was disconnected while retrieving the configuration - * descriptor. - */ - HOST_GETCONFIG_PipeError = 2, /**< An error occurred in the pipe while sending the request. */ - HOST_GETCONFIG_SetupStalled = 3, /**< The attached device stalled the request to retrieve the configuration - * descriptor. - */ - HOST_GETCONFIG_SoftwareTimeOut = 4, /**< The request or data transfer timed out. */ - HOST_GETCONFIG_BuffOverflow = 5, /**< The device's configuration descriptor is too large to fit into the allocated - * buffer. - */ - HOST_GETCONFIG_InvalidData = 6, /**< The device returned invalid configuration descriptor data. */ - }; - - /** Enum for return values of a descriptor comparator function. */ - enum DSearch_Return_ErrorCodes_t - { - DESCRIPTOR_SEARCH_Found = 0, /**< Current descriptor matches comparator criteria. */ - DESCRIPTOR_SEARCH_Fail = 1, /**< No further descriptor could possibly match criteria, fail the search. */ - DESCRIPTOR_SEARCH_NotFound = 2, /**< Current descriptor does not match comparator criteria. */ - }; - - /** Enum for return values of \ref USB_GetNextDescriptorComp(). */ - enum DSearch_Comp_Return_ErrorCodes_t - { - DESCRIPTOR_SEARCH_COMP_Found = 0, /**< Configuration descriptor now points to descriptor which matches - * search criteria of the given comparator function. */ - DESCRIPTOR_SEARCH_COMP_Fail = 1, /**< Comparator function returned \ref DESCRIPTOR_SEARCH_Fail. */ - DESCRIPTOR_SEARCH_COMP_EndOfDescriptor = 2, /**< End of configuration descriptor reached before match found. */ - }; - - /* Function Prototypes: */ - /** Retrieves the configuration descriptor data from an attached device via a standard request into a buffer, - * including validity and size checking to prevent a buffer overflow. - * - * \param[in] ConfigNumber Device configuration descriptor number to fetch from the device (usually set to 1 for - * single configuration devices). - * \param[in,out] ConfigSizePtr Pointer to a location for storing the retrieved configuration descriptor size. - * \param[out] BufferPtr Pointer to the buffer for storing the configuration descriptor data. - * \param[out] BufferSize Size of the allocated buffer where the configuration descriptor is to be stored. - * - * \return A value from the \ref USB_Host_GetConfigDescriptor_ErrorCodes_t enum. - */ - uint8_t USB_Host_GetDeviceConfigDescriptor(const uint8_t ConfigNumber, - uint16_t* const ConfigSizePtr, - void* const BufferPtr, - const uint16_t BufferSize) ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(3); - - /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value. - * The bytes remaining value is automatically decremented. - * - * \param[in,out] BytesRem Pointer to the number of bytes remaining of the configuration descriptor. - * \param[in,out] CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor. - * \param[in] Type Descriptor type value to search for. - */ - void USB_GetNextDescriptorOfType(uint16_t* const BytesRem, - void** const CurrConfigLoc, - const uint8_t Type) - ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - - /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value, - * which must come before a descriptor of the second given type value. If the BeforeType type - * descriptor is reached first, the number of bytes remaining to process is set to zero and the - * function exits. The bytes remaining value is automatically decremented. - * - * \param[in,out] BytesRem Pointer to the number of bytes remaining of the configuration descriptor. - * \param[in,out] CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor. - * \param[in] Type Descriptor type value to search for. - * \param[in] BeforeType Descriptor type value which must not be reached before the given Type descriptor. - */ - void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem, - void** const CurrConfigLoc, - const uint8_t Type, - const uint8_t BeforeType) - ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - - /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value, - * which must come after a descriptor of the second given type value. The bytes remaining value is - * automatically decremented. - * - * \param[in,out] BytesRem Pointer to the number of bytes remaining of the configuration descriptor. - * \param[in,out] CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor. - * \param[in] Type Descriptor type value to search for. - * \param[in] AfterType Descriptor type value which must be reached before the given Type descriptor. - */ - void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem, - void** const CurrConfigLoc, - const uint8_t Type, - const uint8_t AfterType) - ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - - /** Searches for the next descriptor in the given configuration descriptor using a pre-made comparator - * function. The routine updates the position and remaining configuration descriptor bytes values - * automatically. If a comparator routine fails a search, the descriptor pointer is retreated back - * so that the next descriptor search invocation will start from the descriptor which first caused the - * original search to fail. This behavior allows for one comparator to be used immediately after another - * has failed, starting the second search from the descriptor which failed the first. - * - * Comparator functions should be standard functions which accept a pointer to the header of the current - * descriptor inside the configuration descriptor which is being compared, and should return a value from - * the \ref DSearch_Return_ErrorCodes_t enum as a uint8_t value. - * - * \note This function is available in USB Host mode only. - * - * \param[in,out] BytesRem Pointer to an int storing the remaining bytes in the configuration descriptor. - * \param[in,out] CurrConfigLoc Pointer to the current position in the configuration descriptor. - * \param[in] ComparatorRoutine Name of the comparator search function to use on the configuration descriptor. - * - * \return Value of one of the members of the \ref DSearch_Comp_Return_ErrorCodes_t enum. - * - * Usage Example: - * \code - * uint8_t EndpointSearcher(void* CurrentDescriptor); // Comparator Prototype - * - * uint8_t EndpointSearcher(void* CurrentDescriptor) - * { - * if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) - * return DESCRIPTOR_SEARCH_Found; - * else - * return DESCRIPTOR_SEARCH_NotFound; - * } - * - * //... - * - * // After retrieving configuration descriptor: - * if (USB_Host_GetNextDescriptorComp(&BytesRemaining, &CurrentConfigLoc, EndpointSearcher) == - * Descriptor_Search_Comp_Found) - * { - * // Do something with the endpoint descriptor - * } - * \endcode - */ - uint8_t USB_GetNextDescriptorComp(uint16_t* const BytesRem, - void** const CurrConfigLoc, - ConfigComparatorPtr_t const ComparatorRoutine) ATTR_NON_NULL_PTR_ARG(1) - ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(3); - - /* Inline Functions: */ - /** Skips over the current sub-descriptor inside the configuration descriptor, so that the pointer then - points to the next sub-descriptor. The bytes remaining value is automatically decremented. - * - * \param[in,out] BytesRem Pointer to the number of bytes remaining of the configuration descriptor. - * \param[in,out] CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor. - */ - static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, - void** CurrConfigLoc) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); - static inline void USB_GetNextDescriptor(uint16_t* const BytesRem, - void** CurrConfigLoc) - { - uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size; - - if (*BytesRem < CurrDescriptorSize) - CurrDescriptorSize = *BytesRem; - - *CurrConfigLoc = (void*)((uintptr_t)*CurrConfigLoc + CurrDescriptorSize); - *BytesRem -= CurrDescriptorSize; - } - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/Device.h b/cores/usblib/Core/Device.h deleted file mode 100644 index 36e012dc..00000000 --- a/cores/usblib/Core/Device.h +++ /dev/null @@ -1,157 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common USB Device definitions for all architectures. - * \copydetails Group_Device - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_USB - * \defgroup Group_Device Device Management - * \brief USB Device management definitions for USB device mode. - * - * USB Device mode related definitions common to all architectures. This module contains definitions which - * are used when the USB controller is initialized in device mode. - * - * @{ - */ - -#ifndef __USBDEVICE_H__ -#define __USBDEVICE_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - #include - #include - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Enums: */ - /** Enum for the various states of the USB Device state machine. Only some states are - * implemented in the LUFA library - other states are left to the user to implement. - * - * For information on each possible USB device state, refer to the USB 2.0 specification. - * - * \see \ref USB_DeviceState, which stores the current device state machine state. - */ - enum USB_Device_States_t - { - DEVICE_STATE_Unattached = 0, /**< Internally implemented by the library. This state indicates - * that the device is not currently connected to a host. - */ - DEVICE_STATE_Powered = 1, /**< Internally implemented by the library. This state indicates - * that the device is connected to a host, but enumeration has not - * yet begun. - */ - DEVICE_STATE_Default = 2, /**< Internally implemented by the library. This state indicates - * that the device's USB bus has been reset by the host and it is - * now waiting for the host to begin the enumeration process. - */ - DEVICE_STATE_Addressed = 3, /**< Internally implemented by the library. This state indicates - * that the device has been addressed by the USB Host, but is not - * yet configured. - */ - DEVICE_STATE_Configured = 4, /**< May be implemented by the user project. This state indicates - * that the device has been enumerated by the host and is ready - * for USB communications to begin. - */ - DEVICE_STATE_Suspended = 5, /**< May be implemented by the user project. This state indicates - * that the USB bus has been suspended by the host, and the device - * should power down to a minimal power level until the bus is - * resumed. - */ - }; - - /* Function Prototypes: */ - /** Function to retrieve a given descriptor's size and memory location from the given descriptor type value, - * index and language ID. This function MUST be overridden in the user application (added with full, identical - * prototype and name so that the library can call it to retrieve descriptor data. - * - * \param[in] wValue The type of the descriptor to retrieve in the upper byte, and the index in the - * lower byte (when more than one descriptor of the given type exists, such as the - * case of string descriptors). The type may be one of the standard types defined - * in the DescriptorTypes_t enum, or may be a class-specific descriptor type value. - * \param[in] wIndex The language ID of the string to return if the \c wValue type indicates - * \ref DTYPE_String, otherwise zero for standard descriptors, or as defined in a - * class-specific standards. - * \param[out] DescriptorAddress Pointer to the descriptor in memory. This should be set by the routine to - * the address of the descriptor. - * \param[out] DescriptorMemorySpace A value from the \ref USB_DescriptorMemorySpaces_t enum to indicate the memory - * space in which the descriptor is stored. This parameter does not exist when one - * of the \c USE_*_DESCRIPTORS compile time options is used, or on architectures which - * use a unified address space. - * - * \note By default, the library expects all descriptors to be located in flash memory via the \c PROGMEM attribute. - * If descriptors should be located in RAM or EEPROM instead (to speed up access in the case of RAM, or to - * allow the descriptors to be changed dynamically at runtime) either the \c USE_RAM_DESCRIPTORS or the - * \c USE_EEPROM_DESCRIPTORS tokens may be defined in the project makefile and passed to the compiler by the -D - * switch. - * - * \return Size in bytes of the descriptor if it exists, zero or \ref NO_DESCRIPTOR otherwise. - */ - uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, - const uint8_t wIndex, - const void** const DescriptorAddress - #if (defined(ARCH_HAS_MULTI_ADDRESS_SPACE) || defined(__DOXYGEN__)) && \ - !(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS)) - , uint8_t* const DescriptorMemorySpace - #endif - ) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); - - /* Architecture Includes: */ - #include - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/DeviceStandardReq.h b/cores/usblib/Core/DeviceStandardReq.h deleted file mode 100644 index 34d90577..00000000 --- a/cores/usblib/Core/DeviceStandardReq.h +++ /dev/null @@ -1,162 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB device standard request management. - * - * This file contains the function prototypes necessary for the processing of incoming standard control requests - * when the library is in USB device mode. - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -#ifndef __DEVICESTDREQ_H__ -#define __DEVICESTDREQ_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - #include - #include - #include - #include - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Enums: */ - #if defined(ARCH_HAS_MULTI_ADDRESS_SPACE) || defined(__DOXYGEN__) - /** Enum for the possible descriptor memory spaces, for the \c MemoryAddressSpace parameter of the - * \ref CALLBACK_USB_GetDescriptor() function. This can be used when none of the \c USE_*_DESCRIPTORS - * compile time options are used, to indicate in which memory space the descriptor is stored. - * - * \ingroup Group_Device - */ - enum USB_DescriptorMemorySpaces_t - { - #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE) || defined(__DOXYGEN__) - MEMSPACE_FLASH = 0, /**< Indicates the requested descriptor is located in FLASH memory. */ - #endif - #if defined(ARCH_HAS_EEPROM_ADDRESS_SPACE) || defined(__DOXYGEN__) - MEMSPACE_EEPROM = 1, /**< Indicates the requested descriptor is located in EEPROM memory. */ - #endif - MEMSPACE_RAM = 2, /**< Indicates the requested descriptor is located in RAM memory. */ - }; - #endif - - /* Global Variables: */ - /** Indicates the currently set configuration number of the device. USB devices may have several - * different configurations which the host can select between; this indicates the currently selected - * value, or 0 if no configuration has been selected. - * - * \attention This variable should be treated as read-only in the user application, and never manually - * changed in value. - * - * \ingroup Group_Device - */ - extern uint8_t USB_Device_ConfigurationNumber; - - #if !defined(NO_DEVICE_REMOTE_WAKEUP) - /** Indicates if the host is currently allowing the device to issue remote wakeup events. If this - * flag is cleared, the device should not issue remote wakeup events to the host. - * - * \attention This variable should be treated as read-only in the user application, and never manually - * changed in value. - * - * \note To reduce FLASH usage of the compiled applications where Remote Wakeup is not supported, - * this global and the underlying management code can be disabled by defining the - * \c NO_DEVICE_REMOTE_WAKEUP token in the project makefile and passing it to the compiler via - * the -D switch. - * - * \ingroup Group_Device - */ - extern bool USB_Device_RemoteWakeupEnabled; - #endif - - #if !defined(NO_DEVICE_SELF_POWER) - /** Indicates if the device is currently being powered by its own power supply, rather than being - * powered by the host's USB supply. This flag should remain cleared if the device does not - * support self powered mode, as indicated in the device descriptors. - * - * \ingroup Group_Device - */ - extern bool USB_Device_CurrentlySelfPowered; - #endif - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - #if defined(USE_RAM_DESCRIPTORS) && defined(USE_EEPROM_DESCRIPTORS) - #error USE_RAM_DESCRIPTORS and USE_EEPROM_DESCRIPTORS are mutually exclusive. - #elif defined(USE_RAM_DESCRIPTORS) && defined(USE_FLASH_DESCRIPTORS) - #error USE_RAM_DESCRIPTORS and USE_FLASH_DESCRIPTORS are mutually exclusive. - #elif defined(USE_FLASH_DESCRIPTORS) && defined(USE_EEPROM_DESCRIPTORS) - #error USE_FLASH_DESCRIPTORS and USE_EEPROM_DESCRIPTORS are mutually exclusive. - #elif defined(USE_FLASH_DESCRIPTORS) && defined(USE_EEPROM_DESCRIPTORS) && defined(USE_RAM_DESCRIPTORS) - #error Only one of the USE_*_DESCRIPTORS modes should be selected. - #endif - - /* Function Prototypes: */ - void USB_Device_ProcessControlRequest(void); - - #if defined(__INCLUDE_FROM_DEVICESTDREQ_C) - static void USB_Device_SetAddress(void); - static void USB_Device_SetConfiguration(void); - static void USB_Device_GetConfiguration(void); - static void USB_Device_GetDescriptor(void); - static void USB_Device_GetStatus(void); - static void USB_Device_ClearSetFeature(void); - - #if !defined(NO_INTERNAL_SERIAL) && (USE_INTERNAL_SERIAL != NO_DESCRIPTOR) - static void USB_Device_GetInternalSerialDescriptor(void); - #endif - #endif - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/EndPoint.h b/cores/usblib/Core/EndPoint.h deleted file mode 100644 index 68eba1c9..00000000 --- a/cores/usblib/Core/EndPoint.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB Endpoint definitions for all architectures. - * \copydetails Group_EndpointManagement - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_EndpointManagement - * \defgroup Group_EndpointRW Endpoint Data Reading and Writing - * \brief Endpoint data read/write definitions. - * - * Functions, macros, variables, enums and types related to data reading and writing from and to endpoints. - */ - -/** \ingroup Group_EndpointRW - * \defgroup Group_EndpointPrimitiveRW Read/Write of Primitive Data Types - * \brief Endpoint data primitive read/write definitions. - * - * Functions, macros, variables, enums and types related to data reading and writing of primitive data types - * from and to endpoints. - */ - -/** \ingroup Group_EndpointManagement - * \defgroup Group_EndpointPacketManagement Endpoint Packet Management - * \brief USB Endpoint package management definitions. - * - * Functions, macros, variables, enums and types related to packet management of endpoints. - */ - -/** \ingroup Group_USB - * \defgroup Group_EndpointManagement Endpoint Management - * \brief Endpoint management definitions. - * - * Functions, macros and enums related to endpoint management when in USB Device mode. This - * module contains the endpoint management macros, as well as endpoint interrupt and data - * send/receive functions for various data types. - * - * @{ - */ - -#ifndef __ENDPOINT_H__ -#define __ENDPOINT_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Type Defines: */ - /** Type define for a endpoint table entry, used to configure endpoints in groups via - * \ref Endpoint_ConfigureEndpointTable(). - */ - typedef struct - { - uint8_t Address; /**< Address of the endpoint to configure, or zero if the table entry is to be unused. */ - uint16_t Size; /**< Size of the endpoint bank, in bytes. */ - uint8_t Type; /**< Type of the endpoint, a \c EP_TYPE_* mask. */ - uint8_t Banks; /**< Number of hardware banks to use for the endpoint. */ - } USB_Endpoint_Table_t; - - /* Macros: */ - /** Endpoint number mask, for masking against endpoint addresses to retrieve the endpoint's - * numerical address in the device. - */ - #define ENDPOINT_EPNUM_MASK 0x0F - - /** Endpoint address for the default control endpoint, which always resides in address 0. This is - * defined for convenience to give more readable code when used with the endpoint macros. - */ - #define ENDPOINT_CONTROLEP 0 - - /* Architecture Includes: */ - #include - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/EndpointStream.h b/cores/usblib/Core/EndpointStream.h deleted file mode 100644 index e73e9beb..00000000 --- a/cores/usblib/Core/EndpointStream.h +++ /dev/null @@ -1,122 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Endpoint data stream transmission and reception management. - * \copydetails Group_EndpointStreamRW - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_EndpointRW - * \defgroup Group_EndpointStreamRW Read/Write of Multi-Byte Streams - * \brief Endpoint data stream transmission and reception management. - * - * Functions, macros, variables, enums and types related to data reading and writing of data streams from - * and to endpoints. - * - * @{ - */ - -#ifndef __ENDPOINT_STREAM_H__ -#define __ENDPOINT_STREAM_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Enums: */ - /** Enum for the possible error return codes of the \c Endpoint_*_Stream_* functions. */ - enum Endpoint_Stream_RW_ErrorCodes_t - { - ENDPOINT_RWSTREAM_NoError = 0, /**< Command completed successfully, no error. */ - ENDPOINT_RWSTREAM_EndpointStalled = 1, /**< The endpoint was stalled during the stream - * transfer by the host or device. - */ - ENDPOINT_RWSTREAM_DeviceDisconnected = 2, /**< Device was disconnected from the host during - * the transfer. - */ - ENDPOINT_RWSTREAM_BusSuspended = 3, /**< The USB bus has been suspended by the host and - * no USB endpoint traffic can occur until the bus - * has resumed. - */ - ENDPOINT_RWSTREAM_Timeout = 4, /**< The host failed to accept or send the next packet - * within the software timeout period set by the - * \ref USB_STREAM_TIMEOUT_MS macro. - */ - ENDPOINT_RWSTREAM_IncompleteTransfer = 5, /**< Indicates that the endpoint bank became full or empty before - * the complete contents of the current stream could be - * transferred. The endpoint stream function should be called - * again to process the next chunk of data in the transfer. - */ - }; - - /** Enum for the possible error return codes of the \c Endpoint_*_Control_Stream_* functions. */ - enum Endpoint_ControlStream_RW_ErrorCodes_t - { - ENDPOINT_RWCSTREAM_NoError = 0, /**< Command completed successfully, no error. */ - ENDPOINT_RWCSTREAM_HostAborted = 1, /**< The aborted the transfer prematurely. */ - ENDPOINT_RWCSTREAM_DeviceDisconnected = 2, /**< Device was disconnected from the host during - * the transfer. - */ - ENDPOINT_RWCSTREAM_BusSuspended = 3, /**< The USB bus has been suspended by the host and - * no USB endpoint traffic can occur until the bus - * has resumed. - */ - }; - - /* Architecture Includes: */ - #include - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/Events.c b/cores/usblib/Core/Events.c deleted file mode 100644 index 351ef48d..00000000 --- a/cores/usblib/Core/Events.c +++ /dev/null @@ -1,43 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -#define __INCLUDE_FROM_EVENTS_C -#define __INCLUDE_FROM_USB_DRIVER -#include - -void USB_Event_Stub(void) -{ - -} - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/Events.h b/cores/usblib/Core/Events.h deleted file mode 100644 index eed31804..00000000 --- a/cores/usblib/Core/Events.h +++ /dev/null @@ -1,390 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB Event management definitions. - * \copydetails Group_Events - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_USB - * \defgroup Group_Events USB Events - * \brief USB Event management definitions. - * - * This module contains macros and functions relating to the management of library events, which are small - * pieces of code similar to ISRs which are run when a given condition is met. Each event can be fired from - * multiple places in the user or library code, which may or may not be inside an ISR, thus each handler - * should be written to be as small and fast as possible to prevent possible problems. - * - * Events can be hooked by the user application by declaring a handler function with the same name and parameters - * listed here. If an event with no user-associated handler is fired within the library, it by default maps to an - * internal empty stub function. - * - * Each event must only have one associated event handler, but can be raised by multiple sources by calling the - * event handler function (with any required event parameters). - * - * @{ - */ - -#ifndef __USBEVENTS_H__ -#define __USBEVENTS_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Pseudo-Functions for Doxygen: */ - #if !defined(__INCLUDE_FROM_EVENTS_C) || defined(__DOXYGEN__) - /** Event for USB mode pin level change. This event fires when the USB interface is set to dual role - * mode, and the UID pin level has changed to indicate a new mode (device or host). This event fires - * before the mode is switched to the newly indicated mode but after the \ref EVENT_USB_Device_Disconnect - * event has fired (if disconnected before the role change). - * - * \note This event only exists on microcontrollers that support dual role USB modes. - * \n\n - * - * \note This event does not exist if the \c USB_DEVICE_ONLY or \c USB_HOST_ONLY tokens have been supplied - * to the compiler (see \ref Group_USBManagement documentation). - */ - void EVENT_USB_UIDChange(void); - - /** Event for USB host error. This event fires when a hardware fault has occurred whilst the USB - * interface is in host mode. - * - * \param[in] ErrorCode Error code indicating the failure reason, a value in \ref USB_Host_ErrorCodes_t. - * - * \note This event only exists on microcontrollers that supports USB host mode. - * \n\n - * - * \note This event does not exist if the \c USB_DEVICE_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - */ - void EVENT_USB_Host_HostError(const uint8_t ErrorCode); - - /** Event for USB device attachment. This event fires when a the USB interface is in host mode, and - * a USB device has been connected to the USB interface. This is interrupt driven, thus fires before - * the standard \ref EVENT_USB_Device_Connect() event and so can be used to programmatically start the USB - * management task to reduce CPU consumption. - * - * \note This event only exists on microcontrollers that supports USB host mode. - * \n\n - * - * \note This event does not exist if the \c USB_DEVICE_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - * - * \see \ref USB_USBTask() for more information on the USB management task and reducing CPU usage. - */ - void EVENT_USB_Host_DeviceAttached(void); - - /** Event for USB device removal. This event fires when a the USB interface is in host mode, and - * a USB device has been removed the USB interface whether or not it has been enumerated. This - * can be used to programmatically stop the USB management task to reduce CPU consumption. - * - * \note This event only exists on microcontrollers that supports USB host mode. - * \n\n - * - * \note This event does not exist if the \c USB_DEVICE_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - * - * \see \ref USB_USBTask() for more information on the USB management task and reducing CPU usage. - */ - void EVENT_USB_Host_DeviceUnattached(void); - - /** Event for USB device enumeration failure. This event fires when a the USB interface is - * in host mode, and an attached USB device has failed to enumerate completely. - * - * \param[in] ErrorCode Error code indicating the failure reason, a value in - * \ref USB_Host_EnumerationErrorCodes_t. - * - * \param[in] SubErrorCode Sub error code indicating the reason for failure - for example, if the - * ErrorCode parameter indicates a control error, this will give the error - * code returned by the \ref USB_Host_SendControlRequest() function. - * - * \note This event only exists on microcontrollers that supports USB host mode. - * \n\n - * - * \note This event does not exist if the \c USB_DEVICE_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - */ - void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, - const uint8_t SubErrorCode); - - /** Event for USB device enumeration completion. This event fires when a the USB interface is - * in host mode and an attached USB device has been completely enumerated and is ready to be - * controlled by the user application. - * - * This event is time-critical; exceeding OS-specific delays within this event handler (typically of around - * 1 second) when a transaction is waiting to be processed by the device will prevent break communications - * and cause the host to reset the USB bus. - * - * \note This event only exists on microcontrollers that supports USB host mode. - * \n\n - * - * \note This event does not exist if the \c USB_DEVICE_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - */ - void EVENT_USB_Host_DeviceEnumerationComplete(void); - - /** Event for USB Start Of Frame detection, when enabled. This event fires at the start of each USB - * frame, once per millisecond, and is synchronized to the USB bus. This can be used as an accurate - * millisecond timer source when the USB bus is not suspended while in host mode. - * - * This event is time-critical; it is run once per millisecond and thus long handlers will significantly - * degrade device performance. This event should only be enabled when needed to reduce device wake-ups. - * - * \note This event is not normally active - it must be manually enabled and disabled via the - * \ref USB_Host_EnableSOFEvents() and \ref USB_Host_DisableSOFEvents() commands after enumeration of - * a USB device. - * \n\n - * - * \note This event does not exist if the \c USB_DEVICE_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - */ - void EVENT_USB_Host_StartOfFrame(void); - - /** Event for USB device connection. This event fires when the microcontroller is in USB Device mode - * and the device is connected to a USB host, beginning the enumeration process measured by a rising - * level on the microcontroller's VBUS sense pin. - * - * This event is time-critical; exceeding OS-specific delays within this event handler (typically of around - * two seconds) will prevent the device from enumerating correctly. - * - * \attention This event may fire multiple times during device enumeration on the microcontrollers with limited USB controllers - * if \c NO_LIMITED_CONTROLLER_CONNECT is not defined. - * - * \note For the microcontrollers with limited USB controller functionality, VBUS sensing is not available. - * this means that the current connection state is derived from the bus suspension and wake up events by default, - * which is not always accurate (host may suspend the bus while still connected). If the actual connection state - * needs to be determined, VBUS should be routed to an external pin, and the auto-detect behavior turned off by - * passing the \c NO_LIMITED_CONTROLLER_CONNECT token to the compiler via the -D switch at compile time. The connection - * and disconnection events may be manually fired, and the \ref USB_DeviceState global changed manually. - * \n\n - * - * \see \ref Group_USBManagement for more information on the USB management task and reducing CPU usage. - */ - void EVENT_USB_Device_Connect(void); - - /** Event for USB device disconnection. This event fires when the microcontroller is in USB Device mode and the device is - * disconnected from a host, measured by a falling level on the microcontroller's VBUS sense pin. - * - * \attention This event may fire multiple times during device enumeration on the microcontrollers with limited USB controllers - * if \c NO_LIMITED_CONTROLLER_CONNECT is not defined. - * - * \note For the microcontrollers with limited USB controllers, VBUS sense is not available to the USB controller. - * this means that the current connection state is derived from the bus suspension and wake up events by default, - * which is not always accurate (host may suspend the bus while still connected). If the actual connection state - * needs to be determined, VBUS should be routed to an external pin, and the auto-detect behavior turned off by - * passing the \c NO_LIMITED_CONTROLLER_CONNECT token to the compiler via the -D switch at compile time. The connection - * and disconnection events may be manually fired, and the \ref USB_DeviceState global changed manually. - * \n\n - * - * \see \ref Group_USBManagement for more information on the USB management task and reducing CPU usage. - */ - void EVENT_USB_Device_Disconnect(void); - - /** Event for control requests. This event fires when a the USB host issues a control request - * to the mandatory device control endpoint (of address 0). This may either be a standard - * request that the library may have a handler code for internally, or a class specific request - * issued to the device which must be handled appropriately. If a request is not processed in the - * user application via this event, it will be passed to the library for processing internally - * if a suitable handler exists. - * - * This event is time-critical; each packet within the request transaction must be acknowledged or - * sent within 50ms or the host will abort the transfer. - * - * The library internally handles all standard control requests with the exceptions of SYNC FRAME, - * SET DESCRIPTOR and SET INTERFACE. These and all other non-standard control requests will be left - * for the user to process via this event if desired. If not handled in the user application or by - * the library internally, unknown requests are automatically STALLed. - * - * \note This event does not exist if the \c USB_HOST_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - * \n\n - * - * \note Requests should be handled in the same manner as described in the USB 2.0 Specification, - * or appropriate class specification. In all instances, the library has already read the - * request SETUP parameters into the \ref USB_ControlRequest structure which should then be used - * by the application to determine how to handle the issued request. - */ - void EVENT_USB_Device_ControlRequest(void); - - /** Event for USB configuration number changed. This event fires when a the USB host changes the - * selected configuration number while in device mode. This event should be hooked in device - * applications to create the endpoints and configure the device for the selected configuration. - * - * This event is time-critical; exceeding OS-specific delays within this event handler (typically of around - * one second) will prevent the device from enumerating correctly. - * - * This event fires after the value of \ref USB_Device_ConfigurationNumber has been changed. - * - * \note This event does not exist if the \c USB_HOST_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - */ - void EVENT_USB_Device_ConfigurationChanged(void); - - /** Event for USB suspend. This event fires when a the USB host suspends the device by halting its - * transmission of Start Of Frame pulses to the device. This is generally hooked in order to move - * the device over to a low power state until the host wakes up the device. If the USB interface is - * enumerated with the \ref USB_OPT_AUTO_PLL option set, the library will automatically suspend the - * USB PLL before the event is fired to save power. - * - * \note This event does not exist if the \c USB_HOST_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - * \n\n - * - * \note This event does not exist on the microcontrollers with limited USB VBUS sensing abilities - * when the \c NO_LIMITED_CONTROLLER_CONNECT compile time token is not set - see - * \ref EVENT_USB_Device_Disconnect. - * - * \see \ref EVENT_USB_Device_WakeUp() event for accompanying Wake Up event. - */ - void EVENT_USB_Device_Suspend(void); - - /** Event for USB wake up. This event fires when a the USB interface is suspended while in device - * mode, and the host wakes up the device by supplying Start Of Frame pulses. This is generally - * hooked to pull the user application out of a low power state and back into normal operating - * mode. If the USB interface is enumerated with the \ref USB_OPT_AUTO_PLL option set, the library - * will automatically restart the USB PLL before the event is fired. - * - * \note This event does not exist if the \c USB_HOST_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - * \n\n - * - * \note This event does not exist on the microcontrollers with limited USB VBUS sensing abilities - * when the \c NO_LIMITED_CONTROLLER_CONNECT compile time token is not set - see - * \ref EVENT_USB_Device_Disconnect. - * - * \see \ref EVENT_USB_Device_Suspend() event for accompanying Suspend event. - */ - void EVENT_USB_Device_WakeUp(void); - - /** Event for USB interface reset. This event fires when the USB interface is in device mode, and - * a the USB host requests that the device reset its interface. This event fires after the control - * endpoint has been automatically configured by the library. - * - * This event is time-critical; exceeding OS-specific delays within this event handler (typically of around - * two seconds) will prevent the device from enumerating correctly. - * - * \note This event does not exist if the \c USB_HOST_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - */ - void EVENT_USB_Device_Reset(void); - - /** Event for USB Start Of Frame detection, when enabled. This event fires at the start of each USB - * frame, once per millisecond, and is synchronized to the USB bus. This can be used as an accurate - * millisecond timer source when the USB bus is enumerated in device mode to a USB host. - * - * This event is time-critical; it is run once per millisecond and thus long handlers will significantly - * degrade device performance. This event should only be enabled when needed to reduce device wake-ups. - * - * \pre This event is not normally active - it must be manually enabled and disabled via the - * \ref USB_Device_EnableSOFEvents() and \ref USB_Device_DisableSOFEvents() commands after enumeration. - * \n\n - * - * \note This event does not exist if the \c USB_HOST_ONLY token is supplied to the compiler (see - * \ref Group_USBManagement documentation). - */ - void EVENT_USB_Device_StartOfFrame(void); - #endif - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Function Prototypes: */ - #if defined(__INCLUDE_FROM_EVENTS_C) - void USB_Event_Stub(void) ATTR_CONST; - - #if defined(USB_CAN_BE_BOTH) - void EVENT_USB_UIDChange(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #endif - - #if defined(USB_CAN_BE_HOST) - #pragma weak EVENT_USB_Host_HostError=USB_Event_Stub - void EVENT_USB_Host_HostError(const uint8_t ErrorCode) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Host_DeviceAttached=USB_Event_Stub - void EVENT_USB_Host_DeviceAttached(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Host_DeviceUnattached=USB_Event_Stub - void EVENT_USB_Host_DeviceUnattached(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Host_DeviceEnumerationComplete=USB_Event_Stub - void EVENT_USB_Host_DeviceEnumerationComplete(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Host_DeviceEnumerationFailed=USB_Event_Stub - void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, - const uint8_t SubErrorCode) - ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Host_StartOfFrame=USB_Event_Stub - void EVENT_USB_Host_StartOfFrame(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #endif - - #if defined(USB_CAN_BE_DEVICE) - #pragma weak EVENT_USB_Device_Connect=USB_Event_Stub - void EVENT_USB_Device_Connect(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Device_Disconnect=USB_Event_Stub - void EVENT_USB_Device_Disconnect(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Device_ControlRequest=USB_Event_Stub - void EVENT_USB_Device_ControlRequest(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Device_ConfigurationChanged=USB_Event_Stub - void EVENT_USB_Device_ConfigurationChanged(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Device_Suspend=USB_Event_Stub - void EVENT_USB_Device_Suspend(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Device_WakeUp=USB_Event_Stub - void EVENT_USB_Device_WakeUp(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Device_Reset=USB_Event_Stub - void EVENT_USB_Device_Reset(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #pragma weak EVENT_USB_Device_StartOfFrame=USB_Event_Stub - void EVENT_USB_Device_StartOfFrame(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub); - #endif - #endif - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/Host.h b/cores/usblib/Core/Host.h deleted file mode 100644 index 8cadfc56..00000000 --- a/cores/usblib/Core/Host.h +++ /dev/null @@ -1,143 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common USB Host definitions for all architectures. - * \copydetails Group_Host - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_USB - * \defgroup Group_Host Host Management - * \brief USB Host management definitions for USB host mode. - * - * USB Host mode related macros and enums. This module contains macros and enums which are used when - * the USB controller is initialized in host mode. - * - * @{ - */ - -#ifndef __USBHOST_H__ -#define __USBHOST_H__ - - /* Includes: */ - #include <../../../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Enums: */ - /** Enum for the various states of the USB Host state machine. - * - * For information on each possible USB host state, refer to the USB 2.0 specification. - * Several of the USB host states are broken up further into multiple smaller sub-states, - * so that they can be internally implemented inside the library in an efficient manner. - * - * \see \ref USB_HostState, which stores the current host state machine state. - */ - enum USB_Host_States_t - { - HOST_STATE_WaitForDevice = 0, /**< This state indicates that the stack is waiting for an interval - * to elapse before continuing with the next step of the device - * enumeration process. - */ - HOST_STATE_Unattached = 1, /**< This state indicates that the host state machine is waiting for - * a device to be attached so that it can start the enumeration process. - */ - HOST_STATE_Powered = 2, /**< This state indicates that a device has been attached, and the - * library's internals are being configured to begin the enumeration - * process. - */ - HOST_STATE_Powered_WaitForDeviceSettle = 3, /**< This state indicates that the stack is waiting for the initial - * settling period to elapse before beginning the enumeration process. - */ - HOST_STATE_Powered_WaitForConnect = 4, /**< This state indicates that the stack is waiting for a connection event - * from the USB controller to indicate a valid USB device has been attached - * to the bus and is ready to be enumerated. - */ - HOST_STATE_Powered_DoReset = 5, /**< This state indicates that a valid USB device has been attached, and that - * it will now be reset to ensure it is ready for enumeration. - */ - HOST_STATE_Powered_ConfigPipe = 6, /**< This state indicates that the attached device is currently powered and - * reset, and that the control pipe is now being configured by the stack. - */ - HOST_STATE_Default = 7, /**< This state indicates that the stack is currently retrieving the control - * endpoint's size from the device, so that the control pipe can be altered - * to match. - */ - HOST_STATE_Default_PostReset = 8, /**< This state indicates that the control pipe is being reconfigured to match - * the retrieved control endpoint size from the device, and the device's USB - * bus address is being set. - */ - HOST_STATE_Default_PostAddressSet = 9, /**< This state indicates that the device's address has now been set, and the - * stack is has now completed the device enumeration process. This state causes - * the stack to change the current USB device address to that set for the - * connected device, before progressing to the \ref HOST_STATE_Addressed state - * ready for use in the user application. - */ - HOST_STATE_Addressed = 10, /**< Indicates that the device has been enumerated and addressed, and is now waiting - * for the user application to configure the device ready for use. - */ - HOST_STATE_Configured = 11, /**< Indicates that the device has been configured into a valid device configuration, - * ready for general use by the user application. - */ - }; - - /* Architecture Includes: */ - #if (ARCH == ARCH_AVR8) - #include - #elif (ARCH == ARCH_UC3) - #include - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/HostStandardReq.c b/cores/usblib/Core/HostStandardReq.c deleted file mode 100644 index ac409159..00000000 --- a/cores/usblib/Core/HostStandardReq.c +++ /dev/null @@ -1,326 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -#define __INCLUDE_FROM_USB_DRIVER -#include - -#if defined(USB_CAN_BE_HOST) - -#define __INCLUDE_FROM_HOSTSTDREQ_C -#include - -uint8_t USB_Host_ConfigurationNumber; - -static uint8_t USB_Host_SendControlRequest_PRV(void* const BufferPtr) -{ - uint8_t* DataStream = (uint8_t*)BufferPtr; - uint8_t ReturnStatus = HOST_SENDCONTROL_Successful; - uint16_t DataLen = USB_ControlRequest.wLength; - - USB_Host_ResumeBus(); - - if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - return ReturnStatus; - - Pipe_SetPipeToken(PIPE_TOKEN_SETUP); - Pipe_ClearError(); - - Pipe_Unfreeze(); - - #if defined(ARCH_BIG_ENDIAN) - Pipe_Write_8(USB_ControlRequest.bmRequestType); - Pipe_Write_8(USB_ControlRequest.bRequest); - Pipe_Write_16_LE(USB_ControlRequest.wValue); - Pipe_Write_16_LE(USB_ControlRequest.wIndex); - Pipe_Write_16_LE(USB_ControlRequest.wLength); - #else - uint8_t* HeaderStream = (uint8_t*)&USB_ControlRequest; - - for (uint8_t HeaderByte = 0; HeaderByte < sizeof(USB_Request_Header_t); HeaderByte++) - Pipe_Write_8(*(HeaderStream++)); - #endif - - Pipe_ClearSETUP(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_SetupSent)) != HOST_SENDCONTROL_Successful) - return ReturnStatus; - - Pipe_Freeze(); - - if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - return ReturnStatus; - - if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_DIRECTION) == REQDIR_DEVICETOHOST) - { - Pipe_SetPipeToken(PIPE_TOKEN_IN); - - if (DataStream != NULL) - { - while (DataLen) - { - Pipe_Unfreeze(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful) - return ReturnStatus; - - if (!(Pipe_BytesInPipe())) - DataLen = 0; - - while (Pipe_BytesInPipe() && DataLen) - { - *(DataStream++) = Pipe_Read_8(); - DataLen--; - } - - Pipe_Freeze(); - Pipe_ClearIN(); - } - } - - Pipe_SetPipeToken(PIPE_TOKEN_OUT); - Pipe_Unfreeze(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - return ReturnStatus; - - Pipe_ClearOUT(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - return ReturnStatus; - } - else - { - if (DataStream != NULL) - { - Pipe_SetPipeToken(PIPE_TOKEN_OUT); - Pipe_Unfreeze(); - - while (DataLen) - { - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - return ReturnStatus; - - while (DataLen && (Pipe_BytesInPipe() < USB_Host_ControlPipeSize)) - { - Pipe_Write_8(*(DataStream++)); - DataLen--; - } - - Pipe_ClearOUT(); - } - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful) - return ReturnStatus; - - Pipe_Freeze(); - } - - Pipe_SetPipeToken(PIPE_TOKEN_IN); - Pipe_Unfreeze(); - - if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful) - return ReturnStatus; - - Pipe_ClearIN(); - } - - return ReturnStatus; -} - -static uint8_t USB_Host_WaitForIOS(const uint8_t WaitType) -{ - #if (USB_HOST_TIMEOUT_MS < 0xFF) - uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS; - #else - uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS; - #endif - - while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) || - ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) || - ((WaitType == USB_HOST_WAITFOR_OutReady) && Pipe_IsOUTReady()))) - { - uint8_t ErrorCode; - - if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful) - return ErrorCode; - - if (!(TimeoutCounter--)) - return HOST_SENDCONTROL_SoftwareTimeOut; - } - - return HOST_SENDCONTROL_Successful; -} - -uint8_t USB_Host_SendControlRequest(void* const BufferPtr) -{ - bool BusSuspended = USB_Host_IsBusSuspended(); - uint8_t ReturnStatus = USB_Host_SendControlRequest_PRV(BufferPtr); - - Pipe_Freeze(); - - if (BusSuspended) - USB_Host_SuspendBus(); - - Pipe_ResetPipe(PIPE_CONTROLPIPE); - - return ReturnStatus; -} - -uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber) -{ - uint8_t ErrorCode; - - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_SetConfiguration, - .wValue = ConfigNumber, - .wIndex = 0, - .wLength = 0, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - if ((ErrorCode = USB_Host_SendControlRequest(NULL)) == HOST_SENDCONTROL_Successful) - { - USB_Host_ConfigurationNumber = ConfigNumber; - USB_HostState = (ConfigNumber) ? HOST_STATE_Configured : HOST_STATE_Addressed; - } - - return ErrorCode; -} - -uint8_t USB_Host_GetDeviceConfiguration(uint8_t* const ConfigNumber) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetConfiguration, - .wValue = 0, - .wIndex = 0, - .wLength = sizeof(uint8_t), - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(ConfigNumber); -} - -uint8_t USB_Host_GetDescriptor(const uint8_t Type, - const uint8_t Index, - void* const Buffer, - const uint8_t BufferLength) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetDescriptor, - .wValue = (((uint16_t)Type << 8) | Index), - .wIndex = 0, - .wLength = BufferLength, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(Buffer); -} - -uint8_t USB_Host_GetDeviceStatus(uint8_t* const FeatureStatus) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE), - .bRequest = REQ_GetStatus, - .wValue = 0, - .wIndex = 0, - .wLength = 0, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(FeatureStatus); -} - -uint8_t USB_Host_ClearEndpointStall(const uint8_t EndpointAddress) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_ENDPOINT), - .bRequest = REQ_ClearFeature, - .wValue = FEATURE_SEL_EndpointHalt, - .wIndex = EndpointAddress, - .wLength = 0, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(NULL); -} - -uint8_t USB_Host_SetInterfaceAltSetting(const uint8_t InterfaceIndex, - const uint8_t AltSetting) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_INTERFACE), - .bRequest = REQ_SetInterface, - .wValue = AltSetting, - .wIndex = InterfaceIndex, - .wLength = 0, - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(NULL); -} - -uint8_t USB_Host_GetInterfaceAltSetting(const uint8_t InterfaceIndex, - uint8_t* const AltSetting) -{ - USB_ControlRequest = (USB_Request_Header_t) - { - .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_INTERFACE), - .bRequest = REQ_GetInterface, - .wValue = 0, - .wIndex = InterfaceIndex, - .wLength = sizeof(uint8_t), - }; - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - return USB_Host_SendControlRequest(AltSetting); -} - -#endif - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/HostStandardReq.h b/cores/usblib/Core/HostStandardReq.h deleted file mode 100644 index 2684af18..00000000 --- a/cores/usblib/Core/HostStandardReq.h +++ /dev/null @@ -1,296 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB host standard request management. - * - * This file contains the function prototypes necessary for the issuing of outgoing standard control requests - * when the library is in USB host mode. - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -#ifndef __HOSTSTDREQ_H__ -#define __HOSTSTDREQ_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - #include - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - #if !defined(USB_HOST_TIMEOUT_MS) || defined(__DOXYGEN__) - /** Constant for the maximum software timeout period of sent USB control transactions to an attached - * device. If a device fails to respond to a sent control request within this period, the - * library will return a timeout error code. - * - * This value may be overridden in the user project makefile as the value of the - * \ref USB_HOST_TIMEOUT_MS token, and passed to the compiler using the -D switch. - */ - #define USB_HOST_TIMEOUT_MS 1000 - #endif - - /* Enums: */ - /** Enum for the \ref USB_Host_SendControlRequest() return code, indicating the reason for the error - * if the transfer of the request is unsuccessful. - * - * \ingroup Group_PipeControlReq - */ - enum USB_Host_SendControlErrorCodes_t - { - HOST_SENDCONTROL_Successful = 0, /**< No error occurred in the request transfer. */ - HOST_SENDCONTROL_DeviceDisconnected = 1, /**< The attached device was disconnected during the - * request transfer. - */ - HOST_SENDCONTROL_PipeError = 2, /**< An error occurred in the pipe while sending the request. */ - HOST_SENDCONTROL_SetupStalled = 3, /**< The attached device stalled the request, usually - * indicating that the request is unsupported on the device. - */ - HOST_SENDCONTROL_SoftwareTimeOut = 4, /**< The request or data transfer timed out. */ - }; - - /* Global Variables: */ - /** Indicates the currently set configuration number of the attached device. This indicates the currently - * selected configuration value if one has been set successfully, or 0 if no configuration has been selected. - * - * To set a device configuration, call the \ref USB_Host_SetDeviceConfiguration() function. - * - * \attention This variable should be treated as read-only in the user application, and never manually - * changed in value. - * - * \ingroup Group_Host - */ - extern uint8_t USB_Host_ConfigurationNumber; - - /* Function Prototypes: */ - /** Sends the request stored in the \ref USB_ControlRequest global structure to the attached device, - * and transfers the data stored in the buffer to the device, or from the device to the buffer - * as requested. The transfer is made on the currently selected pipe. - * - * \ingroup Group_PipeControlReq - * - * \param[in] BufferPtr Pointer to the start of the data buffer if the request has a data stage, or - * \c NULL if the request transfers no data to or from the device. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_SendControlRequest(void* const BufferPtr); - - /** Sends a SET CONFIGURATION standard request to the attached device, with the given configuration index. - * - * This routine will automatically update the \ref USB_HostState and \ref USB_Host_ConfigurationNumber - * state variables according to the given function parameters and the result of the request. - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[in] ConfigNumber Configuration index to send to the device. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber); - - /** Sends a GET CONFIGURATION standard request to the attached device, to retrieve the currently selected - * device configuration index. - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[out] ConfigNumber Pointer to a location where the retrieved configuration index should be stored. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_GetDeviceConfiguration(uint8_t* const ConfigNumber) ATTR_NON_NULL_PTR_ARG(1); - - /** Sends a GET DESCRIPTOR standard request to the attached device, requesting the descriptor of the - * specified type and index. - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[in] Type Type of descriptor to retrieve, a value from the \ref USB_DescriptorTypes_t enum. - * \param[in] Index Index of the descriptor to retrieve. - * \param[out] Buffer Pointer to the destination buffer where the retrieved string descriptor is to be stored. - * \param[in] BufferLength Maximum size of the string descriptor which can be stored into the buffer. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_GetDescriptor(const uint8_t Type, - const uint8_t Index, - void* const Buffer, - const uint8_t BufferLength) ATTR_NON_NULL_PTR_ARG(3); - - /** Retrieves the current feature status of the attached device, via a GET STATUS standard request. The - * retrieved feature status can then be examined by masking the retrieved value with the various - * \c FEATURE_* masks for bus/self power information and remote wakeup support. - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[out] FeatureStatus Location where the retrieved feature status should be stored. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_GetDeviceStatus(uint8_t* const FeatureStatus) ATTR_NON_NULL_PTR_ARG(1); - - /** Clears a stall condition on the given pipe, via a CLEAR FEATURE standard request to the attached device. - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[in] EndpointAddress Address of the endpoint to clear, including the endpoint's direction. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_ClearEndpointStall(const uint8_t EndpointAddress); - - /** Selects a given alternative setting for the specified interface, via a SET INTERFACE standard request to - * the attached device. - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[in] InterfaceIndex Index of the interface whose alternative setting is to be altered. - * \param[in] AltSetting Index of the interface's alternative setting which is to be selected. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_SetInterfaceAltSetting(const uint8_t InterfaceIndex, - const uint8_t AltSetting); - - - /** Retrieves the current alternative setting for the specified interface, via a GET INTERFACE standard request to - * the attached device. - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[in] InterfaceIndex Index of the interface whose alternative setting is to be altered. - * \param[out] AltSetting Pointer to a location where the retrieved alternative setting value should be stored. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - uint8_t USB_Host_GetInterfaceAltSetting(const uint8_t InterfaceIndex, - uint8_t* const AltSetting) ATTR_NON_NULL_PTR_ARG(2); - - /* Inline Functions: */ - /** Sends a GET DESCRIPTOR standard request to the attached device, requesting the device descriptor. - * This can be used to easily retrieve information about the device such as its VID, PID and power - * requirements. This is a convenience wrapper for \ref USB_Host_GetDescriptor(). - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[out] DeviceDescriptorPtr Pointer to the destination device descriptor structure where - * the read data is to be stored. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - static inline uint8_t USB_Host_GetDeviceDescriptor(USB_Descriptor_Device_t* const DeviceDescriptorPtr) ATTR_NON_NULL_PTR_ARG(1); - static inline uint8_t USB_Host_GetDeviceDescriptor(USB_Descriptor_Device_t* const DeviceDescriptorPtr) - { - return USB_Host_GetDescriptor(DTYPE_Device, 0, DeviceDescriptorPtr, sizeof(USB_Descriptor_Device_t)); - } - - /** Sends a GET DESCRIPTOR standard request to the attached device, requesting the string descriptor - * of the specified index. This can be used to easily retrieve string descriptors from the device by - * index, after the index is obtained from the Device or Configuration descriptors. This is a convenience - * wrapper for \ref USB_Host_GetDescriptor(). - * - * \note After this routine returns, the control pipe will be selected. - * - * \ingroup Group_PipeControlReq - * - * \param[in] Index Index of the string descriptor to retrieve. - * \param[out] Buffer Pointer to the destination buffer where the retrieved string descriptor is - * to be stored. - * \param[in] BufferLength Maximum size of the string descriptor which can be stored into the buffer. - * - * \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result. - */ - static inline uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, - void* const Buffer, - const uint8_t BufferLength) ATTR_NON_NULL_PTR_ARG(2); - static inline uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index, - void* const Buffer, - const uint8_t BufferLength) - { - return USB_Host_GetDescriptor(DTYPE_String, Index, Buffer, BufferLength); - } - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Enums: */ - enum USB_WaitForTypes_t - { - USB_HOST_WAITFOR_SetupSent, - USB_HOST_WAITFOR_InReceived, - USB_HOST_WAITFOR_OutReady, - }; - - /* Function Prototypes: */ - #if defined(__INCLUDE_FROM_HOSTSTDREQ_C) - static uint8_t USB_Host_SendControlRequest_PRV(void* const BufferPtr); - static uint8_t USB_Host_WaitForIOS(const uint8_t WaitType); - #endif - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/OTG.h b/cores/usblib/Core/OTG.h deleted file mode 100644 index 7281c433..00000000 --- a/cores/usblib/Core/OTG.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common USB OTG definitions for all architectures. - * \copydetails Group_OTG - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_USB - * \defgroup Group_OTG USB On The Go (OTG) Management - * \brief USB OTG management definitions. - * - * This module contains macros for embedded USB hosts with dual role On The Go capabilities, for managing role - * exchange. OTG is a way for two USB dual role devices to talk to one another directly without fixed device/host - * roles. - * - * @{ - */ - -#ifndef __USBOTG_H__ -#define __USBOTG_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/Pipe.h b/cores/usblib/Core/Pipe.h deleted file mode 100644 index a45a98ba..00000000 --- a/cores/usblib/Core/Pipe.h +++ /dev/null @@ -1,143 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common USB Pipe definitions for all architectures. - * \copydetails Group_PipeManagement - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in USB/USB.h. - */ - -/** \ingroup Group_PipeManagement - * \defgroup Group_PipeRW Pipe Data Reading and Writing - * \brief Pipe data read/write definitions. - * - * Functions, macros, variables, enums and types related to data reading and writing from and to pipes. - */ - -/** \ingroup Group_PipeRW - * \defgroup Group_PipePrimitiveRW Read/Write of Primitive Data Types - * \brief Pipe data primitive read/write definitions. - * - * Functions, macros, variables, enums and types related to data reading and writing of primitive data types - * from and to pipes. - */ - -/** \ingroup Group_PipeManagement - * \defgroup Group_PipePacketManagement Pipe Packet Management - * \brief Pipe packet management definitions. - * - * Functions, macros, variables, enums and types related to packet management of pipes. - */ - -/** \ingroup Group_PipeManagement - * \defgroup Group_PipeControlReq Pipe Control Request Management - * \brief Pipe control request definitions. - * - * Module for host mode request processing. This module allows for the transmission of standard, class and - * vendor control requests to the default control endpoint of an attached device while in host mode. - * - * \see Chapter 9 of the USB 2.0 specification. - */ - -/** \ingroup Group_USB - * \defgroup Group_PipeManagement Pipe Management - * \brief Pipe management definitions. - * - * This module contains functions, macros and enums related to pipe management when in USB Host mode. This - * module contains the pipe management macros, as well as pipe interrupt and data send/receive functions - * for various data types. - * - * @{ - */ - -#ifndef __PIPE_H__ -#define __PIPE_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Type Defines: */ - /** Type define for a pipe table entry, used to configure pipes in groups via - * \ref Pipe_ConfigurePipeTable(). - */ - typedef struct - { - uint8_t Address; /**< Address of the pipe to configure, or zero if the table entry is to be unused. */ - uint16_t Size; /**< Size of the pipe bank, in bytes. */ - uint8_t EndpointAddress; /**< Address of the endpoint in the connected device. */ - uint8_t Type; /**< Type of the endpoint, a \c EP_TYPE_* mask. */ - uint8_t Banks; /**< Number of hardware banks to use for the pipe. */ - } USB_Pipe_Table_t; - - /* Macros: */ - /** Pipe address for the default control pipe, which always resides in address 0. This is - * defined for convenience to give more readable code when used with the pipe macros. - */ - #define PIPE_CONTROLPIPE 0 - - /** Pipe number mask, for masking against pipe addresses to retrieve the pipe's numerical address - * in the device. - */ - #define PIPE_PIPENUM_MASK 0x0F - - /** Endpoint number mask, for masking against endpoint addresses to retrieve the endpoint's - * numerical address in the attached device. - */ - #define PIPE_EPNUM_MASK 0x0F - - /* Architecture Includes: */ - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/PipeStream.h b/cores/usblib/Core/PipeStream.h deleted file mode 100644 index 3b5f69c8..00000000 --- a/cores/usblib/Core/PipeStream.h +++ /dev/null @@ -1,99 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Pipe data stream transmission and reception management. - * \copydetails Group_PipeStreamRW - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_PipeRW - * \defgroup Group_PipeStreamRW Read/Write of Multi-Byte Streams - * \brief Pipe data stream transmission and reception management. - * - * Functions, macros, variables, enums and types related to data reading and writing of data streams from - * and to pipes. - * - * @{ - */ - -#ifndef __PIPE_STREAM_H__ -#define __PIPE_STREAM_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Enums: */ - /** Enum for the possible error return codes of the Pipe_*_Stream_* functions. */ - enum Pipe_Stream_RW_ErrorCodes_t - { - PIPE_RWSTREAM_NoError = 0, /**< Command completed successfully, no error. */ - PIPE_RWSTREAM_PipeStalled = 1, /**< The device stalled the pipe during the transfer. */ - PIPE_RWSTREAM_DeviceDisconnected = 2, /**< Device was disconnected from the host during - * the transfer. - */ - PIPE_RWSTREAM_Timeout = 3, /**< The device failed to accept or send the next packet - * within the software timeout period set by the - * \ref USB_STREAM_TIMEOUT_MS macro. - */ - PIPE_RWSTREAM_IncompleteTransfer = 4, /**< Indicates that the pipe bank became full/empty before the - * complete contents of the stream could be transferred. - */ - }; - - /* Architecture Includes: */ - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/StdDescriptors.h b/cores/usblib/Core/StdDescriptors.h deleted file mode 100644 index 977b0762..00000000 --- a/cores/usblib/Core/StdDescriptors.h +++ /dev/null @@ -1,775 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common standard USB Descriptor definitions for all architectures. - * \copydetails Group_StdDescriptors - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_USB - * \defgroup Group_StdDescriptors USB Descriptors - * \brief Standard USB Descriptor definitions. - * - * Standard USB device descriptor defines and retrieval routines, for USB devices. This module contains - * structures and macros for the easy creation of standard USB descriptors in USB device projects. - * - * @{ - */ - -#ifndef __USBDESCRIPTORS_H__ -#define __USBDESCRIPTORS_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** Indicates that a given descriptor does not exist in the device. This can be used inside descriptors - * for string descriptor indexes, or may be use as a return value for GetDescriptor when the specified - * descriptor does not exist. - */ - #define NO_DESCRIPTOR 0 - - /** Macro to calculate the power value for the configuration descriptor, from a given number of milliamperes. - * - * \param[in] mA Maximum number of milliamps the device consumes when the given configuration is selected. - */ - #define USB_CONFIG_POWER_MA(mA) ((mA) >> 1) - - /** Macro to calculate the Unicode length of a string with a given number of Unicode characters. - * Should be used in string descriptor's headers for giving the string descriptor's byte length. - * - * \param[in] UnicodeChars Number of Unicode characters in the string text. - */ - #define USB_STRING_LEN(UnicodeChars) (sizeof(USB_Descriptor_Header_t) + ((UnicodeChars) << 1)) - - /** Convenience macro to easily create \ref USB_Descriptor_String_t instances from a wide character string. - * - * \note This macro is for little-endian systems only. - * - * \param[in] String String to initialize a USB String Descriptor structure with. - */ - #define USB_STRING_DESCRIPTOR(String) { .Header = {.Size = sizeof(USB_Descriptor_Header_t) + (sizeof(String) - 2), .Type = DTYPE_String}, .UnicodeString = String } - - /** Convenience macro to easily create \ref USB_Descriptor_String_t instances from an array of characters. - * - * \param[in] ... Characters to initialize a USB String Descriptor structure with. - */ - #define USB_STRING_DESCRIPTOR_ARRAY(...) { .Header = {.Size = sizeof(USB_Descriptor_Header_t) + sizeof((uint16_t){__VA_ARGS__}), .Type = DTYPE_String}, .UnicodeString = {__VA_ARGS__} } - - /** Macro to encode a given major/minor/revision version number into Binary Coded Decimal format for descriptor - * fields requiring BCD encoding, such as the USB version number in the standard device descriptor. - * - * \note This value is automatically converted into Little Endian, suitable for direct use inside device - * descriptors on all architectures without endianness conversion macros. - * - * \param[in] Major Major version number to encode. - * \param[in] Minor Minor version number to encode. - * \param[in] Revision Revision version number to encode. - */ - #define VERSION_BCD(Major, Minor, Revision) \ - CPU_TO_LE16( ((Major & 0xFF) << 8) | \ - ((Minor & 0x0F) << 4) | \ - (Revision & 0x0F) ) - - /** String language ID for the English language. Should be used in \ref USB_Descriptor_String_t descriptors - * to indicate that the English language is supported by the device in its string descriptors. - */ - #define LANGUAGE_ID_ENG 0x0409 - - /** \name USB Configuration Descriptor Attribute Masks */ - //@{ - /** Mask for the reserved bit in the Configuration Descriptor's \c ConfigAttributes field, which must be set on all - * devices for historical purposes. - */ - #define USB_CONFIG_ATTR_RESERVED 0x80 - - /** Can be masked with other configuration descriptor attributes for a \ref USB_Descriptor_Configuration_Header_t - * descriptor's \c ConfigAttributes value to indicate that the specified configuration can draw its power - * from the device's own power source. - */ - #define USB_CONFIG_ATTR_SELFPOWERED 0x40 - - /** Can be masked with other configuration descriptor attributes for a \ref USB_Descriptor_Configuration_Header_t - * descriptor's \c ConfigAttributes value to indicate that the specified configuration supports the - * remote wakeup feature of the USB standard, allowing a suspended USB device to wake up the host upon - * request. - */ - #define USB_CONFIG_ATTR_REMOTEWAKEUP 0x20 - //@} - - /** \name Endpoint Descriptor Attribute Masks */ - //@{ - /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's - * \c Attributes value to indicate that the specified endpoint is not synchronized. - * - * \see The USB specification for more details on the possible Endpoint attributes. - */ - #define ENDPOINT_ATTR_NO_SYNC (0 << 2) - - /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's - * \c Attributes value to indicate that the specified endpoint is asynchronous. - * - * \see The USB specification for more details on the possible Endpoint attributes. - */ - #define ENDPOINT_ATTR_ASYNC (1 << 2) - - /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's - * \c Attributes value to indicate that the specified endpoint is adaptive. - * - * \see The USB specification for more details on the possible Endpoint attributes. - */ - #define ENDPOINT_ATTR_ADAPTIVE (2 << 2) - - /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's - * \c Attributes value to indicate that the specified endpoint is synchronized. - * - * \see The USB specification for more details on the possible Endpoint attributes. - */ - #define ENDPOINT_ATTR_SYNC (3 << 2) - //@} - - /** \name Endpoint Descriptor Usage Masks */ - //@{ - /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's - * \c Attributes value to indicate that the specified endpoint is used for data transfers. - * - * \see The USB specification for more details on the possible Endpoint usage attributes. - */ - #define ENDPOINT_USAGE_DATA (0 << 4) - - /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's - * \c Attributes value to indicate that the specified endpoint is used for feedback. - * - * \see The USB specification for more details on the possible Endpoint usage attributes. - */ - #define ENDPOINT_USAGE_FEEDBACK (1 << 4) - - /** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's - * \c Attributes value to indicate that the specified endpoint is used for implicit feedback. - * - * \see The USB specification for more details on the possible Endpoint usage attributes. - */ - #define ENDPOINT_USAGE_IMPLICIT_FEEDBACK (2 << 4) - //@} - - /* Enums: */ - /** Enum for the possible standard descriptor types, as given in each descriptor's header. */ - enum USB_DescriptorTypes_t - { - DTYPE_Device = 0x01, /**< Indicates that the descriptor is a device descriptor. */ - DTYPE_Configuration = 0x02, /**< Indicates that the descriptor is a configuration descriptor. */ - DTYPE_String = 0x03, /**< Indicates that the descriptor is a string descriptor. */ - DTYPE_Interface = 0x04, /**< Indicates that the descriptor is an interface descriptor. */ - DTYPE_Endpoint = 0x05, /**< Indicates that the descriptor is an endpoint descriptor. */ - DTYPE_DeviceQualifier = 0x06, /**< Indicates that the descriptor is a device qualifier descriptor. */ - DTYPE_Other = 0x07, /**< Indicates that the descriptor is of other type. */ - DTYPE_InterfacePower = 0x08, /**< Indicates that the descriptor is an interface power descriptor. */ - DTYPE_InterfaceAssociation = 0x0B, /**< Indicates that the descriptor is an interface association descriptor. */ - DTYPE_CSInterface = 0x24, /**< Indicates that the descriptor is a class specific interface descriptor. */ - DTYPE_CSEndpoint = 0x25, /**< Indicates that the descriptor is a class specific endpoint descriptor. */ - }; - - /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors. */ - enum USB_Descriptor_ClassSubclassProtocol_t - { - USB_CSCP_NoDeviceClass = 0x00, /**< Descriptor Class value indicating that the device does not belong - * to a particular class at the device level. - */ - USB_CSCP_NoDeviceSubclass = 0x00, /**< Descriptor Subclass value indicating that the device does not belong - * to a particular subclass at the device level. - */ - USB_CSCP_NoDeviceProtocol = 0x00, /**< Descriptor Protocol value indicating that the device does not belong - * to a particular protocol at the device level. - */ - USB_CSCP_VendorSpecificClass = 0xFF, /**< Descriptor Class value indicating that the device/interface belongs - * to a vendor specific class. - */ - USB_CSCP_VendorSpecificSubclass = 0xFF, /**< Descriptor Subclass value indicating that the device/interface belongs - * to a vendor specific subclass. - */ - USB_CSCP_VendorSpecificProtocol = 0xFF, /**< Descriptor Protocol value indicating that the device/interface belongs - * to a vendor specific protocol. - */ - USB_CSCP_IADDeviceClass = 0xEF, /**< Descriptor Class value indicating that the device belongs to the - * Interface Association Descriptor class. - */ - USB_CSCP_IADDeviceSubclass = 0x02, /**< Descriptor Subclass value indicating that the device belongs to the - * Interface Association Descriptor subclass. - */ - USB_CSCP_IADDeviceProtocol = 0x01, /**< Descriptor Protocol value indicating that the device belongs to the - * Interface Association Descriptor protocol. - */ - }; - - /* Type Defines: */ - /** \brief Standard USB Descriptor Header (LUFA naming conventions). - * - * Type define for all descriptors' standard header, indicating the descriptor's length and type. This structure - * uses LUFA-specific element names to make each element's purpose clearer. - * - * \see \ref USB_StdDescriptor_Header_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t Size; /**< Size of the descriptor, in bytes. */ - uint8_t Type; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - } ATTR_PACKED USB_Descriptor_Header_t; - - /** \brief Standard USB Descriptor Header (USB-IF naming conventions). - * - * Type define for all descriptors' standard header, indicating the descriptor's length and type. This structure - * uses the relevant standard's given element names to ensure compatibility with the standard. - * - * \see \ref USB_Descriptor_Header_t for the version of this type with non-standard LUFA specific element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - } ATTR_PACKED USB_StdDescriptor_Header_t; - - /** \brief Standard USB Device Descriptor (LUFA naming conventions). - * - * Type define for a standard Device Descriptor. This structure uses LUFA-specific element names to make each - * element's purpose clearer. - * - * \see \ref USB_StdDescriptor_Device_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */ - - uint16_t USBSpecification; /**< BCD of the supported USB specification. - * - * \see \ref VERSION_BCD() utility macro. - */ - uint8_t Class; /**< USB device class. */ - uint8_t SubClass; /**< USB device subclass. */ - uint8_t Protocol; /**< USB device protocol. */ - - uint8_t Endpoint0Size; /**< Size of the control (address 0) endpoint's bank in bytes. */ - - uint16_t VendorID; /**< Vendor ID for the USB product. */ - uint16_t ProductID; /**< Unique product ID for the USB product. */ - uint16_t ReleaseNumber; /**< Product release (version) number. - * - * \see \ref VERSION_BCD() utility macro. - */ - uint8_t ManufacturerStrIndex; /**< String index for the manufacturer's name. The - * host will request this string via a separate - * control request for the string descriptor. - * - * \note If no string supplied, use \ref NO_DESCRIPTOR. - */ - uint8_t ProductStrIndex; /**< String index for the product name/details. - * - * \see ManufacturerStrIndex structure entry. - */ - uint8_t SerialNumStrIndex; /**< String index for the product's globally unique hexadecimal - * serial number, in uppercase Unicode ASCII. - * - * \note On some microcontroller models, there is an embedded serial number - * in the chip which can be used for the device serial number. - * To use this serial number, set this to \c USE_INTERNAL_SERIAL. - * On unsupported devices, this will evaluate to \ref NO_DESCRIPTOR - * and will cause the host to generate a pseudo-unique value for the - * device upon insertion. - * - * \see \c ManufacturerStrIndex structure entry. - */ - uint8_t NumberOfConfigurations; /**< Total number of configurations supported by - * the device. - */ - } ATTR_PACKED USB_Descriptor_Device_t; - - /** \brief Standard USB Device Descriptor (USB-IF naming conventions). - * - * Type define for a standard Device Descriptor. This structure uses the relevant standard's given element names - * to ensure compatibility with the standard. - * - * \see \ref USB_Descriptor_Device_t for the version of this type with non-standard LUFA specific element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - uint16_t bcdUSB; /**< BCD of the supported USB specification. - * - * \see \ref VERSION_BCD() utility macro. - */ - uint8_t bDeviceClass; /**< USB device class. */ - uint8_t bDeviceSubClass; /**< USB device subclass. */ - uint8_t bDeviceProtocol; /**< USB device protocol. */ - uint8_t bMaxPacketSize0; /**< Size of the control (address 0) endpoint's bank in bytes. */ - uint16_t idVendor; /**< Vendor ID for the USB product. */ - uint16_t idProduct; /**< Unique product ID for the USB product. */ - uint16_t bcdDevice; /**< Product release (version) number. - * - * \see \ref VERSION_BCD() utility macro. - */ - uint8_t iManufacturer; /**< String index for the manufacturer's name. The - * host will request this string via a separate - * control request for the string descriptor. - * - * \note If no string supplied, use \ref NO_DESCRIPTOR. - */ - uint8_t iProduct; /**< String index for the product name/details. - * - * \see ManufacturerStrIndex structure entry. - */ - uint8_t iSerialNumber; /**< String index for the product's globally unique hexadecimal - * serial number, in uppercase Unicode ASCII. - * - * \note On some microcontroller models, there is an embedded serial number - * in the chip which can be used for the device serial number. - * To use this serial number, set this to \c USE_INTERNAL_SERIAL. - * On unsupported devices, this will evaluate to \ref NO_DESCRIPTOR - * and will cause the host to generate a pseudo-unique value for the - * device upon insertion. - * - * \see \c ManufacturerStrIndex structure entry. - */ - uint8_t bNumConfigurations; /**< Total number of configurations supported by - * the device. - */ - } ATTR_PACKED USB_StdDescriptor_Device_t; - - /** \brief Standard USB Device Qualifier Descriptor (LUFA naming conventions). - * - * Type define for a standard Device Qualifier Descriptor. This structure uses LUFA-specific element names - * to make each element's purpose clearer. - * - * \see \ref USB_StdDescriptor_DeviceQualifier_t for the version of this type with standard element names. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */ - - uint16_t USBSpecification; /**< BCD of the supported USB specification. - * - * \see \ref VERSION_BCD() utility macro. - */ - uint8_t Class; /**< USB device class. */ - uint8_t SubClass; /**< USB device subclass. */ - uint8_t Protocol; /**< USB device protocol. */ - - uint8_t Endpoint0Size; /**< Size of the control (address 0) endpoint's bank in bytes. */ - uint8_t NumberOfConfigurations; /**< Total number of configurations supported by - * the device. - */ - uint8_t Reserved; /**< Reserved for future use, must be 0. */ - } ATTR_PACKED USB_Descriptor_DeviceQualifier_t; - - /** \brief Standard USB Device Qualifier Descriptor (USB-IF naming conventions). - * - * Type define for a standard Device Qualifier Descriptor. This structure uses the relevant standard's given element names - * to ensure compatibility with the standard. - * - * \see \ref USB_Descriptor_DeviceQualifier_t for the version of this type with non-standard LUFA specific element names. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - uint16_t bcdUSB; /**< BCD of the supported USB specification. - * - * \see \ref VERSION_BCD() utility macro. - */ - uint8_t bDeviceClass; /**< USB device class. */ - uint8_t bDeviceSubClass; /**< USB device subclass. */ - uint8_t bDeviceProtocol; /**< USB device protocol. */ - uint8_t bMaxPacketSize0; /**< Size of the control (address 0) endpoint's bank in bytes. */ - uint8_t bNumConfigurations; /**< Total number of configurations supported by - * the device. - */ - uint8_t bReserved; /**< Reserved for future use, must be 0. */ - } ATTR_PACKED USB_StdDescriptor_DeviceQualifier_t; - - /** \brief Standard USB Configuration Descriptor (LUFA naming conventions). - * - * Type define for a standard Configuration Descriptor header. This structure uses LUFA-specific element names - * to make each element's purpose clearer. - * - * \see \ref USB_StdDescriptor_Configuration_Header_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */ - - uint16_t TotalConfigurationSize; /**< Size of the configuration descriptor header, - * and all sub descriptors inside the configuration. - */ - uint8_t TotalInterfaces; /**< Total number of interfaces in the configuration. */ - - uint8_t ConfigurationNumber; /**< Configuration index of the current configuration. */ - uint8_t ConfigurationStrIndex; /**< Index of a string descriptor describing the configuration. */ - - uint8_t ConfigAttributes; /**< Configuration attributes, comprised of a mask of \c USB_CONFIG_ATTR_* masks. - * On all devices, this should include USB_CONFIG_ATTR_RESERVED at a minimum. - */ - - uint8_t MaxPowerConsumption; /**< Maximum power consumption of the device while in the - * current configuration, calculated by the \ref USB_CONFIG_POWER_MA() - * macro. - */ - } ATTR_PACKED USB_Descriptor_Configuration_Header_t; - - /** \brief Standard USB Configuration Descriptor (USB-IF naming conventions). - * - * Type define for a standard Configuration Descriptor header. This structure uses the relevant standard's given element names - * to ensure compatibility with the standard. - * - * \see \ref USB_Descriptor_Device_t for the version of this type with non-standard LUFA specific element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - uint16_t wTotalLength; /**< Size of the configuration descriptor header, - * and all sub descriptors inside the configuration. - */ - uint8_t bNumInterfaces; /**< Total number of interfaces in the configuration. */ - uint8_t bConfigurationValue; /**< Configuration index of the current configuration. */ - uint8_t iConfiguration; /**< Index of a string descriptor describing the configuration. */ - uint8_t bmAttributes; /**< Configuration attributes, comprised of a mask of \c USB_CONFIG_ATTR_* masks. - * On all devices, this should include USB_CONFIG_ATTR_RESERVED at a minimum. - */ - uint8_t bMaxPower; /**< Maximum power consumption of the device while in the - * current configuration, calculated by the \ref USB_CONFIG_POWER_MA() - * macro. - */ - } ATTR_PACKED USB_StdDescriptor_Configuration_Header_t; - - /** \brief Standard USB Interface Descriptor (LUFA naming conventions). - * - * Type define for a standard Interface Descriptor. This structure uses LUFA-specific element names - * to make each element's purpose clearer. - * - * \see \ref USB_StdDescriptor_Interface_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */ - - uint8_t InterfaceNumber; /**< Index of the interface in the current configuration. */ - uint8_t AlternateSetting; /**< Alternate setting for the interface number. The same - * interface number can have multiple alternate settings - * with different endpoint configurations, which can be - * selected by the host. - */ - uint8_t TotalEndpoints; /**< Total number of endpoints in the interface. */ - - uint8_t Class; /**< Interface class ID. */ - uint8_t SubClass; /**< Interface subclass ID. */ - uint8_t Protocol; /**< Interface protocol ID. */ - - uint8_t InterfaceStrIndex; /**< Index of the string descriptor describing the interface. */ - } ATTR_PACKED USB_Descriptor_Interface_t; - - /** \brief Standard USB Interface Descriptor (USB-IF naming conventions). - * - * Type define for a standard Interface Descriptor. This structure uses the relevant standard's given element names - * to ensure compatibility with the standard. - * - * \see \ref USB_Descriptor_Interface_t for the version of this type with non-standard LUFA specific element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - uint8_t bInterfaceNumber; /**< Index of the interface in the current configuration. */ - uint8_t bAlternateSetting; /**< Alternate setting for the interface number. The same - * interface number can have multiple alternate settings - * with different endpoint configurations, which can be - * selected by the host. - */ - uint8_t bNumEndpoints; /**< Total number of endpoints in the interface. */ - uint8_t bInterfaceClass; /**< Interface class ID. */ - uint8_t bInterfaceSubClass; /**< Interface subclass ID. */ - uint8_t bInterfaceProtocol; /**< Interface protocol ID. */ - uint8_t iInterface; /**< Index of the string descriptor describing the - * interface. - */ - } ATTR_PACKED USB_StdDescriptor_Interface_t; - - /** \brief Standard USB Interface Association Descriptor (LUFA naming conventions). - * - * Type define for a standard Interface Association Descriptor. This structure uses LUFA-specific element names - * to make each element's purpose clearer. - * - * This descriptor has been added as a supplement to the USB2.0 standard, in the ECN located at - * http://www.usb.org/developers/docs/InterfaceAssociationDescriptor_ecn.pdf. It allows composite - * devices with multiple interfaces related to the same function to have the multiple interfaces bound - * together at the point of enumeration, loading one generic driver for all the interfaces in the single - * function. Read the ECN for more information. - * - * \see \ref USB_StdDescriptor_Interface_Association_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */ - - uint8_t FirstInterfaceIndex; /**< Index of the first associated interface. */ - uint8_t TotalInterfaces; /**< Total number of associated interfaces. */ - - uint8_t Class; /**< Interface class ID. */ - uint8_t SubClass; /**< Interface subclass ID. */ - uint8_t Protocol; /**< Interface protocol ID. */ - - uint8_t IADStrIndex; /**< Index of the string descriptor describing the - * interface association. - */ - } ATTR_PACKED USB_Descriptor_Interface_Association_t; - - /** \brief Standard USB Interface Association Descriptor (USB-IF naming conventions). - * - * Type define for a standard Interface Association Descriptor. This structure uses the relevant standard's given - * element names to ensure compatibility with the standard. - * - * This descriptor has been added as a supplement to the USB2.0 standard, in the ECN located at - * http://www.usb.org/developers/docs/InterfaceAssociationDescriptor_ecn.pdf. It allows composite - * devices with multiple interfaces related to the same function to have the multiple interfaces bound - * together at the point of enumeration, loading one generic driver for all the interfaces in the single - * function. Read the ECN for more information. - * - * \see \ref USB_Descriptor_Interface_Association_t for the version of this type with non-standard LUFA specific - * element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a value - * given by the specific class. - */ - uint8_t bFirstInterface; /**< Index of the first associated interface. */ - uint8_t bInterfaceCount; /**< Total number of associated interfaces. */ - uint8_t bFunctionClass; /**< Interface class ID. */ - uint8_t bFunctionSubClass; /**< Interface subclass ID. */ - uint8_t bFunctionProtocol; /**< Interface protocol ID. */ - uint8_t iFunction; /**< Index of the string descriptor describing the - * interface association. - */ - } ATTR_PACKED USB_StdDescriptor_Interface_Association_t; - - /** \brief Standard USB Endpoint Descriptor (LUFA naming conventions). - * - * Type define for a standard Endpoint Descriptor. This structure uses LUFA-specific element names - * to make each element's purpose clearer. - * - * \see \ref USB_StdDescriptor_Endpoint_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */ - - uint8_t EndpointAddress; /**< Logical address of the endpoint within the device for the current - * configuration, including direction mask. - */ - uint8_t Attributes; /**< Endpoint attributes, comprised of a mask of the endpoint type (EP_TYPE_*) - * and attributes (ENDPOINT_ATTR_*) masks. - */ - uint16_t EndpointSize; /**< Size of the endpoint bank, in bytes. This indicates the maximum packet - * size that the endpoint can receive at a time. - */ - uint8_t PollingIntervalMS; /**< Polling interval in milliseconds for the endpoint if it is an INTERRUPT - * or ISOCHRONOUS type. - */ - } ATTR_PACKED USB_Descriptor_Endpoint_t; - - /** \brief Standard USB Endpoint Descriptor (USB-IF naming conventions). - * - * Type define for a standard Endpoint Descriptor. This structure uses the relevant standard's given - * element names to ensure compatibility with the standard. - * - * \see \ref USB_Descriptor_Endpoint_t for the version of this type with non-standard LUFA specific - * element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t or a - * value given by the specific class. - */ - uint8_t bEndpointAddress; /**< Logical address of the endpoint within the device for the current - * configuration, including direction mask. - */ - uint8_t bmAttributes; /**< Endpoint attributes, comprised of a mask of the endpoint type (EP_TYPE_*) - * and attributes (ENDPOINT_ATTR_*) masks. - */ - uint16_t wMaxPacketSize; /**< Size of the endpoint bank, in bytes. This indicates the maximum packet size - * that the endpoint can receive at a time. - */ - uint8_t bInterval; /**< Polling interval in milliseconds for the endpoint if it is an INTERRUPT or - * ISOCHRONOUS type. - */ - } ATTR_PACKED USB_StdDescriptor_Endpoint_t; - - /** \brief Standard USB String Descriptor (LUFA naming conventions). - * - * Type define for a standard string descriptor. Unlike other standard descriptors, the length - * of the descriptor for placement in the descriptor header must be determined by the \ref USB_STRING_LEN() - * macro rather than by the size of the descriptor structure, as the length is not fixed. - * - * This structure should also be used for string index 0, which contains the supported language IDs for - * the device as an array. - * - * This structure uses LUFA-specific element names to make each element's purpose clearer. - * - * \see \ref USB_StdDescriptor_String_t for the version of this type with standard element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */ - - #if defined(__CC_ARM) - #define MAX_ALLOC 256 - #else - #define MAX_ALLOC - #endif - - #if (!defined(__DOXYGEN__)) - wchar_t UnicodeString[MAX_ALLOC]; - #else - uint16_t UnicodeString[MAX_ALLOC]; /**< String data, as unicode characters (alternatively, - * string language IDs). If normal ASCII characters are - * to be used, they must be added as an array of characters - * rather than a normal C string so that they are widened to - * Unicode size. - * - * Under GCC, strings prefixed with the "L" character (before - * the opening string quotation mark) are considered to be - * Unicode strings, and may be used instead of an explicit - * array of ASCII characters on little endian devices with - * UTF-16-LE \c wchar_t encoding. - */ - #endif - } ATTR_PACKED USB_Descriptor_String_t; - - /** \brief Standard USB String Descriptor (USB-IF naming conventions). - * - * Type define for a standard string descriptor. Unlike other standard descriptors, the length - * of the descriptor for placement in the descriptor header must be determined by the \ref USB_STRING_LEN() - * macro rather than by the size of the descriptor structure, as the length is not fixed. - * - * This structure should also be used for string index 0, which contains the supported language IDs for - * the device as an array. - * - * This structure uses the relevant standard's given element names to ensure compatibility with the standard. - * - * \see \ref USB_Descriptor_String_t for the version of this type with with non-standard LUFA specific - * element names. - * - * \note Regardless of CPU architecture, these values should be stored as little endian. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bLength; /**< Size of the descriptor, in bytes. */ - uint8_t bDescriptorType; /**< Type of the descriptor, either a value in \ref USB_DescriptorTypes_t - * or a value given by the specific class. - */ - uint16_t bString[]; /**< String data, as unicode characters (alternatively, string language IDs). - * If normal ASCII characters are to be used, they must be added as an array - * of characters rather than a normal C string so that they are widened to - * Unicode size. - * - * Under GCC, strings prefixed with the "L" character (before the opening string - * quotation mark) are considered to be Unicode strings, and may be used instead - * of an explicit array of ASCII characters. - */ - } ATTR_PACKED USB_StdDescriptor_String_t; - - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/StdRequestType.h b/cores/usblib/Core/StdRequestType.h deleted file mode 100644 index 0523b040..00000000 --- a/cores/usblib/Core/StdRequestType.h +++ /dev/null @@ -1,262 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB control endpoint request definitions. - * \copydetails Group_StdRequest - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_USB - * \defgroup Group_StdRequest Standard USB Requests - * \brief USB control endpoint request definitions. - * - * This module contains definitions for the various control request parameters, so that the request - * details (such as data direction, request recipient, etc.) can be extracted via masking. - * - * @{ - */ - -#ifndef __STDREQTYPE_H__ -#define __STDREQTYPE_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - /** Mask for the request type parameter, to indicate the direction of the request data (Host to Device - * or Device to Host). The result of this mask should then be compared to the request direction masks. - * - * \see \c REQDIR_* macros for masks indicating the request data direction. - */ - #define CONTROL_REQTYPE_DIRECTION 0x80 - - /** Mask for the request type parameter, to indicate the type of request (Device, Class or Vendor - * Specific). The result of this mask should then be compared to the request type masks. - * - * \see \c REQTYPE_* macros for masks indicating the request type. - */ - #define CONTROL_REQTYPE_TYPE 0x60 - - /** Mask for the request type parameter, to indicate the recipient of the request (Device, Interface - * Endpoint or Other). The result of this mask should then be compared to the request recipient - * masks. - * - * \see \c REQREC_* macros for masks indicating the request recipient. - */ - #define CONTROL_REQTYPE_RECIPIENT 0x1F - - /** \name Control Request Data Direction Masks */ - //@{ - /** Request data direction mask, indicating that the request data will flow from host to device. - * - * \see \ref CONTROL_REQTYPE_DIRECTION macro. - */ - #define REQDIR_HOSTTODEVICE (0 << 7) - - /** Request data direction mask, indicating that the request data will flow from device to host. - * - * \see \ref CONTROL_REQTYPE_DIRECTION macro. - */ - #define REQDIR_DEVICETOHOST (1 << 7) - //@} - - /** \name Control Request Type Masks */ - //@{ - /** Request type mask, indicating that the request is a standard request. - * - * \see \ref CONTROL_REQTYPE_TYPE macro. - */ - #define REQTYPE_STANDARD (0 << 5) - - /** Request type mask, indicating that the request is a class-specific request. - * - * \see \ref CONTROL_REQTYPE_TYPE macro. - */ - #define REQTYPE_CLASS (1 << 5) - - /** Request type mask, indicating that the request is a vendor specific request. - * - * \see \ref CONTROL_REQTYPE_TYPE macro. - */ - #define REQTYPE_VENDOR (2 << 5) - //@} - - /** \name Control Request Recipient Masks */ - //@{ - /** Request recipient mask, indicating that the request is to be issued to the device as a whole. - * - * \see \ref CONTROL_REQTYPE_RECIPIENT macro. - */ - #define REQREC_DEVICE (0 << 0) - - /** Request recipient mask, indicating that the request is to be issued to an interface in the - * currently selected configuration. - * - * \see \ref CONTROL_REQTYPE_RECIPIENT macro. - */ - #define REQREC_INTERFACE (1 << 0) - - /** Request recipient mask, indicating that the request is to be issued to an endpoint in the - * currently selected configuration. - * - * \see \ref CONTROL_REQTYPE_RECIPIENT macro. - */ - #define REQREC_ENDPOINT (2 << 0) - - /** Request recipient mask, indicating that the request is to be issued to an unspecified element - * in the currently selected configuration. - * - * \see \ref CONTROL_REQTYPE_RECIPIENT macro. - */ - #define REQREC_OTHER (3 << 0) - //@} - - /* Type Defines: */ - /** \brief Standard USB Control Request - * - * Type define for a standard USB control request. - * - * \see The USB 2.0 specification for more information on standard control requests. - */ - typedef ATTR_IAR_PACKED struct - { - uint8_t bmRequestType; /**< Type of the request. */ - uint8_t bRequest; /**< Request command code. */ - uint16_t wValue; /**< wValue parameter of the request. */ - uint16_t wIndex; /**< wIndex parameter of the request. */ - uint16_t wLength; /**< Length of the data to transfer in bytes. */ - } ATTR_PACKED USB_Request_Header_t; - - /* Enums: */ - /** Enumeration for the various standard request commands. These commands are applicable when the - * request type is \ref REQTYPE_STANDARD (with the exception of \ref REQ_GetDescriptor, which is always - * handled regardless of the request type value). - * - * \see Chapter 9 of the USB 2.0 Specification. - */ - enum USB_Control_Request_t - { - REQ_GetStatus = 0, /**< Implemented in the library for device and endpoint recipients. Passed - * to the user application for other recipients via the - * \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_ClearFeature = 1, /**< Implemented in the library for device and endpoint recipients. Passed - * to the user application for other recipients via the - * \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_SetFeature = 3, /**< Implemented in the library for device and endpoint recipients. Passed - * to the user application for other recipients via the - * \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_SetAddress = 5, /**< Implemented in the library for the device recipient. Passed - * to the user application for other recipients via the - * \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_GetDescriptor = 6, /**< Implemented in the library for device and interface recipients. Passed to the - * user application for other recipients via the - * \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_SetDescriptor = 7, /**< Not implemented in the library, passed to the user application - * via the \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_GetConfiguration = 8, /**< Implemented in the library for the device recipient. Passed - * to the user application for other recipients via the - * \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_SetConfiguration = 9, /**< Implemented in the library for the device recipient. Passed - * to the user application for other recipients via the - * \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_GetInterface = 10, /**< Not implemented in the library, passed to the user application - * via the \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_SetInterface = 11, /**< Not implemented in the library, passed to the user application - * via the \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - REQ_SynchFrame = 12, /**< Not implemented in the library, passed to the user application - * via the \ref EVENT_USB_Device_ControlRequest() event when received in - * device mode. */ - }; - - /** Feature Selector values for Set Feature and Clear Feature standard control requests directed to the device, interface - * and endpoint recipients. - */ - enum USB_Feature_Selectors_t - { - FEATURE_SEL_EndpointHalt = 0x00, /**< Feature selector for Clear Feature or Set Feature commands. When - * used in a Set Feature or Clear Feature request this indicates that an - * endpoint (whose address is given elsewhere in the request) should have - * its stall condition changed. - */ - FEATURE_SEL_DeviceRemoteWakeup = 0x01, /**< Feature selector for Device level Remote Wakeup enable set or clear. - * This feature can be controlled by the host on devices which indicate - * remote wakeup support in their descriptors to selectively disable or - * enable remote wakeup. - */ - FEATURE_SEL_TestMode = 0x02, /**< Feature selector for Test Mode features, used to test the USB controller - * to check for incorrect operation. - */ - }; - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Macros: */ - #define FEATURE_SELFPOWERED_ENABLED (1 << 0) - #define FEATURE_REMOTE_WAKEUP_ENABLED (1 << 1) - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/USBController.h b/cores/usblib/Core/USBController.h deleted file mode 100644 index 78370f84..00000000 --- a/cores/usblib/Core/USBController.h +++ /dev/null @@ -1,163 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Common USB Controller definitions for all architectures. - * \copydetails Group_USBManagement - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_USB - * \defgroup Group_USBManagement USB Interface Management - * \brief USB Controller definitions for general USB controller management. - * - * Functions, macros, variables, enums and types related to the setup and management of the USB interface. - * - * @{ - */ - -#ifndef __USBCONTROLLER_H__ -#define __USBCONTROLLER_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks and Defines: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Defines: */ - /** \name Endpoint Direction Masks */ - //@{ - /** Endpoint direction mask, for masking against endpoint addresses to retrieve the endpoint's - * direction for comparing with the \c ENDPOINT_DIR_* masks. - */ - #define ENDPOINT_DIR_MASK 0x80 - - /** Endpoint address direction mask for an OUT direction (Host to Device) endpoint. This may be ORed with - * the index of the address within a device to obtain the full endpoint address. - */ - #define ENDPOINT_DIR_OUT 0x00 - - /** Endpoint address direction mask for an IN direction (Device to Host) endpoint. This may be ORed with - * the index of the address within a device to obtain the full endpoint address. - */ - #define ENDPOINT_DIR_IN 0x80 - //@} - - /** \name Pipe Direction Masks */ - //@{ - /** Pipe direction mask, for masking against pipe addresses to retrieve the pipe's - * direction for comparing with the \c PIPE_DIR_* masks. - */ - #define PIPE_DIR_MASK 0x80 - - /** Endpoint address direction mask for an OUT direction (Host to Device) endpoint. This may be ORed with - * the index of the address within a device to obtain the full endpoint address. - */ - #define PIPE_DIR_OUT 0x00 - - /** Endpoint address direction mask for an IN direction (Device to Host) endpoint. This may be ORed with - * the index of the address within a device to obtain the full endpoint address. - */ - #define PIPE_DIR_IN 0x80 - //@} - - /** \name Endpoint/Pipe Type Masks */ - //@{ - /** Mask for determining the type of an endpoint from an endpoint descriptor. This should then be compared - * with the \c EP_TYPE_* masks to determine the exact type of the endpoint. - */ - #define EP_TYPE_MASK 0x03 - - /** Mask for a CONTROL type endpoint or pipe. - * - * \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions. - */ - #define EP_TYPE_CONTROL 0x00 - - /** Mask for an ISOCHRONOUS type endpoint or pipe. - * - * \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions. - */ - #define EP_TYPE_ISOCHRONOUS 0x01 - - /** Mask for a BULK type endpoint or pipe. - * - * \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions. - */ - #define EP_TYPE_BULK 0x02 - - /** Mask for an INTERRUPT type endpoint or pipe. - * - * \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions. - */ - #define EP_TYPE_INTERRUPT 0x03 - //@} - - /* Enums: */ - /** Enum for the possible USB controller modes, for initialization via \ref USB_Init() and indication back to the - * user application via \ref USB_CurrentMode. - */ - enum USB_Modes_t - { - USB_MODE_None = 0, /**< Indicates that the controller is currently not initialized in any specific USB mode. */ - USB_MODE_Device = 1, /**< Indicates that the controller is currently initialized in USB Device mode. */ - USB_MODE_Host = 2, /**< Indicates that the controller is currently initialized in USB Host mode. */ - USB_MODE_UID = 3, /**< Indicates that the controller should determine the USB mode from the UID pin of the - * USB connector. - */ - }; - - /* Architecture Includes: */ - #include - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/USBInterrupt.h b/cores/usblib/Core/USBInterrupt.h deleted file mode 100644 index ab9fa933..00000000 --- a/cores/usblib/Core/USBInterrupt.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB controller interrupt service routine management. - * - * This file contains definitions required for the correct handling of low level USB service routine interrupts - * from the USB controller. - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -#ifndef __USBINTERRUPT_H__ -#define __USBINTERRUPT_H__ - - /* Includes: */ - #include <../Common/Common.h> - #include - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include USB/USB.h instead. - #endif - - /* Architecture Includes: */ - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/USBMode.h b/cores/usblib/Core/USBMode.h deleted file mode 100644 index f3e2e947..00000000 --- a/cores/usblib/Core/USBMode.h +++ /dev/null @@ -1,125 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB mode and feature support definitions. - * \copydetails Group_USBMode - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_USB - * \defgroup Group_USBMode USB Mode Tokens - * \brief USB mode and feature support definitions. - * - * This file defines macros indicating the type of USB controller the library is being compiled for, and its - * capabilities. These macros may then be referenced in the user application to selectively enable or disable - * code sections depending on if they are defined or not. - * - * After the inclusion of the master USB driver header, one or more of the following tokens may be defined, to - * allow the user code to conditionally enable or disable code based on the USB controller family and allowable - * USB modes. These tokens may be tested against to eliminate code relating to a USB mode which is not enabled for - * the given compilation. - * - * @{ - */ - -#ifndef __USBMODE_H__ -#define __USBMODE_H__ - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Includes: */ - #include <../Common/Common.h> - - /* Public Interface - May be used in end-application: */ - #if defined(__DOXYGEN__) - /** Indicates that the target microcontroller and compilation settings allow for the - * target to be configured in USB Device mode when defined. - */ - #define USB_CAN_BE_DEVICE - - /** Indicates that the target microcontroller and compilation settings allow for the - * target to be configured in USB Host mode when defined. - */ - #define USB_CAN_BE_HOST - - #else - /* Macros: */ - #define USB_CAN_BE_DEVICE - //#define USB_CAN_BE_HOST - - #if (defined(USB_HOST_ONLY) && defined(USB_DEVICE_ONLY)) - #error USB_HOST_ONLY and USB_DEVICE_ONLY are mutually exclusive. - #elif defined(USB_HOST_ONLY) - #if !defined(USB_CAN_BE_HOST) - #error USB_HOST_ONLY is not available for the currently selected microcontroller model. - #else - #undef USB_CAN_BE_DEVICE - #endif - #elif defined(USB_DEVICE_ONLY) - #if !defined(USB_CAN_BE_DEVICE) - #error USB_DEVICE_ONLY is not available for the currently selected microcontroller model. - #else - #undef USB_CAN_BE_HOST - #endif - #endif - - #if (defined(USB_CAN_BE_DEVICE) && defined(USB_CAN_BE_HOST)) - #define USB_CAN_BE_BOTH - #endif - - #if (!defined(USB_CAN_BE_DEVICE) && !defined(USB_CAN_BE_HOST)) - #error The currently selected device, USB mode or architecture is not supported. - #endif - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/USBTask.c b/cores/usblib/Core/USBTask.c deleted file mode 100644 index 267ae56b..00000000 --- a/cores/usblib/Core/USBTask.c +++ /dev/null @@ -1,93 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ -#if defined(USB0) -#define __INCLUDE_FROM_USBTASK_C -#define __INCLUDE_FROM_USB_DRIVER -#include - -volatile bool USB_IsInitialized; -USB_Request_Header_t USB_ControlRequest; - -#if defined(USB_CAN_BE_HOST) && !defined(HOST_STATE_AS_GPIOR) -volatile uint8_t USB_HostState; -#endif - -#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR) -volatile uint8_t USB_DeviceState; -#endif - -void USB_USBTask(void) -{ - #if defined(USB_CAN_BE_BOTH) - if (USB_CurrentMode == USB_MODE_Device) - USB_DeviceTask(); - else if (USB_CurrentMode == USB_MODE_Host) - USB_HostTask(); - #elif defined(USB_CAN_BE_HOST) - USB_HostTask(); - #elif defined(USB_CAN_BE_DEVICE) - USB_DeviceTask(); - #endif -} - -#if defined(USB_CAN_BE_DEVICE) -static void USB_DeviceTask(void) -{ - if (USB_DeviceState == DEVICE_STATE_Unattached) - return; - - uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint(); - - Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP); - - if (Endpoint_IsSETUPReceived()) - USB_Device_ProcessControlRequest(); - - Endpoint_SelectEndpoint(PrevEndpoint); -} -#endif - -#if defined(USB_CAN_BE_HOST) -static void USB_HostTask(void) -{ - uint8_t PrevPipe = Pipe_GetCurrentPipe(); - - Pipe_SelectPipe(PIPE_CONTROLPIPE); - - USB_Host_ProcessNextHostState(); - - Pipe_SelectPipe(PrevPipe); -} -#endif - -#endif -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/USBTask.h b/cores/usblib/Core/USBTask.h deleted file mode 100644 index 90cc154d..00000000 --- a/cores/usblib/Core/USBTask.h +++ /dev/null @@ -1,194 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Main USB service task management. - * - * This file contains the function definitions required for the main USB service task, which must be called - * from the user application to ensure that the USB connection to or from a connected USB device is maintained. - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -#ifndef __USBTASK_H__ -#define __USBTASK_H__ -#if defined(USB0) - /* Includes: */ - #include <../Common/Common.h> - #include - #include - #include - #include - #include - - #if defined(USB_CAN_BE_DEVICE) - #include - #endif - - #if defined(USB_CAN_BE_HOST) - #include - #endif - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Global Variables: */ - /** Indicates if the USB interface is currently initialized but not necessarily connected to a host - * or device (i.e. if \ref USB_Init() has been run). If this is false, all other library globals related - * to the USB driver are invalid. - * - * \attention This variable should be treated as read-only in the user application, and never manually - * changed in value. - * - * \ingroup Group_USBManagement - */ - extern volatile bool USB_IsInitialized; - - /** Structure containing the last received Control request when in Device mode (for use in user-applications - * inside of the \ref EVENT_USB_Device_ControlRequest() event, or for filling up with a control request to - * issue when in Host mode before calling \ref USB_Host_SendControlRequest(). - * - * \note The contents of this structure is automatically endian-corrected for the current CPU architecture. - * - * \ingroup Group_USBManagement - */ - extern USB_Request_Header_t USB_ControlRequest; - - #if defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__) - #if !defined(HOST_STATE_AS_GPIOR) || defined(__DOXYGEN__) - /** Indicates the current host state machine state. When in host mode, this indicates the state - * via one of the values of the \ref USB_Host_States_t enum values. - * - * This value should not be altered by the user application as it is handled automatically by the - * library. - * - * - * \note This global is only present if the user application can be a USB host. - * - * \see \ref USB_Host_States_t for a list of possible device states. - * - * \ingroup Group_Host - */ - extern volatile uint8_t USB_HostState; - #else - #define USB_HostState CONCAT_EXPANDED(GPIOR, HOST_STATE_AS_GPIOR) - #endif - #endif - - #if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__) - #if !defined(DEVICE_STATE_AS_GPIOR) || defined(__DOXYGEN__) - /** Indicates the current device state machine state. When in device mode, this indicates the state - * via one of the values of the \ref USB_Device_States_t enum values. - * - * This value should not be altered by the user application as it is handled automatically by the - * library. The only exception to this rule is if the NO_LIMITED_CONTROLLER_CONNECT token is used - * (see \ref EVENT_USB_Device_Connect() and \ref EVENT_USB_Device_Disconnect() events). - * - * - * \attention This variable should be treated as read-only in the user application, and never manually - * changed in value except in the circumstances outlined above. - * - * \note This global is only present if the user application can be a USB device. - * \n\n - * - * \see \ref USB_Device_States_t for a list of possible device states. - * - * \ingroup Group_Device - */ - extern volatile uint8_t USB_DeviceState; - #else - #define USB_DeviceState CONCAT_EXPANDED(GPIOR, DEVICE_STATE_AS_GPIOR) - #endif - #endif - - /* Function Prototypes: */ - /** This is the main USB management task. The USB driver requires this task to be executed - * continuously when the USB system is active (device attached in host mode, or attached to a host - * in device mode) in order to manage USB communications. This task may be executed inside an RTOS, - * fast timer ISR or the main user application loop. - * - * The USB task must be serviced within 30ms while in device mode, or within 1ms while in host mode. - * The task may be serviced at all times, or (for minimum CPU consumption): - * - * - In device mode, it may be disabled at start-up, enabled on the firing of the \ref EVENT_USB_Device_Connect() - * event and disabled again on the firing of the \ref EVENT_USB_Device_Disconnect() event. - * - * - In host mode, it may be disabled at start-up, enabled on the firing of the \ref EVENT_USB_Host_DeviceAttached() - * event and disabled again on the firing of the \ref EVENT_USB_Host_DeviceEnumerationComplete() or - * \ref EVENT_USB_Host_DeviceEnumerationFailed() events. - * - * If in device mode (only), the control endpoint can instead be managed via interrupts entirely by the library - * by defining the INTERRUPT_CONTROL_ENDPOINT token and passing it to the compiler via the -D switch. - * - * \see \ref Group_Events for more information on the USB events. - * - * \ingroup Group_USBManagement - */ - void USB_USBTask(void); - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /* Function Prototypes: */ - #if defined(__INCLUDE_FROM_USBTASK_C) - #if defined(USB_CAN_BE_HOST) - static void USB_HostTask(void); - #endif - - #if defined(USB_CAN_BE_DEVICE) - static void USB_DeviceTask(void); - #endif - #endif - - /* Macros: */ - #define HOST_TASK_NONBLOCK_WAIT(Duration, NextState) do { USB_HostState = HOST_STATE_WaitForDevice; \ - WaitMSRemaining = (Duration); \ - PostWaitState = (NextState); } while (0) - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif -#endif -#endif - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/XMC4000/Device_XMC4000.h b/cores/usblib/Core/XMC4000/Device_XMC4000.h deleted file mode 100644 index 9e8c6e41..00000000 --- a/cores/usblib/Core/XMC4000/Device_XMC4000.h +++ /dev/null @@ -1,135 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/* - * Copyright (C) 2015 Infineon Technologies AG. All rights Reserved bits. - * - * Infineon Technologies AG (Infineon) is supplying this software for use with - * Infineon's microcontrollers. - * This file can be freely distributed within development tools that are - * supporting such microcontrollers. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, - * OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - */ - -/** \file - * \brief USB Device definitions for the Infineon XMC4000 microcontrollers. - * \copydetails Group_Device_XMC - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_Device - * \defgroup Group_Device_XMC Device Management (XMC) - * \brief USB Device definitions for the Infineon XMC4000 microcontrollers. - * - * Architecture specific USB Device definitions for the Infineon XMC4000 microcontrollers. - * - * @{ - */ - -#ifndef __USBDEVICE_XMC4000_H__ -#define __USBDEVICE_XMC4000_H__ -#if defined(USB0) - /* Includes: */ - #include <../../Common/Common.h> - #include <../USBController.h> - #include <../StdDescriptors.h> - #include <../USBInterrupt.h> - #include <../EndPoint.h> - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - - #define USE_INTERNAL_SERIAL NO_DESCRIPTOR - - #define INTERNAL_SERIAL_LENGTH_BITS 0 - #define INTERNAL_SERIAL_START_ADDRESS 0 - - /* Inline Functions: */ - static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void USB_Device_SetDeviceAddress(const uint8_t Address) - { - (void)Address; - } - - static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void USB_Device_EnableDeviceAddress(const uint8_t Address) - { - device.Driver->DeviceSetAddress(Address, XMC_USBD_SET_ADDRESS_STAGE_SETUP); - } - - static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT; - static inline bool USB_Device_IsAddressSet(void) - { - dcfg_data_t data; - data.d32 = xmc_device.device_register->dcfg; - return ((data.b.devaddr != 0) ? true : false); - } - - /** Returns the current USB frame number, when in device mode. Every millisecond the USB bus is active (i.e. enumerated to a host) - * the frame number is incremented by one. - * - * \return Current USB frame number from the USB controller. - */ - - static inline uint16_t USB_Device_GetFrameNumber(void) ATTR_ALWAYS_INLINE; - static inline uint16_t USB_Device_GetFrameNumber(void) { - return device.Driver->GetFrameNumber(); - } - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -#endif /* __USBDEVICE_XMC4000_H__ */ -#endif -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/XMC4000/EndpointStream_XMC4000.c b/cores/usblib/Core/XMC4000/EndpointStream_XMC4000.c deleted file mode 100644 index 71bf2b7a..00000000 --- a/cores/usblib/Core/XMC4000/EndpointStream_XMC4000.c +++ /dev/null @@ -1,310 +0,0 @@ -#ifdef XMC4_SERIES - -/******************************************************************************* - Copyright (c) 2013, Infineon Technologies AG ** - All rights reserved. ** - ** - Redistribution and use in source and binary forms, with or without ** - modification,are permitted provided that the following conditions are met: ** - ** - *Redistributions of source code must retain the above copyright notice, ** - this list of conditions and the following disclaimer. ** - *Redistributions in binary form must reproduce the above copyright notice, ** - this list of conditions and the following disclaimer in the documentation ** - and/or other materials provided with the distribution. ** - *Neither the name of the copyright holders nor the names of its contributors ** - may be used to endorse or promote products derived from this software without** - specific prior written permission. ** - ** - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ** - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ** - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ** - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE ** - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ** - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ** - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ** - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ** - CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ** - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ** - POSSIBILITY OF SUCH DAMAGE. ** - ** - To improve the quality of the software, users are encouraged to share ** - modifications, enhancements or bug fixes with Infineon Technologies AG ** - dave@infineon.com). ** - ** -********************************************************************************/ -/** - * @file - * - * @App Version internal release for evaluation, no public release! - * - * @brief Source file for LUFA Endpoint Streaming functions - */ -#if defined(USB0) -#include <../../Common/Common.h> - -#define __INCLUDE_FROM_USB_DRIVER -#include <../USBMode.h> - -/*Flag to indicate the zlp to be sent or not*/ -volatile uint8_t zlp_flag = 0; - -#if defined(USB_CAN_BE_DEVICE) - -#include - -uint8_t Endpoint_Write_Stream_LE (const void *const Buffer, uint16_t Length, uint16_t *const BytesProcessed) { - USBD_Endpoint_t* ep = &device.Endpoints[device.CurrentEndpoint]; - uint16_t Bytes = 0; - uint16_t BytesTransfered = 0; - uint8_t ErrorCode; - uint16_t prev_length = 0; - if (BytesProcessed!=NULL) { - Length -= *BytesProcessed; - BytesTransfered = *BytesProcessed; - } - - while (Length) { - if (ep->InInUse) - continue; - if (Endpoint_IsReadWriteAllowed()) { - Bytes = ep->InBufferLength - ep->InBytesAvailable > Length ? Length : ep->InBufferLength - ep->InBytesAvailable; - MEMCPY((void *)((uint32_t)ep->InBuffer + (uint32_t)ep->InBytesAvailable), (void *)((uint32_t)Buffer + (uint32_t)BytesTransfered), Bytes); - ep->InBytesAvailable += Bytes; - BytesTransfered += Bytes; - prev_length = Length; - Length -= Bytes; - } - else { - Endpoint_ClearIN(); - if (BytesProcessed!=NULL) { - *BytesProcessed = BytesTransfered; - return ENDPOINT_RWSTREAM_IncompleteTransfer; - } - - if ((ErrorCode = Endpoint_WaitUntilReady()) != 0) { - return ErrorCode; - } - - - } - } - - if((Length == 0) && (prev_length == ep->MaxPacketSize)) - { - zlp_flag = true; - } - return ENDPOINT_RWSTREAM_NoError; -} - -void SwapCopy(void *const Dest, const void *const Src,uint32_t Length) { - uint32_t i = 0; - while(iInInUse) - continue; - if (Endpoint_IsReadWriteAllowed()) { - Bytes = ep->InBufferLength - ep->InBytesAvailable > Length ? Length : ep->InBufferLength - ep->InBytesAvailable; - SwapCopy((void *)((uint32_t)ep->InBuffer + (uint32_t)ep->InBytesAvailable),(void *)((uint32_t)Buffer + (uint32_t)BytesTransfered), Bytes); - ep->InBytesAvailable += Bytes; - BytesTransfered += Bytes; - Length -= Bytes; - } - else { - Endpoint_ClearIN(); - if (BytesProcessed!=NULL) { - *BytesProcessed = BytesTransfered; - return ENDPOINT_RWSTREAM_IncompleteTransfer; - } - - if ((ErrorCode = Endpoint_WaitUntilReady()) != 0) { - return ErrorCode; - } - - - } - } - return ENDPOINT_RWSTREAM_NoError; -} - -uint8_t Endpoint_Read_Stream_LE (void *const Buffer, uint16_t Length, uint16_t *const BytesProcessed) { - USBD_Endpoint_t* ep = &device.Endpoints[device.CurrentEndpoint]; - uint16_t Bytes = 0; - uint16_t BytesTransfered = 0; - uint8_t ErrorCode; - - if (BytesProcessed!=NULL) { - Length -= *BytesProcessed; - BytesTransfered = *BytesProcessed; - } - - while (Length) { - if (ep->OutInUse) - continue; - if (Endpoint_IsReadWriteAllowed()) { - Bytes = ep->OutBytesAvailable > Length ? Length : ep->OutBytesAvailable; - MEMCPY((void *)((uint32_t)Buffer + (uint32_t)BytesTransfered), (void *)((uint32_t)ep->OutBuffer + (uint32_t)ep->OutOffset), Bytes); - ep->OutBytesAvailable -= Bytes; - ep->OutOffset += Bytes; - BytesTransfered += Bytes; - Length -= Bytes; - } - else { - Endpoint_ClearOUT(); - if (BytesProcessed!=NULL) { - *BytesProcessed = BytesTransfered; - return ENDPOINT_RWSTREAM_IncompleteTransfer; - } - - if ((ErrorCode = Endpoint_WaitUntilReady()) != 0) { - return ErrorCode; - } - - } - } - return ENDPOINT_RWSTREAM_NoError; -} - -uint8_t Endpoint_Read_Stream_BE (void *const Buffer, uint16_t Length, uint16_t *const BytesProcessed) { - USBD_Endpoint_t* ep = &device.Endpoints[device.CurrentEndpoint]; - uint16_t Bytes = 0; - uint16_t BytesTransfered = 0; - uint8_t ErrorCode; - - if (BytesProcessed!=NULL) { - Length -= *BytesProcessed; - BytesTransfered = *BytesProcessed; - } - - while (Length) { - if (ep->InInUse) - continue; - if (Endpoint_IsReadWriteAllowed()) { - Bytes = ep->OutBytesAvailable > Length ? Length : ep->OutBytesAvailable; - SwapCopy((void *)((uint32_t)Buffer + (uint32_t)BytesTransfered), (void *)((uint32_t)ep->OutBuffer + (uint32_t)ep->OutOffset), Bytes); - ep->OutBytesAvailable -= Bytes; - ep->OutOffset += Bytes; - BytesTransfered += Bytes; - Length -= Bytes; - } - else { - Endpoint_ClearOUT(); - if (BytesProcessed!=NULL) { - *BytesProcessed = BytesTransfered; - return ENDPOINT_RWSTREAM_IncompleteTransfer; - } - - if ((ErrorCode = Endpoint_WaitUntilReady()) != 0) { - return ErrorCode; - } - - - } - } - return ENDPOINT_RWSTREAM_NoError; -} - -uint8_t Endpoint_Write_Control_Stream_LE (const void *const Buffer, uint16_t Length) { - USBD_Endpoint_t *EndPoint = &device.Endpoints[0]; - uint16_t Bytes; - - while (Length) { - if (!EndPoint->InInUse) { - if (EndPoint->InBufferLength > Length) { - Bytes = Length; - } else { - Bytes = EndPoint->InBufferLength; - } - MEMCPY(EndPoint->InBuffer,Buffer,Bytes); - EndPoint->InBytesAvailable += Bytes; - Length -= Bytes; - - Endpoint_ClearIN(); - } - } - return ENDPOINT_RWCSTREAM_NoError; -} - -uint8_t Endpoint_Write_Control_Stream_BE (const void *const Buffer, uint16_t Length) { - return Endpoint_Write_Control_Stream_LE(Buffer,Length); -} - -uint8_t Endpoint_Read_Control_Stream_LE (void *const Buffer, uint16_t Length) { - USBD_Endpoint_t *EndPoint = &device.Endpoints[0]; - uint16_t Bytes; - - while (Length) { - if (EndPoint->IsOutRecieved) { - Bytes = EndPoint->OutBytesAvailable > Length - ? Length : EndPoint->OutBytesAvailable; - MEMCPY(Buffer,EndPoint->OutBuffer,Bytes); - EndPoint->OutBytesAvailable -= Bytes; - Length -= Bytes; - - Endpoint_ClearOUT(); - } - } - return ENDPOINT_RWCSTREAM_NoError; -} - -uint8_t Endpoint_Read_Control_Stream_BE (void *const Buffer, uint16_t Length) { - return Endpoint_Read_Control_Stream_LE(Buffer,Length); -} - -uint8_t Endpoint_Null_Stream(uint16_t Length, - uint16_t* const BytesProcessed) { - USBD_Endpoint_t* ep = &device.Endpoints[device.CurrentEndpoint]; - uint16_t Bytes = 0; - uint16_t BytesTransfered = 0; - uint8_t ErrorCode; - - if (BytesProcessed!=NULL) { - Length -= *BytesProcessed; - BytesTransfered = *BytesProcessed; - } - - while (Length) { - if (ep->InInUse) - continue; - if (Endpoint_IsReadWriteAllowed()) { - Bytes = ep->InBufferLength - ep->InBytesAvailable > Length ? Length : ep->InBufferLength - ep->InBytesAvailable; - memset(ep->InBuffer + ep->InBytesAvailable,0x0,Bytes); - ep->InBytesAvailable += Bytes; - BytesTransfered += Bytes; - Length -= Bytes; - } - else { - Endpoint_ClearIN(); - if (BytesProcessed!=NULL) { - *BytesProcessed = BytesTransfered; - return ENDPOINT_RWSTREAM_IncompleteTransfer; - } - - if ((ErrorCode = Endpoint_WaitUntilReady()) != 0) { - return ErrorCode; - } - - - } - } - return ENDPOINT_RWSTREAM_NoError; -} -#endif -#endif - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/XMC4000/EndpointStream_XMC4000.h b/cores/usblib/Core/XMC4000/EndpointStream_XMC4000.h deleted file mode 100644 index 36dba3d7..00000000 --- a/cores/usblib/Core/XMC4000/EndpointStream_XMC4000.h +++ /dev/null @@ -1,443 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2013. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2013 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ -/******************************************************************************* - * - * Copyright (C) 2013 Infineon Technologies AG. All rights reserved. - * - * Infineon Technologies AG (Infineon) is supplying this software for use with - * Infineon's microcontrollers. - * This file can be freely distributed within development tools that are - * supporting such microcontrollers. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, - * OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * -********************************************************************************/ - - - -/** \file - * \brief Endpoint data stream transmission and reception management for the XMC microcontrollers. - * \copydetails Group_EndpointStreamRW - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in LUFA/Drivers/USB/USB.h. - */ - -/** \ingroup Group_EndpointStreamRW - * \defgroup Group_EndpointStreamRW Read/Write of Multi-Byte Streams - * \brief Endpoint data stream transmission and reception management for the Infineon XMC architecture. - * - * Functions, macros, variables, enums and types related to data reading and writing of data streams from - * and to endpoints. - * - * @{ - */ - -#ifndef ENDPOINTSTREAM_XMC4000_H_ -#define ENDPOINTSTREAM_XMC4000_H_ -#if defined(USB0) - #include <../../Common/Common.h> - #include <../USBMode.h> - #include <../USBTask.h> - -#if defined(__cplusplus) - extern "C" { -#endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /** \name Stream functions for null data */ - //@{ - - /** Reads and discards the given number of bytes from the currently selected endpoint's bank, - * discarding fully read packets from the host as needed. The last packet is not automatically - * discarded once the remaining bytes has been read; the user is responsible for manually - * discarding the last packet from the host via the \ref Endpoint_ClearOUT() macro. - * - * If the BytesProcessed parameter is \c NULL, the entire stream transfer is attempted at once, - * failing or succeeding as a single unit. If the BytesProcessed parameter points to a valid - * storage location, the transfer will instead be performed as a series of chunks. Each time - * the endpoint bank becomes empty while there is still data to process (and after the current - * packet has been acknowledged) the BytesProcessed location will be updated with the total number - * of bytes processed in the stream, and the function will exit with an error code of - * \ref ENDPOINT_RWSTREAM_IncompleteTransfer. This allows for any abort checking to be performed - * in the user code - to continue the transfer, call the function again with identical parameters - * and it will resume until the BytesProcessed value reaches the total transfer length. - * - * Single Stream Transfer Example: - * \code - * uint8_t ErrorCode; - * - * if ((ErrorCode = Endpoint_Discard_Stream(512, NULL)) != ENDPOINT_RWSTREAM_NoError) - * { - * // Stream failed to complete - check ErrorCode here - * } - * \endcode - * - * Partial Stream Transfers Example: - * \code - * uint8_t ErrorCode; - * uint16_t BytesProcessed; - * - * BytesProcessed = 0; - * while ((ErrorCode = Endpoint_Discard_Stream(512, &BytesProcessed)) == ENDPOINT_RWSTREAM_IncompleteTransfer) - * { - * // Stream not yet complete - do other actions here, abort if required - * } - * - * if (ErrorCode != ENDPOINT_RWSTREAM_NoError) - * { - * // Stream failed to complete - check ErrorCode here - * } - * \endcode - * - * \note This routine should not be used on CONTROL type endpoints. - * - * \param[in] Length Number of bytes to discard via the currently selected endpoint. - * \param[in] BytesProcessed Pointer to a location where the total number of bytes processed in the current - * transaction should be updated, \c NULL if the entire stream should be read at once. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Discard_Stream(uint16_t Length, - uint16_t* const BytesProcessed); - - /** Writes a given number of zeroed bytes to the currently selected endpoint's bank, sending - * full packets to the host as needed. The last packet is not automatically sent once the - * remaining bytes have been written; the user is responsible for manually sending the last - * packet to the host via the \ref Endpoint_ClearIN() macro. - * - * If the BytesProcessed parameter is \c NULL, the entire stream transfer is attempted at once, - * failing or succeeding as a single unit. If the BytesProcessed parameter points to a valid - * storage location, the transfer will instead be performed as a series of chunks. Each time - * the endpoint bank becomes full while there is still data to process (and after the current - * packet transmission has been initiated) the BytesProcessed location will be updated with the - * total number of bytes processed in the stream, and the function will exit with an error code of - * \ref ENDPOINT_RWSTREAM_IncompleteTransfer. This allows for any abort checking to be performed - * in the user code - to continue the transfer, call the function again with identical parameters - * and it will resume until the BytesProcessed value reaches the total transfer length. - * - * Single Stream Transfer Example: - * \code - * uint8_t ErrorCode; - * - * if ((ErrorCode = Endpoint_Null_Stream(512, NULL)) != ENDPOINT_RWSTREAM_NoError) - * { - * // Stream failed to complete - check ErrorCode here - * } - * \endcode - * - * Partial Stream Transfers Example: - * \code - * uint8_t ErrorCode; - * uint16_t BytesProcessed; - * - * BytesProcessed = 0; - * while ((ErrorCode = Endpoint_Null_Stream(512, &BytesProcessed)) == ENDPOINT_RWSTREAM_IncompleteTransfer) - * { - * // Stream not yet complete - do other actions here, abort if required - * } - * - * if (ErrorCode != ENDPOINT_RWSTREAM_NoError) - * { - * // Stream failed to complete - check ErrorCode here - * } - * \endcode - * - * \note This routine should not be used on CONTROL type endpoints. - * - * \param[in] Length Number of zero bytes to send via the currently selected endpoint. - * \param[in] BytesProcessed Pointer to a location where the total number of bytes processed in the current - * transaction should be updated, \c NULL if the entire stream should be read at once. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Null_Stream(uint16_t Length, - uint16_t* const BytesProcessed); - - //@} - - /** \name Stream functions for RAM source/destination data */ - //@{ - - /** Writes the given number of bytes to the endpoint from the given buffer in little endian, - * sending full packets to the host as needed. The last packet filled is not automatically sent; - * the user is responsible for manually sending the last written packet to the host via the - * \ref Endpoint_ClearIN() macro. - * - * If the BytesProcessed parameter is \c NULL, the entire stream transfer is attempted at once, - * failing or succeeding as a single unit. If the BytesProcessed parameter points to a valid - * storage location, the transfer will instead be performed as a series of chunks. Each time - * the endpoint bank becomes full while there is still data to process (and after the current - * packet transmission has been initiated) the BytesProcessed location will be updated with the - * total number of bytes processed in the stream, and the function will exit with an error code of - * \ref ENDPOINT_RWSTREAM_IncompleteTransfer. This allows for any abort checking to be performed - * in the user code - to continue the transfer, call the function again with identical parameters - * and it will resume until the BytesProcessed value reaches the total transfer length. - * - * Single Stream Transfer Example: - * \code - * uint8_t DataStream[512]; - * uint8_t ErrorCode; - * - * if ((ErrorCode = Endpoint_Write_Stream_LE(DataStream, sizeof(DataStream), - * NULL)) != ENDPOINT_RWSTREAM_NoError) - * { - * // Stream failed to complete - check ErrorCode here - * } - * \endcode - * - * Partial Stream Transfers Example: - * \code - * uint8_t DataStream[512]; - * uint8_t ErrorCode; - * uint16_t BytesProcessed; - * - * BytesProcessed = 0; - * while ((ErrorCode = Endpoint_Write_Stream_LE(DataStream, sizeof(DataStream), - * &BytesProcessed)) == ENDPOINT_RWSTREAM_IncompleteTransfer) - * { - * // Stream not yet complete - do other actions here, abort if required - * } - * - * if (ErrorCode != ENDPOINT_RWSTREAM_NoError) - * { - * // Stream failed to complete - check ErrorCode here - * } - * \endcode - * - * \note This routine should not be used on CONTROL type endpoints. - * - * \param[in] Buffer Pointer to the source data buffer to read from. - * \param[in] Length Number of bytes to read for the currently selected endpoint into the buffer. - * \param[in] BytesProcessed Pointer to a location where the total number of bytes processed in the current - * transaction should be updated, \c NULL if the entire stream should be written at once. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Write_Stream_LE (const void *const Buffer, uint16_t Length, uint16_t *const BytesProcessed) ATTR_NON_NULL_PTR_ARG(1); - - /** Writes the given number of bytes to the endpoint from the given buffer in big endian, - * sending full packets to the host as needed. The last packet filled is not automatically sent; - * the user is responsible for manually sending the last written packet to the host via the - * \ref Endpoint_ClearIN() macro. - * - * \note This routine should not be used on CONTROL type endpoints. - * - * \param[in] Buffer Pointer to the source data buffer to read from. - * \param[in] Length Number of bytes to read for the currently selected endpoint into the buffer. - * \param[in] BytesProcessed Pointer to a location where the total number of bytes processed in the current - * transaction should be updated, \c NULL if the entire stream should be written at once. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Write_Stream_BE (const void *const Buffer, uint16_t Length, uint16_t *const BytesProcessed) ATTR_NON_NULL_PTR_ARG(1); - - /** Reads the given number of bytes from the endpoint from the given buffer in little endian, - * discarding fully read packets from the host as needed. The last packet is not automatically - * discarded once the remaining bytes has been read; the user is responsible for manually - * discarding the last packet from the host via the \ref Endpoint_ClearOUT() macro. - * - * If the BytesProcessed parameter is \c NULL, the entire stream transfer is attempted at once, - * failing or succeeding as a single unit. If the BytesProcessed parameter points to a valid - * storage location, the transfer will instead be performed as a series of chunks. Each time - * the endpoint bank becomes empty while there is still data to process (and after the current - * packet has been acknowledged) the BytesProcessed location will be updated with the total number - * of bytes processed in the stream, and the function will exit with an error code of - * \ref ENDPOINT_RWSTREAM_IncompleteTransfer. This allows for any abort checking to be performed - * in the user code - to continue the transfer, call the function again with identical parameters - * and it will resume until the BytesProcessed value reaches the total transfer length. - * - * Single Stream Transfer Example: - * \code - * uint8_t DataStream[512]; - * uint8_t ErrorCode; - * - * if ((ErrorCode = Endpoint_Read_Stream_LE(DataStream, sizeof(DataStream), - * NULL)) != ENDPOINT_RWSTREAM_NoError) - * { - * // Stream failed to complete - check ErrorCode here - * } - * \endcode - * - * Partial Stream Transfers Example: - * \code - * uint8_t DataStream[512]; - * uint8_t ErrorCode; - * uint16_t BytesProcessed; - * - * BytesProcessed = 0; - * while ((ErrorCode = Endpoint_Read_Stream_LE(DataStream, sizeof(DataStream), - * &BytesProcessed)) == ENDPOINT_RWSTREAM_IncompleteTransfer) - * { - * // Stream not yet complete - do other actions here, abort if required - * } - * - * if (ErrorCode != ENDPOINT_RWSTREAM_NoError) - * { - * // Stream failed to complete - check ErrorCode here - * } - * \endcode - * - * \note This routine should not be used on CONTROL type endpoints. - * - * \param[out] Buffer Pointer to the destination data buffer to write to. - * \param[in] Length Number of bytes to send via the currently selected endpoint. - * \param[in] BytesProcessed Pointer to a location where the total number of bytes processed in the current - * transaction should be updated, \c NULL if the entire stream should be read at once. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Read_Stream_LE (void *const Buffer, uint16_t Length, uint16_t *const BytesProcessed) ATTR_NON_NULL_PTR_ARG(1); - - /** Reads the given number of bytes from the endpoint from the given buffer in big endian, - * discarding fully read packets from the host as needed. The last packet is not automatically - * discarded once the remaining bytes has been read; the user is responsible for manually - * discarding the last packet from the host via the \ref Endpoint_ClearOUT() macro. - * - * \note This routine should not be used on CONTROL type endpoints. - * - * \param[out] Buffer Pointer to the destination data buffer to write to. - * \param[in] Length Number of bytes to send via the currently selected endpoint. - * \param[in] BytesProcessed Pointer to a location where the total number of bytes processed in the current - * transaction should be updated, \c NULL if the entire stream should be read at once. - * - * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Read_Stream_BE (void *const Buffer, uint16_t Length, uint16_t *const BytesProcessed) ATTR_NON_NULL_PTR_ARG(1); - - /** Writes the given number of bytes to the CONTROL type endpoint from the given buffer in little endian, - * sending full packets to the host as needed. The host OUT acknowledgement is not automatically cleared - * in both failure and success states; the user is responsible for manually clearing the status OUT packet - * to finalize the transfer's status stage via the \ref Endpoint_ClearOUT() macro. - * - * \note This function automatically sends the last packet in the data stage of the transaction; when the - * function returns, the user is responsible for clearing the status stage of the transaction. - * Note that the status stage packet is sent or received in the opposite direction of the data flow. - * \n\n - * - * \note This routine should only be used on CONTROL type endpoints. - * - * \warning Unlike the standard stream read/write commands, the control stream commands cannot be chained - * together; i.e. the entire stream data must be read or written at the one time. - * - * \param[in] Buffer Pointer to the source data buffer to read from. - * \param[in] Length Number of bytes to read for the currently selected endpoint into the buffer. - * - * \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Write_Control_Stream_LE (const void *const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - - /** Writes the given number of bytes to the CONTROL type endpoint from the given buffer in big endian, - * sending full packets to the host as needed. The host OUT acknowledgement is not automatically cleared - * in both failure and success states; the user is responsible for manually clearing the status OUT packet - * to finalize the transfer's status stage via the \ref Endpoint_ClearOUT() macro. - * - * \note This function automatically sends the last packet in the data stage of the transaction; when the - * function returns, the user is responsible for clearing the status stage of the transaction. - * Note that the status stage packet is sent or received in the opposite direction of the data flow. - * \n\n - * - * \note This routine should only be used on CONTROL type endpoints. - * - * \warning Unlike the standard stream read/write commands, the control stream commands cannot be chained - * together; i.e. the entire stream data must be read or written at the one time. - * - * \param[in] Buffer Pointer to the source data buffer to read from. - * \param[in] Length Number of bytes to read for the currently selected endpoint into the buffer. - * - * \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Write_Control_Stream_BE (const void *const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - - /** Reads the given number of bytes from the CONTROL endpoint from the given buffer in little endian, - * discarding fully read packets from the host as needed. The device IN acknowledgement is not - * automatically sent after success or failure states; the user is responsible for manually sending the - * status IN packet to finalize the transfer's status stage via the \ref Endpoint_ClearIN() macro. - * - * \note This function automatically sends the last packet in the data stage of the transaction; when the - * function returns, the user is responsible for clearing the status stage of the transaction. - * Note that the status stage packet is sent or received in the opposite direction of the data flow. - * \n\n - * - * \note This routine should only be used on CONTROL type endpoints. - * - * \warning Unlike the standard stream read/write commands, the control stream commands cannot be chained - * together; i.e. the entire stream data must be read or written at the one time. - * - * \param[out] Buffer Pointer to the destination data buffer to write to. - * \param[in] Length Number of bytes to send via the currently selected endpoint. - * - * \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Read_Control_Stream_LE (void *const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - - /** Reads the given number of bytes from the CONTROL endpoint from the given buffer in big endian, - * discarding fully read packets from the host as needed. The device IN acknowledgement is not - * automatically sent after success or failure states; the user is responsible for manually sending the - * status IN packet to finalize the transfer's status stage via the \ref Endpoint_ClearIN() macro. - * - * \note This function automatically sends the last packet in the data stage of the transaction; when the - * function returns, the user is responsible for clearing the status stage of the transaction. - * Note that the status stage packet is sent or received in the opposite direction of the data flow. - * \n\n - * - * \note This routine should only be used on CONTROL type endpoints. - * - * \warning Unlike the standard stream read/write commands, the control stream commands cannot be chained - * together; i.e. the entire stream data must be read or written at the one time. - * - * \param[out] Buffer Pointer to the destination data buffer to write to. - * \param[in] Length Number of bytes to send via the currently selected endpoint. - * - * \return A value from the \ref Endpoint_ControlStream_RW_ErrorCodes_t enum. - */ - uint8_t Endpoint_Read_Control_Stream_BE (void *const Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1); - - //@} - -#if defined(__cplusplus) - } -#endif - -#endif /* USBD_ENDPOINTSTREAM_XMC4000_H_ */ -#endif -/** @} */ - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/XMC4000/Endpoint_XMC4000.c b/cores/usblib/Core/XMC4000/Endpoint_XMC4000.c deleted file mode 100644 index b8cd6050..00000000 --- a/cores/usblib/Core/XMC4000/Endpoint_XMC4000.c +++ /dev/null @@ -1,254 +0,0 @@ -#ifdef XMC4_SERIES - -/******************************************************************************* - Copyright (c) 2013, Infineon Technologies AG ** - All rights reserved. ** - ** - Redistribution and use in source and binary forms, with or without ** - modification,are permitted provided that the following conditions are met: ** - ** - *Redistributions of source code must retain the above copyright notice, ** - this list of conditions and the following disclaimer. ** - *Redistributions in binary form must reproduce the above copyright notice, ** - this list of conditions and the following disclaimer in the documentation ** - and/or other materials provided with the distribution. ** - *Neither the name of the copyright holders nor the names of its contributors ** - may be used to endorse or promote products derived from this software without** - specific prior written permission. ** - ** - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ** - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ** - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ** - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE ** - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ** - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ** - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ** - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ** - CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ** - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ** - POSSIBILITY OF SUCH DAMAGE. ** - ** - To improve the quality of the software, users are encouraged to share ** - modifications, enhancements or bug fixes with Infineon Technologies AG ** - dave@infineon.com). ** - ** -********************************************************************************/ -/** - * @file - * - * @App Version internal release for evaluation, no public release! - * - * @brief Source file for LUFA endpoint functions - */ -#if defined(USB0) -#include <../../Common/Common.h> -#define __INCLUDE_FROM_USB_DRIVER -#include <../USBMode.h> - -#if defined(USB_CAN_BE_DEVICE) - -#include <../EndPoint.h> - - -#define USB_STREAM_TIMEOUT_MS 100 - -extern volatile uint8_t zlp_flag; - -uint8_t Endpoint_WaitUntilReady(void) -{ - #if (USB_STREAM_TIMEOUT_MS < 0xFF) - uint8_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS; - #else - uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS; - #endif - - uint16_t PreviousFrameNumber = USB_Device_GetFrameNumber(); - - for (;;) - { - if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN) - { - if (Endpoint_IsINReady()) - return ENDPOINT_READYWAIT_NoError; - } - else - { - if (Endpoint_IsOUTReceived()) - return ENDPOINT_READYWAIT_NoError; - } - - uint8_t USB_DeviceState_LCL = USB_DeviceState; - - if (USB_DeviceState_LCL == DEVICE_STATE_Unattached) - return ENDPOINT_READYWAIT_DeviceDisconnected; - else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended) - return ENDPOINT_READYWAIT_BusSuspended; - else if (Endpoint_IsStalled()) - return ENDPOINT_READYWAIT_EndpointStalled; - - uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber(); - - if (CurrentFrameNumber != PreviousFrameNumber) - { - PreviousFrameNumber = CurrentFrameNumber; - - if (!(TimeoutMSRem--)) - return ENDPOINT_READYWAIT_Timeout; - } - } -} - -void Endpoint_ClearOUT(void) { - USBD_Endpoint_t *ep = &device.Endpoints[device.CurrentEndpoint]; - /* if we have data left which isn't read yet, we leave this routine to not override it */ - if (ep->IsEnabled == 0) - return; - /* First Check whether we have data in the driver */ - ep->OutBytesAvailable = device.Driver->EndpointRead(ep->Address,ep->OutBuffer,ep->OutBufferLength); - ep->OutOffset = 0; - /* If we didn't request new data and all data has been read, request new */ - if (!ep->OutInUse && !ep->OutBytesAvailable) { - ep->OutInUse = true; - ep->IsOutRecieved = 0; - device.Driver->EndpointReadStart(ep->Address, - ep->OutBufferLength); - } -} - -void Endpoint_ClearIN(void) -{ - USBD_Endpoint_t *ep = &device.Endpoints[device.CurrentEndpoint]; - int32_t data_count; - /* don't clear if in use or not enabled */ - if (ep->InInUse == 1 || ep->IsEnabled == 0) - return; - ep->InInUse = true; - /* store transfer information to loop over, if underlying is smaller */ - ep->InDataBuffer = ep->InBuffer; - ep->InDataLeft = ep->InBytesAvailable; - ep->InBytesAvailable = 0; - /* make next 3 operations atomic. Do not get interrupted.*/ - NVIC_DisableIRQ(USB0_0_IRQn); - data_count = device.Driver->EndpointWrite(ep->Address, - ep->InDataBuffer,ep->InDataLeft); - ep->InDataBuffer += data_count; - ep->InDataLeft -= data_count; - NVIC_EnableIRQ(USB0_0_IRQn); - if((zlp_flag == true) && (ep->Number != 0)) - { - /*Send a ZLP from here*/ - while(ep->InInUse) - { - ; - } - ep->InInUse = true; - device.Driver->EndpointWrite(ep->Address, - ep->InDataBuffer,0); - zlp_flag = false; - } -} - -bool Endpoint_IsReadWriteAllowed(void) { - USBD_Endpoint_t *EndPoint = &device.Endpoints[device.CurrentEndpoint]; - bool Retval = false; - - if(EndPoint->Direction) - { - Retval = (EndPoint->InBytesAvailable < EndPoint->InBufferLength) ? true : false; - } - else - { - Retval = (EndPoint->OutBytesAvailable > 0) ? true : false; - } - return Retval; -} - -void Endpoint_Write_8(const uint8_t Data) { - USBD_Endpoint_t *EndPoint = &device.Endpoints[device.CurrentEndpoint]; - bool Success = false; - - do - { - if(EndPoint->InBytesAvailable < EndPoint->InBufferLength) - { - EndPoint->InBuffer[EndPoint->InBytesAvailable] = Data; - EndPoint->InBytesAvailable++; - - Success = true; - } - }while(!Success); -} - -uint8_t Endpoint_Read_8(void) { - USBD_Endpoint_t *EndPoint = &device.Endpoints[device.CurrentEndpoint]; - bool Success = false; - uint8_t data = 0; - do - { - if(EndPoint->OutBytesAvailable > 0) - { - data = EndPoint->OutBuffer[EndPoint->OutOffset]; - EndPoint->OutOffset++; - EndPoint->OutBytesAvailable--; - Success = true; - } - }while(!Success); - return data; -} - -void Endpoint_Write_32_LE(const uint32_t Data) { - USBD_Endpoint_t *EndPoint = &device.Endpoints[device.CurrentEndpoint]; - bool Success = false; - - do { - if(EndPoint->InBytesAvailable < (EndPoint->InBufferLength - 3)) { - *(uint32_t*)(EndPoint->InBuffer + EndPoint->InBytesAvailable) = Data; - EndPoint->InBytesAvailable+=4; - - Success = true; - } - }while(!Success); -} - -uint32_t Endpoint_Read_32_LE(void) { - USBD_Endpoint_t *EndPoint = &device.Endpoints[device.CurrentEndpoint]; - bool Success = false; - uint32_t data = 0; - - do { - if(EndPoint->OutBytesAvailable > 3) { - data = *(uint32_t*)(EndPoint->OutBuffer + EndPoint->OutOffset); - EndPoint->OutOffset+=4; - EndPoint->OutBytesAvailable-=4; - - Success = true; - } - } while(!Success); - return data; -} - -bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table, - const uint8_t Entries) { - uint8_t i; - uint8_t Number; - for (i=0;iEndpointConfigure(Table[i].Address, (XMC_USBD_ENDPOINT_TYPE_t)Table[i].Type, Table[i].Size) != XMC_USBD_STATUS_OK) - return false; - /* Set device core values */ - device.Endpoints[Number].Address = Table[i].Address; - device.Endpoints[Number].MaxPacketSize = Table[i].Size; - device.Endpoints[Number].IsConfigured = 1; - device.Endpoints[Number].IsEnabled = 1; - /* Start read for out endpoints */ - if (!(Table[i].Address & ENDPOINT_DIR_MASK)) - device.Driver->EndpointReadStart(Table[i].Address, - device.Endpoints[Number].OutBufferLength); - } - return true; -} - -#endif -#endif -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/XMC4000/Endpoint_XMC4000.h b/cores/usblib/Core/XMC4000/Endpoint_XMC4000.h deleted file mode 100644 index 52ba064e..00000000 --- a/cores/usblib/Core/XMC4000/Endpoint_XMC4000.h +++ /dev/null @@ -1,413 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2013. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2013 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ -/******************************************************************************* - * - * Copyright (C) 2013 Infineon Technologies AG. All rights reserved. - * - * Infineon Technologies AG (Infineon) is supplying this software for use with - * Infineon's microcontrollers. - * This file can be freely distributed within development tools that are - * supporting such microcontrollers. - * - * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED - * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. - * INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, - * OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. - * - */ - -/** \file - * - * Functions, macros, variables, enums and types related to data reading and writing of primitive data types - * from and to endpoints. - */ - -/** \ingroup Group_EndpointPacketManagement - * - * Functions, macros, variables, enums and types related to packet management of endpoints. - */ - -/** \ingroup Group_EndpointManagement - * Functions, macros and enums related to endpoint management when in USB Device mode. This - * module contains the endpoint management macros, as well as endpoint interrupt and data - * send/receive functions for various data types. - * - * @{ - */ - -#ifndef ENDPOINT_XMC4000_H_ -#define ENDPOINT_XMC4000_H_ -#if defined(USB0) - #include <../../Common/Common.h> - #include <../USBTask.h> - #include <../USBInterrupt.h> - #include <../USBController.h> - -/* Enable C linkage for C++ Compilers: */ -#if defined(__cplusplus) - extern "C" { -#endif - - /* Preprocessor Checks: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - - /** Enum for the possible error return codes of the \ref Endpoint_WaitUntilReady() function. - * - * \ingroup Group_EndpointRW - */ - enum Endpoint_WaitUntilReady_ErrorCodes_t - { - ENDPOINT_READYWAIT_NoError = 0, /**< Endpoint is ready for next packet, no error. */ - ENDPOINT_READYWAIT_EndpointStalled = 1, /**< The endpoint was stalled during the stream - * transfer by the host or device. - */ - ENDPOINT_READYWAIT_DeviceDisconnected = 2, /**< Device was disconnected from the host while - * waiting for the endpoint to become ready. - */ - ENDPOINT_READYWAIT_BusSuspended = 3, /**< The USB bus has been suspended by the host and - * no USB endpoint traffic can occur until the bus - * has resumed. - */ - ENDPOINT_READYWAIT_Timeout = 4, /**< The host failed to accept or send the next packet - * within the software timeout period set by the - * \ref USB_STREAM_TIMEOUT_MS macro. - */ - }; - - /** Get the endpoint address of the currently selected endpoint. This is typically used to save - * the currently selected endpoint so that it can be restored after another endpoint has been - * manipulated. - * - * \return Index of the currently selected endpoint. - */ - static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetCurrentEndpoint(void) - { - return device.CurrentDirection | device.CurrentEndpoint; - } - - /** Selects the given endpoint address. - * - * Any endpoint operations which do not require the endpoint address to be indicated will operate on - * the currently selected endpoint. - * - * \param[in] Address Endpoint address to select. - */ - static inline void Endpoint_SelectEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_SelectEndpoint(const uint8_t Address) - { - device.CurrentEndpoint = Address & ENDPOINT_EPNUM_MASK; - device.CurrentDirection = (Address & ENDPOINT_DIR_MASK); - } - - /** Determines if the current CONTROL type endpoint has received a SETUP packet. - * - * \ingroup Group_EndpointPacketManagement - * - * \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise. - */ - static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsSETUPReceived(void) - { - return device.IsSetupRecieved; - } - - - /** Clears a received SETUP packet on the currently selected CONTROL type endpoint, freeing up the - * endpoint for the next packet. - * - * \ingroup Group_EndpointPacketManagement - * - * \note This is not applicable for non CONTROL type endpoints. - */ - static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearSETUP(void) - { - device.IsSetupRecieved = 0; - } - - /** Nothing done in this function - * - */ - static inline void Endpoint_ClearStatusStage(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearStatusStage(void) - { - - } - - /** Determines if the selected IN endpoint is ready for a new packet to be sent to the host. - * - * \ingroup Group_EndpointPacketManagement - * - * \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise. - */ - static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsINReady(void) - { - USBD_Endpoint_t *ep = &device.Endpoints[device.CurrentEndpoint]; - return ep->InInUse == 0 && ep->IsEnabled; - } - - /** Determines if the selected OUT endpoint has received new packet from the host. - * - * \ingroup Group_EndpointPacketManagement - * - * \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise. - */ - static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsOUTReceived(void) - { - USBD_Endpoint_t *ep = &device.Endpoints[device.CurrentEndpoint]; - return ep->IsOutRecieved; - } - - /** Determines the currently selected endpoint's direction. - * - * \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask. - */ - static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint8_t Endpoint_GetEndpointDirection(void) - { - USBD_Endpoint_t *ep = &device.Endpoints[device.CurrentEndpoint]; - return ep->Address & ENDPOINT_DIR_MASK; - } - - /** Indicates the number of bytes currently stored in the current endpoint's selected bank. - * - * \ingroup Group_EndpointRW - * - * \return Total number of bytes in the currently selected Endpoint's FIFO buffer. - */ - static inline uint16_t Endpoint_BytesInEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline uint16_t Endpoint_BytesInEndpoint(void) - { - USBD_Endpoint_t *ep = &device.Endpoints[device.CurrentEndpoint]; - if (ep->Direction) - return ep->InBytesAvailable; - else - return ep->OutBytesAvailable; - } - - /** Acknowledges an OUT packet to the host on the currently selected endpoint, freeing up the endpoint - * for the next packet and switching to the alternative endpoint bank if double banked. - * - * \ingroup Group_EndpointPacketManagement - */ - void Endpoint_ClearOUT(void); - - /** Sends an IN packet to the host on the currently selected endpoint, freeing up the endpoint for the - * next packet and switching to the alternative endpoint bank if double banked. - * - * \ingroup Group_EndpointPacketManagement - */ - void Endpoint_ClearIN(void); - - /** Determines if the currently selected endpoint may be read from (if data is waiting in the endpoint - * bank and the endpoint is an OUT direction, or if the bank is not yet full if the endpoint is an IN - * direction). This function will return false if an error has occurred in the endpoint, if the endpoint - * is an OUT direction and no packet (or an empty packet) has been received, or if the endpoint is an IN - * direction and the endpoint bank is full. - * - * \ingroup Group_EndpointPacketManagement - * - * \return Boolean \c true if the currently selected endpoint may be read from or written to, depending - * on its direction. - */ - bool Endpoint_IsReadWriteAllowed(void); - - /** Stalls the current endpoint, indicating to the host that a logical problem occurred with the - * indicated endpoint and that the current transfer sequence should be aborted. This provides a - * way for devices to indicate invalid commands to the host so that the current transfer can be - * aborted and the host can begin its own recovery sequence. - * - * The currently selected endpoint remains stalled until either the \ref Endpoint_ClearStall() macro - * is called, or the host issues a CLEAR FEATURE request to the device for the currently selected - * endpoint. - * - * \ingroup Group_EndpointPacketManagement - */ - static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_StallTransaction(void) - { - device.Endpoints[device.CurrentEndpoint].IsHalted = 1; - device.Driver->EndpointStall(device.CurrentDirection | device.CurrentEndpoint,1); - } - - /** Clears the STALL condition on the currently selected endpoint. - * - * \ingroup Group_EndpointPacketManagement - */ - static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ClearStall(void) - { - device.Endpoints[device.CurrentEndpoint].IsHalted = 0; - device.Driver->EndpointStall(device.CurrentDirection | device.CurrentEndpoint,0); - } - - /** Determines if the currently selected endpoint is stalled, \c false otherwise. - * - * \ingroup Group_EndpointPacketManagement - * - * \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise. - */ - static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsStalled(void) - { - return device.Endpoints[device.CurrentEndpoint].IsHalted == 1 ? true : false; - } - - /** Resets the endpoint bank FIFO. This clears all the endpoint banks and resets the USB controller's - * data In and Out pointers to the bank's contents. - * - * \param[in] Address Endpoint address whose FIFO buffers are to be reset. - */ - static inline void Endpoint_ResetEndpoint(const uint8_t Address) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ResetEndpoint(const uint8_t Address) - { - device.Driver->EndpointAbort(device.CurrentDirection | device.CurrentEndpoint); - USBD_Endpoint_t *ep = &device.Endpoints[device.CurrentEndpoint]; - ep->IsHalted = 0; - ep->IsOutRecieved = 0; - ep->InBytesAvailable = 0; - ep->InDataLeft = 0; - ep->InInUse = 0; - ep->OutBytesAvailable = 0; - ep->OutOffset = 0; - ep->OutInUse = 0; - } - - /** Resets the data toggle of the currently selected endpoint. */ - static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE; - static inline void Endpoint_ResetDataToggle(void) - { - xmc_device.endpoint_in_register[device.CurrentEndpoint]->diepctl |= (1<<28); - } - - - /** Configures a table of endpoint descriptions, in sequence. This function can be used to configure multiple - * endpoints at the same time. - * - * \note Endpoints with a zero address will be ignored, thus this function cannot be used to configure the - * control endpoint. - * - * \param[in] Table Pointer to a table of endpoint descriptions. - * \param[in] Entries Number of entries in the endpoint table to configure. - * - * \return Boolean \c true if all endpoints configured successfully, \c false otherwise. - */ - bool Endpoint_ConfigureEndpointTable(const USB_Endpoint_Table_t* const Table, - const uint8_t Entries); - - /** Spin-loops until the currently selected non-control endpoint is ready for the next packet of data - * to be read or written to it. - * - * \note This routine should not be called on CONTROL type endpoints. - * - * \ingroup Group_EndpointRW - * - * \return A value from the \ref Endpoint_WaitUntilReady_ErrorCodes_t enum. - */ - uint8_t Endpoint_WaitUntilReady(void); - - /** Reads one byte from the currently selected endpoint's bank, for OUT direction endpoints. - * - * \ingroup Group_EndpointPrimitiveRW - * - * \return Next byte in the currently selected endpoint's FIFO buffer. - */ - uint8_t Endpoint_Read_8(void); - - /** Writes one byte to the currently selected endpoint's bank, for IN direction endpoints. - * - * \ingroup Group_EndpointPrimitiveRW - * - * \param[in] Data Data to write into the the currently selected endpoint's FIFO buffer. - */ - void Endpoint_Write_8(const uint8_t data); - - /** Writes four bytes to the currently selected endpoint's bank in little endian format, for IN - * direction endpoints. - * - * \ingroup Group_EndpointPrimitiveRW - * - * \param[in] Data Data to write to the currently selected endpoint's FIFO buffer. - */ - void Endpoint_Write_32_LE(const uint32_t Data); - - /** Reads four bytes from the currently selected endpoint's bank in little endian format, for OUT - * direction endpoints. - * - * \ingroup Group_EndpointPrimitiveRW - * - * \return Next four bytes in the currently selected endpoint's FIFO buffer. - */ - uint32_t Endpoint_Read_32_LE(void); - - /** Writes two bytes to the currently selected endpoint's bank in little endian format, for IN - * direction endpoints. - * - * \ingroup Group_EndpointPrimitiveRW - * - * \param[in] Data Data to write to the currently selected endpoint's FIFO buffer. - */ - static inline void Endpoint_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE; - static inline void Endpoint_Write_16_LE(const uint16_t Data) - { - Endpoint_Write_8(Data & 0xFF); - Endpoint_Write_8(Data >> 8); - } - - /** Determines if the currently selected endpoint is enabled, but not necessarily configured. - * - * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise. - */ - static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; - static inline bool Endpoint_IsEnabled(void) - { - return true; - } - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif - -/** @} */ - -#endif /* ENDPOINT_XMC4000_H_ */ -#endif -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/XMC4000/USBController_XMC4000.c b/cores/usblib/Core/XMC4000/USBController_XMC4000.c deleted file mode 100644 index a31e1adc..00000000 --- a/cores/usblib/Core/XMC4000/USBController_XMC4000.c +++ /dev/null @@ -1,564 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ -#if defined(USB0) -#include <../../Common/Common.h> - -#define __INCLUDE_FROM_USB_DRIVER -#define __INCLUDE_FROM_USB_CONTROLLER_C -#include <../USBController.h> - -USB_Device_t device; - -uint8_t endpoint0_in_buffer[256]; -uint8_t endpoint0_out_buffer[256]; - -/** - * \ingroup USBD_Core_Driver - * \defgroup EP0_Handling Handling of EP0 Control Request - * \brief - * @{ - */ - -/** - * \brief Handle protocol stall on EP0 - * - * Stalls EP0 and then restarts a new transfer including setting state to \ref IDLE. - */ -void USBD_HandleEP0_Stall() { - /* When we stall ep0 as protocol stall, we go back into idle state and start a new read */ - device.Driver->EndpointStall(ENDPOINT_DIR_IN | 0,1); - device.EP0_State = IDLE; - device.Driver->EndpointReadStart(0,24); -} - -/** - * \brief Handle device request on endpoint 0 - * - * By default any USB device has to support a subset of device control request defiened by - * the USB specification. All request required by the spec are handle within this function. - * Before a handling of the request is done by this function, it dispatches it to the - * \ref EVENT_USB_Device_ControlRequest function. There the user has the chance to complete - * some custom request or override the handling of this function. If the user has handled the - * request, he has to call \ref Endpoint_ClearSETUP. - * - */ -void USB_Device_ProcessControlRequest() { - uint32_t length = 0,ret; - uint16_t status = 0; - void *buffer; - uint8_t Value; - uint16_t Index; - - Value = USB_ControlRequest.wValue & 0x00FF; - - /* Handling of descriptors */ - EVENT_USB_Device_ControlRequest(); - if (!device.IsSetupRecieved) - return; - - /* default request handling */ - switch (USB_ControlRequest.bRequest) { - case REQ_ClearFeature: - if ((USB_ControlRequest.bmRequestType & 0x3) == REQREC_ENDPOINT) { - Index = USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK; - if ((USB_DeviceState == DEVICE_STATE_Configured || USB_ControlRequest.wIndex==0) && - device.Endpoints[Index].IsConfigured==1) { - device.Endpoints[Index].IsHalted = 0; - device.Driver->EndpointStall(USB_ControlRequest.wIndex,0); - } else { - USBD_HandleEP0_Stall(); - } - break; - } - if ((USB_ControlRequest.bmRequestType & 0x3) == REQREC_DEVICE) { - device.RemoteWakeUp = 0; - break; - } - USBD_HandleEP0_Stall(); - break; - - case REQ_GetConfiguration: - device.Driver->EndpointWrite(0,&device.Configuration,1); - break; - - case REQ_GetDescriptor: - length = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue,USB_ControlRequest.wIndex,(void*)&buffer); - if (length==0) - USBD_HandleEP0_Stall(); - else { - length = length < USB_ControlRequest.wLength ? - length : USB_ControlRequest.wLength; - ret = device.Driver->EndpointWrite(0,buffer,length); - device.Endpoints[0].InDataLeft = length - ret; - device.Endpoints[0].InDataBuffer = (uint8_t *)((uint32_t)buffer + ret); - } - break; - - case REQ_GetInterface: - if (USB_DeviceState == DEVICE_STATE_Configured) { - device.Driver->EndpointWrite(0,&device.InterfaceSettings[USB_ControlRequest.wIndex],1); - break; - } - if (USB_DeviceState == DEVICE_STATE_Addressed) { - USBD_HandleEP0_Stall(); - break; - } - break; - - case REQ_GetStatus: - if ((USB_ControlRequest.bmRequestType & 0x3) == REQREC_DEVICE) { - status = device.RemoteWakeUp << 1 | device.SelfPowered; - device.Driver->EndpointWrite(0,(uint8_t*)&status,2); - break; - } - if ((USB_ControlRequest.bmRequestType & 0x3) == REQREC_INTERFACE && USB_DeviceState == DEVICE_STATE_Configured) { - status = 0; - device.Driver->EndpointWrite(0,(uint8_t*)&status,2); - break; - } - /* print endpoint status only when(or): - * - Device_Address_state and ep == 0 - * - Device_configured_state and ep is configured - */ - if ((USB_ControlRequest.bmRequestType & 0x3) == REQREC_ENDPOINT) { - Index = USB_ControlRequest.wIndex & 0xFF & ENDPOINT_EPNUM_MASK; - if ((USB_DeviceState == DEVICE_STATE_Configured || USB_ControlRequest.wIndex==0) && - device.Endpoints[Index].IsConfigured==1) { - status = device.Endpoints[Index].IsHalted; - device.Driver->EndpointWrite(0,(uint8_t*)&status,2); - break; - } - } - /* default stall */ - USBD_HandleEP0_Stall(); - break; - - case REQ_SetAddress: - if (Value == 0) - USB_DeviceState = DEVICE_STATE_Default; - else - USB_DeviceState = DEVICE_STATE_Addressed; - device.Driver->DeviceSetAddress(Value,XMC_USBD_SET_ADDRESS_STAGE_SETUP); - break; - - case REQ_SetConfiguration: - /* Regardless the state update the configuration to unconfigure endpoints */ - device.Configuration = Value; - EVENT_USB_Device_ConfigurationChanged(); - /* when config 0 is choosen, we are back in address state */ - if (Value == 0) { - USB_DeviceState = DEVICE_STATE_Addressed; - break; - } - /* go ahead only with vailid config. (must be set in event) */ - if (device.IsConfigured == 1) - USB_DeviceState = DEVICE_STATE_Configured; - else - USBD_HandleEP0_Stall(); - break; - - case REQ_SetDescriptor: - /* Set Descriptor not supported, so stall */ - USBD_HandleEP0_Stall(); - break; - - case REQ_SetInterface: - if (USB_DeviceState == DEVICE_STATE_Configured) { - /* TODO: Check if interface and altsetting exists and configuration is allowed, else stall */ - device.InterfaceSettings[USB_ControlRequest.wIndex] = USB_ControlRequest.wValue; - break; - } - if (USB_DeviceState == DEVICE_STATE_Addressed) { - USBD_HandleEP0_Stall(); - break; - } - break; - - case REQ_SetFeature: - /* we do not support test mode */ - if (Value == FEATURE_SEL_TestMode) { - USBD_HandleEP0_Stall(); - break; - } - /* configured state */ - if (USB_DeviceState == DEVICE_STATE_Configured) { - switch (Value) { - case FEATURE_SEL_DeviceRemoteWakeup: - device.RemoteWakeUp = 1; - break; - case FEATURE_SEL_EndpointHalt: - Index = USB_ControlRequest.wIndex & 0xFF & (uint8_t)XMC_USBD_ENDPOINT_NUMBER_MASK; - if (device.Endpoints[Index].IsConfigured == 0) - USBD_HandleEP0_Stall(); - else { - device.Endpoints[Index].IsHalted = 1; - device.Driver->EndpointStall(USB_ControlRequest.wIndex,1); - } - break; - } - break; - } - /* when addressed, only ep0 can be halted */ - if (USB_DeviceState == DEVICE_STATE_Addressed) { - if (Value == FEATURE_SEL_EndpointHalt && - (USB_ControlRequest.bmRequestType & 0x3) == REQREC_ENDPOINT && - (USB_ControlRequest.wIndex & 0x00FF) == 0x0) { - device.Endpoints[0].IsHalted = 1; - USBD_HandleEP0_Stall(); - break; - } - } - /* default behaviour is stall */ - USBD_HandleEP0_Stall(); - break; - - case REQ_SynchFrame: - /* Not yet supported */ - USBD_HandleEP0_Stall(); - break; - - default: - USBD_HandleEP0_Stall(); - } - device.IsSetupRecieved = 0; -} - -/** - * \brief Handle complete IN transfer on EP0 - * - * In \ref IN_DATA state it starts a receive and switches to \ref OUT_STATUS state. - * In \ref IN_STATUS state its starts a new read of setup packets and switches to \ref IDLE. - */ -void USBD_HandleEP0_IN() { - if (device.EP0_State == IN_DATA) { - /* Read zero length out data packet */ - device.Driver->EndpointReadStart(0,0); - device.EP0_State = OUT_STATUS; - } - if (device.EP0_State == IN_STATUS) { - /* Request new setup packet */ - device.Driver->EndpointReadStart(device.Endpoints[0].Address,24); - device.EP0_State = IDLE; - } -} - - -/** - * \brief Handle complete OUT transfer on EP0 - * - * Handles the OUT packet based on the state of endpoint 0. Starts a new read for new SETUP packets, when in \ref OUT_STATUS. - * When endpoint 0 is in \ref OUT_DATA state, it handles the received data and starts a write transaction for \ref IN_STATUS. - */ -void USBD_HandleEP0_OUT() { - if (device.EP0_State == OUT_DATA) { - /* Now we have the data for handling the request */ - USB_Device_ProcessControlRequest(); - /* Zero length packet for status stage */ - device.Driver->EndpointWrite(ENDPOINT_DIR_MASK & 0,0,0); - device.EP0_State = IN_STATUS; - } - if (device.EP0_State == OUT_STATUS) { - /* Request new setup packet */ - device.Driver->EndpointReadStart(device.Endpoints[0].Address,24); - device.EP0_State = IDLE; - } -} - -/** - * \brief Handle SETUP packet on EP0 - * - * Handles the setup package an switches to correct state. If data is send from host to device it switches into \ref OUT_DATA state. - * When the hosts sends all data within the setup package and \ref wLength equals zero, starts processing the request and sends a - * in status reponse including the switch to \ref IN_STATUS. - * When the host expects data from the device, the function processes the control request and switches to \ref IN_DATA state. - */ -void USBD_HandleEP0_SETUP() { - /* read setup package from ep0 */ - int32_t ret_val = device.Driver->EndpointRead(0,(void*)&USB_ControlRequest,8); -#if NO_COPY_DRIVER - MEMCPY(&USB_ControlRequest,device.Endpoints[0].OutBuffer,sizeof(USB_ControlRequest)); -#endif - device.IsSetupRecieved = true; - if (ret_val != 8 ) - return; - - /* preprocess */ - /* if length is zero we have only a in_status phase */ - if (USB_ControlRequest.wLength==0) { - device.EP0_State = IN_STATUS; - USB_Device_ProcessControlRequest(); - device.Driver->EndpointWrite(0,0,0); - } else { - if (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_DIRECTION) { - device.EP0_State = IN_DATA; - USB_Device_ProcessControlRequest(); - } - else { - device.EP0_State = OUT_DATA; - /* Do not process request here, first read data */ - device.Driver->EndpointReadStart(0,USB_ControlRequest.wLength); - } - } -} - -/** - * @} - */ - -/** - * \brief Device event handler for XMC Driver - * - * The device can have several events, where it notifies the application about. - * - * \note Not all events are available on all chip series. (Power Events are only supported on XMC4500) - * \see USB_USBD_EVENT - */ -void USBD_SignalDeviceEventHandler(XMC_USBD_EVENT_t event) { - int i; - switch (event) { - case XMC_USBD_EVENT_RESET: - USB_DeviceState = DEVICE_STATE_Default; - device.EP0_State = IDLE; - device.RemoteWakeUp = 0; - /* Reset endpoints and configuration */ - for (i=0;i<(uint8_t)XMC_USBD_NUM_EPS; i++) { - device.Endpoints[i].InInUse = 0; - device.Endpoints[i].OutInUse = 0; - device.Endpoints[i].IsHalted = 0; - if (i!=0 && device.Endpoints[i].IsConfigured) { - device.Driver->EndpointUnconfigure(device.Endpoints[i].Address); - device.Endpoints[i].IsConfigured = 0; - device.Endpoints[i].IsEnabled = 0; - } - } - device.Configuration = 0; - for (i=0;iEndpointReadStart(device.Endpoints[0].Address,24); - break; - case XMC_USBD_EVENT_SOF: - EVENT_USB_Device_StartOfFrame(); - break; - case XMC_USBD_EVENT_CONNECT: - EVENT_USB_Device_Connect(); - break; - case XMC_USBD_EVENT_DISCONNECT: - USB_DeviceState = DEVICE_STATE_Powered; - EVENT_USB_Device_Disconnect(); - break; - case XMC_USBD_EVENT_POWER_OFF: - USB_DeviceState = DEVICE_STATE_Unattached; - device.Driver->EndpointUnconfigure(0); - break; - case XMC_USBD_EVENT_POWER_ON: - USB_DeviceState = DEVICE_STATE_Powered; - memset(&device,0x0,sizeof(USB_Device_t)); - device.Driver = &Driver_USBD0; - device.EP0_State = IDLE; - device.Endpoints[0].InBuffer = endpoint0_in_buffer; - device.Endpoints[0].InBufferLength = 256; - device.Endpoints[0].OutBuffer = endpoint0_out_buffer; - device.Endpoints[0].OutBufferLength = 256; - device.Endpoints[0].Direction = 0; - device.Endpoints[0].IsConfigured = 1; - device.Endpoints[0].IsEnabled = 1; - device.Endpoints[0].MaxPacketSize = 64; - - /* then configure endpoint 0 */ - device.Driver->EndpointConfigure(0,XMC_USBD_ENDPOINT_TYPE_CONTROL, - (uint8_t)XMC_USBD_MAX_PACKET_SIZE); - - break; - case XMC_USBD_EVENT_REMOTE_WAKEUP: - break; - case XMC_USBD_EVENT_RESUME: - USB_DeviceState = device.PreSuspendDeviceState; - EVENT_USB_Device_WakeUp(); - break; - case XMC_USBD_EVENT_SUSPEND: - device.PreSuspendDeviceState = USB_DeviceState; - USB_DeviceState = DEVICE_STATE_Suspended; - EVENT_USB_Device_Suspend(); - break; - default: - return; - } -} - -/** - * \brief Endpoint event handler for the XMC driver - * - * If the driver detects an event (See \ref USB_USBD_EP_EVENT) for a specified endpoint it - * calls this function. Based on the event some further action is taken, e.g. process control - * request or update transfer information and read data from the driver into the core buffer. - * - * \param[in] ep_addr Endpoint address - * \param[in] ep_event Endpoint event type - * - */ -void USBD_SignalEndpointEvent_Handler (uint8_t ep_addr, XMC_USBD_EP_EVENT_t ep_event) { - USBD_Endpoint_t *ep = &device.Endpoints[ep_addr & ENDPOINT_EPNUM_MASK]; - uint8_t temp_num,temp_dir; - int32_t data_count; - /* store CurrentEndpoint and direction for restore after handling */ - temp_num = device.CurrentEndpoint; - temp_dir = device.CurrentDirection; - /* select the given endpoint */ - device.CurrentEndpoint = ep_addr & ENDPOINT_EPNUM_MASK; - device.CurrentDirection = ep_addr & ENDPOINT_DIR_MASK; - /* choose what to do based on the event */ - switch (ep_event) { - case XMC_USBD_EP_EVENT_SETUP: - ep->OutInUse = 0; - switch(device.CurrentEndpoint) { - case 0: - USBD_HandleEP0_SETUP(); - break; - default: - break; - } - break; - case XMC_USBD_EP_EVENT_OUT: - ep->IsOutRecieved = 1; - if (ep->OutBytesAvailable == 0) { - ep->OutOffset = 0; /* clear offset, new data is there */ - ep->OutBytesAvailable = device.Driver->EndpointRead(ep->Address,ep->OutBuffer,ep->OutBufferLength); - } - ep->OutInUse = 0; - switch(device.CurrentEndpoint) { - case 0: - USBD_HandleEP0_OUT(); - break; - default: - break; - } - break; - case XMC_USBD_EP_EVENT_IN: - /* loop write transfers */ - if (ep->InDataLeft> 0) { - data_count = device.Driver->EndpointWrite(ep->Address,ep->InDataBuffer,ep->InDataLeft); - ep->InDataLeft -= data_count; - ep->InDataBuffer+= data_count; - return; - } else if (ep->Number == 0 && ep->InBytesAvailable > 0 && ep->InBytesAvailable!=USB_ControlRequest.wLength && ep->InBytesAvailable % ep->MaxPacketSize == 0) { - /* if the amount of data for endpoint 0 is exact the requested amount, then no zlp has to be send */ - device.Driver->EndpointWrite(ep->Address,0,0); - } - ep->InBytesAvailable = 0; - ep->InInUse = 0; - switch(device.CurrentEndpoint) { - case 0: - USBD_HandleEP0_IN(); - break; - default: - break; - } - break; - } - device.CurrentEndpoint = temp_num; - device.CurrentDirection = temp_dir; -} - -/** - * \brief Initialize driver core and driver - * - * Intializes the USB driver core data structures and sets it into default state. Afterwards - * it initializes the USB device controller driver and prepare it for connection via \ref USBD_Connect. - */ -int USBD_Initialize(XMC_USBD_t *usb_init) { - int32_t status = 0; - memset(&device,0x0,sizeof(USB_Device_t)); - USB_DeviceState = DEVICE_STATE_Unattached; - device.Driver = &Driver_USBD0; - device.EP0_State = IDLE; - device.Endpoints[0].InBuffer = endpoint0_in_buffer; - device.Endpoints[0].InBufferLength = 256; - device.Endpoints[0].OutBuffer = endpoint0_out_buffer; - device.Endpoints[0].OutBufferLength = 256; - device.Endpoints[0].Direction = 0; - device.Endpoints[0].IsConfigured = 1; - device.Endpoints[0].IsEnabled = 1; - device.Endpoints[0].MaxPacketSize = 64; - - /* First initalize the device */ - status = device.Driver->Initialize(usb_init); - if (status != XMC_USBD_STATUS_OK) - return -1; - - /* then configure endpoint 0 */ - device.Driver->EndpointConfigure(0,XMC_USBD_ENDPOINT_TYPE_CONTROL, - (uint8_t)XMC_USBD_MAX_PACKET_SIZE); - if (status != XMC_USBD_STATUS_OK) { - device.Driver->Uninitialize(); - return -1; - } - - return 0; -} - -/** - * \brief Is the enumeration finished? - * - * Tell the USB device controller driver if the enumeration interrupt have been reached - */ -int USB_IsEnumDone(void){ - if (device.Driver->IsEnumDone()) - return 1; - else - return 0; - } - - -/** - * \brief Set the buffer for an endpoint - * - * The user has to ensure the an endpoint has a valid buffer set - * in order to ensure proper work. - * - * \param[in] addr Endpoint address - * \param[in] buf Buffer pointer - * \param[in] len Buffer length - */ -void USBD_SetEndpointBuffer(uint8_t addr,uint8_t *buf,uint16_t len) { - uint8_t number = addr & ENDPOINT_EPNUM_MASK; - if (addr & ENDPOINT_DIR_MASK) { - device.Endpoints[number].InBuffer = buf; - device.Endpoints[number].InBufferLength = len; - } else { - device.Endpoints[number].OutBuffer = buf; - device.Endpoints[number].OutBufferLength = len; - } -} - -#endif -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/Core/XMC4000/USBController_XMC4000.h b/cores/usblib/Core/XMC4000/USBController_XMC4000.h deleted file mode 100644 index 90947c4b..00000000 --- a/cores/usblib/Core/XMC4000/USBController_XMC4000.h +++ /dev/null @@ -1,291 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief USB Controller definitions for the Infineon XMC4000 microcontrollers. - * \copydetails Group_USBManagement_XMC4000 - * - * \note This file should not be included directly. It is automatically included as needed by the USB driver - * dispatch header located in USB/USB.h. - */ - -/** \ingroup Group_USBManagement - * \defgroup Group_USBManagement_XMC4000 USB Interface Management (XMC4000) - * \brief USB Controller definitions for the Infineon XMC4000 microcontrollers. - * - * Functions, macros, variables, enums and types related to the setup and management of the USB interface. - * - * @{ - */ - -#ifndef __USBCONTROLLER_XMC4000_H__ -#define __USBCONTROLLER_XMC4000_H__ -#if defined(USB0) - /* Includes: */ - #include - - #include <../../Common/Common.h> - #include <../USBMode.h> - #include <../Events.h> - #include <../USBTask.h> - #include <../USBInterrupt.h> - - /* Enable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - extern "C" { - #endif - - /* Preprocessor Checks and Defines: */ - #if !defined(__INCLUDE_FROM_USB_DRIVER) - #error Do not include this file directly. Include USB/USB.h instead. - #endif - - /* Public Interface - May be used in end-application: */ - /* Macros: */ - #define NO_COPY_DRIVER 0 - - #define NUM_INTERFACES 1 - - /* Macros: */ - #if (!defined(MAX_ENDPOINT_INDEX) && !defined(CONTROL_ONLY_DEVICE)) || defined(__DOXYGEN__) - /** Total number of endpoints (including the default control endpoint at address 0) which may - * be used in the device. - */ - #define ENDPOINT_TOTAL_ENDPOINTS 7 - #else - #if defined(CONTROL_ONLY_DEVICE) - #define ENDPOINT_TOTAL_ENDPOINTS 1 - #else - #define ENDPOINT_TOTAL_ENDPOINTS (MAX_ENDPOINT_INDEX + 1) - #endif - #endif - - /** - * \brief State machine of Endpoint 0 - */ - typedef enum EP0_State - { - DISCONNECT, /**< Device is disconnected */ - IDLE, /**< Endpoint 0 is in IDLE state */ - IN_DATA, /**< Endpoint 0 is sending data */ - IN_STATUS, /**< Endpoint 0 sends a acknowledge to the host */ - OUT_DATA, /**< Endpoint 0 is reading data from the host */ - OUT_STATUS /**< Endpoint 0 waits for an acknowledge from the host */ - } EP0_State_t; - - /* Anonymous structure/union guard start */ - #if defined (__CC_ARM) - #pragma push - #pragma anon_unions - #elif defined (__TASKING__) - #pragma warning 586 - #endif - - /** - * \brief USBD Endpoint - * - * Type define for a USBD Enpoint. This structure represents an endpoint. It contains all necessary data to: - * - control the state of the endpoint - * - manage the data buffer - * - */ - typedef struct USBD_Endpoint - { - /** - * \name Endpoint Parameters - */ - /*@{*/ - union { - uint32_t Address:8; /**< Full device address (including direction) */ - struct { - uint32_t Number:4; /**< Endpoint number */ - uint32_t :3; - uint32_t Direction:1; /**< Endpoint direction */ - }; - - }; - - /* Endpoint flags */ - uint32_t IsConfigured:1; /**< Flag showing that the endpoint is configured */ - uint32_t IsEnabled:1; /**< Flag showing that the endpoint is enabled */ - uint32_t IsHalted:1; /**< Flag showing that the endpoint is halted */ - volatile uint32_t OutInUse:1; /**< Flag showing that the endpoint is in use as out */ - volatile uint32_t InInUse:1; /**< Flag showing that the endpoint is in use as in */ - volatile uint32_t IsOutRecieved:1; /**< Flag showing that an out packet has been received for that endpoint */ - uint32_t MaxPacketSize:7; /**< Maximum packet size for the endpoint */ - /*@}*/ - - /** - * \name Out endpoint buffer management - */ - /*@{*/ - uint32_t OutBytesAvailable; /**< Amount of data in the out buffer */ - uint32_t OutOffset; /**< Amount of data that have been read from the buffer */ - uint8_t *OutBuffer; /**< Address of the out buffer */ - uint32_t OutBufferLength; /**< Length of the out buffer */ - /*@}*/ - - /** - * \name In endpoint buffer management - */ - /*@{*/ - uint32_t InBytesAvailable; /**< Amount of data written into the buffer */ - uint8_t *InBuffer; /**< Address of in Buffer */ - uint32_t InBufferLength; /**< Length of the in buffer */ - uint32_t InDataLeft; /**< Data left in the in buffer to send */ - uint8_t* InDataBuffer; /**< Current start address of the in buffer */ - /*@}*/ - } USBD_Endpoint_t; - - /** \brief USBD Device - * - * Type define for an USB Device. This structure contains the all data of the device for the USB Device Core Driver. - * Especially the data of the endpoints are stored inside. - */ - typedef struct USBD_Device - { - XMC_USBD_DRIVER_t *Driver; /**< USB device controller driver structure */ - USBD_Endpoint_t Endpoints[ENDPOINT_TOTAL_ENDPOINTS]; /**< Endpoint structures describing each endpoint of the device */ - - uint8_t InterfaceSettings[NUM_INTERFACES]; /**< Array of the currently selected AlternativeSetting of an interface */ - uint8_t Configuration; /**< Current USB device configuration */ - uint8_t PreSuspendDeviceState; /**< Device State bevor suspend is recieved to restore the old state, when resume is received */ - EP0_State_t EP0_State; /**< Endpoint 0 state */ - uint8_t CurrentEndpoint; /**< Endpoint selected for the LUFA stack */ - uint8_t CurrentDirection; /**< Direction selected for the LUFA stack */ - uint8_t IsConfigured:1; /**< Flag showing if the device was successfully configured */ - volatile uint8_t IsSetupRecieved:1; /**< Flag showing if a setup packet is received */ - uint8_t RemoteWakeUp:1; /**< Flag for feature Remote WakeUP signaling */ - uint8_t SelfPowered:1; /**< Flag for feature Self Powered */ - } USB_Device_t; - - /* Anonymous structure/union guard end */ - #if defined (__CC_ARM) - #pragma pop - #elif defined (__TASKING__) - #pragma warning restore - #endif - - /* Global Variables: */ - extern USB_Device_t device; - - /* Inline Functions: */ - /** Detaches the device from the USB bus. This has the effect of removing the device from any - * attached host, ceasing USB communications. If no host is present, this prevents any host from - * enumerating the device once attached until \ref USB_Attach() is called. - */ - static inline void USB_Detach(void) ATTR_ALWAYS_INLINE; - static inline void USB_Detach(void) - { - device.Driver->DeviceDisconnect(); - } - - /** Attaches the device to the USB bus. This announces the device's presence to any attached - * USB host, starting the enumeration process. If no host is present, attaching the device - * will allow for enumeration once a host is connected to the device. - * - * This is inexplicably also required for proper operation while in host mode, to enable the - * attachment of a device to the host. This is despite the bit being located in the device-mode - * register and despite the datasheet making no mention of its requirement in host mode. - */ - static inline void USB_Attach(void) ATTR_ALWAYS_INLINE; - static inline void USB_Attach(void) - { - device.Driver->DeviceConnect(); - } - - /* Function Prototypes: */ - /** - * \brief Initialize the USB device core driver - * - * In preparation for using the USB device this function initializes the device core driver and the device controller driver. - * It executes all necessary tasks to start working as USB device and handle request from the host. - * - * \note To start working you need to call \ref USBD_Connect to connect to the host. - */ - int USBD_Initialize(XMC_USBD_t *usb_init); - - - /* Private Interface - For use in library only: */ - #if !defined(__DOXYGEN__) - /** - * \brief Device Event Handler for the device controller driver - * - * Handles device events send by the device controller driver. See \ref USBD_SignalDeviceEvent - */ - void USBD_SignalDeviceEventHandler(XMC_USBD_EVENT_t event); - - /** - * \brief Endpoint Event Handler for the device controller driver - * - * Handles endpoint events send by the device controller driver. See \ref USBD_SignalEndpointEvent_Handler - */ - void USBD_SignalEndpointEvent_Handler (uint8_t ep_addr, XMC_USBD_EP_EVENT_t ep_event); - - /** - * \brief Is the enumeration done? - * - * Returns 1 if the enumeration is done. - */ - int USB_IsEnumDone(void); - - /** \brief Configure an USBD Endpoint - * - * Convenience function to configure an endpoint. It sets the address, the transfer buffer and its size - * and the maximum packet size. - * \param[in] Address Endpoint address - * \param[in] Buffer Endpoint buffer - * \param[in] Length Buffer size - */ - void USBD_SetEndpointBuffer(uint8_t Address,uint8_t *Buffer,uint16_t Length); - - #endif - - /* Includes: */ - #if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__) - #include <../Device.h> - #include <../EndPoint.h> - #include <../DeviceStandardReq.h> - #include <../EndpointStream.h> - #endif - - /* Disable C linkage for C++ Compilers: */ - #if defined(__cplusplus) - } - #endif -#endif -#endif - -/** @} */ - - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/usblib/usblib.h b/cores/usblib/usblib.h deleted file mode 100644 index 11d2fb15..00000000 --- a/cores/usblib/usblib.h +++ /dev/null @@ -1,419 +0,0 @@ -#ifdef XMC4_SERIES - -/* - LUFA Library - Copyright (C) Dean Camera, 2014. - - dean [at] fourwalledcubicle [dot] com - www.lufa-lib.org -*/ - -/* - Copyright 2014 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaims all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * \brief Master include file for the library USB functionality. - * - * Master include file for the library USB functionality. - * - * This file should be included in all user projects making use of the USB portions of the library, instead of - * the individual USB driver submodule headers. - */ - -/** \defgroup Group_USB USB Core - LUFA/Drivers/USB/USB.h - * - * \brief Core driver for the microcontroller hardware USB module - * - * \section Sec_USB_Dependencies Module Source Dependencies - * The following files must be built with any user project that uses this module: - * - LUFA/Drivers/USB/Core/ConfigDescriptors.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/DeviceStandardReq.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/Events.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/HostStandardReq.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/USBTask.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/ARCH/Device_ARCH.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/ARCH/Endpoint_ARCH.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/ARCH/EndpointStream_ARCH.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/ARCH/Host_ARCH.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/ARCH/Pipe_ARCH.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/ARCH/PipeStream_ARCH.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/ARCH/USBController_ARCH.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Core/ARCH/USBInterrupt_ARCH.c (Makefile source module name: LUFA_SRC_USB) - * - LUFA/Drivers/USB/Class/Common/HIDParser.c (Makefile source module name: LUFA_SRC_USB) - * - * \section Sec_USB_ModDescription Module Description - * Driver and framework for the USB controller of the selected architecture and microcontroller model. This module - * consists of many submodules, and is designed to provide an easy way to configure and control USB host, device - * or OTG mode USB applications. - * - * The USB stack requires the sole control over the USB controller in the microcontroller only; i.e. it does not - * require any additional timers or other peripherals to operate. This ensures that the USB stack requires as few - * resources as possible. - * - * The USB stack can be used in Device Mode for connections to USB Hosts (see \ref Group_Device), in Host mode for - * hosting of other USB devices (see \ref Group_Host), or as a dual role device which can either act as a USB host - * or device depending on what peripheral is connected (see \ref Group_OTG). Both modes also require a common set - * of USB management functions found \ref Group_USBManagement. - */ - -/** \defgroup Group_USBClassDrivers USB Class Drivers - * - * \brief Drivers for the various standardized USB device classes - * - * Drivers for both host and device mode of the standard USB classes, for rapid application development. - * Class drivers give a framework which sits on top of the low level library API, allowing for standard - * USB classes to be implemented in a project with minimal user code. These drivers can be used in - * conjunction with the library low level APIs to implement interfaces both via the class drivers and via - * the standard library APIs. - * - * Multiple device mode class drivers can be used within a project, including multiple instances of the - * same class driver. In this way, USB Hosts and Devices can be made quickly using the internal class drivers - * so that more time and effort can be put into the end application instead of the USB protocol. - * - * The available class drivers and their modes are listed below. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
USB ClassDevice ModeHost Mode
Android Open AccessoryNoYes
Audio 1.0YesYes
CDC-ACMYesYes
HIDYesYes
MIDIYesYes
Mass StorageYesYes
PrinterYesYes
RNDISYesYes
Still ImageNoYes
- * - * - * \section Sec_USB_UsingClassDrivers Using the Class Drivers - * To make the Class drivers easy to integrate into a user application, they all implement a standardized - * design with similarly named/used function, enums, defines and types. The two different modes are implemented - * slightly differently, and thus will be explained separately. For information on a specific class driver, read - * the class driver's module documentation. - * - * \subsection Sec_USB_ClassDriverDevice Device Mode Class Drivers - * Implementing a Device Mode Class Driver in a user application requires a number of steps to be followed. Firstly, - * the module configuration and state structure must be added to the project source. These structures are named in a - * similar manner between classes, that of USB_ClassInfo_{Class Name}_Device_t, and are used to hold the - * complete state and configuration for each class instance. Multiple class instances is where the power of the class - * drivers lie; multiple interfaces of the same class simply require more instances of the Class Driver's \c USB_ClassInfo_* - * structure. - * - * Inside the ClassInfo structure lies two sections, a \c Config section, and a \c State section. The \c Config - * section contains the instance's configuration parameters, and must have all fields set by the user application - * before the class driver is used. Each Device mode Class driver typically contains a set of configuration parameters - * for the endpoint size/number of the associated logical USB interface, plus any class-specific configuration parameters. - * - * The following is an example of a properly initialized instance of the Audio Class Driver structure: - * - * \code - * USB_ClassInfo_Audio_Device_t My_Audio_Interface = - * { - * .Config = - * { - * .StreamingInterfaceNumber = 1, - * .DataINEndpoint = - * { - * .Address = (ENDPOINT_DIR_IN | 1), - * .Size = 64, - * .Banks = 1, - * }, - * }, - * }; - * \endcode - * - * \note The class driver's configuration parameters should match those used in the device's descriptors that are - * sent to the host. - * - * To initialize the Class driver instance, the driver's {Class Name}_Device_ConfigureEndpoints() function - * should be called in response to the \ref EVENT_USB_Device_ConfigurationChanged() event. This function will return a - * boolean true value if the driver successfully initialized the instance. Like all the class driver functions, this function - * takes in the address of the specific instance you wish to initialize - in this manner, multiple separate instances of - * the same class type can be initialized like this: - * - * \code - * void EVENT_USB_Device_ConfigurationChanged(void) - * { - * LEDs_SetAllLEDs(LEDMASK_USB_READY); - * - * if (!(Audio_Device_ConfigureEndpoints(&My_Audio_Interface))) - * LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - * } - * \endcode - * - * Once initialized, it is important to maintain the class driver's state by repeatedly calling the Class Driver's - * {Class Name}_Device_USBTask() function in the main program loop. The exact implementation of this - * function varies between class drivers, and can be used for any internal class driver purpose to maintain each - * instance. Again, this function uses the address of the instance to operate on, and thus needs to be called for each - * separate instance, just like the main USB maintenance routine \ref USB_USBTask(): - * - * \code - * int main(void) - * { - * SetupHardware(); - * - * LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - * - * for (;;) - * { - * if (USB_DeviceState != DEVICE_STATE_Configured) - * Create_And_Process_Samples(); - * - * Audio_Device_USBTask(&My_Audio_Interface); - * USB_USBTask(); - * } - * } - * \endcode - * - * The final standardized Device Class Driver function is the Control Request handler function - * {Class Name}_Device_ProcessControlRequest(), which should be called when the - * \ref EVENT_USB_Device_ControlRequest() event fires. This function should also be called for - * each class driver instance, using the address of the instance to operate on as the function's - * parameter. The request handler will abort if it is determined that the current request is not - * targeted at the given class driver instance, thus these methods can safely be called - * one-after-another in the event handler with no form of error checking: - * - * \code - * void EVENT_USB_Device_ControlRequest(void) - * { - * Audio_Device_ProcessControlRequest(&My_Audio_Interface); - * } - * \endcode - * - * Each class driver may also define a set of callback functions (which are prefixed by \c CALLBACK_* - * in the function's name) which must also be added to the user application - refer to each - * individual class driver's documentation for mandatory callbacks. In addition, each class driver may - * also define a set of events (identifiable by their prefix of \c EVENT_* in the function's name), which - * the user application may choose to implement, or ignore if not needed. - * - * The individual Device Mode Class Driver documentation contains more information on the non-standardized, - * class-specific functions which the user application can then use on the driver instances, such as data - * read and write routines. See each driver's individual documentation for more information on the - * class-specific functions. - * - * \subsection Sec_USB_ClassDriverHost Host Mode Class Drivers - * Implementing a Host Mode Class Driver in a user application requires a number of steps to be followed. Firstly, - * the module configuration and state structure must be added to the project source. These structures are named in a - * similar manner between classes, that of USB_ClassInfo_{Class Name}_Host_t, and are used to hold the - * complete state and configuration for each class instance. Multiple class instances is where the power of the class - * drivers lie; multiple interfaces of the same class simply require more instances of the Class Driver's \c USB_ClassInfo_* - * structure. - * - * Inside the \c USB_ClassInfo_* structure lies two sections, a \c Config section, and a \c State section. The \c Config - * section contains the instance's configuration parameters, and must have all fields set by the user application - * before the class driver is used. Each Device mode Class driver typically contains a set of configuration parameters - * for the endpoint size/number of the associated logical USB interface, plus any class-specific configuration parameters. - * - * The following is an example of a properly initialized instance of the MIDI Host Class Driver structure: - * - * \code - * USB_ClassInfo_MIDI_Host_t My_MIDI_Interface = - * { - * .Config = - * { - * .DataINPipe = - * { - * .Address = (PIPE_DIR_IN | 1), - * .Size = 64, - * .Banks = 1, - * }, - * .DataOUTPipe = - * { - * .Address = (PIPE_DIR_OUT | 2), - * .Size = 64, - * .Banks = 1, - * }, - * }, - * }; - * \endcode - * - * To initialize the Class driver instance, the driver's {Class Name}_Host_ConfigurePipes() function - * should be called in response to the \c EVENT_USB_Host_DeviceEnumerationComplete() event firing. This function will - * will return an error code from the class driver's {Class Name}_EnumerationFailure_ErrorCodes_t enum - * to indicate if the driver successfully initialized the instance and bound it to an interface in the attached device. - * Like all the class driver functions, this function takes in the address of the specific instance you wish to initialize - - * in this manner, multiple separate instances of the same class type can be initialized. A fragment of a Class Driver - * based Host mode application may look like the following: - * - * \code - * void EVENT_USB_Host_DeviceEnumerationComplete(void) - * { - * LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); - * - * uint16_t ConfigDescriptorSize; - * uint8_t ConfigDescriptorData[512]; - * - * if (USB_Host_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData, - * sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful) - * { - * LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - * return; - * } - * - * if (MIDI_Host_ConfigurePipes(&Keyboard_MIDI_Interface, - * ConfigDescriptorSize, ConfigDescriptorData) != MIDI_ENUMERROR_NoError) - * { - * LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - * return; - * } - * - * if (USB_Host_SetDeviceConfiguration(1) != HOST_SENDCONTROL_Successful) - * { - * LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - * return; - * } - * - * LEDs_SetAllLEDs(LEDMASK_USB_READY); - * } - * \endcode - * - * Note that the function also requires the device's configuration descriptor so that it can determine which interface - * in the device to bind to - this can be retrieved as shown in the above fragment using the - * \ref USB_Host_GetDeviceConfigDescriptor() function. If the device does not implement the interface the class driver - * is looking for, if all the matching interfaces are already bound to class driver instances or if an error occurs while - * binding to a device interface (for example, a device endpoint bank larger that the maximum supported bank size is used) - * the configuration will fail. - * - * To complete the device enumeration after binding the host mode Class Drivers to the attached device, a call to - * \c USB_Host_SetDeviceConfiguration() must be made. If the device configuration is not set within the - * \c EVENT_USB_Host_DeviceEnumerationComplete() event, the host still will assume the device enumeration has failed. - * - * Once initialized, it is important to maintain the class driver's state by repeatedly calling the Class Driver's - * {Class Name}_Host_USBTask() function in the main program loop. The exact implementation of this - * function varies between class drivers, and can be used for any internal class driver purpose to maintain each - * instance. Again, this function uses the address of the instance to operate on, and thus needs to be called for each - * separate instance, just like the main USB maintenance routine \ref USB_USBTask(): - * - * \code - * int main(void) - * { - * SetupHardware(); - * - * LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - * - * for (;;) - * { - * if (USB_HostState != HOST_STATE_Configured) - * Create_And_Process_Samples(); - * - * MIDI_Host_USBTask(&My_Audio_Interface); - * USB_USBTask(); - * } - * } - * \endcode - * - * Each class driver may also define a set of callback functions (which are prefixed by \c CALLBACK_* - * in the function's name) which must also be added to the user application - refer to each - * individual class driver's documentation for mandatory callbacks. In addition, each class driver may - * also define a set of events (identifiable by their prefix of \c EVENT_* in the function's name), which - * the user application may choose to implement, or ignore if not needed. - * - * The individual Host Mode Class Driver documentation contains more information on the non-standardized, - * class-specific functions which the user application can then use on the driver instances, such as data - * read and write routines. See each driver's individual documentation for more information on the - * class-specific functions. - */ - -#ifndef __USB_H__ -#define __USB_H__ -#if defined(USB0) - /* Macros: */ - #define __INCLUDE_FROM_USB_DRIVER - - /* Includes: */ - #include - #include - - /* Includes: */ - #include - #include - #include - #include - #include - - #if defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__) - #include - #include - #include - #include - #endif - - #if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__) - #include - #include - #include - #include - #endif - - #if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__) - #include - #endif - - #include - #include - #include - -#endif -#endif - -#endif /* UC_FAMILY == XMC4 */ diff --git a/cores/wiring_analog.c b/cores/wiring_analog.c deleted file mode 100644 index a362c3ff..00000000 --- a/cores/wiring_analog.c +++ /dev/null @@ -1,473 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ -/* Paul Carpenter March-2019 - Several fixes to remove redundant code - Fix prescaler bug for CCU8 in analogWriteFrequency - analogWrite - Improvements, extra safety and more documentation - analogRead - Change return to 0xFFFFFFFF (an invalid value) for invalid channel - wiring_analog_init - Add dummy reading so background scanning starts on ALL - possible channels meaning first user reading will be valid -*/ -/* Paul Carpenter September-2019 - Add definition ADC_MIN_RESOLUTION for error checking parameters - Add maximum resolution values for helper functions - On errors where possible nothing changed or read - Add helper functions for Read and Write resolution settings for other modules - especially using PWM on analogWrite to scale parameters correctly - getAnaolgReadBits, getAnaolgWriteBits, getAnaolgReadMaximum, getAnaolgWriteMaximum - Add more return values for error trapping - - analogWrite - Change error values for invalid and separate invalid frequency -*/ -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" -#include - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define ADC_CONVERSION_GROUP 0 -#define ADC_MIN_RESOLUTION 8 -#define ADC_MAX_READ_RESOLUTION 12 -#define ANALOG_MAX_WRITE_RESOLUTION 16 - -//**************************************************************************** -// @Global Variables -//**************************************************************************** -static uint8_t _readResolution = 10; -static uint8_t _writeResolution = 8; -uint16_t _readMaximum = 1023; -uint16_t _writeMaximum = 255; - -void wiring_analog_init(void) { - /* Initialization data of VADC Global resources */ - XMC_VADC_GLOBAL_CONFIG_t vadc_global_config; - memset(&vadc_global_config, 0, sizeof(XMC_VADC_GLOBAL_CONFIG_t)); - vadc_global_config.class0.conversion_mode_standard = XMC_VADC_CONVMODE_12BIT; - vadc_global_config.class1.conversion_mode_standard = XMC_VADC_CONVMODE_12BIT; - - XMC_VADC_BACKGROUND_CONFIG_t vadc_background_config = {0}; - - /* Provide clock to VADC and initialize the VADC global registers. */ - XMC_VADC_GLOBAL_Init(VADC, &vadc_global_config); - -#if (XMC_VADC_GROUP_AVAILABLE == 1U) - // ADC grouping - XMC_VADC_GROUP_CONFIG_t vadc_group_config; - memset(&vadc_group_config, 0, sizeof(XMC_VADC_GROUP_CONFIG_t)); - vadc_group_config.class0.conversion_mode_standard = XMC_VADC_CONVMODE_12BIT; - vadc_group_config.class1.conversion_mode_standard = XMC_VADC_CONVMODE_12BIT; - - /* Initialize Group */ - XMC_VADC_GROUP_Init(VADC_G0, &vadc_group_config); - XMC_VADC_GROUP_Init(VADC_G1, &vadc_group_config); - - /* Switch on the converter of the Group*/ - XMC_VADC_GROUP_SetPowerMode(VADC_G0, XMC_VADC_GROUP_POWERMODE_NORMAL); - XMC_VADC_GROUP_SetPowerMode(VADC_G1, XMC_VADC_GROUP_POWERMODE_NORMAL); - - #if (XMC_VADC_MAXIMUM_NUM_GROUPS > 2) - /* Initialize Group */ - XMC_VADC_GROUP_Init(VADC_G2, &vadc_group_config); - XMC_VADC_GROUP_Init(VADC_G3, &vadc_group_config); - - /* Switch on the converter of the Group*/ - XMC_VADC_GROUP_SetPowerMode(VADC_G2, XMC_VADC_GROUP_POWERMODE_NORMAL); - XMC_VADC_GROUP_SetPowerMode(VADC_G3, XMC_VADC_GROUP_POWERMODE_NORMAL); - #endif - -#endif - /* Calibrate the VADC. Make sure you do this after all used VADC groups - are set to normal operation mode. */ - XMC_VADC_GLOBAL_StartupCalibration(VADC); - - /* Initialize the background source hardware. The gating mode is set to - ignore to pass external triggers unconditionally.*/ - XMC_VADC_GLOBAL_BackgroundInit(VADC, &vadc_background_config); - - /* PC Mar-2019 - Dummy read of ALL analogue inputs to ensure ALL analogue channels are - started in background scanning mode, otherwise first readings at least - will always be zero on reading an analogue input. */ - for (uint8_t chan = 0; chan < NUM_ANALOG_INPUTS; chan++) - analogRead(chan); - - // Additional Initialization of DAC starting here -} - -/* Set the resolution of analogRead return values in number of bits. - Default is 10 bits (range from 0 to 1023) - Maximum is 12 bits (range from 0 to 4095) - -PC Sept-2019 Change flow to trap invalid input first and leave at old setting if - Invalid and return valid value or 255 for error, else return setting used - - Add set maximum value for resolution -*/ -uint8_t analogReadResolution(uint8_t res) { - if (res > ADC_MAX_READ_RESOLUTION || res < ADC_MIN_RESOLUTION) - return 255; - - _readResolution = res; - _readMaximum = (uint16_t)(((uint32_t)1U << res) - 1); - return res; -} - -/* Set the resolution of analogWrite parameters in number of bits. - - Default (minimum) is 8 bits (range from 0 to 255). - Maximum is 16 bits (range 0 to 65535) - -PC Sept-2019 Change flow to trap invalid input first and leave at old setting if - Invalid and return valid value or 255 for error, else return setting used - - Add set maximum value for resolution - */ -uint8_t analogWriteResolution(uint8_t res) { - if (res > ANALOG_MAX_WRITE_RESOLUTION || res < ADC_MIN_RESOLUTION) - return 255; - - _writeResolution = res; - _writeMaximum = (uint16_t)(((uint32_t)1U << res) - 1); - return res; -} - -// This appears to be a dummy function and variable not used elsewhere -uint8_t analog_reference = DEFAULT; - -void analogReference(uint8_t ulMode) { analog_reference = ulMode; } - -/* analogRead takes parameter of ADC channel number - return 0xFFFFFFFF for invalid channel */ -uint32_t analogRead(uint8_t channel) { - uint32_t value; - - value = 0xFFFFFFFF; - if (channel < NUM_ANALOG_INPUTS) { - XMC_ADC_t *adc = &mapping_adc[channel]; - -#if (XMC_VADC_GROUP_AVAILABLE == 1U) - // ADC grouping - if (!(adc->enabled)) { - XMC_VADC_CHANNEL_CONFIG_t vadc_gobal_channel_config; - memset(&vadc_gobal_channel_config, 0, sizeof(XMC_VADC_CHANNEL_CONFIG_t)); - vadc_gobal_channel_config.input_class = XMC_VADC_CHANNEL_CONV_GROUP_CLASS1; - vadc_gobal_channel_config.result_reg_number = adc->result_reg_num; - vadc_gobal_channel_config.alias_channel = XMC_VADC_CHANNEL_ALIAS_DISABLED; - - XMC_VADC_RESULT_CONFIG_t vadc_gobal_result_config = {.g_rcr = 0}; - /* Configure a channel belonging to the aforesaid conversion kernel */ - XMC_VADC_GROUP_ChannelInit(adc->group, adc->channel_num, &vadc_gobal_channel_config); - /* Configure a result resource belonging to the aforesaid conversion kernel */ - XMC_VADC_GROUP_ResultInit(adc->group, adc->result_reg_num, &vadc_gobal_result_config); - /* Add channel into the Background Request Source Channel Select Register */ - XMC_VADC_GLOBAL_BackgroundAddChannelToSequence(VADC, (uint32_t)adc->group_num, - (uint32_t)adc->channel_num); - } - /* Start conversion manually using load event trigger*/ - XMC_VADC_GLOBAL_BackgroundTriggerConversion(VADC); - value = XMC_VADC_GROUP_GetResult(adc->group, adc->result_reg_num); -#else - // XMC1100 no ADC grouping - if (!(adc->enabled)) - /* Add a channel to the background source. */ - VADC->BRSSEL[ADC_CONVERSION_GROUP] = (uint32_t)(1U << adc->channel_num); - // Generates conversion request - XMC_VADC_GLOBAL_BackgroundTriggerConversion(VADC); - - // Wait until conversion is ready - while (((value = XMC_VADC_GLOBAL_GetDetailedResult(VADC)) & VADC_GLOBRES_VF_Msk) == 0u) - ; -#endif - value = ((value & VADC_GLOBRES_RESULT_Msk) >> (ADC_MAX_READ_RESOLUTION - _readResolution)); - } - return value; -} - -/* analogRead_variableGain takes parameter of ADC channel number and gain value - return 0xFFFFFFFF for invalid channel - - gain value gain factor - 0 1 - 1 3 - 2 6 - 3 12 - Also, refer to macros in wiring_analog.h -*/ - -uint32_t analogRead_variableGain(uint8_t channel, uint8_t gain_value) { -#if (XMC_VADC_SHS_AVAILABLE == 1U) - uint32_t value; - - value = 0xFFFFFFFF; - if (channel < NUM_ANALOG_INPUTS) { - XMC_ADC_t *adc = &mapping_adc[channel]; - - #if (XMC_VADC_GROUP_AVAILABLE == 1U) - // ADC grouping - if (!(adc->enabled)) { - XMC_VADC_CHANNEL_CONFIG_t vadc_gobal_channel_config; - memset(&vadc_gobal_channel_config, 0, sizeof(XMC_VADC_CHANNEL_CONFIG_t)); - vadc_gobal_channel_config.input_class = XMC_VADC_CHANNEL_CONV_GROUP_CLASS1; - vadc_gobal_channel_config.result_reg_number = adc->result_reg_num; - vadc_gobal_channel_config.alias_channel = XMC_VADC_CHANNEL_ALIAS_DISABLED; - - XMC_VADC_RESULT_CONFIG_t vadc_gobal_result_config = {.g_rcr = 0}; - /* Configure a channel belonging to the aforesaid conversion kernel */ - XMC_VADC_GROUP_ChannelInit(adc->group, adc->channel_num, &vadc_gobal_channel_config); - /* Configure a result resource belonging to the aforesaid conversion kernel */ - XMC_VADC_GROUP_ResultInit(adc->group, adc->result_reg_num, &vadc_gobal_result_config); - /* Add channel into the Background Request Source Channel Select Register */ - XMC_VADC_GLOBAL_BackgroundAddChannelToSequence(VADC, (uint32_t)adc->group_num, - (uint32_t)adc->channel_num); - /* Set the gain factor of the Sample and hold module*/ - XMC_VADC_GLOBAL_SHS_SetGainFactor(SHS0, gain_value, (uint32_t)adc->group_num, - (uint32_t)adc->channel_num); - } - /* Start conversion manually using load event trigger*/ - XMC_VADC_GLOBAL_BackgroundTriggerConversion(VADC); - value = XMC_VADC_GROUP_GetResult(adc->group, adc->result_reg_num); - #else - // XMC1100 no ADC grouping - if (!(adc->enabled)) - /* Add a channel to the background source. */ - VADC->BRSSEL[ADC_CONVERSION_GROUP] = (uint32_t)(1U << adc->channel_num); - /* Set the gain factor of the Sample and hold module */ - XMC_VADC_GLOBAL_SHS_SetGainFactor(SHS0, gain_value, XMC_VADC_GROUP_INDEX_0, - (uint32_t)adc->channel_num); - // Generates conversion request - XMC_VADC_GLOBAL_BackgroundTriggerConversion(VADC); - - // Wait until conversion is ready - while (((value = XMC_VADC_GLOBAL_GetDetailedResult(VADC)) & VADC_GLOBRES_VF_Msk) == 0u) - ; - #endif - value = ((value & VADC_GLOBRES_RESULT_Msk) >> (ADC_MAX_READ_RESOLUTION - _readResolution)); - return value; - } -#endif -} - -/* Helper function for analogWrite and setAnalogWriteFrequency to scan - mapping tables to determine for a given pin which PWM4, PWM8 or DAC - channel to use - Returns valid channel index or -1 for not listed - reading first column as 255 denotes end of table - See pins_arduino.h for table layout -*/ -int16_t scan_map_table(const uint8_t table[][2], uint8_t pin) { - int16_t i; - - i = 0; - while (table[i][0] != 255) { - if (table[i][0] == pin) - break; - i++; - } - if (table[i][0] != 255) - return table[i][1]; - return -1; -} - -/* Writes an analogue value to a DAC or PWM wave to a pin. - DAC is straight write to DAC (if present on that pin) - - PWM depends on analogWriteResolution() - Effect of value is the duty cycle for PWM output to be HIGH - Valid values are - Write resolution (bits) - Value 8 10 12 16 - OFF 0 0 0 0 - ON always 255 1023 4095 65535 - - Values in between these values vary the duty cycle - - Returns 0 = success - -1 = invalid value - -2 = wrong pin -*/ -int16_t analogWrite(uint8_t pin, uint16_t value) { - uint32_t compare_reg = 0; - int16_t resource; - - if (value > _writeMaximum) - return -1; - - if ((resource = scan_map_table(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *pwm4 = &mapping_pwm4[resource]; - - if (!(pwm4->enabled)) { - // Slice not yet initialized - XMC_CCU4_SLICE_COMPARE_CONFIG_t pwm_config; - memset(&pwm_config, 0, sizeof(XMC_CCU4_SLICE_COMPARE_CONFIG_t)); - pwm_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.prescaler_initval = pwm4->prescaler; - - XMC_CCU4_Init(pwm4->ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU4_SLICE_CompareInit(pwm4->slice, &pwm_config); - XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); - XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, pwm4->period_timer_val); - - pwm4->enabled = ENABLED; - } - - if (value != 0) - compare_reg = ((value + 1) * (pwm4->period_timer_val + 1)) >> _writeResolution; - - XMC_CCU4_SLICE_SetTimerCompareMatch(pwm4->slice, compare_reg); - XMC_CCU4_EnableShadowTransfer(pwm4->ccu, (CCU4_GCSS_S0SE_Msk << (4 * pwm4->slice_num))); - XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, - (XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); - XMC_CCU4_SLICE_StartTimer(pwm4->slice); - } -#if defined(CCU8V2) || defined(CCU8V1) - else if ((resource = scan_map_table(mapping_pin_PWM8, pin)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[resource]; - - if (!(pwm8->enabled)) { - // Slice not yet initialized - XMC_CCU8_SLICE_COMPARE_CONFIG_t pwm_config; - memset(&pwm_config, 0, sizeof(XMC_CCU8_SLICE_COMPARE_CONFIG_t)); - pwm_config.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.prescaler_initval = pwm8->prescaler; - - XMC_CCU8_Init(pwm8->ccu, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU8_SLICE_CompareInit(pwm8->slice, &pwm_config); - XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); - XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, pwm8->period_timer_val); - pwm8->enabled = ENABLED; - } - - if (value != 0) - compare_reg = ((value + 1) * (pwm8->period_timer_val + 1)) >> _writeResolution; - - XMC_CCU8_SLICE_SetTimerCompareMatch(pwm8->slice, pwm8->slice_channel, compare_reg); - XMC_CCU8_EnableShadowTransfer(pwm8->ccu, CCU8_GCSS_S0SE_Msk << (4 * pwm8->slice_num)); - XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, - XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode); - XMC_CCU8_SLICE_StartTimer(pwm8->slice); - } -#endif -#ifdef DAC - else if ((resource = scan_map_table(mapping_pin_DAC, pin)) >= 0) { - XMC_ARD_DAC_t *dac = &(mapping_dac[resource]); - XMC_DAC_Enable(dac->group); - XMC_DAC_CH_EnableOutput(dac->group, dac->channel); - XMC_DAC_CH_StartSingleValueMode(dac->group, dac->channel); - uint16_t dacValue = - map(value, 0, (0b10 << _writeResolution) - 1, 0, (0b10 << dac->resolution) - 1); - XMC_DAC_CH_Write(dac->group, dac->channel, dacValue); - } -#endif - else - return -2; - return 0; -} - -/* Sets the frequency for analogWrite PWM. - - Parameters pin - frequency in Hz - - Returns -2 invalid pin - -1 invalid frequency - 0 Success -*/ -int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { - int16_t ret = -1; - uint16_t prescaler = 0U; - int16_t resource; - uint16_t period; - - if (frequency < PCLK) { - do { - if (frequency > (PCLK / ((1U << prescaler) * 65536U))) - break; - prescaler++; - } while (prescaler < 15); // Prescaler must never be > 15 - - // Calculate 16 bit timer end value - period = (PCLK / ((1U << prescaler) * frequency)) - 1; - - if ((resource = scan_map_table(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *pwm4 = &mapping_pwm4[resource]; - - pwm4->prescaler = prescaler; - pwm4->period_timer_val = period; - if (pwm4->enabled == ENABLED) { - // Disable pwm output - pwm4->enabled = DISABLED; - XMC_CCU4_SLICE_StartTimer(pwm4->slice); - } - ret = 0; - } -#if defined(CCU8V2) || defined(CCU8V1) - else if ((resource = scan_map_table(mapping_pin_PWM8, pin)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[resource]; - - pwm8->prescaler = prescaler; - pwm8->period_timer_val = period; - if (pwm8->enabled == ENABLED) { - // Disable pwm output - pwm8->enabled = DISABLED; - XMC_CCU8_SLICE_StartTimer(pwm8->slice); - } - ret = 0; - } -#endif - if (ret == -1) // Catch pin not found - ret = -2; - } - return ret; -} - -/* PC Sept-2019 - Add helper functions to get Read and Write resolution as bits or maximum value -*/ -/* Get the current resolution of analogRead in number of bits. - Return Current resolution in bits (8 to 12) - */ -uint8_t getAnalogReadBits() { return _readResolution; } - -/* Get the current resolution of analogWrite in number of bits. - Return Current resolution in bits (8 to 16) - */ -uint8_t getAnalogWriteBits() { return _writeResolution; } - -/* Get the maximum value for current resolution for analogRead. - Default is 1023 - Maximum is 4095 - */ -uint16_t getAnalogReadMaximum() { return _readMaximum; } - -/* Get the maximum value for current resolution for analogWrite. - Default is 255 - Maximum is 65535 - */ -uint16_t getAnalogWriteMaximum() { return _writeMaximum; } - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/wiring_analog.h b/cores/wiring_analog.h deleted file mode 100644 index cb1098f3..00000000 --- a/cores/wiring_analog.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ - -#ifndef _WIRING_ANALOG_ -#define _WIRING_ANALOG_ - -#ifdef __cplusplus -extern "C" { -#endif - -/********************************************************************************************************************* - * MACROS - ********************************************************************************************************************/ -// ADC gain macros -#define ADC_VAR_GAIN_FACTOR_1 0 -#define ADC_VAR_GAIN_FACTOR_3 1 -#define ADC_VAR_GAIN_FACTOR_6 2 -#define ADC_VAR_GAIN_FACTOR_12 3 - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -/* - * \brief Configures the reference voltage used for analog input (i.e. the value used as the top of - * the input range). This function is kept only for compatibility with existing AVR based API. - * - * \param ulMmode Should be set to DEFAULT. - * - */ -extern void analogReference(uint8_t ulMode); - -/* - * \brief Writes an analogue value to a DAC or PWM wave to a pin. - * DAC is straight write to DAC (if present on that pin) - * - * PWM depends on analogWriteResolution() - * Effect of value is the duty cycle for PWM output to be HIGH - * Valid values are - * Write resolution (bits) - * Value 8 10 12 16 - * OFF 0 0 0 0 - * ON always 255 1023 4095 65535 - * - * Values in between these values vary the duty cycle - * - * \param pin - * \param value must be 0 to max value for ADC WRITE resolution - * - * \return 0 = success, -1 = invalid value, -2 = wrong pin - */ -extern int16_t analogWrite(uint8_t pin, uint16_t value); - -/* - * \brief Sets the frequency for analogWrite PWM. - * - * Returns -2 invalid pin - * -1 invalid frequency - * 0 success - * - * \note Default value is 490 Hz - * - * \param pin - * \param frequency in Hz - * - * \return 0 = success, -1 = invalid frequency, -2 = wrong pin - */ -extern int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency); - -/* - * \brief Reads the value from the specified analogue channel. - * - * \param channel - * - * \return Read value from selected channel, or 0xFFFFFFFF for error. - */ -extern uint32_t analogRead(uint8_t channel); - -/* - * \brief Reads the value from the specified analogue channel and add variable gain at input. - * - * \param channel - * \param gain_factor - * - * gain value gain factor - * 0 1 - * 1 3 - * 2 6 - * 3 12 - * - * \return Read value from selected channel, or 0xFFFFFFFF for error. - */ -extern uint32_t analogRead_variableGain(uint8_t channel, uint8_t gain_value); - -/* - * \brief Set the resolution of analogRead return values in number of bits. - * \note Default is 10 bits (range from 0 to 1023). - * - * \param res - range 8 to 12 - * - * \return valid bits set (8 to 12) or 255 for error - */ -extern uint8_t analogReadResolution(uint8_t res); - -/* - * \brief Set the resolution of analogWrite parameters in number of bits. - * \note Default (minimum) is 8 bits (range from 0 to 16). - * Maximum is 16 bits (range 0 to 65535) - * - * \param res - range 8 to 16 - * - * \return valid bits set (8 to 16) or 255 for error - */ -extern uint8_t analogWriteResolution(uint8_t res); - -extern void wiring_analog_init(); - -/********************************************************* - \brief Additional helper functions for other libraries -**********************************************************/ -/* - * \brief Get the current resolution of analogRead in number of bits. - * - * \return Current resolution in bits (8 to 12) - */ -extern uint8_t getAnalogReadBits(); - -/* - * \brief Get the current resolution of analogWrite in number of bits. - * - * \return Current resolution in bits (8 to 16) - */ -extern uint8_t getAnalogWriteBits(); - -/* - * \brief Get the maximum value for current resolution for analogRead. - * \note Default is 1023 - * \note Maximum is 4095 - * - * \return Current maximum value - */ -extern uint16_t getAnalogReadMaximum(); - -/* - * \brief Get the maximum value for current resolution for analogWrite. - * \note Default is 255 - * \note Maximum is 65535 - * - * \return Current maximum value - */ -extern uint16_t getAnalogWriteMaximum(); - -#ifdef __cplusplus -} -#endif - -#endif /* _WIRING_ANALOG_ */ diff --git a/cores/wiring_constants.h b/cores/wiring_constants.h deleted file mode 100644 index 3dd0c7fe..00000000 --- a/cores/wiring_constants.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ - -#ifndef _WIRING_CONSTANTS_ -#define _WIRING_CONSTANTS_ - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -//**************************************************************************** -// @Defines -//**************************************************************************** -/* Arduino wiring macros and bit defines */ -#define HIGH 1 -#define LOW 0 -#define ENABLED 1 -#define DISABLED 0 -#define INPUT XMC_GPIO_MODE_INPUT_TRISTATE -#define OUTPUT XMC_GPIO_MODE_OUTPUT_PUSH_PULL -#define INPUT_PULLUP XMC_GPIO_MODE_INPUT_PULL_UP -#define INPUT_PULLDOWN XMC_GPIO_MODE_INPUT_PULL_DOWN -#define OUTPUT_OPENDRAIN XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN - -#define PI 3.1415926535897932384626433832795 -#define HALF_PI 1.5707963267948966192313216916398 -#define TWO_PI 6.283185307179586476925286766559 -#define DEG_TO_RAD 0.017453292519943295769236907684886 -#define RAD_TO_DEG 57.295779513082320876798154814105 -#define EULER 2.718281828459045235360287471352 - -#define SERIAL 0x0 -#define DISPLAY 0x1 - -enum BitOrder { LSBFIRST = 0, MSBFIRST = 1 }; - -#define DEFAULT 0 -#define EXTERNAL 1 -#define INTERNAL 2 - -#define NOT_A_PIN -1 -#define NOT_A_PORT -1 -#define NOT_AN_INTERRUPT -1 - -// undefine stdlib's abs if encountered -#ifdef abs - #undef abs -#endif // abs - -#ifndef min - #define min(a, b) ((a) < (b) ? (a) : (b)) -#endif // min - -#ifndef max - #define max(a, b) ((a) > (b) ? (a) : (b)) -#endif // max - -#define abs(x) ((x) > 0 ? (x) : -(x)) -#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt))) -#define round(x) ((x) >= 0 ? (long)((x) + 0.5) : (long)((x) - 0.5)) -#define radians(deg) ((deg) * DEG_TO_RAD) -#define degrees(rad) ((rad) * RAD_TO_DEG) -#define sq(x) ((x) * (x)) - -#define map(x, in_min, in_max, out_min, out_max) \ - (((x - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min) - -#define interrupts() __enable_irq() -#define noInterrupts() __disable_irq() - -#define lowByte(w) ((uint8_t)((w) & 0xff)) -#define highByte(w) ((uint8_t)((w) >> 8)) - -#define bitRead(value, bit) (((value) >> (bit)) & 0x01) -#define bitSet(value, bit) ((value) |= (1UL << (bit))) -#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) -#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) -#define bit(b) (1UL << (b)) - -//**************************************************************************** -// @Typedefs -//**************************************************************************** -typedef bool boolean; -typedef uint8_t byte; -typedef uint8_t word; - -#ifdef __cplusplus -} // extern "C" -#endif // __cplusplus - -#endif /* _WIRING_CONSTANTS_ */ diff --git a/cores/wiring_digital.c b/cores/wiring_digital.c deleted file mode 100644 index abd07d53..00000000 --- a/cores/wiring_digital.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. - */ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" - -void pinMode(uint8_t pin, uint8_t mode) { - XMC_GPIO_CONFIG_t gpio_conf; - gpio_conf.mode = mode; - gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; -#if UC_FAMILY == XMC1 - gpio_conf.input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_LARGE; -#endif - XMC_GPIO_Init(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, &gpio_conf); -} - -uint8_t digitalRead(uint8_t pin) { - return ((pin == GND) - ? LOW - : XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); -} - -void digitalWrite(uint8_t pin, uint8_t value) { - XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, - (value == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW - : XMC_GPIO_OUTPUT_LEVEL_HIGH); -} - -void digitalToggle(uint8_t pin) { - XMC_GPIO_ToggleOutput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin); -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/wiring_digital.h b/cores/wiring_digital.h deleted file mode 100644 index 8c6dc5b8..00000000 --- a/cores/wiring_digital.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ - -#ifndef _WIRING_DIGITAL_ -#define _WIRING_DIGITAL_ - -#ifdef __cplusplus -extern "C" { -#endif - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -/* - * \brief Configures the specified pin to behave either as an input or an output. See the - * description of digital pins for details. - * - * \param pin The number of the pin whose mode you wish to set - * \param mode Either INPUT, INPUT_PULLUP, INPUT_PULLDOWN or OUTPUT - */ -void pinMode(uint8_t pin, uint8_t mode); - -/* - * \brief Reads the value from a specified digital pin, either HIGH or LOW. - * - * \param pin The number of the digital pin you want to read (int) - * - * \return HIGH or LOW - */ -extern uint8_t digitalRead(uint8_t pin); - -/* - * \brief Write a HIGH or a LOW value to a digital pin. - * - * If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the - * corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW. - * - * If the pin is configured as an INPUT, writing a HIGH value with digitalWrite() will enable an - * internal 20K pullup resistor (see the tutorial on digital pins). Writing LOW will disable the - * pullup. The pullup resistor is enough to light an LED dimly, so if LEDs appear to work, but very - * dimly, this is a likely cause. The remedy is to set the pin to an output with the pinMode() - * function. - * - * \note Digital pin PIN_LED is harder to use as a digital input than the other digital pins because - * it has an LED and resistor attached to it that's soldered to the board on most boards. If you - * enable its internal 20k pull-up resistor, it will hang at around 1.7 V instead of the expected 5V - * because the onboard LED and series resistor pull the voltage level down, meaning it always - * returns LOW. If you must use pin PIN_LED as a digital input, use an external pull down resistor. - * - * \param pin the pin number - * \param value HIGH or LOW - */ -extern void digitalWrite(uint8_t pin, uint8_t value); - -/* - * \brief Toggles output signal of a digital pin. - * - * \param pin The number of the pin who you want to toggle - */ -extern void digitalToggle(uint8_t pin); - -#ifdef __cplusplus -} -#endif - -#endif /* _WIRING_DIGITAL_ */ \ No newline at end of file diff --git a/cores/wiring_pulse.c b/cores/wiring_pulse.c deleted file mode 100644 index 0201da2b..00000000 --- a/cores/wiring_pulse.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" - -// Ensure we do not wait here forever by setting maximum and default -// timeouts for 3 minutes and 1 second (in micro-seconds) -// Default used if timeout is set at < 6 microseconds -#define MAX_PULSE_TIMEOUT (3 * 60 * 1000 * 1000) -#define DEF_PULSE_TIMEOUT (1000 * 1000) - -uint32_t pulse_state; // State to measure pin input HIGH or LOW -uint32_t mask; // bit mask for relevant pin -XMC_GPIO_PORT_t *pulsePort; // Pointer to GPIO port register structure -uint32_t start_time; // start time of measured pulse -uint32_t end_time; // start time of measured pulse - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -/* Measures the length (in microseconds) of a pulse on the Arduino pin; - * Works on pulses from 6 microseconds to 3 minutes in length, - * but must be called at least a few dozen microseconds - * before the start of the pulse. - * - * Waits for input signal to be at opposite level to being measured - * to avoid getting short measurements of wrong pulse. - * - * Parameters - * pin - which pin to monitor - * state - HIGH or LOW, for the level of pulse to measure. - * timeout - max time in microseconds to wait for whole process - * - * Returns 0 for timeout reached or INVALID pin number - * - * ATTENTION: - * This function relies on the SysTick timer in function micros() so is - * LESS prone to interrupts or other activity interfering. However there - * will always be the possibility of at LEAST +/- 1 counts difference to - * actual signal time. If you need high accuracy use another solution - * with hardware timers in capture mode. - * - * Use of SysTick hardware timer and micros( ) function makes the function - * more portable across various micros and CPU clock frequencies. - * - * Assumptions] - * As per AVR Arduino PulseIn pin is expected to be in input mode already - * No major interrupt activity while measurement is taken (including Serial) - * - * Do NOT make changes to use local (stack) variables as this WILL ADD overhead - * to any operations. - * To improve accuracy beyond this will probably need hard coded assembler - */ -uint32_t pulseIn(uint32_t pin, uint32_t state, uint32_t timeout) { -// check pin is valid by NUM_DIGITAL_PINS, return 0 if invalid -#ifdef NUM_DIGITAL_PINS - if (pin >= NUM_DIGITAL_PINS) - return 0; -#endif - - // Set up pin details for faster port read in loops - pulsePort = mapping_port_pin[pin].port; - // configure register pin mask to check against - mask = 1UL << mapping_port_pin[pin].pin; - - // Check timeout is NOT too small or > Maximum - // if so use default 1 second or MAX respectively - if (timeout < 6) - timeout = DEF_PULSE_TIMEOUT; - else if (timeout > MAX_PULSE_TIMEOUT) - timeout = MAX_PULSE_TIMEOUT; - - // Initialise conditions - pulse_state = (state) ? mask : 0; // level to measure - - timeout = micros() + timeout; // Set timeout for whole process - - // If already at measurement level we have a problem - // So wait for pulse to go to OPPOSITE level required (idle) first - while (((pulsePort->IN & mask) == pulse_state)) - if (micros() > timeout) - return 0; - - // Wait for pulse to go to level required - while (((pulsePort->IN & mask) != pulse_state)) - if (micros() > timeout) - return 0; - - // measure pulse length of required level - start_time = micros(); - while (((pulsePort->IN & mask) == pulse_state)) - if (micros() > timeout) - return 0; - end_time = micros(); - - // Return time difference - return (end_time - start_time); -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** \ No newline at end of file diff --git a/cores/wiring_pulse.h b/cores/wiring_pulse.h deleted file mode 100644 index 3d8d1e11..00000000 --- a/cores/wiring_pulse.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef _WIRING_PULSE_ -#define _WIRING_PULSE_ - -#ifdef __cplusplus -extern "C" { -#endif - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -/* - * \brief Measures the length (in microseconds) of a pulse on the pin; state is HIGH - * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds - * to 3 minutes in length, but must be called at least a few dozen microseconds - * before the start of the pulse. - */ -uint32_t pulseIn(uint32_t pin, uint32_t state, uint32_t timeout); - -#ifdef __cplusplus -// Provides a version of pulseIn with a default argument (C++ only) -uint32_t pulseIn(uint32_t pin, uint32_t state, uint32_t timeout = 1000000L); - -} // extern "C" -#endif - -#endif /* _WIRING_PULSE_ */ diff --git a/cores/wiring_shift.c b/cores/wiring_shift.c deleted file mode 100644 index a721775a..00000000 --- a/cores/wiring_shift.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -void shiftOut(uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder, uint32_t ulVal) { - uint8_t i; - - for (i = 0; i < 8; i++) { - if (ulBitOrder == LSBFIRST) { - digitalWrite(ulDataPin, !!(ulVal & (1 << i))); - } else { - digitalWrite(ulDataPin, !!(ulVal & (1 << (7 - i)))); - } - - digitalWrite(ulClockPin, HIGH); - digitalWrite(ulClockPin, LOW); - } -} - -uint32_t shiftIn(uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder) { - uint8_t value = 0; - uint8_t i; - - for (i = 0; i < 8; ++i) { - digitalWrite(ulClockPin, HIGH); - - if (ulBitOrder == LSBFIRST) { - value |= digitalRead(ulDataPin) << i; - } else { - value |= digitalRead(ulDataPin) << (7 - i); - } - - digitalWrite(ulClockPin, LOW); - } - - return value; -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/wiring_shift.h b/cores/wiring_shift.h deleted file mode 100644 index 1e449985..00000000 --- a/cores/wiring_shift.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef WIRING_SHIFT_H_ -#define WIRING_SHIFT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -/* - * \brief - */ -extern uint32_t shiftIn(uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder); - -/* - * \brief - */ -extern void shiftOut(uint32_t ulDataPin, uint32_t ulClockPin, uint32_t ulBitOrder, uint32_t ulVal); - -#ifdef __cplusplus -} -#endif - -#endif /* WIRING_SHIFT_H_ */ diff --git a/cores/wiring_time.c b/cores/wiring_time.c deleted file mode 100644 index 617b587f..00000000 --- a/cores/wiring_time.c +++ /dev/null @@ -1,503 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ - -/* Includes Co-operative Scheduler for XMC-for-Arduino - - Using COMPILE time scheduling table - -Version V1.00 -Author: Paul Carpenter, PC Services, -Date March 2018 - -Co-operative scheduler library that has some support functions and main -schedule function meant to be run as the Systick scheduler event handler, the -support functions should be used to get status on, start, stop, or configure tasks. - -The schedule code is designed for MINIMAL overhead and SPEED. - -The time interval of calling the schedule loop is determined by Systick timer -interval currently 1 ms, and calls a selection of tasks determined by two -parameters for each task - - callback function address - parameter INTEGER to pass to function - -From this we get TWO types of function calls when a task event happens - -1/ callback and parameter are set gives a function call of - - int callback( int ID, int16_t param ) - function to use as this task that accepts TWO integer parameters - and MUST return an integer - - (even if parameter not set it is initialised to task_id AT compile TIME) - -2/ Special case if ANY task has its callback set to NULL a special variable - in wiring_time is set to TRUE. This enables the delay() function to work - for ms delays. As a side effect it stops runaway tasks for callback set to - NULL. - -Callback functions in list --------------------------- - For different processors speeds it is suggested to keep the number of - total tasks (callback functions) to following limits - - - Speed Max Tasks - < 50 MHz 8 - > 50 MHz < 100 MHz 12 - > 100 MHz 16 - -Callback function structure ---------------------------- - Task is actually calling a function that should be defined as - function that returns int and takes TWO integer parameter - - e.g. int func( int TaskId, int16_t Parameter ) - First parameter is TaskId, - Second parameter is user defined parameter (int16_t) - - If interval of a task has to change call setInterval during task execution - NOT to STOP task use return code - -Callback functions Contents ---------------------------- - Callback functions are effectively interrupt routines so care should be taken - about which variables and flags set in these functions are volatiles. - - Functions MUST be VERY SMALL as many tasks have to run in less than 1 ms as - well as the main code. - - Do NOT use blocking or slow callbacks that use AT LEAST the following Arduino - functions - delay (this would become recursive) - .print, .write, println on Serial or Liquid Crystal - analogread - PulseIn - Liquid Crystal ANY function - I2C or SPI ANY function - SD/MMC ANY function - - All of these and maybe others are SLOW, block waiting for I/O or time - delays often MUCH longer than 1 ms - -Callback Function Return value ------------------------------- - The returned value is the NEW status for that task which tells scheduler - what to do next time. Values are - - < 0 User error status (stops task execution) - 0 Task stopped (if needed to be run will have to be started by Start) - > 0 Next status this can be used by call back function for state machines - Task runs again at the interval set - -Scheduling Functions --------------------- -setInterval Set a task's NEW interval and schedule new time from now if not - already running -getInterval Get a task's interval -setParam Set a task's callback function parameter (signed int16_t) -getParam Get a task's callback function parameter (signed int16_t) -getTime Get a task's next time to execute -getStatus Get a particular task status word -addTask Add a task to the task list -deleteTask Delete a task from the task list -startTask Start a task (if not already running) -findID Get ID of first task from task address -*/ -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" -extern int tone_irq_action(int, int16_t); - -//**************************************************************************** -// @Macros -//**************************************************************************** -// number of tasks = number of tones plus delay task plus any others added later -#define _MAX_TASKS NUM_TASKS_VARIANT - -#define SYSTIMER_PRIORITY (4U) -/* Millisecond to Microsecond ratio */ -#define TIMER_1mSec 1000 - -//**************************************************************************** -// @Global Variables -//**************************************************************************** -/* Array of tasks which are addresses to functions. - Each function returns int and takes TWO integer parameter - e.g. int func( int TaskId, int16_t Parameter ) - First parameter is TaskId, - second is current status is user defined parameter (int16_t) - - Tasklist order is ALWAYS - Tone callbacks ( 0 to NUM_TONE_PINS ) - Any additional tasks - delay() callback - - This way last is always delay and first 'n' are always Tone pins i.e. 0 - n - last is _MAX_TASKS - 1 -*/ -int (*tasks[_MAX_TASKS])(int, int16_t); - -/* Structure for task details next run, status etc.. */ -struct TaskList taskTable[_MAX_TASKS]; - -unsigned long old_ms = 0; // last execution time -int running = _MAX_TASKS; // Current task ID being checked or run - // Initialise to avoid fast CPU EXTREME edge case of - // requesting task (mainly first Tone task) BEFORE the - // FIRST SysTick interrupt (1 ms) after power up. - -/* SysTick counter */ -volatile uint32_t g_systick_count = 0U; - -/* Tracker if Timer Handler as already been entered -> avoid recursion */ -volatile __IO bool g_timer_entered_handler = FALSE; - -// Delay ms function flag for time expired in Systick Event Handler -volatile __IO bool delay_timer_expired = FALSE; - -//**************************************************************************** -// @Prototypes Of Local Functions -//**************************************************************************** -/* Handler function called from SysTick event handler for task scheduling */ -int XMC_SYSTIMER_lTimerHandler(void); - -/* SysTick handler which is the main interrupt service routine to service the - * tasks configured */ -void SysTick_Handler(void); - -//**************************************************************************** -// @Local Functions -//**************************************************************************** -void wiring_time_init(void) { - /* Initialise micro/milli second counter as early as possible - Initialize SysTick timer for 1 ms (1 kHz) interval */ - SysTick_Config((uint32_t)SYSTICK_MS); - - // Initialise task control to all off - memset(taskTable, 0, sizeof(taskTable)); - - for (int i = 0; i < _MAX_TASKS; i++) { - taskTable[i].param = i; // Preset user parameter to task number - // Fill with call back function addresses - if (i < NUM_TONE_PINS) - tasks[i] = tone_irq_action; // Tone callbacks - else - tasks[i] = NULL; // Special case delay() ms callback - } - - /* setting of First SW Timer period is always and sub-priority value for XMC4000 devices */ - /* setting of priority value for XMC1000 devices */ - NVIC_SetPriority(SysTick_IRQn, SYSTIMER_PRIORITY); -} - -/* delay - milliseconds - * This function uses SysTick Exception for controlling the timer list. Call back function - * registered through this function will be called in SysTick exception when the timer is expired. - * - * @param[in] Period Timer period value in microseconds - * - * Special cases for callback action processing - * callback is NULL boolean delay_timer_expired is set to true - */ -void delay(uint32_t dwMs) { - setInterval(_MAX_TASKS - 1, dwMs); - // Timer is always in list as last - startTask(_MAX_TASKS - 1); - // Wait until timer expires - do - yield(); - while (!delay_timer_expired); - delay_timer_expired = FALSE; -} - -/* Handler function called from SysTick event handler. - - Task scheduling loop - - Does ONE pass through scheduling table, checking what tasks are due or - overdue to run. - - Order of task execution is list of tasks - - When task has completed - - updates task status with status returned, - adjusts next run time using interval specified. - If interval is zero execution time set to zero. - - Parameters - NONE - - Returns int 0 Processed no tasks to run - > 0 Number of tasks executed - */ -int XMC_SYSTIMER_TaskLoop(void) { - int done; - unsigned int overdue; - unsigned long ms; - - // Task loop lock - g_timer_entered_handler = TRUE; - - // get current time and overdue - ms = g_systick_count; - // Unsigned maths first ensures correct even at wraparound - overdue = (unsigned int)(ms - old_ms); - // save current execution time - old_ms = ms; - done = 0; - for (running = 0; running < _MAX_TASKS; running++) { - if (taskTable[running].status > 0) // task enabled - { // check if time to run as in correct interval or overdue - if (ms - taskTable[running].next <= overdue) { - if (tasks[running] == NULL) { - delay_timer_expired = TRUE; // Special case of NULL callback function - taskTable[running].status = 0; // One shot event so stop task - } else if ((taskTable[running].status = - ((*tasks[running])(running, taskTable[running].param))) > 0) - taskTable[running].next = ms + taskTable[running].interval; - done++; - } - } - } - return done; -} - -/* SysTick Event Handler. */ -void SysTick_Handler(void) { - g_systick_count++; // Another ms has occurred - - // do not call handler, when still running - if (g_timer_entered_handler == FALSE) { - XMC_SYSTIMER_TaskLoop(); - g_timer_entered_handler = FALSE; - } -} - -/* checkID - Common ID check for valid and not running - - Parameters int Task ID to check - - Return int -1 invalid ID - 0 current task running - 1 Valid -*/ -int CheckID(int ID) { - if (ID < 0 || ID >= _MAX_TASKS) - return -1; - if (ID == running) - return 0; - return 1; -} - -/* setInterval - set the interval time in ms for a task - - If task running just sets interval as next execution will be set at task end. - - When task NOT running, also sets next execution time to now plus interval. - - Parameters int Task ID to check - unsigned int interval in ms - - Return int -1 invalid ID - 0 task is running - > 0 task interval and execution time set -*/ -int setInterval(int ID, uint32_t interval) { - int i; - - if ((i = CheckID(ID)) < 0) - return i; - taskTable[ID].interval = interval; - if (i != 0) { - taskTable[ID].next = millis() + interval + 1; - return 1; - } - return 0; -} - -/* getInterval - get the interval time in ms for a task - - Parameters int Task ID to check - NO ID validity check - - Return int Current interval time -*/ -uint32_t getInterval(int ID) { return taskTable[ID].interval; } - -/* setParam - set the param value for a task callback function - - Parameters int Task ID to check - int16_t param value - - Return int -1 invalid ID - >=0 task param value set -*/ -int setParam(int ID, int16_t param) { - if ((CheckID(ID)) < 0) - return -1; - taskTable[ID].param = param; - return 0; -} - -/* getParam - get the param value for a task callback function - - Parameters int Task ID to get details of - - Return int -1 invalid ID or valid param - All other values assume the param value - */ -int16_t getParam(int ID) { - if ((CheckID(ID)) < 0) - return -1; - return taskTable[ID].param; -} - -/* getTime - get next execution time in ms of a task - - As value is unsigned long impossible to guarantee error codes - So if values listed below for errors check current millis() value - to see if could be real or error. - - Parameters int Task ID to check - - Return unsigned long of time (or could be errors) - 0 could be execution time or error of invalid ID - 1 could be execution time or error of NO interval -*/ -unsigned long getTime(int ID) { - if ((CheckID(ID)) < 0) - return 0; - return taskTable[ID].next; -} - -/* getStatus - get task status even if running task - - Parameters int Task ID to get status for - - Return int -1 invalid ID - any other value Status (including other user errors -ve) -*/ -int16_t getStatus(int ID) { - // Check valid ID - if ((CheckID(ID)) < 0) - return -1; - return taskTable[ID].status; -} - -/* addTask - Add a task to the task list - - Parameters ptr Pointer to callback function - - Return int -1 No free task available - >=0 Number of added task -*/ -int addTask(int (*ptr)(int, int16_t)) { - noInterrupts(); - for (int i = NUM_TONE_PINS; i < _MAX_TASKS - 1; i++) { - // Fill with call back function address - if (tasks[i] == NULL) { - taskTable[i].status = 0; - tasks[i] = ptr; // Register callback - interrupts(); - return i; - } - } - interrupts(); - return -1; -} - -/* deleteTask - Remove a task from the list and delete the callback function - - Parameters ptr Pointer to callback function - - Return int -2 No task found - -1 Invalid task address - >=0 Number of deleted task -*/ -int deleteTask(int (*ptr)(int, int16_t)) { - noInterrupts(); - int ID = findID(ptr); - - if (ID >= 0) { - taskTable[ID].status = 0; - tasks[ID] = NULL; - setInterval(ID, 0); - } - interrupts(); - return ID; -} - -/* startTask - Start a task if not running and has interval set - - Cannot start an already started task - - It is responsibility of the task to stop its task and any associated - resources (GPIO/TWI/SPI etc). - - Parameters int Task ID to start - - Return int -3 Task already started - -2 No interval on task - -1 invalid ID - 0 current task running - > 0 Valid set to run after interval time -*/ -int startTask(int ID) { - // Check valid ID, not running and interval - if ((CheckID(ID)) <= 0) - return -1; - if (taskTable[ID].interval == 0) - return -2; - if (taskTable[ID].status > 0) - return -3; - // Start task - taskTable[ID].next = old_ms + taskTable[ID].interval; - taskTable[ID].status = 1; - return 1; -} - -/* findID - Find ID for FIRST task with matching function address in Task table - - Scans task table to find a matching function address and return the ID - NOTE stops at FIRST match. - - Parameters int Task ID to Stop - - Return int -2 No task found - -1 Invalid task address - >= 0 Valid and stopped -*/ -int findID(int (*ptr)(int, int16_t)) { - int i; - - if (ptr == NULL) - return -1; - for (i = 0; i < _MAX_TASKS; i++) - if (tasks[i] == ptr) - break; - if (i == _MAX_TASKS) - return -2; - return i; -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/wiring_time.h b/cores/wiring_time.h deleted file mode 100644 index 6045683f..00000000 --- a/cores/wiring_time.h +++ /dev/null @@ -1,423 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ - -#ifndef WIRING_TIME_H_ -#define WIRING_TIME_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -//**************************************************************************** -// @Defines -//**************************************************************************** -/**< SysTick interval in microseconds */ -#define SYSTIMER_TICK_PERIOD_US (1000U) -/**< value for Systick counts per ms **/ -#define SYSTICK_MS (F_CPU / SYSTIMER_TICK_PERIOD_US) -/**< value for Systick counts per us **/ -#define SYSTICK_US (SYSTICK_MS / SYSTIMER_TICK_PERIOD_US) - -#if ((UC_FAMILY == XMC4) && (F_CPU == 144000000U)) - // 142 NOPS - #define NOPS_FOR_USEC() \ - { \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - } - -#elif ((UC_FAMILY == XMC4) && (F_CPU == 80000000U)) - // 80 NOPS - #define NOPS_FOR_USEC() \ - { \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - } - -#elif ((UC_FAMILY == XMC1) && (F_CPU == 32000000U)) - // 16 NOPS - #define NOPS_FOR_USEC() \ - { \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - } -#elif ((UC_FAMILY == XMC1) && (F_CPU == 48000000U)) - // 24 NOPS - #define NOPS_FOR_USEC() \ - { \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - asm volatile("nop"); \ - } -#else - #error wiring_time: NOPS_FOR_USEC not defined -#endif - -//**************************************************************************** -// @Typedefs -//**************************************************************************** -/* Structures for task details next run, status etc.. */ -struct TaskList { - uint32_t next; // next execution time in ms - uint32_t interval; // interval between schedule starts in ms - int16_t param; // User defined parameter - int16_t status; // current task status 0 stopped, - // -ve stopped with error, - // > 0 user status (and active) -}; - -/* SysTick counter */ -extern volatile uint32_t g_systick_count; - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** -/* - * \brief Initialize the time module. - */ -extern void wiring_time_init(void); - -/* - * \brief Returns the number of milliseconds since the Arduino board began running the current - * program. - * - * This number will overflow (go back to zero), after approximately 50 days. - * - * \return Number of milliseconds since the program started (uint32_t) - */ -static inline uint32_t millis() __attribute__((always_inline)); - -static inline uint32_t millis() { return (g_systick_count); } - -/* - * \brief Returns the number of microseconds since the Arduino board began running the current - program. - * - * This number will overflow (go back to zero), after approximately 70 minutes. - * On XMC boards the returned value has resolution of 1 microsecond as it is - * calculated from a hardware timer running counting clock cycles to produce - * 1 millisecond interval interrupts. - * - * \note There are 1,000 microseconds in a millisecond and 1,000,000 microseconds in a second. - - get micro seconds since power up - Read milli seconds (in microseconds) and convert Systick counter to microseconds to add to it - remember SysTick->VAL counts DOWN to zero */ -static inline uint32_t micros() __attribute__((always_inline)); - -static inline uint32_t micros() { - return (((SYSTICK_MS - SysTick->VAL) / SYSTICK_US) + - (g_systick_count * SYSTIMER_TICK_PERIOD_US)); -} - -/* - * \brief Pauses the program for the amount of time (in milliseconds) specified as parameter. - * (There are 1000 milliseconds in a second.) - * - * \param dwMs the number of milliseconds to pause (uint32_t) - */ -extern void delay(uint32_t dwMs); - -/* - * \brief Pauses the program for the amount of time (in microseconds) specified as parameter. - * - * \param dwUs the number of microseconds to pause (uint32_t) - */ -static inline void delayMicroseconds(uint32_t) __attribute__((always_inline)); - -static inline void delayMicroseconds(uint32_t usec) { - if (usec == 0) - return; - else - do - NOPS_FOR_USEC() // NOP loop to generate delay - while (--usec); -} - -extern int setInterval(int, uint32_t); -extern uint32_t getInterval(int); -extern int setParam(int, int16_t); -extern int16_t getParam(int); -extern uint32_t getTime(int); -extern int16_t getStatus(int); -extern int addTask(int (*)(int, int16_t)); -extern int deleteTask(int (*)(int, int16_t)); -extern int startTask(int); -extern int findID(int (*)(int, int16_t)); - -#ifdef __cplusplus -} -#endif - -#endif /* WIRING_TIME_H_ */ diff --git a/cores/yield.c b/cores/yield.c deleted file mode 100644 index ca4c52a6..00000000 --- a/cores/yield.c +++ /dev/null @@ -1,27 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** -void yield(void) __attribute__((weak)); -void yield(void) {}; - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/extras/arduino-core-api b/extras/arduino-core-api new file mode 160000 index 00000000..4a02bfc0 --- /dev/null +++ b/extras/arduino-core-api @@ -0,0 +1 @@ +Subproject commit 4a02bfc0a924e1fec34c3bb82ffd5dfba7643a0c diff --git a/tools/dev-setup.sh b/tools/dev-setup.sh new file mode 100644 index 00000000..defe710f --- /dev/null +++ b/tools/dev-setup.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Change dir to the directory where this script is located +cd $(dirname $0) +echo ${PWD} + +function git_submodule_setup { + git submodule init + git submodule update +} + +function core_api_setup { + + cores_xmc_dir="${PWD}/../cores/xmc" + core_api_submodule_dir="${PWD}/../extras/arduino-core-api" + + # Create symbolic link (overwrite) to the api/ + # folder of ArduinoCore-API submodule. + # Note: Symlinks might not work without full paths + # https://stackoverflow.com/questions/8601988/symlinks-not-working-when-link-is-made-in-another-directory + if [ ! -d "$cores_xmc_dir" ]; then + mkdir -p "$cores_xmc_dir" + echo "Directory created: $cores_xmc_dir" + fi + ln -sf ${core_api_submodule_dir}/api ${cores_xmc_dir} +} + + +# Check if a function name is passed as an argument +if [ $# -gt 0 ]; then + if declare -f "$1" > /dev/null; then + "$1" + else + echo "Function $1 not found" + exit 1 + fi +else + git_submodule_setup + core_api_setup +fi From 00dd97bba92aacdc859bd77fc4992cbfe267d8fc Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 25 Mar 2025 11:42:34 +0100 Subject: [PATCH 002/366] tools/ci.sh: Ignore some commit pattern in check. Signed-off-by: zhanglinjing --- tools/ci.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ci.sh b/tools/ci.sh index 1bc76c90..e4e53891 100644 --- a/tools/ci.sh +++ b/tools/ci.sh @@ -18,6 +18,6 @@ function ci_commit_formatting_run { # If the common ancestor commit hasn't been found, fetch more. git merge-base upstream/master HEAD || git fetch upstream master # For a PR, upstream/master..HEAD ends with a merge commit into master, exclude that one. - python tools/verifygitlog.py -v upstream/master..HEAD --no-merges + python tools/verifygitlog.py --ignore-rebase -v upstream/master..HEAD --no-merges } From 51b6584b903d53609f32043d59626a367e05b816 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 25 Mar 2025 11:42:45 +0100 Subject: [PATCH 003/366] tools/verifygitlog.py: Skip squash merge commit message check. Signed-off-by: zhanglinjing --- tools/verifygitlog.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/tools/verifygitlog.py b/tools/verifygitlog.py index a4c91ea4..e900c5c3 100644 --- a/tools/verifygitlog.py +++ b/tools/verifygitlog.py @@ -68,19 +68,11 @@ def diagnose_subject_line(subject_line, subject_line_format, err): def verify(sha, err): verbose("verify", sha) err.prefix = "commit " + sha + ": " - - # Author and committer email. - for line in git_log("%ae%n%ce", sha, "-n1"): - very_verbose("email", line) - if "noreply" in line: - err.error("Unwanted email address: " + line) - + # Message body. raw_body = list(git_log("%B", sha, "-n1")) - verify_message_body(raw_body, err) - - -def verify_message_body(raw_body, err): + + # Empty Message. if not raw_body: err.error("Message is empty") return @@ -91,6 +83,19 @@ def verify_message_body(raw_body, err): if subject_line.startswith(prefix): verbose("Skipping ignored commit message") return + + # Author and committer email. + for line in git_log("%ae%n%ce", sha, "-n1"): + very_verbose("email", line) + if "noreply" in line: + err.error("Unwanted email address: " + line) + + + verify_message_body(raw_body, err) + + +def verify_message_body(raw_body, err): + subject_line = raw_body[0] very_verbose("subject_line", subject_line) subject_line_format = r"^[^!]+: [A-Z]+.+ .+\.$" if not re.match(subject_line_format, subject_line): From 6f2bc96f41713ee8435f9315a2df116cc8ad69d4 Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Fri, 4 Apr 2025 14:12:11 +0200 Subject: [PATCH 004/366] .github/workflows/release.yml: Updated to reusable wflow. Signed-off-by: jaenrig-ifx --- .github/workflows/release.yml | 42 ++++++----------------------------- 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ecb094d2..7ecab897 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,39 +1,11 @@ -name: XMC-for-Arduino Release Automation +name: Release on: - release: - types: published push: - tags: - - 'v*.*.*' - - 'V*.*.*' + jobs: - release: - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/V') - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.x' - - run: pip install requests - - - name: Build release changelog - id: build_changelog - uses: mikepenz/release-changelog-builder-action@v3 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Build release assets - run: | - cd .github/scripts - python release.py build-release ${{ github.repository }} ${{ github.ref_name }} - - - name: Upload assets - uses: softprops/action-gh-release@v1 - with: - name: XMC-for-Arduino ${{ github.ref_name }} - files: | - pkg_build/*.zip - pkg_build/package_infineon_index.json - body: ${{steps.build_changelog.outputs.changelog}} \ No newline at end of file + arduino-devops: + uses: Infineon/arduino-devops/.github/workflows/release.yml@latest + with: + release-title: XMC-for-Arduino + secrets: inherit \ No newline at end of file From 777b96a39fbcb915ad4d3522f7f7fed81820f69c Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Fri, 4 Apr 2025 14:13:09 +0200 Subject: [PATCH 005/366] package/config.yml: Added config for core packaging. Signed-off-by: jaenrig-ifx --- package/config.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 package/config.yml diff --git a/package/config.yml b/package/config.yml new file mode 100644 index 00000000..43c4104c --- /dev/null +++ b/package/config.yml @@ -0,0 +1,18 @@ +package-name: xmc-for-arduino +include: + - cores + - libraries + - tools + - variants + - boards.txt + - keywords.txt + - LICENSE.md + - package.json + - platform.txt + - programmers.txt + - README.md +index-name: package_infineon_index +server: + type: github + owner: Infineon + repo: XMC-for-Arduino \ No newline at end of file From 0209050d5bb8c4eb77cdafdab6d6029a1074401c Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Fri, 4 Apr 2025 14:22:45 +0200 Subject: [PATCH 006/366] .github/scripts/release.py: Removed. Not required. Signed-off-by: jaenrig-ifx --- .github/scripts/release.py | 154 ------------------------------------- 1 file changed, 154 deletions(-) delete mode 100755 .github/scripts/release.py diff --git a/.github/scripts/release.py b/.github/scripts/release.py deleted file mode 100755 index 5809e723..00000000 --- a/.github/scripts/release.py +++ /dev/null @@ -1,154 +0,0 @@ - -import argparse, copy, hashlib, json, re, requests, os, shutil - -version = '0.2.1' - -xmc_ino_root_path = os.path.relpath(os.path.join(os.path.join(os.getcwd(), os.pardir), os.pardir)) -build_dir_name = 'pkg_build' -pkg_assets_build_path = os.path.join(xmc_ino_root_path , build_dir_name) - -def strip_prefix_from_version(version): - return re.sub(r'[vV]', '', version) - -def mkdir_package_dir(version): - semver = strip_prefix_from_version(version) - pkg_name = "XMC_IFX_" + semver - pkg_build_path = os.path.join(pkg_assets_build_path, pkg_name) - os.mkdir(pkg_build_path) - - return pkg_name - -def build_package(pkg_name): - pkg_build_path = os.path.join(pkg_assets_build_path, pkg_name) - - dirs_to_copy = [ - 'cores', - 'libraries', - 'tools', - 'variants' - ] - - files_to_copy = [ - 'boards.txt', - 'keywords.txt', - 'package.json', - 'platform.txt', - 'LICENSE.md', - 'README.md' - ] - - ignore_pattern = shutil.ignore_patterns() - - for dir in dirs_to_copy: - if dir == 'libraries': - ignore_pattern = shutil.ignore_patterns('Makefile', 'Makefile.test', 'test') - shutil.copytree(os.path.join(xmc_ino_root_path, dir), os.path.join(pkg_build_path, dir), ignore=ignore_pattern) - - for file in files_to_copy: - shutil.copyfile(os.path.join(xmc_ino_root_path, file), os.path.join(pkg_build_path, file)) - -def zip_package(pkg_name): - pkg_build_path = os.path.join(pkg_assets_build_path, pkg_name) - shutil.make_archive(pkg_build_path, 'zip', pkg_assets_build_path, pkg_name) - -def get_package_size(pkg): - return os.path.getsize(pkg) - -def get_package_sha256(pkg): - with open(pkg,"rb") as f: - bytes = f.read() - hash = hashlib.sha256(bytes).hexdigest() - - return hash - -def get_latest_package_index_json(): - return requests.get('https://github.com/Infineon/XMC-for-Arduino/releases/latest/download/package_infineon_index.json').json() - -def get_local_package_index_json(): - with open(os.path.join(xmc_ino_root_path, 'package/package_infineon_index.template.json'), 'r') as f: - data = json.load(f) - return data - -def get_platform_data_struct_copy(pkg_index): - return copy.deepcopy(pkg_index['packages'][0]['platforms']) - -def set_new_platform_data_fields(platform_data_index, pkg_name, version, repository): - semver = strip_prefix_from_version(version) - platform_data = platform_data_index['packages'][0]['platforms'][0] - platform_data['version'] = str(semver) - archive_file_name = str(pkg_name) + ".zip" - platform_data['archiveFileName'] = archive_file_name - platform_data['url'] = "https://github.com/" + str(repository) + "/releases/download/" + str(version) + "/" + str(archive_file_name) - platform_data['checksum'] ="SHA-256:" + str(get_package_sha256(os.path.join(pkg_assets_build_path, archive_file_name))) - platform_data['size'] = str(get_package_size(os.path.join(pkg_assets_build_path, archive_file_name))) - -def add_platform_to_package_index(pkg_index, platform): - pkg_index['packages'][0]['platforms'].extend(platform) - -def make_package_index_file(pkg_index): - pkg_index_json_obj = json.dumps(pkg_index, indent=2) - pkg_index_w_path = os.path.join(pkg_assets_build_path, "package_infineon_index.json") - with open(pkg_index_w_path, "w") as pkg_file: - pkg_file.write(pkg_index_json_obj) - -def build_package_index_json(pkg_name, version, repository): - # get online package index json - latest_package_index = get_latest_package_index_json() - # get local package index template - local_package_index = get_local_package_index_json() - # set data field in local template for newest package - set_new_platform_data_fields(local_package_index, pkg_name, version, repository) - # get old package array - old_platform_data = get_platform_data_struct_copy(latest_package_index) - # append to local package index - add_platform_to_package_index(local_package_index, old_platform_data) - make_package_index_file(local_package_index) - -def build_release_assets(version, repository): - if os.path.exists(pkg_assets_build_path): - shutil.rmtree(pkg_assets_build_path) - os.mkdir(pkg_assets_build_path) - pkg_name = mkdir_package_dir(version) - build_package(pkg_name) - zip_package(pkg_name) - build_package_index_json(pkg_name, version, repository) - -def parser(): - - def main_parser_func(args): - parser.print_help() - - def parser_build_release_assets_func(args): - global xmc_ino_root_path - global pkg_build_path - xmc_ino_root_path = args.root_path - pkg_build_path = args.build_path - build_release_assets(args.version, args.repository) - - class ver_action(argparse.Action): - def __init__(self, option_strings, dest, **kwargs): - return super().__init__(option_strings, dest, nargs=0, default=argparse.SUPPRESS, **kwargs) - - def __call__(self, parser, namespace, values, option_string, **kwargs): - print('xmc-release version: ' + version) - parser.exit() - - # General parser - parser = argparse.ArgumentParser(description="xmc-release tool") - parser.add_argument('-v','--version', action=ver_action, help='xmc-release version') - subparser = parser.add_subparsers() - parser.set_defaults(func=main_parser_func) - - # Release parser - parser_release = subparser.add_parser('build-release', description='Build package release assets') - parser_release.add_argument('repository', type=str, help='Repository name') - parser_release.add_argument('version', type=str, help='Package release version (format: Vx.y.z)') - parser_release.add_argument('-r','--root-path', type=str, default=xmc_ino_root_path, help='Path to the XMC-for-Arduino root path') - parser_release.add_argument('-b','--build-path', type=str, default=pkg_assets_build_path, help='Path to build package') - parser_release.set_defaults(func=parser_build_release_assets_func) - - args = parser.parse_args() - args.func(args) - -if __name__ == "__main__": - parser() \ No newline at end of file From 8ac4da77b0397fc13ef4348e6762150d6a4de318 Mon Sep 17 00:00:00 2001 From: Ritalinjing <51888075+LinjingZhang@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:50:06 +0100 Subject: [PATCH 007/366] squash!Desmakers 4312 add modify entry file for new Arduino Core API (#326) * checkpoint: add some core API file and test compilation * doc: fix documentation tabs issue * init: empty sketch compiled on xmc4700 --- boards.txt | 16 +- cores/xmc/Arduino.h | 353 ++++++++++ cores/xmc/main.cpp | 60 ++ platform.txt | 18 +- tools/dev-setup.sh | 5 +- .../config/XMC4700_Relax_Kit/pins_arduino.h | 660 +++++++++--------- 6 files changed, 767 insertions(+), 345 deletions(-) create mode 100644 cores/xmc/Arduino.h create mode 100644 cores/xmc/main.cpp diff --git a/boards.txt b/boards.txt index a8139ec0..2b75e077 100644 --- a/boards.txt +++ b/boards.txt @@ -25,7 +25,7 @@ XMC1100_Boot_Kit.build.board=ARM_XMC XMC1100_Boot_Kit.build.board.version=1100 XMC1100_Boot_Kit.build.board.type=T038x0064 XMC1100_Boot_Kit.build.board.v=0064 -XMC1100_Boot_Kit.build.core=./ +XMC1100_Boot_Kit.build.core=xmc XMC1100_Boot_Kit.build.variant=XMC1100 XMC1100_Boot_Kit.build.board_variant=XMC1100_Boot_Kit XMC1100_Boot_Kit.build.flash_size=64K @@ -69,7 +69,7 @@ XMC1100_XMC2GO.build.board=ARM_XMC XMC1100_XMC2GO.build.board.version=1100 XMC1100_XMC2GO.build.board.type=Q024x0064 XMC1100_XMC2GO.build.board.v=0064 -XMC1100_XMC2GO.build.core=./ +XMC1100_XMC2GO.build.core=xmc XMC1100_XMC2GO.build.variant=XMC1100 XMC1100_XMC2GO.build.board_variant=XMC1100_XMC2GO XMC1100_XMC2GO.build.flash_size=64K @@ -113,7 +113,7 @@ XMC1300_Boot_Kit.build.board=ARM_XMC XMC1300_Boot_Kit.build.board.version=1302 XMC1300_Boot_Kit.build.board.type=T038x0200 XMC1300_Boot_Kit.build.board.v=0200 -XMC1300_Boot_Kit.build.core=./ +XMC1300_Boot_Kit.build.core=xmc XMC1300_Boot_Kit.build.variant=XMC1300 XMC1300_Boot_Kit.build.board_variant=XMC1300_Boot_Kit XMC1300_Boot_Kit.build.flash_size=200K @@ -157,7 +157,7 @@ XMC1400_XMC2GO.build.board=ARM_XMC XMC1400_XMC2GO.build.board.version=1404 XMC1400_XMC2GO.build.board.type=Q040x0200 XMC1400_XMC2GO.build.board.v=0200 -XMC1400_XMC2GO.build.core=./ +XMC1400_XMC2GO.build.core=xmc XMC1400_XMC2GO.build.variant=XMC1400 XMC1400_XMC2GO.build.board_variant=XMC1400_XMC2GO XMC1400_XMC2GO.build.flash_size=200K @@ -201,7 +201,7 @@ XMC1400_Arduino_Kit.build.board=ARM_XMC XMC1400_Arduino_Kit.build.board.version=1402 XMC1400_Arduino_Kit.build.board.type=T038x0200 XMC1400_Arduino_Kit.build.board.v=0200 -XMC1400_Arduino_Kit.build.core=./ +XMC1400_Arduino_Kit.build.core=xmc XMC1400_Arduino_Kit.build.variant=XMC1400 XMC1400_Arduino_Kit.build.board_variant=XMC1400_Arduino_Kit XMC1400_Arduino_Kit.build.flash_size=200K @@ -245,7 +245,7 @@ XMC4200_Platform2GO.build.board=ARM_XMC XMC4200_Platform2GO.build.board.version=4200 XMC4200_Platform2GO.build.board.type=F64x256 XMC4200_Platform2GO.build.board.v=256 -XMC4200_Platform2GO.build.core=./ +XMC4200_Platform2GO.build.core=xmc XMC4200_Platform2GO.build.variant=XMC4200 XMC4200_Platform2GO.build.board_variant=XMC4200_Platform2GO XMC4200_Platform2GO.build.flash_size=256K @@ -285,7 +285,7 @@ XMC4400_Platform2GO.build.board=ARM_XMC XMC4400_Platform2GO.build.board.version=4400 XMC4400_Platform2GO.build.board.type=F100x512 XMC4400_Platform2GO.build.board.v=512 -XMC4400_Platform2GO.build.core=./ +XMC4400_Platform2GO.build.core=xmc XMC4400_Platform2GO.build.variant=XMC4400 XMC4400_Platform2GO.build.board_variant=XMC4400_Platform2GO XMC4400_Platform2GO.build.flash_size=500K @@ -330,7 +330,7 @@ XMC4700_Relax_Kit.build.board=ARM_XMC XMC4700_Relax_Kit.build.board.version=4700 XMC4700_Relax_Kit.build.board.type=F144x2048 XMC4700_Relax_Kit.build.board.v=2048 -XMC4700_Relax_Kit.build.core=./ +XMC4700_Relax_Kit.build.core=xmc XMC4700_Relax_Kit.build.variant=XMC4700 XMC4700_Relax_Kit.build.board_variant=XMC4700_Relax_Kit XMC4700_Relax_Kit.build.flash_size=2000K diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h new file mode 100644 index 00000000..e30e82c0 --- /dev/null +++ b/cores/xmc/Arduino.h @@ -0,0 +1,353 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Copyright (c) 2018 Infineon Technologies AG + This file has been modified for the XMC microcontroller series. +*/ +#ifndef _ARDUINO_H_ +#define _ARDUINO_H_ + +#include "api/ArduinoAPI.h" +#include "api/deprecated-avr-comp/avr/pgmspace.h" +#include "api/deprecated-avr-comp/avr/dtostrf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//**************************************************************************** +// @Std Includes +//**************************************************************************** +#include +#include +#include +#include +#include +#include + +//**************************************************************************** +// @XMC Lib Includes +//**************************************************************************** +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//**************************************************************************** +// @Defines +//**************************************************************************** +#define clockCyclesPerMicrosecond() (F_CPU / 1000000L) +#define clockCyclesToMicroseconds(a) (((a) * 1000L) / (F_CPU / 1000L)) +#define microsecondsToClockCycles(a) ((a) * (F_CPU / 1000000L)) + +// default XMC_SPI instance is XMC_SPI_0 for all variants +#define XMC_SPI_default XMC_SPI_0 +// default XMC_I2C instance is XMC_I2C_0 for all variants +#define XMC_I2C_default XMC_I2C_0 +// used by XMC_I2S +#define BUFFER_SIZE 512 + +//**************************************************************************** +// @Typedefs +//**************************************************************************** +/* + * XMC USIC channel input selection types + */ +typedef enum { + XMC_INPUT_A = 0U, /*< Input-A */ + XMC_INPUT_B, /*< Input-B */ + XMC_INPUT_C, /*< Input-C */ + XMC_INPUT_D, /*< Input-D */ + XMC_INPUT_E, /*< Input-E */ + XMC_INPUT_F, /*< Input-F */ + XMC_INPUT_G, /*< Input-G */ + XMC_INPUT_INVALID /*< This is to check during mode switch */ +} XMC_USIC_INPUT_t; + +/* + * XMC port pin type + */ +typedef struct { + XMC_GPIO_PORT_t *port; + unsigned pin; +} XMC_PORT_PIN_t; + +/* + * XMC pin interrupt type + */ +#if defined(INTERRUPT_USE_ERU) +typedef struct { + XMC_ERU_t *eru; + XMC_ERU_ETL_INPUT_A_t input_a; + XMC_ERU_ETL_INPUT_B_t input_b; + uint8_t etl; + uint8_t ogu; + uint8_t irq_num; +} XMC_PIN_INTERRUPT_t; +#else +typedef struct { + XMC_CCU4_MODULE_t *ccu; + XMC_CCU4_SLICE_t *slice; + uint8_t slice_num; + uint8_t irq_num; + XMC_CCU4_SLICE_INPUT_t input; +} XMC_PIN_INTERRUPT_t; +#endif + +/* + * XMC PWM type (CCU4) + */ +typedef struct { + XMC_CCU4_MODULE_t *ccu; + XMC_CCU4_SLICE_t *slice; + uint8_t slice_num; + XMC_PORT_PIN_t port_pin; + XMC_GPIO_MODE_t port_mode; + XMC_CCU4_SLICE_PRESCALER_t prescaler; + uint32_t period_timer_val; + bool enabled; +} XMC_PWM4_t; + +#if defined(CCU8V2) || defined(CCU8V3) || defined(CCU8V1) +/* + * XMC PWM type (CCU8) + */ +typedef struct { + XMC_CCU8_MODULE_t *ccu; + XMC_CCU8_SLICE_t *slice; + uint8_t slice_num; + XMC_CCU8_SLICE_COMPARE_CHANNEL_t slice_channel; + XMC_PORT_PIN_t port_pin; + XMC_GPIO_MODE_t port_mode; + XMC_CCU8_SLICE_PRESCALER_t prescaler; + uint32_t period_timer_val; + bool enabled; +} XMC_PWM8_t; +#endif + +#ifdef DAC +// TODO: find a better name; XMC_DAC_t is already used by XMCLib +/* + * XMC DAC type + */ +typedef struct { + XMC_DAC_t *group; + uint8_t channel; + uint8_t resolution; // number of resolution bits +} XMC_ARD_DAC_t; +#endif + +/* + * XMC VADC type (with or without adc grouping) + */ +typedef struct { + XMC_VADC_GLOBAL_t *global; + uint8_t channel_num; +#if (XMC_VADC_GROUP_AVAILABLE == 1U) + XMC_VADC_GROUP_t *group; + uint8_t group_num; + uint32_t result_reg_num; +#endif + bool enabled; +} XMC_ADC_t; + +/* + * XMC UART type + */ +typedef struct { + XMC_USIC_CH_t *channel; + XMC_PORT_PIN_t rx; + XMC_GPIO_CONFIG_t rx_config; + XMC_PORT_PIN_t tx; + XMC_GPIO_CONFIG_t tx_config; + XMC_USIC_INPUT_t input_source_dx0; + // Use to activate additional Input MUXs to select input pin (if not used if use: + // XMC_INPUT_INVALID) + XMC_USIC_INPUT_t input_source_dx1; + XMC_USIC_INPUT_t input_source_dx2; + XMC_USIC_INPUT_t input_source_dx3; + IRQn_Type irq_num; + uint32_t irq_service_request; +} XMC_UART_t; + +/* + * XMC SPI type + */ +typedef struct { + XMC_USIC_CH_t *channel; + XMC_SPI_CH_CONFIG_t channel_config; + XMC_PORT_PIN_t mosi; + XMC_GPIO_CONFIG_t mosi_config; + XMC_PORT_PIN_t miso; + XMC_GPIO_CONFIG_t miso_config; + XMC_USIC_INPUT_t input_source; + XMC_PORT_PIN_t sclkout; + XMC_GPIO_CONFIG_t sclkout_config; +} XMC_SPI_t; + +/* + * XMC I2C type + */ +typedef struct { + XMC_USIC_CH_t *channel; + XMC_I2C_CH_CONFIG_t channel_config; + XMC_PORT_PIN_t sda; + XMC_GPIO_CONFIG_t sda_config; + XMC_PORT_PIN_t scl; + XMC_GPIO_CONFIG_t scl_config; + XMC_USIC_INPUT_t input_source_dx0; + XMC_USIC_INPUT_t input_source_dx1; + IRQn_Type slave_receive_irq_num; + uint32_t slave_receive_irq_service_request; + IRQn_Type protocol_irq_num; + uint32_t protocol_irq_service_request; +} XMC_I2C_t; + +/* + * XMC I2S type + */ +typedef struct { + XMC_GPIO_CONFIG_t input_config; + XMC_GPIO_CONFIG_t sclk_config; + XMC_GPIO_CONFIG_t wa_config; + IRQn_Type protocol_irq_num; + uint32_t protocol_irq_service_request; +#if (UC_SERIES == XMC14) + XMC_SCU_IRQCTRL_t protocol_irq_source; +#endif +} XMC_I2S_t; + +#ifdef CAN_xmc +/* + * XMC (Arduino) CAN type + */ + +typedef enum { XMC_NODE_NUM_0, XMC_NODE_NUM_1 } XMC_CAN_NODE_NUM_t; + +typedef struct { + CAN_NODE_TypeDef *can_node; + XMC_CAN_NODE_NUM_t can_node_num; + XMC_CAN_CANCLKSRC_t can_clock; + uint32_t can_frequency; + XMC_PORT_PIN_t rx; + XMC_GPIO_CONFIG_t rx_config; + XMC_PORT_PIN_t tx; + XMC_GPIO_CONFIG_t tx_config; + XMC_CAN_NODE_RECEIVE_INPUT_t node_input; + IRQn_Type irq_num; + uint32_t irq_service_request; + #if (UC_SERIES == XMC14) + XMC_SCU_IRQCTRL_t irq_source; + #endif +} XMC_ARD_CAN_t; +#endif + +//**************************************************************************** +// @Imported Global Variables +//**************************************************************************** +extern const XMC_PORT_PIN_t mapping_port_pin[]; +extern const XMC_PIN_INTERRUPT_t mapping_interrupt[]; +extern const uint8_t mapping_pin_PWM4[][2]; +extern XMC_PWM4_t mapping_pwm4[]; +extern XMC_ADC_t mapping_adc[]; +#if defined(CCU8V2) || defined(CCU8V3) || defined(CCU8V1) +extern const uint8_t mapping_pin_PWM8[][2]; +extern XMC_PWM8_t mapping_pwm8[]; +#endif +#ifdef DAC +extern const uint8_t mapping_pin_DAC[][2]; +extern XMC_ARD_DAC_t mapping_dac[]; +#endif +extern XMC_UART_t XMC_UART_debug; +extern XMC_UART_t XMC_UART_on_board; + +extern XMC_SPI_t XMC_SPI_0; +// Some boards for eg. XMC4700 Relax Kit has more than one SPI instance +extern XMC_SPI_t XMC_SPI_1; +extern XMC_SPI_t XMC_SPI_2; + +extern XMC_I2C_t XMC_I2C_0; +// Some boards for eg. XMC4700 Relax Kit has more than one I2C instance +extern XMC_I2C_t XMC_I2C_1; + +extern XMC_I2S_t i2s_config; + +#ifdef CAN_xmc +extern XMC_ARD_CAN_t XMC_CAN_0; +#endif +//**************************************************************************** +// @Prototypes Of Global Functions +//**************************************************************************** + +/* + * \brief Arduino yield function. + */ +void yield(void); + +/* + * \brief Arduino Main setup function. Called only once at the beginning. + */ +extern void setup(void); + +/* + * \brief Arduino Main loop function. Called in an endless loop. + */ +extern void loop(void); + +//**************************************************************************** +// @Arduino Core Includes +//**************************************************************************** +/* +#include "wiring_digital.h" +#include "wiring_analog.h" +#include "wiring_shift.h" +#include "wiring_time.h" +#include "wiring_pulse.h" + +#include "WInterrupts.h" +*/ +//**************************************************************************** +// @Infineon Core Includes +//**************************************************************************** + +// #include "reset.h" + +#ifdef __cplusplus +} // extern "C" +// #include "Tone.h" +// #include "WMath.h" +#endif // __cplusplus + +//#include "Print.h" +//#include "HardwareSerial.h" + + +//**************************************************************************** +// @Board Variant Includes +//**************************************************************************** +#include + +#endif /*_ARDUINO_H_ */ \ No newline at end of file diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp new file mode 100644 index 00000000..1316a3a5 --- /dev/null +++ b/cores/xmc/main.cpp @@ -0,0 +1,60 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + + +//**************************************************************************** +// @Defines +//**************************************************************************** +#define ARDUINO_MAIN + +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "Arduino.h" + +// Weak empty variant initialization function. +// May be redefined by variant files. +void initVariant() __attribute__((weak)); +void initVariant() { } + + +int main(void) { + /* + * Initialization Time first to get closer to startup time accuracy + */ + // wiring_time_init(); + // wiring_analog_init(); + +// Initialize the reset pin for the XMC1100 Boot Kit series and XMC1400 Kit for Arduino as they are +// based on Arduino form-factor Hence, a dedicated reset pin is required. +#ifdef HAS_GPIO_RESET + reset_init(); +#endif + + // Arduino's main() function just calls setup() and loop().... + setup(); + while (1) { + loop(); + // serialEventRun(); + } +} + +//**************************************************************************** +// END OF FILE +//**************************************************************************** diff --git a/platform.txt b/platform.txt index 5435906c..50570a87 100644 --- a/platform.txt +++ b/platform.txt @@ -10,7 +10,7 @@ version=3.0.0 # Build related core definitions # --------- -build.core.path ={runtime.platform.path}/core +build.core.path ={runtime.platform.path}/cores/xmc build.variant.path ={runtime.platform.path}/variants/{build.variant} build.variant.config_path ={runtime.platform.path}/variants/{build.variant}/config/{build.board_variant} build.flash_ld_path ={build.variant.path}/{build.flash_ld} @@ -42,11 +42,17 @@ compiler.warning_flags=-w compiler.define=-DARDUINO= # Compiler include paths for include files +compiler.core_xmc.path = {runtime.platform.path}/cores/xmc compiler.xmclib_include.path={runtime.platform.path}/cores/xmc_lib compiler.cmsis_include.path={compiler.xmclib_include.path}/CMSIS/Include compiler.nn_include.path={compiler.xmclib_include.path}/CMSIS/NN/Include compiler.dsp_include.path={compiler.xmclib_include.path}/CMSIS/DSP/Include +compiler.arduino_core.path={runtime.platform.path}/cores/arduino/api +compiler.arduino_core_dep.path={compiler.arduino_core.path}/deprecated +compiler.arduino_core_dep_avr.path={compiler.arduino_core.path}/deprecated-avr-comp/avr +compiler.arduino_core_api.path= "-I{compiler.arduino_core_dep_avr.path}" "-I{compiler.arduino_core_dep.path}" "-I{compiler.arduino_core.path}" + compiler.arm.cmsis.path= "-I{compiler.xmclib_include.path}/XMCLib/inc" "-I{compiler.dsp_include.path}" "-I{compiler.nn_include.path}" "-I{compiler.cmsis_include.path}" "-I{compiler.xmclib_include.path}/LIBS" "-I{build.variant.path}" "-I{build.variant.config_path}" compiler.avr_support.path= "-I{build.core.path}/avr" compiler.usb.path = "-I{runtime.platform.path}/cores/usblib" "-I{runtime.platform.path}/cores/usblib/Common" "-I{runtime.platform.path}/cores/usblib/Class" "-I{runtime.platform.path}/cores/usblib/Class/Common" "-I{runtime.platform.path}/cores/usblib/Class/Device" "-I{runtime.platform.path}/cores/usblib/Core" "-I{runtime.platform.path}/cores/usblib/Core/XMC4000" @@ -84,14 +90,17 @@ compiler.elf2hex.extra_flags= # Compile patterns # ---------------- +# Includes +includes=-I{runtime.platform.path}/cores/xmc + ## Compile C files -recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {includes} "{source_file}" -o "{object_file}" +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" ## Compile C++ files -recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {includes} "{source_file}" -o "{object_file}" +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" ## Compile S files -recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {includes} "{source_file}" -o "{object_file}" +recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" # Linker patterns # ---------------- @@ -103,6 +112,7 @@ recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" -mthumb --specs=n # ---------------- # Archive_file_path is needed for backwards compatibility with IDE 1.6.5 or older, IDE 1.6.6 or newer overrides this value + archive_file_path={build.path}/{archive_file} recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" diff --git a/tools/dev-setup.sh b/tools/dev-setup.sh index defe710f..82989356 100644 --- a/tools/dev-setup.sh +++ b/tools/dev-setup.sh @@ -5,8 +5,7 @@ cd $(dirname $0) echo ${PWD} function git_submodule_setup { - git submodule init - git submodule update + git submodule update --init --recursive } function core_api_setup { @@ -22,7 +21,7 @@ function core_api_setup { mkdir -p "$cores_xmc_dir" echo "Directory created: $cores_xmc_dir" fi - ln -sf ${core_api_submodule_dir}/api ${cores_xmc_dir} + ln -s ${core_api_submodule_dir}/api ${cores_xmc_dir} } diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index 22878e88..77545023 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -255,255 +255,255 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { /* 96 */ {XMC_GPIO_PORT1, 12}, // CAN_TX /* 97 */ {XMC_GPIO_PORT1, 13} // CAN_RX }; -const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); -const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); -; - -const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { - /* 0 */ {CCU40, CCU40_CC43, 3, 0, CCU40_IN3_P1_0}, - /* 1 */ {CCU40, CCU40_CC42, 2, 1, CCU40_IN2_P1_1}}; -const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERRUPT_t)); - -/* Mapping of Arduino Pins to PWM4 channels as pin and index in PWM4 channel - mapping array XMC_PWM4_t mapping_pwm4[] - last entry 255 for both parts. - Putting both parts in array means if a PWM4 channel gets reassigned for - another function later a gap in channel numbers will not mess things up */ -const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 - {10, 1}, // PWM4 - {11, 2}, // PWM5 - {93, 3}, // PWM20 - {70, 4}, // PWM21 - {94, 5}, // PWM22 - {61, 6}, // PWM7 - {34, 7}, // PWM12 - {76, 8}, // PWM17 - {88, 9}, // PWM18 - {89, 10}, // PWM19 - {255, 255}}; - -/* Configurations of PWM channels for CCU4 type */ -XMC_PWM4_t mapping_pwm4[] = { - {CCU40, CCU40_CC42, 2, mapping_port_pin[3], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P1.1 - {CCU41, CCU41_CC40, 0, mapping_port_pin[10], P3_10_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 10 P3.10 - {CCU41, CCU41_CC42, 2, mapping_port_pin[11], P3_8_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 11 P3.8 - {CCU40, CCU40_CC40, 0, mapping_port_pin[93], P0_15_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 93 P0.15 - {CCU40, CCU40_CC41, 1, mapping_port_pin[70], P0_14_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 70 P0.14 - {CCU40, CCU40_CC43, 3, mapping_port_pin[94], P0_12_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 94 P0.12 - {CCU42, CCU42_CC40, 0, mapping_port_pin[61], P3_0_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 61 P3.0 - {CCU42, CCU42_CC42, 2, mapping_port_pin[34], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 34 P3.4 - {CCU43, CCU43_CC40, 0, mapping_port_pin[76], P6_5_AF_CCU43_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 76 P6.5 - {CCU43, CCU43_CC41, 1, mapping_port_pin[88], P6_4_AF_CCU43_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 88 P6.4 - {CCU43, CCU43_CC43, 3, mapping_port_pin[89], P6_2_AF_CCU43_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 89 P6.2 -}; -const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); - -/* Mapping in same manner as PWM4 for PWM8 channels */ -const uint8_t mapping_pin_PWM8[][2] = {{5, 0}, // PWM1 - {6, 1}, // PWM2 - {9, 2}, // PWM3 - {51, 3}, // PWM6 - {37, 4}, // PWM9 - {62, 5}, // PWM8 - {36, 6}, // PWM10 - {66, 7}, // PWM11 - {77, 8}, // PWM16 - {81, 9}, // PWM13 - {80, 10}, // PWM14 - {79, 11}, // PWM15 - {255, 255}}; - -/* Configurations of PWM channels for CCU8 type */ -XMC_PWM8_t mapping_pwm8[] = { - {CCU81, CCU81_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[5], - P2_12_AF_CCU81_OUT33, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 5 P2.12 - {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[6], - P2_11_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 6 P2.11 - {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], - P1_11_AF_CCU81_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 9 P1.11 - {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[51], - P5_11_AF_CCU80_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 51 P5.11 - {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[37], - P0_1_AF_CCU80_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 37 P0.1 - {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[62], - P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 62 P0.9 - {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[36], - P0_3_AF_CCU80_OUT20, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 36 P0.3 - {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[66], - P0_6_AF_CCU80_OUT30, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 66 P0.6 - {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[77], - P1_15_AF_CCU81_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 77 P1.15 - {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[81], - P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 81 P5.7 - {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[80], - P5_5_AF_CCU81_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 80 P5.5 - {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[79], - P5_3_AF_CCU81_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED} // PWM disabled 79 P5.3 -}; -const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); -const uint8_t NUM_PWM = - (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)) + (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); - - /* Analog Pin mappings and configurations */ - #ifdef DAC -const uint8_t mapping_pin_DAC[][2] = {{48, 0}, {53, 1}, {255, 255}}; -XMC_ARD_DAC_t mapping_dac[] = {{XMC_DAC0, 1, 12}, {XMC_DAC0, 0, 12}}; -const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)); - #endif - -// Result reg numbers are now equal to channel numbers -XMC_ADC_t mapping_adc[] = {{VADC, 0, VADC_G0, 0, 0, DISABLED}, {VADC, 1, VADC_G0, 0, 1, DISABLED}, - {VADC, 2, VADC_G1, 1, 2, DISABLED}, {VADC, 3, VADC_G1, 1, 3, DISABLED}, - {VADC, 0, VADC_G2, 2, 0, DISABLED}, {VADC, 1, VADC_G2, 2, 1, DISABLED}, - {VADC, 6, VADC_G2, 2, 6, DISABLED}, {VADC, 5, VADC_G2, 2, 5, DISABLED}, - {VADC, 3, VADC_G2, 2, 3, DISABLED}, {VADC, 7, VADC_G1, 1, 7, DISABLED}, - {VADC, 5, VADC_G1, 1, 5, DISABLED}, {VADC, 7, VADC_G0, 0, 7, DISABLED}, - {VADC, 7, VADC_G3, 3, 7, DISABLED}, {VADC, 1, VADC_G1, 1, 1, DISABLED}, - {VADC, 0, VADC_G1, 1, 0, DISABLED}, {VADC, 6, VADC_G3, 3, 6, DISABLED}, - {VADC, 6, VADC_G0, 0, 6, DISABLED}, {VADC, 4, VADC_G1, 1, 4, DISABLED}, - {VADC, 6, VADC_G1, 1, 6, DISABLED}, {VADC, 2, VADC_G2, 2, 2, DISABLED}, - {VADC, 4, VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; -const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); - -/* - * UART objects - * - * Serial 0 is Debug port - * Serial 1 is on-board port - */ -RingBuffer rx_buffer_0; -RingBuffer tx_buffer_0; -RingBuffer rx_buffer_1; -RingBuffer tx_buffer_1; - -XMC_UART_t XMC_UART_0 = { - .channel = XMC_UART0_CH0, - .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)4}, - .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)5}, - .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .input_source_dx0 = (XMC_USIC_INPUT_t)USIC0_C0_DX0_P1_4, - .input_source_dx1 = XMC_INPUT_INVALID, - .input_source_dx2 = XMC_INPUT_INVALID, - .input_source_dx3 = XMC_INPUT_INVALID, - .irq_num = USIC0_0_IRQn, - .irq_service_request = 0}; - -XMC_UART_t XMC_UART_1 = { - .channel = XMC_UART1_CH0, - .rx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)15}, - .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .tx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14}, - .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .input_source_dx0 = (XMC_USIC_INPUT_t)USIC1_C0_DX0_P2_15, - .input_source_dx1 = XMC_INPUT_INVALID, - .input_source_dx2 = XMC_INPUT_INVALID, - .input_source_dx3 = XMC_INPUT_INVALID, - .irq_num = USIC1_0_IRQn, - .irq_service_request = 0}; - -// Debug port -HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); -// On-board port -HardwareSerial Serial1(&XMC_UART_1, &rx_buffer_1, &tx_buffer_1); - -// Three SPI instances possible -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI2_CH0, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)8}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)7}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_C, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)9}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -}; +// const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +// const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +// ; + +// const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { +// /* 0 */ {CCU40, CCU40_CC43, 3, 0, CCU40_IN3_P1_0}, +// /* 1 */ {CCU40, CCU40_CC42, 2, 1, CCU40_IN2_P1_1}}; +// const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERRUPT_t)); + +// /* Mapping of Arduino Pins to PWM4 channels as pin and index in PWM4 channel +// mapping array XMC_PWM4_t mapping_pwm4[] +// last entry 255 for both parts. +// Putting both parts in array means if a PWM4 channel gets reassigned for +// another function later a gap in channel numbers will not mess things up */ +// const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 +// {10, 1}, // PWM4 +// {11, 2}, // PWM5 +// {93, 3}, // PWM20 +// {70, 4}, // PWM21 +// {94, 5}, // PWM22 +// {61, 6}, // PWM7 +// {34, 7}, // PWM12 +// {76, 8}, // PWM17 +// {88, 9}, // PWM18 +// {89, 10}, // PWM19 +// {255, 255}}; + +// /* Configurations of PWM channels for CCU4 type */ +// XMC_PWM4_t mapping_pwm4[] = { +// {CCU40, CCU40_CC42, 2, mapping_port_pin[3], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P1.1 +// {CCU41, CCU41_CC40, 0, mapping_port_pin[10], P3_10_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 10 P3.10 +// {CCU41, CCU41_CC42, 2, mapping_port_pin[11], P3_8_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 11 P3.8 +// {CCU40, CCU40_CC40, 0, mapping_port_pin[93], P0_15_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 93 P0.15 +// {CCU40, CCU40_CC41, 1, mapping_port_pin[70], P0_14_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 70 P0.14 +// {CCU40, CCU40_CC43, 3, mapping_port_pin[94], P0_12_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 94 P0.12 +// {CCU42, CCU42_CC40, 0, mapping_port_pin[61], P3_0_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 61 P3.0 +// {CCU42, CCU42_CC42, 2, mapping_port_pin[34], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 34 P3.4 +// {CCU43, CCU43_CC40, 0, mapping_port_pin[76], P6_5_AF_CCU43_OUT0, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 76 P6.5 +// {CCU43, CCU43_CC41, 1, mapping_port_pin[88], P6_4_AF_CCU43_OUT1, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 88 P6.4 +// {CCU43, CCU43_CC43, 3, mapping_port_pin[89], P6_2_AF_CCU43_OUT3, XMC_CCU4_SLICE_PRESCALER_64, +// PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 89 P6.2 +// }; +// const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); + +// /* Mapping in same manner as PWM4 for PWM8 channels */ +// const uint8_t mapping_pin_PWM8[][2] = {{5, 0}, // PWM1 +// {6, 1}, // PWM2 +// {9, 2}, // PWM3 +// {51, 3}, // PWM6 +// {37, 4}, // PWM9 +// {62, 5}, // PWM8 +// {36, 6}, // PWM10 +// {66, 7}, // PWM11 +// {77, 8}, // PWM16 +// {81, 9}, // PWM13 +// {80, 10}, // PWM14 +// {79, 11}, // PWM15 +// {255, 255}}; + +// /* Configurations of PWM channels for CCU8 type */ +// XMC_PWM8_t mapping_pwm8[] = { +// {CCU81, CCU81_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[5], +// P2_12_AF_CCU81_OUT33, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 5 P2.12 +// {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[6], +// P2_11_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 6 P2.11 +// {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], +// P1_11_AF_CCU81_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 9 P1.11 +// {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[51], +// P5_11_AF_CCU80_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 51 P5.11 +// {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[37], +// P0_1_AF_CCU80_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 37 P0.1 +// {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[62], +// P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 62 P0.9 +// {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[36], +// P0_3_AF_CCU80_OUT20, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 36 P0.3 +// {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[66], +// P0_6_AF_CCU80_OUT30, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 66 P0.6 +// {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[77], +// P1_15_AF_CCU81_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 77 P1.15 +// {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[81], +// P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 81 P5.7 +// {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[80], +// P5_5_AF_CCU81_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED}, // PWM disabled 80 P5.5 +// {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[79], +// P5_3_AF_CCU81_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, +// DISABLED} // PWM disabled 79 P5.3 +// }; +// const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); +// const uint8_t NUM_PWM = +// (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)) + (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); + +// /* Analog Pin mappings and configurations */ +// #ifdef DAC +// const uint8_t mapping_pin_DAC[][2] = {{48, 0}, {53, 1}, {255, 255}}; +// XMC_ARD_DAC_t mapping_dac[] = {{XMC_DAC0, 1, 12}, {XMC_DAC0, 0, 12}}; +// const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)); +// #endif + +// // Result reg numbers are now equal to channel numbers +// XMC_ADC_t mapping_adc[] = {{VADC, 0, VADC_G0, 0, 0, DISABLED}, {VADC, 1, VADC_G0, 0, 1, DISABLED}, +// {VADC, 2, VADC_G1, 1, 2, DISABLED}, {VADC, 3, VADC_G1, 1, 3, DISABLED}, +// {VADC, 0, VADC_G2, 2, 0, DISABLED}, {VADC, 1, VADC_G2, 2, 1, DISABLED}, +// {VADC, 6, VADC_G2, 2, 6, DISABLED}, {VADC, 5, VADC_G2, 2, 5, DISABLED}, +// {VADC, 3, VADC_G2, 2, 3, DISABLED}, {VADC, 7, VADC_G1, 1, 7, DISABLED}, +// {VADC, 5, VADC_G1, 1, 5, DISABLED}, {VADC, 7, VADC_G0, 0, 7, DISABLED}, +// {VADC, 7, VADC_G3, 3, 7, DISABLED}, {VADC, 1, VADC_G1, 1, 1, DISABLED}, +// {VADC, 0, VADC_G1, 1, 0, DISABLED}, {VADC, 6, VADC_G3, 3, 6, DISABLED}, +// {VADC, 6, VADC_G0, 0, 6, DISABLED}, {VADC, 4, VADC_G1, 1, 4, DISABLED}, +// {VADC, 6, VADC_G1, 1, 6, DISABLED}, {VADC, 2, VADC_G2, 2, 2, DISABLED}, +// {VADC, 4, VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; +// const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); + +// /* +// * UART objects +// * +// * Serial 0 is Debug port +// * Serial 1 is on-board port +// */ +// RingBuffer rx_buffer_0; +// RingBuffer tx_buffer_0; +// RingBuffer rx_buffer_1; +// RingBuffer tx_buffer_1; + +// XMC_UART_t XMC_UART_0 = { +// .channel = XMC_UART0_CH0, +// .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)4}, +// .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, +// .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)5}, +// .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, +// .input_source_dx0 = (XMC_USIC_INPUT_t)USIC0_C0_DX0_P1_4, +// .input_source_dx1 = XMC_INPUT_INVALID, +// .input_source_dx2 = XMC_INPUT_INVALID, +// .input_source_dx3 = XMC_INPUT_INVALID, +// .irq_num = USIC0_0_IRQn, +// .irq_service_request = 0}; + +// XMC_UART_t XMC_UART_1 = { +// .channel = XMC_UART1_CH0, +// .rx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)15}, +// .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, +// .tx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14}, +// .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, +// .input_source_dx0 = (XMC_USIC_INPUT_t)USIC1_C0_DX0_P2_15, +// .input_source_dx1 = XMC_INPUT_INVALID, +// .input_source_dx2 = XMC_INPUT_INVALID, +// .input_source_dx3 = XMC_INPUT_INVALID, +// .irq_num = USIC1_0_IRQn, +// .irq_service_request = 0}; + +// // Debug port +// // HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +// // On-board port +// // HardwareSerial Serial1(&XMC_UART_1, &rx_buffer_1, &tx_buffer_1); + +// // Three SPI instances possible +// XMC_SPI_t XMC_SPI_0 = { +// .channel = XMC_SPI2_CH0, +// .channel_config = {.baudrate = 20003906U, +// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, +// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, +// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, +// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)8}, +// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)7}, +// .miso_config = +// { +// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// }, +// .input_source = XMC_INPUT_C, +// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)9}, +// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// }; -XMC_SPI_t XMC_SPI_1 = { - .channel = XMC_SPI0_CH1, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT4_BASE, .pin = (uint8_t)0}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_E, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)6}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -}; +// XMC_SPI_t XMC_SPI_1 = { +// .channel = XMC_SPI0_CH1, +// .channel_config = {.baudrate = 20003906U, +// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, +// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, +// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, +// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, +// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// .miso = {.port = (XMC_GPIO_PORT_t *)PORT4_BASE, .pin = (uint8_t)0}, +// .miso_config = +// { +// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// }, +// .input_source = XMC_INPUT_E, +// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)6}, +// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// }; -XMC_SPI_t XMC_SPI_2 = { - .channel = XMC_SPI2_CH1, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)11}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)12}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_D, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -}; +// XMC_SPI_t XMC_SPI_2 = { +// .channel = XMC_SPI2_CH1, +// .channel_config = {.baudrate = 20003906U, +// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, +// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, +// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, +// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)11}, +// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)12}, +// .miso_config = +// { +// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// }, +// .input_source = XMC_INPUT_D, +// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, +// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// }; // Only two serial objects are possible: Serial and Serial1 so anymore serial interfaces has to // overwrite/reuse the existing serial objects @@ -584,90 +584,90 @@ XMC_SPI_t XMC_SPI_2 = { //}; // Two I2C instances possible -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)13}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .input_source_dx0 = XMC_INPUT_A, - .input_source_dx1 = XMC_INPUT_B, - .slave_receive_irq_num = (IRQn_Type)91, - .slave_receive_irq_service_request = 1, - .protocol_irq_num = (IRQn_Type)92, - .protocol_irq_service_request = 2}; -XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .input_source_dx0 = XMC_INPUT_B, - .input_source_dx1 = XMC_INPUT_A, - .slave_receive_irq_num = (IRQn_Type)93, - .slave_receive_irq_service_request = 3, - .protocol_irq_num = (IRQn_Type)94, - .protocol_irq_service_request = 4}; - -// XMC_I2S instance -XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .protocol_irq_num = (IRQn_Type)USIC2_2_IRQn, - .protocol_irq_service_request = 2}; - - // XMC CAN instance - #ifdef CAN_xmc -XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, - .can_node_num = XMC_NODE_NUM_1, - .can_clock = XMC_CAN_CANCLKSRC_FPERI, - .can_frequency = (uint32_t)144000000, - .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, - .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, - .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, - .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, - .node_input = CAN_NODE1_RXD_P1_13, - .irq_num = CAN0_7_IRQn, - .irq_service_request = 7u}; - #endif - - // Serial Interrupt and event handling - #ifdef __cplusplus -extern "C" { - #endif -void serialEventRun(); -void serialEvent() __attribute__((weak)); -void serialEvent1() __attribute__((weak)); - -void serialEventRun() { - if (serialEvent) { - if (Serial.available()) - serialEvent(); - } - if (serialEvent1) { - if (Serial1.available()) - serialEvent1(); - } -} - -void USIC0_0_IRQHandler() { Serial.IrqHandler(); } - -void USIC1_0_IRQHandler() { Serial1.IrqHandler(); } - #ifdef __cplusplus -} - #endif +// XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, +// .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, +// .sda = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, +// .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, +// .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)13}, +// .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, +// .input_source_dx0 = XMC_INPUT_A, +// .input_source_dx1 = XMC_INPUT_B, +// .slave_receive_irq_num = (IRQn_Type)91, +// .slave_receive_irq_service_request = 1, +// .protocol_irq_num = (IRQn_Type)92, +// .protocol_irq_service_request = 2}; +// XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, +// .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, +// .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, +// .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, +// .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, +// .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, +// .input_source_dx0 = XMC_INPUT_B, +// .input_source_dx1 = XMC_INPUT_A, +// .slave_receive_irq_num = (IRQn_Type)93, +// .slave_receive_irq_service_request = 3, +// .protocol_irq_num = (IRQn_Type)94, +// .protocol_irq_service_request = 4}; + +// // XMC_I2S instance +// XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, +// .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, +// .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, +// .protocol_irq_num = (IRQn_Type)USIC2_2_IRQn, +// .protocol_irq_service_request = 2}; + +// // XMC CAN instance +// #ifdef CAN_xmc +// XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, +// .can_node_num = XMC_NODE_NUM_1, +// .can_clock = XMC_CAN_CANCLKSRC_FPERI, +// .can_frequency = (uint32_t)144000000, +// .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, +// .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, +// .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, +// .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, +// .node_input = CAN_NODE1_RXD_P1_13, +// .irq_num = CAN0_7_IRQn, +// .irq_service_request = 7u}; +// #endif + +// // Serial Interrupt and event handling +// #ifdef __cplusplus +// extern "C" { +// #endif +// void serialEventRun(); +// void serialEvent() __attribute__((weak)); +// void serialEvent1() __attribute__((weak)); + +// void serialEventRun() { +// if (serialEvent) { +// if (Serial.available()) +// serialEvent(); +// } +// if (serialEvent1) { +// if (Serial1.available()) +// serialEvent1(); +// } +// } + +// void USIC0_0_IRQHandler() { Serial.IrqHandler(); } + +// void USIC1_0_IRQHandler() { Serial1.IrqHandler(); } +// #ifdef __cplusplus +// } +// #endif #endif /* ARDUINO_MAIN */ -#ifdef __cplusplus -extern HardwareSerial Serial; -extern HardwareSerial Serial1; -#endif /* cplusplus */ +// #ifdef __cplusplus +// extern HardwareSerial Serial; +// extern HardwareSerial Serial1; +// #endif /* cplusplus */ #endif /* PINS_ARDUINO_H_ */ From 1483e46a0e6b5519fa42fb7e22bd8b94a8d9f3f7 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 26 Mar 2025 10:55:50 +0100 Subject: [PATCH 008/366] .pre-commit-config.yaml: Change xmc_lib path. Signed-off-by: zhanglinjing --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4c6e921a..03c365f2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ repos: hooks: - id: clang-format args: ["-style=file:config/clang-format/.clang-format"] - exclude: ^cores/(avr|usblib|xmc_lib)/ + exclude: ^cores/xmc/(avr|usblib|xmc_lib)/ files: \.(c|cpp|h|hpp)$ - repo: local hooks: From 3d48521be312dc740a634356cf91338c99c23538 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 26 Mar 2025 10:56:31 +0100 Subject: [PATCH 009/366] cores/: Move cores/xmc_lib to cores/xmc/xmc_lib. Signed-off-by: zhanglinjing --- cores/{ => xmc}/xmc_lib/CMSIS/DSP/Include/arm_common_tables.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Include/arm_const_structs.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Include/arm_math.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_abs_f32.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_bitreversal.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_bitreversal2.S | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_cfft_f32.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_cfft_radix8_f32.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_common_tables.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_const_structs.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_copy_q7.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_mean_f32.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_mean_q15.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_mean_q31.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_f32.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_init_f32.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_var_f32.c | 0 cores/{ => xmc}/xmc_lib/CMSIS/Include/cmsis_compiler.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/Include/cmsis_gcc.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/Include/cmsis_version.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/Include/core_cm0.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/Include/core_cm4.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/Include/mpu_armv7.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/NN/Include/arm_nn_tables.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/NN/Include/arm_nnfunctions.h | 0 cores/{ => xmc}/xmc_lib/CMSIS/NN/Include/arm_nnsupportfunctions.h | 0 .../CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c | 0 .../CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c | 0 .../xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c | 0 .../xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c | 0 .../ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c | 0 .../NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c | 0 .../NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c | 0 .../NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c | 0 .../NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c | 0 .../NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c | 0 .../ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c | 0 .../ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c | 0 .../arm_depthwise_separable_conv_HWC_q7_nonsquare.c | 0 .../Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c | 0 .../arm_nn_mat_mult_kernel_q7_q15_reordered.c | 0 .../FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c | 0 .../arm_fully_connected_mat_q7_vec_q15_opt.c | 0 .../NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c | 0 .../Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c | 0 .../NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c | 0 .../Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c | 0 .../xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c | 0 .../CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c | 0 .../Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c | 0 .../xmc_lib/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c | 0 .../xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c | 0 .../xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c | 0 cores/{ => xmc}/xmc_lib/LIBS/syscalls.c | 0 cores/{ => xmc}/xmc_lib/LIBS/types.h | 0 cores/{ => xmc}/xmc_lib/README.md | 0 cores/{ => xmc}/xmc_lib/XMCLib/License.txt | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_ccu4_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_ccu8_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_eru_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_flash.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_gpio.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_gpio_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_rtc.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_scu.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_usic_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_ccu4_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_ccu8_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_eru_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_flash.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_gpio.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_gpio_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_rtc.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_scu.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_usic_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_acmp.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_bccu.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_can.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_can_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ccu4.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ccu8.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_common.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_dac.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_device.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_dma.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_dma_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_dsd.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ebu.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ecat.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ecat_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_eru.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_eth_mac.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_eth_mac_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_eth_phy.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_fce.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_flash.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_gpio.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_hrpwm.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_hrpwm_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_i2c.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_i2s.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ledts.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_math.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_pau.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_posif.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_posif_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_prng.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_rtc.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_scu.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_sdmmc.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_spi.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_uart.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_usbd.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_usbd_regs.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_usbh.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_usic.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_vadc.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_vadc_map.h | 0 cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_wdt.h | 0 .../XMCLib/src/COMPONENT_CM0/TOOLCHAIN_ARM/xmc_common_mdk.s | 0 .../XMCLib/src/COMPONENT_CM0/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S | 0 .../XMCLib/src/COMPONENT_CM0/TOOLCHAIN_IAR/xmc_common_iar.s | 0 .../XMCLib/src/COMPONENT_CM4/TOOLCHAIN_ARM/xmc_common_mdk.s | 0 .../XMCLib/src/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S | 0 .../XMCLib/src/COMPONENT_CM4/TOOLCHAIN_IAR/xmc_common_iar.s | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_eru.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_flash.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_gpio.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_rtc.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_scu.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_eru.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_flash.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_gpio.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_rtc.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_scu.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_acmp.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_bccu.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_can.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ccu4.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ccu8.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_common.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_dac.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_dma.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_dsd.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ebu.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ecat.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eru.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eth_mac.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eth_phy_dp83848.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8031rnl.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8081rnb.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_fce.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_gpio.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_hrpwm.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_i2c.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_i2s.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ledts.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_math.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_pau.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_posif.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_prng.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_rtc.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_sdmmc.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_spi.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_uart.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_usbd.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_usbh.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_usic.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_vadc.c | 0 cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_wdt.c | 0 170 files changed, 0 insertions(+), 0 deletions(-) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Include/arm_common_tables.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Include/arm_const_structs.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Include/arm_math.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_abs_f32.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_bitreversal.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_bitreversal2.S (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_cfft_f32.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_cfft_radix8_f32.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_common_tables.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_const_structs.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_copy_q7.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_mean_f32.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_mean_q15.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_mean_q31.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_f32.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_init_f32.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/DSP/Source/arm_var_f32.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/Include/cmsis_compiler.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/Include/cmsis_gcc.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/Include/cmsis_version.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/Include/core_cm0.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/Include/core_cm4.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/Include/mpu_armv7.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Include/arm_nn_tables.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Include/arm_nnfunctions.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Include/arm_nnsupportfunctions.h (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c (100%) rename cores/{ => xmc}/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c (100%) rename cores/{ => xmc}/xmc_lib/LIBS/syscalls.c (100%) rename cores/{ => xmc}/xmc_lib/LIBS/types.h (100%) rename cores/{ => xmc}/xmc_lib/README.md (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/License.txt (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_ccu4_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_ccu8_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_eru_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_flash.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_gpio.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_gpio_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_rtc.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_scu.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc1_usic_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_ccu4_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_ccu8_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_eru_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_flash.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_gpio.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_gpio_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_rtc.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_scu.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc4_usic_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_acmp.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_bccu.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_can.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_can_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ccu4.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ccu8.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_common.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_dac.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_device.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_dma.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_dma_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_dsd.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ebu.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ecat.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ecat_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_eru.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_eth_mac.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_eth_mac_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_eth_phy.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_fce.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_flash.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_gpio.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_hrpwm.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_hrpwm_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_i2c.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_i2s.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_ledts.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_math.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_pau.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_posif.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_posif_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_prng.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_rtc.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_scu.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_sdmmc.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_spi.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_uart.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_usbd.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_usbd_regs.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_usbh.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_usic.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_vadc.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_vadc_map.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/inc/xmc_wdt.h (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_ARM/xmc_common_mdk.s (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_IAR/xmc_common_iar.s (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_ARM/xmc_common_mdk.s (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_IAR/xmc_common_iar.s (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_eru.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_flash.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_gpio.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_rtc.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc1_scu.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_eru.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_flash.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_gpio.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_rtc.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc4_scu.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_acmp.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_bccu.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_can.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ccu4.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ccu8.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_common.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_dac.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_dma.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_dsd.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ebu.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ecat.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eru.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eth_mac.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eth_phy_dp83848.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8031rnl.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8081rnb.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_fce.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_gpio.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_hrpwm.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_i2c.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_i2s.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_ledts.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_math.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_pau.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_posif.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_prng.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_rtc.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_sdmmc.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_spi.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_uart.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_usbd.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_usbh.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_usic.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_vadc.c (100%) rename cores/{ => xmc}/xmc_lib/XMCLib/src/xmc_wdt.c (100%) diff --git a/cores/xmc_lib/CMSIS/DSP/Include/arm_common_tables.h b/cores/xmc/xmc_lib/CMSIS/DSP/Include/arm_common_tables.h similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Include/arm_common_tables.h rename to cores/xmc/xmc_lib/CMSIS/DSP/Include/arm_common_tables.h diff --git a/cores/xmc_lib/CMSIS/DSP/Include/arm_const_structs.h b/cores/xmc/xmc_lib/CMSIS/DSP/Include/arm_const_structs.h similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Include/arm_const_structs.h rename to cores/xmc/xmc_lib/CMSIS/DSP/Include/arm_const_structs.h diff --git a/cores/xmc_lib/CMSIS/DSP/Include/arm_math.h b/cores/xmc/xmc_lib/CMSIS/DSP/Include/arm_math.h similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Include/arm_math.h rename to cores/xmc/xmc_lib/CMSIS/DSP/Include/arm_math.h diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_abs_f32.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_abs_f32.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_abs_f32.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_abs_f32.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_bitreversal.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_bitreversal.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_bitreversal.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_bitreversal.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_bitreversal2.S b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_bitreversal2.S similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_bitreversal2.S rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_bitreversal2.S diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_cfft_f32.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_cfft_f32.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_cfft_f32.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_cfft_f32.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_cfft_radix8_f32.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_cfft_radix8_f32.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_cfft_radix8_f32.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_cfft_radix8_f32.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_common_tables.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_common_tables.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_common_tables.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_common_tables.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_const_structs.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_const_structs.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_const_structs.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_const_structs.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_copy_q7.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_copy_q7.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_copy_q7.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_copy_q7.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_mean_f32.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_mean_f32.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_mean_f32.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_mean_f32.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_mean_q15.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_mean_q15.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_mean_q15.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_mean_q15.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_mean_q31.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_mean_q31.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_mean_q31.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_mean_q31.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_f32.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_f32.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_f32.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_f32.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_init_f32.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_init_f32.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_init_f32.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_rfft_fast_init_f32.c diff --git a/cores/xmc_lib/CMSIS/DSP/Source/arm_var_f32.c b/cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_var_f32.c similarity index 100% rename from cores/xmc_lib/CMSIS/DSP/Source/arm_var_f32.c rename to cores/xmc/xmc_lib/CMSIS/DSP/Source/arm_var_f32.c diff --git a/cores/xmc_lib/CMSIS/Include/cmsis_compiler.h b/cores/xmc/xmc_lib/CMSIS/Include/cmsis_compiler.h similarity index 100% rename from cores/xmc_lib/CMSIS/Include/cmsis_compiler.h rename to cores/xmc/xmc_lib/CMSIS/Include/cmsis_compiler.h diff --git a/cores/xmc_lib/CMSIS/Include/cmsis_gcc.h b/cores/xmc/xmc_lib/CMSIS/Include/cmsis_gcc.h similarity index 100% rename from cores/xmc_lib/CMSIS/Include/cmsis_gcc.h rename to cores/xmc/xmc_lib/CMSIS/Include/cmsis_gcc.h diff --git a/cores/xmc_lib/CMSIS/Include/cmsis_version.h b/cores/xmc/xmc_lib/CMSIS/Include/cmsis_version.h similarity index 100% rename from cores/xmc_lib/CMSIS/Include/cmsis_version.h rename to cores/xmc/xmc_lib/CMSIS/Include/cmsis_version.h diff --git a/cores/xmc_lib/CMSIS/Include/core_cm0.h b/cores/xmc/xmc_lib/CMSIS/Include/core_cm0.h similarity index 100% rename from cores/xmc_lib/CMSIS/Include/core_cm0.h rename to cores/xmc/xmc_lib/CMSIS/Include/core_cm0.h diff --git a/cores/xmc_lib/CMSIS/Include/core_cm4.h b/cores/xmc/xmc_lib/CMSIS/Include/core_cm4.h similarity index 100% rename from cores/xmc_lib/CMSIS/Include/core_cm4.h rename to cores/xmc/xmc_lib/CMSIS/Include/core_cm4.h diff --git a/cores/xmc_lib/CMSIS/Include/mpu_armv7.h b/cores/xmc/xmc_lib/CMSIS/Include/mpu_armv7.h similarity index 100% rename from cores/xmc_lib/CMSIS/Include/mpu_armv7.h rename to cores/xmc/xmc_lib/CMSIS/Include/mpu_armv7.h diff --git a/cores/xmc_lib/CMSIS/NN/Include/arm_nn_tables.h b/cores/xmc/xmc_lib/CMSIS/NN/Include/arm_nn_tables.h similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Include/arm_nn_tables.h rename to cores/xmc/xmc_lib/CMSIS/NN/Include/arm_nn_tables.h diff --git a/cores/xmc_lib/CMSIS/NN/Include/arm_nnfunctions.h b/cores/xmc/xmc_lib/CMSIS/NN/Include/arm_nnfunctions.h similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Include/arm_nnfunctions.h rename to cores/xmc/xmc_lib/CMSIS/NN/Include/arm_nnfunctions.h diff --git a/cores/xmc_lib/CMSIS/NN/Include/arm_nnsupportfunctions.h b/cores/xmc/xmc_lib/CMSIS/NN/Include/arm_nnsupportfunctions.h similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Include/arm_nnsupportfunctions.h rename to cores/xmc/xmc_lib/CMSIS/NN/Include/arm_nnsupportfunctions.h diff --git a/cores/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c diff --git a/cores/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c b/cores/xmc/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c similarity index 100% rename from cores/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c rename to cores/xmc/xmc_lib/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c diff --git a/cores/xmc_lib/LIBS/syscalls.c b/cores/xmc/xmc_lib/LIBS/syscalls.c similarity index 100% rename from cores/xmc_lib/LIBS/syscalls.c rename to cores/xmc/xmc_lib/LIBS/syscalls.c diff --git a/cores/xmc_lib/LIBS/types.h b/cores/xmc/xmc_lib/LIBS/types.h similarity index 100% rename from cores/xmc_lib/LIBS/types.h rename to cores/xmc/xmc_lib/LIBS/types.h diff --git a/cores/xmc_lib/README.md b/cores/xmc/xmc_lib/README.md similarity index 100% rename from cores/xmc_lib/README.md rename to cores/xmc/xmc_lib/README.md diff --git a/cores/xmc_lib/XMCLib/License.txt b/cores/xmc/xmc_lib/XMCLib/License.txt similarity index 100% rename from cores/xmc_lib/XMCLib/License.txt rename to cores/xmc/xmc_lib/XMCLib/License.txt diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_ccu4_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_ccu4_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_ccu4_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_ccu4_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_ccu8_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_ccu8_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_ccu8_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_ccu8_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_eru_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_eru_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_eru_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_eru_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_flash.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_flash.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_flash.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_flash.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_gpio.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_gpio.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_gpio.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_gpio.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_gpio_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_gpio_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_gpio_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_gpio_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_rtc.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_rtc.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_rtc.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_rtc.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_scu.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_scu.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_scu.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_scu.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc1_usic_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc1_usic_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc1_usic_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc1_usic_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_ccu4_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_ccu4_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_ccu4_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_ccu4_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_ccu8_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_ccu8_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_ccu8_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_ccu8_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_eru_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_eru_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_eru_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_eru_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_flash.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_flash.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_flash.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_flash.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_gpio.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_gpio.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_gpio.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_gpio.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_gpio_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_gpio_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_gpio_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_gpio_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_rtc.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_rtc.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_rtc.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_rtc.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_scu.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_scu.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_scu.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_scu.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc4_usic_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc4_usic_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc4_usic_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc4_usic_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_acmp.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_acmp.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_acmp.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_acmp.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_bccu.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_bccu.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_bccu.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_bccu.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_can.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_can.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_can.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_can.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_can_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_can_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_can_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_can_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_ccu4.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_ccu4.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_ccu4.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_ccu4.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_ccu8.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_ccu8.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_ccu8.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_ccu8.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_common.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_common.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_common.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_common.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_dac.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_dac.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_dac.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_dac.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_device.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_device.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_device.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_device.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_dma.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_dma.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_dma.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_dma.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_dma_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_dma_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_dma_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_dma_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_dsd.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_dsd.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_dsd.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_dsd.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_ebu.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_ebu.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_ebu.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_ebu.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_ecat.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_ecat.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_ecat.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_ecat.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_ecat_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_ecat_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_ecat_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_ecat_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_eru.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_eru.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_eru.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_eru.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_eth_mac.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_eth_mac.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_eth_mac.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_eth_mac.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_eth_mac_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_eth_mac_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_eth_mac_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_eth_mac_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_eth_phy.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_eth_phy.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_eth_phy.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_eth_phy.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_fce.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_fce.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_fce.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_fce.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_flash.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_flash.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_flash.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_flash.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_gpio.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_gpio.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_gpio.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_gpio.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_hrpwm.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_hrpwm.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_hrpwm.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_hrpwm.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_hrpwm_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_hrpwm_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_hrpwm_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_hrpwm_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_i2c.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_i2c.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_i2c.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_i2c.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_i2s.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_i2s.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_i2s.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_i2s.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_ledts.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_ledts.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_ledts.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_ledts.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_math.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_math.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_math.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_math.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_pau.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_pau.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_pau.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_pau.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_posif.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_posif.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_posif.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_posif.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_posif_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_posif_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_posif_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_posif_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_prng.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_prng.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_prng.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_prng.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_rtc.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_rtc.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_rtc.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_rtc.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_scu.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_scu.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_scu.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_scu.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_sdmmc.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_sdmmc.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_sdmmc.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_sdmmc.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_spi.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_spi.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_spi.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_spi.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_uart.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_uart.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_uart.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_uart.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_usbd.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_usbd.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_usbd.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_usbd.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_usbd_regs.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_usbd_regs.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_usbd_regs.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_usbd_regs.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_usbh.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_usbh.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_usbh.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_usbh.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_usic.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_usic.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_usic.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_usic.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_vadc.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_vadc.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_vadc.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_vadc.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_vadc_map.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_vadc_map.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_vadc_map.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_vadc_map.h diff --git a/cores/xmc_lib/XMCLib/inc/xmc_wdt.h b/cores/xmc/xmc_lib/XMCLib/inc/xmc_wdt.h similarity index 100% rename from cores/xmc_lib/XMCLib/inc/xmc_wdt.h rename to cores/xmc/xmc_lib/XMCLib/inc/xmc_wdt.h diff --git a/cores/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_ARM/xmc_common_mdk.s b/cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_ARM/xmc_common_mdk.s similarity index 100% rename from cores/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_ARM/xmc_common_mdk.s rename to cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_ARM/xmc_common_mdk.s diff --git a/cores/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S b/cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S similarity index 100% rename from cores/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S rename to cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S diff --git a/cores/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_IAR/xmc_common_iar.s b/cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_IAR/xmc_common_iar.s similarity index 100% rename from cores/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_IAR/xmc_common_iar.s rename to cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM0/TOOLCHAIN_IAR/xmc_common_iar.s diff --git a/cores/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_ARM/xmc_common_mdk.s b/cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_ARM/xmc_common_mdk.s similarity index 100% rename from cores/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_ARM/xmc_common_mdk.s rename to cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_ARM/xmc_common_mdk.s diff --git a/cores/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S b/cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S similarity index 100% rename from cores/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S rename to cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/xmc_common_gcc.S diff --git a/cores/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_IAR/xmc_common_iar.s b/cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_IAR/xmc_common_iar.s similarity index 100% rename from cores/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_IAR/xmc_common_iar.s rename to cores/xmc/xmc_lib/XMCLib/src/COMPONENT_CM4/TOOLCHAIN_IAR/xmc_common_iar.s diff --git a/cores/xmc_lib/XMCLib/src/xmc1_eru.c b/cores/xmc/xmc_lib/XMCLib/src/xmc1_eru.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc1_eru.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc1_eru.c diff --git a/cores/xmc_lib/XMCLib/src/xmc1_flash.c b/cores/xmc/xmc_lib/XMCLib/src/xmc1_flash.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc1_flash.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc1_flash.c diff --git a/cores/xmc_lib/XMCLib/src/xmc1_gpio.c b/cores/xmc/xmc_lib/XMCLib/src/xmc1_gpio.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc1_gpio.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc1_gpio.c diff --git a/cores/xmc_lib/XMCLib/src/xmc1_rtc.c b/cores/xmc/xmc_lib/XMCLib/src/xmc1_rtc.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc1_rtc.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc1_rtc.c diff --git a/cores/xmc_lib/XMCLib/src/xmc1_scu.c b/cores/xmc/xmc_lib/XMCLib/src/xmc1_scu.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc1_scu.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc1_scu.c diff --git a/cores/xmc_lib/XMCLib/src/xmc4_eru.c b/cores/xmc/xmc_lib/XMCLib/src/xmc4_eru.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc4_eru.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc4_eru.c diff --git a/cores/xmc_lib/XMCLib/src/xmc4_flash.c b/cores/xmc/xmc_lib/XMCLib/src/xmc4_flash.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc4_flash.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc4_flash.c diff --git a/cores/xmc_lib/XMCLib/src/xmc4_gpio.c b/cores/xmc/xmc_lib/XMCLib/src/xmc4_gpio.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc4_gpio.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc4_gpio.c diff --git a/cores/xmc_lib/XMCLib/src/xmc4_rtc.c b/cores/xmc/xmc_lib/XMCLib/src/xmc4_rtc.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc4_rtc.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc4_rtc.c diff --git a/cores/xmc_lib/XMCLib/src/xmc4_scu.c b/cores/xmc/xmc_lib/XMCLib/src/xmc4_scu.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc4_scu.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc4_scu.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_acmp.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_acmp.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_acmp.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_acmp.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_bccu.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_bccu.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_bccu.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_bccu.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_can.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_can.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_can.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_can.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_ccu4.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_ccu4.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_ccu4.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_ccu4.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_ccu8.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_ccu8.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_ccu8.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_ccu8.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_common.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_common.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_common.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_common.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_dac.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_dac.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_dac.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_dac.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_dma.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_dma.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_dma.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_dma.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_dsd.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_dsd.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_dsd.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_dsd.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_ebu.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_ebu.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_ebu.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_ebu.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_ecat.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_ecat.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_ecat.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_ecat.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_eru.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_eru.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_eru.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_eru.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_eth_mac.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_eth_mac.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_eth_mac.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_eth_mac.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_eth_phy_dp83848.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_eth_phy_dp83848.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_eth_phy_dp83848.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_eth_phy_dp83848.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8031rnl.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8031rnl.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8031rnl.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8031rnl.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8081rnb.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8081rnb.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8081rnb.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_eth_phy_ksz8081rnb.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_fce.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_fce.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_fce.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_fce.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_gpio.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_gpio.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_gpio.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_gpio.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_hrpwm.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_hrpwm.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_hrpwm.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_hrpwm.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_i2c.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_i2c.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_i2c.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_i2c.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_i2s.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_i2s.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_i2s.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_i2s.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_ledts.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_ledts.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_ledts.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_ledts.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_math.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_math.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_math.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_math.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_pau.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_pau.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_pau.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_pau.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_posif.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_posif.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_posif.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_posif.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_prng.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_prng.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_prng.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_prng.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_rtc.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_rtc.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_rtc.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_rtc.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_sdmmc.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_sdmmc.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_sdmmc.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_sdmmc.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_spi.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_spi.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_spi.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_spi.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_uart.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_uart.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_uart.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_uart.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_usbd.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_usbd.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_usbd.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_usbd.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_usbh.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_usbh.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_usbh.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_usbh.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_usic.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_usic.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_usic.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_usic.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_vadc.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_vadc.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_vadc.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_vadc.c diff --git a/cores/xmc_lib/XMCLib/src/xmc_wdt.c b/cores/xmc/xmc_lib/XMCLib/src/xmc_wdt.c similarity index 100% rename from cores/xmc_lib/XMCLib/src/xmc_wdt.c rename to cores/xmc/xmc_lib/XMCLib/src/xmc_wdt.c From 358ec03cbf9000d97544f901715b3174b4c47d56 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 31 Mar 2025 13:38:27 +0200 Subject: [PATCH 010/366] platform.txt: Adapt platform.txt for XMC4.0. Signed-off-by: zhanglinjing --- platform.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/platform.txt b/platform.txt index 50570a87..9a6783bb 100644 --- a/platform.txt +++ b/platform.txt @@ -6,7 +6,7 @@ # The information about this Arduino compatible environment # --------- name=XMC Family -version=3.0.0 +version=4.0.0 # Build related core definitions # --------- @@ -42,8 +42,7 @@ compiler.warning_flags=-w compiler.define=-DARDUINO= # Compiler include paths for include files -compiler.core_xmc.path = {runtime.platform.path}/cores/xmc -compiler.xmclib_include.path={runtime.platform.path}/cores/xmc_lib +compiler.xmclib_include.path={runtime.platform.path}/cores/xmc/xmc_lib compiler.cmsis_include.path={compiler.xmclib_include.path}/CMSIS/Include compiler.nn_include.path={compiler.xmclib_include.path}/CMSIS/NN/Include compiler.dsp_include.path={compiler.xmclib_include.path}/CMSIS/DSP/Include From ff318d615f4461e1c0d0f01fe13da5dad04836a8 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 31 Mar 2025 13:43:41 +0200 Subject: [PATCH 011/366] cores/xmc: Implment timer core functions. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 16 +- cores/xmc/main.cpp | 6 +- cores/xmc/wiring_time.c | 548 ++++++++++++++++++++++++++++++++++++++++ cores/xmc/wiring_time.h | 366 +++++++++++++++++++++++++++ cores/xmc/yield.c | 27 ++ 5 files changed, 952 insertions(+), 11 deletions(-) create mode 100644 cores/xmc/wiring_time.c create mode 100644 cores/xmc/wiring_time.h create mode 100644 cores/xmc/yield.c diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index e30e82c0..8a143774 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -70,6 +70,9 @@ extern "C" { // used by XMC_I2S #define BUFFER_SIZE 512 +#define interrupts() __enable_irq() +#define noInterrupts() __disable_irq() + //**************************************************************************** // @Typedefs //**************************************************************************** @@ -320,11 +323,11 @@ extern void loop(void); //**************************************************************************** // @Arduino Core Includes //**************************************************************************** +#include "wiring_time.h" +// #include "wiring_digital.h" /* -#include "wiring_digital.h" #include "wiring_analog.h" #include "wiring_shift.h" -#include "wiring_time.h" #include "wiring_pulse.h" #include "WInterrupts.h" @@ -337,13 +340,12 @@ extern void loop(void); #ifdef __cplusplus } // extern "C" -// #include "Tone.h" -// #include "WMath.h" +// #include "Tone.h" +// #include "WMath.h" #endif // __cplusplus -//#include "Print.h" -//#include "HardwareSerial.h" - +// #include "Print.h" +// #include "HardwareSerial.h" //**************************************************************************** // @Board Variant Includes diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index 1316a3a5..d83c4a23 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -16,8 +16,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ - - //**************************************************************************** // @Defines //**************************************************************************** @@ -31,14 +29,14 @@ // Weak empty variant initialization function. // May be redefined by variant files. void initVariant() __attribute__((weak)); -void initVariant() { } +void initVariant() {} int main(void) { /* * Initialization Time first to get closer to startup time accuracy */ - // wiring_time_init(); + wiring_time_init(); // wiring_analog_init(); // Initialize the reset pin for the XMC1100 Boot Kit series and XMC1400 Kit for Arduino as they are diff --git a/cores/xmc/wiring_time.c b/cores/xmc/wiring_time.c new file mode 100644 index 00000000..6e5f276b --- /dev/null +++ b/cores/xmc/wiring_time.c @@ -0,0 +1,548 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Copyright (c) 2018 Infineon Technologies AG + This file has been modified for the XMC microcontroller series. +*/ + +/* Includes Co-operative Scheduler for XMC-for-Arduino + + Using COMPILE time scheduling table + +Version V1.00 +Author: Paul Carpenter, PC Services, +Date March 2018 + +Co-operative scheduler library that has some support functions and main +schedule function meant to be run as the Systick scheduler event handler, the +support functions should be used to get status on, start, stop, or configure tasks. + +The schedule code is designed for MINIMAL overhead and SPEED. + +The time interval of calling the schedule loop is determined by Systick timer +interval currently 1 ms, and calls a selection of tasks determined by two +parameters for each task + + callback function address + parameter INTEGER to pass to function + +From this we get TWO types of function calls when a task event happens + +1/ callback and parameter are set gives a function call of + + int callback( int ID, int16_t param ) + function to use as this task that accepts TWO integer parameters + and MUST return an integer + + (even if parameter not set it is initialised to task_id AT compile TIME) + +2/ Special case if ANY task has its callback set to NULL a special variable + in wiring_time is set to TRUE. This enables the delay() function to work + for ms delays. As a side effect it stops runaway tasks for callback set to + NULL. + +Callback functions in list +-------------------------- + For different processors speeds it is suggested to keep the number of + total tasks (callback functions) to following limits - + + Speed Max Tasks + < 50 MHz 8 + > 50 MHz < 100 MHz 12 + > 100 MHz 16 + +Callback function structure +--------------------------- + Task is actually calling a function that should be defined as + function that returns int and takes TWO integer parameter + + e.g. int func( int TaskId, int16_t Parameter ) + First parameter is TaskId, + Second parameter is user defined parameter (int16_t) + + If interval of a task has to change call setInterval during task execution + NOT to STOP task use return code + +Callback functions Contents +--------------------------- + Callback functions are effectively interrupt routines so care should be taken + about which variables and flags set in these functions are volatiles. + + Functions MUST be VERY SMALL as many tasks have to run in less than 1 ms as + well as the main code. + + Do NOT use blocking or slow callbacks that use AT LEAST the following Arduino + functions + delay (this would become recursive) + .print, .write, println on Serial or Liquid Crystal + analogread + PulseIn + Liquid Crystal ANY function + I2C or SPI ANY function + SD/MMC ANY function + + All of these and maybe others are SLOW, block waiting for I/O or time + delays often MUCH longer than 1 ms + +Callback Function Return value +------------------------------ + The returned value is the NEW status for that task which tells scheduler + what to do next time. Values are + + < 0 User error status (stops task execution) + 0 Task stopped (if needed to be run will have to be started by Start) + > 0 Next status this can be used by call back function for state machines + Task runs again at the interval set + +Scheduling Functions +-------------------- +setInterval Set a task's NEW interval and schedule new time from now if not + already running +getInterval Get a task's interval +setParam Set a task's callback function parameter (signed int16_t) +getParam Get a task's callback function parameter (signed int16_t) +getTime Get a task's next time to execute +getStatus Get a particular task status word +addTask Add a task to the task list +deleteTask Delete a task from the task list +startTask Start a task (if not already running) +findID Get ID of first task from task address +*/ +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "Arduino.h" +extern int tone_irq_action(int, int16_t); + +//**************************************************************************** +// @Macros +//**************************************************************************** +// number of tasks = number of tones plus delay task plus any others added later +#define _MAX_TASKS NUM_TASKS_VARIANT + +#define SYSTIMER_PRIORITY (4U) +/* Millisecond to Microsecond ratio */ +#define TIMER_1mSec 1000 + +//**************************************************************************** +// @Global Variables +//**************************************************************************** +/* Array of tasks which are addresses to functions. + Each function returns int and takes TWO integer parameter + e.g. int func( int TaskId, int16_t Parameter ) + First parameter is TaskId, + second is current status is user defined parameter (int16_t) + + Tasklist order is ALWAYS + Tone callbacks ( 0 to NUM_TONE_PINS ) + Any additional tasks + delay() callback + + This way last is always delay and first 'n' are always Tone pins i.e. 0 - n + last is _MAX_TASKS - 1 +*/ +int (*tasks[_MAX_TASKS])(int, int16_t); + +/* Structure for task details next run, status etc.. */ +struct TaskList taskTable[_MAX_TASKS]; + +unsigned long old_ms = 0; // last execution time +int running = _MAX_TASKS; // Current task ID being checked or run + // Initialise to avoid fast CPU EXTREME edge case of + // requesting task (mainly first Tone task) BEFORE the + // FIRST SysTick interrupt (1 ms) after power up. + +/* SysTick counter */ +volatile uint32_t g_systick_count = 0U; + +/* Tracker if Timer Handler as already been entered -> avoid recursion */ +volatile __IO bool g_timer_entered_handler = FALSE; + +// Delay ms function flag for time expired in Systick Event Handler +volatile __IO bool delay_timer_expired = FALSE; + +//**************************************************************************** +// @Prototypes Of Local Functions +//**************************************************************************** +/* Handler function called from SysTick event handler for task scheduling */ +int XMC_SYSTIMER_lTimerHandler(void); + +/* SysTick handler which is the main interrupt service routine to service the + * tasks configured */ +void SysTick_Handler(void); + +//**************************************************************************** +// @Local Functions +//**************************************************************************** +void wiring_time_init(void) { + /* Initialise micro/milli second counter as early as possible + Initialize SysTick timer for 1 ms (1 kHz) interval */ + SysTick_Config((uint32_t)SYSTICK_MS); + + // Initialise task control to all off + memset(taskTable, 0, sizeof(taskTable)); + + for (int i = 0; i < _MAX_TASKS; i++) { + taskTable[i].param = i; // Preset user parameter to task number + // Fill with call back function addresses + if (i < NUM_TONE_PINS) + tasks[i] = NULL; + // tasks[i] = tone_irq_action; // Tone callbacks + else + tasks[i] = NULL; // Special case delay() ms callback + } + + /* setting of First SW Timer period is always and sub-priority value for XMC4000 devices */ + /* setting of priority value for XMC1000 devices */ + NVIC_SetPriority(SysTick_IRQn, SYSTIMER_PRIORITY); +} + +/* + * \brief Returns the number of milliseconds since the Arduino board began running the current + * program. + * + * This number will overflow (go back to zero), after approximately 50 days. + * + * \return Number of milliseconds since the program started (uint32_t) + */ + +unsigned long millis() { return (g_systick_count); } + +/* + * \brief Returns the number of microseconds since the Arduino board began running the current + program. + * + * This number will overflow (go back to zero), after approximately 70 minutes. + * On XMC boards the returned value has resolution of 1 microsecond as it is + * calculated from a hardware timer running counting clock cycles to produce + * 1 millisecond interval interrupts. + * + * \note There are 1,000 microseconds in a millisecond and 1,000,000 microseconds in a second. + + get micro seconds since power up + Read milli seconds (in microseconds) and convert Systick counter to microseconds to add to it + remember SysTick->VAL counts DOWN to zero */ +unsigned long micros() { + return (((SYSTICK_MS - SysTick->VAL) / SYSTICK_US) + + (g_systick_count * SYSTIMER_TICK_PERIOD_US)); +} + +/* delay - milliseconds + * This function uses SysTick Exception for controlling the timer list. Call back function + * registered through this function will be called in SysTick exception when the timer is expired. + * + * @param[in] Period Timer period value in microseconds + * + * Special cases for callback action processing + * callback is NULL boolean delay_timer_expired is set to true + */ +void delay(uint32_t dwMs) { + setInterval(_MAX_TASKS - 1, dwMs); + // Timer is always in list as last + startTask(_MAX_TASKS - 1); + // Wait until timer expires + do + yield(); + while (!delay_timer_expired); + delay_timer_expired = FALSE; +} + +/* + * \brief Pauses the program for the amount of time (in microseconds) specified as parameter. + * + * \param dwUs the number of microseconds to pause (uint32_t) + */ +void delayMicroseconds(unsigned int usec) { + if (usec == 0) + return; + else + do + NOPS_FOR_USEC() // NOP loop to generate delay + while (--usec); +} + +/* Handler function called from SysTick event handler. + - Task scheduling loop + + Does ONE pass through scheduling table, checking what tasks are due or + overdue to run. + + Order of task execution is list of tasks + + When task has completed - + updates task status with status returned, + adjusts next run time using interval specified. + If interval is zero execution time set to zero. + + Parameters - NONE + + Returns int 0 Processed no tasks to run + > 0 Number of tasks executed + */ +int XMC_SYSTIMER_TaskLoop(void) { + int done; + unsigned int overdue; + unsigned long ms; + + // Task loop lock + g_timer_entered_handler = TRUE; + + // get current time and overdue + ms = g_systick_count; + // Unsigned maths first ensures correct even at wraparound + overdue = (unsigned int)(ms - old_ms); + // save current execution time + old_ms = ms; + done = 0; + for (running = 0; running < _MAX_TASKS; running++) { + if (taskTable[running].status > 0) // task enabled + { // check if time to run as in correct interval or overdue + if (ms - taskTable[running].next <= overdue) { + if (tasks[running] == NULL) { + delay_timer_expired = TRUE; // Special case of NULL callback function + taskTable[running].status = 0; // One shot event so stop task + } else if ((taskTable[running].status = + ((*tasks[running])(running, taskTable[running].param))) > 0) + taskTable[running].next = ms + taskTable[running].interval; + done++; + } + } + } + return done; +} + +/* SysTick Event Handler. */ +void SysTick_Handler(void) { + g_systick_count++; // Another ms has occurred + + // do not call handler, when still running + if (g_timer_entered_handler == FALSE) { + XMC_SYSTIMER_TaskLoop(); + g_timer_entered_handler = FALSE; + } +} + +/* checkID - Common ID check for valid and not running + + Parameters int Task ID to check + + Return int -1 invalid ID + 0 current task running + 1 Valid +*/ +int CheckID(int ID) { + if (ID < 0 || ID >= _MAX_TASKS) + return -1; + if (ID == running) + return 0; + return 1; +} + +/* setInterval - set the interval time in ms for a task + + If task running just sets interval as next execution will be set at task end. + + When task NOT running, also sets next execution time to now plus interval. + + Parameters int Task ID to check + unsigned int interval in ms + + Return int -1 invalid ID + 0 task is running + > 0 task interval and execution time set +*/ +int setInterval(int ID, uint32_t interval) { + int i; + + if ((i = CheckID(ID)) < 0) + return i; + taskTable[ID].interval = interval; + if (i != 0) { + taskTable[ID].next = millis() + interval + 1; + return 1; + } + return 0; +} + +/* getInterval - get the interval time in ms for a task + + Parameters int Task ID to check + NO ID validity check + + Return int Current interval time +*/ +uint32_t getInterval(int ID) { return taskTable[ID].interval; } + +/* setParam - set the param value for a task callback function + + Parameters int Task ID to check + int16_t param value + + Return int -1 invalid ID + >=0 task param value set +*/ +int setParam(int ID, int16_t param) { + if ((CheckID(ID)) < 0) + return -1; + taskTable[ID].param = param; + return 0; +} + +/* getParam - get the param value for a task callback function + + Parameters int Task ID to get details of + + Return int -1 invalid ID or valid param + All other values assume the param value + */ +int16_t getParam(int ID) { + if ((CheckID(ID)) < 0) + return -1; + return taskTable[ID].param; +} + +/* getTime - get next execution time in ms of a task + + As value is unsigned long impossible to guarantee error codes + So if values listed below for errors check current millis() value + to see if could be real or error. + + Parameters int Task ID to check + + Return unsigned long of time (or could be errors) + 0 could be execution time or error of invalid ID + 1 could be execution time or error of NO interval +*/ +unsigned long getTime(int ID) { + if ((CheckID(ID)) < 0) + return 0; + return taskTable[ID].next; +} + +/* getStatus - get task status even if running task + + Parameters int Task ID to get status for + + Return int -1 invalid ID + any other value Status (including other user errors -ve) +*/ +int16_t getStatus(int ID) { + // Check valid ID + if ((CheckID(ID)) < 0) + return -1; + return taskTable[ID].status; +} + +/* addTask - Add a task to the task list + + Parameters ptr Pointer to callback function + + Return int -1 No free task available + >=0 Number of added task +*/ +int addTask(int (*ptr)(int, int16_t)) { + noInterrupts(); + for (int i = NUM_TONE_PINS; i < _MAX_TASKS - 1; i++) { + // Fill with call back function address + if (tasks[i] == NULL) { + taskTable[i].status = 0; + tasks[i] = ptr; // Register callback + interrupts(); + return i; + } + } + interrupts(); + return -1; +} + +/* deleteTask - Remove a task from the list and delete the callback function + + Parameters ptr Pointer to callback function + + Return int -2 No task found + -1 Invalid task address + >=0 Number of deleted task +*/ +int deleteTask(int (*ptr)(int, int16_t)) { + noInterrupts(); + int ID = findID(ptr); + + if (ID >= 0) { + taskTable[ID].status = 0; + tasks[ID] = NULL; + setInterval(ID, 0); + } + interrupts(); + return ID; +} + +/* startTask - Start a task if not running and has interval set + + Cannot start an already started task + + It is responsibility of the task to stop its task and any associated + resources (GPIO/TWI/SPI etc). + + Parameters int Task ID to start + + Return int -3 Task already started + -2 No interval on task + -1 invalid ID + 0 current task running + > 0 Valid set to run after interval time +*/ +int startTask(int ID) { + // Check valid ID, not running and interval + if ((CheckID(ID)) <= 0) + return -1; + if (taskTable[ID].interval == 0) + return -2; + if (taskTable[ID].status > 0) + return -3; + // Start task + taskTable[ID].next = old_ms + taskTable[ID].interval; + taskTable[ID].status = 1; + return 1; +} + +/* findID - Find ID for FIRST task with matching function address in Task table + + Scans task table to find a matching function address and return the ID + NOTE stops at FIRST match. + + Parameters int Task ID to Stop + + Return int -2 No task found + -1 Invalid task address + >= 0 Valid and stopped +*/ +int findID(int (*ptr)(int, int16_t)) { + int i; + + if (ptr == NULL) + return -1; + for (i = 0; i < _MAX_TASKS; i++) + if (tasks[i] == ptr) + break; + if (i == _MAX_TASKS) + return -2; + return i; +} + +//**************************************************************************** +// END OF FILE +//**************************************************************************** diff --git a/cores/xmc/wiring_time.h b/cores/xmc/wiring_time.h new file mode 100644 index 00000000..e7f5bd12 --- /dev/null +++ b/cores/xmc/wiring_time.h @@ -0,0 +1,366 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Copyright (c) 2018 Infineon Technologies AG + This file has been modified for the XMC microcontroller series. +*/ + +#ifndef WIRING_TIME_H_ +#define WIRING_TIME_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//**************************************************************************** +// @Defines +//**************************************************************************** +/**< SysTick interval in microseconds */ +#define SYSTIMER_TICK_PERIOD_US (1000U) +/**< value for Systick counts per ms **/ +#define SYSTICK_MS (F_CPU / SYSTIMER_TICK_PERIOD_US) +/**< value for Systick counts per us **/ +#define SYSTICK_US (SYSTICK_MS / SYSTIMER_TICK_PERIOD_US) + +#if ((UC_FAMILY == XMC4) && (F_CPU == 144000000U)) + // 142 NOPS + #define NOPS_FOR_USEC() \ + { \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + } + +#elif ((UC_FAMILY == XMC4) && (F_CPU == 80000000U)) + // 80 NOPS + #define NOPS_FOR_USEC() \ + { \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + } + +#elif ((UC_FAMILY == XMC1) && (F_CPU == 32000000U)) + // 16 NOPS + #define NOPS_FOR_USEC() \ + { \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + } +#elif ((UC_FAMILY == XMC1) && (F_CPU == 48000000U)) + // 24 NOPS + #define NOPS_FOR_USEC() \ + { \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + asm volatile("nop"); \ + } +#else + #error wiring_time: NOPS_FOR_USEC not defined +#endif + +//**************************************************************************** +// @Typedefs +//**************************************************************************** +/* Structures for task details next run, status etc.. */ +struct TaskList { + uint32_t next; // next execution time in ms + uint32_t interval; // interval between schedule starts in ms + int16_t param; // User defined parameter + int16_t status; // current task status 0 stopped, + // -ve stopped with error, + // > 0 user status (and active) +}; + +/* SysTick counter */ +extern volatile uint32_t g_systick_count; + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** +/* + * \brief Initialize the time module. + */ +extern void wiring_time_init(void); + +extern int setInterval(int, uint32_t); +extern uint32_t getInterval(int); +extern int setParam(int, int16_t); +extern int16_t getParam(int); +extern uint32_t getTime(int); +extern int16_t getStatus(int); +extern int addTask(int (*)(int, int16_t)); +extern int deleteTask(int (*)(int, int16_t)); +extern int startTask(int); +extern int findID(int (*)(int, int16_t)); + +#ifdef __cplusplus +} +#endif + +#endif /* WIRING_TIME_H_ */ diff --git a/cores/xmc/yield.c b/cores/xmc/yield.c new file mode 100644 index 00000000..ca4c52a6 --- /dev/null +++ b/cores/xmc/yield.c @@ -0,0 +1,27 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** +void yield(void) __attribute__((weak)); +void yield(void) {}; + +//**************************************************************************** +// END OF FILE +//**************************************************************************** From db6b5d43759ad56282d7545fe3190f1e59b42e48 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 31 Mar 2025 13:44:44 +0200 Subject: [PATCH 012/366] examples/timer: Add blinky example. Signed-off-by: zhanglinjing --- examples/timer/blinky.ino | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 examples/timer/blinky.ino diff --git a/examples/timer/blinky.ino b/examples/timer/blinky.ino new file mode 100644 index 00000000..bc74fdba --- /dev/null +++ b/examples/timer/blinky.ino @@ -0,0 +1,44 @@ +#include "Arduino.h" +#include "xmc_gpio.h" +// the setup function runs once when you press reset or power the board +void setup() { + setupGPIO(); +} + +// the loop function runs over and over again forever +void loop() { + // Toggle the LED using delay + digitalWrite(LED_BUILTIN, LOW); + delay(1000); // Delay for 1000 milliseconds (1 second) + digitalWrite(LED_BUILTIN, HIGH); + delay(1000); // Delay for 1000 milliseconds (1 second) + + // Toggle the LED using delayMicroseconds + digitalWrite(LED_BUILTIN, LOW); + delayMicroseconds(500000); // Delay for 500000 microseconds (0.5 seconds) + digitalWrite(LED_BUILTIN, HIGH); + delayMicroseconds(500000); // Delay for 500000 microseconds (0.5 seconds) +} + + +#ifdef __cplusplus +extern "C" { +#endif +void setupGPIO() { + XMC_GPIO_CONFIG_t gpio_config; + + gpio_config.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL; + gpio_config.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + gpio_config.output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM; + XMC_GPIO_Init(mapping_port_pin[LED_BUILTIN].port, mapping_port_pin[LED_BUILTIN].pin, &gpio_config); +} + +void digitalWrite(pin_size_t pin, PinStatus value) { + XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, + (value == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW + : XMC_GPIO_OUTPUT_LEVEL_HIGH); +} + +#ifdef __cplusplus +} +#endif \ No newline at end of file From 9007d4ec390d5231261711b8462a2a4cd0d7c8d6 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 31 Mar 2025 16:12:19 +0200 Subject: [PATCH 013/366] examples/timer: Rename blinky.ino to timer.ino. Signed-off-by: zhanglinjing --- examples/timer/{blinky.ino => timer.ino} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/timer/{blinky.ino => timer.ino} (100%) diff --git a/examples/timer/blinky.ino b/examples/timer/timer.ino similarity index 100% rename from examples/timer/blinky.ino rename to examples/timer/timer.ino From 493570843cc08a7cb57284520361ba24f4991fb0 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 2 Apr 2025 16:05:34 +0200 Subject: [PATCH 014/366] platform.txt: Fix include core api path issue. Signed-off-by: zhanglinjing --- platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index 9a6783bb..35f0c9e5 100644 --- a/platform.txt +++ b/platform.txt @@ -50,7 +50,7 @@ compiler.dsp_include.path={compiler.xmclib_include.path}/CMSIS/DSP/Include compiler.arduino_core.path={runtime.platform.path}/cores/arduino/api compiler.arduino_core_dep.path={compiler.arduino_core.path}/deprecated compiler.arduino_core_dep_avr.path={compiler.arduino_core.path}/deprecated-avr-comp/avr -compiler.arduino_core_api.path= "-I{compiler.arduino_core_dep_avr.path}" "-I{compiler.arduino_core_dep.path}" "-I{compiler.arduino_core.path}" +compiler.arduino_core_api.path= "-I{compiler.arduino_core_dep_avr.path}" "-I{compiler.arduino_core_dep.path}" compiler.arm.cmsis.path= "-I{compiler.xmclib_include.path}/XMCLib/inc" "-I{compiler.dsp_include.path}" "-I{compiler.nn_include.path}" "-I{compiler.cmsis_include.path}" "-I{compiler.xmclib_include.path}/LIBS" "-I{build.variant.path}" "-I{build.variant.config_path}" compiler.avr_support.path= "-I{build.core.path}/avr" From 601fcf98c1d2b70681ba7279824ac905cddd7206 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Apr 2025 14:58:46 +0200 Subject: [PATCH 015/366] cores/xmc/wiring_time.c: Add TODO for tone module. Signed-off-by: zhanglinjing --- cores/xmc/wiring_time.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/cores/xmc/wiring_time.c b/cores/xmc/wiring_time.c index 6e5f276b..3c8787c9 100644 --- a/cores/xmc/wiring_time.c +++ b/cores/xmc/wiring_time.c @@ -126,7 +126,7 @@ findID Get ID of first task from task address // @Project Includes //**************************************************************************** #include "Arduino.h" -extern int tone_irq_action(int, int16_t); +// extern int tone_irq_action(int, int16_t); // TODO: not needed for timer yet. //**************************************************************************** // @Macros @@ -135,8 +135,6 @@ extern int tone_irq_action(int, int16_t); #define _MAX_TASKS NUM_TASKS_VARIANT #define SYSTIMER_PRIORITY (4U) -/* Millisecond to Microsecond ratio */ -#define TIMER_1mSec 1000 //**************************************************************************** // @Global Variables @@ -201,7 +199,7 @@ void wiring_time_init(void) { // Fill with call back function addresses if (i < NUM_TONE_PINS) tasks[i] = NULL; - // tasks[i] = tone_irq_action; // Tone callbacks + // tasks[i] = tone_irq_action; // // TODO: Tone callbacks, not needed for timer yet. else tasks[i] = NULL; // Special case delay() ms callback } From 0d0afdedc01cb48108d8ce7bda3237a25790963a Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 8 Apr 2025 13:28:53 +0530 Subject: [PATCH 016/366] cores/xmc: Implementation GPIO. Signed-off-by: MDin --- cores/xmc/Arduino.h | 1 + cores/xmc/wiring_digital.c | 88 ++++++++++++++++++++++++++++++++++++++ cores/xmc/wiring_digital.h | 87 +++++++++++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 cores/xmc/wiring_digital.c create mode 100644 cores/xmc/wiring_digital.h diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 8a143774..d570d499 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -324,6 +324,7 @@ extern void loop(void); // @Arduino Core Includes //**************************************************************************** #include "wiring_time.h" +#include "wiring_digital.h" // #include "wiring_digital.h" /* #include "wiring_analog.h" diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c new file mode 100644 index 00000000..6e95f0d2 --- /dev/null +++ b/cores/xmc/wiring_digital.c @@ -0,0 +1,88 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Copyright (c) 2018 Infineon Technologies AG + This file has been modified for the XMC microcontroller series. + */ + +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "Arduino.h" +#ifdef __cplusplus +extern "C" { +#endif +void pinMode(pin_size_t pin, PinMode mode) { + XMC_GPIO_CONFIG_t gpio_conf; + + switch(mode) + { + case INPUT: + gpio_conf.mode =XMC_GPIO_MODE_INPUT_TRISTATE; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + break; + + case INPUT_PULLUP: + gpio_conf.mode =XMC_GPIO_MODE_INPUT_PULL_UP; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH; + break; + + case INPUT_PULLDOWN: + gpio_conf.mode=XMC_GPIO_MODE_INPUT_PULL_DOWN; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + break; + + case OUTPUT: + gpio_conf.mode =XMC_GPIO_MODE_OUTPUT_PUSH_PULL; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + break; + case OUTPUT_OPENDRAIN: + gpio_conf.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + break; + + default: + return; + } + +#if UC_FAMILY == XMC1 + gpio_conf.input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_LARGE; +#endif + XMC_GPIO_Init(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, &gpio_conf); +} + +PinStatus digitalRead(pin_size_t pin) { + return (pin == GND) + ? LOW + : (XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); +} + +void digitalWrite(pin_size_t pin, PinStatus status) { + XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, + (status == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW + : XMC_GPIO_OUTPUT_LEVEL_HIGH); +} + +void digitalToggle(pin_size_t pin) { + XMC_GPIO_ToggleOutput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin); +} +#ifdef __cplusplus +} +#endif +//**************************************************************************** +// END OF FILE +//**************************************************************************** \ No newline at end of file diff --git a/cores/xmc/wiring_digital.h b/cores/xmc/wiring_digital.h new file mode 100644 index 00000000..b243c4e9 --- /dev/null +++ b/cores/xmc/wiring_digital.h @@ -0,0 +1,87 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Copyright (c) 2018 Infineon Technologies AG + This file has been modified for the XMC microcontroller series. +*/ + +#ifndef _WIRING_DIGITAL_ +#define _WIRING_DIGITAL_ +#include "Arduino.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** + +/* + * \brief Configures the specified pin to behave either as an input or an output. See the + * description of digital pins for details. + * + * \param pin The number of the pin whose mode you wish to set + * \param mode Either INPUT, INPUT_PULLUP, INPUT_PULLDOWN or OUTPUT + */ +void pinMode(pin_size_t pin, PinMode pinMode); + +/* + * \brief Reads the value from a specified digital pin, either HIGH or LOW. + * + * \param pin The number of the digital pin you want to read (int) + * + * \return HIGH or LOW + */ +extern PinStatus digitalRead(pin_size_t pin); + + +/* + * \brief Write a HIGH or a LOW value to a digital pin. + * + * If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the + * corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW. + * + * If the pin is configured as an INPUT, writing a HIGH value with digitalWrite() will enable an + * internal 20K pullup resistor (see the tutorial on digital pins). Writing LOW will disable the + * pullup. The pullup resistor is enough to light an LED dimly, so if LEDs appear to work, but very + * dimly, this is a likely cause. The remedy is to set the pin to an output with the pinMode() + * function. + * + * \note Digital pin PIN_LED is harder to use as a digital input than the other digital pins because + * it has an LED and resistor attached to it that's soldered to the board on most boards. If you + * enable its internal 20k pull-up resistor, it will hang at around 1.7 V instead of the expected 5V + * because the onboard LED and series resistor pull the voltage level down, meaning it always + * returns LOW. If you must use pin PIN_LED as a digital input, use an external pull down resistor. + * + * \param pin the pin number + * \param value HIGH or LOW + */ +extern void digitalWrite(pin_size_t pin, PinStatus status); + +/* + * \brief Toggles output signal of a digital pin. + * + * \param pin The number of the pin who you want to toggle + */ +extern void digitalToggle(uint8_t pin); + +#ifdef __cplusplus +} +#endif + +#endif /* _WIRING_DIGITAL_ */ \ No newline at end of file From ab28e3b8dbac83f8ceeb7229e3d8ecfdfd24153c Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 8 Apr 2025 13:42:49 +0530 Subject: [PATCH 017/366] cores/xmc: Format change. Signed-off-by: MDin --- cores/xmc/wiring_digital.c | 55 +++++++++++++++++++------------------- cores/xmc/wiring_digital.h | 1 - 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c index 6e95f0d2..a9762117 100644 --- a/cores/xmc/wiring_digital.c +++ b/cores/xmc/wiring_digital.c @@ -29,36 +29,35 @@ extern "C" { void pinMode(pin_size_t pin, PinMode mode) { XMC_GPIO_CONFIG_t gpio_conf; - switch(mode) - { - case INPUT: - gpio_conf.mode =XMC_GPIO_MODE_INPUT_TRISTATE; - gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; - break; + switch (mode) { + case INPUT: + gpio_conf.mode = XMC_GPIO_MODE_INPUT_TRISTATE; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + break; - case INPUT_PULLUP: - gpio_conf.mode =XMC_GPIO_MODE_INPUT_PULL_UP; - gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH; - break; + case INPUT_PULLUP: + gpio_conf.mode = XMC_GPIO_MODE_INPUT_PULL_UP; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH; + break; - case INPUT_PULLDOWN: - gpio_conf.mode=XMC_GPIO_MODE_INPUT_PULL_DOWN; - gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; - break; + case INPUT_PULLDOWN: + gpio_conf.mode = XMC_GPIO_MODE_INPUT_PULL_DOWN; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + break; - case OUTPUT: - gpio_conf.mode =XMC_GPIO_MODE_OUTPUT_PUSH_PULL; - gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; - break; - case OUTPUT_OPENDRAIN: - gpio_conf.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN; - gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; - break; + case OUTPUT: + gpio_conf.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + break; + case OUTPUT_OPENDRAIN: + gpio_conf.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN; + gpio_conf.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; + break; - default: - return; + default: + return; } - + #if UC_FAMILY == XMC1 gpio_conf.input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_LARGE; #endif @@ -67,14 +66,14 @@ void pinMode(pin_size_t pin, PinMode mode) { PinStatus digitalRead(pin_size_t pin) { return (pin == GND) - ? LOW - : (XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); + ? LOW + : (XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); } void digitalWrite(pin_size_t pin, PinStatus status) { XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, (status == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW - : XMC_GPIO_OUTPUT_LEVEL_HIGH); + : XMC_GPIO_OUTPUT_LEVEL_HIGH); } void digitalToggle(pin_size_t pin) { diff --git a/cores/xmc/wiring_digital.h b/cores/xmc/wiring_digital.h index b243c4e9..ab822143 100644 --- a/cores/xmc/wiring_digital.h +++ b/cores/xmc/wiring_digital.h @@ -49,7 +49,6 @@ void pinMode(pin_size_t pin, PinMode pinMode); */ extern PinStatus digitalRead(pin_size_t pin); - /* * \brief Write a HIGH or a LOW value to a digital pin. * From 2bfc506faaed5039122ff38584a642f5d24d3876 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 8 Apr 2025 13:46:23 +0530 Subject: [PATCH 018/366] examples: Added examples fro GPIO functions. Signed-off-by: MDin --- examples/blink/blink.ino | 17 +++++++++++++++++ examples/button/button.ino | 15 +++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 examples/blink/blink.ino create mode 100644 examples/button/button.ino diff --git a/examples/blink/blink.ino b/examples/blink/blink.ino new file mode 100644 index 00000000..fff25580 --- /dev/null +++ b/examples/blink/blink.ino @@ -0,0 +1,17 @@ +#include "Arduino.h" +int val = 0; +void setup() +{ + pinMode(LED_BUILTIN, OUTPUT); + pinMode(23, OUTPUT); +} + +void loop() +{ + digitalWrite(LED_BUILTIN, 0); + digitalWrite(23, val); + delay(1000); + digitalWrite(LED_BUILTIN, 1); + digitalWrite(23, 1); + delay(1000); +} \ No newline at end of file diff --git a/examples/button/button.ino b/examples/button/button.ino new file mode 100644 index 00000000..4c6b46d6 --- /dev/null +++ b/examples/button/button.ino @@ -0,0 +1,15 @@ +#include "Arduino.h" +int ledPin = 22; // LED connected to digital pin 13 + int inPin = 25; // pushbutton connected to digital pin 7 + int val; // variable to store the read value + + void setup() { + pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output + pinMode(inPin, INPUT_PULLDOWN); // sets the digital pin 7 as input + } + + void loop() { + val = digitalRead(inPin); // read the input pin + digitalWrite(ledPin, val); // sets the LED to the button's value + } + \ No newline at end of file From 64914f7ef99426574ecfbf167c061f3121349ce4 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 8 Apr 2025 13:48:00 +0530 Subject: [PATCH 019/366] variants/: Change the pins arduino for XMC 4700. Signed-off-by: MDin --- .../config/XMC4700_Relax_Kit/pins_arduino.h | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index 77545023..27f812db 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -255,9 +255,9 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { /* 96 */ {XMC_GPIO_PORT1, 12}, // CAN_TX /* 97 */ {XMC_GPIO_PORT1, 13} // CAN_RX }; -// const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); -// const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); -// ; +const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +; // const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { // /* 0 */ {CCU40, CCU40_CC43, 3, 0, CCU40_IN3_P1_0}, @@ -286,15 +286,19 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { // XMC_PWM4_t mapping_pwm4[] = { // {CCU40, CCU40_CC42, 2, mapping_port_pin[3], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, // PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P1.1 -// {CCU41, CCU41_CC40, 0, mapping_port_pin[10], P3_10_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, +// {CCU41, CCU41_CC40, 0, mapping_port_pin[10], P3_10_AF_CCU41_OUT0, +// XMC_CCU4_SLICE_PRESCALER_64, // PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 10 P3.10 // {CCU41, CCU41_CC42, 2, mapping_port_pin[11], P3_8_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, // PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 11 P3.8 -// {CCU40, CCU40_CC40, 0, mapping_port_pin[93], P0_15_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, +// {CCU40, CCU40_CC40, 0, mapping_port_pin[93], P0_15_AF_CCU40_OUT0, +// XMC_CCU4_SLICE_PRESCALER_64, // PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 93 P0.15 -// {CCU40, CCU40_CC41, 1, mapping_port_pin[70], P0_14_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, +// {CCU40, CCU40_CC41, 1, mapping_port_pin[70], P0_14_AF_CCU40_OUT1, +// XMC_CCU4_SLICE_PRESCALER_64, // PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 70 P0.14 -// {CCU40, CCU40_CC43, 3, mapping_port_pin[94], P0_12_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, +// {CCU40, CCU40_CC43, 3, mapping_port_pin[94], P0_12_AF_CCU40_OUT3, +// XMC_CCU4_SLICE_PRESCALER_64, // PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 94 P0.12 // {CCU42, CCU42_CC40, 0, mapping_port_pin[61], P3_0_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, // PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 61 P3.0 @@ -375,17 +379,19 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { // #endif // // Result reg numbers are now equal to channel numbers -// XMC_ADC_t mapping_adc[] = {{VADC, 0, VADC_G0, 0, 0, DISABLED}, {VADC, 1, VADC_G0, 0, 1, DISABLED}, -// {VADC, 2, VADC_G1, 1, 2, DISABLED}, {VADC, 3, VADC_G1, 1, 3, DISABLED}, -// {VADC, 0, VADC_G2, 2, 0, DISABLED}, {VADC, 1, VADC_G2, 2, 1, DISABLED}, -// {VADC, 6, VADC_G2, 2, 6, DISABLED}, {VADC, 5, VADC_G2, 2, 5, DISABLED}, -// {VADC, 3, VADC_G2, 2, 3, DISABLED}, {VADC, 7, VADC_G1, 1, 7, DISABLED}, -// {VADC, 5, VADC_G1, 1, 5, DISABLED}, {VADC, 7, VADC_G0, 0, 7, DISABLED}, -// {VADC, 7, VADC_G3, 3, 7, DISABLED}, {VADC, 1, VADC_G1, 1, 1, DISABLED}, -// {VADC, 0, VADC_G1, 1, 0, DISABLED}, {VADC, 6, VADC_G3, 3, 6, DISABLED}, -// {VADC, 6, VADC_G0, 0, 6, DISABLED}, {VADC, 4, VADC_G1, 1, 4, DISABLED}, -// {VADC, 6, VADC_G1, 1, 6, DISABLED}, {VADC, 2, VADC_G2, 2, 2, DISABLED}, -// {VADC, 4, VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; +// XMC_ADC_t mapping_adc[] = {{VADC, 0, VADC_G0, 0, 0, DISABLED}, {VADC, 1, VADC_G0, 0, 1, +// DISABLED}, +// {VADC, 2, VADC_G1, 1, 2, DISABLED}, {VADC, 3, VADC_G1, 1, 3, +// DISABLED}, {VADC, 0, VADC_G2, 2, 0, DISABLED}, {VADC, 1, VADC_G2, 2, +// 1, DISABLED}, {VADC, 6, VADC_G2, 2, 6, DISABLED}, {VADC, 5, VADC_G2, +// 2, 5, DISABLED}, {VADC, 3, VADC_G2, 2, 3, DISABLED}, {VADC, 7, +// VADC_G1, 1, 7, DISABLED}, {VADC, 5, VADC_G1, 1, 5, DISABLED}, {VADC, +// 7, VADC_G0, 0, 7, DISABLED}, {VADC, 7, VADC_G3, 3, 7, DISABLED}, +// {VADC, 1, VADC_G1, 1, 1, DISABLED}, {VADC, 0, VADC_G1, 1, 0, +// DISABLED}, {VADC, 6, VADC_G3, 3, 6, DISABLED}, {VADC, 6, VADC_G0, 0, +// 6, DISABLED}, {VADC, 4, VADC_G1, 1, 4, DISABLED}, {VADC, 6, VADC_G1, +// 1, 6, DISABLED}, {VADC, 2, VADC_G2, 2, 2, DISABLED}, {VADC, 4, +// VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; // const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); // /* From 9101e46a5df46a59952a63de05ad7a3c2c4c8c9f Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 9 Apr 2025 15:15:37 +0530 Subject: [PATCH 020/366] cores/xmc: Changed function Arguments data types. Signed-off-by: MDin --- cores/xmc/wiring_digital.c | 7 +--- cores/xmc/wiring_digital.h | 86 -------------------------------------- 2 files changed, 2 insertions(+), 91 deletions(-) delete mode 100644 cores/xmc/wiring_digital.h diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c index a9762117..e1343d75 100644 --- a/cores/xmc/wiring_digital.c +++ b/cores/xmc/wiring_digital.c @@ -64,21 +64,18 @@ void pinMode(pin_size_t pin, PinMode mode) { XMC_GPIO_Init(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, &gpio_conf); } -PinStatus digitalRead(pin_size_t pin) { +uint8_t digitalRead(uint8_t pin) { return (pin == GND) ? LOW : (XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); } -void digitalWrite(pin_size_t pin, PinStatus status) { +void digitalWrite(uint8_t pin, uint8_t status) { XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, (status == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW : XMC_GPIO_OUTPUT_LEVEL_HIGH); } -void digitalToggle(pin_size_t pin) { - XMC_GPIO_ToggleOutput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin); -} #ifdef __cplusplus } #endif diff --git a/cores/xmc/wiring_digital.h b/cores/xmc/wiring_digital.h deleted file mode 100644 index ab822143..00000000 --- a/cores/xmc/wiring_digital.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ - -#ifndef _WIRING_DIGITAL_ -#define _WIRING_DIGITAL_ -#include "Arduino.h" - -#ifdef __cplusplus -extern "C" { -#endif - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -/* - * \brief Configures the specified pin to behave either as an input or an output. See the - * description of digital pins for details. - * - * \param pin The number of the pin whose mode you wish to set - * \param mode Either INPUT, INPUT_PULLUP, INPUT_PULLDOWN or OUTPUT - */ -void pinMode(pin_size_t pin, PinMode pinMode); - -/* - * \brief Reads the value from a specified digital pin, either HIGH or LOW. - * - * \param pin The number of the digital pin you want to read (int) - * - * \return HIGH or LOW - */ -extern PinStatus digitalRead(pin_size_t pin); - -/* - * \brief Write a HIGH or a LOW value to a digital pin. - * - * If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the - * corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW. - * - * If the pin is configured as an INPUT, writing a HIGH value with digitalWrite() will enable an - * internal 20K pullup resistor (see the tutorial on digital pins). Writing LOW will disable the - * pullup. The pullup resistor is enough to light an LED dimly, so if LEDs appear to work, but very - * dimly, this is a likely cause. The remedy is to set the pin to an output with the pinMode() - * function. - * - * \note Digital pin PIN_LED is harder to use as a digital input than the other digital pins because - * it has an LED and resistor attached to it that's soldered to the board on most boards. If you - * enable its internal 20k pull-up resistor, it will hang at around 1.7 V instead of the expected 5V - * because the onboard LED and series resistor pull the voltage level down, meaning it always - * returns LOW. If you must use pin PIN_LED as a digital input, use an external pull down resistor. - * - * \param pin the pin number - * \param value HIGH or LOW - */ -extern void digitalWrite(pin_size_t pin, PinStatus status); - -/* - * \brief Toggles output signal of a digital pin. - * - * \param pin The number of the pin who you want to toggle - */ -extern void digitalToggle(uint8_t pin); - -#ifdef __cplusplus -} -#endif - -#endif /* _WIRING_DIGITAL_ */ \ No newline at end of file From e96ff22b1e13790dc2b063db1f04dcfc887e7737 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 9 Apr 2025 15:18:26 +0530 Subject: [PATCH 021/366] cores/xmc: Added namspace for avoid warnings. Signed-off-by: MDin --- cores/xmc/Arduino.h | 3 ++- cores/xmc/wiring_digital.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index d570d499..e968a47c 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -27,6 +27,8 @@ #include "api/deprecated-avr-comp/avr/dtostrf.h" #ifdef __cplusplus +using namespace arduino; + extern "C" { #endif @@ -324,7 +326,6 @@ extern void loop(void); // @Arduino Core Includes //**************************************************************************** #include "wiring_time.h" -#include "wiring_digital.h" // #include "wiring_digital.h" /* #include "wiring_analog.h" diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c index e1343d75..ab67e32d 100644 --- a/cores/xmc/wiring_digital.c +++ b/cores/xmc/wiring_digital.c @@ -64,7 +64,7 @@ void pinMode(pin_size_t pin, PinMode mode) { XMC_GPIO_Init(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, &gpio_conf); } -uint8_t digitalRead(uint8_t pin) { +uint8_t digitalRead(uint8_t pin){ return (pin == GND) ? LOW : (XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); From 56255804df0985a55f9dd3dddc5663d414e57dff Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 9 Apr 2025 16:47:14 +0530 Subject: [PATCH 022/366] example/: Remove unneeded sample folders. Signed-off-by: MDin --- cores/xmc/wiring_digital.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c index ab67e32d..93c165dd 100644 --- a/cores/xmc/wiring_digital.c +++ b/cores/xmc/wiring_digital.c @@ -70,7 +70,7 @@ uint8_t digitalRead(uint8_t pin){ : (XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); } -void digitalWrite(uint8_t pin, uint8_t status) { +void digitalWrite(uint8_t pin, uint8_t status){ XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, (status == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW : XMC_GPIO_OUTPUT_LEVEL_HIGH); From 5a8ddbc9957e3018d209ae61733d932d11509270 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 9 Apr 2025 18:31:47 +0530 Subject: [PATCH 023/366] examples/: Removed Example files. Signed-off-by: MDin --- examples/blink/blink.ino | 17 --------------- examples/button/button.ino | 15 ------------- examples/timer/timer.ino | 44 -------------------------------------- 3 files changed, 76 deletions(-) delete mode 100644 examples/blink/blink.ino delete mode 100644 examples/button/button.ino delete mode 100644 examples/timer/timer.ino diff --git a/examples/blink/blink.ino b/examples/blink/blink.ino deleted file mode 100644 index fff25580..00000000 --- a/examples/blink/blink.ino +++ /dev/null @@ -1,17 +0,0 @@ -#include "Arduino.h" -int val = 0; -void setup() -{ - pinMode(LED_BUILTIN, OUTPUT); - pinMode(23, OUTPUT); -} - -void loop() -{ - digitalWrite(LED_BUILTIN, 0); - digitalWrite(23, val); - delay(1000); - digitalWrite(LED_BUILTIN, 1); - digitalWrite(23, 1); - delay(1000); -} \ No newline at end of file diff --git a/examples/button/button.ino b/examples/button/button.ino deleted file mode 100644 index 4c6b46d6..00000000 --- a/examples/button/button.ino +++ /dev/null @@ -1,15 +0,0 @@ -#include "Arduino.h" -int ledPin = 22; // LED connected to digital pin 13 - int inPin = 25; // pushbutton connected to digital pin 7 - int val; // variable to store the read value - - void setup() { - pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output - pinMode(inPin, INPUT_PULLDOWN); // sets the digital pin 7 as input - } - - void loop() { - val = digitalRead(inPin); // read the input pin - digitalWrite(ledPin, val); // sets the LED to the button's value - } - \ No newline at end of file diff --git a/examples/timer/timer.ino b/examples/timer/timer.ino deleted file mode 100644 index bc74fdba..00000000 --- a/examples/timer/timer.ino +++ /dev/null @@ -1,44 +0,0 @@ -#include "Arduino.h" -#include "xmc_gpio.h" -// the setup function runs once when you press reset or power the board -void setup() { - setupGPIO(); -} - -// the loop function runs over and over again forever -void loop() { - // Toggle the LED using delay - digitalWrite(LED_BUILTIN, LOW); - delay(1000); // Delay for 1000 milliseconds (1 second) - digitalWrite(LED_BUILTIN, HIGH); - delay(1000); // Delay for 1000 milliseconds (1 second) - - // Toggle the LED using delayMicroseconds - digitalWrite(LED_BUILTIN, LOW); - delayMicroseconds(500000); // Delay for 500000 microseconds (0.5 seconds) - digitalWrite(LED_BUILTIN, HIGH); - delayMicroseconds(500000); // Delay for 500000 microseconds (0.5 seconds) -} - - -#ifdef __cplusplus -extern "C" { -#endif -void setupGPIO() { - XMC_GPIO_CONFIG_t gpio_config; - - gpio_config.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL; - gpio_config.output_level = XMC_GPIO_OUTPUT_LEVEL_LOW; - gpio_config.output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM; - XMC_GPIO_Init(mapping_port_pin[LED_BUILTIN].port, mapping_port_pin[LED_BUILTIN].pin, &gpio_config); -} - -void digitalWrite(pin_size_t pin, PinStatus value) { - XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, - (value == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW - : XMC_GPIO_OUTPUT_LEVEL_HIGH); -} - -#ifdef __cplusplus -} -#endif \ No newline at end of file From de4fb3aef350fb18d27170fc0e99634991f31892 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 15 Apr 2025 17:20:02 +0530 Subject: [PATCH 024/366] cores/xmc: Removed Copyrights comments. Signed-off-by: MDin --- cores/xmc/wiring_digital.c | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c index 93c165dd..56fb71d5 100644 --- a/cores/xmc/wiring_digital.c +++ b/cores/xmc/wiring_digital.c @@ -1,27 +1,3 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Copyright (c) 2018 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. - */ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** #include "Arduino.h" #ifdef __cplusplus extern "C" { From cf02040c8a7b659538ed37a91c7e8f3ad665cea7 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Apr 2025 16:11:50 +0200 Subject: [PATCH 025/366] cores/xmc/: Add Uart class for Serial implementation. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 6 +- cores/xmc/Uart.cpp | 242 ++++++++++++++++++++++++++++++++++++++++++++ cores/xmc/Uart.h | 137 +++++++++++++++++++++++++ cores/xmc/main.cpp | 2 +- 4 files changed, 383 insertions(+), 4 deletions(-) create mode 100644 cores/xmc/Uart.cpp create mode 100644 cores/xmc/Uart.h diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index e968a47c..eb5a4a7e 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -342,12 +342,12 @@ extern void loop(void); #ifdef __cplusplus } // extern "C" -// #include "Tone.h" -// #include "WMath.h" + // #include "Tone.h" + // #include "WMath.h" + #include "Uart.h" #endif // __cplusplus // #include "Print.h" -// #include "HardwareSerial.h" //**************************************************************************** // @Board Variant Includes diff --git a/cores/xmc/Uart.cpp b/cores/xmc/Uart.cpp new file mode 100644 index 00000000..55fffa32 --- /dev/null +++ b/cores/xmc/Uart.cpp @@ -0,0 +1,242 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "Uart.h" +#include "Arduino.h" + +//**************************************************************************** +// @Local Functions +//**************************************************************************** + +// Constructors //////////////////////////////////////////////////////////////// + +Uart::Uart(XMC_UART_t *xmc_uart_config, + arduino::RingBuffer *rx_buffer, + arduino::RingBuffer *tx_buffer) { + _XMC_UART_config = xmc_uart_config; + _rx_buffer = rx_buffer; + _tx_buffer = tx_buffer; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void Uart::begin(unsigned long baud) { begin(baud, SERIAL_8N1); } + +void Uart::begin(unsigned long baud, unsigned short config) { + begin(baud, static_cast(config)); +} + +void Uart::begin(unsigned long baud, XMC_UART_MODE_t config) { + XMC_UART_CH_CONFIG_t uart_ch_config; + uart_ch_config.oversampling = 0; // Must be 0 or valid oversample for baud rate calculations + uart_ch_config.baudrate = baud; + uart_ch_config.data_bits = (uint8_t)(config & 0x00fU); + uart_ch_config.frame_length = uart_ch_config.data_bits; // Set same as data bits length + uart_ch_config.parity_mode = (XMC_USIC_CH_PARITY_MODE_t)(config & ~0xffU); + uart_ch_config.stop_bits = (uint8_t)((config & 0x0f0U) >> 4); + + XMC_UART_CH_Init(_XMC_UART_config->channel, &uart_ch_config); + + // dx0 is UART RX: source must be set + XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX0, + _XMC_UART_config->input_source_dx0); + + // Additional input multiplexing + // Check if dx1 is used + if (_XMC_UART_config->input_source_dx1 != XMC_INPUT_INVALID) + XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX1, + _XMC_UART_config->input_source_dx1); + + // Check if dx2 is used + if (_XMC_UART_config->input_source_dx2 != XMC_INPUT_INVALID) + XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX2, + _XMC_UART_config->input_source_dx2); + + // Check if dx3 is used + if (_XMC_UART_config->input_source_dx3 != XMC_INPUT_INVALID) + XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX3, + _XMC_UART_config->input_source_dx3); + + XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_ALTERNATIVE_RECEIVE | + XMC_UART_CH_EVENT_STANDARD_RECEIVE); + XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, + _XMC_UART_config->irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE, + _XMC_UART_config->irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_TRANSMIT_BUFFER, + _XMC_UART_config->irq_service_request); + NVIC_SetPriority(_XMC_UART_config->irq_num, 3); + NVIC_EnableIRQ(_XMC_UART_config->irq_num); + + XMC_UART_CH_Start(_XMC_UART_config->channel); + + // TX pin setup put here to avoid startup corrupted characters being first sent + XMC_GPIO_Init(_XMC_UART_config->tx.port, _XMC_UART_config->tx.pin, + &(_XMC_UART_config->tx_config)); + + XMC_GPIO_Init(_XMC_UART_config->rx.port, _XMC_UART_config->rx.pin, + &(_XMC_UART_config->rx_config)); +} + +void Uart::end(void) { + // Wait for any outstanding data to be sent + flush(); + // Disable UART interrupt in NVIC + NVIC_DisableIRQ(_XMC_UART_config->irq_num); + // Clear any received data after stopping interrupts + _rx_buffer->_iHead = _rx_buffer->_iTail; +} + +void Uart::setInterruptPriority(uint32_t priority) { + NVIC_SetPriority(_XMC_UART_config->irq_num, priority & 0x03); +} + +uint32_t Uart::getInterruptPriority() { return NVIC_GetPriority(_XMC_UART_config->irq_num); } + +int Uart::available(void) { + int head = _rx_buffer->_iHead; // Snapshot index affected by irq + if (head >= _rx_buffer->_iTail) + return head - _rx_buffer->_iTail; + return SERIAL_BUFFER_SIZE - _rx_buffer->_iTail + head; +} + +int Uart::availableForWrite(void) { + int tail = _tx_buffer->_iTail; // Snapshot index affected by irq + if (_tx_buffer->_iHead >= tail) + return SERIAL_BUFFER_SIZE - 1 - _tx_buffer->_iHead + tail; + return tail - _tx_buffer->_iHead - 1; +} + +int Uart::peek(void) { + if (_rx_buffer->_iHead == _rx_buffer->_iTail) + return -1; + return _rx_buffer->_aucBuffer[_rx_buffer->_iTail]; +} + +int Uart::read(void) { + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->_iHead == _rx_buffer->_iTail) + return -1; + + uint8_t uc = _rx_buffer->_aucBuffer[_rx_buffer->_iTail]; + _rx_buffer->_iTail++; + if (_rx_buffer->_iTail >= SERIAL_BUFFER_SIZE) + _rx_buffer->_iTail = 0; + return uc; +} + +void Uart::flush(void) { + while (_tx_buffer->_iHead != _tx_buffer->_iTail) + ; // wait for transmit data to be sent + + while (XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) == + XMC_USIC_CH_TBUF_STATUS_BUSY) + ; +} + +size_t Uart::write(const uint8_t uc_data) { +// Is the hardware currently busy? +#if defined(SERIAL_USE_U1C1) + if (_tx_buffer->_iTail != _tx_buffer->_iHead) +#else + if ((XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) == + XMC_USIC_CH_TBUF_STATUS_BUSY) || + (_tx_buffer->_iTail != _tx_buffer->_iHead)) +#endif + { + // If busy we buffer + int nextWrite = _tx_buffer->_iHead + 1; + if (nextWrite >= SERIAL_BUFFER_SIZE) + nextWrite = 0; + + // This should always be false but in case transmission is completed before buffer, we need + // to reenable IRQ + if (XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) != + XMC_USIC_CH_TBUF_STATUS_BUSY) { + XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); + XMC_UART_CH_Transmit(_XMC_UART_config->channel, + _tx_buffer->_aucBuffer[_tx_buffer->_iTail]); + _tx_buffer->_iTail++; + if (_tx_buffer->_iTail >= SERIAL_BUFFER_SIZE) + _tx_buffer->_iTail %= SERIAL_BUFFER_SIZE; // If iTail is larger than Serial Buffer + // Size calculate the correct index value + } + + unsigned long startTime = millis(); + while (_tx_buffer->_iTail == nextWrite) { + if (millis() - startTime > 1000) { + return 0; // Spin locks if we're about to overwrite the buffer. This continues once + // the data is + // sent + } + } + + _tx_buffer->_aucBuffer[_tx_buffer->_iHead] = uc_data; + _tx_buffer->_iHead = nextWrite; + } else { + // Make sure TX interrupt is enabled + XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); + // Bypass buffering and send character directly + XMC_UART_CH_Transmit(_XMC_UART_config->channel, uc_data); + } + return 1; +} + +void Uart::IrqHandler(void) { + uint32_t status = XMC_UART_CH_GetStatusFlag(_XMC_UART_config->channel); + + // Did we receive data? + if ((status & (XMC_UART_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION | + XMC_UART_CH_STATUS_FLAG_RECEIVE_INDICATION)) != 0U) { + XMC_UART_CH_ClearStatusFlag(_XMC_UART_config->channel, + (XMC_UART_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION | + XMC_UART_CH_STATUS_FLAG_RECEIVE_INDICATION)); + + while (_XMC_UART_config->channel->RBUFSR & + (USIC_CH_RBUFSR_RDV0_Msk | USIC_CH_RBUFSR_RDV1_Msk)) + _rx_buffer->store_char(XMC_UART_CH_GetReceivedData(_XMC_UART_config->channel)); + } + + // Do we need to keep sending data? + if ((status & XMC_UART_CH_STATUS_FLAG_TRANSMIT_BUFFER_INDICATION) != 0U) { + XMC_UART_CH_ClearStatusFlag(_XMC_UART_config->channel, + XMC_UART_CH_STATUS_FLAG_TRANSMIT_BUFFER_INDICATION); + + if (_tx_buffer->_iTail != _tx_buffer->_iHead) { + XMC_UART_CH_Transmit(_XMC_UART_config->channel, + _tx_buffer->_aucBuffer[_tx_buffer->_iTail]); + _tx_buffer->_iTail++; + if (_tx_buffer->_iTail >= SERIAL_BUFFER_SIZE) + _tx_buffer->_iTail %= SERIAL_BUFFER_SIZE; // If iTail is larger than Serial Buffer + // Size calculate the correct index value + } else { + // Mask off transmit interrupt so we don't get it any more + XMC_UART_CH_DisableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); + } + } +} + +//**************************************************************************** +// END OF FILE +//**************************************************************************** \ No newline at end of file diff --git a/cores/xmc/Uart.h b/cores/xmc/Uart.h new file mode 100644 index 00000000..19507b41 --- /dev/null +++ b/cores/xmc/Uart.h @@ -0,0 +1,137 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#pragma once + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** + +#include "Arduino.h" +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "api/HardwareSerial.h" +#include "api/RingBuffer.h" + +//**************************************************************************** +// @Typedefs +//**************************************************************************** +// Define config for Serial.begin(baud, config); +#undef SERIAL_5N1 +#undef SERIAL_6N1 +#undef SERIAL_7N1 +#undef SERIAL_8N1 +#undef SERIAL_5N2 +#undef SERIAL_6N2 +#undef SERIAL_7N2 +#undef SERIAL_8N2 +#undef SERIAL_5E1 +#undef SERIAL_6E1 +#undef SERIAL_7E1 +#undef SERIAL_8E1 +#undef SERIAL_5E2 +#undef SERIAL_6E2 +#undef SERIAL_7E2 +#undef SERIAL_8E2 +#undef SERIAL_5O1 +#undef SERIAL_6O1 +#undef SERIAL_7O1 +#undef SERIAL_8O1 +#undef SERIAL_5O2 +#undef SERIAL_6O2 +#undef SERIAL_7O2 +#undef SERIAL_8O2 + +typedef enum XMC_UART_MODE { + SERIAL_5N1 = 0x15 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_6N1 = 0x16 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_7N1 = 0x17 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_8N1 = 0x18 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_5N2 = 0x25 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_6N2 = 0x26 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_7N2 = 0x27 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_8N2 = 0x28 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_5E1 = 0x15 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_6E1 = 0x16 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_7E1 = 0x17 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_8E1 = 0x18 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_5E2 = 0x25 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_6E2 = 0x26 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_7E2 = 0x27 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_8E2 = 0x28 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_5O1 = 0x15 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_6O1 = 0x16 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_7O1 = 0x17 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_8O1 = 0x18 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_5O2 = 0x25 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_6O2 = 0x26 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_7O2 = 0x27 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_8O2 = 0x28 | XMC_USIC_CH_PARITY_MODE_ODD +} XMC_UART_MODE_t; + +//**************************************************************************** +// @Class Definitionsw +//**************************************************************************** +class Uart : public arduino::HardwareSerial { +public: + XMC_UART_t *_XMC_UART_config; + + Uart(XMC_UART_t *xmc_uart_config, + arduino::RingBuffer *rx_buffer, + arduino::RingBuffer *tx_buffer); + + void begin(unsigned long); + void begin(unsigned long baudrate, uint16_t config) override; + void begin(unsigned long, XMC_UART_MODE_t config); + void end(); + int available(void); + int availableForWrite(void); + int peek(void); + int read(void); + void flush(void); + + // virtual size_t readBytes(char *buffer, size_t length) ; // read chars from stream into buffer + // virtual size_t readBytes(uint8_t *buffer, size_t length) ; + + size_t write(const uint8_t); + + // virtual size_t write(const uint8_t *buffer, size_t size) ; + inline size_t write(unsigned long n) { return write((uint8_t)n); } + + inline size_t write(long n) { return write((uint8_t)n); } + + inline size_t write(unsigned int n) { return write((uint8_t)n); } + + inline size_t write(int n) { return write((uint8_t)n); } + + using Print::write; // pull in write(str) and write(buf, size) from Print + + operator bool() { return true; } + + void setInterruptPriority(uint32_t priority); + uint32_t getInterruptPriority(); + + void IrqHandler(void); + +private: + arduino::RingBuffer *_rx_buffer; + arduino::RingBuffer *_tx_buffer; +}; + +extern Uart Serial; +extern Uart Serial1; diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index d83c4a23..6cb6b295 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -49,7 +49,7 @@ int main(void) { setup(); while (1) { loop(); - // serialEventRun(); + serialEventRun(); } } From 4aa7ee37e8b4caa0f3c4aadc67eeec5ee7968cdc Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Apr 2025 16:26:03 +0200 Subject: [PATCH 026/366] variants/: Adapt pins_arduino.h for xmc4700. Signed-off-by: zhanglinjing --- .../config/XMC4700_Relax_Kit/pins_arduino.h | 554 +++++++++--------- 1 file changed, 275 insertions(+), 279 deletions(-) diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index 27f812db..7996edca 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -394,286 +394,282 @@ const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); // VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; // const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -// /* -// * UART objects -// * -// * Serial 0 is Debug port -// * Serial 1 is on-board port -// */ -// RingBuffer rx_buffer_0; -// RingBuffer tx_buffer_0; -// RingBuffer rx_buffer_1; -// RingBuffer tx_buffer_1; - -// XMC_UART_t XMC_UART_0 = { -// .channel = XMC_UART0_CH0, -// .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)4}, -// .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, -// .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)5}, -// .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, -// .input_source_dx0 = (XMC_USIC_INPUT_t)USIC0_C0_DX0_P1_4, -// .input_source_dx1 = XMC_INPUT_INVALID, -// .input_source_dx2 = XMC_INPUT_INVALID, -// .input_source_dx3 = XMC_INPUT_INVALID, -// .irq_num = USIC0_0_IRQn, -// .irq_service_request = 0}; - -// XMC_UART_t XMC_UART_1 = { -// .channel = XMC_UART1_CH0, -// .rx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)15}, -// .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, -// .tx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14}, -// .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, -// .input_source_dx0 = (XMC_USIC_INPUT_t)USIC1_C0_DX0_P2_15, -// .input_source_dx1 = XMC_INPUT_INVALID, -// .input_source_dx2 = XMC_INPUT_INVALID, -// .input_source_dx3 = XMC_INPUT_INVALID, -// .irq_num = USIC1_0_IRQn, -// .irq_service_request = 0}; - -// // Debug port -// // HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); -// // On-board port -// // HardwareSerial Serial1(&XMC_UART_1, &rx_buffer_1, &tx_buffer_1); - -// // Three SPI instances possible -// XMC_SPI_t XMC_SPI_0 = { -// .channel = XMC_SPI2_CH0, -// .channel_config = {.baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, -// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)8}, -// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)7}, -// .miso_config = -// { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_C, -// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)9}, -// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// }; - -// XMC_SPI_t XMC_SPI_1 = { -// .channel = XMC_SPI0_CH1, -// .channel_config = {.baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, -// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, -// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// .miso = {.port = (XMC_GPIO_PORT_t *)PORT4_BASE, .pin = (uint8_t)0}, -// .miso_config = -// { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_E, -// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)6}, -// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// }; - -// XMC_SPI_t XMC_SPI_2 = { -// .channel = XMC_SPI2_CH1, -// .channel_config = {.baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, -// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)11}, -// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)12}, -// .miso_config = -// { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_D, -// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, -// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// }; - -// Only two serial objects are possible: Serial and Serial1 so anymore serial interfaces has to -// overwrite/reuse the existing serial objects -// Will overwrite Serial -// XMC_SPI_t XMC_SPI_3 = -//{ -// .channel = XMC_SPI0_CH0, -// .channel_config = { -// .baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE -// }, -// .mosi = { -// .port = (XMC_GPIO_PORT_t*)PORT5_BASE, -// .pin = (uint8_t)1 -// }, -// .mosi_config = { -// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM -// }, -// .miso = { -// .port = (XMC_GPIO_PORT_t*)PORT5_BASE, -// .pin = (uint8_t)0 -// }, -// .miso_config = { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_D, -// .sclkout = { -// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, -// .pin = (uint8_t)8 -// }, -// .sclkout_config = { -// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM -// }, -// }; - -// Will overwrite Serial1 -// XMC_SPI_t XMC_SPI_4 = -//{ -// .channel = XMC_SPI1_CH0, -// .channel_config = { -// .baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE -// }, -// .mosi = { -// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, -// .pin = (uint8_t)5 -// }, -// .mosi_config = { -// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM -// }, -// .miso = { -// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, -// .pin = (uint8_t)4 -// }, -// .miso_config = { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_A, -// .sclkout = { -// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, -// .pin = (uint8_t)11 -// }, -// .sclkout_config = { -// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM -// }, -//}; - -// Two I2C instances possible -// XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, -// .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, -// .sda = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, -// .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, -// .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)13}, -// .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, -// .input_source_dx0 = XMC_INPUT_A, -// .input_source_dx1 = XMC_INPUT_B, -// .slave_receive_irq_num = (IRQn_Type)91, -// .slave_receive_irq_service_request = 1, -// .protocol_irq_num = (IRQn_Type)92, -// .protocol_irq_service_request = 2}; -// XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, -// .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, -// .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, -// .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, -// .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, -// .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, -// .input_source_dx0 = XMC_INPUT_B, -// .input_source_dx1 = XMC_INPUT_A, -// .slave_receive_irq_num = (IRQn_Type)93, -// .slave_receive_irq_service_request = 3, -// .protocol_irq_num = (IRQn_Type)94, -// .protocol_irq_service_request = 4}; - -// // XMC_I2S instance -// XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, -// .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, -// .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, -// .protocol_irq_num = (IRQn_Type)USIC2_2_IRQn, -// .protocol_irq_service_request = 2}; - -// // XMC CAN instance -// #ifdef CAN_xmc -// XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, -// .can_node_num = XMC_NODE_NUM_1, -// .can_clock = XMC_CAN_CANCLKSRC_FPERI, -// .can_frequency = (uint32_t)144000000, -// .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, -// .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, -// .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, -// .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, -// .node_input = CAN_NODE1_RXD_P1_13, -// .irq_num = CAN0_7_IRQn, -// .irq_service_request = 7u}; -// #endif +/* + * UART objects + * + * Serial 0 is Debug port + * Serial 1 is on-board port + */ +arduino::RingBuffer rx_buffer_0; +arduino::RingBuffer tx_buffer_0; +arduino::RingBuffer rx_buffer_1; +arduino::RingBuffer tx_buffer_1; + +XMC_UART_t XMC_UART_0 = { + .channel = XMC_UART0_CH0, + .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)4}, + .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, + .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)5}, + .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, + .input_source_dx0 = (XMC_USIC_INPUT_t)USIC0_C0_DX0_P1_4, + .input_source_dx1 = XMC_INPUT_INVALID, + .input_source_dx2 = XMC_INPUT_INVALID, + .input_source_dx3 = XMC_INPUT_INVALID, + .irq_num = USIC0_0_IRQn, + .irq_service_request = 0}; + +XMC_UART_t XMC_UART_1 = { + .channel = XMC_UART1_CH0, + .rx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)15}, + .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, + .tx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14}, + .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, + .input_source_dx0 = (XMC_USIC_INPUT_t)USIC1_C0_DX0_P2_15, + .input_source_dx1 = XMC_INPUT_INVALID, + .input_source_dx2 = XMC_INPUT_INVALID, + .input_source_dx3 = XMC_INPUT_INVALID, + .irq_num = USIC1_0_IRQn, + .irq_service_request = 0}; + +// Debug port +Uart Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +// On-board port +Uart Serial1(&XMC_UART_1, &rx_buffer_1, &tx_buffer_1); + + // // Three SPI instances possible + // XMC_SPI_t XMC_SPI_0 = { + // .channel = XMC_SPI2_CH0, + // .channel_config = {.baudrate = 20003906U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)8}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)7}, + // .miso_config = + // { + // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // }, + // .input_source = XMC_INPUT_C, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)9}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + // }; + + // XMC_SPI_t XMC_SPI_1 = { + // .channel = XMC_SPI0_CH1, + // .channel_config = {.baudrate = 20003906U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT4_BASE, .pin = (uint8_t)0}, + // .miso_config = + // { + // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // }, + // .input_source = XMC_INPUT_E, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)6}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + // }; + + // XMC_SPI_t XMC_SPI_2 = { + // .channel = XMC_SPI2_CH1, + // .channel_config = {.baudrate = 20003906U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)11}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)12}, + // .miso_config = + // { + // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // }, + // .input_source = XMC_INPUT_D, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + // }; + + // Only two serial objects are possible: Serial and Serial1 so anymore serial interfaces has to + // overwrite/reuse the existing serial objects + // Will overwrite Serial + // XMC_SPI_t XMC_SPI_3 = + //{ + // .channel = XMC_SPI0_CH0, + // .channel_config = { + // .baudrate = 20003906U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE + // }, + // .mosi = { + // .port = (XMC_GPIO_PORT_t*)PORT5_BASE, + // .pin = (uint8_t)1 + // }, + // .mosi_config = { + // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM + // }, + // .miso = { + // .port = (XMC_GPIO_PORT_t*)PORT5_BASE, + // .pin = (uint8_t)0 + // }, + // .miso_config = { + // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // }, + // .input_source = XMC_INPUT_D, + // .sclkout = { + // .port = (XMC_GPIO_PORT_t*)PORT0_BASE, + // .pin = (uint8_t)8 + // }, + // .sclkout_config = { + // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM + // }, + // }; + + // Will overwrite Serial1 + // XMC_SPI_t XMC_SPI_4 = + //{ + // .channel = XMC_SPI1_CH0, + // .channel_config = { + // .baudrate = 20003906U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE + // }, + // .mosi = { + // .port = (XMC_GPIO_PORT_t*)PORT0_BASE, + // .pin = (uint8_t)5 + // }, + // .mosi_config = { + // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM + // }, + // .miso = { + // .port = (XMC_GPIO_PORT_t*)PORT0_BASE, + // .pin = (uint8_t)4 + // }, + // .miso_config = { + // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // }, + // .input_source = XMC_INPUT_A, + // .sclkout = { + // .port = (XMC_GPIO_PORT_t*)PORT0_BASE, + // .pin = (uint8_t)11 + // }, + // .sclkout_config = { + // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM + // }, + //}; + + // Two I2C instances possible + // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)13}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .input_source_dx0 = XMC_INPUT_A, + // .input_source_dx1 = XMC_INPUT_B, + // .slave_receive_irq_num = (IRQn_Type)91, + // .slave_receive_irq_service_request = 1, + // .protocol_irq_num = (IRQn_Type)92, + // .protocol_irq_service_request = 2}; + // XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .input_source_dx0 = XMC_INPUT_B, + // .input_source_dx1 = XMC_INPUT_A, + // .slave_receive_irq_num = (IRQn_Type)93, + // .slave_receive_irq_service_request = 3, + // .protocol_irq_num = (IRQn_Type)94, + // .protocol_irq_service_request = 4}; + + // // XMC_I2S instance + // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .protocol_irq_num = (IRQn_Type)USIC2_2_IRQn, + // .protocol_irq_service_request = 2}; + + // // XMC CAN instance + // #ifdef CAN_xmc + // XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, + // .can_node_num = XMC_NODE_NUM_1, + // .can_clock = XMC_CAN_CANCLKSRC_FPERI, + // .can_frequency = (uint32_t)144000000, + // .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, + // .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, + // .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, + // .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, + // .node_input = CAN_NODE1_RXD_P1_13, + // .irq_num = CAN0_7_IRQn, + // .irq_service_request = 7u}; + // #endif + + // Serial Interrupt and event handling + #ifdef __cplusplus +extern "C" { + #endif +void serialEventRun(); +void serialEvent() __attribute__((weak)); +void serialEvent1() __attribute__((weak)); + +void serialEventRun() { + if (serialEvent) { + if (Serial.available()) + serialEvent(); + } + if (serialEvent1) { + if (Serial1.available()) + serialEvent1(); + } +} + +void USIC0_0_IRQHandler() { Serial.IrqHandler(); } + +void USIC1_0_IRQHandler() { Serial1.IrqHandler(); } + #ifdef __cplusplus +} + #endif -// // Serial Interrupt and event handling -// #ifdef __cplusplus -// extern "C" { -// #endif -// void serialEventRun(); -// void serialEvent() __attribute__((weak)); -// void serialEvent1() __attribute__((weak)); - -// void serialEventRun() { -// if (serialEvent) { -// if (Serial.available()) -// serialEvent(); -// } -// if (serialEvent1) { -// if (Serial1.available()) -// serialEvent1(); -// } -// } - -// void USIC0_0_IRQHandler() { Serial.IrqHandler(); } - -// void USIC1_0_IRQHandler() { Serial1.IrqHandler(); } -// #ifdef __cplusplus -// } -// #endif #endif /* ARDUINO_MAIN */ -// #ifdef __cplusplus -// extern HardwareSerial Serial; -// extern HardwareSerial Serial1; -// #endif /* cplusplus */ - #endif /* PINS_ARDUINO_H_ */ From b50032aa4c9774dbe04b0893a6c1971d40d50016 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 9 Apr 2025 13:02:31 +0200 Subject: [PATCH 027/366] cores/xmc: Adapt Serial after using namespace arduino. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 1 - cores/xmc/Uart.cpp | 4 +--- cores/xmc/Uart.h | 9 +++------ cores/xmc/main.cpp | 6 +++++- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index eb5a4a7e..f2ecc3f6 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -28,7 +28,6 @@ #ifdef __cplusplus using namespace arduino; - extern "C" { #endif diff --git a/cores/xmc/Uart.cpp b/cores/xmc/Uart.cpp index 55fffa32..e808167d 100644 --- a/cores/xmc/Uart.cpp +++ b/cores/xmc/Uart.cpp @@ -28,9 +28,7 @@ // Constructors //////////////////////////////////////////////////////////////// -Uart::Uart(XMC_UART_t *xmc_uart_config, - arduino::RingBuffer *rx_buffer, - arduino::RingBuffer *tx_buffer) { +Uart::Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer, RingBuffer *tx_buffer) { _XMC_UART_config = xmc_uart_config; _rx_buffer = rx_buffer; _tx_buffer = tx_buffer; diff --git a/cores/xmc/Uart.h b/cores/xmc/Uart.h index 19507b41..f548d24d 100644 --- a/cores/xmc/Uart.h +++ b/cores/xmc/Uart.h @@ -87,13 +87,10 @@ typedef enum XMC_UART_MODE { //**************************************************************************** // @Class Definitionsw //**************************************************************************** -class Uart : public arduino::HardwareSerial { +class Uart : public HardwareSerial { public: XMC_UART_t *_XMC_UART_config; - - Uart(XMC_UART_t *xmc_uart_config, - arduino::RingBuffer *rx_buffer, - arduino::RingBuffer *tx_buffer); + q Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer, RingBuffer *tx_buffer); void begin(unsigned long); void begin(unsigned long baudrate, uint16_t config) override; @@ -129,7 +126,7 @@ class Uart : public arduino::HardwareSerial { void IrqHandler(void); private: - arduino::RingBuffer *_rx_buffer; + RingBuffer *_rx_buffer; arduino::RingBuffer *_tx_buffer; }; diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index 6cb6b295..a2892a68 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -49,7 +49,11 @@ int main(void) { setup(); while (1) { loop(); - serialEventRun(); + if (arduino::serialEventRun) { + arduino::serialEventRun(); + } else { + ::serialEventRun(); + } } } From 96bedf0b32abb481e26d05a7df8457bb0afe2259 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 10 Apr 2025 10:26:22 +0200 Subject: [PATCH 028/366] arduino-core-tests/: Update the core test to newest main. Signed-off-by: zhanglinjing --- tests/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/arduino-core-tests b/tests/arduino-core-tests index 0052b910..6c109cba 160000 --- a/tests/arduino-core-tests +++ b/tests/arduino-core-tests @@ -1 +1 @@ -Subproject commit 0052b910df063e45f351575220f53b0cec295eec +Subproject commit 6c109cba84e1bb0a8e4f4a1b838cedd652a5c139 From 5949a314dafbff9501ab0dc2afbac3e0589314b1 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 10 Apr 2025 10:32:24 +0200 Subject: [PATCH 029/366] /cores/xmc/Uart.h: Fix typo. Signed-off-by: zhanglinjing --- cores/xmc/Uart.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/xmc/Uart.h b/cores/xmc/Uart.h index f548d24d..e4081b89 100644 --- a/cores/xmc/Uart.h +++ b/cores/xmc/Uart.h @@ -90,7 +90,7 @@ typedef enum XMC_UART_MODE { class Uart : public HardwareSerial { public: XMC_UART_t *_XMC_UART_config; - q Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer, RingBuffer *tx_buffer); + Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer, RingBuffer *tx_buffer); void begin(unsigned long); void begin(unsigned long baudrate, uint16_t config) override; From a9772dee02811f45f5c1ede72bd58047d5f02b39 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 17 Apr 2025 21:03:01 +0200 Subject: [PATCH 030/366] cores/xmc: Fix Uart bug, only use ringbuffer for rx. Signed-off-by: zhanglinjing --- cores/xmc/Uart.cpp | 110 ++++++--------------------------------------- cores/xmc/Uart.h | 3 +- cores/xmc/main.cpp | 6 +-- 3 files changed, 15 insertions(+), 104 deletions(-) diff --git a/cores/xmc/Uart.cpp b/cores/xmc/Uart.cpp index e808167d..f9e9f716 100644 --- a/cores/xmc/Uart.cpp +++ b/cores/xmc/Uart.cpp @@ -28,10 +28,9 @@ // Constructors //////////////////////////////////////////////////////////////// -Uart::Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer, RingBuffer *tx_buffer) { +Uart::Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer) { _XMC_UART_config = xmc_uart_config; _rx_buffer = rx_buffer; - _tx_buffer = tx_buffer; } // Public Methods ////////////////////////////////////////////////////////////// @@ -103,7 +102,7 @@ void Uart::end(void) { // Disable UART interrupt in NVIC NVIC_DisableIRQ(_XMC_UART_config->irq_num); // Clear any received data after stopping interrupts - _rx_buffer->_iHead = _rx_buffer->_iTail; + _rx_buffer->clear(); } void Uart::setInterruptPriority(uint32_t priority) { @@ -112,96 +111,31 @@ void Uart::setInterruptPriority(uint32_t priority) { uint32_t Uart::getInterruptPriority() { return NVIC_GetPriority(_XMC_UART_config->irq_num); } -int Uart::available(void) { - int head = _rx_buffer->_iHead; // Snapshot index affected by irq - if (head >= _rx_buffer->_iTail) - return head - _rx_buffer->_iTail; - return SERIAL_BUFFER_SIZE - _rx_buffer->_iTail + head; -} +int Uart::available(void) { return _rx_buffer->available(); } int Uart::availableForWrite(void) { - int tail = _tx_buffer->_iTail; // Snapshot index affected by irq - if (_tx_buffer->_iHead >= tail) - return SERIAL_BUFFER_SIZE - 1 - _tx_buffer->_iHead + tail; - return tail - _tx_buffer->_iHead - 1; -} - -int Uart::peek(void) { - if (_rx_buffer->_iHead == _rx_buffer->_iTail) - return -1; - return _rx_buffer->_aucBuffer[_rx_buffer->_iTail]; -} + return 1; +} // TODO: there are no tx buffer so we awaly have 1 byte available -int Uart::read(void) { - // if the head isn't ahead of the tail, we don't have any characters - if (_rx_buffer->_iHead == _rx_buffer->_iTail) - return -1; +int Uart::peek(void) { return _rx_buffer->peek(); } - uint8_t uc = _rx_buffer->_aucBuffer[_rx_buffer->_iTail]; - _rx_buffer->_iTail++; - if (_rx_buffer->_iTail >= SERIAL_BUFFER_SIZE) - _rx_buffer->_iTail = 0; - return uc; -} +int Uart::read(void) { return _rx_buffer->read_char(); } void Uart::flush(void) { - while (_tx_buffer->_iHead != _tx_buffer->_iTail) - ; // wait for transmit data to be sent - while (XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) - ; + XMC_USIC_CH_TBUF_STATUS_BUSY) { + }; } size_t Uart::write(const uint8_t uc_data) { -// Is the hardware currently busy? -#if defined(SERIAL_USE_U1C1) - if (_tx_buffer->_iTail != _tx_buffer->_iHead) -#else - if ((XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) || - (_tx_buffer->_iTail != _tx_buffer->_iHead)) -#endif - { - // If busy we buffer - int nextWrite = _tx_buffer->_iHead + 1; - if (nextWrite >= SERIAL_BUFFER_SIZE) - nextWrite = 0; - - // This should always be false but in case transmission is completed before buffer, we need - // to reenable IRQ - if (XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) != - XMC_USIC_CH_TBUF_STATUS_BUSY) { - XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); - XMC_UART_CH_Transmit(_XMC_UART_config->channel, - _tx_buffer->_aucBuffer[_tx_buffer->_iTail]); - _tx_buffer->_iTail++; - if (_tx_buffer->_iTail >= SERIAL_BUFFER_SIZE) - _tx_buffer->_iTail %= SERIAL_BUFFER_SIZE; // If iTail is larger than Serial Buffer - // Size calculate the correct index value - } - - unsigned long startTime = millis(); - while (_tx_buffer->_iTail == nextWrite) { - if (millis() - startTime > 1000) { - return 0; // Spin locks if we're about to overwrite the buffer. This continues once - // the data is - // sent - } - } - - _tx_buffer->_aucBuffer[_tx_buffer->_iHead] = uc_data; - _tx_buffer->_iHead = nextWrite; - } else { - // Make sure TX interrupt is enabled - XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); - // Bypass buffering and send character directly - XMC_UART_CH_Transmit(_XMC_UART_config->channel, uc_data); - } + // For sending, write immediately + // This API already have a check for available buffer + XMC_UART_CH_Transmit(_XMC_UART_config->channel, uc_data); return 1; } void Uart::IrqHandler(void) { + // Receive data Interrupt handler uint32_t status = XMC_UART_CH_GetStatusFlag(_XMC_UART_config->channel); // Did we receive data? @@ -215,24 +149,6 @@ void Uart::IrqHandler(void) { (USIC_CH_RBUFSR_RDV0_Msk | USIC_CH_RBUFSR_RDV1_Msk)) _rx_buffer->store_char(XMC_UART_CH_GetReceivedData(_XMC_UART_config->channel)); } - - // Do we need to keep sending data? - if ((status & XMC_UART_CH_STATUS_FLAG_TRANSMIT_BUFFER_INDICATION) != 0U) { - XMC_UART_CH_ClearStatusFlag(_XMC_UART_config->channel, - XMC_UART_CH_STATUS_FLAG_TRANSMIT_BUFFER_INDICATION); - - if (_tx_buffer->_iTail != _tx_buffer->_iHead) { - XMC_UART_CH_Transmit(_XMC_UART_config->channel, - _tx_buffer->_aucBuffer[_tx_buffer->_iTail]); - _tx_buffer->_iTail++; - if (_tx_buffer->_iTail >= SERIAL_BUFFER_SIZE) - _tx_buffer->_iTail %= SERIAL_BUFFER_SIZE; // If iTail is larger than Serial Buffer - // Size calculate the correct index value - } else { - // Mask off transmit interrupt so we don't get it any more - XMC_UART_CH_DisableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_TRANSMIT_BUFFER); - } - } } //**************************************************************************** diff --git a/cores/xmc/Uart.h b/cores/xmc/Uart.h index e4081b89..a7d26524 100644 --- a/cores/xmc/Uart.h +++ b/cores/xmc/Uart.h @@ -90,7 +90,7 @@ typedef enum XMC_UART_MODE { class Uart : public HardwareSerial { public: XMC_UART_t *_XMC_UART_config; - Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer, RingBuffer *tx_buffer); + Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer); void begin(unsigned long); void begin(unsigned long baudrate, uint16_t config) override; @@ -127,7 +127,6 @@ class Uart : public HardwareSerial { private: RingBuffer *_rx_buffer; - arduino::RingBuffer *_tx_buffer; }; extern Uart Serial; diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index a2892a68..98cbd07c 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -49,11 +49,7 @@ int main(void) { setup(); while (1) { loop(); - if (arduino::serialEventRun) { - arduino::serialEventRun(); - } else { - ::serialEventRun(); - } + ::serialEventRun(); } } From 4c00cf48a6d3664bd295372bf371ab44291c96e5 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 17 Apr 2025 21:03:38 +0200 Subject: [PATCH 031/366] pins_arduino.h: Update for XMC4700_Relax_Kit. Signed-off-by: zhanglinjing --- variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index 7996edca..c248be16 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -401,9 +401,7 @@ const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); * Serial 1 is on-board port */ arduino::RingBuffer rx_buffer_0; -arduino::RingBuffer tx_buffer_0; arduino::RingBuffer rx_buffer_1; -arduino::RingBuffer tx_buffer_1; XMC_UART_t XMC_UART_0 = { .channel = XMC_UART0_CH0, @@ -440,9 +438,9 @@ XMC_UART_t XMC_UART_1 = { .irq_service_request = 0}; // Debug port -Uart Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +Uart Serial(&XMC_UART_0, &rx_buffer_0); // On-board port -Uart Serial1(&XMC_UART_1, &rx_buffer_1, &tx_buffer_1); +Uart Serial1(&XMC_UART_1, &rx_buffer_1); // // Three SPI instances possible // XMC_SPI_t XMC_SPI_0 = { From 731979db3fbd912d25b31b411256ef8f8635fb48 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 5 May 2025 11:44:22 +0530 Subject: [PATCH 032/366] cores/xmc/: Add Interrupt Implementation. Signed-off-by: MDin --- cores/xmc/WInterrupts.c | 200 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 cores/xmc/WInterrupts.c diff --git a/cores/xmc/WInterrupts.c b/cores/xmc/WInterrupts.c new file mode 100644 index 00000000..e021c9b1 --- /dev/null +++ b/cores/xmc/WInterrupts.c @@ -0,0 +1,200 @@ +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "Arduino.h" +#ifdef __cplusplus +extern "C" { +#endif +//**************************************************************************** +// @Prototypes Of Local Functions +//**************************************************************************** +static voidFuncPtr interrupt_0_cb = NULL; +static voidFuncPtr interrupt_1_cb = NULL; + +//**************************************************************************** +// @Local Functions +//**************************************************************************** +#if defined(INTERRUPT_USE_ERU) +void ERU0_3_IRQHandler(void) { + if (interrupt_0_cb) { + interrupt_0_cb(); + } +} + + #if defined(XMC4200_Platform2GO) +void ERU0_0_IRQHandler(void) { + if (interrupt_1_cb) { + interrupt_1_cb(); + } +} + #else +void ERU1_0_IRQHandler(void) { + if (interrupt_1_cb) { + interrupt_1_cb(); + } +} + #endif + +#else +void CCU40_0_IRQHandler(void) { + if (interrupt_0_cb) { + interrupt_0_cb(); + } +} + +void CCU40_1_IRQHandler(void) { + if (interrupt_1_cb) { + interrupt_1_cb(); + } +} +#endif + +void attachInterrupt(pin_size_t interrupt_num, voidFuncPtr callback, PinStatus mode) { + XMC_PIN_INTERRUPT_t pin_irq = mapping_interrupt[interrupt_num]; +#if defined(INTERRUPT_USE_ERU) + XMC_ERU_ETL_EDGE_DETECTION_t event_config = 0; + + switch (mode) { + case CHANGE: + event_config = XMC_ERU_ETL_EDGE_DETECTION_BOTH; + break; + + case RISING: + event_config = XMC_ERU_ETL_EDGE_DETECTION_RISING; + break; + + case FALLING: + event_config = XMC_ERU_ETL_EDGE_DETECTION_FALLING; + break; + + default: + event_config = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_NONE; + break; + } + + XMC_ERU_Enable(pin_irq.eru); + XMC_ERU_ETL_SetInput(pin_irq.eru, pin_irq.etl, pin_irq.input_a, pin_irq.input_b); + XMC_ERU_ETL_SetEdgeDetection(pin_irq.eru, pin_irq.etl, event_config); + XMC_ERU_ETL_SetSource(pin_irq.eru, pin_irq.etl, XMC_ERU_ETL_SOURCE_B); + XMC_ERU_ETL_EnableOutputTrigger(pin_irq.eru, pin_irq.etl, pin_irq.ogu); + XMC_ERU_OGU_SetServiceRequestMode(pin_irq.eru, pin_irq.ogu, + XMC_ERU_OGU_SERVICE_REQUEST_ON_TRIGGER); + + if (pin_irq.irq_num == 0) { + NVIC_SetPriority(ERU0_3_IRQn, 3); + interrupt_0_cb = callback; + NVIC_EnableIRQ(ERU0_3_IRQn); + } else if (pin_irq.irq_num == 1) { + #if defined(XMC4200_Platform2GO) + NVIC_SetPriority(ERU0_0_IRQn, 3); + interrupt_1_cb = callback; + NVIC_EnableIRQ(ERU0_0_IRQn); + #else + NVIC_SetPriority(ERU1_0_IRQn, 3); + interrupt_1_cb = callback; + NVIC_EnableIRQ(ERU1_0_IRQn); + #endif + } +#else + XMC_CCU4_SLICE_EVENT_CONFIG_t event_config = {0}; + + switch (mode) { + case CHANGE: + event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_DUAL_EDGE; + break; + + case RISING: + event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_RISING_EDGE; + break; + + case FALLING: + event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_FALLING_EDGE; + break; + + default: + event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_NONE; + break; + } + + XMC_CCU4_Init(pin_irq.ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU4_EnableClock(pin_irq.ccu, pin_irq.slice_num); + + if (pin_irq.irq_num == 0) { + #if defined(XMC1100_Boot_Kit) || defined(XMC1400_Arduino_Kit) || defined(XMC1400_XMC2GO) + /* P1_4 external interrupt goes through USIC to CCU4 */ + XMC_USIC_CH_Enable(XMC_USIC0_CH0); + XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX5, USIC0_C0_DX5_P1_4); + XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_DX5INS); + #endif + XMC_CCU4_SLICE_EnableMultipleEvents(pin_irq.slice, XMC_CCU4_SLICE_MULTI_IRQ_ID_EVENT0); + XMC_CCU4_SLICE_SetInterruptNode(pin_irq.slice, XMC_CCU4_SLICE_IRQ_ID_EVENT0, 0); + NVIC_SetPriority(CCU40_0_IRQn, 3); + + event_config.mapped_input = pin_irq.input; + XMC_CCU4_SLICE_ConfigureEvent(pin_irq.slice, XMC_CCU4_SLICE_EVENT_0, &event_config); + + interrupt_0_cb = callback; + NVIC_EnableIRQ(CCU40_0_IRQn); + } else if (pin_irq.irq_num == 1) { + #if defined(XMC1300_Boot_Kit) + /* P0_13 external interrupt goes through USIC to CCU4 */ + XMC_USIC_CH_Enable(XMC_USIC0_CH0); + XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_P0_13); + #endif + #if defined(XMC1400_Arduino_Kit) + /* P1_1 external interrupt goes through USIC to CCU4 */ + XMC_USIC_CH_Enable(XMC_USIC0_CH1); + XMC_USIC_CH_SetInputSource(XMC_USIC0_CH1, XMC_USIC_CH_INPUT_DX2, USIC0_C1_DX2_P1_1); + #endif + XMC_CCU4_SLICE_EnableMultipleEvents(pin_irq.slice, XMC_CCU4_SLICE_MULTI_IRQ_ID_EVENT1); + XMC_CCU4_SLICE_SetInterruptNode(pin_irq.slice, XMC_CCU4_SLICE_IRQ_ID_EVENT1, 1); + NVIC_SetPriority(CCU40_1_IRQn, 3); + + event_config.mapped_input = pin_irq.input; + XMC_CCU4_SLICE_ConfigureEvent(pin_irq.slice, XMC_CCU4_SLICE_EVENT_1, &event_config); + + interrupt_1_cb = callback; + NVIC_EnableIRQ(CCU40_1_IRQn); + } +#endif +} + +void detachInterrupt(pin_size_t interrupt_num) { +#if defined(INTERRUPT_USE_ERU) + XMC_PIN_INTERRUPT_t pin_irq = mapping_interrupt[interrupt_num]; + switch (pin_irq.irq_num) { + case 0: + NVIC_DisableIRQ(ERU0_3_IRQn); + break; + + case 1: + #if defined(XMC4200_Platform2GO) + NVIC_DisableIRQ(ERU0_0_IRQn); + #else + NVIC_DisableIRQ(ERU1_0_IRQn); + #endif + break; + default: + break; + } +#else + switch (interrupt_num) { + case 0: + NVIC_DisableIRQ(CCU40_0_IRQn); + break; + + case 1: + NVIC_DisableIRQ(CCU40_1_IRQn); + break; + default: + break; + } +#endif + +} +#ifdef __cplusplus +} +#endif +//**************************************************************************** +// END OF FILE +//**************************************************************************** \ No newline at end of file From ef3666c985b2ab945074040bf8f6ec4f3888794b Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 5 May 2025 11:46:09 +0530 Subject: [PATCH 033/366] variants/: Adapt pins_arduino.h for XMC4700. Signed-off-by: MDin --- .../XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index c248be16..6d8b7e22 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -146,7 +146,7 @@ static const uint8_t SCK_SD = SDCARD_SCK_PIN; #define BUTTON1 24 #define BUTTON2 25 -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) +#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : -1)) #ifdef ARDUINO_MAIN // Mapping of digital pins and comments @@ -259,10 +259,10 @@ const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); ; -// const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { -// /* 0 */ {CCU40, CCU40_CC43, 3, 0, CCU40_IN3_P1_0}, -// /* 1 */ {CCU40, CCU40_CC42, 2, 1, CCU40_IN2_P1_1}}; -// const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERRUPT_t)); +const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { + /* 0 */ {CCU40, CCU40_CC43, 3, 0, CCU40_IN3_P1_0}, + /* 1 */ {CCU40, CCU40_CC42, 2, 1, CCU40_IN2_P1_1}}; +const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERRUPT_t)); // /* Mapping of Arduino Pins to PWM4 channels as pin and index in PWM4 channel // mapping array XMC_PWM4_t mapping_pwm4[] From ab520960f99e64d3779fad8b9a9e49abe56bb1a2 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 5 May 2025 11:48:30 +0530 Subject: [PATCH 034/366] tests/: Modify pin numbers for interrupts. Signed-off-by: MDin --- tests/test_config.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 tests/test_config.h diff --git a/tests/test_config.h b/tests/test_config.h new file mode 100644 index 00000000..3b4ffe67 --- /dev/null +++ b/tests/test_config.h @@ -0,0 +1,19 @@ +/** + * @file test_config.h + * @brief Configuration file for board-specific test pin definitions. + * + * This header file contains the definitions of the pins used for testing + * purposes on the specific board. These pins are configured as output and + * input pins for various test scenarios. + * + */ +#ifndef TEST_CONFIG_H +#define TEST_CONFIG_H + +#include + +// Test Pin Definitions +#define TEST_DIGITALIO_OUTPUT 4 // IO_4 +#define TEST_DIGITALIO_INPUT 3 // IO_3 + +#endif // TEST_CONFIG_H \ No newline at end of file From a73880542d2b2d19b63ff2dd476b9a3083ced5bf Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 5 May 2025 11:56:52 +0530 Subject: [PATCH 035/366] tests/arduino-core-tests/: Add submodule of tests. Signed-off-by: MDin --- tests/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/arduino-core-tests b/tests/arduino-core-tests index 6c109cba..9b663c5d 160000 --- a/tests/arduino-core-tests +++ b/tests/arduino-core-tests @@ -1 +1 @@ -Subproject commit 6c109cba84e1bb0a8e4f4a1b838cedd652a5c139 +Subproject commit 9b663c5d36d3988af6831f555d11eedc7c52ae87 From 811115275a3d2ee5ba518f22552f3958f1c381f9 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 6 May 2025 10:47:42 +0530 Subject: [PATCH 036/366] workflows/: Comment library examples. Signed-off-by: MDin --- .../workflows/compile-platform-examples.yml | 66 +++++++++---------- tests/arduino-core-tests | 2 +- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml index 7beb9d4a..868ce015 100644 --- a/.github/workflows/compile-platform-examples.yml +++ b/.github/workflows/compile-platform-examples.yml @@ -166,46 +166,46 @@ jobs: run: | bash tools/dev-setup.sh - - name: Compile examples - uses: arduino/compile-sketches@v1.1.1 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - fqbn: ${{ matrix.board.fqbn }} - platforms: | + #- name: Compile examples + # uses: arduino/compile-sketches@v1.1.1 + # with: + # github-token: ${{ secrets.GITHUB_TOKEN }} + # fqbn: ${{ matrix.board.fqbn }} + # platforms: | # Use Boards Manager to install the latest release of the platform to get the toolchain. - - name: Infineon:xmc - source-url: https://github.com/${{ github.repository }}/releases/latest/download/package_infineon_index.json + # - name: Infineon:xmc + # source-url: https://github.com/${{ github.repository }}/releases/latest/download/package_infineon_index.json - - source-path: ./ - name: Infineon:xmc - sketch-paths: | + # - source-path: ./ + # name: Infineon:xmc + # sketch-paths: | # Compile these sketches for all boards - - libraries/LED - - libraries/RTC/examples/SimpleRTC - - libraries/SPI - - libraries/Wire + # - libraries/LED + # - libraries/RTC/examples/SimpleRTC + #- libraries/SPI + #- libraries/Wire # Board-specific sketches - ${{ matrix.i2s-sketch-paths }} - ${{ matrix.dieTemp-sketch-paths }} - ${{ matrix.heapMem-sketch-paths }} - ${{ matrix.sleep1100-sketch-paths }} - ${{ matrix.sleep4700-sketch-paths }} - ${{ matrix.stackMem-sketch-paths }} - ${{ matrix.multiSerial-sketch-paths }} - ${{ matrix.dma-sketch-paths }} - ${{ matrix.alarmRtc-sketch-paths }} - ${{ matrix.can-sketch-paths }} - enable-deltas-report: false - sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} + # ${{ matrix.i2s-sketch-paths }} + # ${{ matrix.dieTemp-sketch-paths }} + # ${{ matrix.heapMem-sketch-paths }} + # ${{ matrix.sleep1100-sketch-paths }} + # ${{ matrix.sleep4700-sketch-paths }} + # ${{ matrix.stackMem-sketch-paths }} + # ${{ matrix.multiSerial-sketch-paths }} + # ${{ matrix.dma-sketch-paths }} + # ${{ matrix.alarmRtc-sketch-paths }} + # ${{ matrix.can-sketch-paths }} + # enable-deltas-report: false + # sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} - name: Modify the environment variable run: | BOARD_NAME=$(echo ${{ matrix.board.fqbn }} | sed 's/:/-/g') echo "BOARD_NAME=$BOARD_NAME" >> $GITHUB_ENV - - name: Save sketches report as workflow artifact - uses: actions/upload-artifact@v4 - with: - if-no-files-found: error - name: ${{ env.SKETCHES_REPORTS_PATH }}-${{ env.BOARD_NAME }} - path: ${{ env.SKETCHES_REPORTS_PATH }} + # - name: Save sketches report as workflow artifact + # uses: actions/upload-artifact@v4 + # with: + # if-no-files-found: error + # name: ${{ env.SKETCHES_REPORTS_PATH }}-${{ env.BOARD_NAME }} + # path: ${{ env.SKETCHES_REPORTS_PATH }} diff --git a/tests/arduino-core-tests b/tests/arduino-core-tests index 9b663c5d..cac7512a 160000 --- a/tests/arduino-core-tests +++ b/tests/arduino-core-tests @@ -1 +1 @@ -Subproject commit 9b663c5d36d3988af6831f555d11eedc7c52ae87 +Subproject commit cac7512a37abb7034fb197db810ea4cc7d301ea0 From e0aaca8e51d975ecfc5f7c770a516570df59bed2 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 7 May 2025 09:55:31 +0530 Subject: [PATCH 037/366] arduino-core-tests/: Update test case for interrupt. Signed-off-by: MDin --- .../workflows/compile-platform-examples.yml | 20 +++++++++---------- tests/arduino-core-tests | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml index 868ce015..12f9b9d2 100644 --- a/.github/workflows/compile-platform-examples.yml +++ b/.github/workflows/compile-platform-examples.yml @@ -125,39 +125,39 @@ jobs: - board: i2s: true i2s-sketch-paths: | - - libraries/I2S + #- libraries/I2S - board: dieTemp: true dieTemp-sketch-paths: | - - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement + #- libraries/DeviceControlXMC/examples/DieTemperatureMeasurement - board: heapMem: true heapMem-sketch-paths: | - - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement + # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement - board: sleep1100: true sleep1100-sketch-paths: | - - libraries/DeviceControlXMC/examples/SleepModeXMC1100 + # - libraries/DeviceControlXMC/examples/SleepModeXMC1100 - board: sleep4700: true sleep4700-sketch-paths: | - - libraries/DeviceControlXMC/examples/SleepModeXMC4700 + # - libraries/DeviceControlXMC/examples/SleepModeXMC4700 - board: stackMem: true stackMem-sketch-paths: | - - libraries/DeviceControlXMC/examples/StackMemoryMeasurement + # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement - board: dma: true dma-sketch-paths: | - - libraries/DMA + # - libraries/DMA - board: alarmRtc: true alarmRtc-sketch-paths: | - - libraries/RTC/examples/AlarmRTC + # - libraries/RTC/examples/AlarmRTC - board: can: true can-sketch-paths: | - - libraries/CAN/examples + # - libraries/CAN/examples steps: - name: Checkout repository uses: actions/checkout@v4 @@ -196,7 +196,7 @@ jobs: # ${{ matrix.alarmRtc-sketch-paths }} # ${{ matrix.can-sketch-paths }} # enable-deltas-report: false - # sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} + # sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} - name: Modify the environment variable run: | diff --git a/tests/arduino-core-tests b/tests/arduino-core-tests index cac7512a..8e456cdb 160000 --- a/tests/arduino-core-tests +++ b/tests/arduino-core-tests @@ -1 +1 @@ -Subproject commit cac7512a37abb7034fb197db810ea4cc7d301ea0 +Subproject commit 8e456cdbcfcda09674f6bda35f556e4a76a96d23 From 07c949e0612d80f3c08049f62abf00d1402beabb Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 6 May 2025 10:47:42 +0530 Subject: [PATCH 038/366] compile-platform-examples: Comment library examples. Signed-off-by: MDin --- .../workflows/compile-platform-examples.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml index 12f9b9d2..5a9bdf71 100644 --- a/.github/workflows/compile-platform-examples.yml +++ b/.github/workflows/compile-platform-examples.yml @@ -125,39 +125,39 @@ jobs: - board: i2s: true i2s-sketch-paths: | - #- libraries/I2S + - libraries/I2S - board: dieTemp: true dieTemp-sketch-paths: | - #- libraries/DeviceControlXMC/examples/DieTemperatureMeasurement + - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement - board: heapMem: true heapMem-sketch-paths: | - # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement + - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement - board: sleep1100: true sleep1100-sketch-paths: | - # - libraries/DeviceControlXMC/examples/SleepModeXMC1100 + - libraries/DeviceControlXMC/examples/SleepModeXMC1100 - board: sleep4700: true sleep4700-sketch-paths: | - # - libraries/DeviceControlXMC/examples/SleepModeXMC4700 + - libraries/DeviceControlXMC/examples/SleepModeXMC4700 - board: stackMem: true stackMem-sketch-paths: | - # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement + - libraries/DeviceControlXMC/examples/StackMemoryMeasurement - board: dma: true dma-sketch-paths: | - # - libraries/DMA + - libraries/DMA - board: alarmRtc: true alarmRtc-sketch-paths: | - # - libraries/RTC/examples/AlarmRTC + - libraries/RTC/examples/AlarmRTC - board: can: true can-sketch-paths: | - # - libraries/CAN/examples + - libraries/CAN/examples steps: - name: Checkout repository uses: actions/checkout@v4 From 14dd5f2deddc19990b87151dbb516cfef86ae23a Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 7 May 2025 13:51:51 +0530 Subject: [PATCH 039/366] arduino-core-tests: Add submodules. Signed-off-by: MDin --- tests/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/arduino-core-tests b/tests/arduino-core-tests index 8e456cdb..cf781104 160000 --- a/tests/arduino-core-tests +++ b/tests/arduino-core-tests @@ -1 +1 @@ -Subproject commit 8e456cdbcfcda09674f6bda35f556e4a76a96d23 +Subproject commit cf78110475f4fb10c03c7bf2a65be10a91476a1b From 3c88827bfdd66712c8c7417b7b7b12d49767808c Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 7 May 2025 14:25:54 +0530 Subject: [PATCH 040/366] .github/workflows: Comment library examples. Signed-off-by: MDin --- .github/workflows/compile-platform-examples.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml index 5a9bdf71..6ac49e4e 100644 --- a/.github/workflows/compile-platform-examples.yml +++ b/.github/workflows/compile-platform-examples.yml @@ -184,6 +184,12 @@ jobs: # - libraries/RTC/examples/SimpleRTC #- libraries/SPI #- libraries/Wire + # - libraries/LED + # - libraries/RTC/examples/SimpleRTC + #- libraries/LED + #- libraries/RTC/examples/SimpleRTC + #- libraries/SPI + #- libraries/Wire # Board-specific sketches # ${{ matrix.i2s-sketch-paths }} # ${{ matrix.dieTemp-sketch-paths }} From 531a096e2a6571702abdf911aa334c9c1721fca8 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 7 May 2025 09:55:31 +0530 Subject: [PATCH 041/366] arduino-core-tests/: Update test case for interrupt. Signed-off-by: MDin --- .../workflows/compile-platform-examples.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml index 6ac49e4e..7834b667 100644 --- a/.github/workflows/compile-platform-examples.yml +++ b/.github/workflows/compile-platform-examples.yml @@ -125,39 +125,39 @@ jobs: - board: i2s: true i2s-sketch-paths: | - - libraries/I2S + #- libraries/I2S - board: dieTemp: true dieTemp-sketch-paths: | - - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement + #- libraries/DeviceControlXMC/examples/DieTemperatureMeasurement - board: heapMem: true heapMem-sketch-paths: | - - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement + # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement - board: sleep1100: true sleep1100-sketch-paths: | - - libraries/DeviceControlXMC/examples/SleepModeXMC1100 + # - libraries/DeviceControlXMC/examples/SleepModeXMC1100 - board: sleep4700: true sleep4700-sketch-paths: | - - libraries/DeviceControlXMC/examples/SleepModeXMC4700 + # - libraries/DeviceControlXMC/examples/SleepModeXMC4700 - board: stackMem: true stackMem-sketch-paths: | - - libraries/DeviceControlXMC/examples/StackMemoryMeasurement + # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement - board: dma: true dma-sketch-paths: | - - libraries/DMA + # - libraries/DMA - board: alarmRtc: true alarmRtc-sketch-paths: | - - libraries/RTC/examples/AlarmRTC + # - libraries/RTC/examples/AlarmRTC - board: can: true can-sketch-paths: | - - libraries/CAN/examples + # - libraries/CAN/examples steps: - name: Checkout repository uses: actions/checkout@v4 From 60e8c06aff5c25401e7b1d028a2547dac7ada1a5 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 6 May 2025 10:47:42 +0530 Subject: [PATCH 042/366] compile-platform-examples: Comment library examples. Signed-off-by: MDin --- .github/workflows/compile-platform-examples.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml index 7834b667..89776567 100644 --- a/.github/workflows/compile-platform-examples.yml +++ b/.github/workflows/compile-platform-examples.yml @@ -182,6 +182,8 @@ jobs: # Compile these sketches for all boards # - libraries/LED # - libraries/RTC/examples/SimpleRTC + #- libraries/LED + #- libraries/RTC/examples/SimpleRTC #- libraries/SPI #- libraries/Wire # - libraries/LED From 5a8b726aad92cbdab9644fde4b724476e97e9691 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 9 May 2025 16:08:36 +0530 Subject: [PATCH 043/366] cores/xmc/: Removed uart files. Signed-off-by: MDin --- cores/xmc/Uart.cpp | 156 --------------------------------------------- cores/xmc/Uart.h | 133 -------------------------------------- 2 files changed, 289 deletions(-) delete mode 100644 cores/xmc/Uart.cpp delete mode 100644 cores/xmc/Uart.h diff --git a/cores/xmc/Uart.cpp b/cores/xmc/Uart.cpp deleted file mode 100644 index f9e9f716..00000000 --- a/cores/xmc/Uart.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Uart.h" -#include "Arduino.h" - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -// Constructors //////////////////////////////////////////////////////////////// - -Uart::Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer) { - _XMC_UART_config = xmc_uart_config; - _rx_buffer = rx_buffer; -} - -// Public Methods ////////////////////////////////////////////////////////////// - -void Uart::begin(unsigned long baud) { begin(baud, SERIAL_8N1); } - -void Uart::begin(unsigned long baud, unsigned short config) { - begin(baud, static_cast(config)); -} - -void Uart::begin(unsigned long baud, XMC_UART_MODE_t config) { - XMC_UART_CH_CONFIG_t uart_ch_config; - uart_ch_config.oversampling = 0; // Must be 0 or valid oversample for baud rate calculations - uart_ch_config.baudrate = baud; - uart_ch_config.data_bits = (uint8_t)(config & 0x00fU); - uart_ch_config.frame_length = uart_ch_config.data_bits; // Set same as data bits length - uart_ch_config.parity_mode = (XMC_USIC_CH_PARITY_MODE_t)(config & ~0xffU); - uart_ch_config.stop_bits = (uint8_t)((config & 0x0f0U) >> 4); - - XMC_UART_CH_Init(_XMC_UART_config->channel, &uart_ch_config); - - // dx0 is UART RX: source must be set - XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX0, - _XMC_UART_config->input_source_dx0); - - // Additional input multiplexing - // Check if dx1 is used - if (_XMC_UART_config->input_source_dx1 != XMC_INPUT_INVALID) - XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX1, - _XMC_UART_config->input_source_dx1); - - // Check if dx2 is used - if (_XMC_UART_config->input_source_dx2 != XMC_INPUT_INVALID) - XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX2, - _XMC_UART_config->input_source_dx2); - - // Check if dx3 is used - if (_XMC_UART_config->input_source_dx3 != XMC_INPUT_INVALID) - XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX3, - _XMC_UART_config->input_source_dx3); - - XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_ALTERNATIVE_RECEIVE | - XMC_UART_CH_EVENT_STANDARD_RECEIVE); - XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, - _XMC_UART_config->irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE, - _XMC_UART_config->irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_TRANSMIT_BUFFER, - _XMC_UART_config->irq_service_request); - NVIC_SetPriority(_XMC_UART_config->irq_num, 3); - NVIC_EnableIRQ(_XMC_UART_config->irq_num); - - XMC_UART_CH_Start(_XMC_UART_config->channel); - - // TX pin setup put here to avoid startup corrupted characters being first sent - XMC_GPIO_Init(_XMC_UART_config->tx.port, _XMC_UART_config->tx.pin, - &(_XMC_UART_config->tx_config)); - - XMC_GPIO_Init(_XMC_UART_config->rx.port, _XMC_UART_config->rx.pin, - &(_XMC_UART_config->rx_config)); -} - -void Uart::end(void) { - // Wait for any outstanding data to be sent - flush(); - // Disable UART interrupt in NVIC - NVIC_DisableIRQ(_XMC_UART_config->irq_num); - // Clear any received data after stopping interrupts - _rx_buffer->clear(); -} - -void Uart::setInterruptPriority(uint32_t priority) { - NVIC_SetPriority(_XMC_UART_config->irq_num, priority & 0x03); -} - -uint32_t Uart::getInterruptPriority() { return NVIC_GetPriority(_XMC_UART_config->irq_num); } - -int Uart::available(void) { return _rx_buffer->available(); } - -int Uart::availableForWrite(void) { - return 1; -} // TODO: there are no tx buffer so we awaly have 1 byte available - -int Uart::peek(void) { return _rx_buffer->peek(); } - -int Uart::read(void) { return _rx_buffer->read_char(); } - -void Uart::flush(void) { - while (XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) { - }; -} - -size_t Uart::write(const uint8_t uc_data) { - // For sending, write immediately - // This API already have a check for available buffer - XMC_UART_CH_Transmit(_XMC_UART_config->channel, uc_data); - return 1; -} - -void Uart::IrqHandler(void) { - // Receive data Interrupt handler - uint32_t status = XMC_UART_CH_GetStatusFlag(_XMC_UART_config->channel); - - // Did we receive data? - if ((status & (XMC_UART_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION | - XMC_UART_CH_STATUS_FLAG_RECEIVE_INDICATION)) != 0U) { - XMC_UART_CH_ClearStatusFlag(_XMC_UART_config->channel, - (XMC_UART_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION | - XMC_UART_CH_STATUS_FLAG_RECEIVE_INDICATION)); - - while (_XMC_UART_config->channel->RBUFSR & - (USIC_CH_RBUFSR_RDV0_Msk | USIC_CH_RBUFSR_RDV1_Msk)) - _rx_buffer->store_char(XMC_UART_CH_GetReceivedData(_XMC_UART_config->channel)); - } -} - -//**************************************************************************** -// END OF FILE -//**************************************************************************** \ No newline at end of file diff --git a/cores/xmc/Uart.h b/cores/xmc/Uart.h deleted file mode 100644 index a7d26524..00000000 --- a/cores/xmc/Uart.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - Copyright (c) 2011 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#pragma once - -//**************************************************************************** -// @External Prototypes -//**************************************************************************** - -#include "Arduino.h" -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "api/HardwareSerial.h" -#include "api/RingBuffer.h" - -//**************************************************************************** -// @Typedefs -//**************************************************************************** -// Define config for Serial.begin(baud, config); -#undef SERIAL_5N1 -#undef SERIAL_6N1 -#undef SERIAL_7N1 -#undef SERIAL_8N1 -#undef SERIAL_5N2 -#undef SERIAL_6N2 -#undef SERIAL_7N2 -#undef SERIAL_8N2 -#undef SERIAL_5E1 -#undef SERIAL_6E1 -#undef SERIAL_7E1 -#undef SERIAL_8E1 -#undef SERIAL_5E2 -#undef SERIAL_6E2 -#undef SERIAL_7E2 -#undef SERIAL_8E2 -#undef SERIAL_5O1 -#undef SERIAL_6O1 -#undef SERIAL_7O1 -#undef SERIAL_8O1 -#undef SERIAL_5O2 -#undef SERIAL_6O2 -#undef SERIAL_7O2 -#undef SERIAL_8O2 - -typedef enum XMC_UART_MODE { - SERIAL_5N1 = 0x15 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_6N1 = 0x16 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_7N1 = 0x17 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_8N1 = 0x18 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_5N2 = 0x25 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_6N2 = 0x26 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_7N2 = 0x27 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_8N2 = 0x28 | XMC_USIC_CH_PARITY_MODE_NONE, - SERIAL_5E1 = 0x15 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_6E1 = 0x16 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_7E1 = 0x17 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_8E1 = 0x18 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_5E2 = 0x25 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_6E2 = 0x26 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_7E2 = 0x27 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_8E2 = 0x28 | XMC_USIC_CH_PARITY_MODE_EVEN, - SERIAL_5O1 = 0x15 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_6O1 = 0x16 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_7O1 = 0x17 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_8O1 = 0x18 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_5O2 = 0x25 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_6O2 = 0x26 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_7O2 = 0x27 | XMC_USIC_CH_PARITY_MODE_ODD, - SERIAL_8O2 = 0x28 | XMC_USIC_CH_PARITY_MODE_ODD -} XMC_UART_MODE_t; - -//**************************************************************************** -// @Class Definitionsw -//**************************************************************************** -class Uart : public HardwareSerial { -public: - XMC_UART_t *_XMC_UART_config; - Uart(XMC_UART_t *xmc_uart_config, RingBuffer *rx_buffer); - - void begin(unsigned long); - void begin(unsigned long baudrate, uint16_t config) override; - void begin(unsigned long, XMC_UART_MODE_t config); - void end(); - int available(void); - int availableForWrite(void); - int peek(void); - int read(void); - void flush(void); - - // virtual size_t readBytes(char *buffer, size_t length) ; // read chars from stream into buffer - // virtual size_t readBytes(uint8_t *buffer, size_t length) ; - - size_t write(const uint8_t); - - // virtual size_t write(const uint8_t *buffer, size_t size) ; - inline size_t write(unsigned long n) { return write((uint8_t)n); } - - inline size_t write(long n) { return write((uint8_t)n); } - - inline size_t write(unsigned int n) { return write((uint8_t)n); } - - inline size_t write(int n) { return write((uint8_t)n); } - - using Print::write; // pull in write(str) and write(buf, size) from Print - - operator bool() { return true; } - - void setInterruptPriority(uint32_t priority); - uint32_t getInterruptPriority(); - - void IrqHandler(void); - -private: - RingBuffer *_rx_buffer; -}; - -extern Uart Serial; -extern Uart Serial1; From 5201f98b2c74c65d7f5ae1b5502054f9180713a3 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 12 May 2025 10:18:22 +0530 Subject: [PATCH 044/366] cores/xmc/: Comment serial functions. Signed-off-by: MDin --- cores/xmc/Arduino.h | 6 +++--- cores/xmc/main.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index f2ecc3f6..5954813a 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -341,9 +341,9 @@ extern void loop(void); #ifdef __cplusplus } // extern "C" - // #include "Tone.h" - // #include "WMath.h" - #include "Uart.h" + // #include "Tone.h" + // #include "WMath.h" + // #include "Uart.h" #endif // __cplusplus // #include "Print.h" diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index 98cbd07c..b1a61812 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -49,7 +49,7 @@ int main(void) { setup(); while (1) { loop(); - ::serialEventRun(); + //::serialEventRun(); } } From cd65999bc9fd653119f8626eb5d5fe18cfa14d66 Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Mon, 12 May 2025 15:45:58 +0200 Subject: [PATCH 045/366] .github/workflows/compile-platform-examples.yml: Removed as not needed. Signed-off-by: jaenrig-ifx --- .../workflows/compile-platform-examples.yml | 219 ------------------ 1 file changed, 219 deletions(-) delete mode 100644 .github/workflows/compile-platform-examples.yml diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml deleted file mode 100644 index 89776567..00000000 --- a/.github/workflows/compile-platform-examples.yml +++ /dev/null @@ -1,219 +0,0 @@ - -name: Compile Examples - -# See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows -on: - push: - paths: - - ".github/workflows/compile-platform-examples.ya?ml" - - "cores/**" - - "libraries/**" - - "variants/**" - - "boards.txt" - - "platform.txt" - pull_request: - paths: - - ".github/workflows/compile-platform-examples.ya?ml" - - "cores/**" - - "libraries/**" - - "variants/**" - - "boards.txt" - - "platform.txt" - workflow_dispatch: - repository_dispatch: - -jobs: - build: - name: ${{ matrix.board.fqbn }} - runs-on: ubuntu-latest - - env: - SKETCHES_REPORTS_PATH: sketches-reports - - strategy: - fail-fast: false - - matrix: - board: - - fqbn: Infineon:xmc:XMC1100_Boot_Kit - i2s: true - dieTemp: true - heapMem: true - sleep1100: true - sleep4700 : false - stackMem: true - dma: false - alarmRtc: false - can: false - - fqbn: Infineon:xmc:XMC1100_XMC2GO - i2s: true - dieTemp: true - heapMem: true - sleep1100: true - sleep4700 : false - stackMem: true - dma: false - alarmRtc: false - can: false - - fqbn: Infineon:xmc:XMC1300_Boot_Kit - i2s: false - dieTemp: true - heapMem: true - sleep1100: true - sleep4700 : false - stackMem: true - multiSerial: false - dma: false - alarmRtc: false - can: false - - fqbn: Infineon:xmc:XMC4200_Platform2GO - i2s: false - dieTemp: false - heapMem: false - sleep1100: false - sleep4700 : false - stackMem: true - multiSerial: false - dma: false - alarmRtc: true - can: true - - fqbn: Infineon:xmc:XMC4400_Platform2GO - i2s: false - dieTemp: false - heapMem: false - sleep1100: false - sleep4700 : false - stackMem: true - dma: false - alarmRtc: false - can: true - - fqbn: Infineon:xmc:XMC4700_Relax_Kit - i2s: true - dieTemp: true - heapMem: true - sleep1100: false - sleep4700 : true - stackMem: true - multiSerial: true - dma: true - alarmRtc: true - can: true - - fqbn: Infineon:xmc:XMC1400_XMC2GO - i2s: true - dieTemp: true - heapMem: true - sleep1100: true - sleep4700 : false - stackMem: false - dma: false - alarmRtc: false - can: true - - fqbn: Infineon:xmc:XMC1400_Arduino_Kit - i2s: false - dieTemp: true - heapMem: true - sleep1100: true - sleep4700 : false - stackMem: false - multiSerial: false - dma: false - alarmRtc: false - can: false - - # Make board type-specific customizations to the matrix jobs - include: - - board: - i2s: true - i2s-sketch-paths: | - #- libraries/I2S - - board: - dieTemp: true - dieTemp-sketch-paths: | - #- libraries/DeviceControlXMC/examples/DieTemperatureMeasurement - - board: - heapMem: true - heapMem-sketch-paths: | - # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement - - board: - sleep1100: true - sleep1100-sketch-paths: | - # - libraries/DeviceControlXMC/examples/SleepModeXMC1100 - - board: - sleep4700: true - sleep4700-sketch-paths: | - # - libraries/DeviceControlXMC/examples/SleepModeXMC4700 - - board: - stackMem: true - stackMem-sketch-paths: | - # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement - - board: - dma: true - dma-sketch-paths: | - # - libraries/DMA - - board: - alarmRtc: true - alarmRtc-sketch-paths: | - # - libraries/RTC/examples/AlarmRTC - - board: - can: true - can-sketch-paths: | - # - libraries/CAN/examples - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set Environment - run: | - bash tools/dev-setup.sh - - #- name: Compile examples - # uses: arduino/compile-sketches@v1.1.1 - # with: - # github-token: ${{ secrets.GITHUB_TOKEN }} - # fqbn: ${{ matrix.board.fqbn }} - # platforms: | - # Use Boards Manager to install the latest release of the platform to get the toolchain. - # - name: Infineon:xmc - # source-url: https://github.com/${{ github.repository }}/releases/latest/download/package_infineon_index.json - - # - source-path: ./ - # name: Infineon:xmc - # sketch-paths: | - # Compile these sketches for all boards - # - libraries/LED - # - libraries/RTC/examples/SimpleRTC - #- libraries/LED - #- libraries/RTC/examples/SimpleRTC - #- libraries/SPI - #- libraries/Wire - # - libraries/LED - # - libraries/RTC/examples/SimpleRTC - #- libraries/LED - #- libraries/RTC/examples/SimpleRTC - #- libraries/SPI - #- libraries/Wire - # Board-specific sketches - # ${{ matrix.i2s-sketch-paths }} - # ${{ matrix.dieTemp-sketch-paths }} - # ${{ matrix.heapMem-sketch-paths }} - # ${{ matrix.sleep1100-sketch-paths }} - # ${{ matrix.sleep4700-sketch-paths }} - # ${{ matrix.stackMem-sketch-paths }} - # ${{ matrix.multiSerial-sketch-paths }} - # ${{ matrix.dma-sketch-paths }} - # ${{ matrix.alarmRtc-sketch-paths }} - # ${{ matrix.can-sketch-paths }} - # enable-deltas-report: false - # sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} - - - name: Modify the environment variable - run: | - BOARD_NAME=$(echo ${{ matrix.board.fqbn }} | sed 's/:/-/g') - echo "BOARD_NAME=$BOARD_NAME" >> $GITHUB_ENV - - # - name: Save sketches report as workflow artifact - # uses: actions/upload-artifact@v4 - # with: - # if-no-files-found: error - # name: ${{ env.SKETCHES_REPORTS_PATH }}-${{ env.BOARD_NAME }} - # path: ${{ env.SKETCHES_REPORTS_PATH }} From f2281bed781ed9589bcd682179bfcf5b8d02ffd6 Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Mon, 12 May 2025 15:52:30 +0200 Subject: [PATCH 046/366] ci-matrix-config.yml: Added ci matrix yml file. Signed-off-by: jaenrig-ifx --- ci-matrix-config.yml | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 ci-matrix-config.yml diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml new file mode 100644 index 00000000..cb1b9aa2 --- /dev/null +++ b/ci-matrix-config.yml @@ -0,0 +1,59 @@ +sketch: + - libraries/LED + - libraries/RTC/examples/SimpleRTC + - libraries/SPI + - libraries/Wire + - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino + - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino + - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino + +include: + - fqbn: Infineon:xmc:XMC1100_Boot_Kit + sketch: + - libraries/I2S + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - fqbn: Infineon:xmc:XMC1100_XMC2GO + sketch: + - libraries/I2S + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - fqbn: Infineon:xmc:XMC1300_Boot_Kit + sketch: + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - fqbn: Infineon:xmc:XMC1400_XMC2GO + sketch: + - libraries/I2S + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - libraries/CAN + - fqbn: Infineon:xmc:XMC1400_Arduino_Kit + sketch: + - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino + - fqbn: Infineon:xmc:XMC4200_Platform2GO + sketch: + - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino + - libraries/CAN + - fqbn: Infineon:xmc:XMC4400_Platform2GO + sketch: + - libraries/CAN + - fqbn: Infineon:xmc:XMC4700_Relax_Kit + sketch: + - libraries/I2S + - libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino + - libraries/DMA + - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino + - libraries/CAN + +exclude: + - fqbn: Infineon:xmc:XMC1400_XMC2GO + sketch: + - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino + - fqbn: Infineon:xmc:XMC1400_Arduino_Kit + sketch: + - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino + - fqbn: Infineon:xmc:XMC4200_Platform2GO + sketch: + - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino + - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino + - fqbn: Infineon:xmc:XMC4400_Platform2GO + sketch: + - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino + - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino From 0857abf035f270f8cc8d32eb7116463a0b8c61cf Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Mon, 12 May 2025 15:53:00 +0200 Subject: [PATCH 047/366] .github/workflows/compile-examples.yml: Added reusable wflow. Signed-off-by: jaenrig-ifx --- .github/workflows/compile-examples.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/workflows/compile-examples.yml diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml new file mode 100644 index 00000000..920dd429 --- /dev/null +++ b/.github/workflows/compile-examples.yml @@ -0,0 +1,12 @@ +name: Compile examples + +on: + push: + +jobs: + compile-examples: + uses: Infineon/arduino-devops/.github/workflows/compile-examples.yml@latest + with: + core-setup-script: bash ./tools/dev-setup.sh + ci-setup-script: git submodule update --init extras/arduino-examples + secrets: inherit \ No newline at end of file From bf84b619b78b856f83d2ab675107d3a6f1bf6a29 Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Mon, 12 May 2025 16:02:42 +0200 Subject: [PATCH 048/366] .gitmodules: Added arduino-examples as submodule. Signed-off-by: jaenrig-ifx --- .gitmodules | 3 +++ extras/arduino-examples | 1 + 2 files changed, 4 insertions(+) create mode 160000 extras/arduino-examples diff --git a/.gitmodules b/.gitmodules index 4392e751..e47e2d81 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "cores/arduino-core-api"] path = extras/arduino-core-api url = https://github.com/arduino/ArduinoCore-API.git +[submodule "extras/arduino-examples"] + path = extras/arduino-examples + url = https://github.com/arduino/arduino-examples.git diff --git a/extras/arduino-examples b/extras/arduino-examples new file mode 160000 index 00000000..4901be04 --- /dev/null +++ b/extras/arduino-examples @@ -0,0 +1 @@ +Subproject commit 4901be04d38d690efefedbed271d2eb534512436 From 2681626575b4cae3c396593c5533951ce02a6c3d Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Mon, 12 May 2025 16:03:17 +0200 Subject: [PATCH 049/366] ci-matrix-config.yml: Disabled legacy matrix. Start with BareMinimum. Signed-off-by: jaenrig-ifx --- ci-matrix-config.yml | 122 +++++++++++++++++++++++-------------------- 1 file changed, 66 insertions(+), 56 deletions(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index cb1b9aa2..93966e8c 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -1,59 +1,69 @@ +# This is the matrix copied from 3.x +# Each components needs to be gradually enabled as +# the core and libraries support them + sketch: - - libraries/LED - - libraries/RTC/examples/SimpleRTC - - libraries/SPI - - libraries/Wire - - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino - - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino - - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino + - extras/arduino-examples/examples/01.Basics/BareMinimum/BareMinimum.ino + +fqbn: + - Infineon:xmc:XMC4700_Relax_Kit + +# sketch: +# - libraries/LED +# - libraries/RTC/examples/SimpleRTC +# - libraries/SPI +# - libraries/Wire +# - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino +# - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino +# - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino -include: - - fqbn: Infineon:xmc:XMC1100_Boot_Kit - sketch: - - libraries/I2S - - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino - - fqbn: Infineon:xmc:XMC1100_XMC2GO - sketch: - - libraries/I2S - - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino - - fqbn: Infineon:xmc:XMC1300_Boot_Kit - sketch: - - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino - - fqbn: Infineon:xmc:XMC1400_XMC2GO - sketch: - - libraries/I2S - - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino - - libraries/CAN - - fqbn: Infineon:xmc:XMC1400_Arduino_Kit - sketch: - - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino - - fqbn: Infineon:xmc:XMC4200_Platform2GO - sketch: - - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino - - libraries/CAN - - fqbn: Infineon:xmc:XMC4400_Platform2GO - sketch: - - libraries/CAN - - fqbn: Infineon:xmc:XMC4700_Relax_Kit - sketch: - - libraries/I2S - - libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino - - libraries/DMA - - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino - - libraries/CAN +# include: +# - fqbn: Infineon:xmc:XMC1100_Boot_Kit +# sketch: +# - libraries/I2S +# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino +# - fqbn: Infineon:xmc:XMC1100_XMC2GO +# sketch: +# - libraries/I2S +# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino +# - fqbn: Infineon:xmc:XMC1300_Boot_Kit +# sketch: +# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino +# - fqbn: Infineon:xmc:XMC1400_XMC2GO +# sketch: +# - libraries/I2S +# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino +# - libraries/CAN +# - fqbn: Infineon:xmc:XMC1400_Arduino_Kit +# sketch: +# - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino +# - fqbn: Infineon:xmc:XMC4200_Platform2GO +# sketch: +# - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino +# - libraries/CAN +# - fqbn: Infineon:xmc:XMC4400_Platform2GO +# sketch: +# - libraries/CAN +# - fqbn: Infineon:xmc:XMC4700_Relax_Kit +# sketch: +# - libraries/I2S +# - libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino +# - libraries/DMA +# - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino +# - libraries/CAN -exclude: - - fqbn: Infineon:xmc:XMC1400_XMC2GO - sketch: - - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino - - fqbn: Infineon:xmc:XMC1400_Arduino_Kit - sketch: - - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino - - fqbn: Infineon:xmc:XMC4200_Platform2GO - sketch: - - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino - - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino - - fqbn: Infineon:xmc:XMC4400_Platform2GO - sketch: - - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino - - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino +# exclude: +# - fqbn: Infineon:xmc:XMC1400_XMC2GO +# sketch: +# - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino +# - fqbn: Infineon:xmc:XMC1400_Arduino_Kit +# sketch: +# - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino +# - fqbn: Infineon:xmc:XMC4200_Platform2GO +# sketch: +# - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino +# - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino +# - fqbn: Infineon:xmc:XMC4400_Platform2GO +# sketch: +# - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino +# - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino From 35d6aa312709e6101559d56ecd134317fb626a75 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 20 May 2025 14:03:41 +0530 Subject: [PATCH 050/366] cores/xmc: Uart review comments work. Signed-off-by: MDin --- cores/xmc/Uart.cpp | 130 +++++++++++++++++++++++++++++++++++++++++++++ cores/xmc/Uart.h | 100 ++++++++++++++++++++++++++++++++++ 2 files changed, 230 insertions(+) create mode 100644 cores/xmc/Uart.cpp create mode 100644 cores/xmc/Uart.h diff --git a/cores/xmc/Uart.cpp b/cores/xmc/Uart.cpp new file mode 100644 index 00000000..6c6109c1 --- /dev/null +++ b/cores/xmc/Uart.cpp @@ -0,0 +1,130 @@ + +#include "Uart.h" +#include "Arduino.h" + +// Constructors //////////////////////////////////////////////////////////////// + +Uart::Uart(XMC_UART_t *xmc_uart_config){ + _XMC_UART_config = xmc_uart_config; +} +// Public Methods ////////////////////////////////////////////////////////////// + +void Uart::begin(unsigned long baud) { begin(baud, SERIAL_8N1); } + +void Uart::begin(unsigned long baud, unsigned short config) { + begin(baud, static_cast(config)); +} + +void Uart::begin(unsigned long baud, XMC_UART_MODE_t config) { + XMC_UART_CH_CONFIG_t uart_ch_config; + uart_ch_config.oversampling = 0; // Must be 0 or valid oversample for baud rate calculations + uart_ch_config.baudrate = baud; + uart_ch_config.data_bits = (uint8_t)(config & 0x00fU); + uart_ch_config.frame_length = uart_ch_config.data_bits; // Set same as data bits length + uart_ch_config.parity_mode = (XMC_USIC_CH_PARITY_MODE_t)(config & ~0xffU); + uart_ch_config.stop_bits = (uint8_t)((config & 0x0f0U) >> 4); + + XMC_UART_CH_Init(_XMC_UART_config->channel, &uart_ch_config); + + // dx0 is UART RX: source must be set + XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX0, + _XMC_UART_config->input_source_dx0); + + // Additional input multiplexing + // Check if dx1 is used + if (_XMC_UART_config->input_source_dx1 != XMC_INPUT_INVALID) + XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX1, + _XMC_UART_config->input_source_dx1); + + // Check if dx2 is used + if (_XMC_UART_config->input_source_dx2 != XMC_INPUT_INVALID) + XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX2, + _XMC_UART_config->input_source_dx2); + + // Check if dx3 is used + if (_XMC_UART_config->input_source_dx3 != XMC_INPUT_INVALID) + XMC_USIC_CH_SetInputSource(_XMC_UART_config->channel, XMC_USIC_CH_INPUT_DX3, + _XMC_UART_config->input_source_dx3); + + XMC_UART_CH_EnableEvent(_XMC_UART_config->channel, XMC_UART_CH_EVENT_ALTERNATIVE_RECEIVE | + XMC_UART_CH_EVENT_STANDARD_RECEIVE); + XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, + _XMC_UART_config->irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE, + _XMC_UART_config->irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(_XMC_UART_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_TRANSMIT_BUFFER, + _XMC_UART_config->irq_service_request); + NVIC_SetPriority(_XMC_UART_config->irq_num, 3); + NVIC_EnableIRQ(_XMC_UART_config->irq_num); + + XMC_UART_CH_Start(_XMC_UART_config->channel); + + // TX pin setup put here to avoid startup corrupted characters being first sent + XMC_GPIO_Init(_XMC_UART_config->tx.port, _XMC_UART_config->tx.pin, + &(_XMC_UART_config->tx_config)); + + XMC_GPIO_Init(_XMC_UART_config->rx.port, _XMC_UART_config->rx.pin, + &(_XMC_UART_config->rx_config)); +} + +void Uart::end(void) { + // Wait for any outstanding data to be sent + flush(); + // Disable UART interrupt in NVIC + NVIC_DisableIRQ(_XMC_UART_config->irq_num); + // Clear any received data after stopping interrupts + _rx_buffer.clear(); +} + +void Uart::setInterruptPriority(uint32_t priority) { + NVIC_SetPriority(_XMC_UART_config->irq_num, priority & 0x03); +} + +uint32_t Uart::getInterruptPriority() { return NVIC_GetPriority(_XMC_UART_config->irq_num); } + +int Uart::available(void) { return _rx_buffer.available(); } + +int Uart::availableForWrite(void) { + return 1; +} // TODO: there are no tx buffer so we awaly have 1 byte available + +int Uart::peek(void) { return _rx_buffer.peek(); } + +int Uart::read(void) { return _rx_buffer.read_char(); } + +void Uart::flush(void) { + while (XMC_USIC_CH_GetTransmitBufferStatus(_XMC_UART_config->channel) == + XMC_USIC_CH_TBUF_STATUS_BUSY) { + }; +} + +size_t Uart::write(const uint8_t uc_data) { + // For sending, write immediately + // This API already have a check for available buffer + XMC_UART_CH_Transmit(_XMC_UART_config->channel, uc_data); + return 1; +} + +void Uart::IrqHandler(void) { + // Receive data Interrupt handler + uint32_t status = XMC_UART_CH_GetStatusFlag(_XMC_UART_config->channel); + + // Did we receive data? + if ((status & (XMC_UART_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION | + XMC_UART_CH_STATUS_FLAG_RECEIVE_INDICATION)) != 0U) { + XMC_UART_CH_ClearStatusFlag(_XMC_UART_config->channel, + (XMC_UART_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION | + XMC_UART_CH_STATUS_FLAG_RECEIVE_INDICATION)); + + while (_XMC_UART_config->channel->RBUFSR & + (USIC_CH_RBUFSR_RDV0_Msk | USIC_CH_RBUFSR_RDV1_Msk)) + _rx_buffer.store_char(XMC_UART_CH_GetReceivedData(_XMC_UART_config->channel)); + } +} + +//**************************************************************************** +// END OF FILE +//**************************************************************************** \ No newline at end of file diff --git a/cores/xmc/Uart.h b/cores/xmc/Uart.h new file mode 100644 index 00000000..aacc5095 --- /dev/null +++ b/cores/xmc/Uart.h @@ -0,0 +1,100 @@ +#pragma once +//**************************************************************************** +// @External Prototypes +//**************************************************************************** + +#include "Arduino.h" +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "api/HardwareSerial.h" +#include "api/RingBuffer.h" + +//**************************************************************************** +// @Typedefs +//**************************************************************************** +// Define config for Serial.begin(baud, config); +#undef SERIAL_5N1 +#undef SERIAL_6N1 +#undef SERIAL_7N1 +#undef SERIAL_8N1 +#undef SERIAL_5N2 +#undef SERIAL_6N2 +#undef SERIAL_7N2 +#undef SERIAL_8N2 +#undef SERIAL_5E1 +#undef SERIAL_6E1 +#undef SERIAL_7E1 +#undef SERIAL_8E1 +#undef SERIAL_5E2 +#undef SERIAL_6E2 +#undef SERIAL_7E2 +#undef SERIAL_8E2 +#undef SERIAL_5O1 +#undef SERIAL_6O1 +#undef SERIAL_7O1 +#undef SERIAL_8O1 +#undef SERIAL_5O2 +#undef SERIAL_6O2 +#undef SERIAL_7O2 +#undef SERIAL_8O2 + +typedef enum XMC_UART_MODE { + SERIAL_5N1 = 0x15 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_6N1 = 0x16 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_7N1 = 0x17 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_8N1 = 0x18 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_5N2 = 0x25 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_6N2 = 0x26 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_7N2 = 0x27 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_8N2 = 0x28 | XMC_USIC_CH_PARITY_MODE_NONE, + SERIAL_5E1 = 0x15 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_6E1 = 0x16 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_7E1 = 0x17 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_8E1 = 0x18 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_5E2 = 0x25 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_6E2 = 0x26 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_7E2 = 0x27 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_8E2 = 0x28 | XMC_USIC_CH_PARITY_MODE_EVEN, + SERIAL_5O1 = 0x15 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_6O1 = 0x16 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_7O1 = 0x17 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_8O1 = 0x18 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_5O2 = 0x25 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_6O2 = 0x26 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_7O2 = 0x27 | XMC_USIC_CH_PARITY_MODE_ODD, + SERIAL_8O2 = 0x28 | XMC_USIC_CH_PARITY_MODE_ODD +} XMC_UART_MODE_t; + +//**************************************************************************** +// @Class Definitionsw +//**************************************************************************** +class Uart : public HardwareSerial { +public: + XMC_UART_t *_XMC_UART_config; + Uart(XMC_UART_t *xmc_uart_config); + void begin(unsigned long); + void begin(unsigned long baudrate, uint16_t config) override; + void begin(unsigned long, XMC_UART_MODE_t config); + void end(); + int available(void); + int availableForWrite(void); + int peek(void); + int read(void); + void flush(void); + + size_t write(const uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print + + operator bool() { return true; } + + void setInterruptPriority(uint32_t priority); + uint32_t getInterruptPriority(); + + void IrqHandler(void); + +private: + RingBuffer _rx_buffer; +}; +extern Uart Serial; +extern Uart Serial1; From 88476e150f33ddf0351b2a7687d60f6cfa93d09c Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 20 May 2025 14:05:10 +0530 Subject: [PATCH 051/366] variants: Remove ringbuffer in pins_arduino_h. Signed-off-by: MDin --- .../config/XMC1100_Boot_Kit/pins_arduino.h | 8 +------ .../config/XMC1100_XMC2GO/pins_arduino.h | 8 +------ .../config/XMC1300_Boot_Kit/pins_arduino.h | 8 +------ .../config/XMC1400_Arduino_Kit/pins_arduino.h | 8 +------ .../config/XMC1400_XMC2GO/pins_arduino.h | 8 +------ .../config/XMC4200_Platform2GO/pins_arduino.h | 21 ++----------------- .../config/XMC4400_Platform2GO/pins_arduino.h | 11 +--------- .../config/XMC4700_Relax_Kit/pins_arduino.h | 16 ++++---------- 8 files changed, 12 insertions(+), 76 deletions(-) diff --git a/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h b/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h index 0b450106..7d0cfd7c 100644 --- a/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h +++ b/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h @@ -215,12 +215,6 @@ XMC_ADC_t mapping_adc[] = {{VADC, 0, DISABLED}, {VADC, 1, DISABLED}, {VADC, 2, D {VADC, 5, DISABLED}, {VADC, 6, DISABLED}}; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -/* - * UART objects - */ -RingBuffer rx_buffer_0; -RingBuffer tx_buffer_0; - /* First UART channel pins are swapped between debug and normal use */ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, @@ -254,7 +248,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +HardwareSerial Serial(&XMC_UART_0); // SPI instance XMC_SPI_t XMC_SPI_0 = { diff --git a/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h b/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h index 66e4df8e..ac4ddc4a 100644 --- a/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h +++ b/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h @@ -163,12 +163,6 @@ XMC_ADC_t mapping_adc[] = { {VADC, 1, DISABLED}, {VADC, 2, DISABLED}, {VADC, 3, DISABLED}, {VADC, 4, DISABLED}}; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -/* - * UART objects - */ -RingBuffer rx_buffer_0; -RingBuffer tx_buffer_0; - /* First UART channel pins are swapped between debug and normal use */ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .rx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, @@ -206,7 +200,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +HardwareSerial Serial(&XMC_UART_0); // SPI instance XMC_SPI_t XMC_SPI_0 = { diff --git a/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h b/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h index b30a91dc..2fbcf4be 100755 --- a/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h +++ b/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h @@ -218,12 +218,6 @@ XMC_ADC_t mapping_adc[] = {{VADC, 6, VADC_G1, 1, 4, DISABLED}, {VADC, 5, VADC_G0, 0, 8, DISABLED}}; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -/* - * UART objects - */ -RingBuffer rx_buffer_0; -RingBuffer tx_buffer_0; - /* First UART channel pins are swapped between debug and normal use */ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, @@ -259,7 +253,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +HardwareSerial Serial(&XMC_UART_0); // SPI instance XMC_SPI_t XMC_SPI_0 = { diff --git a/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h b/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h index fd9d81ae..f7e583ae 100644 --- a/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h +++ b/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h @@ -219,12 +219,6 @@ XMC_ADC_t mapping_adc[] = { const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -/* - * UART objects - */ -RingBuffer rx_buffer_0; -RingBuffer tx_buffer_0; - /* First UART channel pins are swapped between debug and normal use */ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, @@ -258,7 +252,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +HardwareSerial Serial(&XMC_UART_0); // SPI instance XMC_SPI_t XMC_SPI_0 = { diff --git a/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h b/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h index 9642842c..782b0fe3 100644 --- a/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h +++ b/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h @@ -217,12 +217,6 @@ XMC_ADC_t mapping_adc[] = { const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -/* - * UART objects - */ -RingBuffer rx_buffer_0; -RingBuffer tx_buffer_0; - /* First UART channel pins are swapped between debug and normal use */ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .rx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, // RX P2.6 @@ -260,7 +254,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +HardwareSerial Serial(&XMC_UART_0); // SPI instance XMC_SPI_t XMC_SPI_0 = { diff --git a/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h b/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h index bc5b4b9f..be7d0e27 100644 --- a/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h +++ b/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h @@ -235,23 +235,6 @@ XMC_ADC_t mapping_adc[] = { }; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -/* - * UART objects - * - */ - -// Since both the UART interfaces are present on different USIC instances, -// both can be enabled independently. - -// Serial is PC-DEBUG interface -// Serial1 is ONBOARD interface - -RingBuffer rx_buffer_0; -RingBuffer tx_buffer_0; - -RingBuffer rx_buffer_1; -RingBuffer tx_buffer_1; - XMC_UART_t XMC_UART_0 = { .channel = XMC_UART0_CH0, .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)4}, @@ -287,9 +270,9 @@ XMC_UART_t XMC_UART_1 = { .irq_service_request = 0}; // Object instantiated of the HardwareSerial class for UART PC (debug) interface -HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +HardwareSerial Serial(&XMC_UART_0); // Object instantiated of the HardwareSerial class for UART ONBOARD interface -HardwareSerial Serial1(&XMC_UART_1, &rx_buffer_1, &tx_buffer_1); +HardwareSerial Serial1(&XMC_UART_1); // SPI instance XMC_SPI_t XMC_SPI_0 = { diff --git a/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h b/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h index 8f404dfc..6da1215d 100644 --- a/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h +++ b/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h @@ -313,15 +313,6 @@ XMC_ADC_t mapping_adc[] = { }; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -/* - * UART objects - * - * See many XMC1x00 pins_arduino.h for proper way to handle HOSTPC - * NUM_SERIAL defines number of PHYSICAL ports NOT configurations - */ -RingBuffer rx_buffer_0; -RingBuffer tx_buffer_0; - XMC_UART_t XMC_UART_0 = { .channel = XMC_UART1_CH0, .rx = @@ -364,7 +355,7 @@ XMC_UART_t XMC_UART_0 = { .irq_service_request = 0}; // Single Hardware Serial object for both UART interfaces -HardwareSerial Serial(&XMC_UART_0, &rx_buffer_0, &tx_buffer_0); +HardwareSerial Serial(&XMC_UART_0); // SPI instance XMC_SPI_t XMC_SPI_0 = { diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index 6d8b7e22..ead85815 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -394,15 +394,6 @@ const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERR // VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; // const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); -/* - * UART objects - * - * Serial 0 is Debug port - * Serial 1 is on-board port - */ -arduino::RingBuffer rx_buffer_0; -arduino::RingBuffer rx_buffer_1; - XMC_UART_t XMC_UART_0 = { .channel = XMC_UART0_CH0, .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)4}, @@ -437,10 +428,11 @@ XMC_UART_t XMC_UART_1 = { .irq_num = USIC1_0_IRQn, .irq_service_request = 0}; + // Debug port -Uart Serial(&XMC_UART_0, &rx_buffer_0); -// On-board port -Uart Serial1(&XMC_UART_1, &rx_buffer_1); +Uart Serial(&XMC_UART_0); +// On-Board port +Uart Serial1(&XMC_UART_1); // // Three SPI instances possible // XMC_SPI_t XMC_SPI_0 = { From 78bef9086b8b8d4746d2c18bf6e168b47d0b0d95 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 20 May 2025 14:28:05 +0530 Subject: [PATCH 052/366] cores/xmc: Rework review comments. Signed-off-by: MDin --- cores/xmc/Arduino.h | 2 +- cores/xmc/Uart.h | 5 ++++- cores/xmc/main.cpp | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 5954813a..6aa5bf1d 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -343,7 +343,7 @@ extern void loop(void); } // extern "C" // #include "Tone.h" // #include "WMath.h" - // #include "Uart.h" + #include "Uart.h" #endif // __cplusplus // #include "Print.h" diff --git a/cores/xmc/Uart.h b/cores/xmc/Uart.h index aacc5095..c5b03431 100644 --- a/cores/xmc/Uart.h +++ b/cores/xmc/Uart.h @@ -94,7 +94,10 @@ class Uart : public HardwareSerial { void IrqHandler(void); private: - RingBuffer _rx_buffer; + static constexpr size_t BUF_LENGTH = 512; + RingBufferN _rx_buffer; + bool serial_ready = false; }; + extern Uart Serial; extern Uart Serial1; diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index b1a61812..98cbd07c 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -49,7 +49,7 @@ int main(void) { setup(); while (1) { loop(); - //::serialEventRun(); + ::serialEventRun(); } } From e10793f75be29e38e4c5759cdfada6f3b91a95d8 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 22 May 2025 17:13:54 +0530 Subject: [PATCH 053/366] cores/xmc: Write() with buf and size. Signed-off-by: MDin --- cores/xmc/Uart.cpp | 21 ++++++++++++++++++--- cores/xmc/Uart.h | 3 ++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cores/xmc/Uart.cpp b/cores/xmc/Uart.cpp index 6c6109c1..bda4aa40 100644 --- a/cores/xmc/Uart.cpp +++ b/cores/xmc/Uart.cpp @@ -4,9 +4,8 @@ // Constructors //////////////////////////////////////////////////////////////// -Uart::Uart(XMC_UART_t *xmc_uart_config){ - _XMC_UART_config = xmc_uart_config; -} +Uart::Uart(XMC_UART_t *xmc_uart_config) { _XMC_UART_config = xmc_uart_config; } + // Public Methods ////////////////////////////////////////////////////////////// void Uart::begin(unsigned long baud) { begin(baud, SERIAL_8N1); } @@ -68,6 +67,7 @@ void Uart::begin(unsigned long baud, XMC_UART_MODE_t config) { XMC_GPIO_Init(_XMC_UART_config->rx.port, _XMC_UART_config->rx.pin, &(_XMC_UART_config->rx_config)); + serial_ready = true; } void Uart::end(void) { @@ -77,6 +77,7 @@ void Uart::end(void) { NVIC_DisableIRQ(_XMC_UART_config->irq_num); // Clear any received data after stopping interrupts _rx_buffer.clear(); + serial_ready = false; } void Uart::setInterruptPriority(uint32_t priority) { @@ -108,6 +109,20 @@ size_t Uart::write(const uint8_t uc_data) { return 1; } +size_t Uart::write(const uint8_t *buffer, size_t size) { + // Check if the length is valid + if ((size == 0) || (buffer == nullptr)) { + return 0; + } + // For sending, write immediately + for (size_t i = 0; i < size; i++) { + XMC_UART_CH_Transmit(_XMC_UART_config->channel, buffer[i]); + } + return size; +} + +Uart::operator bool() { return serial_ready; } + void Uart::IrqHandler(void) { // Receive data Interrupt handler uint32_t status = XMC_UART_CH_GetStatusFlag(_XMC_UART_config->channel); diff --git a/cores/xmc/Uart.h b/cores/xmc/Uart.h index c5b03431..fb8702e1 100644 --- a/cores/xmc/Uart.h +++ b/cores/xmc/Uart.h @@ -84,9 +84,10 @@ class Uart : public HardwareSerial { void flush(void); size_t write(const uint8_t); + size_t write(const uint8_t *buffer, size_t size); using Print::write; // pull in write(str) and write(buf, size) from Print - operator bool() { return true; } + operator bool(); void setInterruptPriority(uint32_t priority); uint32_t getInterruptPriority(); From 2c5f4c287124d3a3a37a62890dc79c155e36ba4b Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 22 May 2025 17:20:52 +0530 Subject: [PATCH 054/366] tests: Add sync pin number. Signed-off-by: MDin --- tests/test_config.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index 3b4ffe67..8da513e5 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -3,7 +3,7 @@ * @brief Configuration file for board-specific test pin definitions. * * This header file contains the definitions of the pins used for testing - * purposes on the specific board. These pins are configured as output and + * purposes on the specific board. These pins are configured as output and * input pins for various test scenarios. * */ @@ -13,7 +13,7 @@ #include // Test Pin Definitions -#define TEST_DIGITALIO_OUTPUT 4 // IO_4 -#define TEST_DIGITALIO_INPUT 3 // IO_3 - -#endif // TEST_CONFIG_H \ No newline at end of file +#define TEST_DIGITALIO_OUTPUT 2 // IO_4 +#define TEST_DIGITALIO_INPUT 3 // IO_3 +#define TEST_PIN_SYNC_IO 4 // IO_1 +#endif // TEST_CONFIG_H \ No newline at end of file From e4de78221ae32d8f4fe04eb625f2ac819bbebda2 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 26 May 2025 18:18:51 +0530 Subject: [PATCH 055/366] cores/xmc/: Interrupt code changes for invalid pin/mode. Signed-off-by: MDin --- cores/xmc/WInterrupts.c | 236 ++++++++++++++++++++++------------------ 1 file changed, 129 insertions(+), 107 deletions(-) diff --git a/cores/xmc/WInterrupts.c b/cores/xmc/WInterrupts.c index e021c9b1..ea5d8c15 100644 --- a/cores/xmc/WInterrupts.c +++ b/cores/xmc/WInterrupts.c @@ -8,8 +8,8 @@ extern "C" { //**************************************************************************** // @Prototypes Of Local Functions //**************************************************************************** -static voidFuncPtr interrupt_0_cb = NULL; -static voidFuncPtr interrupt_1_cb = NULL; +static voidFuncPtr interrupt_0_cb = NULL; +static voidFuncPtr interrupt_1_cb = NULL; //**************************************************************************** // @Local Functions @@ -49,148 +49,170 @@ void CCU40_1_IRQHandler(void) { } #endif -void attachInterrupt(pin_size_t interrupt_num, voidFuncPtr callback, PinStatus mode) { - XMC_PIN_INTERRUPT_t pin_irq = mapping_interrupt[interrupt_num]; -#if defined(INTERRUPT_USE_ERU) - XMC_ERU_ETL_EDGE_DETECTION_t event_config = 0; - - switch (mode) { - case CHANGE: - event_config = XMC_ERU_ETL_EDGE_DETECTION_BOTH; - break; - - case RISING: - event_config = XMC_ERU_ETL_EDGE_DETECTION_RISING; +void attachInterrupt(pin_size_t interrupt_num, voidFuncPtr callback, PinStatus mode) { + if (interrupt_num >= NUM_INTERRUPT) { + return; + } + if (mode != CHANGE && mode != RISING && mode != FALLING) { + switch (interrupt_num) { + case 0: + NVIC_DisableIRQ(CCU40_0_IRQn); + interrupt_0_cb = NULL; break; - case FALLING: - event_config = XMC_ERU_ETL_EDGE_DETECTION_FALLING; + case 1: + NVIC_DisableIRQ(CCU40_1_IRQn); + interrupt_1_cb = NULL; break; - default: - event_config = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_NONE; break; } + return; + } + XMC_PIN_INTERRUPT_t pin_irq = mapping_interrupt[interrupt_num]; +#if defined(INTERRUPT_USE_ERU) + XMC_ERU_ETL_EDGE_DETECTION_t event_config = 0; - XMC_ERU_Enable(pin_irq.eru); - XMC_ERU_ETL_SetInput(pin_irq.eru, pin_irq.etl, pin_irq.input_a, pin_irq.input_b); - XMC_ERU_ETL_SetEdgeDetection(pin_irq.eru, pin_irq.etl, event_config); - XMC_ERU_ETL_SetSource(pin_irq.eru, pin_irq.etl, XMC_ERU_ETL_SOURCE_B); - XMC_ERU_ETL_EnableOutputTrigger(pin_irq.eru, pin_irq.etl, pin_irq.ogu); - XMC_ERU_OGU_SetServiceRequestMode(pin_irq.eru, pin_irq.ogu, - XMC_ERU_OGU_SERVICE_REQUEST_ON_TRIGGER); - - if (pin_irq.irq_num == 0) { - NVIC_SetPriority(ERU0_3_IRQn, 3); - interrupt_0_cb = callback; - NVIC_EnableIRQ(ERU0_3_IRQn); - } else if (pin_irq.irq_num == 1) { + switch (mode) { + case CHANGE: + event_config = XMC_ERU_ETL_EDGE_DETECTION_BOTH; + break; + + case RISING: + event_config = XMC_ERU_ETL_EDGE_DETECTION_RISING; + break; + + case FALLING: + event_config = XMC_ERU_ETL_EDGE_DETECTION_FALLING; + break; + + default: + event_config = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_NONE; + break; + } + + XMC_ERU_Enable(pin_irq.eru); + XMC_ERU_ETL_SetInput(pin_irq.eru, pin_irq.etl, pin_irq.input_a, pin_irq.input_b); + XMC_ERU_ETL_SetEdgeDetection(pin_irq.eru, pin_irq.etl, event_config); + XMC_ERU_ETL_SetSource(pin_irq.eru, pin_irq.etl, XMC_ERU_ETL_SOURCE_B); + XMC_ERU_ETL_EnableOutputTrigger(pin_irq.eru, pin_irq.etl, pin_irq.ogu); + XMC_ERU_OGU_SetServiceRequestMode(pin_irq.eru, pin_irq.ogu, + XMC_ERU_OGU_SERVICE_REQUEST_ON_TRIGGER); + + if (pin_irq.irq_num == 0) { + NVIC_SetPriority(ERU0_3_IRQn, 3); + interrupt_0_cb = callback; + NVIC_EnableIRQ(ERU0_3_IRQn); + } else if (pin_irq.irq_num == 1) { #if defined(XMC4200_Platform2GO) - NVIC_SetPriority(ERU0_0_IRQn, 3); - interrupt_1_cb = callback; - NVIC_EnableIRQ(ERU0_0_IRQn); + NVIC_SetPriority(ERU0_0_IRQn, 3); + interrupt_1_cb = callback; + NVIC_EnableIRQ(ERU0_0_IRQn); #else - NVIC_SetPriority(ERU1_0_IRQn, 3); - interrupt_1_cb = callback; - NVIC_EnableIRQ(ERU1_0_IRQn); + NVIC_SetPriority(ERU1_0_IRQn, 3); + interrupt_1_cb = callback; + NVIC_EnableIRQ(ERU1_0_IRQn); #endif - } + } #else - XMC_CCU4_SLICE_EVENT_CONFIG_t event_config = {0}; + XMC_CCU4_SLICE_EVENT_CONFIG_t event_config = {0}; - switch (mode) { - case CHANGE: - event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_DUAL_EDGE; - break; + switch (mode) { + case CHANGE: + event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_DUAL_EDGE; + break; - case RISING: - event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_RISING_EDGE; - break; + case RISING: + event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_RISING_EDGE; + break; - case FALLING: - event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_FALLING_EDGE; - break; + case FALLING: + event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_FALLING_EDGE; + break; - default: - event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_NONE; - break; - } + default: + event_config.edge = XMC_CCU4_SLICE_EVENT_EDGE_SENSITIVITY_NONE; + break; + } - XMC_CCU4_Init(pin_irq.ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU4_EnableClock(pin_irq.ccu, pin_irq.slice_num); + XMC_CCU4_Init(pin_irq.ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU4_EnableClock(pin_irq.ccu, pin_irq.slice_num); - if (pin_irq.irq_num == 0) { + if (pin_irq.irq_num == 0) { #if defined(XMC1100_Boot_Kit) || defined(XMC1400_Arduino_Kit) || defined(XMC1400_XMC2GO) - /* P1_4 external interrupt goes through USIC to CCU4 */ - XMC_USIC_CH_Enable(XMC_USIC0_CH0); - XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX5, USIC0_C0_DX5_P1_4); - XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_DX5INS); + /* P1_4 external interrupt goes through USIC to CCU4 */ + XMC_USIC_CH_Enable(XMC_USIC0_CH0); + XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX5, USIC0_C0_DX5_P1_4); + XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_DX5INS); #endif - XMC_CCU4_SLICE_EnableMultipleEvents(pin_irq.slice, XMC_CCU4_SLICE_MULTI_IRQ_ID_EVENT0); - XMC_CCU4_SLICE_SetInterruptNode(pin_irq.slice, XMC_CCU4_SLICE_IRQ_ID_EVENT0, 0); - NVIC_SetPriority(CCU40_0_IRQn, 3); + XMC_CCU4_SLICE_EnableMultipleEvents(pin_irq.slice, XMC_CCU4_SLICE_MULTI_IRQ_ID_EVENT0); + XMC_CCU4_SLICE_SetInterruptNode(pin_irq.slice, XMC_CCU4_SLICE_IRQ_ID_EVENT0, 0); + NVIC_SetPriority(CCU40_0_IRQn, 3); - event_config.mapped_input = pin_irq.input; - XMC_CCU4_SLICE_ConfigureEvent(pin_irq.slice, XMC_CCU4_SLICE_EVENT_0, &event_config); + event_config.mapped_input = pin_irq.input; + XMC_CCU4_SLICE_ConfigureEvent(pin_irq.slice, XMC_CCU4_SLICE_EVENT_0, &event_config); - interrupt_0_cb = callback; - NVIC_EnableIRQ(CCU40_0_IRQn); - } else if (pin_irq.irq_num == 1) { + interrupt_0_cb = callback; + NVIC_EnableIRQ(CCU40_0_IRQn); + } else if (pin_irq.irq_num == 1) { #if defined(XMC1300_Boot_Kit) - /* P0_13 external interrupt goes through USIC to CCU4 */ - XMC_USIC_CH_Enable(XMC_USIC0_CH0); - XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_P0_13); + /* P0_13 external interrupt goes through USIC to CCU4 */ + XMC_USIC_CH_Enable(XMC_USIC0_CH0); + XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_P0_13); #endif #if defined(XMC1400_Arduino_Kit) - /* P1_1 external interrupt goes through USIC to CCU4 */ - XMC_USIC_CH_Enable(XMC_USIC0_CH1); - XMC_USIC_CH_SetInputSource(XMC_USIC0_CH1, XMC_USIC_CH_INPUT_DX2, USIC0_C1_DX2_P1_1); + /* P1_1 external interrupt goes through USIC to CCU4 */ + XMC_USIC_CH_Enable(XMC_USIC0_CH1); + XMC_USIC_CH_SetInputSource(XMC_USIC0_CH1, XMC_USIC_CH_INPUT_DX2, USIC0_C1_DX2_P1_1); #endif - XMC_CCU4_SLICE_EnableMultipleEvents(pin_irq.slice, XMC_CCU4_SLICE_MULTI_IRQ_ID_EVENT1); - XMC_CCU4_SLICE_SetInterruptNode(pin_irq.slice, XMC_CCU4_SLICE_IRQ_ID_EVENT1, 1); - NVIC_SetPriority(CCU40_1_IRQn, 3); + XMC_CCU4_SLICE_EnableMultipleEvents(pin_irq.slice, XMC_CCU4_SLICE_MULTI_IRQ_ID_EVENT1); + XMC_CCU4_SLICE_SetInterruptNode(pin_irq.slice, XMC_CCU4_SLICE_IRQ_ID_EVENT1, 1); + NVIC_SetPriority(CCU40_1_IRQn, 3); - event_config.mapped_input = pin_irq.input; - XMC_CCU4_SLICE_ConfigureEvent(pin_irq.slice, XMC_CCU4_SLICE_EVENT_1, &event_config); + event_config.mapped_input = pin_irq.input; + XMC_CCU4_SLICE_ConfigureEvent(pin_irq.slice, XMC_CCU4_SLICE_EVENT_1, &event_config); - interrupt_1_cb = callback; - NVIC_EnableIRQ(CCU40_1_IRQn); - } + interrupt_1_cb = callback; + NVIC_EnableIRQ(CCU40_1_IRQn); + } #endif } -void detachInterrupt(pin_size_t interrupt_num) { +void detachInterrupt(pin_size_t interrupt_num) { + + if (interrupt_num >= NUM_INTERRUPT) { + return; + } #if defined(INTERRUPT_USE_ERU) - XMC_PIN_INTERRUPT_t pin_irq = mapping_interrupt[interrupt_num]; - switch (pin_irq.irq_num) { - case 0: - NVIC_DisableIRQ(ERU0_3_IRQn); - break; + XMC_PIN_INTERRUPT_t pin_irq = mapping_interrupt[interrupt_num]; + switch (pin_irq.irq_num) { + case 0: + NVIC_DisableIRQ(ERU0_3_IRQn); + break; - case 1: + case 1: #if defined(XMC4200_Platform2GO) - NVIC_DisableIRQ(ERU0_0_IRQn); + NVIC_DisableIRQ(ERU0_0_IRQn); #else - NVIC_DisableIRQ(ERU1_0_IRQn); + NVIC_DisableIRQ(ERU1_0_IRQn); #endif - break; - default: - break; - } + break; + default: + break; + } #else - switch (interrupt_num) { - case 0: - NVIC_DisableIRQ(CCU40_0_IRQn); - break; - - case 1: - NVIC_DisableIRQ(CCU40_1_IRQn); - break; - default: - break; - } + switch (interrupt_num) { + case 0: + NVIC_DisableIRQ(CCU40_0_IRQn); + break; + + case 1: + NVIC_DisableIRQ(CCU40_1_IRQn); + break; + default: + break; + } #endif - } #ifdef __cplusplus } From aa0836314e62c2b0bf9ed36a37def135e2aa87fb Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 26 May 2025 18:21:56 +0530 Subject: [PATCH 056/366] tests: Modifed the variable name. Signed-off-by: MDin --- tests/test_config.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index 8da513e5..070acc4f 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -13,7 +13,7 @@ #include // Test Pin Definitions -#define TEST_DIGITALIO_OUTPUT 2 // IO_4 -#define TEST_DIGITALIO_INPUT 3 // IO_3 -#define TEST_PIN_SYNC_IO 4 // IO_1 -#endif // TEST_CONFIG_H \ No newline at end of file +#define TEST_PIN_DIGITAL_IO_OUTPUT 2 // IO_4 +#define TEST_PIN_DIGITAL_IO_INPUT 3 // IO_3 +#define TEST_PIN_SYNC_IO 4 // IO_1 +#endif // TEST_CONFIG_H \ No newline at end of file From 22b572531b415ca1837635a7381cef742d544c32 Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Mon, 2 Jun 2025 13:36:16 +0200 Subject: [PATCH 057/366] ci-matrix-config.yml: Added built-in examples to ci. Signed-off-by: jaenrig-ifx --- ci-matrix-config.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 93966e8c..a2e3188b 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -4,6 +4,18 @@ sketch: - extras/arduino-examples/examples/01.Basics/BareMinimum/BareMinimum.ino + - extras/arduino-examples/examples/01.Basics/Blink/Blink.ino + - extras/arduino-examples/examples/01.Basics/DigitalReadSerial/DigitalReadSerial.ino + - extras/arduino-examples/examples/02.Digital/BlinkWithoutDelay/BlinkWithoutDelay.ino + - extras/arduino-examples/examples/02.Digital/Button/Button.ino + - extras/arduino-examples/examples/02.Digital/Debounce/Debounce.ino + - extras/arduino-examples/examples/02.Digital/DigitalInputPullup/DigitalInputPullup.ino + - extras/arduino-examples/examples/02.Digital/StateChangeDetection/StateChangeDetection.ino + - extras/arduino-examples/examples/04.Communication/ASCIITable/ASCIITable.ino + - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino + - extras/arduino-examples/examples/04.Communication/PhysicalPixel/PhysicalPixel.ino + - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino + - extras/arduino-examples/examples/05.Control/ForLoopIteration/ForLoopIteration.ino fqbn: - Infineon:xmc:XMC4700_Relax_Kit From 265c47991694a372d9bdda382371b1782261a483 Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Tue, 3 Jun 2025 13:58:29 +0200 Subject: [PATCH 058/366] .github/workflows/release.yml: Updated reusable workflow. Signed-off-by: jaenrig-ifx --- .github/workflows/release.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ecab897..5527e557 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,10 +2,24 @@ name: Release on: push: - + tags: + - '[0-9]+.[0-9]+.[0-9]+**' + workflow_dispatch: + inputs: + version: + description: 'Release version' + required: true + default: '' + type: choice + options: + - patch + - minor + - major + jobs: arduino-devops: uses: Infineon/arduino-devops/.github/workflows/release.yml@latest with: - release-title: XMC-for-Arduino + setup-script: bash ./tools/dev-setup.sh + version: ${{ inputs.version }} secrets: inherit \ No newline at end of file From 26268fcf3c75b8b0a44b4c430c4496737eb9ca52 Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Tue, 3 Jun 2025 13:58:51 +0200 Subject: [PATCH 059/366] platform.txt: Added auto setting version comment. Signed-off-by: jaenrig-ifx --- platform.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index 35f0c9e5..11cc332a 100644 --- a/platform.txt +++ b/platform.txt @@ -6,7 +6,9 @@ # The information about this Arduino compatible environment # --------- name=XMC Family -version=4.0.0 +# The version field is automatically added during +# the core release packaging. Leave empty. +version= # Build related core definitions # --------- From 05eca106051f103a8456cbb20c813c507c5a93db Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 6 Jun 2025 10:29:11 +0200 Subject: [PATCH 060/366] variants/xmc4700: Reactivate pin definition for analog. Signed-off-by: zhanglinjing --- .../config/XMC4700_Relax_Kit/pins_arduino.h | 253 +++++++++--------- 1 file changed, 123 insertions(+), 130 deletions(-) diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index ead85815..cc082c4a 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -264,135 +264,129 @@ const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { /* 1 */ {CCU40, CCU40_CC42, 2, 1, CCU40_IN2_P1_1}}; const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERRUPT_t)); -// /* Mapping of Arduino Pins to PWM4 channels as pin and index in PWM4 channel -// mapping array XMC_PWM4_t mapping_pwm4[] -// last entry 255 for both parts. -// Putting both parts in array means if a PWM4 channel gets reassigned for -// another function later a gap in channel numbers will not mess things up */ -// const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 -// {10, 1}, // PWM4 -// {11, 2}, // PWM5 -// {93, 3}, // PWM20 -// {70, 4}, // PWM21 -// {94, 5}, // PWM22 -// {61, 6}, // PWM7 -// {34, 7}, // PWM12 -// {76, 8}, // PWM17 -// {88, 9}, // PWM18 -// {89, 10}, // PWM19 -// {255, 255}}; - -// /* Configurations of PWM channels for CCU4 type */ -// XMC_PWM4_t mapping_pwm4[] = { -// {CCU40, CCU40_CC42, 2, mapping_port_pin[3], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P1.1 -// {CCU41, CCU41_CC40, 0, mapping_port_pin[10], P3_10_AF_CCU41_OUT0, -// XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 10 P3.10 -// {CCU41, CCU41_CC42, 2, mapping_port_pin[11], P3_8_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 11 P3.8 -// {CCU40, CCU40_CC40, 0, mapping_port_pin[93], P0_15_AF_CCU40_OUT0, -// XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 93 P0.15 -// {CCU40, CCU40_CC41, 1, mapping_port_pin[70], P0_14_AF_CCU40_OUT1, -// XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 70 P0.14 -// {CCU40, CCU40_CC43, 3, mapping_port_pin[94], P0_12_AF_CCU40_OUT3, -// XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 94 P0.12 -// {CCU42, CCU42_CC40, 0, mapping_port_pin[61], P3_0_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 61 P3.0 -// {CCU42, CCU42_CC42, 2, mapping_port_pin[34], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 34 P3.4 -// {CCU43, CCU43_CC40, 0, mapping_port_pin[76], P6_5_AF_CCU43_OUT0, XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 76 P6.5 -// {CCU43, CCU43_CC41, 1, mapping_port_pin[88], P6_4_AF_CCU43_OUT1, XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 88 P6.4 -// {CCU43, CCU43_CC43, 3, mapping_port_pin[89], P6_2_AF_CCU43_OUT3, XMC_CCU4_SLICE_PRESCALER_64, -// PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 89 P6.2 -// }; -// const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); - -// /* Mapping in same manner as PWM4 for PWM8 channels */ -// const uint8_t mapping_pin_PWM8[][2] = {{5, 0}, // PWM1 -// {6, 1}, // PWM2 -// {9, 2}, // PWM3 -// {51, 3}, // PWM6 -// {37, 4}, // PWM9 -// {62, 5}, // PWM8 -// {36, 6}, // PWM10 -// {66, 7}, // PWM11 -// {77, 8}, // PWM16 -// {81, 9}, // PWM13 -// {80, 10}, // PWM14 -// {79, 11}, // PWM15 -// {255, 255}}; - -// /* Configurations of PWM channels for CCU8 type */ -// XMC_PWM8_t mapping_pwm8[] = { -// {CCU81, CCU81_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[5], -// P2_12_AF_CCU81_OUT33, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 5 P2.12 -// {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[6], -// P2_11_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 6 P2.11 -// {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], -// P1_11_AF_CCU81_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 9 P1.11 -// {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[51], -// P5_11_AF_CCU80_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 51 P5.11 -// {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[37], -// P0_1_AF_CCU80_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 37 P0.1 -// {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[62], -// P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 62 P0.9 -// {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[36], -// P0_3_AF_CCU80_OUT20, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 36 P0.3 -// {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[66], -// P0_6_AF_CCU80_OUT30, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 66 P0.6 -// {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[77], -// P1_15_AF_CCU81_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 77 P1.15 -// {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[81], -// P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 81 P5.7 -// {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[80], -// P5_5_AF_CCU81_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED}, // PWM disabled 80 P5.5 -// {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[79], -// P5_3_AF_CCU81_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, -// DISABLED} // PWM disabled 79 P5.3 -// }; -// const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); -// const uint8_t NUM_PWM = -// (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)) + (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); - -// /* Analog Pin mappings and configurations */ -// #ifdef DAC -// const uint8_t mapping_pin_DAC[][2] = {{48, 0}, {53, 1}, {255, 255}}; -// XMC_ARD_DAC_t mapping_dac[] = {{XMC_DAC0, 1, 12}, {XMC_DAC0, 0, 12}}; -// const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)); -// #endif - -// // Result reg numbers are now equal to channel numbers -// XMC_ADC_t mapping_adc[] = {{VADC, 0, VADC_G0, 0, 0, DISABLED}, {VADC, 1, VADC_G0, 0, 1, -// DISABLED}, -// {VADC, 2, VADC_G1, 1, 2, DISABLED}, {VADC, 3, VADC_G1, 1, 3, -// DISABLED}, {VADC, 0, VADC_G2, 2, 0, DISABLED}, {VADC, 1, VADC_G2, 2, -// 1, DISABLED}, {VADC, 6, VADC_G2, 2, 6, DISABLED}, {VADC, 5, VADC_G2, -// 2, 5, DISABLED}, {VADC, 3, VADC_G2, 2, 3, DISABLED}, {VADC, 7, -// VADC_G1, 1, 7, DISABLED}, {VADC, 5, VADC_G1, 1, 5, DISABLED}, {VADC, -// 7, VADC_G0, 0, 7, DISABLED}, {VADC, 7, VADC_G3, 3, 7, DISABLED}, -// {VADC, 1, VADC_G1, 1, 1, DISABLED}, {VADC, 0, VADC_G1, 1, 0, -// DISABLED}, {VADC, 6, VADC_G3, 3, 6, DISABLED}, {VADC, 6, VADC_G0, 0, -// 6, DISABLED}, {VADC, 4, VADC_G1, 1, 4, DISABLED}, {VADC, 6, VADC_G1, -// 1, 6, DISABLED}, {VADC, 2, VADC_G2, 2, 2, DISABLED}, {VADC, 4, -// VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; -// const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); +/* Mapping of Arduino Pins to PWM4 channels as pin and index in PWM4 channel + mapping array XMC_PWM4_t mapping_pwm4[] + last entry 255 for both parts. + Putting both parts in array means if a PWM4 channel gets reassigned for + another function later a gap in channel numbers will not mess things up */ +const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 + {10, 1}, // PWM4 + {11, 2}, // PWM5 + {93, 3}, // PWM20 + {70, 4}, // PWM21 + {94, 5}, // PWM22 + {61, 6}, // PWM7 + {34, 7}, // PWM12 + {76, 8}, // PWM17 + {88, 9}, // PWM18 + {89, 10}, // PWM19 + {255, 255}}; + +/* Configurations of PWM channels for CCU4 type */ +XMC_PWM4_t mapping_pwm4[] = { + {CCU40, CCU40_CC42, 2, mapping_port_pin[3], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P1.1 + {CCU41, CCU41_CC40, 0, mapping_port_pin[10], P3_10_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 10 P3.10 + {CCU41, CCU41_CC42, 2, mapping_port_pin[11], P3_8_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 11 P3.8 + {CCU40, CCU40_CC40, 0, mapping_port_pin[93], P0_15_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 93 P0.15 + {CCU40, CCU40_CC41, 1, mapping_port_pin[70], P0_14_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 70 P0.14 + {CCU40, CCU40_CC43, 3, mapping_port_pin[94], P0_12_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 94 P0.12 + {CCU42, CCU42_CC40, 0, mapping_port_pin[61], P3_0_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 61 P3.0 + {CCU42, CCU42_CC42, 2, mapping_port_pin[34], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 34 P3.4 + {CCU43, CCU43_CC40, 0, mapping_port_pin[76], P6_5_AF_CCU43_OUT0, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 76 P6.5 + {CCU43, CCU43_CC41, 1, mapping_port_pin[88], P6_4_AF_CCU43_OUT1, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 88 P6.4 + {CCU43, CCU43_CC43, 3, mapping_port_pin[89], P6_2_AF_CCU43_OUT3, XMC_CCU4_SLICE_PRESCALER_64, + PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 89 P6.2 +}; +const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); + +/* Mapping in same manner as PWM4 for PWM8 channels */ +const uint8_t mapping_pin_PWM8[][2] = {{5, 0}, // PWM1 + {6, 1}, // PWM2 + {9, 2}, // PWM3 + {51, 3}, // PWM6 + {37, 4}, // PWM9 + {62, 5}, // PWM8 + {36, 6}, // PWM10 + {66, 7}, // PWM11 + {77, 8}, // PWM16 + {81, 9}, // PWM13 + {80, 10}, // PWM14 + {79, 11}, // PWM15 + {255, 255}}; + +/* Configurations of PWM channels for CCU8 type */ +XMC_PWM8_t mapping_pwm8[] = { + {CCU81, CCU81_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[5], + P2_12_AF_CCU81_OUT33, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 5 P2.12 + {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[6], + P2_11_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 6 P2.11 + {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], + P1_11_AF_CCU81_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 9 P1.11 + {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[51], + P5_11_AF_CCU80_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 51 P5.11 + {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[37], + P0_1_AF_CCU80_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 37 P0.1 + {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[62], + P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 62 P0.9 + {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[36], + P0_3_AF_CCU80_OUT20, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 36 P0.3 + {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[66], + P0_6_AF_CCU80_OUT30, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 66 P0.6 + {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[77], + P1_15_AF_CCU81_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 77 P1.15 + {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[81], + P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 81 P5.7 + {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[80], + P5_5_AF_CCU81_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED}, // PWM disabled 80 P5.5 + {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[79], + P5_3_AF_CCU81_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + DISABLED} // PWM disabled 79 P5.3 +}; +const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); +const uint8_t NUM_PWM = + (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)) + (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); + + /* Analog Pin mappings and configurations */ + #ifdef DAC +const uint8_t mapping_pin_DAC[][2] = {{48, 0}, {53, 1}, {255, 255}}; +XMC_ARD_DAC_t mapping_dac[] = {{XMC_DAC0, 1, 12}, {XMC_DAC0, 0, 12}}; +const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)); + #endif + +// Result reg numbers are now equal to channel numbers +XMC_ADC_t mapping_adc[] = {{VADC, 0, VADC_G0, 0, 0, DISABLED}, {VADC, 1, VADC_G0, 0, 1, DISABLED}, + {VADC, 2, VADC_G1, 1, 2, DISABLED}, {VADC, 3, VADC_G1, 1, 3, DISABLED}, + {VADC, 0, VADC_G2, 2, 0, DISABLED}, {VADC, 1, VADC_G2, 2, 1, DISABLED}, + {VADC, 6, VADC_G2, 2, 6, DISABLED}, {VADC, 5, VADC_G2, 2, 5, DISABLED}, + {VADC, 3, VADC_G2, 2, 3, DISABLED}, {VADC, 7, VADC_G1, 1, 7, DISABLED}, + {VADC, 5, VADC_G1, 1, 5, DISABLED}, {VADC, 7, VADC_G0, 0, 7, DISABLED}, + {VADC, 7, VADC_G3, 3, 7, DISABLED}, {VADC, 1, VADC_G1, 1, 1, DISABLED}, + {VADC, 0, VADC_G1, 1, 0, DISABLED}, {VADC, 6, VADC_G3, 3, 6, DISABLED}, + {VADC, 6, VADC_G0, 0, 6, DISABLED}, {VADC, 4, VADC_G1, 1, 4, DISABLED}, + {VADC, 6, VADC_G1, 1, 6, DISABLED}, {VADC, 2, VADC_G2, 2, 2, DISABLED}, + {VADC, 4, VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; +const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); XMC_UART_t XMC_UART_0 = { .channel = XMC_UART0_CH0, @@ -428,7 +422,6 @@ XMC_UART_t XMC_UART_1 = { .irq_num = USIC1_0_IRQn, .irq_service_request = 0}; - // Debug port Uart Serial(&XMC_UART_0); // On-Board port From b05b8c21ef693ee70d4ac44261b3547657d62648 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 6 Jun 2025 10:31:10 +0200 Subject: [PATCH 061/366] cores/xmc: Checkpoint working dac in analog. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 11 ++- cores/xmc/main.cpp | 1 - cores/xmc/wiring_analog.c | 150 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 157 insertions(+), 5 deletions(-) create mode 100644 cores/xmc/wiring_analog.c diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 6aa5bf1d..0788382e 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -74,6 +74,11 @@ extern "C" { #define interrupts() __enable_irq() #define noInterrupts() __disable_irq() +#define DEFAULT XMC_VADC_CHANNEL_REF_INTREF + +#define ENABLED 1 +#define DISABLED 0 + //**************************************************************************** // @Typedefs //**************************************************************************** @@ -325,10 +330,8 @@ extern void loop(void); // @Arduino Core Includes //**************************************************************************** #include "wiring_time.h" -// #include "wiring_digital.h" -/* -#include "wiring_analog.h" -#include "wiring_shift.h" + +/*#include "wiring_shift.h" #include "wiring_pulse.h" #include "WInterrupts.h" diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index 98cbd07c..f50a6d4b 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -37,7 +37,6 @@ int main(void) { * Initialization Time first to get closer to startup time accuracy */ wiring_time_init(); - // wiring_analog_init(); // Initialize the reset pin for the XMC1100 Boot Kit series and XMC1400 Kit for Arduino as they are // based on Arduino form-factor Hence, a dedicated reset pin is required. diff --git a/cores/xmc/wiring_analog.c b/cores/xmc/wiring_analog.c new file mode 100644 index 00000000..ec246420 --- /dev/null +++ b/cores/xmc/wiring_analog.c @@ -0,0 +1,150 @@ +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "Arduino.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif +//**************************************************************************** +// @Defines +//**************************************************************************** +#define ADC_CONVERSION_GROUP 0 +#define ADC_MIN_RESOLUTION 8 +#define ADC_MAX_READ_RESOLUTION 12 +#define ANALOG_MAX_WRITE_RESOLUTION 16 + +#define map(x, in_min, in_max, out_min, out_max) \ + (((x - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min) + +//**************************************************************************** +// @Global Variables +//**************************************************************************** +static XMC_VADC_CHANNEL_REF_t analog_reference = XMC_VADC_CHANNEL_REF_INTREF; +static uint8_t _readResolution = 10; +static uint8_t _writeResolution = 8; +uint16_t _readMaximum = 1023; +uint16_t _writeMaximum = 255; + +/* Sets the ADC reference voltage type. For the current XMC board, only the default (internal + reference, Varef = Vdda) is available. Other reference modes are not supported and will be + ignored. This function is provided for API compatibility and future extension. +*/ +void analogReference(uint8_t mode) { + switch (mode) { + case DEFAULT: + analog_reference = XMC_VADC_CHANNEL_REF_INTREF; + break; + default: + // Invalid mode, do nothing + break; + } +} + +uint8_t analogWriteResolution(uint8_t res) { + if (res > ANALOG_MAX_WRITE_RESOLUTION || res < ADC_MIN_RESOLUTION) + return 255; + + _writeResolution = res; + _writeMaximum = (uint16_t)(((uint32_t)1U << res) - 1); + return res; +} + +int16_t scan_map_table(const uint8_t table[][2], uint8_t pin) { + int16_t i; + + i = 0; + while (table[i][0] != 255) { + if (table[i][0] == pin) + break; + i++; + } + if (table[i][0] != 255) + return table[i][1]; + return -1; +} + +void analogWrite(pin_size_t pinNumber, int value) { + uint32_t compare_reg = 0; + int16_t resource; + if (value < 0 || value > _writeMaximum) + return; + // Check if the pin supports PWM4 + resource = scan_map_table(mapping_pin_PWM4, pinNumber); + if (resource >= 0) { + XMC_PWM4_t *pwm4 = &mapping_pwm4[resource]; + if (!(pwm4->enabled)) { + // Slice not yet initialized + XMC_CCU4_SLICE_COMPARE_CONFIG_t pwm_config; + memset(&pwm_config, 0, sizeof(XMC_CCU4_SLICE_COMPARE_CONFIG_t)); + pwm_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.prescaler_initval = pwm4->prescaler; + XMC_CCU4_Init(pwm4->ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU4_SLICE_CompareInit(pwm4->slice, &pwm_config); + XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); + XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, pwm4->period_timer_val); + pwm4->enabled = ENABLED; + } + if (value != 0) + compare_reg = ((value + 1) * (pwm4->period_timer_val + 1)) >> _writeResolution; + XMC_CCU4_SLICE_SetTimerCompareMatch(pwm4->slice, compare_reg); + XMC_CCU4_EnableShadowTransfer(pwm4->ccu, (CCU4_GCSS_S0SE_Msk << (4 * pwm4->slice_num))); + XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, + (XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); + XMC_CCU4_SLICE_StartTimer(pwm4->slice); + + return; + } +#if defined(CCU8V2) || defined(CCU8V1) + // Check if the pin supports PWM8 + else if ((resource = scan_map_table(mapping_pin_PWM8, pinNumber)) >= 0) { + XMC_PWM8_t *pwm8 = &mapping_pwm8[resource]; + if (!(pwm8->enabled)) { + // Slice not yet initialized + XMC_CCU8_SLICE_COMPARE_CONFIG_t pwm_config; + memset(&pwm_config, 0, sizeof(XMC_CCU8_SLICE_COMPARE_CONFIG_t)); + pwm_config.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.prescaler_initval = pwm8->prescaler; + XMC_CCU8_Init(pwm8->ccu, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU8_SLICE_CompareInit(pwm8->slice, &pwm_config); + XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); + XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, pwm8->period_timer_val); + pwm8->enabled = ENABLED; + } + if (value != 0) + compare_reg = ((value + 1) * (pwm8->period_timer_val + 1)) >> _writeResolution; + XMC_CCU8_SLICE_SetTimerCompareMatch(pwm8->slice, pwm8->slice_channel, compare_reg); + XMC_CCU8_EnableShadowTransfer(pwm8->ccu, CCU8_GCSS_S0SE_Msk << (4 * pwm8->slice_num)); + XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, + XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode); + XMC_CCU8_SLICE_StartTimer(pwm8->slice); + return; + } +#endif +#ifdef DAC + // Check if the pin supports DAC + else if ((resource = scan_map_table(mapping_pin_DAC, pinNumber)) >= 0) { + XMC_ARD_DAC_t *dac = &(mapping_dac[resource]); + XMC_DAC_Enable(dac->group); + XMC_DAC_CH_EnableOutput(dac->group, dac->channel); + XMC_DAC_CH_StartSingleValueMode(dac->group, dac->channel); + uint16_t dacValue = + map(value, 0, (0b10 << _writeResolution) - 1, 0, (0b10 << dac->resolution) - 1); + XMC_DAC_CH_Write(dac->group, dac->channel, dacValue); + return; + } +#endif + // If not found, do nothing + return; +} + +#ifdef __cplusplus +} +#endif +//**************************************************************************** +// END OF FILE +//**************************************************************************** From da2b4769c04f7215483123176b5bced8d7d64ea3 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 10 Jun 2025 17:15:48 +0200 Subject: [PATCH 062/366] cores/xmc: Add working analo module. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 13 ++ cores/xmc/wiring_analog.c | 150 -------------------- cores/xmc/wiring_analog.cpp | 263 ++++++++++++++++++++++++++++++++++++ 3 files changed, 276 insertions(+), 150 deletions(-) delete mode 100644 cores/xmc/wiring_analog.c create mode 100644 cores/xmc/wiring_analog.cpp diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 0788382e..9590291a 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -326,6 +326,19 @@ extern void setup(void); */ extern void loop(void); +/* + * \brief Set the resolution of analogRead return values. Default is 10 bits (range from 0 to 1023). + * + * \param res + */ +extern void analogReadResolution(int res); + +/* + * \brief Set the resolution of analogWrite parameters. Default is 8 bits (range from 0 to 255). + * + * \param res + */ +extern void analogWriteResolution(int res); //**************************************************************************** // @Arduino Core Includes //**************************************************************************** diff --git a/cores/xmc/wiring_analog.c b/cores/xmc/wiring_analog.c deleted file mode 100644 index ec246420..00000000 --- a/cores/xmc/wiring_analog.c +++ /dev/null @@ -1,150 +0,0 @@ -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include "Arduino.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif -//**************************************************************************** -// @Defines -//**************************************************************************** -#define ADC_CONVERSION_GROUP 0 -#define ADC_MIN_RESOLUTION 8 -#define ADC_MAX_READ_RESOLUTION 12 -#define ANALOG_MAX_WRITE_RESOLUTION 16 - -#define map(x, in_min, in_max, out_min, out_max) \ - (((x - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min) - -//**************************************************************************** -// @Global Variables -//**************************************************************************** -static XMC_VADC_CHANNEL_REF_t analog_reference = XMC_VADC_CHANNEL_REF_INTREF; -static uint8_t _readResolution = 10; -static uint8_t _writeResolution = 8; -uint16_t _readMaximum = 1023; -uint16_t _writeMaximum = 255; - -/* Sets the ADC reference voltage type. For the current XMC board, only the default (internal - reference, Varef = Vdda) is available. Other reference modes are not supported and will be - ignored. This function is provided for API compatibility and future extension. -*/ -void analogReference(uint8_t mode) { - switch (mode) { - case DEFAULT: - analog_reference = XMC_VADC_CHANNEL_REF_INTREF; - break; - default: - // Invalid mode, do nothing - break; - } -} - -uint8_t analogWriteResolution(uint8_t res) { - if (res > ANALOG_MAX_WRITE_RESOLUTION || res < ADC_MIN_RESOLUTION) - return 255; - - _writeResolution = res; - _writeMaximum = (uint16_t)(((uint32_t)1U << res) - 1); - return res; -} - -int16_t scan_map_table(const uint8_t table[][2], uint8_t pin) { - int16_t i; - - i = 0; - while (table[i][0] != 255) { - if (table[i][0] == pin) - break; - i++; - } - if (table[i][0] != 255) - return table[i][1]; - return -1; -} - -void analogWrite(pin_size_t pinNumber, int value) { - uint32_t compare_reg = 0; - int16_t resource; - if (value < 0 || value > _writeMaximum) - return; - // Check if the pin supports PWM4 - resource = scan_map_table(mapping_pin_PWM4, pinNumber); - if (resource >= 0) { - XMC_PWM4_t *pwm4 = &mapping_pwm4[resource]; - if (!(pwm4->enabled)) { - // Slice not yet initialized - XMC_CCU4_SLICE_COMPARE_CONFIG_t pwm_config; - memset(&pwm_config, 0, sizeof(XMC_CCU4_SLICE_COMPARE_CONFIG_t)); - pwm_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.prescaler_initval = pwm4->prescaler; - XMC_CCU4_Init(pwm4->ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU4_SLICE_CompareInit(pwm4->slice, &pwm_config); - XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); - XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, pwm4->period_timer_val); - pwm4->enabled = ENABLED; - } - if (value != 0) - compare_reg = ((value + 1) * (pwm4->period_timer_val + 1)) >> _writeResolution; - XMC_CCU4_SLICE_SetTimerCompareMatch(pwm4->slice, compare_reg); - XMC_CCU4_EnableShadowTransfer(pwm4->ccu, (CCU4_GCSS_S0SE_Msk << (4 * pwm4->slice_num))); - XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, - (XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); - XMC_CCU4_SLICE_StartTimer(pwm4->slice); - - return; - } -#if defined(CCU8V2) || defined(CCU8V1) - // Check if the pin supports PWM8 - else if ((resource = scan_map_table(mapping_pin_PWM8, pinNumber)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[resource]; - if (!(pwm8->enabled)) { - // Slice not yet initialized - XMC_CCU8_SLICE_COMPARE_CONFIG_t pwm_config; - memset(&pwm_config, 0, sizeof(XMC_CCU8_SLICE_COMPARE_CONFIG_t)); - pwm_config.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; - pwm_config.prescaler_initval = pwm8->prescaler; - XMC_CCU8_Init(pwm8->ccu, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU8_SLICE_CompareInit(pwm8->slice, &pwm_config); - XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); - XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, pwm8->period_timer_val); - pwm8->enabled = ENABLED; - } - if (value != 0) - compare_reg = ((value + 1) * (pwm8->period_timer_val + 1)) >> _writeResolution; - XMC_CCU8_SLICE_SetTimerCompareMatch(pwm8->slice, pwm8->slice_channel, compare_reg); - XMC_CCU8_EnableShadowTransfer(pwm8->ccu, CCU8_GCSS_S0SE_Msk << (4 * pwm8->slice_num)); - XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, - XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode); - XMC_CCU8_SLICE_StartTimer(pwm8->slice); - return; - } -#endif -#ifdef DAC - // Check if the pin supports DAC - else if ((resource = scan_map_table(mapping_pin_DAC, pinNumber)) >= 0) { - XMC_ARD_DAC_t *dac = &(mapping_dac[resource]); - XMC_DAC_Enable(dac->group); - XMC_DAC_CH_EnableOutput(dac->group, dac->channel); - XMC_DAC_CH_StartSingleValueMode(dac->group, dac->channel); - uint16_t dacValue = - map(value, 0, (0b10 << _writeResolution) - 1, 0, (0b10 << dac->resolution) - 1); - XMC_DAC_CH_Write(dac->group, dac->channel, dacValue); - return; - } -#endif - // If not found, do nothing - return; -} - -#ifdef __cplusplus -} -#endif -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/cores/xmc/wiring_analog.cpp b/cores/xmc/wiring_analog.cpp new file mode 100644 index 00000000..e3533667 --- /dev/null +++ b/cores/xmc/wiring_analog.cpp @@ -0,0 +1,263 @@ +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "Arduino.h" +#include +//**************************************************************************** +// @Defines +//**************************************************************************** +#define ADC_CONVERSION_GROUP 0 +#define ADC_MIN_RESOLUTION 8 +#define ADC_MAX_READ_RESOLUTION 12 +#define ANALOG_MAX_WRITE_RESOLUTION 16 + +//**************************************************************************** +// @Global Variables +//**************************************************************************** +static XMC_VADC_CHANNEL_REF_t analog_reference = XMC_VADC_CHANNEL_REF_INTREF; +static uint8_t _readResolution = 10; +static uint8_t _writeResolution = 8; +uint16_t _readMaximum = 1023; +uint16_t _writeMaximum = 255; + +static bool vadc_inited = false; + +int16_t scan_map_table(const uint8_t table[][2], uint8_t pin) { + int16_t i; + + i = 0; + while (table[i][0] != 255) { + if (table[i][0] == pin) + break; + i++; + } + if (table[i][0] != 255) + return table[i][1]; + return -1; +} + +/* Sets the ADC reference voltage type. For the current XMC board, only the default (internal + reference, Varef = Vdda) is available. Other reference modes are not supported and will be + ignored. This function is provided for API compatibility and future extension. +*/ +void analogReference(uint8_t mode) { + switch (mode) { + case DEFAULT: + analog_reference = XMC_VADC_CHANNEL_REF_INTREF; + break; + default: + // Invalid mode, do nothing + break; + } +} + +void analogWriteResolution(int res) { + if (res > ANALOG_MAX_WRITE_RESOLUTION) { + _writeResolution = ANALOG_MAX_WRITE_RESOLUTION; // Limit to maximum resolution + } else if (res < ADC_MIN_RESOLUTION) { + _writeResolution = ADC_MIN_RESOLUTION; // Limit to minimum resolution + } else { + _writeResolution = res; + } + _writeMaximum = (uint16_t)(((uint32_t)1U << _writeResolution) - 1); +} + +void analogWrite(pin_size_t pinNumber, int value) { + uint32_t compare_reg = 0; + int16_t resource; + if (value < 0 || value > _writeMaximum) + return; + // Check if the pin supports PWM4 + resource = scan_map_table(mapping_pin_PWM4, pinNumber); + if (resource >= 0) { + XMC_PWM4_t *pwm4 = &mapping_pwm4[resource]; + if (!(pwm4->enabled)) { + // Slice not yet initialized + XMC_CCU4_SLICE_COMPARE_CONFIG_t pwm_config; + memset(&pwm_config, 0, sizeof(XMC_CCU4_SLICE_COMPARE_CONFIG_t)); + pwm_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.prescaler_initval = pwm4->prescaler; + XMC_CCU4_Init(pwm4->ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU4_SLICE_CompareInit(pwm4->slice, &pwm_config); + XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); + XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, pwm4->period_timer_val); + pwm4->enabled = ENABLED; + } + if (value != 0) + compare_reg = ((value + 1) * (pwm4->period_timer_val + 1)) >> _writeResolution; + XMC_CCU4_SLICE_SetTimerCompareMatch(pwm4->slice, compare_reg); + XMC_CCU4_EnableShadowTransfer(pwm4->ccu, (CCU4_GCSS_S0SE_Msk << (4 * pwm4->slice_num))); + XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, + (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); + XMC_CCU4_SLICE_StartTimer(pwm4->slice); + + return; + } +#if defined(CCU8V2) || defined(CCU8V1) + // Check if the pin supports PWM8 + else if ((resource = scan_map_table(mapping_pin_PWM8, pinNumber)) >= 0) { + XMC_PWM8_t *pwm8 = &mapping_pwm8[resource]; + if (!(pwm8->enabled)) { + // Slice not yet initialized + XMC_CCU8_SLICE_COMPARE_CONFIG_t pwm_config; + memset(&pwm_config, 0, sizeof(XMC_CCU8_SLICE_COMPARE_CONFIG_t)); + pwm_config.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_HIGH; + pwm_config.prescaler_initval = pwm8->prescaler; + XMC_CCU8_Init(pwm8->ccu, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU8_SLICE_CompareInit(pwm8->slice, &pwm_config); + XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); + XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, pwm8->period_timer_val); + pwm8->enabled = ENABLED; + } + if (value != 0) + compare_reg = ((value + 1) * (pwm8->period_timer_val + 1)) >> _writeResolution; + XMC_CCU8_SLICE_SetTimerCompareMatch(pwm8->slice, pwm8->slice_channel, compare_reg); + XMC_CCU8_EnableShadowTransfer(pwm8->ccu, CCU8_GCSS_S0SE_Msk << (4 * pwm8->slice_num)); + XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, + (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); + XMC_CCU8_SLICE_StartTimer(pwm8->slice); + return; + } +#endif +#ifdef DAC + // Check if the pin supports DAC + else if ((resource = scan_map_table(mapping_pin_DAC, pinNumber)) >= 0) { + XMC_ARD_DAC_t *dac = &(mapping_dac[resource]); + XMC_DAC_Enable(dac->group); + XMC_DAC_CH_EnableOutput(dac->group, dac->channel); + XMC_DAC_CH_StartSingleValueMode(dac->group, dac->channel); + uint16_t dacValue = + map(value, 0, (0b10 << _writeResolution) - 1, 0, (0b10 << dac->resolution) - 1); + XMC_DAC_CH_Write(dac->group, dac->channel, dacValue); + return; + } +#endif + // If not found, do nothing + return; +} + +void wiring_analog_init(void) { + if (vadc_inited) + return; + vadc_inited = true; + /* Initialization data of VADC Global resources */ + XMC_VADC_GLOBAL_CONFIG_t vadc_global_config; + memset(&vadc_global_config, 0, sizeof(XMC_VADC_GLOBAL_CONFIG_t)); + vadc_global_config.class0.conversion_mode_standard = XMC_VADC_CONVMODE_12BIT; + vadc_global_config.class1.conversion_mode_standard = XMC_VADC_CONVMODE_12BIT; + + XMC_VADC_BACKGROUND_CONFIG_t vadc_background_config = {0}; + + /* Provide clock to VADC and initialize the VADC global registers. */ + XMC_VADC_GLOBAL_Init(VADC, &vadc_global_config); + +#if (XMC_VADC_GROUP_AVAILABLE == 1U) + // ADC grouping + XMC_VADC_GROUP_CONFIG_t vadc_group_config; + memset(&vadc_group_config, 0, sizeof(XMC_VADC_GROUP_CONFIG_t)); + vadc_group_config.class0.conversion_mode_standard = XMC_VADC_CONVMODE_12BIT; + vadc_group_config.class1.conversion_mode_standard = XMC_VADC_CONVMODE_12BIT; + + /* Initialize Group */ + XMC_VADC_GROUP_Init(VADC_G0, &vadc_group_config); + XMC_VADC_GROUP_Init(VADC_G1, &vadc_group_config); + + /* Switch on the converter of the Group*/ + XMC_VADC_GROUP_SetPowerMode(VADC_G0, XMC_VADC_GROUP_POWERMODE_NORMAL); + XMC_VADC_GROUP_SetPowerMode(VADC_G1, XMC_VADC_GROUP_POWERMODE_NORMAL); + + #if (XMC_VADC_MAXIMUM_NUM_GROUPS > 2) + /* Initialize Group */ + XMC_VADC_GROUP_Init(VADC_G2, &vadc_group_config); + XMC_VADC_GROUP_Init(VADC_G3, &vadc_group_config); + + /* Switch on the converter of the Group*/ + XMC_VADC_GROUP_SetPowerMode(VADC_G2, XMC_VADC_GROUP_POWERMODE_NORMAL); + XMC_VADC_GROUP_SetPowerMode(VADC_G3, XMC_VADC_GROUP_POWERMODE_NORMAL); + #endif + +#endif + /* Calibrate the VADC. Make sure you do this after all used VADC groups + are set to normal operation mode. */ + XMC_VADC_GLOBAL_StartupCalibration(VADC); + + /* Initialize the background source hardware. The gating mode is set to + ignore to pass external triggers unconditionally.*/ + XMC_VADC_GLOBAL_BackgroundInit(VADC, &vadc_background_config); + + /* PC Mar-2019 + Dummy read of ALL analogue inputs to ensure ALL analogue channels are + started in background scanning mode, otherwise first readings at least + will always be zero on reading an analogue input. */ + for (uint8_t chan = 0; chan < NUM_ANALOG_INPUTS; chan++) + analogRead(chan); + + // Additional Initialization of DAC starting here +} + +void analogReadResolution(int res) { + if (res > ADC_MAX_READ_RESOLUTION) { + _readResolution = ADC_MAX_READ_RESOLUTION; // Limit to maximum resolution + } else if (res < ADC_MIN_RESOLUTION) { + _readResolution = ADC_MIN_RESOLUTION; // Limit to minimum resolution + } else { + _readResolution = res; + } + _readMaximum = (uint16_t)(((uint32_t)1U << _readResolution) - 1); +} + +/* analogRead takes parameter of ADC channel number + return 0xFFFFFFFF for invalid channel */ +int analogRead(pin_size_t pinNumber) { + + wiring_analog_init(); + uint32_t value; + + value = 0xFFFFFFFF; + if (pinNumber < NUM_ANALOG_INPUTS) { + XMC_ADC_t *adc = &mapping_adc[pinNumber]; + +#if (XMC_VADC_GROUP_AVAILABLE == 1U) + // ADC grouping + if (!(adc->enabled)) { + XMC_VADC_CHANNEL_CONFIG_t vadc_gobal_channel_config; + memset(&vadc_gobal_channel_config, 0, sizeof(XMC_VADC_CHANNEL_CONFIG_t)); + vadc_gobal_channel_config.input_class = XMC_VADC_CHANNEL_CONV_GROUP_CLASS1; + vadc_gobal_channel_config.result_reg_number = adc->result_reg_num; + vadc_gobal_channel_config.alias_channel = XMC_VADC_CHANNEL_ALIAS_DISABLED; + + XMC_VADC_RESULT_CONFIG_t vadc_gobal_result_config = {.g_rcr = 0}; + /* Configure a channel belonging to the aforesaid conversion kernel */ + XMC_VADC_GROUP_ChannelInit(adc->group, adc->channel_num, &vadc_gobal_channel_config); + /* Configure a result resource belonging to the aforesaid conversion kernel */ + XMC_VADC_GROUP_ResultInit(adc->group, adc->result_reg_num, &vadc_gobal_result_config); + /* Add channel into the Background Request Source Channel Select Register */ + XMC_VADC_GLOBAL_BackgroundAddChannelToSequence(VADC, (uint32_t)adc->group_num, + (uint32_t)adc->channel_num); + } + /* Start conversion manually using load event trigger*/ + XMC_VADC_GLOBAL_BackgroundTriggerConversion(VADC); + value = XMC_VADC_GROUP_GetResult(adc->group, adc->result_reg_num); +#else + // XMC1100 no ADC grouping + if (!(adc->enabled)) + /* Add a channel to the background source. */ + VADC->BRSSEL[ADC_CONVERSION_GROUP] = (uint32_t)(1U << adc->channel_num); + // Generates conversion request + XMC_VADC_GLOBAL_BackgroundTriggerConversion(VADC); + + // Wait until conversion is ready + while (((value = XMC_VADC_GLOBAL_GetDetailedResult(VADC)) & VADC_GLOBRES_VF_Msk) == 0u) + ; +#endif + value = ((value & VADC_GLOBRES_RESULT_Msk) >> (ADC_MAX_READ_RESOLUTION - _readResolution)); + } + return value; +} + +//**************************************************************************** +// END OF FILE +//**************************************************************************** From 29766948066bdcc834e58cc031cfca4bb5088e04 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 10 Jun 2025 17:16:38 +0200 Subject: [PATCH 063/366] tests/test_config.h: Update for analogio tests. Signed-off-by: zhanglinjing --- tests/test_config.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index 070acc4f..cd5bd23a 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -13,7 +13,17 @@ #include // Test Pin Definitions -#define TEST_PIN_DIGITAL_IO_OUTPUT 2 // IO_4 -#define TEST_PIN_DIGITAL_IO_INPUT 3 // IO_3 +#define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 +#define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 #define TEST_PIN_SYNC_IO 4 // IO_1 -#endif // TEST_CONFIG_H \ No newline at end of file + +#define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz +#define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd +#define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider +#define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground +#define TEST_ADC_RESOLUTION 1023 // ADC resolution + +#define TEST_PIN_ANALOG_IO_DAC 53 +#define TEST_PIN_ANALOG_IO_DAC_INPUT A3 + +#endif // TEST_CONFIG_H \ No newline at end of file From 0f4230faa0367a679083e1f3b8bfefcc0187b6c0 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 10 Jun 2025 17:30:10 +0200 Subject: [PATCH 064/366] arduino-core-tests: Update to main. Signed-off-by: zhanglinjing --- tests/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/arduino-core-tests b/tests/arduino-core-tests index cf781104..cdc55ea5 160000 --- a/tests/arduino-core-tests +++ b/tests/arduino-core-tests @@ -1 +1 @@ -Subproject commit cf78110475f4fb10c03c7bf2a65be10a91476a1b +Subproject commit cdc55ea527e6a123145d063eccb3b13421d80ad1 From fc8d9b24c16ea0530f0df3db501d26cdfb4ff631 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 12 Jun 2025 16:19:47 +0200 Subject: [PATCH 065/366] cores/xmc: Improve macro defines for analogIO. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 5 +---- cores/xmc/wiring_analog.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 9590291a..274097dc 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -74,10 +74,7 @@ extern "C" { #define interrupts() __enable_irq() #define noInterrupts() __disable_irq() -#define DEFAULT XMC_VADC_CHANNEL_REF_INTREF - -#define ENABLED 1 -#define DISABLED 0 +#define XMC_DEFAULT XMC_VADC_CHANNEL_REF_INTREF /*< Default ADC reference voltage type */ //**************************************************************************** // @Typedefs diff --git a/cores/xmc/wiring_analog.cpp b/cores/xmc/wiring_analog.cpp index e3533667..a0427b95 100644 --- a/cores/xmc/wiring_analog.cpp +++ b/cores/xmc/wiring_analog.cpp @@ -14,7 +14,7 @@ //**************************************************************************** // @Global Variables //**************************************************************************** -static XMC_VADC_CHANNEL_REF_t analog_reference = XMC_VADC_CHANNEL_REF_INTREF; +static XMC_VADC_CHANNEL_REF_t analog_reference = XMC_DEFAULT; static uint8_t _readResolution = 10; static uint8_t _writeResolution = 8; uint16_t _readMaximum = 1023; @@ -42,7 +42,7 @@ int16_t scan_map_table(const uint8_t table[][2], uint8_t pin) { */ void analogReference(uint8_t mode) { switch (mode) { - case DEFAULT: + case XMC_DEFAULT: analog_reference = XMC_VADC_CHANNEL_REF_INTREF; break; default: @@ -81,7 +81,7 @@ void analogWrite(pin_size_t pinNumber, int value) { XMC_CCU4_SLICE_CompareInit(pwm4->slice, &pwm_config); XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, pwm4->period_timer_val); - pwm4->enabled = ENABLED; + pwm4->enabled = true; } if (value != 0) compare_reg = ((value + 1) * (pwm4->period_timer_val + 1)) >> _writeResolution; @@ -110,7 +110,7 @@ void analogWrite(pin_size_t pinNumber, int value) { XMC_CCU8_SLICE_CompareInit(pwm8->slice, &pwm_config); XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, pwm8->period_timer_val); - pwm8->enabled = ENABLED; + pwm8->enabled = true; } if (value != 0) compare_reg = ((value + 1) * (pwm8->period_timer_val + 1)) >> _writeResolution; From 8e0c5b0f9cd2a4bb9858bffccdcac6825516ff11 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 12 Jun 2025 16:20:46 +0200 Subject: [PATCH 066/366] variants: Change all ENABLED and DISABLED macro to false and true. Signed-off-by: zhanglinjing --- .../config/XMC1100_Boot_Kit/pins_arduino.h | 19 +++--- .../config/XMC1100_XMC2GO/pins_arduino.h | 11 ++- .../config/XMC1300_Boot_Kit/pins_arduino.h | 32 ++++----- .../config/XMC1400_Arduino_Kit/pins_arduino.h | 32 ++++----- .../config/XMC1400_XMC2GO/pins_arduino.h | 26 +++---- .../config/XMC4200_Platform2GO/pins_arduino.h | 30 ++++---- .../config/XMC4400_Platform2GO/pins_arduino.h | 50 +++++++------- .../config/XMC4700_Relax_Kit/pins_arduino.h | 68 +++++++++---------- 8 files changed, 133 insertions(+), 135 deletions(-) diff --git a/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h b/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h index 7d0cfd7c..46319914 100644 --- a/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h +++ b/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h @@ -192,27 +192,26 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, {4, 1}, {6, 2}, {9, 3}, /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC40, 0, mapping_port_pin[3], P0_0_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P0.0 + PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P0.0 {CCU40, CCU40_CC41, 1, mapping_port_pin[4], P0_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 4 P0.1 + PWM4_TIMER_PERIOD, false}, // PWM disabled 4 P0.1 {CCU40, CCU40_CC43, 3, mapping_port_pin[6], P0_3_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 6 P0.3 + PWM4_TIMER_PERIOD, false}, // PWM disabled 6 P0.3 {CCU40, CCU40_CC42, 2, mapping_port_pin[9], P0_8_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 9 P0.8 + PWM4_TIMER_PERIOD, false}, // PWM disabled 9 P0.8 {CCU40, CCU40_CC43, 3, mapping_port_pin[10], P0_9_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 10 P0.9 + PWM4_TIMER_PERIOD, false}, // PWM disabled 10 P0.9 {CCU40, CCU40_CC41, 1, mapping_port_pin[11], P1_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 11 P1.1 + PWM4_TIMER_PERIOD, false}, // PWM disabled 11 P1.1 {CCU40, CCU40_CC42, 2, mapping_port_pin[20], P2_10_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 20 P2.10 + PWM4_TIMER_PERIOD, false} // PWM disabled 20 P2.10 }; const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); /* Analog Pin mappings and configurations */ -XMC_ADC_t mapping_adc[] = {{VADC, 0, DISABLED}, {VADC, 1, DISABLED}, {VADC, 2, DISABLED}, - {VADC, 3, DISABLED}, {VADC, 4, DISABLED}, {VADC, 7, DISABLED}, - {VADC, 5, DISABLED}, {VADC, 6, DISABLED}}; +XMC_ADC_t mapping_adc[] = {{VADC, 0, false}, {VADC, 1, false}, {VADC, 2, false}, {VADC, 3, false}, + {VADC, 4, false}, {VADC, 7, false}, {VADC, 5, false}, {VADC, 6, false}}; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); /* First UART channel pins are swapped between debug and normal use */ diff --git a/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h b/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h index ac4ddc4a..efcf47c6 100644 --- a/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h +++ b/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h @@ -147,20 +147,19 @@ const uint8_t mapping_pin_PWM4[][2] = {{8, 0}, {1, 1}, {2, 2}, {3, 3}, {255, 255 /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC40, 0, mapping_port_pin[8], P0_5_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 8 P0.5 + PWM4_TIMER_PERIOD, false}, // PWM disabled 8 P0.5 {CCU40, CCU40_CC41, 1, mapping_port_pin[1], P0_7_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 1 P0.7 + PWM4_TIMER_PERIOD, false}, // PWM disabled 1 P0.7 {CCU40, CCU40_CC42, 2, mapping_port_pin[2], P0_8_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 2 P0.8 + PWM4_TIMER_PERIOD, false}, // PWM disabled 2 P0.8 {CCU40, CCU40_CC43, 3, mapping_port_pin[3], P0_9_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 3 P0.9 + PWM4_TIMER_PERIOD, false} // PWM disabled 3 P0.9 }; const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); /* Analog Pin mappings and configurations */ -XMC_ADC_t mapping_adc[] = { - {VADC, 1, DISABLED}, {VADC, 2, DISABLED}, {VADC, 3, DISABLED}, {VADC, 4, DISABLED}}; +XMC_ADC_t mapping_adc[] = {{VADC, 1, false}, {VADC, 2, false}, {VADC, 3, false}, {VADC, 4, false}}; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); /* First UART channel pins are swapped between debug and normal use */ diff --git a/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h b/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h index 2fbcf4be..1aec712b 100755 --- a/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h +++ b/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h @@ -180,9 +180,9 @@ const uint8_t mapping_pin_PWM4[][2] = {{31, 0}, {26, 1}, {255, 255}}; /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC41, 1, mapping_port_pin[31], P0_4_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 31 P0.4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 31 P0.4 {CCU40, CCU40_CC42, 2, mapping_port_pin[26], P0_2_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 26 P0.2 + PWM4_TIMER_PERIOD, false} // PWM disabled 26 P0.2 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -193,29 +193,29 @@ const uint8_t mapping_pin_PWM8[][2] = {{32, 0}, {33, 1}, {255, 255}}; XMC_PWM8_t mapping_pwm8[] = { {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[32], P0_5_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 32 P0.5 + false}, // PWM disabled 32 P0.5 {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[33], P0_3_AF_CCU80_OUT03, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED} // PWM disabled 33 P0.3 + false} // PWM disabled 33 P0.3 }; const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)) + (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); /* Analog Pin mappings and configurations */ -XMC_ADC_t mapping_adc[] = {{VADC, 6, VADC_G1, 1, 4, DISABLED}, - {VADC, 7, VADC_G1, 1, 11, DISABLED}, - {VADC, 0, VADC_G0, 0, 9, DISABLED}, - {VADC, 1, VADC_G1, 1, 12, DISABLED}, - {VADC, 1, VADC_G0, 0, 10, DISABLED}, - {VADC, 2, VADC_G0, 0, 7, DISABLED}, +XMC_ADC_t mapping_adc[] = {{VADC, 6, VADC_G1, 1, 4, false}, + {VADC, 7, VADC_G1, 1, 11, false}, + {VADC, 0, VADC_G0, 0, 9, false}, + {VADC, 1, VADC_G1, 1, 12, false}, + {VADC, 1, VADC_G0, 0, 10, false}, + {VADC, 2, VADC_G0, 0, 7, false}, // Additional channels added here - {VADC, 3, VADC_G0, 0, 5, DISABLED}, - {VADC, 4, VADC_G0, 0, 1, DISABLED}, - {VADC, 5, VADC_G1, 1, 2, DISABLED}, - {VADC, 7, VADC_G0, 0, 3, DISABLED}, - {VADC, 6, VADC_G0, 0, 6, DISABLED}, - {VADC, 5, VADC_G0, 0, 8, DISABLED}}; + {VADC, 3, VADC_G0, 0, 5, false}, + {VADC, 4, VADC_G0, 0, 1, false}, + {VADC, 5, VADC_G1, 1, 2, false}, + {VADC, 7, VADC_G0, 0, 3, false}, + {VADC, 6, VADC_G0, 0, 6, false}, + {VADC, 5, VADC_G0, 0, 8, false}}; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); /* First UART channel pins are swapped between debug and normal use */ diff --git a/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h b/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h index f7e583ae..2475a163 100644 --- a/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h +++ b/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h @@ -185,17 +185,17 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, {4, 1}, {6, 2}, {9, 3}, /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC41, 1, mapping_port_pin[3], P1_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 4 {CCU40, CCU40_CC40, 0, mapping_port_pin[4], P1_0_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 4 {CCU41, CCU41_CC40, 0, mapping_port_pin[6], P0_6_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 4 {CCU40, CCU40_CC41, 1, mapping_port_pin[9], P0_7_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 4 {CCU40, CCU40_CC41, 1, mapping_port_pin[10], P0_4_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 4 {CCU40, CCU40_CC41, 1, mapping_port_pin[11], P0_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 4 + PWM4_TIMER_PERIOD, false} // PWM disabled 4 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -204,17 +204,17 @@ const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); /* Analog Pin mappings and configurations */ // ADC grouping for XMC 1400 series. XMC_ADC_t mapping_adc[] = { - {VADC, 0, VADC_G0, 0, 4, DISABLED}, // A0 - {VADC, 1, VADC_G0, 0, 11, DISABLED}, // A1 - {VADC, 2, VADC_G0, 0, 9, DISABLED}, // A2 - {VADC, 3, VADC_G0, 0, 12, DISABLED}, // A3 - {VADC, 6, VADC_G0, 0, 7, DISABLED}, // A4 - {VADC, 5, VADC_G0, 0, 10, DISABLED}, // A5 + {VADC, 0, VADC_G0, 0, 4, false}, // A0 + {VADC, 1, VADC_G0, 0, 11, false}, // A1 + {VADC, 2, VADC_G0, 0, 9, false}, // A2 + {VADC, 3, VADC_G0, 0, 12, false}, // A3 + {VADC, 6, VADC_G0, 0, 7, false}, // A4 + {VADC, 5, VADC_G0, 0, 10, false}, // A5 // Additional channels added here - {VADC, 4, VADC_G0, 0, 5, DISABLED}, // AUX 21 - {VADC, 1, VADC_G1, 1, 1, DISABLED}, // AUX 22 - {VADC, 7, VADC_G1, 1, 2, DISABLED}, // AUX 23 - {VADC, 7, VADC_G0, 0, 3, DISABLED} // AUX 24 + {VADC, 4, VADC_G0, 0, 5, false}, // AUX 21 + {VADC, 1, VADC_G1, 1, 1, false}, // AUX 22 + {VADC, 7, VADC_G1, 1, 2, false}, // AUX 23 + {VADC, 7, VADC_G0, 0, 3, false} // AUX 24 }; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); diff --git a/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h b/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h index 782b0fe3..78631adb 100644 --- a/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h +++ b/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h @@ -186,15 +186,15 @@ const uint8_t mapping_pin_PWM4[][2] = {{1, 0}, {2, 1}, {3, 2}, {8, 3}, {9, 4}, { /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC41, 1, mapping_port_pin[1], P0_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 1 P0.1 + PWM4_TIMER_PERIOD, false}, // PWM disabled 1 P0.1 {CCU40, CCU40_CC43, 3, mapping_port_pin[2], P0_3_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 2 P0.3 + PWM4_TIMER_PERIOD, false}, // PWM disabled 2 P0.3 {CCU40, CCU40_CC41, 1, mapping_port_pin[3], P0_4_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P0.4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P0.4 {CCU40, CCU40_CC40, 0, mapping_port_pin[8], P0_5_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 8 P0.5 + PWM4_TIMER_PERIOD, false}, // PWM disabled 8 P0.5 {CCU41, CCU41_CC40, 0, mapping_port_pin[9], P1_4_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 9 P1.4 + PWM4_TIMER_PERIOD, false} // PWM disabled 9 P1.4 }; const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -202,17 +202,17 @@ const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); /* Analog Pin mappings and configurations */ // XMC_ADC_t mapping_adc[] = // { -// { VADC, 1, DISABLED }, //A0 P2.8 -// { VADC, 2, DISABLED }, //A1 P2.9 -// { VADC, 3, DISABLED }, //A2 P2.10 -// { VADC, 4, DISABLED }, //A3 P2.11 +// { VADC, 1, false }, //A0 P2.8 +// { VADC, 2, false }, //A1 P2.9 +// { VADC, 3, false }, //A2 P2.10 +// { VADC, 4, false }, //A3 P2.11 // }; XMC_ADC_t mapping_adc[] = { - {VADC, 1, VADC_G0, 0, 1, DISABLED}, // A0 P2.8 - {VADC, 2, VADC_G0, 0, 2, DISABLED}, // A1 P2.9 - {VADC, 3, VADC_G0, 0, 3, DISABLED}, // A2 P2.10 - {VADC, 4, VADC_G0, 0, 4, DISABLED}, // A3 P2.11 + {VADC, 1, VADC_G0, 0, 1, false}, // A0 P2.8 + {VADC, 2, VADC_G0, 0, 2, false}, // A1 P2.9 + {VADC, 3, VADC_G0, 0, 3, false}, // A2 P2.10 + {VADC, 4, VADC_G0, 0, 4, false}, // A3 P2.11 }; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); diff --git a/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h b/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h index be7d0e27..da5b88c1 100644 --- a/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h +++ b/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h @@ -183,18 +183,18 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU41, CCU41_CC43, 3, mapping_port_pin[3], P2_2_AF_CCU41_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P2.2 + PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P2.2 {CCU41, CCU41_CC42, 2, mapping_port_pin[5], P2_3_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 5 P2.3 + PWM4_TIMER_PERIOD, false}, // PWM disabled 5 P2.3 {CCU41, CCU41_CC41, 1, mapping_port_pin[6], P2_4_AF_CCU41_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 6 P2.4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 6 P2.4 // additional pwm outputs starting here {CCU40, CCU40_CC42, 2, mapping_port_pin[22], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 22 P1.1 + PWM4_TIMER_PERIOD, false}, // PWM disabled 22 P1.1 {CCU40, CCU40_CC41, 1, mapping_port_pin[23], P1_2_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 23 P1.2 + PWM4_TIMER_PERIOD, false}, // PWM disabled 23 P1.2 {CCU40, CCU40_CC40, 0, mapping_port_pin[24], P1_3_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 24 P1.3 + PWM4_TIMER_PERIOD, false} // PWM disabled 24 P1.3 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -206,7 +206,7 @@ const uint8_t mapping_pin_PWM8[][2] = {{9, 0}, // PWM3 XMC_PWM8_t mapping_pwm8[] = { {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], P0_11_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED} // PWM disabled 9 P0.11 + false} // PWM disabled 9 P0.11 }; const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); const uint8_t NUM_PWM = @@ -223,15 +223,15 @@ const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)) XMC_ADC_t mapping_adc[] = { // Result reg numbers are now equal to channel numbers - {VADC, 0, VADC_G0, 0, 0, DISABLED}, // A0 - {VADC, 6, VADC_G0, 0, 1, DISABLED}, // A1 - {VADC, 7, VADC_G0, 0, 2, DISABLED}, // A2 - {VADC, 0, VADC_G1, 1, 0, DISABLED}, // A3 - {VADC, 4, VADC_G0, 0, 3, DISABLED}, // A4 - {VADC, 5, VADC_G0, 0, 4, DISABLED}, // A5 + {VADC, 0, VADC_G0, 0, 0, false}, // A0 + {VADC, 6, VADC_G0, 0, 1, false}, // A1 + {VADC, 7, VADC_G0, 0, 2, false}, // A2 + {VADC, 0, VADC_G1, 1, 0, false}, // A3 + {VADC, 4, VADC_G0, 0, 3, false}, // A4 + {VADC, 5, VADC_G0, 0, 4, false}, // A5 // Additional ADC channels starting here - {VADC, 6, VADC_G1, 1, 1, DISABLED}, // A6 - {VADC, 1, VADC_G1, 1, 2, DISABLED}, // A7 + {VADC, 6, VADC_G1, 1, 1, false}, // A6 + {VADC, 1, VADC_G1, 1, 2, false}, // A7 }; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); diff --git a/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h b/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h index 6da1215d..b90606c0 100644 --- a/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h +++ b/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h @@ -226,19 +226,19 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU42, CCU42_CC40, 0, mapping_port_pin[3], P3_6_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P3.6 + PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P3.6 {CCU42, CCU42_CC43, 3, mapping_port_pin[5], P3_3_AF_CCU42_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 5 P3.3 + PWM4_TIMER_PERIOD, false}, // PWM disabled 5 P3.3 {CCU42, CCU42_CC42, 2, mapping_port_pin[6], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 6 P3.4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 6 P3.4 {CCU41, CCU41_CC40, 0, mapping_port_pin[14], P2_5_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 14 P2.5 + PWM4_TIMER_PERIOD, false}, // PWM disabled 14 P2.5 {CCU41, CCU41_CC41, 1, mapping_port_pin[26], P2_4_AF_CCU41_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 26 P2.4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 26 P2.4 {CCU41, CCU41_CC42, 2, mapping_port_pin[27], P2_3_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 27 P2.3 + PWM4_TIMER_PERIOD, false}, // PWM disabled 27 P2.3 {CCU41, CCU41_CC43, 3, mapping_port_pin[28], P2_2_AF_CCU41_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 28 P2.2 + PWM4_TIMER_PERIOD, false}, // PWM disabled 28 P2.2 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -258,32 +258,32 @@ const uint8_t mapping_pin_PWM8[][2] = {{9, 0}, // PWM3 XMC_PWM8_t mapping_pwm8[] = { {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], P0_11_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 9 P0.11 + false}, // PWM disabled 9 P0.11 {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[10], P0_2_AF_CCU80_OUT01, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 10 P0.2 + false}, // PWM disabled 10 P0.2 // additional pwm outputs starting here {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[25], P2_8_AF_CCU80_OUT32, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 25 P2.8 + false}, // PWM disabled 25 P2.8 {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[29], P2_0_AF_CCU81_OUT21, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 29 P2.0 + false}, // PWM disabled 29 P2.0 {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[30], P2_6_AF_CCU80_OUT13, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 30 P2.6 + false}, // PWM disabled 30 P2.6 {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[45], P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 45 P5.7 + false}, // PWM disabled 45 P5.7 {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[46], P2_7_AF_CCU80_OUT03, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 46 P2.7 + false}, // PWM disabled 46 P2.7 {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[48], P2_9_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 48 P2.9 + false}, // PWM disabled 48 P2.9 {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[67], P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED} // PWM disabled 67 P0.9 + false} // PWM disabled 67 P0.9 }; const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); @@ -301,15 +301,15 @@ const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)) // Result reg numbers are now equal to channel numbers XMC_ADC_t mapping_adc[] = { - {VADC, 0, VADC_G0, 0, 0, DISABLED}, {VADC, 1, VADC_G0, 0, 1, DISABLED}, - {VADC, 2, VADC_G1, 1, 2, DISABLED}, {VADC, 3, VADC_G1, 1, 3, DISABLED}, - {VADC, 0, VADC_G2, 2, 0, DISABLED}, {VADC, 1, VADC_G2, 2, 1, DISABLED}, - {VADC, 6, VADC_G2, 2, 6, DISABLED}, {VADC, 5, VADC_G2, 2, 5, DISABLED}, - {VADC, 3, VADC_G2, 2, 3, DISABLED}, {VADC, 7, VADC_G1, 1, 7, DISABLED}, - {VADC, 5, VADC_G1, 1, 5, DISABLED}, {VADC, 7, VADC_G0, 0, 7, DISABLED}, - {VADC, 7, VADC_G3, 3, 7, DISABLED}, {VADC, 1, VADC_G1, 1, 1, DISABLED}, - {VADC, 0, VADC_G1, 1, 0, DISABLED}, {VADC, 6, VADC_G3, 3, 6, DISABLED}, - {VADC, 6, VADC_G0, 0, 6, DISABLED}, {VADC, 4, VADC_G1, 1, 4, DISABLED}, + {VADC, 0, VADC_G0, 0, 0, false}, {VADC, 1, VADC_G0, 0, 1, false}, + {VADC, 2, VADC_G1, 1, 2, false}, {VADC, 3, VADC_G1, 1, 3, false}, + {VADC, 0, VADC_G2, 2, 0, false}, {VADC, 1, VADC_G2, 2, 1, false}, + {VADC, 6, VADC_G2, 2, 6, false}, {VADC, 5, VADC_G2, 2, 5, false}, + {VADC, 3, VADC_G2, 2, 3, false}, {VADC, 7, VADC_G1, 1, 7, false}, + {VADC, 5, VADC_G1, 1, 5, false}, {VADC, 7, VADC_G0, 0, 7, false}, + {VADC, 7, VADC_G3, 3, 7, false}, {VADC, 1, VADC_G1, 1, 1, false}, + {VADC, 0, VADC_G1, 1, 0, false}, {VADC, 6, VADC_G3, 3, 6, false}, + {VADC, 6, VADC_G0, 0, 6, false}, {VADC, 4, VADC_G1, 1, 4, false}, }; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index cc082c4a..a75d6e61 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -285,27 +285,27 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC42, 2, mapping_port_pin[3], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 3 P1.1 + PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P1.1 {CCU41, CCU41_CC40, 0, mapping_port_pin[10], P3_10_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 10 P3.10 + PWM4_TIMER_PERIOD, false}, // PWM disabled 10 P3.10 {CCU41, CCU41_CC42, 2, mapping_port_pin[11], P3_8_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 11 P3.8 + PWM4_TIMER_PERIOD, false}, // PWM disabled 11 P3.8 {CCU40, CCU40_CC40, 0, mapping_port_pin[93], P0_15_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 93 P0.15 + PWM4_TIMER_PERIOD, false}, // PWM disabled 93 P0.15 {CCU40, CCU40_CC41, 1, mapping_port_pin[70], P0_14_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 70 P0.14 + PWM4_TIMER_PERIOD, false}, // PWM disabled 70 P0.14 {CCU40, CCU40_CC43, 3, mapping_port_pin[94], P0_12_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 94 P0.12 + PWM4_TIMER_PERIOD, false}, // PWM disabled 94 P0.12 {CCU42, CCU42_CC40, 0, mapping_port_pin[61], P3_0_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 61 P3.0 + PWM4_TIMER_PERIOD, false}, // PWM disabled 61 P3.0 {CCU42, CCU42_CC42, 2, mapping_port_pin[34], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 34 P3.4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 34 P3.4 {CCU43, CCU43_CC40, 0, mapping_port_pin[76], P6_5_AF_CCU43_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 76 P6.5 + PWM4_TIMER_PERIOD, false}, // PWM disabled 76 P6.5 {CCU43, CCU43_CC41, 1, mapping_port_pin[88], P6_4_AF_CCU43_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED}, // PWM disabled 88 P6.4 + PWM4_TIMER_PERIOD, false}, // PWM disabled 88 P6.4 {CCU43, CCU43_CC43, 3, mapping_port_pin[89], P6_2_AF_CCU43_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, DISABLED} // PWM disabled 89 P6.2 + PWM4_TIMER_PERIOD, false} // PWM disabled 89 P6.2 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -328,40 +328,40 @@ const uint8_t mapping_pin_PWM8[][2] = {{5, 0}, // PWM1 XMC_PWM8_t mapping_pwm8[] = { {CCU81, CCU81_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[5], P2_12_AF_CCU81_OUT33, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 5 P2.12 + false}, // PWM disabled 5 P2.12 {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[6], P2_11_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 6 P2.11 + false}, // PWM disabled 6 P2.11 {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], P1_11_AF_CCU81_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 9 P1.11 + false}, // PWM disabled 9 P1.11 {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[51], P5_11_AF_CCU80_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 51 P5.11 + false}, // PWM disabled 51 P5.11 {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[37], P0_1_AF_CCU80_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 37 P0.1 + false}, // PWM disabled 37 P0.1 {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[62], P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 62 P0.9 + false}, // PWM disabled 62 P0.9 {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[36], P0_3_AF_CCU80_OUT20, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 36 P0.3 + false}, // PWM disabled 36 P0.3 {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[66], P0_6_AF_CCU80_OUT30, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 66 P0.6 + false}, // PWM disabled 66 P0.6 {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[77], P1_15_AF_CCU81_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 77 P1.15 + false}, // PWM disabled 77 P1.15 {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[81], P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 81 P5.7 + false}, // PWM disabled 81 P5.7 {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[80], P5_5_AF_CCU81_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED}, // PWM disabled 80 P5.5 + false}, // PWM disabled 80 P5.5 {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[79], P5_3_AF_CCU81_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, - DISABLED} // PWM disabled 79 P5.3 + false} // PWM disabled 79 P5.3 }; const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); const uint8_t NUM_PWM = @@ -375,17 +375,17 @@ const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)) #endif // Result reg numbers are now equal to channel numbers -XMC_ADC_t mapping_adc[] = {{VADC, 0, VADC_G0, 0, 0, DISABLED}, {VADC, 1, VADC_G0, 0, 1, DISABLED}, - {VADC, 2, VADC_G1, 1, 2, DISABLED}, {VADC, 3, VADC_G1, 1, 3, DISABLED}, - {VADC, 0, VADC_G2, 2, 0, DISABLED}, {VADC, 1, VADC_G2, 2, 1, DISABLED}, - {VADC, 6, VADC_G2, 2, 6, DISABLED}, {VADC, 5, VADC_G2, 2, 5, DISABLED}, - {VADC, 3, VADC_G2, 2, 3, DISABLED}, {VADC, 7, VADC_G1, 1, 7, DISABLED}, - {VADC, 5, VADC_G1, 1, 5, DISABLED}, {VADC, 7, VADC_G0, 0, 7, DISABLED}, - {VADC, 7, VADC_G3, 3, 7, DISABLED}, {VADC, 1, VADC_G1, 1, 1, DISABLED}, - {VADC, 0, VADC_G1, 1, 0, DISABLED}, {VADC, 6, VADC_G3, 3, 6, DISABLED}, - {VADC, 6, VADC_G0, 0, 6, DISABLED}, {VADC, 4, VADC_G1, 1, 4, DISABLED}, - {VADC, 6, VADC_G1, 1, 6, DISABLED}, {VADC, 2, VADC_G2, 2, 2, DISABLED}, - {VADC, 4, VADC_G2, 2, 4, DISABLED}, {VADC, 7, VADC_G2, 2, 7, DISABLED}}; +XMC_ADC_t mapping_adc[] = {{VADC, 0, VADC_G0, 0, 0, false}, {VADC, 1, VADC_G0, 0, 1, false}, + {VADC, 2, VADC_G1, 1, 2, false}, {VADC, 3, VADC_G1, 1, 3, false}, + {VADC, 0, VADC_G2, 2, 0, false}, {VADC, 1, VADC_G2, 2, 1, false}, + {VADC, 6, VADC_G2, 2, 6, false}, {VADC, 5, VADC_G2, 2, 5, false}, + {VADC, 3, VADC_G2, 2, 3, false}, {VADC, 7, VADC_G1, 1, 7, false}, + {VADC, 5, VADC_G1, 1, 5, false}, {VADC, 7, VADC_G0, 0, 7, false}, + {VADC, 7, VADC_G3, 3, 7, false}, {VADC, 1, VADC_G1, 1, 1, false}, + {VADC, 0, VADC_G1, 1, 0, false}, {VADC, 6, VADC_G3, 3, 6, false}, + {VADC, 6, VADC_G0, 0, 6, false}, {VADC, 4, VADC_G1, 1, 4, false}, + {VADC, 6, VADC_G1, 1, 6, false}, {VADC, 2, VADC_G2, 2, 2, false}, + {VADC, 4, VADC_G2, 2, 4, false}, {VADC, 7, VADC_G2, 2, 7, false}}; const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); XMC_UART_t XMC_UART_0 = { From 1bab8b7f947795e8094e42aa75b9b942f59c3d9e Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 13 Jun 2025 14:43:30 +0200 Subject: [PATCH 067/366] cores/xmc: Clean up analog module. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 2 +- cores/xmc/wiring_analog.cpp | 59 ++++++++++++++++++++++++------------- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 274097dc..713cb187 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -74,7 +74,7 @@ extern "C" { #define interrupts() __enable_irq() #define noInterrupts() __disable_irq() -#define XMC_DEFAULT XMC_VADC_CHANNEL_REF_INTREF /*< Default ADC reference voltage type */ +#define DEFAULT XMC_VADC_CHANNEL_REF_INTREF /*< Default ADC reference voltage type */ //**************************************************************************** // @Typedefs diff --git a/cores/xmc/wiring_analog.cpp b/cores/xmc/wiring_analog.cpp index a0427b95..ed09074d 100644 --- a/cores/xmc/wiring_analog.cpp +++ b/cores/xmc/wiring_analog.cpp @@ -1,8 +1,9 @@ //**************************************************************************** -// @Project Includes +// @File: wiring_analog.cpp +// @Brief: Analog and PWM/DAC API implementation for XMC Arduino core //**************************************************************************** #include "Arduino.h" -#include + //**************************************************************************** // @Defines //**************************************************************************** @@ -14,18 +15,19 @@ //**************************************************************************** // @Global Variables //**************************************************************************** -static XMC_VADC_CHANNEL_REF_t analog_reference = XMC_DEFAULT; +static XMC_VADC_CHANNEL_REF_t analog_reference = DEFAULT; static uint8_t _readResolution = 10; static uint8_t _writeResolution = 8; uint16_t _readMaximum = 1023; uint16_t _writeMaximum = 255; - static bool vadc_inited = false; +//**************************************************************************** +// @Function: scan_map_table +// @Brief: Lookup table for pin to resource mapping +//**************************************************************************** int16_t scan_map_table(const uint8_t table[][2], uint8_t pin) { - int16_t i; - - i = 0; + int16_t i = 0; while (table[i][0] != 255) { if (table[i][0] == pin) break; @@ -36,13 +38,13 @@ int16_t scan_map_table(const uint8_t table[][2], uint8_t pin) { return -1; } -/* Sets the ADC reference voltage type. For the current XMC board, only the default (internal - reference, Varef = Vdda) is available. Other reference modes are not supported and will be - ignored. This function is provided for API compatibility and future extension. -*/ +//**************************************************************************** +// @Function: analogReference +// @Brief: Sets the ADC reference voltage type. Only default (Varef = Vdda) is available. +//**************************************************************************** void analogReference(uint8_t mode) { switch (mode) { - case XMC_DEFAULT: + case DEFAULT: analog_reference = XMC_VADC_CHANNEL_REF_INTREF; break; default: @@ -51,17 +53,25 @@ void analogReference(uint8_t mode) { } } +//**************************************************************************** +// @Function: analogWriteResolution +// @Brief: Sets the resolution for analogWrite (PWM/DAC) +//**************************************************************************** void analogWriteResolution(int res) { if (res > ANALOG_MAX_WRITE_RESOLUTION) { - _writeResolution = ANALOG_MAX_WRITE_RESOLUTION; // Limit to maximum resolution + _writeResolution = ANALOG_MAX_WRITE_RESOLUTION; } else if (res < ADC_MIN_RESOLUTION) { - _writeResolution = ADC_MIN_RESOLUTION; // Limit to minimum resolution + _writeResolution = ADC_MIN_RESOLUTION; } else { _writeResolution = res; } _writeMaximum = (uint16_t)(((uint32_t)1U << _writeResolution) - 1); } +//**************************************************************************** +// @Function: analogWrite +// @Brief: Outputs PWM or DAC value to the specified pin +//**************************************************************************** void analogWrite(pin_size_t pinNumber, int value) { uint32_t compare_reg = 0; int16_t resource; @@ -139,6 +149,10 @@ void analogWrite(pin_size_t pinNumber, int value) { return; } +//**************************************************************************** +// @Function: wiring_analog_init +// @Brief: Initializes VADC and related analog resources (runs only once) +//**************************************************************************** void wiring_analog_init(void) { if (vadc_inited) return; @@ -188,8 +202,7 @@ void wiring_analog_init(void) { ignore to pass external triggers unconditionally.*/ XMC_VADC_GLOBAL_BackgroundInit(VADC, &vadc_background_config); - /* PC Mar-2019 - Dummy read of ALL analogue inputs to ensure ALL analogue channels are + /* Dummy read of ALL analogue inputs to ensure ALL analogue channels are started in background scanning mode, otherwise first readings at least will always be zero on reading an analogue input. */ for (uint8_t chan = 0; chan < NUM_ANALOG_INPUTS; chan++) @@ -198,19 +211,25 @@ void wiring_analog_init(void) { // Additional Initialization of DAC starting here } +//**************************************************************************** +// @Function: analogReadResolution +// @Brief: Sets the resolution for analogRead (ADC) +//**************************************************************************** void analogReadResolution(int res) { if (res > ADC_MAX_READ_RESOLUTION) { - _readResolution = ADC_MAX_READ_RESOLUTION; // Limit to maximum resolution + _readResolution = ADC_MAX_READ_RESOLUTION; } else if (res < ADC_MIN_RESOLUTION) { - _readResolution = ADC_MIN_RESOLUTION; // Limit to minimum resolution + _readResolution = ADC_MIN_RESOLUTION; } else { _readResolution = res; } _readMaximum = (uint16_t)(((uint32_t)1U << _readResolution) - 1); } -/* analogRead takes parameter of ADC channel number - return 0xFFFFFFFF for invalid channel */ +//**************************************************************************** +// @Function: analogRead +// @Brief: Reads the analog value from the specified pin +//**************************************************************************** int analogRead(pin_size_t pinNumber) { wiring_analog_init(); From 42b1a155b469e323f530d3b7ea08d352f26a326b Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 13 Jun 2025 14:43:55 +0200 Subject: [PATCH 068/366] docs: Adding doc for analogIO. Signed-off-by: zhanglinjing --- docs/arduino-deviations.rst | 152 ++++++++---------------------------- 1 file changed, 31 insertions(+), 121 deletions(-) diff --git a/docs/arduino-deviations.rst b/docs/arduino-deviations.rst index 2d8e5f2e..cdc524c7 100644 --- a/docs/arduino-deviations.rst +++ b/docs/arduino-deviations.rst @@ -91,102 +91,21 @@ generate tones and at least one timer can interfere with other functions. However this does mean you can have more tone pins, just much lower frequency range. -Analog Functions and improvements +Analog Functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -wiring_analog after V1.2.1 ------------------------------ -Analog functions like analogRead and analogWrite etc. have changed after -V1.2.1 to have extra safety measures to ensure invalid settings cannot be -done and report errors. - -Additionally extra getter functions have been added so other libraries can -access the resolution of read and write functions as number of bits and -current maximum value possible. - - -Extra functions ---------------- - -These functions return the analogue resolution as number of bits - -* uint8_t getAnalogReadBits( ) - range 8 to 12 -* uint8_t getAnalogWriteBits( ) - range 8 to 16 - -These functions return the analogue resolution as its maximum value - -* uint16_t getAnalogReadMaximum( ) - range 255 to 4095 -* uint16_t getAnalogWriteMaximum( ) - range 255 to 65535 - -This function enables the analog amplifiers at the ADC inputs with -adjustible gain (for XMC1000 series) - -* uint32_t analogRead_variableGain( uint8_t channel, uint8_t gain_value ) - -The gain factor values can be found :ref:`here `. - - -Default Values +Resolution -------------- -Read resolution default is 10 bits (0 to 1023) - -Write resolution default is 8 bits (0 to 255) - - -Error and Return Codes by Function ----------------------------------- +Read resolution default is **10 bits (0 to 1023)** +You can set the read resolution to 8, 9, 10, 11 or 12 bits using the +:command:`analogReadResolution( bits )` function, where bits is the number of bits +you want to set the resolution to. -Where possible functions do :command:`NOT` action invalid parameters passed in. +Write resolution default is **8 bits (0 to 255)** +You can set the write resolution to 8, 9, 10, 11, 12, 13, 14, 15 or 16 bits using the +:command:`analogWriteResolution( bits )` function, where bits is the number of bits +you want to set the resolution to. -Functions return error codes or valid values so be sure which error -code you are looking for as some functions can return 0 as a valid -value (e.g. analogRead) so an out of range value is returned instead. - -.. list-table:: - :header-rows: 1 - - * - Function - - Valid Return - - Errors - * - analogReadResolution - - | 8 to 12 - | as passed in - - 255 - * - getAnalogReadBits - - 8 to 12 - - none - * - getanalogReadMaximum - - 255 to 4095 - - none - * - analogWriteResolution - - | 8 to 16 - | as passed in - - 255 - * - getAnalogWriteBits - - 8 to 16 - - none - * - getanalogWriteMaximum - - 255 to 65535 - - none - * - analogRead - - 0 to Maximum for Resolution - - | 0xFFFFFFFF usually - | invalid channel - * - analogWrite - - 0 success - - | -1 = invalid value - | -2 = wrong pin - * - setAnalogWriteFrequency - - 0 success - - | -1 = invalid frequency - | -2 = wrong pin - * - analogReference - - none - - NULL function see below - -This should enable checks in software for valid operation -and debugging problem code. AREF Analogue Reference ----------------------- @@ -195,50 +114,41 @@ On all boards the Analogue Reference is set to use the internal power supply (however noisy), so the AREF pin is an :command:`OUTPUT` of the AREF in use. Do :command:`NOT` connect any external voltage source to this pin, or use shields that change this voltage. +This pin :command:`CANNOT` be reassigned as GPIO (pinMode has no effect). -:command:`CAUTION` any shorts on this pin especially to 0V (GND) will bring +|:warning:| :command:`CAUTION` any shorts on this pin especially to 0V (GND) will bring down the supply of the chip. -The pin voltage is the current supply voltage to AREF for analogue conversions. +:command:`analogReference( )` -This pin :command:`CANNOT` be reassigned as GPIO (pinMode has no effect). +This function has only one defalut mode **DEFAULT** = 3.3V and will not match any call on parameters +passed in with other libraries or examples that use this call. Any shields and examples that try to +change this, will :command:`NOT` function +the same on these boards. -:command:`analogReference( )` +DAC Analog Output +----------------------- +:command:`analogWrite( )` -This function has NO operation and will not match any call on parameters -passed in with other libraries or examples that use this call. +This API usually Writes an analog value (PWM wave) to a pin. Some XMC4 boards have true analog output +capabilities on the DAC enabled pins. -Any shields and examples that try to change this, will :command:`NOT` function -the same on these boards. +The DAC output voltage range for the XMC4000 series is limited to a **minimum** of **0.3V** and a **maximum** of **2.5V**. -Analog amplifiers at the ADC inputs with adjustible gain --------------------------------------------------------- -Each analog input channel can be configured to be amplified by an adjustable -gain factor, for XMC1000 series. To configure the gain, the gain value is to -be selected in the analogRead_variableGain() function which translates to a -gain factor as per the following table: + .. note:: + The following example formula can be used to convert the target voltage to a digital control value (dec_target) + suitable for the 12-bit DAC input range: -.. _gain_factor: + .. math:: + + dec\_target = \frac{(V_{target} - 0.3V)}{2.5V} \times 4095 + + In this formula, 0.3V is the minimum voltage, 2.5V is the maximum voltage, and 4095 is the maximum value for a 12-bit DAC. -.. list-table:: - :header-rows: 1 - * - Gain value - - Gain factor - * - 0 - - 1 - * - 1 - - 3 - * - 2 - - 6 - * - 3 - - 12 - -For more information, please refer to the application note -`here `_. I2C Analog pins ^^^^^^^^^^^^^^^ From 07f5bc7f1cef73306bda17f1119ddad5ef462eb0 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 13 Jun 2025 14:44:36 +0200 Subject: [PATCH 069/366] tests/: Update test_config for analog tests. Signed-off-by: zhanglinjing --- tests/test_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_config.h b/tests/test_config.h index cd5bd23a..1cab75b1 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -21,7 +21,7 @@ #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground -#define TEST_ADC_RESOLUTION 1023 // ADC resolution +#define ADC_RESOLUTION 1023 // ADC resolution #define TEST_PIN_ANALOG_IO_DAC 53 #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 From d3ee20b38c92ebfb6d0ece4288c1efde9e835354 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 13 Jun 2025 15:06:56 +0200 Subject: [PATCH 070/366] tests: Update arduino-core-tests with dac tests and fix. Signed-off-by: zhanglinjing --- tests/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/arduino-core-tests b/tests/arduino-core-tests index cdc55ea5..7723c484 160000 --- a/tests/arduino-core-tests +++ b/tests/arduino-core-tests @@ -1 +1 @@ -Subproject commit cdc55ea527e6a123145d063eccb3b13421d80ad1 +Subproject commit 7723c4848b1557ac12cf8611a8157c44ebf3c5c8 From d689434511ab613cc84a71a5b56cfadcf5d297a4 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 13 Jun 2025 15:27:50 +0200 Subject: [PATCH 071/366] ci-matrix-config.yml: Add analog example. Signed-off-by: zhanglinjing --- ci-matrix-config.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index a2e3188b..fedb137b 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -6,11 +6,18 @@ sketch: - extras/arduino-examples/examples/01.Basics/BareMinimum/BareMinimum.ino - extras/arduino-examples/examples/01.Basics/Blink/Blink.ino - extras/arduino-examples/examples/01.Basics/DigitalReadSerial/DigitalReadSerial.ino + - extras/arduino-examples/examples/01.Basics/AnalogReadSerial/AnalogReadSerial.ino + - extras/arduino-examples/examples/01.Basics/Fade/Fade.ino - extras/arduino-examples/examples/02.Digital/BlinkWithoutDelay/BlinkWithoutDelay.ino - extras/arduino-examples/examples/02.Digital/Button/Button.ino - extras/arduino-examples/examples/02.Digital/Debounce/Debounce.ino - extras/arduino-examples/examples/02.Digital/DigitalInputPullup/DigitalInputPullup.ino - extras/arduino-examples/examples/02.Digital/StateChangeDetection/StateChangeDetection.ino + - extras/arduino-examples/examples/03.Analog/AnalogInOutSerial/AnalogInOutSerial.ino + - extras/arduino-examples/examples/03.Analog/AnalogInput/AnalogInput.ino + - extras/arduino-examples/examples/03.Analog/Calibration/Calibration.ino + - extras/arduino-examples/examples/03.Analog/Fading/Fading.ino + - extras/arduino-examples/examples/03.Analog/Smoothing/Smoothing.ino - extras/arduino-examples/examples/04.Communication/ASCIITable/ASCIITable.ino - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino - extras/arduino-examples/examples/04.Communication/PhysicalPixel/PhysicalPixel.ino From 6cb8f3f7e87b4cb495506074b4793045e54cd2e1 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 10 Jun 2025 15:38:33 +0530 Subject: [PATCH 072/366] variants: Uncomment pins. Signed-off-by: MDin --- variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h | 1 - 1 file changed, 1 deletion(-) diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index a75d6e61..d56070c4 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -60,7 +60,6 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_TASKS_VARIANT 32 #define NUM_SPI 3 #define NUM_I2C 2 - // to use SPI_for_xmc_SD if desired by user #define XMC_SPI_for_xmc_SD XMC_SPI_1 #define SDCARD_SPI SPI1 From 39c4e3d19234396cf261a8f94d029d02960035f8 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 10 Jun 2025 15:43:16 +0530 Subject: [PATCH 073/366] cores/xmc: Implemented Tone function. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 142 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 cores/xmc/Tone.cpp diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp new file mode 100644 index 00000000..a4eb4d8f --- /dev/null +++ b/cores/xmc/Tone.cpp @@ -0,0 +1,142 @@ +#include "Arduino.h" +#define CCU8V2 + +class Tone { +public: + Tone() {} + + ~Tone() {} + + void play(pin_size_t pin, unsigned int frequency) { play(pin, frequency, 0); } + + void play(pin_size_t pin, unsigned int frequency, unsigned long duration) { + int pin_index; + if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { + XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; + configureTone(pin, frequency); + XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, + XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode); + XMC_CCU4_SLICE_StartTimer(pwm4->slice); + + if (duration > 0) { + uint32_t required_pulses = frequency * duration / 1000; + for (uint32_t i = 0; i < required_pulses; i++) { + while ( + !XMC_CCU4_SLICE_GetEvent(pwm4->slice, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH)) { + } + XMC_CCU4_SLICE_ClearEvent(pwm4->slice, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + } + XMC_CCU4_SLICE_StopTimer(pwm4->slice); + } + + } +#if defined(CCU8V2) || defined(CCU8V1) + else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { + XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; + configureTone(pin, frequency); + XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, + XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode); + XMC_CCU8_SLICE_StartTimer(pwm8->slice); + // calculate pulses + if (duration > 0) { + uint32_t required_pulses = frequency * duration / 1000; + for (uint32_t i = 0; i < required_pulses; i++) { + while ( + !XMC_CCU8_SLICE_GetEvent(pwm8->slice, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH)) { + } + XMC_CCU8_SLICE_ClearEvent(pwm8->slice, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH); + } + XMC_CCU8_SLICE_StopTimer(pwm8->slice); + } + } +#endif + } + + void stop(pin_size_t pin) { + int pin_index; + if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { + XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; + XMC_CCU4_SLICE_StopTimer(pwm4->slice); // stop the timer + XMC_CCU4_DisableClock(pwm4->ccu, pwm4->slice_num); // Disable the clock + } +#if defined(CCU8V2) || defined(CCU8V1) + else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { + XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; + XMC_CCU8_SLICE_StopTimer(pwm8->slice); // stop the timer + XMC_CCU8_DisableClock(pwm8->ccu, pwm8->slice_num); // Disable the clock + } +#endif + } + +private: + void configureTone(pin_size_t pin, unsigned int frequency) { + int pin_index; + if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { + XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; + XMC_CCU4_SLICE_COMPARE_CONFIG_t compare_config; + memset(&compare_config, 0, sizeof(compare_config)); + compare_config.prescaler_initval = pwm4->prescaler; + compare_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + + XMC_CCU4_Init(pwm4->ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU4_SLICE_CompareInit(pwm4->slice, &compare_config); + XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); + + uint32_t period = (PCLK / 64) / frequency; // calculate period + XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, period); + XMC_CCU4_SLICE_SetTimerCompareMatch(pwm4->slice, period / 2); + + XMC_CCU4_EnableShadowTransfer( + pwm4->ccu, XMC_CCU4_SHADOW_TRANSFER_SLICE_0 | XMC_CCU4_SHADOW_TRANSFER_SLICE_2 | + XMC_CCU4_SHADOW_TRANSFER_SLICE_3 | XMC_CCU4_SHADOW_TRANSFER_SLICE_1); + } +#if defined(CCU8V2) || defined(CCU8V1) + else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { + Serial.println("pin_index"); + XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; + XMC_CCU8_SLICE_COMPARE_CONFIG_t compare_config; + memset(&compare_config, 0, sizeof(compare_config)); + + compare_config.prescaler_initval = pwm8->prescaler; + compare_config.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + compare_config.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + compare_config.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + compare_config.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + + XMC_CCU8_Init(pwm8->ccu, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU8_SLICE_CompareInit(pwm8->slice, &compare_config); + XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); + + uint32_t period = (PCLK / 64) / frequency; // calculate period + XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, period); + XMC_CCU8_SLICE_SetTimerCompareMatch(pwm8->slice, pwm8->slice_channel, period / 2); + + XMC_CCU8_EnableShadowTransfer( + pwm8->ccu, XMC_CCU8_SHADOW_TRANSFER_SLICE_0 | XMC_CCU8_SHADOW_TRANSFER_SLICE_2 | + XMC_CCU8_SHADOW_TRANSFER_SLICE_3 | XMC_CCU8_SHADOW_TRANSFER_SLICE_1); + } +#endif + } + + // Scan the pwm pin mapping table + int16_t scanMapTable(const uint8_t table[][2], uint8_t pin) { + int16_t i = 0; + while (table[i][0] != 255) { + if (table[i][0] == pin) { + return table[i][1]; + } + i++; + } + return -1; + } +}; + +static Tone inst_Tone; + +void tone(pin_size_t pin, unsigned int frequency) { inst_Tone.play(pin, frequency); } + +void tone(pin_size_t pin, unsigned int frequency, unsigned long duration) { + inst_Tone.play(pin, frequency, duration); +} + +void noTone(pin_size_t pin) { inst_Tone.stop(pin); } From b7f3b86ad29ef96a714d7050661ef25b5dac92b1 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 10 Jun 2025 17:00:32 +0530 Subject: [PATCH 074/366] cores/xmc: Add comment. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index a4eb4d8f..7be3d092 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,5 +1,5 @@ #include "Arduino.h" -#define CCU8V2 +#define CCU8V2 // for CCU8 PWM pins configure class Tone { public: @@ -17,7 +17,7 @@ class Tone { XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode); XMC_CCU4_SLICE_StartTimer(pwm4->slice); - + // count pulses for stop the timer once reached required pulses if (duration > 0) { uint32_t required_pulses = frequency * duration / 1000; for (uint32_t i = 0; i < required_pulses; i++) { From aa93448077e749f757fc5bedf2bd046cc89ecc3f Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 10 Jun 2025 17:16:13 +0530 Subject: [PATCH 075/366] varients: Add define. Signed-off-by: MDin --- variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index d56070c4..6cfe5dae 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -60,6 +60,8 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_TASKS_VARIANT 32 #define NUM_SPI 3 #define NUM_I2C 2 +#define ENABLED 1 +#define DISABLED 0 // to use SPI_for_xmc_SD if desired by user #define XMC_SPI_for_xmc_SD XMC_SPI_1 #define SDCARD_SPI SPI1 From 31f88110227efb01cae86c6f3edc953049de4364 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 10 Jun 2025 18:04:17 +0530 Subject: [PATCH 076/366] cores/xmc: Adding define for PWM. Signed-off-by: MDin --- cores/xmc/Arduino.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 713cb187..1ae9854b 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -73,6 +73,8 @@ extern "C" { #define interrupts() __enable_irq() #define noInterrupts() __disable_irq() +#define ENABLED 1 +#define DISABLED 0 #define DEFAULT XMC_VADC_CHANNEL_REF_INTREF /*< Default ADC reference voltage type */ From 6061cf428aff8f1376591895c90dd56e3586c787 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 10 Jun 2025 18:04:45 +0530 Subject: [PATCH 077/366] varients: Removed define for PWM. Signed-off-by: MDin --- variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h index 6cfe5dae..d56070c4 100644 --- a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h +++ b/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h @@ -60,8 +60,6 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_TASKS_VARIANT 32 #define NUM_SPI 3 #define NUM_I2C 2 -#define ENABLED 1 -#define DISABLED 0 // to use SPI_for_xmc_SD if desired by user #define XMC_SPI_for_xmc_SD XMC_SPI_1 #define SDCARD_SPI SPI1 From 9226a3bc16c80c87fe26c2aaebcf8fdde6d20960 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 13 Jun 2025 09:51:05 +0530 Subject: [PATCH 078/366] cores/xmc: Dummy Commit. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 88 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 17 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 7be3d092..f5582646 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,5 +1,6 @@ #include "Arduino.h" #define CCU8V2 // for CCU8 PWM pins configure +XMC_PWM4_t *pwm4; class Tone { public: @@ -18,17 +19,27 @@ class Tone { XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode); XMC_CCU4_SLICE_StartTimer(pwm4->slice); // count pulses for stop the timer once reached required pulses + // if (duration > 0) { + // uint32_t required_pulses = frequency * duration / 1000; + // for (uint32_t i = 0; i < required_pulses; i++) { + // while ( + // !XMC_CCU4_SLICE_GetEvent(pwm4->slice, + // XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH)) { + // } + // XMC_CCU4_SLICE_ClearEvent(pwm4->slice, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + // } + // XMC_CCU4_SLICE_StopTimer(pwm4->slice); + // } + // if(duration >0) { + // unsigned long start_time = millis(); + // while(millis() - start_time < duration) { + // delay(1); + // } + // XMC_CCU4_SLICE_StopTimer(pwm4->slice); + // } if (duration > 0) { - uint32_t required_pulses = frequency * duration / 1000; - for (uint32_t i = 0; i < required_pulses; i++) { - while ( - !XMC_CCU4_SLICE_GetEvent(pwm4->slice, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH)) { - } - XMC_CCU4_SLICE_ClearEvent(pwm4->slice, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - } - XMC_CCU4_SLICE_StopTimer(pwm4->slice); + configureTimerInterrupt(duration); } - } #if defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { @@ -38,15 +49,26 @@ class Tone { XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode); XMC_CCU8_SLICE_StartTimer(pwm8->slice); // calculate pulses + // if (duration > 0) { + // uint32_t required_pulses = frequency * duration / 1000; + // for (uint32_t i = 0; i < required_pulses; i++) { + // while ( + // !XMC_CCU8_SLICE_GetEvent(pwm8->slice, + // XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH)) { + // } + // XMC_CCU8_SLICE_ClearEvent(pwm8->slice, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH); + // } + // XMC_CCU8_SLICE_StopTimer(pwm8->slice); + // } + // if(duration >0) { + // unsigned long start_time = millis(); + // while(millis() - start_time < duration) { + // delay(1); + // } + // XMC_CCU8_SLICE_StopTimer(pwm8->slice); + // } if (duration > 0) { - uint32_t required_pulses = frequency * duration / 1000; - for (uint32_t i = 0; i < required_pulses; i++) { - while ( - !XMC_CCU8_SLICE_GetEvent(pwm8->slice, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH)) { - } - XMC_CCU8_SLICE_ClearEvent(pwm8->slice, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH); - } - XMC_CCU8_SLICE_StopTimer(pwm8->slice); + configureTimerInterrupt(duration); } } #endif @@ -129,6 +151,30 @@ class Tone { } return -1; } + + void configureTimerInterrupt(unsigned long duration_ms) { + + XMC_CCU4_SLICE_COMPARE_CONFIG_t timer_config; + memset(&timer_config, 0, sizeof(timer_config)); + timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_64; + timer_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + + XMC_CCU4_SLICE_CompareInit(CCU40_CC40, &timer_config); + + // Calculate period for the timer based on the duration + uint32_t timer_ticks = (PCLK / 64) * duration_ms / 1000; + XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU40_CC40, timer_ticks); + + XMC_CCU4_SLICE_EnableEvent(CCU40_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + XMC_CCU4_SLICE_SetInterruptNode(CCU40_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, + XMC_CCU4_SLICE_SR_ID_0); + + // Enable the NVIC interrupt + NVIC_EnableIRQ(CCU40_0_IRQn); + + // Start the timer + XMC_CCU4_SLICE_StartTimer(CCU40_CC40); + } }; static Tone inst_Tone; @@ -140,3 +186,11 @@ void tone(pin_size_t pin, unsigned int frequency, unsigned long duration) { } void noTone(pin_size_t pin) { inst_Tone.stop(pin); } + +void CCU40_0_IRQHandler(void) { + + XMC_CCU4_SLICE_StopTimer(pwm4->slice); + + XMC_CCU4_SLICE_StopTimer(CCU40_CC40); + XMC_CCU4_SLICE_ClearEvent(CCU40_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); +} From abe401cc1ff18025bf987843abe5795a4a3d9b8d Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 13 Jun 2025 20:12:15 +0200 Subject: [PATCH 079/366] cores/xmc: Fix interruptHandler issue and clean code of Tone. Signed-off-by: zhanglinjing --- cores/xmc/Tone.cpp | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index f5582646..703618e6 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,5 +1,5 @@ #include "Arduino.h" -#define CCU8V2 // for CCU8 PWM pins configure + XMC_PWM4_t *pwm4; class Tone { @@ -16,7 +16,7 @@ class Tone { XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; configureTone(pin, frequency); XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, - XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode); + (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); XMC_CCU4_SLICE_StartTimer(pwm4->slice); // count pulses for stop the timer once reached required pulses // if (duration > 0) { @@ -46,7 +46,7 @@ class Tone { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; configureTone(pin, frequency); XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, - XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode); + (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); XMC_CCU8_SLICE_StartTimer(pwm8->slice); // calculate pulses // if (duration > 0) { @@ -77,9 +77,10 @@ class Tone { void stop(pin_size_t pin) { int pin_index; if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; - XMC_CCU4_SLICE_StopTimer(pwm4->slice); // stop the timer - XMC_CCU4_DisableClock(pwm4->ccu, pwm4->slice_num); // Disable the clock + XMC_PWM4_t *_XMC_pwm4_config = &mapping_pwm4[pin_index]; + XMC_CCU4_SLICE_StopTimer(_XMC_pwm4_config->slice); // stop the timer + XMC_CCU4_DisableClock(_XMC_pwm4_config->ccu, + _XMC_pwm4_config->slice_num); // Disable the clock } #if defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { @@ -153,27 +154,26 @@ class Tone { } void configureTimerInterrupt(unsigned long duration_ms) { - XMC_CCU4_SLICE_COMPARE_CONFIG_t timer_config; memset(&timer_config, 0, sizeof(timer_config)); timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_64; timer_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - XMC_CCU4_SLICE_CompareInit(CCU40_CC40, &timer_config); + XMC_CCU4_SLICE_CompareInit(CCU40_CC42, &timer_config); // Calculate period for the timer based on the duration uint32_t timer_ticks = (PCLK / 64) * duration_ms / 1000; - XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU40_CC40, timer_ticks); + XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU40_CC42, timer_ticks); - XMC_CCU4_SLICE_EnableEvent(CCU40_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - XMC_CCU4_SLICE_SetInterruptNode(CCU40_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, + XMC_CCU4_SLICE_EnableEvent(CCU40_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + XMC_CCU4_SLICE_SetInterruptNode(CCU40_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, XMC_CCU4_SLICE_SR_ID_0); // Enable the NVIC interrupt - NVIC_EnableIRQ(CCU40_0_IRQn); + NVIC_EnableIRQ(CCU40_2_IRQn); // Start the timer - XMC_CCU4_SLICE_StartTimer(CCU40_CC40); + XMC_CCU4_SLICE_StartTimer(CCU40_CC42); } }; @@ -186,11 +186,13 @@ void tone(pin_size_t pin, unsigned int frequency, unsigned long duration) { } void noTone(pin_size_t pin) { inst_Tone.stop(pin); } - -void CCU40_0_IRQHandler(void) { - - XMC_CCU4_SLICE_StopTimer(pwm4->slice); - - XMC_CCU4_SLICE_StopTimer(CCU40_CC40); - XMC_CCU4_SLICE_ClearEvent(CCU40_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); +#ifdef __cplusplus +extern "C" { +#endif +void CCU40_2_IRQHandler(void) { + XMC_CCU4_SLICE_StopTimer(CCU40_CC42); + XMC_CCU4_SLICE_ClearEvent(CCU40_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); } +#ifdef __cplusplus +} +#endif From 05ba7c51edcdb95848a25a2aead9a4542f0cde5d Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 16 Jun 2025 09:41:32 +0530 Subject: [PATCH 080/366] cores/xmc: Using millis() method. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 87 +++++++--------------------------------------- 1 file changed, 13 insertions(+), 74 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 703618e6..b2d364d7 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -18,27 +18,12 @@ class Tone { XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); XMC_CCU4_SLICE_StartTimer(pwm4->slice); - // count pulses for stop the timer once reached required pulses - // if (duration > 0) { - // uint32_t required_pulses = frequency * duration / 1000; - // for (uint32_t i = 0; i < required_pulses; i++) { - // while ( - // !XMC_CCU4_SLICE_GetEvent(pwm4->slice, - // XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH)) { - // } - // XMC_CCU4_SLICE_ClearEvent(pwm4->slice, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - // } - // XMC_CCU4_SLICE_StopTimer(pwm4->slice); - // } - // if(duration >0) { - // unsigned long start_time = millis(); - // while(millis() - start_time < duration) { - // delay(1); - // } - // XMC_CCU4_SLICE_StopTimer(pwm4->slice); - // } - if (duration > 0) { - configureTimerInterrupt(duration); + if(duration >0) { + unsigned long start_time = millis(); + while(millis() - start_time < duration) { + delay(1); + } + XMC_CCU4_SLICE_StopTimer(pwm4->slice); } } #if defined(CCU8V2) || defined(CCU8V1) @@ -49,26 +34,12 @@ class Tone { (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); XMC_CCU8_SLICE_StartTimer(pwm8->slice); // calculate pulses - // if (duration > 0) { - // uint32_t required_pulses = frequency * duration / 1000; - // for (uint32_t i = 0; i < required_pulses; i++) { - // while ( - // !XMC_CCU8_SLICE_GetEvent(pwm8->slice, - // XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH)) { - // } - // XMC_CCU8_SLICE_ClearEvent(pwm8->slice, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH); - // } - // XMC_CCU8_SLICE_StopTimer(pwm8->slice); - // } - // if(duration >0) { - // unsigned long start_time = millis(); - // while(millis() - start_time < duration) { - // delay(1); - // } - // XMC_CCU8_SLICE_StopTimer(pwm8->slice); - // } - if (duration > 0) { - configureTimerInterrupt(duration); + if(duration >0) { + unsigned long start_time = millis(); + while(millis() - start_time < duration) { + delay(1); + } + XMC_CCU8_SLICE_StopTimer(pwm8->slice); } } #endif @@ -152,29 +123,6 @@ class Tone { } return -1; } - - void configureTimerInterrupt(unsigned long duration_ms) { - XMC_CCU4_SLICE_COMPARE_CONFIG_t timer_config; - memset(&timer_config, 0, sizeof(timer_config)); - timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_64; - timer_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - - XMC_CCU4_SLICE_CompareInit(CCU40_CC42, &timer_config); - - // Calculate period for the timer based on the duration - uint32_t timer_ticks = (PCLK / 64) * duration_ms / 1000; - XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU40_CC42, timer_ticks); - - XMC_CCU4_SLICE_EnableEvent(CCU40_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - XMC_CCU4_SLICE_SetInterruptNode(CCU40_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, - XMC_CCU4_SLICE_SR_ID_0); - - // Enable the NVIC interrupt - NVIC_EnableIRQ(CCU40_2_IRQn); - - // Start the timer - XMC_CCU4_SLICE_StartTimer(CCU40_CC42); - } }; static Tone inst_Tone; @@ -186,13 +134,4 @@ void tone(pin_size_t pin, unsigned int frequency, unsigned long duration) { } void noTone(pin_size_t pin) { inst_Tone.stop(pin); } -#ifdef __cplusplus -extern "C" { -#endif -void CCU40_2_IRQHandler(void) { - XMC_CCU4_SLICE_StopTimer(CCU40_CC42); - XMC_CCU4_SLICE_ClearEvent(CCU40_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); -} -#ifdef __cplusplus -} -#endif + From 9401f00fb2c840421f8465d89d9fda7a730c42d8 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 16 Jun 2025 10:39:37 +0530 Subject: [PATCH 081/366] tests: Add Pulse pin. Signed-off-by: MDin --- tests/test_config.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_config.h b/tests/test_config.h index 1cab75b1..2cf88977 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -16,6 +16,8 @@ #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 #define TEST_PIN_SYNC_IO 4 // IO_1 +#define TEST_PIN_PULSE 5 // IO_2 + #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd From 62431acda8ef1e2d2e559b69f00badd3fa26a861 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 16 Jun 2025 10:40:37 +0530 Subject: [PATCH 082/366] cores/xmc: Implemented Pulse. Signed-off-by: MDin --- cores/xmc/Pulse.cpp | 101 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 cores/xmc/Pulse.cpp diff --git a/cores/xmc/Pulse.cpp b/cores/xmc/Pulse.cpp new file mode 100644 index 00000000..6e3e3fea --- /dev/null +++ b/cores/xmc/Pulse.cpp @@ -0,0 +1,101 @@ +#include "Arduino.h" + +// Ensure we do not wait here forever by setting maximum and default +// timeouts for 3 minutes and 1 second (in micro-seconds) +// Default used if timeout is set at < 6 microseconds +#define MAX_PULSE_TIMEOUT (3 * 60 * 1000 * 1000) +#define DEF_PULSE_TIMEOUT (1000 * 1000) + +uint32_t pulse_state; // State to measure pin input HIGH or LOW +uint32_t mask; // bit mask for relevant pin +XMC_GPIO_PORT_t *pulsePort; // Pointer to GPIO port register structure +uint32_t start_time; // start time of measured pulse +uint32_t end_time; // start time of measured pulse + +//**************************************************************************** +// @Local Functions +//**************************************************************************** + +/* Measures the length (in microseconds) of a pulse on the Arduino pin; + * Works on pulses from 6 microseconds to 3 minutes in length, + * but must be called at least a few dozen microseconds + * before the start of the pulse. + * + * Waits for input signal to be at opposite level to being measured + * to avoid getting short measurements of wrong pulse. + * + * Parameters + * pin - which pin to monitor + * state - HIGH or LOW, for the level of pulse to measure. + * timeout - max time in microseconds to wait for whole process + * + * Returns 0 for timeout reached or INVALID pin number + * + * ATTENTION: + * This function relies on the SysTick timer in function micros() so is + * LESS prone to interrupts or other activity interfering. However there + * will always be the possibility of at LEAST +/- 1 counts difference to + * actual signal time. If you need high accuracy use another solution + * with hardware timers in capture mode. + * + * Use of SysTick hardware timer and micros( ) function makes the function + * more portable across various micros and CPU clock frequencies. + * + * Assumptions] + * As per AVR Arduino PulseIn pin is expected to be in input mode already + * No major interrupt activity while measurement is taken (including Serial) + * + * Do NOT make changes to use local (stack) variables as this WILL ADD overhead + * to any operations. + * To improve accuracy beyond this will probably need hard coded assembler + */ +unsigned long pulseIn(pin_size_t pin, uint8_t state, unsigned long timeout) { +// check pin is valid by NUM_DIGITAL_PINS, return 0 if invalid +#ifdef NUM_DIGITAL_PINS + if (pin >= NUM_DIGITAL_PINS) + return 0; +#endif + + // Set up pin details for faster port read in loops + pulsePort = mapping_port_pin[pin].port; + // configure register pin mask to check against + mask = 1UL << mapping_port_pin[pin].pin; + + // Check timeout is NOT too small or > Maximum + // if so use default 1 second or MAX respectively + if (timeout < 6) + timeout = DEF_PULSE_TIMEOUT; + else if (timeout > MAX_PULSE_TIMEOUT) + timeout = MAX_PULSE_TIMEOUT; + + // Initialise conditions + pulse_state = (state) ? mask : 0; // level to measure + + timeout = micros() + timeout; // Set timeout for whole process + + // If already at measurement level we have a problem + // So wait for pulse to go to OPPOSITE level required (idle) first + while (((pulsePort->IN & mask) == pulse_state)) + if (micros() > timeout) + return 0; + + // Wait for pulse to go to level required + while (((pulsePort->IN & mask) != pulse_state)) + if (micros() > timeout) + return 0; + + // measure pulse length of required level + start_time = micros(); + while (((pulsePort->IN & mask) == pulse_state)) + if (micros() > timeout) + return 0; + end_time = micros(); + + // Return time difference + return (end_time - start_time); +} + +unsigned long pulseInLong(pin_size_t pin, uint8_t state, unsigned long timeout) +{ + return pulseIn(pin, state, timeout); +} From 06c1dd31edd8204e0d9eba174cc610c986f559db Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 16 Jun 2025 10:41:04 +0530 Subject: [PATCH 083/366] cores/xmc: Implemented shift. Signed-off-by: MDin --- cores/xmc/Shift.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 cores/xmc/Shift.cpp diff --git a/cores/xmc/Shift.cpp b/cores/xmc/Shift.cpp new file mode 100644 index 00000000..d9966c6f --- /dev/null +++ b/cores/xmc/Shift.cpp @@ -0,0 +1,35 @@ +#include "Arduino.h" + +void shiftOut(pin_size_t ulDataPin, pin_size_t ulClockPin, BitOrder ulBitOrder, uint8_t ulVal) { + uint8_t i; + + for (i = 0; i < 8; i++) { + if (ulBitOrder == LSBFIRST) { + digitalWrite(ulDataPin, !!(ulVal & (1 << i))); + } else { + digitalWrite(ulDataPin, !!(ulVal & (1 << (7 - i)))); + } + + digitalWrite(ulClockPin, HIGH); + digitalWrite(ulClockPin, LOW); + } +} + +uint8_t shiftIn(pin_size_t ulDataPin, pin_size_t ulClockPin, BitOrder ulBitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(ulClockPin, HIGH); + + if (ulBitOrder == LSBFIRST) { + value |= digitalRead(ulDataPin) << i; + } else { + value |= digitalRead(ulDataPin) << (7 - i); + } + + digitalWrite(ulClockPin, LOW); + } + + return value; +} From 315002b0bd3f45cb507686173882a9f333e73bb3 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 18 Jun 2025 09:54:33 +0530 Subject: [PATCH 084/366] cores/xmc: Review comments work. Signed-off-by: MDin --- cores/xmc/Pulse.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/cores/xmc/Pulse.cpp b/cores/xmc/Pulse.cpp index 6e3e3fea..cad67166 100644 --- a/cores/xmc/Pulse.cpp +++ b/cores/xmc/Pulse.cpp @@ -41,7 +41,7 @@ uint32_t end_time; // start time of measured pulse * Use of SysTick hardware timer and micros( ) function makes the function * more portable across various micros and CPU clock frequencies. * - * Assumptions] + * Assumptions: * As per AVR Arduino PulseIn pin is expected to be in input mode already * No major interrupt activity while measurement is taken (including Serial) * @@ -52,8 +52,9 @@ uint32_t end_time; // start time of measured pulse unsigned long pulseIn(pin_size_t pin, uint8_t state, unsigned long timeout) { // check pin is valid by NUM_DIGITAL_PINS, return 0 if invalid #ifdef NUM_DIGITAL_PINS - if (pin >= NUM_DIGITAL_PINS) + if (pin >= NUM_DIGITAL_PINS){ return 0; + } #endif // Set up pin details for faster port read in loops @@ -63,11 +64,12 @@ unsigned long pulseIn(pin_size_t pin, uint8_t state, unsigned long timeout) { // Check timeout is NOT too small or > Maximum // if so use default 1 second or MAX respectively - if (timeout < 6) + if (timeout < 6){ timeout = DEF_PULSE_TIMEOUT; - else if (timeout > MAX_PULSE_TIMEOUT) + } + else if (timeout > MAX_PULSE_TIMEOUT){ timeout = MAX_PULSE_TIMEOUT; - + } // Initialise conditions pulse_state = (state) ? mask : 0; // level to measure @@ -75,20 +77,25 @@ unsigned long pulseIn(pin_size_t pin, uint8_t state, unsigned long timeout) { // If already at measurement level we have a problem // So wait for pulse to go to OPPOSITE level required (idle) first - while (((pulsePort->IN & mask) == pulse_state)) - if (micros() > timeout) + while (((pulsePort->IN & mask) == pulse_state)){ + if (micros() > timeout){ return 0; - + } + } // Wait for pulse to go to level required - while (((pulsePort->IN & mask) != pulse_state)) - if (micros() > timeout) + while (((pulsePort->IN & mask) != pulse_state)){ + if (micros() > timeout){ return 0; + } + } // measure pulse length of required level start_time = micros(); - while (((pulsePort->IN & mask) == pulse_state)) - if (micros() > timeout) + while (((pulsePort->IN & mask) == pulse_state)){ + if (micros() > timeout){ return 0; + } + } end_time = micros(); // Return time difference From 08c2b86e0a79c3371eea0191227124c9b59e328f Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 16 Jun 2025 18:05:46 +0530 Subject: [PATCH 085/366] cores/xmc: Modified timer interrupt. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 118 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 107 insertions(+), 11 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index b2d364d7..1155ff55 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,6 +1,28 @@ #include "Arduino.h" XMC_PWM4_t *pwm4; +static volatile bool timer_interrupt_ccu4 = false; +static volatile bool timer_interrupt_ccu8 = false; + +#ifdef __cplusplus +extern "C" { +#endif +void CCU43_0_IRQHandler(void) { + + XMC_CCU4_SLICE_StopTimer(CCU43_CC40); + XMC_CCU4_SLICE_ClearEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + timer_interrupt_ccu4 = true; + +} + +void CCU81_0_IRQHandler(void) { + XMC_CCU8_SLICE_StopTimer(CCU81_CC80); + XMC_CCU8_SLICE_ClearEvent(CCU81_CC80, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH); + timer_interrupt_ccu8 = true; +} +#ifdef __cplusplus +} +#endif class Tone { public: @@ -18,12 +40,14 @@ class Tone { XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); XMC_CCU4_SLICE_StartTimer(pwm4->slice); - if(duration >0) { - unsigned long start_time = millis(); - while(millis() - start_time < duration) { - delay(1); + if(duration >0) { + configureTimerInterrupt(duration); + if(timer_interrupt_ccu4 == true) + { + XMC_CCU4_SLICE_StopTimer(pwm4->slice); + timer_interrupt_ccu4 = false; + } - XMC_CCU4_SLICE_StopTimer(pwm4->slice); } } #if defined(CCU8V2) || defined(CCU8V1) @@ -34,15 +58,18 @@ class Tone { (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); XMC_CCU8_SLICE_StartTimer(pwm8->slice); // calculate pulses - if(duration >0) { - unsigned long start_time = millis(); - while(millis() - start_time < duration) { - delay(1); + if(duration >0) { + configureTimerInterrupt(duration); + if(timer_interrupt_ccu8 == true) + { + XMC_CCU8_SLICE_StopTimer(pwm8->slice); + timer_interrupt_ccu8 = false; + } - XMC_CCU8_SLICE_StopTimer(pwm8->slice); } } #endif + } void stop(pin_size_t pin) { @@ -65,6 +92,8 @@ class Tone { private: void configureTone(pin_size_t pin, unsigned int frequency) { int pin_index; + timer_interrupt_ccu4 = false; + if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; XMC_CCU4_SLICE_COMPARE_CONFIG_t compare_config; @@ -86,7 +115,6 @@ class Tone { } #if defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { - Serial.println("pin_index"); XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; XMC_CCU8_SLICE_COMPARE_CONFIG_t compare_config; memset(&compare_config, 0, sizeof(compare_config)); @@ -108,10 +136,78 @@ class Tone { XMC_CCU8_EnableShadowTransfer( pwm8->ccu, XMC_CCU8_SHADOW_TRANSFER_SLICE_0 | XMC_CCU8_SHADOW_TRANSFER_SLICE_2 | XMC_CCU8_SHADOW_TRANSFER_SLICE_3 | XMC_CCU8_SHADOW_TRANSFER_SLICE_1); + timer_interrupt_ccu8 = false; + } #endif } + void configureTimerInterrupt(unsigned long duration_ms) { + timer_interrupt_ccu4 = false; + XMC_CCU4_Init(CCU43, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU4_SLICE_COMPARE_CONFIG_t timer_config; + timer_config.timer_mode = XMC_CCU4_SLICE_TIMER_COUNT_MODE_EA; + timer_config.monoshot = XMC_CCU4_SLICE_TIMER_REPEAT_MODE_SINGLE; + timer_config.prescaler_mode = XMC_CCU4_SLICE_PRESCALER_MODE_NORMAL; + timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_32768; + timer_config.float_limit = XMC_CCU4_SLICE_PRESCALER_32768; + timer_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + XMC_CCU4_SLICE_CompareInit(CCU43_CC40, &timer_config); + + // Calculate period for the timer based on the duration + uint32_t timer_ticks = (PCLK / 32768) * duration_ms / 1000; + XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU43_CC40, timer_ticks); + XMC_CCU4_SetMultiChannelShadowTransferMode(CCU43, XMC_CCU4_MULTI_CHANNEL_SHADOW_TRANSFER_SW_SLICE0); + XMC_CCU4_EnableShadowTransfer(CCU43,XMC_CCU4_SHADOW_TRANSFER_SLICE_0); + XMC_CCU4_SLICE_SetInterruptNode(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, XMC_CCU4_SLICE_SR_ID_0); + XMC_CCU4_SLICE_EnableEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + XMC_CCU4_EnableClock(CCU43, 0); + + // Enable the NVIC interrupt + XMC_CCU4_SLICE_SetTimerValue(CCU43_CC40, 0U); + + // Start the timer + XMC_CCU4_SLICE_StartTimer(CCU43_CC40); + NVIC_SetPriority(CCU43_0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 63, 0)); + + NVIC_EnableIRQ(CCU43_0_IRQn); + + #if defined(CCU8V2) || defined(CCU8V1) + timer_interrupt_ccu8 = false; + XMC_CCU8_Init(CCU81, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU8_SLICE_COMPARE_CONFIG_t timer_config_ccu8; + timer_config_ccu8.timer_mode = XMC_CCU8_SLICE_TIMER_COUNT_MODE_EA; + timer_config_ccu8.monoshot = XMC_CCU8_SLICE_TIMER_REPEAT_MODE_SINGLE; + timer_config_ccu8.prescaler_mode = XMC_CCU8_SLICE_PRESCALER_MODE_NORMAL; + timer_config_ccu8.prescaler_initval = XMC_CCU8_SLICE_PRESCALER_32768; + timer_config_ccu8.float_limit = XMC_CCU8_SLICE_PRESCALER_32768; + timer_config_ccu8.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + timer_config_ccu8.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + timer_config_ccu8.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + timer_config_ccu8.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + + XMC_CCU8_SLICE_CompareInit(CCU81_CC80, &timer_config_ccu8); + + // Calculate period for the timer based on the duration + uint32_t timer_ticks_ccu8 = (PCLK / 32768) * duration_ms / 1000; + XMC_CCU8_SLICE_SetTimerPeriodMatch(CCU81_CC80, timer_ticks_ccu8); + XMC_CCU8_SetMultiChannelShadowTransferMode(CCU81, XMC_CCU8_MULTI_CHANNEL_SHADOW_TRANSFER_SW_SLICE0); + XMC_CCU8_EnableShadowTransfer(CCU81,XMC_CCU8_SHADOW_TRANSFER_SLICE_0); + XMC_CCU8_SLICE_SetInterruptNode(CCU81_CC80, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH, XMC_CCU8_SLICE_SR_ID_0); + XMC_CCU8_SLICE_EnableEvent(CCU81_CC80, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH); + XMC_CCU8_EnableClock(CCU81, 0); + + // Enable the NVIC interrupt + XMC_CCU8_SLICE_SetTimerValue(CCU81_CC80, 0U); + + // Start the timer + XMC_CCU8_SLICE_StartTimer(CCU81_CC80); + NVIC_SetPriority(CCU81_0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 63, 0)); + + NVIC_EnableIRQ(CCU81_0_IRQn); + #endif + } + // Scan the pwm pin mapping table int16_t scanMapTable(const uint8_t table[][2], uint8_t pin) { int16_t i = 0; From 02842552469a7a0886660eae290e2e03a8494182 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 17 Jun 2025 10:57:06 +0530 Subject: [PATCH 086/366] cores/xmc: Modified Interrupt handler. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 88 +++++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 55 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 1155ff55..17858503 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,25 +1,35 @@ #include "Arduino.h" +static XMC_CCU4_SLICE_t *active_pwm4_slice = nullptr; // Active CCU4 slice +static XMC_CCU8_SLICE_t *active_pwm8_slice = nullptr; // Active CCU8 slice +static XMC_CCU4_MODULE_t *active_pwm4_ccu = nullptr; // Active CCU4 module +static XMC_CCU8_MODULE_t *active_pwm8_ccu = nullptr; // Active CCU8 module +uint8_t slice_number; -XMC_PWM4_t *pwm4; static volatile bool timer_interrupt_ccu4 = false; -static volatile bool timer_interrupt_ccu8 = false; #ifdef __cplusplus extern "C" { #endif void CCU43_0_IRQHandler(void) { +if(active_pwm4_slice != nullptr && active_pwm4_ccu != nullptr) { + XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); + XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number); // Disable the clock - XMC_CCU4_SLICE_StopTimer(CCU43_CC40); + active_pwm4_slice = nullptr; // Clear the active CCU4 slice + active_pwm4_ccu = nullptr; // Clear the active CCU4 module +} +if(active_pwm8_slice != nullptr && active_pwm8_ccu != nullptr) { + XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); + XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number); + active_pwm8_slice = nullptr; // Clear the active CCU8 slice + active_pwm8_ccu = nullptr; // Clear the active CCU8 module +} +XMC_CCU4_SLICE_StopTimer(CCU43_CC40); XMC_CCU4_SLICE_ClearEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); timer_interrupt_ccu4 = true; } -void CCU81_0_IRQHandler(void) { - XMC_CCU8_SLICE_StopTimer(CCU81_CC80); - XMC_CCU8_SLICE_ClearEvent(CCU81_CC80, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH); - timer_interrupt_ccu8 = true; -} #ifdef __cplusplus } #endif @@ -36,23 +46,27 @@ class Tone { int pin_index; if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; + active_pwm4_slice = pwm4->slice; // Store the active CCU4 slice + active_pwm4_ccu = pwm4->ccu; // Store the active CCU4 module + slice_number = pwm4->slice_num; // Store the slice number configureTone(pin, frequency); XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); XMC_CCU4_SLICE_StartTimer(pwm4->slice); if(duration >0) { configureTimerInterrupt(duration); - if(timer_interrupt_ccu4 == true) - { - XMC_CCU4_SLICE_StopTimer(pwm4->slice); - timer_interrupt_ccu4 = false; - - } + // if(timer_interrupt_ccu4 == true) + // { + // XMC_CCU4_SLICE_StopTimer(pwm4->slice); + // timer_interrupt_ccu4 = false; + // } } } #if defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; + active_pwm8_slice = pwm8->slice; // Store the active CCU8 slice + active_pwm8_ccu = pwm8->ccu; // Store the active CCU8 module configureTone(pin, frequency); XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); @@ -60,12 +74,12 @@ class Tone { // calculate pulses if(duration >0) { configureTimerInterrupt(duration); - if(timer_interrupt_ccu8 == true) - { - XMC_CCU8_SLICE_StopTimer(pwm8->slice); - timer_interrupt_ccu8 = false; + // if(timer_interrupt_ccu4 == true) + // { + // XMC_CCU8_SLICE_StopTimer(pwm8->slice); + // timer_interrupt_ccu4 = false; - } + // } } } #endif @@ -136,7 +150,6 @@ class Tone { XMC_CCU8_EnableShadowTransfer( pwm8->ccu, XMC_CCU8_SHADOW_TRANSFER_SLICE_0 | XMC_CCU8_SHADOW_TRANSFER_SLICE_2 | XMC_CCU8_SHADOW_TRANSFER_SLICE_3 | XMC_CCU8_SHADOW_TRANSFER_SLICE_1); - timer_interrupt_ccu8 = false; } #endif @@ -171,41 +184,6 @@ class Tone { NVIC_SetPriority(CCU43_0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 63, 0)); NVIC_EnableIRQ(CCU43_0_IRQn); - - #if defined(CCU8V2) || defined(CCU8V1) - timer_interrupt_ccu8 = false; - XMC_CCU8_Init(CCU81, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU8_SLICE_COMPARE_CONFIG_t timer_config_ccu8; - timer_config_ccu8.timer_mode = XMC_CCU8_SLICE_TIMER_COUNT_MODE_EA; - timer_config_ccu8.monoshot = XMC_CCU8_SLICE_TIMER_REPEAT_MODE_SINGLE; - timer_config_ccu8.prescaler_mode = XMC_CCU8_SLICE_PRESCALER_MODE_NORMAL; - timer_config_ccu8.prescaler_initval = XMC_CCU8_SLICE_PRESCALER_32768; - timer_config_ccu8.float_limit = XMC_CCU8_SLICE_PRESCALER_32768; - timer_config_ccu8.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - timer_config_ccu8.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - timer_config_ccu8.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - timer_config_ccu8.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - - XMC_CCU8_SLICE_CompareInit(CCU81_CC80, &timer_config_ccu8); - - // Calculate period for the timer based on the duration - uint32_t timer_ticks_ccu8 = (PCLK / 32768) * duration_ms / 1000; - XMC_CCU8_SLICE_SetTimerPeriodMatch(CCU81_CC80, timer_ticks_ccu8); - XMC_CCU8_SetMultiChannelShadowTransferMode(CCU81, XMC_CCU8_MULTI_CHANNEL_SHADOW_TRANSFER_SW_SLICE0); - XMC_CCU8_EnableShadowTransfer(CCU81,XMC_CCU8_SHADOW_TRANSFER_SLICE_0); - XMC_CCU8_SLICE_SetInterruptNode(CCU81_CC80, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH, XMC_CCU8_SLICE_SR_ID_0); - XMC_CCU8_SLICE_EnableEvent(CCU81_CC80, XMC_CCU8_SLICE_IRQ_ID_PERIOD_MATCH); - XMC_CCU8_EnableClock(CCU81, 0); - - // Enable the NVIC interrupt - XMC_CCU8_SLICE_SetTimerValue(CCU81_CC80, 0U); - - // Start the timer - XMC_CCU8_SLICE_StartTimer(CCU81_CC80); - NVIC_SetPriority(CCU81_0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 63, 0)); - - NVIC_EnableIRQ(CCU81_0_IRQn); - #endif } // Scan the pwm pin mapping table From 9f6cbd41cfc4275b4cc05b9a2753856bf01f7b1f Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 17 Jun 2025 13:52:57 +0530 Subject: [PATCH 087/366] cores/xmc: Removed comments. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 17858503..64c870df 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -55,11 +55,6 @@ class Tone { XMC_CCU4_SLICE_StartTimer(pwm4->slice); if(duration >0) { configureTimerInterrupt(duration); - // if(timer_interrupt_ccu4 == true) - // { - // XMC_CCU4_SLICE_StopTimer(pwm4->slice); - // timer_interrupt_ccu4 = false; - // } } } #if defined(CCU8V2) || defined(CCU8V1) @@ -74,12 +69,6 @@ class Tone { // calculate pulses if(duration >0) { configureTimerInterrupt(duration); - // if(timer_interrupt_ccu4 == true) - // { - // XMC_CCU8_SLICE_StopTimer(pwm8->slice); - // timer_interrupt_ccu4 = false; - - // } } } #endif From ffbf324cb8b1dbee7e28d18786f595e8c9ddf86b Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 17 Jun 2025 15:55:03 +0530 Subject: [PATCH 088/366] docs: Updated tone documentation. Signed-off-by: MDin --- docs/arduino-deviations.rst | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/docs/arduino-deviations.rst b/docs/arduino-deviations.rst index cdc524c7..a30045db 100644 --- a/docs/arduino-deviations.rst +++ b/docs/arduino-deviations.rst @@ -68,28 +68,13 @@ must be Slave mode configuration and sets the I2C configuration differently. Tone ++++ -Number of Tone pins is determined by pins_arduino.h define NUM_TONE_PINS. -This allows for use in other modules and for variations between boards as ->100MHz boards can obviously handle more tone pins. +The tone() function in XMC-for-Arduino core uses the PWM(pulse Width Modulation) peripheral to generate square wave signals at specific frequencies. +Number of tone pins is determined by PWM -capable pins on XMC Device. -The default for XMC1xxx is 4 with a change XMC4xxxx should be 16 - -Tone has frequency range of maximum = 500 Hz minimum = 1 Hz - -This is due to the fact that the tone frequency is software derived from -the Systick handler, Systick has a time period of 1 ms. At maximum each -handler event for Systick toggles a GPIO pin, so at minimum period of 1 ms -the output is toggled, so TWO events produce one square wave cycle, therefore -the maximum output frequency is 500Hz. - -The minimum is due to the fact that tone function only accepts an unsigned -integer (32 bit) for the frequency, so the minimum usable frequency is 1. - -Standard Arduino boards use hardware timers (the few that are available) to -generate tones and at least one timer can interfere with other functions. - -However this does mean you can have more tone pins, just much lower frequency range. +Do not call pinMode() on the pin prior to using the tone() function. The tone() function automatically configures the pin for output modes and sets it up internally. +Calling pinMode() beforehand may result in unexpected behavior or conflicts with PWM peripheral. +Maximum duration of tone can be set upto 90 seconds. Analog Functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 2f4e06ec298e46a42a54feec4ead1c6f01046f00 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 17 Jun 2025 15:55:53 +0530 Subject: [PATCH 089/366] tests: Format check. Signed-off-by: MDin --- tests/test_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_config.h b/tests/test_config.h index 2cf88977..c62da840 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -16,7 +16,7 @@ #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 #define TEST_PIN_SYNC_IO 4 // IO_1 -#define TEST_PIN_PULSE 5 // IO_2 +#define TEST_PIN_PULSE 5 // IO_2 #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz From c613151fe8ade2a5ac914530eaa51406bede664f Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 17 Jun 2025 15:56:55 +0530 Subject: [PATCH 090/366] ci-matrix-config.yml: Added tone examples. Signed-off-by: MDin --- ci-matrix-config.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index fedb137b..0aad9569 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -13,6 +13,10 @@ sketch: - extras/arduino-examples/examples/02.Digital/Debounce/Debounce.ino - extras/arduino-examples/examples/02.Digital/DigitalInputPullup/DigitalInputPullup.ino - extras/arduino-examples/examples/02.Digital/StateChangeDetection/StateChangeDetection.ino + - extras/arduino-examples/examples/02.Digital/toneKeyboard/toneKeyboard.ino + - extras/arduino-examples/examples/02.Digital/toneMelody/toneMelody.ino + - extras/arduino-examples/examples/02.Digital/toneMultiple/toneMultiple.ino + - extras/arduino-examples/examples/02.Digital/tonePitchFollower/tonePitchFollower.ino - extras/arduino-examples/examples/03.Analog/AnalogInOutSerial/AnalogInOutSerial.ino - extras/arduino-examples/examples/03.Analog/AnalogInput/AnalogInput.ino - extras/arduino-examples/examples/03.Analog/Calibration/Calibration.ino From 3a5173f8034bd5c823e3dd232e51feb1582e168f Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 17 Jun 2025 16:33:18 +0530 Subject: [PATCH 091/366] cores/xmc: Review comments work. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 64c870df..bbec0e95 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -3,9 +3,10 @@ static XMC_CCU4_SLICE_t *active_pwm4_slice = nullptr; // Active CCU4 slice static XMC_CCU8_SLICE_t *active_pwm8_slice = nullptr; // Active CCU8 slice static XMC_CCU4_MODULE_t *active_pwm4_ccu = nullptr; // Active CCU4 module static XMC_CCU8_MODULE_t *active_pwm8_ccu = nullptr; // Active CCU8 module -uint8_t slice_number; +volatile uint8_t slice_number_ccu4; +volatile uint8_t slice_number_ccu8; + -static volatile bool timer_interrupt_ccu4 = false; #ifdef __cplusplus extern "C" { @@ -13,20 +14,19 @@ extern "C" { void CCU43_0_IRQHandler(void) { if(active_pwm4_slice != nullptr && active_pwm4_ccu != nullptr) { XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); - XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number); // Disable the clock + XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); // Disable the clock active_pwm4_slice = nullptr; // Clear the active CCU4 slice active_pwm4_ccu = nullptr; // Clear the active CCU4 module } if(active_pwm8_slice != nullptr && active_pwm8_ccu != nullptr) { XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); - XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number); + XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number_ccu8); active_pwm8_slice = nullptr; // Clear the active CCU8 slice active_pwm8_ccu = nullptr; // Clear the active CCU8 module } -XMC_CCU4_SLICE_StopTimer(CCU43_CC40); + XMC_CCU4_SLICE_StopTimer(CCU43_CC40); XMC_CCU4_SLICE_ClearEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - timer_interrupt_ccu4 = true; } @@ -48,7 +48,7 @@ class Tone { XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; active_pwm4_slice = pwm4->slice; // Store the active CCU4 slice active_pwm4_ccu = pwm4->ccu; // Store the active CCU4 module - slice_number = pwm4->slice_num; // Store the slice number + slice_number_ccu4 = pwm4->slice_num; // Store the slice number configureTone(pin, frequency); XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); @@ -62,6 +62,7 @@ class Tone { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; active_pwm8_slice = pwm8->slice; // Store the active CCU8 slice active_pwm8_ccu = pwm8->ccu; // Store the active CCU8 module + slice_number_ccu8 = pwm8->slice_num; configureTone(pin, frequency); XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); @@ -95,7 +96,6 @@ class Tone { private: void configureTone(pin_size_t pin, unsigned int frequency) { int pin_index; - timer_interrupt_ccu4 = false; if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; @@ -145,7 +145,6 @@ class Tone { } void configureTimerInterrupt(unsigned long duration_ms) { - timer_interrupt_ccu4 = false; XMC_CCU4_Init(CCU43, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); XMC_CCU4_SLICE_COMPARE_CONFIG_t timer_config; timer_config.timer_mode = XMC_CCU4_SLICE_TIMER_COUNT_MODE_EA; From bdc20d7ca5929aeea6248d73d85a1d06a854cbb4 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 18 Jun 2025 12:11:48 +0530 Subject: [PATCH 092/366] cores/xmc: Modify timer interrupt. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 52 +++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index bbec0e95..6b388ba9 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -5,6 +5,8 @@ static XMC_CCU4_MODULE_t *active_pwm4_ccu = nullptr; // Active CCU4 module static XMC_CCU8_MODULE_t *active_pwm8_ccu = nullptr; // Active CCU8 module volatile uint8_t slice_number_ccu4; volatile uint8_t slice_number_ccu8; +volatile uint32_t software_counter = 0; +volatile uint32_t required_duration_ticks = 0; @@ -12,22 +14,27 @@ volatile uint8_t slice_number_ccu8; extern "C" { #endif void CCU43_0_IRQHandler(void) { -if(active_pwm4_slice != nullptr && active_pwm4_ccu != nullptr) { - XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); - XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); // Disable the clock - - active_pwm4_slice = nullptr; // Clear the active CCU4 slice - active_pwm4_ccu = nullptr; // Clear the active CCU4 module -} -if(active_pwm8_slice != nullptr && active_pwm8_ccu != nullptr) { - XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); - XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number_ccu8); - active_pwm8_slice = nullptr; // Clear the active CCU8 slice - active_pwm8_ccu = nullptr; // Clear the active CCU8 module -} - XMC_CCU4_SLICE_StopTimer(CCU43_CC40); + software_counter++; + if(software_counter >= required_duration_ticks){ + if(active_pwm4_slice != nullptr && active_pwm4_ccu != nullptr) { + XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); + XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); // Disable the clock + + active_pwm4_slice = nullptr; // Clear the active CCU4 slice + active_pwm4_ccu = nullptr; // Clear the active CCU4 module + } + if(active_pwm8_slice != nullptr && active_pwm8_ccu != nullptr) { + XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); + XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number_ccu8); + active_pwm8_slice = nullptr; // Clear the active CCU8 slice + active_pwm8_ccu = nullptr; // Clear the active CCU8 module + } + XMC_CCU4_SLICE_StopTimer(CCU43_CC40); + XMC_CCU4_SLICE_ClearEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + software_counter = 0; + NVIC_DisableIRQ(CCU43_0_IRQn); + } XMC_CCU4_SLICE_ClearEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - } #ifdef __cplusplus @@ -44,6 +51,7 @@ class Tone { void play(pin_size_t pin, unsigned int frequency, unsigned long duration) { int pin_index; + stop(pin); if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; active_pwm4_slice = pwm4->slice; // Store the active CCU4 slice @@ -91,6 +99,9 @@ class Tone { XMC_CCU8_DisableClock(pwm8->ccu, pwm8->slice_num); // Disable the clock } #endif + software_counter = 0; + required_duration_ticks = 0; + NVIC_DisableIRQ(CCU43_0_IRQn); } private: @@ -145,19 +156,22 @@ class Tone { } void configureTimerInterrupt(unsigned long duration_ms) { + software_counter = 0; XMC_CCU4_Init(CCU43, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); XMC_CCU4_SLICE_COMPARE_CONFIG_t timer_config; timer_config.timer_mode = XMC_CCU4_SLICE_TIMER_COUNT_MODE_EA; - timer_config.monoshot = XMC_CCU4_SLICE_TIMER_REPEAT_MODE_SINGLE; + timer_config.monoshot = XMC_CCU4_SLICE_TIMER_REPEAT_MODE_REPEAT; timer_config.prescaler_mode = XMC_CCU4_SLICE_PRESCALER_MODE_NORMAL; - timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_32768; + timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_64; timer_config.float_limit = XMC_CCU4_SLICE_PRESCALER_32768; timer_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; XMC_CCU4_SLICE_CompareInit(CCU43_CC40, &timer_config); // Calculate period for the timer based on the duration - uint32_t timer_ticks = (PCLK / 32768) * duration_ms / 1000; - XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU43_CC40, timer_ticks); + uint32_t timer_freq = PCLK / 64; + uint32_t timer_ticks_ms = timer_freq /1000; + required_duration_ticks = duration_ms; + XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU43_CC40, timer_ticks_ms); XMC_CCU4_SetMultiChannelShadowTransferMode(CCU43, XMC_CCU4_MULTI_CHANNEL_SHADOW_TRANSFER_SW_SLICE0); XMC_CCU4_EnableShadowTransfer(CCU43,XMC_CCU4_SHADOW_TRANSFER_SLICE_0); XMC_CCU4_SLICE_SetInterruptNode(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, XMC_CCU4_SLICE_SR_ID_0); From 238c092c30170f8749c518a9b8eb89af5a098d32 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 18 Jun 2025 17:04:12 +0530 Subject: [PATCH 093/366] tests: Format check. Signed-off-by: MDin --- tests/test_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_config.h b/tests/test_config.h index c62da840..766fd315 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -16,7 +16,7 @@ #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 #define TEST_PIN_SYNC_IO 4 // IO_1 -#define TEST_PIN_PULSE 5 // IO_2 +#define TEST_PIN_PULSE 5 // IO_2 #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz From 481adbf28d9b01ab246ce465d15ef835f0fa2c28 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 18 Jun 2025 17:05:30 +0530 Subject: [PATCH 094/366] tests: Format correct. Signed-off-by: MDin --- tests/test_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_config.h b/tests/test_config.h index 766fd315..c62da840 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -16,7 +16,7 @@ #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 #define TEST_PIN_SYNC_IO 4 // IO_1 -#define TEST_PIN_PULSE 5 // IO_2 +#define TEST_PIN_PULSE 5 // IO_2 #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz From 3e30807712aeea84de8e58106ed47ac2b6423f3a Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 20 Jun 2025 10:59:32 +0200 Subject: [PATCH 095/366] core/xmc: Changes the ccu of the timer in Tone to one without conflicts. Signed-off-by: zhanglinjing --- cores/xmc/Tone.cpp | 77 ++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 6b388ba9..2e1bf155 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,40 +1,38 @@ #include "Arduino.h" static XMC_CCU4_SLICE_t *active_pwm4_slice = nullptr; // Active CCU4 slice static XMC_CCU8_SLICE_t *active_pwm8_slice = nullptr; // Active CCU8 slice -static XMC_CCU4_MODULE_t *active_pwm4_ccu = nullptr; // Active CCU4 module -static XMC_CCU8_MODULE_t *active_pwm8_ccu = nullptr; // Active CCU8 module +static XMC_CCU4_MODULE_t *active_pwm4_ccu = nullptr; // Active CCU4 module +static XMC_CCU8_MODULE_t *active_pwm8_ccu = nullptr; // Active CCU8 module volatile uint8_t slice_number_ccu4; volatile uint8_t slice_number_ccu8; volatile uint32_t software_counter = 0; volatile uint32_t required_duration_ticks = 0; - - #ifdef __cplusplus extern "C" { #endif -void CCU43_0_IRQHandler(void) { +void CCU43_2_IRQHandler(void) { software_counter++; - if(software_counter >= required_duration_ticks){ - if(active_pwm4_slice != nullptr && active_pwm4_ccu != nullptr) { + if (software_counter >= required_duration_ticks) { + if (active_pwm4_slice != nullptr && active_pwm4_ccu != nullptr) { XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); // Disable the clock active_pwm4_slice = nullptr; // Clear the active CCU4 slice - active_pwm4_ccu = nullptr; // Clear the active CCU4 module + active_pwm4_ccu = nullptr; // Clear the active CCU4 module } - if(active_pwm8_slice != nullptr && active_pwm8_ccu != nullptr) { + if (active_pwm8_slice != nullptr && active_pwm8_ccu != nullptr) { XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number_ccu8); active_pwm8_slice = nullptr; // Clear the active CCU8 slice - active_pwm8_ccu = nullptr; // Clear the active CCU8 module + active_pwm8_ccu = nullptr; // Clear the active CCU8 module } - XMC_CCU4_SLICE_StopTimer(CCU43_CC40); - XMC_CCU4_SLICE_ClearEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + XMC_CCU4_SLICE_StopTimer(CCU43_CC42); + XMC_CCU4_SLICE_ClearEvent(CCU43_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); software_counter = 0; - NVIC_DisableIRQ(CCU43_0_IRQn); + NVIC_DisableIRQ(CCU43_2_IRQn); } - XMC_CCU4_SLICE_ClearEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + XMC_CCU4_SLICE_ClearEvent(CCU43_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); } #ifdef __cplusplus @@ -54,14 +52,14 @@ class Tone { stop(pin); if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; - active_pwm4_slice = pwm4->slice; // Store the active CCU4 slice - active_pwm4_ccu = pwm4->ccu; // Store the active CCU4 module + active_pwm4_slice = pwm4->slice; // Store the active CCU4 slice + active_pwm4_ccu = pwm4->ccu; // Store the active CCU4 module slice_number_ccu4 = pwm4->slice_num; // Store the slice number configureTone(pin, frequency); XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); XMC_CCU4_SLICE_StartTimer(pwm4->slice); - if(duration >0) { + if (duration > 0) { configureTimerInterrupt(duration); } } @@ -69,19 +67,18 @@ class Tone { else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; active_pwm8_slice = pwm8->slice; // Store the active CCU8 slice - active_pwm8_ccu = pwm8->ccu; // Store the active CCU8 module + active_pwm8_ccu = pwm8->ccu; // Store the active CCU8 module slice_number_ccu8 = pwm8->slice_num; configureTone(pin, frequency); XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); XMC_CCU8_SLICE_StartTimer(pwm8->slice); // calculate pulses - if(duration >0) { + if (duration > 0) { configureTimerInterrupt(duration); } } #endif - } void stop(pin_size_t pin) { @@ -150,7 +147,6 @@ class Tone { XMC_CCU8_EnableShadowTransfer( pwm8->ccu, XMC_CCU8_SHADOW_TRANSFER_SLICE_0 | XMC_CCU8_SHADOW_TRANSFER_SLICE_2 | XMC_CCU8_SHADOW_TRANSFER_SLICE_3 | XMC_CCU8_SHADOW_TRANSFER_SLICE_1); - } #endif } @@ -159,33 +155,35 @@ class Tone { software_counter = 0; XMC_CCU4_Init(CCU43, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); XMC_CCU4_SLICE_COMPARE_CONFIG_t timer_config; - timer_config.timer_mode = XMC_CCU4_SLICE_TIMER_COUNT_MODE_EA; - timer_config.monoshot = XMC_CCU4_SLICE_TIMER_REPEAT_MODE_REPEAT; - timer_config.prescaler_mode = XMC_CCU4_SLICE_PRESCALER_MODE_NORMAL; - timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_64; - timer_config.float_limit = XMC_CCU4_SLICE_PRESCALER_32768; - timer_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - XMC_CCU4_SLICE_CompareInit(CCU43_CC40, &timer_config); + timer_config.timer_mode = XMC_CCU4_SLICE_TIMER_COUNT_MODE_EA; + timer_config.monoshot = XMC_CCU4_SLICE_TIMER_REPEAT_MODE_REPEAT; + timer_config.prescaler_mode = XMC_CCU4_SLICE_PRESCALER_MODE_NORMAL; + timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_64; + timer_config.float_limit = XMC_CCU4_SLICE_PRESCALER_32768; + timer_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + XMC_CCU4_SLICE_CompareInit(CCU43_CC42, &timer_config); // Calculate period for the timer based on the duration uint32_t timer_freq = PCLK / 64; - uint32_t timer_ticks_ms = timer_freq /1000; + uint32_t timer_ticks_ms = timer_freq / 1000; required_duration_ticks = duration_ms; - XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU43_CC40, timer_ticks_ms); - XMC_CCU4_SetMultiChannelShadowTransferMode(CCU43, XMC_CCU4_MULTI_CHANNEL_SHADOW_TRANSFER_SW_SLICE0); - XMC_CCU4_EnableShadowTransfer(CCU43,XMC_CCU4_SHADOW_TRANSFER_SLICE_0); - XMC_CCU4_SLICE_SetInterruptNode(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, XMC_CCU4_SLICE_SR_ID_0); - XMC_CCU4_SLICE_EnableEvent(CCU43_CC40, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - XMC_CCU4_EnableClock(CCU43, 0); + XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU43_CC42, timer_ticks_ms); + XMC_CCU4_SetMultiChannelShadowTransferMode( + CCU43, XMC_CCU4_MULTI_CHANNEL_SHADOW_TRANSFER_SW_SLICE2); + XMC_CCU4_EnableShadowTransfer(CCU43, XMC_CCU4_SHADOW_TRANSFER_SLICE_2); + XMC_CCU4_SLICE_SetInterruptNode(CCU43_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, + XMC_CCU4_SLICE_SR_ID_2); + XMC_CCU4_SLICE_EnableEvent(CCU43_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); + XMC_CCU4_EnableClock(CCU43, 2); // Enable the NVIC interrupt - XMC_CCU4_SLICE_SetTimerValue(CCU43_CC40, 0U); + XMC_CCU4_SLICE_SetTimerValue(CCU43_CC42, 0U); // Start the timer - XMC_CCU4_SLICE_StartTimer(CCU43_CC40); - NVIC_SetPriority(CCU43_0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 63, 0)); + XMC_CCU4_SLICE_StartTimer(CCU43_CC42); + NVIC_SetPriority(CCU43_2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 63, 0)); - NVIC_EnableIRQ(CCU43_0_IRQn); + NVIC_EnableIRQ(CCU43_2_IRQn); } // Scan the pwm pin mapping table @@ -210,4 +208,3 @@ void tone(pin_size_t pin, unsigned int frequency, unsigned long duration) { } void noTone(pin_size_t pin) { inst_Tone.stop(pin); } - From d46d2a52bc38ceaacb0ee031de6f8a241bb17516 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 23 Jun 2025 17:25:30 +0200 Subject: [PATCH 096/366] extras: Add arduino-devops and and makers-devops. Signed-off-by: zhanglinjing --- .gitmodules | 6 ++++++ extras/arduino-devops | 1 + extras/makers-devops | 1 + 3 files changed, 8 insertions(+) create mode 160000 extras/arduino-devops create mode 160000 extras/makers-devops diff --git a/.gitmodules b/.gitmodules index e47e2d81..442e75b4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,9 @@ [submodule "extras/arduino-examples"] path = extras/arduino-examples url = https://github.com/arduino/arduino-examples.git +[submodule "extras/arduino-devops"] + path = extras/arduino-devops + url = https://github.com/Infineon/arduino-devops.git +[submodule "extras/makers-devops"] + path = extras/makers-devops + url = https://github.com/Infineon/makers-devops.git diff --git a/extras/arduino-devops b/extras/arduino-devops new file mode 160000 index 00000000..6ed306d6 --- /dev/null +++ b/extras/arduino-devops @@ -0,0 +1 @@ +Subproject commit 6ed306d6fb3219a2d12b32ff82820d8812998448 diff --git a/extras/makers-devops b/extras/makers-devops new file mode 160000 index 00000000..377170f8 --- /dev/null +++ b/extras/makers-devops @@ -0,0 +1 @@ +Subproject commit 377170f8456d9ee4c7836fb39ee25776ab66f446 From b5d87bfe3e754076acea2d58a5f4695ebbcdd4ab Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 25 Jun 2025 15:45:46 +0000 Subject: [PATCH 097/366] tools/: Fix Jlink auto update issue in xmc-flasher. Signed-off-by: zhanglinjing --- tools/xmc-flasher.py | 70 ++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/tools/xmc-flasher.py b/tools/xmc-flasher.py index 9f7d276b..d0833dd3 100755 --- a/tools/xmc-flasher.py +++ b/tools/xmc-flasher.py @@ -54,25 +54,31 @@ def get_device_serial_number(port): return device[1] return None -def create_jlink_loadbin_command_file(binfile): - cmd_load_bin = 'loadbin ' + binfile + ' 0x0\n' +def create_jlink_loadbin_command_file(binfile, enable_update): + lines = [] + if not enable_update: + lines.append('exec DisableAutoUpdateFW\n') + lines += ['r\n', 'h\n', f'loadbin {binfile} 0x0\n', 'r\n', 'g\n', 'exit\n'] with open(cmd_jlink,'w') as f: - f.writelines(['r\n', 'h\n', cmd_load_bin, 'r\n', 'g\n', 'exit\n']) - + f.writelines(lines) return cmd_jlink -def create_jlink_mem_read_command_file(addr, bytes): - #cmd_log_enable - cmd_mem_read = 'mem ' + addr +', '+ bytes + '\n' # todo: store register maps, bytes in file +def create_jlink_mem_read_command_file(addr, bytes, enable_update): + lines = [] + if not enable_update: + lines.append('exec DisableAutoUpdateFW\n') + lines += [f'mem {addr}, {bytes}\n', 'r\n', 'g\n', 'exit\n'] with open(cmd_jlink,'w') as f: - f.writelines([cmd_mem_read, 'r\n', 'g\n', 'exit\n']) - + f.writelines(lines) return cmd_jlink -def create_jlink_erase_command_file(): +def create_jlink_erase_command_file(enable_update): + lines = [] + if not enable_update: + lines.append('exec DisableAutoUpdateFW\n') + lines += ['r\n', 'h\n', 'erase\n', 'exit\n'] with open(cmd_jlink,'w') as f: - f.writelines(['r\n', 'h\n', 'erase\n', 'exit\n']) - + f.writelines(lines) return cmd_jlink def remove_jlink_command_file(cmd_file): @@ -94,7 +100,7 @@ def remove_backspaces(input_str): return ''.join(result) def jlink_commander(device, serial_num, cmd_file, console_output=False): - jlink_cmd = [jlinkexe, '-autoconnect', '1','-exitonerror', '1', '-nogui', '1', '-device', device, '-selectemubysn', serial_num, '-if', 'swd', '-speed', '4000', '-commandfile', cmd_file] + jlink_cmd = [jlinkexe, '-autoconnect', '1','-exitonerror', '1', '-nogui', '1', '-device', device, '-SelectEmuBySN', serial_num, '-if', 'swd', '-speed', '4000', '-commandfile', cmd_file] #if console_output is True: #jlink_cmd.append('-log ') #todo: pipe this in a better way @@ -125,13 +131,13 @@ def check_serial_number(serial_num): if serial_num == None: raise Exception("Device not found! Please check the serial port") -def get_mem_contents(addr, bytes, device, port): +def get_mem_contents(addr, bytes, device, port, enable_update): try: serial_num = get_device_serial_number(port) check_serial_number(serial_num) except ValueError as e: print(e) - jlink_cmd_file = create_jlink_mem_read_command_file(addr, bytes) # todo: comes from proper metafile + jlink_cmd_file = create_jlink_mem_read_command_file(addr, bytes, enable_update) # todo: comes from proper metafile jlink_commander(device, serial_num, jlink_cmd_file, True) remove_jlink_command_file(jlink_cmd_file) @@ -143,6 +149,8 @@ def get_mem_contents(addr, bytes, device, port): reg_contents = "" for line in lines : + if getattr(sys, 'verbose', True): + print(f"JLink Log: {line}") if addr in line and '=' in line: reg_contents = re.findall('[0-9,A-F]+', line) break @@ -165,11 +173,11 @@ def find_device_by_value(value): return device return None -def check_device(device, port): +def check_device(device, port, enable_update): master_data = read_master_data() # get value from reg - device_value = get_mem_contents(master_data[device]['IDCHIP']['addr'], master_data[device]['IDCHIP']['size'], device, port) + device_value = get_mem_contents(master_data[device]['IDCHIP']['addr'], master_data[device]['IDCHIP']['size'], device, port, enable_update) device_value_masked = (int('0x'+device_value,16)) & (int('0x'+master_data[device]['IDCHIP']['mask'],16)) # take only those bits which are needed device_value_masked = f'{device_value_masked:x}' device_value_masked = device_value_masked.zfill(int(master_data[device]['IDCHIP']['size'])*2) @@ -183,12 +191,12 @@ def check_device(device, port): print(f"Connected Device is: {real_device}.") raise Exception(f"Device connected on port {port} does not match the selected device to flash") -def check_mem(device, port): +def check_mem(device, port, enable_update): if "XMC1" in device: master_data = read_master_data() # get value from reg - device_value = get_mem_contents(master_data[device]['FLSIZE']['addr'], master_data[device]['FLSIZE']['size'], device, port) + device_value = get_mem_contents(master_data[device]['FLSIZE']['addr'], master_data[device]['FLSIZE']['size'], device, port, enable_update) device_value = int('0x'+device_value,16) & int('0x0003f000',16) # bit 17 to bit 12 are needed device_value = device_value >> int(master_data[device]['FLSIZE']['bitposition_LSB']) flash_size = (device_value-1)*4 #flash size given by (ADDR-1)*4 @@ -208,7 +216,7 @@ def check_mem(device, port): else: #XMC4 series master_data = read_master_data() # get value from reg - device_value = get_mem_contents(master_data[device]['FLASH0_ID']['addr'], master_data[device]['FLASH0_ID']['size'], device, port) + device_value = get_mem_contents(master_data[device]['FLASH0_ID']['addr'], master_data[device]['FLASH0_ID']['size'], device, port, enable_update) device_value_masked = (int('0x'+device_value,16)) & (int('0x'+master_data[device]['FLASH0_ID']['mask'],16)) # take only those bits which are needed device_value_masked = f'{device_value_masked:x}' device_value_masked = device_value_masked.zfill(int(master_data[device]['FLASH0_ID']['size'])*2) @@ -231,15 +239,15 @@ def get_default_port(port): return port -def upload(device, port, binfile, enable_jlink_log): +def upload(device, port, binfile, enable_jlink_log, enable_update): serial_num = get_device_serial_number(port) - jlink_cmd_file = create_jlink_loadbin_command_file(binfile) - jlink_commander(device, serial_num, jlink_cmd_file, console_output=not enable_jlink_log) # console_output = true will store the log to file instead of printing + jlink_cmd_file = create_jlink_loadbin_command_file(binfile, enable_update) + jlink_commander(device, serial_num, jlink_cmd_file, console_output=not enable_jlink_log) remove_jlink_command_file(jlink_cmd_file) -def erase(device, port): +def erase(device, port, enable_update): serial_num = get_device_serial_number(port) - jlink_cmd_file = create_jlink_erase_command_file() + jlink_cmd_file = create_jlink_erase_command_file(enable_update) jlink_commander(device, serial_num, jlink_cmd_file) remove_jlink_command_file(jlink_cmd_file) @@ -252,9 +260,9 @@ def main_parser_func(args): parser.print_help() def parser_upload_func(args): - check_device(args.device, args.port) - check_mem(args.device, args.port) - upload(args.device, args.port, args.binfile, args.verbose) + check_device(args.device, args.port, args.jlink_update) + check_mem(args.device, args.port, args.jlink_update) + upload(args.device, args.port, args.binfile, args.verbose, args.jlink_update) # remove console output file if verbose is not enabled if not args.verbose: # check if upload was successful by parsing the console output @@ -276,7 +284,7 @@ def parser_upload_func(args): def parser_erase_func(args): - erase(args.device, args.port) + erase(args.device, args.port, args.jlink_update) class ver_action(argparse.Action): def __init__(self, option_strings, dest, **kwargs): @@ -299,6 +307,8 @@ def __call__(self, parser, namespace, values, option_string, **kwargs): required_upload.add_argument('-p','--port', type=str, nargs='?', const='', help='serial port') required_upload.add_argument('-f','--binfile', type=str, help='binary file to upload', required=True) required_upload.add_argument('--verbose', action='store_true', help='Enable verbose logging') + parser_upload.add_argument('--no-jlink-update', dest='jlink_update', action='store_false', help='Disable JLink firmware update (default: enabled)') + parser_upload.set_defaults(jlink_update=True) parser_upload.set_defaults(func=parser_upload_func) # Erase parser @@ -306,6 +316,8 @@ def __call__(self, parser, namespace, values, option_string, **kwargs): required_erase = parser_erase.add_argument_group('required arguments') required_erase.add_argument('-d','--device', type=str, help='jlink device name', required=True) required_erase.add_argument('-p','--port', type=str, help='serial port', required=True) + parser_erase.add_argument('--no-jlink-update', dest='jlink_update', action='store_false', help='Disable JLink firmware update (default: enabled)') + parser_erase.set_defaults(jlink_update=True) parser_erase.set_defaults(func=parser_erase_func) # debug_parser. From 8b8ffb02c2c6018b583001b8d17c99e52078a06e Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 26 Jun 2025 12:52:15 +0000 Subject: [PATCH 098/366] platform.txt: Add custon flag to turn off jlink update. Signed-off-by: zhanglinjing --- platform.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index 11cc332a..ccf71426 100644 --- a/platform.txt +++ b/platform.txt @@ -162,8 +162,9 @@ tools.xmcflasher.erase.params=-d XMC{build.board.version}-{build.board.v} -p {up tools.xmcflasher.erase.pattern=python3 {cmd.path} erase {erase.params} tools.xmcflasher.erase.pattern.windows=python {cmd.path} erase {erase.params} tools.xmcflasher.upload.protocol= +tools.xmcflasher.upload.params.custom_flag= tools.xmcflasher.upload.params.verbose=--verbose tools.xmcflasher.upload.params.quiet= -tools.xmcflasher.upload.params=-d XMC{build.board.version}-{build.board.v} -p {upload.port.address} -f {build.path}/{build.project_name}.hex {upload.verbose} +tools.xmcflasher.upload.params=-d XMC{build.board.version}-{build.board.v} -p {upload.port.address} -f {build.path}/{build.project_name}.hex {upload.verbose} {upload.custom_flag} tools.xmcflasher.upload.pattern=python3 {cmd.path} upload {upload.params} tools.xmcflasher.upload.pattern.windows=python {cmd.path} upload {upload.params} From f42448a3dd4977bdf4212cac7fb8c46b95d8528f Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Jul 2025 16:05:31 +0200 Subject: [PATCH 099/366] tools/: Improve fw flag and logger, remove auto upload in flasher. Signed-off-by: zhanglinjing --- platform.txt | 2 +- tools/xmc-flasher.py | 102 +++++++++++++++++++------------------------ 2 files changed, 47 insertions(+), 57 deletions(-) diff --git a/platform.txt b/platform.txt index ccf71426..40403938 100644 --- a/platform.txt +++ b/platform.txt @@ -162,7 +162,7 @@ tools.xmcflasher.erase.params=-d XMC{build.board.version}-{build.board.v} -p {up tools.xmcflasher.erase.pattern=python3 {cmd.path} erase {erase.params} tools.xmcflasher.erase.pattern.windows=python {cmd.path} erase {erase.params} tools.xmcflasher.upload.protocol= -tools.xmcflasher.upload.params.custom_flag= +tools.xmcflasher.upload.custom_flag= tools.xmcflasher.upload.params.verbose=--verbose tools.xmcflasher.upload.params.quiet= tools.xmcflasher.upload.params=-d XMC{build.board.version}-{build.board.v} -p {upload.port.address} -f {build.path}/{build.project_name}.hex {upload.verbose} {upload.custom_flag} diff --git a/tools/xmc-flasher.py b/tools/xmc-flasher.py index d0833dd3..0b34ca33 100755 --- a/tools/xmc-flasher.py +++ b/tools/xmc-flasher.py @@ -1,4 +1,4 @@ -import argparse, subprocess, os, sys, re, warnings, tempfile +import argparse, subprocess, os, sys, re, tempfile, logging from serial.tools.list_ports import comports from xmc_data import xmc_master_data @@ -43,7 +43,7 @@ def discover_jlink_devices(): jlink_pattern = r'[Jj][-\s]?[Ll][Ii][Nn][Kk]' for p in ports: if re.search(jlink_pattern, p.description): - port_sn_list.append((p.device, p.serial_number)) + port_sn_list.append((p.device, p.serial_number, p.description)) return port_sn_list @@ -136,28 +136,23 @@ def get_mem_contents(addr, bytes, device, port, enable_update): serial_num = get_device_serial_number(port) check_serial_number(serial_num) except ValueError as e: - print(e) + logging.error(e) jlink_cmd_file = create_jlink_mem_read_command_file(addr, bytes, enable_update) # todo: comes from proper metafile jlink_commander(device, serial_num, jlink_cmd_file, True) remove_jlink_command_file(jlink_cmd_file) - with open(console_out,'r') as f: lines = f.readlines() lines[0].split('\n') - remove_console_output_file(console_out) - reg_contents = "" for line in lines : - if getattr(sys, 'verbose', True): - print(f"JLink Log: {line}") + logging.debug(f"JLink Log: {line.strip()}") if addr in line and '=' in line: reg_contents = re.findall('[0-9,A-F]+', line) break - if not reg_contents: + logging.error(f"Wrong COM Port selected! {port}") raise Exception(f"Wrong COM Port selected! {port}\n") - reg_contents.remove(addr) # remove the addr from the list, just keep reg contents reg_contents.reverse() # jlink returns LSB first, so reverse it to get MSB on the left side reg_contents = ''.join(reg_contents) @@ -174,25 +169,22 @@ def find_device_by_value(value): return None def check_device(device, port, enable_update): - master_data = read_master_data() # get value from reg device_value = get_mem_contents(master_data[device]['IDCHIP']['addr'], master_data[device]['IDCHIP']['size'], device, port, enable_update) device_value_masked = (int('0x'+device_value,16)) & (int('0x'+master_data[device]['IDCHIP']['mask'],16)) # take only those bits which are needed device_value_masked = f'{device_value_masked:x}' device_value_masked = device_value_masked.zfill(int(master_data[device]['IDCHIP']['size'])*2) - - print(f"Selected Device is: {device}.") - + logging.info(f"Selected Device is: {device}.") real_device = find_device_by_value(device_value_masked) #compare with stored master data if not real_device == device: if real_device != None: - print(f"Connected Device is: {real_device}.") - raise Exception(f"Device connected on port {port} does not match the selected device to flash") + logging.info(f"Connected Device is: {real_device}.") + logging.error(f"Device connected on port {port} does not match the selected device {device}.") + raise Exception("Device connection mismatch.") def check_mem(device, port, enable_update): - if "XMC1" in device: master_data = read_master_data() # get value from reg @@ -201,18 +193,15 @@ def check_mem(device, port, enable_update): device_value = device_value >> int(master_data[device]['FLSIZE']['bitposition_LSB']) flash_size = (device_value-1)*4 #flash size given by (ADDR-1)*4 flash_size = str(flash_size).zfill(4) - - print(f"Flash size is: {int(flash_size)}kB.") - + logging.info(f"Flash size is: {int(flash_size)}kB.") # special case for XMC2GO-32kB variant, bypass check if "XMC1100" in device and int(flash_size) == 32: - warnings.warn("XMC2GO 32kB varaint detected!") + logging.warning("XMC2GO 32kB varaint detected!") return - #compare with selected device if not flash_size == device.split('-')[1]: - raise Exception("Memory size of device connected does not match that of the selected device to flash") - + logging.error(f"Memory size of device connected {flash_size} does not match that of the selected device to flash: {device.split('-')[1]}") + raise Exception("Memory size mismatch.") else: #XMC4 series master_data = read_master_data() # get value from reg @@ -220,25 +209,23 @@ def check_mem(device, port, enable_update): device_value_masked = (int('0x'+device_value,16)) & (int('0x'+master_data[device]['FLASH0_ID']['mask'],16)) # take only those bits which are needed device_value_masked = f'{device_value_masked:x}' device_value_masked = device_value_masked.zfill(int(master_data[device]['FLASH0_ID']['size'])*2) - #compare with stored master data if not device_value_masked.upper() == master_data[device]['FLASH0_ID']['value']: - raise Exception("Memory size of device connected does not match that of the selected device to flash") + logging.error(f"Memory size of device connected {flash_size} does not match that of the selected device to flash: {device.split('-')[1]}") + raise Exception("Memory size mismatch.") -def get_default_port(port): +def check_port(port): serial_num = get_device_serial_number(port) if serial_num == None or port == None: port_sn_list = discover_jlink_devices() for port_sn in port_sn_list: if port_sn[1] != None: real_port = port_sn[0] - print(f"Device found on port: {real_port}, not on the selected port: {port}.") - print(f"Automatically selecting port {real_port}...") - return real_port + logging.error(f"Device found:{port_sn_list}. You select {port}. Please select the correct port.") + raise Exception("Wrong COM Port selected.") else: - return port + return - def upload(device, port, binfile, enable_jlink_log, enable_update): serial_num = get_device_serial_number(port) jlink_cmd_file = create_jlink_loadbin_command_file(binfile, enable_update) @@ -254,44 +241,51 @@ def erase(device, port, enable_update): def debug(device, port, elfile): pass #TBD +def setup_logger(verbose=False): + if verbose: + level = logging.DEBUG + else: + level = logging.INFO + logging.basicConfig( + level=level, + format="%(asctime)s [%(levelname)s] %(message)s", + datefmt="%H:%M:%S" + ) + def parser(): def main_parser_func(args): parser.print_help() def parser_upload_func(args): - check_device(args.device, args.port, args.jlink_update) - check_mem(args.device, args.port, args.jlink_update) - upload(args.device, args.port, args.binfile, args.verbose, args.jlink_update) - # remove console output file if verbose is not enabled + + check_port(args.port) + check_device(args.device, args.port, args.fw_jlink_update) + check_mem(args.device, args.port, args.fw_jlink_update) + upload(args.device, args.port, args.binfile, args.verbose, args.fw_jlink_update) if not args.verbose: - # check if upload was successful by parsing the console output with open(console_out, 'r') as f: found_loadbin = False for line in f: if "J-Link>loadbin" in line: found_loadbin = True elif found_loadbin and "O.K." in line: - print("Upload successful.") + logging.info("Upload successful.") break else: - print("Upload failed.") + logging.error("Upload failed.") remove_console_output_file(console_out) - - # Log if the port value has changed - if args.port != original_port: - print(f"Please select port {args.port} for using the Serial Monitor or Plotter.") def parser_erase_func(args): - erase(args.device, args.port, args.jlink_update) + erase(args.device, args.port, args.fw_jlink_update) class ver_action(argparse.Action): def __init__(self, option_strings, dest, **kwargs): return super().__init__(option_strings, dest, nargs=0, default=argparse.SUPPRESS, **kwargs) def __call__(self, parser, namespace, values, option_string, **kwargs): - print('xmc-flasher version: ' + version) + logging.info('xmc-flasher version: ' + version) parser.exit() # General parser @@ -307,8 +301,8 @@ def __call__(self, parser, namespace, values, option_string, **kwargs): required_upload.add_argument('-p','--port', type=str, nargs='?', const='', help='serial port') required_upload.add_argument('-f','--binfile', type=str, help='binary file to upload', required=True) required_upload.add_argument('--verbose', action='store_true', help='Enable verbose logging') - parser_upload.add_argument('--no-jlink-update', dest='jlink_update', action='store_false', help='Disable JLink firmware update (default: enabled)') - parser_upload.set_defaults(jlink_update=True) + parser_upload.add_argument('--no-fw-update', dest='fw_jlink_update', action='store_false', help='Disable JLink firmware update (default: enabled)') + parser_upload.set_defaults(fw_jlink_update=True) parser_upload.set_defaults(func=parser_upload_func) # Erase parser @@ -316,8 +310,8 @@ def __call__(self, parser, namespace, values, option_string, **kwargs): required_erase = parser_erase.add_argument_group('required arguments') required_erase.add_argument('-d','--device', type=str, help='jlink device name', required=True) required_erase.add_argument('-p','--port', type=str, help='serial port', required=True) - parser_erase.add_argument('--no-jlink-update', dest='jlink_update', action='store_false', help='Disable JLink firmware update (default: enabled)') - parser_erase.set_defaults(jlink_update=True) + parser_erase.add_argument('--no-fw-update', dest='fw_jlink_update', action='store_false', help='Disable JLink firmware update (default: enabled)') + parser_erase.set_defaults(fw_jlink_update=True) parser_erase.set_defaults(func=parser_erase_func) # debug_parser. @@ -325,18 +319,14 @@ def __call__(self, parser, namespace, values, option_string, **kwargs): # Parse arguments args = parser.parse_args() - # Set traceback limit based on the --verbose argument + + # Logging option + setup_logger(verbose=args.verbose) if args.verbose: sys.tracebacklimit = None # Enable full traceback else: sys.tracebacklimit = 0 # Disable traceback - # Store the original port value - original_port = args.port - - # Select default port if not provided/ or device not found on the selected port - args.port = get_default_port(args.port) - # Parser call args.func(args) From 03137f0997cf83fb41593bed058ba4cbb32017b1 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Jul 2025 18:11:14 +0200 Subject: [PATCH 100/366] tools/xmc-flasher.py: Fix typo. Signed-off-by: zhanglinjing --- tools/xmc-flasher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/xmc-flasher.py b/tools/xmc-flasher.py index 0b34ca33..56d47050 100755 --- a/tools/xmc-flasher.py +++ b/tools/xmc-flasher.py @@ -196,7 +196,7 @@ def check_mem(device, port, enable_update): logging.info(f"Flash size is: {int(flash_size)}kB.") # special case for XMC2GO-32kB variant, bypass check if "XMC1100" in device and int(flash_size) == 32: - logging.warning("XMC2GO 32kB varaint detected!") + logging.warning("XMC2GO 32kB variant detected!") return #compare with selected device if not flash_size == device.split('-')[1]: From 8d1472d6d8e832792ef3ce0559d44f4f92b58eca Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 17 Mar 2025 16:07:16 +0100 Subject: [PATCH 101/366] package/: Rename vendor to "infineon". Signed-off-by: zhanglinjing --- package/package_infineon_index.template.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/package_infineon_index.template.json b/package/package_infineon_index.template.json index e39fc7f5..c7321839 100644 --- a/package/package_infineon_index.template.json +++ b/package/package_infineon_index.template.json @@ -1,7 +1,7 @@ { "packages": [ { - "name": "Infineon", + "name": "infineon", "maintainer": "Infineon Technologies AG", "websiteURL": "https://github.com/Infineon/xmc-for-arduino", "email": "", From 29a5660ed7b7f1ab5597f5e7ec204bf056fdcf60 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 17 Mar 2025 16:27:09 +0100 Subject: [PATCH 102/366] tests/hil-unity-checklist.yaml: Rename the vendor name for HIL. Signed-off-by: zhanglinjing --- tests/hil-unity-checklist.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/hil-unity-checklist.yaml b/tests/hil-unity-checklist.yaml index e56a53cd..4ffd1b30 100644 --- a/tests/hil-unity-checklist.yaml +++ b/tests/hil-unity-checklist.yaml @@ -1,4 +1,4 @@ -Infineon.xmc.XMC4700_Relax_Kit: +infineon.xmc.XMC4700_Relax_Kit: CAN: 1: - "test_can_connected2_node2" @@ -19,7 +19,7 @@ Infineon.xmc.XMC4700_Relax_Kit: - "test_uart_connected2_rx" -Infineon.xmc.XMC1400_XMC2GO: +infineon.xmc.XMC1400_XMC2GO: CAN: 1: - "test_can_connected2_node2" @@ -33,7 +33,7 @@ Infineon.xmc.XMC1400_XMC2GO: - "test_wire_connected2_masterpingpong" -Infineon.xmc.XMC1100_XMC2GO: +infineon.xmc.XMC1100_XMC2GO: Wire: 1: - "test_wire_connected2_slavepingpong" From fc904994d54edeb2489badcea7aa6aaf3e9200ec Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 18 Mar 2025 11:47:47 +0100 Subject: [PATCH 103/366] package/package_infineon_index.template.json: Change packager name. Signed-off-by: zhanglinjing --- package/package_infineon_index.template.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/package_infineon_index.template.json b/package/package_infineon_index.template.json index c7321839..634eadd8 100644 --- a/package/package_infineon_index.template.json +++ b/package/package_infineon_index.template.json @@ -49,7 +49,7 @@ ], "toolsDependencies": [ { - "packager": "Infineon", + "packager": "infineon", "name": "arm-none-eabi-gcc", "version": "10.3-2021.10" } From 54162f05ba1a2af0dc0bdd63e79865c00ecbe7c6 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Jul 2025 17:00:09 +0200 Subject: [PATCH 104/366] package: Apply metafile name conventions. Signed-off-by: zhanglinjing --- package/config.yml | 2 +- ....template.json => package_xmc_index.template.json} | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) rename package/{package_infineon_index.template.json => package_xmc_index.template.json} (94%) diff --git a/package/config.yml b/package/config.yml index 43c4104c..af52c4ba 100644 --- a/package/config.yml +++ b/package/config.yml @@ -11,7 +11,7 @@ include: - platform.txt - programmers.txt - README.md -index-name: package_infineon_index +index-name: package_xmc_index server: type: github owner: Infineon diff --git a/package/package_infineon_index.template.json b/package/package_xmc_index.template.json similarity index 94% rename from package/package_infineon_index.template.json rename to package/package_xmc_index.template.json index 634eadd8..9ed47ade 100644 --- a/package/package_infineon_index.template.json +++ b/package/package_xmc_index.template.json @@ -3,14 +3,11 @@ { "name": "infineon", "maintainer": "Infineon Technologies AG", - "websiteURL": "https://github.com/Infineon/xmc-for-arduino", - "email": "", - "help": { - "online": "https://xmc-arduino.readthedocs.io/en/latest/index.html" - }, + "websiteURL": "https://xmc-arduino.readthedocs.io/en/latest/index.html", + "email": "maker@infineon.com", "platforms": [ { - "name": "Infineon's XMC Microcontroller", + "name": "Infineon XMC Boards", "architecture": "xmc", "version": "", "category": "Contributed", @@ -19,7 +16,7 @@ "checksum": "", "size": "", "help": { - "online": "https://xmc-arduino.readthedocs.io/en/latest/index.html" + "online": "" }, "boards": [ { From 4d9342392fe6eaae401749389208da54e23ea38f Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Jul 2025 17:00:34 +0200 Subject: [PATCH 105/366] platform.txt: Apply metafile name conventions. Signed-off-by: zhanglinjing --- platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index 40403938..4fa782d7 100644 --- a/platform.txt +++ b/platform.txt @@ -5,7 +5,7 @@ # The information about this Arduino compatible environment # --------- -name=XMC Family +name=Infineon XMC Boards # The version field is automatically added during # the core release packaging. Leave empty. version= From 4be80e3fb9f5b8fa9ecdb45100cb0316f89c52f3 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Jul 2025 17:04:42 +0200 Subject: [PATCH 106/366] extras: Update arduino-devops. Signed-off-by: zhanglinjing --- extras/arduino-devops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-devops b/extras/arduino-devops index 6ed306d6..79b4899b 160000 --- a/extras/arduino-devops +++ b/extras/arduino-devops @@ -1 +1 @@ -Subproject commit 6ed306d6fb3219a2d12b32ff82820d8812998448 +Subproject commit 79b4899b01c698ca50d292e383c03051bd33c8d1 From 67ad85b6483c68a6a61b8faa50cca6e8db89e263 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Jul 2025 17:10:47 +0200 Subject: [PATCH 107/366] ci-matrix-config.yml: Change naming to infineon. Signed-off-by: zhanglinjing --- ci-matrix-config.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 0aad9569..88e627e7 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -29,7 +29,7 @@ sketch: - extras/arduino-examples/examples/05.Control/ForLoopIteration/ForLoopIteration.ino fqbn: - - Infineon:xmc:XMC4700_Relax_Kit + - infineon:xmc:XMC4700_Relax_Kit # sketch: # - libraries/LED @@ -41,33 +41,33 @@ fqbn: # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino # include: -# - fqbn: Infineon:xmc:XMC1100_Boot_Kit +# - fqbn: infineon:xmc:XMC1100_Boot_Kit # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: Infineon:xmc:XMC1100_XMC2GO +# - fqbn: infineon:xmc:XMC1100_XMC2GO # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: Infineon:xmc:XMC1300_Boot_Kit +# - fqbn: infineon:xmc:XMC1300_Boot_Kit # sketch: # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: Infineon:xmc:XMC1400_XMC2GO +# - fqbn: infineon:xmc:XMC1400_XMC2GO # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino # - libraries/CAN -# - fqbn: Infineon:xmc:XMC1400_Arduino_Kit +# - fqbn: infineon:xmc:XMC1400_Arduino_Kit # sketch: # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: Infineon:xmc:XMC4200_Platform2GO +# - fqbn: infineon:xmc:XMC4200_Platform2GO # sketch: # - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino # - libraries/CAN -# - fqbn: Infineon:xmc:XMC4400_Platform2GO +# - fqbn: infineon:xmc:XMC4400_Platform2GO # sketch: # - libraries/CAN -# - fqbn: Infineon:xmc:XMC4700_Relax_Kit +# - fqbn: infineon:xmc:XMC4700_Relax_Kit # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino @@ -76,17 +76,17 @@ fqbn: # - libraries/CAN # exclude: -# - fqbn: Infineon:xmc:XMC1400_XMC2GO +# - fqbn: infineon:xmc:XMC1400_XMC2GO # sketch: # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino -# - fqbn: Infineon:xmc:XMC1400_Arduino_Kit +# - fqbn: infineon:xmc:XMC1400_Arduino_Kit # sketch: # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino -# - fqbn: Infineon:xmc:XMC4200_Platform2GO +# - fqbn: infineon:xmc:XMC4200_Platform2GO # sketch: # - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino -# - fqbn: Infineon:xmc:XMC4400_Platform2GO +# - fqbn: infineon:xmc:XMC4400_Platform2GO # sketch: # - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino From b492eb66314048232df46961f75f3a3f55b87f09 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Jul 2025 17:11:51 +0200 Subject: [PATCH 108/366] tests: Change naming to infineon in Makefile.test. Signed-off-by: zhanglinjing --- tests/Makefile.test | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tests/Makefile.test b/tests/Makefile.test index 1804ba1c..73a8e4ac 100644 --- a/tests/Makefile.test +++ b/tests/Makefile.test @@ -1,29 +1,28 @@ ### Build commands -### ! Please note that you need to change the port and path of Unity as appropriate ! ### Unit tests ##CAN # 1 board, no wire -make FQBN=Infineon:xmc:XMC1400_XMC2GO PORT=COM42 UNITY_PATH=\Unity test_can_single monitor +make FQBN=infineon:xmc:XMC1400_XMC2GO PORT=COM42 test_can_single monitor # 2 boards -make FQBN=Infineon:xmc:XMC1400_XMC2GO PORT=COM42 UNITY_PATH=\Unity test_can_connected2_node2 monitor -make FQBN=Infineon:xmc:XMC1400_XMC2GO PORT=COM41 UNITY_PATH=\Unity test_can_connected2_node1 monitor +make FQBN=infineon:xmc:XMC1400_XMC2GO PORT=COM42 test_can_connected2_node2 monitor +make FQBN=infineon:xmc:XMC1400_XMC2GO PORT=COM41 test_can_connected2_node1 monitor ## IIC # 1 board "talking to itself", wire needed -make FQBN=Infineon:xmc:XMC4700_Relax_Kit PORT=COM28 UNITY_PATH=\Unity test_wire_connected1_pingpong monitor +make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM28 test_wire_connected1_pingpong monitor # 2 boards -make FQBN=Infineon:xmc:XMC4700_Relax_Kit PORT=COM85 test_wire_connected2_masterpingpong monitor -make FQBN=Infineon:xmc:XMC4700_Relax_Kit PORT=COM28 test_wire_connected2_slavepingpong monitor +make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM85 test_wire_connected2_masterpingpong monitor +make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM28 test_wire_connected2_slavepingpong monitor ## UART # 2 boards -make FQBN=Infineon:xmc:XMC4700_Relax_Kit PORT=COM71 test_uart_connected2_tx monitor -make FQBN=Infineon:xmc:XMC4700_Relax_Kit PORT=COM28 test_uart_connected2_rx monitor \ No newline at end of file +make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM71 test_uart_connected2_tx monitor +make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM28 test_uart_connected2_rx monitor \ No newline at end of file From 877fd307c305d3f726d361e50416466e0c39471a Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 7 Jul 2025 17:13:54 +0200 Subject: [PATCH 109/366] extras: Update arduino-devops for "infineon" naming. Signed-off-by: zhanglinjing --- extras/arduino-devops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-devops b/extras/arduino-devops index 79b4899b..9f09f1a0 160000 --- a/extras/arduino-devops +++ b/extras/arduino-devops @@ -1 +1 @@ -Subproject commit 79b4899b01c698ca50d292e383c03051bd33c8d1 +Subproject commit 9f09f1a07f4ba11a449f8b534e2a31abcb3ba581 From 6c93b8692596b42ef8847abfa8b2a146ad32a666 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:05:10 +0200 Subject: [PATCH 110/366] variants/: Rename folder name of the boards. Signed-off-by: zhanglinjing --- .../{XMC1100_Boot_Kit => KIT_XMC11_BOOT_001}/pins_arduino.h | 0 .../{XMC1100_XMC2GO => KIT_XMC_2GO_XMC1100_V1}/pins_arduino.h | 0 .../{XMC1300_Boot_Kit => KIT_XMC13_BOOT_001}/pins_arduino.h | 0 .../{XMC1400_Arduino_Kit => KIT_XMC1400_ARDUINO}/pins_arduino.h | 0 .../config/{XMC1400_XMC2GO => KIT_XMC14_2GO}/pins_arduino.h | 0 .../pins_arduino.h | 0 .../pins_arduino.h | 0 .../pins_arduino.h | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename variants/XMC1100/config/{XMC1100_Boot_Kit => KIT_XMC11_BOOT_001}/pins_arduino.h (100%) rename variants/XMC1100/config/{XMC1100_XMC2GO => KIT_XMC_2GO_XMC1100_V1}/pins_arduino.h (100%) rename variants/XMC1300/config/{XMC1300_Boot_Kit => KIT_XMC13_BOOT_001}/pins_arduino.h (100%) rename variants/XMC1400/config/{XMC1400_Arduino_Kit => KIT_XMC1400_ARDUINO}/pins_arduino.h (100%) rename variants/XMC1400/config/{XMC1400_XMC2GO => KIT_XMC14_2GO}/pins_arduino.h (100%) rename variants/XMC4200/config/{XMC4200_Platform2GO => KIT_XMC_PLT2GO_XMC4200}/pins_arduino.h (100%) rename variants/XMC4400/config/{XMC4400_Platform2GO => KIT_XMC_PLT2GO_XMC4400}/pins_arduino.h (100%) rename variants/XMC4700/config/{XMC4700_Relax_Kit => KIT_XMC47_RELAX_5V_AD_V1}/pins_arduino.h (100%) diff --git a/variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h similarity index 100% rename from variants/XMC1100/config/XMC1100_Boot_Kit/pins_arduino.h rename to variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h diff --git a/variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h similarity index 100% rename from variants/XMC1100/config/XMC1100_XMC2GO/pins_arduino.h rename to variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h diff --git a/variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h similarity index 100% rename from variants/XMC1300/config/XMC1300_Boot_Kit/pins_arduino.h rename to variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h diff --git a/variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h similarity index 100% rename from variants/XMC1400/config/XMC1400_Arduino_Kit/pins_arduino.h rename to variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h diff --git a/variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h similarity index 100% rename from variants/XMC1400/config/XMC1400_XMC2GO/pins_arduino.h rename to variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h diff --git a/variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h similarity index 100% rename from variants/XMC4200/config/XMC4200_Platform2GO/pins_arduino.h rename to variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h diff --git a/variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h similarity index 100% rename from variants/XMC4400/config/XMC4400_Platform2GO/pins_arduino.h rename to variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h diff --git a/variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX_5V_AD_V1/pins_arduino.h similarity index 100% rename from variants/XMC4700/config/XMC4700_Relax_Kit/pins_arduino.h rename to variants/XMC4700/config/KIT_XMC47_RELAX_5V_AD_V1/pins_arduino.h From a6f699ce2b2d6b3c4843f4155c0daa2c876af5bc Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:06:17 +0200 Subject: [PATCH 111/366] cores/: Change the macro name of xmc boards. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 4 ++-- cores/xmc/WInterrupts.c | 12 ++++++------ cores/xmc/main.cpp | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 1ae9854b..dbdaa71f 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -293,12 +293,12 @@ extern XMC_UART_t XMC_UART_debug; extern XMC_UART_t XMC_UART_on_board; extern XMC_SPI_t XMC_SPI_0; -// Some boards for eg. XMC4700 Relax Kit has more than one SPI instance +// Some boards for eg. KIT_XMC47_RELAX_5V_AD_V1 has more than one SPI instance extern XMC_SPI_t XMC_SPI_1; extern XMC_SPI_t XMC_SPI_2; extern XMC_I2C_t XMC_I2C_0; -// Some boards for eg. XMC4700 Relax Kit has more than one I2C instance +// Some boards for eg. KIT_XMC47_RELAX_5V_AD_V1 has more than one I2C instance extern XMC_I2C_t XMC_I2C_1; extern XMC_I2S_t i2s_config; diff --git a/cores/xmc/WInterrupts.c b/cores/xmc/WInterrupts.c index ea5d8c15..95ed78b6 100644 --- a/cores/xmc/WInterrupts.c +++ b/cores/xmc/WInterrupts.c @@ -21,7 +21,7 @@ void ERU0_3_IRQHandler(void) { } } - #if defined(XMC4200_Platform2GO) + #if defined(KIT_XMC_PLT2GO_XMC4200) void ERU0_0_IRQHandler(void) { if (interrupt_1_cb) { interrupt_1_cb(); @@ -104,7 +104,7 @@ void attachInterrupt(pin_size_t interrupt_num, voidFuncPtr callback, PinStatus m interrupt_0_cb = callback; NVIC_EnableIRQ(ERU0_3_IRQn); } else if (pin_irq.irq_num == 1) { - #if defined(XMC4200_Platform2GO) + #if defined(KIT_XMC_PLT2GO_XMC4200) NVIC_SetPriority(ERU0_0_IRQn, 3); interrupt_1_cb = callback; NVIC_EnableIRQ(ERU0_0_IRQn); @@ -139,7 +139,7 @@ void attachInterrupt(pin_size_t interrupt_num, voidFuncPtr callback, PinStatus m XMC_CCU4_EnableClock(pin_irq.ccu, pin_irq.slice_num); if (pin_irq.irq_num == 0) { - #if defined(XMC1100_Boot_Kit) || defined(XMC1400_Arduino_Kit) || defined(XMC1400_XMC2GO) + #if defined(KIT_XMC11_BOOT_001) || defined(KIT_XMC1400_ARDUINO) || defined(KIT_XMC14_2GO) /* P1_4 external interrupt goes through USIC to CCU4 */ XMC_USIC_CH_Enable(XMC_USIC0_CH0); XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX5, USIC0_C0_DX5_P1_4); @@ -155,12 +155,12 @@ void attachInterrupt(pin_size_t interrupt_num, voidFuncPtr callback, PinStatus m interrupt_0_cb = callback; NVIC_EnableIRQ(CCU40_0_IRQn); } else if (pin_irq.irq_num == 1) { - #if defined(XMC1300_Boot_Kit) + #if defined(KIT_XMC13_BOOT_001) /* P0_13 external interrupt goes through USIC to CCU4 */ XMC_USIC_CH_Enable(XMC_USIC0_CH0); XMC_USIC_CH_SetInputSource(XMC_USIC0_CH0, XMC_USIC_CH_INPUT_DX2, USIC0_C0_DX2_P0_13); #endif - #if defined(XMC1400_Arduino_Kit) + #if defined(KIT_XMC1400_ARDUINO) /* P1_1 external interrupt goes through USIC to CCU4 */ XMC_USIC_CH_Enable(XMC_USIC0_CH1); XMC_USIC_CH_SetInputSource(XMC_USIC0_CH1, XMC_USIC_CH_INPUT_DX2, USIC0_C1_DX2_P1_1); @@ -191,7 +191,7 @@ void detachInterrupt(pin_size_t interrupt_num) { break; case 1: - #if defined(XMC4200_Platform2GO) + #if defined(KIT_XMC_PLT2GO_XMC4200) NVIC_DisableIRQ(ERU0_0_IRQn); #else NVIC_DisableIRQ(ERU1_0_IRQn); diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index f50a6d4b..2bb37cd1 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -38,7 +38,7 @@ int main(void) { */ wiring_time_init(); -// Initialize the reset pin for the XMC1100 Boot Kit series and XMC1400 Kit for Arduino as they are +// Initialize the reset pin for the KIT_XMC11_BOOT_001 series and KIT_XMC1400_ARDUINO as they are // based on Arduino form-factor Hence, a dedicated reset pin is required. #ifdef HAS_GPIO_RESET reset_init(); From f68835cd474716e87c37220d5c4996392b36793a Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:14:50 +0200 Subject: [PATCH 112/366] libraries/: Update all the boards name in builtin libraries. Signed-off-by: zhanglinjing --- libraries/CAN/README.md | 6 +++--- libraries/DMA/examples/DMA_Memory/DMA_Memory.ino | 2 +- libraries/DMA/examples/DMA_UART/DMA_UART.ino | 2 +- .../SleepModeXMC4700/SleepModeXMC4700.ino | 2 +- libraries/I2S/README.md | 10 +++++----- libraries/I2S/src/I2S.cpp | 6 +++--- libraries/I2S/src/I2S.h | 7 ++++--- libraries/LED/Readme.md | 16 ++++++++-------- libraries/OneWire/src/util/OneWireConf.h | 6 +++--- libraries/RTC/examples/AlarmRTC/AlarmRTC.ino | 6 +++--- libraries/RTC/examples/SimpleRTC/SimpleRTC.ino | 2 +- libraries/SPI/src/SPI.h | 6 +++--- libraries/Wire/src/Wire.cpp | 6 +++--- 13 files changed, 39 insertions(+), 38 deletions(-) diff --git a/libraries/CAN/README.md b/libraries/CAN/README.md index a77d8d53..14f08569 100644 --- a/libraries/CAN/README.md +++ b/libraries/CAN/README.md @@ -4,9 +4,9 @@ Based on [Arduino CAN library](https://www.arduino.cc/reference/en/libraries/can # Hardware Setup -XMC boards with CAN support (CAN transceiver on board and CAN controller module): XMC4200 Platform2GO, XMC4400 Platform2GO, XMC4700 Relax Kit and XMC1400 XMC2GO. +XMC boards with CAN support (CAN transceiver on board and CAN controller module): KIT_XMC_PLT2GO_XMC4200, KIT_XMC_PLT2GO_XMC4400, KIT_XMC47_RELAX_5V_AD_V1 and KIT_XMC14_2GO. -:warning: There is a 120 ohm terminal resistor on the XMC4200 Platform2GO and XMC1400 XMC2Go boards, not on the XMC4400 Platform2GO and XMC4700 Relax Kit. Please remove or add resistors as needed. +:warning: There is a 120 ohm terminal resistor on the KIT_XMC_PLT2GO_XMC4400 and KIT_XMC14_2GO boards, not on the KIT_XMC_PLT2GO_XMC4200 and KIT_XMC47_RELAX_5V_AD_V1. Please remove or add resistors as needed. All CAN nodes should be connected using the (twisted) pair cable for the CAN_H and CAN_L @@ -46,7 +46,7 @@ Here the API definition is based on: ## :warning: XMC specification -Due to the different behavior of xmc4 series and xmc1 series, the library and provided examples was tested primarily on **xmc1400 2go**. +Due to the different behavior of xmc4 series and xmc1 series, the library and provided examples was tested primarily on **KIT_XMC14_2GO**. The known difference is that the XMC4 is unable to receive CAN messages for all IDs. Therefore, it is necessary to define the device ID using the following function: diff --git a/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino b/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino index 9f79133c..378fc4d5 100644 --- a/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino +++ b/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino @@ -1,5 +1,5 @@ /* - * Simple DMA example for XMC4700 Relax Kit V1 + * Simple DMA example for KIT_XMC47_RELAX_5V_AD_V1 V1 * Demonstrates how to setup an DMA, to transfer data between two places in memory. * Prints the message in Serial port. */ diff --git a/libraries/DMA/examples/DMA_UART/DMA_UART.ino b/libraries/DMA/examples/DMA_UART/DMA_UART.ino index 39618d0c..d70a2cc6 100644 --- a/libraries/DMA/examples/DMA_UART/DMA_UART.ino +++ b/libraries/DMA/examples/DMA_UART/DMA_UART.ino @@ -1,5 +1,5 @@ /* - * Simple DMA example for XMC4700 Relax Kit V1 + * Simple DMA example for KIT_XMC47_RELAX_5V_AD_V1 V1 * Demonstrates how to setup an DMA, between memory and UART module. * Prints the message in Serial port. */ diff --git a/libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino b/libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino index b76c63d5..c517be27 100644 --- a/libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino +++ b/libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino @@ -1,5 +1,5 @@ /* - Simple Sleep Mode for XMC4700 Relax Kit V1 + Simple Sleep Mode for KIT_XMC47_RELAX_5V_AD_V1 V1 Demonstrates the ability to control peripherals on sleep mode. LED2 will blink fast on active mode. If CCU4 is ON in sleep mode, LED2 will blink slower (because of slower clock) while in sleep mode. If CCU is OFF in sleep mode, LED2 will stop blinking, until device wakes up. diff --git a/libraries/I2S/README.md b/libraries/I2S/README.md index 404c75c6..212e2d8f 100644 --- a/libraries/I2S/README.md +++ b/libraries/I2S/README.md @@ -6,9 +6,9 @@ the master device and read audio input from another device such as a microphone. Be aware that only reading is possible for the time being - no I2S output is supported. ## Wiring -The library has been tested with the XMC4700 Relax Kit, XMC1100 XMC 2Go, and XMC1100 Boot Kit in combination with the IM69D130 Microphone Shield2Go. +The library has been tested with the KIT_XMC47_RELAX_5V_AD_V1, XMC1100 XMC 2Go, and KIT_XMC11_BOOT_001 in combination with the IM69D130 Microphone Shield2Go. -* For the XMC4700 Relax Kit, following ports/pins should be connected: +* For the KIT_XMC47_RELAX_5V_AD_V1, following ports/pins should be connected: - BCLK -- P3.10 - DATA -- P3.7 - CLK -- P3.9 @@ -26,14 +26,14 @@ The library has been tested with the XMC4700 Relax Kit, XMC1100 XMC 2Go, and XMC `No level shifting needed as the XMC 2Go board runs at 3.3 V.` -* For the XMC1100 Boot Kit board the ports/pins connection should be as follows: +* For the KIT_XMC11_BOOT_001 board the ports/pins connection should be as follows: - BCLK -- P0.9 - DATA -- P1.0 - CLK -- P0.7 - GND -- GND (VSS) - 3.3V -- 3.3V (VDD) -`Ensure that level shifting is in place as the microphone board has 3.3 V logic level, XMC1100 Boot Kit has 5 V by default.` +`Ensure that level shifting is in place as the microphone board has 3.3 V logic level, KIT_XMC11_BOOT_001 has 5 V by default.` This configuration is defined in the respective board configuration files `pins_arduino.h`. @@ -66,7 +66,7 @@ Please refer to the data sheet of your specific microphone for the sampling rate If you are using XMC1000 family boards, the recommended sampling rate is 12 kHz as higher values might interfere with the microcontroller speed. Since both `Serial` and `I2S` use USIC interrupts, there could be a problem with processing remaining code as the processor could get locked out via interrupts. -However, if you are using an XMC4000 board such as a XMC4700 Relax Kit, you shouldn't have to worry about these issues in particular. +However, if you are using an XMC4000 board such as a KIT_XMC47_RELAX_5V_AD_V1, you shouldn't have to worry about these issues in particular. ### Data delay Sometimes, it also makes sense to adjust the data delay, which is the delay between a changing WA/LRCL edge and the start of a sample depending on the microphone of your choice. Please be aware that there are different `I2S.begin()` functions which allow to set the parameters very precisely. Have a look in the I2S.h file for more information. diff --git a/libraries/I2S/src/I2S.cpp b/libraries/I2S/src/I2S.cpp index 853da3c8..e81187ec 100644 --- a/libraries/I2S/src/I2S.cpp +++ b/libraries/I2S/src/I2S.cpp @@ -415,11 +415,11 @@ void I2SClass::_onSampleReceived() { } extern "C" { -#if defined(XMC4700_Relax_Kit) +#if defined(KIT_XMC47_RELAX_5V_AD_V1) void USIC2_2_IRQHandler() { I2S._onSampleReceived(); } -#elif defined(XMC1100_XMC2GO) || defined(XMC1100_Boot_Kit) +#elif defined(KIT_XMC_2GO_XMC1100_V1) || defined(KIT_XMC11_BOOT_001) void USIC0_2_IRQHandler() { I2S._onSampleReceived(); } -#elif defined(XMC1400_XMC2GO) +#elif defined(KIT_XMC14_2GO) void USIC1_2_IRQHandler() { I2S._onSampleReceived(); } #endif } diff --git a/libraries/I2S/src/I2S.h b/libraries/I2S/src/I2S.h index fda4d4d4..41c885e6 100644 --- a/libraries/I2S/src/I2S.h +++ b/libraries/I2S/src/I2S.h @@ -37,9 +37,10 @@ *and read audio input from another device such as a microphone. * * @section Wiring - * The library has been tested with the XMC4700 Relax Kit/XMC1100 XMC2G0/XMC1100 Boot Kit. - *interfacing an Infineon IM69D130 Microphone Shield2Go. For the XMC4700 relax board, following - *ports should be connected: LRCL -- 3.10 DOUT -- 3.7 SCLK -- 3.9 GND -- GND 3.3V -- 3.3V + * The library has been tested with the + *KIT_XMC47_RELAX_5V_AD_V1/KIT_XMC_2GO_XMC1100_V1/KIT_XMC11_BOOT_001. interfacing an Infineon + *IM69D130 Microphone Shield2Go. For the XMC4700 relax board, following ports should be connected: + *LRCL -- 3.10 DOUT -- 3.7 SCLK -- 3.9 GND -- GND 3.3V -- 3.3V * * For the XMC1100 boards the connection should be the following: * LRCL -- 0.9 diff --git a/libraries/LED/Readme.md b/libraries/LED/Readme.md index 082ca67b..7e6f5af6 100644 --- a/libraries/LED/Readme.md +++ b/libraries/LED/Readme.md @@ -38,16 +38,16 @@ models of board so we end up with | Board | Normal LEDs
ON state | LED_BUILTIN
Separate | LED_BUILTIN
ON state | :---- | :---: | :---: | :---: | - XMC1100 Boot Kit | Low | Yes | High - XMC1100 XMC2GO | High | No | High + KIT_XMC11_BOOT_001 | Low | Yes | High + KIT_XMC_2GO_XMC1100_V1 | High | No | High XMC1100 XMC H Bridge2GO | High| No | High - XMC1300 Boot Kit | Low | No | Low + KIT_XMC13_BOOT_001 | Low | No | Low XMC1300 Sense2GO | Low| No | Low - XMC1400 Arduino Kit | Low | Yes | High - XMC4200 Platform2Go | High| No | High - XMC4400 Platform2Go | High| No | High - XMC4700 Relax Kit | High| No | High - XMC4700 Relax Kit Lite | High| No | High + KIT_XMC1400_ARDUINO | Low | Yes | High + KIT_XMC_PLT2GO_XMC4200 | High| No | High + KIT_XMC_PLT2GO_XMC4400 | High| No | High + KIT_XMC47_RELAX_5V_AD_V1 | High| No | High + KIT_XMC47_RELAX_5V_AD_V1 Lite | High| No | High ** NOTE ** After Version 2.0 of XMC-for-Arduino, some boards were dropped (e.g. XMC1300 Sense2GO) they are still shown here for those using old versions of XMC-for-Arduino, and for history. diff --git a/libraries/OneWire/src/util/OneWireConf.h b/libraries/OneWire/src/util/OneWireConf.h index eeb7fe21..162542be 100644 --- a/libraries/OneWire/src/util/OneWireConf.h +++ b/libraries/OneWire/src/util/OneWireConf.h @@ -5,7 +5,7 @@ namespace onewire { -#if defined(XMC1100_XMC2GO) +#if defined(KIT_XMC_2GO_XMC1100_V1) #define NUM_ONEWIRE_HW 4 #define PIN_HAS_ONEWIRE_HW(pin) ((pin == 0) || (pin == 1) || (pin == 10) || (pin == 11)) #define PIN_TO_ONEWIRE_HW(pin) \ @@ -86,7 +86,7 @@ XMC_SPI_t mappingHW[] = { .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}}; -#elif defined(XMC1100_Boot_Kit) +#elif defined(KIT_XMC11_BOOT_001) #define NUM_ONEWIRE_HW 3 #define PIN_HAS_ONEWIRE_HW(pin) ((pin == 11) || (pin == 15) || (pin == 16)) #define PIN_TO_ONEWIRE_HW(pin) ((pin == 11) ? 0 : ((pin == 15) ? 1 : ((pin == 16) ? 2 : -1))) @@ -147,7 +147,7 @@ XMC_SPI_t mappingHW[] = { .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}}; -#elif defined(XMC4700_Relax_Kit) +#elif defined(KIT_XMC47_RELAX_5V_AD_V1) #define NUM_ONEWIRE_HW 6 #define PIN_HAS_ONEWIRE_HW(pin) \ ((pin == 1) || (pin == 15) || (pin == 29) || (pin == 37) || (pin == 70) || (pin == 88)) diff --git a/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino b/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino index 4552074e..893eda0b 100644 --- a/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino +++ b/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino @@ -1,15 +1,15 @@ /* Simple RTC Alarm for XMC Boards - Demonstrates how to set an RTC alarm for the XMC4700 Relax Kit V1 + Demonstrates how to set an RTC alarm for the KIT_XMC47_RELAX_5V_AD_V1 V1 */ /* Board Check - This library can currently only be used with the XMC4700 Relax Kit + This library can currently only be used with the KIT_XMC47_RELAX_5V_AD_V1 If you modify the library to work with other XMC versions, remove the following lines */ #if (UC_FAMILY != XMC4) -#error This XMC board is not supported, only XMC4700 Relax Kit is supported +#error This XMC board is not supported, only KIT_XMC47_RELAX_5V_AD_V1 is supported #endif // End of Board Check diff --git a/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino b/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino index 8ecc97c1..7d6857f0 100644 --- a/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino +++ b/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino @@ -1,5 +1,5 @@ /* - Simple RTC for XMC4700 Relax Kit V1 + Simple RTC for KIT_XMC47_RELAX_5V_AD_V1 V1 Demonstrates the use of the RTC library for the XMC4700 */ diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index aa83462e..c1bba757 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -36,7 +36,7 @@ // Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over // the on-board SD Card Slot. This feature is only available on XMC4700 RelaxKits. -#if defined(XMC4700_Relax_Kit) +#if defined(KIT_XMC47_RELAX_5V_AD_V1) #define USE_XMC_RELAX_KIT_SD #endif @@ -66,10 +66,10 @@ // #define pin_cs 10 // -// #if defined(XMC1100_XMC2GO) || defined(XMC1100_H_BRIDGE2GO) +// #if defined(KIT_XMC_2GO_XMC1100_V1) || defined(XMC1100_H_BRIDGE2GO) // #define pin_cs 3 -// #elif defined(XMC4400_Platform2GO) +// #elif defined(KIT_XMC_PLT2GO_XMC4200) /// #define pin_cs_slot_1 95 // #define pin_cs_slot_2 96 diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 1ab8ecf8..9d142f7d 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -676,19 +676,19 @@ void USIC0_4_IRQHandler() { Wire.ReceiveHandler(); } void USIC0_5_IRQHandler() { Wire.ProtocolHandler(); } - #if defined(XMC1100_XMC2GO) || defined(XMC1100_H_BRIDGE2GO) + #if defined(KIT_XMC_2GO_XMC1100_V1) || defined(XMC1100_H_BRIDGE2GO) void USIC0_2_IRQHandler() { Wire1.ReceiveHandler(); } void USIC0_3_IRQHandler() { Wire1.ProtocolHandler(); } #endif - #if defined(XMC4400_Platform2GO) + #if defined(KIT_XMC_PLT2GO_XMC4200) void USIC1_1_IRQHandler() { Wire.ReceiveHandler(); } void USIC1_2_IRQHandler() { Wire.ProtocolHandler(); } #endif -#elif defined(XMC4700_Relax_Kit) +#elif defined(KIT_XMC47_RELAX_5V_AD_V1) void USIC1_1_IRQHandler() { Wire.ReceiveHandler(); } void USIC1_2_IRQHandler() { Wire.ProtocolHandler(); } From c0486cd142179256afa6983eda111f46ec5660f5 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:15:56 +0200 Subject: [PATCH 113/366] package/: Update board names in index json. Signed-off-by: zhanglinjing --- package/package_xmc_index.template.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/package/package_xmc_index.template.json b/package/package_xmc_index.template.json index 9ed47ade..3293608f 100644 --- a/package/package_xmc_index.template.json +++ b/package/package_xmc_index.template.json @@ -20,28 +20,28 @@ }, "boards": [ { - "name": "XMC1100 Boot Kit" + "name": "KIT_XMC11_BOOT_001" }, { - "name": "XMC1100 XMC2Go" + "name": "KIT_XMC_2GO_XMC1100_V1" }, { - "name": "XMC1300 Boot Kit" + "name": "KIT_XMC13_BOOT_001" }, { - "name": "XMC1400 Kit for Arduino" + "name": "KIT_XMC1400_ARDUINO" }, { - "name": "XMC1400 XMC2Go" + "name": "KIT_XMC14_2GO" }, { - "name": "XMC4200 Platform 2Go" + "name": "KIT_XMC_PLT2GO_XMC4200" }, { - "name": "XMC4400 Platform 2Go" + "name": "KIT_XMC_PLT2GO_XMC4400" }, { - "name": "XMC4700 Relax Kit" + "name": "KIT_XMC47_RELAX_5V_AD_V1" } ], "toolsDependencies": [ From f323939c804f3ac977222e5e34e5115f1a4465c9 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:34:00 +0200 Subject: [PATCH 114/366] tests/: Update name of boards. Signed-off-by: zhanglinjing --- tests/Makefile.test | 16 ++++++++-------- tests/hil-unity-checklist.yaml | 6 +++--- tests/manual/PCLKTest/PCLKTest.ino | 10 +++++----- tests/manual/PWMtest/PWMtest.ino | 10 +++++----- tests/manual/Servotest/Servotest.ino | 10 +++++----- tests/manual/analogwritetest/analogwritetest.ino | 12 ++++++------ tests/manual/tonetest/tonetest.ino | 2 +- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/tests/Makefile.test b/tests/Makefile.test index 73a8e4ac..9eab6f19 100644 --- a/tests/Makefile.test +++ b/tests/Makefile.test @@ -5,24 +5,24 @@ ##CAN # 1 board, no wire -make FQBN=infineon:xmc:XMC1400_XMC2GO PORT=COM42 test_can_single monitor +make FQBN=infineon:xmc:kit_xmc14_2go PORT=COM42 test_can_single monitor # 2 boards -make FQBN=infineon:xmc:XMC1400_XMC2GO PORT=COM42 test_can_connected2_node2 monitor -make FQBN=infineon:xmc:XMC1400_XMC2GO PORT=COM41 test_can_connected2_node1 monitor +make FQBN=infineon:xmc:kit_xmc14_2go PORT=COM42 test_can_connected2_node2 monitor +make FQBN=infineon:xmc:kit_xmc14_2go PORT=COM41 test_can_connected2_node1 monitor ## IIC # 1 board "talking to itself", wire needed -make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM28 test_wire_connected1_pingpong monitor +make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM28 test_wire_connected1_pingpong monitor # 2 boards -make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM85 test_wire_connected2_masterpingpong monitor -make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM28 test_wire_connected2_slavepingpong monitor +make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM85 test_wire_connected2_masterpingpong monitor +make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM28 test_wire_connected2_slavepingpong monitor ## UART # 2 boards -make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM71 test_uart_connected2_tx monitor -make FQBN=infineon:xmc:XMC4700_Relax_Kit PORT=COM28 test_uart_connected2_rx monitor \ No newline at end of file +make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM71 test_uart_connected2_tx monitor +make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM28 test_uart_connected2_rx monitor \ No newline at end of file diff --git a/tests/hil-unity-checklist.yaml b/tests/hil-unity-checklist.yaml index 4ffd1b30..1f3add98 100644 --- a/tests/hil-unity-checklist.yaml +++ b/tests/hil-unity-checklist.yaml @@ -1,4 +1,4 @@ -infineon.xmc.XMC4700_Relax_Kit: +infineon.xmc.kit_xmc47_relax_5v_ad_v1: CAN: 1: - "test_can_connected2_node2" @@ -19,7 +19,7 @@ infineon.xmc.XMC4700_Relax_Kit: - "test_uart_connected2_rx" -infineon.xmc.XMC1400_XMC2GO: +infineon.xmc.kit_xmc14_2go: CAN: 1: - "test_can_connected2_node2" @@ -33,7 +33,7 @@ infineon.xmc.XMC1400_XMC2GO: - "test_wire_connected2_masterpingpong" -infineon.xmc.XMC1100_XMC2GO: +infineon.xmc.kit_xmc_2go_xmc1100_v1: Wire: 1: - "test_wire_connected2_slavepingpong" diff --git a/tests/manual/PCLKTest/PCLKTest.ino b/tests/manual/PCLKTest/PCLKTest.ino index aa8aff9f..86950f5a 100644 --- a/tests/manual/PCLKTest/PCLKTest.ino +++ b/tests/manual/PCLKTest/PCLKTest.ino @@ -10,10 +10,10 @@ Wiring Default PWM pin are 3 Some Board variant PWM Pins - XMC1100 Boot Kit 3, 4, 6, 9 - XMC1100 XMC2Go 8, 3, 2, 1 - XMC1300 Boot Kit 31, 26, 32, 33 - XMC4700 Relax 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + KIT_XMC11_BOOT_001 3, 4, 6, 9 + KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 + KIT_XMC13_BOOT_001 31, 26, 32, 33 + KIT_XMC47_RELAX_5V_AD_V1 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 */ #include @@ -26,7 +26,7 @@ Wiring // Adjust the following defines to match your setup // Pins for Servos and pot //#define PWM_A_PIN 3 -// XMC1300 Boot Kit pins +// KIT_XMC13_BOOT_001 pins #define PWM_A_PIN 31 #define RESOLUTION 16 diff --git a/tests/manual/PWMtest/PWMtest.ino b/tests/manual/PWMtest/PWMtest.ino index 65a5d464..3bf8adbd 100644 --- a/tests/manual/PWMtest/PWMtest.ino +++ b/tests/manual/PWMtest/PWMtest.ino @@ -11,10 +11,10 @@ Default PWM pins are 3 and 4 Some Board variant PWM Pins - XMC1100 Boot Kit 3, 4, 6, 9 - XMC1100 XMC2Go 8, 3, 2, 1 - XMC1300 Boot Kit 31, 26, 32, 33 - XMC4700 Relax 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + KIT_XMC11_BOOT_001 3, 4, 6, 9 + KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 + KIT_XMC13_BOOT_001 31, 26, 32, 33 + KIT_XMC47_RELAX_5V_AD_V1 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 */ #include @@ -23,7 +23,7 @@ // Pins for Servos and pot //#define PWM_A_PIN 3 //#define PWM_B_PIN 4 -// XMC1300 Boot Kit pins +// KIT_XMC13_BOOT_001 pins #define PWM_A_PIN 31 #define PWM_B_PIN 26 diff --git a/tests/manual/Servotest/Servotest.ino b/tests/manual/Servotest/Servotest.ino index e892af3a..0eeec983 100644 --- a/tests/manual/Servotest/Servotest.ino +++ b/tests/manual/Servotest/Servotest.ino @@ -16,14 +16,14 @@ Wiring Pot is connected to analogue input A1 - (XMC1300 Boot Kit has on-board pot on this pin) + (KIT_XMC13_BOOT_001 has on-board pot on this pin) Default PWM pins are 3 and 4 Some Board variant PWM Pins - XMC1100 Boot Kit 3, 4, 6, 9 - XMC1100 XMC2Go 8, 3, 2, 1 - XMC1300 Boot Kit 31, 26, 32, 33 - XMC4700 Relax 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + KIT_XMC11_BOOT_001 3, 4, 6, 9 + KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 + KIT_XMC13_BOOT_001 31, 26, 32, 33 + KIT_XMC47_RELAX_5V_AD_V1 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 */ #include diff --git a/tests/manual/analogwritetest/analogwritetest.ino b/tests/manual/analogwritetest/analogwritetest.ino index 3934c38b..0f4eb05f 100644 --- a/tests/manual/analogwritetest/analogwritetest.ino +++ b/tests/manual/analogwritetest/analogwritetest.ino @@ -18,7 +18,7 @@ void setup() { -#if defined ( XMC1100_XMC2GO ) +#if defined ( KIT_XMC_2GO_XMC1100_V1 ) analogWrite( 8, 32 ); // all PWM4 analogWrite( 1, 64 ); analogWrite( 2, 96 ); @@ -27,21 +27,21 @@ analogWrite( 3, 128 ); #if defined ( XMC1100_H_BRIDGE2GO ) analogWrite( 8, 32 ); // PWM4 #endif -#if defined ( XMC1100_Boot_Kit ) || defined ( XMC1400_Boot_Kit ) || defined ( XMC1300_Sense2GoL ) -// XMC1100 Boot Kit or XMC1400 Boot Kit or XMC1300 Sense2GoL +#if defined ( KIT_XMC11_BOOT_001 ) || defined ( KIT_XMC1400_ARDUINO ) || defined ( XMC1300_Sense2GoL ) +// KIT_XMC11_BOOT_001 or XMC1400 Boot Kit or XMC1300 Sense2GoL analogWrite( 3, 32 ); // all PWM4 analogWrite( 4, 64 ); analogWrite( 6, 96 ); analogWrite( 9, 128 ); #endif -#if defined ( XMC1300_Boot_Kit ) -// XMC1300 Boot Kit +#if defined ( KIT_XMC13_BOOT_001 ) +// KIT_XMC13_BOOT_001 analogWrite( 31, 32 ); // PWM4 analogWrite( 26, 64 ); analogWrite( 32, 96 ); // PWM8 analogWrite( 33, 128 ); #endif -#if defined ( XMC4700_Relax_Kit ) || defined( XMC4700_Radar_Baseboard ) +#if defined ( KIT_XMC47_RELAX_5V_AD_V1 ) || defined( XMC4700_Radar_Baseboard ) analogWrite( 3, 32 ); // PWM4 analogWrite( 5, 64 ); // PWM8 rest relax kit only analogWrite( 6, 96 ); diff --git a/tests/manual/tonetest/tonetest.ino b/tests/manual/tonetest/tonetest.ino index e6f8e0e8..a8b824ba 100644 --- a/tests/manual/tonetest/tonetest.ino +++ b/tests/manual/tonetest/tonetest.ino @@ -71,7 +71,7 @@ Serial.println( "PC Services Tone Test V2" ); tone( LED1, 1 ); tone( LED2, 2, 20000 ); -#if defined( XMC1100_Boot_Kit ) || defined( XMC1300_Boot_Kit ) +#if defined( KIT_XMC11_BOOT_001 ) || defined( KIT_XMC13_BOOT_001 ) tone( LED5, 4, 1000 ); tone( LED6, 8, 6000 ); #elif defined( XMC1300_Sense2GoL ) From d18a3fa1256569f1668ef30920db1f494bded5cc Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:34:49 +0200 Subject: [PATCH 115/366] libraries/SPI: Change KIT_XMC47_RELAX_5V_AD_V1 name in comment. Signed-off-by: zhanglinjing --- libraries/SPI/src/SPI.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index c1bba757..a94c38b2 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -35,7 +35,7 @@ // #define USE_SW_SPI // Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over -// the on-board SD Card Slot. This feature is only available on XMC4700 RelaxKits. +// the on-board SD Card Slot. This feature is only available on KIT_XMC47_RELAX_5V_AD_V1Kits. #if defined(KIT_XMC47_RELAX_5V_AD_V1) #define USE_XMC_RELAX_KIT_SD #endif From 1caf8251a1168a05c90cdcad4d8f26b68f0fdc31 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:37:41 +0200 Subject: [PATCH 116/366] boards.txt: Change boards name, keep old variant for backwards compat. Signed-off-by: zhanglinjing --- boards.txt | 654 +++++++++++++++++++++++++++-------------------------- 1 file changed, 331 insertions(+), 323 deletions(-) diff --git a/boards.txt b/boards.txt index 2b75e077..0f8ac90c 100644 --- a/boards.txt +++ b/boards.txt @@ -3,345 +3,353 @@ menu.UART=Serial Output Selection menu.LIB=Additional Libraries #################################################### -XMC1100_Boot_Kit.name=XMC1100 Boot Kit -XMC1100_Boot_Kit.upload.tool=xmcflasher -XMC1100_Boot_Kit.upload.speed=115200 -XMC1100_Boot_Kit.upload.resetmethod=ck -XMC1100_Boot_Kit.upload.maximum_size=65536 -XMC1100_Boot_Kit.upload.wait_for_upload_port=true - -XMC1100_Boot_Kit.communication=usb -XMC1100_Boot_Kit.protocol=dragon_isp -XMC1100_Boot_Kit.program.protocol=dragon_isp -XMC1100_Boot_Kit.program.tool=xmcflasher -XMC1100_Boot_Kit.program.extra_params=-Pusb - -XMC1100_Boot_Kit.serial.disableDTR=true -XMC1100_Boot_Kit.serial.disableRTS=true - -XMC1100_Boot_Kit.build.mcu=cortex-m0 -XMC1100_Boot_Kit.build.f_cpu=32000000L -XMC1100_Boot_Kit.build.board=ARM_XMC -XMC1100_Boot_Kit.build.board.version=1100 -XMC1100_Boot_Kit.build.board.type=T038x0064 -XMC1100_Boot_Kit.build.board.v=0064 -XMC1100_Boot_Kit.build.core=xmc -XMC1100_Boot_Kit.build.variant=XMC1100 -XMC1100_Boot_Kit.build.board_variant=XMC1100_Boot_Kit -XMC1100_Boot_Kit.build.flash_size=64K -XMC1100_Boot_Kit.build.flash_ld=linker_script.ld -XMC1100_Boot_Kit.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES - -XMC1100_Boot_Kit.menu.UART.debug=PC -XMC1100_Boot_Kit.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC -XMC1100_Boot_Kit.menu.UART.onBoard=On Board -XMC1100_Boot_Kit.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD - -XMC1100_Boot_Kit.menu.LIB.NONE=None -XMC1100_Boot_Kit.menu.LIB.NONE.library.selected= -XMC1100_Boot_Kit.menu.LIB.NN=ARM NN Framework -XMC1100_Boot_Kit.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -XMC1100_Boot_Kit.menu.LIB.DSP=ARM DSP -XMC1100_Boot_Kit.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP -XMC1100_Boot_Kit.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -XMC1100_Boot_Kit.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +KIT_XMC11_BOOT_001kit_xmc11_boot_001.name=KIT_XMC11_BOOT_001 +kit_xmc11_boot_001.upload.tool=xmcflasher +kit_xmc11_boot_001.upload.speed=115200 +kit_xmc11_boot_001.upload.resetmethod=ck +kit_xmc11_boot_001.upload.maximum_size=65536 +kit_xmc11_boot_001.upload.wait_for_upload_port=true + +kit_xmc11_boot_001.communication=usb +kit_xmc11_boot_001.protocol=dragon_isp +kit_xmc11_boot_001.program.protocol=dragon_isp +kit_xmc11_boot_001.program.tool=xmcflasher +kit_xmc11_boot_001.program.extra_params=-Pusb + +kit_xmc11_boot_001.serial.disableDTR=true +kit_xmc11_boot_001.serial.disableRTS=true + +kit_xmc11_boot_001.build.mcu=cortex-m0 +kit_xmc11_boot_001.build.f_cpu=32000000L +kit_xmc11_boot_001.build.board=ARM_XMC +kit_xmc11_boot_001.build.board.version=1100 +kit_xmc11_boot_001.build.board.type=T038x0064 +kit_xmc11_boot_001.build.board.v=0064 +kit_xmc11_boot_001.build.core=xmc +kit_xmc11_boot_001.build.variant=XMC1100 +kit_xmc11_boot_001.build.board_variant_old=XMC1100_Boot_Kit +kit_xmc11_boot_001.build.board_variant=KIT_XMC11_BOOT_001 +kit_xmc11_boot_001.build.flash_size=64K +kit_xmc11_boot_001.build.flash_ld=linker_script.ld +kit_xmc11_boot_001.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES + +kit_xmc11_boot_001.menu.UART.debug=PC +kit_xmc11_boot_001.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC +kit_xmc11_boot_001.menu.UART.onBoard=On Board +kit_xmc11_boot_001.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD + +kit_xmc11_boot_001.menu.LIB.NONE=None +kit_xmc11_boot_001.menu.LIB.NONE.library.selected= +kit_xmc11_boot_001.menu.LIB.NN=ARM NN Framework +kit_xmc11_boot_001.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc11_boot_001.menu.LIB.DSP=ARM DSP +kit_xmc11_boot_001.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP +kit_xmc11_boot_001.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc11_boot_001.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN #################################################### -XMC1100_XMC2GO.name=XMC1100 XMC2Go -XMC1100_XMC2GO.upload.tool=xmcflasher -XMC1100_XMC2GO.upload.speed=115200 -XMC1100_XMC2GO.upload.resetmethod=ck -XMC1100_XMC2GO.upload.maximum_size=65536 -XMC1100_XMC2GO.upload.wait_for_upload_port=true - -XMC1100_XMC2GO.communication=usb -XMC1100_XMC2GO.protocol=dragon_isp -XMC1100_XMC2GO.program.protocol=dragon_isp -XMC1100_XMC2GO.program.tool=xmcflasher -XMC1100_XMC2GO.program.extra_params=-Pusb - -XMC1100_XMC2GO.serial.disableDTR=true -XMC1100_XMC2GO.serial.disableRTS=true - -XMC1100_XMC2GO.build.mcu=cortex-m0 -XMC1100_XMC2GO.build.f_cpu=32000000L -XMC1100_XMC2GO.build.board=ARM_XMC -XMC1100_XMC2GO.build.board.version=1100 -XMC1100_XMC2GO.build.board.type=Q024x0064 -XMC1100_XMC2GO.build.board.v=0064 -XMC1100_XMC2GO.build.core=xmc -XMC1100_XMC2GO.build.variant=XMC1100 -XMC1100_XMC2GO.build.board_variant=XMC1100_XMC2GO -XMC1100_XMC2GO.build.flash_size=64K -XMC1100_XMC2GO.build.flash_ld=linker_script.ld -XMC1100_XMC2GO.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES - -XMC1100_XMC2GO.menu.UART.debug=PC -XMC1100_XMC2GO.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC -XMC1100_XMC2GO.menu.UART.onBoard=On Board -XMC1100_XMC2GO.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD - -XMC1100_XMC2GO.menu.LIB.NONE=None -XMC1100_XMC2GO.menu.LIB.NONE.library.selected= -XMC1100_XMC2GO.menu.LIB.NN=ARM NN Framework -XMC1100_XMC2GO.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -XMC1100_XMC2GO.menu.LIB.DSP=ARM DSP -XMC1100_XMC2GO.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP -XMC1100_XMC2GO.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -XMC1100_XMC2GO.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +kit_xmc_2go_xmc1100_v1.name=KIT_XMC_2GO_XMC1100_V1 +kit_xmc_2go_xmc1100_v1.upload.tool=xmcflasher +kit_xmc_2go_xmc1100_v1.upload.speed=115200 +kit_xmc_2go_xmc1100_v1.upload.resetmethod=ck +kit_xmc_2go_xmc1100_v1.upload.maximum_size=65536 +kit_xmc_2go_xmc1100_v1.upload.wait_for_upload_port=true + +kit_xmc_2go_xmc1100_v1.communication=usb +kit_xmc_2go_xmc1100_v1.protocol=dragon_isp +kit_xmc_2go_xmc1100_v1.program.protocol=dragon_isp +kit_xmc_2go_xmc1100_v1.program.tool=xmcflasher +kit_xmc_2go_xmc1100_v1.program.extra_params=-Pusb + +kit_xmc_2go_xmc1100_v1.serial.disableDTR=true +kit_xmc_2go_xmc1100_v1.serial.disableRTS=true + +kit_xmc_2go_xmc1100_v1.build.mcu=cortex-m0 +kit_xmc_2go_xmc1100_v1.build.f_cpu=32000000L +kit_xmc_2go_xmc1100_v1.build.board=ARM_XMC +kit_xmc_2go_xmc1100_v1.build.board.version=1100 +kit_xmc_2go_xmc1100_v1.build.board.type=Q024x0064 +kit_xmc_2go_xmc1100_v1.build.board.v=0064 +kit_xmc_2go_xmc1100_v1.build.core=xmc +kit_xmc_2go_xmc1100_v1.build.variant=XMC1100 +kit_xmc_2go_xmc1100_v1.build.board_variant_old=XMC1100_XMC2GO +kit_xmc_2go_xmc1100_v1.build.board_variant=KIT_XMC_2GO_XMC1100_V1 +kit_xmc_2go_xmc1100_v1.build.flash_size=64K +kit_xmc_2go_xmc1100_v1.build.flash_ld=linker_script.ld +kit_xmc_2go_xmc1100_v1.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES + +kit_xmc_2go_xmc1100_v1.menu.UART.debug=PC +kit_xmc_2go_xmc1100_v1.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC +kit_xmc_2go_xmc1100_v1.menu.UART.onBoard=On Board +kit_xmc_2go_xmc1100_v1.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD + +kit_xmc_2go_xmc1100_v1.menu.LIB.NONE=None +kit_xmc_2go_xmc1100_v1.menu.LIB.NONE.library.selected= +kit_xmc_2go_xmc1100_v1.menu.LIB.NN=ARM NN Framework +kit_xmc_2go_xmc1100_v1.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc_2go_xmc1100_v1.menu.LIB.DSP=ARM DSP +kit_xmc_2go_xmc1100_v1.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP +kit_xmc_2go_xmc1100_v1.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc_2go_xmc1100_v1.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN #################################################### -XMC1300_Boot_Kit.name=XMC1300 Boot Kit -XMC1300_Boot_Kit.upload.tool=xmcflasher -XMC1300_Boot_Kit.upload.speed=115200 -XMC1300_Boot_Kit.upload.resetmethod=ck -XMC1300_Boot_Kit.upload.maximum_size=204800 -XMC1300_Boot_Kit.upload.wait_for_upload_port=true - -XMC1300_Boot_Kit.communication=usb -XMC1300_Boot_Kit.protocol=dragon_isp -XMC1300_Boot_Kit.program.protocol=dragon_isp -XMC1300_Boot_Kit.program.tool=xmcflasher -XMC1300_Boot_Kit.program.extra_params=-Pusb - -XMC1300_Boot_Kit.serial.disableDTR=true -XMC1300_Boot_Kit.serial.disableRTS=true - -XMC1300_Boot_Kit.build.mcu=cortex-m0 -XMC1300_Boot_Kit.build.f_cpu=32000000L -XMC1300_Boot_Kit.build.board=ARM_XMC -XMC1300_Boot_Kit.build.board.version=1302 -XMC1300_Boot_Kit.build.board.type=T038x0200 -XMC1300_Boot_Kit.build.board.v=0200 -XMC1300_Boot_Kit.build.core=xmc -XMC1300_Boot_Kit.build.variant=XMC1300 -XMC1300_Boot_Kit.build.board_variant=XMC1300_Boot_Kit -XMC1300_Boot_Kit.build.flash_size=200K -XMC1300_Boot_Kit.build.flash_ld=linker_script_200k.ld -XMC1300_Boot_Kit.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES - -XMC1300_Boot_Kit.menu.UART.debug=PC -XMC1300_Boot_Kit.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC -XMC1300_Boot_Kit.menu.UART.onBoard=On Board -XMC1300_Boot_Kit.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD - -XMC1300_Boot_Kit.menu.LIB.NONE=None -XMC1300_Boot_Kit.menu.LIB.NONE.library.selected= -XMC1300_Boot_Kit.menu.LIB.NN=ARM NN Framework -XMC1300_Boot_Kit.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -XMC1300_Boot_Kit.menu.LIB.DSP=ARM DSP -XMC1300_Boot_Kit.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP -XMC1300_Boot_Kit.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -XMC1300_Boot_Kit.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +kit_xmc13_boot_001.name=KIT_XMC13_BOOT_001 +kit_xmc13_boot_001.upload.tool=xmcflasher +kit_xmc13_boot_001.upload.speed=115200 +kit_xmc13_boot_001.upload.resetmethod=ck +kit_xmc13_boot_001.upload.maximum_size=204800 +kit_xmc13_boot_001.upload.wait_for_upload_port=true + +kit_xmc13_boot_001.communication=usb +kit_xmc13_boot_001.protocol=dragon_isp +kit_xmc13_boot_001.program.protocol=dragon_isp +kit_xmc13_boot_001.program.tool=xmcflasher +kit_xmc13_boot_001.program.extra_params=-Pusb + +kit_xmc13_boot_001.serial.disableDTR=true +kit_xmc13_boot_001.serial.disableRTS=true + +kit_xmc13_boot_001.build.mcu=cortex-m0 +kit_xmc13_boot_001.build.f_cpu=32000000L +kit_xmc13_boot_001.build.board=ARM_XMC +kit_xmc13_boot_001.build.board.version=1302 +kit_xmc13_boot_001.build.board.type=T038x0200 +kit_xmc13_boot_001.build.board.v=0200 +kit_xmc13_boot_001.build.core=xmc +kit_xmc13_boot_001.build.variant=XMC1300 +kit_xmc13_boot_001.build.board_variant_old=XMC1300_Boot_Kit +kit_xmc13_boot_001.build.board_variant=KIT_XMC13_BOOT_001 +kit_xmc13_boot_001.build.flash_size=200K +kit_xmc13_boot_001.build.flash_ld=linker_script_200k.ld +kit_xmc13_boot_001.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES + +kit_xmc13_boot_001.menu.UART.debug=PC +kit_xmc13_boot_001.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC +kit_xmc13_boot_001.menu.UART.onBoard=On Board +kit_xmc13_boot_001.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD + +kit_xmc13_boot_001.menu.LIB.NONE=None +kit_xmc13_boot_001.menu.LIB.NONE.library.selected= +kit_xmc13_boot_001.menu.LIB.NN=ARM NN Framework +kit_xmc13_boot_001.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc13_boot_001.menu.LIB.DSP=ARM DSP +kit_xmc13_boot_001.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP +kit_xmc13_boot_001.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc13_boot_001.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN #################################################### -XMC1400_XMC2GO.name=XMC1400 XMC2GO -XMC1400_XMC2GO.upload.tool=xmcflasher -XMC1400_XMC2GO.upload.speed=115200 -XMC1400_XMC2GO.upload.resetmethod=ck -XMC1400_XMC2GO.upload.maximum_size=65536 -XMC1400_XMC2GO.upload.wait_for_upload_port=true - -XMC1400_XMC2GO.communication=usb -XMC1400_XMC2GO.protocol=dragon_isp -XMC1400_XMC2GO.program.protocol=dragon_isp -XMC1400_XMC2GO.program.tool=xmcflasher -XMC1400_XMC2GO.program.extra_params=-Pusb - -XMC1400_XMC2GO.serial.disableDTR=true -XMC1400_XMC2GO.serial.disableRTS=true - -XMC1400_XMC2GO.build.mcu=cortex-m0 -XMC1400_XMC2GO.build.f_cpu=48000000L -XMC1400_XMC2GO.build.board=ARM_XMC -XMC1400_XMC2GO.build.board.version=1404 -XMC1400_XMC2GO.build.board.type=Q040x0200 -XMC1400_XMC2GO.build.board.v=0200 -XMC1400_XMC2GO.build.core=xmc -XMC1400_XMC2GO.build.variant=XMC1400 -XMC1400_XMC2GO.build.board_variant=XMC1400_XMC2GO -XMC1400_XMC2GO.build.flash_size=200K -XMC1400_XMC2GO.build.flash_ld=linker_script_200k.ld -XMC1400_XMC2GO.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES - -XMC1400_XMC2GO.menu.UART.debug=PC -XMC1400_XMC2GO.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC -XMC1400_XMC2GO.menu.UART.onBoard=On Board -XMC1400_XMC2GO.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD - -XMC1400_XMC2GO.menu.LIB.NONE=None -XMC1400_XMC2GO.menu.LIB.NONE.library.selected= -XMC1400_XMC2GO.menu.LIB.NN=ARM NN Framework -XMC1400_XMC2GO.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -XMC1400_XMC2GO.menu.LIB.DSP=ARM DSP -XMC1400_XMC2GO.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP -XMC1400_XMC2GO.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -XMC1400_XMC2GO.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +kit_xmc14_2go.name=KIT_XMC14_2GO +kit_xmc14_2go.upload.tool=xmcflasher +kit_xmc14_2go.upload.speed=115200 +kit_xmc14_2go.upload.resetmethod=ck +kit_xmc14_2go.upload.maximum_size=65536 +kit_xmc14_2go.upload.wait_for_upload_port=true + +kit_xmc14_2go.communication=usb +kit_xmc14_2go.protocol=dragon_isp +kit_xmc14_2go.program.protocol=dragon_isp +kit_xmc14_2go.program.tool=xmcflasher +kit_xmc14_2go.program.extra_params=-Pusb + +kit_xmc14_2go.serial.disableDTR=true +kit_xmc14_2go.serial.disableRTS=true + +kit_xmc14_2go.build.mcu=cortex-m0 +kit_xmc14_2go.build.f_cpu=48000000L +kit_xmc14_2go.build.board=ARM_XMC +kit_xmc14_2go.build.board.version=1404 +kit_xmc14_2go.build.board.type=Q040x0200 +kit_xmc14_2go.build.board.v=0200 +kit_xmc14_2go.build.core=xmc +kit_xmc14_2go.build.variant=XMC1400 +kit_xmc14_2go.build.board_variant_old=XMC1400_XMC2GO +kit_xmc14_2go.build.board_variant=KIT_XMC14_2GO +kit_xmc14_2go.build.flash_size=200K +kit_xmc14_2go.build.flash_ld=linker_script_200k.ld +kit_xmc14_2go.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES + +kit_xmc14_2go.menu.UART.debug=PC +kit_xmc14_2go.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC +kit_xmc14_2go.menu.UART.onBoard=On Board +kit_xmc14_2go.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD + +kit_xmc14_2go.menu.LIB.NONE=None +kit_xmc14_2go.menu.LIB.NONE.library.selected= +kit_xmc14_2go.menu.LIB.NN=ARM NN Framework +kit_xmc14_2go.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc14_2go.menu.LIB.DSP=ARM DSP +kit_xmc14_2go.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP +kit_xmc14_2go.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc14_2go.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN #################################################### -XMC1400_Arduino_Kit.name=XMC1400 Kit for Arduino -XMC1400_Arduino_Kit.upload.tool=xmcflasher -XMC1400_Arduino_Kit.upload.speed=115200 -XMC1400_Arduino_Kit.upload.resetmethod=ck -XMC1400_Arduino_Kit.upload.maximum_size=204800 -XMC1400_Arduino_Kit.upload.wait_for_upload_port=true - -XMC1400_Arduino_Kit.communication=usb -XMC1400_Arduino_Kit.protocol=dragon_isp -XMC1400_Arduino_Kit.program.protocol=dragon_isp -XMC1400_Arduino_Kit.program.tool=xmcflasher -XMC1400_Arduino_Kit.program.extra_params=-Pusb - -XMC1400_Arduino_Kit.serial.disableDTR=true -XMC1400_Arduino_Kit.serial.disableRTS=true - -XMC1400_Arduino_Kit.build.mcu=cortex-m0 -XMC1400_Arduino_Kit.build.f_cpu=48000000L -XMC1400_Arduino_Kit.build.board=ARM_XMC -XMC1400_Arduino_Kit.build.board.version=1402 -XMC1400_Arduino_Kit.build.board.type=T038x0200 -XMC1400_Arduino_Kit.build.board.v=0200 -XMC1400_Arduino_Kit.build.core=xmc -XMC1400_Arduino_Kit.build.variant=XMC1400 -XMC1400_Arduino_Kit.build.board_variant=XMC1400_Arduino_Kit -XMC1400_Arduino_Kit.build.flash_size=200K -XMC1400_Arduino_Kit.build.flash_ld=linker_script_200k.ld -XMC1400_Arduino_Kit.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES - -XMC1400_Arduino_Kit.menu.UART.debug=PC -XMC1400_Arduino_Kit.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC -XMC1400_Arduino_Kit.menu.UART.onBoard=On Board -XMC1400_Arduino_Kit.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD - -XMC1400_Arduino_Kit.menu.LIB.NONE=None -XMC1400_Arduino_Kit.menu.LIB.NONE.library.selected= -XMC1400_Arduino_Kit.menu.LIB.NN=ARM NN Framework -XMC1400_Arduino_Kit.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -XMC1400_Arduino_Kit.menu.LIB.DSP=ARM DSP -XMC1400_Arduino_Kit.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP -XMC1400_Arduino_Kit.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -XMC1400_Arduino_Kit.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +kit_xmc1400_arduino.name=KIT_XMC1400_ARDUINO +kit_xmc1400_arduino.upload.tool=xmcflasher +kit_xmc1400_arduino.upload.speed=115200 +kit_xmc1400_arduino.upload.resetmethod=ck +kit_xmc1400_arduino.upload.maximum_size=204800 +kit_xmc1400_arduino.upload.wait_for_upload_port=true + +kit_xmc1400_arduino.communication=usb +kit_xmc1400_arduino.protocol=dragon_isp +kit_xmc1400_arduino.program.protocol=dragon_isp +kit_xmc1400_arduino.program.tool=xmcflasher +kit_xmc1400_arduino.program.extra_params=-Pusb + +kit_xmc1400_arduino.serial.disableDTR=true +kit_xmc1400_arduino.serial.disableRTS=true + +kit_xmc1400_arduino.build.mcu=cortex-m0 +kit_xmc1400_arduino.build.f_cpu=48000000L +kit_xmc1400_arduino.build.board=ARM_XMC +kit_xmc1400_arduino.build.board.version=1402 +kit_xmc1400_arduino.build.board.type=T038x0200 +kit_xmc1400_arduino.build.board.v=0200 +kit_xmc1400_arduino.build.core=xmc +kit_xmc1400_arduino.build.variant=XMC1400 +kit_xmc1400_arduino.build.board_variant_old=XMC1400_Arduino_Kit +kit_xmc1400_arduino.build.board_variant=KIT_XMC1400_ARDUINO +kit_xmc1400_arduino.build.flash_size=200K +kit_xmc1400_arduino.build.flash_ld=linker_script_200k.ld +kit_xmc1400_arduino.build.extra_flags=-DARM_MATH_CM0 -DXMC1_SERIES + +kit_xmc1400_arduino.menu.UART.debug=PC +kit_xmc1400_arduino.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC +kit_xmc1400_arduino.menu.UART.onBoard=On Board +kit_xmc1400_arduino.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD + +kit_xmc1400_arduino.menu.LIB.NONE=None +kit_xmc1400_arduino.menu.LIB.NONE.library.selected= +kit_xmc1400_arduino.menu.LIB.NN=ARM NN Framework +kit_xmc1400_arduino.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc1400_arduino.menu.LIB.DSP=ARM DSP +kit_xmc1400_arduino.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP +kit_xmc1400_arduino.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc1400_arduino.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN #################################################### -XMC4200_Platform2GO.name=XMC4200 Platform 2GO -XMC4200_Platform2GO.upload.tool=xmcflasher -XMC4200_Platform2GO.upload.speed=115200 -XMC4200_Platform2GO.upload.resetmethod=ck -XMC4200_Platform2GO.upload.maximum_size=262144 -XMC4200_Platform2GO.upload.wait_for_upload_port=true - -XMC4200_Platform2GO.communication=usb -XMC4200_Platform2GO.protocol=dragon_isp -XMC4200_Platform2GO.program.protocol=dragon_isp -XMC4200_Platform2GO.program.tool=xmcflasher -XMC4200_Platform2GO.program.extra_params=-Pusb - -XMC4200_Platform2GO.serial.disableDTR=true -XMC4200_Platform2GO.serial.disableRTS=true - -XMC4200_Platform2GO.build.mcu=cortex-m4 -XMC4200_Platform2GO.build.f_cpu=80000000L -XMC4200_Platform2GO.build.board=ARM_XMC -XMC4200_Platform2GO.build.board.version=4200 -XMC4200_Platform2GO.build.board.type=F64x256 -XMC4200_Platform2GO.build.board.v=256 -XMC4200_Platform2GO.build.core=xmc -XMC4200_Platform2GO.build.variant=XMC4200 -XMC4200_Platform2GO.build.board_variant=XMC4200_Platform2GO -XMC4200_Platform2GO.build.flash_size=256K -XMC4200_Platform2GO.build.flash_ld=linker_script.ld -XMC4200_Platform2GO.build.extra_flags=-DARM_MATH_CM4 -DARM_MATH_DSP -DINTERRUPT_USE_ERU +kit_xmc_plt2go_xmc4200.name=KIT_XMC_PLT2GO_XMC4200 +kit_xmc_plt2go_xmc4200.upload.tool=xmcflasher +kit_xmc_plt2go_xmc4200.upload.speed=115200 +kit_xmc_plt2go_xmc4200.upload.resetmethod=ck +kit_xmc_plt2go_xmc4200.upload.maximum_size=262144 +kit_xmc_plt2go_xmc4200.upload.wait_for_upload_port=true + +kit_xmc_plt2go_xmc4200.communication=usb +kit_xmc_plt2go_xmc4200.protocol=dragon_isp +kit_xmc_plt2go_xmc4200.program.protocol=dragon_isp +kit_xmc_plt2go_xmc4200.program.tool=xmcflasher +kit_xmc_plt2go_xmc4200.program.extra_params=-Pusb + +kit_xmc_plt2go_xmc4200.serial.disableDTR=true +kit_xmc_plt2go_xmc4200.serial.disableRTS=true + +kit_xmc_plt2go_xmc4200.build.mcu=cortex-m4 +kit_xmc_plt2go_xmc4200.build.f_cpu=80000000L +kit_xmc_plt2go_xmc4200.build.board=ARM_XMC +kit_xmc_plt2go_xmc4200.build.board.version=4200 +kit_xmc_plt2go_xmc4200.build.board.type=F64x256 +kit_xmc_plt2go_xmc4200.build.board.v=256 +kit_xmc_plt2go_xmc4200.build.core=xmc +kit_xmc_plt2go_xmc4200.build.variant=XMC4200 +kit_xmc_plt2go_xmc4200.build.board_variant_old=XMC4200_Platform2GO +kit_xmc_plt2go_xmc4200.build.board_variant=KIT_XMC_PLT2GO_XMC4200 +kit_xmc_plt2go_xmc4200.build.flash_size=256K +kit_xmc_plt2go_xmc4200.build.flash_ld=linker_script.ld +kit_xmc_plt2go_xmc4200.build.extra_flags=-DARM_MATH_CM4 -DARM_MATH_DSP -DINTERRUPT_USE_ERU #-DUSB0 -XMC4200_Platform2GO.menu.LIB.NONE=None -XMC4200_Platform2GO.menu.LIB.NONE.library.selected= -XMC4200_Platform2GO.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -XMC4200_Platform2GO.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN -XMC4200_Platform2GO.menu.LIB.NN=ARM NN Framework -XMC4200_Platform2GO.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -XMC4200_Platform2GO.menu.LIB.DSP=ARM DSP -XMC4200_Platform2GO.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP +kit_xmc_plt2go_xmc4200.menu.LIB.NONE=None +kit_xmc_plt2go_xmc4200.menu.LIB.NONE.library.selected= +kit_xmc_plt2go_xmc4200.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc_plt2go_xmc4200.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +kit_xmc_plt2go_xmc4200.menu.LIB.NN=ARM NN Framework +kit_xmc_plt2go_xmc4200.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc_plt2go_xmc4200.menu.LIB.DSP=ARM DSP +kit_xmc_plt2go_xmc4200.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP #################################################### -XMC4400_Platform2GO.name=XMC4400 Platform 2GO -XMC4400_Platform2GO.upload.tool=xmcflasher -XMC4400_Platform2GO.upload.speed=115200 -XMC4400_Platform2GO.upload.resetmethod=ck -XMC4400_Platform2GO.upload.maximum_size=512000 -XMC4400_Platform2GO.upload.wait_for_upload_port=true - -XMC4400_Platform2GO.communication=usb -XMC4400_Platform2GO.protocol=dragon_isp -XMC4400_Platform2GO.program.protocol=dragon_isp -XMC4400_Platform2GO.program.tool=xmcflasher -XMC4400_Platform2GO.program.extra_params=-Pusb - -XMC4400_Platform2GO.serial.disableDTR=true -XMC4400_Platform2GO.serial.disableRTS=true - -XMC4400_Platform2GO.build.mcu=cortex-m4 -XMC4400_Platform2GO.build.f_cpu=144000000L -XMC4400_Platform2GO.build.board=ARM_XMC -XMC4400_Platform2GO.build.board.version=4400 -XMC4400_Platform2GO.build.board.type=F100x512 -XMC4400_Platform2GO.build.board.v=512 -XMC4400_Platform2GO.build.core=xmc -XMC4400_Platform2GO.build.variant=XMC4400 -XMC4400_Platform2GO.build.board_variant=XMC4400_Platform2GO -XMC4400_Platform2GO.build.flash_size=500K -XMC4400_Platform2GO.build.flash_ld=linker_script.ld -XMC4400_Platform2GO.build.extra_flags=-DARM_MATH_CM4 -DARM_MATH_DSP +kit_xmc_plt2go_xmc4400.name=KIT_XMC_PLT2GO_XMC4400 +kit_xmc_plt2go_xmc4400.upload.tool=xmcflasher +kit_xmc_plt2go_xmc4400.upload.speed=115200 +kit_xmc_plt2go_xmc4400.upload.resetmethod=ck +kit_xmc_plt2go_xmc4400.upload.maximum_size=512000 +kit_xmc_plt2go_xmc4400.upload.wait_for_upload_port=true + +kit_xmc_plt2go_xmc4400.communication=usb +kit_xmc_plt2go_xmc4400.protocol=dragon_isp +kit_xmc_plt2go_xmc4400.program.protocol=dragon_isp +kit_xmc_plt2go_xmc4400.program.tool=xmcflasher +kit_xmc_plt2go_xmc4400.program.extra_params=-Pusb + +kit_xmc_plt2go_xmc4400.serial.disableDTR=true +kit_xmc_plt2go_xmc4400.serial.disableRTS=true + +kit_xmc_plt2go_xmc4400.build.mcu=cortex-m4 +kit_xmc_plt2go_xmc4400.build.f_cpu=144000000L +kit_xmc_plt2go_xmc4400.build.board=ARM_XMC +kit_xmc_plt2go_xmc4400.build.board.version=4400 +kit_xmc_plt2go_xmc4400.build.board.type=F100x512 +kit_xmc_plt2go_xmc4400.build.board.v=512 +kit_xmc_plt2go_xmc4400.build.core=xmc +kit_xmc_plt2go_xmc4400.build.variant=XMC4400 +kit_xmc_plt2go_xmc4400.build.board_variant_old=XMC4400_Platform2GO +kit_xmc_plt2go_xmc4400.build.board_variant=KIT_XMC_PLT2GO_XMC4400 +kit_xmc_plt2go_xmc4400.build.flash_size=500K +kit_xmc_plt2go_xmc4400.build.flash_ld=linker_script.ld +kit_xmc_plt2go_xmc4400.build.extra_flags=-DARM_MATH_CM4 -DARM_MATH_DSP #-DUSB0 -XMC4400_Platform2GO.menu.UART.debug=PC -XMC4400_Platform2GO.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC -XMC4400_Platform2GO.menu.UART.onBoard=On Board -XMC4400_Platform2GO.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD +kit_xmc_plt2go_xmc4400.menu.UART.debug=PC +kit_xmc_plt2go_xmc4400.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC +kit_xmc_plt2go_xmc4400.menu.UART.onBoard=On Board +kit_xmc_plt2go_xmc4400.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD -XMC4400_Platform2GO.menu.LIB.NONE=None -XMC4400_Platform2GO.menu.LIB.NONE.library.selected= -XMC4400_Platform2GO.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -XMC4400_Platform2GO.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN -XMC4400_Platform2GO.menu.LIB.NN=ARM NN Framework -XMC4400_Platform2GO.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -XMC4400_Platform2GO.menu.LIB.DSP=ARM DSP -XMC4400_Platform2GO.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP +kit_xmc_plt2go_xmc4400.menu.LIB.NONE=None +kit_xmc_plt2go_xmc4400.menu.LIB.NONE.library.selected= +kit_xmc_plt2go_xmc4400.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc_plt2go_xmc4400.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +kit_xmc_plt2go_xmc4400.menu.LIB.NN=ARM NN Framework +kit_xmc_plt2go_xmc4400.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc_plt2go_xmc4400.menu.LIB.DSP=ARM DSP +kit_xmc_plt2go_xmc4400.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP #################################################### -XMC4700_Relax_Kit.name=XMC4700 Relax Kit -XMC4700_Relax_Kit.upload.tool=xmcflasher -XMC4700_Relax_Kit.upload.speed=115200 -XMC4700_Relax_Kit.upload.resetmethod=ck -XMC4700_Relax_Kit.upload.maximum_size=2048000 -XMC4700_Relax_Kit.upload.wait_for_upload_port=true - -XMC4700_Relax_Kit.communication=usb -XMC4700_Relax_Kit.protocol=dragon_isp -XMC4700_Relax_Kit.program.protocol=dragon_isp -XMC4700_Relax_Kit.program.tool=xmcflasher -XMC4700_Relax_Kit.program.extra_params=-Pusb - -XMC4700_Relax_Kit.serial.disableDTR=true -XMC4700_Relax_Kit.serial.disableRTS=true - -XMC4700_Relax_Kit.build.mcu=cortex-m4 -XMC4700_Relax_Kit.build.f_cpu=144000000L -XMC4700_Relax_Kit.build.board=ARM_XMC -XMC4700_Relax_Kit.build.board.version=4700 -XMC4700_Relax_Kit.build.board.type=F144x2048 -XMC4700_Relax_Kit.build.board.v=2048 -XMC4700_Relax_Kit.build.core=xmc -XMC4700_Relax_Kit.build.variant=XMC4700 -XMC4700_Relax_Kit.build.board_variant=XMC4700_Relax_Kit -XMC4700_Relax_Kit.build.flash_size=2000K -XMC4700_Relax_Kit.build.flash_ld=linker_script.ld -XMC4700_Relax_Kit.build.extra_flags=-DARM_MATH_CM4 -DXMC4_SERIES - -XMC4700_Relax_Kit.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -XMC4700_Relax_Kit.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN -XMC4700_Relax_Kit.menu.LIB.NONE=None -XMC4700_Relax_Kit.menu.LIB.NONE.library.selected= -XMC4700_Relax_Kit.menu.LIB.NN=ARM NN Framework -XMC4700_Relax_Kit.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -XMC4700_Relax_Kit.menu.LIB.DSP=ARM DSP -XMC4700_Relax_Kit.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP \ No newline at end of file +kit_xmc47_relax_5v_ad_v1.name=KIT_XMC47_RELAX_5V_AD_V1 +kit_xmc47_relax_5v_ad_v1.upload.tool=xmcflasher +kit_xmc47_relax_5v_ad_v1.upload.speed=115200 +kit_xmc47_relax_5v_ad_v1.upload.resetmethod=ck +kit_xmc47_relax_5v_ad_v1.upload.maximum_size=2048000 +kit_xmc47_relax_5v_ad_v1.upload.wait_for_upload_port=true + +kit_xmc47_relax_5v_ad_v1.communication=usb +kit_xmc47_relax_5v_ad_v1.protocol=dragon_isp +kit_xmc47_relax_5v_ad_v1.program.protocol=dragon_isp +kit_xmc47_relax_5v_ad_v1.program.tool=xmcflasher +kit_xmc47_relax_5v_ad_v1.program.extra_params=-Pusb + +kit_xmc47_relax_5v_ad_v1.serial.disableDTR=true +kit_xmc47_relax_5v_ad_v1.serial.disableRTS=true + +kit_xmc47_relax_5v_ad_v1.build.mcu=cortex-m4 +kit_xmc47_relax_5v_ad_v1.build.f_cpu=144000000L +kit_xmc47_relax_5v_ad_v1.build.board=ARM_XMC +kit_xmc47_relax_5v_ad_v1.build.board.version=4700 +kit_xmc47_relax_5v_ad_v1.build.board.type=F144x2048 +kit_xmc47_relax_5v_ad_v1.build.board.v=2048 +kit_xmc47_relax_5v_ad_v1.build.core=xmc +kit_xmc47_relax_5v_ad_v1.build.variant=XMC4700 +kit_xmc47_relax_5v_ad_v1.build.board_variant_old=XMC4700_Relax_Kit +kit_xmc47_relax_5v_ad_v1.build.board_variant=KIT_XMC47_RELAX_5V_AD_V1 +kit_xmc47_relax_5v_ad_v1.build.flash_size=2000K +kit_xmc47_relax_5v_ad_v1.build.flash_ld=linker_script.ld +kit_xmc47_relax_5v_ad_v1.build.extra_flags=-DARM_MATH_CM4 -DXMC4_SERIES + +kit_xmc47_relax_5v_ad_v1.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc47_relax_5v_ad_v1.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +kit_xmc47_relax_5v_ad_v1.menu.LIB.NONE=None +kit_xmc47_relax_5v_ad_v1.menu.LIB.NONE.library.selected= +kit_xmc47_relax_5v_ad_v1.menu.LIB.NN=ARM NN Framework +kit_xmc47_relax_5v_ad_v1.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc47_relax_5v_ad_v1.menu.LIB.DSP=ARM DSP +kit_xmc47_relax_5v_ad_v1.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP \ No newline at end of file From e9feabea3bbd578ddc7f4d130c3411c8852dddd8 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:38:21 +0200 Subject: [PATCH 117/366] ci-matrix-config.yml: Update boards name for compile config. Signed-off-by: zhanglinjing --- ci-matrix-config.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 88e627e7..4229dce5 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -29,7 +29,7 @@ sketch: - extras/arduino-examples/examples/05.Control/ForLoopIteration/ForLoopIteration.ino fqbn: - - infineon:xmc:XMC4700_Relax_Kit + - infineon:xmc:kit_xmc47_relax_5v_ad_v1 # sketch: # - libraries/LED @@ -41,33 +41,33 @@ fqbn: # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino # include: -# - fqbn: infineon:xmc:XMC1100_Boot_Kit +# - fqbn: infineon:xmc:kit_xmc11_boot_001 # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:XMC1100_XMC2GO +# - fqbn: infineon:xmc:kit_xmc_2go_xmc1100_v1 # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:XMC1300_Boot_Kit +# - fqbn: infineon:xmc:kit_xmc13_boot_001 # sketch: # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:XMC1400_XMC2GO +# - fqbn: infineon:xmc:kit_xmc14_2go # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino # - libraries/CAN -# - fqbn: infineon:xmc:XMC1400_Arduino_Kit +# - fqbn: infineon:xmc:kit_xmc1400_arduino # sketch: # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:XMC4200_Platform2GO +# - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4200 # sketch: # - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino # - libraries/CAN -# - fqbn: infineon:xmc:XMC4400_Platform2GO +# - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4400 # sketch: # - libraries/CAN -# - fqbn: infineon:xmc:XMC4700_Relax_Kit +# - fqbn: infineon:xmc:kit_xmc47_relax_5v_ad_v1 # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino @@ -76,17 +76,17 @@ fqbn: # - libraries/CAN # exclude: -# - fqbn: infineon:xmc:XMC1400_XMC2GO +# - fqbn: infineon:xmc:kit_xmc14_2go # sketch: # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino -# - fqbn: infineon:xmc:XMC1400_Arduino_Kit +# - fqbn: infineon:xmc:kit_xmc1400_arduino # sketch: # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino -# - fqbn: infineon:xmc:XMC4200_Platform2GO +# - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4200 # sketch: # - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino -# - fqbn: infineon:xmc:XMC4400_Platform2GO +# - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4400 # sketch: # - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino From 8bac65e8afa7267e9083cc3c1a376ca2af3d0983 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:39:10 +0200 Subject: [PATCH 118/366] platform.txt: Adding old boards macro for backwards compatibility. Signed-off-by: zhanglinjing --- platform.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform.txt b/platform.txt index 4fa782d7..b8632670 100644 --- a/platform.txt +++ b/platform.txt @@ -95,13 +95,13 @@ compiler.elf2hex.extra_flags= includes=-I{runtime.platform.path}/cores/xmc ## Compile C files -recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -D{build.board_variant_old} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" ## Compile C++ files -recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -D{build.board_variant_old} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" ## Compile S files -recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" +recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DXMC{build.board.version}_{build.board.type} -D{build.board_variant} -D{build.board_variant_old} -DF_CPU={build.f_cpu} -DARDUINO={build.board.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.menu_flags} {compiler.arm.cmsis.path} {compiler.avr_support.path} {compiler.usb.path} {compiler.arduino_core_api.path} {includes} "{source_file}" -o "{object_file}" # Linker patterns # ---------------- From 46b2c7417a217bd869523956c606df89126034f0 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:40:16 +0200 Subject: [PATCH 119/366] docs: Update docs according name change of boards. Signed-off-by: zhanglinjing --- docs/arduino-deviations.rst | 6 +- docs/builtin-libraries.rst | 130 ++++++++++++++++++------------------ docs/hw-platforms.rst | 28 ++++---- 3 files changed, 82 insertions(+), 82 deletions(-) diff --git a/docs/arduino-deviations.rst b/docs/arduino-deviations.rst index a30045db..e40072ca 100644 --- a/docs/arduino-deviations.rst +++ b/docs/arduino-deviations.rst @@ -158,12 +158,12 @@ function, or other case as described below. - | A4 + A5 are separate | A6 + A7 are alternate pin | configurations to I2C - * - XMC1300 Boot Kit + * - KIT_XMC13_BOOT_001 - | NOT same pin format | as Arduino Uno R3 - | A10 + A11 are alternate pin | configurations to I2C - * - XMC1400 Arduino Kit + * - KIT_XMC1400_ARDUINO - Alternate pin function - Matches Arduino Uno * - XMC4400 Platform 2Go @@ -171,7 +171,7 @@ function, or other case as described below. - | For 3V3 boards set I2C pins to tristate or open drain to use | For 5V boards refer to [this section](https://xmc-arduino.readthedocs.io/en/latest/hw-platforms.html#connected-i2s-and-analog-pins) on track cuts to enable A4 and A5 to work | Level shifter on the 5V board could interfere with tristate/open drain setting - * - XMC4700 Relax Kit (and variants) + * - KIT_XMC47_RELAX_5V_AD_V1 (and variants) - External hard wired pins - | For 3V3 boards set I2C pins to tristate or open drain to use | For 5V boards see [this section](https://xmc-arduino.readthedocs.io/en/latest/hw-platforms.html#connected-i2s-and-analog-pins) board page on track cuts to enable A4 and A5 to work diff --git a/docs/builtin-libraries.rst b/docs/builtin-libraries.rst index c8700739..653be925 100644 --- a/docs/builtin-libraries.rst +++ b/docs/builtin-libraries.rst @@ -18,41 +18,41 @@ Examples Supported - Boards - Description * - DieTemperatureMeasurement - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC1400 2GO Kit - | XMC1400 Arduino Kit - | XMC4400 Platform 2Go - | XMC4700 Relax Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC14_2GO + | KIT_XMC1400_ARDUINO + | KIT_XMC_PLT2GO_XMC4400 + | KIT_XMC47_RELAX_5V_AD_V1 - | Simple die temperature measurement | for XMC devices which demonstrates | themeasure temperature of die using | sensor. * - HeapMemoryMeasurement - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC1400 2GO Kit - | XMC1400 Arduino Kit - | XMC4700 Relax Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC14_2GO + | KIT_XMC1400_ARDUINO + | KIT_XMC47_RELAX_5V_AD_V1 - | Simple example to check heap memory | during run time for XMC devices which | demonstrates the ability to check on | free heap memory. * - SleepModeXMC1100 - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC1400 2GO Kit - | XMC1400 Arduino Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC14_2GO + | KIT_XMC1400_ARDUINO - | Demonstrates the use of an alarm to | wake up an xmc1100 from sleep mode. * - SleepModeXMC4700 - - | XMC4700 Relax Kit + - | KIT_XMC47_RELAX_5V_AD_V1 - | Simple Sleep Mode for XMC4700 | Relax Kit V1 demonstrates the use of | an alarm to wake up an XMC4700 from @@ -64,12 +64,12 @@ Examples Supported | mode, LED2 will stop blinking, until | device wakes up. * - StackMemoryMeasurement - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC4400 Platform 2Go - | XMC4700 Relax Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC_PLT2GO_XMC4400 + | KIT_XMC47_RELAX_5V_AD_V1 - | Simple example to check stack memory | during run time for XMC devices which | demonstrates the ability to check on @@ -88,11 +88,11 @@ Examples Supported - Boards - Description * - DMA_Memory - - | XMC4700 Relax Kit + - | KIT_XMC47_RELAX_5V_AD_V1 - | Demonstrates how to setup an DMA, to transfer | data between two places in memory. * - DMA_UART - - | XMC4700 Relax Kit + - | KIT_XMC47_RELAX_5V_AD_V1 - | Demonstrates how to setup an DMA, to transfer | data between two places in memory. @@ -108,11 +108,11 @@ RTC Library - Boards - Description * - AlarmRTC - - XMC4700 Relax Kit + - KIT_XMC47_RELAX_5V_AD_V1 - | Demonstrates how to set an RTC alarm for the - | XMC4700 Relax Kit V1. + | KIT_XMC47_RELAX_5V_AD_V1 V1. * - SimpleRTC - - XMC4700 Relax Kit + - KIT_XMC47_RELAX_5V_AD_V1 - Demonstrates the use of the RTC library for the XMC4700. @@ -127,14 +127,14 @@ SPI Library - Description * - | SPI_MOSI_to_MISO | _SameDevice - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC1400 2GO Kit - | XMC1400 Arduino Kit - | XMC4400 Platform 2Go - | XMC4700 Relax Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC14_2GO + | KIT_XMC1400_ARDUINO + | KIT_XMC_PLT2GO_XMC4400 + | KIT_XMC47_RELAX_5V_AD_V1 - | SPI example which communicates between the | MOSI and MISO pin of the same board. Connect | the MOSI pin to the MOSI pin as hardware @@ -151,14 +151,14 @@ Wire Library - Boards - Description * - master_reader - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC1400 2GO Kit - | XMC1400 Arduino Kit - | XMC4400 Platform 2Go - | XMC4700 Relax Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC14_2GO + | KIT_XMC1400_ARDUINO + | KIT_XMC_PLT2GO_XMC4400 + | KIT_XMC47_RELAX_5V_AD_V1 - | Demonstrates use of the Wire library. Reads data | from an I2C/TWI slave device. Refer to the "Wire Slave | Sender" example for use with this. Then it @@ -167,14 +167,14 @@ Wire Library | pins of one board to the SDA and SCL pin of the | other board. * - master_writer - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC1400 2GO Kit - | XMC1400 Arduino Kit - | XMC4400 Platform 2Go - | XMC4700 Relax Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC14_2GO + | KIT_XMC1400_ARDUINO + | KIT_XMC_PLT2GO_XMC4400 + | KIT_XMC47_RELAX_5V_AD_V1 - | Demonstrates use of the Wire library. Writes data to | an I2C/TWI slave device. Refer to the "Wire Slave | Receiver" example for use with this. Then it @@ -183,14 +183,14 @@ Wire Library | pins of one board to the SDA and SCL pin of the | other board. * - slave_receiver - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC1400 2GO Kit - | XMC1400 Arduino Kit - | XMC4400 Platform 2Go - | XMC4700 Relax Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC14_2GO + | KIT_XMC1400_ARDUINO + | KIT_XMC_PLT2GO_XMC4400 + | KIT_XMC47_RELAX_5V_AD_V1 - | Demonstrates use of the Wire library. Receives data as | an I2C/TWI slave device. Refer to the "Wire Slave | Writer" example for use with this. Then it @@ -199,14 +199,14 @@ Wire Library | pins of one board to the SDA and SCL pin of the | other board. * - slave_sender - - | XMC1100 XMC 2GO - | XMC1100 Boot Kit + - | KIT_XMC_2GO_XMC1100_V1 + | KIT_XMC11_BOOT_001 | XMC1100 H-Bridge 2GO - | XMC1300 Boot Kit - | XMC1400 2GO Kit - | XMC1400 Arduino Kit - | XMC4400 Platform 2Go - | XMC4700 Relax Kit + | KIT_XMC13_BOOT_001 + | KIT_XMC14_2GO + | KIT_XMC1400_ARDUINO + | KIT_XMC_PLT2GO_XMC4400 + | KIT_XMC47_RELAX_5V_AD_V1 - | Demonstrates use of the Wire library. Receives data as | an I2C/TWI slave device. Refer to the "Wire Master | Reader" example for use with this. Then it @@ -219,7 +219,7 @@ Wire Library I2S Library ^^^^^^^^^^^ -This library has been tested with the IM69D130 Microphone Shield2Go with both XMC4700 Relax Kit and XMC1100 XMC2Go. +This library has been tested with the IM69D130 Microphone Shield2Go with both KIT_XMC47_RELAX_5V_AD_V1 and XMC1100 XMC2Go. Please refer to the `README.md `_ of the I2S library for pin connections. diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index 24b394e7..32bf80fd 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -47,13 +47,13 @@ The following XMC microcontroller boards are supported by XMC for Arduino: KIT_XMC11_BOOT_001 ------------------ -* Name in Arduino IDE: ``XMC1100 Boot Kit`` +* Legacy name: ``XMC1100 Boot Kit`` * `Product Page `__ .. image:: img/KIT_XMC11_BOOT_001.jpg :width: 400 -The XMC1100 Boot Kit board consists of a XMC1100 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The KIT_XMC11_BOOT_001 board consists of a XMC1100 microcontroller with a debugger implemented by a XMC4200 microcontroller. The board shares the same power supply and board shape as other shields for Arduino. Pinout Diagram @@ -71,7 +71,7 @@ nor share the same pins/resources. This is different from the original Arduino U KIT_XMC13_BOOT_001 ------------------ -* Name in Arduino IDE: ``XMC1300 Boot Kit`` +* Legacy name: ``XMC1300 Boot Kit`` * `Product Page `__ .. image:: img/KIT_XMC13_BOOT_001.jpg @@ -86,13 +86,13 @@ XMC1302 Microcontroller in TSSOP-38 with 200KB Flash and full peripheral set of KIT_XMC14_2GO ------------- -* Name in Arduino IDE: ``XMC1400 XMC2GO`` +* Legacy name: ``XMC1400 XMC2GO`` * `Product Page `__ .. image:: img/KIT_XMC14_2GO.png :width: 400 -The XMC1400 Kit 2Go provides an easy way to evaluate almost all capabilities of the XMC1400 microcontroller. +The KIT_XMC14_2GO provides an easy way to evaluate almost all capabilities of the XMC1400 microcontroller. The kit is powered via USB, interfaces to other Infineon sensor boards and provides multiple interfaces including a CAN bus. The software development is supported via ModusToolbox™ and the Arduino IDE. @@ -109,13 +109,13 @@ Pinout Diagram KIT_XMC1400_ARDUINO ------------------- -* Name in Arduino IDE: ``XMC1400 Kit for Arduino`` +* Legacy name: ``XMC1400 Kit for Arduino`` * `Product Page `__ .. image:: img/KIT_XMC1400_ARDUINO.jpg :width: 400 -The XMC1400 Kit for Arduino consists of a XMC1400 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The KIT_XMC1400_ARDUINO consists of a XMC1400 microcontroller with a debugger implemented by a XMC4200 microcontroller. The board shares the same power supply and board shape as other shields for Arduino. Pinout Diagram @@ -134,13 +134,13 @@ Arduino UNO Rev3 implementation. Please look at the pinout diagram for more info KIT_XMC_PLT2GO_XMC4200 ---------------------- -* Name in Arduino IDE: ``XMC4200 Platform 2GO`` +* Legacy name: ``XMC4200 Platform 2GO`` * `Product Page `__ .. image:: img/KIT_XMC_PLT2GO_XMC4200.jpg :width: 400 -The XMC4200 Platform 2Go evaluation board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The _KIT_XMC_PLT2GO_XMC4200 board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. This kit is equipped with an ARM® Cortex®-M4 based XMC4200 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, @@ -161,13 +161,13 @@ on the board itself. If you want to use them check out the subsection :ref:`conn KIT_XMC_PLT2GO_XMC4400 ---------------------- -* Name in Arduino IDE: ``XMC4400 Platform 2GO`` +* Legacy name: ``XMC4400 Platform 2GO`` * `Product Page `__ .. image:: img/KIT_XMC_PLT2GO_XMC4400.jpg :width: 400 -The XMC4400 Platform 2Go evaluation board consists of a XMC4400 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The KIT_XMC_PLT2GO_XMC4400 board consists of a XMC4400 microcontroller with a debugger implemented by a XMC4200 microcontroller. Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. This kit is equipped with an ARM® Cortex®-M4 based XMC4400 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, @@ -188,13 +188,13 @@ on the board itself. If you want to use them check out the subsection :ref:`conn KIT_XMC47_RELAX_5V_AD_V1 ------------------------ -* Name in Arduino IDE: ``XMC4700 Relax Kit`` +* Legacy name: ``KIT_XMC47_RELAX_5V_AD_V1`` * `Product Page `__ .. image:: img/KIT_XMC47_RELAX_5V_AD_V1.jpg :width: 400 -The XMC4700 Relax Kit board consists of a XMC4700 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The KIT_XMC47_RELAX_5V_AD_V1 board consists of a XMC4700 microcontroller with a debugger implemented by a XMC4200 microcontroller. Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. @@ -286,7 +286,7 @@ KIT_XMC_2GO_XMC1100_V1 ---------------------- * Replaced by :ref:`KIT_XMC14_2GO` -* Name in Arduino IDE: ``XMC1100 XMC2Go`` +* Legacy name: ``XMC1100 XMC2Go``` The XMC1100 2Go board consists of a XMC1100 microcontroller with a debugger implemented by a XMC4200 microcontroller. From a01e9714b4534be73cc97a0195b8a03462327bd6 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 14:45:45 +0200 Subject: [PATCH 120/366] extras: Update arduino-devopsfor boards name change. Signed-off-by: zhanglinjing --- extras/arduino-devops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-devops b/extras/arduino-devops index 9f09f1a0..24025977 160000 --- a/extras/arduino-devops +++ b/extras/arduino-devops @@ -1 +1 @@ -Subproject commit 9f09f1a07f4ba11a449f8b534e2a31abcb3ba581 +Subproject commit 240259776cd4ec996bb1242baaa222752eac8be2 From 147128b2d54ab22f8b57f2c819bcefc423cfd7af Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 15:15:51 +0200 Subject: [PATCH 121/366] boards.txt: Fix Typo. Signed-off-by: zhanglinjing --- boards.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards.txt b/boards.txt index 0f8ac90c..115c8731 100644 --- a/boards.txt +++ b/boards.txt @@ -3,7 +3,7 @@ menu.UART=Serial Output Selection menu.LIB=Additional Libraries #################################################### -KIT_XMC11_BOOT_001kit_xmc11_boot_001.name=KIT_XMC11_BOOT_001 +kit_xmc11_boot_001.name=KIT_XMC11_BOOT_001 kit_xmc11_boot_001.upload.tool=xmcflasher kit_xmc11_boot_001.upload.speed=115200 kit_xmc11_boot_001.upload.resetmethod=ck From 432ab7754cb8c86ffb0a129864e7d3164da9a6ad Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:17:36 +0200 Subject: [PATCH 122/366] libraries/SPI: Fix typo. Signed-off-by: zhanglinjing --- libraries/SPI/src/SPI.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index a94c38b2..fc1392eb 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -35,7 +35,7 @@ // #define USE_SW_SPI // Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over -// the on-board SD Card Slot. This feature is only available on KIT_XMC47_RELAX_5V_AD_V1Kits. +// the on-board SD Card Slot. This feature is only available on KIT_XMC47_RELAX_5V_AD_V1 Kits. #if defined(KIT_XMC47_RELAX_5V_AD_V1) #define USE_XMC_RELAX_KIT_SD #endif From a1485113b4880679e91c77af4bf577a764ec3253 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:22:47 +0200 Subject: [PATCH 123/366] docs: Remove XMC1100 H-Bridge 2GO. Signed-off-by: zhanglinjing --- docs/builtin-libraries.rst | 9 --------- 1 file changed, 9 deletions(-) diff --git a/docs/builtin-libraries.rst b/docs/builtin-libraries.rst index 653be925..4f5ff942 100644 --- a/docs/builtin-libraries.rst +++ b/docs/builtin-libraries.rst @@ -20,7 +20,6 @@ Examples Supported * - DieTemperatureMeasurement - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO @@ -33,7 +32,6 @@ Examples Supported * - HeapMemoryMeasurement - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO @@ -45,7 +43,6 @@ Examples Supported * - SleepModeXMC1100 - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO @@ -66,7 +63,6 @@ Examples Supported * - StackMemoryMeasurement - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC_PLT2GO_XMC4400 | KIT_XMC47_RELAX_5V_AD_V1 @@ -129,7 +125,6 @@ SPI Library | _SameDevice - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO @@ -153,7 +148,6 @@ Wire Library * - master_reader - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO @@ -169,7 +163,6 @@ Wire Library * - master_writer - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO @@ -185,7 +178,6 @@ Wire Library * - slave_receiver - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO @@ -201,7 +193,6 @@ Wire Library * - slave_sender - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 - | XMC1100 H-Bridge 2GO | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO From 2ef2b0b83912dd680f2cacf435c9241bfe1e8994 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:26:04 +0200 Subject: [PATCH 124/366] libraries/DMA: Fix Typo. Signed-off-by: zhanglinjing --- libraries/DMA/examples/DMA_Memory/DMA_Memory.ino | 2 +- libraries/DMA/examples/DMA_UART/DMA_UART.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino b/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino index 378fc4d5..984218cf 100644 --- a/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino +++ b/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino @@ -1,5 +1,5 @@ /* - * Simple DMA example for KIT_XMC47_RELAX_5V_AD_V1 V1 + * Simple DMA example for KIT_XMC47_RELAX_5V_AD_V1 * Demonstrates how to setup an DMA, to transfer data between two places in memory. * Prints the message in Serial port. */ diff --git a/libraries/DMA/examples/DMA_UART/DMA_UART.ino b/libraries/DMA/examples/DMA_UART/DMA_UART.ino index d70a2cc6..7a6bc824 100644 --- a/libraries/DMA/examples/DMA_UART/DMA_UART.ino +++ b/libraries/DMA/examples/DMA_UART/DMA_UART.ino @@ -1,5 +1,5 @@ /* - * Simple DMA example for KIT_XMC47_RELAX_5V_AD_V1 V1 + * Simple DMA example for KIT_XMC47_RELAX_5V_AD_V1 * Demonstrates how to setup an DMA, between memory and UART module. * Prints the message in Serial port. */ From 0b351ed20325ab5236c4f523ed44c48898022c79 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:27:39 +0200 Subject: [PATCH 125/366] docs/DMA: Fix after review comments. Signed-off-by: zhanglinjing --- docs/hw-platforms.rst | 4 ++-- docs/installation-instructions.rst | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index 32bf80fd..9ff06924 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -140,7 +140,7 @@ KIT_XMC_PLT2GO_XMC4200 .. image:: img/KIT_XMC_PLT2GO_XMC4200.jpg :width: 400 -The _KIT_XMC_PLT2GO_XMC4200 board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The KIT_XMC_PLT2GO_XMC4200 board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. This kit is equipped with an ARM® Cortex®-M4 based XMC4200 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, @@ -188,7 +188,7 @@ on the board itself. If you want to use them check out the subsection :ref:`conn KIT_XMC47_RELAX_5V_AD_V1 ------------------------ -* Legacy name: ``KIT_XMC47_RELAX_5V_AD_V1`` +* Legacy name: ``XMC4700 Relax Kit`` * `Product Page `__ .. image:: img/KIT_XMC47_RELAX_5V_AD_V1.jpg diff --git a/docs/installation-instructions.rst b/docs/installation-instructions.rst index 75bcfec7..5f414391 100644 --- a/docs/installation-instructions.rst +++ b/docs/installation-instructions.rst @@ -53,7 +53,7 @@ Paste the following URL into the *Additional boards manager URLs* input field un :: - https://github.com/Infineon/XMC-for-Arduino/releases/latest/download/package_infineon_index.json + https://github.com/Infineon/XMC-for-Arduino/releases/latest/download/package_xmc_index.json .. image:: img/arduino_ide_preferences_menu.png :width: 600 From 56adfeb6c3529d8202b53464f8e322ba82cda175 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:43:10 +0200 Subject: [PATCH 126/366] docs: Change XMC47 board to more generic name. Signed-off-by: zhanglinjing --- docs/arduino-deviations.rst | 6 +-- docs/builtin-libraries.rst | 36 +++++++++--------- docs/hw-platforms.rst | 22 +++++------ ...RELAX_5V_AD_V1.jpg => KIT_XMC47_RELAX.jpg} | Bin ..._pinout.png => KIT_XMC47_RELAX_pinout.png} | Bin docs/index.rst | 2 +- 6 files changed, 33 insertions(+), 33 deletions(-) rename docs/img/{KIT_XMC47_RELAX_5V_AD_V1.jpg => KIT_XMC47_RELAX.jpg} (100%) rename docs/img/{KIT_XMC47_RELAX_5V_AD_V1_pinout.png => KIT_XMC47_RELAX_pinout.png} (100%) diff --git a/docs/arduino-deviations.rst b/docs/arduino-deviations.rst index e40072ca..3edd0cb0 100644 --- a/docs/arduino-deviations.rst +++ b/docs/arduino-deviations.rst @@ -153,7 +153,7 @@ function, or other case as described below. * - Board - Functionality - Note - * - XMC1100 Boot Kit + * - KIT_XMC11_BOOT_001 - NOT supported - | A4 + A5 are separate | A6 + A7 are alternate pin @@ -166,12 +166,12 @@ function, or other case as described below. * - KIT_XMC1400_ARDUINO - Alternate pin function - Matches Arduino Uno - * - XMC4400 Platform 2Go + * - KIT_XMC_PLT2GO_XMC4400 - External hard wired pins - | For 3V3 boards set I2C pins to tristate or open drain to use | For 5V boards refer to [this section](https://xmc-arduino.readthedocs.io/en/latest/hw-platforms.html#connected-i2s-and-analog-pins) on track cuts to enable A4 and A5 to work | Level shifter on the 5V board could interfere with tristate/open drain setting - * - KIT_XMC47_RELAX_5V_AD_V1 (and variants) + * - KIT_XMC47_RELAX (and variants) - External hard wired pins - | For 3V3 boards set I2C pins to tristate or open drain to use | For 5V boards see [this section](https://xmc-arduino.readthedocs.io/en/latest/hw-platforms.html#connected-i2s-and-analog-pins) board page on track cuts to enable A4 and A5 to work diff --git a/docs/builtin-libraries.rst b/docs/builtin-libraries.rst index 4f5ff942..ad2180ab 100644 --- a/docs/builtin-libraries.rst +++ b/docs/builtin-libraries.rst @@ -24,7 +24,7 @@ Examples Supported | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO | KIT_XMC_PLT2GO_XMC4400 - | KIT_XMC47_RELAX_5V_AD_V1 + | KIT_XMC47_RELAX - | Simple die temperature measurement | for XMC devices which demonstrates | themeasure temperature of die using @@ -35,7 +35,7 @@ Examples Supported | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO - | KIT_XMC47_RELAX_5V_AD_V1 + | KIT_XMC47_RELAX - | Simple example to check heap memory | during run time for XMC devices which | demonstrates the ability to check on @@ -49,7 +49,7 @@ Examples Supported - | Demonstrates the use of an alarm to | wake up an xmc1100 from sleep mode. * - SleepModeXMC4700 - - | KIT_XMC47_RELAX_5V_AD_V1 + - | KIT_XMC47_RELAX - | Simple Sleep Mode for XMC4700 | Relax Kit V1 demonstrates the use of | an alarm to wake up an XMC4700 from @@ -65,7 +65,7 @@ Examples Supported | KIT_XMC11_BOOT_001 | KIT_XMC13_BOOT_001 | KIT_XMC_PLT2GO_XMC4400 - | KIT_XMC47_RELAX_5V_AD_V1 + | KIT_XMC47_RELAX - | Simple example to check stack memory | during run time for XMC devices which | demonstrates the ability to check on @@ -84,11 +84,11 @@ Examples Supported - Boards - Description * - DMA_Memory - - | KIT_XMC47_RELAX_5V_AD_V1 + - | KIT_XMC47_RELAX - | Demonstrates how to setup an DMA, to transfer | data between two places in memory. * - DMA_UART - - | KIT_XMC47_RELAX_5V_AD_V1 + - | KIT_XMC47_RELAX - | Demonstrates how to setup an DMA, to transfer | data between two places in memory. @@ -104,11 +104,11 @@ RTC Library - Boards - Description * - AlarmRTC - - KIT_XMC47_RELAX_5V_AD_V1 + - KIT_XMC47_RELAX - | Demonstrates how to set an RTC alarm for the - | KIT_XMC47_RELAX_5V_AD_V1 V1. + | KIT_XMC47_RELAX V1. * - SimpleRTC - - KIT_XMC47_RELAX_5V_AD_V1 + - KIT_XMC47_RELAX - Demonstrates the use of the RTC library for the XMC4700. @@ -129,7 +129,7 @@ SPI Library | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO | KIT_XMC_PLT2GO_XMC4400 - | KIT_XMC47_RELAX_5V_AD_V1 + | KIT_XMC47_RELAX - | SPI example which communicates between the | MOSI and MISO pin of the same board. Connect | the MOSI pin to the MOSI pin as hardware @@ -152,7 +152,7 @@ Wire Library | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO | KIT_XMC_PLT2GO_XMC4400 - | KIT_XMC47_RELAX_5V_AD_V1 + | KIT_XMC47_RELAX - | Demonstrates use of the Wire library. Reads data | from an I2C/TWI slave device. Refer to the "Wire Slave | Sender" example for use with this. Then it @@ -167,7 +167,7 @@ Wire Library | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO | KIT_XMC_PLT2GO_XMC4400 - | KIT_XMC47_RELAX_5V_AD_V1 + | KIT_XMC47_RELAX - | Demonstrates use of the Wire library. Writes data to | an I2C/TWI slave device. Refer to the "Wire Slave | Receiver" example for use with this. Then it @@ -182,7 +182,7 @@ Wire Library | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO | KIT_XMC_PLT2GO_XMC4400 - | KIT_XMC47_RELAX_5V_AD_V1 + | KIT_XMC47_RELAX - | Demonstrates use of the Wire library. Receives data as | an I2C/TWI slave device. Refer to the "Wire Slave | Writer" example for use with this. Then it @@ -197,7 +197,7 @@ Wire Library | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO | KIT_XMC_PLT2GO_XMC4400 - | KIT_XMC47_RELAX_5V_AD_V1 + | KIT_XMC47_RELAX - | Demonstrates use of the Wire library. Receives data as | an I2C/TWI slave device. Refer to the "Wire Master | Reader" example for use with this. Then it @@ -210,7 +210,7 @@ Wire Library I2S Library ^^^^^^^^^^^ -This library has been tested with the IM69D130 Microphone Shield2Go with both KIT_XMC47_RELAX_5V_AD_V1 and XMC1100 XMC2Go. +This library has been tested with the IM69D130 Microphone Shield2Go with both KIT_XMC47_RELAX and KIT_XMC_2GO_XMC1100_V1. Please refer to the `README.md `_ of the I2S library for pin connections. @@ -236,7 +236,7 @@ This library provides support for the CAN protocol. For further details, please - Boards - Description * - CANSender - - XMC1400 2GO + - KIT_XMC14_2GO - | This example demonstrates how to send a CAN message. | It supports two different message/frame formats: | standard and extended. The CAN standard frame uses @@ -244,7 +244,7 @@ This library provides support for the CAN protocol. For further details, please | uses a 29-bit identifier. * - | CANReceiver/ | CANReceiverCallback - - XMC1400 2GO + - KIT_XMC14_2GO - | This example demonstrates how to receive a CAN | message. There are two methods for receiving messages: | the default method runs a loop that continuously @@ -255,7 +255,7 @@ This library provides support for the CAN protocol. For further details, please | be received. Additionally, messages can be filtered for | specific IDs using the ``filter()`` function. * - CANLoopBack - - XMC1400 2GO + - KIT_XMC14_2GO - | This example demonstrates the loopback mode of CAN. | In this mode, the CAN transmitter is internally connected | to its receiver, allowing the message to be sent and diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index 9ff06924..273377f5 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -34,8 +34,8 @@ The following XMC microcontroller boards are supported by XMC for Arduino: - :ref:`KIT_XMC_PLT2GO_XMC4400` - XMC4400 - Arduino Uno, Shield2Go, mikroBUS - * - .. image:: img/KIT_XMC47_RELAX_5V_AD_V1.jpg - - :ref:`KIT_XMC47_RELAX_5V_AD_V1` + * - .. image:: img/KIT_XMC47_RELAX.jpg + - :ref:`KIT_XMC47_RELAX` - XMC4700 - Arduino Uno @@ -183,25 +183,25 @@ on the board itself. If you want to use them check out the subsection :ref:`conn ----------------------------------------------------------------------- -.. _KIT_XMC47_RELAX_5V_AD_V1: +.. _KIT_XMC47_RELAX: -KIT_XMC47_RELAX_5V_AD_V1 +KIT_XMC47_RELAX ------------------------ * Legacy name: ``XMC4700 Relax Kit`` * `Product Page `__ -.. image:: img/KIT_XMC47_RELAX_5V_AD_V1.jpg +.. image:: img/KIT_XMC47_RELAX.jpg :width: 400 -The KIT_XMC47_RELAX_5V_AD_V1 board consists of a XMC4700 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The KIT_XMC47_RELAX board consists of a XMC4700 microcontroller with a debugger implemented by a XMC4200 microcontroller. Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. Pinout Diagram ^^^^^^^^^^^^^^ -.. image:: img/KIT_XMC47_RELAX_5V_AD_V1_pinout.png +.. image:: img/KIT_XMC47_RELAX_pinout.png :width: 700 Please note that Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other @@ -214,11 +214,11 @@ on the board itself. If you want to use them check out the subsection :ref:`conn Connected I2S and Analog pins ----------------------------- -For the ``KIT_XMC_PLT2GO_XMC4200``, ``KIT_XMC_PLT2GO_XMC4400`` and ``KIT_XMC47_RELAX_5V_AD_V1`` the Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino +For the ``KIT_XMC_PLT2GO_XMC4200``, ``KIT_XMC_PLT2GO_XMC4400`` and ``KIT_XMC47_RELAX`` the Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other on the board itself. Although they are different physical pins of the microcontroller, they are connected with each other on the board to comply with the original Arduino UNO Rev3 pin connections. This influences analog measurements on ``A4`` and ``A5`` if you are using I2C simultaneously. Details of the connection can also be found in the schematics in the user manual of the board here: -`KIT_XMC_PLT2GO_XMC4200 user manual`_, `KIT_XMC_PLT2GO_XMC4400 user manual`_ and `KIT_XMC47_RELAX_5V_AD_V1 user manual`_. +`KIT_XMC_PLT2GO_XMC4200 user manual`_, `KIT_XMC_PLT2GO_XMC4400 user manual`_ and `KIT_XMC47_RELAX user manual`_. The user manual shows on: @@ -242,14 +242,14 @@ For the ``KIT_XMC_PLT2GO_XMC4400`` by cutting the marked blue routes on the back .. image:: img/kit_xmc_plt2go_xmc4400_cut_routes.png :width: 300 -For the ``KIT_XMC47_RELAX_5V_AD_V1`` cut the blue routes on the back side of the PCB as indicated here: +For the ``KIT_XMC47_RELAX`` cut the blue routes on the back side of the PCB as indicated here: .. image:: img/kit_xmc47_relax_cut_routes.jpg :width: 300 .. _KIT_XMC_PLT2GO_XMC4200 user manual: https://www.infineon.com/dgdl/Infineon-XMC4200_Platform2Go-UserManual-v01_00-EN.pdf?fileId=5546d4626f229553016f8fca76c12c96 .. _KIT_XMC_PLT2GO_XMC4400 user manual: https://www.infineon.com/dgdl/Infineon-XMC4400_Platform2Go-UserManual-v01_00-EN.pdf?fileId=5546d4626f229553016f8fc159482c94 -.. _KIT_XMC47_RELAX_5V_AD_V1 user manual: https://www.infineon.com/dgdl/Infineon-Board_User_Manual_XMC4700_XMC4800_Relax_Kit_Series-UM-v01_02-EN.pdf?fileId=5546d46250cc1fdf01513f8e052d07fc +.. _KIT_XMC47_RELAX user manual: https://www.infineon.com/dgdl/Infineon-Board_User_Manual_XMC4700_XMC4800_Relax_Kit_Series-UM-v01_02-EN.pdf?fileId=5546d46250cc1fdf01513f8e052d07fc ----------------------------------------------------------------------- diff --git a/docs/img/KIT_XMC47_RELAX_5V_AD_V1.jpg b/docs/img/KIT_XMC47_RELAX.jpg similarity index 100% rename from docs/img/KIT_XMC47_RELAX_5V_AD_V1.jpg rename to docs/img/KIT_XMC47_RELAX.jpg diff --git a/docs/img/KIT_XMC47_RELAX_5V_AD_V1_pinout.png b/docs/img/KIT_XMC47_RELAX_pinout.png similarity index 100% rename from docs/img/KIT_XMC47_RELAX_5V_AD_V1_pinout.png rename to docs/img/KIT_XMC47_RELAX_pinout.png diff --git a/docs/index.rst b/docs/index.rst index e1077c85..0f6963b5 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -9,7 +9,7 @@ Welcome to Infineon's XMC Microcontroller Boards for Arduino! .. image:: img/KIT_XMC11_BOOT_001.jpg :width: 200 -.. image:: img/KIT_XMC47_RELAX_5V_AD_V1.jpg +.. image:: img/KIT_XMC47_RELAX.jpg :width: 200 The XMC microcontroller family from Infineon offers a powerful and versatile platform for embedded system development. From 471a37bb1848db9f23a42ae4e765c51c383b97c2 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:44:06 +0200 Subject: [PATCH 127/366] cores: Update name KIT_XMC47_RELAX. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index dbdaa71f..c015feb8 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -293,12 +293,12 @@ extern XMC_UART_t XMC_UART_debug; extern XMC_UART_t XMC_UART_on_board; extern XMC_SPI_t XMC_SPI_0; -// Some boards for eg. KIT_XMC47_RELAX_5V_AD_V1 has more than one SPI instance +// Some boards for eg. KIT_XMC47_RELAX has more than one SPI instance extern XMC_SPI_t XMC_SPI_1; extern XMC_SPI_t XMC_SPI_2; extern XMC_I2C_t XMC_I2C_0; -// Some boards for eg. KIT_XMC47_RELAX_5V_AD_V1 has more than one I2C instance +// Some boards for eg. KIT_XMC47_RELAX has more than one I2C instance extern XMC_I2C_t XMC_I2C_1; extern XMC_I2S_t i2s_config; From df495fd984f221644df81f9f0fac575c3bb9b1d7 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:50:42 +0200 Subject: [PATCH 128/366] variants: Update folder name KIT_XMC47_RELAX. Signed-off-by: zhanglinjing --- .../{KIT_XMC47_RELAX_5V_AD_V1 => KIT_XMC47_RELAX}/pins_arduino.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename variants/XMC4700/config/{KIT_XMC47_RELAX_5V_AD_V1 => KIT_XMC47_RELAX}/pins_arduino.h (100%) diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX_5V_AD_V1/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h similarity index 100% rename from variants/XMC4700/config/KIT_XMC47_RELAX_5V_AD_V1/pins_arduino.h rename to variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h From f6edeb08b7ba94d690cbb3f9fcaeb373c2c44513 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:52:08 +0200 Subject: [PATCH 129/366] libraries: Update name KIT_XMC47_RELAX. Signed-off-by: zhanglinjing --- libraries/CAN/README.md | 4 ++-- libraries/DMA/examples/DMA_Memory/DMA_Memory.ino | 2 +- libraries/DMA/examples/DMA_UART/DMA_UART.ino | 2 +- .../examples/SleepModeXMC4700/SleepModeXMC4700.ino | 2 +- libraries/I2S/README.md | 6 +++--- libraries/I2S/src/I2S.cpp | 2 +- libraries/I2S/src/I2S.h | 2 +- libraries/LED/Readme.md | 4 ++-- libraries/OneWire/src/util/OneWireConf.h | 2 +- libraries/RTC/examples/AlarmRTC/AlarmRTC.ino | 6 +++--- libraries/RTC/examples/SimpleRTC/SimpleRTC.ino | 2 +- libraries/SPI/src/SPI.h | 4 ++-- libraries/Wire/src/Wire.cpp | 2 +- 13 files changed, 20 insertions(+), 20 deletions(-) diff --git a/libraries/CAN/README.md b/libraries/CAN/README.md index 14f08569..a3dbb5a2 100644 --- a/libraries/CAN/README.md +++ b/libraries/CAN/README.md @@ -4,9 +4,9 @@ Based on [Arduino CAN library](https://www.arduino.cc/reference/en/libraries/can # Hardware Setup -XMC boards with CAN support (CAN transceiver on board and CAN controller module): KIT_XMC_PLT2GO_XMC4200, KIT_XMC_PLT2GO_XMC4400, KIT_XMC47_RELAX_5V_AD_V1 and KIT_XMC14_2GO. +XMC boards with CAN support (CAN transceiver on board and CAN controller module): KIT_XMC_PLT2GO_XMC4200, KIT_XMC_PLT2GO_XMC4400, KIT_XMC47_RELAX and KIT_XMC14_2GO. -:warning: There is a 120 ohm terminal resistor on the KIT_XMC_PLT2GO_XMC4400 and KIT_XMC14_2GO boards, not on the KIT_XMC_PLT2GO_XMC4200 and KIT_XMC47_RELAX_5V_AD_V1. Please remove or add resistors as needed. +:warning: There is a 120 ohm terminal resistor on the KIT_XMC_PLT2GO_XMC4400 and KIT_XMC14_2GO boards, not on the KIT_XMC_PLT2GO_XMC4200 and KIT_XMC47_RELAX. Please remove or add resistors as needed. All CAN nodes should be connected using the (twisted) pair cable for the CAN_H and CAN_L diff --git a/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino b/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino index 984218cf..15997002 100644 --- a/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino +++ b/libraries/DMA/examples/DMA_Memory/DMA_Memory.ino @@ -1,5 +1,5 @@ /* - * Simple DMA example for KIT_XMC47_RELAX_5V_AD_V1 + * Simple DMA example for KIT_XMC47_RELAX * Demonstrates how to setup an DMA, to transfer data between two places in memory. * Prints the message in Serial port. */ diff --git a/libraries/DMA/examples/DMA_UART/DMA_UART.ino b/libraries/DMA/examples/DMA_UART/DMA_UART.ino index 7a6bc824..4e8056e6 100644 --- a/libraries/DMA/examples/DMA_UART/DMA_UART.ino +++ b/libraries/DMA/examples/DMA_UART/DMA_UART.ino @@ -1,5 +1,5 @@ /* - * Simple DMA example for KIT_XMC47_RELAX_5V_AD_V1 + * Simple DMA example for KIT_XMC47_RELAX * Demonstrates how to setup an DMA, between memory and UART module. * Prints the message in Serial port. */ diff --git a/libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino b/libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino index c517be27..96f4391d 100644 --- a/libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino +++ b/libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino @@ -1,5 +1,5 @@ /* - Simple Sleep Mode for KIT_XMC47_RELAX_5V_AD_V1 V1 + Simple Sleep Mode for KIT_XMC47_RELAX Demonstrates the ability to control peripherals on sleep mode. LED2 will blink fast on active mode. If CCU4 is ON in sleep mode, LED2 will blink slower (because of slower clock) while in sleep mode. If CCU is OFF in sleep mode, LED2 will stop blinking, until device wakes up. diff --git a/libraries/I2S/README.md b/libraries/I2S/README.md index 212e2d8f..0e01a22a 100644 --- a/libraries/I2S/README.md +++ b/libraries/I2S/README.md @@ -6,9 +6,9 @@ the master device and read audio input from another device such as a microphone. Be aware that only reading is possible for the time being - no I2S output is supported. ## Wiring -The library has been tested with the KIT_XMC47_RELAX_5V_AD_V1, XMC1100 XMC 2Go, and KIT_XMC11_BOOT_001 in combination with the IM69D130 Microphone Shield2Go. +The library has been tested with the KIT_XMC47_RELAX, XMC1100 XMC 2Go, and KIT_XMC11_BOOT_001 in combination with the IM69D130 Microphone Shield2Go. -* For the KIT_XMC47_RELAX_5V_AD_V1, following ports/pins should be connected: +* For the KIT_XMC47_RELAX, following ports/pins should be connected: - BCLK -- P3.10 - DATA -- P3.7 - CLK -- P3.9 @@ -66,7 +66,7 @@ Please refer to the data sheet of your specific microphone for the sampling rate If you are using XMC1000 family boards, the recommended sampling rate is 12 kHz as higher values might interfere with the microcontroller speed. Since both `Serial` and `I2S` use USIC interrupts, there could be a problem with processing remaining code as the processor could get locked out via interrupts. -However, if you are using an XMC4000 board such as a KIT_XMC47_RELAX_5V_AD_V1, you shouldn't have to worry about these issues in particular. +However, if you are using an XMC4000 board such as a KIT_XMC47_RELAX, you shouldn't have to worry about these issues in particular. ### Data delay Sometimes, it also makes sense to adjust the data delay, which is the delay between a changing WA/LRCL edge and the start of a sample depending on the microphone of your choice. Please be aware that there are different `I2S.begin()` functions which allow to set the parameters very precisely. Have a look in the I2S.h file for more information. diff --git a/libraries/I2S/src/I2S.cpp b/libraries/I2S/src/I2S.cpp index e81187ec..61daf46f 100644 --- a/libraries/I2S/src/I2S.cpp +++ b/libraries/I2S/src/I2S.cpp @@ -415,7 +415,7 @@ void I2SClass::_onSampleReceived() { } extern "C" { -#if defined(KIT_XMC47_RELAX_5V_AD_V1) +#if defined(KIT_XMC47_RELAX) void USIC2_2_IRQHandler() { I2S._onSampleReceived(); } #elif defined(KIT_XMC_2GO_XMC1100_V1) || defined(KIT_XMC11_BOOT_001) void USIC0_2_IRQHandler() { I2S._onSampleReceived(); } diff --git a/libraries/I2S/src/I2S.h b/libraries/I2S/src/I2S.h index 41c885e6..fffdd17f 100644 --- a/libraries/I2S/src/I2S.h +++ b/libraries/I2S/src/I2S.h @@ -38,7 +38,7 @@ * * @section Wiring * The library has been tested with the - *KIT_XMC47_RELAX_5V_AD_V1/KIT_XMC_2GO_XMC1100_V1/KIT_XMC11_BOOT_001. interfacing an Infineon + *KIT_XMC47_RELAX/KIT_XMC_2GO_XMC1100_V1/KIT_XMC11_BOOT_001. interfacing an Infineon *IM69D130 Microphone Shield2Go. For the XMC4700 relax board, following ports should be connected: *LRCL -- 3.10 DOUT -- 3.7 SCLK -- 3.9 GND -- GND 3.3V -- 3.3V * diff --git a/libraries/LED/Readme.md b/libraries/LED/Readme.md index 7e6f5af6..86ac2852 100644 --- a/libraries/LED/Readme.md +++ b/libraries/LED/Readme.md @@ -46,8 +46,8 @@ models of board so we end up with KIT_XMC1400_ARDUINO | Low | Yes | High KIT_XMC_PLT2GO_XMC4200 | High| No | High KIT_XMC_PLT2GO_XMC4400 | High| No | High - KIT_XMC47_RELAX_5V_AD_V1 | High| No | High - KIT_XMC47_RELAX_5V_AD_V1 Lite | High| No | High + KIT_XMC47_RELAX | High| No | High + KIT_XMC47_RELAX Lite | High| No | High ** NOTE ** After Version 2.0 of XMC-for-Arduino, some boards were dropped (e.g. XMC1300 Sense2GO) they are still shown here for those using old versions of XMC-for-Arduino, and for history. diff --git a/libraries/OneWire/src/util/OneWireConf.h b/libraries/OneWire/src/util/OneWireConf.h index 162542be..a9354730 100644 --- a/libraries/OneWire/src/util/OneWireConf.h +++ b/libraries/OneWire/src/util/OneWireConf.h @@ -147,7 +147,7 @@ XMC_SPI_t mappingHW[] = { .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}}; -#elif defined(KIT_XMC47_RELAX_5V_AD_V1) +#elif defined(KIT_XMC47_RELAX) #define NUM_ONEWIRE_HW 6 #define PIN_HAS_ONEWIRE_HW(pin) \ ((pin == 1) || (pin == 15) || (pin == 29) || (pin == 37) || (pin == 70) || (pin == 88)) diff --git a/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino b/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino index 893eda0b..ed445deb 100644 --- a/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino +++ b/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino @@ -1,15 +1,15 @@ /* Simple RTC Alarm for XMC Boards - Demonstrates how to set an RTC alarm for the KIT_XMC47_RELAX_5V_AD_V1 V1 + Demonstrates how to set an RTC alarm for the KIT_XMC47_RELAX V1 */ /* Board Check - This library can currently only be used with the KIT_XMC47_RELAX_5V_AD_V1 + This library can currently only be used with the KIT_XMC47_RELAX If you modify the library to work with other XMC versions, remove the following lines */ #if (UC_FAMILY != XMC4) -#error This XMC board is not supported, only KIT_XMC47_RELAX_5V_AD_V1 is supported +#error This XMC board is not supported, only KIT_XMC47_RELAX is supported #endif // End of Board Check diff --git a/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino b/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino index 7d6857f0..19a8539c 100644 --- a/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino +++ b/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino @@ -1,5 +1,5 @@ /* - Simple RTC for KIT_XMC47_RELAX_5V_AD_V1 V1 + Simple RTC for KIT_XMC47_RELAX V1 Demonstrates the use of the RTC library for the XMC4700 */ diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index fc1392eb..caf9e8d8 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -35,8 +35,8 @@ // #define USE_SW_SPI // Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over -// the on-board SD Card Slot. This feature is only available on KIT_XMC47_RELAX_5V_AD_V1 Kits. -#if defined(KIT_XMC47_RELAX_5V_AD_V1) +// the on-board SD Card Slot. This feature is only available on KIT_XMC47_RELAX Kits. +#if defined(KIT_XMC47_RELAX) #define USE_XMC_RELAX_KIT_SD #endif diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 9d142f7d..41cd2b35 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -688,7 +688,7 @@ void USIC1_1_IRQHandler() { Wire.ReceiveHandler(); } void USIC1_2_IRQHandler() { Wire.ProtocolHandler(); } #endif -#elif defined(KIT_XMC47_RELAX_5V_AD_V1) +#elif defined(KIT_XMC47_RELAX) void USIC1_1_IRQHandler() { Wire.ReceiveHandler(); } void USIC1_2_IRQHandler() { Wire.ProtocolHandler(); } From bc9cf219b417960b67f4df804e3ee41cf260829f Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:52:22 +0200 Subject: [PATCH 130/366] package: Update name KIT_XMC47_RELAX. Signed-off-by: zhanglinjing --- package/package_xmc_index.template.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/package_xmc_index.template.json b/package/package_xmc_index.template.json index 3293608f..79c5c513 100644 --- a/package/package_xmc_index.template.json +++ b/package/package_xmc_index.template.json @@ -41,7 +41,7 @@ "name": "KIT_XMC_PLT2GO_XMC4400" }, { - "name": "KIT_XMC47_RELAX_5V_AD_V1" + "name": "KIT_XMC47_RELAX" } ], "toolsDependencies": [ From eb776a9a7a6e909df606e28c3fb900c2b2294f4f Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:52:47 +0200 Subject: [PATCH 131/366] tests: Update name KIT_XMC47_RELAX. Signed-off-by: zhanglinjing --- tests/Makefile.test | 10 +++++----- tests/hil-unity-checklist.yaml | 2 +- tests/manual/PCLKTest/PCLKTest.ino | 2 +- tests/manual/PWMtest/PWMtest.ino | 2 +- tests/manual/Servotest/Servotest.ino | 2 +- tests/manual/analogwritetest/analogwritetest.ino | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/Makefile.test b/tests/Makefile.test index 9eab6f19..a6f60274 100644 --- a/tests/Makefile.test +++ b/tests/Makefile.test @@ -15,14 +15,14 @@ make FQBN=infineon:xmc:kit_xmc14_2go PORT=COM41 test_can_connected2_node1 monito ## IIC # 1 board "talking to itself", wire needed -make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM28 test_wire_connected1_pingpong monitor +make FQBN=infineon:xmc:kit_xmc47_relax PORT=COM28 test_wire_connected1_pingpong monitor # 2 boards -make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM85 test_wire_connected2_masterpingpong monitor -make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM28 test_wire_connected2_slavepingpong monitor +make FQBN=infineon:xmc:kit_xmc47_relax PORT=COM85 test_wire_connected2_masterpingpong monitor +make FQBN=infineon:xmc:kit_xmc47_relax PORT=COM28 test_wire_connected2_slavepingpong monitor ## UART # 2 boards -make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM71 test_uart_connected2_tx monitor -make FQBN=infineon:xmc:kit_xmc47_relax_5v_ad_v1 PORT=COM28 test_uart_connected2_rx monitor \ No newline at end of file +make FQBN=infineon:xmc:kit_xmc47_relax PORT=COM71 test_uart_connected2_tx monitor +make FQBN=infineon:xmc:kit_xmc47_relax PORT=COM28 test_uart_connected2_rx monitor \ No newline at end of file diff --git a/tests/hil-unity-checklist.yaml b/tests/hil-unity-checklist.yaml index 1f3add98..0e1af5d3 100644 --- a/tests/hil-unity-checklist.yaml +++ b/tests/hil-unity-checklist.yaml @@ -1,4 +1,4 @@ -infineon.xmc.kit_xmc47_relax_5v_ad_v1: +infineon.xmc.kit_xmc47_relax: CAN: 1: - "test_can_connected2_node2" diff --git a/tests/manual/PCLKTest/PCLKTest.ino b/tests/manual/PCLKTest/PCLKTest.ino index 86950f5a..23a2e6bc 100644 --- a/tests/manual/PCLKTest/PCLKTest.ino +++ b/tests/manual/PCLKTest/PCLKTest.ino @@ -13,7 +13,7 @@ Wiring KIT_XMC11_BOOT_001 3, 4, 6, 9 KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 KIT_XMC13_BOOT_001 31, 26, 32, 33 - KIT_XMC47_RELAX_5V_AD_V1 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 */ #include diff --git a/tests/manual/PWMtest/PWMtest.ino b/tests/manual/PWMtest/PWMtest.ino index 3bf8adbd..5bcc3820 100644 --- a/tests/manual/PWMtest/PWMtest.ino +++ b/tests/manual/PWMtest/PWMtest.ino @@ -14,7 +14,7 @@ KIT_XMC11_BOOT_001 3, 4, 6, 9 KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 KIT_XMC13_BOOT_001 31, 26, 32, 33 - KIT_XMC47_RELAX_5V_AD_V1 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 */ #include diff --git a/tests/manual/Servotest/Servotest.ino b/tests/manual/Servotest/Servotest.ino index 0eeec983..00b0aca7 100644 --- a/tests/manual/Servotest/Servotest.ino +++ b/tests/manual/Servotest/Servotest.ino @@ -23,7 +23,7 @@ KIT_XMC11_BOOT_001 3, 4, 6, 9 KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 KIT_XMC13_BOOT_001 31, 26, 32, 33 - KIT_XMC47_RELAX_5V_AD_V1 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 */ #include diff --git a/tests/manual/analogwritetest/analogwritetest.ino b/tests/manual/analogwritetest/analogwritetest.ino index 0f4eb05f..148a7ff8 100644 --- a/tests/manual/analogwritetest/analogwritetest.ino +++ b/tests/manual/analogwritetest/analogwritetest.ino @@ -41,7 +41,7 @@ analogWrite( 26, 64 ); analogWrite( 32, 96 ); // PWM8 analogWrite( 33, 128 ); #endif -#if defined ( KIT_XMC47_RELAX_5V_AD_V1 ) || defined( XMC4700_Radar_Baseboard ) +#if defined ( KIT_XMC47_RELAX ) || defined( XMC4700_Radar_Baseboard ) analogWrite( 3, 32 ); // PWM4 analogWrite( 5, 64 ); // PWM8 rest relax kit only analogWrite( 6, 96 ); From 47d4727b07d0b00d360fb8394b286be74b2fad20 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:53:03 +0200 Subject: [PATCH 132/366] boards.txt: Update name KIT_XMC47_RELAX. Signed-off-by: zhanglinjing --- boards.txt | 76 +++++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/boards.txt b/boards.txt index 115c8731..5557a911 100644 --- a/boards.txt +++ b/boards.txt @@ -315,41 +315,41 @@ kit_xmc_plt2go_xmc4400.menu.LIB.DSP=ARM DSP kit_xmc_plt2go_xmc4400.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP #################################################### -kit_xmc47_relax_5v_ad_v1.name=KIT_XMC47_RELAX_5V_AD_V1 -kit_xmc47_relax_5v_ad_v1.upload.tool=xmcflasher -kit_xmc47_relax_5v_ad_v1.upload.speed=115200 -kit_xmc47_relax_5v_ad_v1.upload.resetmethod=ck -kit_xmc47_relax_5v_ad_v1.upload.maximum_size=2048000 -kit_xmc47_relax_5v_ad_v1.upload.wait_for_upload_port=true - -kit_xmc47_relax_5v_ad_v1.communication=usb -kit_xmc47_relax_5v_ad_v1.protocol=dragon_isp -kit_xmc47_relax_5v_ad_v1.program.protocol=dragon_isp -kit_xmc47_relax_5v_ad_v1.program.tool=xmcflasher -kit_xmc47_relax_5v_ad_v1.program.extra_params=-Pusb - -kit_xmc47_relax_5v_ad_v1.serial.disableDTR=true -kit_xmc47_relax_5v_ad_v1.serial.disableRTS=true - -kit_xmc47_relax_5v_ad_v1.build.mcu=cortex-m4 -kit_xmc47_relax_5v_ad_v1.build.f_cpu=144000000L -kit_xmc47_relax_5v_ad_v1.build.board=ARM_XMC -kit_xmc47_relax_5v_ad_v1.build.board.version=4700 -kit_xmc47_relax_5v_ad_v1.build.board.type=F144x2048 -kit_xmc47_relax_5v_ad_v1.build.board.v=2048 -kit_xmc47_relax_5v_ad_v1.build.core=xmc -kit_xmc47_relax_5v_ad_v1.build.variant=XMC4700 -kit_xmc47_relax_5v_ad_v1.build.board_variant_old=XMC4700_Relax_Kit -kit_xmc47_relax_5v_ad_v1.build.board_variant=KIT_XMC47_RELAX_5V_AD_V1 -kit_xmc47_relax_5v_ad_v1.build.flash_size=2000K -kit_xmc47_relax_5v_ad_v1.build.flash_ld=linker_script.ld -kit_xmc47_relax_5v_ad_v1.build.extra_flags=-DARM_MATH_CM4 -DXMC4_SERIES - -kit_xmc47_relax_5v_ad_v1.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -kit_xmc47_relax_5v_ad_v1.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN -kit_xmc47_relax_5v_ad_v1.menu.LIB.NONE=None -kit_xmc47_relax_5v_ad_v1.menu.LIB.NONE.library.selected= -kit_xmc47_relax_5v_ad_v1.menu.LIB.NN=ARM NN Framework -kit_xmc47_relax_5v_ad_v1.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -kit_xmc47_relax_5v_ad_v1.menu.LIB.DSP=ARM DSP -kit_xmc47_relax_5v_ad_v1.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP \ No newline at end of file +kit_xmc47_relax.name=KIT_XMC47_RELAX +kit_xmc47_relax.upload.tool=xmcflasher +kit_xmc47_relax.upload.speed=115200 +kit_xmc47_relax.upload.resetmethod=ck +kit_xmc47_relax.upload.maximum_size=2048000 +kit_xmc47_relax.upload.wait_for_upload_port=true + +kit_xmc47_relax.communication=usb +kit_xmc47_relax.protocol=dragon_isp +kit_xmc47_relax.program.protocol=dragon_isp +kit_xmc47_relax.program.tool=xmcflasher +kit_xmc47_relax.program.extra_params=-Pusb + +kit_xmc47_relax.serial.disableDTR=true +kit_xmc47_relax.serial.disableRTS=true + +kit_xmc47_relax.build.mcu=cortex-m4 +kit_xmc47_relax.build.f_cpu=144000000L +kit_xmc47_relax.build.board=ARM_XMC +kit_xmc47_relax.build.board.version=4700 +kit_xmc47_relax.build.board.type=F144x2048 +kit_xmc47_relax.build.board.v=2048 +kit_xmc47_relax.build.core=xmc +kit_xmc47_relax.build.variant=XMC4700 +kit_xmc47_relax.build.board_variant_old=XMC4700_Relax_Kit +kit_xmc47_relax.build.board_variant=KIT_XMC47_RELAX +kit_xmc47_relax.build.flash_size=2000K +kit_xmc47_relax.build.flash_ld=linker_script.ld +kit_xmc47_relax.build.extra_flags=-DARM_MATH_CM4 -DXMC4_SERIES + +kit_xmc47_relax.menu.LIB.DSPNN=ARM DSP / ARM NN Framework +kit_xmc47_relax.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN +kit_xmc47_relax.menu.LIB.NONE=None +kit_xmc47_relax.menu.LIB.NONE.library.selected= +kit_xmc47_relax.menu.LIB.NN=ARM NN Framework +kit_xmc47_relax.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN +kit_xmc47_relax.menu.LIB.DSP=ARM DSP +kit_xmc47_relax.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP \ No newline at end of file From cfe1ed9067b7215f8b9cd23fd9dfadfcc61c40b0 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:54:10 +0200 Subject: [PATCH 133/366] ci-matrix-config.yml: Update name KIT_XMC47_RELAX. Signed-off-by: zhanglinjing --- ci-matrix-config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 4229dce5..8ba17477 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -29,7 +29,7 @@ sketch: - extras/arduino-examples/examples/05.Control/ForLoopIteration/ForLoopIteration.ino fqbn: - - infineon:xmc:kit_xmc47_relax_5v_ad_v1 + - infineon:xmc:kit_xmc47_relax # sketch: # - libraries/LED @@ -67,7 +67,7 @@ fqbn: # - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4400 # sketch: # - libraries/CAN -# - fqbn: infineon:xmc:kit_xmc47_relax_5v_ad_v1 +# - fqbn: infineon:xmc:kit_xmc47_relax # sketch: # - libraries/I2S # - libraries/DeviceControlXMC/examples/SleepModeXMC4700/SleepModeXMC4700.ino From e216d86b1cd16a804d81c2630646cdfacc362bb5 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:54:25 +0200 Subject: [PATCH 134/366] README.md: Update name KIT_XMC47_RELAX. Signed-off-by: zhanglinjing --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9748f32f..6e53a437 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,12 @@ The [XMC™ microcontroller family](https://www.infineon.com/cms/de/product/micr - + KIT_XMC_PLT2GO_XMC4200 KIT_XMC_PLT2GO_XMC4400 - KIT_XMC47_RELAX_5V_AD_V1 + KIT_XMC47_RELAX From b97b57425155210b1a9a7154ade3e5ac396f8db7 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 16:56:24 +0200 Subject: [PATCH 135/366] extras: Update arduino-devops for renaming. Signed-off-by: zhanglinjing --- extras/arduino-devops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-devops b/extras/arduino-devops index 24025977..c38ddbd5 160000 --- a/extras/arduino-devops +++ b/extras/arduino-devops @@ -1 +1 @@ -Subproject commit 240259776cd4ec996bb1242baaa222752eac8be2 +Subproject commit c38ddbd51e09b4075048853dc7887116540a14b7 From 7c5348843d0e4517b1649f190a1b40549ed2348b Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 8 Jul 2025 17:05:00 +0200 Subject: [PATCH 136/366] extras: Update arduino-devops after review. Signed-off-by: zhanglinjing --- extras/arduino-devops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-devops b/extras/arduino-devops index c38ddbd5..267471c7 160000 --- a/extras/arduino-devops +++ b/extras/arduino-devops @@ -1 +1 @@ -Subproject commit c38ddbd51e09b4075048853dc7887116540a14b7 +Subproject commit 267471c79da2e7da81759d27b519da3507b5a563 From e61406d9ed7fc6b4040cfa0583e8c325c4a4b7dc Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 11 Jul 2025 15:29:56 +0200 Subject: [PATCH 137/366] docs/: Remove legacy name. Signed-off-by: zhanglinjing --- docs/hw-platforms.rst | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index 273377f5..1d6d658e 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -47,7 +47,6 @@ The following XMC microcontroller boards are supported by XMC for Arduino: KIT_XMC11_BOOT_001 ------------------ -* Legacy name: ``XMC1100 Boot Kit`` * `Product Page `__ .. image:: img/KIT_XMC11_BOOT_001.jpg @@ -71,7 +70,6 @@ nor share the same pins/resources. This is different from the original Arduino U KIT_XMC13_BOOT_001 ------------------ -* Legacy name: ``XMC1300 Boot Kit`` * `Product Page `__ .. image:: img/KIT_XMC13_BOOT_001.jpg @@ -86,7 +84,6 @@ XMC1302 Microcontroller in TSSOP-38 with 200KB Flash and full peripheral set of KIT_XMC14_2GO ------------- -* Legacy name: ``XMC1400 XMC2GO`` * `Product Page `__ .. image:: img/KIT_XMC14_2GO.png @@ -109,7 +106,6 @@ Pinout Diagram KIT_XMC1400_ARDUINO ------------------- -* Legacy name: ``XMC1400 Kit for Arduino`` * `Product Page `__ .. image:: img/KIT_XMC1400_ARDUINO.jpg @@ -134,7 +130,6 @@ Arduino UNO Rev3 implementation. Please look at the pinout diagram for more info KIT_XMC_PLT2GO_XMC4200 ---------------------- -* Legacy name: ``XMC4200 Platform 2GO`` * `Product Page `__ .. image:: img/KIT_XMC_PLT2GO_XMC4200.jpg @@ -161,7 +156,6 @@ on the board itself. If you want to use them check out the subsection :ref:`conn KIT_XMC_PLT2GO_XMC4400 ---------------------- -* Legacy name: ``XMC4400 Platform 2GO`` * `Product Page `__ .. image:: img/KIT_XMC_PLT2GO_XMC4400.jpg @@ -188,7 +182,6 @@ on the board itself. If you want to use them check out the subsection :ref:`conn KIT_XMC47_RELAX ------------------------ -* Legacy name: ``XMC4700 Relax Kit`` * `Product Page `__ .. image:: img/KIT_XMC47_RELAX.jpg @@ -286,7 +279,6 @@ KIT_XMC_2GO_XMC1100_V1 ---------------------- * Replaced by :ref:`KIT_XMC14_2GO` -* Legacy name: ``XMC1100 XMC2Go``` The XMC1100 2Go board consists of a XMC1100 microcontroller with a debugger implemented by a XMC4200 microcontroller. From 2a62b65db045594dcf1f2b39daca39d29d306099 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 16 Jul 2025 15:36:52 +0200 Subject: [PATCH 138/366] cores/xmc: Fix comments. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 4 ++-- cores/xmc/main.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index c015feb8..94965cd6 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -293,12 +293,12 @@ extern XMC_UART_t XMC_UART_debug; extern XMC_UART_t XMC_UART_on_board; extern XMC_SPI_t XMC_SPI_0; -// Some boards for eg. KIT_XMC47_RELAX has more than one SPI instance +// Some boards eg. KIT_XMC47_RELAX has more than one SPI instance extern XMC_SPI_t XMC_SPI_1; extern XMC_SPI_t XMC_SPI_2; extern XMC_I2C_t XMC_I2C_0; -// Some boards for eg. KIT_XMC47_RELAX has more than one I2C instance +// Some boards eg. KIT_XMC47_RELAX has more than one I2C instance extern XMC_I2C_t XMC_I2C_1; extern XMC_I2S_t i2s_config; diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index 2bb37cd1..0ac292cd 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -39,7 +39,7 @@ int main(void) { wiring_time_init(); // Initialize the reset pin for the KIT_XMC11_BOOT_001 series and KIT_XMC1400_ARDUINO as they are -// based on Arduino form-factor Hence, a dedicated reset pin is required. +// based on Arduino Uno form-factor. Hence a dedicated reset pin is required. #ifdef HAS_GPIO_RESET reset_init(); #endif From a706da358b884cd313295748dac0110d043f61f2 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 16 Jul 2025 15:37:24 +0200 Subject: [PATCH 139/366] docs: Improve doc. Signed-off-by: zhanglinjing --- docs/builtin-libraries.rst | 2 +- docs/hw-platforms.rst | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/builtin-libraries.rst b/docs/builtin-libraries.rst index ad2180ab..1fcc6f76 100644 --- a/docs/builtin-libraries.rst +++ b/docs/builtin-libraries.rst @@ -106,7 +106,7 @@ RTC Library * - AlarmRTC - KIT_XMC47_RELAX - | Demonstrates how to set an RTC alarm for the - | KIT_XMC47_RELAX V1. + | KIT_XMC47_RELAX. * - SimpleRTC - KIT_XMC47_RELAX - Demonstrates the use of the RTC library for the XMC4700. diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index 1d6d658e..4071fd5a 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -53,7 +53,7 @@ KIT_XMC11_BOOT_001 :width: 400 The KIT_XMC11_BOOT_001 board consists of a XMC1100 microcontroller with a debugger implemented by a XMC4200 microcontroller. -The board shares the same power supply and board shape as other shields for Arduino. +The board shares the same power supply and board shape as other boards for Arduino. Pinout Diagram ^^^^^^^^^^^^^^ @@ -112,7 +112,7 @@ KIT_XMC1400_ARDUINO :width: 400 The KIT_XMC1400_ARDUINO consists of a XMC1400 microcontroller with a debugger implemented by a XMC4200 microcontroller. -The board shares the same power supply and board shape as other shields for Arduino. +The board shares the same power supply and board shape as other boards for Arduino. Pinout Diagram ^^^^^^^^^^^^^^ From 00586d3f17210998e3ecfb7ba4d509dff20f63f5 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 16 Jul 2025 15:38:11 +0200 Subject: [PATCH 140/366] libraries/: Fix some naming and improve. Signed-off-by: zhanglinjing --- libraries/CAN/README.md | 9 +++++++-- libraries/LED/Readme.md | 1 - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino | 2 +- libraries/RTC/examples/SimpleRTC/SimpleRTC.ino | 2 +- libraries/SPI/src/SPI.h | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libraries/CAN/README.md b/libraries/CAN/README.md index a3dbb5a2..b1363bd0 100644 --- a/libraries/CAN/README.md +++ b/libraries/CAN/README.md @@ -6,7 +6,12 @@ Based on [Arduino CAN library](https://www.arduino.cc/reference/en/libraries/can XMC boards with CAN support (CAN transceiver on board and CAN controller module): KIT_XMC_PLT2GO_XMC4200, KIT_XMC_PLT2GO_XMC4400, KIT_XMC47_RELAX and KIT_XMC14_2GO. -:warning: There is a 120 ohm terminal resistor on the KIT_XMC_PLT2GO_XMC4400 and KIT_XMC14_2GO boards, not on the KIT_XMC_PLT2GO_XMC4200 and KIT_XMC47_RELAX. Please remove or add resistors as needed. +| Board Name | Onboard CAN | Termination Resistor | +|--------------------------|-------------|-----------------------| +| KIT_XMC14_2GO | Yes | Yes (120 ohm) | +| KIT_XMC_PLT2GO_XMC4200 | Yes | No | +| KIT_XMC_PLT2GO_XMC4400 | Yes | Yes (120 ohm) | +| KIT_XMC47_RELAX | Yes | No | All CAN nodes should be connected using the (twisted) pair cable for the CAN_H and CAN_L @@ -46,7 +51,7 @@ Here the API definition is based on: ## :warning: XMC specification -Due to the different behavior of xmc4 series and xmc1 series, the library and provided examples was tested primarily on **KIT_XMC14_2GO**. +Due to the different behavior of xmc4000 series and xmc1000 series, the library and provided examples was tested primarily on **KIT_XMC14_2GO**. The known difference is that the XMC4 is unable to receive CAN messages for all IDs. Therefore, it is necessary to define the device ID using the following function: diff --git a/libraries/LED/Readme.md b/libraries/LED/Readme.md index 86ac2852..86fba6f4 100644 --- a/libraries/LED/Readme.md +++ b/libraries/LED/Readme.md @@ -47,7 +47,6 @@ models of board so we end up with KIT_XMC_PLT2GO_XMC4200 | High| No | High KIT_XMC_PLT2GO_XMC4400 | High| No | High KIT_XMC47_RELAX | High| No | High - KIT_XMC47_RELAX Lite | High| No | High ** NOTE ** After Version 2.0 of XMC-for-Arduino, some boards were dropped (e.g. XMC1300 Sense2GO) they are still shown here for those using old versions of XMC-for-Arduino, and for history. diff --git a/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino b/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino index ed445deb..4d6da3c6 100644 --- a/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino +++ b/libraries/RTC/examples/AlarmRTC/AlarmRTC.ino @@ -1,6 +1,6 @@ /* Simple RTC Alarm for XMC Boards - Demonstrates how to set an RTC alarm for the KIT_XMC47_RELAX V1 + Demonstrates how to set an RTC alarm for the KIT_XMC47_RELAX */ /* diff --git a/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino b/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino index 19a8539c..d15d1abc 100644 --- a/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino +++ b/libraries/RTC/examples/SimpleRTC/SimpleRTC.ino @@ -1,5 +1,5 @@ /* - Simple RTC for KIT_XMC47_RELAX V1 + Simple RTC for KIT_XMC47_RELAX Demonstrates the use of the RTC library for the XMC4700 */ diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index caf9e8d8..b4854595 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -35,7 +35,7 @@ // #define USE_SW_SPI // Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over -// the on-board SD Card Slot. This feature is only available on KIT_XMC47_RELAX Kits. +// the on-board SD Card slot. This feature is only available on KIT_XMC47_RELAX kits. #if defined(KIT_XMC47_RELAX) #define USE_XMC_RELAX_KIT_SD #endif From 51f59fb64fb43ab94096e26f58779bfa1addf618 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 16 Jul 2025 15:38:35 +0200 Subject: [PATCH 141/366] tests/manual: Align number. Signed-off-by: zhanglinjing --- tests/manual/PCLKTest/PCLKTest.ino | 19 ++++++++++--------- tests/manual/PWMtest/PWMtest.ino | 13 +++++++------ tests/manual/Servotest/Servotest.ino | 13 +++++++------ 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/tests/manual/PCLKTest/PCLKTest.ino b/tests/manual/PCLKTest/PCLKTest.ino index 23a2e6bc..6057a508 100644 --- a/tests/manual/PCLKTest/PCLKTest.ino +++ b/tests/manual/PCLKTest/PCLKTest.ino @@ -7,15 +7,16 @@ If both LED1 and LED2 are permanently ON then an invalid pin for PWM has been attempted to be attached to a invalid pin Wiring - Default PWM pin are 3 - - Some Board variant PWM Pins - KIT_XMC11_BOOT_001 3, 4, 6, 9 - KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 - KIT_XMC13_BOOT_001 31, 26, 32, 33 - KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, - 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 - */ + Default PWM pin are 3 + + Some Board variant PWM Pins + KIT_XMC11_BOOT_001 3, 4, 6, 9 + KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 + KIT_XMC13_BOOT_001 31, 26, 32, 33 + KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 + +*/ #include #include diff --git a/tests/manual/PWMtest/PWMtest.ino b/tests/manual/PWMtest/PWMtest.ino index 5bcc3820..7c098959 100644 --- a/tests/manual/PWMtest/PWMtest.ino +++ b/tests/manual/PWMtest/PWMtest.ino @@ -11,12 +11,13 @@ Default PWM pins are 3 and 4 Some Board variant PWM Pins - KIT_XMC11_BOOT_001 3, 4, 6, 9 - KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 - KIT_XMC13_BOOT_001 31, 26, 32, 33 - KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, - 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 - */ + KIT_XMC11_BOOT_001 3, 4, 6, 9 + KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 + KIT_XMC13_BOOT_001 31, 26, 32, 33 + KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 + +*/ #include // Adjust the following defines to match your setup diff --git a/tests/manual/Servotest/Servotest.ino b/tests/manual/Servotest/Servotest.ino index 00b0aca7..66484b79 100644 --- a/tests/manual/Servotest/Servotest.ino +++ b/tests/manual/Servotest/Servotest.ino @@ -20,12 +20,13 @@ Default PWM pins are 3 and 4 Some Board variant PWM Pins - KIT_XMC11_BOOT_001 3, 4, 6, 9 - KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 - KIT_XMC13_BOOT_001 31, 26, 32, 33 - KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, - 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 - */ + KIT_XMC11_BOOT_001 3, 4, 6, 9 + KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 + KIT_XMC13_BOOT_001 31, 26, 32, 33 + KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, + 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 + +*/ #include #include From c01195753d4d8148023ef381f09add6dda398c9f Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 16 Jul 2025 15:38:53 +0200 Subject: [PATCH 142/366] tests: Minor change. Signed-off-by: zhanglinjing --- tests/Makefile.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Makefile.test b/tests/Makefile.test index a6f60274..cc272277 100644 --- a/tests/Makefile.test +++ b/tests/Makefile.test @@ -2,7 +2,7 @@ ### Unit tests -##CAN +## CAN # 1 board, no wire make FQBN=infineon:xmc:kit_xmc14_2go PORT=COM42 test_can_single monitor From 9c356de48903b92bd58dd08fa909ef9fc5556712 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 16 Jul 2025 15:40:23 +0200 Subject: [PATCH 143/366] libraries: Improve doc. Signed-off-by: zhanglinjing --- libraries/LED/Readme.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/LED/Readme.md b/libraries/LED/Readme.md index 86fba6f4..eeef8a16 100644 --- a/libraries/LED/Readme.md +++ b/libraries/LED/Readme.md @@ -38,15 +38,15 @@ models of board so we end up with | Board | Normal LEDs
ON state | LED_BUILTIN
Separate | LED_BUILTIN
ON state | :---- | :---: | :---: | :---: | - KIT_XMC11_BOOT_001 | Low | Yes | High - KIT_XMC_2GO_XMC1100_V1 | High | No | High - XMC1100 XMC H Bridge2GO | High| No | High - KIT_XMC13_BOOT_001 | Low | No | Low - XMC1300 Sense2GO | Low| No | Low - KIT_XMC1400_ARDUINO | Low | Yes | High - KIT_XMC_PLT2GO_XMC4200 | High| No | High - KIT_XMC_PLT2GO_XMC4400 | High| No | High - KIT_XMC47_RELAX | High| No | High +| KIT_XMC11_BOOT_001 | Low | Yes | High | +| KIT_XMC_2GO_XMC1100_V1 | High | No | High | +| XMC1100 XMC H Bridge2GO | High | No | High | +| KIT_XMC13_BOOT_001 | Low | No | Low | +| XMC1300 Sense2GO | Low | No | Low | +| KIT_XMC1400_ARDUINO | Low | Yes | High | +| KIT_XMC_PLT2GO_XMC4200 | High | No | High | +| KIT_XMC_PLT2GO_XMC4400 | High | No | High | +| KIT_XMC47_RELAX | High | No | High | ** NOTE ** After Version 2.0 of XMC-for-Arduino, some boards were dropped (e.g. XMC1300 Sense2GO) they are still shown here for those using old versions of XMC-for-Arduino, and for history. From 734b72be5fba1b340e374608b936e66948e3deaf Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 16 Jul 2025 15:41:30 +0200 Subject: [PATCH 144/366] docs: Change board name for 2go sensor. Signed-off-by: zhanglinjing --- docs/hw-platforms.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index 4071fd5a..d6cbd81b 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -40,7 +40,7 @@ The following XMC microcontroller boards are supported by XMC for Arduino: - Arduino Uno .. note:: - For all Kit 2Go or MS 2Go sensor boards please select ``XMC1100 XMC2Go`` in the Arduino IDE. + For all Kit 2Go or MS 2Go sensor boards please select ``KIT_XMC_2GO_XMC1100_V1`` in the Arduino IDE. .. _KIT_XMC11_BOOT_001: From 81218374b8858c05378a384c80a61dc44b0bf473 Mon Sep 17 00:00:00 2001 From: Eder Julian Date: Fri, 18 Jul 2025 19:17:39 +0200 Subject: [PATCH 145/366] docs: Add all XMC4700 variants. Signed-off-by: Eder Julian --- docs/hw-platforms.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index d6cbd81b..b5209505 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -35,7 +35,7 @@ The following XMC microcontroller boards are supported by XMC for Arduino: - XMC4400 - Arduino Uno, Shield2Go, mikroBUS * - .. image:: img/KIT_XMC47_RELAX.jpg - - :ref:`KIT_XMC47_RELAX` + - :ref:`KIT_XMC47_RELAX` variants - XMC4700 - Arduino Uno @@ -182,12 +182,16 @@ on the board itself. If you want to use them check out the subsection :ref:`conn KIT_XMC47_RELAX ------------------------ -* `Product Page `__ +Supported Variants +^^^^^^^^^^^^^^^^^^ +* `KIT_XMC47_RELAX_V1 `__ +* `KIT_XMC47_RELAX_LITE_V1 `__ +* `KIT_XMC47_RELAX_5V_AD_V1 `__ .. image:: img/KIT_XMC47_RELAX.jpg :width: 400 -The KIT_XMC47_RELAX board consists of a XMC4700 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The KIT_XMC47_RELAX board variants consists of a XMC4700 microcontroller with a debugger implemented by a XMC4200 microcontroller. Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. From 8e15801bac604e80b0743ed4c6e9c1fe8442a8a5 Mon Sep 17 00:00:00 2001 From: Eder Julian Date: Fri, 18 Jul 2025 19:24:42 +0200 Subject: [PATCH 146/366] docs: Incl product links in text. Signed-off-by: Eder Julian --- docs/hw-platforms.rst | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index b5209505..f89c23ef 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -47,12 +47,10 @@ The following XMC microcontroller boards are supported by XMC for Arduino: KIT_XMC11_BOOT_001 ------------------ -* `Product Page `__ - .. image:: img/KIT_XMC11_BOOT_001.jpg :width: 400 -The KIT_XMC11_BOOT_001 board consists of a XMC1100 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The `KIT_XMC11_BOOT_001 `__ board consists of a XMC1100 microcontroller with a debugger implemented by a XMC4200 microcontroller. The board shares the same power supply and board shape as other boards for Arduino. Pinout Diagram @@ -70,12 +68,10 @@ nor share the same pins/resources. This is different from the original Arduino U KIT_XMC13_BOOT_001 ------------------ -* `Product Page `__ - .. image:: img/KIT_XMC13_BOOT_001.jpg :width: 400 -XMC1302 Microcontroller in TSSOP-38 with 200KB Flash and full peripheral set of XMC1300 series. +The `KIT_XMC13_BOOT_001 `__ features a XMC1302 microcontroller in TSSOP-38 with 200KB flash and detachable SEGGER J-Link. ----------------------------------------------------------------------- @@ -84,12 +80,10 @@ XMC1302 Microcontroller in TSSOP-38 with 200KB Flash and full peripheral set of KIT_XMC14_2GO ------------- -* `Product Page `__ - .. image:: img/KIT_XMC14_2GO.png :width: 400 -The KIT_XMC14_2GO provides an easy way to evaluate almost all capabilities of the XMC1400 microcontroller. +The `KIT_XMC14_2GO `__ provides an easy way to evaluate almost all capabilities of the XMC1400 microcontroller. The kit is powered via USB, interfaces to other Infineon sensor boards and provides multiple interfaces including a CAN bus. The software development is supported via ModusToolbox™ and the Arduino IDE. @@ -106,12 +100,10 @@ Pinout Diagram KIT_XMC1400_ARDUINO ------------------- -* `Product Page `__ - .. image:: img/KIT_XMC1400_ARDUINO.jpg :width: 400 -The KIT_XMC1400_ARDUINO consists of a XMC1400 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The `KIT_XMC1400_ARDUINO `__ consists of a XMC1400 microcontroller with a debugger implemented by a XMC4200 microcontroller. The board shares the same power supply and board shape as other boards for Arduino. Pinout Diagram @@ -130,12 +122,10 @@ Arduino UNO Rev3 implementation. Please look at the pinout diagram for more info KIT_XMC_PLT2GO_XMC4200 ---------------------- -* `Product Page `__ - .. image:: img/KIT_XMC_PLT2GO_XMC4200.jpg :width: 400 -The KIT_XMC_PLT2GO_XMC4200 board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The `KIT_XMC_PLT2GO_XMC4200 `__ board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. This kit is equipped with an ARM® Cortex®-M4 based XMC4200 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, @@ -156,12 +146,10 @@ on the board itself. If you want to use them check out the subsection :ref:`conn KIT_XMC_PLT2GO_XMC4400 ---------------------- -* `Product Page `__ - .. image:: img/KIT_XMC_PLT2GO_XMC4400.jpg :width: 400 -The KIT_XMC_PLT2GO_XMC4400 board consists of a XMC4400 microcontroller with a debugger implemented by a XMC4200 microcontroller. +The `KIT_XMC_PLT2GO_XMC4400 `__ board consists of a XMC4400 microcontroller with a debugger implemented by a XMC4200 microcontroller. Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. This kit is equipped with an ARM® Cortex®-M4 based XMC4400 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, From 41aaae20138941ef5d7c8fcbbab66c4e41e91cf1 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 24 Jul 2025 14:37:01 +0200 Subject: [PATCH 147/366] pre-commit.yaml: Run pre-commit also on 4.0.0. Signed-off-by: zhanglinjing --- .github/workflows/pre-commit.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index 9be2af1d..7c853ef6 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -4,9 +4,10 @@ on: push: branches: - master + - 4.0.0-pre-release pull_request: branches: - - master + - 4.0.0-pre-release jobs: pre-commit: From b067e7595b57fe4b98ec0aea6d0f2c13bbe16041 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 24 Jul 2025 14:39:52 +0200 Subject: [PATCH 148/366] core/xmc: Format the code. Signed-off-by: zhanglinjing --- cores/xmc/Pulse.cpp | 22 ++++++++++------------ cores/xmc/wiring_digital.c | 4 ++-- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/cores/xmc/Pulse.cpp b/cores/xmc/Pulse.cpp index cad67166..d11427df 100644 --- a/cores/xmc/Pulse.cpp +++ b/cores/xmc/Pulse.cpp @@ -52,7 +52,7 @@ uint32_t end_time; // start time of measured pulse unsigned long pulseIn(pin_size_t pin, uint8_t state, unsigned long timeout) { // check pin is valid by NUM_DIGITAL_PINS, return 0 if invalid #ifdef NUM_DIGITAL_PINS - if (pin >= NUM_DIGITAL_PINS){ + if (pin >= NUM_DIGITAL_PINS) { return 0; } #endif @@ -64,10 +64,9 @@ unsigned long pulseIn(pin_size_t pin, uint8_t state, unsigned long timeout) { // Check timeout is NOT too small or > Maximum // if so use default 1 second or MAX respectively - if (timeout < 6){ + if (timeout < 6) { timeout = DEF_PULSE_TIMEOUT; - } - else if (timeout > MAX_PULSE_TIMEOUT){ + } else if (timeout > MAX_PULSE_TIMEOUT) { timeout = MAX_PULSE_TIMEOUT; } // Initialise conditions @@ -77,22 +76,22 @@ unsigned long pulseIn(pin_size_t pin, uint8_t state, unsigned long timeout) { // If already at measurement level we have a problem // So wait for pulse to go to OPPOSITE level required (idle) first - while (((pulsePort->IN & mask) == pulse_state)){ - if (micros() > timeout){ + while (((pulsePort->IN & mask) == pulse_state)) { + if (micros() > timeout) { return 0; } } // Wait for pulse to go to level required - while (((pulsePort->IN & mask) != pulse_state)){ - if (micros() > timeout){ + while (((pulsePort->IN & mask) != pulse_state)) { + if (micros() > timeout) { return 0; } } // measure pulse length of required level start_time = micros(); - while (((pulsePort->IN & mask) == pulse_state)){ - if (micros() > timeout){ + while (((pulsePort->IN & mask) == pulse_state)) { + if (micros() > timeout) { return 0; } } @@ -102,7 +101,6 @@ unsigned long pulseIn(pin_size_t pin, uint8_t state, unsigned long timeout) { return (end_time - start_time); } -unsigned long pulseInLong(pin_size_t pin, uint8_t state, unsigned long timeout) -{ +unsigned long pulseInLong(pin_size_t pin, uint8_t state, unsigned long timeout) { return pulseIn(pin, state, timeout); } diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c index 56fb71d5..51c769a4 100644 --- a/cores/xmc/wiring_digital.c +++ b/cores/xmc/wiring_digital.c @@ -40,13 +40,13 @@ void pinMode(pin_size_t pin, PinMode mode) { XMC_GPIO_Init(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, &gpio_conf); } -uint8_t digitalRead(uint8_t pin){ +uint8_t digitalRead(uint8_t pin) { return (pin == GND) ? LOW : (XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); } -void digitalWrite(uint8_t pin, uint8_t status){ +void digitalWrite(uint8_t pin, uint8_t status) { XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, (status == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW : XMC_GPIO_OUTPUT_LEVEL_HIGH); From 171fe5bd4d3a3401fd31bd86a6ad786af55fbf1a Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 24 Jul 2025 14:40:19 +0200 Subject: [PATCH 149/366] tests/test_config.h: Format the code. Signed-off-by: zhanglinjing --- tests/test_config.h | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_config.h b/tests/test_config.h index c62da840..5458951a 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -18,7 +18,6 @@ #define TEST_PIN_SYNC_IO 4 // IO_1 #define TEST_PIN_PULSE 5 // IO_2 - #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider From 0afd3be9f43179356a93fdb090bd52bd6affce08 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 27 Jun 2025 15:25:36 +0530 Subject: [PATCH 150/366] variants: Uncomment I2C Config. Signed-off-by: MDin --- .../config/KIT_XMC47_RELAX/pins_arduino.h | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index d56070c4..3119e0c6 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -571,35 +571,35 @@ Uart Serial1(&XMC_UART_1); // }, //}; - // Two I2C instances possible - // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)13}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .input_source_dx0 = XMC_INPUT_A, - // .input_source_dx1 = XMC_INPUT_B, - // .slave_receive_irq_num = (IRQn_Type)91, - // .slave_receive_irq_service_request = 1, - // .protocol_irq_num = (IRQn_Type)92, - // .protocol_irq_service_request = 2}; - // XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .input_source_dx0 = XMC_INPUT_B, - // .input_source_dx1 = XMC_INPUT_A, - // .slave_receive_irq_num = (IRQn_Type)93, - // .slave_receive_irq_service_request = 3, - // .protocol_irq_num = (IRQn_Type)94, - // .protocol_irq_service_request = 4}; + //Two I2C instances possible + XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)13}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .input_source_dx0 = XMC_INPUT_A, + .input_source_dx1 = XMC_INPUT_B, + .slave_receive_irq_num = (IRQn_Type)91, + .slave_receive_irq_service_request = 1, + .protocol_irq_num = (IRQn_Type)92, + .protocol_irq_service_request = 2}; + XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .input_source_dx0 = XMC_INPUT_B, + .input_source_dx1 = XMC_INPUT_A, + .slave_receive_irq_num = (IRQn_Type)93, + .slave_receive_irq_service_request = 3, + .protocol_irq_num = (IRQn_Type)94, + .protocol_irq_service_request = 4}; // // XMC_I2S instance // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, From afc67e1635528613a66418a2e9bfabac1d9fe794 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 27 Jun 2025 15:26:44 +0530 Subject: [PATCH 151/366] libraries/Wire: IIC implementation. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 78 +++++++++++-------------------------- libraries/Wire/src/Wire.h | 16 ++++---- 2 files changed, 30 insertions(+), 64 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 41cd2b35..21026028 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -1,39 +1,5 @@ -/* - * TwoWire.h - TWI/I2C library for Arduino & Wiring - * Copyright (c) 2006 Nicholas Zambetti. All right reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts - * - * Copyright (c) 2018 Infineon Technologies AG - * This library has been modified for the XMC microcontroller series. - */ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -extern "C" { -#include -#include -#include -#include "xmc_gpio.h" -} - +#include "Arduino.h" #include "Wire.h" -#include "SPI.h" //**************************************************************************** // @Global Variables @@ -70,9 +36,9 @@ TwoWire::TwoWire(XMC_I2C_t *conf) { void TwoWire::begin(void) { // Check if desire USIC channel is already in use - if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { - SPI.end(); - } + // if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { + // SPI.end(); + // } hasError = false; isMaster = true; @@ -112,9 +78,9 @@ void TwoWire::begin(void) { void TwoWire::begin(uint8_t address) { // Check if desire USIC channel is already in use - if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { - SPI.end(); - } + // if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { + // SPI.end(); + // } isMaster = false; slaveAddress = address; @@ -163,7 +129,7 @@ void TwoWire::begin(uint8_t address) { &(XMC_I2C_config->scl_config)); } -void TwoWire::begin(int address) { begin((uint8_t)address); } +//void TwoWire::begin(int address) { begin((uint8_t)address); } void TwoWire::end(void) { // Only disable HW when USIC is used for I2C @@ -205,7 +171,7 @@ void TwoWire::end(void) { void TwoWire::setClock(uint32_t clock) { XMC_I2C_CH_SetBaudrate(XMC_I2C_config->channel, clock); } uint8_t TwoWire::requestFrom( - uint8_t address, uint8_t quantity, uint32_t iaddress, uint8_t isize, uint8_t sendStop) { + uint8_t address, size_t quantity, uint32_t iaddress, uint8_t isize, bool sendStop) { uint32_t StatusFlag; beginTransmission(address); @@ -323,22 +289,22 @@ uint8_t TwoWire::requestFrom( return quantity; } -uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) { - return requestFrom((uint8_t)address, (uint8_t)quantity, (uint32_t)0, (uint8_t)0, - (uint8_t)sendStop); +uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { + return requestFrom((uint8_t)address, quantity, (uint32_t)0, (uint8_t)0, + sendStop); } -uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) { - return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t) true); +uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity) { + return requestFrom((uint8_t)address, quantity, true); } -uint8_t TwoWire::requestFrom(int address, int quantity) { - return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t) true); -} +// uint8_t TwoWire::requestFrom(int address, int quantity) { +// return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t) true); +// } -uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) { - return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t)sendStop); -} +// uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) { +// return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t)sendStop); +// } void TwoWire::beginTransmission(uint8_t address) { if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) != XMC_USIC_CH_OPERATING_MODE_I2C) { @@ -360,7 +326,7 @@ void TwoWire::beginTransmission(uint8_t address) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, 0xFFFFFFFF); } -void TwoWire::beginTransmission(int address) { beginTransmission((uint8_t)address); } +//void TwoWire::beginTransmission(int address) { beginTransmission((uint8_t)address); } // // Originally, 'endTransmission' was an f(void) function. @@ -375,7 +341,7 @@ void TwoWire::beginTransmission(int address) { beginTransmission((uint8_t)addres // no call to endTransmission(true) is made. Some I2C // devices will behave oddly if they do not see a STOP. // -uint8_t TwoWire::endTransmission(uint8_t sendStop) { +uint8_t TwoWire::endTransmission(bool sendStop) { uint32_t StatusFlag; XMC_I2C_CH_MasterStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_WRITE); diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index dce62e8b..f7ac9678 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -74,18 +74,18 @@ class TwoWire : public Stream { TwoWire(XMC_I2C_t *conf); void begin(); void begin(uint8_t); - void begin(int); + // void begin(int); void end(); void setClock(uint32_t); void beginTransmission(uint8_t); - void beginTransmission(int); + // void beginTransmission(int); uint8_t endTransmission(void); - uint8_t endTransmission(uint8_t); - uint8_t requestFrom(uint8_t, uint8_t); - uint8_t requestFrom(uint8_t, uint8_t, uint8_t); - uint8_t requestFrom(uint8_t, uint8_t, uint32_t, uint8_t, uint8_t); - uint8_t requestFrom(int, int); - uint8_t requestFrom(int, int, int); + uint8_t endTransmission(bool); + uint8_t requestFrom(uint8_t, size_t); + uint8_t requestFrom(uint8_t, size_t, bool); + uint8_t requestFrom(uint8_t, size_t, uint32_t, uint8_t, bool); + // uint8_t requestFrom(int, int); + // uint8_t requestFrom(int, int, int); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *, size_t); virtual int available(void); From 6e4c9af395ca57e0d65395241a47ef37dba18418 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 30 Jun 2025 14:53:21 +0530 Subject: [PATCH 152/366] libraries/Wire: Removed unnecessary comments. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 34 +++------------------------------ libraries/Wire/src/Wire.h | 38 ------------------------------------- 2 files changed, 3 insertions(+), 69 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 21026028..e351ca1b 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -1,17 +1,6 @@ #include "Arduino.h" #include "Wire.h" -//**************************************************************************** -// @Global Variables -//**************************************************************************** - -// Initialize Class Variables ////////////////////////////////////////////////// - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -// Constructors //////////////////////////////////////////////////////////////// TwoWire::TwoWire(XMC_I2C_t *conf) { XMC_I2C_config = conf; @@ -35,11 +24,11 @@ TwoWire::TwoWire(XMC_I2C_t *conf) { // Public Methods ////////////////////////////////////////////////////////////// void TwoWire::begin(void) { - // Check if desire USIC channel is already in use + // To-Do for future work need to check + // Check if desire USIC channel is already in use // if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { // SPI.end(); // } - hasError = false; isMaster = true; @@ -77,6 +66,7 @@ void TwoWire::begin(void) { } void TwoWire::begin(uint8_t address) { + //To-Do for future work need to check // Check if desire USIC channel is already in use // if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { // SPI.end(); @@ -129,8 +119,6 @@ void TwoWire::begin(uint8_t address) { &(XMC_I2C_config->scl_config)); } -//void TwoWire::begin(int address) { begin((uint8_t)address); } - void TwoWire::end(void) { // Only disable HW when USIC is used for I2C if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_I2C) { @@ -174,12 +162,10 @@ uint8_t TwoWire::requestFrom( uint8_t address, size_t quantity, uint32_t iaddress, uint8_t isize, bool sendStop) { uint32_t StatusFlag; beginTransmission(address); - // clamp to buffer length if (quantity > BUFFER_LENGTH) { quantity = BUFFER_LENGTH; } - // send internal address; this mode allows sending a repeated start to access // some devices' internal registers. This function is executed by the hardware // TWI module on other processors (for example Due's TWI_IADR and TWI_MMR registers) @@ -298,14 +284,6 @@ uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity) { return requestFrom((uint8_t)address, quantity, true); } -// uint8_t TwoWire::requestFrom(int address, int quantity) { -// return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t) true); -// } - -// uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) { -// return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t)sendStop); -// } - void TwoWire::beginTransmission(uint8_t address) { if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) != XMC_USIC_CH_OPERATING_MODE_I2C) { if (isMaster) { @@ -326,9 +304,6 @@ void TwoWire::beginTransmission(uint8_t address) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, 0xFFFFFFFF); } -//void TwoWire::beginTransmission(int address) { beginTransmission((uint8_t)address); } - -// // Originally, 'endTransmission' was an f(void) function. // It has been modified to take one parameter indicating // whether or not a STOP should be performed on the bus. @@ -394,7 +369,6 @@ uint8_t TwoWire::endTransmission(bool sendStop) { // This provides backwards compatibility with the original // definition, and expected behaviour, of endTransmission -// uint8_t TwoWire::endTransmission(void) { return endTransmission(true); } // must be called in: @@ -665,8 +639,6 @@ void USIC1_4_IRQHandler() { Wire1.ProtocolHandler(); } #endif } // extern "C" -// Preinstantiate Objects ////////////////////////////////////////////////////// - TwoWire Wire = TwoWire(&XMC_I2C_default); #if (NUM_I2C > 1) TwoWire Wire1 = TwoWire(&XMC_I2C_1); diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index f7ac9678..ed996696 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -1,27 +1,3 @@ -/* - * TwoWire.h - TWI/I2C library for Arduino & Wiring - * Copyright (c) 2006 Nicholas Zambetti. All right reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts - * - * Copyright (c) 2018 Infineon Technologies AG - * This library has been modified for the XMC microcontroller series. - */ - #ifndef TwoWire_h #define TwoWire_h @@ -34,8 +10,6 @@ // @Defines //**************************************************************************** #define BUFFER_LENGTH 32 -// WIRE_HAS_END means Wire has end() -#define WIRE_HAS_END 1 #define WIRE_COMMUNICATION_TIMEOUT 5000u @@ -74,18 +48,14 @@ class TwoWire : public Stream { TwoWire(XMC_I2C_t *conf); void begin(); void begin(uint8_t); - // void begin(int); void end(); void setClock(uint32_t); void beginTransmission(uint8_t); - // void beginTransmission(int); uint8_t endTransmission(void); uint8_t endTransmission(bool); uint8_t requestFrom(uint8_t, size_t); uint8_t requestFrom(uint8_t, size_t, bool); uint8_t requestFrom(uint8_t, size_t, uint32_t, uint8_t, bool); - // uint8_t requestFrom(int, int); - // uint8_t requestFrom(int, int, int); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *, size_t); virtual int available(void); @@ -97,14 +67,6 @@ class TwoWire : public Stream { void ReceiveHandler(void); void ProtocolHandler(void); - inline size_t write(unsigned long n) { return write((uint8_t)n); } - - inline size_t write(long n) { return write((uint8_t)n); } - - inline size_t write(unsigned int n) { return write((uint8_t)n); } - - inline size_t write(int n) { return write((uint8_t)n); } - using Print::write; }; From 26b39fbc40d45f31e352613fad13fd98eba92a84 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 9 Jul 2025 08:53:49 +0530 Subject: [PATCH 153/366] libraries/Wire: Inherit to HardwareI2C. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 6 +++--- libraries/Wire/src/Wire.h | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index e351ca1b..0ca5e055 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -158,7 +158,7 @@ void TwoWire::end(void) { void TwoWire::setClock(uint32_t clock) { XMC_I2C_CH_SetBaudrate(XMC_I2C_config->channel, clock); } -uint8_t TwoWire::requestFrom( +size_t TwoWire::requestFrom( uint8_t address, size_t quantity, uint32_t iaddress, uint8_t isize, bool sendStop) { uint32_t StatusFlag; beginTransmission(address); @@ -275,12 +275,12 @@ uint8_t TwoWire::requestFrom( return quantity; } -uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { +size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { return requestFrom((uint8_t)address, quantity, (uint32_t)0, (uint8_t)0, sendStop); } -uint8_t TwoWire::requestFrom(uint8_t address, size_t quantity) { +size_t TwoWire::requestFrom(uint8_t address, size_t quantity) { return requestFrom((uint8_t)address, quantity, true); } diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index ed996696..16b8cdcd 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -5,7 +5,8 @@ // @Project Includes //**************************************************************************** #include - +#include "api/RingBuffer.h" +#include "api/HardwareI2C.h" //**************************************************************************** // @Defines //**************************************************************************** @@ -16,7 +17,7 @@ //**************************************************************************** // @Class Definitions //**************************************************************************** -class TwoWire : public Stream { +class TwoWire : public arduino::HardwareI2C { private: XMC_I2C_t *XMC_I2C_config; @@ -53,9 +54,9 @@ class TwoWire : public Stream { void beginTransmission(uint8_t); uint8_t endTransmission(void); uint8_t endTransmission(bool); - uint8_t requestFrom(uint8_t, size_t); - uint8_t requestFrom(uint8_t, size_t, bool); - uint8_t requestFrom(uint8_t, size_t, uint32_t, uint8_t, bool); + size_t requestFrom(uint8_t, size_t); + size_t requestFrom(uint8_t, size_t, bool); + size_t requestFrom(uint8_t, size_t, uint32_t, uint8_t, bool); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *, size_t); virtual int available(void); From a8ea783b2e151c1af3943f7e4b17c99eb3ba1b62 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 9 Jul 2025 23:38:42 +0530 Subject: [PATCH 154/366] libraries/Wire: Dummy Master side. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 120 +++++++++++++++--------------------- libraries/Wire/src/Wire.h | 65 +++++++++---------- 2 files changed, 85 insertions(+), 100 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 0ca5e055..fed8646e 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -14,11 +14,14 @@ TwoWire::TwoWire(XMC_I2C_t *conf) { slaveAddress = 0; txAddress = 0; - rxBufferIndex = 0; - rxBufferLength = 0; - txBufferIndex = 0; - txBufferLength = 0; - pre_rxBufferCount = 0; + rx_ringBuffer.clear(); + tx_ringBuffer.clear(); + pre_rx_ringBuffer.clear(); + // rxBufferIndex = 0; + // rxBufferLength = 0; + // txBufferIndex = 0; + // txBufferLength = 0; + // pre_rxBufferCount = 0; } // Public Methods ////////////////////////////////////////////////////////////// @@ -158,8 +161,7 @@ void TwoWire::end(void) { void TwoWire::setClock(uint32_t clock) { XMC_I2C_CH_SetBaudrate(XMC_I2C_config->channel, clock); } -size_t TwoWire::requestFrom( - uint8_t address, size_t quantity, uint32_t iaddress, uint8_t isize, bool sendStop) { +size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress, uint8_t isize, bool sendStop) { uint32_t StatusFlag; beginTransmission(address); // clamp to buffer length @@ -266,9 +268,7 @@ size_t TwoWire::requestFrom( } } - // set rx buffer iterator vars - rxBufferIndex = 0; - rxBufferLength = quantity; + // indicate that we are done transmitting transmitting = 0; @@ -298,8 +298,7 @@ void TwoWire::beginTransmission(uint8_t address) { // set address of targeted slave txAddress = address; // reset tx buffer iterator vars - txBufferIndex = 0; - txBufferLength = 0; + tx_ringBuffer.clear(); // Clear all Status Flags XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, 0xFFFFFFFF); } @@ -321,8 +320,9 @@ uint8_t TwoWire::endTransmission(bool sendStop) { XMC_I2C_CH_MasterStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_WRITE); - for (uint8_t count = 0; count < txBufferLength; count++) { - XMC_I2C_CH_MasterTransmit(XMC_I2C_config->channel, txBuffer[count]); + while(tx_ringBuffer.available()) { + uint8_t data = tx_ringBuffer.read_char(); + XMC_I2C_CH_MasterTransmit(XMC_I2C_config->channel, data); timeout = WIRE_COMMUNICATION_TIMEOUT; // Wait for ACK, leave when NACK is detected @@ -359,9 +359,7 @@ uint8_t TwoWire::endTransmission(bool sendStop) { inRepStart = true; } - // reset tx buffer iterator vars - txBufferIndex = 0; - txBufferLength = 0; + // indicate that we are done transmitting transmitting = 0; return 0; @@ -378,15 +376,12 @@ size_t TwoWire::write(uint8_t data) { if (transmitting) { // in master transmitter mode // don't bother if buffer is full - if (txBufferLength >= BUFFER_LENGTH) { + if (tx_ringBuffer.isFull()) { // TODO: setWriteError(); return 0; } // put byte in tx buffer - txBuffer[txBufferIndex] = data; - ++txBufferIndex; - // update amount in buffer - txBufferLength = txBufferIndex; + tx_ringBuffer.store_char(data); } else { // in slave send mode // reply to master @@ -423,8 +418,10 @@ size_t TwoWire::write(const uint8_t *data, size_t quantity) { if (transmitting) { // in master transmitter mode for (size_t i = 0; i < quantity; ++i) { - write(data[i]); + if(!write(data[i])) { + return 1; } + } } else { // in slave send mode // reply to master @@ -459,34 +456,28 @@ size_t TwoWire::write(const uint8_t *data, size_t quantity) { // must be called in: // slave rx event callback // or after requestFrom(address, numBytes) -int TwoWire::available(void) { return rxBufferLength - rxBufferIndex; } +int TwoWire::available(void) { return rx_ringBuffer.available(); } // must be called in: // slave rx event callback // or after requestFrom(address, numBytes) int TwoWire::read(void) { - int value = -1; - - // get each successive byte on each call - if (rxBufferIndex < rxBufferLength) { - value = rxBuffer[rxBufferIndex]; - ++rxBufferIndex; - } - - return value; + if(rx_ringBuffer.available() == 0){ + // read from ring buffer + return -1; +} +return rx_ringBuffer.read_char(); } // must be called in: // slave rx event callback // or after requestFrom(address, numBytes) int TwoWire::peek(void) { - int value = -1; - - if (rxBufferIndex < rxBufferLength) { - value = rxBuffer[rxBufferIndex]; + if(rx_ringBuffer.available() == 0){ + // read from ring buffer + return -1; } - - return value; + return rx_ringBuffer.peek(); } void TwoWire::flush(void) { @@ -502,13 +493,16 @@ void TwoWire::flush(void) { (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); } XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, 0xFFFFFFFF); + rx_ringBuffer.clear(); + tx_ringBuffer.clear(); + pre_rx_ringBuffer.clear(); } // behind the scenes function that is called after each received byte void TwoWire::ReceiveHandler(void) { // no stop or read request - pre_rxBuffer[pre_rxBufferCount] = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); - pre_rxBufferCount++; + pre_rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); + } // behind the scenes function that is called after receiving stop or read request @@ -537,48 +531,37 @@ void TwoWire::ProtocolHandler(void) { } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED); - uint8_t numBytes = pre_rxBufferCount; - - pre_rxBufferCount = 0; - - OnReceiveService(pre_rxBuffer, numBytes); + OnReceiveService(); OnRequestService(); } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED); - uint8_t numBytes = pre_rxBufferCount; - - pre_rxBufferCount = 0; - - OnReceiveService(pre_rxBuffer, numBytes); + + OnReceiveService(); } } } // behind the scenes callback function that is called when a data block is received -void TwoWire::OnReceiveService(uint8_t *inBytes, uint8_t numBytes) { +void TwoWire::OnReceiveService() { // don't bother if user hasn't registered a callback if (!user_onReceive) { return; } - // don't bother if rx buffer is in use by a master requestFrom() op - // i know this drops data, but it allows for slight stupidity - // meaning, they may not have read all the master requestFrom() data yet - if (rxBufferIndex < rxBufferLength) { - return; - } - - // copy twi rx buffer into local read buffer - // this enables new reads to happen in parallel - for (uint8_t i = 0; i < numBytes; ++i) { - rxBuffer[i] = inBytes[i]; + while(pre_rx_ringBuffer.available()) { + // read from pre-receive buffer + if(rx_ringBuffer.availableForStore()) { + // buffer is full, stop reading +rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); + } else { + // buffer is full, stop reading + hasError = true; + break; + } } - // set rx iterator vars - rxBufferIndex = 0; - rxBufferLength = numBytes; // alert user program - user_onReceive(numBytes); + user_onReceive(rx_ringBuffer.available()); /*Flush receive buffer*/ (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); @@ -593,8 +576,7 @@ void TwoWire::OnRequestService(void) { } // reset tx buffer iterator vars // !!! this will kill any pending pre-master sendTo() activity - txBufferIndex = 0; - txBufferLength = 0; + tx_ringBuffer.clear(); // alert user program user_onRequest(); } diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 16b8cdcd..4d79524f 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -10,40 +10,14 @@ //**************************************************************************** // @Defines //**************************************************************************** -#define BUFFER_LENGTH 32 #define WIRE_COMMUNICATION_TIMEOUT 5000u +#define BUFFER_LENGTH 128 //**************************************************************************** // @Class Definitions //**************************************************************************** class TwoWire : public arduino::HardwareI2C { -private: - XMC_I2C_t *XMC_I2C_config; - - bool isMaster; - bool inRepStart; - uint8_t transmitting; - uint16_t timeout; - - uint8_t rxBuffer[BUFFER_LENGTH]; - uint8_t rxBufferIndex; - uint8_t rxBufferLength; - - uint8_t slaveAddress; - uint8_t txAddress; - uint8_t txBuffer[BUFFER_LENGTH]; - uint8_t txBufferIndex; - uint8_t txBufferLength; - - uint8_t pre_rxBuffer[BUFFER_LENGTH]; - uint8_t pre_rxBufferCount; - - void (*user_onRequest)(void); - void (*user_onReceive)(int); - void OnRequestService(void); - void OnReceiveService(uint8_t *, uint8_t); - public: bool volatile hasError; TwoWire(XMC_I2C_t *conf); @@ -59,16 +33,45 @@ class TwoWire : public arduino::HardwareI2C { size_t requestFrom(uint8_t, size_t, uint32_t, uint8_t, bool); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *, size_t); - virtual int available(void); - virtual int read(void); - virtual int peek(void); - virtual void flush(void); + int available(void); + int read(void); + int peek(void); + void flush(void); void onReceive(void (*)(int)); void onRequest(void (*)(void)); void ReceiveHandler(void); void ProtocolHandler(void); using Print::write; +private: + XMC_I2C_t *XMC_I2C_config; + + bool isMaster; + bool inRepStart; + uint8_t transmitting; + uint16_t timeout; + arduino::RingBufferN < BUFFER_LENGTH > rx_ringBuffer; + arduino::RingBufferN < BUFFER_LENGTH > tx_ringBuffer; + arduino::RingBufferN < BUFFER_LENGTH > pre_rx_ringBuffer; + uint8_t temp_rx_buff[BUFFER_LENGTH] = {0}; + uint8_t temp_tx_buff[BUFFER_LENGTH] = {0}; + uint8_t rxBuffer[BUFFER_LENGTH]; + uint8_t rxBufferIndex; + uint8_t rxBufferLength; + + uint8_t slaveAddress; + uint8_t txAddress; + uint8_t txBuffer[BUFFER_LENGTH]; + uint8_t txBufferIndex; + uint8_t txBufferLength; + + // uint8_t pre_rxBuffer[BUFFER_LENGTH]; + // uint8_t pre_rxBufferCount; + + void (*user_onRequest)(void); + void (*user_onReceive)(int); + void OnRequestService(void); + void OnReceiveService(void); }; extern TwoWire Wire; From f33cf7f777264215223da0b8070270867d9fb0fd Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 10 Jul 2025 00:46:39 +0530 Subject: [PATCH 155/366] libraries/Wire: RingBuffer implementation. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index fed8646e..77ca0933 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -227,7 +227,7 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); - rxBuffer[count] = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); + rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); } XMC_I2C_CH_MasterReceiveNack(XMC_I2C_config->channel); @@ -250,7 +250,7 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); - rxBuffer[quantity - 1] = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); + rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); if (sendStop) { XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); @@ -549,19 +549,13 @@ void TwoWire::OnReceiveService() { if (!user_onReceive) { return; } - while(pre_rx_ringBuffer.available()) { - // read from pre-receive buffer - if(rx_ringBuffer.availableForStore()) { - // buffer is full, stop reading -rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); - } else { - // buffer is full, stop reading - hasError = true; - break; - } - } + uint8_t count = pre_rx_ringBuffer.available(); + while(pre_rx_ringBuffer.available()>0 && rx_ringBuffer.availableForStore()>0) { + rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); + } + // alert user program - user_onReceive(rx_ringBuffer.available()); + user_onReceive(count); /*Flush receive buffer*/ (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); From e77a6f727efc950c0b24ca17529084c626bf5d71 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 10 Jul 2025 09:34:24 +0530 Subject: [PATCH 156/366] libraries/Wire: Modified handler. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 77ca0933..7feb7079 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -496,12 +496,20 @@ void TwoWire::flush(void) { rx_ringBuffer.clear(); tx_ringBuffer.clear(); pre_rx_ringBuffer.clear(); + transmitting = 0; + inRepStart = false; + hasError = false; } // behind the scenes function that is called after each received byte void TwoWire::ReceiveHandler(void) { // no stop or read request - pre_rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); + if(pre_rx_ringBuffer.availableForStore() > 0) { + pre_rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); + } + else{ + hasError = true; + } } From b289637bdb8a9faac670a5c1512c797c21baa9c6 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 10 Jul 2025 10:00:42 +0530 Subject: [PATCH 157/366] libraries/Wire: Removed comments. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 267 +++++++++--------------------------- libraries/Wire/src/Wire.h | 26 +--- 2 files changed, 68 insertions(+), 225 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 7feb7079..6ec88154 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -17,15 +17,8 @@ TwoWire::TwoWire(XMC_I2C_t *conf) { rx_ringBuffer.clear(); tx_ringBuffer.clear(); pre_rx_ringBuffer.clear(); - // rxBufferIndex = 0; - // rxBufferLength = 0; - // txBufferIndex = 0; - // txBufferLength = 0; - // pre_rxBufferCount = 0; } -// Public Methods ////////////////////////////////////////////////////////////// - void TwoWire::begin(void) { // To-Do for future work need to check // Check if desire USIC channel is already in use @@ -36,36 +29,24 @@ void TwoWire::begin(void) { isMaster = true; XMC_I2C_CH_Init(XMC_I2C_config->channel, &(XMC_I2C_config->channel_config)); - - XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX0, - XMC_I2C_config->input_source_dx0); - XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, - XMC_I2C_config->input_source_dx1); - + XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX0, XMC_I2C_config->input_source_dx0); + XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, XMC_I2C_config->input_source_dx1); /* configure i2c tx fifo */ - XMC_USIC_CH_TXFIFO_Configure(XMC_I2C_config->channel, 16, XMC_USIC_CH_FIFO_SIZE_16WORDS, - (uint32_t)15); - + XMC_USIC_CH_TXFIFO_Configure(XMC_I2C_config->channel, 16, XMC_USIC_CH_FIFO_SIZE_16WORDS,(uint32_t)15); /* configure i2c rx fifo */ - XMC_USIC_CH_RXFIFO_Configure(XMC_I2C_config->channel, 0, XMC_USIC_CH_FIFO_SIZE_16WORDS, - (uint32_t)(15)); + XMC_USIC_CH_RXFIFO_Configure(XMC_I2C_config->channel, 0, XMC_USIC_CH_FIFO_SIZE_16WORDS,(uint32_t)(15)); + + XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL,XMC_I2C_config->protocol_irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL, - XMC_I2C_config->protocol_irq_service_request); NVIC_SetPriority((IRQn_Type)XMC_I2C_config->protocol_irq_num, 3U); NVIC_EnableIRQ((IRQn_Type)XMC_I2C_config->protocol_irq_num); - XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel, - (uint32_t)(XMC_I2C_CH_EVENT_NACK | XMC_I2C_CH_EVENT_DATA_LOST | - XMC_I2C_CH_EVENT_ARBITRATION_LOST | XMC_I2C_CH_EVENT_ERROR)); + XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel,(uint32_t)(XMC_I2C_CH_EVENT_NACK | XMC_I2C_CH_EVENT_DATA_LOST |XMC_I2C_CH_EVENT_ARBITRATION_LOST | XMC_I2C_CH_EVENT_ERROR)); XMC_I2C_CH_Start(XMC_I2C_config->channel); - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->sda.port, (uint8_t)XMC_I2C_config->sda.pin, - &(XMC_I2C_config->sda_config)); - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->scl.port, (uint8_t)XMC_I2C_config->scl.pin, - &(XMC_I2C_config->scl_config)); + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->sda.port, (uint8_t)XMC_I2C_config->sda.pin, &(XMC_I2C_config->sda_config)); + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->scl.port, (uint8_t)XMC_I2C_config->scl.pin, &(XMC_I2C_config->scl_config)); } void TwoWire::begin(uint8_t address) { @@ -78,52 +59,34 @@ void TwoWire::begin(uint8_t address) { slaveAddress = address; XMC_I2C_CH_Init(XMC_I2C_config->channel, &(XMC_I2C_config->channel_config)); + XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX0, XMC_I2C_config->input_source_dx0); + XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, XMC_I2C_config->input_source_dx1); + + XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel,XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE,XMC_I2C_config->slave_receive_irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel,XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE,XMC_I2C_config->slave_receive_irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel,XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL,XMC_I2C_config->protocol_irq_service_request); - XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX0, - XMC_I2C_config->input_source_dx0); - XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, - XMC_I2C_config->input_source_dx1); - - XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, - XMC_I2C_config->slave_receive_irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE, - XMC_I2C_config->slave_receive_irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, - XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL, - XMC_I2C_config->protocol_irq_service_request); NVIC_SetPriority((IRQn_Type)XMC_I2C_config->slave_receive_irq_num, 3U); NVIC_EnableIRQ((IRQn_Type)XMC_I2C_config->slave_receive_irq_num); NVIC_SetPriority((IRQn_Type)XMC_I2C_config->protocol_irq_num, 3U); NVIC_EnableIRQ((IRQn_Type)XMC_I2C_config->protocol_irq_num); XMC_I2C_CH_SetSlaveAddress(XMC_I2C_config->channel, (address << 1)); - /*Flush receive buffer*/ (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); - XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel, - (uint32_t)(XMC_I2C_CH_EVENT_DATA_LOST | - XMC_I2C_CH_EVENT_ARBITRATION_LOST | XMC_I2C_CH_EVENT_ERROR)); - XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel, - (uint32_t)((uint32_t)XMC_I2C_CH_EVENT_STANDARD_RECEIVE | - (uint32_t)XMC_I2C_CH_EVENT_ALTERNATIVE_RECEIVE)); - XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel, - (uint32_t)((uint32_t)XMC_I2C_CH_EVENT_SLAVE_READ_REQUEST | - (uint32_t)XMC_I2C_CH_EVENT_STOP_CONDITION_RECEIVED)); + XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel,(uint32_t)(XMC_I2C_CH_EVENT_DATA_LOST |XMC_I2C_CH_EVENT_ARBITRATION_LOST | XMC_I2C_CH_EVENT_ERROR)); + XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel,(uint32_t)((uint32_t)XMC_I2C_CH_EVENT_STANDARD_RECEIVE |(uint32_t)XMC_I2C_CH_EVENT_ALTERNATIVE_RECEIVE)); + XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel,(uint32_t)((uint32_t)XMC_I2C_CH_EVENT_SLAVE_READ_REQUEST |(uint32_t)XMC_I2C_CH_EVENT_STOP_CONDITION_RECEIVED)); XMC_I2C_CH_Start(XMC_I2C_config->channel); - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->sda.port, (uint8_t)XMC_I2C_config->sda.pin, - &(XMC_I2C_config->sda_config)); - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->scl.port, (uint8_t)XMC_I2C_config->scl.pin, - &(XMC_I2C_config->scl_config)); + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->sda.port, (uint8_t)XMC_I2C_config->sda.pin, &(XMC_I2C_config->sda_config)); + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->scl.port, (uint8_t)XMC_I2C_config->scl.pin, &(XMC_I2C_config->scl_config)); } void TwoWire::end(void) { - // Only disable HW when USIC is used for I2C if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_I2C) { XMC_I2C_CH_Stop(XMC_I2C_config->channel); @@ -131,74 +94,53 @@ void TwoWire::end(void) { XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, XMC_INPUT_A); NVIC_DisableIRQ((IRQn_Type)XMC_I2C_config->protocol_irq_num); - XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel, - (uint32_t)(XMC_I2C_CH_EVENT_NACK | XMC_I2C_CH_EVENT_DATA_LOST | - XMC_I2C_CH_EVENT_ARBITRATION_LOST | - XMC_I2C_CH_EVENT_ERROR)); + XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel,(uint32_t)(XMC_I2C_CH_EVENT_NACK | XMC_I2C_CH_EVENT_DATA_LOST |XMC_I2C_CH_EVENT_ARBITRATION_LOST |XMC_I2C_CH_EVENT_ERROR)); if (isMaster == false) { - XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel, - (uint32_t)((uint32_t)XMC_I2C_CH_EVENT_SLAVE_READ_REQUEST | - (uint32_t)XMC_I2C_CH_EVENT_STOP_CONDITION_RECEIVED)); - + XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel,(uint32_t)((uint32_t)XMC_I2C_CH_EVENT_SLAVE_READ_REQUEST |(uint32_t)XMC_I2C_CH_EVENT_STOP_CONDITION_RECEIVED)); NVIC_DisableIRQ((IRQn_Type)XMC_I2C_config->slave_receive_irq_num); - XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel, - (uint32_t)((uint32_t)XMC_I2C_CH_EVENT_STANDARD_RECEIVE | - (uint32_t)XMC_I2C_CH_EVENT_ALTERNATIVE_RECEIVE)); + XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel,(uint32_t)((uint32_t)XMC_I2C_CH_EVENT_STANDARD_RECEIVE |(uint32_t)XMC_I2C_CH_EVENT_ALTERNATIVE_RECEIVE)); } flush(); - /* Disable i2c tx fifo */ - XMC_USIC_CH_TXFIFO_Configure(XMC_I2C_config->channel, 16, XMC_USIC_CH_FIFO_DISABLED, - (uint32_t)15); + XMC_USIC_CH_TXFIFO_Configure(XMC_I2C_config->channel, 16, XMC_USIC_CH_FIFO_DISABLED,(uint32_t)15); /* Disable i2c rx fifo */ - XMC_USIC_CH_RXFIFO_Configure(XMC_I2C_config->channel, 0, XMC_USIC_CH_FIFO_DISABLED, - (uint32_t)(15)); + XMC_USIC_CH_RXFIFO_Configure(XMC_I2C_config->channel, 0, XMC_USIC_CH_FIFO_DISABLED,(uint32_t)(15)); } } -void TwoWire::setClock(uint32_t clock) { XMC_I2C_CH_SetBaudrate(XMC_I2C_config->channel, clock); } +void TwoWire::setClock(uint32_t clock) { + XMC_I2C_CH_SetBaudrate(XMC_I2C_config->channel, clock); +} size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress, uint8_t isize, bool sendStop) { uint32_t StatusFlag; beginTransmission(address); - // clamp to buffer length if (quantity > BUFFER_LENGTH) { quantity = BUFFER_LENGTH; } - // send internal address; this mode allows sending a repeated start to access - // some devices' internal registers. This function is executed by the hardware - // TWI module on other processors (for example Due's TWI_IADR and TWI_MMR registers) if (isize > 0) { - // the maximum size of internal address is 3 bytes if (isize > 3) { isize = 3; } - // write internal register address - most significant byte first while (isize-- > 0) { write((uint8_t)(iaddress >> (isize * 8))); } endTransmission(false); - - XMC_I2C_CH_MasterRepeatedStart(XMC_I2C_config->channel, (txAddress << 1), - XMC_I2C_CH_CMD_READ); + XMC_I2C_CH_MasterRepeatedStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_READ); } else if (inRepStart) { - XMC_I2C_CH_MasterRepeatedStart(XMC_I2C_config->channel, (txAddress << 1), - XMC_I2C_CH_CMD_READ); + XMC_I2C_CH_MasterRepeatedStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_READ); inRepStart = false; } else { XMC_I2C_CH_MasterStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_READ); } timeout = WIRE_COMMUNICATION_TIMEOUT; - // wait for ACK or timeout incase no ACK is received, a time-based wait-state is added since XMC - // devices run at variable frequencies - while (((XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & - XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED) == 0U)) { + while (((XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED) == 0U)) { delay(1); timeout--; if (timeout == 0) { @@ -208,12 +150,10 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress for (uint8_t count = 0; count < (quantity - 1); count++) { XMC_I2C_CH_MasterReceiveAck(XMC_I2C_config->channel); - timeout = WIRE_COMMUNICATION_TIMEOUT; // Wait for Receive, leave when NACK is detected do { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); - // Check for NACK, indicates that no slave with desired address is on the bus if (this->hasError == true || timeout == 0) { this->hasError = false; @@ -221,22 +161,16 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress return 0; } timeout--; - } while ((StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | - XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)) == 0U); - XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, - XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | - XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); - + }while ((StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)) == 0U); + XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); } XMC_I2C_CH_MasterReceiveNack(XMC_I2C_config->channel); - timeout = WIRE_COMMUNICATION_TIMEOUT; // Wait for Receive, leave when NACK is detected do { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); - // Check for NACK, indicates that no slave with desired address is on the bus if (this->hasError == true || timeout == 0) { this->hasError = false; @@ -244,11 +178,8 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress return 0; } timeout--; - } while ((StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | - XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)) == 0U); - XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, - XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | - XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); + } while ((StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)) == 0U); + XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); @@ -256,8 +187,7 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); timeout = WIRE_COMMUNICATION_TIMEOUT; - while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) { + while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { if (this->hasError == true || timeout == 0) { this->hasError = false; inRepStart = false; @@ -267,17 +197,13 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress timeout--; } } - - // indicate that we are done transmitting transmitting = 0; - return quantity; } size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { - return requestFrom((uint8_t)address, quantity, (uint32_t)0, (uint8_t)0, - sendStop); + return requestFrom((uint8_t)address, quantity, (uint32_t)0, (uint8_t)0,sendStop); } size_t TwoWire::requestFrom(uint8_t address, size_t quantity) { @@ -292,7 +218,6 @@ void TwoWire::beginTransmission(uint8_t address) { Wire.begin(slaveAddress); } } - // indicate that we are transmitting transmitting = 1; // set address of targeted slave @@ -303,32 +228,16 @@ void TwoWire::beginTransmission(uint8_t address) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, 0xFFFFFFFF); } -// Originally, 'endTransmission' was an f(void) function. -// It has been modified to take one parameter indicating -// whether or not a STOP should be performed on the bus. -// Calling endTransmission(false) allows a sketch to -// perform a repeated start. -// -// WARNING: Nothing in the library keeps track of whether -// the bus tenure has been properly ended with a STOP. It -// is very possible to leave the bus in a hung state if -// no call to endTransmission(true) is made. Some I2C -// devices will behave oddly if they do not see a STOP. -// uint8_t TwoWire::endTransmission(bool sendStop) { uint32_t StatusFlag; - XMC_I2C_CH_MasterStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_WRITE); - while(tx_ringBuffer.available()) { uint8_t data = tx_ringBuffer.read_char(); XMC_I2C_CH_MasterTransmit(XMC_I2C_config->channel, data); - timeout = WIRE_COMMUNICATION_TIMEOUT; // Wait for ACK, leave when NACK is detected do { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); - // Check for NACK, indicates that no slave with desired address is on the bus if (this->hasError == true || timeout == 0) { this->hasError = false; @@ -344,8 +253,7 @@ uint8_t TwoWire::endTransmission(bool sendStop) { if (sendStop) { XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); timeout = WIRE_COMMUNICATION_TIMEOUT; - while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) { + while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { if (this->hasError == true || timeout == 0) { this->hasError = false; inRepStart = false; @@ -358,47 +266,34 @@ uint8_t TwoWire::endTransmission(bool sendStop) { } else { inRepStart = true; } - - // indicate that we are done transmitting transmitting = 0; return 0; } -// This provides backwards compatibility with the original -// definition, and expected behaviour, of endTransmission -uint8_t TwoWire::endTransmission(void) { return endTransmission(true); } +uint8_t TwoWire::endTransmission(void) { + return endTransmission(true); +} -// must be called in: -// slave tx event callback -// or after beginTransmission(address) size_t TwoWire::write(uint8_t data) { if (transmitting) { - // in master transmitter mode - // don't bother if buffer is full if (tx_ringBuffer.isFull()) { - // TODO: setWriteError(); return 0; } - // put byte in tx buffer tx_ringBuffer.store_char(data); } else { // in slave send mode // reply to master - if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) != - XMC_USIC_CH_OPERATING_MODE_I2C) { + if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) !=XMC_USIC_CH_OPERATING_MODE_I2C) { if (isMaster) { Wire.begin(); } else { Wire.begin(slaveAddress); } } - XMC_I2C_CH_SlaveTransmit(XMC_I2C_config->channel, data); - timeout = WIRE_COMMUNICATION_TIMEOUT; - while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) { + while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { if (this->hasError == true || timeout == 0) { this->hasError = false; inRepStart = false; @@ -411,36 +306,28 @@ size_t TwoWire::write(uint8_t data) { return 1; } -// must be called in: -// slave tx event callback -// or after beginTransmission(address) size_t TwoWire::write(const uint8_t *data, size_t quantity) { if (transmitting) { - // in master transmitter mode for (size_t i = 0; i < quantity; ++i) { if(!write(data[i])) { return 1; + } } - } } else { // in slave send mode // reply to master - if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) != - XMC_USIC_CH_OPERATING_MODE_I2C) { + if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) !=XMC_USIC_CH_OPERATING_MODE_I2C) { if (isMaster) { Wire.begin(); } else { Wire.begin(slaveAddress); } } - for (uint8_t c = 0; c < quantity; c++) { XMC_I2C_CH_SlaveTransmit(XMC_I2C_config->channel, data[c]); } - timeout = WIRE_COMMUNICATION_TIMEOUT; - while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == - XMC_USIC_CH_TBUF_STATUS_BUSY) { + while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == XMC_USIC_CH_TBUF_STATUS_BUSY) { if (this->hasError == true || timeout == 0) { this->hasError = false; inRepStart = false; @@ -453,28 +340,19 @@ size_t TwoWire::write(const uint8_t *data, size_t quantity) { return quantity; } -// must be called in: -// slave rx event callback -// or after requestFrom(address, numBytes) -int TwoWire::available(void) { return rx_ringBuffer.available(); } +int TwoWire::available(void) { + return rx_ringBuffer.available(); +} -// must be called in: -// slave rx event callback -// or after requestFrom(address, numBytes) int TwoWire::read(void) { if(rx_ringBuffer.available() == 0){ - // read from ring buffer return -1; -} -return rx_ringBuffer.read_char(); + } + return rx_ringBuffer.read_char(); } -// must be called in: -// slave rx event callback -// or after requestFrom(address, numBytes) int TwoWire::peek(void) { if(rx_ringBuffer.available() == 0){ - // read from ring buffer return -1; } return rx_ringBuffer.peek(); @@ -485,8 +363,7 @@ void TwoWire::flush(void) { if (isMaster == true) { XMC_USIC_CH_TXFIFO_Flush(XMC_I2C_config->channel); XMC_USIC_CH_RXFIFO_Flush(XMC_I2C_config->channel); - XMC_USIC_CH_SetTransmitBufferStatus(XMC_I2C_config->channel, - XMC_USIC_CH_TBUF_STATUS_SET_IDLE); + XMC_USIC_CH_SetTransmitBufferStatus(XMC_I2C_config->channel, XMC_USIC_CH_TBUF_STATUS_SET_IDLE); } else { /*Flush receive buffer*/ (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); @@ -501,24 +378,18 @@ void TwoWire::flush(void) { hasError = false; } -// behind the scenes function that is called after each received byte void TwoWire::ReceiveHandler(void) { - // no stop or read request if(pre_rx_ringBuffer.availableForStore() > 0) { pre_rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); - } - else{ + } else { hasError = true; } - } -// behind the scenes function that is called after receiving stop or read request void TwoWire::ProtocolHandler(void) { uint32_t flag_status = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); if (isMaster) { - if (flag_status & - (uint32_t)(XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED | + if (flag_status &(uint32_t)(XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED | XMC_I2C_CH_STATUS_FLAG_ARBITRATION_LOST | XMC_I2C_CH_STATUS_FLAG_ERROR | XMC_I2C_CH_STATUS_FLAG_DATA_LOST_INDICATION)) { XMC_I2C_CH_ClearStatusFlag( @@ -536,13 +407,12 @@ void TwoWire::ProtocolHandler(void) { XMC_I2C_CH_STATUS_FLAG_ERROR | XMC_I2C_CH_STATUS_FLAG_DATA_LOST_INDICATION)); hasError = true; - } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED) { - XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, - XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED); - OnReceiveService(); + } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED) { + XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED); + OnReceiveService(); OnRequestService(); - } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED) { + } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED); @@ -551,43 +421,36 @@ void TwoWire::ProtocolHandler(void) { } } -// behind the scenes callback function that is called when a data block is received void TwoWire::OnReceiveService() { - // don't bother if user hasn't registered a callback if (!user_onReceive) { return; } uint8_t count = pre_rx_ringBuffer.available(); while(pre_rx_ringBuffer.available()>0 && rx_ringBuffer.availableForStore()>0) { rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); - } + } - // alert user program user_onReceive(count); - /*Flush receive buffer*/ (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); } -// behind the scenes function that is called when data is requested void TwoWire::OnRequestService(void) { - // don't bother if user hasn't registered a callback if (!user_onRequest) { return; } - // reset tx buffer iterator vars - // !!! this will kill any pending pre-master sendTo() activity tx_ringBuffer.clear(); - // alert user program user_onRequest(); } -// sets function called on slave write -void TwoWire::onReceive(void (*function)(int)) { user_onReceive = function; } +void TwoWire::onReceive(void (*function)(int)) { + user_onReceive = function; +} -// sets function called on slave read -void TwoWire::onRequest(void (*function)(void)) { user_onRequest = function; } +void TwoWire::onRequest(void (*function)(void)) { + user_onRequest = function; +} /* * Interrupt handler for xmc devices: diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 4d79524f..180bea33 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -1,22 +1,13 @@ #ifndef TwoWire_h #define TwoWire_h -//**************************************************************************** -// @Project Includes -//**************************************************************************** #include #include "api/RingBuffer.h" #include "api/HardwareI2C.h" -//**************************************************************************** -// @Defines -//**************************************************************************** #define WIRE_COMMUNICATION_TIMEOUT 5000u -#define BUFFER_LENGTH 128 +#define BUFFER_LENGTH 64 -//**************************************************************************** -// @Class Definitions -//**************************************************************************** class TwoWire : public arduino::HardwareI2C { public: bool volatile hasError; @@ -53,21 +44,10 @@ class TwoWire : public arduino::HardwareI2C { arduino::RingBufferN < BUFFER_LENGTH > rx_ringBuffer; arduino::RingBufferN < BUFFER_LENGTH > tx_ringBuffer; arduino::RingBufferN < BUFFER_LENGTH > pre_rx_ringBuffer; - uint8_t temp_rx_buff[BUFFER_LENGTH] = {0}; - uint8_t temp_tx_buff[BUFFER_LENGTH] = {0}; - uint8_t rxBuffer[BUFFER_LENGTH]; - uint8_t rxBufferIndex; - uint8_t rxBufferLength; - + uint8_t slaveAddress; uint8_t txAddress; - uint8_t txBuffer[BUFFER_LENGTH]; - uint8_t txBufferIndex; - uint8_t txBufferLength; - - // uint8_t pre_rxBuffer[BUFFER_LENGTH]; - // uint8_t pre_rxBufferCount; - + void (*user_onRequest)(void); void (*user_onReceive)(int); void OnRequestService(void); From eb579d552c5bd4d865877b6aaa4522f997e133d4 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 17 Jul 2025 09:50:56 +0530 Subject: [PATCH 158/366] libraries/Wire: Implemented error handling. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 15 ++++++++++----- libraries/Wire/src/Wire.h | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 6ec88154..67c3f8fd 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -239,11 +239,16 @@ uint8_t TwoWire::endTransmission(bool sendStop) { do { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); // Check for NACK, indicates that no slave with desired address is on the bus - if (this->hasError == true || timeout == 0) { - this->hasError = false; - inRepStart = false; + if(StatusFlag & XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED) { + this->hasError = true; flush(); - return 1; + return 2; // NACK received + } + + if(timeout == 0) { + this->hasError = true; + flush(); + return 4; // Timeout } timeout--; } while ((StatusFlag & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED) == 0U); @@ -258,7 +263,7 @@ uint8_t TwoWire::endTransmission(bool sendStop) { this->hasError = false; inRepStart = false; flush(); - return 1; + return 4; } timeout--; } diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 180bea33..4eb25603 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -5,7 +5,7 @@ #include "api/RingBuffer.h" #include "api/HardwareI2C.h" -#define WIRE_COMMUNICATION_TIMEOUT 5000u +#define WIRE_COMMUNICATION_TIMEOUT 1000u #define BUFFER_LENGTH 64 class TwoWire : public arduino::HardwareI2C { From 9ebc59c6e9dc7e5f3f62a489cc61a20c299f987f Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 17 Jul 2025 09:59:05 +0530 Subject: [PATCH 159/366] libraries/Wire: Add data too long error. Signed-off-by: MDin libraries/Wire: Modified buf len. Signed-off-by: MDin libraries/Wire: Review comments work. Signed-off-by: MDin libraries/Wire: Dummy commit. Signed-off-by: MDin libraries/Wire: Dummy commit. Signed-off-by: MDin libraries/Wire: Dummy commit. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 195 ++++++++++++++++++------------------ libraries/Wire/src/Wire.h | 11 +- 2 files changed, 103 insertions(+), 103 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 67c3f8fd..8d9c54ed 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -14,11 +14,22 @@ TwoWire::TwoWire(XMC_I2C_t *conf) { slaveAddress = 0; txAddress = 0; + user_onReceive = nullptr; + user_onRequest = nullptr; rx_ringBuffer.clear(); tx_ringBuffer.clear(); pre_rx_ringBuffer.clear(); } +void TwoWire::resetBus() { + end(); + if(isMaster) { + begin(); + }else { + begin(slaveAddress); + } +} + void TwoWire::begin(void) { // To-Do for future work need to check // Check if desire USIC channel is already in use @@ -115,96 +126,85 @@ void TwoWire::setClock(uint32_t clock) { XMC_I2C_CH_SetBaudrate(XMC_I2C_config->channel, clock); } -size_t TwoWire::requestFrom(uint8_t address, size_t quantity, uint32_t iaddress, uint8_t isize, bool sendStop) { - uint32_t StatusFlag; +size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { + if(quantity == 0) { + if(sendStop) { + XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); + } + return 0; + } beginTransmission(address); if (quantity > BUFFER_LENGTH) { quantity = BUFFER_LENGTH; } - if (isize > 0) { - // the maximum size of internal address is 3 bytes - if (isize > 3) { - isize = 3; - } - // write internal register address - most significant byte first - while (isize-- > 0) { - write((uint8_t)(iaddress >> (isize * 8))); - } - endTransmission(false); - XMC_I2C_CH_MasterRepeatedStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_READ); - } else if (inRepStart) { + + rx_ringBuffer.clear(); + if (inRepStart) { XMC_I2C_CH_MasterRepeatedStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_READ); inRepStart = false; } else { XMC_I2C_CH_MasterStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_READ); } - timeout = WIRE_COMMUNICATION_TIMEOUT; - while (((XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED) == 0U)) { - delay(1); - timeout--; - if (timeout == 0) { - break; + uint32_t start = millis(); + while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED)) { + if (millis() - start > timeout || hasError) { + flush(); + return 0; } } for (uint8_t count = 0; count < (quantity - 1); count++) { XMC_I2C_CH_MasterReceiveAck(XMC_I2C_config->channel); - timeout = WIRE_COMMUNICATION_TIMEOUT; + start = millis(); + uint32_t StatusFlag; // Wait for Receive, leave when NACK is detected do { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); // Check for NACK, indicates that no slave with desired address is on the bus - if (this->hasError == true || timeout == 0) { - this->hasError = false; + if (this->hasError == true || millis() - start > timeout) { flush(); - return 0; + return count; } - timeout--; - }while ((StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)) == 0U); + }while (!(StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))); XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); } XMC_I2C_CH_MasterReceiveNack(XMC_I2C_config->channel); - timeout = WIRE_COMMUNICATION_TIMEOUT; + start = millis(); + uint32_t StatusFlag; // Wait for Receive, leave when NACK is detected do { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); // Check for NACK, indicates that no slave with desired address is on the bus - if (this->hasError == true || timeout == 0) { - this->hasError = false; + if (this->hasError == true || millis() - start > timeout) { flush(); - return 0; + return quantity - 1; // return the number of bytes received before timeout } - timeout--; - } while ((StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)) == 0U); + } while (!(StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))); XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); if (sendStop) { XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); - - timeout = WIRE_COMMUNICATION_TIMEOUT; + start = millis(); while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { - if (this->hasError == true || timeout == 0) { - this->hasError = false; + if (this->hasError == true || (millis() - start > timeout)) { inRepStart = false; flush(); - return 1; + return quantity - 1; // return the number of bytes received before timeout } - timeout--; } } // indicate that we are done transmitting - transmitting = 0; - return quantity; + return rx_ringBuffer.available(); } -size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { - return requestFrom((uint8_t)address, quantity, (uint32_t)0, (uint8_t)0,sendStop); -} +// size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { +// return requestFrom((uint8_t)address, quantity, (uint32_t)0, (uint8_t)0,sendStop); +// } size_t TwoWire::requestFrom(uint8_t address, size_t quantity) { return requestFrom((uint8_t)address, quantity, true); @@ -231,41 +231,39 @@ void TwoWire::beginTransmission(uint8_t address) { uint8_t TwoWire::endTransmission(bool sendStop) { uint32_t StatusFlag; XMC_I2C_CH_MasterStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_WRITE); - while(tx_ringBuffer.available()) { + while(tx_ringBuffer.available() >0) { uint8_t data = tx_ringBuffer.read_char(); XMC_I2C_CH_MasterTransmit(XMC_I2C_config->channel, data); - timeout = WIRE_COMMUNICATION_TIMEOUT; + uint32_t start = millis(); // Wait for ACK, leave when NACK is detected do { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); // Check for NACK, indicates that no slave with desired address is on the bus - if(StatusFlag & XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED) { - this->hasError = true; + if(hasError || (millis() - start > timeout)) { + resetBus(); flush(); - return 2; // NACK received + return 4; // NACK received } + } while (!(StatusFlag & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED)); - if(timeout == 0) { - this->hasError = true; - flush(); - return 4; // Timeout - } - timeout--; - } while ((StatusFlag & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED) == 0U); + if(StatusFlag & XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED) { + // NACK received, slave is not present + // this->hasError = true; + // inRepStart = false; + flush(); + return 2; // NACK received + } XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED); } if (sendStop) { XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); - timeout = WIRE_COMMUNICATION_TIMEOUT; + uint32_t start = millis(); while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { - if (this->hasError == true || timeout == 0) { - this->hasError = false; - inRepStart = false; + if (this->hasError == true || (millis() - start > timeout)) { flush(); return 4; } - timeout--; } inRepStart = false; } else { @@ -286,7 +284,8 @@ size_t TwoWire::write(uint8_t data) { return 0; } tx_ringBuffer.store_char(data); - } else { + return 1; + } // in slave send mode // reply to master if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) !=XMC_USIC_CH_OPERATING_MODE_I2C) { @@ -297,28 +296,27 @@ size_t TwoWire::write(uint8_t data) { } } XMC_I2C_CH_SlaveTransmit(XMC_I2C_config->channel, data); - timeout = WIRE_COMMUNICATION_TIMEOUT; + uint32_t start = millis(); while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { - if (this->hasError == true || timeout == 0) { - this->hasError = false; - inRepStart = false; + if (this->hasError == true || (millis() - start > timeout)) { flush(); return 0; } - timeout--; } - } return 1; } size_t TwoWire::write(const uint8_t *data, size_t quantity) { if (transmitting) { + size_t written = 0; for (size_t i = 0; i < quantity; ++i) { if(!write(data[i])) { - return 1; + break; } + written++; } - } else { + return written; + } // in slave send mode // reply to master if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) !=XMC_USIC_CH_OPERATING_MODE_I2C) { @@ -331,19 +329,15 @@ size_t TwoWire::write(const uint8_t *data, size_t quantity) { for (uint8_t c = 0; c < quantity; c++) { XMC_I2C_CH_SlaveTransmit(XMC_I2C_config->channel, data[c]); } - timeout = WIRE_COMMUNICATION_TIMEOUT; + uint32_t start = millis(); while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == XMC_USIC_CH_TBUF_STATUS_BUSY) { - if (this->hasError == true || timeout == 0) { - this->hasError = false; - inRepStart = false; + if (this->hasError == true || (millis() - start > timeout)) { flush(); return 0; } - timeout--; } - } return quantity; -} + } int TwoWire::available(void) { return rx_ringBuffer.available(); @@ -384,11 +378,15 @@ void TwoWire::flush(void) { } void TwoWire::ReceiveHandler(void) { - if(pre_rx_ringBuffer.availableForStore() > 0) { - pre_rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); + uint32_t data =XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); + noInterrupts(); + if(pre_rx_ringBuffer.isFull()) { + hasError = true; } else { - hasError = true; + pre_rx_ringBuffer.store_char(data); } + interrupts(); + } void TwoWire::ProtocolHandler(void) { @@ -415,38 +413,39 @@ void TwoWire::ProtocolHandler(void) { } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED); - OnReceiveService(); + noInterrupts(); + while(pre_rx_ringBuffer.available()) { + rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); + } + interrupts(); + OnReceiveService(rx_ringBuffer.available()); OnRequestService(); } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED); - OnReceiveService(); + noInterrupts(); + while(pre_rx_ringBuffer.available()) { + rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); + } + interrupts(); + OnReceiveService(rx_ringBuffer.available()); } } } -void TwoWire::OnReceiveService() { - if (!user_onReceive) { - return; - } - uint8_t count = pre_rx_ringBuffer.available(); - while(pre_rx_ringBuffer.available()>0 && rx_ringBuffer.availableForStore()>0) { - rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); - } - - user_onReceive(count); - /*Flush receive buffer*/ - (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); - (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); +void TwoWire::OnReceiveService( uint8_t numBytes) { + if (user_onReceive && numBytes >0) { + user_onReceive(numBytes); +} } void TwoWire::OnRequestService(void) { - if (!user_onRequest) { - return; - } - tx_ringBuffer.clear(); + if (user_onRequest) { + tx_ringBuffer.clear(); user_onRequest(); + } + } void TwoWire::onReceive(void (*function)(int)) { diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 4eb25603..4bbeb96f 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -5,9 +5,9 @@ #include "api/RingBuffer.h" #include "api/HardwareI2C.h" -#define WIRE_COMMUNICATION_TIMEOUT 1000u -#define BUFFER_LENGTH 64 - +#define WIRE_COMMUNICATION_TIMEOUT 5000u +#define BUFFER_LENGTH 256 +#define WIRE_HAS_END 1 class TwoWire : public arduino::HardwareI2C { public: bool volatile hasError; @@ -21,7 +21,7 @@ class TwoWire : public arduino::HardwareI2C { uint8_t endTransmission(bool); size_t requestFrom(uint8_t, size_t); size_t requestFrom(uint8_t, size_t, bool); - size_t requestFrom(uint8_t, size_t, uint32_t, uint8_t, bool); + // size_t requestFrom(uint8_t, size_t, uint32_t, uint8_t, bool); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *, size_t); int available(void); @@ -51,7 +51,8 @@ class TwoWire : public arduino::HardwareI2C { void (*user_onRequest)(void); void (*user_onReceive)(int); void OnRequestService(void); - void OnReceiveService(void); + void OnReceiveService(uint8_t numBytes); + void resetBus(); }; extern TwoWire Wire; From 44e77cb4df6f520dcb31edf2d5cb2f3866a098de Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 23 Jul 2025 12:30:44 +0530 Subject: [PATCH 160/366] libraries/Wire: Modified for Wire1. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 65 ++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 8d9c54ed..17641d4d 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -133,7 +133,7 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { } return 0; } - beginTransmission(address); + //beginTransmission(address); if (quantity > BUFFER_LENGTH) { quantity = BUFFER_LENGTH; } @@ -154,38 +154,45 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { } } - for (uint8_t count = 0; count < (quantity - 1); count++) { - XMC_I2C_CH_MasterReceiveAck(XMC_I2C_config->channel); + for (uint8_t count = 0; count < (quantity-1); count++) { + XMC_I2C_CH_MasterReceiveAck(XMC_I2C_config->channel); + start = millis(); - uint32_t StatusFlag; // Wait for Receive, leave when NACK is detected - do { - StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); - // Check for NACK, indicates that no slave with desired address is on the bus - if (this->hasError == true || millis() - start > timeout) { - flush(); - return count; - } - }while (!(StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))); + while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))) + { + if(millis() - start > timeout || hasError){ + flush(); + return count; + } + } XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); - rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); - } + uint8_t data = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); + if(rx_ringBuffer.isFull()){ + flush(); + return count; + } + rx_ringBuffer.store_char(data); + } XMC_I2C_CH_MasterReceiveNack(XMC_I2C_config->channel); - start = millis(); - uint32_t StatusFlag; - // Wait for Receive, leave when NACK is detected - do { - StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); - // Check for NACK, indicates that no slave with desired address is on the bus - if (this->hasError == true || millis() - start > timeout) { + + start = millis(); + // Wait for Receive, leave when NACK is detected + while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))) + { + if(millis() - start > timeout || hasError){ flush(); - return quantity - 1; // return the number of bytes received before timeout + return quantity - 1; } - } while (!(StatusFlag & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))); - XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); - - rx_ringBuffer.store_char(XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel)); + } + XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); + uint8_t data = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); + if(rx_ringBuffer.isFull()){ + flush(); + return quantity-1; + } + rx_ringBuffer.store_char(data); if (sendStop) { XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); @@ -359,7 +366,7 @@ int TwoWire::peek(void) { void TwoWire::flush(void) { // Reset buffer and clear all Status Flags - if (isMaster == true) { + if (isMaster) { XMC_USIC_CH_TXFIFO_Flush(XMC_I2C_config->channel); XMC_USIC_CH_RXFIFO_Flush(XMC_I2C_config->channel); XMC_USIC_CH_SetTransmitBufferStatus(XMC_I2C_config->channel, XMC_USIC_CH_TBUF_STATUS_SET_IDLE); @@ -410,7 +417,7 @@ void TwoWire::ProtocolHandler(void) { XMC_I2C_CH_STATUS_FLAG_ERROR | XMC_I2C_CH_STATUS_FLAG_DATA_LOST_INDICATION)); hasError = true; - } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED) { + } if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED); noInterrupts(); @@ -420,7 +427,7 @@ void TwoWire::ProtocolHandler(void) { interrupts(); OnReceiveService(rx_ringBuffer.available()); OnRequestService(); - } else if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED) { + } if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED); From 659ce052e3eae4ac8785213eed23d85fe3bb4f6a Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 23 Jul 2025 15:21:19 +0530 Subject: [PATCH 161/366] libraries/Wire: Removed comments. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 4 ---- libraries/Wire/src/Wire.h | 1 - 2 files changed, 5 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 17641d4d..27fb39db 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -209,10 +209,6 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { return rx_ringBuffer.available(); } -// size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { -// return requestFrom((uint8_t)address, quantity, (uint32_t)0, (uint8_t)0,sendStop); -// } - size_t TwoWire::requestFrom(uint8_t address, size_t quantity) { return requestFrom((uint8_t)address, quantity, true); } diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 4bbeb96f..9029e2b3 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -21,7 +21,6 @@ class TwoWire : public arduino::HardwareI2C { uint8_t endTransmission(bool); size_t requestFrom(uint8_t, size_t); size_t requestFrom(uint8_t, size_t, bool); - // size_t requestFrom(uint8_t, size_t, uint32_t, uint8_t, bool); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *, size_t); int available(void); From 53eb1daf6e4cfd12461c63d91d5caa3f6b708ffa Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 23 Jul 2025 15:42:35 +0530 Subject: [PATCH 162/366] libraries/Wire: Removed comments. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 27fb39db..a3f88613 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -133,7 +133,6 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { } return 0; } - //beginTransmission(address); if (quantity > BUFFER_LENGTH) { quantity = BUFFER_LENGTH; } @@ -251,8 +250,6 @@ uint8_t TwoWire::endTransmission(bool sendStop) { if(StatusFlag & XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED) { // NACK received, slave is not present - // this->hasError = true; - // inRepStart = false; flush(); return 2; // NACK received } From ffb9976b9fff38763bb5e2d4d3c69f9b84e2ec12 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 23 Jul 2025 17:35:02 +0530 Subject: [PATCH 163/366] libraries/Wire: Changed timeout err value. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index a3f88613..3bb157e2 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -244,7 +244,7 @@ uint8_t TwoWire::endTransmission(bool sendStop) { if(hasError || (millis() - start > timeout)) { resetBus(); flush(); - return 4; // NACK received + return 5; // NACK received } } while (!(StatusFlag & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED)); @@ -262,7 +262,7 @@ uint8_t TwoWire::endTransmission(bool sendStop) { while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { if (this->hasError == true || (millis() - start > timeout)) { flush(); - return 4; + return 5; } } inRepStart = false; From d93161d1f869dec712270698ec46f1a996d4f0a2 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 23 Jul 2025 20:00:46 +0530 Subject: [PATCH 164/366] libraries/Wire: Removed unnecessary func. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 3bb157e2..0f20faf7 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -21,15 +21,6 @@ TwoWire::TwoWire(XMC_I2C_t *conf) { pre_rx_ringBuffer.clear(); } -void TwoWire::resetBus() { - end(); - if(isMaster) { - begin(); - }else { - begin(slaveAddress); - } -} - void TwoWire::begin(void) { // To-Do for future work need to check // Check if desire USIC channel is already in use @@ -242,7 +233,6 @@ uint8_t TwoWire::endTransmission(bool sendStop) { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); // Check for NACK, indicates that no slave with desired address is on the bus if(hasError || (millis() - start > timeout)) { - resetBus(); flush(); return 5; // NACK received } From 7b51c9a77ce99a0dadeffcbf035a2c5e604a0c74 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 24 Jul 2025 09:25:42 +0530 Subject: [PATCH 165/366] libraries/Wire: Review comments work. Signed-off-by: MDin --- libraries/Wire/src/Wire.h | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 9029e2b3..8f2c2261 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -51,7 +51,6 @@ class TwoWire : public arduino::HardwareI2C { void (*user_onReceive)(int); void OnRequestService(void); void OnReceiveService(uint8_t numBytes); - void resetBus(); }; extern TwoWire Wire; From 4ba16fc06d90a6aef6805a600d0321b027c98e62 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 24 Jul 2025 17:34:57 +0530 Subject: [PATCH 166/366] libraries/Wire: Automate Formatting change. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 335 ++++++++++++++++++++---------------- libraries/Wire/src/Wire.h | 24 +-- 2 files changed, 201 insertions(+), 158 deletions(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 0f20faf7..a42ce85f 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -23,50 +23,70 @@ TwoWire::TwoWire(XMC_I2C_t *conf) { void TwoWire::begin(void) { // To-Do for future work need to check - // Check if desire USIC channel is already in use - // if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { + // Check if desire USIC channel is already in use + // if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) + // { // SPI.end(); // } hasError = false; isMaster = true; XMC_I2C_CH_Init(XMC_I2C_config->channel, &(XMC_I2C_config->channel_config)); - XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX0, XMC_I2C_config->input_source_dx0); - XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, XMC_I2C_config->input_source_dx1); + XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX0, + XMC_I2C_config->input_source_dx0); + XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, + XMC_I2C_config->input_source_dx1); /* configure i2c tx fifo */ - XMC_USIC_CH_TXFIFO_Configure(XMC_I2C_config->channel, 16, XMC_USIC_CH_FIFO_SIZE_16WORDS,(uint32_t)15); + XMC_USIC_CH_TXFIFO_Configure(XMC_I2C_config->channel, 16, XMC_USIC_CH_FIFO_SIZE_16WORDS, + (uint32_t)15); /* configure i2c rx fifo */ - XMC_USIC_CH_RXFIFO_Configure(XMC_I2C_config->channel, 0, XMC_USIC_CH_FIFO_SIZE_16WORDS,(uint32_t)(15)); + XMC_USIC_CH_RXFIFO_Configure(XMC_I2C_config->channel, 0, XMC_USIC_CH_FIFO_SIZE_16WORDS, + (uint32_t)(15)); - XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL,XMC_I2C_config->protocol_irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL, + XMC_I2C_config->protocol_irq_service_request); NVIC_SetPriority((IRQn_Type)XMC_I2C_config->protocol_irq_num, 3U); NVIC_EnableIRQ((IRQn_Type)XMC_I2C_config->protocol_irq_num); - XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel,(uint32_t)(XMC_I2C_CH_EVENT_NACK | XMC_I2C_CH_EVENT_DATA_LOST |XMC_I2C_CH_EVENT_ARBITRATION_LOST | XMC_I2C_CH_EVENT_ERROR)); + XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel, + (uint32_t)(XMC_I2C_CH_EVENT_NACK | XMC_I2C_CH_EVENT_DATA_LOST | + XMC_I2C_CH_EVENT_ARBITRATION_LOST | XMC_I2C_CH_EVENT_ERROR)); XMC_I2C_CH_Start(XMC_I2C_config->channel); - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->sda.port, (uint8_t)XMC_I2C_config->sda.pin, &(XMC_I2C_config->sda_config)); - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->scl.port, (uint8_t)XMC_I2C_config->scl.pin, &(XMC_I2C_config->scl_config)); + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->sda.port, (uint8_t)XMC_I2C_config->sda.pin, + &(XMC_I2C_config->sda_config)); + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->scl.port, (uint8_t)XMC_I2C_config->scl.pin, + &(XMC_I2C_config->scl_config)); } void TwoWire::begin(uint8_t address) { - //To-Do for future work need to check - // Check if desire USIC channel is already in use - // if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { - // SPI.end(); - // } + // To-Do for future work need to check + // Check if desire USIC channel is already in use + // if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) + // { + // SPI.end(); + // } isMaster = false; slaveAddress = address; XMC_I2C_CH_Init(XMC_I2C_config->channel, &(XMC_I2C_config->channel_config)); - XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX0, XMC_I2C_config->input_source_dx0); - XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, XMC_I2C_config->input_source_dx1); - - XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel,XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE,XMC_I2C_config->slave_receive_irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel,XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE,XMC_I2C_config->slave_receive_irq_service_request); - XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel,XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL,XMC_I2C_config->protocol_irq_service_request); + XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX0, + XMC_I2C_config->input_source_dx0); + XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, + XMC_I2C_config->input_source_dx1); + + XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_RECEIVE, + XMC_I2C_config->slave_receive_irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_ALTERNATE_RECEIVE, + XMC_I2C_config->slave_receive_irq_service_request); + XMC_USIC_CH_SetInterruptNodePointer(XMC_I2C_config->channel, + XMC_USIC_CH_INTERRUPT_NODE_POINTER_PROTOCOL, + XMC_I2C_config->protocol_irq_service_request); NVIC_SetPriority((IRQn_Type)XMC_I2C_config->slave_receive_irq_num, 3U); NVIC_EnableIRQ((IRQn_Type)XMC_I2C_config->slave_receive_irq_num); @@ -78,14 +98,22 @@ void TwoWire::begin(uint8_t address) { (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); - XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel,(uint32_t)(XMC_I2C_CH_EVENT_DATA_LOST |XMC_I2C_CH_EVENT_ARBITRATION_LOST | XMC_I2C_CH_EVENT_ERROR)); - XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel,(uint32_t)((uint32_t)XMC_I2C_CH_EVENT_STANDARD_RECEIVE |(uint32_t)XMC_I2C_CH_EVENT_ALTERNATIVE_RECEIVE)); - XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel,(uint32_t)((uint32_t)XMC_I2C_CH_EVENT_SLAVE_READ_REQUEST |(uint32_t)XMC_I2C_CH_EVENT_STOP_CONDITION_RECEIVED)); + XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel, + (uint32_t)(XMC_I2C_CH_EVENT_DATA_LOST | + XMC_I2C_CH_EVENT_ARBITRATION_LOST | XMC_I2C_CH_EVENT_ERROR)); + XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel, + (uint32_t)((uint32_t)XMC_I2C_CH_EVENT_STANDARD_RECEIVE | + (uint32_t)XMC_I2C_CH_EVENT_ALTERNATIVE_RECEIVE)); + XMC_I2C_CH_EnableEvent(XMC_I2C_config->channel, + (uint32_t)((uint32_t)XMC_I2C_CH_EVENT_SLAVE_READ_REQUEST | + (uint32_t)XMC_I2C_CH_EVENT_STOP_CONDITION_RECEIVED)); XMC_I2C_CH_Start(XMC_I2C_config->channel); - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->sda.port, (uint8_t)XMC_I2C_config->sda.pin, &(XMC_I2C_config->sda_config)); - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->scl.port, (uint8_t)XMC_I2C_config->scl.pin, &(XMC_I2C_config->scl_config)); + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->sda.port, (uint8_t)XMC_I2C_config->sda.pin, + &(XMC_I2C_config->sda_config)); + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_I2C_config->scl.port, (uint8_t)XMC_I2C_config->scl.pin, + &(XMC_I2C_config->scl_config)); } void TwoWire::end(void) { @@ -96,30 +124,37 @@ void TwoWire::end(void) { XMC_USIC_CH_SetInputSource(XMC_I2C_config->channel, XMC_USIC_CH_INPUT_DX1, XMC_INPUT_A); NVIC_DisableIRQ((IRQn_Type)XMC_I2C_config->protocol_irq_num); - XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel,(uint32_t)(XMC_I2C_CH_EVENT_NACK | XMC_I2C_CH_EVENT_DATA_LOST |XMC_I2C_CH_EVENT_ARBITRATION_LOST |XMC_I2C_CH_EVENT_ERROR)); + XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel, + (uint32_t)(XMC_I2C_CH_EVENT_NACK | XMC_I2C_CH_EVENT_DATA_LOST | + XMC_I2C_CH_EVENT_ARBITRATION_LOST | + XMC_I2C_CH_EVENT_ERROR)); if (isMaster == false) { - XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel,(uint32_t)((uint32_t)XMC_I2C_CH_EVENT_SLAVE_READ_REQUEST |(uint32_t)XMC_I2C_CH_EVENT_STOP_CONDITION_RECEIVED)); + XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel, + (uint32_t)((uint32_t)XMC_I2C_CH_EVENT_SLAVE_READ_REQUEST | + (uint32_t)XMC_I2C_CH_EVENT_STOP_CONDITION_RECEIVED)); NVIC_DisableIRQ((IRQn_Type)XMC_I2C_config->slave_receive_irq_num); - XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel,(uint32_t)((uint32_t)XMC_I2C_CH_EVENT_STANDARD_RECEIVE |(uint32_t)XMC_I2C_CH_EVENT_ALTERNATIVE_RECEIVE)); + XMC_I2C_CH_DisableEvent(XMC_I2C_config->channel, + (uint32_t)((uint32_t)XMC_I2C_CH_EVENT_STANDARD_RECEIVE | + (uint32_t)XMC_I2C_CH_EVENT_ALTERNATIVE_RECEIVE)); } flush(); /* Disable i2c tx fifo */ - XMC_USIC_CH_TXFIFO_Configure(XMC_I2C_config->channel, 16, XMC_USIC_CH_FIFO_DISABLED,(uint32_t)15); + XMC_USIC_CH_TXFIFO_Configure(XMC_I2C_config->channel, 16, XMC_USIC_CH_FIFO_DISABLED, + (uint32_t)15); /* Disable i2c rx fifo */ - XMC_USIC_CH_RXFIFO_Configure(XMC_I2C_config->channel, 0, XMC_USIC_CH_FIFO_DISABLED,(uint32_t)(15)); + XMC_USIC_CH_RXFIFO_Configure(XMC_I2C_config->channel, 0, XMC_USIC_CH_FIFO_DISABLED, + (uint32_t)(15)); } } -void TwoWire::setClock(uint32_t clock) { - XMC_I2C_CH_SetBaudrate(XMC_I2C_config->channel, clock); -} +void TwoWire::setClock(uint32_t clock) { XMC_I2C_CH_SetBaudrate(XMC_I2C_config->channel, clock); } -size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { - if(quantity == 0) { - if(sendStop) { +size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { + if (quantity == 0) { + if (sendStop) { XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); } return 0; @@ -127,67 +162,75 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { if (quantity > BUFFER_LENGTH) { quantity = BUFFER_LENGTH; } - + rx_ringBuffer.clear(); if (inRepStart) { - XMC_I2C_CH_MasterRepeatedStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_READ); + XMC_I2C_CH_MasterRepeatedStart(XMC_I2C_config->channel, (txAddress << 1), + XMC_I2C_CH_CMD_READ); inRepStart = false; } else { XMC_I2C_CH_MasterStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_READ); } uint32_t start = millis(); - while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED)) { + while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & + XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED)) { if (millis() - start > timeout || hasError) { flush(); return 0; } } - for (uint8_t count = 0; count < (quantity-1); count++) { - XMC_I2C_CH_MasterReceiveAck(XMC_I2C_config->channel); + for (uint8_t count = 0; count < (quantity - 1); count++) { + XMC_I2C_CH_MasterReceiveAck(XMC_I2C_config->channel); start = millis(); // Wait for Receive, leave when NACK is detected - while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))) - { - if(millis() - start > timeout || hasError){ + while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & + (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | + XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))) { + if (millis() - start > timeout || hasError) { + flush(); + return count; + } + } + XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, + XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | + XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); + uint8_t data = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); + if (rx_ringBuffer.isFull()) { flush(); return count; } - } - XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); - uint8_t data = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); - if(rx_ringBuffer.isFull()){ - flush(); - return count; - } - rx_ringBuffer.store_char(data); - + rx_ringBuffer.store_char(data); } XMC_I2C_CH_MasterReceiveNack(XMC_I2C_config->channel); - start = millis(); - // Wait for Receive, leave when NACK is detected - while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))) - { - if(millis() - start > timeout || hasError){ + start = millis(); + // Wait for Receive, leave when NACK is detected + while (!(XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel) & + (XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | + XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION))) { + if (millis() - start > timeout || hasError) { flush(); return quantity - 1; } - } - XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION |XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); - uint8_t data = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); - if(rx_ringBuffer.isFull()){ + } + XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, + XMC_I2C_CH_STATUS_FLAG_RECEIVE_INDICATION | + XMC_I2C_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION); + uint8_t data = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); + if (rx_ringBuffer.isFull()) { flush(); - return quantity-1; - } - rx_ringBuffer.store_char(data); + return quantity - 1; + } + rx_ringBuffer.store_char(data); if (sendStop) { XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); start = millis(); - while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { + while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == + XMC_USIC_CH_TBUF_STATUS_BUSY) { if (this->hasError == true || (millis() - start > timeout)) { inRepStart = false; flush(); @@ -199,7 +242,7 @@ size_t TwoWire::requestFrom(uint8_t address, size_t quantity, bool sendStop) { return rx_ringBuffer.available(); } -size_t TwoWire::requestFrom(uint8_t address, size_t quantity) { +size_t TwoWire::requestFrom(uint8_t address, size_t quantity) { return requestFrom((uint8_t)address, quantity, true); } @@ -224,7 +267,7 @@ void TwoWire::beginTransmission(uint8_t address) { uint8_t TwoWire::endTransmission(bool sendStop) { uint32_t StatusFlag; XMC_I2C_CH_MasterStart(XMC_I2C_config->channel, (txAddress << 1), XMC_I2C_CH_CMD_WRITE); - while(tx_ringBuffer.available() >0) { + while (tx_ringBuffer.available() > 0) { uint8_t data = tx_ringBuffer.read_char(); XMC_I2C_CH_MasterTransmit(XMC_I2C_config->channel, data); uint32_t start = millis(); @@ -232,13 +275,13 @@ uint8_t TwoWire::endTransmission(bool sendStop) { do { StatusFlag = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); // Check for NACK, indicates that no slave with desired address is on the bus - if(hasError || (millis() - start > timeout)) { + if (hasError || (millis() - start > timeout)) { flush(); return 5; // NACK received } } while (!(StatusFlag & XMC_I2C_CH_STATUS_FLAG_ACK_RECEIVED)); - if(StatusFlag & XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED) { + if (StatusFlag & XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED) { // NACK received, slave is not present flush(); return 2; // NACK received @@ -249,7 +292,8 @@ uint8_t TwoWire::endTransmission(bool sendStop) { if (sendStop) { XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); uint32_t start = millis(); - while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { + while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == + XMC_USIC_CH_TBUF_STATUS_BUSY) { if (this->hasError == true || (millis() - start > timeout)) { flush(); return 5; @@ -264,9 +308,7 @@ uint8_t TwoWire::endTransmission(bool sendStop) { return 0; } -uint8_t TwoWire::endTransmission(void) { - return endTransmission(true); -} +uint8_t TwoWire::endTransmission(void) { return endTransmission(true); } size_t TwoWire::write(uint8_t data) { if (transmitting) { @@ -275,24 +317,25 @@ size_t TwoWire::write(uint8_t data) { } tx_ringBuffer.store_char(data); return 1; - } - // in slave send mode - // reply to master - if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) !=XMC_USIC_CH_OPERATING_MODE_I2C) { - if (isMaster) { - Wire.begin(); - } else { - Wire.begin(slaveAddress); - } + } + // in slave send mode + // reply to master + if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) != XMC_USIC_CH_OPERATING_MODE_I2C) { + if (isMaster) { + Wire.begin(); + } else { + Wire.begin(slaveAddress); } - XMC_I2C_CH_SlaveTransmit(XMC_I2C_config->channel, data); - uint32_t start = millis(); - while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) ==XMC_USIC_CH_TBUF_STATUS_BUSY) { - if (this->hasError == true || (millis() - start > timeout)) { - flush(); - return 0; - } + } + XMC_I2C_CH_SlaveTransmit(XMC_I2C_config->channel, data); + uint32_t start = millis(); + while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == + XMC_USIC_CH_TBUF_STATUS_BUSY) { + if (this->hasError == true || (millis() - start > timeout)) { + flush(); + return 0; } + } return 1; } @@ -300,48 +343,47 @@ size_t TwoWire::write(const uint8_t *data, size_t quantity) { if (transmitting) { size_t written = 0; for (size_t i = 0; i < quantity; ++i) { - if(!write(data[i])) { + if (!write(data[i])) { break; } written++; } return written; - } - // in slave send mode - // reply to master - if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) !=XMC_USIC_CH_OPERATING_MODE_I2C) { - if (isMaster) { - Wire.begin(); - } else { - Wire.begin(slaveAddress); - } - } - for (uint8_t c = 0; c < quantity; c++) { - XMC_I2C_CH_SlaveTransmit(XMC_I2C_config->channel, data[c]); + } + // in slave send mode + // reply to master + if ((XMC_I2C_config->channel->CCR & USIC_CH_CCR_MODE_Msk) != XMC_USIC_CH_OPERATING_MODE_I2C) { + if (isMaster) { + Wire.begin(); + } else { + Wire.begin(slaveAddress); } - uint32_t start = millis(); - while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == XMC_USIC_CH_TBUF_STATUS_BUSY) { - if (this->hasError == true || (millis() - start > timeout)) { - flush(); - return 0; - } + } + for (uint8_t c = 0; c < quantity; c++) { + XMC_I2C_CH_SlaveTransmit(XMC_I2C_config->channel, data[c]); + } + uint32_t start = millis(); + while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == + XMC_USIC_CH_TBUF_STATUS_BUSY) { + if (this->hasError == true || (millis() - start > timeout)) { + flush(); + return 0; } - return quantity; } - -int TwoWire::available(void) { - return rx_ringBuffer.available(); + return quantity; } +int TwoWire::available(void) { return rx_ringBuffer.available(); } + int TwoWire::read(void) { - if(rx_ringBuffer.available() == 0){ - return -1; + if (rx_ringBuffer.available() == 0) { + return -1; } return rx_ringBuffer.read_char(); } int TwoWire::peek(void) { - if(rx_ringBuffer.available() == 0){ + if (rx_ringBuffer.available() == 0) { return -1; } return rx_ringBuffer.peek(); @@ -352,7 +394,8 @@ void TwoWire::flush(void) { if (isMaster) { XMC_USIC_CH_TXFIFO_Flush(XMC_I2C_config->channel); XMC_USIC_CH_RXFIFO_Flush(XMC_I2C_config->channel); - XMC_USIC_CH_SetTransmitBufferStatus(XMC_I2C_config->channel, XMC_USIC_CH_TBUF_STATUS_SET_IDLE); + XMC_USIC_CH_SetTransmitBufferStatus(XMC_I2C_config->channel, + XMC_USIC_CH_TBUF_STATUS_SET_IDLE); } else { /*Flush receive buffer*/ (void)XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); @@ -368,21 +411,21 @@ void TwoWire::flush(void) { } void TwoWire::ReceiveHandler(void) { - uint32_t data =XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); + uint32_t data = XMC_I2C_CH_GetReceivedData(XMC_I2C_config->channel); noInterrupts(); - if(pre_rx_ringBuffer.isFull()) { - hasError = true; + if (pre_rx_ringBuffer.isFull()) { + hasError = true; } else { pre_rx_ringBuffer.store_char(data); } interrupts(); - } void TwoWire::ProtocolHandler(void) { uint32_t flag_status = XMC_I2C_CH_GetStatusFlag(XMC_I2C_config->channel); if (isMaster) { - if (flag_status &(uint32_t)(XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED | + if (flag_status & + (uint32_t)(XMC_I2C_CH_STATUS_FLAG_NACK_RECEIVED | XMC_I2C_CH_STATUS_FLAG_ARBITRATION_LOST | XMC_I2C_CH_STATUS_FLAG_ERROR | XMC_I2C_CH_STATUS_FLAG_DATA_LOST_INDICATION)) { XMC_I2C_CH_ClearStatusFlag( @@ -400,22 +443,25 @@ void TwoWire::ProtocolHandler(void) { XMC_I2C_CH_STATUS_FLAG_ERROR | XMC_I2C_CH_STATUS_FLAG_DATA_LOST_INDICATION)); hasError = true; - } if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED) { - XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel,XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED); - - noInterrupts(); - while(pre_rx_ringBuffer.available()) { - rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); - } - interrupts(); - OnReceiveService(rx_ringBuffer.available()); + } + if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED) { + XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, + XMC_I2C_CH_STATUS_FLAG_SLAVE_READ_REQUESTED); + + noInterrupts(); + while (pre_rx_ringBuffer.available()) { + rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); + } + interrupts(); + OnReceiveService(rx_ringBuffer.available()); OnRequestService(); - } if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED) { + } + if (flag_status & (uint32_t)XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED) { XMC_I2C_CH_ClearStatusFlag(XMC_I2C_config->channel, XMC_I2C_CH_STATUS_FLAG_STOP_CONDITION_RECEIVED); - + noInterrupts(); - while(pre_rx_ringBuffer.available()) { + while (pre_rx_ringBuffer.available()) { rx_ringBuffer.store_char(pre_rx_ringBuffer.read_char()); } interrupts(); @@ -424,27 +470,22 @@ void TwoWire::ProtocolHandler(void) { } } -void TwoWire::OnReceiveService( uint8_t numBytes) { - if (user_onReceive && numBytes >0) { - user_onReceive(numBytes); -} +void TwoWire::OnReceiveService(uint8_t numBytes) { + if (user_onReceive && numBytes > 0) { + user_onReceive(numBytes); + } } void TwoWire::OnRequestService(void) { if (user_onRequest) { tx_ringBuffer.clear(); - user_onRequest(); + user_onRequest(); } - } -void TwoWire::onReceive(void (*function)(int)) { - user_onReceive = function; -} +void TwoWire::onReceive(void (*function)(int)) { user_onReceive = function; } -void TwoWire::onRequest(void (*function)(void)) { - user_onRequest = function; -} +void TwoWire::onRequest(void (*function)(void)) { user_onRequest = function; } /* * Interrupt handler for xmc devices: diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 8f2c2261..13ed81e0 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -8,6 +8,7 @@ #define WIRE_COMMUNICATION_TIMEOUT 5000u #define BUFFER_LENGTH 256 #define WIRE_HAS_END 1 + class TwoWire : public arduino::HardwareI2C { public: bool volatile hasError; @@ -19,20 +20,21 @@ class TwoWire : public arduino::HardwareI2C { void beginTransmission(uint8_t); uint8_t endTransmission(void); uint8_t endTransmission(bool); - size_t requestFrom(uint8_t, size_t); - size_t requestFrom(uint8_t, size_t, bool); + size_t requestFrom(uint8_t, size_t); + size_t requestFrom(uint8_t, size_t, bool); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *, size_t); - int available(void); - int read(void); - int peek(void); - void flush(void); + int available(void); + int read(void); + int peek(void); + void flush(void); void onReceive(void (*)(int)); void onRequest(void (*)(void)); void ReceiveHandler(void); void ProtocolHandler(void); using Print::write; + private: XMC_I2C_t *XMC_I2C_config; @@ -40,13 +42,13 @@ class TwoWire : public arduino::HardwareI2C { bool inRepStart; uint8_t transmitting; uint16_t timeout; - arduino::RingBufferN < BUFFER_LENGTH > rx_ringBuffer; - arduino::RingBufferN < BUFFER_LENGTH > tx_ringBuffer; - arduino::RingBufferN < BUFFER_LENGTH > pre_rx_ringBuffer; - + arduino::RingBufferN rx_ringBuffer; + arduino::RingBufferN tx_ringBuffer; + arduino::RingBufferN pre_rx_ringBuffer; + uint8_t slaveAddress; uint8_t txAddress; - + void (*user_onRequest)(void); void (*user_onReceive)(int); void OnRequestService(void); From f68fda3bf0671b9a27d06ac81afe7d023d143fb8 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 24 Jul 2025 17:36:53 +0530 Subject: [PATCH 167/366] variants: Automate format change in pins. Signed-off-by: MDin --- .../config/KIT_XMC47_RELAX/pins_arduino.h | 348 +++++++++--------- 1 file changed, 174 insertions(+), 174 deletions(-) diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index 3119e0c6..4979befe 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -426,180 +426,180 @@ Uart Serial(&XMC_UART_0); // On-Board port Uart Serial1(&XMC_UART_1); - // // Three SPI instances possible - // XMC_SPI_t XMC_SPI_0 = { - // .channel = XMC_SPI2_CH0, - // .channel_config = {.baudrate = 20003906U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)8}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)7}, - // .miso_config = - // { - // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // }, - // .input_source = XMC_INPUT_C, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)9}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - // }; - - // XMC_SPI_t XMC_SPI_1 = { - // .channel = XMC_SPI0_CH1, - // .channel_config = {.baudrate = 20003906U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT4_BASE, .pin = (uint8_t)0}, - // .miso_config = - // { - // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // }, - // .input_source = XMC_INPUT_E, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)6}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - // }; - - // XMC_SPI_t XMC_SPI_2 = { - // .channel = XMC_SPI2_CH1, - // .channel_config = {.baudrate = 20003906U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)11}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)12}, - // .miso_config = - // { - // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // }, - // .input_source = XMC_INPUT_D, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - // }; - - // Only two serial objects are possible: Serial and Serial1 so anymore serial interfaces has to - // overwrite/reuse the existing serial objects - // Will overwrite Serial - // XMC_SPI_t XMC_SPI_3 = - //{ - // .channel = XMC_SPI0_CH0, - // .channel_config = { - // .baudrate = 20003906U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE - // }, - // .mosi = { - // .port = (XMC_GPIO_PORT_t*)PORT5_BASE, - // .pin = (uint8_t)1 - // }, - // .mosi_config = { - // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM - // }, - // .miso = { - // .port = (XMC_GPIO_PORT_t*)PORT5_BASE, - // .pin = (uint8_t)0 - // }, - // .miso_config = { - // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // }, - // .input_source = XMC_INPUT_D, - // .sclkout = { - // .port = (XMC_GPIO_PORT_t*)PORT0_BASE, - // .pin = (uint8_t)8 - // }, - // .sclkout_config = { - // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM - // }, - // }; - - // Will overwrite Serial1 - // XMC_SPI_t XMC_SPI_4 = - //{ - // .channel = XMC_SPI1_CH0, - // .channel_config = { - // .baudrate = 20003906U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE - // }, - // .mosi = { - // .port = (XMC_GPIO_PORT_t*)PORT0_BASE, - // .pin = (uint8_t)5 - // }, - // .mosi_config = { - // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM - // }, - // .miso = { - // .port = (XMC_GPIO_PORT_t*)PORT0_BASE, - // .pin = (uint8_t)4 - // }, - // .miso_config = { - // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // }, - // .input_source = XMC_INPUT_A, - // .sclkout = { - // .port = (XMC_GPIO_PORT_t*)PORT0_BASE, - // .pin = (uint8_t)11 - // }, - // .sclkout_config = { - // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM - // }, - //}; - - //Two I2C instances possible - XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)13}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .input_source_dx0 = XMC_INPUT_A, - .input_source_dx1 = XMC_INPUT_B, - .slave_receive_irq_num = (IRQn_Type)91, - .slave_receive_irq_service_request = 1, - .protocol_irq_num = (IRQn_Type)92, - .protocol_irq_service_request = 2}; - XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .input_source_dx0 = XMC_INPUT_B, - .input_source_dx1 = XMC_INPUT_A, - .slave_receive_irq_num = (IRQn_Type)93, - .slave_receive_irq_service_request = 3, - .protocol_irq_num = (IRQn_Type)94, - .protocol_irq_service_request = 4}; +// // Three SPI instances possible +// XMC_SPI_t XMC_SPI_0 = { +// .channel = XMC_SPI2_CH0, +// .channel_config = {.baudrate = 20003906U, +// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, +// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, +// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, +// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)8}, +// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)7}, +// .miso_config = +// { +// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// }, +// .input_source = XMC_INPUT_C, +// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)9}, +// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// }; + +// XMC_SPI_t XMC_SPI_1 = { +// .channel = XMC_SPI0_CH1, +// .channel_config = {.baudrate = 20003906U, +// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, +// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, +// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, +// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, +// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// .miso = {.port = (XMC_GPIO_PORT_t *)PORT4_BASE, .pin = (uint8_t)0}, +// .miso_config = +// { +// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// }, +// .input_source = XMC_INPUT_E, +// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)6}, +// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// }; + +// XMC_SPI_t XMC_SPI_2 = { +// .channel = XMC_SPI2_CH1, +// .channel_config = {.baudrate = 20003906U, +// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, +// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, +// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, +// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)11}, +// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)12}, +// .miso_config = +// { +// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// }, +// .input_source = XMC_INPUT_D, +// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, +// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +// }; + +// Only two serial objects are possible: Serial and Serial1 so anymore serial interfaces has to +// overwrite/reuse the existing serial objects +// Will overwrite Serial +// XMC_SPI_t XMC_SPI_3 = +//{ +// .channel = XMC_SPI0_CH0, +// .channel_config = { +// .baudrate = 20003906U, +// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, +// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, +// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE +// }, +// .mosi = { +// .port = (XMC_GPIO_PORT_t*)PORT5_BASE, +// .pin = (uint8_t)1 +// }, +// .mosi_config = { +// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM +// }, +// .miso = { +// .port = (XMC_GPIO_PORT_t*)PORT5_BASE, +// .pin = (uint8_t)0 +// }, +// .miso_config = { +// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// }, +// .input_source = XMC_INPUT_D, +// .sclkout = { +// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, +// .pin = (uint8_t)8 +// }, +// .sclkout_config = { +// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM +// }, +// }; + +// Will overwrite Serial1 +// XMC_SPI_t XMC_SPI_4 = +//{ +// .channel = XMC_SPI1_CH0, +// .channel_config = { +// .baudrate = 20003906U, +// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, +// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, +// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE +// }, +// .mosi = { +// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, +// .pin = (uint8_t)5 +// }, +// .mosi_config = { +// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM +// }, +// .miso = { +// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, +// .pin = (uint8_t)4 +// }, +// .miso_config = { +// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, +// }, +// .input_source = XMC_INPUT_A, +// .sclkout = { +// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, +// .pin = (uint8_t)11 +// }, +// .sclkout_config = { +// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, +// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, +// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM +// }, +//}; + +// Two I2C instances possible +XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)13}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .input_source_dx0 = XMC_INPUT_A, + .input_source_dx1 = XMC_INPUT_B, + .slave_receive_irq_num = (IRQn_Type)91, + .slave_receive_irq_service_request = 1, + .protocol_irq_num = (IRQn_Type)92, + .protocol_irq_service_request = 2}; +XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C1_CH0, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .input_source_dx0 = XMC_INPUT_B, + .input_source_dx1 = XMC_INPUT_A, + .slave_receive_irq_num = (IRQn_Type)93, + .slave_receive_irq_service_request = 3, + .protocol_irq_num = (IRQn_Type)94, + .protocol_irq_service_request = 4}; // // XMC_I2S instance // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, From eab013c262745f46e81081c36e841f40322ddfd9 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 25 Jul 2025 16:19:32 +0200 Subject: [PATCH 168/366] cores/xmc/: Add setAnalogWriteFrequency function. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 11 ++++++ cores/xmc/wiring_analog.cpp | 75 +++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 94965cd6..a79e08cb 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -338,6 +338,17 @@ extern void analogReadResolution(int res); * \param res */ extern void analogWriteResolution(int res); + +/* + * \brief Sets the frequency for analogWrite PWM. + * \note Default value is 490 Hz + * + * \param pin + * \param frequency in Hz + * + * \return 0 = success, -1 = invalid frequency, -2 = wrong pin + */ +extern int16_t setAnalogWriteFrequency(pin_size_t pinNumber, uint32_t frequency); //**************************************************************************** // @Arduino Core Includes //**************************************************************************** diff --git a/cores/xmc/wiring_analog.cpp b/cores/xmc/wiring_analog.cpp index ed09074d..d073c6ee 100644 --- a/cores/xmc/wiring_analog.cpp +++ b/cores/xmc/wiring_analog.cpp @@ -277,6 +277,81 @@ int analogRead(pin_size_t pinNumber) { return value; } +//**************************************************************************** +// @Function: setAnalogWriteFrequency +// @Brief: Sets the frequency for analogWrite PWM. +// @Param: pin - The pin number +// @Param: frequency - Frequency in Hz +// @Return: -2 if invalid pin, -1 if invalid frequency, 0 on success +//**************************************************************************** +int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { + // Constants for return codes + constexpr int16_t SUCCESS = 0; + constexpr int16_t ERROR_INVALID_FREQUENCY = -1; + constexpr int16_t ERROR_NO_PWM_RESOURCE = -2; + constexpr uint32_t MAX_16BIT_TIMER_COUNT = 65536U; + + // Variables for computation + XMC_CCU4_SLICE_PRESCALER_t prescaler = XMC_CCU4_SLICE_PRESCALER_1; + uint16_t period; + int16_t resource; + + // Check if frequency is within a valid range + if (frequency >= PCLK) { + return ERROR_INVALID_FREQUENCY; // Frequency too high, cannot configure + } + + // Calculate prescaler value + while (prescaler <= XMC_CCU4_SLICE_PRESCALER_32768) { + if (frequency > (PCLK / ((1U << prescaler) * MAX_16BIT_TIMER_COUNT))) { + break; + } + prescaler = static_cast(static_cast(prescaler) + 1); + } + + // Calculate timer period for 16-bit resolution + period = (PCLK / ((1U << prescaler) * frequency)) - 1; + + // Attempt to configure PWM4 + resource = scan_map_table(mapping_pin_PWM4, pin); + if (resource >= 0) { + XMC_PWM4_t *pwm4 = &mapping_pwm4[resource]; + + pwm4->prescaler = static_cast(prescaler); + pwm4->period_timer_val = period; + + // If PWM is already enabled, disable and restart it + if (pwm4->enabled == ENABLED) { + pwm4->enabled = DISABLED; + XMC_CCU4_SLICE_StartTimer(pwm4->slice); + } + + return SUCCESS; // Configuration successful + } + +#if defined(CCU8V2) || defined(CCU8V1) + // Attempt to configure PWM8 + resource = scan_map_table(mapping_pin_PWM8, pin); + if (resource >= 0) { + XMC_PWM8_t *pwm8 = &mapping_pwm8[resource]; + + pwm8->prescaler = static_cast(prescaler); + pwm8->period_timer_val = period; + + // If PWM is already enabled, disable and restart it + if (pwm8->enabled == ENABLED) { + pwm8->enabled = DISABLED; + XMC_CCU8_SLICE_StartTimer(pwm8->slice); + } + + return SUCCESS; // Configuration successful + } +#endif + + // No matching PWM resource found + return ERROR_NO_PWM_RESOURCE; +} + //**************************************************************************** // END OF FILE //**************************************************************************** From 4ff462ca445aa17123e89fed3384562416a4e239 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 29 Jul 2025 10:24:42 +0200 Subject: [PATCH 169/366] cores/xmc/: Set frequency after pwm start. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 2 ++ cores/xmc/wiring_analog.cpp | 24 +++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index a79e08cb..24f5ae2a 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -136,6 +136,7 @@ typedef struct { XMC_GPIO_MODE_t port_mode; XMC_CCU4_SLICE_PRESCALER_t prescaler; uint32_t period_timer_val; + int d_cycle_val; bool enabled; } XMC_PWM4_t; @@ -152,6 +153,7 @@ typedef struct { XMC_GPIO_MODE_t port_mode; XMC_CCU8_SLICE_PRESCALER_t prescaler; uint32_t period_timer_val; + int d_cycle_val; bool enabled; } XMC_PWM8_t; #endif diff --git a/cores/xmc/wiring_analog.cpp b/cores/xmc/wiring_analog.cpp index d073c6ee..7eb6e352 100644 --- a/cores/xmc/wiring_analog.cpp +++ b/cores/xmc/wiring_analog.cpp @@ -100,7 +100,7 @@ void analogWrite(pin_size_t pinNumber, int value) { XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); XMC_CCU4_SLICE_StartTimer(pwm4->slice); - + pwm4->d_cycle_val = value; return; } #if defined(CCU8V2) || defined(CCU8V1) @@ -129,6 +129,7 @@ void analogWrite(pin_size_t pinNumber, int value) { XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); XMC_CCU8_SLICE_StartTimer(pwm8->slice); + pwm8->d_cycle_val = value; return; } #endif @@ -297,7 +298,7 @@ int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { int16_t resource; // Check if frequency is within a valid range - if (frequency >= PCLK) { + if (frequency == 0 || frequency >= PCLK) { return ERROR_INVALID_FREQUENCY; // Frequency too high, cannot configure } @@ -309,7 +310,7 @@ int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { prescaler = static_cast(static_cast(prescaler) + 1); } - // Calculate timer period for 16-bit resolution + // Calculate timer period period = (PCLK / ((1U << prescaler) * frequency)) - 1; // Attempt to configure PWM4 @@ -321,9 +322,12 @@ int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { pwm4->period_timer_val = period; // If PWM is already enabled, disable and restart it - if (pwm4->enabled == ENABLED) { - pwm4->enabled = DISABLED; - XMC_CCU4_SLICE_StartTimer(pwm4->slice); + if (pwm4->enabled) { + // Disable to reset the compare value + pwm4->enabled = false; + XMC_CCU4_SLICE_StopClearTimer(pwm4->slice); + // Reconfigure and restart PWM + analogWrite(pin, pwm4->d_cycle_val); // Use the saved duty cycle value } return SUCCESS; // Configuration successful @@ -339,9 +343,11 @@ int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { pwm8->period_timer_val = period; // If PWM is already enabled, disable and restart it - if (pwm8->enabled == ENABLED) { - pwm8->enabled = DISABLED; - XMC_CCU8_SLICE_StartTimer(pwm8->slice); + if (pwm8->enabled) { + pwm8->enabled = false; + XMC_CCU8_SLICE_StopClearTimer(pwm8->slice); + // Reconfigure and restart PWM + analogWrite(pin, pwm8->d_cycle_val); // Use the saved duty cycle value } return SUCCESS; // Configuration successful From f47f2aaf62da7714166acc47b245b7bc01e61602 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 29 Jul 2025 10:25:46 +0200 Subject: [PATCH 170/366] variants/: Adjust all pin config for change of pwm. Signed-off-by: zhanglinjing --- .../config/KIT_XMC11_BOOT_001/pins_arduino.h | 14 +++--- .../KIT_XMC_2GO_XMC1100_V1/pins_arduino.h | 8 ++-- .../config/KIT_XMC13_BOOT_001/pins_arduino.h | 8 ++-- .../config/KIT_XMC1400_ARDUINO/pins_arduino.h | 12 ++--- .../config/KIT_XMC14_2GO/pins_arduino.h | 10 ++-- .../KIT_XMC_PLT2GO_XMC4200/pins_arduino.h | 14 +++--- .../KIT_XMC_PLT2GO_XMC4400/pins_arduino.h | 32 ++++++------- .../config/KIT_XMC47_RELAX/pins_arduino.h | 46 +++++++++---------- 8 files changed, 72 insertions(+), 72 deletions(-) mode change 100755 => 100644 variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index 46319914..fdcd85f4 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -192,19 +192,19 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, {4, 1}, {6, 2}, {9, 3}, /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC40, 0, mapping_port_pin[3], P0_0_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P0.0 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 3 P0.0 {CCU40, CCU40_CC41, 1, mapping_port_pin[4], P0_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 4 P0.1 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 4 P0.1 {CCU40, CCU40_CC43, 3, mapping_port_pin[6], P0_3_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 6 P0.3 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 6 P0.3 {CCU40, CCU40_CC42, 2, mapping_port_pin[9], P0_8_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 9 P0.8 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 9 P0.8 {CCU40, CCU40_CC43, 3, mapping_port_pin[10], P0_9_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 10 P0.9 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 10 P0.9 {CCU40, CCU40_CC41, 1, mapping_port_pin[11], P1_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 11 P1.1 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 11 P1.1 {CCU40, CCU40_CC42, 2, mapping_port_pin[20], P2_10_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false} // PWM disabled 20 P2.10 + PWM4_TIMER_PERIOD, 0, false} // PWM disabled 20 P2.10 }; const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index efcf47c6..fd1d3d1d 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -147,13 +147,13 @@ const uint8_t mapping_pin_PWM4[][2] = {{8, 0}, {1, 1}, {2, 2}, {3, 3}, {255, 255 /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC40, 0, mapping_port_pin[8], P0_5_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 8 P0.5 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 8 P0.5 {CCU40, CCU40_CC41, 1, mapping_port_pin[1], P0_7_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 1 P0.7 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 1 P0.7 {CCU40, CCU40_CC42, 2, mapping_port_pin[2], P0_8_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 2 P0.8 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 2 P0.8 {CCU40, CCU40_CC43, 3, mapping_port_pin[3], P0_9_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false} // PWM disabled 3 P0.9 + PWM4_TIMER_PERIOD, 0, false} // PWM disabled 3 P0.9 }; const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); diff --git a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h old mode 100755 new mode 100644 index 1aec712b..bdc09d61 --- a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h +++ b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h @@ -180,9 +180,9 @@ const uint8_t mapping_pin_PWM4[][2] = {{31, 0}, {26, 1}, {255, 255}}; /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC41, 1, mapping_port_pin[31], P0_4_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 31 P0.4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 31 P0.4 {CCU40, CCU40_CC42, 2, mapping_port_pin[26], P0_2_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false} // PWM disabled 26 P0.2 + PWM4_TIMER_PERIOD, 0, false} // PWM disabled 26 P0.2 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -192,10 +192,10 @@ const uint8_t mapping_pin_PWM8[][2] = {{32, 0}, {33, 1}, {255, 255}}; /* Configurations of PWM channels for CCU8 type */ XMC_PWM8_t mapping_pwm8[] = { {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[32], - P0_5_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_5_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 32 P0.5 {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[33], - P0_3_AF_CCU80_OUT03, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_3_AF_CCU80_OUT03, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false} // PWM disabled 33 P0.3 }; const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index 2475a163..f80ddcd7 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -185,17 +185,17 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, {4, 1}, {6, 2}, {9, 3}, /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC41, 1, mapping_port_pin[3], P1_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 4 {CCU40, CCU40_CC40, 0, mapping_port_pin[4], P1_0_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 4 {CCU41, CCU41_CC40, 0, mapping_port_pin[6], P0_6_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 4 {CCU40, CCU40_CC41, 1, mapping_port_pin[9], P0_7_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 4 {CCU40, CCU40_CC41, 1, mapping_port_pin[10], P0_4_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 4 {CCU40, CCU40_CC41, 1, mapping_port_pin[11], P0_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false} // PWM disabled 4 + PWM4_TIMER_PERIOD, 0, false} // PWM disabled 4 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 78631adb..a8006002 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -186,15 +186,15 @@ const uint8_t mapping_pin_PWM4[][2] = {{1, 0}, {2, 1}, {3, 2}, {8, 3}, {9, 4}, { /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC41, 1, mapping_port_pin[1], P0_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 1 P0.1 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 1 P0.1 {CCU40, CCU40_CC43, 3, mapping_port_pin[2], P0_3_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 2 P0.3 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 2 P0.3 {CCU40, CCU40_CC41, 1, mapping_port_pin[3], P0_4_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P0.4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 3 P0.4 {CCU40, CCU40_CC40, 0, mapping_port_pin[8], P0_5_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 8 P0.5 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 8 P0.5 {CCU41, CCU41_CC40, 0, mapping_port_pin[9], P1_4_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false} // PWM disabled 9 P1.4 + PWM4_TIMER_PERIOD, 0, false} // PWM disabled 9 P1.4 }; const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); diff --git a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h index da5b88c1..823c798d 100644 --- a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h +++ b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h @@ -183,18 +183,18 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU41, CCU41_CC43, 3, mapping_port_pin[3], P2_2_AF_CCU41_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P2.2 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 3 P2.2 {CCU41, CCU41_CC42, 2, mapping_port_pin[5], P2_3_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 5 P2.3 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 5 P2.3 {CCU41, CCU41_CC41, 1, mapping_port_pin[6], P2_4_AF_CCU41_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 6 P2.4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 6 P2.4 // additional pwm outputs starting here {CCU40, CCU40_CC42, 2, mapping_port_pin[22], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 22 P1.1 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 22 P1.1 {CCU40, CCU40_CC41, 1, mapping_port_pin[23], P1_2_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 23 P1.2 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 23 P1.2 {CCU40, CCU40_CC40, 0, mapping_port_pin[24], P1_3_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false} // PWM disabled 24 P1.3 + PWM4_TIMER_PERIOD, 0, false} // PWM disabled 24 P1.3 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -205,7 +205,7 @@ const uint8_t mapping_pin_PWM8[][2] = {{9, 0}, // PWM3 /* Configurations of PWM channels for CCU8 type */ XMC_PWM8_t mapping_pwm8[] = { {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], - P0_11_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_11_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false} // PWM disabled 9 P0.11 }; const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); diff --git a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h index b90606c0..c1d00ca0 100644 --- a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h +++ b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h @@ -226,19 +226,19 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU42, CCU42_CC40, 0, mapping_port_pin[3], P3_6_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P3.6 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 3 P3.6 {CCU42, CCU42_CC43, 3, mapping_port_pin[5], P3_3_AF_CCU42_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 5 P3.3 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 5 P3.3 {CCU42, CCU42_CC42, 2, mapping_port_pin[6], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 6 P3.4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 6 P3.4 {CCU41, CCU41_CC40, 0, mapping_port_pin[14], P2_5_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 14 P2.5 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 14 P2.5 {CCU41, CCU41_CC41, 1, mapping_port_pin[26], P2_4_AF_CCU41_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 26 P2.4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 26 P2.4 {CCU41, CCU41_CC42, 2, mapping_port_pin[27], P2_3_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 27 P2.3 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 27 P2.3 {CCU41, CCU41_CC43, 3, mapping_port_pin[28], P2_2_AF_CCU41_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 28 P2.2 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 28 P2.2 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -257,32 +257,32 @@ const uint8_t mapping_pin_PWM8[][2] = {{9, 0}, // PWM3 /* Configurations of PWM channels for CCU8 type */ XMC_PWM8_t mapping_pwm8[] = { {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], - P0_11_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_11_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 9 P0.11 {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[10], - P0_2_AF_CCU80_OUT01, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_2_AF_CCU80_OUT01, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 10 P0.2 // additional pwm outputs starting here {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[25], - P2_8_AF_CCU80_OUT32, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P2_8_AF_CCU80_OUT32, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 25 P2.8 {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[29], - P2_0_AF_CCU81_OUT21, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P2_0_AF_CCU81_OUT21, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 29 P2.0 {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[30], - P2_6_AF_CCU80_OUT13, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P2_6_AF_CCU80_OUT13, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 30 P2.6 {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[45], - P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 45 P5.7 {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[46], - P2_7_AF_CCU80_OUT03, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P2_7_AF_CCU80_OUT03, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 46 P2.7 {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[48], - P2_9_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P2_9_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 48 P2.9 {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[67], - P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false} // PWM disabled 67 P0.9 }; diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index 4979befe..01a34e84 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -284,27 +284,27 @@ const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 /* Configurations of PWM channels for CCU4 type */ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC42, 2, mapping_port_pin[3], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 3 P1.1 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 3 P1.1 {CCU41, CCU41_CC40, 0, mapping_port_pin[10], P3_10_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 10 P3.10 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 10 P3.10 {CCU41, CCU41_CC42, 2, mapping_port_pin[11], P3_8_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 11 P3.8 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 11 P3.8 {CCU40, CCU40_CC40, 0, mapping_port_pin[93], P0_15_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 93 P0.15 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 93 P0.15 {CCU40, CCU40_CC41, 1, mapping_port_pin[70], P0_14_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 70 P0.14 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 70 P0.14 {CCU40, CCU40_CC43, 3, mapping_port_pin[94], P0_12_AF_CCU40_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 94 P0.12 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 94 P0.12 {CCU42, CCU42_CC40, 0, mapping_port_pin[61], P3_0_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 61 P3.0 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 61 P3.0 {CCU42, CCU42_CC42, 2, mapping_port_pin[34], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 34 P3.4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 34 P3.4 {CCU43, CCU43_CC40, 0, mapping_port_pin[76], P6_5_AF_CCU43_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 76 P6.5 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 76 P6.5 {CCU43, CCU43_CC41, 1, mapping_port_pin[88], P6_4_AF_CCU43_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false}, // PWM disabled 88 P6.4 + PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 88 P6.4 {CCU43, CCU43_CC43, 3, mapping_port_pin[89], P6_2_AF_CCU43_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, false} // PWM disabled 89 P6.2 + PWM4_TIMER_PERIOD, 0, false} // PWM disabled 89 P6.2 }; const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); @@ -326,40 +326,40 @@ const uint8_t mapping_pin_PWM8[][2] = {{5, 0}, // PWM1 /* Configurations of PWM channels for CCU8 type */ XMC_PWM8_t mapping_pwm8[] = { {CCU81, CCU81_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[5], - P2_12_AF_CCU81_OUT33, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P2_12_AF_CCU81_OUT33, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 5 P2.12 {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[6], - P2_11_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P2_11_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 6 P2.11 {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], - P1_11_AF_CCU81_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P1_11_AF_CCU81_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 9 P1.11 {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[51], - P5_11_AF_CCU80_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P5_11_AF_CCU80_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 51 P5.11 {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[37], - P0_1_AF_CCU80_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_1_AF_CCU80_OUT11, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 37 P0.1 {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[62], - P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 62 P0.9 {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[36], - P0_3_AF_CCU80_OUT20, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_3_AF_CCU80_OUT20, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 36 P0.3 {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[66], - P0_6_AF_CCU80_OUT30, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P0_6_AF_CCU80_OUT30, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 66 P0.6 {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[77], - P1_15_AF_CCU81_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P1_15_AF_CCU81_OUT00, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 77 P1.15 {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[81], - P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 81 P5.7 {CCU81, CCU81_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[80], - P5_5_AF_CCU81_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P5_5_AF_CCU81_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false}, // PWM disabled 80 P5.5 {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[79], - P5_3_AF_CCU81_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + P5_3_AF_CCU81_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, false} // PWM disabled 79 P5.3 }; const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); From 9fac57aff77be6fcb46bec863c1e94eac2e82291 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 29 Jul 2025 16:27:26 +0200 Subject: [PATCH 171/366] cores/xmc: Improvements of setAnalogWriteFrequency. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 2 +- cores/xmc/wiring_analog.cpp | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 24f5ae2a..3a52215c 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -350,7 +350,7 @@ extern void analogWriteResolution(int res); * * \return 0 = success, -1 = invalid frequency, -2 = wrong pin */ -extern int16_t setAnalogWriteFrequency(pin_size_t pinNumber, uint32_t frequency); +extern int16_t setAnalogWriteFrequency(pin_size_t pin, uint32_t frequency); //**************************************************************************** // @Arduino Core Includes //**************************************************************************** diff --git a/cores/xmc/wiring_analog.cpp b/cores/xmc/wiring_analog.cpp index 7eb6e352..1574ce9a 100644 --- a/cores/xmc/wiring_analog.cpp +++ b/cores/xmc/wiring_analog.cpp @@ -285,7 +285,7 @@ int analogRead(pin_size_t pinNumber) { // @Param: frequency - Frequency in Hz // @Return: -2 if invalid pin, -1 if invalid frequency, 0 on success //**************************************************************************** -int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { +int16_t setAnalogWriteFrequency(pin_size_t pin, uint32_t frequency) { // Constants for return codes constexpr int16_t SUCCESS = 0; constexpr int16_t ERROR_INVALID_FREQUENCY = -1; @@ -293,7 +293,7 @@ int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { constexpr uint32_t MAX_16BIT_TIMER_COUNT = 65536U; // Variables for computation - XMC_CCU4_SLICE_PRESCALER_t prescaler = XMC_CCU4_SLICE_PRESCALER_1; + uint16_t prescaler = 0U; uint16_t period; int16_t resource; @@ -303,11 +303,12 @@ int16_t setAnalogWriteFrequency(uint8_t pin, uint32_t frequency) { } // Calculate prescaler value - while (prescaler <= XMC_CCU4_SLICE_PRESCALER_32768) { + while (prescaler <= + XMC_CCU4_SLICE_PRESCALER_32768) { // As same as XMC_CCU8_SLICE_PRESCALER_32768 if (frequency > (PCLK / ((1U << prescaler) * MAX_16BIT_TIMER_COUNT))) { break; } - prescaler = static_cast(static_cast(prescaler) + 1); + prescaler++; } // Calculate timer period From e38373bf68b08d00d95fb78a376a732b967a1ddf Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 11 Jul 2025 15:32:03 +0200 Subject: [PATCH 172/366] ci-matrix-config.yml: Add all boards to build check. Signed-off-by: zhanglinjing --- ci-matrix-config.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 8ba17477..fcded85d 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -29,7 +29,14 @@ sketch: - extras/arduino-examples/examples/05.Control/ForLoopIteration/ForLoopIteration.ino fqbn: + - infineon:xmc:kit_xmc11_boot_001 + - infineon:xmc:kit_xmc13_boot_001 + - infineon:xmc:kit_xmc1400_arduino + - infineon:xmc:kit_xmc14_2go - infineon:xmc:kit_xmc47_relax + - infineon:xmc:kit_xmc_2go_xmc1100_v1 + - infineon:xmc:kit_xmc_plt2go_xmc4200 + - infineon:xmc:kit_xmc_plt2go_xmc4400 # sketch: # - libraries/LED From ebe0560163880dedb79369de1744ffd2e29ba223 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 14 Jul 2025 18:03:18 +0200 Subject: [PATCH 173/366] variants/: Update KIT_XMC11_BOOT_001 pins_arduino.h. Signed-off-by: zhanglinjing --- .../config/KIT_XMC11_BOOT_001/pins_arduino.h | 140 +++++++++--------- 1 file changed, 69 insertions(+), 71 deletions(-) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index fdcd85f4..b89f84fd 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -33,7 +33,7 @@ // XMC_BOARD for stringifying into serial or other text outputs/logs // Note the actual name XMC and number MUST have a character between // to avoid issues with other defined macros e.g. XMC1100 -#define XMC_BOARD XMC 1100 Boot Kit +#define XMC_BOARD KIT_XMC11_BOOT_001 /* On board LED is ON when digital output is 0, LOW, False, OFF */ #define XMC_LED_ON 0 @@ -247,72 +247,74 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0); - -// SPI instance -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI0_CH0, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_C, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }}; - -// I2C instance -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .input_source_dx0 = XMC_INPUT_F, - .input_source_dx1 = XMC_INPUT_E, - .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - .slave_receive_irq_service_request = 4, - .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - .protocol_irq_service_request = 5}; - -// XMC_I2S instance -XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .protocol_irq_num = (IRQn_Type)USIC0_2_IRQn, - .protocol_irq_service_request = 2}; +Uart Serial(&XMC_UART_0); + + // SPI instance + // XMC_SPI_t XMC_SPI_0 = { + // .channel = XMC_SPI0_CH0, + // .channel_config = {.baudrate = 15984375U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, + // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + // .input_source = XMC_INPUT_C, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }}; + + // // I2C instance + // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .input_source_dx0 = XMC_INPUT_F, + // .input_source_dx1 = XMC_INPUT_E, + // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + // .slave_receive_irq_service_request = 4, + // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + // .protocol_irq_service_request = 5}; + + // // XMC_I2S instance + // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .input_hysteresis = + // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = + // XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + // .input_hysteresis = + // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = + // XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .protocol_irq_num = (IRQn_Type)USIC0_2_IRQn, + // .protocol_irq_service_request = 2}; // Serial Interrupt and event handling #ifdef __cplusplus @@ -334,8 +336,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN */ -#ifdef __cplusplus -extern HardwareSerial Serial; -#endif /* cplusplus */ - #endif // PINS_ARDUINO_H_ From 3e6edc00643f9fd81c13aeec18072abf766e981d Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 15 Jul 2025 11:08:31 +0200 Subject: [PATCH 174/366] variants/: Fix serial compile error and adapt the board name. Signed-off-by: zhanglinjing --- .../config/KIT_XMC11_BOOT_001/pins_arduino.h | 5 +- .../KIT_XMC_2GO_XMC1100_V1/pins_arduino.h | 184 +++++++++--------- .../config/KIT_XMC13_BOOT_001/pins_arduino.h | 104 +++++----- .../config/KIT_XMC1400_ARDUINO/pins_arduino.h | 106 +++++----- .../config/KIT_XMC14_2GO/pins_arduino.h | 184 +++++++++--------- .../KIT_XMC_PLT2GO_XMC4200/pins_arduino.h | 14 +- .../KIT_XMC_PLT2GO_XMC4400/pins_arduino.h | 118 ++++++----- .../config/KIT_XMC47_RELAX/pins_arduino.h | 2 +- 8 files changed, 351 insertions(+), 366 deletions(-) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index b89f84fd..bce2b133 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -18,6 +18,9 @@ Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Copyright (c) 2018 Infineon Technologies AG + This file has been modified for the XMC microcontroller series. */ #ifndef PINS_ARDUINO_H_ #define PINS_ARDUINO_H_ @@ -336,4 +339,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN */ -#endif // PINS_ARDUINO_H_ +#endif /* PINS_ARDUINO_H_ */ diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index fd1d3d1d..c374b405 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -36,7 +36,7 @@ // XMC_BOARD for stringifying into serial or other text outputs/logs // Note the actual name XMC and number MUST have a character between // to avoid issues with other defined macros e.g. XMC1100 -#define XMC_BOARD XMC 1100 XMC2GO +#define XMC_BOARD KIT_XMC_2GO_XMC1100_V1 /* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ #define XMC_LED_ON 1 @@ -199,93 +199,95 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0); - -// SPI instance -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI0_CH1, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)6}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_C, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)8}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }}; - -// Two I2C instances possible -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .input_source_dx0 = XMC_INPUT_F, - .input_source_dx1 = XMC_INPUT_E, - .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - .slave_receive_irq_service_request = 4, - .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - .protocol_irq_service_request = 5}; - -XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C0_CH0, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)15}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)14}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .input_source_dx0 = XMC_INPUT_B, - .input_source_dx1 = XMC_INPUT_A, - .slave_receive_irq_num = (IRQn_Type)USIC0_2_IRQn, - .slave_receive_irq_service_request = 2, - .protocol_irq_num = (IRQn_Type)USIC0_3_IRQn, - .protocol_irq_service_request = 3}; - -// XMC_I2S instance -XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .protocol_irq_num = (IRQn_Type)USIC0_2_IRQn, - .protocol_irq_service_request = 2}; +Uart Serial(&XMC_UART_0); + + // SPI instance + // XMC_SPI_t XMC_SPI_0 = { + // .channel = XMC_SPI0_CH1, + // .channel_config = {.baudrate = 15984375U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)6}, + // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + // .input_source = XMC_INPUT_C, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)8}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }}; + + // // Two I2C instances possible + // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .input_source_dx0 = XMC_INPUT_F, + // .input_source_dx1 = XMC_INPUT_E, + // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + // .slave_receive_irq_service_request = 4, + // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + // .protocol_irq_service_request = 5}; + + // XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C0_CH0, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)15}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)14}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .input_source_dx0 = XMC_INPUT_B, + // .input_source_dx1 = XMC_INPUT_A, + // .slave_receive_irq_num = (IRQn_Type)USIC0_2_IRQn, + // .slave_receive_irq_service_request = 2, + // .protocol_irq_num = (IRQn_Type)USIC0_3_IRQn, + // .protocol_irq_service_request = 3}; + + // // XMC_I2S instance + // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .input_hysteresis = + // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = + // XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + // .input_hysteresis = + // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = + // XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .protocol_irq_num = (IRQn_Type)USIC0_2_IRQn, + // .protocol_irq_service_request = 2}; // Serial Interrupt and event handling #ifdef __cplusplus @@ -307,8 +309,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN */ -#ifdef __cplusplus -extern HardwareSerial Serial; -#endif /* cplusplus */ - -#endif // PINS_ARDUINO_H_ +#endif /* PINS_ARDUINO_H_ */ \ No newline at end of file diff --git a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h index bdc09d61..b4b304cc 100644 --- a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h +++ b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h @@ -5,7 +5,7 @@ Copyright (c) 2007 David A. Mellis This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public< + modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. @@ -36,7 +36,7 @@ // XMC_BOARD for stringifying into serial or other text outputs/logs // Note the actual name XMC and number MUST have a character between // to avoid issues with other defined macros e.g. XMC1300 -#define XMC_BOARD XMC 1300 Boot Kit +#define XMC_BOARD KIT_XMC13_BOOT_001 /* On board LED is ON when digital output is 0, LOW, False, OFF */ #define XMC_LED_ON 0 @@ -253,53 +253,53 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0); - -// SPI instance -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI0_CH0, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_C, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }}; - -// I2C instance -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .input_source_dx0 = XMC_INPUT_F, - .input_source_dx1 = XMC_INPUT_E, - .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - .slave_receive_irq_service_request = 4, - .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - .protocol_irq_service_request = 5}; +Uart Serial(&XMC_UART_0); + + // // SPI instance + // XMC_SPI_t XMC_SPI_0 = { + // .channel = XMC_SPI0_CH0, + // .channel_config = {.baudrate = 15984375U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, + // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + // .input_source = XMC_INPUT_C, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }}; + + // // I2C instance + // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .input_source_dx0 = XMC_INPUT_F, + // .input_source_dx1 = XMC_INPUT_E, + // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + // .slave_receive_irq_service_request = 4, + // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + // .protocol_irq_service_request = 5}; // Serial Interrupt and event handling #ifdef __cplusplus @@ -321,8 +321,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN */ -#ifdef __cplusplus -extern HardwareSerial Serial; -#endif /* cplusplus */ - -#endif // PINS_ARDUINO_H_ +#endif /* PINS_ARDUINO_H_ */ diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index f80ddcd7..5540d77b 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -18,6 +18,9 @@ Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Copyright (c) 2018 Infineon Technologies AG + This file has been modified for the XMC microcontroller series. */ #ifndef PINS_ARDUINO_H_ #define PINS_ARDUINO_H_ @@ -33,8 +36,7 @@ // XMC_BOARD for stringifying into serial or other text outputs/logs // Note the actual name XMC and number MUST have a character between // to avoid issues with other defined macros e.g. XMC1400 -#define XMC_BOARD XMC 1400 Kit for Arduino - +#define XMC_BOARD KIT_XMC1400_ARDUINO /* On board LED is ON when digital output is 0, LOW, FALSE, OFF */ #define XMC_LED_ON 0 @@ -252,53 +254,53 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0); - -// SPI instance -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI1_CH1, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)1}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_A, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)3}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }}; - -// I2C instance -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .input_source_dx0 = XMC_INPUT_F, - .input_source_dx1 = XMC_INPUT_E, - .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - .slave_receive_irq_service_request = 4, - .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - .protocol_irq_service_request = 5}; +Uart Serial(&XMC_UART_0); + + // // SPI instance + // XMC_SPI_t XMC_SPI_0 = { + // .channel = XMC_SPI1_CH1, + // .channel_config = {.baudrate = 15984375U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)1}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, + // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + // .input_source = XMC_INPUT_A, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)3}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }}; + + // // I2C instance + // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .input_source_dx0 = XMC_INPUT_F, + // .input_source_dx1 = XMC_INPUT_E, + // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + // .slave_receive_irq_service_request = 4, + // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + // .protocol_irq_service_request = 5}; // Serial Interrupt and event handling #ifdef __cplusplus @@ -320,8 +322,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN */ -#ifdef __cplusplus -extern HardwareSerial Serial; -#endif /* cplusplus */ - -#endif // PINS_ARDUINO_H_ +#endif /* PINS_ARDUINO_H_ */ diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index a8006002..974b79e7 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -36,7 +36,7 @@ // XMC_BOARD for stringifying into serial or other text outputs/logs // Note the actual name XMC and number MUST have a character between // to avoid issues with other defined macros e.g. XMC1100 -#define XMC_BOARD XMC 1400 XMC2GO +#define XMC_BOARD KIT_XMC14_2GO /* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ #define XMC_LED_ON 1 @@ -254,93 +254,95 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -HardwareSerial Serial(&XMC_UART_0); - -// SPI instance -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI1_CH1, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)1}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_A, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)3}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }}; - -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .input_source_dx0 = XMC_INPUT_F, - .input_source_dx1 = XMC_INPUT_E, - .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - .slave_receive_irq_service_request = 4, - .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - .protocol_irq_service_request = 5}; - -XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - }, - .protocol_irq_num = (IRQn_Type)USIC1_2_IRQn, - .protocol_irq_service_request = 2, - .protocol_irq_source = XMC_SCU_IRQCTRL_USIC1_SR2_IRQ11}; - - // XMC CAN instance - #ifdef CAN_xmc -XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE0, - .can_node_num = XMC_NODE_NUM_0, - .can_clock = XMC_CAN_CANCLKSRC_MCLK, - .can_frequency = (uint32_t)48000000, - .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - .rx_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, - .tx_config = - { - .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, - }, - .node_input = CAN_NODE0_RXD_P1_1, - .irq_num = CAN0_3_IRQn, - .irq_service_request = 3, - .irq_source = XMC_SCU_IRQCTRL_CAN0_SR3_IRQ7}; - #endif +Uart Serial(&XMC_UART_0); + + // // SPI instance + // XMC_SPI_t XMC_SPI_0 = { + // .channel = XMC_SPI1_CH1, + // .channel_config = {.baudrate = 15984375U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)1}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, + // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + // .input_source = XMC_INPUT_A, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)3}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }}; + + // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .input_source_dx0 = XMC_INPUT_F, + // .input_source_dx1 = XMC_INPUT_E, + // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + // .slave_receive_irq_service_request = 4, + // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + // .protocol_irq_service_request = 5}; + + // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // .input_hysteresis = + // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = + // XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .sclk_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, + // .input_hysteresis = + // XMC_GPIO_INPUT_HYSTERESIS_STANDARD, .output_level = + // XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .wa_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, + // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + // }, + // .protocol_irq_num = (IRQn_Type)USIC1_2_IRQn, + // .protocol_irq_service_request = 2, + // .protocol_irq_source = XMC_SCU_IRQCTRL_USIC1_SR2_IRQ11}; + + // // XMC CAN instance + // #ifdef CAN_xmc + // XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE0, + // .can_node_num = XMC_NODE_NUM_0, + // .can_clock = XMC_CAN_CANCLKSRC_MCLK, + // .can_frequency = (uint32_t)48000000, + // .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, + // .rx_config = + // { + // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // }, + // .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, + // .tx_config = + // { + // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, + // }, + // .node_input = CAN_NODE0_RXD_P1_1, + // .irq_num = CAN0_3_IRQn, + // .irq_service_request = 3, + // .irq_source = XMC_SCU_IRQCTRL_CAN0_SR3_IRQ7}; + // #endif // Serial Interrupt and event handling #ifdef __cplusplus @@ -362,8 +364,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN */ -#ifdef __cplusplus -extern HardwareSerial Serial; -#endif /* cplusplus */ - -#endif // PINS_ARDUINO_H_ +#endif /* PINS_ARDUINO_H_ */ diff --git a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h index 823c798d..c91d9187 100644 --- a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h +++ b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h @@ -33,7 +33,7 @@ //**************************************************************************** // @Defines //**************************************************************************** -#define XMC_BOARD XMC 4200 Platform 2GO +#define XMC_BOARD KIT_XMC_PLT2GO_XMC4200 /* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ #define XMC_LED_ON 1 @@ -269,10 +269,10 @@ XMC_UART_t XMC_UART_1 = { .irq_num = USIC1_0_IRQn, .irq_service_request = 0}; -// Object instantiated of the HardwareSerial class for UART PC (debug) interface -HardwareSerial Serial(&XMC_UART_0); -// Object instantiated of the HardwareSerial class for UART ONBOARD interface -HardwareSerial Serial1(&XMC_UART_1); +// Object instantiated for UART PC (debug) interface +Uart Serial(&XMC_UART_0); +// Object instantiated for UART ONBOARD interface +Uart Serial1(&XMC_UART_1); // SPI instance XMC_SPI_t XMC_SPI_0 = { @@ -358,8 +358,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN*/ -#ifdef __cplusplus -extern HardwareSerial Serial; -extern HardwareSerial Serial1; -#endif /* cplusplus */ #endif diff --git a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h index c1d00ca0..6933b135 100644 --- a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h +++ b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h @@ -33,7 +33,7 @@ //**************************************************************************** // @Defines //**************************************************************************** -#define XMC_BOARD XMC 4400 Platform 2GO +#define XMC_BOARD KIT_XMC_PLT2GO_XMC4400 /* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ #define XMC_LED_ON 1 @@ -355,61 +355,61 @@ XMC_UART_t XMC_UART_0 = { .irq_service_request = 0}; // Single Hardware Serial object for both UART interfaces -HardwareSerial Serial(&XMC_UART_0); - -// SPI instance -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI1_CH1, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)9}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_D, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)8}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -}; - -// I2C instance -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)5}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)0}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .input_source_dx0 = XMC_INPUT_B, - .input_source_dx1 = XMC_INPUT_B, - .slave_receive_irq_num = (IRQn_Type)91, - .slave_receive_irq_service_request = 1, - .protocol_irq_num = (IRQn_Type)92, - .protocol_irq_service_request = 2}; - - // XMC CAN instance - #ifdef CAN_xmc -XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, - .can_node_num = XMC_NODE_NUM_1, - .can_clock = XMC_CAN_CANCLKSRC_FPERI, - .can_frequency = (uint32_t)144000000, - .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, - .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, - .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, - .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, - .node_input = CAN_NODE1_RXD_P1_13, - .irq_num = CAN0_7_IRQn, - .irq_service_request = 7u}; - #endif +UART Serial(&XMC_UART_0); + + // SPI instance + // XMC_SPI_t XMC_SPI_0 = { + // .channel = XMC_SPI1_CH1, + // .channel_config = {.baudrate = 20003906U, + // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)9}, + // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + // .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, + // .miso_config = + // { + // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + // }, + // .input_source = XMC_INPUT_D, + // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)8}, + // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + // }; + + // // I2C instance + // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, + // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)5}, + // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .scl = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)0}, + // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + // .input_source_dx0 = XMC_INPUT_B, + // .input_source_dx1 = XMC_INPUT_B, + // .slave_receive_irq_num = (IRQn_Type)91, + // .slave_receive_irq_service_request = 1, + // .protocol_irq_num = (IRQn_Type)92, + // .protocol_irq_service_request = 2}; + + // // XMC CAN instance + // #ifdef CAN_xmc + // XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, + // .can_node_num = XMC_NODE_NUM_1, + // .can_clock = XMC_CAN_CANCLKSRC_FPERI, + // .can_frequency = (uint32_t)144000000, + // .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, + // .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, + // .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, + // .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, + // .node_input = CAN_NODE1_RXD_P1_13, + // .irq_num = CAN0_7_IRQn, + // .irq_service_request = 7u}; + // #endif // Serial Interrupt and event handling #ifdef __cplusplus @@ -432,8 +432,4 @@ void USIC1_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN*/ -#ifdef __cplusplus -extern HardwareSerial Serial; -#endif /* cplusplus */ - -#endif +#endif /* PINS_ARDUINO_H_ */ diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index 01a34e84..b76ddacf 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -36,7 +36,7 @@ // XMC_BOARD for stringifying into serial or other text outputs/logs // Note the actual name XMC and number MUST have a character between // to avoid issues with other defined macros e.g. XMC1100 -#define XMC_BOARD XMC 4700 Relax Kit +#define XMC_BOARD KIT_XMC47_RELAX /* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ #define XMC_LED_ON 1 From 8184f06a6df43ac4113cbd63395233b9b2630204 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 17:56:05 +0530 Subject: [PATCH 175/366] cores/xmc: Modified Arduino. Signed-off-by: MDin --- cores/xmc/Arduino.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 3a52215c..f67dda9f 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -365,11 +365,11 @@ extern int16_t setAnalogWriteFrequency(pin_size_t pin, uint32_t frequency); // @Infineon Core Includes //**************************************************************************** -// #include "reset.h" +#include "reset.h" #ifdef __cplusplus } // extern "C" - // #include "Tone.h" + #include "Tone.h" // #include "WMath.h" #include "Uart.h" #endif // __cplusplus From e1dab98126b54f8af81871ecff32627e57906e98 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:05:30 +0530 Subject: [PATCH 176/366] cores/xmc: Autoformatted files. Signed-off-by: MDin --- cores/xmc/wiring_time.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cores/xmc/wiring_time.c b/cores/xmc/wiring_time.c index 3c8787c9..1a243ac8 100644 --- a/cores/xmc/wiring_time.c +++ b/cores/xmc/wiring_time.c @@ -126,7 +126,8 @@ findID Get ID of first task from task address // @Project Includes //**************************************************************************** #include "Arduino.h" -// extern int tone_irq_action(int, int16_t); // TODO: not needed for timer yet. +// #include "Tone.h" +extern int tone_irq_action(int, int16_t); // TODO: not needed for timer yet. //**************************************************************************** // @Macros @@ -197,13 +198,13 @@ void wiring_time_init(void) { for (int i = 0; i < _MAX_TASKS; i++) { taskTable[i].param = i; // Preset user parameter to task number // Fill with call back function addresses - if (i < NUM_TONE_PINS) - tasks[i] = NULL; - // tasks[i] = tone_irq_action; // // TODO: Tone callbacks, not needed for timer yet. - else + if (i < NUM_TONE_PINS) { + // tasks[i] = NULL; + tasks[i] = tone_irq_action; // // TODO: Tone callbacks, not needed for timer yet. + } else { tasks[i] = NULL; // Special case delay() ms callback + } } - /* setting of First SW Timer period is always and sub-priority value for XMC4000 devices */ /* setting of priority value for XMC1000 devices */ NVIC_SetPriority(SysTick_IRQn, SYSTIMER_PRIORITY); From 1a1ed75dade6fb8c7051d31bfcfb4bbb70d19529 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:06:01 +0530 Subject: [PATCH 177/366] cores/xmc: Added reset files again. Signed-off-by: MDin --- cores/xmc/reset.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++ cores/xmc/reset.h | 44 +++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 cores/xmc/reset.c create mode 100644 cores/xmc/reset.h diff --git a/cores/xmc/reset.c b/cores/xmc/reset.c new file mode 100644 index 00000000..52c9b393 --- /dev/null +++ b/cores/xmc/reset.c @@ -0,0 +1,70 @@ +/** + * reset.c - Handling the reset for the XMC1100 Boot Kit. + * + * Have a look at the application note/reference manual for more information. + * + * Copyright (c) 2018 Infineon Technologies AG + * + * Redistribution and use in source and binary forms, with or without modification, are permitted + * provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of conditions + * and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions + * and the following disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the copyright holders nor the names of its contributors may be used to + * endorse or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ +#include +#ifdef HAS_GPIO_RESET + #include + #include + +//**************************************************************************** +// @Local Functions +//**************************************************************************** + +void ERU0_0_IRQHandler(void) { + XMC_SCU_RESET_ClearDeviceResetReason(); + XMC_SCU_RESET_AssertMasterReset(); +} + +void reset_init(void) { + // Configuring the generation of the reset event + static XMC_ERU_ETL_CONFIG_t reset_event_generator_config; + reset_event_generator_config.enable_output_trigger = true; + reset_event_generator_config.status_flag_mode = XMC_ERU_ETL_STATUS_FLAG_MODE_HWCTRL; + reset_event_generator_config.edge_detection = XMC_ERU_ETL_EDGE_DETECTION_FALLING; + reset_event_generator_config.output_trigger_channel = XMC_ERU_ETL_OUTPUT_TRIGGER_CHANNEL0; + reset_event_generator_config.source = XMC_ERU_ETL_SOURCE_A; + reset_event_generator_config.input = ERU0_ETL0_INPUTA_P2_4; + // Configuring the detection of the reset event + static XMC_ERU_OGU_CONFIG_t reset_event_detection_config; + reset_event_detection_config.service_request = XMC_ERU_OGU_SERVICE_REQUEST_ON_TRIGGER; + + XMC_ERU_ETL_Init(ERU0_ETL0, &reset_event_generator_config); + XMC_ERU_OGU_Init(ERU0_OGU0, &reset_event_detection_config); + + XMC_GPIO_CONFIG_t config_reset; + config_reset.mode = XMC_GPIO_MODE_INPUT_PULL_UP; + // Set large threshold for improved noise immunity on reset pin + config_reset.input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_LARGE; + XMC_GPIO_Init(P2_4, &config_reset); + + NVIC_SetPriority(ERU0_0_IRQn, 3U); + NVIC_EnableIRQ(ERU0_0_IRQn); +} +#endif \ No newline at end of file diff --git a/cores/xmc/reset.h b/cores/xmc/reset.h new file mode 100644 index 00000000..286524b8 --- /dev/null +++ b/cores/xmc/reset.h @@ -0,0 +1,44 @@ +/** + * reset.h - Handling the reset for the XMC1100 Boot Kit. + * + * Have a look at the application note/reference manual for more information. + * + * Copyright (c) 2018 Infineon Technologies AG + * + * Redistribution and use in source and binary forms, with or without modification, are permitted + * provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of conditions + * and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions + * and the following disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the copyright holders nor the names of its contributors may be used to + * endorse or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ + +#ifndef Reset_h +#define Reset_h + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** + +/* + * \brief Configures the reset pin for the selected board. + */ +extern void reset_init(void); + +#endif \ No newline at end of file From d213fc60ec78f568eb41b1481d5db821b1de5c83 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:07:25 +0530 Subject: [PATCH 178/366] variants: Modified pins_arduino for XMC1100_2GO. Signed-off-by: MDin --- .../XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index c374b405..69c90130 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -105,7 +105,7 @@ extern uint8_t SCK; #define LED2 15 #define LED_BUILTIN LED1 -#define digitalPinToInterrupt(p) (((p) == 9) ? 0 : NOT_AN_INTERRUPT) +#define digitalPinToInterrupt(p) (((p) == 9) ? 0 : -1) #ifdef ARDUINO_MAIN // Mapping of digital pins and comments @@ -199,6 +199,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; +Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // SPI instance @@ -308,5 +309,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } } #endif #endif /* ARDUINO_MAIN */ - -#endif /* PINS_ARDUINO_H_ */ \ No newline at end of file +#endif // PINS_ARDUINO_H_ From 52edfb9ec15f5bb28f2f9bbb9b37fea44fc4246e Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:08:02 +0530 Subject: [PATCH 179/366] variants: Modified pins_arduino for XMC1100 boot. Signed-off-by: MDin --- variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index bce2b133..5006356f 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -138,7 +138,7 @@ extern uint8_t SCK; #define LED5 2 #define LED6 30 -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) +#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : -1)) #ifdef ARDUINO_MAIN // Mapping of digital pins and comments @@ -250,6 +250,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; +Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // SPI instance From abab1286e12e572188b9f3c775d66de7d3a8edaa Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:08:36 +0530 Subject: [PATCH 180/366] variants: Modified pins_arduino for XMC1300 boot. Signed-off-by: MDin --- variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h index b4b304cc..32b7f45c 100644 --- a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h +++ b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h @@ -121,7 +121,7 @@ extern uint8_t SCK; #define LED6 28 #define LED_BUILTIN LED1 -#define digitalPinToInterrupt(p) ((p) == 14 ? 0 : ((p) == 15 ? 1 : NOT_AN_INTERRUPT)) +#define digitalPinToInterrupt(p) ((p) == 14 ? 0 : ((p) == 15 ? 1 : -1)) #ifdef ARDUINO_MAIN // Mapping of digital pins and comments @@ -253,6 +253,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; +Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // // SPI instance From 4596b8489316d189703d44b6402a5ace8c29fbd5 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:09:16 +0530 Subject: [PATCH 181/366] variants: Modified pins_arduino for XMC14_2GO. Signed-off-by: MDin --- variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 974b79e7..56018abf 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -59,9 +59,6 @@ extern const uint8_t NUM_ANALOG_INPUTS; // Indicate unit has RTC/Alarm #define HAS_RTC 1 -// Indicate variant has a GPIO pin used for Reset pin -#define HAS_GPIO_RESET 1 - // Defines will be either set by ArduinoIDE in the menu or manually #ifdef SERIAL_HOSTPC // Comment out following line to use Serial on pins (board) @@ -141,7 +138,7 @@ extern const uint8_t NUM_ANALOG_INPUTS; #define CAN0_3_IRQHandler IRQ7_Handler // CAN #define CAN0_3_IRQn IRQ7_IRQn -#define digitalPinToInterrupt(p) (((p) == 9) ? 0 : NOT_AN_INTERRUPT) +#define digitalPinToInterrupt(p) (((p) == 9) ? 0 : -1) #ifdef ARDUINO_MAIN // Mapping of digital pins and comments @@ -254,6 +251,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; +Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // // SPI instance @@ -363,5 +361,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } } #endif #endif /* ARDUINO_MAIN */ - -#endif /* PINS_ARDUINO_H_ */ +#endif // PINS_ARDUINO_H_ From 7277ac4f2203f5295ac3590602bab5b9af3f6b16 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:09:45 +0530 Subject: [PATCH 182/366] variants: Modified pins_arduino for XMC1400 Arduino. Signed-off-by: MDin --- .../XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index 5540d77b..b75be6b2 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -108,7 +108,7 @@ extern const uint8_t NUM_ANALOG_INPUTS; #define EXT_INTR_0 3 #define EXT_INTR_1 25 -#define digitalPinToInterrupt(p) ((p) == 3 ? 0 : ((p) == 25 ? 1 : NOT_AN_INTERRUPT)) +#define digitalPinToInterrupt(p) ((p) == 3 ? 0 : ((p) == 25 ? 1 : -1)) /* Mapping interrupt handlers. Notice that XMC1400 can have interrupt handlers working in 3 modes, the defines below assumes the mode A. For details refer to assembly file and reference manual. @@ -122,6 +122,9 @@ extern const uint8_t NUM_ANALOG_INPUTS; #define CCU40_1_IRQHandler IRQ22_Handler // interrupt 0 #define CCU40_1_IRQn IRQ22_IRQn +#define CCU40_3_IRQHandler IRQ24_Handler +#define CCU40_3_IRQn IRQ24_IRQn + #define USIC0_4_IRQHandler IRQ13_Handler // I2C #define USIC0_4_IRQn IRQ13_IRQn @@ -254,6 +257,7 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; +Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // // SPI instance @@ -321,5 +325,4 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } } #endif #endif /* ARDUINO_MAIN */ - -#endif /* PINS_ARDUINO_H_ */ +#endif // PINS_ARDUINO_H_ From 80eec322659fe9bba19ecf8096a6d5ef6b704e20 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:10:11 +0530 Subject: [PATCH 183/366] variants: Modified pins_arduino for XMC4200. Signed-off-by: MDin --- .../XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h index c91d9187..271b8439 100644 --- a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h +++ b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h @@ -94,7 +94,7 @@ extern uint8_t SCK; LED1 // Dummy LED define macro; added to comply with LED Library examples in CI/CD workflow #define BUTTON1 27 // Additional BUTTON1 -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) +#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : -1)) #ifdef ARDUINO_MAIN // Mapping of digital pins and comments @@ -269,9 +269,9 @@ XMC_UART_t XMC_UART_1 = { .irq_num = USIC1_0_IRQn, .irq_service_request = 0}; -// Object instantiated for UART PC (debug) interface +// Object instantiated of the HardwareSerial class for UART PC (debug) interface Uart Serial(&XMC_UART_0); -// Object instantiated for UART ONBOARD interface +// Object instantiated of the HardwareSerial class for UART ONBOARD interface Uart Serial1(&XMC_UART_1); // SPI instance @@ -358,4 +358,6 @@ void USIC0_0_IRQHandler() { Serial.IrqHandler(); } #endif #endif /* ARDUINO_MAIN*/ +#ifdef __cplusplus +#endif #endif From b8d462d55690bcee58d28126c81d7e3605baa6fb Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:10:34 +0530 Subject: [PATCH 184/366] variants: Modified pins_arduino for XMC4400. Signed-off-by: MDin --- .../XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h index 6933b135..e05325db 100644 --- a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h +++ b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h @@ -105,7 +105,7 @@ extern uint8_t SCK; #define BUTTON1 68 #define BUTTON2 57 -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) +#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : -1)) #ifdef ARDUINO_MAIN // Mapping of digital pins and comments @@ -355,7 +355,7 @@ XMC_UART_t XMC_UART_0 = { .irq_service_request = 0}; // Single Hardware Serial object for both UART interfaces -UART Serial(&XMC_UART_0); +Uart Serial(&XMC_UART_0); // SPI instance // XMC_SPI_t XMC_SPI_0 = { @@ -431,5 +431,4 @@ void USIC1_0_IRQHandler() { Serial.IrqHandler(); } } #endif #endif /* ARDUINO_MAIN*/ - -#endif /* PINS_ARDUINO_H_ */ +#endif From 6f976452332a769ceadb05d94b07584cf137266f Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 18:11:05 +0530 Subject: [PATCH 185/366] cores/xmc: Modified tone files. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 314 ++++++++++++++++++++------------------------- cores/xmc/Tone.h | 47 +++++++ 2 files changed, 183 insertions(+), 178 deletions(-) create mode 100644 cores/xmc/Tone.h diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 2e1bf155..465553f3 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,205 +1,163 @@ #include "Arduino.h" -static XMC_CCU4_SLICE_t *active_pwm4_slice = nullptr; // Active CCU4 slice -static XMC_CCU8_SLICE_t *active_pwm8_slice = nullptr; // Active CCU8 slice -static XMC_CCU4_MODULE_t *active_pwm4_ccu = nullptr; // Active CCU4 module -static XMC_CCU8_MODULE_t *active_pwm8_ccu = nullptr; // Active CCU8 module -volatile uint8_t slice_number_ccu4; -volatile uint8_t slice_number_ccu8; -volatile uint32_t software_counter = 0; -volatile uint32_t required_duration_ticks = 0; - -#ifdef __cplusplus -extern "C" { + +XMC_CCU4_SLICE_t *Tone::active_pwm4_slice = nullptr; // Active CCU4 slice +XMC_CCU4_MODULE_t *Tone::active_pwm4_ccu = nullptr; // Active CCU4 module +#if defined(KIT_XMC_PLT2GO_XMC4200) || defined(KIT_XMC_PLT2GO_XMC4400) || \ + defined(KIT_XMC13_BOOT_001) || defined(KIT_XMC47_RELAX) +XMC_CCU8_MODULE_t *Tone::active_pwm8_ccu = nullptr; // Active CCU8 module +XMC_CCU8_SLICE_t *Tone::active_pwm8_slice = nullptr; // Active CCU8 slice #endif -void CCU43_2_IRQHandler(void) { - software_counter++; - if (software_counter >= required_duration_ticks) { - if (active_pwm4_slice != nullptr && active_pwm4_ccu != nullptr) { - XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); - XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); // Disable the clock - - active_pwm4_slice = nullptr; // Clear the active CCU4 slice - active_pwm4_ccu = nullptr; // Clear the active CCU4 module +uint8_t Tone::slice_number_ccu4 = 0; +uint8_t Tone::slice_number_ccu8 = 0; +volatile unsigned long tone_durations[NUM_TONE_PINS] = {0}; +Tone inst_Tone; + +Tone::Tone() {} + +Tone::~Tone() {} + +void Tone::play(pin_size_t pin, unsigned int frequency) { play(pin, frequency, 0); } + +void Tone::play(pin_size_t pin, unsigned int frequency, unsigned long duration) { + int pin_index; + stop(pin); + if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { + XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; + active_pwm4_slice = pwm4->slice; // Store the active CCU4 slice + active_pwm4_ccu = pwm4->ccu; // Store the active CCU4 module + slice_number_ccu4 = pwm4->slice_num; // Store the slice number + configureTone(pin, frequency); + XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, + (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); + XMC_CCU4_SLICE_StartTimer(pwm4->slice); + if (duration > 0) { + scheduleToneTask(pin, duration); } - if (active_pwm8_slice != nullptr && active_pwm8_ccu != nullptr) { - XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); - XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number_ccu8); - active_pwm8_slice = nullptr; // Clear the active CCU8 slice - active_pwm8_ccu = nullptr; // Clear the active CCU8 module + } +#if defined(CCU8V2) || defined(CCU8V1) + else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { + XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; + active_pwm8_slice = pwm8->slice; // Store the active CCU8 slice + active_pwm8_ccu = pwm8->ccu; // Store the active CCU8 module + slice_number_ccu8 = pwm8->slice_num; + configureTone(pin, frequency); + XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, + (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); + XMC_CCU8_SLICE_StartTimer(pwm8->slice); + // calculate pulses + if (duration > 0) { + scheduleToneTask(pin, duration); } - XMC_CCU4_SLICE_StopTimer(CCU43_CC42); - XMC_CCU4_SLICE_ClearEvent(CCU43_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - software_counter = 0; - NVIC_DisableIRQ(CCU43_2_IRQn); } - XMC_CCU4_SLICE_ClearEvent(CCU43_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); +#endif } -#ifdef __cplusplus -} -#endif +void Tone::stop(pin_size_t pin) { + int taskId = pin % NUM_TONE_PINS; -class Tone { -public: - Tone() {} - - ~Tone() {} - - void play(pin_size_t pin, unsigned int frequency) { play(pin, frequency, 0); } - - void play(pin_size_t pin, unsigned int frequency, unsigned long duration) { - int pin_index; - stop(pin); - if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; - active_pwm4_slice = pwm4->slice; // Store the active CCU4 slice - active_pwm4_ccu = pwm4->ccu; // Store the active CCU4 module - slice_number_ccu4 = pwm4->slice_num; // Store the slice number - configureTone(pin, frequency); - XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, - (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); - XMC_CCU4_SLICE_StartTimer(pwm4->slice); - if (duration > 0) { - configureTimerInterrupt(duration); - } - } + // Stop CCU4-based PWM + if (active_pwm4_slice && active_pwm4_ccu) { + XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); + XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); + } #if defined(CCU8V2) || defined(CCU8V1) - else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; - active_pwm8_slice = pwm8->slice; // Store the active CCU8 slice - active_pwm8_ccu = pwm8->ccu; // Store the active CCU8 module - slice_number_ccu8 = pwm8->slice_num; - configureTone(pin, frequency); - XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, - (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); - XMC_CCU8_SLICE_StartTimer(pwm8->slice); - // calculate pulses - if (duration > 0) { - configureTimerInterrupt(duration); - } - } -#endif + // Stop CCU8-based PWM + else if (active_pwm8_slice && active_pwm8_ccu) { + XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); + XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number_ccu8); } +#endif + // Unregister any scheduled tasks for this tone + tone_durations[taskId] = 0; + setInterval(taskId, 0); // Clear task interval + // stopTask(taskId); +} - void stop(pin_size_t pin) { - int pin_index; - if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *_XMC_pwm4_config = &mapping_pwm4[pin_index]; - XMC_CCU4_SLICE_StopTimer(_XMC_pwm4_config->slice); // stop the timer - XMC_CCU4_DisableClock(_XMC_pwm4_config->ccu, - _XMC_pwm4_config->slice_num); // Disable the clock - } -#if defined(CCU8V2) || defined(CCU8V1) - else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; - XMC_CCU8_SLICE_StopTimer(pwm8->slice); // stop the timer - XMC_CCU8_DisableClock(pwm8->ccu, pwm8->slice_num); // Disable the clock +// Tone duration management callback +int tone_irq_action(int taskId, int16_t param) { + pin_size_t pin = param; + + // Decrement duration + if (tone_durations[taskId] > 0) { + tone_durations[taskId]--; + if (tone_durations[taskId] == 0) { + inst_Tone.stop(pin); // Stop tone when duration expires + return -1; // Task complete } -#endif - software_counter = 0; - required_duration_ticks = 0; - NVIC_DisableIRQ(CCU43_0_IRQn); } -private: - void configureTone(pin_size_t pin, unsigned int frequency) { - int pin_index; + return 1; // Continue task +} + +void Tone::configureTone(pin_size_t pin, unsigned int frequency) { + int pin_index; - if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; - XMC_CCU4_SLICE_COMPARE_CONFIG_t compare_config; - memset(&compare_config, 0, sizeof(compare_config)); - compare_config.prescaler_initval = pwm4->prescaler; - compare_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { + XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; + XMC_CCU4_SLICE_COMPARE_CONFIG_t compare_config; + memset(&compare_config, 0, sizeof(compare_config)); + compare_config.prescaler_initval = pwm4->prescaler; + compare_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - XMC_CCU4_Init(pwm4->ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU4_SLICE_CompareInit(pwm4->slice, &compare_config); - XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); + XMC_CCU4_Init(pwm4->ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU4_SLICE_CompareInit(pwm4->slice, &compare_config); + XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); - uint32_t period = (PCLK / 64) / frequency; // calculate period - XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, period); - XMC_CCU4_SLICE_SetTimerCompareMatch(pwm4->slice, period / 2); + uint32_t period = (PCLK / 64) / frequency; // calculate period + XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, period); + XMC_CCU4_SLICE_SetTimerCompareMatch(pwm4->slice, period / 2); - XMC_CCU4_EnableShadowTransfer( - pwm4->ccu, XMC_CCU4_SHADOW_TRANSFER_SLICE_0 | XMC_CCU4_SHADOW_TRANSFER_SLICE_2 | - XMC_CCU4_SHADOW_TRANSFER_SLICE_3 | XMC_CCU4_SHADOW_TRANSFER_SLICE_1); - } + XMC_CCU4_EnableShadowTransfer( + pwm4->ccu, XMC_CCU4_SHADOW_TRANSFER_SLICE_0 | XMC_CCU4_SHADOW_TRANSFER_SLICE_2 | + XMC_CCU4_SHADOW_TRANSFER_SLICE_3 | XMC_CCU4_SHADOW_TRANSFER_SLICE_1); + } #if defined(CCU8V2) || defined(CCU8V1) - else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; - XMC_CCU8_SLICE_COMPARE_CONFIG_t compare_config; - memset(&compare_config, 0, sizeof(compare_config)); - - compare_config.prescaler_initval = pwm8->prescaler; - compare_config.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - compare_config.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - compare_config.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - compare_config.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - - XMC_CCU8_Init(pwm8->ccu, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU8_SLICE_CompareInit(pwm8->slice, &compare_config); - XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); - - uint32_t period = (PCLK / 64) / frequency; // calculate period - XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, period); - XMC_CCU8_SLICE_SetTimerCompareMatch(pwm8->slice, pwm8->slice_channel, period / 2); - - XMC_CCU8_EnableShadowTransfer( - pwm8->ccu, XMC_CCU8_SHADOW_TRANSFER_SLICE_0 | XMC_CCU8_SHADOW_TRANSFER_SLICE_2 | - XMC_CCU8_SHADOW_TRANSFER_SLICE_3 | XMC_CCU8_SHADOW_TRANSFER_SLICE_1); - } -#endif + else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { + XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; + XMC_CCU8_SLICE_COMPARE_CONFIG_t compare_config; + memset(&compare_config, 0, sizeof(compare_config)); + + compare_config.prescaler_initval = pwm8->prescaler; + compare_config.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + compare_config.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + compare_config.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + compare_config.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; + + XMC_CCU8_Init(pwm8->ccu, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); + XMC_CCU8_SLICE_CompareInit(pwm8->slice, &compare_config); + XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); + + uint32_t period = (PCLK / 64) / frequency; // calculate period + XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, period); + XMC_CCU8_SLICE_SetTimerCompareMatch(pwm8->slice, pwm8->slice_channel, period / 2); + + XMC_CCU8_EnableShadowTransfer( + pwm8->ccu, XMC_CCU8_SHADOW_TRANSFER_SLICE_0 | XMC_CCU8_SHADOW_TRANSFER_SLICE_2 | + XMC_CCU8_SHADOW_TRANSFER_SLICE_3 | XMC_CCU8_SHADOW_TRANSFER_SLICE_1); } +#endif +} - void configureTimerInterrupt(unsigned long duration_ms) { - software_counter = 0; - XMC_CCU4_Init(CCU43, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU4_SLICE_COMPARE_CONFIG_t timer_config; - timer_config.timer_mode = XMC_CCU4_SLICE_TIMER_COUNT_MODE_EA; - timer_config.monoshot = XMC_CCU4_SLICE_TIMER_REPEAT_MODE_REPEAT; - timer_config.prescaler_mode = XMC_CCU4_SLICE_PRESCALER_MODE_NORMAL; - timer_config.prescaler_initval = XMC_CCU4_SLICE_PRESCALER_64; - timer_config.float_limit = XMC_CCU4_SLICE_PRESCALER_32768; - timer_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - XMC_CCU4_SLICE_CompareInit(CCU43_CC42, &timer_config); - - // Calculate period for the timer based on the duration - uint32_t timer_freq = PCLK / 64; - uint32_t timer_ticks_ms = timer_freq / 1000; - required_duration_ticks = duration_ms; - XMC_CCU4_SLICE_SetTimerPeriodMatch(CCU43_CC42, timer_ticks_ms); - XMC_CCU4_SetMultiChannelShadowTransferMode( - CCU43, XMC_CCU4_MULTI_CHANNEL_SHADOW_TRANSFER_SW_SLICE2); - XMC_CCU4_EnableShadowTransfer(CCU43, XMC_CCU4_SHADOW_TRANSFER_SLICE_2); - XMC_CCU4_SLICE_SetInterruptNode(CCU43_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH, - XMC_CCU4_SLICE_SR_ID_2); - XMC_CCU4_SLICE_EnableEvent(CCU43_CC42, XMC_CCU4_SLICE_IRQ_ID_PERIOD_MATCH); - XMC_CCU4_EnableClock(CCU43, 2); - - // Enable the NVIC interrupt - XMC_CCU4_SLICE_SetTimerValue(CCU43_CC42, 0U); - - // Start the timer - XMC_CCU4_SLICE_StartTimer(CCU43_CC42); - NVIC_SetPriority(CCU43_2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 63, 0)); - - NVIC_EnableIRQ(CCU43_2_IRQn); - } +void Tone::scheduleToneTask(pin_size_t pin, unsigned long duration) { + int taskId = pin % NUM_TONE_PINS; - // Scan the pwm pin mapping table - int16_t scanMapTable(const uint8_t table[][2], uint8_t pin) { - int16_t i = 0; - while (table[i][0] != 255) { - if (table[i][0] == pin) { - return table[i][1]; - } - i++; + tone_durations[taskId] = duration; + setParam(taskId, pin); + setInterval(taskId, 1); + startTask(taskId); +} + +// Scan the pwm pin mapping table +int Tone::scanMapTable(const uint8_t table[][2], pin_size_t pin) { + int16_t i = 0; + while (table[i][0] != 255) { + if (table[i][0] == pin) { + return table[i][1]; } - return -1; + i++; } -}; - -static Tone inst_Tone; + return -1; +} void tone(pin_size_t pin, unsigned int frequency) { inst_Tone.play(pin, frequency); } diff --git a/cores/xmc/Tone.h b/cores/xmc/Tone.h new file mode 100644 index 00000000..6e18e3ea --- /dev/null +++ b/cores/xmc/Tone.h @@ -0,0 +1,47 @@ +#ifndef TONE_H +#define TONE_H + +#include "Arduino.h" +// Expose C-compatible declarations for wiring_time.c +#ifdef __cplusplus +extern "C" { +#endif + +// C-compatible function declaration for the callback +int tone_irq_action(int taskId, int16_t param); + +#ifdef __cplusplus +} // End of extern "C" + +class Tone { +public: + Tone(); + ~Tone(); + + void play(pin_size_t pin, unsigned int frequency); + void play(pin_size_t pin, unsigned int frequency, unsigned long duration); + void stop(pin_size_t pin); + + static int tone_irq_action(int taskId, int16_t param); + +private: + void configureTone(pin_size_t pin, unsigned int frequency); + void scheduleToneTask(pin_size_t pin, unsigned long duration); + int scanMapTable(const uint8_t table[][2], pin_size_t pin); + + static XMC_CCU4_SLICE_t *active_pwm4_slice; // Active CCU4 slice + static XMC_CCU4_MODULE_t *active_pwm4_ccu; // Active CCU4 module + #if defined(KIT_XMC_PLT2GO_XMC4200) || defined(KIT_XMC_PLT2GO_XMC4400) || \ + defined(KIT_XMC13_BOOT_001) || defined(KIT_XMC47_RELAX) + static XMC_CCU8_MODULE_t *active_pwm8_ccu; // Active CCU8 module + static XMC_CCU8_SLICE_t *active_pwm8_slice; // Active CCU8 slice + #endif + + static uint8_t slice_number_ccu4; + static uint8_t slice_number_ccu8; +}; + +extern Tone inst_Tone; + +#endif +#endif \ No newline at end of file From 4b4f4a3a7bac506cd0bfc340485f247be83d4d62 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 21:27:08 +0530 Subject: [PATCH 186/366] variants: Conflicts in merge resolved. Signed-off-by: MDin --- variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h | 1 - variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h | 1 - variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h | 1 - variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 1 - variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h | 1 - 5 files changed, 5 deletions(-) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index 5006356f..2212ebd6 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -250,7 +250,6 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // SPI instance diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index 69c90130..20bcd004 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -199,7 +199,6 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // SPI instance diff --git a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h index 32b7f45c..c05a6d2a 100644 --- a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h +++ b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h @@ -253,7 +253,6 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // // SPI instance diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index b75be6b2..1fda2005 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -257,7 +257,6 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // // SPI instance diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 56018abf..4661fcff 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -251,7 +251,6 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, .irq_num = USIC0_0_IRQn, .irq_service_request = 0}; -Uart Serial(&XMC_UART_0); Uart Serial(&XMC_UART_0); // // SPI instance From d3d10104cb04ebc8cb8ef9663a8707258db57fb2 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 21:43:27 +0530 Subject: [PATCH 187/366] ci-matrix-config.yml: Temporary commented MultiSerial. Signed-off-by: MDin --- ci-matrix-config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index fcded85d..55ce783f 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -23,7 +23,7 @@ sketch: - extras/arduino-examples/examples/03.Analog/Fading/Fading.ino - extras/arduino-examples/examples/03.Analog/Smoothing/Smoothing.ino - extras/arduino-examples/examples/04.Communication/ASCIITable/ASCIITable.ino - - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino + # - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino - extras/arduino-examples/examples/04.Communication/PhysicalPixel/PhysicalPixel.ino - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino - extras/arduino-examples/examples/05.Control/ForLoopIteration/ForLoopIteration.ino From 4900af1e222a5e5dbfe72c555a93fb84d0923791 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 29 Jul 2025 21:57:41 +0530 Subject: [PATCH 188/366] ci-matrix-config.yml: Temporary commented examples. Signed-off-by: MDin --- ci-matrix-config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 55ce783f..8da53239 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -24,8 +24,8 @@ sketch: - extras/arduino-examples/examples/03.Analog/Smoothing/Smoothing.ino - extras/arduino-examples/examples/04.Communication/ASCIITable/ASCIITable.ino # - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino - - extras/arduino-examples/examples/04.Communication/PhysicalPixel/PhysicalPixel.ino - - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino + # - extras/arduino-examples/examples/04.Communication/PhysicalPixel/PhysicalPixel.ino + # - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino - extras/arduino-examples/examples/05.Control/ForLoopIteration/ForLoopIteration.ino fqbn: From ad1ee969d49bb98fd638d0e0cf7d4fdd3846ab7e Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 30 Jul 2025 14:45:34 +0530 Subject: [PATCH 189/366] cores/xmc: Review comments work. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 4 +--- cores/xmc/wiring_time.c | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 465553f3..8089068e 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -2,8 +2,7 @@ XMC_CCU4_SLICE_t *Tone::active_pwm4_slice = nullptr; // Active CCU4 slice XMC_CCU4_MODULE_t *Tone::active_pwm4_ccu = nullptr; // Active CCU4 module -#if defined(KIT_XMC_PLT2GO_XMC4200) || defined(KIT_XMC_PLT2GO_XMC4400) || \ - defined(KIT_XMC13_BOOT_001) || defined(KIT_XMC47_RELAX) +#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V1) XMC_CCU8_MODULE_t *Tone::active_pwm8_ccu = nullptr; // Active CCU8 module XMC_CCU8_SLICE_t *Tone::active_pwm8_slice = nullptr; // Active CCU8 slice #endif @@ -70,7 +69,6 @@ void Tone::stop(pin_size_t pin) { // Unregister any scheduled tasks for this tone tone_durations[taskId] = 0; setInterval(taskId, 0); // Clear task interval - // stopTask(taskId); } // Tone duration management callback diff --git a/cores/xmc/wiring_time.c b/cores/xmc/wiring_time.c index 1a243ac8..d4811037 100644 --- a/cores/xmc/wiring_time.c +++ b/cores/xmc/wiring_time.c @@ -126,7 +126,6 @@ findID Get ID of first task from task address // @Project Includes //**************************************************************************** #include "Arduino.h" -// #include "Tone.h" extern int tone_irq_action(int, int16_t); // TODO: not needed for timer yet. //**************************************************************************** @@ -199,8 +198,7 @@ void wiring_time_init(void) { taskTable[i].param = i; // Preset user parameter to task number // Fill with call back function addresses if (i < NUM_TONE_PINS) { - // tasks[i] = NULL; - tasks[i] = tone_irq_action; // // TODO: Tone callbacks, not needed for timer yet. + tasks[i] = tone_irq_action; } else { tasks[i] = NULL; // Special case delay() ms callback } From 7fd718f44b03273a466d2e51d31a69a4c802c38a Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 30 Jul 2025 14:46:06 +0530 Subject: [PATCH 190/366] ci-matrix-config.yml: Exclude example files. Signed-off-by: MDin --- ci-matrix-config.yml | 56 ++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 8da53239..9ff8c76c 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -23,9 +23,9 @@ sketch: - extras/arduino-examples/examples/03.Analog/Fading/Fading.ino - extras/arduino-examples/examples/03.Analog/Smoothing/Smoothing.ino - extras/arduino-examples/examples/04.Communication/ASCIITable/ASCIITable.ino - # - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino - # - extras/arduino-examples/examples/04.Communication/PhysicalPixel/PhysicalPixel.ino - # - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino + - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino + - extras/arduino-examples/examples/04.Communication/PhysicalPixel/PhysicalPixel.ino + - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino - extras/arduino-examples/examples/05.Control/ForLoopIteration/ForLoopIteration.ino fqbn: @@ -82,18 +82,38 @@ fqbn: # - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino # - libraries/CAN -# exclude: -# - fqbn: infineon:xmc:kit_xmc14_2go -# sketch: -# - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino -# - fqbn: infineon:xmc:kit_xmc1400_arduino -# sketch: -# - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino -# - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4200 -# sketch: -# - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino -# - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino -# - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4400 -# sketch: -# - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino -# - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino +exclude: +- fqbn: infineon:xmc:kit_xmc11_boot_001 + sketch: + - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino +- fqbn: infineon:xmc:kit_xmc_2go_xmc1100_v1 + sketch: + - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino +- fqbn: infineon:xmc:kit_xmc13_boot_001 + sketch: + - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino +- fqbn: infineon:xmc:kit_xmc14_2go + sketch: + - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino + - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino + - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino + +- fqbn: infineon:xmc:kit_xmc1400_arduino + sketch: + - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino + - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino + - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino +- fqbn: infineon:xmc:kit_xmc_plt2go_xmc4200 + sketch: + - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino + - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino + - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino +- fqbn: infineon:xmc:kit_xmc_plt2go_xmc4400 + sketch: + - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino + - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino + - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino + - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino + + + From 604fc343cf65324160bd894a0047006798a8f712 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 30 Jul 2025 16:08:43 +0530 Subject: [PATCH 191/366] cores/xmc: Review comments work. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 8 ++++---- cores/xmc/Tone.h | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 8089068e..49bd6e68 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -2,7 +2,7 @@ XMC_CCU4_SLICE_t *Tone::active_pwm4_slice = nullptr; // Active CCU4 slice XMC_CCU4_MODULE_t *Tone::active_pwm4_ccu = nullptr; // Active CCU4 module -#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V1) +#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) XMC_CCU8_MODULE_t *Tone::active_pwm8_ccu = nullptr; // Active CCU8 module XMC_CCU8_SLICE_t *Tone::active_pwm8_slice = nullptr; // Active CCU8 slice #endif @@ -33,7 +33,7 @@ void Tone::play(pin_size_t pin, unsigned int frequency, unsigned long duration) scheduleToneTask(pin, duration); } } -#if defined(CCU8V2) || defined(CCU8V1) +#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; active_pwm8_slice = pwm8->slice; // Store the active CCU8 slice @@ -59,7 +59,7 @@ void Tone::stop(pin_size_t pin) { XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); } -#if defined(CCU8V2) || defined(CCU8V1) +#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) // Stop CCU8-based PWM else if (active_pwm8_slice && active_pwm8_ccu) { XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); @@ -109,7 +109,7 @@ void Tone::configureTone(pin_size_t pin, unsigned int frequency) { pwm4->ccu, XMC_CCU4_SHADOW_TRANSFER_SLICE_0 | XMC_CCU4_SHADOW_TRANSFER_SLICE_2 | XMC_CCU4_SHADOW_TRANSFER_SLICE_3 | XMC_CCU4_SHADOW_TRANSFER_SLICE_1); } -#if defined(CCU8V2) || defined(CCU8V1) +#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; XMC_CCU8_SLICE_COMPARE_CONFIG_t compare_config; diff --git a/cores/xmc/Tone.h b/cores/xmc/Tone.h index 6e18e3ea..db3df488 100644 --- a/cores/xmc/Tone.h +++ b/cores/xmc/Tone.h @@ -31,8 +31,7 @@ class Tone { static XMC_CCU4_SLICE_t *active_pwm4_slice; // Active CCU4 slice static XMC_CCU4_MODULE_t *active_pwm4_ccu; // Active CCU4 module - #if defined(KIT_XMC_PLT2GO_XMC4200) || defined(KIT_XMC_PLT2GO_XMC4400) || \ - defined(KIT_XMC13_BOOT_001) || defined(KIT_XMC47_RELAX) + #if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) static XMC_CCU8_MODULE_t *active_pwm8_ccu; // Active CCU8 module static XMC_CCU8_SLICE_t *active_pwm8_slice; // Active CCU8 slice #endif From 12e8069e145ab95eb9e587407bcc96e827d53d33 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 30 Jul 2025 16:32:44 +0530 Subject: [PATCH 192/366] variants: Changed Number of Tone pins. Signed-off-by: MDin --- variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h | 2 +- variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 2 +- variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h | 2 +- variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index 2212ebd6..9555f1b4 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -51,7 +51,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 7 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 4 +#define NUM_TONE_PINS 7 #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index 1fda2005..ea5837c9 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -50,7 +50,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 3 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 4 +#define NUM_TONE_PINS 6 #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 4661fcff..251197eb 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -51,7 +51,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 2 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 4 // PWM Pins +#define NUM_TONE_PINS 5 // PWM Pins #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index b76ddacf..c56a8707 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -56,7 +56,7 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_LEDS 2 #define NUM_BUTTONS 2 #define NUM_SERIAL 2 -#define NUM_TONE_PINS 16 +#define NUM_TONE_PINS 23 #define NUM_TASKS_VARIANT 32 #define NUM_SPI 3 #define NUM_I2C 2 From 1d45f98229b31c1216c15bf988eb15235c22fda0 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 30 Jul 2025 16:43:38 +0530 Subject: [PATCH 193/366] cores/xmc: Revert CCU8V3 modification. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 8 ++++---- cores/xmc/Tone.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 49bd6e68..ecd948aa 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -2,7 +2,7 @@ XMC_CCU4_SLICE_t *Tone::active_pwm4_slice = nullptr; // Active CCU4 slice XMC_CCU4_MODULE_t *Tone::active_pwm4_ccu = nullptr; // Active CCU4 module -#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) +#if defined(CCU8V2) || defined(CCU8V1) XMC_CCU8_MODULE_t *Tone::active_pwm8_ccu = nullptr; // Active CCU8 module XMC_CCU8_SLICE_t *Tone::active_pwm8_slice = nullptr; // Active CCU8 slice #endif @@ -33,7 +33,7 @@ void Tone::play(pin_size_t pin, unsigned int frequency, unsigned long duration) scheduleToneTask(pin, duration); } } -#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) +#if defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; active_pwm8_slice = pwm8->slice; // Store the active CCU8 slice @@ -59,7 +59,7 @@ void Tone::stop(pin_size_t pin) { XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); } -#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) +#if defined(CCU8V2) || defined(CCU8V1) // Stop CCU8-based PWM else if (active_pwm8_slice && active_pwm8_ccu) { XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); @@ -109,7 +109,7 @@ void Tone::configureTone(pin_size_t pin, unsigned int frequency) { pwm4->ccu, XMC_CCU4_SHADOW_TRANSFER_SLICE_0 | XMC_CCU4_SHADOW_TRANSFER_SLICE_2 | XMC_CCU4_SHADOW_TRANSFER_SLICE_3 | XMC_CCU4_SHADOW_TRANSFER_SLICE_1); } -#if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) +#if defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; XMC_CCU8_SLICE_COMPARE_CONFIG_t compare_config; diff --git a/cores/xmc/Tone.h b/cores/xmc/Tone.h index db3df488..a0830634 100644 --- a/cores/xmc/Tone.h +++ b/cores/xmc/Tone.h @@ -31,7 +31,7 @@ class Tone { static XMC_CCU4_SLICE_t *active_pwm4_slice; // Active CCU4 slice static XMC_CCU4_MODULE_t *active_pwm4_ccu; // Active CCU4 module - #if defined(CCU8V2) || defined(CCU8V1) || defined(CCU8V3) + #if defined(CCU8V2) || defined(CCU8V1) static XMC_CCU8_MODULE_t *active_pwm8_ccu; // Active CCU8 module static XMC_CCU8_SLICE_t *active_pwm8_slice; // Active CCU8 slice #endif From da03a2aa9f0a70c832e7dceb487327d3c1eaeb62 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 30 Jul 2025 18:50:51 +0530 Subject: [PATCH 194/366] variants: Modified Tone Pins. Signed-off-by: MDin --- variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h | 2 +- variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h | 2 +- variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h | 2 +- variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 2 +- variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h | 2 +- variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h | 2 +- variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h | 2 +- variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index 9555f1b4..fb72a191 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -51,7 +51,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 7 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 7 +#define NUM_TONE_PINS 1 // At a time, run only one tone pin #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index 20bcd004..f544a7a3 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -51,7 +51,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 2 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 4 +#define NUM_TONE_PINS 1 // At a time, run only one tone pin #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 2 diff --git a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h index c05a6d2a..7fff8776 100644 --- a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h +++ b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h @@ -54,7 +54,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 6 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 4 +#define NUM_TONE_PINS 1 // At a time, run only one tone pin #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index ea5837c9..7df874db 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -50,7 +50,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 3 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 6 +#define NUM_TONE_PINS 1 // At a time, run only one tone pin #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 251197eb..01ff2fc7 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -51,7 +51,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 2 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 5 // PWM Pins +#define NUM_TONE_PINS 1 // At a time, run only one tone pin #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h index 271b8439..32dfc497 100644 --- a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h +++ b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h @@ -53,7 +53,7 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_LEDS 1 #define NUM_BUTTONS 1 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 7 +#define NUM_TONE_PINS 1 // At a time, run only one tone pin #define NUM_TASKS_VARIANT 12 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h index e05325db..f5d0b38e 100644 --- a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h +++ b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h @@ -53,7 +53,7 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_LEDS 2 #define NUM_BUTTONS 2 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 16 +#define NUM_TONE_PINS 1 // At a time, run only one tone pin #define NUM_TASKS_VARIANT 32 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index c56a8707..26e07fbc 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -56,7 +56,7 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_LEDS 2 #define NUM_BUTTONS 2 #define NUM_SERIAL 2 -#define NUM_TONE_PINS 23 +#define NUM_TONE_PINS 1 // At a time, run only one tone pin #define NUM_TASKS_VARIANT 32 #define NUM_SPI 3 #define NUM_I2C 2 From e53999a85299a0f8868941952ad52f26a90ced90 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 30 Jul 2025 18:51:44 +0530 Subject: [PATCH 195/366] cores/xmc: Modified Tone for CCU8. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 36 ++++++++++++------------------------ cores/xmc/Tone.h | 10 ---------- 2 files changed, 12 insertions(+), 34 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index ecd948aa..3200c7ab 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,13 +1,5 @@ #include "Arduino.h" -XMC_CCU4_SLICE_t *Tone::active_pwm4_slice = nullptr; // Active CCU4 slice -XMC_CCU4_MODULE_t *Tone::active_pwm4_ccu = nullptr; // Active CCU4 module -#if defined(CCU8V2) || defined(CCU8V1) -XMC_CCU8_MODULE_t *Tone::active_pwm8_ccu = nullptr; // Active CCU8 module -XMC_CCU8_SLICE_t *Tone::active_pwm8_slice = nullptr; // Active CCU8 slice -#endif -uint8_t Tone::slice_number_ccu4 = 0; -uint8_t Tone::slice_number_ccu8 = 0; volatile unsigned long tone_durations[NUM_TONE_PINS] = {0}; Tone inst_Tone; @@ -22,9 +14,6 @@ void Tone::play(pin_size_t pin, unsigned int frequency, unsigned long duration) stop(pin); if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; - active_pwm4_slice = pwm4->slice; // Store the active CCU4 slice - active_pwm4_ccu = pwm4->ccu; // Store the active CCU4 module - slice_number_ccu4 = pwm4->slice_num; // Store the slice number configureTone(pin, frequency); XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); @@ -36,9 +25,6 @@ void Tone::play(pin_size_t pin, unsigned int frequency, unsigned long duration) #if defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; - active_pwm8_slice = pwm8->slice; // Store the active CCU8 slice - active_pwm8_ccu = pwm8->ccu; // Store the active CCU8 module - slice_number_ccu8 = pwm8->slice_num; configureTone(pin, frequency); XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); @@ -52,18 +38,20 @@ void Tone::play(pin_size_t pin, unsigned int frequency, unsigned long duration) } void Tone::stop(pin_size_t pin) { - int taskId = pin % NUM_TONE_PINS; + int taskId = 0; - // Stop CCU4-based PWM - if (active_pwm4_slice && active_pwm4_ccu) { - XMC_CCU4_SLICE_StopTimer(active_pwm4_slice); - XMC_CCU4_DisableClock(active_pwm4_ccu, slice_number_ccu4); + int pin_index; + if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { + XMC_PWM4_t *_XMC_pwm4_config = &mapping_pwm4[pin_index]; + XMC_CCU4_SLICE_StopTimer(_XMC_pwm4_config->slice); // stop the timer + XMC_CCU4_DisableClock(_XMC_pwm4_config->ccu, + _XMC_pwm4_config->slice_num); // Disable the clock } #if defined(CCU8V2) || defined(CCU8V1) - // Stop CCU8-based PWM - else if (active_pwm8_slice && active_pwm8_ccu) { - XMC_CCU8_SLICE_StopTimer(active_pwm8_slice); - XMC_CCU8_DisableClock(active_pwm8_ccu, slice_number_ccu8); + else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { + XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; + XMC_CCU8_SLICE_StopTimer(pwm8->slice); // stop the timer + XMC_CCU8_DisableClock(pwm8->ccu, pwm8->slice_num); // Disable the clock } #endif // Unregister any scheduled tasks for this tone @@ -137,7 +125,7 @@ void Tone::configureTone(pin_size_t pin, unsigned int frequency) { } void Tone::scheduleToneTask(pin_size_t pin, unsigned long duration) { - int taskId = pin % NUM_TONE_PINS; + int taskId = 0; tone_durations[taskId] = duration; setParam(taskId, pin); diff --git a/cores/xmc/Tone.h b/cores/xmc/Tone.h index a0830634..e3e79258 100644 --- a/cores/xmc/Tone.h +++ b/cores/xmc/Tone.h @@ -28,16 +28,6 @@ class Tone { void configureTone(pin_size_t pin, unsigned int frequency); void scheduleToneTask(pin_size_t pin, unsigned long duration); int scanMapTable(const uint8_t table[][2], pin_size_t pin); - - static XMC_CCU4_SLICE_t *active_pwm4_slice; // Active CCU4 slice - static XMC_CCU4_MODULE_t *active_pwm4_ccu; // Active CCU4 module - #if defined(CCU8V2) || defined(CCU8V1) - static XMC_CCU8_MODULE_t *active_pwm8_ccu; // Active CCU8 module - static XMC_CCU8_SLICE_t *active_pwm8_slice; // Active CCU8 slice - #endif - - static uint8_t slice_number_ccu4; - static uint8_t slice_number_ccu8; }; extern Tone inst_Tone; From 3ed24287aa80f64aad567ca2a098b2ec0952699c Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 31 Jul 2025 18:54:03 +0200 Subject: [PATCH 196/366] cores/xmc/: Add CCU8V3 macro. Signed-off-by: zhanglinjing --- cores/xmc/Arduino.h | 2 +- cores/xmc/Tone.cpp | 6 +++--- cores/xmc/wiring_analog.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index f67dda9f..27a189cb 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -140,7 +140,7 @@ typedef struct { bool enabled; } XMC_PWM4_t; -#if defined(CCU8V2) || defined(CCU8V3) || defined(CCU8V1) +#if defined(CCU8V3) || defined(CCU8V2) || defined(CCU8V1) /* * XMC PWM type (CCU8) */ diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 3200c7ab..a65b85a7 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -22,7 +22,7 @@ void Tone::play(pin_size_t pin, unsigned int frequency, unsigned long duration) scheduleToneTask(pin, duration); } } -#if defined(CCU8V2) || defined(CCU8V1) +#if defined(CCU8V3) || defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; configureTone(pin, frequency); @@ -47,7 +47,7 @@ void Tone::stop(pin_size_t pin) { XMC_CCU4_DisableClock(_XMC_pwm4_config->ccu, _XMC_pwm4_config->slice_num); // Disable the clock } -#if defined(CCU8V2) || defined(CCU8V1) +#if defined(CCU8V3) || defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; XMC_CCU8_SLICE_StopTimer(pwm8->slice); // stop the timer @@ -97,7 +97,7 @@ void Tone::configureTone(pin_size_t pin, unsigned int frequency) { pwm4->ccu, XMC_CCU4_SHADOW_TRANSFER_SLICE_0 | XMC_CCU4_SHADOW_TRANSFER_SLICE_2 | XMC_CCU4_SHADOW_TRANSFER_SLICE_3 | XMC_CCU4_SHADOW_TRANSFER_SLICE_1); } -#if defined(CCU8V2) || defined(CCU8V1) +#if defined(CCU8V3) || defined(CCU8V2) || defined(CCU8V1) else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; XMC_CCU8_SLICE_COMPARE_CONFIG_t compare_config; diff --git a/cores/xmc/wiring_analog.cpp b/cores/xmc/wiring_analog.cpp index 1574ce9a..31023745 100644 --- a/cores/xmc/wiring_analog.cpp +++ b/cores/xmc/wiring_analog.cpp @@ -103,7 +103,7 @@ void analogWrite(pin_size_t pinNumber, int value) { pwm4->d_cycle_val = value; return; } -#if defined(CCU8V2) || defined(CCU8V1) +#if defined(CCU8V3) || defined(CCU8V2) || defined(CCU8V1) // Check if the pin supports PWM8 else if ((resource = scan_map_table(mapping_pin_PWM8, pinNumber)) >= 0) { XMC_PWM8_t *pwm8 = &mapping_pwm8[resource]; From 55a89dfda630c87d04d089c5525714a2cd53a96f Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 31 Jul 2025 18:54:35 +0200 Subject: [PATCH 197/366] variants/: Update xmc1400 2go config for ccu8. Signed-off-by: zhanglinjing --- .../config/KIT_XMC14_2GO/pins_arduino.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 01ff2fc7..1d54924e 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -72,6 +72,8 @@ extern const uint8_t NUM_ANALOG_INPUTS; // Generate 490Hz @fCCU=1MHz #define PWM4_TIMER_PERIOD (2041U) +// Generate 490Hz @fCCU=1MHz +#define PWM8_TIMER_PERIOD (2041U) // PCLK = 2 * MCLK #define PCLK 96000000u @@ -193,9 +195,24 @@ XMC_PWM4_t mapping_pwm4[] = { {CCU41, CCU41_CC40, 0, mapping_port_pin[9], P1_4_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, PWM4_TIMER_PERIOD, 0, false} // PWM disabled 9 P1.4 }; -const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); +/* Mapping in same manner as PWM4 for PWM8 channels */ +const uint8_t mapping_pin_PWM8[][2] = {{4, 0}, {5, 1}, {255, 255}}; + +/* Configurations of PWM channels for CCU8 type */ +XMC_PWM8_t mapping_pwm8[] = { + {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[4], + P0_14_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + false}, // PWM disabled 4 P0.14 + {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[5], + P0_15_AF_CCU80_OUT30, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, + false} // PWM disabled 5 P0.15 +}; +const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); +const uint8_t NUM_PWM = + (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)) + (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); + /* Analog Pin mappings and configurations */ // XMC_ADC_t mapping_adc[] = // { From 70a68ac641e0a43f04960f7f556ceed23da07234 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 31 Jul 2025 19:17:44 +0200 Subject: [PATCH 198/366] variants/: Update xmc1400 arduino for compilation. Signed-off-by: zhanglinjing --- .../XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index 7df874db..ca590d69 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -202,9 +202,13 @@ XMC_PWM4_t mapping_pwm4[] = { {CCU40, CCU40_CC41, 1, mapping_port_pin[11], P0_1_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, PWM4_TIMER_PERIOD, 0, false} // PWM disabled 4 }; - const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); -const uint8_t NUM_PWM = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); + +/* Configurations of PWM channels for CCU8 type */ +const uint8_t mapping_pin_PWM8[][2] = {{255, 255}}; +XMC_PWM8_t mapping_pwm8[] = {}; // Empty for now, no CCU8 channels defined + +const uint8_t NUM_PWM = NUM_PWM4; // Currently only PWM4 channels are defined /* Analog Pin mappings and configurations */ // ADC grouping for XMC 1400 series. From 08dba1bb3667c97be588a1e07db0d1cfccbfffe7 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Mon, 28 Jul 2025 14:27:02 +0200 Subject: [PATCH 199/366] docs/: Add installation reference. Signed-off-by: wxyyy0117 --- docs/development-instructions.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/development-instructions.rst b/docs/development-instructions.rst index bce7eeff..de3ee20a 100644 --- a/docs/development-instructions.rst +++ b/docs/development-instructions.rst @@ -20,6 +20,7 @@ Environment Setup * Install `Arduino IDE (2.0 or higher) `_ * Or Install `Arduino CLI (1.0.0 or higher) `_ * Python + * Follow the :doc:`installation-instructions` #. Create a ``/hardware/arduino-git`` folder. Where ```` is the location of your Arduino sketchbook. The ```` default is OS-dependent: From 2c83bf348fb9ef9f409fd4871224fec156b91307 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 14 Aug 2025 14:07:44 +0200 Subject: [PATCH 200/366] .github/workflows/hil_checks.yml: Update hil workflow. Signed-off-by: zhanglinjing --- .github/workflows/hil-unity-checks.yml | 237 ------------------------- .github/workflows/hil_checks.yml | 13 ++ 2 files changed, 13 insertions(+), 237 deletions(-) delete mode 100644 .github/workflows/hil-unity-checks.yml create mode 100644 .github/workflows/hil_checks.yml diff --git a/.github/workflows/hil-unity-checks.yml b/.github/workflows/hil-unity-checks.yml deleted file mode 100644 index 3e1aa01b..00000000 --- a/.github/workflows/hil-unity-checks.yml +++ /dev/null @@ -1,237 +0,0 @@ -name: Hil unity library checks - -# on which event should we start push, pull request or schedule dispatches -on: - - push - -env: - TEST_VERSION: 1.0.0 - -permissions: - contents: write - -# This template runes multiple workflows -jobs: - - - ############################################################################# - # This action sets common variables for the flow and - # identifies the libs to compile - setup: - - # we run this on self hosted runner, use labels to be more specific - # add specific names if there are some, otherwise self-hosted, X64, Linux are the default ones - runs-on: - - self-hosted - - X64 - - Linux - - steps: - # checkout the latest github action code - - name: Checkout actions - uses: actions/checkout@v4 - with: - token: ${{ secrets.UNITY_TOKEN }} - submodules: recursive - - # checkout the latest arduino-cli compiler - - name: Setup Arduino CLI - uses: arduino/setup-arduino-cli@master - - # Update the arduino code. Attention this does not setup XMC packages as this are set inside the self hosted runner - # the arduino board support packages can be updated automatically - # the XMC board support package is only linked inside the self hosted runner, which allows - # to use none official and beta versions - # arduino-cli core install "infineon:xmc" - - name: Install/Update Arduino Platform - run: | - arduino-cli core update-index - arduino-cli core install "arduino:avr" - - # Fetch variables and move them to the GITHUB_OUTPUT and fetch HIL information - - id: startup - run: | - # switch on the HIL - cd /opt/runner_support/ - REPO="$(basename "$GITHUB_REPOSITORY")" - ./py_checkusb.py --switch repo --namelist $REPO --onoff on - - # set the hil-unity-checks - hil=$(./py_checkusb.py --readyaml $GITHUB_WORKSPACE/tests/hil-unity-checklist.yaml --json) - echo "hil=${hil}" >> $GITHUB_OUTPUT - - # fetch unity libraries - readarray -t data < <(echo $hil | jq -r '.|keys[]') - export dev=$(jq --compact-output --null-input '$ARGS.positional' --args -- "${data[@]}") - echo "devices=${dev}" >> $GITHUB_OUTPUT - echo "devices=${dev}" - - # Connect the GITHUB_OUTPUT to the variables and the workflow output mechanism - outputs: - hil: ${{ steps.startup.outputs.hil }} - devices: ${{ steps.startup.outputs.devices }} - - - ############################################################################# - # This step allows HIL (Hardware in the loop), therefore - # is searches for the given board/sensor combination and tries to find the actual port - # on the self hosted runner. (see documentation for the board2port finder) - flash: - - # We need a successful build before we can run the deploy - needs: [setup] - - # we run this on self hosted runner, use labels to be more specific - # add specific names if there are some, otherwise self-hosted, X64, Linux are the default ones - runs-on: - - self-hosted - - X64 - - Linux - - # do not stop if a single job fails - continue-on-error: true - - strategy: - - # the code to flash - matrix: - # the serials of the hardware boards - device: ${{ fromJson(needs.setup.outputs.devices) }} - - # These are the steps which should run for each combination of fqbn and lib code - steps: - # checkout the latest github action code - - name: Checkout actions - uses: actions/checkout@v4 - with: - token: ${{ secrets.UNITY_TOKEN }} - submodules: recursive - - # setup environment - - name: Environment - run: | - cd $HOME - rm -rf ~/.arduino15/packages/Infineon/hardware/xmc/* - ln -s $GITHUB_WORKSPACE ~/.arduino15/packages/Infineon/hardware/xmc/$TEST_VERSION - - hil=${{ toJson(needs.setup.outputs.hil) }} - REPO="$(basename "$GITHUB_REPOSITORY")" - DEVICE="$(basename ${{ matrix.device }} )" - LIBRARY=$(echo $hil | jq ".\"${DEVICE}\"" -r --compact-output) - FQBN=`tr '.' ':' <<<"${DEVICE}"` - - echo "repo=$REPO" >> $GITHUB_ENV - echo "device=$DEVICE" >> $GITHUB_ENV - echo "version=$TEST_VERSION" >> $GITHUB_ENV - echo "library=$LIBRARY" >> $GITHUB_ENV - echo "fqbn=$FQBN" >> $GITHUB_ENV - - echo "Repo " $REPO - echo "Device " $DEVICE - echo "Library " $LIBRARY - echo "FQBN " $FQBN - echo "Version " ${TEST_VERSION} - - # Build the test code with make and flash it to the board - # runs via nested loops: - # - first loop over the libraries mentioned for a device in the yaml file - # - selects the serial ids and ports for all devices connected with this device and library - # - second loop over the examples mentioned below the selected device for a library in the yaml file - # - third loop over the tests mentioned below the selected example for a device and library in the yaml file - # - fourth loop over the make commands mentioned below the selected test for a device, example and library in the yaml file - - - name: Build - run: | - export TMPDIR=$HOME/tmp - mkdir -p $TMPDIR - rm -rf $HOME/artefact - mkdir -p $HOME/artefact - - lib=${{ toJson(env.library) }} - readarray -t LIBS < <(echo ${lib} | jq ".|keys[]" -r --compact-output) - - # loop over all libs in the unity test yaml - for LIB in "${LIBS[@]}"; do - cd /opt/runner_support/ - readarray -t SERIALS < <(echo $(./py_checkusb.py --type ${LIB} --json) | jq ".\"${LIB}\".\"${{ env.device }}\"|keys[]" -r) - - # check if we have one or more serial numbers for this lib or stop here - if [[ -z $SERIALS ]]; then - echo "No serial or library information found" - exit 0 - fi - - # loop over all serials and fetch the ports - declare -a PORTS - for SERIAL in "${SERIALS[@]}"; do - PORTS+=($(/opt/runner_support/find_usb.sh $SERIAL)) - done - - # loop over all examples for one library - readarray -t EXAMPLES < <(echo $lib | jq ".\"${LIB}\"|keys[]" -r --compact-output) - for EXAMPLE in "${EXAMPLES[@]}"; do - echo "==============================================================================================================" - echo "Run for EXAMPLE: ${EXAMPLE} under LIB: ${LIB}" - echo "==============================================================================================================" - - # loop over all tests for one example and compile7flash the devices - readarray -t TESTS < <(echo $lib | jq ".\"${LIB}\".\"${EXAMPLE}\"[]" -r --compact-output) - for ((idx=0; idx<${#TESTS[@]}; ++idx)); do - cd $GITHUB_WORKSPACE/tests/arduino-core-tests/ - echo "==============================================================================================================" - echo "Run on index $idx for TEST: ${TESTS[idx]} under EXAMPLE: ${EXAMPLE} and LIB: ${LIB} on port: ${PORTS[idx]}" - echo "==============================================================================================================" - make FQBN=${{ env.fqbn }} PORT=${PORTS[idx]} UNITY_PATH=/opt/Unity ${TESTS[idx]} - mkdir -p ~/artefact/${LIB}/${EXAMPLE}/${TESTS[idx]}/ - mv ./build/build/* ~/artefact/${LIB}/${EXAMPLE}/${TESTS[idx]}/. - echo "==============================================================================================================" - done # end of TEST loop flash - - # loop over all tests for one example and monitor the serial output - for ((idx=0; idx<${#TESTS[@]}; ++idx)); do - echo "==============================================================================================================" - echo "Monitor on index $idx for TEST: ${TESTS[idx]} under EXAMPLE: ${EXAMPLE} and LIB: ${LIB}" - timeout 1m \ - /opt/runner_support/py_console.py \ - --port ${PORTS[idx]} \ - --baud 115200 \ - --report ~/artefact/${LIB}/${EXAMPLE}/${TESTS[idx]}/${{ env.device }}/report.json - - echo "==============================================================================================================" - done # end of TEST loop monitor - - done # end of EXAMPLE loop - done # end of LIB loop - - # Upload the compiled HEX files to the GitHub server - - name: Artefact - uses: actions/upload-artifact@v4 - with: - name: ${{ env.device }} - path: ~/artefact/* - if-no-files-found: ignore - - - ############################################################################# - # Switch off the HIL after all tests are done - post: - - # we run this no matter if before fails - if: always() - # wait on first setup run before starting main function - needs: [setup, flash] - - # we run this on self hosted runner, use labels to be more specific - # add specific names if there are some, otherwise self-hosted, X64, Linux are the default ones - runs-on: - - self-hosted - - X64 - - Linux - - steps: - - name: Switch off HIL - run: | - cd /opt/runner_support/ - REPO="$(basename "$GITHUB_REPOSITORY")" - ./py_checkusb.py --switch repo --namelist $REPO --onoff off - diff --git a/.github/workflows/hil_checks.yml b/.github/workflows/hil_checks.yml new file mode 100644 index 00000000..0b34ad06 --- /dev/null +++ b/.github/workflows/hil_checks.yml @@ -0,0 +1,13 @@ +name: HIL Checks + +on: + pull_request: + push: + +jobs: + makers-devops: + uses: Infineon/makers-devops/.github/workflows/hil_checks.yml@4.0.0-hil-integration + with: + project-yaml: config/project.yml + user-yaml: config/user.yml + secrets: inherit \ No newline at end of file From d5855a457d1ee89dee4b3b1f43fda9263ea263aa Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 14 Aug 2025 14:08:53 +0200 Subject: [PATCH 201/366] config/: Add hil config. Signed-off-by: zhanglinjing --- config/project.yml | 131 +++++++++++++++++++++++++++++++++++++++++++++ config/user.yml | 19 +++++++ 2 files changed, 150 insertions(+) create mode 100644 config/project.yml create mode 100644 config/user.yml diff --git a/config/project.yml b/config/project.yml new file mode 100644 index 00000000..aa830a15 --- /dev/null +++ b/config/project.yml @@ -0,0 +1,131 @@ +# options: +# USE_CORE: +# name: Infineon:xmc@3.5.0 +# url: https://github.com/Infineon/XMC-for-Arduino/releases/latest/download/package_infineon_index.json +options: + USE_CORE: + name: local + url: https://balabla +# # INCLUDE: + # - filename + +compile: + compile-xmc-kit_xmc47_relax: + description: Compiling test_digitalio_single.cpp for XMC platform + command: make -f Makefile.arduino.mk test_digitalio_single compile + fqbns: [infineon:xmc:kit_xmc47_relax] + working_dir: tests/arduino-core-tests + +code-quality: + source-code-quality-clang-tidy: + description: clang-tidy check sources + tool: clang-tidy + command: extras/makers-devops/src/python/code_checks/run_clang_tidy.sh ./cores/xmc/* ./libraries/* + + source-code-quality-cppcheck: + description: cppcheck check sources + tool: cppcheck + command: extras/makers-devops/src/python/code_checks/run_cppcheck.sh ./cores/xmc/* + | -I extras/arduino-core-api/api/ -I cores/xmc/xmc_lib/XMCLib/inc/ -I variants/XMC1400/config/KIT_XMC14_2GO + | -I variants/XMC1400 -I cores/xmc/avr -I cores/xmc/usblib -I cores/xmc/xmc_lib/inc + | -I /cores/xmc + | -i cores/xmc/xmc_lib/ -i cores/xmc/api/ --suppress=*:cores/xmc/xmc_lib/* + | --suppress=*:extras/arduino-core-api/api/* --suppress=*:cores/xmc/api/* + +# test-code-quality-clang-tidy: +# description: clang-tidy check tests +# tool: clang-tidy +# command: extras/makers-devops/tools/code_checks/run_clang_tidy.sh ./tests/arduino-core-tests/src/* + +# test-code-quality-cppcheck: +# description: cppcheck check tests +# tool: cppcheck +# command: extras/makers-devops/tools/code_checks/run_cppcheck.sh ./tests/arduino-core-tests/src/* +# | -I extras/arduino-core-api/api/ -I variants/CY8CKIT-062S2-AI/mtb-bsp -I extras/mtb-libs/core-lib/include +# | -I libraries/WiFi/src -I libraries/Wire/src -I libraries/SPI/src -I extras/mtb-libs/mtb-hal-cat1/include +# | -I extras/mtb-libs/wifi-connection-manager/include --suppress=*:extras/mtb-libs/wifi-connection-manager/include* +# | -I tests/arduino-core-tests/Unity/src --suppress=*:tests/arduino-core-tests/Unity/src/* +# | -I variants/CY8CKIT-062S2-AI -I cores/psoc6 --suppress=*:variants/CY8CKIT-062S2-AI/* --suppress=*:extras/mtb-libs/mtb-hal-cat1/include/* +# | --suppress=*:extras/arduino-core-api/api/* --suppress=*:cores/psoc6/api/* --suppress=*:variants/CY8CKIT-062S2-AI/mtb-bsp/* --suppress=*:extras/mtb-libs/core-lib/include/* + +# code-quality-clang-format: +# description: clang-tidy check sources +# tool: clang-format +# command: extras/makers-devops/tools/code_checks/run_clang_format.sh ./cores/psoc6/* ./libraries/* + +# code-quality-black-format: +# description: clang-tidy check sources +# tool: black-format +# command: extras/makers-devops/tools/code_checks/run_black.sh ./extras/makers-devops/tools/* + + + +unit-test: + unit-test-timer-4700: + - description: Compiling, flashing and monitoring timer unit test. + command: make test_time_single UNITY_PATH=/opt/Unity + query: time_single_board == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + unit-test-pwm-4700: + - description: Compiling, flashing and monitoring timer unit test. + command: make test_analogio_pwm UNITY_PATH=/opt/Unity + query: analogio_pwm_single_board == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + unit-test-iic-4700: + - description: Compiling, flashing and monitoring timer unit test. + command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity + query: iic_ping_pong_single_board == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + unit-test-iic-pingpong-4700: + - description: Compiling, flashing and monitoring I2C pingpong slave unit test. + command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity + query: iic_ping_pong_multiple_boards_slave == '2:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + - description: Compiling, flashing and monitoring I2C pingpong master unit test. + command: make test_wire_connected2_masterpingpong UNITY_PATH=/opt/Unity + query: iic_ping_pong_multiple_boards_master == '2:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + unit-test-uart-connected2-4700: + - description: Compiling, flashing and monitoring uart rx unit test. + command: make test_uart_rx UNITY_PATH=/opt/Unity + query: uart_multiple_boards_rx == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + - description: Compiling, flashing and monitoring uart tx unit test. + command: make test_uart_tx UNITY_PATH=/opt/Unity + query: uart_multiple_boards_tx == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + unit-test-iic-pingpong-1400: + - description: Compiling, flashing and monitoring I2C pingpong slave unit test. + command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity + query: iic_ping_pong_multiple_boards_slave == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + - description: Compiling, flashing and monitoring I2C pingpong master unit test. + command: make test_wire_connected2_masterpingpong UNITY_PATH=/opt/Unity + query: iic_ping_pong_multiple_boards_master == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True \ No newline at end of file diff --git a/config/user.yml b/config/user.yml new file mode 100644 index 00000000..18627521 --- /dev/null +++ b/config/user.yml @@ -0,0 +1,19 @@ +# code-quality: +# - source-code-quality-clang-tidy +# - source-code-quality-cppcheck +# - test-code-quality-clang-tidy +# - test-code-quality-cppcheck +# - code-quality-clang-format +# - code-quality-black-format + +# compile: +# - compile-psoc6-cy8ckit_062s2_ai + + +unit-test: + - unit-test-iic-pingpong-4700 + - unit-test-iic-4700 +# - unit-test-uart-connected2-4700 + - unit-test-timer-4700 + - unit-test-pwm-4700 +# - unit-test-iic-pingpong-1400 \ No newline at end of file From 437cdc794eaf0a6b023ec1a18296d63b04f82b05 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 14 Aug 2025 14:09:14 +0200 Subject: [PATCH 202/366] .gitmodules: Add gir submodule for hil. Signed-off-by: zhanglinjing --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 442e75b4..d5a1cf7b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ [submodule "arduino-core-tests"] - path = tests/arduino-core-tests + path = extras/arduino-core-tests url = https://github.com/Infineon/arduino-core-tests.git [submodule "cores/arduino-core-api"] path = extras/arduino-core-api From 2e467dd687a5fc8862d88491f61e6ebfdd49ad24 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 14 Aug 2025 14:12:28 +0200 Subject: [PATCH 203/366] extras: Add submodules. Signed-off-by: zhanglinjing --- extras/arduino-devops | 2 +- extras/makers-devops | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/arduino-devops b/extras/arduino-devops index 267471c7..6c5339a9 160000 --- a/extras/arduino-devops +++ b/extras/arduino-devops @@ -1 +1 @@ -Subproject commit 267471c79da2e7da81759d27b519da3507b5a563 +Subproject commit 6c5339a95fe79563b21f546507b5e99ff28d6333 diff --git a/extras/makers-devops b/extras/makers-devops index 377170f8..827cd7e3 160000 --- a/extras/makers-devops +++ b/extras/makers-devops @@ -1 +1 @@ -Subproject commit 377170f8456d9ee4c7836fb39ee25776ab66f446 +Subproject commit 827cd7e3d70725ff6bdc086ad773aa0a9d0327f1 From d5b1f95f96db5939b563c36162cc0e932ad62286 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 14 Aug 2025 14:15:28 +0200 Subject: [PATCH 204/366] tests: Delete old arduino-core-tests. Signed-off-by: zhanglinjing --- tests/arduino-core-tests | 1 - 1 file changed, 1 deletion(-) delete mode 160000 tests/arduino-core-tests diff --git a/tests/arduino-core-tests b/tests/arduino-core-tests deleted file mode 160000 index 7723c484..00000000 --- a/tests/arduino-core-tests +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7723c4848b1557ac12cf8611a8157c44ebf3c5c8 From c048d3da30234b8de5fa5c998c2deba14be947d6 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 14 Aug 2025 14:20:16 +0200 Subject: [PATCH 205/366] extras/arduino-core-tests: Update hotfix path. Signed-off-by: zhanglinjing --- extras/arduino-core-tests | 1 + 1 file changed, 1 insertion(+) create mode 160000 extras/arduino-core-tests diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests new file mode 160000 index 00000000..bd81caf9 --- /dev/null +++ b/extras/arduino-core-tests @@ -0,0 +1 @@ +Subproject commit bd81caf9af51aa3434cae5582f139d17f53019f8 From b276f5ba80fce5032f470f31fefc87b8487b44bb Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 14 Aug 2025 15:04:50 +0200 Subject: [PATCH 206/366] extras/arduino-core-tests: Update to main branch. Signed-off-by: zhanglinjing --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index bd81caf9..e07abd07 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit bd81caf9af51aa3434cae5582f139d17f53019f8 +Subproject commit e07abd07747572225f8c0cb7368cff2faa1237ec From 6bd6d660a3d782bf4627d410ae6577d7eea7700b Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 20 Aug 2025 10:04:15 +0200 Subject: [PATCH 207/366] config/user.yml: Add analog io adc test. Signed-off-by: zhanglinjing --- config/project.yml | 14 ++++++++++---- config/user.yml | 1 + extras/arduino-core-tests | 2 +- extras/arduino-devops | 2 +- extras/makers-devops | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/config/project.yml b/config/project.yml index aa830a15..5af7325e 100644 --- a/config/project.yml +++ b/config/project.yml @@ -75,8 +75,14 @@ unit-test: query: analogio_pwm_single_board == '1:1' working_dir: extras/arduino-core-tests options: - SEND_JOB_START_TOKEN: True - + SEND_JOB_START_TOKEN: True + + unit-test-analog-io-adc-4700: + - description: Compiling, flashing and monitoring ADC unit test. + command: make test_analogio_adc + query: analogio_adc_single_board == '1:1' + working_dir: extras/arduino-core-tests + unit-test-iic-4700: - description: Compiling, flashing and monitoring timer unit test. command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity @@ -99,7 +105,7 @@ unit-test: working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: True - + unit-test-uart-connected2-4700: - description: Compiling, flashing and monitoring uart rx unit test. command: make test_uart_rx UNITY_PATH=/opt/Unity @@ -128,4 +134,4 @@ unit-test: query: iic_ping_pong_multiple_boards_master == '1:1' working_dir: extras/arduino-core-tests options: - SEND_JOB_START_TOKEN: True \ No newline at end of file + SEND_JOB_START_TOKEN: True diff --git a/config/user.yml b/config/user.yml index 18627521..d4fe1038 100644 --- a/config/user.yml +++ b/config/user.yml @@ -16,4 +16,5 @@ unit-test: # - unit-test-uart-connected2-4700 - unit-test-timer-4700 - unit-test-pwm-4700 + - unit-test-analog-io-adc-4700 # - unit-test-iic-pingpong-1400 \ No newline at end of file diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index e07abd07..33e60836 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit e07abd07747572225f8c0cb7368cff2faa1237ec +Subproject commit 33e60836aaf16eb5f71e45f081514e9aec8e1c27 diff --git a/extras/arduino-devops b/extras/arduino-devops index 6c5339a9..267471c7 160000 --- a/extras/arduino-devops +++ b/extras/arduino-devops @@ -1 +1 @@ -Subproject commit 6c5339a95fe79563b21f546507b5e99ff28d6333 +Subproject commit 267471c79da2e7da81759d27b519da3507b5a563 diff --git a/extras/makers-devops b/extras/makers-devops index 827cd7e3..ecc78632 160000 --- a/extras/makers-devops +++ b/extras/makers-devops @@ -1 +1 @@ -Subproject commit 827cd7e3d70725ff6bdc086ad773aa0a9d0327f1 +Subproject commit ecc78632605f0000e3baa00bd589a74f25d1cff7 From d227bc9375ad87380ae6b5f9e46aa3683142cd84 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 20 Aug 2025 15:17:56 +0200 Subject: [PATCH 208/366] .github/workflows: Change branch of makers-devops. Signed-off-by: zhanglinjing --- .github/workflows/hil_checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hil_checks.yml b/.github/workflows/hil_checks.yml index 0b34ad06..6dc1e2fa 100644 --- a/.github/workflows/hil_checks.yml +++ b/.github/workflows/hil_checks.yml @@ -6,7 +6,7 @@ on: jobs: makers-devops: - uses: Infineon/makers-devops/.github/workflows/hil_checks.yml@4.0.0-hil-integration + uses: Infineon/makers-devops/.github/workflows/hil_checks.yml@main with: project-yaml: config/project.yml user-yaml: config/user.yml From 4899c5ff0eebf917891f20fc876239276f4bdf7a Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 20 Aug 2025 19:45:26 +0200 Subject: [PATCH 209/366] config: Diasble sync for Uart test. Signed-off-by: zhanglinjing --- config/project.yml | 8 ++++---- config/user.yml | 9 ++++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/config/project.yml b/config/project.yml index 5af7325e..97613ce9 100644 --- a/config/project.yml +++ b/config/project.yml @@ -108,18 +108,18 @@ unit-test: unit-test-uart-connected2-4700: - description: Compiling, flashing and monitoring uart rx unit test. - command: make test_uart_rx UNITY_PATH=/opt/Unity + command: make test_uart_rx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 query: uart_multiple_boards_rx == '1:1' working_dir: extras/arduino-core-tests options: - SEND_JOB_START_TOKEN: True + SEND_JOB_START_TOKEN: False - description: Compiling, flashing and monitoring uart tx unit test. - command: make test_uart_tx UNITY_PATH=/opt/Unity + command: make test_uart_tx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 query: uart_multiple_boards_tx == '1:1' working_dir: extras/arduino-core-tests options: - SEND_JOB_START_TOKEN: True + SEND_JOB_START_TOKEN: False unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. diff --git a/config/user.yml b/config/user.yml index d4fe1038..1dd4174f 100644 --- a/config/user.yml +++ b/config/user.yml @@ -11,10 +11,13 @@ unit-test: - - unit-test-iic-pingpong-4700 +#kit_xmc47_relax + - unit-test-iic-4700 -# - unit-test-uart-connected2-4700 - unit-test-timer-4700 - unit-test-pwm-4700 - unit-test-analog-io-adc-4700 -# - unit-test-iic-pingpong-1400 \ No newline at end of file + - unit-test-iic-pingpong-4700 + - unit-test-uart-connected2-4700 +# kit_xmc14_2go + - unit-test-iic-pingpong-1400 \ No newline at end of file From 9767af6fd28b2772e33927ee907b44081393bbd7 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 20 Aug 2025 19:59:42 +0200 Subject: [PATCH 210/366] .github/workflows/hil_checks.yml: Only run on PR. Signed-off-by: zhanglinjing --- .github/workflows/hil_checks.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/hil_checks.yml b/.github/workflows/hil_checks.yml index 6dc1e2fa..b33eb25e 100644 --- a/.github/workflows/hil_checks.yml +++ b/.github/workflows/hil_checks.yml @@ -2,7 +2,6 @@ name: HIL Checks on: pull_request: - push: jobs: makers-devops: From b94ad3d72a5ee05e4f93876a98d988b3bfbdcb12 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 20 Aug 2025 20:14:10 +0200 Subject: [PATCH 211/366] config/project.yml: Add antoher uart test. Signed-off-by: zhanglinjing --- config/project.yml | 19 +++++++++++++++++-- config/user.yml | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/config/project.yml b/config/project.yml index 97613ce9..6830a198 100644 --- a/config/project.yml +++ b/config/project.yml @@ -108,18 +108,33 @@ unit-test: unit-test-uart-connected2-4700: - description: Compiling, flashing and monitoring uart rx unit test. - command: make test_uart_rx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 + command: make test_uart_connected2_rx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 query: uart_multiple_boards_rx == '1:1' working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: False - description: Compiling, flashing and monitoring uart tx unit test. - command: make test_uart_tx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 + command: make test_uart_connected2_tx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 query: uart_multiple_boards_tx == '1:1' working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: False + + unit-test-uart-4700: + - description: Compiling, flashing and monitoring uart rx unit test. + command: make test_uart_rx UNITY_PATH=/opt/Unity + query: uart_multiple_boards_rx == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + - description: Compiling, flashing and monitoring uart tx unit test. + command: make test_uart_tx UNITY_PATH=/opt/Unity + query: uart_multiple_boards_tx == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. diff --git a/config/user.yml b/config/user.yml index 1dd4174f..f3f33405 100644 --- a/config/user.yml +++ b/config/user.yml @@ -18,6 +18,7 @@ unit-test: - unit-test-pwm-4700 - unit-test-analog-io-adc-4700 - unit-test-iic-pingpong-4700 + - unit-test-uart-4700 - unit-test-uart-connected2-4700 # kit_xmc14_2go - unit-test-iic-pingpong-1400 \ No newline at end of file From e4ddaff0ade5045be4b82d3031fd296bb7e35fdc Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 21 Aug 2025 09:40:59 +0200 Subject: [PATCH 212/366] config/: Add all single test. Signed-off-by: zhanglinjing --- config/project.yml | 30 +++++++++++++++++++++++++++--- config/user.yml | 11 +++++++---- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/config/project.yml b/config/project.yml index 6830a198..306a5ec3 100644 --- a/config/project.yml +++ b/config/project.yml @@ -61,15 +61,39 @@ code-quality: unit-test: - unit-test-timer-4700: + unit-test-digital-io-4700: + - description: Compiling, flashing and monitoring digital IO unit test. + command: make test_digitalio_single + query: digital_io_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-tone-4700: + - description: Compiling, flashing and monitoring tone, no-tone unit test. + command: make test_tone_no_tone + query: tone_no_tone_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-interrupts-4700: + - description: Compiling, flashing and monitoring Interrupts unit test. + command: make test_interrupts_single + query: interrupts_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-random-4700: + - description: Compiling, flashing and monitoring random unit test. + command: make test_random + query: random_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-time-4700: - description: Compiling, flashing and monitoring timer unit test. command: make test_time_single UNITY_PATH=/opt/Unity query: time_single_board == '1:1' working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: True - - unit-test-pwm-4700: + + unit-test-analog-io-pwm-4700: - description: Compiling, flashing and monitoring timer unit test. command: make test_analogio_pwm UNITY_PATH=/opt/Unity query: analogio_pwm_single_board == '1:1' diff --git a/config/user.yml b/config/user.yml index f3f33405..5248d906 100644 --- a/config/user.yml +++ b/config/user.yml @@ -12,11 +12,14 @@ unit-test: #kit_xmc47_relax - - - unit-test-iic-4700 - - unit-test-timer-4700 - - unit-test-pwm-4700 + - unit-test-digital-io-4700 + - unit-test-tone-4700 + - unit-test-interrupts-4700 + - unit-test-random-4700 + - unit-test-time-4700 + - unit-test-analog-io-pwm-4700 - unit-test-analog-io-adc-4700 + - unit-test-iic-4700 - unit-test-iic-pingpong-4700 - unit-test-uart-4700 - unit-test-uart-connected2-4700 From 3284049a103b2313cfc04d40f11f2730ec258a4d Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Thu, 21 Aug 2025 17:00:32 +0200 Subject: [PATCH 213/366] config/: Add single board tests 1400. Signed-off-by: zhanglinjing --- config/project.yml | 71 +++++++++++++++++++++++++++++++++++++++++++++ config/user.yml | 34 ++++++++++++++-------- tests/test_config.h | 3 +- 3 files changed, 95 insertions(+), 13 deletions(-) diff --git a/config/project.yml b/config/project.yml index 306a5ec3..2546b02d 100644 --- a/config/project.yml +++ b/config/project.yml @@ -160,6 +160,21 @@ unit-test: options: SEND_JOB_START_TOKEN: True + unit-test-pulse-4700: + - description: Compiling, flashing and monitoring pulse board1 unit test. + command: make test_pulse_board1 UNITY_PATH=/opt/Unity + query: pulse_board1 == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + - description: Compiling, flashing and monitoring pulse board2 unit test. + command: make test_pulse_board2 UNITY_PATH=/opt/Unity + query: pulse_board2 == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity @@ -174,3 +189,59 @@ unit-test: working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: True + + unit-test-digital-io-1400: + - description: Compiling, flashing and monitoring digital IO unit test. + command: make test_digitalio_single + query: digital_io_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-tone-1400: + - description: Compiling, flashing and monitoring tone, no-tone unit test. + command: make test_tone_no_tone + query: tone_no_tone_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-interrupts-1400: + - description: Compiling, flashing and monitoring Interrupts unit test. + command: make test_interrupts_single + query: interrupts_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-random-1400: + - description: Compiling, flashing and monitoring random unit test. + command: make test_random + query: random_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-time-1400: + - description: Compiling, flashing and monitoring timer unit test. + command: make test_time_single UNITY_PATH=/opt/Unity + query: time_single_board == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + unit-test-analog-io-pwm-1400: + - description: Compiling, flashing and monitoring timer unit test. + command: make test_analogio_pwm UNITY_PATH=/opt/Unity + query: analogio_pwm_single_board == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + unit-test-analog-io-adc-4700: + - description: Compiling, flashing and monitoring ADC unit test. + command: make test_analogio_adc + query: analogio_adc_single_board == '1:1' + working_dir: extras/arduino-core-tests + + unit-test-iic-1400: + - description: Compiling, flashing and monitoring timer unit test. + command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity + query: iic_ping_pong_single_board == '1:1' + working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: True + + \ No newline at end of file diff --git a/config/user.yml b/config/user.yml index 5248d906..b45c3395 100644 --- a/config/user.yml +++ b/config/user.yml @@ -12,16 +12,26 @@ unit-test: #kit_xmc47_relax - - unit-test-digital-io-4700 - - unit-test-tone-4700 - - unit-test-interrupts-4700 - - unit-test-random-4700 - - unit-test-time-4700 - - unit-test-analog-io-pwm-4700 - - unit-test-analog-io-adc-4700 - - unit-test-iic-4700 - - unit-test-iic-pingpong-4700 - - unit-test-uart-4700 - - unit-test-uart-connected2-4700 +# - unit-test-digital-io-4700 +# - unit-test-tone-4700 +# - unit-test-interrupts-4700 + - unit-test-random-4700 +# - unit-test-time-4700 +# - unit-test-analog-io-pwm-4700 +# - unit-test-analog-io-adc-4700 +# - unit-test-iic-4700 +# - unit-test-iic-pingpong-4700 +# - unit-test-uart-4700 +# - unit-test-uart-connected2-4700 +# - unit-test-pulse-4700 + # kit_xmc14_2go - - unit-test-iic-pingpong-1400 \ No newline at end of file +# - unit-test-iic-pingpong-1400 +# - unit-test-digital-io-1400 +# - unit-test-tone-1400 +# - unit-test-interrupts-1400 +# - unit-test-random-1400 +# - unit-test-time-1400 +# - unit-test-analog-io-pwm-1400 +# - unit-test-analog-io-adc-1400 +# - unit-test-iic-1400 diff --git a/tests/test_config.h b/tests/test_config.h index 5458951a..25a95aa3 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -22,7 +22,8 @@ #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground -#define ADC_RESOLUTION 1023 // ADC resolution +#define TEST_ADC_MAX_VALUE 4095 +#define TEST_ADC_RESOLUTION 1023 // ADC resolution #define TEST_PIN_ANALOG_IO_DAC 53 #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 From 2407a075d9ec90ae0d9769b2e566a2858768d1ce Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 22 Aug 2025 10:12:31 +0200 Subject: [PATCH 214/366] config/: Only enable 4700. Signed-off-by: zhanglinjing --- config/user.yml | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/config/user.yml b/config/user.yml index b45c3395..a6d4db90 100644 --- a/config/user.yml +++ b/config/user.yml @@ -12,26 +12,26 @@ unit-test: #kit_xmc47_relax -# - unit-test-digital-io-4700 -# - unit-test-tone-4700 -# - unit-test-interrupts-4700 - - unit-test-random-4700 -# - unit-test-time-4700 -# - unit-test-analog-io-pwm-4700 -# - unit-test-analog-io-adc-4700 -# - unit-test-iic-4700 -# - unit-test-iic-pingpong-4700 -# - unit-test-uart-4700 -# - unit-test-uart-connected2-4700 -# - unit-test-pulse-4700 + - unit-test-digital-io-4700 + - unit-test-tone-4700 + - unit-test-interrupts-4700 + - unit-test-random-4700 + - unit-test-time-4700 + - unit-test-analog-io-pwm-4700 + - unit-test-analog-io-adc-4700 + - unit-test-iic-4700 + - unit-test-iic-pingpong-4700 + - unit-test-uart-4700 + - unit-test-uart-connected2-4700 + - unit-test-pulse-4700 # kit_xmc14_2go -# - unit-test-iic-pingpong-1400 -# - unit-test-digital-io-1400 -# - unit-test-tone-1400 -# - unit-test-interrupts-1400 -# - unit-test-random-1400 -# - unit-test-time-1400 -# - unit-test-analog-io-pwm-1400 -# - unit-test-analog-io-adc-1400 -# - unit-test-iic-1400 + # - unit-test-iic-pingpong-1400 + # - unit-test-digital-io-1400 + # - unit-test-tone-1400 + # - unit-test-interrupts-1400 + # - unit-test-random-1400 + # - unit-test-time-1400 + # - unit-test-analog-io-pwm-1400 + # - unit-test-analog-io-adc-1400 + # - unit-test-iic-1400 From 13bfcc8eb957c379523a2c41e67496c5aa527d17 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 22 Aug 2025 10:15:16 +0200 Subject: [PATCH 215/366] extras/: Update all submodule to main. Signed-off-by: zhanglinjing --- extras/arduino-core-tests | 2 +- extras/makers-devops | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index 33e60836..da2d364e 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit 33e60836aaf16eb5f71e45f081514e9aec8e1c27 +Subproject commit da2d364e949c2b75ba63d6f4b3a459e65813b3f3 diff --git a/extras/makers-devops b/extras/makers-devops index ecc78632..64397779 160000 --- a/extras/makers-devops +++ b/extras/makers-devops @@ -1 +1 @@ -Subproject commit ecc78632605f0000e3baa00bd589a74f25d1cff7 +Subproject commit 64397779460af767e89f5ccee27958f2b797e82e From dc89baa3d698fea9e63fce90cda340d97465ab15 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 22 Aug 2025 13:02:37 +0200 Subject: [PATCH 216/366] config/project.yml: Fix wiring name. Signed-off-by: zhanglinjing --- config/project.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/project.yml b/config/project.yml index 2546b02d..138cdd7b 100644 --- a/config/project.yml +++ b/config/project.yml @@ -163,14 +163,14 @@ unit-test: unit-test-pulse-4700: - description: Compiling, flashing and monitoring pulse board1 unit test. command: make test_pulse_board1 UNITY_PATH=/opt/Unity - query: pulse_board1 == '1:1' + query: adv_io_pulse_board1 == '1:1' working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: True - description: Compiling, flashing and monitoring pulse board2 unit test. command: make test_pulse_board2 UNITY_PATH=/opt/Unity - query: pulse_board2 == '1:1' + query: adv_io_pulse_board2 == '1:1' working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: True From bc75f70af1a4fbcaa8e0a5690d4c4b1a6f5958eb Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 25 Aug 2025 11:43:47 +0200 Subject: [PATCH 217/366] tests/test_config.h: Fix format. Signed-off-by: zhanglinjing --- tests/test_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index 25a95aa3..5dfc51a2 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -22,8 +22,8 @@ #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground -#define TEST_ADC_MAX_VALUE 4095 -#define TEST_ADC_RESOLUTION 1023 // ADC resolution +#define TEST_ADC_MAX_VALUE 4095 +#define TEST_ADC_RESOLUTION 1023 // ADC resolution #define TEST_PIN_ANALOG_IO_DAC 53 #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 From ecfe355e0a700532c707835ad339b633097ae345 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 25 Aug 2025 14:23:10 +0200 Subject: [PATCH 218/366] config/user.yml: Disable failing test. Signed-off-by: zhanglinjing --- config/user.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/config/user.yml b/config/user.yml index a6d4db90..e23f80e4 100644 --- a/config/user.yml +++ b/config/user.yml @@ -12,18 +12,18 @@ unit-test: #kit_xmc47_relax - - unit-test-digital-io-4700 + # - unit-test-digital-io-4700 - unit-test-tone-4700 - unit-test-interrupts-4700 - - unit-test-random-4700 - - unit-test-time-4700 + # - unit-test-random-4700 + # - unit-test-time-4700 - unit-test-analog-io-pwm-4700 - - unit-test-analog-io-adc-4700 - - unit-test-iic-4700 + # - unit-test-analog-io-adc-4700 + # - unit-test-iic-4700 - unit-test-iic-pingpong-4700 - - unit-test-uart-4700 + # - unit-test-uart-4700 - unit-test-uart-connected2-4700 - - unit-test-pulse-4700 + # - unit-test-pulse-4700 # kit_xmc14_2go # - unit-test-iic-pingpong-1400 From 93b94b46d8ae9bef54dc0d5b10caccb3b3aebd3b Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 25 Aug 2025 14:51:48 +0200 Subject: [PATCH 219/366] config/user.yml: Disable unstable uart test. Signed-off-by: zhanglinjing --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index e23f80e4..87ed37d6 100644 --- a/config/user.yml +++ b/config/user.yml @@ -22,7 +22,7 @@ unit-test: # - unit-test-iic-4700 - unit-test-iic-pingpong-4700 # - unit-test-uart-4700 - - unit-test-uart-connected2-4700 + # - unit-test-uart-connected2-4700 # - unit-test-pulse-4700 # kit_xmc14_2go From d1cd5a7aab30aee47b9acf33dee0be7b67917024 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 25 Aug 2025 15:34:39 +0200 Subject: [PATCH 220/366] config/project.yml: Use global option. Signed-off-by: zhanglinjing --- config/project.yml | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/config/project.yml b/config/project.yml index 138cdd7b..c462567a 100644 --- a/config/project.yml +++ b/config/project.yml @@ -5,7 +5,7 @@ options: USE_CORE: name: local - url: https://balabla + SEND_JOB_START_TOKEN: true # # INCLUDE: # - filename @@ -90,16 +90,12 @@ unit-test: command: make test_time_single UNITY_PATH=/opt/Unity query: time_single_board == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-analog-io-pwm-4700: - description: Compiling, flashing and monitoring timer unit test. command: make test_analogio_pwm UNITY_PATH=/opt/Unity query: analogio_pwm_single_board == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-analog-io-adc-4700: - description: Compiling, flashing and monitoring ADC unit test. @@ -112,23 +108,17 @@ unit-test: command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity query: iic_ping_pong_single_board == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-iic-pingpong-4700: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity query: iic_ping_pong_multiple_boards_slave == '2:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True - description: Compiling, flashing and monitoring I2C pingpong master unit test. command: make test_wire_connected2_masterpingpong UNITY_PATH=/opt/Unity query: iic_ping_pong_multiple_boards_master == '2:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-uart-connected2-4700: - description: Compiling, flashing and monitoring uart rx unit test. @@ -150,45 +140,33 @@ unit-test: command: make test_uart_rx UNITY_PATH=/opt/Unity query: uart_multiple_boards_rx == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True - description: Compiling, flashing and monitoring uart tx unit test. command: make test_uart_tx UNITY_PATH=/opt/Unity query: uart_multiple_boards_tx == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-pulse-4700: - description: Compiling, flashing and monitoring pulse board1 unit test. command: make test_pulse_board1 UNITY_PATH=/opt/Unity query: adv_io_pulse_board1 == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True - description: Compiling, flashing and monitoring pulse board2 unit test. command: make test_pulse_board2 UNITY_PATH=/opt/Unity query: adv_io_pulse_board2 == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity query: iic_ping_pong_multiple_boards_slave == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True - description: Compiling, flashing and monitoring I2C pingpong master unit test. command: make test_wire_connected2_masterpingpong UNITY_PATH=/opt/Unity query: iic_ping_pong_multiple_boards_master == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-digital-io-1400: - description: Compiling, flashing and monitoring digital IO unit test. @@ -219,16 +197,12 @@ unit-test: command: make test_time_single UNITY_PATH=/opt/Unity query: time_single_board == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-analog-io-pwm-1400: - description: Compiling, flashing and monitoring timer unit test. command: make test_analogio_pwm UNITY_PATH=/opt/Unity query: analogio_pwm_single_board == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True unit-test-analog-io-adc-4700: - description: Compiling, flashing and monitoring ADC unit test. @@ -241,7 +215,5 @@ unit-test: command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity query: iic_ping_pong_single_board == '1:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: True \ No newline at end of file From 7f8b8ce2552a9b48c33147e163cca376e7aa189e Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Thu, 28 Aug 2025 17:36:02 +0200 Subject: [PATCH 221/366] core/xmc: Add random implementation. Signed-off-by: wxyyy0117 --- config/user.yml | 2 +- cores/xmc/WMath.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 cores/xmc/WMath.cpp diff --git a/config/user.yml b/config/user.yml index 87ed37d6..2da2ad63 100644 --- a/config/user.yml +++ b/config/user.yml @@ -15,7 +15,7 @@ unit-test: # - unit-test-digital-io-4700 - unit-test-tone-4700 - unit-test-interrupts-4700 - # - unit-test-random-4700 + - unit-test-random-4700 # - unit-test-time-4700 - unit-test-analog-io-pwm-4700 # - unit-test-analog-io-adc-4700 diff --git a/cores/xmc/WMath.cpp b/cores/xmc/WMath.cpp new file mode 100644 index 00000000..b71bc28f --- /dev/null +++ b/cores/xmc/WMath.cpp @@ -0,0 +1,57 @@ +/* + Copyright (c) 2011 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +//**************************************************************************** +// @Project Includes +//**************************************************************************** +extern "C" { +#include "stdlib.h" +#include "stdint.h" +} + +//**************************************************************************** +// @Local Functions +//**************************************************************************** + +void randomSeed(uint32_t dwSeed) { + if (dwSeed != 0) { + srand(dwSeed); + } +} + +long random(long howbig) { + if (howbig == 0) { + return 0; + } + + return rand() % howbig; +} + +long random(long howsmall, long howbig) { + if (howsmall >= howbig) { + return howsmall; + } + + long diff = howbig - howsmall; + + return random(diff) + howsmall; +} + +//**************************************************************************** +// END OF FILE +//**************************************************************************** \ No newline at end of file From 24cda12a00fd3e08edad2d5ad4c785ee6aef0fdc Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 7 Aug 2025 13:52:00 +0530 Subject: [PATCH 222/366] libraries/SPI: Refactored SPI. Signed-off-by: MDin --- libraries/SPI/src/HW_SPI.cpp | 302 +++++++++-------------------------- libraries/SPI/src/SPI.h | 208 ++++-------------------- 2 files changed, 104 insertions(+), 406 deletions(-) diff --git a/libraries/SPI/src/HW_SPI.cpp b/libraries/SPI/src/HW_SPI.cpp index 40a67bc1..27f90bee 100644 --- a/libraries/SPI/src/HW_SPI.cpp +++ b/libraries/SPI/src/HW_SPI.cpp @@ -1,270 +1,116 @@ /* - * SPI Master library. - * Copyright (c) 2015 Arduino LLC - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Copyright (c) 2018 Infineon Technologies AG - * This library has been modified for the XMC microcontroller series. + * SPI Master library implementation for XMC microcontrollers. */ -//**************************************************************************** -// @Project Includes -//**************************************************************************** #include "SPI.h" -#if !defined(USE_SW_SPI) - #include "Wire.h" - // swap SPI_default and SPI_for_xmc_SD if desired by user - #if defined(USE_XMC_RELAX_KIT_SD) && defined(XMC_SPI_for_xmc_SD) -SPIClass SPI(&XMC_SPI_default); -SPIClass SPI1(&XMC_SPI_for_xmc_SD); - #else // normal behaviour -SPIClass SPI(&XMC_SPI_default); - #if (NUM_SPI > 1) -SPIClass SPI1(&XMC_SPI_1); - #endif - #endif -uint8_t SS = PIN_SPI_SS; -uint8_t MOSI = PIN_SPI_MOSI; -uint8_t MISO = PIN_SPI_MISO; -uint8_t SCK = PIN_SPI_SCK; +// Constructor +XMC_SPIClass::XMC_SPIClass(XMC_SPI_t *spiConfig) + : XMC_SPI_Config(spiConfig), + initialized(false) {} - #if (NUM_SPI > 2) -SPIClass SPI2(&XMC_SPI_2); - #if (NUM_SPI > 3) -SPIClass SPI3(&XMC_SPI_3); - #if (NUM_SPI > 4) -SPIClass SPI4(&XMC_SPI_4); - #endif - #endif - #endif - -SPISettings DEFAULT_SPI_SETTINGS; - -//**************************************************************************** -// @Local Functions -//**************************************************************************** - -// Public Methods ////////////////////////////////////////////////////////////// - -void SPIClass::begin() { - // Check if desire USIC channel is already in use - if ((XMC_SPI_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_I2C) { - Wire.end(); - } - - init(); - - setBitOrder(DEFAULT_SPI_SETTINGS.bitOrder); - - setDataMode(DEFAULT_SPI_SETTINGS.dataMode); - - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, DEFAULT_SPI_SETTINGS.clockFreq); +// Explicit empty destructor +XMC_SPIClass::~XMC_SPIClass() { + // Explicitly empty - no dynamic memory used } -void SPIClass::init() { - if (initialized) { +// Arduino SPI API Methods +void XMC_SPIClass::begin() { + if (initialized) return; - } - - /* LLD initialization */ - XMC_SPI_CH_Init(XMC_SPI_config->channel, &(XMC_SPI_config->channel_config)); - - /* Configure the data input line selected */ - XMC_SPI_CH_SetInputSource(XMC_SPI_config->channel, XMC_SPI_CH_INPUT_DIN0, - (uint8_t)XMC_SPI_config->input_source); - - /* Start the SPI_Channel */ - XMC_SPI_CH_Start(XMC_SPI_config->channel); - /* Initialize SPI SCLK out pin */ - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_SPI_config->sclkout.port, - (uint8_t)XMC_SPI_config->sclkout.pin, &(XMC_SPI_config->sclkout_config)); - - /* Configure the input pin properties */ - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_SPI_config->miso.port, (uint8_t)XMC_SPI_config->miso.pin, - &(XMC_SPI_config->miso_config)); - - /* Configure the output pin properties */ - XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_SPI_config->mosi.port, (uint8_t)XMC_SPI_config->mosi.pin, - &(XMC_SPI_config->mosi_config)); - - interruptMode = SPI_IMODE_NONE; - interruptSave = 0; - interruptMask = 0; - initialized = true; + init(); } -void SPIClass::end() { - // Only disable HW when USIC is used for SPI - if ((XMC_SPI_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { - XMC_SPI_CH_Stop(XMC_SPI_config->channel); +void XMC_SPIClass::end() { + if (!initialized) + return; - XMC_SPI_config->channel->DXCR[XMC_USIC_CH_INPUT_DX0] = - (uint32_t)(XMC_SPI_config->channel->DXCR[XMC_USIC_CH_INPUT_DX0] | - (USIC_CH_DX0CR_DSEN_Msk)) & - (~USIC_CH_DX0CR_INSW_Msk); - XMC_USIC_CH_SetInputSource(XMC_SPI_config->channel, XMC_USIC_CH_INPUT_DX0, XMC_INPUT_A); + // Stop SPI hardware if in SPI mode + if ((XMC_SPI_Config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { + XMC_SPI_CH_Stop(XMC_SPI_Config->channel); } initialized = false; } -/* -// Function not used here -void SPIClass::usingInterrupt(int interruptNumber) -{ +uint8_t XMC_SPIClass::transfer(uint8_t data) { + // Send data via SPI + XMC_SPI_CH_Transmit(XMC_SPI_Config->channel, data, XMC_SPI_CH_MODE_STANDARD); -} -*/ - -void SPIClass::beginTransaction(SPISettings settings) { - // Check if desire USIC channel is already in use - if ((XMC_SPI_config->channel->CCR & USIC_CH_CCR_MODE_Msk) != XMC_USIC_CH_OPERATING_MODE_SPI) { - SPI.begin(); - } - setBitOrder(settings.bitOrder); - setDataMode(settings.dataMode); - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, settings.clockFreq); + // Wait for data transmission to complete + while (!(XMC_SPI_CH_GetStatusFlag(XMC_SPI_Config->channel) & + XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION)) + ; + XMC_SPI_CH_ClearStatusFlag(XMC_SPI_Config->channel, + XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION); - // TODO: Do sth with SS? + // Wait for data reception + while (XMC_USIC_CH_GetReceiveBufferStatus(XMC_SPI_Config->channel) == 0) + ; + return XMC_SPI_CH_GetReceivedData(XMC_SPI_Config->channel); } -void SPIClass::endTransaction(void) { - // TODO: inTransactionFlag and interrupt not use +uint16_t XMC_SPIClass::transfer16(uint16_t data) { + uint8_t msb = transfer((data >> 8) & 0xFF); + uint8_t lsb = transfer(data & 0xFF); + return (msb << 8) | lsb; } -void SPIClass::setBitOrder(uint8_t order) { - if (order == LSBFIRST) { - XMC_SPI_CH_SetBitOrderLsbFirst(XMC_SPI_config->channel); - } else { - XMC_SPI_CH_SetBitOrderMsbFirst(XMC_SPI_config->channel); +void XMC_SPIClass::transfer(void *buf, size_t count) { + uint8_t *buffer = (uint8_t *)buf; + for (size_t i = 0; i < count; i++) { + buffer[i] = transfer(buffer[i]); } } -void SPIClass::setDataMode(uint8_t mode) { - switch (mode) { - case SPI_MODE0: - // Low if inactive, transmit on falling clock, receive on raising clock edge - XMC_SPI_CH_ConfigureShiftClockOutput( - XMC_SPI_config->channel, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_0_DELAY_ENABLED, - XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); - break; - - case SPI_MODE1: - // Low if inactive, transmit on rising clock, receive on falling clock edge - XMC_SPI_CH_ConfigureShiftClockOutput( - XMC_SPI_config->channel, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_0_DELAY_DISABLED, - XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); - break; - - case SPI_MODE2: - // High if inactive, transmit on rising clock, receive on falling clock edge - XMC_SPI_CH_ConfigureShiftClockOutput( - XMC_SPI_config->channel, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_1_DELAY_ENABLED, - XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); - break; - - case SPI_MODE3: - // High if inactive, transmit on falling clock, receive on raising clock edge - XMC_SPI_CH_ConfigureShiftClockOutput( - XMC_SPI_config->channel, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_1_DELAY_DISABLED, - XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); - break; - - default: - break; - } +void XMC_SPIClass::attachInterrupt() { + // No implementation for attachInterrupt in XMC } -void SPIClass::setClockDivider(uint8_t div) { - switch (div) { - case SPI_CLOCK_DIV2: - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 8000000U); - break; - - case SPI_CLOCK_DIV4: - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 4000000U); - break; - - case SPI_CLOCK_DIV8: - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 2000000U); - break; - - case SPI_CLOCK_DIV16: - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 1000000U); - break; - - case SPI_CLOCK_DIV32: - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 500000U); - break; - - case SPI_CLOCK_DIV64: - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 250000U); - break; - - case SPI_CLOCK_DIV128: - XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 125000U); - break; - - default: - break; - } +void XMC_SPIClass::detachInterrupt() { + // No implementation for detachInterrupt in XMC } -uint8_t SPIClass::transfer(uint8_t data_out) { - uint8_t data_in = 0; +void XMC_SPIClass::usingInterrupt(int interruptNumber) { + // No implementation for usingInterrupt in XMC +} - /* Clear RBF0 */ - (void)XMC_SPI_CH_GetReceivedData(XMC_SPI_config->channel); - /* Clear RBF1 */ - (void)XMC_SPI_CH_GetReceivedData(XMC_SPI_config->channel); +void XMC_SPIClass::notUsingInterrupt(int interruptNumber) { + // No implementation for notUsingInterrupt in XMC +} - /*Sending a byte*/ - XMC_SPI_CH_Transmit(XMC_SPI_config->channel, data_out, XMC_SPI_CH_MODE_STANDARD); +void XMC_SPIClass::beginTransaction(arduino::SPISettings settings) { + // Configure SPI settings + if ((XMC_SPI_Config->channel->CCR & USIC_CH_CCR_MODE_Msk) != XMC_USIC_CH_OPERATING_MODE_SPI) { + begin(); + } - /*Wait till the byte has been transmitted*/ - while ((XMC_SPI_CH_GetStatusFlag(XMC_SPI_config->channel) & - XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION) == 0U) - ; - XMC_SPI_CH_ClearStatusFlag(XMC_SPI_config->channel, - XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION); + XMC_SPI_CH_SetBaudrate(XMC_SPI_Config->channel, settings.getClockFreq()); +} - while (XMC_USIC_CH_GetReceiveBufferStatus(XMC_SPI_config->channel) == 0U) - ; +void XMC_SPIClass::endTransaction() { + // Placeholder for endTransaction logic +} - data_in = XMC_SPI_CH_GetReceivedData(XMC_SPI_config->channel); +// Internal initialization logic +void XMC_SPIClass::init() { + if (initialized) + return; - XMC_SPI_CH_ClearStatusFlag(XMC_SPI_config->channel, - ((uint32_t)XMC_SPI_CH_STATUS_FLAG_RECEIVE_INDICATION | - (uint32_t)XMC_SPI_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)); + // Initialize hardware SPI + XMC_SPI_CH_Init(XMC_SPI_Config->channel, &(XMC_SPI_Config->channel_config)); + XMC_SPI_CH_SetInputSource(XMC_SPI_Config->channel, XMC_SPI_CH_INPUT_DIN0, + (uint8_t)XMC_SPI_Config->input_source); + XMC_SPI_CH_Start(XMC_SPI_Config->channel); - return data_in; + initialized = true; } -void SPIClass::attachInterrupt() { - // Should be enableInterrupt() -} +// Instantiate the global SPI object statically +XMC_SPIClass SPI(&XMC_SPI_default); -void SPIClass::detachInterrupt() { - // Should be disableInterrupt() +// Provide dummy operator delete implementation for embedded environments +void operator delete(void *ptr) { + // Do nothing - memory is not allocated dynamically } - -#endif - -//**************************************************************************** -// END OF FILE -//**************************************************************************** diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index b4854595..dcf6f909 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -1,57 +1,26 @@ /* - * SPI Master library. - * Copyright (c) 2015 Arduino LLC - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Copyright (c) 2018 Infineon Technologies AG - * This library has been modified for the XMC microcontroller series. + * SPI Master library for XMC microcontrollers. + * Inherits from Arduino's HardwareSPI. */ #ifndef _SPI_H_INCLUDED #define _SPI_H_INCLUDED -//**************************************************************************** -// @Project Includes -//**************************************************************************** #include +#include // Base HardwareSPI class provided by Arduino core for XMC -//**************************************************************************** -// @Defines -//**************************************************************************** -// Define USE_SW_SPI to use the software SPI(not verified) -// #define USE_SW_SPI - -// Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over -// the on-board SD Card slot. This feature is only available on KIT_XMC47_RELAX kits. -#if defined(KIT_XMC47_RELAX) - #define USE_XMC_RELAX_KIT_SD -#endif - +// SPI modes #define SPI_MODE0 0x00 #define SPI_MODE1 0x01 #define SPI_MODE2 0x02 #define SPI_MODE3 0x03 -#define SPI_IMODE_NONE 0x00 - +// Bit order definitions #define MSBFIRST 0x00 #define LSBFIRST 0x01 +// SPI Clock Dividers #define ARDUINO_SPI_CLOCK 16000000U - #define SPI_CLOCK_DIV2 2 #define SPI_CLOCK_DIV4 4 #define SPI_CLOCK_DIV8 8 @@ -60,157 +29,40 @@ #define SPI_CLOCK_DIV64 64 #define SPI_CLOCK_DIV128 128 -#if defined(USE_SW_SPI) - #include "SW_SPI.h" -#endif - -// #define pin_cs 10 -// -// #if defined(KIT_XMC_2GO_XMC1100_V1) || defined(XMC1100_H_BRIDGE2GO) -// #define pin_cs 3 - -// #elif defined(KIT_XMC_PLT2GO_XMC4200) -/// #define pin_cs_slot_1 95 -// #define pin_cs_slot_2 96 - -// #endif - -//**************************************************************************** -// @Class Definitions -//**************************************************************************** -class SPISettings { +// Custom SPI implementation class +class XMC_SPIClass : public arduino::HardwareSPI { public: - SPISettings(uint32_t cF, uint8_t bO, uint8_t dM) { - clockFreq = cF; - bitOrder = bO; - dataMode = dM; - } - - SPISettings() { - clockFreq = 4000000; - bitOrder = MSBFIRST; - dataMode = SPI_MODE0; - } - - uint32_t clockFreq; - uint8_t bitOrder; - uint8_t dataMode; -}; - -class SPIClass { -public: -// Constructors for HW SPI -#if !defined(USE_SW_SPI) - SPIClass() { - // default SPI - XMC_SPI_config = &XMC_SPI_default; - } - - SPIClass(XMC_SPI_t *conf) { XMC_SPI_config = conf; } - -// Constructors for SW SPI -#else - SPIClass() { - // default SPI - spi_settings = SPISettings(); + // Constructor + XMC_SPIClass(XMC_SPI_t *spiConfig); - mosi_pin = MOSI; - miso_pin = MISO; - clk_pin = SCK; - } + // Explicit empty destructor + ~XMC_SPIClass(); - SPIClass(SPISettings settings) { - spi_settings = settings; + // Implement required methods from HardwareSPI + void begin() override; + void end() override; + uint8_t transfer(uint8_t data) override; + uint16_t transfer16(uint16_t data) override; + void transfer(void *buf, size_t count) override; - mosi_pin = MOSI; - miso_pin = MISO; - clk_pin = SCK; - } + // Interrupt-related methods + void attachInterrupt() override; + void detachInterrupt() override; - SPIClass(SPISettings settings, uint8_t mosi, uint8_t miso, uint8_t sck) { - spi_settings = settings; - - mosi_pin = mosi; - miso_pin = miso; - clk_pin = sck; - } -#endif - - uint8_t transfer(uint8_t data); - inline uint16_t transfer16(uint16_t data); - inline void transfer(void *buf, size_t count); - - // Transaction Functions - // Function not used here - // void usingInterrupt(int interruptNumber); - void beginTransaction(SPISettings settings); - void endTransaction(void); - - // SPI Configuration methods - void attachInterrupt(); - void detachInterrupt(); - - static void usingInterrupt(uint8_t interruptNumber) {}; - static void notUsingInterrupt(uint8_t interruptNumber) {}; - - void begin(); - void end(); - - void setBitOrder(uint8_t order); - void setDataMode(uint8_t mode); - void setClockDivider(uint8_t div); + // Transaction-related methods + void usingInterrupt(int interruptNumber) override; + void notUsingInterrupt(int interruptNumber) override; + void beginTransaction(arduino::SPISettings settings) override; + void endTransaction() override; private: - void init(); -// Config for HW SPI -#if !defined(USE_SW_SPI) - - XMC_SPI_t *XMC_SPI_config; - -// Config for SW SPI -#else - uint8_t mosi_pin; - uint8_t miso_pin; - uint8_t clk_pin; - - SPISettings spi_settings; -#endif + void init(); // Internal initialization logic + XMC_SPI_t *XMC_SPI_Config; // XMC-specific SPI configuration bool initialized; - uint8_t interruptMode; - char interruptSave; - uint32_t interruptMask; }; -extern SPIClass SPI; -#if (NUM_SPI > 1) -extern SPIClass SPI1; - #if (NUM_SPI > 2) -extern SPIClass SPI2; - #if (NUM_SPI > 3) -extern SPIClass SPI3; - #if (NUM_SPI > 4) -extern SPIClass SPI4; - #endif - #endif - #endif -#endif - -void SPIClass::transfer(void *buf, size_t count) { - uint8_t *buffer = (uint8_t *)buf; - for (size_t index = 0; index < count; index++) { - buffer[index] = transfer(buffer[index]); - } -} - -uint16_t SPIClass::transfer16(uint16_t data) { - uint8_t data_out_msb = (uint8_t)((data >> 8) & 0xFF); - uint8_t data_out_lsb = (uint8_t)(data & 0xFF); - - uint8_t data_in_msb = transfer(data_out_msb); - uint8_t data_in_lsb = transfer(data_out_lsb); - - return (uint16_t)(((uint16_t)data_in_msb << 8) | (data_in_lsb)); -} +// Declare the global SPI object +extern XMC_SPIClass SPI; #endif /* _SPI_H_INCLUDED */ From 90f3478d34074dfd9e4e1cdaf0482402bb04c307 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 7 Aug 2025 13:52:52 +0530 Subject: [PATCH 223/366] variants: Modified pins_arduino. Signed-off-by: MDin --- .../config/KIT_XMC47_RELAX/pins_arduino.h | 246 ++++++++---------- 1 file changed, 108 insertions(+), 138 deletions(-) diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index 26e07fbc..c11f96c2 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -426,150 +426,120 @@ Uart Serial(&XMC_UART_0); // On-Board port Uart Serial1(&XMC_UART_1); -// // Three SPI instances possible -// XMC_SPI_t XMC_SPI_0 = { -// .channel = XMC_SPI2_CH0, -// .channel_config = {.baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, -// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)8}, -// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)7}, -// .miso_config = -// { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_C, -// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)9}, -// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// }; - -// XMC_SPI_t XMC_SPI_1 = { -// .channel = XMC_SPI0_CH1, -// .channel_config = {.baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, -// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, -// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// .miso = {.port = (XMC_GPIO_PORT_t *)PORT4_BASE, .pin = (uint8_t)0}, -// .miso_config = -// { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_E, -// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)6}, -// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// }; - -// XMC_SPI_t XMC_SPI_2 = { -// .channel = XMC_SPI2_CH1, -// .channel_config = {.baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, -// .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)11}, -// .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)12}, -// .miso_config = -// { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_D, -// .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, -// .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -// }; +// Three SPI instances possible +XMC_SPI_t XMC_SPI_0 = { + .channel = XMC_SPI2_CH0, + .channel_config = {.baudrate = 20003906U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)8}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)7}, + .miso_config = + { + .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + }, + .input_source = XMC_INPUT_C, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)9}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +}; + +XMC_SPI_t XMC_SPI_1 = { + .channel = XMC_SPI0_CH1, + .channel_config = {.baudrate = 20003906U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT4_BASE, .pin = (uint8_t)0}, + .miso_config = + { + .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + }, + .input_source = XMC_INPUT_E, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)6}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +}; + +XMC_SPI_t XMC_SPI_2 = { + .channel = XMC_SPI2_CH1, + .channel_config = {.baudrate = 20003906U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)11}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)12}, + .miso_config = + { + .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + }, + .input_source = XMC_INPUT_D, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +}; // Only two serial objects are possible: Serial and Serial1 so anymore serial interfaces has to // overwrite/reuse the existing serial objects // Will overwrite Serial -// XMC_SPI_t XMC_SPI_3 = -//{ -// .channel = XMC_SPI0_CH0, -// .channel_config = { -// .baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE -// }, -// .mosi = { -// .port = (XMC_GPIO_PORT_t*)PORT5_BASE, -// .pin = (uint8_t)1 -// }, -// .mosi_config = { -// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM -// }, -// .miso = { -// .port = (XMC_GPIO_PORT_t*)PORT5_BASE, -// .pin = (uint8_t)0 -// }, -// .miso_config = { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_D, -// .sclkout = { -// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, -// .pin = (uint8_t)8 -// }, -// .sclkout_config = { -// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM -// }, -// }; +XMC_SPI_t XMC_SPI_3 = { + .channel = XMC_SPI0_CH0, + .channel_config = {.baudrate = 20003906U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT5_BASE, .pin = (uint8_t)1}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT5_BASE, .pin = (uint8_t)0}, + .miso_config = + { + .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + }, + .input_source = XMC_INPUT_D, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)8}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +}; // Will overwrite Serial1 -// XMC_SPI_t XMC_SPI_4 = -//{ -// .channel = XMC_SPI1_CH0, -// .channel_config = { -// .baudrate = 20003906U, -// .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, -// .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, -// .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE -// }, -// .mosi = { -// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, -// .pin = (uint8_t)5 -// }, -// .mosi_config = { -// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM -// }, -// .miso = { -// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, -// .pin = (uint8_t)4 -// }, -// .miso_config = { -// .mode = XMC_GPIO_MODE_INPUT_TRISTATE, -// }, -// .input_source = XMC_INPUT_A, -// .sclkout = { -// .port = (XMC_GPIO_PORT_t*)PORT0_BASE, -// .pin = (uint8_t)11 -// }, -// .sclkout_config = { -// .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, -// .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, -// .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM -// }, -//}; +XMC_SPI_t XMC_SPI_4 = { + .channel = XMC_SPI1_CH0, + .channel_config = {.baudrate = 20003906U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)4}, + .miso_config = + { + .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + }, + .input_source = XMC_INPUT_A, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)11}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +}; // Two I2C instances possible XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C1_CH1, From 038d1622d188a6e0db72195a6c07a2d801f1bda1 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 18 Aug 2025 11:18:56 +0530 Subject: [PATCH 224/366] libraries/SPI: SPI implmentation compilation successful. Signed-off-by: MDin libraries/SPI: Modified SPI Implementation. Signed-off-by: MDin --- libraries/SPI/src/HW_SPI.cpp | 326 +++++++++++++++++++++++++++-------- libraries/SPI/src/SPI.h | 151 +++++++++++----- 2 files changed, 362 insertions(+), 115 deletions(-) diff --git a/libraries/SPI/src/HW_SPI.cpp b/libraries/SPI/src/HW_SPI.cpp index 27f90bee..e7428eb0 100644 --- a/libraries/SPI/src/HW_SPI.cpp +++ b/libraries/SPI/src/HW_SPI.cpp @@ -1,116 +1,292 @@ -/* - * SPI Master library implementation for XMC microcontrollers. - */ - #include "SPI.h" +#include -// Constructor -XMC_SPIClass::XMC_SPIClass(XMC_SPI_t *spiConfig) - : XMC_SPI_Config(spiConfig), - initialized(false) {} +void *operator new(size_t size) { return malloc(size); } -// Explicit empty destructor -XMC_SPIClass::~XMC_SPIClass() { - // Explicitly empty - no dynamic memory used -} +void operator delete(void *ptr) noexcept { free(ptr); } -// Arduino SPI API Methods -void XMC_SPIClass::begin() { - if (initialized) - return; +#if !defined(USE_SW_SPI) + #include "Wire.h" + + // swap SPI_default and SPI_for_xmc_SD if desired by user + #if defined(USE_XMC_RELAX_KIT_SD) && defined(XMC_SPI_for_xmc_SD) +XMCSPIClass SPI(&XMC_SPI_default); +XMCSPIClass SPI1(&XMC_SPI_for_xmc_SD); + #else // normal behaviour +XMCSPIClass SPI(&XMC_SPI_default); + #if (NUM_SPI > 1) +XMCSPIClass SPI1(&XMC_SPI_1); + #endif + #endif +uint8_t SS = PIN_SPI_SS; +uint8_t MOSI = PIN_SPI_MOSI; +uint8_t MISO = PIN_SPI_MISO; +uint8_t SCK = PIN_SPI_SCK; + + #if (NUM_SPI > 2) +XMCSPIClass SPI2(&XMC_SPI_2); + #if (NUM_SPI > 3) +XMCSPIClass SPI3(&XMC_SPI_3); + #if (NUM_SPI > 4) +XMCSPIClass SPI4(&XMC_SPI_4); + #endif + #endif + #endif + +//**************************************************************************** +// @Local Functions +//**************************************************************************** + +// Public Methods ////////////////////////////////////////////////////////////// +XMCSPIClass::XMCSPIClass(XMC_SPI_t *conf) + : XMC_SPI_config(conf), + initialized(false), + interruptMode(SPI_IMODE_NONE), + interruptSave(0), + interruptMask(0) {} + +XMCSPIClass::~XMCSPIClass() { end(); } + +void XMCSPIClass::begin() { + // Check if desire USIC channel is already in use + if ((XMC_SPI_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_I2C) { + Wire.end(); + } init(); + + setBitOrder(_settings.getBitOrder()); + + setDataMode(_settings.getDataMode()); + + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, _settings.getClockFreq()); } -void XMC_SPIClass::end() { - if (!initialized) +void XMCSPIClass::init() { + if (initialized) { return; + } + + /* LLD initialization */ + XMC_SPI_CH_Init(XMC_SPI_config->channel, &(XMC_SPI_config->channel_config)); + + /* Configure the data input line selected */ + XMC_SPI_CH_SetInputSource(XMC_SPI_config->channel, XMC_SPI_CH_INPUT_DIN0, + (uint8_t)XMC_SPI_config->input_source); - // Stop SPI hardware if in SPI mode - if ((XMC_SPI_Config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { - XMC_SPI_CH_Stop(XMC_SPI_Config->channel); + /* Start the SPI_Channel */ + XMC_SPI_CH_Start(XMC_SPI_config->channel); + + /* Initialize SPI SCLK out pin */ + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_SPI_config->sclkout.port, + (uint8_t)XMC_SPI_config->sclkout.pin, &(XMC_SPI_config->sclkout_config)); + + /* Configure the input pin properties */ + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_SPI_config->miso.port, (uint8_t)XMC_SPI_config->miso.pin, + &(XMC_SPI_config->miso_config)); + + /* Configure the output pin properties */ + XMC_GPIO_Init((XMC_GPIO_PORT_t *)XMC_SPI_config->mosi.port, (uint8_t)XMC_SPI_config->mosi.pin, + &(XMC_SPI_config->mosi_config)); + + interruptMode = SPI_IMODE_NONE; + interruptSave = 0; + interruptMask = 0; + initialized = true; +} + +void XMCSPIClass::end() { + // Only disable HW when USIC is used for SPI + if ((XMC_SPI_config->channel->CCR & USIC_CH_CCR_MODE_Msk) == XMC_USIC_CH_OPERATING_MODE_SPI) { + XMC_SPI_CH_Stop(XMC_SPI_config->channel); + + XMC_SPI_config->channel->DXCR[XMC_USIC_CH_INPUT_DX0] = + (uint32_t)(XMC_SPI_config->channel->DXCR[XMC_USIC_CH_INPUT_DX0] | + (USIC_CH_DX0CR_DSEN_Msk)) & + (~USIC_CH_DX0CR_INSW_Msk); + XMC_USIC_CH_SetInputSource(XMC_SPI_config->channel, XMC_USIC_CH_INPUT_DX0, XMC_INPUT_A); } initialized = false; } -uint8_t XMC_SPIClass::transfer(uint8_t data) { - // Send data via SPI - XMC_SPI_CH_Transmit(XMC_SPI_Config->channel, data, XMC_SPI_CH_MODE_STANDARD); +// Function not used here +void XMCSPIClass::usingInterrupt(int interruptNumber) {} - // Wait for data transmission to complete - while (!(XMC_SPI_CH_GetStatusFlag(XMC_SPI_Config->channel) & - XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION)) - ; - XMC_SPI_CH_ClearStatusFlag(XMC_SPI_Config->channel, - XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION); +void XMCSPIClass::notUsingInterrupt(int interruptNumber) {} - // Wait for data reception - while (XMC_USIC_CH_GetReceiveBufferStatus(XMC_SPI_Config->channel) == 0) - ; - return XMC_SPI_CH_GetReceivedData(XMC_SPI_Config->channel); +void XMCSPIClass::beginTransaction(arduino::SPISettings settings) { + // Check if desire USIC channel is already in use + if ((XMC_SPI_config->channel->CCR & USIC_CH_CCR_MODE_Msk) != XMC_USIC_CH_OPERATING_MODE_SPI) { + SPI.begin(); + } + _settings = settings; + setBitOrder(settings.getBitOrder()); + setDataMode(static_cast(settings.getDataMode())); + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, settings.getClockFreq()); + + // TODO: Do sth with SS? } -uint16_t XMC_SPIClass::transfer16(uint16_t data) { - uint8_t msb = transfer((data >> 8) & 0xFF); - uint8_t lsb = transfer(data & 0xFF); - return (msb << 8) | lsb; +void XMCSPIClass::endTransaction(void) { + // TODO: inTransactionFlag and interrupt not use } -void XMC_SPIClass::transfer(void *buf, size_t count) { - uint8_t *buffer = (uint8_t *)buf; - for (size_t i = 0; i < count; i++) { - buffer[i] = transfer(buffer[i]); +void XMCSPIClass::setBitOrder(BitOrder order) { + if (order == LSBFIRST) { + XMC_SPI_CH_SetBitOrderLsbFirst(XMC_SPI_config->channel); + } else { + XMC_SPI_CH_SetBitOrderMsbFirst(XMC_SPI_config->channel); } } -void XMC_SPIClass::attachInterrupt() { - // No implementation for attachInterrupt in XMC -} +void XMCSPIClass::setDataMode(uint8_t mode) { + switch (mode) { + case SPI_MODE0: + // Low if inactive, transmit on falling clock, receive on raising clock edge + XMC_SPI_CH_ConfigureShiftClockOutput( + XMC_SPI_config->channel, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_0_DELAY_ENABLED, + XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); + break; -void XMC_SPIClass::detachInterrupt() { - // No implementation for detachInterrupt in XMC -} + case SPI_MODE1: + // Low if inactive, transmit on rising clock, receive on falling clock edge + XMC_SPI_CH_ConfigureShiftClockOutput( + XMC_SPI_config->channel, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_0_DELAY_DISABLED, + XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); + break; -void XMC_SPIClass::usingInterrupt(int interruptNumber) { - // No implementation for usingInterrupt in XMC -} + case SPI_MODE2: + // High if inactive, transmit on rising clock, receive on falling clock edge + XMC_SPI_CH_ConfigureShiftClockOutput( + XMC_SPI_config->channel, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_1_DELAY_ENABLED, + XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); + break; + + case SPI_MODE3: + // High if inactive, transmit on falling clock, receive on raising clock edge + XMC_SPI_CH_ConfigureShiftClockOutput( + XMC_SPI_config->channel, XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_1_DELAY_DISABLED, + XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); + break; -void XMC_SPIClass::notUsingInterrupt(int interruptNumber) { - // No implementation for notUsingInterrupt in XMC + default: + break; + } } -void XMC_SPIClass::beginTransaction(arduino::SPISettings settings) { - // Configure SPI settings - if ((XMC_SPI_Config->channel->CCR & USIC_CH_CCR_MODE_Msk) != XMC_USIC_CH_OPERATING_MODE_SPI) { - begin(); +void XMCSPIClass::setClockDivider(uint8_t div) { + switch (div) { + case SPI_CLOCK_DIV2: + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 8000000U); + break; + + case SPI_CLOCK_DIV4: + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 4000000U); + break; + + case SPI_CLOCK_DIV8: + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 2000000U); + break; + + case SPI_CLOCK_DIV16: + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 1000000U); + break; + + case SPI_CLOCK_DIV32: + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 500000U); + break; + + case SPI_CLOCK_DIV64: + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 250000U); + break; + + case SPI_CLOCK_DIV128: + XMC_SPI_CH_SetBaudrate(XMC_SPI_config->channel, 125000U); + break; + + default: + break; } +} + +byte XMCSPIClass::transfer(uint8_t data_out) { + uint8_t data_in = 0; - XMC_SPI_CH_SetBaudrate(XMC_SPI_Config->channel, settings.getClockFreq()); + /* Clear RBF0 */ + (void)XMC_SPI_CH_GetReceivedData(XMC_SPI_config->channel); + /* Clear RBF1 */ + (void)XMC_SPI_CH_GetReceivedData(XMC_SPI_config->channel); + + /*Sending a byte*/ + XMC_SPI_CH_Transmit(XMC_SPI_config->channel, data_out, XMC_SPI_CH_MODE_STANDARD); + + /*Wait till the byte has been transmitted*/ + while ((XMC_SPI_CH_GetStatusFlag(XMC_SPI_config->channel) & + XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION) == 0U) + ; + XMC_SPI_CH_ClearStatusFlag(XMC_SPI_config->channel, + XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION); + + while (XMC_USIC_CH_GetReceiveBufferStatus(XMC_SPI_config->channel) == 0U) + ; + + data_in = XMC_SPI_CH_GetReceivedData(XMC_SPI_config->channel); + + XMC_SPI_CH_ClearStatusFlag(XMC_SPI_config->channel, + ((uint32_t)XMC_SPI_CH_STATUS_FLAG_RECEIVE_INDICATION | + (uint32_t)XMC_SPI_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)); + + return data_in; } -void XMC_SPIClass::endTransaction() { - // Placeholder for endTransaction logic +void XMCSPIClass::transfer(void *buf, size_t count) { + uint8_t *buffer = reinterpret_cast(buf); + const uint8_t *tx_buf; + uint8_t tx_temp_buf[count]; + + memcpy(tx_temp_buf, buffer, count); + tx_buf = tx_temp_buf; + for (size_t index = 0; index < count; index++) { + buffer[index] = transfer(tx_buf[index]); + } } -// Internal initialization logic -void XMC_SPIClass::init() { - if (initialized) - return; +uint16_t XMCSPIClass::transfer16(uint16_t data) { + union { + uint16_t val; - // Initialize hardware SPI - XMC_SPI_CH_Init(XMC_SPI_Config->channel, &(XMC_SPI_Config->channel_config)); - XMC_SPI_CH_SetInputSource(XMC_SPI_Config->channel, XMC_SPI_CH_INPUT_DIN0, - (uint8_t)XMC_SPI_Config->input_source); - XMC_SPI_CH_Start(XMC_SPI_Config->channel); + struct { + uint8_t lsb; + uint8_t msb; + }; + } data_in_out; - initialized = true; + // Split 16-bit word into two bytes: + data_in_out.val = data; + + if (_settings.getBitOrder() == LSBFIRST) { + transfer(&data_in_out.lsb, 1); + transfer(&data_in_out.msb, 1); + } else { + transfer(&data_in_out.msb, 1); + transfer(&data_in_out.lsb, 1); + } + + // Combine the two received bytes into a 16-bit word: + return data_in_out.val; } -// Instantiate the global SPI object statically -XMC_SPIClass SPI(&XMC_SPI_default); +void XMCSPIClass::attachInterrupt() { + // Should be enableInterrupt() +} -// Provide dummy operator delete implementation for embedded environments -void operator delete(void *ptr) { - // Do nothing - memory is not allocated dynamically +void XMCSPIClass::detachInterrupt() { + // Should be disableInterrupt() } + +#endif + +//**************************************************************************** +// END OF FILE +//**************************************************************************** \ No newline at end of file diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index dcf6f909..75730c76 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -1,26 +1,29 @@ -/* - * SPI Master library for XMC microcontrollers. - * Inherits from Arduino's HardwareSPI. - */ - #ifndef _SPI_H_INCLUDED #define _SPI_H_INCLUDED +//**************************************************************************** +// @Project Includes +//**************************************************************************** +#include "api/HardwareSPI.h" +#include "xmc_spi.h" #include -#include // Base HardwareSPI class provided by Arduino core for XMC -// SPI modes -#define SPI_MODE0 0x00 -#define SPI_MODE1 0x01 -#define SPI_MODE2 0x02 -#define SPI_MODE3 0x03 +//**************************************************************************** +// @Defines +//**************************************************************************** +// Define USE_SW_SPI to use the software SPI(not verified) +// #define USE_SW_SPI + +// Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over +// the on-board SD Card Slot. This feature is only available on XMC4700 RelaxKits. +#if defined(XMC4700_Relax_Kit) + #define USE_XMC_RELAX_KIT_SD +#endif -// Bit order definitions -#define MSBFIRST 0x00 -#define LSBFIRST 0x01 +#define SPI_IMODE_NONE 0x00 -// SPI Clock Dividers #define ARDUINO_SPI_CLOCK 16000000U + #define SPI_CLOCK_DIV2 2 #define SPI_CLOCK_DIV4 4 #define SPI_CLOCK_DIV8 8 @@ -29,40 +32,108 @@ #define SPI_CLOCK_DIV64 64 #define SPI_CLOCK_DIV128 128 -// Custom SPI implementation class -class XMC_SPIClass : public arduino::HardwareSPI { +#if defined(USE_SW_SPI) + #include "SW_SPI.h" +#endif + +class XMCSPIClass : public arduino::HardwareSPI { public: - // Constructor - XMC_SPIClass(XMC_SPI_t *spiConfig); +// Constructors for HW SPI +#if !defined(USE_SW_SPI) + XMCSPIClass() + : XMCSPIClass(&XMC_SPI_default) {} + + XMCSPIClass(XMC_SPI_t *conf); + ~XMCSPIClass(); +// Constructors for SW SPI +#else + SPIClass() { + // default SPI + spi_settings = SPISettings(); + + mosi_pin = MOSI; + miso_pin = MISO; + clk_pin = SCK; + } + + SPIClass(SPISettings settings) { + spi_settings = settings; + + mosi_pin = MOSI; + miso_pin = MISO; + clk_pin = SCK; + } - // Explicit empty destructor - ~XMC_SPIClass(); + SPIClass(SPISettings settings, uint8_t mosi, uint8_t miso, uint8_t sck) { + spi_settings = settings; - // Implement required methods from HardwareSPI - void begin() override; - void end() override; - uint8_t transfer(uint8_t data) override; - uint16_t transfer16(uint16_t data) override; - void transfer(void *buf, size_t count) override; + mosi_pin = mosi; + miso_pin = miso; + clk_pin = sck; + } +#endif - // Interrupt-related methods - void attachInterrupt() override; - void detachInterrupt() override; + virtual byte transfer(uint8_t data); + virtual uint16_t transfer16(uint16_t data); + virtual void transfer(void *buf, size_t count); - // Transaction-related methods - void usingInterrupt(int interruptNumber) override; - void notUsingInterrupt(int interruptNumber) override; - void beginTransaction(arduino::SPISettings settings) override; - void endTransaction() override; + // Transaction Functions + // Function not used here + // void usingInterrupt(int interruptNumber); + virtual void beginTransaction(SPISettings settings); + virtual void endTransaction(void); + + // SPI Configuration methods + virtual void attachInterrupt(); + virtual void detachInterrupt(); + + virtual void usingInterrupt(int interruptNumber); + virtual void notUsingInterrupt(int interruptNumber); + + virtual void begin(); + virtual void end(); + + void setBitOrder(BitOrder order); + void setDataMode(uint8_t mode); + void setClockDivider(uint8_t div); private: - void init(); // Internal initialization logic + void init(); +// Config for HW SPI +#if !defined(USE_SW_SPI) + + XMC_SPI_t *XMC_SPI_config; + arduino::SPISettings const DEFAULT_SPI_SETTINGS = + arduino::SPISettings(ARDUINO_SPI_CLOCK, MSBFIRST, SPI_MODE0); + + arduino::SPISettings _settings = arduino::SPISettings(); +// Config for SW SPI +#else + uint8_t mosi_pin; + uint8_t miso_pin; + uint8_t clk_pin; + + SPISettings spi_settings; +#endif - XMC_SPI_t *XMC_SPI_Config; // XMC-specific SPI configuration bool initialized; + uint8_t interruptMode; + char interruptSave; + uint32_t interruptMask; }; -// Declare the global SPI object -extern XMC_SPIClass SPI; +extern XMCSPIClass SPI; +#if (NUM_SPI > 1) +extern XMCSPIClass SPI1; + #if (NUM_SPI > 2) +extern XMCSPIClass SPI2; + #if (NUM_SPI > 3) +extern XMCSPIClass SPI3; + #if (NUM_SPI > 4) +extern XMCSPIClass SPI4; + #endif + #endif + #endif +#endif -#endif /* _SPI_H_INCLUDED */ +#endif /* _SPI_H_INCLUDED */ \ No newline at end of file From 79eca6513dbbd621365567d75ca88a44604e235c Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 25 Aug 2025 10:45:17 +0530 Subject: [PATCH 225/366] libraries/SPI/examples: Updated master arduino ide code. Signed-off-by: MDin --- .../SPI_MOSI_to_MISO_SameDevice.ino | 31 ----------------- .../SPI/examples/spi_master/spi_master.ino | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+), 31 deletions(-) delete mode 100644 libraries/SPI/examples/SPI_MOSI_to_MISO_SameDevice/SPI_MOSI_to_MISO_SameDevice.ino create mode 100644 libraries/SPI/examples/spi_master/spi_master.ino diff --git a/libraries/SPI/examples/SPI_MOSI_to_MISO_SameDevice/SPI_MOSI_to_MISO_SameDevice.ino b/libraries/SPI/examples/SPI_MOSI_to_MISO_SameDevice/SPI_MOSI_to_MISO_SameDevice.ino deleted file mode 100644 index 126086f1..00000000 --- a/libraries/SPI/examples/SPI_MOSI_to_MISO_SameDevice/SPI_MOSI_to_MISO_SameDevice.ino +++ /dev/null @@ -1,31 +0,0 @@ -#include "SPI.h" -char outByte [20] = "Hello from XMC"; // string to be send and received via SPI port -char inByte; // variable which stores the value of the byte received from SPI bus -int i = 0; -void setup() -{ - pinMode(LED1, OUTPUT); // setting the LED pin as output - - Serial.begin(9600); // initializing the serial port at 9600 baud rate - - SPI.begin(); // initialize the SPI port as master - - delay(100); -} -void loop() -{ - digitalWrite(LED1, HIGH); - - for(i=0;i<16;i++) - { - inByte = SPI.transfer(outByte[i]); - Serial.write(inByte); - } - - Serial.println(); - delay(100); - - digitalWrite(LED1, LOW); - - delay(1000); -} diff --git a/libraries/SPI/examples/spi_master/spi_master.ino b/libraries/SPI/examples/spi_master/spi_master.ino new file mode 100644 index 00000000..df5788e0 --- /dev/null +++ b/libraries/SPI/examples/spi_master/spi_master.ino @@ -0,0 +1,33 @@ +#include + +void setup() { + // Start the SPI bus as a master with default settings: (1 MHz, MSBFIRST, SPI_MODE0) + SPI.begin(); + Serial.begin(9600); + pinMode(SS, OUTPUT); + + // Optional: Set SPI settings + SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); + digitalWrite(SS, HIGH); + Serial.println("SPI Master Started"); +} + +void loop() { + uint8_t dataToSend = 99; + uint8_t receivedData; + + // Make a transfer and get the response from the slave + digitalWrite(SS, LOW); + delayMicroseconds(10); + receivedData = SPI.transfer(dataToSend); + delayMicroseconds(10); + + digitalWrite(SS, HIGH); + + Serial.print("Data Sent: "); + Serial.println(dataToSend); + Serial.print("Data Received: "); + Serial.println(receivedData); + + delay(1000); +} \ No newline at end of file From fd04a4e18b29eb96d68702b3b57998cf8f0f0b3b Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 25 Aug 2025 10:45:39 +0530 Subject: [PATCH 226/366] tests: Modified test conf file. Signed-off-by: MDin --- tests/test_config.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_config.h b/tests/test_config.h index 5dfc51a2..1d3c70d9 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -11,12 +11,13 @@ #define TEST_CONFIG_H #include - +#include // Test Pin Definitions #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 #define TEST_PIN_SYNC_IO 4 // IO_1 #define TEST_PIN_PULSE 5 // IO_2 +#define TEST_PIN_SPI_SSEL 10 // IO_0 #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd @@ -27,5 +28,6 @@ #define TEST_PIN_ANALOG_IO_DAC 53 #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 +extern XMCSPIClass SPI; #endif // TEST_CONFIG_H \ No newline at end of file From c741176a6cf6cb7d72a522148ccb31cb0315f973 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 26 Aug 2025 15:10:14 +0530 Subject: [PATCH 227/366] libraries/SPI: Modified transfer function logic. Signed-off-by: MDin --- libraries/SPI/src/HW_SPI.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/libraries/SPI/src/HW_SPI.cpp b/libraries/SPI/src/HW_SPI.cpp index e7428eb0..fc46f4a8 100644 --- a/libraries/SPI/src/HW_SPI.cpp +++ b/libraries/SPI/src/HW_SPI.cpp @@ -242,13 +242,9 @@ byte XMCSPIClass::transfer(uint8_t data_out) { void XMCSPIClass::transfer(void *buf, size_t count) { uint8_t *buffer = reinterpret_cast(buf); - const uint8_t *tx_buf; - uint8_t tx_temp_buf[count]; - - memcpy(tx_temp_buf, buffer, count); - tx_buf = tx_temp_buf; for (size_t index = 0; index < count; index++) { - buffer[index] = transfer(tx_buf[index]); + *buffer = transfer(*buffer); + buffer++; } } @@ -266,11 +262,11 @@ uint16_t XMCSPIClass::transfer16(uint16_t data) { data_in_out.val = data; if (_settings.getBitOrder() == LSBFIRST) { - transfer(&data_in_out.lsb, 1); - transfer(&data_in_out.msb, 1); + data_in_out.lsb = transfer(data_in_out.lsb); + data_in_out.msb = transfer(data_in_out.msb); } else { - transfer(&data_in_out.msb, 1); - transfer(&data_in_out.lsb, 1); + data_in_out.msb = transfer(data_in_out.msb); + data_in_out.lsb = transfer(data_in_out.lsb); } // Combine the two received bytes into a 16-bit word: From 33a8f247b30421c6042340a8867b4b587f23fa85 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 26 Aug 2025 16:30:03 +0530 Subject: [PATCH 228/366] libraries/SPI: Removed operator delete fun. Signed-off-by: MDin --- libraries/SPI/src/HW_SPI.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libraries/SPI/src/HW_SPI.cpp b/libraries/SPI/src/HW_SPI.cpp index fc46f4a8..8093deee 100644 --- a/libraries/SPI/src/HW_SPI.cpp +++ b/libraries/SPI/src/HW_SPI.cpp @@ -1,10 +1,6 @@ #include "SPI.h" #include -void *operator new(size_t size) { return malloc(size); } - -void operator delete(void *ptr) noexcept { free(ptr); } - #if !defined(USE_SW_SPI) #include "Wire.h" From adecacc7fc54fc8f87f065f05ca820d9aef9ebd6 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 26 Aug 2025 16:30:49 +0530 Subject: [PATCH 229/366] platform.txt: Added linker flag. Signed-off-by: MDin --- platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index b8632670..58a4b6ab 100644 --- a/platform.txt +++ b/platform.txt @@ -67,7 +67,7 @@ build.usb_manufacturer="Unknown" compiler.c.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -MMD #compiler.c.extra_flags=-ftime-report compiler.c.extra_flags= -compiler.libraries.ldflags= +compiler.libraries.ldflags= -lstdc++ compiler.c.elf.flags=-Os -Wl,--gc-sections -save-temps compiler.c.elf.extra_flags= From f5c25e418d89829256410635c6a6bd163d9d6d5e Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 28 Aug 2025 10:29:43 +0530 Subject: [PATCH 230/366] libraries/SPI: Review comments working. Signed-off-by: MDin --- libraries/SPI/src/SPI.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libraries/SPI/src/SPI.h b/libraries/SPI/src/SPI.h index 75730c76..ff6209d0 100644 --- a/libraries/SPI/src/SPI.h +++ b/libraries/SPI/src/SPI.h @@ -14,12 +14,6 @@ // Define USE_SW_SPI to use the software SPI(not verified) // #define USE_SW_SPI -// Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over -// the on-board SD Card Slot. This feature is only available on XMC4700 RelaxKits. -#if defined(XMC4700_Relax_Kit) - #define USE_XMC_RELAX_KIT_SD -#endif - #define SPI_IMODE_NONE 0x00 #define ARDUINO_SPI_CLOCK 16000000U From 9c72deefa3e90cba965638083fcf508c70edd43b Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 28 Aug 2025 10:30:34 +0530 Subject: [PATCH 231/366] variants: XMC4700 Pins_arduino.h file review comments works. Signed-off-by: MDin --- variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index c11f96c2..72614322 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -38,6 +38,11 @@ // to avoid issues with other defined macros e.g. XMC1100 #define XMC_BOARD KIT_XMC47_RELAX +// Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over +// the on-board SD Card Slot. This feature is only available on XMC4700 RelaxKits. +#if defined(XMC4700_Relax_Kit) + #define USE_XMC_RELAX_KIT_SD +#endif /* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ #define XMC_LED_ON 1 From 4b6eb95cbbf70603eef61942d8bc8354906a0f88 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 28 Aug 2025 16:26:15 +0530 Subject: [PATCH 232/366] libraries/SPI: Revert back exisitng example file. Signed-off-by: MDin --- .../SPI_MOSI_to_MISO_SameDevice.ino | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 libraries/SPI/examples/SPI_MOSI_to_MISO_SameDevice/SPI_MOSI_to_MISO_SameDevice.ino diff --git a/libraries/SPI/examples/SPI_MOSI_to_MISO_SameDevice/SPI_MOSI_to_MISO_SameDevice.ino b/libraries/SPI/examples/SPI_MOSI_to_MISO_SameDevice/SPI_MOSI_to_MISO_SameDevice.ino new file mode 100644 index 00000000..c1c602d8 --- /dev/null +++ b/libraries/SPI/examples/SPI_MOSI_to_MISO_SameDevice/SPI_MOSI_to_MISO_SameDevice.ino @@ -0,0 +1,31 @@ +#include "SPI.h" +char outByte [20] = "Hello from XMC"; // string to be send and received via SPI port +char inByte; // variable which stores the value of the byte received from SPI bus +int i = 0; +void setup() +{ + pinMode(LED1, OUTPUT); // setting the LED pin as output + + Serial.begin(9600); // initializing the serial port at 9600 baud rate + + SPI.begin(); // initialize the SPI port as master + + delay(100); +} +void loop() +{ + digitalWrite(LED1, HIGH); + + for(i=0;i<16;i++) + { + inByte = SPI.transfer(outByte[i]); + Serial.write(inByte); + } + + Serial.println(); + delay(100); + + digitalWrite(LED1, LOW); + + delay(1000); +} \ No newline at end of file From 230335580f8494b05c90b16fcbb520e44aa1183d Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 28 Aug 2025 16:26:40 +0530 Subject: [PATCH 233/366] variants: Review comments work. Signed-off-by: MDin --- variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index 72614322..137e41dc 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -40,9 +40,7 @@ // Define USE_XMC_RELAX_KIT_SD allows to use the SD Lib to communicate with a SD Card over // the on-board SD Card Slot. This feature is only available on XMC4700 RelaxKits. -#if defined(XMC4700_Relax_Kit) - #define USE_XMC_RELAX_KIT_SD -#endif +#define USE_XMC_RELAX_KIT_SD /* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ #define XMC_LED_ON 1 From 6fbaeae6eb6d3ef898d85ed2be535923e353ed9c Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 08:01:52 +0530 Subject: [PATCH 234/366] tests: Added SPI delay. Signed-off-by: MDin --- extras/arduino-core-tests | 2 +- tests/test_config.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index da2d364e..b0f021df 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit da2d364e949c2b75ba63d6f4b3a459e65813b3f3 +Subproject commit b0f021df49f0cbe53604bf4a89b6829222178ed3 diff --git a/tests/test_config.h b/tests/test_config.h index 1d3c70d9..72af1060 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -12,6 +12,8 @@ #include #include + +#define SPI_TRANSFER_DELAY 2000 // Test Pin Definitions #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 From 60b43bd75814df5de5faf2404a8f55994300bf33 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 08:13:02 +0530 Subject: [PATCH 235/366] ci-matrix-config.yml: Enable SPI example. Signed-off-by: MDin --- ci-matrix-config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index 9ff8c76c..a29905e2 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -38,10 +38,10 @@ fqbn: - infineon:xmc:kit_xmc_plt2go_xmc4200 - infineon:xmc:kit_xmc_plt2go_xmc4400 -# sketch: +sketch: # - libraries/LED # - libraries/RTC/examples/SimpleRTC -# - libraries/SPI + - libraries/SPI # - libraries/Wire # - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino From c01ffadebef94814a116b86f9e2737c01435750a Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 08:45:50 +0530 Subject: [PATCH 236/366] variants: Uncomment SPI and I2C pin config. Signed-off-by: MDin --- .../config/KIT_XMC11_BOOT_001/pins_arduino.h | 90 ++++++------ .../KIT_XMC_2GO_XMC1100_V1/pins_arduino.h | 132 +++++++++--------- .../config/KIT_XMC13_BOOT_001/pins_arduino.h | 90 ++++++------ .../config/KIT_XMC1400_ARDUINO/pins_arduino.h | 90 ++++++------ .../config/KIT_XMC14_2GO/pins_arduino.h | 88 ++++++------ .../KIT_XMC_PLT2GO_XMC4400/pins_arduino.h | 76 +++++----- 6 files changed, 283 insertions(+), 283 deletions(-) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index fb72a191..dcec1be2 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -252,51 +252,51 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, Uart Serial(&XMC_UART_0); - // SPI instance - // XMC_SPI_t XMC_SPI_0 = { - // .channel = XMC_SPI0_CH0, - // .channel_config = {.baudrate = 15984375U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, - // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - // .input_source = XMC_INPUT_C, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }}; - - // // I2C instance - // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .input_source_dx0 = XMC_INPUT_F, - // .input_source_dx1 = XMC_INPUT_E, - // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - // .slave_receive_irq_service_request = 4, - // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - // .protocol_irq_service_request = 5}; +// SPI instance +XMC_SPI_t XMC_SPI_0 = { + .channel = XMC_SPI0_CH0, + .channel_config = {.baudrate = 15984375U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, + .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + .input_source = XMC_INPUT_C, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }}; + +// I2C instance +XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .input_source_dx0 = XMC_INPUT_F, + .input_source_dx1 = XMC_INPUT_E, + .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + .slave_receive_irq_service_request = 4, + .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + .protocol_irq_service_request = 5}; // // XMC_I2S instance // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index f544a7a3..0085f463 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -201,72 +201,72 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, Uart Serial(&XMC_UART_0); - // SPI instance - // XMC_SPI_t XMC_SPI_0 = { - // .channel = XMC_SPI0_CH1, - // .channel_config = {.baudrate = 15984375U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)6}, - // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - // .input_source = XMC_INPUT_C, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)8}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }}; - - // // Two I2C instances possible - // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .input_source_dx0 = XMC_INPUT_F, - // .input_source_dx1 = XMC_INPUT_E, - // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - // .slave_receive_irq_service_request = 4, - // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - // .protocol_irq_service_request = 5}; - - // XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C0_CH0, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)15}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)14}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .input_source_dx0 = XMC_INPUT_B, - // .input_source_dx1 = XMC_INPUT_A, - // .slave_receive_irq_num = (IRQn_Type)USIC0_2_IRQn, - // .slave_receive_irq_service_request = 2, - // .protocol_irq_num = (IRQn_Type)USIC0_3_IRQn, - // .protocol_irq_service_request = 3}; +// SPI instance +XMC_SPI_t XMC_SPI_0 = { + .channel = XMC_SPI0_CH1, + .channel_config = {.baudrate = 15984375U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)6}, + .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + .input_source = XMC_INPUT_C, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)8}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }}; + +// Two I2C instances possible +XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .input_source_dx0 = XMC_INPUT_F, + .input_source_dx1 = XMC_INPUT_E, + .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + .slave_receive_irq_service_request = 4, + .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + .protocol_irq_service_request = 5}; + +XMC_I2C_t XMC_I2C_1 = {.channel = XMC_I2C0_CH0, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)15}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)14}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .input_source_dx0 = XMC_INPUT_B, + .input_source_dx1 = XMC_INPUT_A, + .slave_receive_irq_num = (IRQn_Type)USIC0_2_IRQn, + .slave_receive_irq_service_request = 2, + .protocol_irq_num = (IRQn_Type)USIC0_3_IRQn, + .protocol_irq_service_request = 3}; // // XMC_I2S instance // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, diff --git a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h index 7fff8776..6ec45c95 100644 --- a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h +++ b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h @@ -255,51 +255,51 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, Uart Serial(&XMC_UART_0); - // // SPI instance - // XMC_SPI_t XMC_SPI_0 = { - // .channel = XMC_SPI0_CH0, - // .channel_config = {.baudrate = 15984375U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, - // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - // .input_source = XMC_INPUT_C, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }}; - - // // I2C instance - // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .input_source_dx0 = XMC_INPUT_F, - // .input_source_dx1 = XMC_INPUT_E, - // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - // .slave_receive_irq_service_request = 4, - // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - // .protocol_irq_service_request = 5}; +// // SPI instance +XMC_SPI_t XMC_SPI_0 = { + .channel = XMC_SPI0_CH0, + .channel_config = {.baudrate = 15984375U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, + .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + .input_source = XMC_INPUT_C, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }}; + +// I2C instance +XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .input_source_dx0 = XMC_INPUT_F, + .input_source_dx1 = XMC_INPUT_E, + .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + .slave_receive_irq_service_request = 4, + .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + .protocol_irq_service_request = 5}; // Serial Interrupt and event handling #ifdef __cplusplus diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index ca590d69..3d55c207 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -263,51 +263,51 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH1, Uart Serial(&XMC_UART_0); - // // SPI instance - // XMC_SPI_t XMC_SPI_0 = { - // .channel = XMC_SPI1_CH1, - // .channel_config = {.baudrate = 15984375U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)1}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, - // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - // .input_source = XMC_INPUT_A, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)3}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }}; - - // // I2C instance - // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .input_source_dx0 = XMC_INPUT_F, - // .input_source_dx1 = XMC_INPUT_E, - // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - // .slave_receive_irq_service_request = 4, - // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - // .protocol_irq_service_request = 5}; +// // SPI instance +XMC_SPI_t XMC_SPI_0 = { + .channel = XMC_SPI1_CH1, + .channel_config = {.baudrate = 15984375U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)1}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, + .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + .input_source = XMC_INPUT_A, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)3}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }}; + +// I2C instance +XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH0, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .input_source_dx0 = XMC_INPUT_F, + .input_source_dx1 = XMC_INPUT_E, + .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + .slave_receive_irq_service_request = 4, + .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + .protocol_irq_service_request = 5}; // Serial Interrupt and event handling #ifdef __cplusplus diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 1d54924e..fa470c31 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -270,50 +270,50 @@ XMC_UART_t XMC_UART_0 = {.channel = XMC_UART0_CH0, Uart Serial(&XMC_UART_0); - // // SPI instance - // XMC_SPI_t XMC_SPI_0 = { - // .channel = XMC_SPI1_CH1, - // .channel_config = {.baudrate = 15984375U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)1}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, - // .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - // .input_source = XMC_INPUT_A, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)3}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }}; - - // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - // .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH - - // }, - // .input_source_dx0 = XMC_INPUT_F, - // .input_source_dx1 = XMC_INPUT_E, - // .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, - // .slave_receive_irq_service_request = 4, - // .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, - // .protocol_irq_service_request = 5}; +// // SPI instance +XMC_SPI_t XMC_SPI_0 = { + .channel = XMC_SPI1_CH1, + .channel_config = {.baudrate = 15984375U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)1}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, + .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, + .input_source = XMC_INPUT_A, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)3}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT8, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }}; + +XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, + .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH + + }, + .input_source_dx0 = XMC_INPUT_F, + .input_source_dx1 = XMC_INPUT_E, + .slave_receive_irq_num = (IRQn_Type)USIC0_4_IRQn, + .slave_receive_irq_service_request = 4, + .protocol_irq_num = (IRQn_Type)USIC0_5_IRQn, + .protocol_irq_service_request = 5}; // XMC_I2S_t i2s_config = {.input_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, // .input_hysteresis = diff --git a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h index f5d0b38e..0930de5f 100644 --- a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h +++ b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h @@ -357,44 +357,44 @@ XMC_UART_t XMC_UART_0 = { // Single Hardware Serial object for both UART interfaces Uart Serial(&XMC_UART_0); - // SPI instance - // XMC_SPI_t XMC_SPI_0 = { - // .channel = XMC_SPI1_CH1, - // .channel_config = {.baudrate = 20003906U, - // .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - // .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - // .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - // .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)9}, - // .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - // .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, - // .miso_config = - // { - // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // }, - // .input_source = XMC_INPUT_D, - // .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)8}, - // .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - // .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - // }; - - // // I2C instance - // XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, - // .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - // .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)5}, - // .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .scl = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)0}, - // .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - // .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - // .input_source_dx0 = XMC_INPUT_B, - // .input_source_dx1 = XMC_INPUT_B, - // .slave_receive_irq_num = (IRQn_Type)91, - // .slave_receive_irq_service_request = 1, - // .protocol_irq_num = (IRQn_Type)92, - // .protocol_irq_service_request = 2}; +// SPI instance +XMC_SPI_t XMC_SPI_0 = { + .channel = XMC_SPI1_CH1, + .channel_config = {.baudrate = 20003906U, + .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, + .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, + .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, + .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)9}, + .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, + .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, + .miso_config = + { + .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + }, + .input_source = XMC_INPUT_D, + .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)8}, + .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, + .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, +}; + +// I2C instance +XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, + .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, + .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)5}, + .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .scl = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)0}, + .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, + .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, + .input_source_dx0 = XMC_INPUT_B, + .input_source_dx1 = XMC_INPUT_B, + .slave_receive_irq_num = (IRQn_Type)91, + .slave_receive_irq_service_request = 1, + .protocol_irq_num = (IRQn_Type)92, + .protocol_irq_service_request = 2}; // // XMC CAN instance // #ifdef CAN_xmc From 39ad8729767d59a73cfbb40514ba00c254bd6b06 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 08:46:54 +0530 Subject: [PATCH 237/366] ci-matrix-config.yml: Enable I2c and SPI example. Signed-off-by: MDin --- ci-matrix-config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index a29905e2..ea29d5bf 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -42,7 +42,7 @@ sketch: # - libraries/LED # - libraries/RTC/examples/SimpleRTC - libraries/SPI -# - libraries/Wire + - libraries/Wire # - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino # - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino # - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino From 8d548bc38c875dd1629448a7edf7127daf54d30b Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 08:54:29 +0530 Subject: [PATCH 238/366] variants: Fix compilation error. Signed-off-by: MDin --- variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 4 ++++ variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index 3d55c207..d45b9891 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -80,6 +80,10 @@ extern const uint8_t NUM_ANALOG_INPUTS; #define PIN_SPI_MOSI 11 #define PIN_SPI_MISO 12 #define PIN_SPI_SCK 13 +extern uint8_t SS; +extern uint8_t MOSI; +extern uint8_t MISO; +extern uint8_t SCK; #define A0 0 #define A1 1 diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index fa470c31..148e2156 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -84,6 +84,10 @@ extern const uint8_t NUM_ANALOG_INPUTS; #define PIN_SPI_MISO 0 #define PIN_SPI_SCK 2 +extern uint8_t SS; +extern uint8_t MOSI; +extern uint8_t MISO; +extern uint8_t SCK; // Define analog pin #define A0 0 #define A1 1 From 192453e511bde979ebfaf7a1c4a36cf78517999c Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Tue, 2 Sep 2025 16:48:18 +0200 Subject: [PATCH 239/366] config/: Activate time test. Signed-off-by: zhanglinjing --- config/user.yml | 9 +++------ extras/arduino-core-tests | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/config/user.yml b/config/user.yml index 2da2ad63..1bbc276d 100644 --- a/config/user.yml +++ b/config/user.yml @@ -11,12 +11,11 @@ unit-test: -#kit_xmc47_relax # - unit-test-digital-io-4700 - unit-test-tone-4700 - unit-test-interrupts-4700 - unit-test-random-4700 - # - unit-test-time-4700 + - unit-test-time-4700 - unit-test-analog-io-pwm-4700 # - unit-test-analog-io-adc-4700 # - unit-test-iic-4700 @@ -24,9 +23,7 @@ unit-test: # - unit-test-uart-4700 # - unit-test-uart-connected2-4700 # - unit-test-pulse-4700 - -# kit_xmc14_2go - # - unit-test-iic-pingpong-1400 + # - unit-test-digital-io-1400 # - unit-test-tone-1400 # - unit-test-interrupts-1400 @@ -34,4 +31,4 @@ unit-test: # - unit-test-time-1400 # - unit-test-analog-io-pwm-1400 # - unit-test-analog-io-adc-1400 - # - unit-test-iic-1400 + # - unit-test-iic-pingpong-1400 \ No newline at end of file diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index b0f021df..f8b462bc 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit b0f021df49f0cbe53604bf4a89b6829222178ed3 +Subproject commit f8b462bce3a7591e00e29a76dee4aa28051b60ae From 2279e5adb93d25f334f3efcea51136c3c9d2d7cd Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 10:43:34 +0530 Subject: [PATCH 240/366] docs: Revert back to old documenataion content. Signed-off-by: MDin --- docs/arduino-deviations.rst | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/arduino-deviations.rst b/docs/arduino-deviations.rst index 3edd0cb0..78defc23 100644 --- a/docs/arduino-deviations.rst +++ b/docs/arduino-deviations.rst @@ -68,13 +68,19 @@ must be Slave mode configuration and sets the I2C configuration differently. Tone ++++ -The tone() function in XMC-for-Arduino core uses the PWM(pulse Width Modulation) peripheral to generate square wave signals at specific frequencies. -Number of tone pins is determined by PWM -capable pins on XMC Device. +Number of Tone pins is determined by pins_arduino.h define NUM_TONE_PINS. This allows for use in other modules and for variations between boards as >100MHz boards can obviously handle more tone pins. -Do not call pinMode() on the pin prior to using the tone() function. The tone() function automatically configures the pin for output modes and sets it up internally. -Calling pinMode() beforehand may result in unexpected behavior or conflicts with PWM peripheral. +The default for XMC1xxx is 4 with a change XMC4xxxx should be 16 -Maximum duration of tone can be set upto 90 seconds. +Tone has frequency range of maximum = 500 Hz minimum = 1 Hz + +This is due to the fact that the tone frequency is software derived from the Systick handler, Systick has a time period of 1 ms. At maximum each handler event for Systick toggles a GPIO pin, so at minimum period of 1 ms the output is toggled, so TWO events produce one square wave cycle, therefore the maximum output frequency is 500Hz. + +The minimum is due to the fact that tone function only accepts an unsigned integer (32 bit) for the frequency, so the minimum usable frequency is 1. + +Standard Arduino boards use hardware timers (the few that are available) to generate tones and at least one timer can interfere with other functions. + +However this does mean you can have more tone pins, just much lower frequency range. Analog Functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 3b0438e21803b7576cdcfff4b4706129f863ea23 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 10:44:27 +0530 Subject: [PATCH 241/366] cores/xmc: Revert back to older implementation. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 236 ++++++++++++++++++++------------------------- cores/xmc/Tone.h | 42 +++----- 2 files changed, 115 insertions(+), 163 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index a65b85a7..0c46b4c6 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -1,154 +1,124 @@ #include "Arduino.h" -volatile unsigned long tone_durations[NUM_TONE_PINS] = {0}; -Tone inst_Tone; - -Tone::Tone() {} - -Tone::~Tone() {} - -void Tone::play(pin_size_t pin, unsigned int frequency) { play(pin, frequency, 0); } - -void Tone::play(pin_size_t pin, unsigned int frequency, unsigned long duration) { - int pin_index; - stop(pin); - if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; - configureTone(pin, frequency); - XMC_GPIO_SetMode(pwm4->port_pin.port, pwm4->port_pin.pin, - (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm4->port_mode)); - XMC_CCU4_SLICE_StartTimer(pwm4->slice); - if (duration > 0) { - scheduleToneTask(pin, duration); - } - } -#if defined(CCU8V3) || defined(CCU8V2) || defined(CCU8V1) - else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; - configureTone(pin, frequency); - XMC_GPIO_SetMode(pwm8->port_pin.port, pwm8->port_pin.pin, - (XMC_GPIO_MODE_t)(XMC_GPIO_MODE_OUTPUT_PUSH_PULL | pwm8->port_mode)); - XMC_CCU8_SLICE_StartTimer(pwm8->slice); - // calculate pulses - if (duration > 0) { - scheduleToneTask(pin, duration); - } - } -#endif +//**************************************************************************** +// @Macros +//**************************************************************************** +#define FREQUENCY_TO_MILLIS(f) (SYSTIMER_TICK_PERIOD_US / (2 * f)) + +//**************************************************************************** +// @Defines +//**************************************************************************** + +//**************************************************************************** +// @Global Variables +//**************************************************************************** +// Valid Arduino pin or 255 for not allocated +volatile uint8_t tone_pins[NUM_TONE_PINS]; +// Toggle counts > 0 toggles to do +// 0 is next time stop +// < 0 is continuous running +volatile long timer_toggle_count[NUM_TONE_PINS]; +// arrays initialised +uint8_t tone_init = 0; + +//**************************************************************************** +// @Local Functions +//**************************************************************************** + +void digitalToggle(uint8_t pin) { + XMC_GPIO_ToggleOutput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin); } -void Tone::stop(pin_size_t pin) { - int taskId = 0; +static int8_t toneBegin(uint8_t _pin) { + int8_t i; - int pin_index; - if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *_XMC_pwm4_config = &mapping_pwm4[pin_index]; - XMC_CCU4_SLICE_StopTimer(_XMC_pwm4_config->slice); // stop the timer - XMC_CCU4_DisableClock(_XMC_pwm4_config->ccu, - _XMC_pwm4_config->slice_num); // Disable the clock - } -#if defined(CCU8V3) || defined(CCU8V2) || defined(CCU8V1) - else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; - XMC_CCU8_SLICE_StopTimer(pwm8->slice); // stop the timer - XMC_CCU8_DisableClock(pwm8->ccu, pwm8->slice_num); // Disable the clock + // check all arrays initialised + if (tone_init == 0) { + // No preset them for number of Tine pins + memset((void *)tone_pins, 255, sizeof(tone_pins)); + memset((void *)timer_toggle_count, 0, sizeof(timer_toggle_count)); + tone_init++; } -#endif - // Unregister any scheduled tasks for this tone - tone_durations[taskId] = 0; - setInterval(taskId, 0); // Clear task interval -} - -// Tone duration management callback -int tone_irq_action(int taskId, int16_t param) { - pin_size_t pin = param; - // Decrement duration - if (tone_durations[taskId] > 0) { - tone_durations[taskId]--; - if (tone_durations[taskId] == 0) { - inst_Tone.stop(pin); // Stop tone when duration expires - return -1; // Task complete + // Once initialised + // if we're already using the pin, the timer should be configured. + for (i = 0; i < NUM_TONE_PINS; i++) + if (tone_pins[i] == _pin) + return i; + + // search for an unused timer. + for (i = 0; i < NUM_TONE_PINS; i++) + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + pinMode(_pin, OUTPUT); + break; } - } - return 1; // Continue task + return (i < NUM_TONE_PINS) ? i : -1; } -void Tone::configureTone(pin_size_t pin, unsigned int frequency) { - int pin_index; - - if ((pin_index = scanMapTable(mapping_pin_PWM4, pin)) >= 0) { - XMC_PWM4_t *pwm4 = &mapping_pwm4[pin_index]; - XMC_CCU4_SLICE_COMPARE_CONFIG_t compare_config; - memset(&compare_config, 0, sizeof(compare_config)); - compare_config.prescaler_initval = pwm4->prescaler; - compare_config.passive_level = XMC_CCU4_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - - XMC_CCU4_Init(pwm4->ccu, XMC_CCU4_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU4_SLICE_CompareInit(pwm4->slice, &compare_config); - XMC_CCU4_EnableClock(pwm4->ccu, pwm4->slice_num); - - uint32_t period = (PCLK / 64) / frequency; // calculate period - XMC_CCU4_SLICE_SetTimerPeriodMatch(pwm4->slice, period); - XMC_CCU4_SLICE_SetTimerCompareMatch(pwm4->slice, period / 2); - - XMC_CCU4_EnableShadowTransfer( - pwm4->ccu, XMC_CCU4_SHADOW_TRANSFER_SLICE_0 | XMC_CCU4_SHADOW_TRANSFER_SLICE_2 | - XMC_CCU4_SHADOW_TRANSFER_SLICE_3 | XMC_CCU4_SHADOW_TRANSFER_SLICE_1); - } -#if defined(CCU8V3) || defined(CCU8V2) || defined(CCU8V1) - else if ((pin_index = scanMapTable(mapping_pin_PWM8, pin)) >= 0) { - XMC_PWM8_t *pwm8 = &mapping_pwm8[pin_index]; - XMC_CCU8_SLICE_COMPARE_CONFIG_t compare_config; - memset(&compare_config, 0, sizeof(compare_config)); - - compare_config.prescaler_initval = pwm8->prescaler; - compare_config.passive_level_out0 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - compare_config.passive_level_out1 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - compare_config.passive_level_out2 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - compare_config.passive_level_out3 = XMC_CCU8_SLICE_OUTPUT_PASSIVE_LEVEL_LOW; - - XMC_CCU8_Init(pwm8->ccu, XMC_CCU8_SLICE_MCMS_ACTION_TRANSFER_PR_CR); - XMC_CCU8_SLICE_CompareInit(pwm8->slice, &compare_config); - XMC_CCU8_EnableClock(pwm8->ccu, pwm8->slice_num); - - uint32_t period = (PCLK / 64) / frequency; // calculate period - XMC_CCU8_SLICE_SetTimerPeriodMatch(pwm8->slice, period); - XMC_CCU8_SLICE_SetTimerCompareMatch(pwm8->slice, pwm8->slice_channel, period / 2); - - XMC_CCU8_EnableShadowTransfer( - pwm8->ccu, XMC_CCU8_SHADOW_TRANSFER_SLICE_0 | XMC_CCU8_SHADOW_TRANSFER_SLICE_2 | - XMC_CCU8_SHADOW_TRANSFER_SLICE_3 | XMC_CCU8_SHADOW_TRANSFER_SLICE_1); +// Frequency (in hertz) and duration (in milliseconds). +// Max frequency usable = 500 Hz +// Min frequency usable = 1 Hz +// Duration default of 0 for permanently on +// Timer task ID is tone pin index _timer +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) { + int8_t _timer; + + // Check valid frequency range first + if (frequency > 0 && frequency <= 500) { + _timer = toneBegin(_pin); + + if (_timer >= 0 && _timer < NUM_TONE_PINS) { + // Calculate the toggle count + if (duration > 0) + timer_toggle_count[_timer] = 2 * frequency * duration / 1000; + else + timer_toggle_count[_timer] = -1; // Continuous + // Set internal task parameters + setParam(_timer, _timer); + setInterval(_timer, (unsigned int)FREQUENCY_TO_MILLIS(frequency)); + startTask(_timer); + } } -#endif } -void Tone::scheduleToneTask(pin_size_t pin, unsigned long duration) { - int taskId = 0; +// Stops tone at next 1ms Systick +void noTone(uint8_t _pin) { + int8_t i; - tone_durations[taskId] = duration; - setParam(taskId, pin); - setInterval(taskId, 1); - startTask(taskId); -} - -// Scan the pwm pin mapping table -int Tone::scanMapTable(const uint8_t table[][2], pin_size_t pin) { - int16_t i = 0; - while (table[i][0] != 255) { - if (table[i][0] == pin) { - return table[i][1]; + for (i = 0; i < NUM_TONE_PINS; i++) + if (tone_pins[i] == _pin) { + tone_pins[i] = 255; + break; } - i++; + + if (i < NUM_TONE_PINS) // Only if found set to stop at max next Systick event + { + noInterrupts(); // Interrupt disable guard to be safe + timer_toggle_count[i] = 0; // Stop on next Systick + setInterval(i, 1); + interrupts(); } - return -1; } -void tone(pin_size_t pin, unsigned int frequency) { inst_Tone.play(pin, frequency); } - -void tone(pin_size_t pin, unsigned int frequency, unsigned long duration) { - inst_Tone.play(pin, frequency, duration); +/* Interrupt GPIO action + On normal operation to continue returns 1 + On end of operations returns 0 to stop tasks +*/ +int tone_irq_action(int ID, int16_t tone) { + if (timer_toggle_count[tone]) { + digitalToggle(tone_pins[tone]); + if (timer_toggle_count[tone] > 0) + timer_toggle_count[tone]--; + } else { + setInterval(ID, 0); // no longer wanted to run + digitalWrite(tone_pins[tone], LOW); + return 0; + } + return 1; } -void noTone(pin_size_t pin) { inst_Tone.stop(pin); } +//**************************************************************************** +// END OF FILE +//**************************************************************************** \ No newline at end of file diff --git a/cores/xmc/Tone.h b/cores/xmc/Tone.h index e3e79258..93ce16e7 100644 --- a/cores/xmc/Tone.h +++ b/cores/xmc/Tone.h @@ -1,36 +1,18 @@ -#ifndef TONE_H -#define TONE_H - +#ifndef _WIRING_TONE_ +#define _WIRING_TONE_ #include "Arduino.h" -// Expose C-compatible declarations for wiring_time.c + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** +// extern void noTone(uint8_t); + #ifdef __cplusplus extern "C" { #endif - -// C-compatible function declaration for the callback -int tone_irq_action(int taskId, int16_t param); - +extern int tone_irq_action(int, int16_t); #ifdef __cplusplus -} // End of extern "C" - -class Tone { -public: - Tone(); - ~Tone(); - - void play(pin_size_t pin, unsigned int frequency); - void play(pin_size_t pin, unsigned int frequency, unsigned long duration); - void stop(pin_size_t pin); - - static int tone_irq_action(int taskId, int16_t param); - -private: - void configureTone(pin_size_t pin, unsigned int frequency); - void scheduleToneTask(pin_size_t pin, unsigned long duration); - int scanMapTable(const uint8_t table[][2], pin_size_t pin); -}; - -extern Tone inst_Tone; - +} #endif -#endif \ No newline at end of file + +#endif /* _WIRING_TONE_ */ \ No newline at end of file From f4d6c8a99bf89ac046ba3b0706ddebecbbde5fdb Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 12:28:52 +0530 Subject: [PATCH 242/366] variants: Modify NUM_TONE_PINS. Signed-off-by: MDin --- variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h | 2 +- variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h | 2 +- variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h | 2 +- variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 2 +- variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h | 2 +- variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h | 2 +- variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h | 2 +- variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index dcec1be2..dd876295 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -51,7 +51,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 7 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 1 // At a time, run only one tone pin +#define NUM_TONE_PINS 4 #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index 0085f463..a00636f4 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -51,7 +51,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 2 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 1 // At a time, run only one tone pin +#define NUM_TONE_PINS 4 #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 2 diff --git a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h index 6ec45c95..dbc004d2 100644 --- a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h +++ b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h @@ -54,7 +54,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 6 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 1 // At a time, run only one tone pin +#define NUM_TONE_PINS 4 #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index d45b9891..82884297 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -50,7 +50,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 3 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 1 // At a time, run only one tone pin +#define NUM_TONE_PINS 4 #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 148e2156..2b86203f 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -51,7 +51,7 @@ extern const uint8_t NUM_INTERRUPT; extern const uint8_t NUM_ANALOG_INPUTS; #define NUM_LEDS 2 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 1 // At a time, run only one tone pin +#define NUM_TONE_PINS 4 #define NUM_TASKS_VARIANT 8 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h index 32dfc497..271b8439 100644 --- a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h +++ b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h @@ -53,7 +53,7 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_LEDS 1 #define NUM_BUTTONS 1 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 1 // At a time, run only one tone pin +#define NUM_TONE_PINS 7 #define NUM_TASKS_VARIANT 12 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h index 0930de5f..741820df 100644 --- a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h +++ b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h @@ -53,7 +53,7 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_LEDS 2 #define NUM_BUTTONS 2 #define NUM_SERIAL 1 -#define NUM_TONE_PINS 1 // At a time, run only one tone pin +#define NUM_TONE_PINS 16 #define NUM_TASKS_VARIANT 32 #define NUM_SPI 1 #define NUM_I2C 1 diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index 137e41dc..6ebe4f5d 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -59,7 +59,7 @@ extern const uint8_t NUM_ANALOG_OUTPUTS; #define NUM_LEDS 2 #define NUM_BUTTONS 2 #define NUM_SERIAL 2 -#define NUM_TONE_PINS 1 // At a time, run only one tone pin +#define NUM_TONE_PINS 16 #define NUM_TASKS_VARIANT 32 #define NUM_SPI 3 #define NUM_I2C 2 From 29e05fd6f3184821ae9622e56a97170fd7fb59af Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 2 Sep 2025 12:30:04 +0530 Subject: [PATCH 243/366] cores/xmc: Rework and Format changes. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 25 +++++++++++++++---------- cores/xmc/Tone.h | 4 +--- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 0c46b4c6..5c31f74e 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -42,18 +42,20 @@ static int8_t toneBegin(uint8_t _pin) { // Once initialised // if we're already using the pin, the timer should be configured. - for (i = 0; i < NUM_TONE_PINS; i++) - if (tone_pins[i] == _pin) + for (i = 0; i < NUM_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { return i; + } + } // search for an unused timer. - for (i = 0; i < NUM_TONE_PINS; i++) + for (i = 0; i < NUM_TONE_PINS; i++) { if (tone_pins[i] == 255) { tone_pins[i] = _pin; pinMode(_pin, OUTPUT); break; } - + } return (i < NUM_TONE_PINS) ? i : -1; } @@ -64,17 +66,19 @@ static int8_t toneBegin(uint8_t _pin) { // Timer task ID is tone pin index _timer void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) { int8_t _timer; - + Serial.println("Freq: "); + Serial.println(frequency); // Check valid frequency range first if (frequency > 0 && frequency <= 500) { _timer = toneBegin(_pin); if (_timer >= 0 && _timer < NUM_TONE_PINS) { // Calculate the toggle count - if (duration > 0) + if (duration > 0) { timer_toggle_count[_timer] = 2 * frequency * duration / 1000; - else + } else { timer_toggle_count[_timer] = -1; // Continuous + } // Set internal task parameters setParam(_timer, _timer); setInterval(_timer, (unsigned int)FREQUENCY_TO_MILLIS(frequency)); @@ -87,12 +91,12 @@ void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) { void noTone(uint8_t _pin) { int8_t i; - for (i = 0; i < NUM_TONE_PINS; i++) + for (i = 0; i < NUM_TONE_PINS; i++) { if (tone_pins[i] == _pin) { tone_pins[i] = 255; break; } - + } if (i < NUM_TONE_PINS) // Only if found set to stop at max next Systick event { noInterrupts(); // Interrupt disable guard to be safe @@ -109,8 +113,9 @@ void noTone(uint8_t _pin) { int tone_irq_action(int ID, int16_t tone) { if (timer_toggle_count[tone]) { digitalToggle(tone_pins[tone]); - if (timer_toggle_count[tone] > 0) + if (timer_toggle_count[tone] > 0) { timer_toggle_count[tone]--; + } } else { setInterval(ID, 0); // no longer wanted to run digitalWrite(tone_pins[tone], LOW); diff --git a/cores/xmc/Tone.h b/cores/xmc/Tone.h index 93ce16e7..fda48732 100644 --- a/cores/xmc/Tone.h +++ b/cores/xmc/Tone.h @@ -1,12 +1,10 @@ #ifndef _WIRING_TONE_ #define _WIRING_TONE_ -#include "Arduino.h" //**************************************************************************** // @External Prototypes //**************************************************************************** -// extern void noTone(uint8_t); - +void digitalToggle(uint8_t pin); #ifdef __cplusplus extern "C" { #endif From 0adab7d8431d45f7010c175feb6da8c8ae947597 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 4 Sep 2025 12:43:39 +0530 Subject: [PATCH 244/366] cores/xmc: Fix noTOne function. Signed-off-by: MDin --- cores/xmc/Tone.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/cores/xmc/Tone.cpp b/cores/xmc/Tone.cpp index 5c31f74e..c157b7bc 100644 --- a/cores/xmc/Tone.cpp +++ b/cores/xmc/Tone.cpp @@ -66,8 +66,6 @@ static int8_t toneBegin(uint8_t _pin) { // Timer task ID is tone pin index _timer void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) { int8_t _timer; - Serial.println("Freq: "); - Serial.println(frequency); // Check valid frequency range first if (frequency > 0 && frequency <= 500) { _timer = toneBegin(_pin); @@ -90,13 +88,6 @@ void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) { // Stops tone at next 1ms Systick void noTone(uint8_t _pin) { int8_t i; - - for (i = 0; i < NUM_TONE_PINS; i++) { - if (tone_pins[i] == _pin) { - tone_pins[i] = 255; - break; - } - } if (i < NUM_TONE_PINS) // Only if found set to stop at max next Systick event { noInterrupts(); // Interrupt disable guard to be safe From 3af794a0863c2a13347845ff3090427a7d4c440b Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 4 Sep 2025 16:20:49 +0530 Subject: [PATCH 245/366] tests: Fixed compilation issue. Signed-off-by: MDin --- extras/arduino-core-tests | 2 +- tests/test_config.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index f8b462bc..8c0ffd58 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit f8b462bce3a7591e00e29a76dee4aa28051b60ae +Subproject commit 8c0ffd58ab01b3b9971497f59f465ab2e539f6e0 diff --git a/tests/test_config.h b/tests/test_config.h index 72af1060..b8644960 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -13,7 +13,7 @@ #include #include -#define SPI_TRANSFER_DELAY 2000 +#define SPI_TRANSFER_DELAY_US 2000 // Test Pin Definitions #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 From 81e9dbcb43f95094d614cec22045598ef5d6eedd Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 5 Sep 2025 13:29:23 +0530 Subject: [PATCH 246/366] docs: Added supported frequencies values. Signed-off-by: MDin --- docs/arduino-deviations.rst | 3 +++ extras/arduino-core-tests | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/arduino-deviations.rst b/docs/arduino-deviations.rst index 78defc23..c6f5d755 100644 --- a/docs/arduino-deviations.rst +++ b/docs/arduino-deviations.rst @@ -74,6 +74,9 @@ The default for XMC1xxx is 4 with a change XMC4xxxx should be 16 Tone has frequency range of maximum = 500 Hz minimum = 1 Hz +Due to the Systick periodicity, only discrete frequencies are supported as listed below: +[1, 2, 4, 5, 10, 20, 25, 50, 100, 125, 250, 500] + This is due to the fact that the tone frequency is software derived from the Systick handler, Systick has a time period of 1 ms. At maximum each handler event for Systick toggles a GPIO pin, so at minimum period of 1 ms the output is toggled, so TWO events produce one square wave cycle, therefore the maximum output frequency is 500Hz. The minimum is due to the fact that tone function only accepts an unsigned integer (32 bit) for the frequency, so the minimum usable frequency is 1. diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index 8c0ffd58..47cde374 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit 8c0ffd58ab01b3b9971497f59f465ab2e539f6e0 +Subproject commit 47cde374c4f7f20740dea2773caab06003913e2c From 6666af28e559cdc84a85939a22809741a398a887 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Tue, 9 Sep 2025 14:49:24 +0200 Subject: [PATCH 247/366] tests: Change pin config for different boards. Signed-off-by: wxyyy0117 --- tests/test_config.h | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index b8644960..c0d2c25d 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -21,15 +21,24 @@ #define TEST_PIN_PULSE 5 // IO_2 #define TEST_PIN_SPI_SSEL 10 // IO_0 -#define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz -#define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd -#define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider -#define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground -#define TEST_ADC_MAX_VALUE 4095 -#define TEST_ADC_RESOLUTION 1023 // ADC resolution +#if defined(KIT_XMC47_RELAX) + #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz + #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd + #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider + #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground + #define TEST_ADC_MAX_VALUE 4095 + #define TEST_ADC_RESOLUTION 1023 // ADC resolution -#define TEST_PIN_ANALOG_IO_DAC 53 -#define TEST_PIN_ANALOG_IO_DAC_INPUT A3 + #define TEST_PIN_ANALOG_IO_DAC 53 + #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 + +#elif defined(KIT_XMC14_2GO) + #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz + #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd + #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider + #define TEST_ADC_MAX_VALUE 4095 + #define TEST_ADC_RESOLUTION 1023 // ADC resolution +#endif extern XMCSPIClass SPI; #endif // TEST_CONFIG_H \ No newline at end of file From 2aa3bfc4621665674f22a7132ab12e7d9a5fe5db Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Tue, 9 Sep 2025 15:39:07 +0200 Subject: [PATCH 248/366] tests: Modify adc value. Signed-off-by: wxyyy0117 --- tests/test_config.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index c0d2c25d..a8dccfef 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -26,8 +26,8 @@ #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground - #define TEST_ADC_MAX_VALUE 4095 - #define TEST_ADC_RESOLUTION 1023 // ADC resolution + #define TEST_ADC_MAX_VALUE 1023 + #define TEST_ADC_RESOLUTION 10 // ADC resolution #define TEST_PIN_ANALOG_IO_DAC 53 #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 @@ -36,8 +36,8 @@ #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider - #define TEST_ADC_MAX_VALUE 4095 - #define TEST_ADC_RESOLUTION 1023 // ADC resolution + #define TEST_ADC_MAX_VALUE 1023 + #define TEST_ADC_RESOLUTION 10 // ADC resolution #endif extern XMCSPIClass SPI; From 0ce955da5796461ae53776f55ec6c1b144e41609 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Tue, 9 Sep 2025 16:40:29 +0200 Subject: [PATCH 249/366] .github/workflows: Enable adc for workflow check. Signed-off-by: wxyyy0117 --- config/project.yml | 20 ++++++++++---------- config/user.yml | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/config/project.yml b/config/project.yml index c462567a..874950ad 100644 --- a/config/project.yml +++ b/config/project.yml @@ -160,60 +160,60 @@ unit-test: unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity - query: iic_ping_pong_multiple_boards_slave == '1:1' + query: iic_ping_pong_multiple_boards_slave == '2:1' working_dir: extras/arduino-core-tests - description: Compiling, flashing and monitoring I2C pingpong master unit test. command: make test_wire_connected2_masterpingpong UNITY_PATH=/opt/Unity - query: iic_ping_pong_multiple_boards_master == '1:1' + query: iic_ping_pong_multiple_boards_master == '2:1' working_dir: extras/arduino-core-tests unit-test-digital-io-1400: - description: Compiling, flashing and monitoring digital IO unit test. command: make test_digitalio_single - query: digital_io_single_board == '1:1' + query: digital_io_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-tone-1400: - description: Compiling, flashing and monitoring tone, no-tone unit test. command: make test_tone_no_tone - query: tone_no_tone_single_board == '1:1' + query: tone_no_tone_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-interrupts-1400: - description: Compiling, flashing and monitoring Interrupts unit test. command: make test_interrupts_single - query: interrupts_single_board == '1:1' + query: interrupts_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-random-1400: - description: Compiling, flashing and monitoring random unit test. command: make test_random - query: random_single_board == '1:1' + query: random_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-time-1400: - description: Compiling, flashing and monitoring timer unit test. command: make test_time_single UNITY_PATH=/opt/Unity - query: time_single_board == '1:1' + query: time_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-analog-io-pwm-1400: - description: Compiling, flashing and monitoring timer unit test. command: make test_analogio_pwm UNITY_PATH=/opt/Unity - query: analogio_pwm_single_board == '1:1' + query: analogio_pwm_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-analog-io-adc-4700: - description: Compiling, flashing and monitoring ADC unit test. command: make test_analogio_adc - query: analogio_adc_single_board == '1:1' + query: analogio_adc_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-iic-1400: - description: Compiling, flashing and monitoring timer unit test. command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity - query: iic_ping_pong_single_board == '1:1' + query: iic_ping_pong_single_board == '2:1' working_dir: extras/arduino-core-tests \ No newline at end of file diff --git a/config/user.yml b/config/user.yml index 1bbc276d..34ce85da 100644 --- a/config/user.yml +++ b/config/user.yml @@ -17,7 +17,7 @@ unit-test: - unit-test-random-4700 - unit-test-time-4700 - unit-test-analog-io-pwm-4700 - # - unit-test-analog-io-adc-4700 + - unit-test-analog-io-adc-4700 # - unit-test-iic-4700 - unit-test-iic-pingpong-4700 # - unit-test-uart-4700 @@ -28,7 +28,7 @@ unit-test: # - unit-test-tone-1400 # - unit-test-interrupts-1400 # - unit-test-random-1400 - # - unit-test-time-1400 + # - unit-test-time-1400 # - unit-test-analog-io-pwm-1400 # - unit-test-analog-io-adc-1400 # - unit-test-iic-pingpong-1400 \ No newline at end of file From 3c922c1b6901c35a598416f1c76bec1a3574b1d2 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Tue, 9 Sep 2025 16:48:57 +0200 Subject: [PATCH 250/366] .github/workflows: Fix project.yml. Signed-off-by: wxyyy0117 --- config/project.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/config/project.yml b/config/project.yml index 874950ad..6875fc03 100644 --- a/config/project.yml +++ b/config/project.yml @@ -203,13 +203,7 @@ unit-test: command: make test_analogio_pwm UNITY_PATH=/opt/Unity query: analogio_pwm_single_board == '2:1' working_dir: extras/arduino-core-tests - - unit-test-analog-io-adc-4700: - - description: Compiling, flashing and monitoring ADC unit test. - command: make test_analogio_adc - query: analogio_adc_single_board == '2:1' - working_dir: extras/arduino-core-tests - + unit-test-iic-1400: - description: Compiling, flashing and monitoring timer unit test. command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity From d6b37de0b38c89dc53e2676cd5e42fcb8c07f775 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Tue, 9 Sep 2025 17:01:39 +0200 Subject: [PATCH 251/366] .github/workflows: Add dac test. Signed-off-by: wxyyy0117 --- config/project.yml | 8 +++++++- config/user.yml | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/config/project.yml b/config/project.yml index 6875fc03..742d8dd9 100644 --- a/config/project.yml +++ b/config/project.yml @@ -102,7 +102,13 @@ unit-test: command: make test_analogio_adc query: analogio_adc_single_board == '1:1' working_dir: extras/arduino-core-tests - + + unit-test-analog-io-dac-4700: + - description: Compiling, flashing and monitoring DAC unit test. + command: make test_analogio_dac + query: analogio_adc_single_board == '1:1' + working_dir: extras/arduino-core-tests + unit-test-iic-4700: - description: Compiling, flashing and monitoring timer unit test. command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity diff --git a/config/user.yml b/config/user.yml index 34ce85da..84ea5f2f 100644 --- a/config/user.yml +++ b/config/user.yml @@ -18,6 +18,7 @@ unit-test: - unit-test-time-4700 - unit-test-analog-io-pwm-4700 - unit-test-analog-io-adc-4700 + - unit-test-analog-io-dac-4700 # - unit-test-iic-4700 - unit-test-iic-pingpong-4700 # - unit-test-uart-4700 From 9db3f267226ef864888cfb291865d0067541e2b2 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 11 Sep 2025 13:59:48 +0200 Subject: [PATCH 252/366] extras/: Update submodule. Signed-off-by: zhanglinjing --- extras/arduino-core-tests | 2 +- extras/makers-devops | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index 47cde374..c5f31970 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit 47cde374c4f7f20740dea2773caab06003913e2c +Subproject commit c5f319702bbd7707e4564b612d453de24ccd50ae diff --git a/extras/makers-devops b/extras/makers-devops index 64397779..663d0491 160000 --- a/extras/makers-devops +++ b/extras/makers-devops @@ -1 +1 @@ -Subproject commit 64397779460af767e89f5ccee27958f2b797e82e +Subproject commit 663d04911cd3d2b1191be6fc7a08f83c38ed49f7 From 77bb5c7b09280ad26c2ddfd725a413414868eaf5 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 11 Sep 2025 14:00:43 +0200 Subject: [PATCH 253/366] config/: Add spi test. Signed-off-by: zhanglinjing --- config/project.yml | 18 +++++++++++++++++- config/user.yml | 5 +++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/config/project.yml b/config/project.yml index 742d8dd9..e5e80d52 100644 --- a/config/project.yml +++ b/config/project.yml @@ -1,6 +1,6 @@ # options: # USE_CORE: -# name: Infineon:xmc@3.5.0 +# name: infineon:xmc@3.5.0 # url: https://github.com/Infineon/XMC-for-Arduino/releases/latest/download/package_infineon_index.json options: USE_CORE: @@ -162,6 +162,21 @@ unit-test: command: make test_pulse_board2 UNITY_PATH=/opt/Unity query: adv_io_pulse_board2 == '1:1' working_dir: extras/arduino-core-tests + + unit-test-spi-pingpong-4700: + - description: Compiling, flashing and monitoring SPI pingpong slave unit test. + command: make test_spi_connected2_slavepingpong + query: spi_ping_pong_multiple_boards_slave == '1:1' + working_dir: extras/arduino-core-tests + options: + USE_CORE: + name: infineon:psoc6@0.8.1 + url: https://github.com/Infineon/arduino-core-psoc6/releases/latest/download/package_psoc6_index.json + + - description: Compiling, flashing and monitoring SPI pingpong master unit test. + command: make test_spi_connected2_masterpingpong + query: spi_ping_pong_multiple_boards_master == '1:1' + working_dir: extras/arduino-core-tests unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. @@ -215,5 +230,6 @@ unit-test: command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity query: iic_ping_pong_single_board == '2:1' working_dir: extras/arduino-core-tests + \ No newline at end of file diff --git a/config/user.yml b/config/user.yml index 84ea5f2f..6df6d3c2 100644 --- a/config/user.yml +++ b/config/user.yml @@ -11,6 +11,7 @@ unit-test: + # - unit-test-digital-io-4700 - unit-test-tone-4700 - unit-test-interrupts-4700 @@ -24,6 +25,7 @@ unit-test: # - unit-test-uart-4700 # - unit-test-uart-connected2-4700 # - unit-test-pulse-4700 + - unit-test-spi-pingpong-4700 # - unit-test-digital-io-1400 # - unit-test-tone-1400 @@ -31,5 +33,4 @@ unit-test: # - unit-test-random-1400 # - unit-test-time-1400 # - unit-test-analog-io-pwm-1400 - # - unit-test-analog-io-adc-1400 - # - unit-test-iic-pingpong-1400 \ No newline at end of file + # - unit-test-analog-io-adc-1400 \ No newline at end of file From 1edd209f4d6c8bf072bf3b591d7624b397419b48 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 11 Sep 2025 14:01:45 +0200 Subject: [PATCH 254/366] tests/: Add spi pin config from psoc. Signed-off-by: zhanglinjing --- tests/test_config.cpp | 14 +++++++++ tests/test_config.h | 67 ++++++++++++++++++++++++++----------------- 2 files changed, 54 insertions(+), 27 deletions(-) create mode 100644 tests/test_config.cpp diff --git a/tests/test_config.cpp b/tests/test_config.cpp new file mode 100644 index 00000000..238f2773 --- /dev/null +++ b/tests/test_config.cpp @@ -0,0 +1,14 @@ +/** + * @file test_config.cpp + * @brief Implementation file for board-specific test configuration variables. + * + */ + +#include "test_config.h" +#include + +// TODO: Need SPI definition of PSOC6 for spi slave test. It should be managed more effectively. +#if defined(ARDUINO_ARCH_PSOC6) +// Define the SPI master and slave instances +SPIClassPSOC SPI1 = SPIClassPSOC(PIN_SPI_MOSI, PIN_SPI_MISO, PIN_SPI_SCK, TEST_PIN_SPI_SSEL, true); +#endif // ARDUINO_ARCH_PSOC6 diff --git a/tests/test_config.h b/tests/test_config.h index a8dccfef..b94af027 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -13,32 +13,45 @@ #include #include -#define SPI_TRANSFER_DELAY_US 2000 -// Test Pin Definitions -#define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 -#define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 -#define TEST_PIN_SYNC_IO 4 // IO_1 -#define TEST_PIN_PULSE 5 // IO_2 -#define TEST_PIN_SPI_SSEL 10 // IO_0 - -#if defined(KIT_XMC47_RELAX) - #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz - #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd - #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider - #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground - #define TEST_ADC_MAX_VALUE 1023 - #define TEST_ADC_RESOLUTION 10 // ADC resolution - - #define TEST_PIN_ANALOG_IO_DAC 53 - #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 - -#elif defined(KIT_XMC14_2GO) - #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz - #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd - #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider - #define TEST_ADC_MAX_VALUE 1023 - #define TEST_ADC_RESOLUTION 10 // ADC resolution -#endif +#if defined(ARDUINO_ARCH_XMC) + + #define SPI_TRANSFER_DELAY_US 2000 + // Test Pin Definitions + #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 + #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 + #define TEST_PIN_SYNC_IO 4 // IO_1 + #define TEST_PIN_PULSE 5 // IO_2 + #define TEST_PIN_SPI_SSEL 10 // IO_0 + + #if defined(KIT_XMC47_RELAX) + #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz + #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd + #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider + #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground + #define TEST_ADC_MAX_VALUE 1023 + #define TEST_ADC_RESOLUTION 10 // ADC resolution + + #define TEST_PIN_ANALOG_IO_DAC 53 + #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 + + #elif defined(KIT_XMC14_2GO) + #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz + #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd + #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider + #define TEST_ADC_MAX_VALUE 1023 + #define TEST_ADC_RESOLUTION 10 // ADC resolution + #endif extern XMCSPIClass SPI; +#endif // ARDUINO_ARCH_XMC + +// TODO: Need definition of PSOC6 for spi slave test. It should be managed more effectively. +#if defined(ARDUINO_ARCH_PSOC6) + // Test Pin Definitions + #define TEST_PIN_SYNC_IO 4 // IO_1 + #define TEST_PIN_SPI_SSEL 3 // IO_0 + +// Forward declarations for SPI instances +extern SPIClassPSOC SPI1; +#endif // ARDUINO_ARCH_PSOC6 -#endif // TEST_CONFIG_H \ No newline at end of file +#endif // TEST_CONFIG_H From 02f16e5ef070a55cd56e10da5b7014d48fca48cd Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 9 Sep 2025 16:36:24 +0530 Subject: [PATCH 255/366] variants: Added flag for current pin status. Signed-off-by: MDin --- variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h | 1 + variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h | 1 + variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h | 1 + variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 1 + variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h | 1 + variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h | 1 + variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h | 1 + variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h | 1 + 8 files changed, 8 insertions(+) diff --git a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h index dd876295..91c9cd07 100644 --- a/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC11_BOOT_001/pins_arduino.h @@ -177,6 +177,7 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { }; const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +bool gpio_current_value[NUM_DIGITAL] = {false}; ; const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { diff --git a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h index a00636f4..a4e7913c 100644 --- a/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h +++ b/variants/XMC1100/config/KIT_XMC_2GO_XMC1100_V1/pins_arduino.h @@ -131,6 +131,7 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { }; const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +bool gpio_current_value[NUM_DIGITAL] = {false}; ; const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { diff --git a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h index dbc004d2..07b93ee6 100644 --- a/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h +++ b/variants/XMC1300/config/KIT_XMC13_BOOT_001/pins_arduino.h @@ -163,6 +163,7 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { }; const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +bool gpio_current_value[NUM_DIGITAL] = {false}; ; const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index 82884297..52240066 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -176,6 +176,7 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +bool gpio_current_value[NUM_DIGITAL] = {false}; ; const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 2b86203f..2aaa534c 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -173,6 +173,7 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { }; const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +bool gpio_current_value[NUM_DIGITAL] = {false}; /* Configurations of Interrupt */ const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { diff --git a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h index 271b8439..dadd1dd5 100644 --- a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h +++ b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h @@ -160,6 +160,7 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +bool gpio_current_value[NUM_DIGITAL] = {false}; ; const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { diff --git a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h index 741820df..6b1775b3 100644 --- a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h +++ b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h @@ -202,6 +202,7 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { }; const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +bool gpio_current_value[NUM_DIGITAL] = {false}; ; const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { diff --git a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h index 6ebe4f5d..216c8f39 100644 --- a/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h +++ b/variants/XMC4700/config/KIT_XMC47_RELAX/pins_arduino.h @@ -259,6 +259,7 @@ const XMC_PORT_PIN_t mapping_port_pin[] = { }; const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); +bool gpio_current_value[NUM_DIGITAL] = {false}; ; const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { From 6b7437e6083ccd0ccbde7f18308d62c4e80da159 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 9 Sep 2025 16:37:47 +0530 Subject: [PATCH 256/366] cores/xmc: Modified digitalio implementation. Signed-off-by: MDin --- cores/xmc/Arduino.h | 1 + cores/xmc/wiring_digital.c | 26 +++++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/cores/xmc/Arduino.h b/cores/xmc/Arduino.h index 27a189cb..431f325c 100644 --- a/cores/xmc/Arduino.h +++ b/cores/xmc/Arduino.h @@ -283,6 +283,7 @@ extern const XMC_PIN_INTERRUPT_t mapping_interrupt[]; extern const uint8_t mapping_pin_PWM4[][2]; extern XMC_PWM4_t mapping_pwm4[]; extern XMC_ADC_t mapping_adc[]; +extern bool gpio_current_value[]; #if defined(CCU8V2) || defined(CCU8V3) || defined(CCU8V1) extern const uint8_t mapping_pin_PWM8[][2]; extern XMC_PWM8_t mapping_pwm8[]; diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c index 51c769a4..c214ab1f 100644 --- a/cores/xmc/wiring_digital.c +++ b/cores/xmc/wiring_digital.c @@ -3,7 +3,11 @@ extern "C" { #endif void pinMode(pin_size_t pin, PinMode mode) { + if (pin > NUM_DIGITAL) { + return; + } XMC_GPIO_CONFIG_t gpio_conf; + bool gpio_init_value = false; switch (mode) { case INPUT: @@ -38,18 +42,30 @@ void pinMode(pin_size_t pin, PinMode mode) { gpio_conf.input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_LARGE; #endif XMC_GPIO_Init(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, &gpio_conf); + gpio_current_value[pin] = gpio_init_value; } -uint8_t digitalRead(uint8_t pin) { - return (pin == GND) - ? LOW - : (XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin)); +PinStatus digitalRead(pin_size_t pin) { + if (pin > NUM_DIGITAL) { + return 0; + } + gpio_current_value[pin] = + XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin) ? HIGH : LOW; + return gpio_current_value[pin]; } -void digitalWrite(uint8_t pin, uint8_t status) { +void digitalWrite(pin_size_t pin, PinStatus status) { + if (pin > NUM_DIGITAL) { + return; + } XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, (status == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW : XMC_GPIO_OUTPUT_LEVEL_HIGH); + if (status == LOW) { + gpio_current_value[pin] = false; + } else { + gpio_current_value[pin] = true; + } } #ifdef __cplusplus From e59998c702a1962bc98b8e2cafbe3ee7522edd23 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 10 Sep 2025 13:12:11 +0530 Subject: [PATCH 257/366] extras: Added arduino core test. Signed-off-by: MDin --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index c5f31970..d7cf8559 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit c5f319702bbd7707e4564b612d453de24ccd50ae +Subproject commit d7cf8559373bec5e29c0d8d74e44da38f320b582 From 12964996b4ed49fbf4298a065781c7981f63ce8f Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 10 Sep 2025 13:12:46 +0530 Subject: [PATCH 258/366] config: Uncomment digitalio test. Signed-off-by: MDin --- config/user.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/user.yml b/config/user.yml index 6df6d3c2..7ba5aaa3 100644 --- a/config/user.yml +++ b/config/user.yml @@ -11,8 +11,7 @@ unit-test: - - # - unit-test-digital-io-4700 + - unit-test-digital-io-4700 - unit-test-tone-4700 - unit-test-interrupts-4700 - unit-test-random-4700 From 0499a9668aa34070d7e272768c09cc019b26a164 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 11 Sep 2025 17:41:46 +0530 Subject: [PATCH 259/366] cores/xmc: Removed invalid pin condition. Signed-off-by: MDin --- cores/xmc/wiring_digital.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/cores/xmc/wiring_digital.c b/cores/xmc/wiring_digital.c index c214ab1f..e138fa98 100644 --- a/cores/xmc/wiring_digital.c +++ b/cores/xmc/wiring_digital.c @@ -3,9 +3,6 @@ extern "C" { #endif void pinMode(pin_size_t pin, PinMode mode) { - if (pin > NUM_DIGITAL) { - return; - } XMC_GPIO_CONFIG_t gpio_conf; bool gpio_init_value = false; @@ -46,18 +43,12 @@ void pinMode(pin_size_t pin, PinMode mode) { } PinStatus digitalRead(pin_size_t pin) { - if (pin > NUM_DIGITAL) { - return 0; - } gpio_current_value[pin] = XMC_GPIO_GetInput(mapping_port_pin[pin].port, mapping_port_pin[pin].pin) ? HIGH : LOW; return gpio_current_value[pin]; } void digitalWrite(pin_size_t pin, PinStatus status) { - if (pin > NUM_DIGITAL) { - return; - } XMC_GPIO_SetOutputLevel(mapping_port_pin[pin].port, mapping_port_pin[pin].pin, (status == LOW) ? XMC_GPIO_OUTPUT_LEVEL_LOW : XMC_GPIO_OUTPUT_LEVEL_HIGH); From 012cbe83a505f0856ed46c0b9139076cfc7fa85e Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Tue, 9 Sep 2025 18:47:05 +0200 Subject: [PATCH 260/366] ./: Removed XMC4200 and XMC4400 boards. Signed-off-by: jaenrig-ifx --- README.md | 8 +- boards.txt | 87 - ci-matrix-config.yml | 21 +- cores/xmc/WInterrupts.c | 18 - docs/arduino-deviations.rst | 5 +- docs/builtin-libraries.rst | 7 - docs/hw-platforms.rst | 136 +- libraries/CAN/README.md | 4 +- libraries/LED/Readme.md | 2 - libraries/Wire/src/Wire.cpp | 6 - package/package_xmc_index.template.json | 6 - tests/manual/PCLKTest/PCLKTest.ino | 2 +- variants/XMC4200/XMC4200.h | 21635 ------------ .../KIT_XMC_PLT2GO_XMC4200/pins_arduino.h | 364 - variants/XMC4200/linker_script.ld | 286 - variants/XMC4200/startup_XMC4200.S | 434 - variants/XMC4200/system_XMC4200.c | 696 - variants/XMC4200/system_XMC4200.h | 110 - variants/XMC4400/XMC4400.h | 27384 ---------------- .../KIT_XMC_PLT2GO_XMC4400/pins_arduino.h | 435 - variants/XMC4400/linker_script.ld | 292 - variants/XMC4400/startup_XMC4400.S | 452 - variants/XMC4400/system_XMC4400.c | 651 - variants/XMC4400/system_XMC4400.h | 109 - 24 files changed, 72 insertions(+), 53078 deletions(-) delete mode 100644 variants/XMC4200/XMC4200.h delete mode 100644 variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h delete mode 100644 variants/XMC4200/linker_script.ld delete mode 100644 variants/XMC4200/startup_XMC4200.S delete mode 100644 variants/XMC4200/system_XMC4200.c delete mode 100644 variants/XMC4200/system_XMC4200.h delete mode 100644 variants/XMC4400/XMC4400.h delete mode 100644 variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h delete mode 100644 variants/XMC4400/linker_script.ld delete mode 100644 variants/XMC4400/startup_XMC4400.S delete mode 100644 variants/XMC4400/system_XMC4400.c delete mode 100644 variants/XMC4400/system_XMC4400.h diff --git a/README.md b/README.md index 6e53a437..b7c3df25 100644 --- a/README.md +++ b/README.md @@ -12,25 +12,21 @@ The [XMC™ microcontroller family](https://www.infineon.com/cms/de/product/micr - - - - + - - +
KIT_XMC14_2GO KIT_XMC11_BOOT_001 KIT_XMC1400_ARDUINO KIT_XMC13_BOOT_001
KIT_XMC_PLT2GO_XMC4200KIT_XMC_PLT2GO_XMC4400KIT_XMC14_2GO KIT_XMC47_RELAX
diff --git a/boards.txt b/boards.txt index 5557a911..dbb8420c 100644 --- a/boards.txt +++ b/boards.txt @@ -227,93 +227,6 @@ kit_xmc1400_arduino.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP kit_xmc1400_arduino.menu.LIB.DSPNN=ARM DSP / ARM NN Framework kit_xmc1400_arduino.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN -#################################################### -kit_xmc_plt2go_xmc4200.name=KIT_XMC_PLT2GO_XMC4200 -kit_xmc_plt2go_xmc4200.upload.tool=xmcflasher -kit_xmc_plt2go_xmc4200.upload.speed=115200 -kit_xmc_plt2go_xmc4200.upload.resetmethod=ck -kit_xmc_plt2go_xmc4200.upload.maximum_size=262144 -kit_xmc_plt2go_xmc4200.upload.wait_for_upload_port=true - -kit_xmc_plt2go_xmc4200.communication=usb -kit_xmc_plt2go_xmc4200.protocol=dragon_isp -kit_xmc_plt2go_xmc4200.program.protocol=dragon_isp -kit_xmc_plt2go_xmc4200.program.tool=xmcflasher -kit_xmc_plt2go_xmc4200.program.extra_params=-Pusb - -kit_xmc_plt2go_xmc4200.serial.disableDTR=true -kit_xmc_plt2go_xmc4200.serial.disableRTS=true - -kit_xmc_plt2go_xmc4200.build.mcu=cortex-m4 -kit_xmc_plt2go_xmc4200.build.f_cpu=80000000L -kit_xmc_plt2go_xmc4200.build.board=ARM_XMC -kit_xmc_plt2go_xmc4200.build.board.version=4200 -kit_xmc_plt2go_xmc4200.build.board.type=F64x256 -kit_xmc_plt2go_xmc4200.build.board.v=256 -kit_xmc_plt2go_xmc4200.build.core=xmc -kit_xmc_plt2go_xmc4200.build.variant=XMC4200 -kit_xmc_plt2go_xmc4200.build.board_variant_old=XMC4200_Platform2GO -kit_xmc_plt2go_xmc4200.build.board_variant=KIT_XMC_PLT2GO_XMC4200 -kit_xmc_plt2go_xmc4200.build.flash_size=256K -kit_xmc_plt2go_xmc4200.build.flash_ld=linker_script.ld -kit_xmc_plt2go_xmc4200.build.extra_flags=-DARM_MATH_CM4 -DARM_MATH_DSP -DINTERRUPT_USE_ERU -#-DUSB0 - -kit_xmc_plt2go_xmc4200.menu.LIB.NONE=None -kit_xmc_plt2go_xmc4200.menu.LIB.NONE.library.selected= -kit_xmc_plt2go_xmc4200.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -kit_xmc_plt2go_xmc4200.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN -kit_xmc_plt2go_xmc4200.menu.LIB.NN=ARM NN Framework -kit_xmc_plt2go_xmc4200.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -kit_xmc_plt2go_xmc4200.menu.LIB.DSP=ARM DSP -kit_xmc_plt2go_xmc4200.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP - -#################################################### -kit_xmc_plt2go_xmc4400.name=KIT_XMC_PLT2GO_XMC4400 -kit_xmc_plt2go_xmc4400.upload.tool=xmcflasher -kit_xmc_plt2go_xmc4400.upload.speed=115200 -kit_xmc_plt2go_xmc4400.upload.resetmethod=ck -kit_xmc_plt2go_xmc4400.upload.maximum_size=512000 -kit_xmc_plt2go_xmc4400.upload.wait_for_upload_port=true - -kit_xmc_plt2go_xmc4400.communication=usb -kit_xmc_plt2go_xmc4400.protocol=dragon_isp -kit_xmc_plt2go_xmc4400.program.protocol=dragon_isp -kit_xmc_plt2go_xmc4400.program.tool=xmcflasher -kit_xmc_plt2go_xmc4400.program.extra_params=-Pusb - -kit_xmc_plt2go_xmc4400.serial.disableDTR=true -kit_xmc_plt2go_xmc4400.serial.disableRTS=true - -kit_xmc_plt2go_xmc4400.build.mcu=cortex-m4 -kit_xmc_plt2go_xmc4400.build.f_cpu=144000000L -kit_xmc_plt2go_xmc4400.build.board=ARM_XMC -kit_xmc_plt2go_xmc4400.build.board.version=4400 -kit_xmc_plt2go_xmc4400.build.board.type=F100x512 -kit_xmc_plt2go_xmc4400.build.board.v=512 -kit_xmc_plt2go_xmc4400.build.core=xmc -kit_xmc_plt2go_xmc4400.build.variant=XMC4400 -kit_xmc_plt2go_xmc4400.build.board_variant_old=XMC4400_Platform2GO -kit_xmc_plt2go_xmc4400.build.board_variant=KIT_XMC_PLT2GO_XMC4400 -kit_xmc_plt2go_xmc4400.build.flash_size=500K -kit_xmc_plt2go_xmc4400.build.flash_ld=linker_script.ld -kit_xmc_plt2go_xmc4400.build.extra_flags=-DARM_MATH_CM4 -DARM_MATH_DSP -#-DUSB0 - -kit_xmc_plt2go_xmc4400.menu.UART.debug=PC -kit_xmc_plt2go_xmc4400.menu.UART.debug.uart.selected=-DSERIAL_HOSTPC -kit_xmc_plt2go_xmc4400.menu.UART.onBoard=On Board -kit_xmc_plt2go_xmc4400.menu.UART.onBoard.uart.selected=-DSERIAL_ONBOARD - -kit_xmc_plt2go_xmc4400.menu.LIB.NONE=None -kit_xmc_plt2go_xmc4400.menu.LIB.NONE.library.selected= -kit_xmc_plt2go_xmc4400.menu.LIB.DSPNN=ARM DSP / ARM NN Framework -kit_xmc_plt2go_xmc4400.menu.LIB.DSPNN.library.selected=-DARM_LIB_CMSIS_DSP -DARM_LIB_CMSIS_NN -kit_xmc_plt2go_xmc4400.menu.LIB.NN=ARM NN Framework -kit_xmc_plt2go_xmc4400.menu.LIB.NN.library.selected=-DARM_LIB_CMSIS_NN -kit_xmc_plt2go_xmc4400.menu.LIB.DSP=ARM DSP -kit_xmc_plt2go_xmc4400.menu.LIB.DSP.library.selected=-DARM_LIB_CMSIS_DSP - #################################################### kit_xmc47_relax.name=KIT_XMC47_RELAX kit_xmc47_relax.upload.tool=xmcflasher diff --git a/ci-matrix-config.yml b/ci-matrix-config.yml index ea29d5bf..553fdc4d 100644 --- a/ci-matrix-config.yml +++ b/ci-matrix-config.yml @@ -35,8 +35,6 @@ fqbn: - infineon:xmc:kit_xmc14_2go - infineon:xmc:kit_xmc47_relax - infineon:xmc:kit_xmc_2go_xmc1100_v1 - - infineon:xmc:kit_xmc_plt2go_xmc4200 - - infineon:xmc:kit_xmc_plt2go_xmc4400 sketch: # - libraries/LED @@ -67,13 +65,6 @@ sketch: # - fqbn: infineon:xmc:kit_xmc1400_arduino # sketch: # - libraries/DeviceControlXMC/examples/SleepModeXMC1100/SleepModeXMC1100.ino -# - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4200 -# sketch: -# - libraries/RTC/examples/AlarmRTC/AlarmRTC.ino -# - libraries/CAN -# - fqbn: infineon:xmc:kit_xmc_plt2go_xmc4400 -# sketch: -# - libraries/CAN # - fqbn: infineon:xmc:kit_xmc47_relax # sketch: # - libraries/I2S @@ -103,17 +94,7 @@ exclude: - libraries/DeviceControlXMC/examples/StackMemoryMeasurement/StackMemoryMeasurement.ino - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino -- fqbn: infineon:xmc:kit_xmc_plt2go_xmc4200 - sketch: - - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino - - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino - - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino -- fqbn: infineon:xmc:kit_xmc_plt2go_xmc4400 - sketch: - - libraries/DeviceControlXMC/examples/DieTemperatureMeasurement/DieTemperatureMeasurement.ino - - libraries/DeviceControlXMC/examples/HeapMemoryMeasurement/HeapMemoryMeasurement.ino - - extras/arduino-examples/examples/04.Communication/MultiSerial/MultiSerial.ino - - extras/arduino-examples/examples/04.Communication/SerialEvent/SerialEvent.ino + diff --git a/cores/xmc/WInterrupts.c b/cores/xmc/WInterrupts.c index 95ed78b6..6c16f875 100644 --- a/cores/xmc/WInterrupts.c +++ b/cores/xmc/WInterrupts.c @@ -21,19 +21,11 @@ void ERU0_3_IRQHandler(void) { } } - #if defined(KIT_XMC_PLT2GO_XMC4200) -void ERU0_0_IRQHandler(void) { - if (interrupt_1_cb) { - interrupt_1_cb(); - } -} - #else void ERU1_0_IRQHandler(void) { if (interrupt_1_cb) { interrupt_1_cb(); } } - #endif #else void CCU40_0_IRQHandler(void) { @@ -104,15 +96,9 @@ void attachInterrupt(pin_size_t interrupt_num, voidFuncPtr callback, PinStatus m interrupt_0_cb = callback; NVIC_EnableIRQ(ERU0_3_IRQn); } else if (pin_irq.irq_num == 1) { - #if defined(KIT_XMC_PLT2GO_XMC4200) - NVIC_SetPriority(ERU0_0_IRQn, 3); - interrupt_1_cb = callback; - NVIC_EnableIRQ(ERU0_0_IRQn); - #else NVIC_SetPriority(ERU1_0_IRQn, 3); interrupt_1_cb = callback; NVIC_EnableIRQ(ERU1_0_IRQn); - #endif } #else XMC_CCU4_SLICE_EVENT_CONFIG_t event_config = {0}; @@ -191,11 +177,7 @@ void detachInterrupt(pin_size_t interrupt_num) { break; case 1: - #if defined(KIT_XMC_PLT2GO_XMC4200) - NVIC_DisableIRQ(ERU0_0_IRQn); - #else NVIC_DisableIRQ(ERU1_0_IRQn); - #endif break; default: break; diff --git a/docs/arduino-deviations.rst b/docs/arduino-deviations.rst index c6f5d755..519e9b6f 100644 --- a/docs/arduino-deviations.rst +++ b/docs/arduino-deviations.rst @@ -175,7 +175,6 @@ function, or other case as described below. * - KIT_XMC1400_ARDUINO - Alternate pin function - Matches Arduino Uno - * - KIT_XMC_PLT2GO_XMC4400 - External hard wired pins - | For 3V3 boards set I2C pins to tristate or open drain to use | For 5V boards refer to [this section](https://xmc-arduino.readthedocs.io/en/latest/hw-platforms.html#connected-i2s-and-analog-pins) on track cuts to enable A4 and A5 to work @@ -205,8 +204,8 @@ via the Tools menu as shown in the picture below. :width: 600 This is generally the case for most of the XMC boards. However, for boards -such as the :ref:`xmc4200-platform2go` and the :ref:`xmc4700-relax`, both the serial -output modes are simultaneously active and neednot be selected or enabled from the menu. +such as the :ref:`xmc4700-relax`, both the serial +output modes are simultaneously active and need not be selected or enabled from the menu. Note: Please note that the sketch must be recompiled when a different serial output is selected. diff --git a/docs/builtin-libraries.rst b/docs/builtin-libraries.rst index 1fcc6f76..2d5d2897 100644 --- a/docs/builtin-libraries.rst +++ b/docs/builtin-libraries.rst @@ -23,7 +23,6 @@ Examples Supported | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO - | KIT_XMC_PLT2GO_XMC4400 | KIT_XMC47_RELAX - | Simple die temperature measurement | for XMC devices which demonstrates @@ -64,7 +63,6 @@ Examples Supported - | KIT_XMC_2GO_XMC1100_V1 | KIT_XMC11_BOOT_001 | KIT_XMC13_BOOT_001 - | KIT_XMC_PLT2GO_XMC4400 | KIT_XMC47_RELAX - | Simple example to check stack memory | during run time for XMC devices which @@ -128,7 +126,6 @@ SPI Library | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO - | KIT_XMC_PLT2GO_XMC4400 | KIT_XMC47_RELAX - | SPI example which communicates between the | MOSI and MISO pin of the same board. Connect @@ -151,7 +148,6 @@ Wire Library | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO - | KIT_XMC_PLT2GO_XMC4400 | KIT_XMC47_RELAX - | Demonstrates use of the Wire library. Reads data | from an I2C/TWI slave device. Refer to the "Wire Slave @@ -166,7 +162,6 @@ Wire Library | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO - | KIT_XMC_PLT2GO_XMC4400 | KIT_XMC47_RELAX - | Demonstrates use of the Wire library. Writes data to | an I2C/TWI slave device. Refer to the "Wire Slave @@ -181,7 +176,6 @@ Wire Library | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO - | KIT_XMC_PLT2GO_XMC4400 | KIT_XMC47_RELAX - | Demonstrates use of the Wire library. Receives data as | an I2C/TWI slave device. Refer to the "Wire Slave @@ -196,7 +190,6 @@ Wire Library | KIT_XMC13_BOOT_001 | KIT_XMC14_2GO | KIT_XMC1400_ARDUINO - | KIT_XMC_PLT2GO_XMC4400 | KIT_XMC47_RELAX - | Demonstrates use of the Wire library. Receives data as | an I2C/TWI slave device. Refer to the "Wire Master diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index f89c23ef..1d9d1c18 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -26,14 +26,6 @@ The following XMC microcontroller boards are supported by XMC for Arduino: - :ref:`KIT_XMC1400_ARDUINO` - XMC1402 - Arduino Uno - * - .. image:: img/KIT_XMC_PLT2GO_XMC4200.jpg - - :ref:`KIT_XMC_PLT2GO_XMC4200` - - XMC4200 - - Arduino Uno, Shield2Go, mikroBUS - * - .. image:: img/KIT_XMC_PLT2GO_XMC4400.jpg - - :ref:`KIT_XMC_PLT2GO_XMC4400` - - XMC4400 - - Arduino Uno, Shield2Go, mikroBUS * - .. image:: img/KIT_XMC47_RELAX.jpg - :ref:`KIT_XMC47_RELAX` variants - XMC4700 @@ -117,54 +109,6 @@ Arduino UNO Rev3 implementation. Please look at the pinout diagram for more info ----------------------------------------------------------------------- -.. _KIT_XMC_PLT2GO_XMC4200: - -KIT_XMC_PLT2GO_XMC4200 ----------------------- - -.. image:: img/KIT_XMC_PLT2GO_XMC4200.jpg - :width: 400 - -The `KIT_XMC_PLT2GO_XMC4200 `__ board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. -Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. -The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. -This kit is equipped with an ARM® Cortex®-M4 based XMC4200 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, -MikroBUS and Shield2Go form factors. - -Pinout Diagram -^^^^^^^^^^^^^^ -.. image:: img/KIT_XMC_PLT2GO_XMC4200_pinout.png - :width: 700 - -Please note that Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other -on the board itself. If you want to use them check out the subsection :ref:`connected_pins`. - ------------------------------------------------------------------------ - -.. _KIT_XMC_PLT2GO_XMC4400: - -KIT_XMC_PLT2GO_XMC4400 ----------------------- - -.. image:: img/KIT_XMC_PLT2GO_XMC4400.jpg - :width: 400 - -The `KIT_XMC_PLT2GO_XMC4400 `__ board consists of a XMC4400 microcontroller with a debugger implemented by a XMC4200 microcontroller. -Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. -The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. -This kit is equipped with an ARM® Cortex®-M4 based XMC4400 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, -MikroBUS and Shield2Go form factors. - -Pinout Diagram -^^^^^^^^^^^^^^ -.. image:: img/KIT_XMC_PLT2GO_XMC4400_pinout.png - :width: 700 - -Please note that Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other -on the board itself. If you want to use them check out the subsection :ref:`connected_pins`. - ------------------------------------------------------------------------ - .. _KIT_XMC47_RELAX: KIT_XMC47_RELAX @@ -199,11 +143,10 @@ on the board itself. If you want to use them check out the subsection :ref:`conn Connected I2S and Analog pins ----------------------------- -For the ``KIT_XMC_PLT2GO_XMC4200``, ``KIT_XMC_PLT2GO_XMC4400`` and ``KIT_XMC47_RELAX`` the Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino +For the ``KIT_XMC47_RELAX`` the Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other on the board itself. Although they are different physical pins of the microcontroller, they are connected with each other on the board to comply with the original Arduino UNO Rev3 pin connections. This influences analog measurements on -``A4`` and ``A5`` if you are using I2C simultaneously. Details of the connection can also be found in the schematics in the user manual of the board here: -`KIT_XMC_PLT2GO_XMC4200 user manual`_, `KIT_XMC_PLT2GO_XMC4400 user manual`_ and `KIT_XMC47_RELAX user manual`_. +``A4`` and ``A5`` if you are using I2C simultaneously. Details of the connection can also be found in the schematics in the user manual of the board here: `KIT_XMC47_RELAX user manual`_. The user manual shows on: @@ -217,23 +160,11 @@ but the open drain method is preferable. These functions are using the pin mode You can also cut the physical connection on the board itself. -For ``KIT_XMC_PLT2GO_XMC4200`` remove the resistor ``R104`` and ``R105``: - -.. image:: img/kit_xmc_plt2go_xmc4200_remove_resistors.png - :width: 300 - -For the ``KIT_XMC_PLT2GO_XMC4400`` by cutting the marked blue routes on the back side of the PCB: - -.. image:: img/kit_xmc_plt2go_xmc4400_cut_routes.png - :width: 300 - For the ``KIT_XMC47_RELAX`` cut the blue routes on the back side of the PCB as indicated here: .. image:: img/kit_xmc47_relax_cut_routes.jpg :width: 300 -.. _KIT_XMC_PLT2GO_XMC4200 user manual: https://www.infineon.com/dgdl/Infineon-XMC4200_Platform2Go-UserManual-v01_00-EN.pdf?fileId=5546d4626f229553016f8fca76c12c96 -.. _KIT_XMC_PLT2GO_XMC4400 user manual: https://www.infineon.com/dgdl/Infineon-XMC4400_Platform2Go-UserManual-v01_00-EN.pdf?fileId=5546d4626f229553016f8fc159482c94 .. _KIT_XMC47_RELAX user manual: https://www.infineon.com/dgdl/Infineon-Board_User_Manual_XMC4700_XMC4800_Relax_Kit_Series-UM-v01_02-EN.pdf?fileId=5546d46250cc1fdf01513f8e052d07fc ----------------------------------------------------------------------- @@ -260,10 +191,19 @@ Legacy Microcontroller Boards - :ref:`XMC1300 Sense2GoL` - XMC1300 - Proprietary + * - v3.x + - :ref:`KIT_XMC_PLT2GO_XMC4200` + - XMC4200 + - Arduino Uno, Shield2Go, mikroBUS + * - v3.x + - :ref:`KIT_XMC_PLT2GO_XMC4400` + - XMC4400 + - Arduino Uno, Shield2Go, mikroBUS * - v1.7.0 - :ref:`XMC4700 Radar Baseboard` - XMC4700 - Proprietary + .. _KIT_XMC_2GO_XMC1100_V1: @@ -312,6 +252,60 @@ and XMC1300 32-bit ARM® Cortex®-M0 MCU series. ----------------------------------------------------------------------- +.. _KIT_XMC_PLT2GO_XMC4200: + +KIT_XMC_PLT2GO_XMC4200 +---------------------- + +* Name in Arduino IDE: ``XMC4200 Platform 2GO`` +* `Product Page `__ + +.. image:: img/KIT_XMC_PLT2GO_XMC4200.jpg + :width: 400 + +The XMC4200 Platform 2Go evaluation board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. +Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. +The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. +This kit is equipped with an ARM® Cortex®-M4 based XMC4200 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, +MikroBUS and Shield2Go form factors. + +Pinout Diagram +^^^^^^^^^^^^^^ +.. image:: img/KIT_XMC_PLT2GO_XMC4200_pinout.png + :width: 700 + +Please note that Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other +on the board itself. If you want to use them check out the subsection :ref:`connected_pins`. + +----------------------------------------------------------------------- + +.. _KIT_XMC_PLT2GO_XMC4400: + +KIT_XMC_PLT2GO_XMC4400 +---------------------- + +* Name in Arduino IDE: ``XMC4400 Platform 2GO`` +* `Product Page `__ + +.. image:: img/KIT_XMC_PLT2GO_XMC4400.jpg + :width: 400 + +The XMC4400 Platform 2Go evaluation board consists of a XMC4400 microcontroller with a debugger implemented by a XMC4200 microcontroller. +Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. +The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. +This kit is equipped with an ARM® Cortex®-M4 based XMC4400 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, +MikroBUS and Shield2Go form factors. + +Pinout Diagram +^^^^^^^^^^^^^^ +.. image:: img/KIT_XMC_PLT2GO_XMC4400_pinout.png + :width: 700 + +Please note that Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other +on the board itself. If you want to use them check out the subsection :ref:`connected_pins`. + +----------------------------------------------------------------------- + .. _XMC4700 Radar Baseboard: XMC4700 Radar Baseboard diff --git a/libraries/CAN/README.md b/libraries/CAN/README.md index b1363bd0..89968a20 100644 --- a/libraries/CAN/README.md +++ b/libraries/CAN/README.md @@ -4,13 +4,11 @@ Based on [Arduino CAN library](https://www.arduino.cc/reference/en/libraries/can # Hardware Setup -XMC boards with CAN support (CAN transceiver on board and CAN controller module): KIT_XMC_PLT2GO_XMC4200, KIT_XMC_PLT2GO_XMC4400, KIT_XMC47_RELAX and KIT_XMC14_2GO. +XMC boards with CAN support (CAN transceiver on board and CAN controller module): KIT_XMC47_RELAX and KIT_XMC14_2GO. | Board Name | Onboard CAN | Termination Resistor | |--------------------------|-------------|-----------------------| | KIT_XMC14_2GO | Yes | Yes (120 ohm) | -| KIT_XMC_PLT2GO_XMC4200 | Yes | No | -| KIT_XMC_PLT2GO_XMC4400 | Yes | Yes (120 ohm) | | KIT_XMC47_RELAX | Yes | No | All CAN nodes should be connected using the (twisted) pair cable for the CAN_H and CAN_L diff --git a/libraries/LED/Readme.md b/libraries/LED/Readme.md index eeef8a16..11d7cd68 100644 --- a/libraries/LED/Readme.md +++ b/libraries/LED/Readme.md @@ -44,8 +44,6 @@ models of board so we end up with | KIT_XMC13_BOOT_001 | Low | No | Low | | XMC1300 Sense2GO | Low | No | Low | | KIT_XMC1400_ARDUINO | Low | Yes | High | -| KIT_XMC_PLT2GO_XMC4200 | High | No | High | -| KIT_XMC_PLT2GO_XMC4400 | High | No | High | | KIT_XMC47_RELAX | High | No | High | ** NOTE ** After Version 2.0 of XMC-for-Arduino, some boards were dropped (e.g. XMC1300 Sense2GO) they are still shown here for those using old versions of XMC-for-Arduino, and for history. diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index a42ce85f..d0d25c0a 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -504,12 +504,6 @@ void USIC0_2_IRQHandler() { Wire1.ReceiveHandler(); } void USIC0_3_IRQHandler() { Wire1.ProtocolHandler(); } #endif - #if defined(KIT_XMC_PLT2GO_XMC4200) -void USIC1_1_IRQHandler() { Wire.ReceiveHandler(); } - -void USIC1_2_IRQHandler() { Wire.ProtocolHandler(); } - #endif - #elif defined(KIT_XMC47_RELAX) void USIC1_1_IRQHandler() { Wire.ReceiveHandler(); } diff --git a/package/package_xmc_index.template.json b/package/package_xmc_index.template.json index 79c5c513..45e045d8 100644 --- a/package/package_xmc_index.template.json +++ b/package/package_xmc_index.template.json @@ -34,12 +34,6 @@ { "name": "KIT_XMC14_2GO" }, - { - "name": "KIT_XMC_PLT2GO_XMC4200" - }, - { - "name": "KIT_XMC_PLT2GO_XMC4400" - }, { "name": "KIT_XMC47_RELAX" } diff --git a/tests/manual/PCLKTest/PCLKTest.ino b/tests/manual/PCLKTest/PCLKTest.ino index 6057a508..e3fe904e 100644 --- a/tests/manual/PCLKTest/PCLKTest.ino +++ b/tests/manual/PCLKTest/PCLKTest.ino @@ -11,7 +11,7 @@ Wiring Some Board variant PWM Pins KIT_XMC11_BOOT_001 3, 4, 6, 9 - KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 + KIT_XMC_2GO_XMC1100_V1 8, 3, 2, 1 KIT_XMC13_BOOT_001 31, 26, 32, 33 KIT_XMC47_RELAX 3, 10, 11, 95, 72, 96, 63, 36, 78, 90, 91, 5, 6, 9, 53, 39, 64, 38, 68, 79, 83, 82, 81 diff --git a/variants/XMC4200/XMC4200.h b/variants/XMC4200/XMC4200.h deleted file mode 100644 index 44694417..00000000 --- a/variants/XMC4200/XMC4200.h +++ /dev/null @@ -1,21635 +0,0 @@ -/********************************************************************************************************************* - * Copyright (c) 2011-2020, Infineon Technologies AG - * All rights reserved. - * - * Boost Software License - Version 1.0 - August 17th, 2003 - * - * Permission is hereby granted, free of charge, to any person or organization - * obtaining a copy of the software and accompanying documentation covered by - * this license (the "Software") to use, reproduce, display, distribute, - * execute, and transmit the Software, and to prepare derivative works of the - * Software, and to permit third-parties to whom the Software is furnished to - * do so, all subject to the following: - * - * The copyright notices in the Software and this entire statement, including - * the above license grant, this restriction and the following disclaimer, - * must be included in all copies of the Software, in whole or in part, and - * all derivative works of the Software, unless such copies or derivative - * works are solely in the form of machine-executable object code generated by - * a source language processor. - * - * 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT - * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE - * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * To improve the quality of the software, users are encouraged to share - * modifications, enhancements or bug fixes with Infineon Technologies AG - * at XMCSupport@infineon.com. - *********************************************************************************************************************/ - -/****************************************************************************************************/ /** - * @file XMC4200.h - * - * @brief CMSIS Cortex-M4 Peripheral Access Layer Header File for - * XMC4200 from Infineon. - * - * @version V1.6.2 (Reference Manual v1.6) - * @date 01. Sep 2020 - * - * @note Generated with SVDConv V2.87l - * from CMSIS SVD File 'XMC4200_Processed_SVD.xml' Version 1.6.0 (Reference Manual v1.6), - * added support for ARM Compiler 6 (armclang) - *******************************************************************************************************/ - -/** @addtogroup Infineon - * @{ - */ - -/** @addtogroup XMC4200 - * @{ - */ - -#ifndef XMC4200_H -#define XMC4200_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------------- Interrupt Number Definition ------------------------ */ - -typedef enum { - /* ------------------- Cortex-M4 Processor Exceptions Numbers ------------------- */ - Reset_IRQn = -15, /*!< 1 Reset Vector, invoked on Power up and warm reset */ - NonMaskableInt_IRQn = -14, /*!< 2 Non maskable Interrupt, cannot be stopped or preempted */ - HardFault_IRQn = -13, /*!< 3 Hard Fault, all classes of Fault */ - MemoryManagement_IRQn = -12, /*!< 4 Memory Management, MPU mismatch, including Access - Violation and No Match */ - BusFault_IRQn = -11, /*!< 5 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory - related Fault */ - UsageFault_IRQn = - -10, /*!< 6 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ - SVCall_IRQn = -5, /*!< 11 System Service Call via SVC instruction */ - DebugMonitor_IRQn = -4, /*!< 12 Debug Monitor */ - PendSV_IRQn = -2, /*!< 14 Pendable request for system service */ - SysTick_IRQn = -1, /*!< 15 System Tick Timer */ - /* --------------------- XMC4200 Specific Interrupt Numbers --------------------- */ - SCU_0_IRQn = 0, /*!< 0 System Control */ - ERU0_0_IRQn = 1, /*!< 1 External Request Unit 0 */ - ERU0_1_IRQn = 2, /*!< 2 External Request Unit 0 */ - ERU0_2_IRQn = 3, /*!< 3 External Request Unit 0 */ - ERU0_3_IRQn = 4, /*!< 4 External Request Unit 0 */ - ERU1_0_IRQn = 5, /*!< 5 External Request Unit 1 */ - ERU1_1_IRQn = 6, /*!< 6 External Request Unit 1 */ - ERU1_2_IRQn = 7, /*!< 7 External Request Unit 1 */ - ERU1_3_IRQn = 8, /*!< 8 External Request Unit 1 */ - PMU0_0_IRQn = 12, /*!< 12 Program Management Unit */ - VADC0_C0_0_IRQn = 14, /*!< 14 Analog to Digital Converter Common Block 0 */ - VADC0_C0_1_IRQn = 15, /*!< 15 Analog to Digital Converter Common Block 0 */ - VADC0_C0_2_IRQn = 16, /*!< 16 Analog to Digital Converter Common Block 0 */ - VADC0_C0_3_IRQn = 17, /*!< 17 Analog to Digital Converter Common Block 0 */ - VADC0_G0_0_IRQn = 18, /*!< 18 Analog to Digital Converter Group 0 */ - VADC0_G0_1_IRQn = 19, /*!< 19 Analog to Digital Converter Group 0 */ - VADC0_G0_2_IRQn = 20, /*!< 20 Analog to Digital Converter Group 0 */ - VADC0_G0_3_IRQn = 21, /*!< 21 Analog to Digital Converter Group 0 */ - VADC0_G1_0_IRQn = 22, /*!< 22 Analog to Digital Converter Group 1 */ - VADC0_G1_1_IRQn = 23, /*!< 23 Analog to Digital Converter Group 1 */ - VADC0_G1_2_IRQn = 24, /*!< 24 Analog to Digital Converter Group 1 */ - VADC0_G1_3_IRQn = 25, /*!< 25 Analog to Digital Converter Group 1 */ - DAC0_0_IRQn = 42, /*!< 42 Digital to Analog Converter */ - DAC0_1_IRQn = 43, /*!< 43 Digital to Analog Converter */ - CCU40_0_IRQn = 44, /*!< 44 Capture Compare Unit 4 (Module 0) */ - CCU40_1_IRQn = 45, /*!< 45 Capture Compare Unit 4 (Module 0) */ - CCU40_2_IRQn = 46, /*!< 46 Capture Compare Unit 4 (Module 0) */ - CCU40_3_IRQn = 47, /*!< 47 Capture Compare Unit 4 (Module 0) */ - CCU41_0_IRQn = 48, /*!< 48 Capture Compare Unit 4 (Module 1) */ - CCU41_1_IRQn = 49, /*!< 49 Capture Compare Unit 4 (Module 1) */ - CCU41_2_IRQn = 50, /*!< 50 Capture Compare Unit 4 (Module 1) */ - CCU41_3_IRQn = 51, /*!< 51 Capture Compare Unit 4 (Module 1) */ - CCU80_0_IRQn = 60, /*!< 60 Capture Compare Unit 8 (Module 0) */ - CCU80_1_IRQn = 61, /*!< 61 Capture Compare Unit 8 (Module 0) */ - CCU80_2_IRQn = 62, /*!< 62 Capture Compare Unit 8 (Module 0) */ - CCU80_3_IRQn = 63, /*!< 63 Capture Compare Unit 8 (Module 0) */ - POSIF0_0_IRQn = 68, /*!< 68 Position Interface (Module 0) */ - POSIF0_1_IRQn = 69, /*!< 69 Position Interface (Module 0) */ - HRPWM_0_IRQn = 72, /*!< 72 High Resolution Pulse Width Modulation (Module 0) */ - HRPWM_1_IRQn = 73, /*!< 73 High Resolution Pulse Width Modulation (Module 0) */ - HRPWM_2_IRQn = 74, /*!< 74 High Resolution Pulse Width Modulation (Module 0) */ - HRPWM_3_IRQn = 75, /*!< 75 High Resolution Pulse Width Modulation (Module 0) */ - CAN0_0_IRQn = 76, /*!< 76 MultiCAN */ - CAN0_1_IRQn = 77, /*!< 77 MultiCAN */ - CAN0_2_IRQn = 78, /*!< 78 MultiCAN */ - CAN0_3_IRQn = 79, /*!< 79 MultiCAN */ - CAN0_4_IRQn = 80, /*!< 80 MultiCAN */ - CAN0_5_IRQn = 81, /*!< 81 MultiCAN */ - CAN0_6_IRQn = 82, /*!< 82 MultiCAN */ - CAN0_7_IRQn = 83, /*!< 83 MultiCAN */ - USIC0_0_IRQn = 84, /*!< 84 Universal Serial Interface Channel (Module 0) */ - USIC0_1_IRQn = 85, /*!< 85 Universal Serial Interface Channel (Module 0) */ - USIC0_2_IRQn = 86, /*!< 86 Universal Serial Interface Channel (Module 0) */ - USIC0_3_IRQn = 87, /*!< 87 Universal Serial Interface Channel (Module 0) */ - USIC0_4_IRQn = 88, /*!< 88 Universal Serial Interface Channel (Module 0) */ - USIC0_5_IRQn = 89, /*!< 89 Universal Serial Interface Channel (Module 0) */ - USIC1_0_IRQn = 90, /*!< 90 Universal Serial Interface Channel (Module 1) */ - USIC1_1_IRQn = 91, /*!< 91 Universal Serial Interface Channel (Module 1) */ - USIC1_2_IRQn = 92, /*!< 92 Universal Serial Interface Channel (Module 1) */ - USIC1_3_IRQn = 93, /*!< 93 Universal Serial Interface Channel (Module 1) */ - USIC1_4_IRQn = 94, /*!< 94 Universal Serial Interface Channel (Module 1) */ - USIC1_5_IRQn = 95, /*!< 95 Universal Serial Interface Channel (Module 1) */ - LEDTS0_0_IRQn = 102, /*!< 102 LED and Touch Sense Control Unit (Module 0) */ - FCE0_0_IRQn = 104, /*!< 104 Flexible CRC Engine */ - GPDMA0_0_IRQn = 105, /*!< 105 General Purpose DMA Unit 0 */ - USB0_0_IRQn = 107 /*!< 107 Universal Serial Bus (Module 0) */ -} IRQn_Type; - -/** @addtogroup Configuration_of_CMSIS - * @{ - */ - -/* ================================================================================ */ -/* ================ Processor and Core Peripheral Section ================ */ -/* ================================================================================ */ - -/* ----------------Configuration of the Cortex-M4 Processor and Core Peripherals---------------- */ -#define __CM4_REV \ - 0x0200 /*!< Cortex-M4 Core Revision */ -#define __MPU_PRESENT \ - 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS \ - 6 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig \ - 0 /*!< Set to 1 if different SysTick Config is used */ -#define __FPU_PRESENT \ - 1 /*!< FPU present or not */ -/** @} */ /* End of group Configuration_of_CMSIS */ - -#include "core_cm4.h" /*!< Cortex-M4 processor and core peripherals */ -#include "system_XMC4200.h" /*!< XMC4200 System */ - -/* ================================================================================ */ -/* ================ Device Specific Peripheral Section ================ */ -/* ================================================================================ */ -/* Macro to modify desired bitfields of a register */ -#define WR_REG(reg, mask, pos, val) \ - reg = (((uint32_t)val << pos) & ((uint32_t)mask)) | (reg & ((uint32_t) ~((uint32_t)mask))) - -/* Macro to modify desired bitfields of a register */ -#define WR_REG_SIZE(reg, mask, pos, val, size) \ - { \ - uint##size##_t VAL1 = (uint##size##_t)((uint##size##_t)val << pos); \ - uint##size##_t VAL2 = (uint##size##_t)(VAL1 & (uint##size##_t)mask); \ - uint##size##_t VAL3 = (uint##size##_t) ~((uint##size##_t)mask); \ - uint##size##_t VAL4 = (uint##size##_t)((uint##size##_t)reg & VAL3); \ - reg = (uint##size##_t)(VAL2 | VAL4); \ - } - -/** Macro to read bitfields from a register */ -#define RD_REG(reg, mask, pos) (((uint32_t)reg & (uint32_t)mask) >> pos) - -/** Macro to read bitfields from a register */ -#define RD_REG_SIZE(reg, mask, pos, size) \ - ((uint##size##_t)(((uint32_t)reg & (uint32_t)mask) >> pos)) - -/** Macro to set a bit in register */ -#define SET_BIT(reg, pos) (reg |= ((uint32_t)1 << pos)) - -/** Macro to clear a bit in register */ -#define CLR_BIT(reg, pos) (reg = reg & (uint32_t)(~((uint32_t)1 << pos))) -/* - * ========================================================================== - * ---------- Interrupt Handler Definition ---------------------------------- - * ========================================================================== - */ -#define IRQ_Hdlr_0 SCU_0_IRQHandler -#define IRQ_Hdlr_1 ERU0_0_IRQHandler -#define IRQ_Hdlr_2 ERU0_1_IRQHandler -#define IRQ_Hdlr_3 ERU0_2_IRQHandler -#define IRQ_Hdlr_4 ERU0_3_IRQHandler -#define IRQ_Hdlr_5 ERU1_0_IRQHandler -#define IRQ_Hdlr_6 ERU1_1_IRQHandler -#define IRQ_Hdlr_7 ERU1_2_IRQHandler -#define IRQ_Hdlr_8 ERU1_3_IRQHandler -#define IRQ_Hdlr_12 PMU0_0_IRQHandler -#define IRQ_Hdlr_14 VADC0_C0_0_IRQHandler -#define IRQ_Hdlr_15 VADC0_C0_1_IRQHandler -#define IRQ_Hdlr_16 VADC0_C0_2_IRQHandler -#define IRQ_Hdlr_17 VADC0_C0_3_IRQHandler -#define IRQ_Hdlr_18 VADC0_G0_0_IRQHandler -#define IRQ_Hdlr_19 VADC0_G0_1_IRQHandler -#define IRQ_Hdlr_20 VADC0_G0_2_IRQHandler -#define IRQ_Hdlr_21 VADC0_G0_3_IRQHandler -#define IRQ_Hdlr_22 VADC0_G1_0_IRQHandler -#define IRQ_Hdlr_23 VADC0_G1_1_IRQHandler -#define IRQ_Hdlr_24 VADC0_G1_2_IRQHandler -#define IRQ_Hdlr_25 VADC0_G1_3_IRQHandler -#define IRQ_Hdlr_42 DAC0_0_IRQHandler -#define IRQ_Hdlr_43 DAC0_1_IRQHandler -#define IRQ_Hdlr_44 CCU40_0_IRQHandler -#define IRQ_Hdlr_45 CCU40_1_IRQHandler -#define IRQ_Hdlr_46 CCU40_2_IRQHandler -#define IRQ_Hdlr_47 CCU40_3_IRQHandler -#define IRQ_Hdlr_48 CCU41_0_IRQHandler -#define IRQ_Hdlr_49 CCU41_1_IRQHandler -#define IRQ_Hdlr_50 CCU41_2_IRQHandler -#define IRQ_Hdlr_51 CCU41_3_IRQHandler -#define IRQ_Hdlr_60 CCU80_0_IRQHandler -#define IRQ_Hdlr_61 CCU80_1_IRQHandler -#define IRQ_Hdlr_62 CCU80_2_IRQHandler -#define IRQ_Hdlr_63 CCU80_3_IRQHandler -#define IRQ_Hdlr_68 POSIF0_0_IRQHandler -#define IRQ_Hdlr_69 POSIF0_1_IRQHandler -#define IRQ_Hdlr_72 HRPWM_0_IRQHandler -#define IRQ_Hdlr_73 HRPWM_1_IRQHandler -#define IRQ_Hdlr_74 HRPWM_2_IRQHandler -#define IRQ_Hdlr_75 HRPWM_3_IRQHandler -#define IRQ_Hdlr_76 CAN0_0_IRQHandler -#define IRQ_Hdlr_77 CAN0_1_IRQHandler -#define IRQ_Hdlr_78 CAN0_2_IRQHandler -#define IRQ_Hdlr_79 CAN0_3_IRQHandler -#define IRQ_Hdlr_80 CAN0_4_IRQHandler -#define IRQ_Hdlr_81 CAN0_5_IRQHandler -#define IRQ_Hdlr_82 CAN0_6_IRQHandler -#define IRQ_Hdlr_83 CAN0_7_IRQHandler -#define IRQ_Hdlr_84 USIC0_0_IRQHandler -#define IRQ_Hdlr_85 USIC0_1_IRQHandler -#define IRQ_Hdlr_86 USIC0_2_IRQHandler -#define IRQ_Hdlr_87 USIC0_3_IRQHandler -#define IRQ_Hdlr_88 USIC0_4_IRQHandler -#define IRQ_Hdlr_89 USIC0_5_IRQHandler -#define IRQ_Hdlr_90 USIC1_0_IRQHandler -#define IRQ_Hdlr_91 USIC1_1_IRQHandler -#define IRQ_Hdlr_92 USIC1_2_IRQHandler -#define IRQ_Hdlr_93 USIC1_3_IRQHandler -#define IRQ_Hdlr_94 USIC1_4_IRQHandler -#define IRQ_Hdlr_95 USIC1_5_IRQHandler -#define IRQ_Hdlr_102 LEDTS0_0_IRQHandler -#define IRQ_Hdlr_104 FCE0_0_IRQHandler -#define IRQ_Hdlr_105 GPDMA0_0_IRQHandler -#define IRQ_Hdlr_107 USB0_0_IRQHandler - -/* - * ========================================================================== - * ---------- Interrupt Handler retrieval macro ----------------------------- - * ========================================================================== - */ -#define GET_IRQ_HANDLER(N) IRQ_Hdlr_##N - -/** @addtogroup Device_Peripheral_Registers - * @{ - */ - -/* ------------------- Start of section using anonymous unions ------------------ */ -#if defined(__CC_ARM) - #pragma push - #pragma anon_unions -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wc11-extensions" - #pragma clang diagnostic ignored "-Wreserved-id-macro" -#elif defined(__ICCARM__) - #pragma language = extended -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) -/* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning 586 -#else - #warning Not supported compiler type -#endif - -/* ================================================================================ */ -/* ================ PPB ================ */ -/* ================================================================================ */ - -/** - * @brief Cortex-M4 Private Peripheral Block (PPB) - */ - -typedef struct { /*!< (@ 0xE000E000) PPB Structure */ - __I uint32_t RESERVED[2]; - __IO uint32_t ACTLR; /*!< (@ 0xE000E008) Auxiliary Control Register */ - __I uint32_t RESERVED1; - __IO uint32_t SYST_CSR; /*!< (@ 0xE000E010) SysTick Control and Status Register */ - __IO uint32_t SYST_RVR; /*!< (@ 0xE000E014) SysTick Reload Value Register */ - __IO uint32_t SYST_CVR; /*!< (@ 0xE000E018) SysTick Current Value Register */ - __IO uint32_t SYST_CALIB; /*!< (@ 0xE000E01C) SysTick Calibration Value Register r */ - __I uint32_t RESERVED2[56]; - __IO uint32_t NVIC_ISER0; /*!< (@ 0xE000E100) Interrupt Set-enable Register 0 */ - __IO uint32_t NVIC_ISER1; /*!< (@ 0xE000E104) Interrupt Set-enable Register 1 */ - __IO uint32_t NVIC_ISER2; /*!< (@ 0xE000E108) Interrupt Set-enable Register 2 */ - __IO uint32_t NVIC_ISER3; /*!< (@ 0xE000E10C) Interrupt Set-enable Register 3 */ - __I uint32_t RESERVED3[28]; - __IO uint32_t NVIC_ICER0; /*!< (@ 0xE000E180) Interrupt Clear-enable Register 0 */ - __IO uint32_t NVIC_ICER1; /*!< (@ 0xE000E184) Interrupt Clear-enable Register 1 */ - __IO uint32_t NVIC_ICER2; /*!< (@ 0xE000E188) Interrupt Clear-enable Register 2 */ - __IO uint32_t NVIC_ICER3; /*!< (@ 0xE000E18C) Interrupt Clear-enable Register 3 */ - __I uint32_t RESERVED4[28]; - __IO uint32_t NVIC_ISPR0; /*!< (@ 0xE000E200) Interrupt Set-pending Register 0 */ - __IO uint32_t NVIC_ISPR1; /*!< (@ 0xE000E204) Interrupt Set-pending Register 1 */ - __IO uint32_t NVIC_ISPR2; /*!< (@ 0xE000E208) Interrupt Set-pending Register 2 */ - __IO uint32_t NVIC_ISPR3; /*!< (@ 0xE000E20C) Interrupt Set-pending Register 3 */ - __I uint32_t RESERVED5[28]; - __IO uint32_t NVIC_ICPR0; /*!< (@ 0xE000E280) Interrupt Clear-pending Register 0 */ - __IO uint32_t NVIC_ICPR1; /*!< (@ 0xE000E284) Interrupt Clear-pending Register 1 */ - __IO uint32_t NVIC_ICPR2; /*!< (@ 0xE000E288) Interrupt Clear-pending Register 2 */ - __IO uint32_t NVIC_ICPR3; /*!< (@ 0xE000E28C) Interrupt Clear-pending Register 3 */ - __I uint32_t RESERVED6[28]; - __IO uint32_t NVIC_IABR0; /*!< (@ 0xE000E300) Interrupt Active Bit Register 0 */ - __IO uint32_t NVIC_IABR1; /*!< (@ 0xE000E304) Interrupt Active Bit Register 1 */ - __IO uint32_t NVIC_IABR2; /*!< (@ 0xE000E308) Interrupt Active Bit Register 2 */ - __IO uint32_t NVIC_IABR3; /*!< (@ 0xE000E30C) Interrupt Active Bit Register 3 */ - __I uint32_t RESERVED7[60]; - __IO uint32_t NVIC_IPR0; /*!< (@ 0xE000E400) Interrupt Priority Register 0 */ - __IO uint32_t NVIC_IPR1; /*!< (@ 0xE000E404) Interrupt Priority Register 1 */ - __IO uint32_t NVIC_IPR2; /*!< (@ 0xE000E408) Interrupt Priority Register 2 */ - __IO uint32_t NVIC_IPR3; /*!< (@ 0xE000E40C) Interrupt Priority Register 3 */ - __IO uint32_t NVIC_IPR4; /*!< (@ 0xE000E410) Interrupt Priority Register 4 */ - __IO uint32_t NVIC_IPR5; /*!< (@ 0xE000E414) Interrupt Priority Register 5 */ - __IO uint32_t NVIC_IPR6; /*!< (@ 0xE000E418) Interrupt Priority Register 6 */ - __IO uint32_t NVIC_IPR7; /*!< (@ 0xE000E41C) Interrupt Priority Register 7 */ - __IO uint32_t NVIC_IPR8; /*!< (@ 0xE000E420) Interrupt Priority Register 8 */ - __IO uint32_t NVIC_IPR9; /*!< (@ 0xE000E424) Interrupt Priority Register 9 */ - __IO uint32_t NVIC_IPR10; /*!< (@ 0xE000E428) Interrupt Priority Register 10 */ - __IO uint32_t NVIC_IPR11; /*!< (@ 0xE000E42C) Interrupt Priority Register 11 */ - __IO uint32_t NVIC_IPR12; /*!< (@ 0xE000E430) Interrupt Priority Register 12 */ - __IO uint32_t NVIC_IPR13; /*!< (@ 0xE000E434) Interrupt Priority Register 13 */ - __IO uint32_t NVIC_IPR14; /*!< (@ 0xE000E438) Interrupt Priority Register 14 */ - __IO uint32_t NVIC_IPR15; /*!< (@ 0xE000E43C) Interrupt Priority Register 15 */ - __IO uint32_t NVIC_IPR16; /*!< (@ 0xE000E440) Interrupt Priority Register 16 */ - __IO uint32_t NVIC_IPR17; /*!< (@ 0xE000E444) Interrupt Priority Register 17 */ - __IO uint32_t NVIC_IPR18; /*!< (@ 0xE000E448) Interrupt Priority Register 18 */ - __IO uint32_t NVIC_IPR19; /*!< (@ 0xE000E44C) Interrupt Priority Register 19 */ - __IO uint32_t NVIC_IPR20; /*!< (@ 0xE000E450) Interrupt Priority Register 20 */ - __IO uint32_t NVIC_IPR21; /*!< (@ 0xE000E454) Interrupt Priority Register 21 */ - __IO uint32_t NVIC_IPR22; /*!< (@ 0xE000E458) Interrupt Priority Register 22 */ - __IO uint32_t NVIC_IPR23; /*!< (@ 0xE000E45C) Interrupt Priority Register 23 */ - __IO uint32_t NVIC_IPR24; /*!< (@ 0xE000E460) Interrupt Priority Register 24 */ - __IO uint32_t NVIC_IPR25; /*!< (@ 0xE000E464) Interrupt Priority Register 25 */ - __IO uint32_t NVIC_IPR26; /*!< (@ 0xE000E468) Interrupt Priority Register 26 */ - __IO uint32_t NVIC_IPR27; /*!< (@ 0xE000E46C) Interrupt Priority Register 27 */ - __I uint32_t RESERVED8[548]; - __I uint32_t CPUID; /*!< (@ 0xE000ED00) CPUID Base Register */ - __IO uint32_t ICSR; /*!< (@ 0xE000ED04) Interrupt Control and State Register */ - __IO uint32_t VTOR; /*!< (@ 0xE000ED08) Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< (@ 0xE000ED0C) Application Interrupt and Reset Control Register */ - __IO uint32_t SCR; /*!< (@ 0xE000ED10) System Control Register */ - __IO uint32_t CCR; /*!< (@ 0xE000ED14) Configuration and Control Register */ - __IO uint32_t SHPR1; /*!< (@ 0xE000ED18) System Handler Priority Register 1 */ - __IO uint32_t SHPR2; /*!< (@ 0xE000ED1C) System Handler Priority Register 2 */ - __IO uint32_t SHPR3; /*!< (@ 0xE000ED20) System Handler Priority Register 3 */ - __IO uint32_t SHCSR; /*!< (@ 0xE000ED24) System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< (@ 0xE000ED28) Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< (@ 0xE000ED2C) HardFault Status Register */ - __I uint32_t RESERVED9; - __IO uint32_t MMFAR; /*!< (@ 0xE000ED34) MemManage Fault Address Register */ - __IO uint32_t BFAR; /*!< (@ 0xE000ED38) BusFault Address Register */ - __IO uint32_t AFSR; /*!< (@ 0xE000ED3C) Auxiliary Fault Status Register */ - __I uint32_t RESERVED10[18]; - __IO uint32_t CPACR; /*!< (@ 0xE000ED88) Coprocessor Access Control Register */ - __I uint32_t RESERVED11; - __I uint32_t MPU_TYPE; /*!< (@ 0xE000ED90) MPU Type Register */ - __IO uint32_t MPU_CTRL; /*!< (@ 0xE000ED94) MPU Control Register */ - __IO uint32_t MPU_RNR; /*!< (@ 0xE000ED98) MPU Region Number Register */ - __IO uint32_t MPU_RBAR; /*!< (@ 0xE000ED9C) MPU Region Base Address Register */ - __IO uint32_t MPU_RASR; /*!< (@ 0xE000EDA0) MPU Region Attribute and Size Register */ - __IO uint32_t MPU_RBAR_A1; /*!< (@ 0xE000EDA4) MPU Region Base Address Register A1 */ - __IO uint32_t MPU_RASR_A1; /*!< (@ 0xE000EDA8) MPU Region Attribute and Size Register A1 */ - __IO uint32_t MPU_RBAR_A2; /*!< (@ 0xE000EDAC) MPU Region Base Address Register A2 */ - __IO uint32_t MPU_RASR_A2; /*!< (@ 0xE000EDB0) MPU Region Attribute and Size Register A2 */ - __IO uint32_t MPU_RBAR_A3; /*!< (@ 0xE000EDB4) MPU Region Base Address Register A3 */ - __IO uint32_t MPU_RASR_A3; /*!< (@ 0xE000EDB8) MPU Region Attribute and Size Register A3 */ - __I uint32_t RESERVED12[81]; - __O uint32_t STIR; /*!< (@ 0xE000EF00) Software Trigger Interrupt Register */ - __I uint32_t RESERVED13[12]; - __IO uint32_t FPCCR; /*!< (@ 0xE000EF34) Floating-point Context Control Register */ - __IO uint32_t FPCAR; /*!< (@ 0xE000EF38) Floating-point Context Address Register */ - __IO uint32_t FPDSCR; /*!< (@ 0xE000EF3C) Floating-point Default Status Control Register */ -} PPB_Type; - -/* ================================================================================ */ -/* ================ DLR ================ */ -/* ================================================================================ */ - -/** - * @brief DMA Line Router (DLR) - */ - -typedef struct { /*!< (@ 0x50004900) DLR Structure */ - __I uint32_t OVRSTAT; /*!< (@ 0x50004900) Overrun Status */ - __O uint32_t OVRCLR; /*!< (@ 0x50004904) Overrun Clear */ - __IO uint32_t SRSEL0; /*!< (@ 0x50004908) Service Request Selection 0 */ - __I uint32_t RESERVED; - __IO uint32_t LNEN; /*!< (@ 0x50004910) Line Enable */ -} DLR_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ ERU [ERU0] ================ */ -/* ================================================================================ */ - -/** - * @brief Event Request Unit 0 (ERU) - */ - -typedef struct { /*!< (@ 0x50004800) ERU Structure */ - __IO uint32_t EXISEL; /*!< (@ 0x50004800) Event Input Select */ - __I uint32_t RESERVED[3]; - __IO uint32_t EXICON[4]; /*!< (@ 0x50004810) Event Input Control */ - __IO uint32_t EXOCON[4]; /*!< (@ 0x50004820) Event Output Trigger Control */ -} ERU_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ GPDMA0 ================ */ -/* ================================================================================ */ - -/** - * @brief General Purpose DMA Unit 0 (GPDMA0) - */ - -typedef struct { /*!< (@ 0x500142C0) GPDMA0 Structure */ - __IO uint32_t RAWTFR; /*!< (@ 0x500142C0) Raw IntTfr Status */ - __I uint32_t RESERVED; - __IO uint32_t RAWBLOCK; /*!< (@ 0x500142C8) Raw IntBlock Status */ - __I uint32_t RESERVED1; - __IO uint32_t RAWSRCTRAN; /*!< (@ 0x500142D0) Raw IntSrcTran Status */ - __I uint32_t RESERVED2; - __IO uint32_t RAWDSTTRAN; /*!< (@ 0x500142D8) Raw IntBlock Status */ - __I uint32_t RESERVED3; - __IO uint32_t RAWERR; /*!< (@ 0x500142E0) Raw IntErr Status */ - __I uint32_t RESERVED4; - __I uint32_t STATUSTFR; /*!< (@ 0x500142E8) IntTfr Status */ - __I uint32_t RESERVED5; - __I uint32_t STATUSBLOCK; /*!< (@ 0x500142F0) IntBlock Status */ - __I uint32_t RESERVED6; - __I uint32_t STATUSSRCTRAN; /*!< (@ 0x500142F8) IntSrcTran Status */ - __I uint32_t RESERVED7; - __I uint32_t STATUSDSTTRAN; /*!< (@ 0x50014300) IntBlock Status */ - __I uint32_t RESERVED8; - __I uint32_t STATUSERR; /*!< (@ 0x50014308) IntErr Status */ - __I uint32_t RESERVED9; - __IO uint32_t MASKTFR; /*!< (@ 0x50014310) Mask for Raw IntTfr Status */ - __I uint32_t RESERVED10; - __IO uint32_t MASKBLOCK; /*!< (@ 0x50014318) Mask for Raw IntBlock Status */ - __I uint32_t RESERVED11; - __IO uint32_t MASKSRCTRAN; /*!< (@ 0x50014320) Mask for Raw IntSrcTran Status */ - __I uint32_t RESERVED12; - __IO uint32_t MASKDSTTRAN; /*!< (@ 0x50014328) Mask for Raw IntBlock Status */ - __I uint32_t RESERVED13; - __IO uint32_t MASKERR; /*!< (@ 0x50014330) Mask for Raw IntErr Status */ - __I uint32_t RESERVED14; - __O uint32_t CLEARTFR; /*!< (@ 0x50014338) IntTfr Status */ - __I uint32_t RESERVED15; - __O uint32_t CLEARBLOCK; /*!< (@ 0x50014340) IntBlock Status */ - __I uint32_t RESERVED16; - __O uint32_t CLEARSRCTRAN; /*!< (@ 0x50014348) IntSrcTran Status */ - __I uint32_t RESERVED17; - __O uint32_t CLEARDSTTRAN; /*!< (@ 0x50014350) IntBlock Status */ - __I uint32_t RESERVED18; - __O uint32_t CLEARERR; /*!< (@ 0x50014358) IntErr Status */ - __I uint32_t RESERVED19; - __I uint32_t STATUSINT; /*!< (@ 0x50014360) Combined Interrupt Status Register */ - __I uint32_t RESERVED20; - __IO uint32_t REQSRCREG; /*!< (@ 0x50014368) Source Software Transaction Request Register */ - __I uint32_t RESERVED21; - __IO uint32_t - REQDSTREG; /*!< (@ 0x50014370) Destination Software Transaction Request Register */ - __I uint32_t RESERVED22; - __IO uint32_t SGLREQSRCREG; /*!< (@ 0x50014378) Single Source Transaction Request Register */ - __I uint32_t RESERVED23; - __IO uint32_t - SGLREQDSTREG; /*!< (@ 0x50014380) Single Destination Transaction Request Register */ - __I uint32_t RESERVED24; - __IO uint32_t LSTSRCREG; /*!< (@ 0x50014388) Last Source Transaction Request Register */ - __I uint32_t RESERVED25; - __IO uint32_t LSTDSTREG; /*!< (@ 0x50014390) Last Destination Transaction Request Register */ - __I uint32_t RESERVED26; - __IO uint32_t DMACFGREG; /*!< (@ 0x50014398) GPDMA Configuration Register */ - __I uint32_t RESERVED27; - __IO uint32_t CHENREG; /*!< (@ 0x500143A0) GPDMA Channel Enable Register */ - __I uint32_t RESERVED28; - __I uint32_t ID; /*!< (@ 0x500143A8) GPDMA0 ID Register */ - __I uint32_t RESERVED29[19]; - __I uint32_t TYPE; /*!< (@ 0x500143F8) GPDMA Component Type */ - __I uint32_t VERSION; /*!< (@ 0x500143FC) DMA Component Version */ -} GPDMA0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ GPDMA0_CH0_1 [GPDMA0_CH0] ================ */ -/* ================================================================================ */ - -/** - * @brief General Purpose DMA Unit 0 (GPDMA0_CH0_1) - */ - -typedef struct { /*!< (@ 0x50014000) GPDMA0_CH0_1 Structure */ - __IO uint32_t SAR; /*!< (@ 0x50014000) Source Address Register */ - __I uint32_t RESERVED; - __IO uint32_t DAR; /*!< (@ 0x50014008) Destination Address Register */ - __I uint32_t RESERVED1; - __IO uint32_t LLP; /*!< (@ 0x50014010) Linked List Pointer Register */ - __I uint32_t RESERVED2; - __IO uint32_t CTLL; /*!< (@ 0x50014018) Control Register Low */ - __IO uint32_t CTLH; /*!< (@ 0x5001401C) Control Register High */ - __IO uint32_t SSTAT; /*!< (@ 0x50014020) Source Status Register */ - __I uint32_t RESERVED3; - __IO uint32_t DSTAT; /*!< (@ 0x50014028) Destination Status Register */ - __I uint32_t RESERVED4; - __IO uint32_t SSTATAR; /*!< (@ 0x50014030) Source Status Address Register */ - __I uint32_t RESERVED5; - __IO uint32_t DSTATAR; /*!< (@ 0x50014038) Destination Status Address Register */ - __I uint32_t RESERVED6; - __IO uint32_t CFGL; /*!< (@ 0x50014040) Configuration Register Low */ - __IO uint32_t CFGH; /*!< (@ 0x50014044) Configuration Register High */ - __IO uint32_t SGR; /*!< (@ 0x50014048) Source Gather Register */ - __I uint32_t RESERVED7; - __IO uint32_t DSR; /*!< (@ 0x50014050) Destination Scatter Register */ -} GPDMA0_CH_TypeDef; - -/* ================================================================================ */ -/* ================ GPDMA0_CH2_7 [GPDMA0_CH2] ================ */ -/* ================================================================================ */ - -/** - * @brief General Purpose DMA Unit 0 (GPDMA0_CH2_7) - */ - -typedef struct { /*!< (@ 0x500140B0) GPDMA0_CH2_7 Structure */ - __IO uint32_t SAR; /*!< (@ 0x500140B0) Source Address Register */ - __I uint32_t RESERVED; - __IO uint32_t DAR; /*!< (@ 0x500140B8) Destination Address Register */ - __I uint32_t RESERVED1[3]; - __IO uint32_t CTLL; /*!< (@ 0x500140C8) Control Register Low */ - __IO uint32_t CTLH; /*!< (@ 0x500140CC) Control Register High */ - __I uint32_t RESERVED2[8]; - __IO uint32_t CFGL; /*!< (@ 0x500140F0) Configuration Register Low */ - __IO uint32_t CFGH; /*!< (@ 0x500140F4) Configuration Register High */ -} GPDMA0_CH2_7_Type; - -/* ================================================================================ */ -/* ================ FCE ================ */ -/* ================================================================================ */ - -/** - * @brief Flexible CRC Engine (FCE) - */ - -typedef struct { /*!< (@ 0x50020000) FCE Structure */ - __IO uint32_t CLC; /*!< (@ 0x50020000) Clock Control Register */ - __I uint32_t RESERVED; - __I uint32_t ID; /*!< (@ 0x50020008) Module Identification Register */ -} FCE_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ FCE_KE [FCE_KE0] ================ */ -/* ================================================================================ */ - -/** - * @brief Flexible CRC Engine (FCE_KE) - */ - -typedef struct { /*!< (@ 0x50020020) FCE_KE Structure */ - __IO uint32_t IR; /*!< (@ 0x50020020) Input Register */ - __I uint32_t RES; /*!< (@ 0x50020024) CRC Result Register */ - __IO uint32_t CFG; /*!< (@ 0x50020028) CRC Configuration Register */ - __IO uint32_t STS; /*!< (@ 0x5002002C) CRC Status Register */ - __IO uint32_t LENGTH; /*!< (@ 0x50020030) CRC Length Register */ - __IO uint32_t CHECK; /*!< (@ 0x50020034) CRC Check Register */ - __IO uint32_t CRC; /*!< (@ 0x50020038) CRC Register */ - __IO uint32_t CTR; /*!< (@ 0x5002003C) CRC Test Register */ -} FCE_KE_TypeDef; - -/* ================================================================================ */ -/* ================ PBA [PBA0] ================ */ -/* ================================================================================ */ - -/** - * @brief Peripheral Bridge AHB 0 (PBA) - */ - -typedef struct { /*!< (@ 0x40000000) PBA Structure */ - __IO uint32_t STS; /*!< (@ 0x40000000) Peripheral Bridge Status Register */ - __I uint32_t WADDR; /*!< (@ 0x40000004) PBA Write Error Address Register */ -} PBA_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ FLASH [FLASH0] ================ */ -/* ================================================================================ */ - -/** - * @brief Flash Memory Controller (FLASH) - */ - -typedef struct { /*!< (@ 0x58001000) FLASH Structure */ - __I uint32_t RESERVED[1026]; - __I uint32_t ID; /*!< (@ 0x58002008) Flash Module Identification Register */ - __I uint32_t RESERVED1; - __I uint32_t FSR; /*!< (@ 0x58002010) Flash Status Register */ - __IO uint32_t FCON; /*!< (@ 0x58002014) Flash Configuration Register */ - __IO uint32_t MARP; /*!< (@ 0x58002018) Margin Control Register PFLASH */ - __I uint32_t RESERVED2; - __I uint32_t PROCON0; /*!< (@ 0x58002020) Flash Protection Configuration Register User - 0 */ - __I uint32_t PROCON1; /*!< (@ 0x58002024) Flash Protection Configuration Register User - 1 */ - __I uint32_t PROCON2; /*!< (@ 0x58002028) Flash Protection Configuration Register User - 2 */ -} FLASH0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ PREF ================ */ -/* ================================================================================ */ - -/** - * @brief Prefetch Unit (PREF) - */ - -typedef struct { /*!< (@ 0x58004000) PREF Structure */ - __IO uint32_t PCON; /*!< (@ 0x58004000) Prefetch Configuration Register */ -} PREF_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ PMU [PMU0] ================ */ -/* ================================================================================ */ - -/** - * @brief Program Management Unit (PMU) - */ - -typedef struct { /*!< (@ 0x58000508) PMU Structure */ - __I uint32_t ID; /*!< (@ 0x58000508) PMU0 Identification Register */ -} PMU0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ WDT ================ */ -/* ================================================================================ */ - -/** - * @brief Watch Dog Timer (WDT) - */ - -typedef struct { /*!< (@ 0x50008000) WDT Structure */ - __I uint32_t ID; /*!< (@ 0x50008000) WDT ID Register */ - __IO uint32_t CTR; /*!< (@ 0x50008004) WDT Control Register */ - __O uint32_t SRV; /*!< (@ 0x50008008) WDT Service Register */ - __I uint32_t TIM; /*!< (@ 0x5000800C) WDT Timer Register */ - __IO uint32_t WLB; /*!< (@ 0x50008010) WDT Window Lower Bound Register */ - __IO uint32_t WUB; /*!< (@ 0x50008014) WDT Window Upper Bound Register */ - __I uint32_t WDTSTS; /*!< (@ 0x50008018) WDT Status Register */ - __O uint32_t WDTCLR; /*!< (@ 0x5000801C) WDT Clear Register */ -} WDT_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ RTC ================ */ -/* ================================================================================ */ - -/** - * @brief Real Time Clock (RTC) - */ - -typedef struct { /*!< (@ 0x50004A00) RTC Structure */ - __I uint32_t ID; /*!< (@ 0x50004A00) RTC ID Register */ - __IO uint32_t CTR; /*!< (@ 0x50004A04) RTC Control Register */ - __I uint32_t RAWSTAT; /*!< (@ 0x50004A08) RTC Raw Service Request Register */ - __I uint32_t STSSR; /*!< (@ 0x50004A0C) RTC Service Request Status Register */ - __IO uint32_t MSKSR; /*!< (@ 0x50004A10) RTC Service Request Mask Register */ - __O uint32_t CLRSR; /*!< (@ 0x50004A14) RTC Clear Service Request Register */ - __IO uint32_t ATIM0; /*!< (@ 0x50004A18) RTC Alarm Time Register 0 */ - __IO uint32_t ATIM1; /*!< (@ 0x50004A1C) RTC Alarm Time Register 1 */ - __IO uint32_t TIM0; /*!< (@ 0x50004A20) RTC Time Register 0 */ - __IO uint32_t TIM1; /*!< (@ 0x50004A24) RTC Time Register 1 */ -} RTC_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_CLK ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_CLK) - */ - -typedef struct { /*!< (@ 0x50004600) SCU_CLK Structure */ - __I uint32_t CLKSTAT; /*!< (@ 0x50004600) Clock Status Register */ - __O uint32_t CLKSET; /*!< (@ 0x50004604) CLK Set Register */ - __O uint32_t CLKCLR; /*!< (@ 0x50004608) CLK Clear Register */ - __IO uint32_t SYSCLKCR; /*!< (@ 0x5000460C) System Clock Control Register */ - __IO uint32_t CPUCLKCR; /*!< (@ 0x50004610) CPU Clock Control Register */ - __IO uint32_t PBCLKCR; /*!< (@ 0x50004614) Peripheral Bus Clock Control Register */ - __IO uint32_t USBCLKCR; /*!< (@ 0x50004618) USB Clock Control Register */ - __I uint32_t RESERVED; - __IO uint32_t CCUCLKCR; /*!< (@ 0x50004620) CCU Clock Control Register */ - __IO uint32_t WDTCLKCR; /*!< (@ 0x50004624) WDT Clock Control Register */ - __IO uint32_t EXTCLKCR; /*!< (@ 0x50004628) External Clock Control */ - __IO uint32_t MLINKCLKCR; /*!< (@ 0x5000462C) Multi-Link Clock Control */ - __IO uint32_t SLEEPCR; /*!< (@ 0x50004630) Sleep Control Register */ - __IO uint32_t DSLEEPCR; /*!< (@ 0x50004634) Deep Sleep Control Register */ - __I uint32_t RESERVED1[2]; - __I uint32_t CGATSTAT0; /*!< (@ 0x50004640) Peripheral 0 Clock Gating Status */ - __O uint32_t CGATSET0; /*!< (@ 0x50004644) Peripheral 0 Clock Gating Set */ - __O uint32_t CGATCLR0; /*!< (@ 0x50004648) Peripheral 0 Clock Gating Clear */ - __I uint32_t CGATSTAT1; /*!< (@ 0x5000464C) Peripheral 1 Clock Gating Status */ - __O uint32_t CGATSET1; /*!< (@ 0x50004650) Peripheral 1 Clock Gating Set */ - __O uint32_t CGATCLR1; /*!< (@ 0x50004654) Peripheral 1 Clock Gating Clear */ - __I uint32_t CGATSTAT2; /*!< (@ 0x50004658) Peripheral 2 Clock Gating Status */ - __O uint32_t CGATSET2; /*!< (@ 0x5000465C) Peripheral 2 Clock Gating Set */ - __O uint32_t CGATCLR2; /*!< (@ 0x50004660) Peripheral 2 Clock Gating Clear */ -} SCU_CLK_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_OSC ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_OSC) - */ - -typedef struct { /*!< (@ 0x50004700) SCU_OSC Structure */ - __I uint32_t OSCHPSTAT; /*!< (@ 0x50004700) OSC_HP Status Register */ - __IO uint32_t OSCHPCTRL; /*!< (@ 0x50004704) OSC_HP Control Register */ - __I uint32_t RESERVED; - __IO uint32_t CLKCALCONST; /*!< (@ 0x5000470C) Clock Calibration Constant Register */ -} SCU_OSC_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_PLL ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_PLL) - */ - -typedef struct { /*!< (@ 0x50004710) SCU_PLL Structure */ - __I uint32_t PLLSTAT; /*!< (@ 0x50004710) PLL Status Register */ - __IO uint32_t PLLCON0; /*!< (@ 0x50004714) PLL Configuration 0 Register */ - __IO uint32_t PLLCON1; /*!< (@ 0x50004718) PLL Configuration 1 Register */ - __IO uint32_t PLLCON2; /*!< (@ 0x5000471C) PLL Configuration 2 Register */ - __I uint32_t USBPLLSTAT; /*!< (@ 0x50004720) USB PLL Status Register */ - __IO uint32_t USBPLLCON; /*!< (@ 0x50004724) USB PLL Configuration Register */ - __I uint32_t RESERVED[4]; - __I uint32_t CLKMXSTAT; /*!< (@ 0x50004738) Clock Multiplexing Status Register */ -} SCU_PLL_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_GENERAL ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_GENERAL) - */ - -typedef struct { /*!< (@ 0x50004000) SCU_GENERAL Structure */ - __I uint32_t ID; /*!< (@ 0x50004000) SCU Module ID Register */ - __I uint32_t IDCHIP; /*!< (@ 0x50004004) Chip ID Register */ - __I uint32_t IDMANUF; /*!< (@ 0x50004008) Manufactory ID Register */ - __I uint32_t RESERVED; - __IO uint32_t STCON; /*!< (@ 0x50004010) Startup Configuration Register */ - __I uint32_t RESERVED1[6]; - __IO uint32_t GPR[2]; /*!< (@ 0x5000402C) General Purpose Register 0 */ - __I uint32_t RESERVED2[6]; - __IO uint32_t CCUCON; /*!< (@ 0x5000404C) CCU Control Register */ - __I uint32_t RESERVED3[15]; - __IO uint32_t DTSCON; /*!< (@ 0x5000408C) Die Temperature Sensor Control Register */ - __I uint32_t DTSSTAT; /*!< (@ 0x50004090) Die Temperature Sensor Status Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t GORCEN[2]; /*!< (@ 0x500040A0) Out of Range Comparator Enable Register 0 */ - __IO uint32_t DTEMPLIM; /*!< (@ 0x500040A8) Die Temperature Sensor Limit Register */ - __I uint32_t DTEMPALARM; /*!< (@ 0x500040AC) Die Temperature Sensor Alarm Register */ - __I uint32_t RESERVED5[5]; - __I uint32_t MIRRSTS; /*!< (@ 0x500040C4) Mirror Write Status Register */ - __IO uint32_t RMACR; /*!< (@ 0x500040C8) Retention Memory Access Control Register */ - __IO uint32_t RMDATA; /*!< (@ 0x500040CC) Retention Memory Access Data Register */ - __I uint32_t MIRRALLSTAT; /*!< (@ 0x500040D0) Mirror All Status */ - __O uint32_t MIRRALLREQ; /*!< (@ 0x500040D4) Mirror All Request */ -} SCU_GENERAL_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_INTERRUPT ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_INTERRUPT) - */ - -typedef struct { /*!< (@ 0x50004074) SCU_INTERRUPT Structure */ - __I uint32_t SRSTAT; /*!< (@ 0x50004074) SCU Service Request Status */ - __I uint32_t SRRAW; /*!< (@ 0x50004078) SCU Raw Service Request Status */ - __IO uint32_t SRMSK; /*!< (@ 0x5000407C) SCU Service Request Mask */ - __O uint32_t SRCLR; /*!< (@ 0x50004080) SCU Service Request Clear */ - __O uint32_t SRSET; /*!< (@ 0x50004084) SCU Service Request Set */ - __IO uint32_t NMIREQEN; /*!< (@ 0x50004088) SCU Service Request Mask */ -} SCU_INTERRUPT_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_PARITY ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_PARITY) - */ - -typedef struct { /*!< (@ 0x5000413C) SCU_PARITY Structure */ - __IO uint32_t PEEN; /*!< (@ 0x5000413C) Parity Error Enable Register */ - __IO uint32_t MCHKCON; /*!< (@ 0x50004140) Memory Checking Control Register */ - __IO uint32_t PETE; /*!< (@ 0x50004144) Parity Error Trap Enable Register */ - __IO uint32_t PERSTEN; /*!< (@ 0x50004148) Parity Error Reset Enable Register */ - __I uint32_t RESERVED; - __IO uint32_t PEFLAG; /*!< (@ 0x50004150) Parity Error Flag Register */ - __IO uint32_t PMTPR; /*!< (@ 0x50004154) Parity Memory Test Pattern Register */ - __IO uint32_t PMTSR; /*!< (@ 0x50004158) Parity Memory Test Select Register */ -} SCU_PARITY_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_TRAP ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_TRAP) - */ - -typedef struct { /*!< (@ 0x50004160) SCU_TRAP Structure */ - __I uint32_t TRAPSTAT; /*!< (@ 0x50004160) Trap Status Register */ - __I uint32_t TRAPRAW; /*!< (@ 0x50004164) Trap Raw Status Register */ - __IO uint32_t TRAPDIS; /*!< (@ 0x50004168) Trap Disable Register */ - __O uint32_t TRAPCLR; /*!< (@ 0x5000416C) Trap Clear Register */ - __O uint32_t TRAPSET; /*!< (@ 0x50004170) Trap Set Register */ -} SCU_TRAP_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_HIBERNATE ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_HIBERNATE) - */ - -typedef struct { /*!< (@ 0x50004300) SCU_HIBERNATE Structure */ - __I uint32_t HDSTAT; /*!< (@ 0x50004300) Hibernate Domain Status Register */ - __O uint32_t HDCLR; /*!< (@ 0x50004304) Hibernate Domain Status Clear Register */ - __O uint32_t HDSET; /*!< (@ 0x50004308) Hibernate Domain Status Set Register */ - __IO uint32_t HDCR; /*!< (@ 0x5000430C) Hibernate Domain Control Register */ - __I uint32_t RESERVED; - __IO uint32_t OSCSICTRL; /*!< (@ 0x50004314) fOSI Control Register */ - __I uint32_t OSCULSTAT; /*!< (@ 0x50004318) OSC_ULP Status Register */ - __IO uint32_t OSCULCTRL; /*!< (@ 0x5000431C) OSC_ULP Control Register */ - __IO uint32_t LPACCONF; /*!< (@ 0x50004320) Analog Wake-up Configuration Register */ - __IO uint32_t LPACTH0; /*!< (@ 0x50004324) LPAC Threshold Register 0 */ - __IO uint32_t LPACTH1; /*!< (@ 0x50004328) LPAC Threshold Register 1 */ - __I uint32_t LPACST; /*!< (@ 0x5000432C) Hibernate Analog Control State Register */ - __O uint32_t LPACCLR; /*!< (@ 0x50004330) LPAC Control Clear Register */ - __O uint32_t LPACSET; /*!< (@ 0x50004334) LPAC Control Set Register */ - __I uint32_t HINTST; /*!< (@ 0x50004338) Hibernate Internal Control State Register */ - __O uint32_t HINTCLR; /*!< (@ 0x5000433C) Hibernate Internal Control Clear Register */ - __O uint32_t HINTSET; /*!< (@ 0x50004340) Hibernate Internal Control Set Register */ -} SCU_HIBERNATE_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_POWER ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_POWER) - */ - -typedef struct { /*!< (@ 0x50004200) SCU_POWER Structure */ - __I uint32_t PWRSTAT; /*!< (@ 0x50004200) PCU Status Register */ - __O uint32_t PWRSET; /*!< (@ 0x50004204) PCU Set Control Register */ - __O uint32_t PWRCLR; /*!< (@ 0x50004208) PCU Clear Control Register */ - __I uint32_t RESERVED; - __I uint32_t EVRSTAT; /*!< (@ 0x50004210) EVR Status Register */ - __I uint32_t EVRVADCSTAT; /*!< (@ 0x50004214) EVR VADC Status Register */ - __I uint32_t RESERVED1[5]; - __IO uint32_t PWRMON; /*!< (@ 0x5000422C) Power Monitor Control */ -} SCU_POWER_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_RESET ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_RESET) - */ - -typedef struct { /*!< (@ 0x50004400) SCU_RESET Structure */ - __I uint32_t RSTSTAT; /*!< (@ 0x50004400) RCU Reset Status */ - __O uint32_t RSTSET; /*!< (@ 0x50004404) RCU Reset Set Register */ - __O uint32_t RSTCLR; /*!< (@ 0x50004408) RCU Reset Clear Register */ - __I uint32_t PRSTAT0; /*!< (@ 0x5000440C) RCU Peripheral 0 Reset Status */ - __O uint32_t PRSET0; /*!< (@ 0x50004410) RCU Peripheral 0 Reset Set */ - __O uint32_t PRCLR0; /*!< (@ 0x50004414) RCU Peripheral 0 Reset Clear */ - __I uint32_t PRSTAT1; /*!< (@ 0x50004418) RCU Peripheral 1 Reset Status */ - __O uint32_t PRSET1; /*!< (@ 0x5000441C) RCU Peripheral 1 Reset Set */ - __O uint32_t PRCLR1; /*!< (@ 0x50004420) RCU Peripheral 1 Reset Clear */ - __I uint32_t PRSTAT2; /*!< (@ 0x50004424) RCU Peripheral 2 Reset Status */ - __O uint32_t PRSET2; /*!< (@ 0x50004428) RCU Peripheral 2 Reset Set */ - __O uint32_t PRCLR2; /*!< (@ 0x5000442C) RCU Peripheral 2 Reset Clear */ -} SCU_RESET_TypeDef; - -/* ================================================================================ */ -/* ================ LEDTS [LEDTS0] ================ */ -/* ================================================================================ */ - -/** - * @brief LED and Touch Sense Unit 0 (LEDTS) - */ - -typedef struct { /*!< (@ 0x48010000) LEDTS Structure */ - __I uint32_t ID; /*!< (@ 0x48010000) Module Identification Register */ - __IO uint32_t GLOBCTL; /*!< (@ 0x48010004) Global Control Register */ - __IO uint32_t FNCTL; /*!< (@ 0x48010008) Function Control Register */ - __O uint32_t EVFR; /*!< (@ 0x4801000C) Event Flag Register */ - __IO uint32_t TSVAL; /*!< (@ 0x48010010) Touch-sense TS-Counter Value */ - __IO uint32_t LINE0; /*!< (@ 0x48010014) Line Pattern Register 0 */ - __IO uint32_t LINE1; /*!< (@ 0x48010018) Line Pattern Register 1 */ - __IO uint32_t LDCMP0; /*!< (@ 0x4801001C) LED Compare Register 0 */ - __IO uint32_t LDCMP1; /*!< (@ 0x48010020) LED Compare Register 1 */ - __IO uint32_t TSCMP0; /*!< (@ 0x48010024) Touch-sense Compare Register 0 */ - __IO uint32_t TSCMP1; /*!< (@ 0x48010028) Touch-sense Compare Register 1 */ -} LEDTS0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ USB [USB0] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Bus (USB) - */ - -typedef struct { /*!< (@ 0x50040000) USB Structure */ - __I uint32_t RESERVED[2]; - __IO uint32_t GAHBCFG; /*!< (@ 0x50040008) AHB Configuration Register */ - __IO uint32_t GUSBCFG; /*!< (@ 0x5004000C) USB Configuration Register */ - __IO uint32_t GRSTCTL; /*!< (@ 0x50040010) Reset Register */ - __IO uint32_t GINTSTS; /*!< (@ 0x50040014) Interrupt Register */ - __IO uint32_t GINTMSK; /*!< (@ 0x50040018) Interrupt Mask Register */ - __I uint32_t GRXSTSR; /*!< (@ 0x5004001C) Receive Status Debug Read Register */ - __I uint32_t GRXSTSP; /*!< (@ 0x50040020) Receive Status Read and Pop Register */ - __IO uint32_t GRXFSIZ; /*!< (@ 0x50040024) Receive FIFO Size Register */ - __IO uint32_t GNPTXFSIZ; /*!< (@ 0x50040028) Non-Periodic Transmit FIFO Size Register */ - __I uint32_t RESERVED1[4]; - __IO uint32_t GUID; /*!< (@ 0x5004003C) USB Module Identification Register */ - __I uint32_t RESERVED2[7]; - __IO uint32_t GDFIFOCFG; /*!< (@ 0x5004005C) Global DFIFO Software Config Register */ - __I uint32_t RESERVED3[41]; - __IO uint32_t DIEPTXF1; /*!< (@ 0x50040104) Device IN Endpoint 1 Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF2; /*!< (@ 0x50040108) Device IN Endpoint 2 Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF3; /*!< (@ 0x5004010C) Device IN Endpoint 3 Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF4; /*!< (@ 0x50040110) Device IN Endpoint 4 Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF5; /*!< (@ 0x50040114) Device IN Endpoint 5 Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF6; /*!< (@ 0x50040118) Device IN Endpoint 6 Transmit FIFO Size Register */ - __I uint32_t RESERVED4[441]; - __IO uint32_t DCFG; /*!< (@ 0x50040800) Device Configuration Register */ - __IO uint32_t DCTL; /*!< (@ 0x50040804) Device Control Register */ - __I uint32_t DSTS; /*!< (@ 0x50040808) Device Status Register */ - __I uint32_t RESERVED5; - __IO uint32_t DIEPMSK; /*!< (@ 0x50040810) Device IN Endpoint Common Interrupt Mask Register */ - __IO uint32_t DOEPMSK; /*!< (@ 0x50040814) Device OUT Endpoint Common Interrupt Mask Register */ - __I uint32_t DAINT; /*!< (@ 0x50040818) Device All Endpoints Interrupt Register */ - __IO uint32_t DAINTMSK; /*!< (@ 0x5004081C) Device All Endpoints Interrupt Mask Register */ - __I uint32_t RESERVED6[2]; - __IO uint32_t DVBUSDIS; /*!< (@ 0x50040828) Device VBUS Discharge Time Register */ - __IO uint32_t DVBUSPULSE; /*!< (@ 0x5004082C) Device VBUS Pulsing Time Register */ - __I uint32_t RESERVED7; - __IO uint32_t DIEPEMPMSK; /*!< (@ 0x50040834) Device IN Endpoint FIFO Empty Interrupt Mask - Register */ - __I uint32_t RESERVED8[370]; - __IO uint32_t PCGCCTL; /*!< (@ 0x50040E00) Power and Clock Gating Control Register */ -} USB0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ USB0_EP0 ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Bus (USB0_EP0) - */ - -typedef struct { /*!< (@ 0x50040900) USB0_EP0 Structure */ - __IO uint32_t DIEPCTL0; /*!< (@ 0x50040900) Device Control IN Endpoint Control Register */ - __I uint32_t RESERVED; - __IO uint32_t DIEPINT0; /*!< (@ 0x50040908) Device Endpoint Interrupt Register */ - __I uint32_t RESERVED1; - __IO uint32_t DIEPTSIZ0; /*!< (@ 0x50040910) Device IN Endpoint Transfer Size Register */ - __IO uint32_t DIEPDMA0; /*!< (@ 0x50040914) Device Endpoint DMA Address Register */ - __I uint32_t DTXFSTS0; /*!< (@ 0x50040918) Device IN Endpoint Transmit FIFO Status Register */ - __I uint32_t DIEPDMAB0; /*!< (@ 0x5004091C) Device Endpoint DMA Buffer Address Register */ - __I uint32_t RESERVED2[120]; - __IO uint32_t DOEPCTL0; /*!< (@ 0x50040B00) Device Control OUT Endpoint Control Register */ - __I uint32_t RESERVED3; - __IO uint32_t DOEPINT0; /*!< (@ 0x50040B08) Device Endpoint Interrupt Register */ - __I uint32_t RESERVED4; - __IO uint32_t DOEPTSIZ0; /*!< (@ 0x50040B10) Device OUT Endpoint Transfer Size Register */ - __IO uint32_t DOEPDMA0; /*!< (@ 0x50040B14) Device Endpoint DMA Address Register */ - __I uint32_t RESERVED5; - __I uint32_t DOEPDMAB0; /*!< (@ 0x50040B1C) Device Endpoint DMA Buffer Address Register */ -} USB0_EP0_TypeDef; - -/* ================================================================================ */ -/* ================ USB_EP [USB0_EP1] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Bus (USB_EP) - */ - -typedef struct { /*!< (@ 0x50040920) USB_EP Structure */ - - union { - __IO uint32_t - DIEPCTL_INTBULK; /*!< (@ 0x50040920) Device Endpoint Control Register [INTBULK] */ - __IO uint32_t - DIEPCTL_ISOCONT; /*!< (@ 0x50040920) Device Endpoint Control Register [ISOCONT] */ - }; - - __I uint32_t RESERVED; - __IO uint32_t DIEPINT; /*!< (@ 0x50040928) Device Endpoint Interrupt Register */ - __I uint32_t RESERVED1; - __IO uint32_t DIEPTSIZ; /*!< (@ 0x50040930) Device Endpoint Transfer Size Register */ - __IO uint32_t DIEPDMA; /*!< (@ 0x50040934) Device Endpoint DMA Address Register */ - __I uint32_t DTXFSTS; /*!< (@ 0x50040938) Device IN Endpoint Transmit FIFO Status Register */ - __I uint32_t DIEPDMAB; /*!< (@ 0x5004093C) Device Endpoint DMA Buffer Address Register */ - __I uint32_t RESERVED2[120]; - - union { - __IO uint32_t - DOEPCTL_INTBULK; /*!< (@ 0x50040B20) Device Endpoint Control Register [INTBULK] */ - __IO uint32_t - DOEPCTL_ISOCONT; /*!< (@ 0x50040B20) Device Endpoint Control Register [ISOCONT] */ - }; - - __I uint32_t RESERVED3; - __IO uint32_t DOEPINT; /*!< (@ 0x50040B28) Device Endpoint Interrupt Register */ - __I uint32_t RESERVED4; - - union { - __IO uint32_t - DOEPTSIZ_CONTROL; /*!< (@ 0x50040B30) Device Endpoint Transfer Size Register [CONT] */ - __IO uint32_t - DOEPTSIZ_ISO; /*!< (@ 0x50040B30) Device Endpoint Transfer Size Register [ISO] */ - }; - - __IO uint32_t DOEPDMA; /*!< (@ 0x50040B34) Device Endpoint DMA Address Register */ - __I uint32_t RESERVED5; - __I uint32_t DOEPDMAB; /*!< (@ 0x50040B3C) Device Endpoint DMA Buffer Address Register */ -} USB0_EP_TypeDef; - -/* ================================================================================ */ -/* ================ USIC [USIC0] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Interface Controller 0 (USIC) - */ - -typedef struct { /*!< (@ 0x40030008) USIC Structure */ - __I uint32_t ID; /*!< (@ 0x40030008) Module Identification Register */ -} USIC_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ USIC_CH [USIC0_CH0] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Interface Controller 0 (USIC_CH) - */ - -typedef struct { /*!< (@ 0x40030000) USIC_CH Structure */ - __I uint32_t RESERVED; - __I uint32_t CCFG; /*!< (@ 0x40030004) Channel Configuration Register */ - __I uint32_t RESERVED1; - __IO uint32_t KSCFG; /*!< (@ 0x4003000C) Kernel State Configuration Register */ - __IO uint32_t FDR; /*!< (@ 0x40030010) Fractional Divider Register */ - __IO uint32_t BRG; /*!< (@ 0x40030014) Baud Rate Generator Register */ - __IO uint32_t INPR; /*!< (@ 0x40030018) Interrupt Node Pointer Register */ - __IO uint32_t DX0CR; /*!< (@ 0x4003001C) Input Control Register 0 */ - __IO uint32_t DX1CR; /*!< (@ 0x40030020) Input Control Register 1 */ - __IO uint32_t DX2CR; /*!< (@ 0x40030024) Input Control Register 2 */ - __IO uint32_t DX3CR; /*!< (@ 0x40030028) Input Control Register 3 */ - __IO uint32_t DX4CR; /*!< (@ 0x4003002C) Input Control Register 4 */ - __IO uint32_t DX5CR; /*!< (@ 0x40030030) Input Control Register 5 */ - __IO uint32_t SCTR; /*!< (@ 0x40030034) Shift Control Register */ - __IO uint32_t TCSR; /*!< (@ 0x40030038) Transmit Control/Status Register */ - - union { - __IO uint32_t PCR_IICMode; /*!< (@ 0x4003003C) Protocol Control Register [IIC Mode] */ - __IO uint32_t PCR_IISMode; /*!< (@ 0x4003003C) Protocol Control Register [IIS Mode] */ - __IO uint32_t PCR_SSCMode; /*!< (@ 0x4003003C) Protocol Control Register [SSC Mode] */ - __IO uint32_t PCR; /*!< (@ 0x4003003C) Protocol Control Register */ - __IO uint32_t PCR_ASCMode; /*!< (@ 0x4003003C) Protocol Control Register [ASC Mode] */ - }; - - __IO uint32_t CCR; /*!< (@ 0x40030040) Channel Control Register */ - __IO uint32_t CMTR; /*!< (@ 0x40030044) Capture Mode Timer Register */ - - union { - __IO uint32_t PSR_IICMode; /*!< (@ 0x40030048) Protocol Status Register [IIC Mode] */ - __IO uint32_t PSR_IISMode; /*!< (@ 0x40030048) Protocol Status Register [IIS Mode] */ - __IO uint32_t PSR_SSCMode; /*!< (@ 0x40030048) Protocol Status Register [SSC Mode] */ - __IO uint32_t PSR; /*!< (@ 0x40030048) Protocol Status Register */ - __IO uint32_t PSR_ASCMode; /*!< (@ 0x40030048) Protocol Status Register [ASC Mode] */ - }; - - __O uint32_t PSCR; /*!< (@ 0x4003004C) Protocol Status Clear Register */ - __I uint32_t RBUFSR; /*!< (@ 0x40030050) Receiver Buffer Status Register */ - __I uint32_t RBUF; /*!< (@ 0x40030054) Receiver Buffer Register */ - __I uint32_t RBUFD; /*!< (@ 0x40030058) Receiver Buffer Register for Debugger */ - __I uint32_t RBUF0; /*!< (@ 0x4003005C) Receiver Buffer Register 0 */ - __I uint32_t RBUF1; /*!< (@ 0x40030060) Receiver Buffer Register 1 */ - __I uint32_t RBUF01SR; /*!< (@ 0x40030064) Receiver Buffer 01 Status Register */ - __O uint32_t FMR; /*!< (@ 0x40030068) Flag Modification Register */ - __I uint32_t RESERVED2[5]; - __IO uint32_t TBUF[32]; /*!< (@ 0x40030080) Transmit Buffer */ - __IO uint32_t BYP; /*!< (@ 0x40030100) Bypass Data Register */ - __IO uint32_t BYPCR; /*!< (@ 0x40030104) Bypass Control Register */ - __IO uint32_t TBCTR; /*!< (@ 0x40030108) Transmitter Buffer Control Register */ - __IO uint32_t RBCTR; /*!< (@ 0x4003010C) Receiver Buffer Control Register */ - __I uint32_t TRBPTR; /*!< (@ 0x40030110) Transmit/Receive Buffer Pointer Register */ - __IO uint32_t TRBSR; /*!< (@ 0x40030114) Transmit/Receive Buffer Status Register */ - __O uint32_t TRBSCR; /*!< (@ 0x40030118) Transmit/Receive Buffer Status Clear Register */ - __I uint32_t OUTR; /*!< (@ 0x4003011C) Receiver Buffer Output Register */ - __I uint32_t OUTDR; /*!< (@ 0x40030120) Receiver Buffer Output Register L for Debugger */ - __I uint32_t RESERVED3[23]; - __O uint32_t IN[32]; /*!< (@ 0x40030180) Transmit FIFO Buffer */ -} USIC_CH_TypeDef; - -/* ================================================================================ */ -/* ================ CAN ================ */ -/* ================================================================================ */ - -/** - * @brief Controller Area Networks (CAN) - */ - -typedef struct { /*!< (@ 0x48014000) CAN Structure */ - __IO uint32_t CLC; /*!< (@ 0x48014000) CAN Clock Control Register */ - __I uint32_t RESERVED; - __I uint32_t ID; /*!< (@ 0x48014008) Module Identification Register */ - __IO uint32_t FDR; /*!< (@ 0x4801400C) CAN Fractional Divider Register */ - __I uint32_t RESERVED1[60]; - __I uint32_t LIST[8]; /*!< (@ 0x48014100) List Register */ - __I uint32_t RESERVED2[8]; - __IO uint32_t MSPND[8]; /*!< (@ 0x48014140) Message Pending Register */ - __I uint32_t RESERVED3[8]; - __I uint32_t MSID[8]; /*!< (@ 0x48014180) Message Index Register */ - __I uint32_t RESERVED4[8]; - __IO uint32_t MSIMASK; /*!< (@ 0x480141C0) Message Index Mask Register */ - __IO uint32_t PANCTR; /*!< (@ 0x480141C4) Panel Control Register */ - __IO uint32_t MCR; /*!< (@ 0x480141C8) Module Control Register */ - __O uint32_t MITR; /*!< (@ 0x480141CC) Module Interrupt Trigger Register */ -} CAN_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ CAN_NODE [CAN_NODE0] ================ */ -/* ================================================================================ */ - -/** - * @brief Controller Area Networks (CAN_NODE) - */ - -typedef struct { /*!< (@ 0x48014200) CAN_NODE Structure */ - __IO uint32_t NCR; /*!< (@ 0x48014200) Node Control Register */ - __IO uint32_t NSR; /*!< (@ 0x48014204) Node Status Register */ - __IO uint32_t NIPR; /*!< (@ 0x48014208) Node Interrupt Pointer Register */ - __IO uint32_t NPCR; /*!< (@ 0x4801420C) Node Port Control Register */ - __IO uint32_t NBTR; /*!< (@ 0x48014210) Node Bit Timing Register */ - __IO uint32_t NECNT; /*!< (@ 0x48014214) Node Error Counter Register */ - __IO uint32_t NFCR; /*!< (@ 0x48014218) Node Frame Counter Register */ -} CAN_NODE_TypeDef; - -/* ================================================================================ */ -/* ================ CAN_MO [CAN_MO0] ================ */ -/* ================================================================================ */ - -/** - * @brief Controller Area Networks (CAN_MO) - */ - -typedef struct { /*!< (@ 0x48015000) CAN_MO Structure */ - __IO uint32_t MOFCR; /*!< (@ 0x48015000) Message Object Function Control Register */ - __IO uint32_t MOFGPR; /*!< (@ 0x48015004) Message Object FIFO/Gateway Pointer Register */ - __IO uint32_t MOIPR; /*!< (@ 0x48015008) Message Object Interrupt Pointer Register */ - __IO uint32_t MOAMR; /*!< (@ 0x4801500C) Message Object Acceptance Mask Register */ - __IO uint32_t MODATAL; /*!< (@ 0x48015010) Message Object Data Register Low */ - __IO uint32_t MODATAH; /*!< (@ 0x48015014) Message Object Data Register High */ - __IO uint32_t MOAR; /*!< (@ 0x48015018) Message Object Arbitration Register */ - - union { - __I uint32_t MOSTAT; /*!< (@ 0x4801501C) Message Object Status Register */ - __O uint32_t MOCTR; /*!< (@ 0x4801501C) Message Object Control Register */ - }; -} CAN_MO_TypeDef; - -/* ================================================================================ */ -/* ================ VADC ================ */ -/* ================================================================================ */ - -/** - * @brief Analog to Digital Converter (VADC) - */ - -typedef struct { /*!< (@ 0x40004000) VADC Structure */ - __IO uint32_t CLC; /*!< (@ 0x40004000) Clock Control Register */ - __I uint32_t RESERVED; - __I uint32_t ID; /*!< (@ 0x40004008) Module Identification Register */ - __I uint32_t RESERVED1[7]; - __IO uint32_t OCS; /*!< (@ 0x40004028) OCDS Control and Status Register */ - __I uint32_t RESERVED2[21]; - __IO uint32_t GLOBCFG; /*!< (@ 0x40004080) Global Configuration Register */ - __I uint32_t RESERVED3[7]; - __IO uint32_t GLOBICLASS[2]; /*!< (@ 0x400040A0) Input Class Register, Global */ - __I uint32_t RESERVED4[4]; - __IO uint32_t GLOBBOUND; /*!< (@ 0x400040B8) Global Boundary Select Register */ - __I uint32_t RESERVED5[9]; - __IO uint32_t GLOBEFLAG; /*!< (@ 0x400040E0) Global Event Flag Register */ - __I uint32_t RESERVED6[23]; - __IO uint32_t GLOBEVNP; /*!< (@ 0x40004140) Global Event Node Pointer Register */ - __I uint32_t RESERVED7[7]; - __IO uint32_t GLOBTF; /*!< (@ 0x40004160) Global Test Functions Register */ - __I uint32_t RESERVED8[7]; - __IO uint32_t - BRSSEL[4]; /*!< (@ 0x40004180) Background Request Source Channel Select Register */ - __I uint32_t RESERVED9[12]; - __IO uint32_t BRSPND[4]; /*!< (@ 0x400041C0) Background Request Source Pending Register */ - __I uint32_t RESERVED10[12]; - __IO uint32_t BRSCTRL; /*!< (@ 0x40004200) Background Request Source Control Register */ - __IO uint32_t BRSMR; /*!< (@ 0x40004204) Background Request Source Mode Register */ - __I uint32_t RESERVED11[30]; - __IO uint32_t GLOBRCR; /*!< (@ 0x40004280) Global Result Control Register */ - __I uint32_t RESERVED12[31]; - __IO uint32_t GLOBRES; /*!< (@ 0x40004300) Global Result Register */ - __I uint32_t RESERVED13[31]; - __IO uint32_t GLOBRESD; /*!< (@ 0x40004380) Global Result Register, Debug */ - __I uint32_t RESERVED14[27]; - __IO uint32_t EMUXSEL; /*!< (@ 0x400043F0) External Multiplexer Select Register */ -} VADC_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ VADC_G [VADC_G0] ================ */ -/* ================================================================================ */ - -/** - * @brief Analog to Digital Converter (VADC_G) - */ - -typedef struct { /*!< (@ 0x40004400) VADC_G Structure */ - __I uint32_t RESERVED[32]; - __IO uint32_t ARBCFG; /*!< (@ 0x40004480) Arbitration Configuration Register */ - __IO uint32_t ARBPR; /*!< (@ 0x40004484) Arbitration Priority Register */ - __IO uint32_t CHASS; /*!< (@ 0x40004488) Channel Assignment Register */ - __I uint32_t RESERVED1[5]; - __IO uint32_t ICLASS[2]; /*!< (@ 0x400044A0) Input Class Register */ - __I uint32_t RESERVED2[2]; - __IO uint32_t ALIAS; /*!< (@ 0x400044B0) Alias Register */ - __I uint32_t RESERVED3; - __IO uint32_t BOUND; /*!< (@ 0x400044B8) Boundary Select Register */ - __I uint32_t RESERVED4; - __IO uint32_t SYNCTR; /*!< (@ 0x400044C0) Synchronization Control Register */ - __I uint32_t RESERVED5; - __IO uint32_t BFL; /*!< (@ 0x400044C8) Boundary Flag Register */ - __O uint32_t BFLS; /*!< (@ 0x400044CC) Boundary Flag Software Register */ - __IO uint32_t BFLC; /*!< (@ 0x400044D0) Boundary Flag Control Register */ - __IO uint32_t BFLNP; /*!< (@ 0x400044D4) Boundary Flag Node Pointer Register */ - __I uint32_t RESERVED6[10]; - __IO uint32_t QCTRL0; /*!< (@ 0x40004500) Queue 0 Source Control Register */ - __IO uint32_t QMR0; /*!< (@ 0x40004504) Queue 0 Mode Register */ - __I uint32_t QSR0; /*!< (@ 0x40004508) Queue 0 Status Register */ - __I uint32_t Q0R0; /*!< (@ 0x4000450C) Queue 0 Register 0 */ - - union { - __I uint32_t QBUR0; /*!< (@ 0x40004510) Queue 0 Backup Register */ - __O uint32_t QINR0; /*!< (@ 0x40004510) Queue 0 Input Register */ - }; - - __I uint32_t RESERVED7[3]; - __IO uint32_t ASCTRL; /*!< (@ 0x40004520) Autoscan Source Control Register */ - __IO uint32_t ASMR; /*!< (@ 0x40004524) Autoscan Source Mode Register */ - __IO uint32_t ASSEL; /*!< (@ 0x40004528) Autoscan Source Channel Select Register */ - __IO uint32_t ASPND; /*!< (@ 0x4000452C) Autoscan Source Pending Register */ - __I uint32_t RESERVED8[20]; - __IO uint32_t CEFLAG; /*!< (@ 0x40004580) Channel Event Flag Register */ - __IO uint32_t REFLAG; /*!< (@ 0x40004584) Result Event Flag Register */ - __IO uint32_t SEFLAG; /*!< (@ 0x40004588) Source Event Flag Register */ - __I uint32_t RESERVED9; - __O uint32_t CEFCLR; /*!< (@ 0x40004590) Channel Event Flag Clear Register */ - __O uint32_t REFCLR; /*!< (@ 0x40004594) Result Event Flag Clear Register */ - __O uint32_t SEFCLR; /*!< (@ 0x40004598) Source Event Flag Clear Register */ - __I uint32_t RESERVED10; - __IO uint32_t CEVNP0; /*!< (@ 0x400045A0) Channel Event Node Pointer Register 0 */ - __I uint32_t RESERVED11[3]; - __IO uint32_t REVNP0; /*!< (@ 0x400045B0) Result Event Node Pointer Register 0 */ - __IO uint32_t REVNP1; /*!< (@ 0x400045B4) Result Event Node Pointer Register 1 */ - __I uint32_t RESERVED12[2]; - __IO uint32_t SEVNP; /*!< (@ 0x400045C0) Source Event Node Pointer Register */ - __I uint32_t RESERVED13; - __O uint32_t SRACT; /*!< (@ 0x400045C8) Service Request Software Activation Trigger */ - __I uint32_t RESERVED14[9]; - __IO uint32_t EMUXCTR; /*!< (@ 0x400045F0) External Multiplexer Control Register */ - __I uint32_t RESERVED15; - __IO uint32_t VFR; /*!< (@ 0x400045F8) Valid Flag Register */ - __I uint32_t RESERVED16; - __IO uint32_t CHCTR[8]; /*!< (@ 0x40004600) Channel Ctrl. Reg. */ - __I uint32_t RESERVED17[24]; - __IO uint32_t RCR[16]; /*!< (@ 0x40004680) Result Control Register */ - __I uint32_t RESERVED18[16]; - __IO uint32_t RES[16]; /*!< (@ 0x40004700) Result Register */ - __I uint32_t RESERVED19[16]; - __I uint32_t RESD[16]; /*!< (@ 0x40004780) Result Register, Debug */ -} VADC_G_TypeDef; - -/* ================================================================================ */ -/* ================ DAC ================ */ -/* ================================================================================ */ - -/** - * @brief Digital to Analog Converter (DAC) - */ - -typedef struct { /*!< (@ 0x48018000) DAC Structure */ - __I uint32_t ID; /*!< (@ 0x48018000) Module Identification Register */ - __IO uint32_t DAC0CFG0; /*!< (@ 0x48018004) DAC0 Configuration Register 0 */ - __IO uint32_t DAC0CFG1; /*!< (@ 0x48018008) DAC0 Configuration Register 1 */ - __IO uint32_t DAC1CFG0; /*!< (@ 0x4801800C) DAC1 Configuration Register 0 */ - __IO uint32_t DAC1CFG1; /*!< (@ 0x48018010) DAC1 Configuration Register 1 */ - __IO uint32_t DAC0DATA; /*!< (@ 0x48018014) DAC0 Data Register */ - __IO uint32_t DAC1DATA; /*!< (@ 0x48018018) DAC1 Data Register */ - __IO uint32_t DAC01DATA; /*!< (@ 0x4801801C) DAC01 Data Register */ - __IO uint32_t DAC0PATL; /*!< (@ 0x48018020) DAC0 Lower Pattern Register */ - __IO uint32_t DAC0PATH; /*!< (@ 0x48018024) DAC0 Higher Pattern Register */ - __IO uint32_t DAC1PATL; /*!< (@ 0x48018028) DAC1 Lower Pattern Register */ - __IO uint32_t DAC1PATH; /*!< (@ 0x4801802C) DAC1 Higher Pattern Register */ -} DAC_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ CCU4 [CCU40] ================ */ -/* ================================================================================ */ - -/** - * @brief Capture Compare Unit 4 - Unit 0 (CCU4) - */ - -typedef struct { /*!< (@ 0x4000C000) CCU4 Structure */ - __IO uint32_t GCTRL; /*!< (@ 0x4000C000) Global Control Register */ - __I uint32_t GSTAT; /*!< (@ 0x4000C004) Global Status Register */ - __O uint32_t GIDLS; /*!< (@ 0x4000C008) Global Idle Set */ - __O uint32_t GIDLC; /*!< (@ 0x4000C00C) Global Idle Clear */ - __O uint32_t GCSS; /*!< (@ 0x4000C010) Global Channel Set */ - __O uint32_t GCSC; /*!< (@ 0x4000C014) Global Channel Clear */ - __I uint32_t GCST; /*!< (@ 0x4000C018) Global Channel Status */ - __I uint32_t RESERVED[13]; - __I uint32_t ECRD; /*!< (@ 0x4000C050) Extended Capture Mode Read */ - __I uint32_t RESERVED1[11]; - __I uint32_t MIDR; /*!< (@ 0x4000C080) Module Identification */ -} CCU4_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ CCU4_CC4 [CCU40_CC40] ================ */ -/* ================================================================================ */ - -/** - * @brief Capture Compare Unit 4 - Unit 0 (CCU4_CC4) - */ - -typedef struct { /*!< (@ 0x4000C100) CCU4_CC4 Structure */ - __IO uint32_t INS; /*!< (@ 0x4000C100) Input Selector Configuration */ - __IO uint32_t CMC; /*!< (@ 0x4000C104) Connection Matrix Control */ - __I uint32_t TCST; /*!< (@ 0x4000C108) Slice Timer Status */ - __O uint32_t TCSET; /*!< (@ 0x4000C10C) Slice Timer Run Set */ - __O uint32_t TCCLR; /*!< (@ 0x4000C110) Slice Timer Clear */ - __IO uint32_t TC; /*!< (@ 0x4000C114) Slice Timer Control */ - __IO uint32_t PSL; /*!< (@ 0x4000C118) Passive Level Config */ - __I uint32_t DIT; /*!< (@ 0x4000C11C) Dither Config */ - __IO uint32_t DITS; /*!< (@ 0x4000C120) Dither Shadow Register */ - __IO uint32_t PSC; /*!< (@ 0x4000C124) Prescaler Control */ - __IO uint32_t FPC; /*!< (@ 0x4000C128) Floating Prescaler Control */ - __IO uint32_t FPCS; /*!< (@ 0x4000C12C) Floating Prescaler Shadow */ - __I uint32_t PR; /*!< (@ 0x4000C130) Timer Period Value */ - __IO uint32_t PRS; /*!< (@ 0x4000C134) Timer Shadow Period Value */ - __I uint32_t CR; /*!< (@ 0x4000C138) Timer Compare Value */ - __IO uint32_t CRS; /*!< (@ 0x4000C13C) Timer Shadow Compare Value */ - __I uint32_t RESERVED[12]; - __IO uint32_t TIMER; /*!< (@ 0x4000C170) Timer Value */ - __I uint32_t CV[4]; /*!< (@ 0x4000C174) Capture Register 0 */ - __I uint32_t RESERVED1[7]; - __I uint32_t INTS; /*!< (@ 0x4000C1A0) Interrupt Status */ - __IO uint32_t INTE; /*!< (@ 0x4000C1A4) Interrupt Enable Control */ - __IO uint32_t SRS; /*!< (@ 0x4000C1A8) Service Request Selector */ - __O uint32_t SWS; /*!< (@ 0x4000C1AC) Interrupt Status Set */ - __O uint32_t SWR; /*!< (@ 0x4000C1B0) Interrupt Status Clear */ -} CCU4_CC4_TypeDef; - -/* ================================================================================ */ -/* ================ CCU8 [CCU80] ================ */ -/* ================================================================================ */ - -/** - * @brief Capture Compare Unit 8 - Unit 0 (CCU8) - */ - -typedef struct { /*!< (@ 0x40020000) CCU8 Structure */ - __IO uint32_t GCTRL; /*!< (@ 0x40020000) Global Control Register */ - __I uint32_t GSTAT; /*!< (@ 0x40020004) Global Status Register */ - __O uint32_t GIDLS; /*!< (@ 0x40020008) Global Idle Set */ - __O uint32_t GIDLC; /*!< (@ 0x4002000C) Global Idle Clear */ - __O uint32_t GCSS; /*!< (@ 0x40020010) Global Channel Set */ - __O uint32_t GCSC; /*!< (@ 0x40020014) Global Channel Clear */ - __I uint32_t GCST; /*!< (@ 0x40020018) Global Channel status */ - __IO uint32_t GPCHK; /*!< (@ 0x4002001C) Parity Checker Configuration */ - __I uint32_t RESERVED[12]; - __I uint32_t ECRD; /*!< (@ 0x40020050) Extended Capture Mode Read */ - __I uint32_t RESERVED1[11]; - __I uint32_t MIDR; /*!< (@ 0x40020080) Module Identification */ -} CCU8_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ CCU8_CC8 [CCU80_CC80] ================ */ -/* ================================================================================ */ - -/** - * @brief Capture Compare Unit 8 - Unit 0 (CCU8_CC8) - */ - -typedef struct { /*!< (@ 0x40020100) CCU8_CC8 Structure */ - __IO uint32_t INS; /*!< (@ 0x40020100) Input Selector Configuration */ - __IO uint32_t CMC; /*!< (@ 0x40020104) Connection Matrix Control */ - __I uint32_t TCST; /*!< (@ 0x40020108) Slice Timer Status */ - __O uint32_t TCSET; /*!< (@ 0x4002010C) Slice Timer Run Set */ - __O uint32_t TCCLR; /*!< (@ 0x40020110) Slice Timer Clear */ - __IO uint32_t TC; /*!< (@ 0x40020114) Slice Timer Control */ - __IO uint32_t PSL; /*!< (@ 0x40020118) Passive Level Config */ - __I uint32_t DIT; /*!< (@ 0x4002011C) Dither Config */ - __IO uint32_t DITS; /*!< (@ 0x40020120) Dither Shadow Register */ - __IO uint32_t PSC; /*!< (@ 0x40020124) Prescaler Control */ - __IO uint32_t FPC; /*!< (@ 0x40020128) Floating Prescaler Control */ - __IO uint32_t FPCS; /*!< (@ 0x4002012C) Floating Prescaler Shadow */ - __I uint32_t PR; /*!< (@ 0x40020130) Timer Period Value */ - __IO uint32_t PRS; /*!< (@ 0x40020134) Timer Shadow Period Value */ - __I uint32_t CR1; /*!< (@ 0x40020138) Channel 1 Compare Value */ - __IO uint32_t CR1S; /*!< (@ 0x4002013C) Channel 1 Compare Shadow Value */ - __I uint32_t CR2; /*!< (@ 0x40020140) Channel 2 Compare Value */ - __IO uint32_t CR2S; /*!< (@ 0x40020144) Channel 2 Compare Shadow Value */ - __IO uint32_t CHC; /*!< (@ 0x40020148) Channel Control */ - __IO uint32_t DTC; /*!< (@ 0x4002014C) Dead Time Control */ - __IO uint32_t DC1R; /*!< (@ 0x40020150) Channel 1 Dead Time Values */ - __IO uint32_t DC2R; /*!< (@ 0x40020154) Channel 2 Dead Time Values */ - __I uint32_t RESERVED[6]; - __IO uint32_t TIMER; /*!< (@ 0x40020170) Timer Value */ - __I uint32_t CV[4]; /*!< (@ 0x40020174) Capture Register 0 */ - __I uint32_t RESERVED1[7]; - __I uint32_t INTS; /*!< (@ 0x400201A0) Interrupt Status */ - __IO uint32_t INTE; /*!< (@ 0x400201A4) Interrupt Enable Control */ - __IO uint32_t SRS; /*!< (@ 0x400201A8) Service Request Selector */ - __O uint32_t SWS; /*!< (@ 0x400201AC) Interrupt Status Set */ - __O uint32_t SWR; /*!< (@ 0x400201B0) Interrupt Status Clear */ - __IO uint32_t STC; /*!< (@ 0x400201B4) Shadow transfer control */ -} CCU8_CC8_TypeDef; - -/* ================================================================================ */ -/* ================ HRPWM0 ================ */ -/* ================================================================================ */ - -/** - * @brief High Resolution PWM Unit (HRPWM0) - */ - -typedef struct { /*!< (@ 0x40020900) HRPWM0 Structure */ - __IO uint32_t HRBSC; /*!< (@ 0x40020900) Bias and suspend configuration */ - __I uint32_t RESERVED; - __I uint32_t MIDR; /*!< (@ 0x40020908) Module identification register */ - __I uint32_t RESERVED1[2]; - __IO uint32_t GLBANA; /*!< (@ 0x40020914) Global Analog Configuration */ - __I uint32_t RESERVED2[2]; - __IO uint32_t CSGCFG; /*!< (@ 0x40020920) Global CSG configuration */ - __O uint32_t CSGSETG; /*!< (@ 0x40020924) Global CSG run bit set */ - __O uint32_t CSGCLRG; /*!< (@ 0x40020928) Global CSG run bit clear */ - __I uint32_t CSGSTATG; /*!< (@ 0x4002092C) Global CSG run bit status */ - __O uint32_t CSGFCG; /*!< (@ 0x40020930) Global CSG slope/prescaler control */ - __I uint32_t CSGFSG; /*!< (@ 0x40020934) Global CSG slope/prescaler status */ - __O uint32_t CSGTRG; /*!< (@ 0x40020938) Global CSG shadow/switch trigger */ - __O uint32_t CSGTRC; /*!< (@ 0x4002093C) Global CSG shadow trigger clear */ - __I uint32_t CSGTRSG; /*!< (@ 0x40020940) Global CSG shadow/switch status */ - __I uint32_t RESERVED3[7]; - __IO uint32_t HRCCFG; /*!< (@ 0x40020960) Global HRC configuration */ - __O uint32_t HRCSTRG; /*!< (@ 0x40020964) Global HRC shadow trigger set */ - __O uint32_t HRCCTRG; /*!< (@ 0x40020968) Global HRC shadow trigger clear */ - __I uint32_t HRCSTSG; /*!< (@ 0x4002096C) Global HRC shadow transfer status */ - __I uint32_t HRGHRS; /*!< (@ 0x40020970) High Resolution Generation Status */ -} HRPWM0_Type; - -/* ================================================================================ */ -/* ================ HRPWM0_CSG [HRPWM0_CSG0] ================ */ -/* ================================================================================ */ - -/** - * @brief High Resolution PWM Unit (HRPWM0_CSG) - */ - -typedef struct { /*!< (@ 0x40020A00) HRPWM0_CSG Structure */ - __IO uint32_t DCI; /*!< (@ 0x40020A00) External input selection */ - __IO uint32_t IES; /*!< (@ 0x40020A04) External input selection */ - __IO uint32_t SC; /*!< (@ 0x40020A08) Slope generation control */ - __I uint32_t PC; /*!< (@ 0x40020A0C) Pulse swallow configuration */ - __I uint32_t DSV1; /*!< (@ 0x40020A10) DAC reference value 1 */ - __IO uint32_t DSV2; /*!< (@ 0x40020A14) DAC reference value 1 */ - __IO uint32_t SDSV1; /*!< (@ 0x40020A18) Shadow reference value 1 */ - __IO uint32_t SPC; /*!< (@ 0x40020A1C) Shadow Pulse swallow value */ - __IO uint32_t CC; /*!< (@ 0x40020A20) Comparator configuration */ - __IO uint32_t PLC; /*!< (@ 0x40020A24) Passive level configuration */ - __IO uint32_t BLV; /*!< (@ 0x40020A28) Comparator blanking value */ - __IO uint32_t SRE; /*!< (@ 0x40020A2C) Service request enable */ - __IO uint32_t SRS; /*!< (@ 0x40020A30) Service request line selector */ - __O uint32_t SWS; /*!< (@ 0x40020A34) Service request SW set */ - __O uint32_t SWC; /*!< (@ 0x40020A38) Service request SW clear */ - __I uint32_t ISTAT; /*!< (@ 0x40020A3C) Service request status */ -} HRPWM0_CSG_Type; - -/* ================================================================================ */ -/* ================ HRPWM0_HRC [HRPWM0_HRC0] ================ */ -/* ================================================================================ */ - -/** - * @brief High Resolution PWM Unit (HRPWM0_HRC) - */ - -typedef struct { /*!< (@ 0x40021300) HRPWM0_HRC Structure */ - __IO uint32_t GC; /*!< (@ 0x40021300) HRC mode configuration */ - __IO uint32_t PL; /*!< (@ 0x40021304) HRC output passive level */ - __IO uint32_t GSEL; /*!< (@ 0x40021308) HRC global control selection */ - __IO uint32_t TSEL; /*!< (@ 0x4002130C) HRC timer selection */ - __I uint32_t SC; /*!< (@ 0x40021310) HRC current source for shadow */ - __I uint32_t DCR; /*!< (@ 0x40021314) HRC dead time rising value */ - __I uint32_t DCF; /*!< (@ 0x40021318) HRC dead time falling value */ - __I uint32_t CR1; /*!< (@ 0x4002131C) HRC rising edge value */ - __I uint32_t CR2; /*!< (@ 0x40021320) HRC falling edge value */ - __IO uint32_t SSC; /*!< (@ 0x40021324) HRC next source for shadow */ - __IO uint32_t SDCR; /*!< (@ 0x40021328) HRC shadow dead time rising */ - __IO uint32_t SDCF; /*!< (@ 0x4002132C) HRC shadow dead time falling */ - __IO uint32_t SCR1; /*!< (@ 0x40021330) HRC shadow rising edge value */ - __IO uint32_t SCR2; /*!< (@ 0x40021334) HRC shadow falling edge value */ -} HRPWM0_HRC_Type; - -/* ================================================================================ */ -/* ================ POSIF [POSIF0] ================ */ -/* ================================================================================ */ - -/** - * @brief Position Interface 0 (POSIF) - */ - -typedef struct { /*!< (@ 0x40028000) POSIF Structure */ - __IO uint32_t PCONF; /*!< (@ 0x40028000) Service Request Processing configuration */ - __IO uint32_t PSUS; /*!< (@ 0x40028004) Service Request Processing Suspend Config */ - __O uint32_t PRUNS; /*!< (@ 0x40028008) Service Request Processing Run Bit Set */ - __O uint32_t PRUNC; /*!< (@ 0x4002800C) Service Request Processing Run Bit Clear */ - __I uint32_t PRUN; /*!< (@ 0x40028010) Service Request Processing Run Bit Status */ - __I uint32_t RESERVED[3]; - __I uint32_t MIDR; /*!< (@ 0x40028020) Module Identification register */ - __I uint32_t RESERVED1[3]; - __I uint32_t HALP; /*!< (@ 0x40028030) Hall Sensor Patterns */ - __IO uint32_t HALPS; /*!< (@ 0x40028034) Hall Sensor Shadow Patterns */ - __I uint32_t RESERVED2[2]; - __I uint32_t MCM; /*!< (@ 0x40028040) Multi-Channel Pattern */ - __IO uint32_t MCSM; /*!< (@ 0x40028044) Multi-Channel Shadow Pattern */ - __O uint32_t MCMS; /*!< (@ 0x40028048) Multi-Channel Pattern Control set */ - __O uint32_t MCMC; /*!< (@ 0x4002804C) Multi-Channel Pattern Control clear */ - __I uint32_t MCMF; /*!< (@ 0x40028050) Multi-Channel Pattern Control flag */ - __I uint32_t RESERVED3[3]; - __IO uint32_t QDC; /*!< (@ 0x40028060) Quadrature Decoder Control */ - __I uint32_t RESERVED4[3]; - __I uint32_t PFLG; /*!< (@ 0x40028070) Service Request Processing Interrupt Flags */ - __IO uint32_t PFLGE; /*!< (@ 0x40028074) Service Request Processing Interrupt Enable */ - __O uint32_t SPFLG; /*!< (@ 0x40028078) Service Request Processing Interrupt Set */ - __O uint32_t RPFLG; /*!< (@ 0x4002807C) Service Request Processing Interrupt Clear */ - __I uint32_t RESERVED5[32]; - __I uint32_t PDBG; /*!< (@ 0x40028100) POSIF Debug register */ -} POSIF_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ PORT0 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 0 (PORT0) - */ - -typedef struct { /*!< (@ 0x48028000) PORT0 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028000) Port 0 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028004) Port 0 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028010) Port 0 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028014) Port 0 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028018) Port 0 Input/Output Control Register 8 */ - __I uint32_t RESERVED1[2]; - __I uint32_t IN; /*!< (@ 0x48028024) Port 0 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028040) Port 0 Pad Driver Mode 0 Register */ - __IO uint32_t PDR1; /*!< (@ 0x48028044) Port 0 Pad Driver Mode 1 Register */ - __I uint32_t RESERVED3[6]; - __I uint32_t PDISC; /*!< (@ 0x48028060) Port 0 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028070) Port 0 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028074) Port 0 Pin Hardware Select Register */ -} PORT0_Type; - -/* ================================================================================ */ -/* ================ PORT1 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 1 (PORT1) - */ - -typedef struct { /*!< (@ 0x48028100) PORT1 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028100) Port 1 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028104) Port 1 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028110) Port 1 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028114) Port 1 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028118) Port 1 Input/Output Control Register 8 */ - __IO uint32_t IOCR12; /*!< (@ 0x4802811C) Port 1 Input/Output Control Register 12 */ - __I uint32_t RESERVED1; - __I uint32_t IN; /*!< (@ 0x48028124) Port 1 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028140) Port 1 Pad Driver Mode 0 Register */ - __IO uint32_t PDR1; /*!< (@ 0x48028144) Port 1 Pad Driver Mode 1 Register */ - __I uint32_t RESERVED3[6]; - __I uint32_t PDISC; /*!< (@ 0x48028160) Port 1 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028170) Port 1 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028174) Port 1 Pin Hardware Select Register */ -} PORT1_Type; - -/* ================================================================================ */ -/* ================ PORT2 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 2 (PORT2) - */ - -typedef struct { /*!< (@ 0x48028200) PORT2 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028200) Port 2 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028204) Port 2 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028210) Port 2 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028214) Port 2 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028218) Port 2 Input/Output Control Register 8 */ - __IO uint32_t IOCR12; /*!< (@ 0x4802821C) Port 2 Input/Output Control Register 12 */ - __I uint32_t RESERVED1; - __I uint32_t IN; /*!< (@ 0x48028224) Port 2 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028240) Port 2 Pad Driver Mode 0 Register */ - __IO uint32_t PDR1; /*!< (@ 0x48028244) Port 2 Pad Driver Mode 1 Register */ - __I uint32_t RESERVED3[6]; - __I uint32_t PDISC; /*!< (@ 0x48028260) Port 2 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028270) Port 2 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028274) Port 2 Pin Hardware Select Register */ -} PORT2_Type; - -/* ================================================================================ */ -/* ================ PORT3 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 3 (PORT3) - */ - -typedef struct { /*!< (@ 0x48028300) PORT3 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028300) Port 3 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028304) Port 3 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028310) Port 3 Input/Output Control Register 0 */ - __I uint32_t RESERVED1[4]; - __I uint32_t IN; /*!< (@ 0x48028324) Port 3 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028340) Port 3 Pad Driver Mode 0 Register */ - __I uint32_t RESERVED3[7]; - __I uint32_t PDISC; /*!< (@ 0x48028360) Port 3 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028370) Port 3 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028374) Port 3 Pin Hardware Select Register */ -} PORT3_Type; - -/* ================================================================================ */ -/* ================ PORT14 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 14 (PORT14) - */ - -typedef struct { /*!< (@ 0x48028E00) PORT14 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028E00) Port 14 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028E04) Port 14 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028E10) Port 14 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028E14) Port 14 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028E18) Port 14 Input/Output Control Register 8 */ - __IO uint32_t IOCR12; /*!< (@ 0x48028E1C) Port 14 Input/Output Control Register 12 */ - __I uint32_t RESERVED1; - __I uint32_t IN; /*!< (@ 0x48028E24) Port 14 Input Register */ - __I uint32_t RESERVED2[14]; - __IO uint32_t PDISC; /*!< (@ 0x48028E60) Port 14 Pin Function Decision Control Register */ - __I uint32_t RESERVED3[3]; - __IO uint32_t PPS; /*!< (@ 0x48028E70) Port 14 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028E74) Port 14 Pin Hardware Select Register */ -} PORT14_Type; - -/* -------------------- End of section using anonymous unions ------------------- */ -#if defined(__CC_ARM) - #pragma pop -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang diagnostic pop -#elif defined(__ICCARM__) - /* leave anonymous unions enabled */ -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) - /* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning restore -#else - #warning Not supported compiler type -#endif - -/* ================================================================================ */ -/* ================ struct 'PPB' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PPB_ACTLR --------------------------------- */ -#define PPB_ACTLR_DISMCYCINT_Pos \ - (0UL) /*!< PPB ACTLR: DISMCYCINT (Bit 0) */ -#define PPB_ACTLR_DISMCYCINT_Msk \ - (0x1UL) /*!< PPB ACTLR: DISMCYCINT (Bitfield-Mask: 0x01) */ -#define PPB_ACTLR_DISDEFWBUF_Pos \ - (1UL) /*!< PPB ACTLR: DISDEFWBUF (Bit 1) */ -#define PPB_ACTLR_DISDEFWBUF_Msk \ - (0x2UL) /*!< PPB ACTLR: DISDEFWBUF (Bitfield-Mask: 0x01) */ -#define PPB_ACTLR_DISFOLD_Pos \ - (2UL) /*!< PPB ACTLR: DISFOLD (Bit 2) */ -#define PPB_ACTLR_DISFOLD_Msk \ - (0x4UL) /*!< PPB ACTLR: DISFOLD (Bitfield-Mask: 0x01) */ -#define PPB_ACTLR_DISFPCA_Pos \ - (8UL) /*!< PPB ACTLR: DISFPCA (Bit 8) */ -#define PPB_ACTLR_DISFPCA_Msk \ - (0x100UL) /*!< PPB ACTLR: DISFPCA (Bitfield-Mask: 0x01) */ -#define PPB_ACTLR_DISOOFP_Pos \ - (9UL) /*!< PPB ACTLR: DISOOFP (Bit 9) */ -#define PPB_ACTLR_DISOOFP_Msk \ - (0x200UL) /*!< PPB ACTLR: DISOOFP (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PPB_SYST_CSR -------------------------------- */ -#define PPB_SYST_CSR_ENABLE_Pos \ - (0UL) /*!< PPB SYST_CSR: ENABLE (Bit 0) */ -#define PPB_SYST_CSR_ENABLE_Msk \ - (0x1UL) /*!< PPB SYST_CSR: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_SYST_CSR_TICKINT_Pos \ - (1UL) /*!< PPB SYST_CSR: TICKINT (Bit 1) */ -#define PPB_SYST_CSR_TICKINT_Msk \ - (0x2UL) /*!< PPB SYST_CSR: TICKINT (Bitfield-Mask: 0x01) */ -#define PPB_SYST_CSR_CLKSOURCE_Pos \ - (2UL) /*!< PPB SYST_CSR: CLKSOURCE (Bit 2) */ -#define PPB_SYST_CSR_CLKSOURCE_Msk \ - (0x4UL) /*!< PPB SYST_CSR: CLKSOURCE (Bitfield-Mask: 0x01) */ -#define PPB_SYST_CSR_COUNTFLAG_Pos \ - (16UL) /*!< PPB SYST_CSR: COUNTFLAG (Bit 16) */ -#define PPB_SYST_CSR_COUNTFLAG_Msk \ - (0x10000UL) /*!< PPB SYST_CSR: COUNTFLAG (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PPB_SYST_RVR -------------------------------- */ -#define PPB_SYST_RVR_RELOAD_Pos \ - (0UL) /*!< PPB SYST_RVR: RELOAD (Bit 0) */ -#define PPB_SYST_RVR_RELOAD_Msk \ - (0xffffffUL) /*!< PPB SYST_RVR: RELOAD (Bitfield-Mask: 0xffffff) */ - -/* -------------------------------- PPB_SYST_CVR -------------------------------- */ -#define PPB_SYST_CVR_CURRENT_Pos \ - (0UL) /*!< PPB SYST_CVR: CURRENT (Bit 0) */ -#define PPB_SYST_CVR_CURRENT_Msk \ - (0xffffffUL) /*!< PPB SYST_CVR: CURRENT (Bitfield-Mask: 0xffffff) */ - -/* ------------------------------- PPB_SYST_CALIB ------------------------------- */ -#define PPB_SYST_CALIB_TENMS_Pos \ - (0UL) /*!< PPB SYST_CALIB: TENMS (Bit 0) */ -#define PPB_SYST_CALIB_TENMS_Msk \ - (0xffffffUL) /*!< PPB SYST_CALIB: TENMS (Bitfield-Mask: 0xffffff) */ -#define PPB_SYST_CALIB_SKEW_Pos \ - (30UL) /*!< PPB SYST_CALIB: SKEW (Bit 30) */ -#define PPB_SYST_CALIB_SKEW_Msk \ - (0x40000000UL) /*!< PPB SYST_CALIB: SKEW (Bitfield-Mask: 0x01) */ -#define PPB_SYST_CALIB_NOREF_Pos \ - (31UL) /*!< PPB SYST_CALIB: NOREF (Bit 31) */ -#define PPB_SYST_CALIB_NOREF_Msk \ - (0x80000000UL) /*!< PPB SYST_CALIB: NOREF (Bitfield-Mask: 0x01) */ - -/* ------------------------------- PPB_NVIC_ISER0 ------------------------------- */ -#define PPB_NVIC_ISER0_SETENA_Pos \ - (0UL) /*!< PPB NVIC_ISER0: SETENA (Bit 0) */ -#define PPB_NVIC_ISER0_SETENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISER0: SETENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISER1 ------------------------------- */ -#define PPB_NVIC_ISER1_SETENA_Pos \ - (0UL) /*!< PPB NVIC_ISER1: SETENA (Bit 0) */ -#define PPB_NVIC_ISER1_SETENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISER1: SETENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISER2 ------------------------------- */ -#define PPB_NVIC_ISER2_SETENA_Pos \ - (0UL) /*!< PPB NVIC_ISER2: SETENA (Bit 0) */ -#define PPB_NVIC_ISER2_SETENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISER2: SETENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISER3 ------------------------------- */ -#define PPB_NVIC_ISER3_SETENA_Pos \ - (0UL) /*!< PPB NVIC_ISER3: SETENA (Bit 0) */ -#define PPB_NVIC_ISER3_SETENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISER3: SETENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICER0 ------------------------------- */ -#define PPB_NVIC_ICER0_CLRENA_Pos \ - (0UL) /*!< PPB NVIC_ICER0: CLRENA (Bit 0) */ -#define PPB_NVIC_ICER0_CLRENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICER0: CLRENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICER1 ------------------------------- */ -#define PPB_NVIC_ICER1_CLRENA_Pos \ - (0UL) /*!< PPB NVIC_ICER1: CLRENA (Bit 0) */ -#define PPB_NVIC_ICER1_CLRENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICER1: CLRENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICER2 ------------------------------- */ -#define PPB_NVIC_ICER2_CLRENA_Pos \ - (0UL) /*!< PPB NVIC_ICER2: CLRENA (Bit 0) */ -#define PPB_NVIC_ICER2_CLRENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICER2: CLRENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICER3 ------------------------------- */ -#define PPB_NVIC_ICER3_CLRENA_Pos \ - (0UL) /*!< PPB NVIC_ICER3: CLRENA (Bit 0) */ -#define PPB_NVIC_ICER3_CLRENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICER3: CLRENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISPR0 ------------------------------- */ -#define PPB_NVIC_ISPR0_SETPEND_Pos \ - (0UL) /*!< PPB NVIC_ISPR0: SETPEND (Bit 0) */ -#define PPB_NVIC_ISPR0_SETPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISPR0: SETPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISPR1 ------------------------------- */ -#define PPB_NVIC_ISPR1_SETPEND_Pos \ - (0UL) /*!< PPB NVIC_ISPR1: SETPEND (Bit 0) */ -#define PPB_NVIC_ISPR1_SETPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISPR1: SETPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISPR2 ------------------------------- */ -#define PPB_NVIC_ISPR2_SETPEND_Pos \ - (0UL) /*!< PPB NVIC_ISPR2: SETPEND (Bit 0) */ -#define PPB_NVIC_ISPR2_SETPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISPR2: SETPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISPR3 ------------------------------- */ -#define PPB_NVIC_ISPR3_SETPEND_Pos \ - (0UL) /*!< PPB NVIC_ISPR3: SETPEND (Bit 0) */ -#define PPB_NVIC_ISPR3_SETPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISPR3: SETPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICPR0 ------------------------------- */ -#define PPB_NVIC_ICPR0_CLRPEND_Pos \ - (0UL) /*!< PPB NVIC_ICPR0: CLRPEND (Bit 0) */ -#define PPB_NVIC_ICPR0_CLRPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICPR0: CLRPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICPR1 ------------------------------- */ -#define PPB_NVIC_ICPR1_CLRPEND_Pos \ - (0UL) /*!< PPB NVIC_ICPR1: CLRPEND (Bit 0) */ -#define PPB_NVIC_ICPR1_CLRPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICPR1: CLRPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICPR2 ------------------------------- */ -#define PPB_NVIC_ICPR2_CLRPEND_Pos \ - (0UL) /*!< PPB NVIC_ICPR2: CLRPEND (Bit 0) */ -#define PPB_NVIC_ICPR2_CLRPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICPR2: CLRPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICPR3 ------------------------------- */ -#define PPB_NVIC_ICPR3_CLRPEND_Pos \ - (0UL) /*!< PPB NVIC_ICPR3: CLRPEND (Bit 0) */ -#define PPB_NVIC_ICPR3_CLRPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICPR3: CLRPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_IABR0 ------------------------------- */ -#define PPB_NVIC_IABR0_ACTIVE_Pos \ - (0UL) /*!< PPB NVIC_IABR0: ACTIVE (Bit 0) */ -#define PPB_NVIC_IABR0_ACTIVE_Msk \ - (0xffffffffUL) /*!< PPB NVIC_IABR0: ACTIVE (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_IABR1 ------------------------------- */ -#define PPB_NVIC_IABR1_ACTIVE_Pos \ - (0UL) /*!< PPB NVIC_IABR1: ACTIVE (Bit 0) */ -#define PPB_NVIC_IABR1_ACTIVE_Msk \ - (0xffffffffUL) /*!< PPB NVIC_IABR1: ACTIVE (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_IABR2 ------------------------------- */ -#define PPB_NVIC_IABR2_ACTIVE_Pos \ - (0UL) /*!< PPB NVIC_IABR2: ACTIVE (Bit 0) */ -#define PPB_NVIC_IABR2_ACTIVE_Msk \ - (0xffffffffUL) /*!< PPB NVIC_IABR2: ACTIVE (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_IABR3 ------------------------------- */ -#define PPB_NVIC_IABR3_ACTIVE_Pos \ - (0UL) /*!< PPB NVIC_IABR3: ACTIVE (Bit 0) */ -#define PPB_NVIC_IABR3_ACTIVE_Msk \ - (0xffffffffUL) /*!< PPB NVIC_IABR3: ACTIVE (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------------- PPB_NVIC_IPR0 ------------------------------- */ -#define PPB_NVIC_IPR0_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR0: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR0_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR0: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR0_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR0: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR0_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR0: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR0_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR0: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR0_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR0: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR0_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR0: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR0_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR0: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR1 ------------------------------- */ -#define PPB_NVIC_IPR1_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR1: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR1_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR1: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR1_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR1: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR1_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR1: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR1_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR1: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR1_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR1: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR1_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR1: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR1_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR1: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR2 ------------------------------- */ -#define PPB_NVIC_IPR2_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR2: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR2_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR2: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR2_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR2: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR2_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR2: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR2_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR2: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR2_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR2: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR2_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR2: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR2_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR2: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR3 ------------------------------- */ -#define PPB_NVIC_IPR3_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR3: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR3_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR3: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR3_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR3: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR3_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR3: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR3_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR3: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR3_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR3: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR3_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR3: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR3_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR3: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR4 ------------------------------- */ -#define PPB_NVIC_IPR4_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR4: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR4_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR4: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR4_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR4: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR4_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR4: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR4_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR4: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR4_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR4: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR4_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR4: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR4_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR4: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR5 ------------------------------- */ -#define PPB_NVIC_IPR5_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR5: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR5_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR5: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR5_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR5: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR5_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR5: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR5_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR5: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR5_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR5: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR5_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR5: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR5_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR5: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR6 ------------------------------- */ -#define PPB_NVIC_IPR6_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR6: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR6_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR6: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR6_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR6: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR6_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR6: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR6_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR6: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR6_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR6: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR6_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR6: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR6_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR6: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR7 ------------------------------- */ -#define PPB_NVIC_IPR7_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR7: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR7_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR7: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR7_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR7: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR7_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR7: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR7_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR7: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR7_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR7: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR7_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR7: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR7_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR7: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR8 ------------------------------- */ -#define PPB_NVIC_IPR8_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR8: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR8_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR8: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR8_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR8: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR8_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR8: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR8_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR8: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR8_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR8: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR8_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR8: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR8_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR8: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR9 ------------------------------- */ -#define PPB_NVIC_IPR9_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR9: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR9_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR9: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR9_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR9: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR9_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR9: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR9_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR9: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR9_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR9: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR9_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR9: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR9_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR9: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR10 ------------------------------- */ -#define PPB_NVIC_IPR10_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR10: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR10_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR10: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR10_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR10: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR10_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR10: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR10_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR10: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR10_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR10: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR10_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR10: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR10_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR10: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR11 ------------------------------- */ -#define PPB_NVIC_IPR11_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR11: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR11_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR11: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR11_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR11: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR11_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR11: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR11_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR11: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR11_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR11: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR11_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR11: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR11_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR11: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR12 ------------------------------- */ -#define PPB_NVIC_IPR12_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR12: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR12_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR12: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR12_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR12: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR12_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR12: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR12_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR12: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR12_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR12: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR12_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR12: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR12_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR12: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR13 ------------------------------- */ -#define PPB_NVIC_IPR13_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR13: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR13_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR13: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR13_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR13: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR13_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR13: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR13_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR13: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR13_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR13: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR13_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR13: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR13_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR13: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR14 ------------------------------- */ -#define PPB_NVIC_IPR14_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR14: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR14_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR14: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR14_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR14: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR14_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR14: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR14_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR14: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR14_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR14: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR14_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR14: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR14_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR14: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR15 ------------------------------- */ -#define PPB_NVIC_IPR15_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR15: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR15_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR15: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR15_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR15: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR15_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR15: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR15_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR15: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR15_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR15: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR15_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR15: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR15_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR15: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR16 ------------------------------- */ -#define PPB_NVIC_IPR16_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR16: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR16_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR16: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR16_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR16: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR16_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR16: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR16_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR16: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR16_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR16: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR16_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR16: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR16_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR16: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR17 ------------------------------- */ -#define PPB_NVIC_IPR17_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR17: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR17_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR17: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR17_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR17: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR17_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR17: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR17_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR17: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR17_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR17: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR17_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR17: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR17_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR17: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR18 ------------------------------- */ -#define PPB_NVIC_IPR18_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR18: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR18_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR18: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR18_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR18: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR18_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR18: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR18_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR18: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR18_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR18: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR18_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR18: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR18_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR18: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR19 ------------------------------- */ -#define PPB_NVIC_IPR19_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR19: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR19_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR19: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR19_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR19: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR19_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR19: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR19_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR19: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR19_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR19: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR19_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR19: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR19_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR19: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR20 ------------------------------- */ -#define PPB_NVIC_IPR20_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR20: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR20_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR20: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR20_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR20: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR20_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR20: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR20_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR20: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR20_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR20: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR20_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR20: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR20_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR20: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR21 ------------------------------- */ -#define PPB_NVIC_IPR21_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR21: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR21_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR21: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR21_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR21: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR21_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR21: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR21_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR21: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR21_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR21: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR21_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR21: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR21_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR21: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR22 ------------------------------- */ -#define PPB_NVIC_IPR22_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR22: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR22_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR22: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR22_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR22: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR22_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR22: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR22_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR22: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR22_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR22: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR22_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR22: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR22_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR22: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR23 ------------------------------- */ -#define PPB_NVIC_IPR23_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR23: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR23_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR23: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR23_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR23: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR23_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR23: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR23_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR23: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR23_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR23: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR23_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR23: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR23_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR23: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR24 ------------------------------- */ -#define PPB_NVIC_IPR24_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR24: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR24_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR24: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR24_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR24: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR24_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR24: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR24_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR24: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR24_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR24: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR24_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR24: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR24_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR24: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR25 ------------------------------- */ -#define PPB_NVIC_IPR25_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR25: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR25_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR25: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR25_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR25: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR25_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR25: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR25_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR25: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR25_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR25: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR25_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR25: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR25_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR25: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR26 ------------------------------- */ -#define PPB_NVIC_IPR26_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR26: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR26_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR26: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR26_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR26: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR26_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR26: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR26_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR26: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR26_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR26: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR26_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR26: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR26_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR26: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR27 ------------------------------- */ -#define PPB_NVIC_IPR27_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR27: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR27_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR27: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR27_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR27: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR27_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR27: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR27_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR27: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR27_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR27: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR27_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR27: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR27_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR27: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_CPUID --------------------------------- */ -#define PPB_CPUID_Revision_Pos \ - (0UL) /*!< PPB CPUID: Revision (Bit 0) */ -#define PPB_CPUID_Revision_Msk \ - (0xfUL) /*!< PPB CPUID: Revision (Bitfield-Mask: 0x0f) */ -#define PPB_CPUID_PartNo_Pos \ - (4UL) /*!< PPB CPUID: PartNo (Bit 4) */ -#define PPB_CPUID_PartNo_Msk \ - (0xfff0UL) /*!< PPB CPUID: PartNo (Bitfield-Mask: 0xfff) */ -#define PPB_CPUID_Constant_Pos \ - (16UL) /*!< PPB CPUID: Constant (Bit 16) */ -#define PPB_CPUID_Constant_Msk \ - (0xf0000UL) /*!< PPB CPUID: Constant (Bitfield-Mask: 0x0f) */ -#define PPB_CPUID_Variant_Pos \ - (20UL) /*!< PPB CPUID: Variant (Bit 20) */ -#define PPB_CPUID_Variant_Msk \ - (0xf00000UL) /*!< PPB CPUID: Variant (Bitfield-Mask: 0x0f) */ -#define PPB_CPUID_Implementer_Pos \ - (24UL) /*!< PPB CPUID: Implementer (Bit 24) */ -#define PPB_CPUID_Implementer_Msk \ - (0xff000000UL) /*!< PPB CPUID: Implementer (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_ICSR ---------------------------------- */ -#define PPB_ICSR_VECTACTIVE_Pos \ - (0UL) /*!< PPB ICSR: VECTACTIVE (Bit 0) */ -#define PPB_ICSR_VECTACTIVE_Msk \ - (0x1ffUL) /*!< PPB ICSR: VECTACTIVE (Bitfield-Mask: 0x1ff) */ -#define PPB_ICSR_RETTOBASE_Pos \ - (11UL) /*!< PPB ICSR: RETTOBASE (Bit 11) */ -#define PPB_ICSR_RETTOBASE_Msk \ - (0x800UL) /*!< PPB ICSR: RETTOBASE (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_VECTPENDING_Pos \ - (12UL) /*!< PPB ICSR: VECTPENDING (Bit 12) */ -#define PPB_ICSR_VECTPENDING_Msk \ - (0x3f000UL) /*!< PPB ICSR: VECTPENDING (Bitfield-Mask: 0x3f) */ -#define PPB_ICSR_ISRPENDING_Pos \ - (22UL) /*!< PPB ICSR: ISRPENDING (Bit 22) */ -#define PPB_ICSR_ISRPENDING_Msk \ - (0x400000UL) /*!< PPB ICSR: ISRPENDING (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_PENDSTCLR_Pos \ - (25UL) /*!< PPB ICSR: PENDSTCLR (Bit 25) */ -#define PPB_ICSR_PENDSTCLR_Msk \ - (0x2000000UL) /*!< PPB ICSR: PENDSTCLR (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_PENDSTSET_Pos \ - (26UL) /*!< PPB ICSR: PENDSTSET (Bit 26) */ -#define PPB_ICSR_PENDSTSET_Msk \ - (0x4000000UL) /*!< PPB ICSR: PENDSTSET (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_PENDSVCLR_Pos \ - (27UL) /*!< PPB ICSR: PENDSVCLR (Bit 27) */ -#define PPB_ICSR_PENDSVCLR_Msk \ - (0x8000000UL) /*!< PPB ICSR: PENDSVCLR (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_PENDSVSET_Pos \ - (28UL) /*!< PPB ICSR: PENDSVSET (Bit 28) */ -#define PPB_ICSR_PENDSVSET_Msk \ - (0x10000000UL) /*!< PPB ICSR: PENDSVSET (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_NMIPENDSET_Pos \ - (31UL) /*!< PPB ICSR: NMIPENDSET (Bit 31) */ -#define PPB_ICSR_NMIPENDSET_Msk \ - (0x80000000UL) /*!< PPB ICSR: NMIPENDSET (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_VTOR ---------------------------------- */ -#define PPB_VTOR_TBLOFF_Pos \ - (10UL) /*!< PPB VTOR: TBLOFF (Bit 10) */ -#define PPB_VTOR_TBLOFF_Msk \ - (0xfffffc00UL) /*!< PPB VTOR: TBLOFF (Bitfield-Mask: 0x3fffff) */ - -/* ---------------------------------- PPB_AIRCR --------------------------------- */ -#define PPB_AIRCR_VECTRESET_Pos \ - (0UL) /*!< PPB AIRCR: VECTRESET (Bit 0) */ -#define PPB_AIRCR_VECTRESET_Msk \ - (0x1UL) /*!< PPB AIRCR: VECTRESET (Bitfield-Mask: 0x01) */ -#define PPB_AIRCR_VECTCLRACTIVE_Pos \ - (1UL) /*!< PPB AIRCR: VECTCLRACTIVE (Bit 1) */ -#define PPB_AIRCR_VECTCLRACTIVE_Msk \ - (0x2UL) /*!< PPB AIRCR: VECTCLRACTIVE (Bitfield-Mask: 0x01) */ -#define PPB_AIRCR_SYSRESETREQ_Pos \ - (2UL) /*!< PPB AIRCR: SYSRESETREQ (Bit 2) */ -#define PPB_AIRCR_SYSRESETREQ_Msk \ - (0x4UL) /*!< PPB AIRCR: SYSRESETREQ (Bitfield-Mask: 0x01) */ -#define PPB_AIRCR_PRIGROUP_Pos \ - (8UL) /*!< PPB AIRCR: PRIGROUP (Bit 8) */ -#define PPB_AIRCR_PRIGROUP_Msk \ - (0x700UL) /*!< PPB AIRCR: PRIGROUP (Bitfield-Mask: 0x07) */ -#define PPB_AIRCR_ENDIANNESS_Pos \ - (15UL) /*!< PPB AIRCR: ENDIANNESS (Bit 15) */ -#define PPB_AIRCR_ENDIANNESS_Msk \ - (0x8000UL) /*!< PPB AIRCR: ENDIANNESS (Bitfield-Mask: 0x01) */ -#define PPB_AIRCR_VECTKEY_Pos \ - (16UL) /*!< PPB AIRCR: VECTKEY (Bit 16) */ -#define PPB_AIRCR_VECTKEY_Msk \ - (0xffff0000UL) /*!< PPB AIRCR: VECTKEY (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- PPB_SCR ---------------------------------- */ -#define PPB_SCR_SLEEPONEXIT_Pos \ - (1UL) /*!< PPB SCR: SLEEPONEXIT (Bit 1) */ -#define PPB_SCR_SLEEPONEXIT_Msk \ - (0x2UL) /*!< PPB SCR: SLEEPONEXIT (Bitfield-Mask: 0x01) */ -#define PPB_SCR_SLEEPDEEP_Pos \ - (2UL) /*!< PPB SCR: SLEEPDEEP (Bit 2) */ -#define PPB_SCR_SLEEPDEEP_Msk \ - (0x4UL) /*!< PPB SCR: SLEEPDEEP (Bitfield-Mask: 0x01) */ -#define PPB_SCR_SEVONPEND_Pos \ - (4UL) /*!< PPB SCR: SEVONPEND (Bit 4) */ -#define PPB_SCR_SEVONPEND_Msk \ - (0x10UL) /*!< PPB SCR: SEVONPEND (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- PPB_CCR ---------------------------------- */ -#define PPB_CCR_NONBASETHRDENA_Pos \ - (0UL) /*!< PPB CCR: NONBASETHRDENA (Bit 0) */ -#define PPB_CCR_NONBASETHRDENA_Msk \ - (0x1UL) /*!< PPB CCR: NONBASETHRDENA (Bitfield-Mask: 0x01) */ -#define PPB_CCR_USERSETMPEND_Pos \ - (1UL) /*!< PPB CCR: USERSETMPEND (Bit 1) */ -#define PPB_CCR_USERSETMPEND_Msk \ - (0x2UL) /*!< PPB CCR: USERSETMPEND (Bitfield-Mask: 0x01) */ -#define PPB_CCR_UNALIGN_TRP_Pos \ - (3UL) /*!< PPB CCR: UNALIGN_TRP (Bit 3) */ -#define PPB_CCR_UNALIGN_TRP_Msk \ - (0x8UL) /*!< PPB CCR: UNALIGN_TRP (Bitfield-Mask: 0x01) */ -#define PPB_CCR_DIV_0_TRP_Pos \ - (4UL) /*!< PPB CCR: DIV_0_TRP (Bit 4) */ -#define PPB_CCR_DIV_0_TRP_Msk \ - (0x10UL) /*!< PPB CCR: DIV_0_TRP (Bitfield-Mask: 0x01) */ -#define PPB_CCR_BFHFNMIGN_Pos \ - (8UL) /*!< PPB CCR: BFHFNMIGN (Bit 8) */ -#define PPB_CCR_BFHFNMIGN_Msk \ - (0x100UL) /*!< PPB CCR: BFHFNMIGN (Bitfield-Mask: 0x01) */ -#define PPB_CCR_STKALIGN_Pos \ - (9UL) /*!< PPB CCR: STKALIGN (Bit 9) */ -#define PPB_CCR_STKALIGN_Msk \ - (0x200UL) /*!< PPB CCR: STKALIGN (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_SHPR1 --------------------------------- */ -#define PPB_SHPR1_PRI_4_Pos \ - (0UL) /*!< PPB SHPR1: PRI_4 (Bit 0) */ -#define PPB_SHPR1_PRI_4_Msk \ - (0xffUL) /*!< PPB SHPR1: PRI_4 (Bitfield-Mask: 0xff) */ -#define PPB_SHPR1_PRI_5_Pos \ - (8UL) /*!< PPB SHPR1: PRI_5 (Bit 8) */ -#define PPB_SHPR1_PRI_5_Msk \ - (0xff00UL) /*!< PPB SHPR1: PRI_5 (Bitfield-Mask: 0xff) */ -#define PPB_SHPR1_PRI_6_Pos \ - (16UL) /*!< PPB SHPR1: PRI_6 (Bit 16) */ -#define PPB_SHPR1_PRI_6_Msk \ - (0xff0000UL) /*!< PPB SHPR1: PRI_6 (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_SHPR2 --------------------------------- */ -#define PPB_SHPR2_PRI_11_Pos \ - (24UL) /*!< PPB SHPR2: PRI_11 (Bit 24) */ -#define PPB_SHPR2_PRI_11_Msk \ - (0xff000000UL) /*!< PPB SHPR2: PRI_11 (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_SHPR3 --------------------------------- */ -#define PPB_SHPR3_PRI_14_Pos \ - (16UL) /*!< PPB SHPR3: PRI_14 (Bit 16) */ -#define PPB_SHPR3_PRI_14_Msk \ - (0xff0000UL) /*!< PPB SHPR3: PRI_14 (Bitfield-Mask: 0xff) */ -#define PPB_SHPR3_PRI_15_Pos \ - (24UL) /*!< PPB SHPR3: PRI_15 (Bit 24) */ -#define PPB_SHPR3_PRI_15_Msk \ - (0xff000000UL) /*!< PPB SHPR3: PRI_15 (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_SHCSR --------------------------------- */ -#define PPB_SHCSR_MEMFAULTACT_Pos \ - (0UL) /*!< PPB SHCSR: MEMFAULTACT (Bit 0) */ -#define PPB_SHCSR_MEMFAULTACT_Msk \ - (0x1UL) /*!< PPB SHCSR: MEMFAULTACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_BUSFAULTACT_Pos \ - (1UL) /*!< PPB SHCSR: BUSFAULTACT (Bit 1) */ -#define PPB_SHCSR_BUSFAULTACT_Msk \ - (0x2UL) /*!< PPB SHCSR: BUSFAULTACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_USGFAULTACT_Pos \ - (3UL) /*!< PPB SHCSR: USGFAULTACT (Bit 3) */ -#define PPB_SHCSR_USGFAULTACT_Msk \ - (0x8UL) /*!< PPB SHCSR: USGFAULTACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_SVCALLACT_Pos \ - (7UL) /*!< PPB SHCSR: SVCALLACT (Bit 7) */ -#define PPB_SHCSR_SVCALLACT_Msk \ - (0x80UL) /*!< PPB SHCSR: SVCALLACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_MONITORACT_Pos \ - (8UL) /*!< PPB SHCSR: MONITORACT (Bit 8) */ -#define PPB_SHCSR_MONITORACT_Msk \ - (0x100UL) /*!< PPB SHCSR: MONITORACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_PENDSVACT_Pos \ - (10UL) /*!< PPB SHCSR: PENDSVACT (Bit 10) */ -#define PPB_SHCSR_PENDSVACT_Msk \ - (0x400UL) /*!< PPB SHCSR: PENDSVACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_SYSTICKACT_Pos \ - (11UL) /*!< PPB SHCSR: SYSTICKACT (Bit 11) */ -#define PPB_SHCSR_SYSTICKACT_Msk \ - (0x800UL) /*!< PPB SHCSR: SYSTICKACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_USGFAULTPENDED_Pos \ - (12UL) /*!< PPB SHCSR: USGFAULTPENDED (Bit 12) */ -#define PPB_SHCSR_USGFAULTPENDED_Msk \ - (0x1000UL) /*!< PPB SHCSR: USGFAULTPENDED (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_MEMFAULTPENDED_Pos \ - (13UL) /*!< PPB SHCSR: MEMFAULTPENDED (Bit 13) */ -#define PPB_SHCSR_MEMFAULTPENDED_Msk \ - (0x2000UL) /*!< PPB SHCSR: MEMFAULTPENDED (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_BUSFAULTPENDED_Pos \ - (14UL) /*!< PPB SHCSR: BUSFAULTPENDED (Bit 14) */ -#define PPB_SHCSR_BUSFAULTPENDED_Msk \ - (0x4000UL) /*!< PPB SHCSR: BUSFAULTPENDED (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_SVCALLPENDED_Pos \ - (15UL) /*!< PPB SHCSR: SVCALLPENDED (Bit 15) */ -#define PPB_SHCSR_SVCALLPENDED_Msk \ - (0x8000UL) /*!< PPB SHCSR: SVCALLPENDED (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_MEMFAULTENA_Pos \ - (16UL) /*!< PPB SHCSR: MEMFAULTENA (Bit 16) */ -#define PPB_SHCSR_MEMFAULTENA_Msk \ - (0x10000UL) /*!< PPB SHCSR: MEMFAULTENA (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_BUSFAULTENA_Pos \ - (17UL) /*!< PPB SHCSR: BUSFAULTENA (Bit 17) */ -#define PPB_SHCSR_BUSFAULTENA_Msk \ - (0x20000UL) /*!< PPB SHCSR: BUSFAULTENA (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_USGFAULTENA_Pos \ - (18UL) /*!< PPB SHCSR: USGFAULTENA (Bit 18) */ -#define PPB_SHCSR_USGFAULTENA_Msk \ - (0x40000UL) /*!< PPB SHCSR: USGFAULTENA (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_CFSR ---------------------------------- */ -#define PPB_CFSR_IACCVIOL_Pos \ - (0UL) /*!< PPB CFSR: IACCVIOL (Bit 0) */ -#define PPB_CFSR_IACCVIOL_Msk \ - (0x1UL) /*!< PPB CFSR: IACCVIOL (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_DACCVIOL_Pos \ - (1UL) /*!< PPB CFSR: DACCVIOL (Bit 1) */ -#define PPB_CFSR_DACCVIOL_Msk \ - (0x2UL) /*!< PPB CFSR: DACCVIOL (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_MUNSTKERR_Pos \ - (3UL) /*!< PPB CFSR: MUNSTKERR (Bit 3) */ -#define PPB_CFSR_MUNSTKERR_Msk \ - (0x8UL) /*!< PPB CFSR: MUNSTKERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_MSTKERR_Pos \ - (4UL) /*!< PPB CFSR: MSTKERR (Bit 4) */ -#define PPB_CFSR_MSTKERR_Msk \ - (0x10UL) /*!< PPB CFSR: MSTKERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_MLSPERR_Pos \ - (5UL) /*!< PPB CFSR: MLSPERR (Bit 5) */ -#define PPB_CFSR_MLSPERR_Msk \ - (0x20UL) /*!< PPB CFSR: MLSPERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_MMARVALID_Pos \ - (7UL) /*!< PPB CFSR: MMARVALID (Bit 7) */ -#define PPB_CFSR_MMARVALID_Msk \ - (0x80UL) /*!< PPB CFSR: MMARVALID (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_IBUSERR_Pos \ - (8UL) /*!< PPB CFSR: IBUSERR (Bit 8) */ -#define PPB_CFSR_IBUSERR_Msk \ - (0x100UL) /*!< PPB CFSR: IBUSERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_PRECISERR_Pos \ - (9UL) /*!< PPB CFSR: PRECISERR (Bit 9) */ -#define PPB_CFSR_PRECISERR_Msk \ - (0x200UL) /*!< PPB CFSR: PRECISERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_IMPRECISERR_Pos \ - (10UL) /*!< PPB CFSR: IMPRECISERR (Bit 10) */ -#define PPB_CFSR_IMPRECISERR_Msk \ - (0x400UL) /*!< PPB CFSR: IMPRECISERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_UNSTKERR_Pos \ - (11UL) /*!< PPB CFSR: UNSTKERR (Bit 11) */ -#define PPB_CFSR_UNSTKERR_Msk \ - (0x800UL) /*!< PPB CFSR: UNSTKERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_STKERR_Pos \ - (12UL) /*!< PPB CFSR: STKERR (Bit 12) */ -#define PPB_CFSR_STKERR_Msk \ - (0x1000UL) /*!< PPB CFSR: STKERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_LSPERR_Pos \ - (13UL) /*!< PPB CFSR: LSPERR (Bit 13) */ -#define PPB_CFSR_LSPERR_Msk \ - (0x2000UL) /*!< PPB CFSR: LSPERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_BFARVALID_Pos \ - (15UL) /*!< PPB CFSR: BFARVALID (Bit 15) */ -#define PPB_CFSR_BFARVALID_Msk \ - (0x8000UL) /*!< PPB CFSR: BFARVALID (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_UNDEFINSTR_Pos \ - (16UL) /*!< PPB CFSR: UNDEFINSTR (Bit 16) */ -#define PPB_CFSR_UNDEFINSTR_Msk \ - (0x10000UL) /*!< PPB CFSR: UNDEFINSTR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_INVSTATE_Pos \ - (17UL) /*!< PPB CFSR: INVSTATE (Bit 17) */ -#define PPB_CFSR_INVSTATE_Msk \ - (0x20000UL) /*!< PPB CFSR: INVSTATE (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_INVPC_Pos \ - (18UL) /*!< PPB CFSR: INVPC (Bit 18) */ -#define PPB_CFSR_INVPC_Msk \ - (0x40000UL) /*!< PPB CFSR: INVPC (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_NOCP_Pos (19UL) /*!< PPB CFSR: NOCP (Bit 19) */ -#define PPB_CFSR_NOCP_Msk \ - (0x80000UL) /*!< PPB CFSR: NOCP (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_UNALIGNED_Pos \ - (24UL) /*!< PPB CFSR: UNALIGNED (Bit 24) */ -#define PPB_CFSR_UNALIGNED_Msk \ - (0x1000000UL) /*!< PPB CFSR: UNALIGNED (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_DIVBYZERO_Pos \ - (25UL) /*!< PPB CFSR: DIVBYZERO (Bit 25) */ -#define PPB_CFSR_DIVBYZERO_Msk \ - (0x2000000UL) /*!< PPB CFSR: DIVBYZERO (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_HFSR ---------------------------------- */ -#define PPB_HFSR_VECTTBL_Pos \ - (1UL) /*!< PPB HFSR: VECTTBL (Bit 1) */ -#define PPB_HFSR_VECTTBL_Msk \ - (0x2UL) /*!< PPB HFSR: VECTTBL (Bitfield-Mask: 0x01) */ -#define PPB_HFSR_FORCED_Pos \ - (30UL) /*!< PPB HFSR: FORCED (Bit 30) */ -#define PPB_HFSR_FORCED_Msk \ - (0x40000000UL) /*!< PPB HFSR: FORCED (Bitfield-Mask: 0x01) */ -#define PPB_HFSR_DEBUGEVT_Pos \ - (31UL) /*!< PPB HFSR: DEBUGEVT (Bit 31) */ -#define PPB_HFSR_DEBUGEVT_Msk \ - (0x80000000UL) /*!< PPB HFSR: DEBUGEVT (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_MMFAR --------------------------------- */ -#define PPB_MMFAR_ADDRESS_Pos \ - (0UL) /*!< PPB MMFAR: ADDRESS (Bit 0) */ -#define PPB_MMFAR_ADDRESS_Msk \ - (0xffffffffUL) /*!< PPB MMFAR: ADDRESS (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- PPB_BFAR ---------------------------------- */ -#define PPB_BFAR_ADDRESS_Pos \ - (0UL) /*!< PPB BFAR: ADDRESS (Bit 0) */ -#define PPB_BFAR_ADDRESS_Msk \ - (0xffffffffUL) /*!< PPB BFAR: ADDRESS (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- PPB_AFSR ---------------------------------- */ -#define PPB_AFSR_VALUE_Pos (0UL) /*!< PPB AFSR: VALUE (Bit 0) */ -#define PPB_AFSR_VALUE_Msk \ - (0xffffffffUL) /*!< PPB AFSR: VALUE (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- PPB_CPACR --------------------------------- */ -#define PPB_CPACR_CP10_Pos \ - (20UL) /*!< PPB CPACR: CP10 (Bit 20) */ -#define PPB_CPACR_CP10_Msk \ - (0x300000UL) /*!< PPB CPACR: CP10 (Bitfield-Mask: 0x03) */ -#define PPB_CPACR_CP11_Pos \ - (22UL) /*!< PPB CPACR: CP11 (Bit 22) */ -#define PPB_CPACR_CP11_Msk \ - (0xc00000UL) /*!< PPB CPACR: CP11 (Bitfield-Mask: 0x03) */ - -/* -------------------------------- PPB_MPU_TYPE -------------------------------- */ -#define PPB_MPU_TYPE_SEPARATE_Pos \ - (0UL) /*!< PPB MPU_TYPE: SEPARATE (Bit 0) */ -#define PPB_MPU_TYPE_SEPARATE_Msk \ - (0x1UL) /*!< PPB MPU_TYPE: SEPARATE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_TYPE_DREGION_Pos \ - (8UL) /*!< PPB MPU_TYPE: DREGION (Bit 8) */ -#define PPB_MPU_TYPE_DREGION_Msk \ - (0xff00UL) /*!< PPB MPU_TYPE: DREGION (Bitfield-Mask: 0xff) */ -#define PPB_MPU_TYPE_IREGION_Pos \ - (16UL) /*!< PPB MPU_TYPE: IREGION (Bit 16) */ -#define PPB_MPU_TYPE_IREGION_Msk \ - (0xff0000UL) /*!< PPB MPU_TYPE: IREGION (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_MPU_CTRL -------------------------------- */ -#define PPB_MPU_CTRL_ENABLE_Pos \ - (0UL) /*!< PPB MPU_CTRL: ENABLE (Bit 0) */ -#define PPB_MPU_CTRL_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_CTRL: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_CTRL_HFNMIENA_Pos \ - (1UL) /*!< PPB MPU_CTRL: HFNMIENA (Bit 1) */ -#define PPB_MPU_CTRL_HFNMIENA_Msk \ - (0x2UL) /*!< PPB MPU_CTRL: HFNMIENA (Bitfield-Mask: 0x01) */ -#define PPB_MPU_CTRL_PRIVDEFENA_Pos \ - (2UL) /*!< PPB MPU_CTRL: PRIVDEFENA (Bit 2) */ -#define PPB_MPU_CTRL_PRIVDEFENA_Msk \ - (0x4UL) /*!< PPB MPU_CTRL: PRIVDEFENA (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PPB_MPU_RNR -------------------------------- */ -#define PPB_MPU_RNR_REGION_Pos \ - (0UL) /*!< PPB MPU_RNR: REGION (Bit 0) */ -#define PPB_MPU_RNR_REGION_Msk \ - (0xffUL) /*!< PPB MPU_RNR: REGION (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_MPU_RBAR -------------------------------- */ -#define PPB_MPU_RBAR_REGION_Pos \ - (0UL) /*!< PPB MPU_RBAR: REGION (Bit 0) */ -#define PPB_MPU_RBAR_REGION_Msk \ - (0xfUL) /*!< PPB MPU_RBAR: REGION (Bitfield-Mask: 0x0f) */ -#define PPB_MPU_RBAR_VALID_Pos \ - (4UL) /*!< PPB MPU_RBAR: VALID (Bit 4) */ -#define PPB_MPU_RBAR_VALID_Msk \ - (0x10UL) /*!< PPB MPU_RBAR: VALID (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RBAR_ADDR_Pos \ - (9UL) /*!< PPB MPU_RBAR: ADDR (Bit 9) */ -#define PPB_MPU_RBAR_ADDR_Msk \ - (0xfffffe00UL) /*!< PPB MPU_RBAR: ADDR (Bitfield-Mask: 0x7fffff) */ - -/* -------------------------------- PPB_MPU_RASR -------------------------------- */ -#define PPB_MPU_RASR_ENABLE_Pos \ - (0UL) /*!< PPB MPU_RASR: ENABLE (Bit 0) */ -#define PPB_MPU_RASR_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_RASR: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_SIZE_Pos \ - (1UL) /*!< PPB MPU_RASR: SIZE (Bit 1) */ -#define PPB_MPU_RASR_SIZE_Msk \ - (0x3eUL) /*!< PPB MPU_RASR: SIZE (Bitfield-Mask: 0x1f) */ -#define PPB_MPU_RASR_SRD_Pos \ - (8UL) /*!< PPB MPU_RASR: SRD (Bit 8) */ -#define PPB_MPU_RASR_SRD_Msk \ - (0xff00UL) /*!< PPB MPU_RASR: SRD (Bitfield-Mask: 0xff) */ -#define PPB_MPU_RASR_B_Pos \ - (16UL) /*!< PPB MPU_RASR: B (Bit 16) */ -#define PPB_MPU_RASR_B_Msk \ - (0x10000UL) /*!< PPB MPU_RASR: B (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_C_Pos \ - (17UL) /*!< PPB MPU_RASR: C (Bit 17) */ -#define PPB_MPU_RASR_C_Msk \ - (0x20000UL) /*!< PPB MPU_RASR: C (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_S_Pos \ - (18UL) /*!< PPB MPU_RASR: S (Bit 18) */ -#define PPB_MPU_RASR_S_Msk \ - (0x40000UL) /*!< PPB MPU_RASR: S (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_TEX_Pos \ - (19UL) /*!< PPB MPU_RASR: TEX (Bit 19) */ -#define PPB_MPU_RASR_TEX_Msk \ - (0x380000UL) /*!< PPB MPU_RASR: TEX (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_AP_Pos \ - (24UL) /*!< PPB MPU_RASR: AP (Bit 24) */ -#define PPB_MPU_RASR_AP_Msk \ - (0x7000000UL) /*!< PPB MPU_RASR: AP (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_XN_Pos \ - (28UL) /*!< PPB MPU_RASR: XN (Bit 28) */ -#define PPB_MPU_RASR_XN_Msk \ - (0x10000000UL) /*!< PPB MPU_RASR: XN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- PPB_MPU_RBAR_A1 ------------------------------ */ -#define PPB_MPU_RBAR_A1_REGION_Pos \ - (0UL) /*!< PPB MPU_RBAR_A1: REGION (Bit 0) */ -#define PPB_MPU_RBAR_A1_REGION_Msk \ - (0xfUL) /*!< PPB MPU_RBAR_A1: REGION (Bitfield-Mask: 0x0f) */ -#define PPB_MPU_RBAR_A1_VALID_Pos \ - (4UL) /*!< PPB MPU_RBAR_A1: VALID (Bit 4) */ -#define PPB_MPU_RBAR_A1_VALID_Msk \ - (0x10UL) /*!< PPB MPU_RBAR_A1: VALID (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RBAR_A1_ADDR_Pos \ - (9UL) /*!< PPB MPU_RBAR_A1: ADDR (Bit 9) */ -#define PPB_MPU_RBAR_A1_ADDR_Msk \ - (0xfffffe00UL) /*!< PPB MPU_RBAR_A1: ADDR (Bitfield-Mask: 0x7fffff) */ - -/* ------------------------------- PPB_MPU_RASR_A1 ------------------------------ */ -#define PPB_MPU_RASR_A1_ENABLE_Pos \ - (0UL) /*!< PPB MPU_RASR_A1: ENABLE (Bit 0) */ -#define PPB_MPU_RASR_A1_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_RASR_A1: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A1_SIZE_Pos \ - (1UL) /*!< PPB MPU_RASR_A1: SIZE (Bit 1) */ -#define PPB_MPU_RASR_A1_SIZE_Msk \ - (0x3eUL) /*!< PPB MPU_RASR_A1: SIZE (Bitfield-Mask: 0x1f) */ -#define PPB_MPU_RASR_A1_SRD_Pos \ - (8UL) /*!< PPB MPU_RASR_A1: SRD (Bit 8) */ -#define PPB_MPU_RASR_A1_SRD_Msk \ - (0xff00UL) /*!< PPB MPU_RASR_A1: SRD (Bitfield-Mask: 0xff) */ -#define PPB_MPU_RASR_A1_B_Pos \ - (16UL) /*!< PPB MPU_RASR_A1: B (Bit 16) */ -#define PPB_MPU_RASR_A1_B_Msk \ - (0x10000UL) /*!< PPB MPU_RASR_A1: B (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A1_C_Pos \ - (17UL) /*!< PPB MPU_RASR_A1: C (Bit 17) */ -#define PPB_MPU_RASR_A1_C_Msk \ - (0x20000UL) /*!< PPB MPU_RASR_A1: C (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A1_S_Pos \ - (18UL) /*!< PPB MPU_RASR_A1: S (Bit 18) */ -#define PPB_MPU_RASR_A1_S_Msk \ - (0x40000UL) /*!< PPB MPU_RASR_A1: S (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A1_TEX_Pos \ - (19UL) /*!< PPB MPU_RASR_A1: TEX (Bit 19) */ -#define PPB_MPU_RASR_A1_TEX_Msk \ - (0x380000UL) /*!< PPB MPU_RASR_A1: TEX (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A1_AP_Pos \ - (24UL) /*!< PPB MPU_RASR_A1: AP (Bit 24) */ -#define PPB_MPU_RASR_A1_AP_Msk \ - (0x7000000UL) /*!< PPB MPU_RASR_A1: AP (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A1_XN_Pos \ - (28UL) /*!< PPB MPU_RASR_A1: XN (Bit 28) */ -#define PPB_MPU_RASR_A1_XN_Msk \ - (0x10000000UL) /*!< PPB MPU_RASR_A1: XN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- PPB_MPU_RBAR_A2 ------------------------------ */ -#define PPB_MPU_RBAR_A2_REGION_Pos \ - (0UL) /*!< PPB MPU_RBAR_A2: REGION (Bit 0) */ -#define PPB_MPU_RBAR_A2_REGION_Msk \ - (0xfUL) /*!< PPB MPU_RBAR_A2: REGION (Bitfield-Mask: 0x0f) */ -#define PPB_MPU_RBAR_A2_VALID_Pos \ - (4UL) /*!< PPB MPU_RBAR_A2: VALID (Bit 4) */ -#define PPB_MPU_RBAR_A2_VALID_Msk \ - (0x10UL) /*!< PPB MPU_RBAR_A2: VALID (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RBAR_A2_ADDR_Pos \ - (9UL) /*!< PPB MPU_RBAR_A2: ADDR (Bit 9) */ -#define PPB_MPU_RBAR_A2_ADDR_Msk \ - (0xfffffe00UL) /*!< PPB MPU_RBAR_A2: ADDR (Bitfield-Mask: 0x7fffff) */ - -/* ------------------------------- PPB_MPU_RASR_A2 ------------------------------ */ -#define PPB_MPU_RASR_A2_ENABLE_Pos \ - (0UL) /*!< PPB MPU_RASR_A2: ENABLE (Bit 0) */ -#define PPB_MPU_RASR_A2_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_RASR_A2: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A2_SIZE_Pos \ - (1UL) /*!< PPB MPU_RASR_A2: SIZE (Bit 1) */ -#define PPB_MPU_RASR_A2_SIZE_Msk \ - (0x3eUL) /*!< PPB MPU_RASR_A2: SIZE (Bitfield-Mask: 0x1f) */ -#define PPB_MPU_RASR_A2_SRD_Pos \ - (8UL) /*!< PPB MPU_RASR_A2: SRD (Bit 8) */ -#define PPB_MPU_RASR_A2_SRD_Msk \ - (0xff00UL) /*!< PPB MPU_RASR_A2: SRD (Bitfield-Mask: 0xff) */ -#define PPB_MPU_RASR_A2_B_Pos \ - (16UL) /*!< PPB MPU_RASR_A2: B (Bit 16) */ -#define PPB_MPU_RASR_A2_B_Msk \ - (0x10000UL) /*!< PPB MPU_RASR_A2: B (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A2_C_Pos \ - (17UL) /*!< PPB MPU_RASR_A2: C (Bit 17) */ -#define PPB_MPU_RASR_A2_C_Msk \ - (0x20000UL) /*!< PPB MPU_RASR_A2: C (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A2_S_Pos \ - (18UL) /*!< PPB MPU_RASR_A2: S (Bit 18) */ -#define PPB_MPU_RASR_A2_S_Msk \ - (0x40000UL) /*!< PPB MPU_RASR_A2: S (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A2_TEX_Pos \ - (19UL) /*!< PPB MPU_RASR_A2: TEX (Bit 19) */ -#define PPB_MPU_RASR_A2_TEX_Msk \ - (0x380000UL) /*!< PPB MPU_RASR_A2: TEX (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A2_AP_Pos \ - (24UL) /*!< PPB MPU_RASR_A2: AP (Bit 24) */ -#define PPB_MPU_RASR_A2_AP_Msk \ - (0x7000000UL) /*!< PPB MPU_RASR_A2: AP (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A2_XN_Pos \ - (28UL) /*!< PPB MPU_RASR_A2: XN (Bit 28) */ -#define PPB_MPU_RASR_A2_XN_Msk \ - (0x10000000UL) /*!< PPB MPU_RASR_A2: XN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- PPB_MPU_RBAR_A3 ------------------------------ */ -#define PPB_MPU_RBAR_A3_REGION_Pos \ - (0UL) /*!< PPB MPU_RBAR_A3: REGION (Bit 0) */ -#define PPB_MPU_RBAR_A3_REGION_Msk \ - (0xfUL) /*!< PPB MPU_RBAR_A3: REGION (Bitfield-Mask: 0x0f) */ -#define PPB_MPU_RBAR_A3_VALID_Pos \ - (4UL) /*!< PPB MPU_RBAR_A3: VALID (Bit 4) */ -#define PPB_MPU_RBAR_A3_VALID_Msk \ - (0x10UL) /*!< PPB MPU_RBAR_A3: VALID (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RBAR_A3_ADDR_Pos \ - (9UL) /*!< PPB MPU_RBAR_A3: ADDR (Bit 9) */ -#define PPB_MPU_RBAR_A3_ADDR_Msk \ - (0xfffffe00UL) /*!< PPB MPU_RBAR_A3: ADDR (Bitfield-Mask: 0x7fffff) */ - -/* ------------------------------- PPB_MPU_RASR_A3 ------------------------------ */ -#define PPB_MPU_RASR_A3_ENABLE_Pos \ - (0UL) /*!< PPB MPU_RASR_A3: ENABLE (Bit 0) */ -#define PPB_MPU_RASR_A3_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_RASR_A3: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A3_SIZE_Pos \ - (1UL) /*!< PPB MPU_RASR_A3: SIZE (Bit 1) */ -#define PPB_MPU_RASR_A3_SIZE_Msk \ - (0x3eUL) /*!< PPB MPU_RASR_A3: SIZE (Bitfield-Mask: 0x1f) */ -#define PPB_MPU_RASR_A3_SRD_Pos \ - (8UL) /*!< PPB MPU_RASR_A3: SRD (Bit 8) */ -#define PPB_MPU_RASR_A3_SRD_Msk \ - (0xff00UL) /*!< PPB MPU_RASR_A3: SRD (Bitfield-Mask: 0xff) */ -#define PPB_MPU_RASR_A3_B_Pos \ - (16UL) /*!< PPB MPU_RASR_A3: B (Bit 16) */ -#define PPB_MPU_RASR_A3_B_Msk \ - (0x10000UL) /*!< PPB MPU_RASR_A3: B (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A3_C_Pos \ - (17UL) /*!< PPB MPU_RASR_A3: C (Bit 17) */ -#define PPB_MPU_RASR_A3_C_Msk \ - (0x20000UL) /*!< PPB MPU_RASR_A3: C (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A3_S_Pos \ - (18UL) /*!< PPB MPU_RASR_A3: S (Bit 18) */ -#define PPB_MPU_RASR_A3_S_Msk \ - (0x40000UL) /*!< PPB MPU_RASR_A3: S (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A3_TEX_Pos \ - (19UL) /*!< PPB MPU_RASR_A3: TEX (Bit 19) */ -#define PPB_MPU_RASR_A3_TEX_Msk \ - (0x380000UL) /*!< PPB MPU_RASR_A3: TEX (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A3_AP_Pos \ - (24UL) /*!< PPB MPU_RASR_A3: AP (Bit 24) */ -#define PPB_MPU_RASR_A3_AP_Msk \ - (0x7000000UL) /*!< PPB MPU_RASR_A3: AP (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A3_XN_Pos \ - (28UL) /*!< PPB MPU_RASR_A3: XN (Bit 28) */ -#define PPB_MPU_RASR_A3_XN_Msk \ - (0x10000000UL) /*!< PPB MPU_RASR_A3: XN (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_STIR ---------------------------------- */ -#define PPB_STIR_INTID_Pos (0UL) /*!< PPB STIR: INTID (Bit 0) */ -#define PPB_STIR_INTID_Msk \ - (0x1ffUL) /*!< PPB STIR: INTID (Bitfield-Mask: 0x1ff) */ - -/* ---------------------------------- PPB_FPCCR --------------------------------- */ -#define PPB_FPCCR_LSPACT_Pos \ - (0UL) /*!< PPB FPCCR: LSPACT (Bit 0) */ -#define PPB_FPCCR_LSPACT_Msk \ - (0x1UL) /*!< PPB FPCCR: LSPACT (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_USER_Pos (1UL) /*!< PPB FPCCR: USER (Bit 1) */ -#define PPB_FPCCR_USER_Msk \ - (0x2UL) /*!< PPB FPCCR: USER (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_THREAD_Pos \ - (3UL) /*!< PPB FPCCR: THREAD (Bit 3) */ -#define PPB_FPCCR_THREAD_Msk \ - (0x8UL) /*!< PPB FPCCR: THREAD (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_HFRDY_Pos \ - (4UL) /*!< PPB FPCCR: HFRDY (Bit 4) */ -#define PPB_FPCCR_HFRDY_Msk \ - (0x10UL) /*!< PPB FPCCR: HFRDY (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_MMRDY_Pos \ - (5UL) /*!< PPB FPCCR: MMRDY (Bit 5) */ -#define PPB_FPCCR_MMRDY_Msk \ - (0x20UL) /*!< PPB FPCCR: MMRDY (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_BFRDY_Pos \ - (6UL) /*!< PPB FPCCR: BFRDY (Bit 6) */ -#define PPB_FPCCR_BFRDY_Msk \ - (0x40UL) /*!< PPB FPCCR: BFRDY (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_MONRDY_Pos \ - (8UL) /*!< PPB FPCCR: MONRDY (Bit 8) */ -#define PPB_FPCCR_MONRDY_Msk \ - (0x100UL) /*!< PPB FPCCR: MONRDY (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_LSPEN_Pos \ - (30UL) /*!< PPB FPCCR: LSPEN (Bit 30) */ -#define PPB_FPCCR_LSPEN_Msk \ - (0x40000000UL) /*!< PPB FPCCR: LSPEN (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_ASPEN_Pos \ - (31UL) /*!< PPB FPCCR: ASPEN (Bit 31) */ -#define PPB_FPCCR_ASPEN_Msk \ - (0x80000000UL) /*!< PPB FPCCR: ASPEN (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_FPCAR --------------------------------- */ -#define PPB_FPCAR_ADDRESS_Pos \ - (3UL) /*!< PPB FPCAR: ADDRESS (Bit 3) */ -#define PPB_FPCAR_ADDRESS_Msk \ - (0xfffffff8UL) /*!< PPB FPCAR: ADDRESS (Bitfield-Mask: 0x1fffffff) */ - -/* --------------------------------- PPB_FPDSCR --------------------------------- */ -#define PPB_FPDSCR_RMode_Pos \ - (22UL) /*!< PPB FPDSCR: RMode (Bit 22) */ -#define PPB_FPDSCR_RMode_Msk \ - (0xc00000UL) /*!< PPB FPDSCR: RMode (Bitfield-Mask: 0x03) */ -#define PPB_FPDSCR_FZ_Pos (24UL) /*!< PPB FPDSCR: FZ (Bit 24) */ -#define PPB_FPDSCR_FZ_Msk \ - (0x1000000UL) /*!< PPB FPDSCR: FZ (Bitfield-Mask: 0x01) */ -#define PPB_FPDSCR_DN_Pos (25UL) /*!< PPB FPDSCR: DN (Bit 25) */ -#define PPB_FPDSCR_DN_Msk \ - (0x2000000UL) /*!< PPB FPDSCR: DN (Bitfield-Mask: 0x01) */ -#define PPB_FPDSCR_AHP_Pos \ - (26UL) /*!< PPB FPDSCR: AHP (Bit 26) */ -#define PPB_FPDSCR_AHP_Msk \ - (0x4000000UL) /*!< PPB FPDSCR: AHP (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'DLR' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- DLR_OVRSTAT -------------------------------- */ -#define DLR_OVRSTAT_LN0_Pos \ - (0UL) /*!< DLR OVRSTAT: LN0 (Bit 0) */ -#define DLR_OVRSTAT_LN0_Msk \ - (0x1UL) /*!< DLR OVRSTAT: LN0 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN1_Pos \ - (1UL) /*!< DLR OVRSTAT: LN1 (Bit 1) */ -#define DLR_OVRSTAT_LN1_Msk \ - (0x2UL) /*!< DLR OVRSTAT: LN1 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN2_Pos \ - (2UL) /*!< DLR OVRSTAT: LN2 (Bit 2) */ -#define DLR_OVRSTAT_LN2_Msk \ - (0x4UL) /*!< DLR OVRSTAT: LN2 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN3_Pos \ - (3UL) /*!< DLR OVRSTAT: LN3 (Bit 3) */ -#define DLR_OVRSTAT_LN3_Msk \ - (0x8UL) /*!< DLR OVRSTAT: LN3 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN4_Pos \ - (4UL) /*!< DLR OVRSTAT: LN4 (Bit 4) */ -#define DLR_OVRSTAT_LN4_Msk \ - (0x10UL) /*!< DLR OVRSTAT: LN4 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN5_Pos \ - (5UL) /*!< DLR OVRSTAT: LN5 (Bit 5) */ -#define DLR_OVRSTAT_LN5_Msk \ - (0x20UL) /*!< DLR OVRSTAT: LN5 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN6_Pos \ - (6UL) /*!< DLR OVRSTAT: LN6 (Bit 6) */ -#define DLR_OVRSTAT_LN6_Msk \ - (0x40UL) /*!< DLR OVRSTAT: LN6 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN7_Pos \ - (7UL) /*!< DLR OVRSTAT: LN7 (Bit 7) */ -#define DLR_OVRSTAT_LN7_Msk \ - (0x80UL) /*!< DLR OVRSTAT: LN7 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- DLR_OVRCLR --------------------------------- */ -#define DLR_OVRCLR_LN0_Pos (0UL) /*!< DLR OVRCLR: LN0 (Bit 0) */ -#define DLR_OVRCLR_LN0_Msk \ - (0x1UL) /*!< DLR OVRCLR: LN0 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN1_Pos (1UL) /*!< DLR OVRCLR: LN1 (Bit 1) */ -#define DLR_OVRCLR_LN1_Msk \ - (0x2UL) /*!< DLR OVRCLR: LN1 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN2_Pos (2UL) /*!< DLR OVRCLR: LN2 (Bit 2) */ -#define DLR_OVRCLR_LN2_Msk \ - (0x4UL) /*!< DLR OVRCLR: LN2 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN3_Pos (3UL) /*!< DLR OVRCLR: LN3 (Bit 3) */ -#define DLR_OVRCLR_LN3_Msk \ - (0x8UL) /*!< DLR OVRCLR: LN3 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN4_Pos (4UL) /*!< DLR OVRCLR: LN4 (Bit 4) */ -#define DLR_OVRCLR_LN4_Msk \ - (0x10UL) /*!< DLR OVRCLR: LN4 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN5_Pos (5UL) /*!< DLR OVRCLR: LN5 (Bit 5) */ -#define DLR_OVRCLR_LN5_Msk \ - (0x20UL) /*!< DLR OVRCLR: LN5 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN6_Pos (6UL) /*!< DLR OVRCLR: LN6 (Bit 6) */ -#define DLR_OVRCLR_LN6_Msk \ - (0x40UL) /*!< DLR OVRCLR: LN6 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN7_Pos (7UL) /*!< DLR OVRCLR: LN7 (Bit 7) */ -#define DLR_OVRCLR_LN7_Msk \ - (0x80UL) /*!< DLR OVRCLR: LN7 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- DLR_SRSEL0 --------------------------------- */ -#define DLR_SRSEL0_RS0_Pos (0UL) /*!< DLR SRSEL0: RS0 (Bit 0) */ -#define DLR_SRSEL0_RS0_Msk \ - (0xfUL) /*!< DLR SRSEL0: RS0 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS1_Pos (4UL) /*!< DLR SRSEL0: RS1 (Bit 4) */ -#define DLR_SRSEL0_RS1_Msk \ - (0xf0UL) /*!< DLR SRSEL0: RS1 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS2_Pos (8UL) /*!< DLR SRSEL0: RS2 (Bit 8) */ -#define DLR_SRSEL0_RS2_Msk \ - (0xf00UL) /*!< DLR SRSEL0: RS2 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS3_Pos \ - (12UL) /*!< DLR SRSEL0: RS3 (Bit 12) */ -#define DLR_SRSEL0_RS3_Msk \ - (0xf000UL) /*!< DLR SRSEL0: RS3 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS4_Pos \ - (16UL) /*!< DLR SRSEL0: RS4 (Bit 16) */ -#define DLR_SRSEL0_RS4_Msk \ - (0xf0000UL) /*!< DLR SRSEL0: RS4 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS5_Pos \ - (20UL) /*!< DLR SRSEL0: RS5 (Bit 20) */ -#define DLR_SRSEL0_RS5_Msk \ - (0xf00000UL) /*!< DLR SRSEL0: RS5 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS6_Pos \ - (24UL) /*!< DLR SRSEL0: RS6 (Bit 24) */ -#define DLR_SRSEL0_RS6_Msk \ - (0xf000000UL) /*!< DLR SRSEL0: RS6 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS7_Pos \ - (28UL) /*!< DLR SRSEL0: RS7 (Bit 28) */ -#define DLR_SRSEL0_RS7_Msk \ - (0xf0000000UL) /*!< DLR SRSEL0: RS7 (Bitfield-Mask: 0x0f) */ - -/* ---------------------------------- DLR_LNEN ---------------------------------- */ -#define DLR_LNEN_LN0_Pos (0UL) /*!< DLR LNEN: LN0 (Bit 0) */ -#define DLR_LNEN_LN0_Msk (0x1UL) /*!< DLR LNEN: LN0 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN1_Pos (1UL) /*!< DLR LNEN: LN1 (Bit 1) */ -#define DLR_LNEN_LN1_Msk (0x2UL) /*!< DLR LNEN: LN1 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN2_Pos (2UL) /*!< DLR LNEN: LN2 (Bit 2) */ -#define DLR_LNEN_LN2_Msk (0x4UL) /*!< DLR LNEN: LN2 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN3_Pos (3UL) /*!< DLR LNEN: LN3 (Bit 3) */ -#define DLR_LNEN_LN3_Msk (0x8UL) /*!< DLR LNEN: LN3 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN4_Pos (4UL) /*!< DLR LNEN: LN4 (Bit 4) */ -#define DLR_LNEN_LN4_Msk \ - (0x10UL) /*!< DLR LNEN: LN4 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN5_Pos (5UL) /*!< DLR LNEN: LN5 (Bit 5) */ -#define DLR_LNEN_LN5_Msk \ - (0x20UL) /*!< DLR LNEN: LN5 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN6_Pos (6UL) /*!< DLR LNEN: LN6 (Bit 6) */ -#define DLR_LNEN_LN6_Msk \ - (0x40UL) /*!< DLR LNEN: LN6 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN7_Pos (7UL) /*!< DLR LNEN: LN7 (Bit 7) */ -#define DLR_LNEN_LN7_Msk \ - (0x80UL) /*!< DLR LNEN: LN7 (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'ERU' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- ERU_EXISEL --------------------------------- */ -#define ERU_EXISEL_EXS0A_Pos \ - (0UL) /*!< ERU EXISEL: EXS0A (Bit 0) */ -#define ERU_EXISEL_EXS0A_Msk \ - (0x3UL) /*!< ERU EXISEL: EXS0A (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS0B_Pos \ - (2UL) /*!< ERU EXISEL: EXS0B (Bit 2) */ -#define ERU_EXISEL_EXS0B_Msk \ - (0xcUL) /*!< ERU EXISEL: EXS0B (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS1A_Pos \ - (4UL) /*!< ERU EXISEL: EXS1A (Bit 4) */ -#define ERU_EXISEL_EXS1A_Msk \ - (0x30UL) /*!< ERU EXISEL: EXS1A (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS1B_Pos \ - (6UL) /*!< ERU EXISEL: EXS1B (Bit 6) */ -#define ERU_EXISEL_EXS1B_Msk \ - (0xc0UL) /*!< ERU EXISEL: EXS1B (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS2A_Pos \ - (8UL) /*!< ERU EXISEL: EXS2A (Bit 8) */ -#define ERU_EXISEL_EXS2A_Msk \ - (0x300UL) /*!< ERU EXISEL: EXS2A (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS2B_Pos \ - (10UL) /*!< ERU EXISEL: EXS2B (Bit 10) */ -#define ERU_EXISEL_EXS2B_Msk \ - (0xc00UL) /*!< ERU EXISEL: EXS2B (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS3A_Pos \ - (12UL) /*!< ERU EXISEL: EXS3A (Bit 12) */ -#define ERU_EXISEL_EXS3A_Msk \ - (0x3000UL) /*!< ERU EXISEL: EXS3A (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS3B_Pos \ - (14UL) /*!< ERU EXISEL: EXS3B (Bit 14) */ -#define ERU_EXISEL_EXS3B_Msk \ - (0xc000UL) /*!< ERU EXISEL: EXS3B (Bitfield-Mask: 0x03) */ - -/* --------------------------------- ERU_EXICON --------------------------------- */ -#define ERU_EXICON_PE_Pos (0UL) /*!< ERU EXICON: PE (Bit 0) */ -#define ERU_EXICON_PE_Msk \ - (0x1UL) /*!< ERU EXICON: PE (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_LD_Pos (1UL) /*!< ERU EXICON: LD (Bit 1) */ -#define ERU_EXICON_LD_Msk \ - (0x2UL) /*!< ERU EXICON: LD (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_RE_Pos (2UL) /*!< ERU EXICON: RE (Bit 2) */ -#define ERU_EXICON_RE_Msk \ - (0x4UL) /*!< ERU EXICON: RE (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_FE_Pos (3UL) /*!< ERU EXICON: FE (Bit 3) */ -#define ERU_EXICON_FE_Msk \ - (0x8UL) /*!< ERU EXICON: FE (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_OCS_Pos (4UL) /*!< ERU EXICON: OCS (Bit 4) */ -#define ERU_EXICON_OCS_Msk \ - (0x70UL) /*!< ERU EXICON: OCS (Bitfield-Mask: 0x07) */ -#define ERU_EXICON_FL_Pos (7UL) /*!< ERU EXICON: FL (Bit 7) */ -#define ERU_EXICON_FL_Msk \ - (0x80UL) /*!< ERU EXICON: FL (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_SS_Pos (8UL) /*!< ERU EXICON: SS (Bit 8) */ -#define ERU_EXICON_SS_Msk \ - (0x300UL) /*!< ERU EXICON: SS (Bitfield-Mask: 0x03) */ -#define ERU_EXICON_NA_Pos (10UL) /*!< ERU EXICON: NA (Bit 10) */ -#define ERU_EXICON_NA_Msk \ - (0x400UL) /*!< ERU EXICON: NA (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_NB_Pos (11UL) /*!< ERU EXICON: NB (Bit 11) */ -#define ERU_EXICON_NB_Msk \ - (0x800UL) /*!< ERU EXICON: NB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- ERU_EXOCON --------------------------------- */ -#define ERU_EXOCON_ISS_Pos (0UL) /*!< ERU EXOCON: ISS (Bit 0) */ -#define ERU_EXOCON_ISS_Msk \ - (0x3UL) /*!< ERU EXOCON: ISS (Bitfield-Mask: 0x03) */ -#define ERU_EXOCON_GEEN_Pos \ - (2UL) /*!< ERU EXOCON: GEEN (Bit 2) */ -#define ERU_EXOCON_GEEN_Msk \ - (0x4UL) /*!< ERU EXOCON: GEEN (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_PDR_Pos (3UL) /*!< ERU EXOCON: PDR (Bit 3) */ -#define ERU_EXOCON_PDR_Msk \ - (0x8UL) /*!< ERU EXOCON: PDR (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_GP_Pos (4UL) /*!< ERU EXOCON: GP (Bit 4) */ -#define ERU_EXOCON_GP_Msk \ - (0x30UL) /*!< ERU EXOCON: GP (Bitfield-Mask: 0x03) */ -#define ERU_EXOCON_IPEN0_Pos \ - (12UL) /*!< ERU EXOCON: IPEN0 (Bit 12) */ -#define ERU_EXOCON_IPEN0_Msk \ - (0x1000UL) /*!< ERU EXOCON: IPEN0 (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_IPEN1_Pos \ - (13UL) /*!< ERU EXOCON: IPEN1 (Bit 13) */ -#define ERU_EXOCON_IPEN1_Msk \ - (0x2000UL) /*!< ERU EXOCON: IPEN1 (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_IPEN2_Pos \ - (14UL) /*!< ERU EXOCON: IPEN2 (Bit 14) */ -#define ERU_EXOCON_IPEN2_Msk \ - (0x4000UL) /*!< ERU EXOCON: IPEN2 (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_IPEN3_Pos \ - (15UL) /*!< ERU EXOCON: IPEN3 (Bit 15) */ -#define ERU_EXOCON_IPEN3_Msk \ - (0x8000UL) /*!< ERU EXOCON: IPEN3 (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'GPDMA0' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- GPDMA0_RAWTFR ------------------------------- */ -#define GPDMA0_RAWTFR_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWTFR: CH0 (Bit 0) */ -#define GPDMA0_RAWTFR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWTFR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWTFR: CH1 (Bit 1) */ -#define GPDMA0_RAWTFR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWTFR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWTFR: CH2 (Bit 2) */ -#define GPDMA0_RAWTFR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWTFR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWTFR: CH3 (Bit 3) */ -#define GPDMA0_RAWTFR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWTFR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWTFR: CH4 (Bit 4) */ -#define GPDMA0_RAWTFR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWTFR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWTFR: CH5 (Bit 5) */ -#define GPDMA0_RAWTFR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWTFR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWTFR: CH6 (Bit 6) */ -#define GPDMA0_RAWTFR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWTFR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWTFR: CH7 (Bit 7) */ -#define GPDMA0_RAWTFR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWTFR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_RAWBLOCK ------------------------------ */ -#define GPDMA0_RAWBLOCK_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWBLOCK: CH0 (Bit 0) */ -#define GPDMA0_RAWBLOCK_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWBLOCK: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWBLOCK: CH1 (Bit 1) */ -#define GPDMA0_RAWBLOCK_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWBLOCK: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWBLOCK: CH2 (Bit 2) */ -#define GPDMA0_RAWBLOCK_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWBLOCK: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWBLOCK: CH3 (Bit 3) */ -#define GPDMA0_RAWBLOCK_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWBLOCK: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWBLOCK: CH4 (Bit 4) */ -#define GPDMA0_RAWBLOCK_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWBLOCK: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWBLOCK: CH5 (Bit 5) */ -#define GPDMA0_RAWBLOCK_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWBLOCK: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWBLOCK: CH6 (Bit 6) */ -#define GPDMA0_RAWBLOCK_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWBLOCK: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWBLOCK: CH7 (Bit 7) */ -#define GPDMA0_RAWBLOCK_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWBLOCK: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_RAWSRCTRAN ----------------------------- */ -#define GPDMA0_RAWSRCTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWSRCTRAN: CH0 (Bit 0) */ -#define GPDMA0_RAWSRCTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWSRCTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWSRCTRAN: CH1 (Bit 1) */ -#define GPDMA0_RAWSRCTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWSRCTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWSRCTRAN: CH2 (Bit 2) */ -#define GPDMA0_RAWSRCTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWSRCTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWSRCTRAN: CH3 (Bit 3) */ -#define GPDMA0_RAWSRCTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWSRCTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWSRCTRAN: CH4 (Bit 4) */ -#define GPDMA0_RAWSRCTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWSRCTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWSRCTRAN: CH5 (Bit 5) */ -#define GPDMA0_RAWSRCTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWSRCTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWSRCTRAN: CH6 (Bit 6) */ -#define GPDMA0_RAWSRCTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWSRCTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWSRCTRAN: CH7 (Bit 7) */ -#define GPDMA0_RAWSRCTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWSRCTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_RAWDSTTRAN ----------------------------- */ -#define GPDMA0_RAWDSTTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWDSTTRAN: CH0 (Bit 0) */ -#define GPDMA0_RAWDSTTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWDSTTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWDSTTRAN: CH1 (Bit 1) */ -#define GPDMA0_RAWDSTTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWDSTTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWDSTTRAN: CH2 (Bit 2) */ -#define GPDMA0_RAWDSTTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWDSTTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWDSTTRAN: CH3 (Bit 3) */ -#define GPDMA0_RAWDSTTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWDSTTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWDSTTRAN: CH4 (Bit 4) */ -#define GPDMA0_RAWDSTTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWDSTTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWDSTTRAN: CH5 (Bit 5) */ -#define GPDMA0_RAWDSTTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWDSTTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWDSTTRAN: CH6 (Bit 6) */ -#define GPDMA0_RAWDSTTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWDSTTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWDSTTRAN: CH7 (Bit 7) */ -#define GPDMA0_RAWDSTTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWDSTTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- GPDMA0_RAWERR ------------------------------- */ -#define GPDMA0_RAWERR_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWERR: CH0 (Bit 0) */ -#define GPDMA0_RAWERR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWERR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWERR: CH1 (Bit 1) */ -#define GPDMA0_RAWERR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWERR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWERR: CH2 (Bit 2) */ -#define GPDMA0_RAWERR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWERR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWERR: CH3 (Bit 3) */ -#define GPDMA0_RAWERR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWERR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWERR: CH4 (Bit 4) */ -#define GPDMA0_RAWERR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWERR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWERR: CH5 (Bit 5) */ -#define GPDMA0_RAWERR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWERR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWERR: CH6 (Bit 6) */ -#define GPDMA0_RAWERR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWERR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWERR: CH7 (Bit 7) */ -#define GPDMA0_RAWERR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWERR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_STATUSTFR ------------------------------ */ -#define GPDMA0_STATUSTFR_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSTFR: CH0 (Bit 0) */ -#define GPDMA0_STATUSTFR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSTFR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSTFR: CH1 (Bit 1) */ -#define GPDMA0_STATUSTFR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSTFR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSTFR: CH2 (Bit 2) */ -#define GPDMA0_STATUSTFR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSTFR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSTFR: CH3 (Bit 3) */ -#define GPDMA0_STATUSTFR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSTFR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSTFR: CH4 (Bit 4) */ -#define GPDMA0_STATUSTFR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSTFR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSTFR: CH5 (Bit 5) */ -#define GPDMA0_STATUSTFR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSTFR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSTFR: CH6 (Bit 6) */ -#define GPDMA0_STATUSTFR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSTFR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSTFR: CH7 (Bit 7) */ -#define GPDMA0_STATUSTFR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSTFR: CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_STATUSBLOCK ----------------------------- */ -#define GPDMA0_STATUSBLOCK_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSBLOCK: CH0 (Bit 0) */ -#define GPDMA0_STATUSBLOCK_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSBLOCK: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSBLOCK: CH1 (Bit 1) */ -#define GPDMA0_STATUSBLOCK_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSBLOCK: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSBLOCK: CH2 (Bit 2) */ -#define GPDMA0_STATUSBLOCK_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSBLOCK: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSBLOCK: CH3 (Bit 3) */ -#define GPDMA0_STATUSBLOCK_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSBLOCK: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSBLOCK: CH4 (Bit 4) */ -#define GPDMA0_STATUSBLOCK_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSBLOCK: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSBLOCK: CH5 (Bit 5) */ -#define GPDMA0_STATUSBLOCK_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSBLOCK: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSBLOCK: CH6 (Bit 6) */ -#define GPDMA0_STATUSBLOCK_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSBLOCK: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSBLOCK: CH7 (Bit 7) */ -#define GPDMA0_STATUSBLOCK_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSBLOCK: CH7 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- GPDMA0_STATUSSRCTRAN ---------------------------- */ -#define GPDMA0_STATUSSRCTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSSRCTRAN: CH0 (Bit 0) */ -#define GPDMA0_STATUSSRCTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSSRCTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSSRCTRAN: CH1 (Bit 1) */ -#define GPDMA0_STATUSSRCTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSSRCTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSSRCTRAN: CH2 (Bit 2) */ -#define GPDMA0_STATUSSRCTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSSRCTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSSRCTRAN: CH3 (Bit 3) */ -#define GPDMA0_STATUSSRCTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSSRCTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSSRCTRAN: CH4 (Bit 4) */ -#define GPDMA0_STATUSSRCTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSSRCTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSSRCTRAN: CH5 (Bit 5) */ -#define GPDMA0_STATUSSRCTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSSRCTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSSRCTRAN: CH6 (Bit 6) */ -#define GPDMA0_STATUSSRCTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSSRCTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSSRCTRAN: CH7 (Bit 7) */ -#define GPDMA0_STATUSSRCTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSSRCTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- GPDMA0_STATUSDSTTRAN ---------------------------- */ -#define GPDMA0_STATUSDSTTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSDSTTRAN: CH0 (Bit 0) */ -#define GPDMA0_STATUSDSTTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSDSTTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSDSTTRAN: CH1 (Bit 1) */ -#define GPDMA0_STATUSDSTTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSDSTTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSDSTTRAN: CH2 (Bit 2) */ -#define GPDMA0_STATUSDSTTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSDSTTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSDSTTRAN: CH3 (Bit 3) */ -#define GPDMA0_STATUSDSTTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSDSTTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSDSTTRAN: CH4 (Bit 4) */ -#define GPDMA0_STATUSDSTTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSDSTTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSDSTTRAN: CH5 (Bit 5) */ -#define GPDMA0_STATUSDSTTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSDSTTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSDSTTRAN: CH6 (Bit 6) */ -#define GPDMA0_STATUSDSTTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSDSTTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSDSTTRAN: CH7 (Bit 7) */ -#define GPDMA0_STATUSDSTTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSDSTTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_STATUSERR ------------------------------ */ -#define GPDMA0_STATUSERR_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSERR: CH0 (Bit 0) */ -#define GPDMA0_STATUSERR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSERR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSERR: CH1 (Bit 1) */ -#define GPDMA0_STATUSERR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSERR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSERR: CH2 (Bit 2) */ -#define GPDMA0_STATUSERR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSERR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSERR: CH3 (Bit 3) */ -#define GPDMA0_STATUSERR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSERR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSERR: CH4 (Bit 4) */ -#define GPDMA0_STATUSERR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSERR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSERR: CH5 (Bit 5) */ -#define GPDMA0_STATUSERR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSERR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSERR: CH6 (Bit 6) */ -#define GPDMA0_STATUSERR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSERR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSERR: CH7 (Bit 7) */ -#define GPDMA0_STATUSERR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSERR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_MASKTFR ------------------------------- */ -#define GPDMA0_MASKTFR_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKTFR: CH0 (Bit 0) */ -#define GPDMA0_MASKTFR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKTFR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKTFR: CH1 (Bit 1) */ -#define GPDMA0_MASKTFR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKTFR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKTFR: CH2 (Bit 2) */ -#define GPDMA0_MASKTFR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKTFR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKTFR: CH3 (Bit 3) */ -#define GPDMA0_MASKTFR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKTFR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKTFR: CH4 (Bit 4) */ -#define GPDMA0_MASKTFR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKTFR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKTFR: CH5 (Bit 5) */ -#define GPDMA0_MASKTFR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKTFR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKTFR: CH6 (Bit 6) */ -#define GPDMA0_MASKTFR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKTFR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKTFR: CH7 (Bit 7) */ -#define GPDMA0_MASKTFR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKTFR: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKTFR: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKTFR_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKTFR: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKTFR: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKTFR_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKTFR: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKTFR: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKTFR_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKTFR: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKTFR: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKTFR_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKTFR: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKTFR: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKTFR_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKTFR: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKTFR: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKTFR_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKTFR: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKTFR: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKTFR_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKTFR: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKTFR: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKTFR_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKTFR: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_MASKBLOCK ------------------------------ */ -#define GPDMA0_MASKBLOCK_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKBLOCK: CH0 (Bit 0) */ -#define GPDMA0_MASKBLOCK_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKBLOCK: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKBLOCK: CH1 (Bit 1) */ -#define GPDMA0_MASKBLOCK_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKBLOCK: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKBLOCK: CH2 (Bit 2) */ -#define GPDMA0_MASKBLOCK_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKBLOCK: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKBLOCK: CH3 (Bit 3) */ -#define GPDMA0_MASKBLOCK_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKBLOCK: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKBLOCK: CH4 (Bit 4) */ -#define GPDMA0_MASKBLOCK_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKBLOCK: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKBLOCK: CH5 (Bit 5) */ -#define GPDMA0_MASKBLOCK_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKBLOCK: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKBLOCK: CH6 (Bit 6) */ -#define GPDMA0_MASKBLOCK_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKBLOCK: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKBLOCK: CH7 (Bit 7) */ -#define GPDMA0_MASKBLOCK_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKBLOCK: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKBLOCK: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKBLOCK_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKBLOCK: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKBLOCK: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKBLOCK_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKBLOCK: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKBLOCK: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKBLOCK_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKBLOCK: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKBLOCK: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKBLOCK_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKBLOCK: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKBLOCK: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKBLOCK_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKBLOCK: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKBLOCK: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKBLOCK_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKBLOCK: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKBLOCK: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKBLOCK_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKBLOCK: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKBLOCK: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKBLOCK_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKBLOCK: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_MASKSRCTRAN ----------------------------- */ -#define GPDMA0_MASKSRCTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKSRCTRAN: CH0 (Bit 0) */ -#define GPDMA0_MASKSRCTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKSRCTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKSRCTRAN: CH1 (Bit 1) */ -#define GPDMA0_MASKSRCTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKSRCTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKSRCTRAN: CH2 (Bit 2) */ -#define GPDMA0_MASKSRCTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKSRCTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKSRCTRAN: CH3 (Bit 3) */ -#define GPDMA0_MASKSRCTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKSRCTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKSRCTRAN: CH4 (Bit 4) */ -#define GPDMA0_MASKSRCTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKSRCTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKSRCTRAN: CH5 (Bit 5) */ -#define GPDMA0_MASKSRCTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKSRCTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKSRCTRAN: CH6 (Bit 6) */ -#define GPDMA0_MASKSRCTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKSRCTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKSRCTRAN: CH7 (Bit 7) */ -#define GPDMA0_MASKSRCTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKSRCTRAN: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKSRCTRAN_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKSRCTRAN_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKSRCTRAN_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKSRCTRAN_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKSRCTRAN_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKSRCTRAN_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKSRCTRAN_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKSRCTRAN_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_MASKDSTTRAN ----------------------------- */ -#define GPDMA0_MASKDSTTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKDSTTRAN: CH0 (Bit 0) */ -#define GPDMA0_MASKDSTTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKDSTTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKDSTTRAN: CH1 (Bit 1) */ -#define GPDMA0_MASKDSTTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKDSTTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKDSTTRAN: CH2 (Bit 2) */ -#define GPDMA0_MASKDSTTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKDSTTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKDSTTRAN: CH3 (Bit 3) */ -#define GPDMA0_MASKDSTTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKDSTTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKDSTTRAN: CH4 (Bit 4) */ -#define GPDMA0_MASKDSTTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKDSTTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKDSTTRAN: CH5 (Bit 5) */ -#define GPDMA0_MASKDSTTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKDSTTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKDSTTRAN: CH6 (Bit 6) */ -#define GPDMA0_MASKDSTTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKDSTTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKDSTTRAN: CH7 (Bit 7) */ -#define GPDMA0_MASKDSTTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKDSTTRAN: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKDSTTRAN_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKDSTTRAN_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKDSTTRAN_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKDSTTRAN_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKDSTTRAN_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKDSTTRAN_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKDSTTRAN_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKDSTTRAN_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_MASKERR ------------------------------- */ -#define GPDMA0_MASKERR_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKERR: CH0 (Bit 0) */ -#define GPDMA0_MASKERR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKERR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKERR: CH1 (Bit 1) */ -#define GPDMA0_MASKERR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKERR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKERR: CH2 (Bit 2) */ -#define GPDMA0_MASKERR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKERR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKERR: CH3 (Bit 3) */ -#define GPDMA0_MASKERR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKERR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKERR: CH4 (Bit 4) */ -#define GPDMA0_MASKERR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKERR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKERR: CH5 (Bit 5) */ -#define GPDMA0_MASKERR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKERR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKERR: CH6 (Bit 6) */ -#define GPDMA0_MASKERR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKERR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKERR: CH7 (Bit 7) */ -#define GPDMA0_MASKERR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKERR: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKERR: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKERR_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKERR: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKERR: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKERR_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKERR: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKERR: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKERR_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKERR: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKERR: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKERR_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKERR: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKERR: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKERR_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKERR: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKERR: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKERR_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKERR: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKERR: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKERR_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKERR: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKERR: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKERR_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKERR: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_CLEARTFR ------------------------------ */ -#define GPDMA0_CLEARTFR_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARTFR: CH0 (Bit 0) */ -#define GPDMA0_CLEARTFR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARTFR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARTFR: CH1 (Bit 1) */ -#define GPDMA0_CLEARTFR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARTFR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARTFR: CH2 (Bit 2) */ -#define GPDMA0_CLEARTFR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARTFR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARTFR: CH3 (Bit 3) */ -#define GPDMA0_CLEARTFR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARTFR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARTFR: CH4 (Bit 4) */ -#define GPDMA0_CLEARTFR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARTFR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARTFR: CH5 (Bit 5) */ -#define GPDMA0_CLEARTFR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARTFR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARTFR: CH6 (Bit 6) */ -#define GPDMA0_CLEARTFR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARTFR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARTFR: CH7 (Bit 7) */ -#define GPDMA0_CLEARTFR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARTFR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_CLEARBLOCK ----------------------------- */ -#define GPDMA0_CLEARBLOCK_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARBLOCK: CH0 (Bit 0) */ -#define GPDMA0_CLEARBLOCK_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARBLOCK: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARBLOCK: CH1 (Bit 1) */ -#define GPDMA0_CLEARBLOCK_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARBLOCK: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARBLOCK: CH2 (Bit 2) */ -#define GPDMA0_CLEARBLOCK_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARBLOCK: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARBLOCK: CH3 (Bit 3) */ -#define GPDMA0_CLEARBLOCK_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARBLOCK: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARBLOCK: CH4 (Bit 4) */ -#define GPDMA0_CLEARBLOCK_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARBLOCK: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARBLOCK: CH5 (Bit 5) */ -#define GPDMA0_CLEARBLOCK_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARBLOCK: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARBLOCK: CH6 (Bit 6) */ -#define GPDMA0_CLEARBLOCK_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARBLOCK: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARBLOCK: CH7 (Bit 7) */ -#define GPDMA0_CLEARBLOCK_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARBLOCK: CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_CLEARSRCTRAN ---------------------------- */ -#define GPDMA0_CLEARSRCTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARSRCTRAN: CH0 (Bit 0) */ -#define GPDMA0_CLEARSRCTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARSRCTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARSRCTRAN: CH1 (Bit 1) */ -#define GPDMA0_CLEARSRCTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARSRCTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARSRCTRAN: CH2 (Bit 2) */ -#define GPDMA0_CLEARSRCTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARSRCTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARSRCTRAN: CH3 (Bit 3) */ -#define GPDMA0_CLEARSRCTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARSRCTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARSRCTRAN: CH4 (Bit 4) */ -#define GPDMA0_CLEARSRCTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARSRCTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARSRCTRAN: CH5 (Bit 5) */ -#define GPDMA0_CLEARSRCTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARSRCTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARSRCTRAN: CH6 (Bit 6) */ -#define GPDMA0_CLEARSRCTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARSRCTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARSRCTRAN: CH7 (Bit 7) */ -#define GPDMA0_CLEARSRCTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARSRCTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_CLEARDSTTRAN ---------------------------- */ -#define GPDMA0_CLEARDSTTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARDSTTRAN: CH0 (Bit 0) */ -#define GPDMA0_CLEARDSTTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARDSTTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARDSTTRAN: CH1 (Bit 1) */ -#define GPDMA0_CLEARDSTTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARDSTTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARDSTTRAN: CH2 (Bit 2) */ -#define GPDMA0_CLEARDSTTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARDSTTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARDSTTRAN: CH3 (Bit 3) */ -#define GPDMA0_CLEARDSTTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARDSTTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARDSTTRAN: CH4 (Bit 4) */ -#define GPDMA0_CLEARDSTTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARDSTTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARDSTTRAN: CH5 (Bit 5) */ -#define GPDMA0_CLEARDSTTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARDSTTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARDSTTRAN: CH6 (Bit 6) */ -#define GPDMA0_CLEARDSTTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARDSTTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARDSTTRAN: CH7 (Bit 7) */ -#define GPDMA0_CLEARDSTTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARDSTTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_CLEARERR ------------------------------ */ -#define GPDMA0_CLEARERR_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARERR: CH0 (Bit 0) */ -#define GPDMA0_CLEARERR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARERR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARERR: CH1 (Bit 1) */ -#define GPDMA0_CLEARERR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARERR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARERR: CH2 (Bit 2) */ -#define GPDMA0_CLEARERR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARERR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARERR: CH3 (Bit 3) */ -#define GPDMA0_CLEARERR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARERR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARERR: CH4 (Bit 4) */ -#define GPDMA0_CLEARERR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARERR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARERR: CH5 (Bit 5) */ -#define GPDMA0_CLEARERR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARERR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARERR: CH6 (Bit 6) */ -#define GPDMA0_CLEARERR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARERR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARERR: CH7 (Bit 7) */ -#define GPDMA0_CLEARERR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARERR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_STATUSINT ------------------------------ */ -#define GPDMA0_STATUSINT_TFR_Pos \ - (0UL) /*!< GPDMA0 STATUSINT: TFR (Bit 0) */ -#define GPDMA0_STATUSINT_TFR_Msk \ - (0x1UL) /*!< GPDMA0 STATUSINT: TFR (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSINT_BLOCK_Pos \ - (1UL) /*!< GPDMA0 STATUSINT: BLOCK (Bit 1) */ -#define GPDMA0_STATUSINT_BLOCK_Msk \ - (0x2UL) /*!< GPDMA0 STATUSINT: BLOCK (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSINT_SRCT_Pos \ - (2UL) /*!< GPDMA0 STATUSINT: SRCT (Bit 2) */ -#define GPDMA0_STATUSINT_SRCT_Msk \ - (0x4UL) /*!< GPDMA0 STATUSINT: SRCT (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSINT_DSTT_Pos \ - (3UL) /*!< GPDMA0 STATUSINT: DSTT (Bit 3) */ -#define GPDMA0_STATUSINT_DSTT_Msk \ - (0x8UL) /*!< GPDMA0 STATUSINT: DSTT (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSINT_ERR_Pos \ - (4UL) /*!< GPDMA0 STATUSINT: ERR (Bit 4) */ -#define GPDMA0_STATUSINT_ERR_Msk \ - (0x10UL) /*!< GPDMA0 STATUSINT: ERR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_REQSRCREG ------------------------------ */ -#define GPDMA0_REQSRCREG_CH0_Pos \ - (0UL) /*!< GPDMA0 REQSRCREG: CH0 (Bit 0) */ -#define GPDMA0_REQSRCREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 REQSRCREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH1_Pos \ - (1UL) /*!< GPDMA0 REQSRCREG: CH1 (Bit 1) */ -#define GPDMA0_REQSRCREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 REQSRCREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH2_Pos \ - (2UL) /*!< GPDMA0 REQSRCREG: CH2 (Bit 2) */ -#define GPDMA0_REQSRCREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 REQSRCREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH3_Pos \ - (3UL) /*!< GPDMA0 REQSRCREG: CH3 (Bit 3) */ -#define GPDMA0_REQSRCREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 REQSRCREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH4_Pos \ - (4UL) /*!< GPDMA0 REQSRCREG: CH4 (Bit 4) */ -#define GPDMA0_REQSRCREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 REQSRCREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH5_Pos \ - (5UL) /*!< GPDMA0 REQSRCREG: CH5 (Bit 5) */ -#define GPDMA0_REQSRCREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 REQSRCREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH6_Pos \ - (6UL) /*!< GPDMA0 REQSRCREG: CH6 (Bit 6) */ -#define GPDMA0_REQSRCREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 REQSRCREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH7_Pos \ - (7UL) /*!< GPDMA0 REQSRCREG: CH7 (Bit 7) */ -#define GPDMA0_REQSRCREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 REQSRCREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 REQSRCREG: WE_CH0 (Bit 8) */ -#define GPDMA0_REQSRCREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 REQSRCREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 REQSRCREG: WE_CH1 (Bit 9) */ -#define GPDMA0_REQSRCREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 REQSRCREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 REQSRCREG: WE_CH2 (Bit 10) */ -#define GPDMA0_REQSRCREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 REQSRCREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 REQSRCREG: WE_CH3 (Bit 11) */ -#define GPDMA0_REQSRCREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 REQSRCREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 REQSRCREG: WE_CH4 (Bit 12) */ -#define GPDMA0_REQSRCREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 REQSRCREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 REQSRCREG: WE_CH5 (Bit 13) */ -#define GPDMA0_REQSRCREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 REQSRCREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 REQSRCREG: WE_CH6 (Bit 14) */ -#define GPDMA0_REQSRCREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 REQSRCREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 REQSRCREG: WE_CH7 (Bit 15) */ -#define GPDMA0_REQSRCREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 REQSRCREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_REQDSTREG ------------------------------ */ -#define GPDMA0_REQDSTREG_CH0_Pos \ - (0UL) /*!< GPDMA0 REQDSTREG: CH0 (Bit 0) */ -#define GPDMA0_REQDSTREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 REQDSTREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH1_Pos \ - (1UL) /*!< GPDMA0 REQDSTREG: CH1 (Bit 1) */ -#define GPDMA0_REQDSTREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 REQDSTREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH2_Pos \ - (2UL) /*!< GPDMA0 REQDSTREG: CH2 (Bit 2) */ -#define GPDMA0_REQDSTREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 REQDSTREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH3_Pos \ - (3UL) /*!< GPDMA0 REQDSTREG: CH3 (Bit 3) */ -#define GPDMA0_REQDSTREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 REQDSTREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH4_Pos \ - (4UL) /*!< GPDMA0 REQDSTREG: CH4 (Bit 4) */ -#define GPDMA0_REQDSTREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 REQDSTREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH5_Pos \ - (5UL) /*!< GPDMA0 REQDSTREG: CH5 (Bit 5) */ -#define GPDMA0_REQDSTREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 REQDSTREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH6_Pos \ - (6UL) /*!< GPDMA0 REQDSTREG: CH6 (Bit 6) */ -#define GPDMA0_REQDSTREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 REQDSTREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH7_Pos \ - (7UL) /*!< GPDMA0 REQDSTREG: CH7 (Bit 7) */ -#define GPDMA0_REQDSTREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 REQDSTREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 REQDSTREG: WE_CH0 (Bit 8) */ -#define GPDMA0_REQDSTREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 REQDSTREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 REQDSTREG: WE_CH1 (Bit 9) */ -#define GPDMA0_REQDSTREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 REQDSTREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 REQDSTREG: WE_CH2 (Bit 10) */ -#define GPDMA0_REQDSTREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 REQDSTREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 REQDSTREG: WE_CH3 (Bit 11) */ -#define GPDMA0_REQDSTREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 REQDSTREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 REQDSTREG: WE_CH4 (Bit 12) */ -#define GPDMA0_REQDSTREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 REQDSTREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 REQDSTREG: WE_CH5 (Bit 13) */ -#define GPDMA0_REQDSTREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 REQDSTREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 REQDSTREG: WE_CH6 (Bit 14) */ -#define GPDMA0_REQDSTREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 REQDSTREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 REQDSTREG: WE_CH7 (Bit 15) */ -#define GPDMA0_REQDSTREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 REQDSTREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_SGLREQSRCREG ---------------------------- */ -#define GPDMA0_SGLREQSRCREG_CH0_Pos \ - (0UL) /*!< GPDMA0 SGLREQSRCREG: CH0 (Bit 0) */ -#define GPDMA0_SGLREQSRCREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 SGLREQSRCREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH1_Pos \ - (1UL) /*!< GPDMA0 SGLREQSRCREG: CH1 (Bit 1) */ -#define GPDMA0_SGLREQSRCREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 SGLREQSRCREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH2_Pos \ - (2UL) /*!< GPDMA0 SGLREQSRCREG: CH2 (Bit 2) */ -#define GPDMA0_SGLREQSRCREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 SGLREQSRCREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH3_Pos \ - (3UL) /*!< GPDMA0 SGLREQSRCREG: CH3 (Bit 3) */ -#define GPDMA0_SGLREQSRCREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 SGLREQSRCREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH4_Pos \ - (4UL) /*!< GPDMA0 SGLREQSRCREG: CH4 (Bit 4) */ -#define GPDMA0_SGLREQSRCREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 SGLREQSRCREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH5_Pos \ - (5UL) /*!< GPDMA0 SGLREQSRCREG: CH5 (Bit 5) */ -#define GPDMA0_SGLREQSRCREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 SGLREQSRCREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH6_Pos \ - (6UL) /*!< GPDMA0 SGLREQSRCREG: CH6 (Bit 6) */ -#define GPDMA0_SGLREQSRCREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 SGLREQSRCREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH7_Pos \ - (7UL) /*!< GPDMA0 SGLREQSRCREG: CH7 (Bit 7) */ -#define GPDMA0_SGLREQSRCREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 SGLREQSRCREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH0 (Bit 8) */ -#define GPDMA0_SGLREQSRCREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH1 (Bit 9) */ -#define GPDMA0_SGLREQSRCREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH2 (Bit 10) */ -#define GPDMA0_SGLREQSRCREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH3 (Bit 11) */ -#define GPDMA0_SGLREQSRCREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH4 (Bit 12) */ -#define GPDMA0_SGLREQSRCREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH5 (Bit 13) */ -#define GPDMA0_SGLREQSRCREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH6 (Bit 14) */ -#define GPDMA0_SGLREQSRCREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH7 (Bit 15) */ -#define GPDMA0_SGLREQSRCREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_SGLREQDSTREG ---------------------------- */ -#define GPDMA0_SGLREQDSTREG_CH0_Pos \ - (0UL) /*!< GPDMA0 SGLREQDSTREG: CH0 (Bit 0) */ -#define GPDMA0_SGLREQDSTREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 SGLREQDSTREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH1_Pos \ - (1UL) /*!< GPDMA0 SGLREQDSTREG: CH1 (Bit 1) */ -#define GPDMA0_SGLREQDSTREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 SGLREQDSTREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH2_Pos \ - (2UL) /*!< GPDMA0 SGLREQDSTREG: CH2 (Bit 2) */ -#define GPDMA0_SGLREQDSTREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 SGLREQDSTREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH3_Pos \ - (3UL) /*!< GPDMA0 SGLREQDSTREG: CH3 (Bit 3) */ -#define GPDMA0_SGLREQDSTREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 SGLREQDSTREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH4_Pos \ - (4UL) /*!< GPDMA0 SGLREQDSTREG: CH4 (Bit 4) */ -#define GPDMA0_SGLREQDSTREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 SGLREQDSTREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH5_Pos \ - (5UL) /*!< GPDMA0 SGLREQDSTREG: CH5 (Bit 5) */ -#define GPDMA0_SGLREQDSTREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 SGLREQDSTREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH6_Pos \ - (6UL) /*!< GPDMA0 SGLREQDSTREG: CH6 (Bit 6) */ -#define GPDMA0_SGLREQDSTREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 SGLREQDSTREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH7_Pos \ - (7UL) /*!< GPDMA0 SGLREQDSTREG: CH7 (Bit 7) */ -#define GPDMA0_SGLREQDSTREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 SGLREQDSTREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH0 (Bit 8) */ -#define GPDMA0_SGLREQDSTREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH1 (Bit 9) */ -#define GPDMA0_SGLREQDSTREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH2 (Bit 10) */ -#define GPDMA0_SGLREQDSTREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH3 (Bit 11) */ -#define GPDMA0_SGLREQDSTREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH4 (Bit 12) */ -#define GPDMA0_SGLREQDSTREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH5 (Bit 13) */ -#define GPDMA0_SGLREQDSTREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH6 (Bit 14) */ -#define GPDMA0_SGLREQDSTREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH7 (Bit 15) */ -#define GPDMA0_SGLREQDSTREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_LSTSRCREG ------------------------------ */ -#define GPDMA0_LSTSRCREG_CH0_Pos \ - (0UL) /*!< GPDMA0 LSTSRCREG: CH0 (Bit 0) */ -#define GPDMA0_LSTSRCREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 LSTSRCREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH1_Pos \ - (1UL) /*!< GPDMA0 LSTSRCREG: CH1 (Bit 1) */ -#define GPDMA0_LSTSRCREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 LSTSRCREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH2_Pos \ - (2UL) /*!< GPDMA0 LSTSRCREG: CH2 (Bit 2) */ -#define GPDMA0_LSTSRCREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 LSTSRCREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH3_Pos \ - (3UL) /*!< GPDMA0 LSTSRCREG: CH3 (Bit 3) */ -#define GPDMA0_LSTSRCREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 LSTSRCREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH4_Pos \ - (4UL) /*!< GPDMA0 LSTSRCREG: CH4 (Bit 4) */ -#define GPDMA0_LSTSRCREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 LSTSRCREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH5_Pos \ - (5UL) /*!< GPDMA0 LSTSRCREG: CH5 (Bit 5) */ -#define GPDMA0_LSTSRCREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 LSTSRCREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH6_Pos \ - (6UL) /*!< GPDMA0 LSTSRCREG: CH6 (Bit 6) */ -#define GPDMA0_LSTSRCREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 LSTSRCREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH7_Pos \ - (7UL) /*!< GPDMA0 LSTSRCREG: CH7 (Bit 7) */ -#define GPDMA0_LSTSRCREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 LSTSRCREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 LSTSRCREG: WE_CH0 (Bit 8) */ -#define GPDMA0_LSTSRCREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 LSTSRCREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 LSTSRCREG: WE_CH1 (Bit 9) */ -#define GPDMA0_LSTSRCREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 LSTSRCREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 LSTSRCREG: WE_CH2 (Bit 10) */ -#define GPDMA0_LSTSRCREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 LSTSRCREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 LSTSRCREG: WE_CH3 (Bit 11) */ -#define GPDMA0_LSTSRCREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 LSTSRCREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 LSTSRCREG: WE_CH4 (Bit 12) */ -#define GPDMA0_LSTSRCREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 LSTSRCREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 LSTSRCREG: WE_CH5 (Bit 13) */ -#define GPDMA0_LSTSRCREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 LSTSRCREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 LSTSRCREG: WE_CH6 (Bit 14) */ -#define GPDMA0_LSTSRCREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 LSTSRCREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 LSTSRCREG: WE_CH7 (Bit 15) */ -#define GPDMA0_LSTSRCREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 LSTSRCREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_LSTDSTREG ------------------------------ */ -#define GPDMA0_LSTDSTREG_CH0_Pos \ - (0UL) /*!< GPDMA0 LSTDSTREG: CH0 (Bit 0) */ -#define GPDMA0_LSTDSTREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 LSTDSTREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH1_Pos \ - (1UL) /*!< GPDMA0 LSTDSTREG: CH1 (Bit 1) */ -#define GPDMA0_LSTDSTREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 LSTDSTREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH2_Pos \ - (2UL) /*!< GPDMA0 LSTDSTREG: CH2 (Bit 2) */ -#define GPDMA0_LSTDSTREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 LSTDSTREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH3_Pos \ - (3UL) /*!< GPDMA0 LSTDSTREG: CH3 (Bit 3) */ -#define GPDMA0_LSTDSTREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 LSTDSTREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH4_Pos \ - (4UL) /*!< GPDMA0 LSTDSTREG: CH4 (Bit 4) */ -#define GPDMA0_LSTDSTREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 LSTDSTREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH5_Pos \ - (5UL) /*!< GPDMA0 LSTDSTREG: CH5 (Bit 5) */ -#define GPDMA0_LSTDSTREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 LSTDSTREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH6_Pos \ - (6UL) /*!< GPDMA0 LSTDSTREG: CH6 (Bit 6) */ -#define GPDMA0_LSTDSTREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 LSTDSTREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH7_Pos \ - (7UL) /*!< GPDMA0 LSTDSTREG: CH7 (Bit 7) */ -#define GPDMA0_LSTDSTREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 LSTDSTREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 LSTDSTREG: WE_CH0 (Bit 8) */ -#define GPDMA0_LSTDSTREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 LSTDSTREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 LSTDSTREG: WE_CH1 (Bit 9) */ -#define GPDMA0_LSTDSTREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 LSTDSTREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 LSTDSTREG: WE_CH2 (Bit 10) */ -#define GPDMA0_LSTDSTREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 LSTDSTREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 LSTDSTREG: WE_CH3 (Bit 11) */ -#define GPDMA0_LSTDSTREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 LSTDSTREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 LSTDSTREG: WE_CH4 (Bit 12) */ -#define GPDMA0_LSTDSTREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 LSTDSTREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 LSTDSTREG: WE_CH5 (Bit 13) */ -#define GPDMA0_LSTDSTREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 LSTDSTREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 LSTDSTREG: WE_CH6 (Bit 14) */ -#define GPDMA0_LSTDSTREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 LSTDSTREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 LSTDSTREG: WE_CH7 (Bit 15) */ -#define GPDMA0_LSTDSTREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 LSTDSTREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_DMACFGREG ------------------------------ */ -#define GPDMA0_DMACFGREG_DMA_EN_Pos \ - (0UL) /*!< GPDMA0 DMACFGREG: DMA_EN (Bit 0) */ -#define GPDMA0_DMACFGREG_DMA_EN_Msk \ - (0x1UL) /*!< GPDMA0 DMACFGREG: DMA_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_CHENREG ------------------------------- */ -#define GPDMA0_CHENREG_CH_Pos \ - (0UL) /*!< GPDMA0 CHENREG: CH (Bit 0) */ -#define GPDMA0_CHENREG_CH_Msk \ - (0xffUL) /*!< GPDMA0 CHENREG: CH (Bitfield-Mask: 0xff) */ -#define GPDMA0_CHENREG_WE_CH_Pos \ - (8UL) /*!< GPDMA0 CHENREG: WE_CH (Bit 8) */ -#define GPDMA0_CHENREG_WE_CH_Msk \ - (0xff00UL) /*!< GPDMA0 CHENREG: WE_CH (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- GPDMA0_ID --------------------------------- */ -#define GPDMA0_ID_VALUE_Pos \ - (0UL) /*!< GPDMA0 ID: VALUE (Bit 0) */ -#define GPDMA0_ID_VALUE_Msk \ - (0xffffffffUL) /*!< GPDMA0 ID: VALUE (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- GPDMA0_TYPE -------------------------------- */ -#define GPDMA0_TYPE_VALUE_Pos \ - (0UL) /*!< GPDMA0 TYPE: VALUE (Bit 0) */ -#define GPDMA0_TYPE_VALUE_Msk \ - (0xffffffffUL) /*!< GPDMA0 TYPE: VALUE (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- GPDMA0_VERSION ------------------------------- */ -#define GPDMA0_VERSION_VALUE_Pos \ - (0UL) /*!< GPDMA0 VERSION: VALUE (Bit 0) */ -#define GPDMA0_VERSION_VALUE_Msk \ - (0xffffffffUL) /*!< GPDMA0 VERSION: VALUE (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'GPDMA0_CH0_1' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ GPDMA0_CH_SAR ------------------------------ */ -#define GPDMA0_CH_SAR_SAR_Pos \ - (0UL) /*!< GPDMA0_CH0_1 SAR: SAR (Bit 0) */ -#define GPDMA0_CH_SAR_SAR_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 SAR: SAR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ GPDMA0_CH_DAR ------------------------------ */ -#define GPDMA0_CH_DAR_DAR_Pos \ - (0UL) /*!< GPDMA0_CH0_1 DAR: DAR (Bit 0) */ -#define GPDMA0_CH_DAR_DAR_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 DAR: DAR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ GPDMA0_CH_LLP ------------------------------ */ -#define GPDMA0_CH_LLP_LOC_Pos \ - (2UL) /*!< GPDMA0_CH0_1 LLP: LOC (Bit 2) */ -#define GPDMA0_CH_LLP_LOC_Msk \ - (0xfffffffcUL) /*!< GPDMA0_CH0_1 LLP: LOC (Bitfield-Mask: 0x3fffffff) */ - -/* ------------------------------ GPDMA0_CH_CTLL ----------------------------- */ -#define GPDMA0_CH_CTLL_INT_EN_Pos \ - (0UL) /*!< GPDMA0_CH0_1 CTLL: INT_EN (Bit 0) */ -#define GPDMA0_CH_CTLL_INT_EN_Msk \ - (0x1UL) /*!< GPDMA0_CH0_1 CTLL: INT_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CTLL_DST_TR_WIDTH_Pos \ - (1UL) /*!< GPDMA0_CH0_1 CTLL: DST_TR_WIDTH (Bit 1) */ -#define GPDMA0_CH_CTLL_DST_TR_WIDTH_Msk \ - (0xeUL) /*!< GPDMA0_CH0_1 CTLL: DST_TR_WIDTH (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_SRC_TR_WIDTH_Pos \ - (4UL) /*!< GPDMA0_CH0_1 CTLL: SRC_TR_WIDTH (Bit 4) */ -#define GPDMA0_CH_CTLL_SRC_TR_WIDTH_Msk \ - (0x70UL) /*!< GPDMA0_CH0_1 CTLL: SRC_TR_WIDTH (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_DINC_Pos \ - (7UL) /*!< GPDMA0_CH0_1 CTLL: DINC (Bit 7) */ -#define GPDMA0_CH_CTLL_DINC_Msk \ - (0x180UL) /*!< GPDMA0_CH0_1 CTLL: DINC (Bitfield-Mask: 0x03) */ -#define GPDMA0_CH_CTLL_SINC_Pos \ - (9UL) /*!< GPDMA0_CH0_1 CTLL: SINC (Bit 9) */ -#define GPDMA0_CH_CTLL_SINC_Msk \ - (0x600UL) /*!< GPDMA0_CH0_1 CTLL: SINC (Bitfield-Mask: 0x03) */ -#define GPDMA0_CH_CTLL_DEST_MSIZE_Pos \ - (11UL) /*!< GPDMA0_CH0_1 CTLL: DEST_MSIZE (Bit 11) */ -#define GPDMA0_CH_CTLL_DEST_MSIZE_Msk \ - (0x3800UL) /*!< GPDMA0_CH0_1 CTLL: DEST_MSIZE (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_SRC_MSIZE_Pos \ - (14UL) /*!< GPDMA0_CH0_1 CTLL: SRC_MSIZE (Bit 14) */ -#define GPDMA0_CH_CTLL_SRC_MSIZE_Msk \ - (0x1c000UL) /*!< GPDMA0_CH0_1 CTLL: SRC_MSIZE (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_SRC_GATHER_EN_Pos \ - (17UL) /*!< GPDMA0_CH0_1 CTLL: SRC_GATHER_EN (Bit 17) */ -#define GPDMA0_CH_CTLL_SRC_GATHER_EN_Msk \ - (0x20000UL) /*!< GPDMA0_CH0_1 CTLL: SRC_GATHER_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CTLL_DST_SCATTER_EN_Pos \ - (18UL) /*!< GPDMA0_CH0_1 CTLL: DST_SCATTER_EN (Bit 18) */ -#define GPDMA0_CH_CTLL_DST_SCATTER_EN_Msk \ - (0x40000UL) /*!< GPDMA0_CH0_1 CTLL: DST_SCATTER_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CTLL_TT_FC_Pos \ - (20UL) /*!< GPDMA0_CH0_1 CTLL: TT_FC (Bit 20) */ -#define GPDMA0_CH_CTLL_TT_FC_Msk \ - (0x700000UL) /*!< GPDMA0_CH0_1 CTLL: TT_FC (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_LLP_DST_EN_Pos \ - (27UL) /*!< GPDMA0_CH0_1 CTLL: LLP_DST_EN (Bit 27) */ -#define GPDMA0_CH_CTLL_LLP_DST_EN_Msk \ - (0x8000000UL) /*!< GPDMA0_CH0_1 CTLL: LLP_DST_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CTLL_LLP_SRC_EN_Pos \ - (28UL) /*!< GPDMA0_CH0_1 CTLL: LLP_SRC_EN (Bit 28) */ -#define GPDMA0_CH_CTLL_LLP_SRC_EN_Msk \ - (0x10000000UL) /*!< GPDMA0_CH0_1 CTLL: LLP_SRC_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_CH_CTLH ----------------------------- */ -#define GPDMA0_CH_CTLH_BLOCK_TS_Pos \ - (0UL) /*!< GPDMA0_CH0_1 CTLH: BLOCK_TS (Bit 0) */ -#define GPDMA0_CH_CTLH_BLOCK_TS_Msk \ - (0xfffUL) /*!< GPDMA0_CH0_1 CTLH: BLOCK_TS (Bitfield-Mask: 0xfff) */ -#define GPDMA0_CH_CTLH_DONE_Pos \ - (12UL) /*!< GPDMA0_CH0_1 CTLH: DONE (Bit 12) */ -#define GPDMA0_CH_CTLH_DONE_Msk \ - (0x1000UL) /*!< GPDMA0_CH0_1 CTLH: DONE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_CH_SSTAT ----------------------------- */ -#define GPDMA0_CH_SSTAT_SSTAT_Pos \ - (0UL) /*!< GPDMA0_CH0_1 SSTAT: SSTAT (Bit 0) */ -#define GPDMA0_CH_SSTAT_SSTAT_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 SSTAT: SSTAT (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- GPDMA0_CH_DSTAT ----------------------------- */ -#define GPDMA0_CH_DSTAT_DSTAT_Pos \ - (0UL) /*!< GPDMA0_CH0_1 DSTAT: DSTAT (Bit 0) */ -#define GPDMA0_CH_DSTAT_DSTAT_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 DSTAT: DSTAT (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- GPDMA0_CH_SSTATAR ---------------------------- */ -#define GPDMA0_CH_SSTATAR_SSTATAR_Pos \ - (0UL) /*!< GPDMA0_CH0_1 SSTATAR: SSTATAR (Bit 0) */ -#define GPDMA0_CH_SSTATAR_SSTATAR_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 SSTATAR: SSTATAR (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- GPDMA0_CH_DSTATAR ---------------------------- */ -#define GPDMA0_CH_DSTATAR_DSTATAR_Pos \ - (0UL) /*!< GPDMA0_CH0_1 DSTATAR: DSTATAR (Bit 0) */ -#define GPDMA0_CH_DSTATAR_DSTATAR_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 DSTATAR: DSTATAR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ GPDMA0_CH_CFGL ----------------------------- */ -#define GPDMA0_CH_CFGL_CH_PRIOR_Pos \ - (5UL) /*!< GPDMA0_CH0_1 CFGL: CH_PRIOR (Bit 5) */ -#define GPDMA0_CH_CFGL_CH_PRIOR_Msk \ - (0xe0UL) /*!< GPDMA0_CH0_1 CFGL: CH_PRIOR (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CFGL_CH_SUSP_Pos \ - (8UL) /*!< GPDMA0_CH0_1 CFGL: CH_SUSP (Bit 8) */ -#define GPDMA0_CH_CFGL_CH_SUSP_Msk \ - (0x100UL) /*!< GPDMA0_CH0_1 CFGL: CH_SUSP (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_FIFO_EMPTY_Pos \ - (9UL) /*!< GPDMA0_CH0_1 CFGL: FIFO_EMPTY (Bit 9) */ -#define GPDMA0_CH_CFGL_FIFO_EMPTY_Msk \ - (0x200UL) /*!< GPDMA0_CH0_1 CFGL: FIFO_EMPTY (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_HS_SEL_DST_Pos \ - (10UL) /*!< GPDMA0_CH0_1 CFGL: HS_SEL_DST (Bit 10) */ -#define GPDMA0_CH_CFGL_HS_SEL_DST_Msk \ - (0x400UL) /*!< GPDMA0_CH0_1 CFGL: HS_SEL_DST (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_HS_SEL_SRC_Pos \ - (11UL) /*!< GPDMA0_CH0_1 CFGL: HS_SEL_SRC (Bit 11) */ -#define GPDMA0_CH_CFGL_HS_SEL_SRC_Msk \ - (0x800UL) /*!< GPDMA0_CH0_1 CFGL: HS_SEL_SRC (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_LOCK_CH_L_Pos \ - (12UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_CH_L (Bit 12) */ -#define GPDMA0_CH_CFGL_LOCK_CH_L_Msk \ - (0x3000UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_CH_L (Bitfield-Mask: 0x03) */ -#define GPDMA0_CH_CFGL_LOCK_B_L_Pos \ - (14UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_B_L (Bit 14) */ -#define GPDMA0_CH_CFGL_LOCK_B_L_Msk \ - (0xc000UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_B_L (Bitfield-Mask: 0x03) */ -#define GPDMA0_CH_CFGL_LOCK_CH_Pos \ - (16UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_CH (Bit 16) */ -#define GPDMA0_CH_CFGL_LOCK_CH_Msk \ - (0x10000UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_CH (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_LOCK_B_Pos \ - (17UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_B (Bit 17) */ -#define GPDMA0_CH_CFGL_LOCK_B_Msk \ - (0x20000UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_B (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_DST_HS_POL_Pos \ - (18UL) /*!< GPDMA0_CH0_1 CFGL: DST_HS_POL (Bit 18) */ -#define GPDMA0_CH_CFGL_DST_HS_POL_Msk \ - (0x40000UL) /*!< GPDMA0_CH0_1 CFGL: DST_HS_POL (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_SRC_HS_POL_Pos \ - (19UL) /*!< GPDMA0_CH0_1 CFGL: SRC_HS_POL (Bit 19) */ -#define GPDMA0_CH_CFGL_SRC_HS_POL_Msk \ - (0x80000UL) /*!< GPDMA0_CH0_1 CFGL: SRC_HS_POL (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_MAX_ABRST_Pos \ - (20UL) /*!< GPDMA0_CH0_1 CFGL: MAX_ABRST (Bit 20) */ -#define GPDMA0_CH_CFGL_MAX_ABRST_Msk \ - (0x3ff00000UL) /*!< GPDMA0_CH0_1 CFGL: MAX_ABRST (Bitfield-Mask: 0x3ff) */ -#define GPDMA0_CH_CFGL_RELOAD_SRC_Pos \ - (30UL) /*!< GPDMA0_CH0_1 CFGL: RELOAD_SRC (Bit 30) */ -#define GPDMA0_CH_CFGL_RELOAD_SRC_Msk \ - (0x40000000UL) /*!< GPDMA0_CH0_1 CFGL: RELOAD_SRC (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_RELOAD_DST_Pos \ - (31UL) /*!< GPDMA0_CH0_1 CFGL: RELOAD_DST (Bit 31) */ -#define GPDMA0_CH_CFGL_RELOAD_DST_Msk \ - (0x80000000UL) /*!< GPDMA0_CH0_1 CFGL: RELOAD_DST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_CH_CFGH ----------------------------- */ -#define GPDMA0_CH_CFGH_FCMODE_Pos \ - (0UL) /*!< GPDMA0_CH0_1 CFGH: FCMODE (Bit 0) */ -#define GPDMA0_CH_CFGH_FCMODE_Msk \ - (0x1UL) /*!< GPDMA0_CH0_1 CFGH: FCMODE (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGH_FIFO_MODE_Pos \ - (1UL) /*!< GPDMA0_CH0_1 CFGH: FIFO_MODE (Bit 1) */ -#define GPDMA0_CH_CFGH_FIFO_MODE_Msk \ - (0x2UL) /*!< GPDMA0_CH0_1 CFGH: FIFO_MODE (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGH_PROTCTL_Pos \ - (2UL) /*!< GPDMA0_CH0_1 CFGH: PROTCTL (Bit 2) */ -#define GPDMA0_CH_CFGH_PROTCTL_Msk \ - (0x1cUL) /*!< GPDMA0_CH0_1 CFGH: PROTCTL (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CFGH_DS_UPD_EN_Pos \ - (5UL) /*!< GPDMA0_CH0_1 CFGH: DS_UPD_EN (Bit 5) */ -#define GPDMA0_CH_CFGH_DS_UPD_EN_Msk \ - (0x20UL) /*!< GPDMA0_CH0_1 CFGH: DS_UPD_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGH_SS_UPD_EN_Pos \ - (6UL) /*!< GPDMA0_CH0_1 CFGH: SS_UPD_EN (Bit 6) */ -#define GPDMA0_CH_CFGH_SS_UPD_EN_Msk \ - (0x40UL) /*!< GPDMA0_CH0_1 CFGH: SS_UPD_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGH_SRC_PER_Pos \ - (7UL) /*!< GPDMA0_CH0_1 CFGH: SRC_PER (Bit 7) */ -#define GPDMA0_CH_CFGH_SRC_PER_Msk \ - (0x780UL) /*!< GPDMA0_CH0_1 CFGH: SRC_PER (Bitfield-Mask: 0x0f) */ -#define GPDMA0_CH_CFGH_DEST_PER_Pos \ - (11UL) /*!< GPDMA0_CH0_1 CFGH: DEST_PER (Bit 11) */ -#define GPDMA0_CH_CFGH_DEST_PER_Msk \ - (0x7800UL) /*!< GPDMA0_CH0_1 CFGH: DEST_PER (Bitfield-Mask: 0x0f) */ - -/* ------------------------------ GPDMA0_CH_SGR ------------------------------ */ -#define GPDMA0_CH_SGR_SGI_Pos \ - (0UL) /*!< GPDMA0_CH0_1 SGR: SGI (Bit 0) */ -#define GPDMA0_CH_SGR_SGI_Msk \ - (0xfffffUL) /*!< GPDMA0_CH0_1 SGR: SGI (Bitfield-Mask: 0xfffff) */ -#define GPDMA0_CH_SGR_SGC_Pos \ - (20UL) /*!< GPDMA0_CH0_1 SGR: SGC (Bit 20) */ -#define GPDMA0_CH_SGR_SGC_Msk \ - (0xfff00000UL) /*!< GPDMA0_CH0_1 SGR: SGC (Bitfield-Mask: 0xfff) */ - -/* ------------------------------ GPDMA0_CH_DSR ------------------------------ */ -#define GPDMA0_CH_DSR_DSI_Pos \ - (0UL) /*!< GPDMA0_CH0_1 DSR: DSI (Bit 0) */ -#define GPDMA0_CH_DSR_DSI_Msk \ - (0xfffffUL) /*!< GPDMA0_CH0_1 DSR: DSI (Bitfield-Mask: 0xfffff) */ -#define GPDMA0_CH_DSR_DSC_Pos \ - (20UL) /*!< GPDMA0_CH0_1 DSR: DSC (Bit 20) */ -#define GPDMA0_CH_DSR_DSC_Msk \ - (0xfff00000UL) /*!< GPDMA0_CH0_1 DSR: DSC (Bitfield-Mask: 0xfff) */ - -/* ================================================================================ */ -/* ================ struct 'FCE' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- FCE_CLC ---------------------------------- */ -#define FCE_CLC_DISR_Pos (0UL) /*!< FCE CLC: DISR (Bit 0) */ -#define FCE_CLC_DISR_Msk (0x1UL) /*!< FCE CLC: DISR (Bitfield-Mask: 0x01) */ -#define FCE_CLC_DISS_Pos (1UL) /*!< FCE CLC: DISS (Bit 1) */ -#define FCE_CLC_DISS_Msk (0x2UL) /*!< FCE CLC: DISS (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- FCE_ID ----------------------------------- */ -#define FCE_ID_MOD_REV_Pos (0UL) /*!< FCE ID: MOD_REV (Bit 0) */ -#define FCE_ID_MOD_REV_Msk \ - (0xffUL) /*!< FCE ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define FCE_ID_MOD_TYPE_Pos \ - (8UL) /*!< FCE ID: MOD_TYPE (Bit 8) */ -#define FCE_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< FCE ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define FCE_ID_MOD_NUMBER_Pos \ - (16UL) /*!< FCE ID: MOD_NUMBER (Bit 16) */ -#define FCE_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< FCE ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ Group 'FCE_KE' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- FCE_KE_IR --------------------------------- */ -#define FCE_KE_IR_IR_Pos (0UL) /*!< FCE_KE IR: IR (Bit 0) */ -#define FCE_KE_IR_IR_Msk \ - (0xffffffffUL) /*!< FCE_KE IR: IR (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- FCE_KE_RES --------------------------------- */ -#define FCE_KE_RES_RES_Pos (0UL) /*!< FCE_KE RES: RES (Bit 0) */ -#define FCE_KE_RES_RES_Msk \ - (0xffffffffUL) /*!< FCE_KE RES: RES (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- FCE_KE_CFG --------------------------------- */ -#define FCE_KE_CFG_CMI_Pos (0UL) /*!< FCE_KE CFG: CMI (Bit 0) */ -#define FCE_KE_CFG_CMI_Msk \ - (0x1UL) /*!< FCE_KE CFG: CMI (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_CEI_Pos (1UL) /*!< FCE_KE CFG: CEI (Bit 1) */ -#define FCE_KE_CFG_CEI_Msk \ - (0x2UL) /*!< FCE_KE CFG: CEI (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_LEI_Pos (2UL) /*!< FCE_KE CFG: LEI (Bit 2) */ -#define FCE_KE_CFG_LEI_Msk \ - (0x4UL) /*!< FCE_KE CFG: LEI (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_BEI_Pos (3UL) /*!< FCE_KE CFG: BEI (Bit 3) */ -#define FCE_KE_CFG_BEI_Msk \ - (0x8UL) /*!< FCE_KE CFG: BEI (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_CCE_Pos (4UL) /*!< FCE_KE CFG: CCE (Bit 4) */ -#define FCE_KE_CFG_CCE_Msk \ - (0x10UL) /*!< FCE_KE CFG: CCE (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_ALR_Pos (5UL) /*!< FCE_KE CFG: ALR (Bit 5) */ -#define FCE_KE_CFG_ALR_Msk \ - (0x20UL) /*!< FCE_KE CFG: ALR (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_REFIN_Pos \ - (8UL) /*!< FCE_KE CFG: REFIN (Bit 8) */ -#define FCE_KE_CFG_REFIN_Msk \ - (0x100UL) /*!< FCE_KE CFG: REFIN (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_REFOUT_Pos \ - (9UL) /*!< FCE_KE CFG: REFOUT (Bit 9) */ -#define FCE_KE_CFG_REFOUT_Msk \ - (0x200UL) /*!< FCE_KE CFG: REFOUT (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_XSEL_Pos \ - (10UL) /*!< FCE_KE CFG: XSEL (Bit 10) */ -#define FCE_KE_CFG_XSEL_Msk \ - (0x400UL) /*!< FCE_KE CFG: XSEL (Bitfield-Mask: 0x01) */ - -/* --------------------------------- FCE_KE_STS --------------------------------- */ -#define FCE_KE_STS_CMF_Pos (0UL) /*!< FCE_KE STS: CMF (Bit 0) */ -#define FCE_KE_STS_CMF_Msk \ - (0x1UL) /*!< FCE_KE STS: CMF (Bitfield-Mask: 0x01) */ -#define FCE_KE_STS_CEF_Pos (1UL) /*!< FCE_KE STS: CEF (Bit 1) */ -#define FCE_KE_STS_CEF_Msk \ - (0x2UL) /*!< FCE_KE STS: CEF (Bitfield-Mask: 0x01) */ -#define FCE_KE_STS_LEF_Pos (2UL) /*!< FCE_KE STS: LEF (Bit 2) */ -#define FCE_KE_STS_LEF_Msk \ - (0x4UL) /*!< FCE_KE STS: LEF (Bitfield-Mask: 0x01) */ -#define FCE_KE_STS_BEF_Pos (3UL) /*!< FCE_KE STS: BEF (Bit 3) */ -#define FCE_KE_STS_BEF_Msk \ - (0x8UL) /*!< FCE_KE STS: BEF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- FCE_KE_LENGTH ------------------------------- */ -#define FCE_KE_LENGTH_LENGTH_Pos \ - (0UL) /*!< FCE_KE LENGTH: LENGTH (Bit 0) */ -#define FCE_KE_LENGTH_LENGTH_Msk \ - (0xffffUL) /*!< FCE_KE LENGTH: LENGTH (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- FCE_KE_CHECK -------------------------------- */ -#define FCE_KE_CHECK_CHECK_Pos \ - (0UL) /*!< FCE_KE CHECK: CHECK (Bit 0) */ -#define FCE_KE_CHECK_CHECK_Msk \ - (0xffffffffUL) /*!< FCE_KE CHECK: CHECK (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- FCE_KE_CRC --------------------------------- */ -#define FCE_KE_CRC_CRC_Pos (0UL) /*!< FCE_KE CRC: CRC (Bit 0) */ -#define FCE_KE_CRC_CRC_Msk \ - (0xffffffffUL) /*!< FCE_KE CRC: CRC (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- FCE_KE_CTR --------------------------------- */ -#define FCE_KE_CTR_FCM_Pos (0UL) /*!< FCE_KE CTR: FCM (Bit 0) */ -#define FCE_KE_CTR_FCM_Msk \ - (0x1UL) /*!< FCE_KE CTR: FCM (Bitfield-Mask: 0x01) */ -#define FCE_KE_CTR_FRM_CFG_Pos \ - (1UL) /*!< FCE_KE CTR: FRM_CFG (Bit 1) */ -#define FCE_KE_CTR_FRM_CFG_Msk \ - (0x2UL) /*!< FCE_KE CTR: FRM_CFG (Bitfield-Mask: 0x01) */ -#define FCE_KE_CTR_FRM_CHECK_Pos \ - (2UL) /*!< FCE_KE CTR: FRM_CHECK (Bit 2) */ -#define FCE_KE_CTR_FRM_CHECK_Msk \ - (0x4UL) /*!< FCE_KE CTR: FRM_CHECK (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'PBA' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- PBA_STS ---------------------------------- */ -#define PBA_STS_WERR_Pos (0UL) /*!< PBA STS: WERR (Bit 0) */ -#define PBA_STS_WERR_Msk (0x1UL) /*!< PBA STS: WERR (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PBA_WADDR --------------------------------- */ -#define PBA_WADDR_WADDR_Pos \ - (0UL) /*!< PBA WADDR: WADDR (Bit 0) */ -#define PBA_WADDR_WADDR_Msk \ - (0xffffffffUL) /*!< PBA WADDR: WADDR (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'FLASH' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- FLASH_ID ---------------------------------- */ -#define FLASH_ID_MOD_REV_Pos \ - (0UL) /*!< FLASH ID: MOD_REV (Bit 0) */ -#define FLASH_ID_MOD_REV_Msk \ - (0xffUL) /*!< FLASH ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define FLASH_ID_MOD_TYPE_Pos \ - (8UL) /*!< FLASH ID: MOD_TYPE (Bit 8) */ -#define FLASH_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< FLASH ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define FLASH_ID_MOD_NUMBER_Pos \ - (16UL) /*!< FLASH ID: MOD_NUMBER (Bit 16) */ -#define FLASH_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< FLASH ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- FLASH_FSR --------------------------------- */ -#define FLASH_FSR_PBUSY_Pos \ - (0UL) /*!< FLASH FSR: PBUSY (Bit 0) */ -#define FLASH_FSR_PBUSY_Msk \ - (0x1UL) /*!< FLASH FSR: PBUSY (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_FABUSY_Pos \ - (1UL) /*!< FLASH FSR: FABUSY (Bit 1) */ -#define FLASH_FSR_FABUSY_Msk \ - (0x2UL) /*!< FLASH FSR: FABUSY (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PROG_Pos (4UL) /*!< FLASH FSR: PROG (Bit 4) */ -#define FLASH_FSR_PROG_Msk \ - (0x10UL) /*!< FLASH FSR: PROG (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_ERASE_Pos \ - (5UL) /*!< FLASH FSR: ERASE (Bit 5) */ -#define FLASH_FSR_ERASE_Msk \ - (0x20UL) /*!< FLASH FSR: ERASE (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PFPAGE_Pos \ - (6UL) /*!< FLASH FSR: PFPAGE (Bit 6) */ -#define FLASH_FSR_PFPAGE_Msk \ - (0x40UL) /*!< FLASH FSR: PFPAGE (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PFOPER_Pos \ - (8UL) /*!< FLASH FSR: PFOPER (Bit 8) */ -#define FLASH_FSR_PFOPER_Msk \ - (0x100UL) /*!< FLASH FSR: PFOPER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_SQER_Pos \ - (10UL) /*!< FLASH FSR: SQER (Bit 10) */ -#define FLASH_FSR_SQER_Msk \ - (0x400UL) /*!< FLASH FSR: SQER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PROER_Pos \ - (11UL) /*!< FLASH FSR: PROER (Bit 11) */ -#define FLASH_FSR_PROER_Msk \ - (0x800UL) /*!< FLASH FSR: PROER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PFSBER_Pos \ - (12UL) /*!< FLASH FSR: PFSBER (Bit 12) */ -#define FLASH_FSR_PFSBER_Msk \ - (0x1000UL) /*!< FLASH FSR: PFSBER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PFDBER_Pos \ - (14UL) /*!< FLASH FSR: PFDBER (Bit 14) */ -#define FLASH_FSR_PFDBER_Msk \ - (0x4000UL) /*!< FLASH FSR: PFDBER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PROIN_Pos \ - (16UL) /*!< FLASH FSR: PROIN (Bit 16) */ -#define FLASH_FSR_PROIN_Msk \ - (0x10000UL) /*!< FLASH FSR: PROIN (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_RPROIN_Pos \ - (18UL) /*!< FLASH FSR: RPROIN (Bit 18) */ -#define FLASH_FSR_RPROIN_Msk \ - (0x40000UL) /*!< FLASH FSR: RPROIN (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_RPRODIS_Pos \ - (19UL) /*!< FLASH FSR: RPRODIS (Bit 19) */ -#define FLASH_FSR_RPRODIS_Msk \ - (0x80000UL) /*!< FLASH FSR: RPRODIS (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPROIN0_Pos \ - (21UL) /*!< FLASH FSR: WPROIN0 (Bit 21) */ -#define FLASH_FSR_WPROIN0_Msk \ - (0x200000UL) /*!< FLASH FSR: WPROIN0 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPROIN1_Pos \ - (22UL) /*!< FLASH FSR: WPROIN1 (Bit 22) */ -#define FLASH_FSR_WPROIN1_Msk \ - (0x400000UL) /*!< FLASH FSR: WPROIN1 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPROIN2_Pos \ - (23UL) /*!< FLASH FSR: WPROIN2 (Bit 23) */ -#define FLASH_FSR_WPROIN2_Msk \ - (0x800000UL) /*!< FLASH FSR: WPROIN2 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPRODIS0_Pos \ - (25UL) /*!< FLASH FSR: WPRODIS0 (Bit 25) */ -#define FLASH_FSR_WPRODIS0_Msk \ - (0x2000000UL) /*!< FLASH FSR: WPRODIS0 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPRODIS1_Pos \ - (26UL) /*!< FLASH FSR: WPRODIS1 (Bit 26) */ -#define FLASH_FSR_WPRODIS1_Msk \ - (0x4000000UL) /*!< FLASH FSR: WPRODIS1 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_SLM_Pos (28UL) /*!< FLASH FSR: SLM (Bit 28) */ -#define FLASH_FSR_SLM_Msk \ - (0x10000000UL) /*!< FLASH FSR: SLM (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_VER_Pos (31UL) /*!< FLASH FSR: VER (Bit 31) */ -#define FLASH_FSR_VER_Msk \ - (0x80000000UL) /*!< FLASH FSR: VER (Bitfield-Mask: 0x01) */ - -/* --------------------------------- FLASH_FCON --------------------------------- */ -#define FLASH_FCON_WSPFLASH_Pos \ - (0UL) /*!< FLASH FCON: WSPFLASH (Bit 0) */ -#define FLASH_FCON_WSPFLASH_Msk \ - (0xfUL) /*!< FLASH FCON: WSPFLASH (Bitfield-Mask: 0x0f) */ -#define FLASH_FCON_WSECPF_Pos \ - (4UL) /*!< FLASH FCON: WSECPF (Bit 4) */ -#define FLASH_FCON_WSECPF_Msk \ - (0x10UL) /*!< FLASH FCON: WSECPF (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_IDLE_Pos \ - (13UL) /*!< FLASH FCON: IDLE (Bit 13) */ -#define FLASH_FCON_IDLE_Msk \ - (0x2000UL) /*!< FLASH FCON: IDLE (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_ESLDIS_Pos \ - (14UL) /*!< FLASH FCON: ESLDIS (Bit 14) */ -#define FLASH_FCON_ESLDIS_Msk \ - (0x4000UL) /*!< FLASH FCON: ESLDIS (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_SLEEP_Pos \ - (15UL) /*!< FLASH FCON: SLEEP (Bit 15) */ -#define FLASH_FCON_SLEEP_Msk \ - (0x8000UL) /*!< FLASH FCON: SLEEP (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_RPA_Pos \ - (16UL) /*!< FLASH FCON: RPA (Bit 16) */ -#define FLASH_FCON_RPA_Msk \ - (0x10000UL) /*!< FLASH FCON: RPA (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_DCF_Pos \ - (17UL) /*!< FLASH FCON: DCF (Bit 17) */ -#define FLASH_FCON_DCF_Msk \ - (0x20000UL) /*!< FLASH FCON: DCF (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_DDF_Pos \ - (18UL) /*!< FLASH FCON: DDF (Bit 18) */ -#define FLASH_FCON_DDF_Msk \ - (0x40000UL) /*!< FLASH FCON: DDF (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_VOPERM_Pos \ - (24UL) /*!< FLASH FCON: VOPERM (Bit 24) */ -#define FLASH_FCON_VOPERM_Msk \ - (0x1000000UL) /*!< FLASH FCON: VOPERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_SQERM_Pos \ - (25UL) /*!< FLASH FCON: SQERM (Bit 25) */ -#define FLASH_FCON_SQERM_Msk \ - (0x2000000UL) /*!< FLASH FCON: SQERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_PROERM_Pos \ - (26UL) /*!< FLASH FCON: PROERM (Bit 26) */ -#define FLASH_FCON_PROERM_Msk \ - (0x4000000UL) /*!< FLASH FCON: PROERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_PFSBERM_Pos \ - (27UL) /*!< FLASH FCON: PFSBERM (Bit 27) */ -#define FLASH_FCON_PFSBERM_Msk \ - (0x8000000UL) /*!< FLASH FCON: PFSBERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_PFDBERM_Pos \ - (29UL) /*!< FLASH FCON: PFDBERM (Bit 29) */ -#define FLASH_FCON_PFDBERM_Msk \ - (0x20000000UL) /*!< FLASH FCON: PFDBERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_EOBM_Pos \ - (31UL) /*!< FLASH FCON: EOBM (Bit 31) */ -#define FLASH_FCON_EOBM_Msk \ - (0x80000000UL) /*!< FLASH FCON: EOBM (Bitfield-Mask: 0x01) */ - -/* --------------------------------- FLASH_MARP --------------------------------- */ -#define FLASH_MARP_MARGIN_Pos \ - (0UL) /*!< FLASH MARP: MARGIN (Bit 0) */ -#define FLASH_MARP_MARGIN_Msk \ - (0xfUL) /*!< FLASH MARP: MARGIN (Bitfield-Mask: 0x0f) */ -#define FLASH_MARP_TRAPDIS_Pos \ - (15UL) /*!< FLASH MARP: TRAPDIS (Bit 15) */ -#define FLASH_MARP_TRAPDIS_Msk \ - (0x8000UL) /*!< FLASH MARP: TRAPDIS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- FLASH_PROCON0 ------------------------------- */ -#define FLASH_PROCON0_S0L_Pos \ - (0UL) /*!< FLASH PROCON0: S0L (Bit 0) */ -#define FLASH_PROCON0_S0L_Msk \ - (0x1UL) /*!< FLASH PROCON0: S0L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S1L_Pos \ - (1UL) /*!< FLASH PROCON0: S1L (Bit 1) */ -#define FLASH_PROCON0_S1L_Msk \ - (0x2UL) /*!< FLASH PROCON0: S1L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S2L_Pos \ - (2UL) /*!< FLASH PROCON0: S2L (Bit 2) */ -#define FLASH_PROCON0_S2L_Msk \ - (0x4UL) /*!< FLASH PROCON0: S2L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S3L_Pos \ - (3UL) /*!< FLASH PROCON0: S3L (Bit 3) */ -#define FLASH_PROCON0_S3L_Msk \ - (0x8UL) /*!< FLASH PROCON0: S3L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S4L_Pos \ - (4UL) /*!< FLASH PROCON0: S4L (Bit 4) */ -#define FLASH_PROCON0_S4L_Msk \ - (0x10UL) /*!< FLASH PROCON0: S4L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S5L_Pos \ - (5UL) /*!< FLASH PROCON0: S5L (Bit 5) */ -#define FLASH_PROCON0_S5L_Msk \ - (0x20UL) /*!< FLASH PROCON0: S5L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S6L_Pos \ - (6UL) /*!< FLASH PROCON0: S6L (Bit 6) */ -#define FLASH_PROCON0_S6L_Msk \ - (0x40UL) /*!< FLASH PROCON0: S6L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S7L_Pos \ - (7UL) /*!< FLASH PROCON0: S7L (Bit 7) */ -#define FLASH_PROCON0_S7L_Msk \ - (0x80UL) /*!< FLASH PROCON0: S7L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S8L_Pos \ - (8UL) /*!< FLASH PROCON0: S8L (Bit 8) */ -#define FLASH_PROCON0_S8L_Msk \ - (0x100UL) /*!< FLASH PROCON0: S8L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_RPRO_Pos \ - (15UL) /*!< FLASH PROCON0: RPRO (Bit 15) */ -#define FLASH_PROCON0_RPRO_Msk \ - (0x8000UL) /*!< FLASH PROCON0: RPRO (Bitfield-Mask: 0x01) */ - -/* -------------------------------- FLASH_PROCON1 ------------------------------- */ -#define FLASH_PROCON1_S0L_Pos \ - (0UL) /*!< FLASH PROCON1: S0L (Bit 0) */ -#define FLASH_PROCON1_S0L_Msk \ - (0x1UL) /*!< FLASH PROCON1: S0L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S1L_Pos \ - (1UL) /*!< FLASH PROCON1: S1L (Bit 1) */ -#define FLASH_PROCON1_S1L_Msk \ - (0x2UL) /*!< FLASH PROCON1: S1L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S2L_Pos \ - (2UL) /*!< FLASH PROCON1: S2L (Bit 2) */ -#define FLASH_PROCON1_S2L_Msk \ - (0x4UL) /*!< FLASH PROCON1: S2L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S3L_Pos \ - (3UL) /*!< FLASH PROCON1: S3L (Bit 3) */ -#define FLASH_PROCON1_S3L_Msk \ - (0x8UL) /*!< FLASH PROCON1: S3L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S4L_Pos \ - (4UL) /*!< FLASH PROCON1: S4L (Bit 4) */ -#define FLASH_PROCON1_S4L_Msk \ - (0x10UL) /*!< FLASH PROCON1: S4L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S5L_Pos \ - (5UL) /*!< FLASH PROCON1: S5L (Bit 5) */ -#define FLASH_PROCON1_S5L_Msk \ - (0x20UL) /*!< FLASH PROCON1: S5L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S6L_Pos \ - (6UL) /*!< FLASH PROCON1: S6L (Bit 6) */ -#define FLASH_PROCON1_S6L_Msk \ - (0x40UL) /*!< FLASH PROCON1: S6L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S7L_Pos \ - (7UL) /*!< FLASH PROCON1: S7L (Bit 7) */ -#define FLASH_PROCON1_S7L_Msk \ - (0x80UL) /*!< FLASH PROCON1: S7L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S8L_Pos \ - (8UL) /*!< FLASH PROCON1: S8L (Bit 8) */ -#define FLASH_PROCON1_S8L_Msk \ - (0x100UL) /*!< FLASH PROCON1: S8L (Bitfield-Mask: 0x01) */ - -/* -------------------------------- FLASH_PROCON2 ------------------------------- */ -#define FLASH_PROCON2_S0ROM_Pos \ - (0UL) /*!< FLASH PROCON2: S0ROM (Bit 0) */ -#define FLASH_PROCON2_S0ROM_Msk \ - (0x1UL) /*!< FLASH PROCON2: S0ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S1ROM_Pos \ - (1UL) /*!< FLASH PROCON2: S1ROM (Bit 1) */ -#define FLASH_PROCON2_S1ROM_Msk \ - (0x2UL) /*!< FLASH PROCON2: S1ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S2ROM_Pos \ - (2UL) /*!< FLASH PROCON2: S2ROM (Bit 2) */ -#define FLASH_PROCON2_S2ROM_Msk \ - (0x4UL) /*!< FLASH PROCON2: S2ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S3ROM_Pos \ - (3UL) /*!< FLASH PROCON2: S3ROM (Bit 3) */ -#define FLASH_PROCON2_S3ROM_Msk \ - (0x8UL) /*!< FLASH PROCON2: S3ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S4ROM_Pos \ - (4UL) /*!< FLASH PROCON2: S4ROM (Bit 4) */ -#define FLASH_PROCON2_S4ROM_Msk \ - (0x10UL) /*!< FLASH PROCON2: S4ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S5ROM_Pos \ - (5UL) /*!< FLASH PROCON2: S5ROM (Bit 5) */ -#define FLASH_PROCON2_S5ROM_Msk \ - (0x20UL) /*!< FLASH PROCON2: S5ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S6ROM_Pos \ - (6UL) /*!< FLASH PROCON2: S6ROM (Bit 6) */ -#define FLASH_PROCON2_S6ROM_Msk \ - (0x40UL) /*!< FLASH PROCON2: S6ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S7ROM_Pos \ - (7UL) /*!< FLASH PROCON2: S7ROM (Bit 7) */ -#define FLASH_PROCON2_S7ROM_Msk \ - (0x80UL) /*!< FLASH PROCON2: S7ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S8ROM_Pos \ - (8UL) /*!< FLASH PROCON2: S8ROM (Bit 8) */ -#define FLASH_PROCON2_S8ROM_Msk \ - (0x100UL) /*!< FLASH PROCON2: S8ROM (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'PREF' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PREF_PCON --------------------------------- */ -#define PREF_PCON_IBYP_Pos (0UL) /*!< PREF PCON: IBYP (Bit 0) */ -#define PREF_PCON_IBYP_Msk \ - (0x1UL) /*!< PREF PCON: IBYP (Bitfield-Mask: 0x01) */ -#define PREF_PCON_IINV_Pos (1UL) /*!< PREF PCON: IINV (Bit 1) */ -#define PREF_PCON_IINV_Msk \ - (0x2UL) /*!< PREF PCON: IINV (Bitfield-Mask: 0x01) */ -#define PREF_PCON_DBYP_Pos (4UL) /*!< PREF PCON: DBYP (Bit 4) */ -#define PREF_PCON_DBYP_Msk \ - (0x10UL) /*!< PREF PCON: DBYP (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'PMU' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- PMU_ID ----------------------------------- */ -#define PMU_ID_MOD_REV_Pos (0UL) /*!< PMU ID: MOD_REV (Bit 0) */ -#define PMU_ID_MOD_REV_Msk \ - (0xffUL) /*!< PMU ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define PMU_ID_MOD_TYPE_Pos \ - (8UL) /*!< PMU ID: MOD_TYPE (Bit 8) */ -#define PMU_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< PMU ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define PMU_ID_MOD_NUMBER_Pos \ - (16UL) /*!< PMU ID: MOD_NUMBER (Bit 16) */ -#define PMU_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< PMU ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ struct 'WDT' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- WDT_ID ----------------------------------- */ -#define WDT_ID_MOD_REV_Pos (0UL) /*!< WDT ID: MOD_REV (Bit 0) */ -#define WDT_ID_MOD_REV_Msk \ - (0xffUL) /*!< WDT ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define WDT_ID_MOD_TYPE_Pos \ - (8UL) /*!< WDT ID: MOD_TYPE (Bit 8) */ -#define WDT_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< WDT ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define WDT_ID_MOD_NUMBER_Pos \ - (16UL) /*!< WDT ID: MOD_NUMBER (Bit 16) */ -#define WDT_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< WDT ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- WDT_CTR ---------------------------------- */ -#define WDT_CTR_ENB_Pos (0UL) /*!< WDT CTR: ENB (Bit 0) */ -#define WDT_CTR_ENB_Msk (0x1UL) /*!< WDT CTR: ENB (Bitfield-Mask: 0x01) */ -#define WDT_CTR_PRE_Pos (1UL) /*!< WDT CTR: PRE (Bit 1) */ -#define WDT_CTR_PRE_Msk (0x2UL) /*!< WDT CTR: PRE (Bitfield-Mask: 0x01) */ -#define WDT_CTR_DSP_Pos (4UL) /*!< WDT CTR: DSP (Bit 4) */ -#define WDT_CTR_DSP_Msk (0x10UL) /*!< WDT CTR: DSP (Bitfield-Mask: 0x01) */ -#define WDT_CTR_SPW_Pos (8UL) /*!< WDT CTR: SPW (Bit 8) */ -#define WDT_CTR_SPW_Msk \ - (0xff00UL) /*!< WDT CTR: SPW (Bitfield-Mask: 0xff) */ - -/* ----------------------------------- WDT_SRV ---------------------------------- */ -#define WDT_SRV_SRV_Pos (0UL) /*!< WDT SRV: SRV (Bit 0) */ -#define WDT_SRV_SRV_Msk \ - (0xffffffffUL) /*!< WDT SRV: SRV (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------------- WDT_TIM ---------------------------------- */ -#define WDT_TIM_TIM_Pos (0UL) /*!< WDT TIM: TIM (Bit 0) */ -#define WDT_TIM_TIM_Msk \ - (0xffffffffUL) /*!< WDT TIM: TIM (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------------- WDT_WLB ---------------------------------- */ -#define WDT_WLB_WLB_Pos (0UL) /*!< WDT WLB: WLB (Bit 0) */ -#define WDT_WLB_WLB_Msk \ - (0xffffffffUL) /*!< WDT WLB: WLB (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------------- WDT_WUB ---------------------------------- */ -#define WDT_WUB_WUB_Pos (0UL) /*!< WDT WUB: WUB (Bit 0) */ -#define WDT_WUB_WUB_Msk \ - (0xffffffffUL) /*!< WDT WUB: WUB (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- WDT_WDTSTS --------------------------------- */ -#define WDT_WDTSTS_ALMS_Pos \ - (0UL) /*!< WDT WDTSTS: ALMS (Bit 0) */ -#define WDT_WDTSTS_ALMS_Msk \ - (0x1UL) /*!< WDT WDTSTS: ALMS (Bitfield-Mask: 0x01) */ - -/* --------------------------------- WDT_WDTCLR --------------------------------- */ -#define WDT_WDTCLR_ALMC_Pos \ - (0UL) /*!< WDT WDTCLR: ALMC (Bit 0) */ -#define WDT_WDTCLR_ALMC_Msk \ - (0x1UL) /*!< WDT WDTCLR: ALMC (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'RTC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- RTC_ID ----------------------------------- */ -#define RTC_ID_MOD_REV_Pos (0UL) /*!< RTC ID: MOD_REV (Bit 0) */ -#define RTC_ID_MOD_REV_Msk \ - (0xffUL) /*!< RTC ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define RTC_ID_MOD_TYPE_Pos \ - (8UL) /*!< RTC ID: MOD_TYPE (Bit 8) */ -#define RTC_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< RTC ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define RTC_ID_MOD_NUMBER_Pos \ - (16UL) /*!< RTC ID: MOD_NUMBER (Bit 16) */ -#define RTC_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< RTC ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- RTC_CTR ---------------------------------- */ -#define RTC_CTR_ENB_Pos (0UL) /*!< RTC CTR: ENB (Bit 0) */ -#define RTC_CTR_ENB_Msk (0x1UL) /*!< RTC CTR: ENB (Bitfield-Mask: 0x01) */ -#define RTC_CTR_TAE_Pos (2UL) /*!< RTC CTR: TAE (Bit 2) */ -#define RTC_CTR_TAE_Msk (0x4UL) /*!< RTC CTR: TAE (Bitfield-Mask: 0x01) */ -#define RTC_CTR_ESEC_Pos (8UL) /*!< RTC CTR: ESEC (Bit 8) */ -#define RTC_CTR_ESEC_Msk \ - (0x100UL) /*!< RTC CTR: ESEC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EMIC_Pos (9UL) /*!< RTC CTR: EMIC (Bit 9) */ -#define RTC_CTR_EMIC_Msk \ - (0x200UL) /*!< RTC CTR: EMIC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EHOC_Pos (10UL) /*!< RTC CTR: EHOC (Bit 10) */ -#define RTC_CTR_EHOC_Msk \ - (0x400UL) /*!< RTC CTR: EHOC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EDAC_Pos (11UL) /*!< RTC CTR: EDAC (Bit 11) */ -#define RTC_CTR_EDAC_Msk \ - (0x800UL) /*!< RTC CTR: EDAC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EMOC_Pos (13UL) /*!< RTC CTR: EMOC (Bit 13) */ -#define RTC_CTR_EMOC_Msk \ - (0x2000UL) /*!< RTC CTR: EMOC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EYEC_Pos (14UL) /*!< RTC CTR: EYEC (Bit 14) */ -#define RTC_CTR_EYEC_Msk \ - (0x4000UL) /*!< RTC CTR: EYEC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_DIV_Pos (16UL) /*!< RTC CTR: DIV (Bit 16) */ -#define RTC_CTR_DIV_Msk \ - (0xffff0000UL) /*!< RTC CTR: DIV (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- RTC_RAWSTAT -------------------------------- */ -#define RTC_RAWSTAT_RPSE_Pos \ - (0UL) /*!< RTC RAWSTAT: RPSE (Bit 0) */ -#define RTC_RAWSTAT_RPSE_Msk \ - (0x1UL) /*!< RTC RAWSTAT: RPSE (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPMI_Pos \ - (1UL) /*!< RTC RAWSTAT: RPMI (Bit 1) */ -#define RTC_RAWSTAT_RPMI_Msk \ - (0x2UL) /*!< RTC RAWSTAT: RPMI (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPHO_Pos \ - (2UL) /*!< RTC RAWSTAT: RPHO (Bit 2) */ -#define RTC_RAWSTAT_RPHO_Msk \ - (0x4UL) /*!< RTC RAWSTAT: RPHO (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPDA_Pos \ - (3UL) /*!< RTC RAWSTAT: RPDA (Bit 3) */ -#define RTC_RAWSTAT_RPDA_Msk \ - (0x8UL) /*!< RTC RAWSTAT: RPDA (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPMO_Pos \ - (5UL) /*!< RTC RAWSTAT: RPMO (Bit 5) */ -#define RTC_RAWSTAT_RPMO_Msk \ - (0x20UL) /*!< RTC RAWSTAT: RPMO (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPYE_Pos \ - (6UL) /*!< RTC RAWSTAT: RPYE (Bit 6) */ -#define RTC_RAWSTAT_RPYE_Msk \ - (0x40UL) /*!< RTC RAWSTAT: RPYE (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RAI_Pos \ - (8UL) /*!< RTC RAWSTAT: RAI (Bit 8) */ -#define RTC_RAWSTAT_RAI_Msk \ - (0x100UL) /*!< RTC RAWSTAT: RAI (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- RTC_STSSR --------------------------------- */ -#define RTC_STSSR_SPSE_Pos (0UL) /*!< RTC STSSR: SPSE (Bit 0) */ -#define RTC_STSSR_SPSE_Msk \ - (0x1UL) /*!< RTC STSSR: SPSE (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPMI_Pos (1UL) /*!< RTC STSSR: SPMI (Bit 1) */ -#define RTC_STSSR_SPMI_Msk \ - (0x2UL) /*!< RTC STSSR: SPMI (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPHO_Pos (2UL) /*!< RTC STSSR: SPHO (Bit 2) */ -#define RTC_STSSR_SPHO_Msk \ - (0x4UL) /*!< RTC STSSR: SPHO (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPDA_Pos (3UL) /*!< RTC STSSR: SPDA (Bit 3) */ -#define RTC_STSSR_SPDA_Msk \ - (0x8UL) /*!< RTC STSSR: SPDA (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPMO_Pos (5UL) /*!< RTC STSSR: SPMO (Bit 5) */ -#define RTC_STSSR_SPMO_Msk \ - (0x20UL) /*!< RTC STSSR: SPMO (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPYE_Pos (6UL) /*!< RTC STSSR: SPYE (Bit 6) */ -#define RTC_STSSR_SPYE_Msk \ - (0x40UL) /*!< RTC STSSR: SPYE (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SAI_Pos (8UL) /*!< RTC STSSR: SAI (Bit 8) */ -#define RTC_STSSR_SAI_Msk \ - (0x100UL) /*!< RTC STSSR: SAI (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- RTC_MSKSR --------------------------------- */ -#define RTC_MSKSR_MPSE_Pos (0UL) /*!< RTC MSKSR: MPSE (Bit 0) */ -#define RTC_MSKSR_MPSE_Msk \ - (0x1UL) /*!< RTC MSKSR: MPSE (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPMI_Pos (1UL) /*!< RTC MSKSR: MPMI (Bit 1) */ -#define RTC_MSKSR_MPMI_Msk \ - (0x2UL) /*!< RTC MSKSR: MPMI (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPHO_Pos (2UL) /*!< RTC MSKSR: MPHO (Bit 2) */ -#define RTC_MSKSR_MPHO_Msk \ - (0x4UL) /*!< RTC MSKSR: MPHO (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPDA_Pos (3UL) /*!< RTC MSKSR: MPDA (Bit 3) */ -#define RTC_MSKSR_MPDA_Msk \ - (0x8UL) /*!< RTC MSKSR: MPDA (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPMO_Pos (5UL) /*!< RTC MSKSR: MPMO (Bit 5) */ -#define RTC_MSKSR_MPMO_Msk \ - (0x20UL) /*!< RTC MSKSR: MPMO (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPYE_Pos (6UL) /*!< RTC MSKSR: MPYE (Bit 6) */ -#define RTC_MSKSR_MPYE_Msk \ - (0x40UL) /*!< RTC MSKSR: MPYE (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MAI_Pos (8UL) /*!< RTC MSKSR: MAI (Bit 8) */ -#define RTC_MSKSR_MAI_Msk \ - (0x100UL) /*!< RTC MSKSR: MAI (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- RTC_CLRSR --------------------------------- */ -#define RTC_CLRSR_RPSE_Pos (0UL) /*!< RTC CLRSR: RPSE (Bit 0) */ -#define RTC_CLRSR_RPSE_Msk \ - (0x1UL) /*!< RTC CLRSR: RPSE (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPMI_Pos (1UL) /*!< RTC CLRSR: RPMI (Bit 1) */ -#define RTC_CLRSR_RPMI_Msk \ - (0x2UL) /*!< RTC CLRSR: RPMI (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPHO_Pos (2UL) /*!< RTC CLRSR: RPHO (Bit 2) */ -#define RTC_CLRSR_RPHO_Msk \ - (0x4UL) /*!< RTC CLRSR: RPHO (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPDA_Pos (3UL) /*!< RTC CLRSR: RPDA (Bit 3) */ -#define RTC_CLRSR_RPDA_Msk \ - (0x8UL) /*!< RTC CLRSR: RPDA (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPMO_Pos (5UL) /*!< RTC CLRSR: RPMO (Bit 5) */ -#define RTC_CLRSR_RPMO_Msk \ - (0x20UL) /*!< RTC CLRSR: RPMO (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPYE_Pos (6UL) /*!< RTC CLRSR: RPYE (Bit 6) */ -#define RTC_CLRSR_RPYE_Msk \ - (0x40UL) /*!< RTC CLRSR: RPYE (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RAI_Pos (8UL) /*!< RTC CLRSR: RAI (Bit 8) */ -#define RTC_CLRSR_RAI_Msk \ - (0x100UL) /*!< RTC CLRSR: RAI (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- RTC_ATIM0 --------------------------------- */ -#define RTC_ATIM0_ASE_Pos (0UL) /*!< RTC ATIM0: ASE (Bit 0) */ -#define RTC_ATIM0_ASE_Msk \ - (0x3fUL) /*!< RTC ATIM0: ASE (Bitfield-Mask: 0x3f) */ -#define RTC_ATIM0_AMI_Pos (8UL) /*!< RTC ATIM0: AMI (Bit 8) */ -#define RTC_ATIM0_AMI_Msk \ - (0x3f00UL) /*!< RTC ATIM0: AMI (Bitfield-Mask: 0x3f) */ -#define RTC_ATIM0_AHO_Pos (16UL) /*!< RTC ATIM0: AHO (Bit 16) */ -#define RTC_ATIM0_AHO_Msk \ - (0x1f0000UL) /*!< RTC ATIM0: AHO (Bitfield-Mask: 0x1f) */ -#define RTC_ATIM0_ADA_Pos (24UL) /*!< RTC ATIM0: ADA (Bit 24) */ -#define RTC_ATIM0_ADA_Msk \ - (0x1f000000UL) /*!< RTC ATIM0: ADA (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- RTC_ATIM1 --------------------------------- */ -#define RTC_ATIM1_AMO_Pos (8UL) /*!< RTC ATIM1: AMO (Bit 8) */ -#define RTC_ATIM1_AMO_Msk \ - (0xf00UL) /*!< RTC ATIM1: AMO (Bitfield-Mask: 0x0f) */ -#define RTC_ATIM1_AYE_Pos (16UL) /*!< RTC ATIM1: AYE (Bit 16) */ -#define RTC_ATIM1_AYE_Msk \ - (0xffff0000UL) /*!< RTC ATIM1: AYE (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- RTC_TIM0 ---------------------------------- */ -#define RTC_TIM0_SE_Pos (0UL) /*!< RTC TIM0: SE (Bit 0) */ -#define RTC_TIM0_SE_Msk (0x3fUL) /*!< RTC TIM0: SE (Bitfield-Mask: 0x3f) */ -#define RTC_TIM0_MI_Pos (8UL) /*!< RTC TIM0: MI (Bit 8) */ -#define RTC_TIM0_MI_Msk \ - (0x3f00UL) /*!< RTC TIM0: MI (Bitfield-Mask: 0x3f) */ -#define RTC_TIM0_HO_Pos (16UL) /*!< RTC TIM0: HO (Bit 16) */ -#define RTC_TIM0_HO_Msk \ - (0x1f0000UL) /*!< RTC TIM0: HO (Bitfield-Mask: 0x1f) */ -#define RTC_TIM0_DA_Pos (24UL) /*!< RTC TIM0: DA (Bit 24) */ -#define RTC_TIM0_DA_Msk \ - (0x1f000000UL) /*!< RTC TIM0: DA (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- RTC_TIM1 ---------------------------------- */ -#define RTC_TIM1_DAWE_Pos (0UL) /*!< RTC TIM1: DAWE (Bit 0) */ -#define RTC_TIM1_DAWE_Msk \ - (0x7UL) /*!< RTC TIM1: DAWE (Bitfield-Mask: 0x07) */ -#define RTC_TIM1_MO_Pos (8UL) /*!< RTC TIM1: MO (Bit 8) */ -#define RTC_TIM1_MO_Msk \ - (0xf00UL) /*!< RTC TIM1: MO (Bitfield-Mask: 0x0f) */ -#define RTC_TIM1_YE_Pos (16UL) /*!< RTC TIM1: YE (Bit 16) */ -#define RTC_TIM1_YE_Msk \ - (0xffff0000UL) /*!< RTC TIM1: YE (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_CLK' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- SCU_CLK_CLKSTAT ------------------------------ */ -#define SCU_CLK_CLKSTAT_USBCST_Pos \ - (0UL) /*!< SCU_CLK CLKSTAT: USBCST (Bit 0) */ -#define SCU_CLK_CLKSTAT_USBCST_Msk \ - (0x1UL) /*!< SCU_CLK CLKSTAT: USBCST (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSTAT_CCUCST_Pos \ - (4UL) /*!< SCU_CLK CLKSTAT: CCUCST (Bit 4) */ -#define SCU_CLK_CLKSTAT_CCUCST_Msk \ - (0x10UL) /*!< SCU_CLK CLKSTAT: CCUCST (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSTAT_WDTCST_Pos \ - (5UL) /*!< SCU_CLK CLKSTAT: WDTCST (Bit 5) */ -#define SCU_CLK_CLKSTAT_WDTCST_Msk \ - (0x20UL) /*!< SCU_CLK CLKSTAT: WDTCST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_CLK_CLKSET ------------------------------- */ -#define SCU_CLK_CLKSET_USBCEN_Pos \ - (0UL) /*!< SCU_CLK CLKSET: USBCEN (Bit 0) */ -#define SCU_CLK_CLKSET_USBCEN_Msk \ - (0x1UL) /*!< SCU_CLK CLKSET: USBCEN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSET_CCUCEN_Pos \ - (4UL) /*!< SCU_CLK CLKSET: CCUCEN (Bit 4) */ -#define SCU_CLK_CLKSET_CCUCEN_Msk \ - (0x10UL) /*!< SCU_CLK CLKSET: CCUCEN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSET_WDTCEN_Pos \ - (5UL) /*!< SCU_CLK CLKSET: WDTCEN (Bit 5) */ -#define SCU_CLK_CLKSET_WDTCEN_Msk \ - (0x20UL) /*!< SCU_CLK CLKSET: WDTCEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_CLK_CLKCLR ------------------------------- */ -#define SCU_CLK_CLKCLR_USBCDI_Pos \ - (0UL) /*!< SCU_CLK CLKCLR: USBCDI (Bit 0) */ -#define SCU_CLK_CLKCLR_USBCDI_Msk \ - (0x1UL) /*!< SCU_CLK CLKCLR: USBCDI (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKCLR_CCUCDI_Pos \ - (4UL) /*!< SCU_CLK CLKCLR: CCUCDI (Bit 4) */ -#define SCU_CLK_CLKCLR_CCUCDI_Msk \ - (0x10UL) /*!< SCU_CLK CLKCLR: CCUCDI (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKCLR_WDTCDI_Pos \ - (5UL) /*!< SCU_CLK CLKCLR: WDTCDI (Bit 5) */ -#define SCU_CLK_CLKCLR_WDTCDI_Msk \ - (0x20UL) /*!< SCU_CLK CLKCLR: WDTCDI (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_SYSCLKCR ------------------------------ */ -#define SCU_CLK_SYSCLKCR_SYSDIV_Pos \ - (0UL) /*!< SCU_CLK SYSCLKCR: SYSDIV (Bit 0) */ -#define SCU_CLK_SYSCLKCR_SYSDIV_Msk \ - (0xffUL) /*!< SCU_CLK SYSCLKCR: SYSDIV (Bitfield-Mask: 0xff) */ -#define SCU_CLK_SYSCLKCR_SYSSEL_Pos \ - (16UL) /*!< SCU_CLK SYSCLKCR: SYSSEL (Bit 16) */ -#define SCU_CLK_SYSCLKCR_SYSSEL_Msk \ - (0x10000UL) /*!< SCU_CLK SYSCLKCR: SYSSEL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CPUCLKCR ------------------------------ */ -#define SCU_CLK_CPUCLKCR_CPUDIV_Pos \ - (0UL) /*!< SCU_CLK CPUCLKCR: CPUDIV (Bit 0) */ -#define SCU_CLK_CPUCLKCR_CPUDIV_Msk \ - (0x1UL) /*!< SCU_CLK CPUCLKCR: CPUDIV (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_CLK_PBCLKCR ------------------------------ */ -#define SCU_CLK_PBCLKCR_PBDIV_Pos \ - (0UL) /*!< SCU_CLK PBCLKCR: PBDIV (Bit 0) */ -#define SCU_CLK_PBCLKCR_PBDIV_Msk \ - (0x1UL) /*!< SCU_CLK PBCLKCR: PBDIV (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_USBCLKCR ------------------------------ */ -#define SCU_CLK_USBCLKCR_USBDIV_Pos \ - (0UL) /*!< SCU_CLK USBCLKCR: USBDIV (Bit 0) */ -#define SCU_CLK_USBCLKCR_USBDIV_Msk \ - (0x7UL) /*!< SCU_CLK USBCLKCR: USBDIV (Bitfield-Mask: 0x07) */ -#define SCU_CLK_USBCLKCR_USBSEL_Pos \ - (16UL) /*!< SCU_CLK USBCLKCR: USBSEL (Bit 16) */ -#define SCU_CLK_USBCLKCR_USBSEL_Msk \ - (0x10000UL) /*!< SCU_CLK USBCLKCR: USBSEL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CCUCLKCR ------------------------------ */ -#define SCU_CLK_CCUCLKCR_CCUDIV_Pos \ - (0UL) /*!< SCU_CLK CCUCLKCR: CCUDIV (Bit 0) */ -#define SCU_CLK_CCUCLKCR_CCUDIV_Msk \ - (0x1UL) /*!< SCU_CLK CCUCLKCR: CCUDIV (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_WDTCLKCR ------------------------------ */ -#define SCU_CLK_WDTCLKCR_WDTDIV_Pos \ - (0UL) /*!< SCU_CLK WDTCLKCR: WDTDIV (Bit 0) */ -#define SCU_CLK_WDTCLKCR_WDTDIV_Msk \ - (0xffUL) /*!< SCU_CLK WDTCLKCR: WDTDIV (Bitfield-Mask: 0xff) */ -#define SCU_CLK_WDTCLKCR_WDTSEL_Pos \ - (16UL) /*!< SCU_CLK WDTCLKCR: WDTSEL (Bit 16) */ -#define SCU_CLK_WDTCLKCR_WDTSEL_Msk \ - (0x30000UL) /*!< SCU_CLK WDTCLKCR: WDTSEL (Bitfield-Mask: 0x03) */ - -/* ------------------------------ SCU_CLK_EXTCLKCR ------------------------------ */ -#define SCU_CLK_EXTCLKCR_ECKSEL_Pos \ - (0UL) /*!< SCU_CLK EXTCLKCR: ECKSEL (Bit 0) */ -#define SCU_CLK_EXTCLKCR_ECKSEL_Msk \ - (0x7UL) /*!< SCU_CLK EXTCLKCR: ECKSEL (Bitfield-Mask: 0x07) */ -#define SCU_CLK_EXTCLKCR_ECKDIV_Pos \ - (16UL) /*!< SCU_CLK EXTCLKCR: ECKDIV (Bit 16) */ -#define SCU_CLK_EXTCLKCR_ECKDIV_Msk \ - (0x1ff0000UL) /*!< SCU_CLK EXTCLKCR: ECKDIV (Bitfield-Mask: 0x1ff) */ - -/* ----------------------------- SCU_CLK_MLINKCLKCR ----------------------------- */ -#define SCU_CLK_MLINKCLKCR_SYSDIV_Pos \ - (0UL) /*!< SCU_CLK MLINKCLKCR: SYSDIV (Bit 0) */ -#define SCU_CLK_MLINKCLKCR_SYSDIV_Msk \ - (0xffUL) /*!< SCU_CLK MLINKCLKCR: SYSDIV (Bitfield-Mask: 0xff) */ -#define SCU_CLK_MLINKCLKCR_SYSSEL_Pos \ - (8UL) /*!< SCU_CLK MLINKCLKCR: SYSSEL (Bit 8) */ -#define SCU_CLK_MLINKCLKCR_SYSSEL_Msk \ - (0x100UL) /*!< SCU_CLK MLINKCLKCR: SYSSEL (Bitfield-Mask: 0x01) */ -#define SCU_CLK_MLINKCLKCR_CPUDIV_Pos \ - (10UL) /*!< SCU_CLK MLINKCLKCR: CPUDIV (Bit 10) */ -#define SCU_CLK_MLINKCLKCR_CPUDIV_Msk \ - (0x400UL) /*!< SCU_CLK MLINKCLKCR: CPUDIV (Bitfield-Mask: 0x01) */ -#define SCU_CLK_MLINKCLKCR_PBDIV_Pos \ - (12UL) /*!< SCU_CLK MLINKCLKCR: PBDIV (Bit 12) */ -#define SCU_CLK_MLINKCLKCR_PBDIV_Msk \ - (0x1000UL) /*!< SCU_CLK MLINKCLKCR: PBDIV (Bitfield-Mask: 0x01) */ -#define SCU_CLK_MLINKCLKCR_CCUDIV_Pos \ - (14UL) /*!< SCU_CLK MLINKCLKCR: CCUDIV (Bit 14) */ -#define SCU_CLK_MLINKCLKCR_CCUDIV_Msk \ - (0x4000UL) /*!< SCU_CLK MLINKCLKCR: CCUDIV (Bitfield-Mask: 0x01) */ -#define SCU_CLK_MLINKCLKCR_WDTDIV_Pos \ - (16UL) /*!< SCU_CLK MLINKCLKCR: WDTDIV (Bit 16) */ -#define SCU_CLK_MLINKCLKCR_WDTDIV_Msk \ - (0xff0000UL) /*!< SCU_CLK MLINKCLKCR: WDTDIV (Bitfield-Mask: 0xff) */ -#define SCU_CLK_MLINKCLKCR_WDTSEL_Pos \ - (24UL) /*!< SCU_CLK MLINKCLKCR: WDTSEL (Bit 24) */ -#define SCU_CLK_MLINKCLKCR_WDTSEL_Msk \ - (0x3000000UL) /*!< SCU_CLK MLINKCLKCR: WDTSEL (Bitfield-Mask: 0x03) */ - -/* ------------------------------- SCU_CLK_SLEEPCR ------------------------------ */ -#define SCU_CLK_SLEEPCR_SYSSEL_Pos \ - (0UL) /*!< SCU_CLK SLEEPCR: SYSSEL (Bit 0) */ -#define SCU_CLK_SLEEPCR_SYSSEL_Msk \ - (0x1UL) /*!< SCU_CLK SLEEPCR: SYSSEL (Bitfield-Mask: 0x01) */ -#define SCU_CLK_SLEEPCR_USBCR_Pos \ - (16UL) /*!< SCU_CLK SLEEPCR: USBCR (Bit 16) */ -#define SCU_CLK_SLEEPCR_USBCR_Msk \ - (0x10000UL) /*!< SCU_CLK SLEEPCR: USBCR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_SLEEPCR_CCUCR_Pos \ - (20UL) /*!< SCU_CLK SLEEPCR: CCUCR (Bit 20) */ -#define SCU_CLK_SLEEPCR_CCUCR_Msk \ - (0x100000UL) /*!< SCU_CLK SLEEPCR: CCUCR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_SLEEPCR_WDTCR_Pos \ - (21UL) /*!< SCU_CLK SLEEPCR: WDTCR (Bit 21) */ -#define SCU_CLK_SLEEPCR_WDTCR_Msk \ - (0x200000UL) /*!< SCU_CLK SLEEPCR: WDTCR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_DSLEEPCR ------------------------------ */ -#define SCU_CLK_DSLEEPCR_SYSSEL_Pos \ - (0UL) /*!< SCU_CLK DSLEEPCR: SYSSEL (Bit 0) */ -#define SCU_CLK_DSLEEPCR_SYSSEL_Msk \ - (0x1UL) /*!< SCU_CLK DSLEEPCR: SYSSEL (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_FPDN_Pos \ - (11UL) /*!< SCU_CLK DSLEEPCR: FPDN (Bit 11) */ -#define SCU_CLK_DSLEEPCR_FPDN_Msk \ - (0x800UL) /*!< SCU_CLK DSLEEPCR: FPDN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_PLLPDN_Pos \ - (12UL) /*!< SCU_CLK DSLEEPCR: PLLPDN (Bit 12) */ -#define SCU_CLK_DSLEEPCR_PLLPDN_Msk \ - (0x1000UL) /*!< SCU_CLK DSLEEPCR: PLLPDN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_VCOPDN_Pos \ - (13UL) /*!< SCU_CLK DSLEEPCR: VCOPDN (Bit 13) */ -#define SCU_CLK_DSLEEPCR_VCOPDN_Msk \ - (0x2000UL) /*!< SCU_CLK DSLEEPCR: VCOPDN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_USBCR_Pos \ - (16UL) /*!< SCU_CLK DSLEEPCR: USBCR (Bit 16) */ -#define SCU_CLK_DSLEEPCR_USBCR_Msk \ - (0x10000UL) /*!< SCU_CLK DSLEEPCR: USBCR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_CCUCR_Pos \ - (20UL) /*!< SCU_CLK DSLEEPCR: CCUCR (Bit 20) */ -#define SCU_CLK_DSLEEPCR_CCUCR_Msk \ - (0x100000UL) /*!< SCU_CLK DSLEEPCR: CCUCR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_WDTCR_Pos \ - (21UL) /*!< SCU_CLK DSLEEPCR: WDTCR (Bit 21) */ -#define SCU_CLK_DSLEEPCR_WDTCR_Msk \ - (0x200000UL) /*!< SCU_CLK DSLEEPCR: WDTCR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSTAT0 ----------------------------- */ -#define SCU_CLK_CGATSTAT0_VADC_Pos \ - (0UL) /*!< SCU_CLK CGATSTAT0: VADC (Bit 0) */ -#define SCU_CLK_CGATSTAT0_VADC_Msk \ - (0x1UL) /*!< SCU_CLK CGATSTAT0: VADC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_CCU40_Pos \ - (2UL) /*!< SCU_CLK CGATSTAT0: CCU40 (Bit 2) */ -#define SCU_CLK_CGATSTAT0_CCU40_Msk \ - (0x4UL) /*!< SCU_CLK CGATSTAT0: CCU40 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_CCU41_Pos \ - (3UL) /*!< SCU_CLK CGATSTAT0: CCU41 (Bit 3) */ -#define SCU_CLK_CGATSTAT0_CCU41_Msk \ - (0x8UL) /*!< SCU_CLK CGATSTAT0: CCU41 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_CCU80_Pos \ - (7UL) /*!< SCU_CLK CGATSTAT0: CCU80 (Bit 7) */ -#define SCU_CLK_CGATSTAT0_CCU80_Msk \ - (0x80UL) /*!< SCU_CLK CGATSTAT0: CCU80 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_POSIF0_Pos \ - (9UL) /*!< SCU_CLK CGATSTAT0: POSIF0 (Bit 9) */ -#define SCU_CLK_CGATSTAT0_POSIF0_Msk \ - (0x200UL) /*!< SCU_CLK CGATSTAT0: POSIF0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_USIC0_Pos \ - (11UL) /*!< SCU_CLK CGATSTAT0: USIC0 (Bit 11) */ -#define SCU_CLK_CGATSTAT0_USIC0_Msk \ - (0x800UL) /*!< SCU_CLK CGATSTAT0: USIC0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_ERU1_Pos \ - (16UL) /*!< SCU_CLK CGATSTAT0: ERU1 (Bit 16) */ -#define SCU_CLK_CGATSTAT0_ERU1_Msk \ - (0x10000UL) /*!< SCU_CLK CGATSTAT0: ERU1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_HRPWM0_Pos \ - (23UL) /*!< SCU_CLK CGATSTAT0: HRPWM0 (Bit 23) */ -#define SCU_CLK_CGATSTAT0_HRPWM0_Msk \ - (0x800000UL) /*!< SCU_CLK CGATSTAT0: HRPWM0 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSET0 ------------------------------ */ -#define SCU_CLK_CGATSET0_VADC_Pos \ - (0UL) /*!< SCU_CLK CGATSET0: VADC (Bit 0) */ -#define SCU_CLK_CGATSET0_VADC_Msk \ - (0x1UL) /*!< SCU_CLK CGATSET0: VADC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_CCU40_Pos \ - (2UL) /*!< SCU_CLK CGATSET0: CCU40 (Bit 2) */ -#define SCU_CLK_CGATSET0_CCU40_Msk \ - (0x4UL) /*!< SCU_CLK CGATSET0: CCU40 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_CCU41_Pos \ - (3UL) /*!< SCU_CLK CGATSET0: CCU41 (Bit 3) */ -#define SCU_CLK_CGATSET0_CCU41_Msk \ - (0x8UL) /*!< SCU_CLK CGATSET0: CCU41 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_CCU80_Pos \ - (7UL) /*!< SCU_CLK CGATSET0: CCU80 (Bit 7) */ -#define SCU_CLK_CGATSET0_CCU80_Msk \ - (0x80UL) /*!< SCU_CLK CGATSET0: CCU80 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_POSIF0_Pos \ - (9UL) /*!< SCU_CLK CGATSET0: POSIF0 (Bit 9) */ -#define SCU_CLK_CGATSET0_POSIF0_Msk \ - (0x200UL) /*!< SCU_CLK CGATSET0: POSIF0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_USIC0_Pos \ - (11UL) /*!< SCU_CLK CGATSET0: USIC0 (Bit 11) */ -#define SCU_CLK_CGATSET0_USIC0_Msk \ - (0x800UL) /*!< SCU_CLK CGATSET0: USIC0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_ERU1_Pos \ - (16UL) /*!< SCU_CLK CGATSET0: ERU1 (Bit 16) */ -#define SCU_CLK_CGATSET0_ERU1_Msk \ - (0x10000UL) /*!< SCU_CLK CGATSET0: ERU1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_HRPWM0_Pos \ - (23UL) /*!< SCU_CLK CGATSET0: HRPWM0 (Bit 23) */ -#define SCU_CLK_CGATSET0_HRPWM0_Msk \ - (0x800000UL) /*!< SCU_CLK CGATSET0: HRPWM0 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATCLR0 ------------------------------ */ -#define SCU_CLK_CGATCLR0_VADC_Pos \ - (0UL) /*!< SCU_CLK CGATCLR0: VADC (Bit 0) */ -#define SCU_CLK_CGATCLR0_VADC_Msk \ - (0x1UL) /*!< SCU_CLK CGATCLR0: VADC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_CCU40_Pos \ - (2UL) /*!< SCU_CLK CGATCLR0: CCU40 (Bit 2) */ -#define SCU_CLK_CGATCLR0_CCU40_Msk \ - (0x4UL) /*!< SCU_CLK CGATCLR0: CCU40 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_CCU41_Pos \ - (3UL) /*!< SCU_CLK CGATCLR0: CCU41 (Bit 3) */ -#define SCU_CLK_CGATCLR0_CCU41_Msk \ - (0x8UL) /*!< SCU_CLK CGATCLR0: CCU41 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_CCU80_Pos \ - (7UL) /*!< SCU_CLK CGATCLR0: CCU80 (Bit 7) */ -#define SCU_CLK_CGATCLR0_CCU80_Msk \ - (0x80UL) /*!< SCU_CLK CGATCLR0: CCU80 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_POSIF0_Pos \ - (9UL) /*!< SCU_CLK CGATCLR0: POSIF0 (Bit 9) */ -#define SCU_CLK_CGATCLR0_POSIF0_Msk \ - (0x200UL) /*!< SCU_CLK CGATCLR0: POSIF0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_USIC0_Pos \ - (11UL) /*!< SCU_CLK CGATCLR0: USIC0 (Bit 11) */ -#define SCU_CLK_CGATCLR0_USIC0_Msk \ - (0x800UL) /*!< SCU_CLK CGATCLR0: USIC0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_ERU1_Pos \ - (16UL) /*!< SCU_CLK CGATCLR0: ERU1 (Bit 16) */ -#define SCU_CLK_CGATCLR0_ERU1_Msk \ - (0x10000UL) /*!< SCU_CLK CGATCLR0: ERU1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_HRPWM0_Pos \ - (23UL) /*!< SCU_CLK CGATCLR0: HRPWM0 (Bit 23) */ -#define SCU_CLK_CGATCLR0_HRPWM0_Msk \ - (0x800000UL) /*!< SCU_CLK CGATCLR0: HRPWM0 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSTAT1 ----------------------------- */ -#define SCU_CLK_CGATSTAT1_LEDTSCU0_Pos \ - (3UL) /*!< SCU_CLK CGATSTAT1: LEDTSCU0 (Bit 3) */ -#define SCU_CLK_CGATSTAT1_LEDTSCU0_Msk \ - (0x8UL) /*!< SCU_CLK CGATSTAT1: LEDTSCU0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_MCAN0_Pos \ - (4UL) /*!< SCU_CLK CGATSTAT1: MCAN0 (Bit 4) */ -#define SCU_CLK_CGATSTAT1_MCAN0_Msk \ - (0x10UL) /*!< SCU_CLK CGATSTAT1: MCAN0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_DAC_Pos \ - (5UL) /*!< SCU_CLK CGATSTAT1: DAC (Bit 5) */ -#define SCU_CLK_CGATSTAT1_DAC_Msk \ - (0x20UL) /*!< SCU_CLK CGATSTAT1: DAC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_USIC1_Pos \ - (7UL) /*!< SCU_CLK CGATSTAT1: USIC1 (Bit 7) */ -#define SCU_CLK_CGATSTAT1_USIC1_Msk \ - (0x80UL) /*!< SCU_CLK CGATSTAT1: USIC1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_PPORTS_Pos \ - (9UL) /*!< SCU_CLK CGATSTAT1: PPORTS (Bit 9) */ -#define SCU_CLK_CGATSTAT1_PPORTS_Msk \ - (0x200UL) /*!< SCU_CLK CGATSTAT1: PPORTS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSET1 ------------------------------ */ -#define SCU_CLK_CGATSET1_LEDTSCU0_Pos \ - (3UL) /*!< SCU_CLK CGATSET1: LEDTSCU0 (Bit 3) */ -#define SCU_CLK_CGATSET1_LEDTSCU0_Msk \ - (0x8UL) /*!< SCU_CLK CGATSET1: LEDTSCU0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_MCAN0_Pos \ - (4UL) /*!< SCU_CLK CGATSET1: MCAN0 (Bit 4) */ -#define SCU_CLK_CGATSET1_MCAN0_Msk \ - (0x10UL) /*!< SCU_CLK CGATSET1: MCAN0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_DAC_Pos \ - (5UL) /*!< SCU_CLK CGATSET1: DAC (Bit 5) */ -#define SCU_CLK_CGATSET1_DAC_Msk \ - (0x20UL) /*!< SCU_CLK CGATSET1: DAC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_USIC1_Pos \ - (7UL) /*!< SCU_CLK CGATSET1: USIC1 (Bit 7) */ -#define SCU_CLK_CGATSET1_USIC1_Msk \ - (0x80UL) /*!< SCU_CLK CGATSET1: USIC1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_PPORTS_Pos \ - (9UL) /*!< SCU_CLK CGATSET1: PPORTS (Bit 9) */ -#define SCU_CLK_CGATSET1_PPORTS_Msk \ - (0x200UL) /*!< SCU_CLK CGATSET1: PPORTS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATCLR1 ------------------------------ */ -#define SCU_CLK_CGATCLR1_LEDTSCU0_Pos \ - (3UL) /*!< SCU_CLK CGATCLR1: LEDTSCU0 (Bit 3) */ -#define SCU_CLK_CGATCLR1_LEDTSCU0_Msk \ - (0x8UL) /*!< SCU_CLK CGATCLR1: LEDTSCU0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_MCAN0_Pos \ - (4UL) /*!< SCU_CLK CGATCLR1: MCAN0 (Bit 4) */ -#define SCU_CLK_CGATCLR1_MCAN0_Msk \ - (0x10UL) /*!< SCU_CLK CGATCLR1: MCAN0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_DAC_Pos \ - (5UL) /*!< SCU_CLK CGATCLR1: DAC (Bit 5) */ -#define SCU_CLK_CGATCLR1_DAC_Msk \ - (0x20UL) /*!< SCU_CLK CGATCLR1: DAC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_USIC1_Pos \ - (7UL) /*!< SCU_CLK CGATCLR1: USIC1 (Bit 7) */ -#define SCU_CLK_CGATCLR1_USIC1_Msk \ - (0x80UL) /*!< SCU_CLK CGATCLR1: USIC1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_PPORTS_Pos \ - (9UL) /*!< SCU_CLK CGATCLR1: PPORTS (Bit 9) */ -#define SCU_CLK_CGATCLR1_PPORTS_Msk \ - (0x200UL) /*!< SCU_CLK CGATCLR1: PPORTS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSTAT2 ----------------------------- */ -#define SCU_CLK_CGATSTAT2_WDT_Pos \ - (1UL) /*!< SCU_CLK CGATSTAT2: WDT (Bit 1) */ -#define SCU_CLK_CGATSTAT2_WDT_Msk \ - (0x2UL) /*!< SCU_CLK CGATSTAT2: WDT (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT2_DMA0_Pos \ - (4UL) /*!< SCU_CLK CGATSTAT2: DMA0 (Bit 4) */ -#define SCU_CLK_CGATSTAT2_DMA0_Msk \ - (0x10UL) /*!< SCU_CLK CGATSTAT2: DMA0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT2_FCE_Pos \ - (6UL) /*!< SCU_CLK CGATSTAT2: FCE (Bit 6) */ -#define SCU_CLK_CGATSTAT2_FCE_Msk \ - (0x40UL) /*!< SCU_CLK CGATSTAT2: FCE (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT2_USB_Pos \ - (7UL) /*!< SCU_CLK CGATSTAT2: USB (Bit 7) */ -#define SCU_CLK_CGATSTAT2_USB_Msk \ - (0x80UL) /*!< SCU_CLK CGATSTAT2: USB (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSET2 ------------------------------ */ -#define SCU_CLK_CGATSET2_WDT_Pos \ - (1UL) /*!< SCU_CLK CGATSET2: WDT (Bit 1) */ -#define SCU_CLK_CGATSET2_WDT_Msk \ - (0x2UL) /*!< SCU_CLK CGATSET2: WDT (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET2_DMA0_Pos \ - (4UL) /*!< SCU_CLK CGATSET2: DMA0 (Bit 4) */ -#define SCU_CLK_CGATSET2_DMA0_Msk \ - (0x10UL) /*!< SCU_CLK CGATSET2: DMA0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET2_FCE_Pos \ - (6UL) /*!< SCU_CLK CGATSET2: FCE (Bit 6) */ -#define SCU_CLK_CGATSET2_FCE_Msk \ - (0x40UL) /*!< SCU_CLK CGATSET2: FCE (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET2_USB_Pos \ - (7UL) /*!< SCU_CLK CGATSET2: USB (Bit 7) */ -#define SCU_CLK_CGATSET2_USB_Msk \ - (0x80UL) /*!< SCU_CLK CGATSET2: USB (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATCLR2 ------------------------------ */ -#define SCU_CLK_CGATCLR2_WDT_Pos \ - (1UL) /*!< SCU_CLK CGATCLR2: WDT (Bit 1) */ -#define SCU_CLK_CGATCLR2_WDT_Msk \ - (0x2UL) /*!< SCU_CLK CGATCLR2: WDT (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR2_DMA0_Pos \ - (4UL) /*!< SCU_CLK CGATCLR2: DMA0 (Bit 4) */ -#define SCU_CLK_CGATCLR2_DMA0_Msk \ - (0x10UL) /*!< SCU_CLK CGATCLR2: DMA0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR2_FCE_Pos \ - (6UL) /*!< SCU_CLK CGATCLR2: FCE (Bit 6) */ -#define SCU_CLK_CGATCLR2_FCE_Msk \ - (0x40UL) /*!< SCU_CLK CGATCLR2: FCE (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR2_USB_Pos \ - (7UL) /*!< SCU_CLK CGATCLR2: USB (Bit 7) */ -#define SCU_CLK_CGATCLR2_USB_Msk \ - (0x80UL) /*!< SCU_CLK CGATCLR2: USB (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_OSC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ SCU_OSC_OSCHPSTAT ----------------------------- */ -#define SCU_OSC_OSCHPSTAT_X1D_Pos \ - (0UL) /*!< SCU_OSC OSCHPSTAT: X1D (Bit 0) */ -#define SCU_OSC_OSCHPSTAT_X1D_Msk \ - (0x1UL) /*!< SCU_OSC OSCHPSTAT: X1D (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_OSC_OSCHPCTRL ----------------------------- */ -#define SCU_OSC_OSCHPCTRL_X1DEN_Pos \ - (0UL) /*!< SCU_OSC OSCHPCTRL: X1DEN (Bit 0) */ -#define SCU_OSC_OSCHPCTRL_X1DEN_Msk \ - (0x1UL) /*!< SCU_OSC OSCHPCTRL: X1DEN (Bitfield-Mask: 0x01) */ -#define SCU_OSC_OSCHPCTRL_SHBY_Pos \ - (1UL) /*!< SCU_OSC OSCHPCTRL: SHBY (Bit 1) */ -#define SCU_OSC_OSCHPCTRL_SHBY_Msk \ - (0x2UL) /*!< SCU_OSC OSCHPCTRL: SHBY (Bitfield-Mask: 0x01) */ -#define SCU_OSC_OSCHPCTRL_MODE_Pos \ - (4UL) /*!< SCU_OSC OSCHPCTRL: MODE (Bit 4) */ -#define SCU_OSC_OSCHPCTRL_MODE_Msk \ - (0x30UL) /*!< SCU_OSC OSCHPCTRL: MODE (Bitfield-Mask: 0x03) */ -#define SCU_OSC_OSCHPCTRL_OSCVAL_Pos \ - (16UL) /*!< SCU_OSC OSCHPCTRL: OSCVAL (Bit 16) */ -#define SCU_OSC_OSCHPCTRL_OSCVAL_Msk \ - (0xf0000UL) /*!< SCU_OSC OSCHPCTRL: OSCVAL (Bitfield-Mask: 0x0f) */ - -/* ----------------------------- SCU_OSC_CLKCALCONST ---------------------------- */ -#define SCU_OSC_CLKCALCONST_CALIBCONST_Pos \ - (0UL) /*!< SCU_OSC CLKCALCONST: CALIBCONST (Bit 0) */ -#define SCU_OSC_CLKCALCONST_CALIBCONST_Msk \ - (0xfUL) /*!< SCU_OSC CLKCALCONST: CALIBCONST (Bitfield-Mask: 0x0f) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_PLL' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- SCU_PLL_PLLSTAT ------------------------------ */ -#define SCU_PLL_PLLSTAT_VCOBYST_Pos \ - (0UL) /*!< SCU_PLL PLLSTAT: VCOBYST (Bit 0) */ -#define SCU_PLL_PLLSTAT_VCOBYST_Msk \ - (0x1UL) /*!< SCU_PLL PLLSTAT: VCOBYST (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_PWDSTAT_Pos \ - (1UL) /*!< SCU_PLL PLLSTAT: PWDSTAT (Bit 1) */ -#define SCU_PLL_PLLSTAT_PWDSTAT_Msk \ - (0x2UL) /*!< SCU_PLL PLLSTAT: PWDSTAT (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_VCOLOCK_Pos \ - (2UL) /*!< SCU_PLL PLLSTAT: VCOLOCK (Bit 2) */ -#define SCU_PLL_PLLSTAT_VCOLOCK_Msk \ - (0x4UL) /*!< SCU_PLL PLLSTAT: VCOLOCK (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_K1RDY_Pos \ - (4UL) /*!< SCU_PLL PLLSTAT: K1RDY (Bit 4) */ -#define SCU_PLL_PLLSTAT_K1RDY_Msk \ - (0x10UL) /*!< SCU_PLL PLLSTAT: K1RDY (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_K2RDY_Pos \ - (5UL) /*!< SCU_PLL PLLSTAT: K2RDY (Bit 5) */ -#define SCU_PLL_PLLSTAT_K2RDY_Msk \ - (0x20UL) /*!< SCU_PLL PLLSTAT: K2RDY (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_BY_Pos \ - (6UL) /*!< SCU_PLL PLLSTAT: BY (Bit 6) */ -#define SCU_PLL_PLLSTAT_BY_Msk \ - (0x40UL) /*!< SCU_PLL PLLSTAT: BY (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_PLLLV_Pos \ - (7UL) /*!< SCU_PLL PLLSTAT: PLLLV (Bit 7) */ -#define SCU_PLL_PLLSTAT_PLLLV_Msk \ - (0x80UL) /*!< SCU_PLL PLLSTAT: PLLLV (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_PLLHV_Pos \ - (8UL) /*!< SCU_PLL PLLSTAT: PLLHV (Bit 8) */ -#define SCU_PLL_PLLSTAT_PLLHV_Msk \ - (0x100UL) /*!< SCU_PLL PLLSTAT: PLLHV (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_PLLSP_Pos \ - (9UL) /*!< SCU_PLL PLLSTAT: PLLSP (Bit 9) */ -#define SCU_PLL_PLLSTAT_PLLSP_Msk \ - (0x200UL) /*!< SCU_PLL PLLSTAT: PLLSP (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_PLL_PLLCON0 ------------------------------ */ -#define SCU_PLL_PLLCON0_VCOBYP_Pos \ - (0UL) /*!< SCU_PLL PLLCON0: VCOBYP (Bit 0) */ -#define SCU_PLL_PLLCON0_VCOBYP_Msk \ - (0x1UL) /*!< SCU_PLL PLLCON0: VCOBYP (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_VCOPWD_Pos \ - (1UL) /*!< SCU_PLL PLLCON0: VCOPWD (Bit 1) */ -#define SCU_PLL_PLLCON0_VCOPWD_Msk \ - (0x2UL) /*!< SCU_PLL PLLCON0: VCOPWD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_VCOTR_Pos \ - (2UL) /*!< SCU_PLL PLLCON0: VCOTR (Bit 2) */ -#define SCU_PLL_PLLCON0_VCOTR_Msk \ - (0x4UL) /*!< SCU_PLL PLLCON0: VCOTR (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_FINDIS_Pos \ - (4UL) /*!< SCU_PLL PLLCON0: FINDIS (Bit 4) */ -#define SCU_PLL_PLLCON0_FINDIS_Msk \ - (0x10UL) /*!< SCU_PLL PLLCON0: FINDIS (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_OSCDISCDIS_Pos \ - (6UL) /*!< SCU_PLL PLLCON0: OSCDISCDIS (Bit 6) */ -#define SCU_PLL_PLLCON0_OSCDISCDIS_Msk \ - (0x40UL) /*!< SCU_PLL PLLCON0: OSCDISCDIS (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_PLLPWD_Pos \ - (16UL) /*!< SCU_PLL PLLCON0: PLLPWD (Bit 16) */ -#define SCU_PLL_PLLCON0_PLLPWD_Msk \ - (0x10000UL) /*!< SCU_PLL PLLCON0: PLLPWD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_OSCRES_Pos \ - (17UL) /*!< SCU_PLL PLLCON0: OSCRES (Bit 17) */ -#define SCU_PLL_PLLCON0_OSCRES_Msk \ - (0x20000UL) /*!< SCU_PLL PLLCON0: OSCRES (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_RESLD_Pos \ - (18UL) /*!< SCU_PLL PLLCON0: RESLD (Bit 18) */ -#define SCU_PLL_PLLCON0_RESLD_Msk \ - (0x40000UL) /*!< SCU_PLL PLLCON0: RESLD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_AOTREN_Pos \ - (19UL) /*!< SCU_PLL PLLCON0: AOTREN (Bit 19) */ -#define SCU_PLL_PLLCON0_AOTREN_Msk \ - (0x80000UL) /*!< SCU_PLL PLLCON0: AOTREN (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_FOTR_Pos \ - (20UL) /*!< SCU_PLL PLLCON0: FOTR (Bit 20) */ -#define SCU_PLL_PLLCON0_FOTR_Msk \ - (0x100000UL) /*!< SCU_PLL PLLCON0: FOTR (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_PLL_PLLCON1 ------------------------------ */ -#define SCU_PLL_PLLCON1_K1DIV_Pos \ - (0UL) /*!< SCU_PLL PLLCON1: K1DIV (Bit 0) */ -#define SCU_PLL_PLLCON1_K1DIV_Msk \ - (0x7fUL) /*!< SCU_PLL PLLCON1: K1DIV (Bitfield-Mask: 0x7f) */ -#define SCU_PLL_PLLCON1_NDIV_Pos \ - (8UL) /*!< SCU_PLL PLLCON1: NDIV (Bit 8) */ -#define SCU_PLL_PLLCON1_NDIV_Msk \ - (0x7f00UL) /*!< SCU_PLL PLLCON1: NDIV (Bitfield-Mask: 0x7f) */ -#define SCU_PLL_PLLCON1_K2DIV_Pos \ - (16UL) /*!< SCU_PLL PLLCON1: K2DIV (Bit 16) */ -#define SCU_PLL_PLLCON1_K2DIV_Msk \ - (0x7f0000UL) /*!< SCU_PLL PLLCON1: K2DIV (Bitfield-Mask: 0x7f) */ -#define SCU_PLL_PLLCON1_PDIV_Pos \ - (24UL) /*!< SCU_PLL PLLCON1: PDIV (Bit 24) */ -#define SCU_PLL_PLLCON1_PDIV_Msk \ - (0xf000000UL) /*!< SCU_PLL PLLCON1: PDIV (Bitfield-Mask: 0x0f) */ - -/* ------------------------------- SCU_PLL_PLLCON2 ------------------------------ */ -#define SCU_PLL_PLLCON2_PINSEL_Pos \ - (0UL) /*!< SCU_PLL PLLCON2: PINSEL (Bit 0) */ -#define SCU_PLL_PLLCON2_PINSEL_Msk \ - (0x1UL) /*!< SCU_PLL PLLCON2: PINSEL (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON2_K1INSEL_Pos \ - (8UL) /*!< SCU_PLL PLLCON2: K1INSEL (Bit 8) */ -#define SCU_PLL_PLLCON2_K1INSEL_Msk \ - (0x100UL) /*!< SCU_PLL PLLCON2: K1INSEL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_PLL_USBPLLSTAT ----------------------------- */ -#define SCU_PLL_USBPLLSTAT_VCOBYST_Pos \ - (0UL) /*!< SCU_PLL USBPLLSTAT: VCOBYST (Bit 0) */ -#define SCU_PLL_USBPLLSTAT_VCOBYST_Msk \ - (0x1UL) /*!< SCU_PLL USBPLLSTAT: VCOBYST (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLSTAT_PWDSTAT_Pos \ - (1UL) /*!< SCU_PLL USBPLLSTAT: PWDSTAT (Bit 1) */ -#define SCU_PLL_USBPLLSTAT_PWDSTAT_Msk \ - (0x2UL) /*!< SCU_PLL USBPLLSTAT: PWDSTAT (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLSTAT_VCOLOCK_Pos \ - (2UL) /*!< SCU_PLL USBPLLSTAT: VCOLOCK (Bit 2) */ -#define SCU_PLL_USBPLLSTAT_VCOLOCK_Msk \ - (0x4UL) /*!< SCU_PLL USBPLLSTAT: VCOLOCK (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLSTAT_BY_Pos \ - (6UL) /*!< SCU_PLL USBPLLSTAT: BY (Bit 6) */ -#define SCU_PLL_USBPLLSTAT_BY_Msk \ - (0x40UL) /*!< SCU_PLL USBPLLSTAT: BY (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLSTAT_VCOLOCKED_Pos \ - (7UL) /*!< SCU_PLL USBPLLSTAT: VCOLOCKED (Bit 7) */ -#define SCU_PLL_USBPLLSTAT_VCOLOCKED_Msk \ - (0x80UL) /*!< SCU_PLL USBPLLSTAT: VCOLOCKED (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_PLL_USBPLLCON ----------------------------- */ -#define SCU_PLL_USBPLLCON_VCOBYP_Pos \ - (0UL) /*!< SCU_PLL USBPLLCON: VCOBYP (Bit 0) */ -#define SCU_PLL_USBPLLCON_VCOBYP_Msk \ - (0x1UL) /*!< SCU_PLL USBPLLCON: VCOBYP (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_VCOPWD_Pos \ - (1UL) /*!< SCU_PLL USBPLLCON: VCOPWD (Bit 1) */ -#define SCU_PLL_USBPLLCON_VCOPWD_Msk \ - (0x2UL) /*!< SCU_PLL USBPLLCON: VCOPWD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_VCOTR_Pos \ - (2UL) /*!< SCU_PLL USBPLLCON: VCOTR (Bit 2) */ -#define SCU_PLL_USBPLLCON_VCOTR_Msk \ - (0x4UL) /*!< SCU_PLL USBPLLCON: VCOTR (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_FINDIS_Pos \ - (4UL) /*!< SCU_PLL USBPLLCON: FINDIS (Bit 4) */ -#define SCU_PLL_USBPLLCON_FINDIS_Msk \ - (0x10UL) /*!< SCU_PLL USBPLLCON: FINDIS (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_OSCDISCDIS_Pos \ - (6UL) /*!< SCU_PLL USBPLLCON: OSCDISCDIS (Bit 6) */ -#define SCU_PLL_USBPLLCON_OSCDISCDIS_Msk \ - (0x40UL) /*!< SCU_PLL USBPLLCON: OSCDISCDIS (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_NDIV_Pos \ - (8UL) /*!< SCU_PLL USBPLLCON: NDIV (Bit 8) */ -#define SCU_PLL_USBPLLCON_NDIV_Msk \ - (0x7f00UL) /*!< SCU_PLL USBPLLCON: NDIV (Bitfield-Mask: 0x7f) */ -#define SCU_PLL_USBPLLCON_PLLPWD_Pos \ - (16UL) /*!< SCU_PLL USBPLLCON: PLLPWD (Bit 16) */ -#define SCU_PLL_USBPLLCON_PLLPWD_Msk \ - (0x10000UL) /*!< SCU_PLL USBPLLCON: PLLPWD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_RESLD_Pos \ - (18UL) /*!< SCU_PLL USBPLLCON: RESLD (Bit 18) */ -#define SCU_PLL_USBPLLCON_RESLD_Msk \ - (0x40000UL) /*!< SCU_PLL USBPLLCON: RESLD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_PDIV_Pos \ - (24UL) /*!< SCU_PLL USBPLLCON: PDIV (Bit 24) */ -#define SCU_PLL_USBPLLCON_PDIV_Msk \ - (0xf000000UL) /*!< SCU_PLL USBPLLCON: PDIV (Bitfield-Mask: 0x0f) */ - -/* ------------------------------ SCU_PLL_CLKMXSTAT ----------------------------- */ -#define SCU_PLL_CLKMXSTAT_SYSCLKMUX_Pos \ - (0UL) /*!< SCU_PLL CLKMXSTAT: SYSCLKMUX (Bit 0) */ -#define SCU_PLL_CLKMXSTAT_SYSCLKMUX_Msk \ - (0x3UL) /*!< SCU_PLL CLKMXSTAT: SYSCLKMUX (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_GENERAL' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- SCU_GENERAL_ID ------------------------------- */ -#define SCU_GENERAL_ID_MOD_REV_Pos \ - (0UL) /*!< SCU_GENERAL ID: MOD_REV (Bit 0) */ -#define SCU_GENERAL_ID_MOD_REV_Msk \ - (0xffUL) /*!< SCU_GENERAL ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define SCU_GENERAL_ID_MOD_TYPE_Pos \ - (8UL) /*!< SCU_GENERAL ID: MOD_TYPE (Bit 8) */ -#define SCU_GENERAL_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< SCU_GENERAL ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define SCU_GENERAL_ID_MOD_NUMBER_Pos \ - (16UL) /*!< SCU_GENERAL ID: MOD_NUMBER (Bit 16) */ -#define SCU_GENERAL_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< SCU_GENERAL ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- SCU_GENERAL_IDCHIP ----------------------------- */ -#define SCU_GENERAL_IDCHIP_IDCHIP_Pos \ - (0UL) /*!< SCU_GENERAL IDCHIP: IDCHIP (Bit 0) */ -#define SCU_GENERAL_IDCHIP_IDCHIP_Msk \ - (0xffffffffUL) /*!< SCU_GENERAL IDCHIP: IDCHIP (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- SCU_GENERAL_IDMANUF ---------------------------- */ -#define SCU_GENERAL_IDMANUF_DEPT_Pos \ - (0UL) /*!< SCU_GENERAL IDMANUF: DEPT (Bit 0) */ -#define SCU_GENERAL_IDMANUF_DEPT_Msk \ - (0x1fUL) /*!< SCU_GENERAL IDMANUF: DEPT (Bitfield-Mask: 0x1f) */ -#define SCU_GENERAL_IDMANUF_MANUF_Pos \ - (5UL) /*!< SCU_GENERAL IDMANUF: MANUF (Bit 5) */ -#define SCU_GENERAL_IDMANUF_MANUF_Msk \ - (0xffe0UL) /*!< SCU_GENERAL IDMANUF: MANUF (Bitfield-Mask: 0x7ff) */ - -/* ------------------------------ SCU_GENERAL_STCON ----------------------------- */ -#define SCU_GENERAL_STCON_HWCON_Pos \ - (0UL) /*!< SCU_GENERAL STCON: HWCON (Bit 0) */ -#define SCU_GENERAL_STCON_HWCON_Msk \ - (0x3UL) /*!< SCU_GENERAL STCON: HWCON (Bitfield-Mask: 0x03) */ -#define SCU_GENERAL_STCON_SWCON_Pos \ - (8UL) /*!< SCU_GENERAL STCON: SWCON (Bit 8) */ -#define SCU_GENERAL_STCON_SWCON_Msk \ - (0xf00UL) /*!< SCU_GENERAL STCON: SWCON (Bitfield-Mask: 0x0f) */ - -/* ------------------------------- SCU_GENERAL_GPR ------------------------------ */ -#define SCU_GENERAL_GPR_DAT_Pos \ - (0UL) /*!< SCU_GENERAL GPR: DAT (Bit 0) */ -#define SCU_GENERAL_GPR_DAT_Msk \ - (0xffffffffUL) /*!< SCU_GENERAL GPR: DAT (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- SCU_GENERAL_CCUCON ----------------------------- */ -#define SCU_GENERAL_CCUCON_GSC40_Pos \ - (0UL) /*!< SCU_GENERAL CCUCON: GSC40 (Bit 0) */ -#define SCU_GENERAL_CCUCON_GSC40_Msk \ - (0x1UL) /*!< SCU_GENERAL CCUCON: GSC40 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSC41_Pos \ - (1UL) /*!< SCU_GENERAL CCUCON: GSC41 (Bit 1) */ -#define SCU_GENERAL_CCUCON_GSC41_Msk \ - (0x2UL) /*!< SCU_GENERAL CCUCON: GSC41 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSC80_Pos \ - (8UL) /*!< SCU_GENERAL CCUCON: GSC80 (Bit 8) */ -#define SCU_GENERAL_CCUCON_GSC80_Msk \ - (0x100UL) /*!< SCU_GENERAL CCUCON: GSC80 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSHR0_Pos \ - (24UL) /*!< SCU_GENERAL CCUCON: GSHR0 (Bit 24) */ -#define SCU_GENERAL_CCUCON_GSHR0_Msk \ - (0x1000000UL) /*!< SCU_GENERAL CCUCON: GSHR0 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_GENERAL_DTSCON ----------------------------- */ -#define SCU_GENERAL_DTSCON_PWD_Pos \ - (0UL) /*!< SCU_GENERAL DTSCON: PWD (Bit 0) */ -#define SCU_GENERAL_DTSCON_PWD_Msk \ - (0x1UL) /*!< SCU_GENERAL DTSCON: PWD (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_DTSCON_START_Pos \ - (1UL) /*!< SCU_GENERAL DTSCON: START (Bit 1) */ -#define SCU_GENERAL_DTSCON_START_Msk \ - (0x2UL) /*!< SCU_GENERAL DTSCON: START (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_DTSCON_OFFSET_Pos \ - (4UL) /*!< SCU_GENERAL DTSCON: OFFSET (Bit 4) */ -#define SCU_GENERAL_DTSCON_OFFSET_Msk \ - (0x7f0UL) /*!< SCU_GENERAL DTSCON: OFFSET (Bitfield-Mask: 0x7f) */ -#define SCU_GENERAL_DTSCON_GAIN_Pos \ - (11UL) /*!< SCU_GENERAL DTSCON: GAIN (Bit 11) */ -#define SCU_GENERAL_DTSCON_GAIN_Msk \ - (0x1f800UL) /*!< SCU_GENERAL DTSCON: GAIN (Bitfield-Mask: 0x3f) */ -#define SCU_GENERAL_DTSCON_REFTRIM_Pos \ - (17UL) /*!< SCU_GENERAL DTSCON: REFTRIM (Bit 17) */ -#define SCU_GENERAL_DTSCON_REFTRIM_Msk \ - (0xe0000UL) /*!< SCU_GENERAL DTSCON: REFTRIM (Bitfield-Mask: 0x07) */ -#define SCU_GENERAL_DTSCON_BGTRIM_Pos \ - (20UL) /*!< SCU_GENERAL DTSCON: BGTRIM (Bit 20) */ -#define SCU_GENERAL_DTSCON_BGTRIM_Msk \ - (0xf00000UL) /*!< SCU_GENERAL DTSCON: BGTRIM (Bitfield-Mask: 0x0f) */ - -/* ----------------------------- SCU_GENERAL_DTSSTAT ---------------------------- */ -#define SCU_GENERAL_DTSSTAT_RESULT_Pos \ - (0UL) /*!< SCU_GENERAL DTSSTAT: RESULT (Bit 0) */ -#define SCU_GENERAL_DTSSTAT_RESULT_Msk \ - (0x3ffUL) /*!< SCU_GENERAL DTSSTAT: RESULT (Bitfield-Mask: 0x3ff) */ -#define SCU_GENERAL_DTSSTAT_RDY_Pos \ - (14UL) /*!< SCU_GENERAL DTSSTAT: RDY (Bit 14) */ -#define SCU_GENERAL_DTSSTAT_RDY_Msk \ - (0x4000UL) /*!< SCU_GENERAL DTSSTAT: RDY (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_DTSSTAT_BUSY_Pos \ - (15UL) /*!< SCU_GENERAL DTSSTAT: BUSY (Bit 15) */ -#define SCU_GENERAL_DTSSTAT_BUSY_Msk \ - (0x8000UL) /*!< SCU_GENERAL DTSSTAT: BUSY (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_GENERAL_GORCEN ----------------------------- */ -#define SCU_GENERAL_GORCEN_ENORC6_Pos \ - (6UL) /*!< SCU_GENERAL GORCEN: ENORC6 (Bit 6) */ -#define SCU_GENERAL_GORCEN_ENORC6_Msk \ - (0x40UL) /*!< SCU_GENERAL GORCEN: ENORC6 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_GORCEN_ENORC7_Pos \ - (7UL) /*!< SCU_GENERAL GORCEN: ENORC7 (Bit 7) */ -#define SCU_GENERAL_GORCEN_ENORC7_Msk \ - (0x80UL) /*!< SCU_GENERAL GORCEN: ENORC7 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_GENERAL_DTEMPLIM ---------------------------- */ -#define SCU_GENERAL_DTEMPLIM_LOWER_Pos \ - (0UL) /*!< SCU_GENERAL DTEMPLIM: LOWER (Bit 0) */ -#define SCU_GENERAL_DTEMPLIM_LOWER_Msk \ - (0x3ffUL) /*!< SCU_GENERAL DTEMPLIM: LOWER (Bitfield-Mask: 0x3ff) */ -#define SCU_GENERAL_DTEMPLIM_UPPER_Pos \ - (16UL) /*!< SCU_GENERAL DTEMPLIM: UPPER (Bit 16) */ -#define SCU_GENERAL_DTEMPLIM_UPPER_Msk \ - (0x3ff0000UL) /*!< SCU_GENERAL DTEMPLIM: UPPER (Bitfield-Mask: 0x3ff) */ - -/* --------------------------- SCU_GENERAL_DTEMPALARM --------------------------- */ -#define SCU_GENERAL_DTEMPALARM_UNDERFL_Pos \ - (0UL) /*!< SCU_GENERAL DTEMPALARM: UNDERFL (Bit 0) */ -#define SCU_GENERAL_DTEMPALARM_UNDERFL_Msk \ - (0x1UL) /*!< SCU_GENERAL DTEMPALARM: UNDERFL (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_DTEMPALARM_OVERFL_Pos \ - (16UL) /*!< SCU_GENERAL DTEMPALARM: OVERFL (Bit 16) */ -#define SCU_GENERAL_DTEMPALARM_OVERFL_Msk \ - (0x10000UL) /*!< SCU_GENERAL DTEMPALARM: OVERFL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_GENERAL_MIRRSTS ---------------------------- */ -#define SCU_GENERAL_MIRRSTS_HDCLR_Pos \ - (1UL) /*!< SCU_GENERAL MIRRSTS: HDCLR (Bit 1) */ -#define SCU_GENERAL_MIRRSTS_HDCLR_Msk \ - (0x2UL) /*!< SCU_GENERAL MIRRSTS: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_HDSET_Pos \ - (2UL) /*!< SCU_GENERAL MIRRSTS: HDSET (Bit 2) */ -#define SCU_GENERAL_MIRRSTS_HDSET_Msk \ - (0x4UL) /*!< SCU_GENERAL MIRRSTS: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_HDCR_Pos \ - (3UL) /*!< SCU_GENERAL MIRRSTS: HDCR (Bit 3) */ -#define SCU_GENERAL_MIRRSTS_HDCR_Msk \ - (0x8UL) /*!< SCU_GENERAL MIRRSTS: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_OSCSICTRL_Pos \ - (5UL) /*!< SCU_GENERAL MIRRSTS: OSCSICTRL (Bit 5) */ -#define SCU_GENERAL_MIRRSTS_OSCSICTRL_Msk \ - (0x20UL) /*!< SCU_GENERAL MIRRSTS: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_OSCULCTRL_Pos \ - (7UL) /*!< SCU_GENERAL MIRRSTS: OSCULCTRL (Bit 7) */ -#define SCU_GENERAL_MIRRSTS_OSCULCTRL_Msk \ - (0x80UL) /*!< SCU_GENERAL MIRRSTS: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_CTR_Pos \ - (8UL) /*!< SCU_GENERAL MIRRSTS: RTC_CTR (Bit 8) */ -#define SCU_GENERAL_MIRRSTS_RTC_CTR_Msk \ - (0x100UL) /*!< SCU_GENERAL MIRRSTS: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_ATIM0_Pos \ - (9UL) /*!< SCU_GENERAL MIRRSTS: RTC_ATIM0 (Bit 9) */ -#define SCU_GENERAL_MIRRSTS_RTC_ATIM0_Msk \ - (0x200UL) /*!< SCU_GENERAL MIRRSTS: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_ATIM1_Pos \ - (10UL) /*!< SCU_GENERAL MIRRSTS: RTC_ATIM1 (Bit 10) */ -#define SCU_GENERAL_MIRRSTS_RTC_ATIM1_Msk \ - (0x400UL) /*!< SCU_GENERAL MIRRSTS: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_TIM0_Pos \ - (11UL) /*!< SCU_GENERAL MIRRSTS: RTC_TIM0 (Bit 11) */ -#define SCU_GENERAL_MIRRSTS_RTC_TIM0_Msk \ - (0x800UL) /*!< SCU_GENERAL MIRRSTS: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_TIM1_Pos \ - (12UL) /*!< SCU_GENERAL MIRRSTS: RTC_TIM1 (Bit 12) */ -#define SCU_GENERAL_MIRRSTS_RTC_TIM1_Msk \ - (0x1000UL) /*!< SCU_GENERAL MIRRSTS: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RMX_Pos \ - (13UL) /*!< SCU_GENERAL MIRRSTS: RMX (Bit 13) */ -#define SCU_GENERAL_MIRRSTS_RMX_Msk \ - (0x2000UL) /*!< SCU_GENERAL MIRRSTS: RMX (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_MSKSR_Pos \ - (14UL) /*!< SCU_GENERAL MIRRSTS: RTC_MSKSR (Bit 14) */ -#define SCU_GENERAL_MIRRSTS_RTC_MSKSR_Msk \ - (0x4000UL) /*!< SCU_GENERAL MIRRSTS: RTC_MSKSR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_CLRSR_Pos \ - (15UL) /*!< SCU_GENERAL MIRRSTS: RTC_CLRSR (Bit 15) */ -#define SCU_GENERAL_MIRRSTS_RTC_CLRSR_Msk \ - (0x8000UL) /*!< SCU_GENERAL MIRRSTS: RTC_CLRSR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACCONF_Pos \ - (16UL) /*!< SCU_GENERAL MIRRSTS: LPACCONF (Bit 16) */ -#define SCU_GENERAL_MIRRSTS_LPACCONF_Msk \ - (0x10000UL) /*!< SCU_GENERAL MIRRSTS: LPACCONF (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACTH0_Pos \ - (17UL) /*!< SCU_GENERAL MIRRSTS: LPACTH0 (Bit 17) */ -#define SCU_GENERAL_MIRRSTS_LPACTH0_Msk \ - (0x20000UL) /*!< SCU_GENERAL MIRRSTS: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACTH1_Pos \ - (18UL) /*!< SCU_GENERAL MIRRSTS: LPACTH1 (Bit 18) */ -#define SCU_GENERAL_MIRRSTS_LPACTH1_Msk \ - (0x40000UL) /*!< SCU_GENERAL MIRRSTS: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACCLR_Pos \ - (20UL) /*!< SCU_GENERAL MIRRSTS: LPACCLR (Bit 20) */ -#define SCU_GENERAL_MIRRSTS_LPACCLR_Msk \ - (0x100000UL) /*!< SCU_GENERAL MIRRSTS: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACSET_Pos \ - (21UL) /*!< SCU_GENERAL MIRRSTS: LPACSET (Bit 21) */ -#define SCU_GENERAL_MIRRSTS_LPACSET_Msk \ - (0x200000UL) /*!< SCU_GENERAL MIRRSTS: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_HINTCLR_Pos \ - (23UL) /*!< SCU_GENERAL MIRRSTS: HINTCLR (Bit 23) */ -#define SCU_GENERAL_MIRRSTS_HINTCLR_Msk \ - (0x800000UL) /*!< SCU_GENERAL MIRRSTS: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_HINTSET_Pos \ - (24UL) /*!< SCU_GENERAL MIRRSTS: HINTSET (Bit 24) */ -#define SCU_GENERAL_MIRRSTS_HINTSET_Msk \ - (0x1000000UL) /*!< SCU_GENERAL MIRRSTS: HINTSET (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_GENERAL_RMACR ----------------------------- */ -#define SCU_GENERAL_RMACR_RDWR_Pos \ - (0UL) /*!< SCU_GENERAL RMACR: RDWR (Bit 0) */ -#define SCU_GENERAL_RMACR_RDWR_Msk \ - (0x1UL) /*!< SCU_GENERAL RMACR: RDWR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_RMACR_ADDR_Pos \ - (16UL) /*!< SCU_GENERAL RMACR: ADDR (Bit 16) */ -#define SCU_GENERAL_RMACR_ADDR_Msk \ - (0xf0000UL) /*!< SCU_GENERAL RMACR: ADDR (Bitfield-Mask: 0x0f) */ - -/* ----------------------------- SCU_GENERAL_RMDATA ----------------------------- */ -#define SCU_GENERAL_RMDATA_DATA_Pos \ - (0UL) /*!< SCU_GENERAL RMDATA: DATA (Bit 0) */ -#define SCU_GENERAL_RMDATA_DATA_Msk \ - (0xffffffffUL) /*!< SCU_GENERAL RMDATA: DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- SCU_GENERAL_MIRRALLSTAT -------------------------- */ -#define SCU_GENERAL_MIRRALLSTAT_BUSY_Pos \ - (0UL) /*!< SCU_GENERAL MIRRALLSTAT: BUSY (Bit 0) */ -#define SCU_GENERAL_MIRRALLSTAT_BUSY_Msk \ - (0x1UL) /*!< SCU_GENERAL MIRRALLSTAT: BUSY (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_GENERAL_MIRRALLREQ --------------------------- */ -#define SCU_GENERAL_MIRRALLREQ_REQ_Pos \ - (0UL) /*!< SCU_GENERAL MIRRALLREQ: REQ (Bit 0) */ -#define SCU_GENERAL_MIRRALLREQ_REQ_Msk \ - (0x1UL) /*!< SCU_GENERAL MIRRALLREQ: REQ (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_INTERRUPT' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------- SCU_INTERRUPT_SRSTAT ---------------------------- */ -#define SCU_INTERRUPT_SRSTAT_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRSTAT: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRSTAT_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRSTAT: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRSTAT: PI (Bit 1) */ -#define SCU_INTERRUPT_SRSTAT_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRSTAT: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRSTAT: AI (Bit 2) */ -#define SCU_INTERRUPT_SRSTAT_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRSTAT: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRSTAT: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRSTAT_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRSTAT: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRSTAT: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRSTAT_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRSTAT: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRSTAT: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRSTAT_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRSTAT: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRSTAT: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRSTAT_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRSTAT: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRSTAT: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRSTAT_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRSTAT: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRSTAT: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRSTAT_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRSTAT: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRSTAT: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRSTAT_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRSTAT: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRSTAT: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRSTAT_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRSTAT: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRSTAT: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRSTAT_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRSTAT: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRSTAT: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRSTAT_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRSTAT: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HDCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRSTAT: HDCLR (Bit 17) */ -#define SCU_INTERRUPT_SRSTAT_HDCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRSTAT: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HDSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRSTAT: HDSET (Bit 18) */ -#define SCU_INTERRUPT_SRSTAT_HDSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRSTAT: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRSTAT: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRSTAT_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRSTAT: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRSTAT: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRSTAT_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRSTAT: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRSTAT: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRSTAT_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRSTAT: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRSTAT: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRSTAT_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRSTAT: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRSTAT_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRSTAT: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRSTAT_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRSTAT: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRSTAT_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRSTAT: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRSTAT_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRSTAT: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRSTAT_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRSTAT: RMX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_INTERRUPT_SRRAW ---------------------------- */ -#define SCU_INTERRUPT_SRRAW_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRRAW: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRRAW_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRRAW: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRRAW: PI (Bit 1) */ -#define SCU_INTERRUPT_SRRAW_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRRAW: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRRAW: AI (Bit 2) */ -#define SCU_INTERRUPT_SRRAW_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRRAW: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRRAW: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRRAW_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRRAW: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRRAW: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRRAW_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRRAW: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRRAW: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRRAW_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRRAW: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRRAW: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRRAW_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRRAW: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRRAW: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRRAW_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRRAW: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRRAW: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRRAW_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRRAW: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRRAW: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRRAW_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRRAW: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRRAW: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRRAW_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRRAW: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRRAW: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRRAW_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRRAW: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRRAW: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRRAW_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRRAW: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HDCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRRAW: HDCLR (Bit 17) */ -#define SCU_INTERRUPT_SRRAW_HDCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRRAW: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HDSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRRAW: HDSET (Bit 18) */ -#define SCU_INTERRUPT_SRRAW_HDSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRRAW: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRRAW: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRRAW_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRRAW: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRRAW: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRRAW_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRRAW: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRRAW: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRRAW_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRRAW: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRRAW: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRRAW_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRRAW: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRRAW_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRRAW: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRRAW_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRRAW: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRRAW_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRRAW: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRRAW_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRRAW: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRRAW_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRRAW: RMX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_INTERRUPT_SRMSK ---------------------------- */ -#define SCU_INTERRUPT_SRMSK_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRMSK: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRMSK_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRMSK: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRMSK: PI (Bit 1) */ -#define SCU_INTERRUPT_SRMSK_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRMSK: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRMSK: AI (Bit 2) */ -#define SCU_INTERRUPT_SRMSK_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRMSK: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRMSK: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRMSK_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRMSK: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRMSK: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRMSK_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRMSK: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRMSK: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRMSK_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRMSK: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRMSK: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRMSK_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRMSK: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRMSK: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRMSK_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRMSK: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRMSK: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRMSK_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRMSK: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRMSK: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRMSK_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRMSK: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRMSK: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRMSK_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRMSK: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRMSK: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRMSK_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRMSK: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRMSK: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRMSK_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRMSK: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HDCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRMSK: HDCLR (Bit 17) */ -#define SCU_INTERRUPT_SRMSK_HDCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRMSK: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HDSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRMSK: HDSET (Bit 18) */ -#define SCU_INTERRUPT_SRMSK_HDSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRMSK: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRMSK: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRMSK_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRMSK: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRMSK: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRMSK_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRMSK: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRMSK: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRMSK_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRMSK: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRMSK: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRMSK_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRMSK: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRMSK_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRMSK: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRMSK_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRMSK: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRMSK_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRMSK: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRMSK_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRMSK: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRMSK_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRMSK: RMX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_INTERRUPT_SRCLR ---------------------------- */ -#define SCU_INTERRUPT_SRCLR_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRCLR: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRCLR_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRCLR: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRCLR: PI (Bit 1) */ -#define SCU_INTERRUPT_SRCLR_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRCLR: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRCLR: AI (Bit 2) */ -#define SCU_INTERRUPT_SRCLR_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRCLR: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRCLR: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRCLR_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRCLR: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRCLR: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRCLR_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRCLR: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRCLR: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRCLR_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRCLR: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRCLR: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRCLR_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRCLR: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRCLR: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRCLR_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRCLR: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRCLR: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRCLR_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRCLR: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRCLR: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRCLR_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRCLR: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRCLR: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRCLR_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRCLR: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRCLR: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRCLR_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRCLR: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRCLR: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRCLR_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRCLR: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HDCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRCLR: HDCLR (Bit 17) */ -#define SCU_INTERRUPT_SRCLR_HDCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRCLR: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HDSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRCLR: HDSET (Bit 18) */ -#define SCU_INTERRUPT_SRCLR_HDSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRCLR: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRCLR: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRCLR_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRCLR: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRCLR: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRCLR_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRCLR: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRCLR: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRCLR_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRCLR: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRCLR: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRCLR_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRCLR: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRCLR_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRCLR: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRCLR_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRCLR: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRCLR_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRCLR: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRCLR_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRCLR: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRCLR_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRCLR: RMX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_INTERRUPT_SRSET ---------------------------- */ -#define SCU_INTERRUPT_SRSET_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRSET: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRSET_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRSET: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRSET: PI (Bit 1) */ -#define SCU_INTERRUPT_SRSET_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRSET: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRSET: AI (Bit 2) */ -#define SCU_INTERRUPT_SRSET_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRSET: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRSET: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRSET_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRSET: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRSET: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRSET_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRSET: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRSET: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRSET_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRSET: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRSET: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRSET_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRSET: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRSET: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRSET_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRSET: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRSET: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRSET_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRSET: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRSET: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRSET_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRSET: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRSET: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRSET_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRSET: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRSET: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRSET_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRSET: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRSET: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRSET_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRSET: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HDCRCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRSET: HDCRCLR (Bit 17) */ -#define SCU_INTERRUPT_SRSET_HDCRCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRSET: HDCRCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HDCRSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRSET: HDCRSET (Bit 18) */ -#define SCU_INTERRUPT_SRSET_HDCRSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRSET: HDCRSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRSET: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRSET_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRSET: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRSET: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRSET_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRSET: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRSET: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRSET_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRSET: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRSET: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRSET_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRSET: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRSET: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRSET_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRSET: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRSET: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRSET_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRSET: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRSET: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRSET_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRSET: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRSET: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRSET_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRSET: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRSET: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRSET_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRSET: RMX (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_INTERRUPT_NMIREQEN --------------------------- */ -#define SCU_INTERRUPT_NMIREQEN_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT NMIREQEN: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_NMIREQEN_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT NMIREQEN: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT NMIREQEN: PI (Bit 1) */ -#define SCU_INTERRUPT_NMIREQEN_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT NMIREQEN: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT NMIREQEN: AI (Bit 2) */ -#define SCU_INTERRUPT_NMIREQEN_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT NMIREQEN: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_ERU00_Pos \ - (16UL) /*!< SCU_INTERRUPT NMIREQEN: ERU00 (Bit 16) */ -#define SCU_INTERRUPT_NMIREQEN_ERU00_Msk \ - (0x10000UL) /*!< SCU_INTERRUPT NMIREQEN: ERU00 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_ERU01_Pos \ - (17UL) /*!< SCU_INTERRUPT NMIREQEN: ERU01 (Bit 17) */ -#define SCU_INTERRUPT_NMIREQEN_ERU01_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT NMIREQEN: ERU01 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_ERU02_Pos \ - (18UL) /*!< SCU_INTERRUPT NMIREQEN: ERU02 (Bit 18) */ -#define SCU_INTERRUPT_NMIREQEN_ERU02_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT NMIREQEN: ERU02 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_ERU03_Pos \ - (19UL) /*!< SCU_INTERRUPT NMIREQEN: ERU03 (Bit 19) */ -#define SCU_INTERRUPT_NMIREQEN_ERU03_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT NMIREQEN: ERU03 (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_PARITY' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- SCU_PARITY_PEEN ------------------------------ */ -#define SCU_PARITY_PEEN_PEENPS_Pos \ - (0UL) /*!< SCU_PARITY PEEN: PEENPS (Bit 0) */ -#define SCU_PARITY_PEEN_PEENPS_Msk \ - (0x1UL) /*!< SCU_PARITY PEEN: PEENPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENDS1_Pos \ - (1UL) /*!< SCU_PARITY PEEN: PEENDS1 (Bit 1) */ -#define SCU_PARITY_PEEN_PEENDS1_Msk \ - (0x2UL) /*!< SCU_PARITY PEEN: PEENDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENU0_Pos \ - (8UL) /*!< SCU_PARITY PEEN: PEENU0 (Bit 8) */ -#define SCU_PARITY_PEEN_PEENU0_Msk \ - (0x100UL) /*!< SCU_PARITY PEEN: PEENU0 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENU1_Pos \ - (9UL) /*!< SCU_PARITY PEEN: PEENU1 (Bit 9) */ -#define SCU_PARITY_PEEN_PEENU1_Msk \ - (0x200UL) /*!< SCU_PARITY PEEN: PEENU1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENMC_Pos \ - (12UL) /*!< SCU_PARITY PEEN: PEENMC (Bit 12) */ -#define SCU_PARITY_PEEN_PEENMC_Msk \ - (0x1000UL) /*!< SCU_PARITY PEEN: PEENMC (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENPPRF_Pos \ - (13UL) /*!< SCU_PARITY PEEN: PEENPPRF (Bit 13) */ -#define SCU_PARITY_PEEN_PEENPPRF_Msk \ - (0x2000UL) /*!< SCU_PARITY PEEN: PEENPPRF (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENUSB_Pos \ - (16UL) /*!< SCU_PARITY PEEN: PEENUSB (Bit 16) */ -#define SCU_PARITY_PEEN_PEENUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY PEEN: PEENUSB (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_PARITY_MCHKCON ----------------------------- */ -#define SCU_PARITY_MCHKCON_SELPS_Pos \ - (0UL) /*!< SCU_PARITY MCHKCON: SELPS (Bit 0) */ -#define SCU_PARITY_MCHKCON_SELPS_Msk \ - (0x1UL) /*!< SCU_PARITY MCHKCON: SELPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_SELDS1_Pos \ - (1UL) /*!< SCU_PARITY MCHKCON: SELDS1 (Bit 1) */ -#define SCU_PARITY_MCHKCON_SELDS1_Msk \ - (0x2UL) /*!< SCU_PARITY MCHKCON: SELDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_USIC0DRA_Pos \ - (8UL) /*!< SCU_PARITY MCHKCON: USIC0DRA (Bit 8) */ -#define SCU_PARITY_MCHKCON_USIC0DRA_Msk \ - (0x100UL) /*!< SCU_PARITY MCHKCON: USIC0DRA (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_USIC1DRA_Pos \ - (9UL) /*!< SCU_PARITY MCHKCON: USIC1DRA (Bit 9) */ -#define SCU_PARITY_MCHKCON_USIC1DRA_Msk \ - (0x200UL) /*!< SCU_PARITY MCHKCON: USIC1DRA (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_MCANDRA_Pos \ - (12UL) /*!< SCU_PARITY MCHKCON: MCANDRA (Bit 12) */ -#define SCU_PARITY_MCHKCON_MCANDRA_Msk \ - (0x1000UL) /*!< SCU_PARITY MCHKCON: MCANDRA (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_PPRFDRA_Pos \ - (13UL) /*!< SCU_PARITY MCHKCON: PPRFDRA (Bit 13) */ -#define SCU_PARITY_MCHKCON_PPRFDRA_Msk \ - (0x2000UL) /*!< SCU_PARITY MCHKCON: PPRFDRA (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_SELUSB_Pos \ - (16UL) /*!< SCU_PARITY MCHKCON: SELUSB (Bit 16) */ -#define SCU_PARITY_MCHKCON_SELUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY MCHKCON: SELUSB (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_PARITY_PETE ------------------------------ */ -#define SCU_PARITY_PETE_PETEPS_Pos \ - (0UL) /*!< SCU_PARITY PETE: PETEPS (Bit 0) */ -#define SCU_PARITY_PETE_PETEPS_Msk \ - (0x1UL) /*!< SCU_PARITY PETE: PETEPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEDS1_Pos \ - (1UL) /*!< SCU_PARITY PETE: PETEDS1 (Bit 1) */ -#define SCU_PARITY_PETE_PETEDS1_Msk \ - (0x2UL) /*!< SCU_PARITY PETE: PETEDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEU0_Pos \ - (8UL) /*!< SCU_PARITY PETE: PETEU0 (Bit 8) */ -#define SCU_PARITY_PETE_PETEU0_Msk \ - (0x100UL) /*!< SCU_PARITY PETE: PETEU0 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEU1_Pos \ - (9UL) /*!< SCU_PARITY PETE: PETEU1 (Bit 9) */ -#define SCU_PARITY_PETE_PETEU1_Msk \ - (0x200UL) /*!< SCU_PARITY PETE: PETEU1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEMC_Pos \ - (12UL) /*!< SCU_PARITY PETE: PETEMC (Bit 12) */ -#define SCU_PARITY_PETE_PETEMC_Msk \ - (0x1000UL) /*!< SCU_PARITY PETE: PETEMC (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEPPRF_Pos \ - (13UL) /*!< SCU_PARITY PETE: PETEPPRF (Bit 13) */ -#define SCU_PARITY_PETE_PETEPPRF_Msk \ - (0x2000UL) /*!< SCU_PARITY PETE: PETEPPRF (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEUSB_Pos \ - (16UL) /*!< SCU_PARITY PETE: PETEUSB (Bit 16) */ -#define SCU_PARITY_PETE_PETEUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY PETE: PETEUSB (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_PARITY_PERSTEN ----------------------------- */ -#define SCU_PARITY_PERSTEN_RSEN_Pos \ - (0UL) /*!< SCU_PARITY PERSTEN: RSEN (Bit 0) */ -#define SCU_PARITY_PERSTEN_RSEN_Msk \ - (0x1UL) /*!< SCU_PARITY PERSTEN: RSEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_PARITY_PEFLAG ----------------------------- */ -#define SCU_PARITY_PEFLAG_PEFPS_Pos \ - (0UL) /*!< SCU_PARITY PEFLAG: PEFPS (Bit 0) */ -#define SCU_PARITY_PEFLAG_PEFPS_Msk \ - (0x1UL) /*!< SCU_PARITY PEFLAG: PEFPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFDS1_Pos \ - (1UL) /*!< SCU_PARITY PEFLAG: PEFDS1 (Bit 1) */ -#define SCU_PARITY_PEFLAG_PEFDS1_Msk \ - (0x2UL) /*!< SCU_PARITY PEFLAG: PEFDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFU0_Pos \ - (8UL) /*!< SCU_PARITY PEFLAG: PEFU0 (Bit 8) */ -#define SCU_PARITY_PEFLAG_PEFU0_Msk \ - (0x100UL) /*!< SCU_PARITY PEFLAG: PEFU0 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFU1_Pos \ - (9UL) /*!< SCU_PARITY PEFLAG: PEFU1 (Bit 9) */ -#define SCU_PARITY_PEFLAG_PEFU1_Msk \ - (0x200UL) /*!< SCU_PARITY PEFLAG: PEFU1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFMC_Pos \ - (12UL) /*!< SCU_PARITY PEFLAG: PEFMC (Bit 12) */ -#define SCU_PARITY_PEFLAG_PEFMC_Msk \ - (0x1000UL) /*!< SCU_PARITY PEFLAG: PEFMC (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFPPRF_Pos \ - (13UL) /*!< SCU_PARITY PEFLAG: PEFPPRF (Bit 13) */ -#define SCU_PARITY_PEFLAG_PEFPPRF_Msk \ - (0x2000UL) /*!< SCU_PARITY PEFLAG: PEFPPRF (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEUSB_Pos \ - (16UL) /*!< SCU_PARITY PEFLAG: PEUSB (Bit 16) */ -#define SCU_PARITY_PEFLAG_PEUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY PEFLAG: PEUSB (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_PARITY_PMTPR ------------------------------ */ -#define SCU_PARITY_PMTPR_PWR_Pos \ - (0UL) /*!< SCU_PARITY PMTPR: PWR (Bit 0) */ -#define SCU_PARITY_PMTPR_PWR_Msk \ - (0xffUL) /*!< SCU_PARITY PMTPR: PWR (Bitfield-Mask: 0xff) */ -#define SCU_PARITY_PMTPR_PRD_Pos \ - (8UL) /*!< SCU_PARITY PMTPR: PRD (Bit 8) */ -#define SCU_PARITY_PMTPR_PRD_Msk \ - (0xff00UL) /*!< SCU_PARITY PMTPR: PRD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ SCU_PARITY_PMTSR ------------------------------ */ -#define SCU_PARITY_PMTSR_MTENPS_Pos \ - (0UL) /*!< SCU_PARITY PMTSR: MTENPS (Bit 0) */ -#define SCU_PARITY_PMTSR_MTENPS_Msk \ - (0x1UL) /*!< SCU_PARITY PMTSR: MTENPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTENDS1_Pos \ - (1UL) /*!< SCU_PARITY PMTSR: MTENDS1 (Bit 1) */ -#define SCU_PARITY_PMTSR_MTENDS1_Msk \ - (0x2UL) /*!< SCU_PARITY PMTSR: MTENDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTEU0_Pos \ - (8UL) /*!< SCU_PARITY PMTSR: MTEU0 (Bit 8) */ -#define SCU_PARITY_PMTSR_MTEU0_Msk \ - (0x100UL) /*!< SCU_PARITY PMTSR: MTEU0 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTEU1_Pos \ - (9UL) /*!< SCU_PARITY PMTSR: MTEU1 (Bit 9) */ -#define SCU_PARITY_PMTSR_MTEU1_Msk \ - (0x200UL) /*!< SCU_PARITY PMTSR: MTEU1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTEMC_Pos \ - (12UL) /*!< SCU_PARITY PMTSR: MTEMC (Bit 12) */ -#define SCU_PARITY_PMTSR_MTEMC_Msk \ - (0x1000UL) /*!< SCU_PARITY PMTSR: MTEMC (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTEPPRF_Pos \ - (13UL) /*!< SCU_PARITY PMTSR: MTEPPRF (Bit 13) */ -#define SCU_PARITY_PMTSR_MTEPPRF_Msk \ - (0x2000UL) /*!< SCU_PARITY PMTSR: MTEPPRF (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTUSB_Pos \ - (16UL) /*!< SCU_PARITY PMTSR: MTUSB (Bit 16) */ -#define SCU_PARITY_PMTSR_MTUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY PMTSR: MTUSB (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_TRAP' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ SCU_TRAP_TRAPSTAT ----------------------------- */ -#define SCU_TRAP_TRAPSTAT_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPSTAT: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPSTAT_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPSTAT: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPSTAT: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPSTAT_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPSTAT: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPSTAT: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPSTAT_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPSTAT: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPSTAT: PET (Bit 4) */ -#define SCU_TRAP_TRAPSTAT_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPSTAT: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPSTAT: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPSTAT_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPSTAT: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_ULPWDGT_Pos \ - (6UL) /*!< SCU_TRAP TRAPSTAT: ULPWDGT (Bit 6) */ -#define SCU_TRAP_TRAPSTAT_ULPWDGT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPSTAT: ULPWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPSTAT: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPSTAT_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPSTAT: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPSTAT: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPSTAT_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPSTAT: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPSTAT: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPSTAT_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPSTAT: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPSTAT: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPSTAT_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPSTAT: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_TRAP_TRAPRAW ------------------------------ */ -#define SCU_TRAP_TRAPRAW_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPRAW: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPRAW_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPRAW: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPRAW: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPRAW_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPRAW: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPRAW: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPRAW_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPRAW: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPRAW: PET (Bit 4) */ -#define SCU_TRAP_TRAPRAW_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPRAW: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPRAW: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPRAW_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPRAW: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_ULPWDGT_Pos \ - (6UL) /*!< SCU_TRAP TRAPRAW: ULPWDGT (Bit 6) */ -#define SCU_TRAP_TRAPRAW_ULPWDGT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPRAW: ULPWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPRAW: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPRAW_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPRAW: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPRAW: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPRAW_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPRAW: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPRAW: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPRAW_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPRAW: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPRAW: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPRAW_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPRAW: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_TRAP_TRAPDIS ------------------------------ */ -#define SCU_TRAP_TRAPDIS_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPDIS: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPDIS_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPDIS: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPDIS: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPDIS_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPDIS: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPDIS: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPDIS_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPDIS: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPDIS: PET (Bit 4) */ -#define SCU_TRAP_TRAPDIS_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPDIS: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPDIS: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPDIS_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPDIS: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_ULPWDGT_Pos \ - (6UL) /*!< SCU_TRAP TRAPDIS: ULPWDGT (Bit 6) */ -#define SCU_TRAP_TRAPDIS_ULPWDGT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPDIS: ULPWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPDIS: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPDIS_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPDIS: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPDIS: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPDIS_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPDIS: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPDIS: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPDIS_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPDIS: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPDIS: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPDIS_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPDIS: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_TRAP_TRAPCLR ------------------------------ */ -#define SCU_TRAP_TRAPCLR_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPCLR: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPCLR_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPCLR: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPCLR: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPCLR_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPCLR: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPCLR: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPCLR_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPCLR: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPCLR: PET (Bit 4) */ -#define SCU_TRAP_TRAPCLR_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPCLR: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPCLR: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPCLR_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPCLR: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_ULPWDGT_Pos \ - (6UL) /*!< SCU_TRAP TRAPCLR: ULPWDGT (Bit 6) */ -#define SCU_TRAP_TRAPCLR_ULPWDGT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPCLR: ULPWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPCLR: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPCLR_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPCLR: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPCLR: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPCLR_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPCLR: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPCLR: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPCLR_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPCLR: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPCLR: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPCLR_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPCLR: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_TRAP_TRAPSET ------------------------------ */ -#define SCU_TRAP_TRAPSET_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPSET: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPSET_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPSET: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPSET: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPSET_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPSET: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPSET: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPSET_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPSET: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPSET: PET (Bit 4) */ -#define SCU_TRAP_TRAPSET_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPSET: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPSET: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPSET_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPSET: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_ULPWDT_Pos \ - (6UL) /*!< SCU_TRAP TRAPSET: ULPWDT (Bit 6) */ -#define SCU_TRAP_TRAPSET_ULPWDT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPSET: ULPWDT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPSET: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPSET_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPSET: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPSET: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPSET_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPSET: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPSET: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPSET_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPSET: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPSET: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPSET_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPSET: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_HIBERNATE' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------- SCU_HIBERNATE_HDSTAT ---------------------------- */ -#define SCU_HIBERNATE_HDSTAT_EPEV_Pos \ - (0UL) /*!< SCU_HIBERNATE HDSTAT: EPEV (Bit 0) */ -#define SCU_HIBERNATE_HDSTAT_EPEV_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HDSTAT: EPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_ENEV_Pos \ - (1UL) /*!< SCU_HIBERNATE HDSTAT: ENEV (Bit 1) */ -#define SCU_HIBERNATE_HDSTAT_ENEV_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HDSTAT: ENEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_RTCEV_Pos \ - (2UL) /*!< SCU_HIBERNATE HDSTAT: RTCEV (Bit 2) */ -#define SCU_HIBERNATE_HDSTAT_RTCEV_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HDSTAT: RTCEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_ULPWDG_Pos \ - (3UL) /*!< SCU_HIBERNATE HDSTAT: ULPWDG (Bit 3) */ -#define SCU_HIBERNATE_HDSTAT_ULPWDG_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HDSTAT: ULPWDG (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_HIBNOUT_Pos \ - (4UL) /*!< SCU_HIBERNATE HDSTAT: HIBNOUT (Bit 4) */ -#define SCU_HIBERNATE_HDSTAT_HIBNOUT_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HDSTAT: HIBNOUT (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_VBATPEV_Pos \ - (8UL) /*!< SCU_HIBERNATE HDSTAT: VBATPEV (Bit 8) */ -#define SCU_HIBERNATE_HDSTAT_VBATPEV_Msk \ - (0x100UL) /*!< SCU_HIBERNATE HDSTAT: VBATPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_VBATNEV_Pos \ - (9UL) /*!< SCU_HIBERNATE HDSTAT: VBATNEV (Bit 9) */ -#define SCU_HIBERNATE_HDSTAT_VBATNEV_Msk \ - (0x200UL) /*!< SCU_HIBERNATE HDSTAT: VBATNEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO0PEV_Pos \ - (10UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO0PEV (Bit 10) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO0PEV_Msk \ - (0x400UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO0PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO0NEV_Pos \ - (11UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO0NEV (Bit 11) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO0NEV_Msk \ - (0x800UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO0NEV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_HIBERNATE_HDCLR ---------------------------- */ -#define SCU_HIBERNATE_HDCLR_EPEV_Pos \ - (0UL) /*!< SCU_HIBERNATE HDCLR: EPEV (Bit 0) */ -#define SCU_HIBERNATE_HDCLR_EPEV_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HDCLR: EPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_ENEV_Pos \ - (1UL) /*!< SCU_HIBERNATE HDCLR: ENEV (Bit 1) */ -#define SCU_HIBERNATE_HDCLR_ENEV_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HDCLR: ENEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_RTCEV_Pos \ - (2UL) /*!< SCU_HIBERNATE HDCLR: RTCEV (Bit 2) */ -#define SCU_HIBERNATE_HDCLR_RTCEV_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HDCLR: RTCEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_ULPWDG_Pos \ - (3UL) /*!< SCU_HIBERNATE HDCLR: ULPWDG (Bit 3) */ -#define SCU_HIBERNATE_HDCLR_ULPWDG_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HDCLR: ULPWDG (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_VBATPEV_Pos \ - (8UL) /*!< SCU_HIBERNATE HDCLR: VBATPEV (Bit 8) */ -#define SCU_HIBERNATE_HDCLR_VBATPEV_Msk \ - (0x100UL) /*!< SCU_HIBERNATE HDCLR: VBATPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_VBATNEV_Pos \ - (9UL) /*!< SCU_HIBERNATE HDCLR: VBATNEV (Bit 9) */ -#define SCU_HIBERNATE_HDCLR_VBATNEV_Msk \ - (0x200UL) /*!< SCU_HIBERNATE HDCLR: VBATNEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO0PEV_Pos \ - (10UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO0PEV (Bit 10) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO0PEV_Msk \ - (0x400UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO0PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO0NEV_Pos \ - (11UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO0NEV (Bit 11) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO0NEV_Msk \ - (0x800UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO0NEV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_HIBERNATE_HDSET ---------------------------- */ -#define SCU_HIBERNATE_HDSET_EPEV_Pos \ - (0UL) /*!< SCU_HIBERNATE HDSET: EPEV (Bit 0) */ -#define SCU_HIBERNATE_HDSET_EPEV_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HDSET: EPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_ENEV_Pos \ - (1UL) /*!< SCU_HIBERNATE HDSET: ENEV (Bit 1) */ -#define SCU_HIBERNATE_HDSET_ENEV_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HDSET: ENEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_RTCEV_Pos \ - (2UL) /*!< SCU_HIBERNATE HDSET: RTCEV (Bit 2) */ -#define SCU_HIBERNATE_HDSET_RTCEV_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HDSET: RTCEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_ULPWDG_Pos \ - (3UL) /*!< SCU_HIBERNATE HDSET: ULPWDG (Bit 3) */ -#define SCU_HIBERNATE_HDSET_ULPWDG_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HDSET: ULPWDG (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_VBATPEV_Pos \ - (8UL) /*!< SCU_HIBERNATE HDSET: VBATPEV (Bit 8) */ -#define SCU_HIBERNATE_HDSET_VBATPEV_Msk \ - (0x100UL) /*!< SCU_HIBERNATE HDSET: VBATPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_VBATNEV_Pos \ - (9UL) /*!< SCU_HIBERNATE HDSET: VBATNEV (Bit 9) */ -#define SCU_HIBERNATE_HDSET_VBATNEV_Msk \ - (0x200UL) /*!< SCU_HIBERNATE HDSET: VBATNEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_AHIBIO0PEV_Pos \ - (10UL) /*!< SCU_HIBERNATE HDSET: AHIBIO0PEV (Bit 10) */ -#define SCU_HIBERNATE_HDSET_AHIBIO0PEV_Msk \ - (0x400UL) /*!< SCU_HIBERNATE HDSET: AHIBIO0PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_AHIBIO0NEV_Pos \ - (11UL) /*!< SCU_HIBERNATE HDSET: AHIBIO0NEV (Bit 11) */ -#define SCU_HIBERNATE_HDSET_AHIBIO0NEV_Msk \ - (0x800UL) /*!< SCU_HIBERNATE HDSET: AHIBIO0NEV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_HIBERNATE_HDCR ----------------------------- */ -#define SCU_HIBERNATE_HDCR_WKPEP_Pos \ - (0UL) /*!< SCU_HIBERNATE HDCR: WKPEP (Bit 0) */ -#define SCU_HIBERNATE_HDCR_WKPEP_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HDCR: WKPEP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_WKPEN_Pos \ - (1UL) /*!< SCU_HIBERNATE HDCR: WKPEN (Bit 1) */ -#define SCU_HIBERNATE_HDCR_WKPEN_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HDCR: WKPEN (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_RTCE_Pos \ - (2UL) /*!< SCU_HIBERNATE HDCR: RTCE (Bit 2) */ -#define SCU_HIBERNATE_HDCR_RTCE_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HDCR: RTCE (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_ULPWDGEN_Pos \ - (3UL) /*!< SCU_HIBERNATE HDCR: ULPWDGEN (Bit 3) */ -#define SCU_HIBERNATE_HDCR_ULPWDGEN_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HDCR: ULPWDGEN (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_HIB_Pos \ - (4UL) /*!< SCU_HIBERNATE HDCR: HIB (Bit 4) */ -#define SCU_HIBERNATE_HDCR_HIB_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HDCR: HIB (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_XTALGPI1SEL_Pos \ - (5UL) /*!< SCU_HIBERNATE HDCR: XTALGPI1SEL (Bit 5) */ -#define SCU_HIBERNATE_HDCR_XTALGPI1SEL_Msk \ - (0x20UL) /*!< SCU_HIBERNATE HDCR: XTALGPI1SEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_RCS_Pos \ - (6UL) /*!< SCU_HIBERNATE HDCR: RCS (Bit 6) */ -#define SCU_HIBERNATE_HDCR_RCS_Msk \ - (0x40UL) /*!< SCU_HIBERNATE HDCR: RCS (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_STDBYSEL_Pos \ - (7UL) /*!< SCU_HIBERNATE HDCR: STDBYSEL (Bit 7) */ -#define SCU_HIBERNATE_HDCR_STDBYSEL_Msk \ - (0x80UL) /*!< SCU_HIBERNATE HDCR: STDBYSEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_WKUPSEL_Pos \ - (8UL) /*!< SCU_HIBERNATE HDCR: WKUPSEL (Bit 8) */ -#define SCU_HIBERNATE_HDCR_WKUPSEL_Msk \ - (0x100UL) /*!< SCU_HIBERNATE HDCR: WKUPSEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_GPI0SEL_Pos \ - (10UL) /*!< SCU_HIBERNATE HDCR: GPI0SEL (Bit 10) */ -#define SCU_HIBERNATE_HDCR_GPI0SEL_Msk \ - (0x400UL) /*!< SCU_HIBERNATE HDCR: GPI0SEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_HIBIO0POL_Pos \ - (12UL) /*!< SCU_HIBERNATE HDCR: HIBIO0POL (Bit 12) */ -#define SCU_HIBERNATE_HDCR_HIBIO0POL_Msk \ - (0x1000UL) /*!< SCU_HIBERNATE HDCR: HIBIO0POL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_ADIG0SEL_Pos \ - (14UL) /*!< SCU_HIBERNATE HDCR: ADIG0SEL (Bit 14) */ -#define SCU_HIBERNATE_HDCR_ADIG0SEL_Msk \ - (0x4000UL) /*!< SCU_HIBERNATE HDCR: ADIG0SEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_HIBIO0SEL_Pos \ - (16UL) /*!< SCU_HIBERNATE HDCR: HIBIO0SEL (Bit 16) */ -#define SCU_HIBERNATE_HDCR_HIBIO0SEL_Msk \ - (0xf0000UL) /*!< SCU_HIBERNATE HDCR: HIBIO0SEL (Bitfield-Mask: 0x0f) */ -#define SCU_HIBERNATE_HDCR_VBATLO_Pos \ - (24UL) /*!< SCU_HIBERNATE HDCR: VBATLO (Bit 24) */ -#define SCU_HIBERNATE_HDCR_VBATLO_Msk \ - (0x1000000UL) /*!< SCU_HIBERNATE HDCR: VBATLO (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_VBATHI_Pos \ - (25UL) /*!< SCU_HIBERNATE HDCR: VBATHI (Bit 25) */ -#define SCU_HIBERNATE_HDCR_VBATHI_Msk \ - (0x2000000UL) /*!< SCU_HIBERNATE HDCR: VBATHI (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_AHIBIO0LO_Pos \ - (26UL) /*!< SCU_HIBERNATE HDCR: AHIBIO0LO (Bit 26) */ -#define SCU_HIBERNATE_HDCR_AHIBIO0LO_Msk \ - (0x4000000UL) /*!< SCU_HIBERNATE HDCR: AHIBIO0LO (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_AHIBIO0HI_Pos \ - (27UL) /*!< SCU_HIBERNATE HDCR: AHIBIO0HI (Bit 27) */ -#define SCU_HIBERNATE_HDCR_AHIBIO0HI_Msk \ - (0x8000000UL) /*!< SCU_HIBERNATE HDCR: AHIBIO0HI (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_HIBERNATE_OSCSICTRL -------------------------- */ -#define SCU_HIBERNATE_OSCSICTRL_PWD_Pos \ - (0UL) /*!< SCU_HIBERNATE OSCSICTRL: PWD (Bit 0) */ -#define SCU_HIBERNATE_OSCSICTRL_PWD_Msk \ - (0x1UL) /*!< SCU_HIBERNATE OSCSICTRL: PWD (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_HIBERNATE_OSCULSTAT -------------------------- */ -#define SCU_HIBERNATE_OSCULSTAT_X1D_Pos \ - (0UL) /*!< SCU_HIBERNATE OSCULSTAT: X1D (Bit 0) */ -#define SCU_HIBERNATE_OSCULSTAT_X1D_Msk \ - (0x1UL) /*!< SCU_HIBERNATE OSCULSTAT: X1D (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_HIBERNATE_OSCULCTRL -------------------------- */ -#define SCU_HIBERNATE_OSCULCTRL_X1DEN_Pos \ - (0UL) /*!< SCU_HIBERNATE OSCULCTRL: X1DEN (Bit 0) */ -#define SCU_HIBERNATE_OSCULCTRL_X1DEN_Msk \ - (0x1UL) /*!< SCU_HIBERNATE OSCULCTRL: X1DEN (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_OSCULCTRL_MODE_Pos \ - (4UL) /*!< SCU_HIBERNATE OSCULCTRL: MODE (Bit 4) */ -#define SCU_HIBERNATE_OSCULCTRL_MODE_Msk \ - (0x30UL) /*!< SCU_HIBERNATE OSCULCTRL: MODE (Bitfield-Mask: 0x03) */ - -/* --------------------------- SCU_HIBERNATE_LPACCONF --------------------------- */ -#define SCU_HIBERNATE_LPACCONF_CMPEN_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACCONF: CMPEN (Bit 0) */ -#define SCU_HIBERNATE_LPACCONF_CMPEN_Msk \ - (0x7UL) /*!< SCU_HIBERNATE LPACCONF: CMPEN (Bitfield-Mask: 0x07) */ -#define SCU_HIBERNATE_LPACCONF_TRIGSEL_Pos \ - (4UL) /*!< SCU_HIBERNATE LPACCONF: TRIGSEL (Bit 4) */ -#define SCU_HIBERNATE_LPACCONF_TRIGSEL_Msk \ - (0x70UL) /*!< SCU_HIBERNATE LPACCONF: TRIGSEL (Bitfield-Mask: 0x07) */ -#define SCU_HIBERNATE_LPACCONF_CONVDEL_Pos \ - (12UL) /*!< SCU_HIBERNATE LPACCONF: CONVDEL (Bit 12) */ -#define SCU_HIBERNATE_LPACCONF_CONVDEL_Msk \ - (0x1000UL) /*!< SCU_HIBERNATE LPACCONF: CONVDEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCONF_INTERVCNT_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACCONF: INTERVCNT (Bit 16) */ -#define SCU_HIBERNATE_LPACCONF_INTERVCNT_Msk \ - (0xfff0000UL) /*!< SCU_HIBERNATE LPACCONF: INTERVCNT (Bitfield-Mask: 0xfff) */ -#define SCU_HIBERNATE_LPACCONF_SETTLECNT_Pos \ - (28UL) /*!< SCU_HIBERNATE LPACCONF: SETTLECNT (Bit 28) */ -#define SCU_HIBERNATE_LPACCONF_SETTLECNT_Msk \ - (0xf0000000UL) /*!< SCU_HIBERNATE LPACCONF: SETTLECNT (Bitfield-Mask: 0x0f) */ - -/* ---------------------------- SCU_HIBERNATE_LPACTH0 --------------------------- */ -#define SCU_HIBERNATE_LPACTH0_VBATLO_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACTH0: VBATLO (Bit 0) */ -#define SCU_HIBERNATE_LPACTH0_VBATLO_Msk \ - (0x3fUL) /*!< SCU_HIBERNATE LPACTH0: VBATLO (Bitfield-Mask: 0x3f) */ -#define SCU_HIBERNATE_LPACTH0_VBATHI_Pos \ - (8UL) /*!< SCU_HIBERNATE LPACTH0: VBATHI (Bit 8) */ -#define SCU_HIBERNATE_LPACTH0_VBATHI_Msk \ - (0x3f00UL) /*!< SCU_HIBERNATE LPACTH0: VBATHI (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- SCU_HIBERNATE_LPACTH1 --------------------------- */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO0LO_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO0LO (Bit 0) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO0LO_Msk \ - (0x3fUL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO0LO (Bitfield-Mask: 0x3f) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO0HI_Pos \ - (8UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO0HI (Bit 8) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO0HI_Msk \ - (0x3f00UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO0HI (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- SCU_HIBERNATE_LPACST ---------------------------- */ -#define SCU_HIBERNATE_LPACST_VBATSCMP_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACST: VBATSCMP (Bit 0) */ -#define SCU_HIBERNATE_LPACST_VBATSCMP_Msk \ - (0x1UL) /*!< SCU_HIBERNATE LPACST: VBATSCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACST_AHIBIO0SCMP_Pos \ - (1UL) /*!< SCU_HIBERNATE LPACST: AHIBIO0SCMP (Bit 1) */ -#define SCU_HIBERNATE_LPACST_AHIBIO0SCMP_Msk \ - (0x2UL) /*!< SCU_HIBERNATE LPACST: AHIBIO0SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACST_VBATVAL_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACST: VBATVAL (Bit 16) */ -#define SCU_HIBERNATE_LPACST_VBATVAL_Msk \ - (0x10000UL) /*!< SCU_HIBERNATE LPACST: VBATVAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACST_AHIBIO0VAL_Pos \ - (17UL) /*!< SCU_HIBERNATE LPACST: AHIBIO0VAL (Bit 17) */ -#define SCU_HIBERNATE_LPACST_AHIBIO0VAL_Msk \ - (0x20000UL) /*!< SCU_HIBERNATE LPACST: AHIBIO0VAL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_LPACCLR --------------------------- */ -#define SCU_HIBERNATE_LPACCLR_VBATSCMP_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACCLR: VBATSCMP (Bit 0) */ -#define SCU_HIBERNATE_LPACCLR_VBATSCMP_Msk \ - (0x1UL) /*!< SCU_HIBERNATE LPACCLR: VBATSCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO0SCMP_Pos \ - (1UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO0SCMP (Bit 1) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO0SCMP_Msk \ - (0x2UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO0SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCLR_VBATVAL_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACCLR: VBATVAL (Bit 16) */ -#define SCU_HIBERNATE_LPACCLR_VBATVAL_Msk \ - (0x10000UL) /*!< SCU_HIBERNATE LPACCLR: VBATVAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO0VAL_Pos \ - (17UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO0VAL (Bit 17) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO0VAL_Msk \ - (0x20000UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO0VAL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_LPACSET --------------------------- */ -#define SCU_HIBERNATE_LPACSET_VBATSCMP_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACSET: VBATSCMP (Bit 0) */ -#define SCU_HIBERNATE_LPACSET_VBATSCMP_Msk \ - (0x1UL) /*!< SCU_HIBERNATE LPACSET: VBATSCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO0SCMP_Pos \ - (1UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO0SCMP (Bit 1) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO0SCMP_Msk \ - (0x2UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO0SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACSET_VBATVAL_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACSET: VBATVAL (Bit 16) */ -#define SCU_HIBERNATE_LPACSET_VBATVAL_Msk \ - (0x10000UL) /*!< SCU_HIBERNATE LPACSET: VBATVAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO0VAL_Pos \ - (17UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO0VAL (Bit 17) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO0VAL_Msk \ - (0x20000UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO0VAL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_HINTST ---------------------------- */ -#define SCU_HIBERNATE_HINTST_HIBNINT_Pos \ - (0UL) /*!< SCU_HIBERNATE HINTST: HIBNINT (Bit 0) */ -#define SCU_HIBERNATE_HINTST_HIBNINT_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HINTST: HIBNINT (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTST_FLASHOFF_Pos \ - (2UL) /*!< SCU_HIBERNATE HINTST: FLASHOFF (Bit 2) */ -#define SCU_HIBERNATE_HINTST_FLASHOFF_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HINTST: FLASHOFF (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTST_FLASHPD_Pos \ - (3UL) /*!< SCU_HIBERNATE HINTST: FLASHPD (Bit 3) */ -#define SCU_HIBERNATE_HINTST_FLASHPD_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HINTST: FLASHPD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTST_POFFD_Pos \ - (4UL) /*!< SCU_HIBERNATE HINTST: POFFD (Bit 4) */ -#define SCU_HIBERNATE_HINTST_POFFD_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HINTST: POFFD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTST_PPODEL_Pos \ - (16UL) /*!< SCU_HIBERNATE HINTST: PPODEL (Bit 16) */ -#define SCU_HIBERNATE_HINTST_PPODEL_Msk \ - (0x30000UL) /*!< SCU_HIBERNATE HINTST: PPODEL (Bitfield-Mask: 0x03) */ -#define SCU_HIBERNATE_HINTST_POFFH_Pos \ - (20UL) /*!< SCU_HIBERNATE HINTST: POFFH (Bit 20) */ -#define SCU_HIBERNATE_HINTST_POFFH_Msk \ - (0x100000UL) /*!< SCU_HIBERNATE HINTST: POFFH (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_HINTCLR --------------------------- */ -#define SCU_HIBERNATE_HINTCLR_HIBNINT_Pos \ - (0UL) /*!< SCU_HIBERNATE HINTCLR: HIBNINT (Bit 0) */ -#define SCU_HIBERNATE_HINTCLR_HIBNINT_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HINTCLR: HIBNINT (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTCLR_FLASHOFF_Pos \ - (2UL) /*!< SCU_HIBERNATE HINTCLR: FLASHOFF (Bit 2) */ -#define SCU_HIBERNATE_HINTCLR_FLASHOFF_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HINTCLR: FLASHOFF (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTCLR_FLASHPD_Pos \ - (3UL) /*!< SCU_HIBERNATE HINTCLR: FLASHPD (Bit 3) */ -#define SCU_HIBERNATE_HINTCLR_FLASHPD_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HINTCLR: FLASHPD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTCLR_POFFD_Pos \ - (4UL) /*!< SCU_HIBERNATE HINTCLR: POFFD (Bit 4) */ -#define SCU_HIBERNATE_HINTCLR_POFFD_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HINTCLR: POFFD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTCLR_PPODEL_Pos \ - (16UL) /*!< SCU_HIBERNATE HINTCLR: PPODEL (Bit 16) */ -#define SCU_HIBERNATE_HINTCLR_PPODEL_Msk \ - (0x30000UL) /*!< SCU_HIBERNATE HINTCLR: PPODEL (Bitfield-Mask: 0x03) */ -#define SCU_HIBERNATE_HINTCLR_POFFH_Pos \ - (20UL) /*!< SCU_HIBERNATE HINTCLR: POFFH (Bit 20) */ -#define SCU_HIBERNATE_HINTCLR_POFFH_Msk \ - (0x100000UL) /*!< SCU_HIBERNATE HINTCLR: POFFH (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_HINTSET --------------------------- */ -#define SCU_HIBERNATE_HINTSET_HIBNINT_Pos \ - (0UL) /*!< SCU_HIBERNATE HINTSET: HIBNINT (Bit 0) */ -#define SCU_HIBERNATE_HINTSET_HIBNINT_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HINTSET: HIBNINT (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_VCOREOFF_Pos \ - (1UL) /*!< SCU_HIBERNATE HINTSET: VCOREOFF (Bit 1) */ -#define SCU_HIBERNATE_HINTSET_VCOREOFF_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HINTSET: VCOREOFF (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_FLASHOFF_Pos \ - (2UL) /*!< SCU_HIBERNATE HINTSET: FLASHOFF (Bit 2) */ -#define SCU_HIBERNATE_HINTSET_FLASHOFF_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HINTSET: FLASHOFF (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_FLASHPD_Pos \ - (3UL) /*!< SCU_HIBERNATE HINTSET: FLASHPD (Bit 3) */ -#define SCU_HIBERNATE_HINTSET_FLASHPD_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HINTSET: FLASHPD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_POFFD_Pos \ - (4UL) /*!< SCU_HIBERNATE HINTSET: POFFD (Bit 4) */ -#define SCU_HIBERNATE_HINTSET_POFFD_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HINTSET: POFFD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_PPODEL_Pos \ - (16UL) /*!< SCU_HIBERNATE HINTSET: PPODEL (Bit 16) */ -#define SCU_HIBERNATE_HINTSET_PPODEL_Msk \ - (0x30000UL) /*!< SCU_HIBERNATE HINTSET: PPODEL (Bitfield-Mask: 0x03) */ -#define SCU_HIBERNATE_HINTSET_POFFH_Pos \ - (20UL) /*!< SCU_HIBERNATE HINTSET: POFFH (Bit 20) */ -#define SCU_HIBERNATE_HINTSET_POFFH_Msk \ - (0x100000UL) /*!< SCU_HIBERNATE HINTSET: POFFH (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_POWER' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ SCU_POWER_PWRSTAT ----------------------------- */ -#define SCU_POWER_PWRSTAT_HIBEN_Pos \ - (0UL) /*!< SCU_POWER PWRSTAT: HIBEN (Bit 0) */ -#define SCU_POWER_PWRSTAT_HIBEN_Msk \ - (0x1UL) /*!< SCU_POWER PWRSTAT: HIBEN (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSTAT_USBPHYPDQ_Pos \ - (16UL) /*!< SCU_POWER PWRSTAT: USBPHYPDQ (Bit 16) */ -#define SCU_POWER_PWRSTAT_USBPHYPDQ_Msk \ - (0x10000UL) /*!< SCU_POWER PWRSTAT: USBPHYPDQ (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSTAT_USBPUWQ_Pos \ - (18UL) /*!< SCU_POWER PWRSTAT: USBPUWQ (Bit 18) */ -#define SCU_POWER_PWRSTAT_USBPUWQ_Msk \ - (0x40000UL) /*!< SCU_POWER PWRSTAT: USBPUWQ (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_POWER_PWRSET ------------------------------ */ -#define SCU_POWER_PWRSET_HIB_Pos \ - (0UL) /*!< SCU_POWER PWRSET: HIB (Bit 0) */ -#define SCU_POWER_PWRSET_HIB_Msk \ - (0x1UL) /*!< SCU_POWER PWRSET: HIB (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSET_USBPHYPDQ_Pos \ - (16UL) /*!< SCU_POWER PWRSET: USBPHYPDQ (Bit 16) */ -#define SCU_POWER_PWRSET_USBPHYPDQ_Msk \ - (0x10000UL) /*!< SCU_POWER PWRSET: USBPHYPDQ (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSET_USBPUWQ_Pos \ - (18UL) /*!< SCU_POWER PWRSET: USBPUWQ (Bit 18) */ -#define SCU_POWER_PWRSET_USBPUWQ_Msk \ - (0x40000UL) /*!< SCU_POWER PWRSET: USBPUWQ (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_POWER_PWRCLR ------------------------------ */ -#define SCU_POWER_PWRCLR_HIB_Pos \ - (0UL) /*!< SCU_POWER PWRCLR: HIB (Bit 0) */ -#define SCU_POWER_PWRCLR_HIB_Msk \ - (0x1UL) /*!< SCU_POWER PWRCLR: HIB (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRCLR_USBPHYPDQ_Pos \ - (16UL) /*!< SCU_POWER PWRCLR: USBPHYPDQ (Bit 16) */ -#define SCU_POWER_PWRCLR_USBPHYPDQ_Msk \ - (0x10000UL) /*!< SCU_POWER PWRCLR: USBPHYPDQ (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRCLR_USBPUWQ_Pos \ - (18UL) /*!< SCU_POWER PWRCLR: USBPUWQ (Bit 18) */ -#define SCU_POWER_PWRCLR_USBPUWQ_Msk \ - (0x40000UL) /*!< SCU_POWER PWRCLR: USBPUWQ (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_POWER_EVRSTAT ----------------------------- */ -#define SCU_POWER_EVRSTAT_OV13_Pos \ - (1UL) /*!< SCU_POWER EVRSTAT: OV13 (Bit 1) */ -#define SCU_POWER_EVRSTAT_OV13_Msk \ - (0x2UL) /*!< SCU_POWER EVRSTAT: OV13 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_POWER_EVRVADCSTAT --------------------------- */ -#define SCU_POWER_EVRVADCSTAT_VADC13V_Pos \ - (0UL) /*!< SCU_POWER EVRVADCSTAT: VADC13V (Bit 0) */ -#define SCU_POWER_EVRVADCSTAT_VADC13V_Msk \ - (0xffUL) /*!< SCU_POWER EVRVADCSTAT: VADC13V (Bitfield-Mask: 0xff) */ -#define SCU_POWER_EVRVADCSTAT_VADC33V_Pos \ - (8UL) /*!< SCU_POWER EVRVADCSTAT: VADC33V (Bit 8) */ -#define SCU_POWER_EVRVADCSTAT_VADC33V_Msk \ - (0xff00UL) /*!< SCU_POWER EVRVADCSTAT: VADC33V (Bitfield-Mask: 0xff) */ - -/* ------------------------------ SCU_POWER_PWRMON ------------------------------ */ -#define SCU_POWER_PWRMON_THRS_Pos \ - (0UL) /*!< SCU_POWER PWRMON: THRS (Bit 0) */ -#define SCU_POWER_PWRMON_THRS_Msk \ - (0xffUL) /*!< SCU_POWER PWRMON: THRS (Bitfield-Mask: 0xff) */ -#define SCU_POWER_PWRMON_INTV_Pos \ - (8UL) /*!< SCU_POWER PWRMON: INTV (Bit 8) */ -#define SCU_POWER_PWRMON_INTV_Msk \ - (0xff00UL) /*!< SCU_POWER PWRMON: INTV (Bitfield-Mask: 0xff) */ -#define SCU_POWER_PWRMON_ENB_Pos \ - (16UL) /*!< SCU_POWER PWRMON: ENB (Bit 16) */ -#define SCU_POWER_PWRMON_ENB_Msk \ - (0x10000UL) /*!< SCU_POWER PWRMON: ENB (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_RESET' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ SCU_RESET_RSTSTAT ----------------------------- */ -#define SCU_RESET_RSTSTAT_RSTSTAT_Pos \ - (0UL) /*!< SCU_RESET RSTSTAT: RSTSTAT (Bit 0) */ -#define SCU_RESET_RSTSTAT_RSTSTAT_Msk \ - (0xffUL) /*!< SCU_RESET RSTSTAT: RSTSTAT (Bitfield-Mask: 0xff) */ -#define SCU_RESET_RSTSTAT_HIBWK_Pos \ - (8UL) /*!< SCU_RESET RSTSTAT: HIBWK (Bit 8) */ -#define SCU_RESET_RSTSTAT_HIBWK_Msk \ - (0x100UL) /*!< SCU_RESET RSTSTAT: HIBWK (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTSTAT_HIBRS_Pos \ - (9UL) /*!< SCU_RESET RSTSTAT: HIBRS (Bit 9) */ -#define SCU_RESET_RSTSTAT_HIBRS_Msk \ - (0x200UL) /*!< SCU_RESET RSTSTAT: HIBRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTSTAT_LCKEN_Pos \ - (10UL) /*!< SCU_RESET RSTSTAT: LCKEN (Bit 10) */ -#define SCU_RESET_RSTSTAT_LCKEN_Msk \ - (0x400UL) /*!< SCU_RESET RSTSTAT: LCKEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_RSTSET ------------------------------ */ -#define SCU_RESET_RSTSET_HIBWK_Pos \ - (8UL) /*!< SCU_RESET RSTSET: HIBWK (Bit 8) */ -#define SCU_RESET_RSTSET_HIBWK_Msk \ - (0x100UL) /*!< SCU_RESET RSTSET: HIBWK (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTSET_HIBRS_Pos \ - (9UL) /*!< SCU_RESET RSTSET: HIBRS (Bit 9) */ -#define SCU_RESET_RSTSET_HIBRS_Msk \ - (0x200UL) /*!< SCU_RESET RSTSET: HIBRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTSET_LCKEN_Pos \ - (10UL) /*!< SCU_RESET RSTSET: LCKEN (Bit 10) */ -#define SCU_RESET_RSTSET_LCKEN_Msk \ - (0x400UL) /*!< SCU_RESET RSTSET: LCKEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_RSTCLR ------------------------------ */ -#define SCU_RESET_RSTCLR_RSCLR_Pos \ - (0UL) /*!< SCU_RESET RSTCLR: RSCLR (Bit 0) */ -#define SCU_RESET_RSTCLR_RSCLR_Msk \ - (0x1UL) /*!< SCU_RESET RSTCLR: RSCLR (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTCLR_HIBWK_Pos \ - (8UL) /*!< SCU_RESET RSTCLR: HIBWK (Bit 8) */ -#define SCU_RESET_RSTCLR_HIBWK_Msk \ - (0x100UL) /*!< SCU_RESET RSTCLR: HIBWK (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTCLR_HIBRS_Pos \ - (9UL) /*!< SCU_RESET RSTCLR: HIBRS (Bit 9) */ -#define SCU_RESET_RSTCLR_HIBRS_Msk \ - (0x200UL) /*!< SCU_RESET RSTCLR: HIBRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTCLR_LCKEN_Pos \ - (10UL) /*!< SCU_RESET RSTCLR: LCKEN (Bit 10) */ -#define SCU_RESET_RSTCLR_LCKEN_Msk \ - (0x400UL) /*!< SCU_RESET RSTCLR: LCKEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSTAT0 ----------------------------- */ -#define SCU_RESET_PRSTAT0_VADCRS_Pos \ - (0UL) /*!< SCU_RESET PRSTAT0: VADCRS (Bit 0) */ -#define SCU_RESET_PRSTAT0_VADCRS_Msk \ - (0x1UL) /*!< SCU_RESET PRSTAT0: VADCRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_CCU40RS_Pos \ - (2UL) /*!< SCU_RESET PRSTAT0: CCU40RS (Bit 2) */ -#define SCU_RESET_PRSTAT0_CCU40RS_Msk \ - (0x4UL) /*!< SCU_RESET PRSTAT0: CCU40RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_CCU41RS_Pos \ - (3UL) /*!< SCU_RESET PRSTAT0: CCU41RS (Bit 3) */ -#define SCU_RESET_PRSTAT0_CCU41RS_Msk \ - (0x8UL) /*!< SCU_RESET PRSTAT0: CCU41RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_CCU80RS_Pos \ - (7UL) /*!< SCU_RESET PRSTAT0: CCU80RS (Bit 7) */ -#define SCU_RESET_PRSTAT0_CCU80RS_Msk \ - (0x80UL) /*!< SCU_RESET PRSTAT0: CCU80RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_POSIF0RS_Pos \ - (9UL) /*!< SCU_RESET PRSTAT0: POSIF0RS (Bit 9) */ -#define SCU_RESET_PRSTAT0_POSIF0RS_Msk \ - (0x200UL) /*!< SCU_RESET PRSTAT0: POSIF0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_USIC0RS_Pos \ - (11UL) /*!< SCU_RESET PRSTAT0: USIC0RS (Bit 11) */ -#define SCU_RESET_PRSTAT0_USIC0RS_Msk \ - (0x800UL) /*!< SCU_RESET PRSTAT0: USIC0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_ERU1RS_Pos \ - (16UL) /*!< SCU_RESET PRSTAT0: ERU1RS (Bit 16) */ -#define SCU_RESET_PRSTAT0_ERU1RS_Msk \ - (0x10000UL) /*!< SCU_RESET PRSTAT0: ERU1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_HRPWM0RS_Pos \ - (23UL) /*!< SCU_RESET PRSTAT0: HRPWM0RS (Bit 23) */ -#define SCU_RESET_PRSTAT0_HRPWM0RS_Msk \ - (0x800000UL) /*!< SCU_RESET PRSTAT0: HRPWM0RS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSET0 ------------------------------ */ -#define SCU_RESET_PRSET0_VADCRS_Pos \ - (0UL) /*!< SCU_RESET PRSET0: VADCRS (Bit 0) */ -#define SCU_RESET_PRSET0_VADCRS_Msk \ - (0x1UL) /*!< SCU_RESET PRSET0: VADCRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_CCU40RS_Pos \ - (2UL) /*!< SCU_RESET PRSET0: CCU40RS (Bit 2) */ -#define SCU_RESET_PRSET0_CCU40RS_Msk \ - (0x4UL) /*!< SCU_RESET PRSET0: CCU40RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_CCU41RS_Pos \ - (3UL) /*!< SCU_RESET PRSET0: CCU41RS (Bit 3) */ -#define SCU_RESET_PRSET0_CCU41RS_Msk \ - (0x8UL) /*!< SCU_RESET PRSET0: CCU41RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_CCU80RS_Pos \ - (7UL) /*!< SCU_RESET PRSET0: CCU80RS (Bit 7) */ -#define SCU_RESET_PRSET0_CCU80RS_Msk \ - (0x80UL) /*!< SCU_RESET PRSET0: CCU80RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_POSIF0RS_Pos \ - (9UL) /*!< SCU_RESET PRSET0: POSIF0RS (Bit 9) */ -#define SCU_RESET_PRSET0_POSIF0RS_Msk \ - (0x200UL) /*!< SCU_RESET PRSET0: POSIF0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_USIC0RS_Pos \ - (11UL) /*!< SCU_RESET PRSET0: USIC0RS (Bit 11) */ -#define SCU_RESET_PRSET0_USIC0RS_Msk \ - (0x800UL) /*!< SCU_RESET PRSET0: USIC0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_ERU1RS_Pos \ - (16UL) /*!< SCU_RESET PRSET0: ERU1RS (Bit 16) */ -#define SCU_RESET_PRSET0_ERU1RS_Msk \ - (0x10000UL) /*!< SCU_RESET PRSET0: ERU1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_HRPWM0RS_Pos \ - (23UL) /*!< SCU_RESET PRSET0: HRPWM0RS (Bit 23) */ -#define SCU_RESET_PRSET0_HRPWM0RS_Msk \ - (0x800000UL) /*!< SCU_RESET PRSET0: HRPWM0RS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRCLR0 ------------------------------ */ -#define SCU_RESET_PRCLR0_VADCRS_Pos \ - (0UL) /*!< SCU_RESET PRCLR0: VADCRS (Bit 0) */ -#define SCU_RESET_PRCLR0_VADCRS_Msk \ - (0x1UL) /*!< SCU_RESET PRCLR0: VADCRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_CCU40RS_Pos \ - (2UL) /*!< SCU_RESET PRCLR0: CCU40RS (Bit 2) */ -#define SCU_RESET_PRCLR0_CCU40RS_Msk \ - (0x4UL) /*!< SCU_RESET PRCLR0: CCU40RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_CCU41RS_Pos \ - (3UL) /*!< SCU_RESET PRCLR0: CCU41RS (Bit 3) */ -#define SCU_RESET_PRCLR0_CCU41RS_Msk \ - (0x8UL) /*!< SCU_RESET PRCLR0: CCU41RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_CCU80RS_Pos \ - (7UL) /*!< SCU_RESET PRCLR0: CCU80RS (Bit 7) */ -#define SCU_RESET_PRCLR0_CCU80RS_Msk \ - (0x80UL) /*!< SCU_RESET PRCLR0: CCU80RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_POSIF0RS_Pos \ - (9UL) /*!< SCU_RESET PRCLR0: POSIF0RS (Bit 9) */ -#define SCU_RESET_PRCLR0_POSIF0RS_Msk \ - (0x200UL) /*!< SCU_RESET PRCLR0: POSIF0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_USIC0RS_Pos \ - (11UL) /*!< SCU_RESET PRCLR0: USIC0RS (Bit 11) */ -#define SCU_RESET_PRCLR0_USIC0RS_Msk \ - (0x800UL) /*!< SCU_RESET PRCLR0: USIC0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_ERU1RS_Pos \ - (16UL) /*!< SCU_RESET PRCLR0: ERU1RS (Bit 16) */ -#define SCU_RESET_PRCLR0_ERU1RS_Msk \ - (0x10000UL) /*!< SCU_RESET PRCLR0: ERU1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_HRPWM0RS_Pos \ - (23UL) /*!< SCU_RESET PRCLR0: HRPWM0RS (Bit 23) */ -#define SCU_RESET_PRCLR0_HRPWM0RS_Msk \ - (0x800000UL) /*!< SCU_RESET PRCLR0: HRPWM0RS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSTAT1 ----------------------------- */ -#define SCU_RESET_PRSTAT1_LEDTSCU0RS_Pos \ - (3UL) /*!< SCU_RESET PRSTAT1: LEDTSCU0RS (Bit 3) */ -#define SCU_RESET_PRSTAT1_LEDTSCU0RS_Msk \ - (0x8UL) /*!< SCU_RESET PRSTAT1: LEDTSCU0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_MCAN0RS_Pos \ - (4UL) /*!< SCU_RESET PRSTAT1: MCAN0RS (Bit 4) */ -#define SCU_RESET_PRSTAT1_MCAN0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSTAT1: MCAN0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_DACRS_Pos \ - (5UL) /*!< SCU_RESET PRSTAT1: DACRS (Bit 5) */ -#define SCU_RESET_PRSTAT1_DACRS_Msk \ - (0x20UL) /*!< SCU_RESET PRSTAT1: DACRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_USIC1RS_Pos \ - (7UL) /*!< SCU_RESET PRSTAT1: USIC1RS (Bit 7) */ -#define SCU_RESET_PRSTAT1_USIC1RS_Msk \ - (0x80UL) /*!< SCU_RESET PRSTAT1: USIC1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_PPORTSRS_Pos \ - (9UL) /*!< SCU_RESET PRSTAT1: PPORTSRS (Bit 9) */ -#define SCU_RESET_PRSTAT1_PPORTSRS_Msk \ - (0x200UL) /*!< SCU_RESET PRSTAT1: PPORTSRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSET1 ------------------------------ */ -#define SCU_RESET_PRSET1_LEDTSCU0RS_Pos \ - (3UL) /*!< SCU_RESET PRSET1: LEDTSCU0RS (Bit 3) */ -#define SCU_RESET_PRSET1_LEDTSCU0RS_Msk \ - (0x8UL) /*!< SCU_RESET PRSET1: LEDTSCU0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_MCAN0RS_Pos \ - (4UL) /*!< SCU_RESET PRSET1: MCAN0RS (Bit 4) */ -#define SCU_RESET_PRSET1_MCAN0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSET1: MCAN0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_DACRS_Pos \ - (5UL) /*!< SCU_RESET PRSET1: DACRS (Bit 5) */ -#define SCU_RESET_PRSET1_DACRS_Msk \ - (0x20UL) /*!< SCU_RESET PRSET1: DACRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_USIC1RS_Pos \ - (7UL) /*!< SCU_RESET PRSET1: USIC1RS (Bit 7) */ -#define SCU_RESET_PRSET1_USIC1RS_Msk \ - (0x80UL) /*!< SCU_RESET PRSET1: USIC1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_PPORTSRS_Pos \ - (9UL) /*!< SCU_RESET PRSET1: PPORTSRS (Bit 9) */ -#define SCU_RESET_PRSET1_PPORTSRS_Msk \ - (0x200UL) /*!< SCU_RESET PRSET1: PPORTSRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRCLR1 ------------------------------ */ -#define SCU_RESET_PRCLR1_LEDTSCU0RS_Pos \ - (3UL) /*!< SCU_RESET PRCLR1: LEDTSCU0RS (Bit 3) */ -#define SCU_RESET_PRCLR1_LEDTSCU0RS_Msk \ - (0x8UL) /*!< SCU_RESET PRCLR1: LEDTSCU0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_MCAN0RS_Pos \ - (4UL) /*!< SCU_RESET PRCLR1: MCAN0RS (Bit 4) */ -#define SCU_RESET_PRCLR1_MCAN0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRCLR1: MCAN0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_DACRS_Pos \ - (5UL) /*!< SCU_RESET PRCLR1: DACRS (Bit 5) */ -#define SCU_RESET_PRCLR1_DACRS_Msk \ - (0x20UL) /*!< SCU_RESET PRCLR1: DACRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_USIC1RS_Pos \ - (7UL) /*!< SCU_RESET PRCLR1: USIC1RS (Bit 7) */ -#define SCU_RESET_PRCLR1_USIC1RS_Msk \ - (0x80UL) /*!< SCU_RESET PRCLR1: USIC1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_PPORTSRS_Pos \ - (9UL) /*!< SCU_RESET PRCLR1: PPORTSRS (Bit 9) */ -#define SCU_RESET_PRCLR1_PPORTSRS_Msk \ - (0x200UL) /*!< SCU_RESET PRCLR1: PPORTSRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSTAT2 ----------------------------- */ -#define SCU_RESET_PRSTAT2_WDTRS_Pos \ - (1UL) /*!< SCU_RESET PRSTAT2: WDTRS (Bit 1) */ -#define SCU_RESET_PRSTAT2_WDTRS_Msk \ - (0x2UL) /*!< SCU_RESET PRSTAT2: WDTRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT2_DMA0RS_Pos \ - (4UL) /*!< SCU_RESET PRSTAT2: DMA0RS (Bit 4) */ -#define SCU_RESET_PRSTAT2_DMA0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSTAT2: DMA0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT2_FCERS_Pos \ - (6UL) /*!< SCU_RESET PRSTAT2: FCERS (Bit 6) */ -#define SCU_RESET_PRSTAT2_FCERS_Msk \ - (0x40UL) /*!< SCU_RESET PRSTAT2: FCERS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT2_USBRS_Pos \ - (7UL) /*!< SCU_RESET PRSTAT2: USBRS (Bit 7) */ -#define SCU_RESET_PRSTAT2_USBRS_Msk \ - (0x80UL) /*!< SCU_RESET PRSTAT2: USBRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSET2 ------------------------------ */ -#define SCU_RESET_PRSET2_WDTRS_Pos \ - (1UL) /*!< SCU_RESET PRSET2: WDTRS (Bit 1) */ -#define SCU_RESET_PRSET2_WDTRS_Msk \ - (0x2UL) /*!< SCU_RESET PRSET2: WDTRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET2_DMA0RS_Pos \ - (4UL) /*!< SCU_RESET PRSET2: DMA0RS (Bit 4) */ -#define SCU_RESET_PRSET2_DMA0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSET2: DMA0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET2_FCERS_Pos \ - (6UL) /*!< SCU_RESET PRSET2: FCERS (Bit 6) */ -#define SCU_RESET_PRSET2_FCERS_Msk \ - (0x40UL) /*!< SCU_RESET PRSET2: FCERS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET2_USBRS_Pos \ - (7UL) /*!< SCU_RESET PRSET2: USBRS (Bit 7) */ -#define SCU_RESET_PRSET2_USBRS_Msk \ - (0x80UL) /*!< SCU_RESET PRSET2: USBRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRCLR2 ------------------------------ */ -#define SCU_RESET_PRCLR2_WDTRS_Pos \ - (1UL) /*!< SCU_RESET PRCLR2: WDTRS (Bit 1) */ -#define SCU_RESET_PRCLR2_WDTRS_Msk \ - (0x2UL) /*!< SCU_RESET PRCLR2: WDTRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR2_DMA0RS_Pos \ - (4UL) /*!< SCU_RESET PRCLR2: DMA0RS (Bit 4) */ -#define SCU_RESET_PRCLR2_DMA0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRCLR2: DMA0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR2_FCERS_Pos \ - (6UL) /*!< SCU_RESET PRCLR2: FCERS (Bit 6) */ -#define SCU_RESET_PRCLR2_FCERS_Msk \ - (0x40UL) /*!< SCU_RESET PRCLR2: FCERS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR2_USBRS_Pos \ - (7UL) /*!< SCU_RESET PRCLR2: USBRS (Bit 7) */ -#define SCU_RESET_PRCLR2_USBRS_Msk \ - (0x80UL) /*!< SCU_RESET PRCLR2: USBRS (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'LEDTS' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- LEDTS_ID ---------------------------------- */ -#define LEDTS_ID_MOD_REV_Pos \ - (0UL) /*!< LEDTS ID: MOD_REV (Bit 0) */ -#define LEDTS_ID_MOD_REV_Msk \ - (0xffUL) /*!< LEDTS ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define LEDTS_ID_MOD_TYPE_Pos \ - (8UL) /*!< LEDTS ID: MOD_TYPE (Bit 8) */ -#define LEDTS_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< LEDTS ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define LEDTS_ID_MOD_NUMBER_Pos \ - (16UL) /*!< LEDTS ID: MOD_NUMBER (Bit 16) */ -#define LEDTS_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< LEDTS ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- LEDTS_GLOBCTL ------------------------------- */ -#define LEDTS_GLOBCTL_TS_EN_Pos \ - (0UL) /*!< LEDTS GLOBCTL: TS_EN (Bit 0) */ -#define LEDTS_GLOBCTL_TS_EN_Msk \ - (0x1UL) /*!< LEDTS GLOBCTL: TS_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_LD_EN_Pos \ - (1UL) /*!< LEDTS GLOBCTL: LD_EN (Bit 1) */ -#define LEDTS_GLOBCTL_LD_EN_Msk \ - (0x2UL) /*!< LEDTS GLOBCTL: LD_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_CMTR_Pos \ - (2UL) /*!< LEDTS GLOBCTL: CMTR (Bit 2) */ -#define LEDTS_GLOBCTL_CMTR_Msk \ - (0x4UL) /*!< LEDTS GLOBCTL: CMTR (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_ENSYNC_Pos \ - (3UL) /*!< LEDTS GLOBCTL: ENSYNC (Bit 3) */ -#define LEDTS_GLOBCTL_ENSYNC_Msk \ - (0x8UL) /*!< LEDTS GLOBCTL: ENSYNC (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_SUSCFG_Pos \ - (8UL) /*!< LEDTS GLOBCTL: SUSCFG (Bit 8) */ -#define LEDTS_GLOBCTL_SUSCFG_Msk \ - (0x100UL) /*!< LEDTS GLOBCTL: SUSCFG (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_MASKVAL_Pos \ - (9UL) /*!< LEDTS GLOBCTL: MASKVAL (Bit 9) */ -#define LEDTS_GLOBCTL_MASKVAL_Msk \ - (0xe00UL) /*!< LEDTS GLOBCTL: MASKVAL (Bitfield-Mask: 0x07) */ -#define LEDTS_GLOBCTL_FENVAL_Pos \ - (12UL) /*!< LEDTS GLOBCTL: FENVAL (Bit 12) */ -#define LEDTS_GLOBCTL_FENVAL_Msk \ - (0x1000UL) /*!< LEDTS GLOBCTL: FENVAL (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_ITS_EN_Pos \ - (13UL) /*!< LEDTS GLOBCTL: ITS_EN (Bit 13) */ -#define LEDTS_GLOBCTL_ITS_EN_Msk \ - (0x2000UL) /*!< LEDTS GLOBCTL: ITS_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_ITF_EN_Pos \ - (14UL) /*!< LEDTS GLOBCTL: ITF_EN (Bit 14) */ -#define LEDTS_GLOBCTL_ITF_EN_Msk \ - (0x4000UL) /*!< LEDTS GLOBCTL: ITF_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_ITP_EN_Pos \ - (15UL) /*!< LEDTS GLOBCTL: ITP_EN (Bit 15) */ -#define LEDTS_GLOBCTL_ITP_EN_Msk \ - (0x8000UL) /*!< LEDTS GLOBCTL: ITP_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_CLK_PS_Pos \ - (16UL) /*!< LEDTS GLOBCTL: CLK_PS (Bit 16) */ -#define LEDTS_GLOBCTL_CLK_PS_Msk \ - (0xffff0000UL) /*!< LEDTS GLOBCTL: CLK_PS (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- LEDTS_FNCTL -------------------------------- */ -#define LEDTS_FNCTL_PADT_Pos \ - (0UL) /*!< LEDTS FNCTL: PADT (Bit 0) */ -#define LEDTS_FNCTL_PADT_Msk \ - (0x7UL) /*!< LEDTS FNCTL: PADT (Bitfield-Mask: 0x07) */ -#define LEDTS_FNCTL_PADTSW_Pos \ - (3UL) /*!< LEDTS FNCTL: PADTSW (Bit 3) */ -#define LEDTS_FNCTL_PADTSW_Msk \ - (0x8UL) /*!< LEDTS FNCTL: PADTSW (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_EPULL_Pos \ - (4UL) /*!< LEDTS FNCTL: EPULL (Bit 4) */ -#define LEDTS_FNCTL_EPULL_Msk \ - (0x10UL) /*!< LEDTS FNCTL: EPULL (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_FNCOL_Pos \ - (5UL) /*!< LEDTS FNCTL: FNCOL (Bit 5) */ -#define LEDTS_FNCTL_FNCOL_Msk \ - (0xe0UL) /*!< LEDTS FNCTL: FNCOL (Bitfield-Mask: 0x07) */ -#define LEDTS_FNCTL_ACCCNT_Pos \ - (16UL) /*!< LEDTS FNCTL: ACCCNT (Bit 16) */ -#define LEDTS_FNCTL_ACCCNT_Msk \ - (0xf0000UL) /*!< LEDTS FNCTL: ACCCNT (Bitfield-Mask: 0x0f) */ -#define LEDTS_FNCTL_TSCCMP_Pos \ - (20UL) /*!< LEDTS FNCTL: TSCCMP (Bit 20) */ -#define LEDTS_FNCTL_TSCCMP_Msk \ - (0x100000UL) /*!< LEDTS FNCTL: TSCCMP (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_TSOEXT_Pos \ - (21UL) /*!< LEDTS FNCTL: TSOEXT (Bit 21) */ -#define LEDTS_FNCTL_TSOEXT_Msk \ - (0x600000UL) /*!< LEDTS FNCTL: TSOEXT (Bitfield-Mask: 0x03) */ -#define LEDTS_FNCTL_TSCTRR_Pos \ - (23UL) /*!< LEDTS FNCTL: TSCTRR (Bit 23) */ -#define LEDTS_FNCTL_TSCTRR_Msk \ - (0x800000UL) /*!< LEDTS FNCTL: TSCTRR (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_TSCTRSAT_Pos \ - (24UL) /*!< LEDTS FNCTL: TSCTRSAT (Bit 24) */ -#define LEDTS_FNCTL_TSCTRSAT_Msk \ - (0x1000000UL) /*!< LEDTS FNCTL: TSCTRSAT (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_NR_TSIN_Pos \ - (25UL) /*!< LEDTS FNCTL: NR_TSIN (Bit 25) */ -#define LEDTS_FNCTL_NR_TSIN_Msk \ - (0xe000000UL) /*!< LEDTS FNCTL: NR_TSIN (Bitfield-Mask: 0x07) */ -#define LEDTS_FNCTL_COLLEV_Pos \ - (28UL) /*!< LEDTS FNCTL: COLLEV (Bit 28) */ -#define LEDTS_FNCTL_COLLEV_Msk \ - (0x10000000UL) /*!< LEDTS FNCTL: COLLEV (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_NR_LEDCOL_Pos \ - (29UL) /*!< LEDTS FNCTL: NR_LEDCOL (Bit 29) */ -#define LEDTS_FNCTL_NR_LEDCOL_Msk \ - (0xe0000000UL) /*!< LEDTS FNCTL: NR_LEDCOL (Bitfield-Mask: 0x07) */ - -/* --------------------------------- LEDTS_EVFR --------------------------------- */ -#define LEDTS_EVFR_TSF_Pos (0UL) /*!< LEDTS EVFR: TSF (Bit 0) */ -#define LEDTS_EVFR_TSF_Msk \ - (0x1UL) /*!< LEDTS EVFR: TSF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_TFF_Pos (1UL) /*!< LEDTS EVFR: TFF (Bit 1) */ -#define LEDTS_EVFR_TFF_Msk \ - (0x2UL) /*!< LEDTS EVFR: TFF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_TPF_Pos (2UL) /*!< LEDTS EVFR: TPF (Bit 2) */ -#define LEDTS_EVFR_TPF_Msk \ - (0x4UL) /*!< LEDTS EVFR: TPF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_TSCTROVF_Pos \ - (3UL) /*!< LEDTS EVFR: TSCTROVF (Bit 3) */ -#define LEDTS_EVFR_TSCTROVF_Msk \ - (0x8UL) /*!< LEDTS EVFR: TSCTROVF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_CTSF_Pos \ - (16UL) /*!< LEDTS EVFR: CTSF (Bit 16) */ -#define LEDTS_EVFR_CTSF_Msk \ - (0x10000UL) /*!< LEDTS EVFR: CTSF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_CTFF_Pos \ - (17UL) /*!< LEDTS EVFR: CTFF (Bit 17) */ -#define LEDTS_EVFR_CTFF_Msk \ - (0x20000UL) /*!< LEDTS EVFR: CTFF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_CTPF_Pos \ - (18UL) /*!< LEDTS EVFR: CTPF (Bit 18) */ -#define LEDTS_EVFR_CTPF_Msk \ - (0x40000UL) /*!< LEDTS EVFR: CTPF (Bitfield-Mask: 0x01) */ - -/* --------------------------------- LEDTS_TSVAL -------------------------------- */ -#define LEDTS_TSVAL_TSCTRVALR_Pos \ - (0UL) /*!< LEDTS TSVAL: TSCTRVALR (Bit 0) */ -#define LEDTS_TSVAL_TSCTRVALR_Msk \ - (0xffffUL) /*!< LEDTS TSVAL: TSCTRVALR (Bitfield-Mask: 0xffff) */ -#define LEDTS_TSVAL_TSCTRVAL_Pos \ - (16UL) /*!< LEDTS TSVAL: TSCTRVAL (Bit 16) */ -#define LEDTS_TSVAL_TSCTRVAL_Msk \ - (0xffff0000UL) /*!< LEDTS TSVAL: TSCTRVAL (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- LEDTS_LINE0 -------------------------------- */ -#define LEDTS_LINE0_LINE_0_Pos \ - (0UL) /*!< LEDTS LINE0: LINE_0 (Bit 0) */ -#define LEDTS_LINE0_LINE_0_Msk \ - (0xffUL) /*!< LEDTS LINE0: LINE_0 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE0_LINE_1_Pos \ - (8UL) /*!< LEDTS LINE0: LINE_1 (Bit 8) */ -#define LEDTS_LINE0_LINE_1_Msk \ - (0xff00UL) /*!< LEDTS LINE0: LINE_1 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE0_LINE_2_Pos \ - (16UL) /*!< LEDTS LINE0: LINE_2 (Bit 16) */ -#define LEDTS_LINE0_LINE_2_Msk \ - (0xff0000UL) /*!< LEDTS LINE0: LINE_2 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE0_LINE_3_Pos \ - (24UL) /*!< LEDTS LINE0: LINE_3 (Bit 24) */ -#define LEDTS_LINE0_LINE_3_Msk \ - (0xff000000UL) /*!< LEDTS LINE0: LINE_3 (Bitfield-Mask: 0xff) */ - -/* --------------------------------- LEDTS_LINE1 -------------------------------- */ -#define LEDTS_LINE1_LINE_4_Pos \ - (0UL) /*!< LEDTS LINE1: LINE_4 (Bit 0) */ -#define LEDTS_LINE1_LINE_4_Msk \ - (0xffUL) /*!< LEDTS LINE1: LINE_4 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE1_LINE_5_Pos \ - (8UL) /*!< LEDTS LINE1: LINE_5 (Bit 8) */ -#define LEDTS_LINE1_LINE_5_Msk \ - (0xff00UL) /*!< LEDTS LINE1: LINE_5 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE1_LINE_6_Pos \ - (16UL) /*!< LEDTS LINE1: LINE_6 (Bit 16) */ -#define LEDTS_LINE1_LINE_6_Msk \ - (0xff0000UL) /*!< LEDTS LINE1: LINE_6 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE1_LINE_A_Pos \ - (24UL) /*!< LEDTS LINE1: LINE_A (Bit 24) */ -#define LEDTS_LINE1_LINE_A_Msk \ - (0xff000000UL) /*!< LEDTS LINE1: LINE_A (Bitfield-Mask: 0xff) */ - -/* -------------------------------- LEDTS_LDCMP0 -------------------------------- */ -#define LEDTS_LDCMP0_CMP_LD0_Pos \ - (0UL) /*!< LEDTS LDCMP0: CMP_LD0 (Bit 0) */ -#define LEDTS_LDCMP0_CMP_LD0_Msk \ - (0xffUL) /*!< LEDTS LDCMP0: CMP_LD0 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP0_CMP_LD1_Pos \ - (8UL) /*!< LEDTS LDCMP0: CMP_LD1 (Bit 8) */ -#define LEDTS_LDCMP0_CMP_LD1_Msk \ - (0xff00UL) /*!< LEDTS LDCMP0: CMP_LD1 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP0_CMP_LD2_Pos \ - (16UL) /*!< LEDTS LDCMP0: CMP_LD2 (Bit 16) */ -#define LEDTS_LDCMP0_CMP_LD2_Msk \ - (0xff0000UL) /*!< LEDTS LDCMP0: CMP_LD2 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP0_CMP_LD3_Pos \ - (24UL) /*!< LEDTS LDCMP0: CMP_LD3 (Bit 24) */ -#define LEDTS_LDCMP0_CMP_LD3_Msk \ - (0xff000000UL) /*!< LEDTS LDCMP0: CMP_LD3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- LEDTS_LDCMP1 -------------------------------- */ -#define LEDTS_LDCMP1_CMP_LD4_Pos \ - (0UL) /*!< LEDTS LDCMP1: CMP_LD4 (Bit 0) */ -#define LEDTS_LDCMP1_CMP_LD4_Msk \ - (0xffUL) /*!< LEDTS LDCMP1: CMP_LD4 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP1_CMP_LD5_Pos \ - (8UL) /*!< LEDTS LDCMP1: CMP_LD5 (Bit 8) */ -#define LEDTS_LDCMP1_CMP_LD5_Msk \ - (0xff00UL) /*!< LEDTS LDCMP1: CMP_LD5 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP1_CMP_LD6_Pos \ - (16UL) /*!< LEDTS LDCMP1: CMP_LD6 (Bit 16) */ -#define LEDTS_LDCMP1_CMP_LD6_Msk \ - (0xff0000UL) /*!< LEDTS LDCMP1: CMP_LD6 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP1_CMP_LDA_TSCOM_Pos \ - (24UL) /*!< LEDTS LDCMP1: CMP_LDA_TSCOM (Bit 24) */ -#define LEDTS_LDCMP1_CMP_LDA_TSCOM_Msk \ - (0xff000000UL) /*!< LEDTS LDCMP1: CMP_LDA_TSCOM (Bitfield-Mask: 0xff) */ - -/* -------------------------------- LEDTS_TSCMP0 -------------------------------- */ -#define LEDTS_TSCMP0_CMP_TS0_Pos \ - (0UL) /*!< LEDTS TSCMP0: CMP_TS0 (Bit 0) */ -#define LEDTS_TSCMP0_CMP_TS0_Msk \ - (0xffUL) /*!< LEDTS TSCMP0: CMP_TS0 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP0_CMP_TS1_Pos \ - (8UL) /*!< LEDTS TSCMP0: CMP_TS1 (Bit 8) */ -#define LEDTS_TSCMP0_CMP_TS1_Msk \ - (0xff00UL) /*!< LEDTS TSCMP0: CMP_TS1 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP0_CMP_TS2_Pos \ - (16UL) /*!< LEDTS TSCMP0: CMP_TS2 (Bit 16) */ -#define LEDTS_TSCMP0_CMP_TS2_Msk \ - (0xff0000UL) /*!< LEDTS TSCMP0: CMP_TS2 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP0_CMP_TS3_Pos \ - (24UL) /*!< LEDTS TSCMP0: CMP_TS3 (Bit 24) */ -#define LEDTS_TSCMP0_CMP_TS3_Msk \ - (0xff000000UL) /*!< LEDTS TSCMP0: CMP_TS3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- LEDTS_TSCMP1 -------------------------------- */ -#define LEDTS_TSCMP1_CMP_TS4_Pos \ - (0UL) /*!< LEDTS TSCMP1: CMP_TS4 (Bit 0) */ -#define LEDTS_TSCMP1_CMP_TS4_Msk \ - (0xffUL) /*!< LEDTS TSCMP1: CMP_TS4 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP1_CMP_TS5_Pos \ - (8UL) /*!< LEDTS TSCMP1: CMP_TS5 (Bit 8) */ -#define LEDTS_TSCMP1_CMP_TS5_Msk \ - (0xff00UL) /*!< LEDTS TSCMP1: CMP_TS5 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP1_CMP_TS6_Pos \ - (16UL) /*!< LEDTS TSCMP1: CMP_TS6 (Bit 16) */ -#define LEDTS_TSCMP1_CMP_TS6_Msk \ - (0xff0000UL) /*!< LEDTS TSCMP1: CMP_TS6 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP1_CMP_TS7_Pos \ - (24UL) /*!< LEDTS TSCMP1: CMP_TS7 (Bit 24) */ -#define LEDTS_TSCMP1_CMP_TS7_Msk \ - (0xff000000UL) /*!< LEDTS TSCMP1: CMP_TS7 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ Group 'USB' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- USB_GAHBCFG -------------------------------- */ -#define USB_GAHBCFG_GlblIntrMsk_Pos \ - (0UL) /*!< USB GAHBCFG: GlblIntrMsk (Bit 0) */ -#define USB_GAHBCFG_GlblIntrMsk_Msk \ - (0x1UL) /*!< USB GAHBCFG: GlblIntrMsk (Bitfield-Mask: 0x01) */ -#define USB_GAHBCFG_HBstLen_Pos \ - (1UL) /*!< USB GAHBCFG: HBstLen (Bit 1) */ -#define USB_GAHBCFG_HBstLen_Msk \ - (0x1eUL) /*!< USB GAHBCFG: HBstLen (Bitfield-Mask: 0x0f) */ -#define USB_GAHBCFG_DMAEn_Pos \ - (5UL) /*!< USB GAHBCFG: DMAEn (Bit 5) */ -#define USB_GAHBCFG_DMAEn_Msk \ - (0x20UL) /*!< USB GAHBCFG: DMAEn (Bitfield-Mask: 0x01) */ -#define USB_GAHBCFG_NPTxFEmpLvl_Pos \ - (7UL) /*!< USB GAHBCFG: NPTxFEmpLvl (Bit 7) */ -#define USB_GAHBCFG_NPTxFEmpLvl_Msk \ - (0x80UL) /*!< USB GAHBCFG: NPTxFEmpLvl (Bitfield-Mask: 0x01) */ -#define USB_GAHBCFG_AHBSingle_Pos \ - (23UL) /*!< USB GAHBCFG: AHBSingle (Bit 23) */ -#define USB_GAHBCFG_AHBSingle_Msk \ - (0x800000UL) /*!< USB GAHBCFG: AHBSingle (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GUSBCFG -------------------------------- */ -#define USB_GUSBCFG_TOutCal_Pos \ - (0UL) /*!< USB GUSBCFG: TOutCal (Bit 0) */ -#define USB_GUSBCFG_TOutCal_Msk \ - (0x7UL) /*!< USB GUSBCFG: TOutCal (Bitfield-Mask: 0x07) */ -#define USB_GUSBCFG_PHYSel_Pos \ - (6UL) /*!< USB GUSBCFG: PHYSel (Bit 6) */ -#define USB_GUSBCFG_PHYSel_Msk \ - (0x40UL) /*!< USB GUSBCFG: PHYSel (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_USBTrdTim_Pos \ - (10UL) /*!< USB GUSBCFG: USBTrdTim (Bit 10) */ -#define USB_GUSBCFG_USBTrdTim_Msk \ - (0x3c00UL) /*!< USB GUSBCFG: USBTrdTim (Bitfield-Mask: 0x0f) */ -#define USB_GUSBCFG_TxEndDelay_Pos \ - (28UL) /*!< USB GUSBCFG: TxEndDelay (Bit 28) */ -#define USB_GUSBCFG_TxEndDelay_Msk \ - (0x10000000UL) /*!< USB GUSBCFG: TxEndDelay (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_ForceDevMode_Pos \ - (30UL) /*!< USB GUSBCFG: ForceDevMode (Bit 30) */ -#define USB_GUSBCFG_ForceDevMode_Msk \ - (0x40000000UL) /*!< USB GUSBCFG: ForceDevMode (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_CTP_Pos \ - (31UL) /*!< USB GUSBCFG: CTP (Bit 31) */ -#define USB_GUSBCFG_CTP_Msk \ - (0x80000000UL) /*!< USB GUSBCFG: CTP (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GRSTCTL -------------------------------- */ -#define USB_GRSTCTL_CSftRst_Pos \ - (0UL) /*!< USB GRSTCTL: CSftRst (Bit 0) */ -#define USB_GRSTCTL_CSftRst_Msk \ - (0x1UL) /*!< USB GRSTCTL: CSftRst (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_RxFFlsh_Pos \ - (4UL) /*!< USB GRSTCTL: RxFFlsh (Bit 4) */ -#define USB_GRSTCTL_RxFFlsh_Msk \ - (0x10UL) /*!< USB GRSTCTL: RxFFlsh (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_TxFFlsh_Pos \ - (5UL) /*!< USB GRSTCTL: TxFFlsh (Bit 5) */ -#define USB_GRSTCTL_TxFFlsh_Msk \ - (0x20UL) /*!< USB GRSTCTL: TxFFlsh (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_TxFNum_Pos \ - (6UL) /*!< USB GRSTCTL: TxFNum (Bit 6) */ -#define USB_GRSTCTL_TxFNum_Msk \ - (0x7c0UL) /*!< USB GRSTCTL: TxFNum (Bitfield-Mask: 0x1f) */ -#define USB_GRSTCTL_DMAReq_Pos \ - (30UL) /*!< USB GRSTCTL: DMAReq (Bit 30) */ -#define USB_GRSTCTL_DMAReq_Msk \ - (0x40000000UL) /*!< USB GRSTCTL: DMAReq (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_AHBIdle_Pos \ - (31UL) /*!< USB GRSTCTL: AHBIdle (Bit 31) */ -#define USB_GRSTCTL_AHBIdle_Msk \ - (0x80000000UL) /*!< USB GRSTCTL: AHBIdle (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GINTSTS -------------------------------- */ -#define USB_GINTSTS_CurMod_Pos \ - (0UL) /*!< USB GINTSTS: CurMod (Bit 0) */ -#define USB_GINTSTS_CurMod_Msk \ - (0x1UL) /*!< USB GINTSTS: CurMod (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_Sof_Pos \ - (3UL) /*!< USB GINTSTS: Sof (Bit 3) */ -#define USB_GINTSTS_Sof_Msk \ - (0x8UL) /*!< USB GINTSTS: Sof (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_RxFLvl_Pos \ - (4UL) /*!< USB GINTSTS: RxFLvl (Bit 4) */ -#define USB_GINTSTS_RxFLvl_Msk \ - (0x10UL) /*!< USB GINTSTS: RxFLvl (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_GINNakEff_Pos \ - (6UL) /*!< USB GINTSTS: GINNakEff (Bit 6) */ -#define USB_GINTSTS_GINNakEff_Msk \ - (0x40UL) /*!< USB GINTSTS: GINNakEff (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_GOUTNakEff_Pos \ - (7UL) /*!< USB GINTSTS: GOUTNakEff (Bit 7) */ -#define USB_GINTSTS_GOUTNakEff_Msk \ - (0x80UL) /*!< USB GINTSTS: GOUTNakEff (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_ErlySusp_Pos \ - (10UL) /*!< USB GINTSTS: ErlySusp (Bit 10) */ -#define USB_GINTSTS_ErlySusp_Msk \ - (0x400UL) /*!< USB GINTSTS: ErlySusp (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_USBSusp_Pos \ - (11UL) /*!< USB GINTSTS: USBSusp (Bit 11) */ -#define USB_GINTSTS_USBSusp_Msk \ - (0x800UL) /*!< USB GINTSTS: USBSusp (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_USBRst_Pos \ - (12UL) /*!< USB GINTSTS: USBRst (Bit 12) */ -#define USB_GINTSTS_USBRst_Msk \ - (0x1000UL) /*!< USB GINTSTS: USBRst (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_EnumDone_Pos \ - (13UL) /*!< USB GINTSTS: EnumDone (Bit 13) */ -#define USB_GINTSTS_EnumDone_Msk \ - (0x2000UL) /*!< USB GINTSTS: EnumDone (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_ISOOutDrop_Pos \ - (14UL) /*!< USB GINTSTS: ISOOutDrop (Bit 14) */ -#define USB_GINTSTS_ISOOutDrop_Msk \ - (0x4000UL) /*!< USB GINTSTS: ISOOutDrop (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_EOPF_Pos \ - (15UL) /*!< USB GINTSTS: EOPF (Bit 15) */ -#define USB_GINTSTS_EOPF_Msk \ - (0x8000UL) /*!< USB GINTSTS: EOPF (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_IEPInt_Pos \ - (18UL) /*!< USB GINTSTS: IEPInt (Bit 18) */ -#define USB_GINTSTS_IEPInt_Msk \ - (0x40000UL) /*!< USB GINTSTS: IEPInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_OEPInt_Pos \ - (19UL) /*!< USB GINTSTS: OEPInt (Bit 19) */ -#define USB_GINTSTS_OEPInt_Msk \ - (0x80000UL) /*!< USB GINTSTS: OEPInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_incompISOIN_Pos \ - (20UL) /*!< USB GINTSTS: incompISOIN (Bit 20) */ -#define USB_GINTSTS_incompISOIN_Msk \ - (0x100000UL) /*!< USB GINTSTS: incompISOIN (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_incomplSOOUT_Pos \ - (21UL) /*!< USB GINTSTS: incomplSOOUT (Bit 21) */ -#define USB_GINTSTS_incomplSOOUT_Msk \ - (0x200000UL) /*!< USB GINTSTS: incomplSOOUT (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_WkUpInt_Pos \ - (31UL) /*!< USB GINTSTS: WkUpInt (Bit 31) */ -#define USB_GINTSTS_WkUpInt_Msk \ - (0x80000000UL) /*!< USB GINTSTS: WkUpInt (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GINTMSK -------------------------------- */ -#define USB_GINTMSK_SofMsk_Pos \ - (3UL) /*!< USB GINTMSK: SofMsk (Bit 3) */ -#define USB_GINTMSK_SofMsk_Msk \ - (0x8UL) /*!< USB GINTMSK: SofMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_RxFLvlMsk_Pos \ - (4UL) /*!< USB GINTMSK: RxFLvlMsk (Bit 4) */ -#define USB_GINTMSK_RxFLvlMsk_Msk \ - (0x10UL) /*!< USB GINTMSK: RxFLvlMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_GINNakEffMsk_Pos \ - (6UL) /*!< USB GINTMSK: GINNakEffMsk (Bit 6) */ -#define USB_GINTMSK_GINNakEffMsk_Msk \ - (0x40UL) /*!< USB GINTMSK: GINNakEffMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_GOUTNakEffMsk_Pos \ - (7UL) /*!< USB GINTMSK: GOUTNakEffMsk (Bit 7) */ -#define USB_GINTMSK_GOUTNakEffMsk_Msk \ - (0x80UL) /*!< USB GINTMSK: GOUTNakEffMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_ErlySuspMsk_Pos \ - (10UL) /*!< USB GINTMSK: ErlySuspMsk (Bit 10) */ -#define USB_GINTMSK_ErlySuspMsk_Msk \ - (0x400UL) /*!< USB GINTMSK: ErlySuspMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_USBSuspMsk_Pos \ - (11UL) /*!< USB GINTMSK: USBSuspMsk (Bit 11) */ -#define USB_GINTMSK_USBSuspMsk_Msk \ - (0x800UL) /*!< USB GINTMSK: USBSuspMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_USBRstMsk_Pos \ - (12UL) /*!< USB GINTMSK: USBRstMsk (Bit 12) */ -#define USB_GINTMSK_USBRstMsk_Msk \ - (0x1000UL) /*!< USB GINTMSK: USBRstMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_EnumDoneMsk_Pos \ - (13UL) /*!< USB GINTMSK: EnumDoneMsk (Bit 13) */ -#define USB_GINTMSK_EnumDoneMsk_Msk \ - (0x2000UL) /*!< USB GINTMSK: EnumDoneMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_ISOOutDropMsk_Pos \ - (14UL) /*!< USB GINTMSK: ISOOutDropMsk (Bit 14) */ -#define USB_GINTMSK_ISOOutDropMsk_Msk \ - (0x4000UL) /*!< USB GINTMSK: ISOOutDropMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_EOPFMsk_Pos \ - (15UL) /*!< USB GINTMSK: EOPFMsk (Bit 15) */ -#define USB_GINTMSK_EOPFMsk_Msk \ - (0x8000UL) /*!< USB GINTMSK: EOPFMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_IEPIntMsk_Pos \ - (18UL) /*!< USB GINTMSK: IEPIntMsk (Bit 18) */ -#define USB_GINTMSK_IEPIntMsk_Msk \ - (0x40000UL) /*!< USB GINTMSK: IEPIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_OEPIntMsk_Pos \ - (19UL) /*!< USB GINTMSK: OEPIntMsk (Bit 19) */ -#define USB_GINTMSK_OEPIntMsk_Msk \ - (0x80000UL) /*!< USB GINTMSK: OEPIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_incompISOINMsk_Pos \ - (20UL) /*!< USB GINTMSK: incompISOINMsk (Bit 20) */ -#define USB_GINTMSK_incompISOINMsk_Msk \ - (0x100000UL) /*!< USB GINTMSK: incompISOINMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_incomplSOOUTMsk_Pos \ - (21UL) /*!< USB GINTMSK: incomplSOOUTMsk (Bit 21) */ -#define USB_GINTMSK_incomplSOOUTMsk_Msk \ - (0x200000UL) /*!< USB GINTMSK: incomplSOOUTMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_WkUpIntMsk_Pos \ - (31UL) /*!< USB GINTMSK: WkUpIntMsk (Bit 31) */ -#define USB_GINTMSK_WkUpIntMsk_Msk \ - (0x80000000UL) /*!< USB GINTMSK: WkUpIntMsk (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GRXSTSR -------------------------------- */ -#define USB_GRXSTSR_EPNum_Pos \ - (0UL) /*!< USB GRXSTSR: EPNum (Bit 0) */ -#define USB_GRXSTSR_EPNum_Msk \ - (0xfUL) /*!< USB GRXSTSR: EPNum (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSR_BCnt_Pos \ - (4UL) /*!< USB GRXSTSR: BCnt (Bit 4) */ -#define USB_GRXSTSR_BCnt_Msk \ - (0x7ff0UL) /*!< USB GRXSTSR: BCnt (Bitfield-Mask: 0x7ff) */ -#define USB_GRXSTSR_DPID_Pos \ - (15UL) /*!< USB GRXSTSR: DPID (Bit 15) */ -#define USB_GRXSTSR_DPID_Msk \ - (0x18000UL) /*!< USB GRXSTSR: DPID (Bitfield-Mask: 0x03) */ -#define USB_GRXSTSR_PktSts_Pos \ - (17UL) /*!< USB GRXSTSR: PktSts (Bit 17) */ -#define USB_GRXSTSR_PktSts_Msk \ - (0x1e0000UL) /*!< USB GRXSTSR: PktSts (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSR_FN_Pos \ - (21UL) /*!< USB GRXSTSR: FN (Bit 21) */ -#define USB_GRXSTSR_FN_Msk \ - (0x1e00000UL) /*!< USB GRXSTSR: FN (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- USB_GRXSTSP -------------------------------- */ -#define USB_GRXSTSP_EPNum_Pos \ - (0UL) /*!< USB GRXSTSP: EPNum (Bit 0) */ -#define USB_GRXSTSP_EPNum_Msk \ - (0xfUL) /*!< USB GRXSTSP: EPNum (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSP_BCnt_Pos \ - (4UL) /*!< USB GRXSTSP: BCnt (Bit 4) */ -#define USB_GRXSTSP_BCnt_Msk \ - (0x7ff0UL) /*!< USB GRXSTSP: BCnt (Bitfield-Mask: 0x7ff) */ -#define USB_GRXSTSP_DPID_Pos \ - (15UL) /*!< USB GRXSTSP: DPID (Bit 15) */ -#define USB_GRXSTSP_DPID_Msk \ - (0x18000UL) /*!< USB GRXSTSP: DPID (Bitfield-Mask: 0x03) */ -#define USB_GRXSTSP_PktSts_Pos \ - (17UL) /*!< USB GRXSTSP: PktSts (Bit 17) */ -#define USB_GRXSTSP_PktSts_Msk \ - (0x1e0000UL) /*!< USB GRXSTSP: PktSts (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSP_FN_Pos \ - (21UL) /*!< USB GRXSTSP: FN (Bit 21) */ -#define USB_GRXSTSP_FN_Msk \ - (0x1e00000UL) /*!< USB GRXSTSP: FN (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- USB_GRXFSIZ -------------------------------- */ -#define USB_GRXFSIZ_RxFDep_Pos \ - (0UL) /*!< USB GRXFSIZ: RxFDep (Bit 0) */ -#define USB_GRXFSIZ_RxFDep_Msk \ - (0xffffUL) /*!< USB GRXFSIZ: RxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_GNPTXFSIZ ------------------------------- */ -#define USB_GNPTXFSIZ_INEPTxF0StAddr_Pos \ - (0UL) /*!< USB GNPTXFSIZ: INEPTxF0StAddr (Bit 0) */ -#define USB_GNPTXFSIZ_INEPTxF0StAddr_Msk \ - (0xffffUL) /*!< USB GNPTXFSIZ: INEPTxF0StAddr (Bitfield-Mask: 0xffff) */ -#define USB_GNPTXFSIZ_INEPTxF0Dep_Pos \ - (16UL) /*!< USB GNPTXFSIZ: INEPTxF0Dep (Bit 16) */ -#define USB_GNPTXFSIZ_INEPTxF0Dep_Msk \ - (0xffff0000UL) /*!< USB GNPTXFSIZ: INEPTxF0Dep (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- USB_GUID ---------------------------------- */ -#define USB_GUID_MOD_REV_Pos \ - (0UL) /*!< USB GUID: MOD_REV (Bit 0) */ -#define USB_GUID_MOD_REV_Msk \ - (0xffUL) /*!< USB GUID: MOD_REV (Bitfield-Mask: 0xff) */ -#define USB_GUID_MOD_TYPE_Pos \ - (8UL) /*!< USB GUID: MOD_TYPE (Bit 8) */ -#define USB_GUID_MOD_TYPE_Msk \ - (0xff00UL) /*!< USB GUID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define USB_GUID_MOD_NUMBER_Pos \ - (16UL) /*!< USB GUID: MOD_NUMBER (Bit 16) */ -#define USB_GUID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< USB GUID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_GDFIFOCFG ------------------------------- */ -#define USB_GDFIFOCFG_GDFIFOCfg_Pos \ - (0UL) /*!< USB GDFIFOCFG: GDFIFOCfg (Bit 0) */ -#define USB_GDFIFOCFG_GDFIFOCfg_Msk \ - (0xffffUL) /*!< USB GDFIFOCFG: GDFIFOCfg (Bitfield-Mask: 0xffff) */ -#define USB_GDFIFOCFG_EPInfoBaseAddr_Pos \ - (16UL) /*!< USB GDFIFOCFG: EPInfoBaseAddr (Bit 16) */ -#define USB_GDFIFOCFG_EPInfoBaseAddr_Msk \ - (0xffff0000UL) /*!< USB GDFIFOCFG: EPInfoBaseAddr (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF1 -------------------------------- */ -#define USB_DIEPTXF1_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF1: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF1_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF1: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF1_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF1: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF1_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF1: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF2 -------------------------------- */ -#define USB_DIEPTXF2_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF2: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF2_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF2: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF2_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF2: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF2_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF2: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF3 -------------------------------- */ -#define USB_DIEPTXF3_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF3: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF3_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF3: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF3_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF3: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF3_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF3: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF4 -------------------------------- */ -#define USB_DIEPTXF4_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF4: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF4_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF4: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF4_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF4: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF4_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF4: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF5 -------------------------------- */ -#define USB_DIEPTXF5_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF5: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF5_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF5: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF5_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF5: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF5_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF5: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF6 -------------------------------- */ -#define USB_DIEPTXF6_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF6: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF6_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF6: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF6_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF6: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF6_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF6: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- USB_DCFG ---------------------------------- */ -#define USB_DCFG_DevSpd_Pos \ - (0UL) /*!< USB DCFG: DevSpd (Bit 0) */ -#define USB_DCFG_DevSpd_Msk \ - (0x3UL) /*!< USB DCFG: DevSpd (Bitfield-Mask: 0x03) */ -#define USB_DCFG_NZStsOUTHShk_Pos \ - (2UL) /*!< USB DCFG: NZStsOUTHShk (Bit 2) */ -#define USB_DCFG_NZStsOUTHShk_Msk \ - (0x4UL) /*!< USB DCFG: NZStsOUTHShk (Bitfield-Mask: 0x01) */ -#define USB_DCFG_DevAddr_Pos \ - (4UL) /*!< USB DCFG: DevAddr (Bit 4) */ -#define USB_DCFG_DevAddr_Msk \ - (0x7f0UL) /*!< USB DCFG: DevAddr (Bitfield-Mask: 0x7f) */ -#define USB_DCFG_PerFrInt_Pos \ - (11UL) /*!< USB DCFG: PerFrInt (Bit 11) */ -#define USB_DCFG_PerFrInt_Msk \ - (0x1800UL) /*!< USB DCFG: PerFrInt (Bitfield-Mask: 0x03) */ -#define USB_DCFG_DescDMA_Pos \ - (23UL) /*!< USB DCFG: DescDMA (Bit 23) */ -#define USB_DCFG_DescDMA_Msk \ - (0x800000UL) /*!< USB DCFG: DescDMA (Bitfield-Mask: 0x01) */ -#define USB_DCFG_PerSchIntvl_Pos \ - (24UL) /*!< USB DCFG: PerSchIntvl (Bit 24) */ -#define USB_DCFG_PerSchIntvl_Msk \ - (0x3000000UL) /*!< USB DCFG: PerSchIntvl (Bitfield-Mask: 0x03) */ - -/* ---------------------------------- USB_DCTL ---------------------------------- */ -#define USB_DCTL_RmtWkUpSig_Pos \ - (0UL) /*!< USB DCTL: RmtWkUpSig (Bit 0) */ -#define USB_DCTL_RmtWkUpSig_Msk \ - (0x1UL) /*!< USB DCTL: RmtWkUpSig (Bitfield-Mask: 0x01) */ -#define USB_DCTL_SftDiscon_Pos \ - (1UL) /*!< USB DCTL: SftDiscon (Bit 1) */ -#define USB_DCTL_SftDiscon_Msk \ - (0x2UL) /*!< USB DCTL: SftDiscon (Bitfield-Mask: 0x01) */ -#define USB_DCTL_GNPINNakSts_Pos \ - (2UL) /*!< USB DCTL: GNPINNakSts (Bit 2) */ -#define USB_DCTL_GNPINNakSts_Msk \ - (0x4UL) /*!< USB DCTL: GNPINNakSts (Bitfield-Mask: 0x01) */ -#define USB_DCTL_GOUTNakSts_Pos \ - (3UL) /*!< USB DCTL: GOUTNakSts (Bit 3) */ -#define USB_DCTL_GOUTNakSts_Msk \ - (0x8UL) /*!< USB DCTL: GOUTNakSts (Bitfield-Mask: 0x01) */ -#define USB_DCTL_SGNPInNak_Pos \ - (7UL) /*!< USB DCTL: SGNPInNak (Bit 7) */ -#define USB_DCTL_SGNPInNak_Msk \ - (0x80UL) /*!< USB DCTL: SGNPInNak (Bitfield-Mask: 0x01) */ -#define USB_DCTL_CGNPInNak_Pos \ - (8UL) /*!< USB DCTL: CGNPInNak (Bit 8) */ -#define USB_DCTL_CGNPInNak_Msk \ - (0x100UL) /*!< USB DCTL: CGNPInNak (Bitfield-Mask: 0x01) */ -#define USB_DCTL_SGOUTNak_Pos \ - (9UL) /*!< USB DCTL: SGOUTNak (Bit 9) */ -#define USB_DCTL_SGOUTNak_Msk \ - (0x200UL) /*!< USB DCTL: SGOUTNak (Bitfield-Mask: 0x01) */ -#define USB_DCTL_CGOUTNak_Pos \ - (10UL) /*!< USB DCTL: CGOUTNak (Bit 10) */ -#define USB_DCTL_CGOUTNak_Msk \ - (0x400UL) /*!< USB DCTL: CGOUTNak (Bitfield-Mask: 0x01) */ -#define USB_DCTL_GMC_Pos (13UL) /*!< USB DCTL: GMC (Bit 13) */ -#define USB_DCTL_GMC_Msk \ - (0x6000UL) /*!< USB DCTL: GMC (Bitfield-Mask: 0x03) */ -#define USB_DCTL_IgnrFrmNum_Pos \ - (15UL) /*!< USB DCTL: IgnrFrmNum (Bit 15) */ -#define USB_DCTL_IgnrFrmNum_Msk \ - (0x8000UL) /*!< USB DCTL: IgnrFrmNum (Bitfield-Mask: 0x01) */ -#define USB_DCTL_NakOnBble_Pos \ - (16UL) /*!< USB DCTL: NakOnBble (Bit 16) */ -#define USB_DCTL_NakOnBble_Msk \ - (0x10000UL) /*!< USB DCTL: NakOnBble (Bitfield-Mask: 0x01) */ -#define USB_DCTL_EnContOnBNA_Pos \ - (17UL) /*!< USB DCTL: EnContOnBNA (Bit 17) */ -#define USB_DCTL_EnContOnBNA_Msk \ - (0x20000UL) /*!< USB DCTL: EnContOnBNA (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- USB_DSTS ---------------------------------- */ -#define USB_DSTS_SuspSts_Pos \ - (0UL) /*!< USB DSTS: SuspSts (Bit 0) */ -#define USB_DSTS_SuspSts_Msk \ - (0x1UL) /*!< USB DSTS: SuspSts (Bitfield-Mask: 0x01) */ -#define USB_DSTS_EnumSpd_Pos \ - (1UL) /*!< USB DSTS: EnumSpd (Bit 1) */ -#define USB_DSTS_EnumSpd_Msk \ - (0x6UL) /*!< USB DSTS: EnumSpd (Bitfield-Mask: 0x03) */ -#define USB_DSTS_ErrticErr_Pos \ - (3UL) /*!< USB DSTS: ErrticErr (Bit 3) */ -#define USB_DSTS_ErrticErr_Msk \ - (0x8UL) /*!< USB DSTS: ErrticErr (Bitfield-Mask: 0x01) */ -#define USB_DSTS_SOFFN_Pos (8UL) /*!< USB DSTS: SOFFN (Bit 8) */ -#define USB_DSTS_SOFFN_Msk \ - (0x3fff00UL) /*!< USB DSTS: SOFFN (Bitfield-Mask: 0x3fff) */ - -/* --------------------------------- USB_DIEPMSK -------------------------------- */ -#define USB_DIEPMSK_XferComplMsk_Pos \ - (0UL) /*!< USB DIEPMSK: XferComplMsk (Bit 0) */ -#define USB_DIEPMSK_XferComplMsk_Msk \ - (0x1UL) /*!< USB DIEPMSK: XferComplMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_EPDisbldMsk_Pos \ - (1UL) /*!< USB DIEPMSK: EPDisbldMsk (Bit 1) */ -#define USB_DIEPMSK_EPDisbldMsk_Msk \ - (0x2UL) /*!< USB DIEPMSK: EPDisbldMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_AHBErrMsk_Pos \ - (2UL) /*!< USB DIEPMSK: AHBErrMsk (Bit 2) */ -#define USB_DIEPMSK_AHBErrMsk_Msk \ - (0x4UL) /*!< USB DIEPMSK: AHBErrMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_TimeOUTMsk_Pos \ - (3UL) /*!< USB DIEPMSK: TimeOUTMsk (Bit 3) */ -#define USB_DIEPMSK_TimeOUTMsk_Msk \ - (0x8UL) /*!< USB DIEPMSK: TimeOUTMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_INTknTXFEmpMsk_Pos \ - (4UL) /*!< USB DIEPMSK: INTknTXFEmpMsk (Bit 4) */ -#define USB_DIEPMSK_INTknTXFEmpMsk_Msk \ - (0x10UL) /*!< USB DIEPMSK: INTknTXFEmpMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_INEPNakEffMsk_Pos \ - (6UL) /*!< USB DIEPMSK: INEPNakEffMsk (Bit 6) */ -#define USB_DIEPMSK_INEPNakEffMsk_Msk \ - (0x40UL) /*!< USB DIEPMSK: INEPNakEffMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_TxfifoUndrnMsk_Pos \ - (8UL) /*!< USB DIEPMSK: TxfifoUndrnMsk (Bit 8) */ -#define USB_DIEPMSK_TxfifoUndrnMsk_Msk \ - (0x100UL) /*!< USB DIEPMSK: TxfifoUndrnMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_BNAInIntrMsk_Pos \ - (9UL) /*!< USB DIEPMSK: BNAInIntrMsk (Bit 9) */ -#define USB_DIEPMSK_BNAInIntrMsk_Msk \ - (0x200UL) /*!< USB DIEPMSK: BNAInIntrMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_NAKMsk_Pos \ - (13UL) /*!< USB DIEPMSK: NAKMsk (Bit 13) */ -#define USB_DIEPMSK_NAKMsk_Msk \ - (0x2000UL) /*!< USB DIEPMSK: NAKMsk (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_DOEPMSK -------------------------------- */ -#define USB_DOEPMSK_XferComplMsk_Pos \ - (0UL) /*!< USB DOEPMSK: XferComplMsk (Bit 0) */ -#define USB_DOEPMSK_XferComplMsk_Msk \ - (0x1UL) /*!< USB DOEPMSK: XferComplMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_EPDisbldMsk_Pos \ - (1UL) /*!< USB DOEPMSK: EPDisbldMsk (Bit 1) */ -#define USB_DOEPMSK_EPDisbldMsk_Msk \ - (0x2UL) /*!< USB DOEPMSK: EPDisbldMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_AHBErrMsk_Pos \ - (2UL) /*!< USB DOEPMSK: AHBErrMsk (Bit 2) */ -#define USB_DOEPMSK_AHBErrMsk_Msk \ - (0x4UL) /*!< USB DOEPMSK: AHBErrMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_SetUPMsk_Pos \ - (3UL) /*!< USB DOEPMSK: SetUPMsk (Bit 3) */ -#define USB_DOEPMSK_SetUPMsk_Msk \ - (0x8UL) /*!< USB DOEPMSK: SetUPMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_OUTTknEPdisMsk_Pos \ - (4UL) /*!< USB DOEPMSK: OUTTknEPdisMsk (Bit 4) */ -#define USB_DOEPMSK_OUTTknEPdisMsk_Msk \ - (0x10UL) /*!< USB DOEPMSK: OUTTknEPdisMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_Back2BackSETup_Pos \ - (6UL) /*!< USB DOEPMSK: Back2BackSETup (Bit 6) */ -#define USB_DOEPMSK_Back2BackSETup_Msk \ - (0x40UL) /*!< USB DOEPMSK: Back2BackSETup (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_OutPktErrMsk_Pos \ - (8UL) /*!< USB DOEPMSK: OutPktErrMsk (Bit 8) */ -#define USB_DOEPMSK_OutPktErrMsk_Msk \ - (0x100UL) /*!< USB DOEPMSK: OutPktErrMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_BnaOutIntrMsk_Pos \ - (9UL) /*!< USB DOEPMSK: BnaOutIntrMsk (Bit 9) */ -#define USB_DOEPMSK_BnaOutIntrMsk_Msk \ - (0x200UL) /*!< USB DOEPMSK: BnaOutIntrMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_BbleErrMsk_Pos \ - (12UL) /*!< USB DOEPMSK: BbleErrMsk (Bit 12) */ -#define USB_DOEPMSK_BbleErrMsk_Msk \ - (0x1000UL) /*!< USB DOEPMSK: BbleErrMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_NAKMsk_Pos \ - (13UL) /*!< USB DOEPMSK: NAKMsk (Bit 13) */ -#define USB_DOEPMSK_NAKMsk_Msk \ - (0x2000UL) /*!< USB DOEPMSK: NAKMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_NYETMsk_Pos \ - (14UL) /*!< USB DOEPMSK: NYETMsk (Bit 14) */ -#define USB_DOEPMSK_NYETMsk_Msk \ - (0x4000UL) /*!< USB DOEPMSK: NYETMsk (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- USB_DAINT --------------------------------- */ -#define USB_DAINT_InEpInt_Pos \ - (0UL) /*!< USB DAINT: InEpInt (Bit 0) */ -#define USB_DAINT_InEpInt_Msk \ - (0xffffUL) /*!< USB DAINT: InEpInt (Bitfield-Mask: 0xffff) */ -#define USB_DAINT_OutEPInt_Pos \ - (16UL) /*!< USB DAINT: OutEPInt (Bit 16) */ -#define USB_DAINT_OutEPInt_Msk \ - (0xffff0000UL) /*!< USB DAINT: OutEPInt (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DAINTMSK -------------------------------- */ -#define USB_DAINTMSK_InEpMsk_Pos \ - (0UL) /*!< USB DAINTMSK: InEpMsk (Bit 0) */ -#define USB_DAINTMSK_InEpMsk_Msk \ - (0xffffUL) /*!< USB DAINTMSK: InEpMsk (Bitfield-Mask: 0xffff) */ -#define USB_DAINTMSK_OutEpMsk_Pos \ - (16UL) /*!< USB DAINTMSK: OutEpMsk (Bit 16) */ -#define USB_DAINTMSK_OutEpMsk_Msk \ - (0xffff0000UL) /*!< USB DAINTMSK: OutEpMsk (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DVBUSDIS -------------------------------- */ -#define USB_DVBUSDIS_DVBUSDis_Pos \ - (0UL) /*!< USB DVBUSDIS: DVBUSDis (Bit 0) */ -#define USB_DVBUSDIS_DVBUSDis_Msk \ - (0xffffUL) /*!< USB DVBUSDIS: DVBUSDis (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- USB_DVBUSPULSE ------------------------------- */ -#define USB_DVBUSPULSE_DVBUSPulse_Pos \ - (0UL) /*!< USB DVBUSPULSE: DVBUSPulse (Bit 0) */ -#define USB_DVBUSPULSE_DVBUSPulse_Msk \ - (0xfffUL) /*!< USB DVBUSPULSE: DVBUSPulse (Bitfield-Mask: 0xfff) */ - -/* ------------------------------- USB_DIEPEMPMSK ------------------------------- */ -#define USB_DIEPEMPMSK_InEpTxfEmpMsk_Pos \ - (0UL) /*!< USB DIEPEMPMSK: InEpTxfEmpMsk (Bit 0) */ -#define USB_DIEPEMPMSK_InEpTxfEmpMsk_Msk \ - (0xffffUL) /*!< USB DIEPEMPMSK: InEpTxfEmpMsk (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- USB_PCGCCTL -------------------------------- */ -#define USB_PCGCCTL_StopPclk_Pos \ - (0UL) /*!< USB PCGCCTL: StopPclk (Bit 0) */ -#define USB_PCGCCTL_StopPclk_Msk \ - (0x1UL) /*!< USB PCGCCTL: StopPclk (Bitfield-Mask: 0x01) */ -#define USB_PCGCCTL_GateHclk_Pos \ - (1UL) /*!< USB PCGCCTL: GateHclk (Bit 1) */ -#define USB_PCGCCTL_GateHclk_Msk \ - (0x2UL) /*!< USB PCGCCTL: GateHclk (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'USB0_EP0' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ USB_EP_DIEPCTL0 ----------------------------- */ -#define USB_EP_DIEPCTL0_MPS_Pos \ - (0UL) /*!< USB0_EP0 DIEPCTL0: MPS (Bit 0) */ -#define USB_EP_DIEPCTL0_MPS_Msk \ - (0x3UL) /*!< USB0_EP0 DIEPCTL0: MPS (Bitfield-Mask: 0x03) */ -#define USB_EP_DIEPCTL0_USBActEP_Pos \ - (15UL) /*!< USB0_EP0 DIEPCTL0: USBActEP (Bit 15) */ -#define USB_EP_DIEPCTL0_USBActEP_Msk \ - (0x8000UL) /*!< USB0_EP0 DIEPCTL0: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_NAKSts_Pos \ - (17UL) /*!< USB0_EP0 DIEPCTL0: NAKSts (Bit 17) */ -#define USB_EP_DIEPCTL0_NAKSts_Msk \ - (0x20000UL) /*!< USB0_EP0 DIEPCTL0: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_EPType_Pos \ - (18UL) /*!< USB0_EP0 DIEPCTL0: EPType (Bit 18) */ -#define USB_EP_DIEPCTL0_EPType_Msk \ - (0xc0000UL) /*!< USB0_EP0 DIEPCTL0: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DIEPCTL0_Stall_Pos \ - (21UL) /*!< USB0_EP0 DIEPCTL0: Stall (Bit 21) */ -#define USB_EP_DIEPCTL0_Stall_Msk \ - (0x200000UL) /*!< USB0_EP0 DIEPCTL0: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_TxFNum_Pos \ - (22UL) /*!< USB0_EP0 DIEPCTL0: TxFNum (Bit 22) */ -#define USB_EP_DIEPCTL0_TxFNum_Msk \ - (0x3c00000UL) /*!< USB0_EP0 DIEPCTL0: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DIEPCTL0_CNAK_Pos \ - (26UL) /*!< USB0_EP0 DIEPCTL0: CNAK (Bit 26) */ -#define USB_EP_DIEPCTL0_CNAK_Msk \ - (0x4000000UL) /*!< USB0_EP0 DIEPCTL0: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_SNAK_Pos \ - (27UL) /*!< USB0_EP0 DIEPCTL0: SNAK (Bit 27) */ -#define USB_EP_DIEPCTL0_SNAK_Msk \ - (0x8000000UL) /*!< USB0_EP0 DIEPCTL0: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_EPDis_Pos \ - (30UL) /*!< USB0_EP0 DIEPCTL0: EPDis (Bit 30) */ -#define USB_EP_DIEPCTL0_EPDis_Msk \ - (0x40000000UL) /*!< USB0_EP0 DIEPCTL0: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_EPEna_Pos \ - (31UL) /*!< USB0_EP0 DIEPCTL0: EPEna (Bit 31) */ -#define USB_EP_DIEPCTL0_EPEna_Msk \ - (0x80000000UL) /*!< USB0_EP0 DIEPCTL0: EPEna (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_EP_DIEPINT0 ----------------------------- */ -#define USB_EP_DIEPINT0_XferCompl_Pos \ - (0UL) /*!< USB0_EP0 DIEPINT0: XferCompl (Bit 0) */ -#define USB_EP_DIEPINT0_XferCompl_Msk \ - (0x1UL) /*!< USB0_EP0 DIEPINT0: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_EPDisbld_Pos \ - (1UL) /*!< USB0_EP0 DIEPINT0: EPDisbld (Bit 1) */ -#define USB_EP_DIEPINT0_EPDisbld_Msk \ - (0x2UL) /*!< USB0_EP0 DIEPINT0: EPDisbld (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_AHBErr_Pos \ - (2UL) /*!< USB0_EP0 DIEPINT0: AHBErr (Bit 2) */ -#define USB_EP_DIEPINT0_AHBErr_Msk \ - (0x4UL) /*!< USB0_EP0 DIEPINT0: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_TimeOUT_Pos \ - (3UL) /*!< USB0_EP0 DIEPINT0: TimeOUT (Bit 3) */ -#define USB_EP_DIEPINT0_TimeOUT_Msk \ - (0x8UL) /*!< USB0_EP0 DIEPINT0: TimeOUT (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_INTknTXFEmp_Pos \ - (4UL) /*!< USB0_EP0 DIEPINT0: INTknTXFEmp (Bit 4) */ -#define USB_EP_DIEPINT0_INTknTXFEmp_Msk \ - (0x10UL) /*!< USB0_EP0 DIEPINT0: INTknTXFEmp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_INEPNakEff_Pos \ - (6UL) /*!< USB0_EP0 DIEPINT0: INEPNakEff (Bit 6) */ -#define USB_EP_DIEPINT0_INEPNakEff_Msk \ - (0x40UL) /*!< USB0_EP0 DIEPINT0: INEPNakEff (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_TxFEmp_Pos \ - (7UL) /*!< USB0_EP0 DIEPINT0: TxFEmp (Bit 7) */ -#define USB_EP_DIEPINT0_TxFEmp_Msk \ - (0x80UL) /*!< USB0_EP0 DIEPINT0: TxFEmp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_BNAIntr_Pos \ - (9UL) /*!< USB0_EP0 DIEPINT0: BNAIntr (Bit 9) */ -#define USB_EP_DIEPINT0_BNAIntr_Msk \ - (0x200UL) /*!< USB0_EP0 DIEPINT0: BNAIntr (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_EP_DIEPTSIZ0 ----------------------------- */ -#define USB_EP_DIEPTSIZ0_XferSize_Pos \ - (0UL) /*!< USB0_EP0 DIEPTSIZ0: XferSize (Bit 0) */ -#define USB_EP_DIEPTSIZ0_XferSize_Msk \ - (0x7fUL) /*!< USB0_EP0 DIEPTSIZ0: XferSize (Bitfield-Mask: 0x7f) */ -#define USB_EP_DIEPTSIZ0_PktCnt_Pos \ - (19UL) /*!< USB0_EP0 DIEPTSIZ0: PktCnt (Bit 19) */ -#define USB_EP_DIEPTSIZ0_PktCnt_Msk \ - (0x180000UL) /*!< USB0_EP0 DIEPTSIZ0: PktCnt (Bitfield-Mask: 0x03) */ - -/* ------------------------------ USB_EP_DIEPDMA0 ----------------------------- */ -#define USB_EP_DIEPDMA0_DMAAddr_Pos \ - (0UL) /*!< USB0_EP0 DIEPDMA0: DMAAddr (Bit 0) */ -#define USB_EP_DIEPDMA0_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB0_EP0 DIEPDMA0: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ USB_EP_DTXFSTS0 ----------------------------- */ -#define USB_EP_DTXFSTS0_INEPTxFSpcAvail_Pos \ - (0UL) /*!< USB0_EP0 DTXFSTS0: INEPTxFSpcAvail (Bit 0) */ -#define USB_EP_DTXFSTS0_INEPTxFSpcAvail_Msk \ - (0xffffUL) /*!< USB0_EP0 DTXFSTS0: INEPTxFSpcAvail (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- USB_EP_DIEPDMAB0 ----------------------------- */ -#define USB_EP_DIEPDMAB0_DMABufferAddr_Pos \ - (0UL) /*!< USB0_EP0 DIEPDMAB0: DMABufferAddr (Bit 0) */ -#define USB_EP_DIEPDMAB0_DMABufferAddr_Msk \ - (0xffffffffUL) /*!< USB0_EP0 DIEPDMAB0: DMABufferAddr (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ USB_EP_DOEPCTL0 ----------------------------- */ -#define USB_EP_DOEPCTL0_MPS_Pos \ - (0UL) /*!< USB0_EP0 DOEPCTL0: MPS (Bit 0) */ -#define USB_EP_DOEPCTL0_MPS_Msk \ - (0x3UL) /*!< USB0_EP0 DOEPCTL0: MPS (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPCTL0_USBActEP_Pos \ - (15UL) /*!< USB0_EP0 DOEPCTL0: USBActEP (Bit 15) */ -#define USB_EP_DOEPCTL0_USBActEP_Msk \ - (0x8000UL) /*!< USB0_EP0 DOEPCTL0: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_NAKSts_Pos \ - (17UL) /*!< USB0_EP0 DOEPCTL0: NAKSts (Bit 17) */ -#define USB_EP_DOEPCTL0_NAKSts_Msk \ - (0x20000UL) /*!< USB0_EP0 DOEPCTL0: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_EPType_Pos \ - (18UL) /*!< USB0_EP0 DOEPCTL0: EPType (Bit 18) */ -#define USB_EP_DOEPCTL0_EPType_Msk \ - (0xc0000UL) /*!< USB0_EP0 DOEPCTL0: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPCTL0_Snp_Pos \ - (20UL) /*!< USB0_EP0 DOEPCTL0: Snp (Bit 20) */ -#define USB_EP_DOEPCTL0_Snp_Msk \ - (0x100000UL) /*!< USB0_EP0 DOEPCTL0: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_Stall_Pos \ - (21UL) /*!< USB0_EP0 DOEPCTL0: Stall (Bit 21) */ -#define USB_EP_DOEPCTL0_Stall_Msk \ - (0x200000UL) /*!< USB0_EP0 DOEPCTL0: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_CNAK_Pos \ - (26UL) /*!< USB0_EP0 DOEPCTL0: CNAK (Bit 26) */ -#define USB_EP_DOEPCTL0_CNAK_Msk \ - (0x4000000UL) /*!< USB0_EP0 DOEPCTL0: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_SNAK_Pos \ - (27UL) /*!< USB0_EP0 DOEPCTL0: SNAK (Bit 27) */ -#define USB_EP_DOEPCTL0_SNAK_Msk \ - (0x8000000UL) /*!< USB0_EP0 DOEPCTL0: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_EPDis_Pos \ - (30UL) /*!< USB0_EP0 DOEPCTL0: EPDis (Bit 30) */ -#define USB_EP_DOEPCTL0_EPDis_Msk \ - (0x40000000UL) /*!< USB0_EP0 DOEPCTL0: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_EPEna_Pos \ - (31UL) /*!< USB0_EP0 DOEPCTL0: EPEna (Bit 31) */ -#define USB_EP_DOEPCTL0_EPEna_Msk \ - (0x80000000UL) /*!< USB0_EP0 DOEPCTL0: EPEna (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_EP_DOEPINT0 ----------------------------- */ -#define USB_EP_DOEPINT0_XferCompl_Pos \ - (0UL) /*!< USB0_EP0 DOEPINT0: XferCompl (Bit 0) */ -#define USB_EP_DOEPINT0_XferCompl_Msk \ - (0x1UL) /*!< USB0_EP0 DOEPINT0: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_EPDisbld_Pos \ - (1UL) /*!< USB0_EP0 DOEPINT0: EPDisbld (Bit 1) */ -#define USB_EP_DOEPINT0_EPDisbld_Msk \ - (0x2UL) /*!< USB0_EP0 DOEPINT0: EPDisbld (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_AHBErr_Pos \ - (2UL) /*!< USB0_EP0 DOEPINT0: AHBErr (Bit 2) */ -#define USB_EP_DOEPINT0_AHBErr_Msk \ - (0x4UL) /*!< USB0_EP0 DOEPINT0: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_SetUp_Pos \ - (3UL) /*!< USB0_EP0 DOEPINT0: SetUp (Bit 3) */ -#define USB_EP_DOEPINT0_SetUp_Msk \ - (0x8UL) /*!< USB0_EP0 DOEPINT0: SetUp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_OUTTknEPdis_Pos \ - (4UL) /*!< USB0_EP0 DOEPINT0: OUTTknEPdis (Bit 4) */ -#define USB_EP_DOEPINT0_OUTTknEPdis_Msk \ - (0x10UL) /*!< USB0_EP0 DOEPINT0: OUTTknEPdis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_StsPhseRcvd_Pos \ - (5UL) /*!< USB0_EP0 DOEPINT0: StsPhseRcvd (Bit 5) */ -#define USB_EP_DOEPINT0_StsPhseRcvd_Msk \ - (0x20UL) /*!< USB0_EP0 DOEPINT0: StsPhseRcvd (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_Back2BackSETup_Pos \ - (6UL) /*!< USB0_EP0 DOEPINT0: Back2BackSETup (Bit 6) */ -#define USB_EP_DOEPINT0_Back2BackSETup_Msk \ - (0x40UL) /*!< USB0_EP0 DOEPINT0: Back2BackSETup (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_BNAIntr_Pos \ - (9UL) /*!< USB0_EP0 DOEPINT0: BNAIntr (Bit 9) */ -#define USB_EP_DOEPINT0_BNAIntr_Msk \ - (0x200UL) /*!< USB0_EP0 DOEPINT0: BNAIntr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_PktDrpSts_Pos \ - (11UL) /*!< USB0_EP0 DOEPINT0: PktDrpSts (Bit 11) */ -#define USB_EP_DOEPINT0_PktDrpSts_Msk \ - (0x800UL) /*!< USB0_EP0 DOEPINT0: PktDrpSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_BbleErrIntrpt_Pos \ - (12UL) /*!< USB0_EP0 DOEPINT0: BbleErrIntrpt (Bit 12) */ -#define USB_EP_DOEPINT0_BbleErrIntrpt_Msk \ - (0x1000UL) /*!< USB0_EP0 DOEPINT0: BbleErrIntrpt (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_NAKIntrpt_Pos \ - (13UL) /*!< USB0_EP0 DOEPINT0: NAKIntrpt (Bit 13) */ -#define USB_EP_DOEPINT0_NAKIntrpt_Msk \ - (0x2000UL) /*!< USB0_EP0 DOEPINT0: NAKIntrpt (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_NYETIntrpt_Pos \ - (14UL) /*!< USB0_EP0 DOEPINT0: NYETIntrpt (Bit 14) */ -#define USB_EP_DOEPINT0_NYETIntrpt_Msk \ - (0x4000UL) /*!< USB0_EP0 DOEPINT0: NYETIntrpt (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_EP_DOEPTSIZ0 ----------------------------- */ -#define USB_EP_DOEPTSIZ0_XferSize_Pos \ - (0UL) /*!< USB0_EP0 DOEPTSIZ0: XferSize (Bit 0) */ -#define USB_EP_DOEPTSIZ0_XferSize_Msk \ - (0x7fUL) /*!< USB0_EP0 DOEPTSIZ0: XferSize (Bitfield-Mask: 0x7f) */ -#define USB_EP_DOEPTSIZ0_PktCnt_Pos \ - (19UL) /*!< USB0_EP0 DOEPTSIZ0: PktCnt (Bit 19) */ -#define USB_EP_DOEPTSIZ0_PktCnt_Msk \ - (0x180000UL) /*!< USB0_EP0 DOEPTSIZ0: PktCnt (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPTSIZ0_SUPCnt_Pos \ - (29UL) /*!< USB0_EP0 DOEPTSIZ0: SUPCnt (Bit 29) */ -#define USB_EP_DOEPTSIZ0_SUPCnt_Msk \ - (0x60000000UL) /*!< USB0_EP0 DOEPTSIZ0: SUPCnt (Bitfield-Mask: 0x03) */ - -/* ------------------------------ USB_EP_DOEPDMA0 ----------------------------- */ -#define USB_EP_DOEPDMA0_DMAAddr_Pos \ - (0UL) /*!< USB0_EP0 DOEPDMA0: DMAAddr (Bit 0) */ -#define USB_EP_DOEPDMA0_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB0_EP0 DOEPDMA0: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- USB_EP_DOEPDMAB0 ----------------------------- */ -#define USB_EP_DOEPDMAB0_DMABufferAddr_Pos \ - (0UL) /*!< USB0_EP0 DOEPDMAB0: DMABufferAddr (Bit 0) */ -#define USB_EP_DOEPDMAB0_DMABufferAddr_Msk \ - (0xffffffffUL) /*!< USB0_EP0 DOEPDMAB0: DMABufferAddr (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'USB_EP' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------- USB_EP_DIEPCTL_ISOCONT --------------------------- */ -#define USB_EP_DIEPCTL_ISOCONT_MPS_Pos \ - (0UL) /*!< USB_EP DIEPCTL_ISOCONT: MPS (Bit 0) */ -#define USB_EP_DIEPCTL_ISOCONT_MPS_Msk \ - (0x7ffUL) /*!< USB_EP DIEPCTL_ISOCONT: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_EP_DIEPCTL_ISOCONT_USBActEP_Pos \ - (15UL) /*!< USB_EP DIEPCTL_ISOCONT: USBActEP (Bit 15) */ -#define USB_EP_DIEPCTL_ISOCONT_USBActEP_Msk \ - (0x8000UL) /*!< USB_EP DIEPCTL_ISOCONT: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_EO_FrNum_Pos \ - (16UL) /*!< USB_EP DIEPCTL_ISOCONT: EO_FrNum (Bit 16) */ -#define USB_EP_DIEPCTL_ISOCONT_EO_FrNum_Msk \ - (0x10000UL) /*!< USB_EP DIEPCTL_ISOCONT: EO_FrNum (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_NAKSts_Pos \ - (17UL) /*!< USB_EP DIEPCTL_ISOCONT: NAKSts (Bit 17) */ -#define USB_EP_DIEPCTL_ISOCONT_NAKSts_Msk \ - (0x20000UL) /*!< USB_EP DIEPCTL_ISOCONT: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_EPType_Pos \ - (18UL) /*!< USB_EP DIEPCTL_ISOCONT: EPType (Bit 18) */ -#define USB_EP_DIEPCTL_ISOCONT_EPType_Msk \ - (0xc0000UL) /*!< USB_EP DIEPCTL_ISOCONT: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DIEPCTL_ISOCONT_Snp_Pos \ - (20UL) /*!< USB_EP DIEPCTL_ISOCONT: Snp (Bit 20) */ -#define USB_EP_DIEPCTL_ISOCONT_Snp_Msk \ - (0x100000UL) /*!< USB_EP DIEPCTL_ISOCONT: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_Stall_Pos \ - (21UL) /*!< USB_EP DIEPCTL_ISOCONT: Stall (Bit 21) */ -#define USB_EP_DIEPCTL_ISOCONT_Stall_Msk \ - (0x200000UL) /*!< USB_EP DIEPCTL_ISOCONT: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_TxFNum_Pos \ - (22UL) /*!< USB_EP DIEPCTL_ISOCONT: TxFNum (Bit 22) */ -#define USB_EP_DIEPCTL_ISOCONT_TxFNum_Msk \ - (0x3c00000UL) /*!< USB_EP DIEPCTL_ISOCONT: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DIEPCTL_ISOCONT_CNAK_Pos \ - (26UL) /*!< USB_EP DIEPCTL_ISOCONT: CNAK (Bit 26) */ -#define USB_EP_DIEPCTL_ISOCONT_CNAK_Msk \ - (0x4000000UL) /*!< USB_EP DIEPCTL_ISOCONT: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_SNAK_Pos \ - (27UL) /*!< USB_EP DIEPCTL_ISOCONT: SNAK (Bit 27) */ -#define USB_EP_DIEPCTL_ISOCONT_SNAK_Msk \ - (0x8000000UL) /*!< USB_EP DIEPCTL_ISOCONT: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_SetEvenFr_Pos \ - (28UL) /*!< USB_EP DIEPCTL_ISOCONT: SetEvenFr (Bit 28) */ -#define USB_EP_DIEPCTL_ISOCONT_SetEvenFr_Msk \ - (0x10000000UL) /*!< USB_EP DIEPCTL_ISOCONT: SetEvenFr (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_SetOddFr_Pos \ - (29UL) /*!< USB_EP DIEPCTL_ISOCONT: SetOddFr (Bit 29) */ -#define USB_EP_DIEPCTL_ISOCONT_SetOddFr_Msk \ - (0x20000000UL) /*!< USB_EP DIEPCTL_ISOCONT: SetOddFr (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_EPDis_Pos \ - (30UL) /*!< USB_EP DIEPCTL_ISOCONT: EPDis (Bit 30) */ -#define USB_EP_DIEPCTL_ISOCONT_EPDis_Msk \ - (0x40000000UL) /*!< USB_EP DIEPCTL_ISOCONT: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_EPEna_Pos \ - (31UL) /*!< USB_EP DIEPCTL_ISOCONT: EPEna (Bit 31) */ -#define USB_EP_DIEPCTL_ISOCONT_EPEna_Msk \ - (0x80000000UL) /*!< USB_EP DIEPCTL_ISOCONT: EPEna (Bitfield-Mask: 0x01) */ - -/* --------------------------- USB_EP_DIEPCTL_INTBULK --------------------------- */ -#define USB_EP_DIEPCTL_INTBULK_MPS_Pos \ - (0UL) /*!< USB_EP DIEPCTL_INTBULK: MPS (Bit 0) */ -#define USB_EP_DIEPCTL_INTBULK_MPS_Msk \ - (0x7ffUL) /*!< USB_EP DIEPCTL_INTBULK: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_EP_DIEPCTL_INTBULK_USBActEP_Pos \ - (15UL) /*!< USB_EP DIEPCTL_INTBULK: USBActEP (Bit 15) */ -#define USB_EP_DIEPCTL_INTBULK_USBActEP_Msk \ - (0x8000UL) /*!< USB_EP DIEPCTL_INTBULK: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_DPID_Pos \ - (16UL) /*!< USB_EP DIEPCTL_INTBULK: DPID (Bit 16) */ -#define USB_EP_DIEPCTL_INTBULK_DPID_Msk \ - (0x10000UL) /*!< USB_EP DIEPCTL_INTBULK: DPID (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_NAKSts_Pos \ - (17UL) /*!< USB_EP DIEPCTL_INTBULK: NAKSts (Bit 17) */ -#define USB_EP_DIEPCTL_INTBULK_NAKSts_Msk \ - (0x20000UL) /*!< USB_EP DIEPCTL_INTBULK: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_EPType_Pos \ - (18UL) /*!< USB_EP DIEPCTL_INTBULK: EPType (Bit 18) */ -#define USB_EP_DIEPCTL_INTBULK_EPType_Msk \ - (0xc0000UL) /*!< USB_EP DIEPCTL_INTBULK: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DIEPCTL_INTBULK_Snp_Pos \ - (20UL) /*!< USB_EP DIEPCTL_INTBULK: Snp (Bit 20) */ -#define USB_EP_DIEPCTL_INTBULK_Snp_Msk \ - (0x100000UL) /*!< USB_EP DIEPCTL_INTBULK: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_Stall_Pos \ - (21UL) /*!< USB_EP DIEPCTL_INTBULK: Stall (Bit 21) */ -#define USB_EP_DIEPCTL_INTBULK_Stall_Msk \ - (0x200000UL) /*!< USB_EP DIEPCTL_INTBULK: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_TxFNum_Pos \ - (22UL) /*!< USB_EP DIEPCTL_INTBULK: TxFNum (Bit 22) */ -#define USB_EP_DIEPCTL_INTBULK_TxFNum_Msk \ - (0x3c00000UL) /*!< USB_EP DIEPCTL_INTBULK: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DIEPCTL_INTBULK_CNAK_Pos \ - (26UL) /*!< USB_EP DIEPCTL_INTBULK: CNAK (Bit 26) */ -#define USB_EP_DIEPCTL_INTBULK_CNAK_Msk \ - (0x4000000UL) /*!< USB_EP DIEPCTL_INTBULK: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_SNAK_Pos \ - (27UL) /*!< USB_EP DIEPCTL_INTBULK: SNAK (Bit 27) */ -#define USB_EP_DIEPCTL_INTBULK_SNAK_Msk \ - (0x8000000UL) /*!< USB_EP DIEPCTL_INTBULK: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_SetD0PID_Pos \ - (28UL) /*!< USB_EP DIEPCTL_INTBULK: SetD0PID (Bit 28) */ -#define USB_EP_DIEPCTL_INTBULK_SetD0PID_Msk \ - (0x10000000UL) /*!< USB_EP DIEPCTL_INTBULK: SetD0PID (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_SetD1PID_Pos \ - (29UL) /*!< USB_EP DIEPCTL_INTBULK: SetD1PID (Bit 29) */ -#define USB_EP_DIEPCTL_INTBULK_SetD1PID_Msk \ - (0x20000000UL) /*!< USB_EP DIEPCTL_INTBULK: SetD1PID (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_EPDis_Pos \ - (30UL) /*!< USB_EP DIEPCTL_INTBULK: EPDis (Bit 30) */ -#define USB_EP_DIEPCTL_INTBULK_EPDis_Msk \ - (0x40000000UL) /*!< USB_EP DIEPCTL_INTBULK: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_EPEna_Pos \ - (31UL) /*!< USB_EP DIEPCTL_INTBULK: EPEna (Bit 31) */ -#define USB_EP_DIEPCTL_INTBULK_EPEna_Msk \ - (0x80000000UL) /*!< USB_EP DIEPCTL_INTBULK: EPEna (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_EP_DIEPINT ------------------------------- */ -#define USB_EP_DIEPINT_XferCompl_Pos \ - (0UL) /*!< USB_EP DIEPINT: XferCompl (Bit 0) */ -#define USB_EP_DIEPINT_XferCompl_Msk \ - (0x1UL) /*!< USB_EP DIEPINT: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_EPDisbld_Pos \ - (1UL) /*!< USB_EP DIEPINT: EPDisbld (Bit 1) */ -#define USB_EP_DIEPINT_EPDisbld_Msk \ - (0x2UL) /*!< USB_EP DIEPINT: EPDisbld (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_AHBErr_Pos \ - (2UL) /*!< USB_EP DIEPINT: AHBErr (Bit 2) */ -#define USB_EP_DIEPINT_AHBErr_Msk \ - (0x4UL) /*!< USB_EP DIEPINT: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_TimeOUT_Pos \ - (3UL) /*!< USB_EP DIEPINT: TimeOUT (Bit 3) */ -#define USB_EP_DIEPINT_TimeOUT_Msk \ - (0x8UL) /*!< USB_EP DIEPINT: TimeOUT (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_INTknTXFEmp_Pos \ - (4UL) /*!< USB_EP DIEPINT: INTknTXFEmp (Bit 4) */ -#define USB_EP_DIEPINT_INTknTXFEmp_Msk \ - (0x10UL) /*!< USB_EP DIEPINT: INTknTXFEmp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_INEPNakEff_Pos \ - (6UL) /*!< USB_EP DIEPINT: INEPNakEff (Bit 6) */ -#define USB_EP_DIEPINT_INEPNakEff_Msk \ - (0x40UL) /*!< USB_EP DIEPINT: INEPNakEff (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_TxFEmp_Pos \ - (7UL) /*!< USB_EP DIEPINT: TxFEmp (Bit 7) */ -#define USB_EP_DIEPINT_TxFEmp_Msk \ - (0x80UL) /*!< USB_EP DIEPINT: TxFEmp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_BNAIntr_Pos \ - (9UL) /*!< USB_EP DIEPINT: BNAIntr (Bit 9) */ -#define USB_EP_DIEPINT_BNAIntr_Msk \ - (0x200UL) /*!< USB_EP DIEPINT: BNAIntr (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_EP_DIEPTSIZ ------------------------------ */ -#define USB_EP_DIEPTSIZ_XferSize_Pos \ - (0UL) /*!< USB_EP DIEPTSIZ: XferSize (Bit 0) */ -#define USB_EP_DIEPTSIZ_XferSize_Msk \ - (0x7ffffUL) /*!< USB_EP DIEPTSIZ: XferSize (Bitfield-Mask: 0x7ffff) */ -#define USB_EP_DIEPTSIZ_PktCnt_Pos \ - (19UL) /*!< USB_EP DIEPTSIZ: PktCnt (Bit 19) */ -#define USB_EP_DIEPTSIZ_PktCnt_Msk \ - (0x1ff80000UL) /*!< USB_EP DIEPTSIZ: PktCnt (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- USB_EP_DIEPDMA ------------------------------- */ -#define USB_EP_DIEPDMA_DMAAddr_Pos \ - (0UL) /*!< USB_EP DIEPDMA: DMAAddr (Bit 0) */ -#define USB_EP_DIEPDMA_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB_EP DIEPDMA: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- USB_EP_DTXFSTS ------------------------------- */ -#define USB_EP_DTXFSTS_INEPTxFSpcAvail_Pos \ - (0UL) /*!< USB_EP DTXFSTS: INEPTxFSpcAvail (Bit 0) */ -#define USB_EP_DTXFSTS_INEPTxFSpcAvail_Msk \ - (0xffffUL) /*!< USB_EP DTXFSTS: INEPTxFSpcAvail (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- USB_EP_DIEPDMAB ------------------------------ */ -#define USB_EP_DIEPDMAB_DMABufferAddr_Pos \ - (0UL) /*!< USB_EP DIEPDMAB: DMABufferAddr (Bit 0) */ -#define USB_EP_DIEPDMAB_DMABufferAddr_Msk \ - (0xffffffffUL) /*!< USB_EP DIEPDMAB: DMABufferAddr (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- USB_EP_DOEPCTL_ISOCONT --------------------------- */ -#define USB_EP_DOEPCTL_ISOCONT_MPS_Pos \ - (0UL) /*!< USB_EP DOEPCTL_ISOCONT: MPS (Bit 0) */ -#define USB_EP_DOEPCTL_ISOCONT_MPS_Msk \ - (0x7ffUL) /*!< USB_EP DOEPCTL_ISOCONT: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_EP_DOEPCTL_ISOCONT_USBActEP_Pos \ - (15UL) /*!< USB_EP DOEPCTL_ISOCONT: USBActEP (Bit 15) */ -#define USB_EP_DOEPCTL_ISOCONT_USBActEP_Msk \ - (0x8000UL) /*!< USB_EP DOEPCTL_ISOCONT: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_EO_FrNum_Pos \ - (16UL) /*!< USB_EP DOEPCTL_ISOCONT: EO_FrNum (Bit 16) */ -#define USB_EP_DOEPCTL_ISOCONT_EO_FrNum_Msk \ - (0x10000UL) /*!< USB_EP DOEPCTL_ISOCONT: EO_FrNum (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_NAKSts_Pos \ - (17UL) /*!< USB_EP DOEPCTL_ISOCONT: NAKSts (Bit 17) */ -#define USB_EP_DOEPCTL_ISOCONT_NAKSts_Msk \ - (0x20000UL) /*!< USB_EP DOEPCTL_ISOCONT: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_EPType_Pos \ - (18UL) /*!< USB_EP DOEPCTL_ISOCONT: EPType (Bit 18) */ -#define USB_EP_DOEPCTL_ISOCONT_EPType_Msk \ - (0xc0000UL) /*!< USB_EP DOEPCTL_ISOCONT: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPCTL_ISOCONT_Snp_Pos \ - (20UL) /*!< USB_EP DOEPCTL_ISOCONT: Snp (Bit 20) */ -#define USB_EP_DOEPCTL_ISOCONT_Snp_Msk \ - (0x100000UL) /*!< USB_EP DOEPCTL_ISOCONT: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_Stall_Pos \ - (21UL) /*!< USB_EP DOEPCTL_ISOCONT: Stall (Bit 21) */ -#define USB_EP_DOEPCTL_ISOCONT_Stall_Msk \ - (0x200000UL) /*!< USB_EP DOEPCTL_ISOCONT: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_TxFNum_Pos \ - (22UL) /*!< USB_EP DOEPCTL_ISOCONT: TxFNum (Bit 22) */ -#define USB_EP_DOEPCTL_ISOCONT_TxFNum_Msk \ - (0x3c00000UL) /*!< USB_EP DOEPCTL_ISOCONT: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DOEPCTL_ISOCONT_CNAK_Pos \ - (26UL) /*!< USB_EP DOEPCTL_ISOCONT: CNAK (Bit 26) */ -#define USB_EP_DOEPCTL_ISOCONT_CNAK_Msk \ - (0x4000000UL) /*!< USB_EP DOEPCTL_ISOCONT: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_SNAK_Pos \ - (27UL) /*!< USB_EP DOEPCTL_ISOCONT: SNAK (Bit 27) */ -#define USB_EP_DOEPCTL_ISOCONT_SNAK_Msk \ - (0x8000000UL) /*!< USB_EP DOEPCTL_ISOCONT: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_SetEvenFr_Pos \ - (28UL) /*!< USB_EP DOEPCTL_ISOCONT: SetEvenFr (Bit 28) */ -#define USB_EP_DOEPCTL_ISOCONT_SetEvenFr_Msk \ - (0x10000000UL) /*!< USB_EP DOEPCTL_ISOCONT: SetEvenFr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_SetOddFr_Pos \ - (29UL) /*!< USB_EP DOEPCTL_ISOCONT: SetOddFr (Bit 29) */ -#define USB_EP_DOEPCTL_ISOCONT_SetOddFr_Msk \ - (0x20000000UL) /*!< USB_EP DOEPCTL_ISOCONT: SetOddFr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_EPDis_Pos \ - (30UL) /*!< USB_EP DOEPCTL_ISOCONT: EPDis (Bit 30) */ -#define USB_EP_DOEPCTL_ISOCONT_EPDis_Msk \ - (0x40000000UL) /*!< USB_EP DOEPCTL_ISOCONT: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_EPEna_Pos \ - (31UL) /*!< USB_EP DOEPCTL_ISOCONT: EPEna (Bit 31) */ -#define USB_EP_DOEPCTL_ISOCONT_EPEna_Msk \ - (0x80000000UL) /*!< USB_EP DOEPCTL_ISOCONT: EPEna (Bitfield-Mask: 0x01) */ - -/* --------------------------- USB_EP_DOEPCTL_INTBULK --------------------------- */ -#define USB_EP_DOEPCTL_INTBULK_MPS_Pos \ - (0UL) /*!< USB_EP DOEPCTL_INTBULK: MPS (Bit 0) */ -#define USB_EP_DOEPCTL_INTBULK_MPS_Msk \ - (0x7ffUL) /*!< USB_EP DOEPCTL_INTBULK: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_EP_DOEPCTL_INTBULK_USBActEP_Pos \ - (15UL) /*!< USB_EP DOEPCTL_INTBULK: USBActEP (Bit 15) */ -#define USB_EP_DOEPCTL_INTBULK_USBActEP_Msk \ - (0x8000UL) /*!< USB_EP DOEPCTL_INTBULK: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_DPID_Pos \ - (16UL) /*!< USB_EP DOEPCTL_INTBULK: DPID (Bit 16) */ -#define USB_EP_DOEPCTL_INTBULK_DPID_Msk \ - (0x10000UL) /*!< USB_EP DOEPCTL_INTBULK: DPID (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_NAKSts_Pos \ - (17UL) /*!< USB_EP DOEPCTL_INTBULK: NAKSts (Bit 17) */ -#define USB_EP_DOEPCTL_INTBULK_NAKSts_Msk \ - (0x20000UL) /*!< USB_EP DOEPCTL_INTBULK: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_EPType_Pos \ - (18UL) /*!< USB_EP DOEPCTL_INTBULK: EPType (Bit 18) */ -#define USB_EP_DOEPCTL_INTBULK_EPType_Msk \ - (0xc0000UL) /*!< USB_EP DOEPCTL_INTBULK: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPCTL_INTBULK_Snp_Pos \ - (20UL) /*!< USB_EP DOEPCTL_INTBULK: Snp (Bit 20) */ -#define USB_EP_DOEPCTL_INTBULK_Snp_Msk \ - (0x100000UL) /*!< USB_EP DOEPCTL_INTBULK: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_Stall_Pos \ - (21UL) /*!< USB_EP DOEPCTL_INTBULK: Stall (Bit 21) */ -#define USB_EP_DOEPCTL_INTBULK_Stall_Msk \ - (0x200000UL) /*!< USB_EP DOEPCTL_INTBULK: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_TxFNum_Pos \ - (22UL) /*!< USB_EP DOEPCTL_INTBULK: TxFNum (Bit 22) */ -#define USB_EP_DOEPCTL_INTBULK_TxFNum_Msk \ - (0x3c00000UL) /*!< USB_EP DOEPCTL_INTBULK: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DOEPCTL_INTBULK_CNAK_Pos \ - (26UL) /*!< USB_EP DOEPCTL_INTBULK: CNAK (Bit 26) */ -#define USB_EP_DOEPCTL_INTBULK_CNAK_Msk \ - (0x4000000UL) /*!< USB_EP DOEPCTL_INTBULK: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_SNAK_Pos \ - (27UL) /*!< USB_EP DOEPCTL_INTBULK: SNAK (Bit 27) */ -#define USB_EP_DOEPCTL_INTBULK_SNAK_Msk \ - (0x8000000UL) /*!< USB_EP DOEPCTL_INTBULK: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_SetD0PID_Pos \ - (28UL) /*!< USB_EP DOEPCTL_INTBULK: SetD0PID (Bit 28) */ -#define USB_EP_DOEPCTL_INTBULK_SetD0PID_Msk \ - (0x10000000UL) /*!< USB_EP DOEPCTL_INTBULK: SetD0PID (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_SetD1PID_Pos \ - (29UL) /*!< USB_EP DOEPCTL_INTBULK: SetD1PID (Bit 29) */ -#define USB_EP_DOEPCTL_INTBULK_SetD1PID_Msk \ - (0x20000000UL) /*!< USB_EP DOEPCTL_INTBULK: SetD1PID (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_EPDis_Pos \ - (30UL) /*!< USB_EP DOEPCTL_INTBULK: EPDis (Bit 30) */ -#define USB_EP_DOEPCTL_INTBULK_EPDis_Msk \ - (0x40000000UL) /*!< USB_EP DOEPCTL_INTBULK: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_EPEna_Pos \ - (31UL) /*!< USB_EP DOEPCTL_INTBULK: EPEna (Bit 31) */ -#define USB_EP_DOEPCTL_INTBULK_EPEna_Msk \ - (0x80000000UL) /*!< USB_EP DOEPCTL_INTBULK: EPEna (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_EP_DOEPINT ------------------------------- */ -#define USB_EP_DOEPINT_XferCompl_Pos \ - (0UL) /*!< USB_EP DOEPINT: XferCompl (Bit 0) */ -#define USB_EP_DOEPINT_XferCompl_Msk \ - (0x1UL) /*!< USB_EP DOEPINT: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_EPDisbld_Pos \ - (1UL) /*!< USB_EP DOEPINT: EPDisbld (Bit 1) */ -#define USB_EP_DOEPINT_EPDisbld_Msk \ - (0x2UL) /*!< USB_EP DOEPINT: EPDisbld (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_AHBErr_Pos \ - (2UL) /*!< USB_EP DOEPINT: AHBErr (Bit 2) */ -#define USB_EP_DOEPINT_AHBErr_Msk \ - (0x4UL) /*!< USB_EP DOEPINT: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_SetUp_Pos \ - (3UL) /*!< USB_EP DOEPINT: SetUp (Bit 3) */ -#define USB_EP_DOEPINT_SetUp_Msk \ - (0x8UL) /*!< USB_EP DOEPINT: SetUp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_OUTTknEPdis_Pos \ - (4UL) /*!< USB_EP DOEPINT: OUTTknEPdis (Bit 4) */ -#define USB_EP_DOEPINT_OUTTknEPdis_Msk \ - (0x10UL) /*!< USB_EP DOEPINT: OUTTknEPdis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_StsPhseRcvd_Pos \ - (5UL) /*!< USB_EP DOEPINT: StsPhseRcvd (Bit 5) */ -#define USB_EP_DOEPINT_StsPhseRcvd_Msk \ - (0x20UL) /*!< USB_EP DOEPINT: StsPhseRcvd (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_Back2BackSETup_Pos \ - (6UL) /*!< USB_EP DOEPINT: Back2BackSETup (Bit 6) */ -#define USB_EP_DOEPINT_Back2BackSETup_Msk \ - (0x40UL) /*!< USB_EP DOEPINT: Back2BackSETup (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_BNAIntr_Pos \ - (9UL) /*!< USB_EP DOEPINT: BNAIntr (Bit 9) */ -#define USB_EP_DOEPINT_BNAIntr_Msk \ - (0x200UL) /*!< USB_EP DOEPINT: BNAIntr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_PktDrpSts_Pos \ - (11UL) /*!< USB_EP DOEPINT: PktDrpSts (Bit 11) */ -#define USB_EP_DOEPINT_PktDrpSts_Msk \ - (0x800UL) /*!< USB_EP DOEPINT: PktDrpSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_BbleErrIntrpt_Pos \ - (12UL) /*!< USB_EP DOEPINT: BbleErrIntrpt (Bit 12) */ -#define USB_EP_DOEPINT_BbleErrIntrpt_Msk \ - (0x1000UL) /*!< USB_EP DOEPINT: BbleErrIntrpt (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_NAKIntrpt_Pos \ - (13UL) /*!< USB_EP DOEPINT: NAKIntrpt (Bit 13) */ -#define USB_EP_DOEPINT_NAKIntrpt_Msk \ - (0x2000UL) /*!< USB_EP DOEPINT: NAKIntrpt (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_NYETIntrpt_Pos \ - (14UL) /*!< USB_EP DOEPINT: NYETIntrpt (Bit 14) */ -#define USB_EP_DOEPINT_NYETIntrpt_Msk \ - (0x4000UL) /*!< USB_EP DOEPINT: NYETIntrpt (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_EP_DOEPTSIZ_ISO ---------------------------- */ -#define USB_EP_DOEPTSIZ_ISO_XferSize_Pos \ - (0UL) /*!< USB_EP DOEPTSIZ_ISO: XferSize (Bit 0) */ -#define USB_EP_DOEPTSIZ_ISO_XferSize_Msk \ - (0x7ffffUL) /*!< USB_EP DOEPTSIZ_ISO: XferSize (Bitfield-Mask: 0x7ffff) */ -#define USB_EP_DOEPTSIZ_ISO_PktCnt_Pos \ - (19UL) /*!< USB_EP DOEPTSIZ_ISO: PktCnt (Bit 19) */ -#define USB_EP_DOEPTSIZ_ISO_PktCnt_Msk \ - (0x1ff80000UL) /*!< USB_EP DOEPTSIZ_ISO: PktCnt (Bitfield-Mask: 0x3ff) */ -#define USB_EP_DOEPTSIZ_ISO_RxDPID_Pos \ - (29UL) /*!< USB_EP DOEPTSIZ_ISO: RxDPID (Bit 29) */ -#define USB_EP_DOEPTSIZ_ISO_RxDPID_Msk \ - (0x60000000UL) /*!< USB_EP DOEPTSIZ_ISO: RxDPID (Bitfield-Mask: 0x03) */ - -/* --------------------------- USB_EP_DOEPTSIZ_CONTROL -------------------------- */ -#define USB_EP_DOEPTSIZ_CONTROL_XferSize_Pos \ - (0UL) /*!< USB_EP DOEPTSIZ_CONTROL: XferSize (Bit 0) */ -#define USB_EP_DOEPTSIZ_CONTROL_XferSize_Msk \ - (0x7ffffUL) /*!< USB_EP DOEPTSIZ_CONTROL: XferSize (Bitfield-Mask: 0x7ffff) */ -#define USB_EP_DOEPTSIZ_CONTROL_PktCnt_Pos \ - (19UL) /*!< USB_EP DOEPTSIZ_CONTROL: PktCnt (Bit 19) */ -#define USB_EP_DOEPTSIZ_CONTROL_PktCnt_Msk \ - (0x1ff80000UL) /*!< USB_EP DOEPTSIZ_CONTROL: PktCnt (Bitfield-Mask: 0x3ff) */ -#define USB_EP_DOEPTSIZ_CONTROL_SUPCnt_Pos \ - (29UL) /*!< USB_EP DOEPTSIZ_CONTROL: SUPCnt (Bit 29) */ -#define USB_EP_DOEPTSIZ_CONTROL_SUPCnt_Msk \ - (0x60000000UL) /*!< USB_EP DOEPTSIZ_CONTROL: SUPCnt (Bitfield-Mask: 0x03) */ - -/* ------------------------------- USB_EP_DOEPDMA ------------------------------- */ -#define USB_EP_DOEPDMA_DMAAddr_Pos \ - (0UL) /*!< USB_EP DOEPDMA: DMAAddr (Bit 0) */ -#define USB_EP_DOEPDMA_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB_EP DOEPDMA: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- USB_EP_DOEPDMAB ------------------------------ */ -#define USB_EP_DOEPDMAB_DMABufferAddr_Pos \ - (0UL) /*!< USB_EP DOEPDMAB: DMABufferAddr (Bit 0) */ -#define USB_EP_DOEPDMAB_DMABufferAddr_Msk \ - (0xffffffffUL) /*!< USB_EP DOEPDMAB: DMABufferAddr (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'USIC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- USIC_ID ---------------------------------- */ -#define USIC_ID_MOD_REV_Pos \ - (0UL) /*!< USIC ID: MOD_REV (Bit 0) */ -#define USIC_ID_MOD_REV_Msk \ - (0xffUL) /*!< USIC ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define USIC_ID_MOD_TYPE_Pos \ - (8UL) /*!< USIC ID: MOD_TYPE (Bit 8) */ -#define USIC_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< USIC ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define USIC_ID_MOD_NUMBER_Pos \ - (16UL) /*!< USIC ID: MOD_NUMBER (Bit 16) */ -#define USIC_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< USIC ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ Group 'USIC_CH' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- USIC_CH_CCFG -------------------------------- */ -#define USIC_CH_CCFG_SSC_Pos \ - (0UL) /*!< USIC_CH CCFG: SSC (Bit 0) */ -#define USIC_CH_CCFG_SSC_Msk \ - (0x1UL) /*!< USIC_CH CCFG: SSC (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_ASC_Pos \ - (1UL) /*!< USIC_CH CCFG: ASC (Bit 1) */ -#define USIC_CH_CCFG_ASC_Msk \ - (0x2UL) /*!< USIC_CH CCFG: ASC (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_IIC_Pos \ - (2UL) /*!< USIC_CH CCFG: IIC (Bit 2) */ -#define USIC_CH_CCFG_IIC_Msk \ - (0x4UL) /*!< USIC_CH CCFG: IIC (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_IIS_Pos \ - (3UL) /*!< USIC_CH CCFG: IIS (Bit 3) */ -#define USIC_CH_CCFG_IIS_Msk \ - (0x8UL) /*!< USIC_CH CCFG: IIS (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_RB_Pos \ - (6UL) /*!< USIC_CH CCFG: RB (Bit 6) */ -#define USIC_CH_CCFG_RB_Msk \ - (0x40UL) /*!< USIC_CH CCFG: RB (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_TB_Pos \ - (7UL) /*!< USIC_CH CCFG: TB (Bit 7) */ -#define USIC_CH_CCFG_TB_Msk \ - (0x80UL) /*!< USIC_CH CCFG: TB (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_KSCFG ------------------------------- */ -#define USIC_CH_KSCFG_MODEN_Pos \ - (0UL) /*!< USIC_CH KSCFG: MODEN (Bit 0) */ -#define USIC_CH_KSCFG_MODEN_Msk \ - (0x1UL) /*!< USIC_CH KSCFG: MODEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_KSCFG_BPMODEN_Pos \ - (1UL) /*!< USIC_CH KSCFG: BPMODEN (Bit 1) */ -#define USIC_CH_KSCFG_BPMODEN_Msk \ - (0x2UL) /*!< USIC_CH KSCFG: BPMODEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_KSCFG_NOMCFG_Pos \ - (4UL) /*!< USIC_CH KSCFG: NOMCFG (Bit 4) */ -#define USIC_CH_KSCFG_NOMCFG_Msk \ - (0x30UL) /*!< USIC_CH KSCFG: NOMCFG (Bitfield-Mask: 0x03) */ -#define USIC_CH_KSCFG_BPNOM_Pos \ - (7UL) /*!< USIC_CH KSCFG: BPNOM (Bit 7) */ -#define USIC_CH_KSCFG_BPNOM_Msk \ - (0x80UL) /*!< USIC_CH KSCFG: BPNOM (Bitfield-Mask: 0x01) */ -#define USIC_CH_KSCFG_SUMCFG_Pos \ - (8UL) /*!< USIC_CH KSCFG: SUMCFG (Bit 8) */ -#define USIC_CH_KSCFG_SUMCFG_Msk \ - (0x300UL) /*!< USIC_CH KSCFG: SUMCFG (Bitfield-Mask: 0x03) */ -#define USIC_CH_KSCFG_BPSUM_Pos \ - (11UL) /*!< USIC_CH KSCFG: BPSUM (Bit 11) */ -#define USIC_CH_KSCFG_BPSUM_Msk \ - (0x800UL) /*!< USIC_CH KSCFG: BPSUM (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USIC_CH_FDR -------------------------------- */ -#define USIC_CH_FDR_STEP_Pos \ - (0UL) /*!< USIC_CH FDR: STEP (Bit 0) */ -#define USIC_CH_FDR_STEP_Msk \ - (0x3ffUL) /*!< USIC_CH FDR: STEP (Bitfield-Mask: 0x3ff) */ -#define USIC_CH_FDR_DM_Pos \ - (14UL) /*!< USIC_CH FDR: DM (Bit 14) */ -#define USIC_CH_FDR_DM_Msk \ - (0xc000UL) /*!< USIC_CH FDR: DM (Bitfield-Mask: 0x03) */ -#define USIC_CH_FDR_RESULT_Pos \ - (16UL) /*!< USIC_CH FDR: RESULT (Bit 16) */ -#define USIC_CH_FDR_RESULT_Msk \ - (0x3ff0000UL) /*!< USIC_CH FDR: RESULT (Bitfield-Mask: 0x3ff) */ - -/* --------------------------------- USIC_CH_BRG -------------------------------- */ -#define USIC_CH_BRG_CLKSEL_Pos \ - (0UL) /*!< USIC_CH BRG: CLKSEL (Bit 0) */ -#define USIC_CH_BRG_CLKSEL_Msk \ - (0x3UL) /*!< USIC_CH BRG: CLKSEL (Bitfield-Mask: 0x03) */ -#define USIC_CH_BRG_TMEN_Pos \ - (3UL) /*!< USIC_CH BRG: TMEN (Bit 3) */ -#define USIC_CH_BRG_TMEN_Msk \ - (0x8UL) /*!< USIC_CH BRG: TMEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_BRG_PPPEN_Pos \ - (4UL) /*!< USIC_CH BRG: PPPEN (Bit 4) */ -#define USIC_CH_BRG_PPPEN_Msk \ - (0x10UL) /*!< USIC_CH BRG: PPPEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_BRG_CTQSEL_Pos \ - (6UL) /*!< USIC_CH BRG: CTQSEL (Bit 6) */ -#define USIC_CH_BRG_CTQSEL_Msk \ - (0xc0UL) /*!< USIC_CH BRG: CTQSEL (Bitfield-Mask: 0x03) */ -#define USIC_CH_BRG_PCTQ_Pos \ - (8UL) /*!< USIC_CH BRG: PCTQ (Bit 8) */ -#define USIC_CH_BRG_PCTQ_Msk \ - (0x300UL) /*!< USIC_CH BRG: PCTQ (Bitfield-Mask: 0x03) */ -#define USIC_CH_BRG_DCTQ_Pos \ - (10UL) /*!< USIC_CH BRG: DCTQ (Bit 10) */ -#define USIC_CH_BRG_DCTQ_Msk \ - (0x7c00UL) /*!< USIC_CH BRG: DCTQ (Bitfield-Mask: 0x1f) */ -#define USIC_CH_BRG_PDIV_Pos \ - (16UL) /*!< USIC_CH BRG: PDIV (Bit 16) */ -#define USIC_CH_BRG_PDIV_Msk \ - (0x3ff0000UL) /*!< USIC_CH BRG: PDIV (Bitfield-Mask: 0x3ff) */ -#define USIC_CH_BRG_SCLKOSEL_Pos \ - (28UL) /*!< USIC_CH BRG: SCLKOSEL (Bit 28) */ -#define USIC_CH_BRG_SCLKOSEL_Msk \ - (0x10000000UL) /*!< USIC_CH BRG: SCLKOSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_BRG_MCLKCFG_Pos \ - (29UL) /*!< USIC_CH BRG: MCLKCFG (Bit 29) */ -#define USIC_CH_BRG_MCLKCFG_Msk \ - (0x20000000UL) /*!< USIC_CH BRG: MCLKCFG (Bitfield-Mask: 0x01) */ -#define USIC_CH_BRG_SCLKCFG_Pos \ - (30UL) /*!< USIC_CH BRG: SCLKCFG (Bit 30) */ -#define USIC_CH_BRG_SCLKCFG_Msk \ - (0xc0000000UL) /*!< USIC_CH BRG: SCLKCFG (Bitfield-Mask: 0x03) */ - -/* -------------------------------- USIC_CH_INPR -------------------------------- */ -#define USIC_CH_INPR_TSINP_Pos \ - (0UL) /*!< USIC_CH INPR: TSINP (Bit 0) */ -#define USIC_CH_INPR_TSINP_Msk \ - (0x7UL) /*!< USIC_CH INPR: TSINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_INPR_TBINP_Pos \ - (4UL) /*!< USIC_CH INPR: TBINP (Bit 4) */ -#define USIC_CH_INPR_TBINP_Msk \ - (0x70UL) /*!< USIC_CH INPR: TBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_INPR_RINP_Pos \ - (8UL) /*!< USIC_CH INPR: RINP (Bit 8) */ -#define USIC_CH_INPR_RINP_Msk \ - (0x700UL) /*!< USIC_CH INPR: RINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_INPR_AINP_Pos \ - (12UL) /*!< USIC_CH INPR: AINP (Bit 12) */ -#define USIC_CH_INPR_AINP_Msk \ - (0x7000UL) /*!< USIC_CH INPR: AINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_INPR_PINP_Pos \ - (16UL) /*!< USIC_CH INPR: PINP (Bit 16) */ -#define USIC_CH_INPR_PINP_Msk \ - (0x70000UL) /*!< USIC_CH INPR: PINP (Bitfield-Mask: 0x07) */ - -/* -------------------------------- USIC_CH_DX0CR ------------------------------- */ -#define USIC_CH_DX0CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX0CR: DSEL (Bit 0) */ -#define USIC_CH_DX0CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX0CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX0CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX0CR: INSW (Bit 4) */ -#define USIC_CH_DX0CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX0CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX0CR: DFEN (Bit 5) */ -#define USIC_CH_DX0CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX0CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX0CR: DSEN (Bit 6) */ -#define USIC_CH_DX0CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX0CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX0CR: DPOL (Bit 8) */ -#define USIC_CH_DX0CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX0CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX0CR: SFSEL (Bit 9) */ -#define USIC_CH_DX0CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX0CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_CM_Pos \ - (10UL) /*!< USIC_CH DX0CR: CM (Bit 10) */ -#define USIC_CH_DX0CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX0CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX0CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX0CR: DXS (Bit 15) */ -#define USIC_CH_DX0CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX0CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX1CR ------------------------------- */ -#define USIC_CH_DX1CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX1CR: DSEL (Bit 0) */ -#define USIC_CH_DX1CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX1CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX1CR_DCEN_Pos \ - (3UL) /*!< USIC_CH DX1CR: DCEN (Bit 3) */ -#define USIC_CH_DX1CR_DCEN_Msk \ - (0x8UL) /*!< USIC_CH DX1CR: DCEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX1CR: INSW (Bit 4) */ -#define USIC_CH_DX1CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX1CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX1CR: DFEN (Bit 5) */ -#define USIC_CH_DX1CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX1CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX1CR: DSEN (Bit 6) */ -#define USIC_CH_DX1CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX1CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX1CR: DPOL (Bit 8) */ -#define USIC_CH_DX1CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX1CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX1CR: SFSEL (Bit 9) */ -#define USIC_CH_DX1CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX1CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_CM_Pos \ - (10UL) /*!< USIC_CH DX1CR: CM (Bit 10) */ -#define USIC_CH_DX1CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX1CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX1CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX1CR: DXS (Bit 15) */ -#define USIC_CH_DX1CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX1CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX2CR ------------------------------- */ -#define USIC_CH_DX2CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX2CR: DSEL (Bit 0) */ -#define USIC_CH_DX2CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX2CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX2CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX2CR: INSW (Bit 4) */ -#define USIC_CH_DX2CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX2CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX2CR: DFEN (Bit 5) */ -#define USIC_CH_DX2CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX2CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX2CR: DSEN (Bit 6) */ -#define USIC_CH_DX2CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX2CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX2CR: DPOL (Bit 8) */ -#define USIC_CH_DX2CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX2CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX2CR: SFSEL (Bit 9) */ -#define USIC_CH_DX2CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX2CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_CM_Pos \ - (10UL) /*!< USIC_CH DX2CR: CM (Bit 10) */ -#define USIC_CH_DX2CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX2CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX2CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX2CR: DXS (Bit 15) */ -#define USIC_CH_DX2CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX2CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX3CR ------------------------------- */ -#define USIC_CH_DX3CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX3CR: DSEL (Bit 0) */ -#define USIC_CH_DX3CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX3CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX3CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX3CR: INSW (Bit 4) */ -#define USIC_CH_DX3CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX3CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX3CR: DFEN (Bit 5) */ -#define USIC_CH_DX3CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX3CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX3CR: DSEN (Bit 6) */ -#define USIC_CH_DX3CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX3CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX3CR: DPOL (Bit 8) */ -#define USIC_CH_DX3CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX3CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX3CR: SFSEL (Bit 9) */ -#define USIC_CH_DX3CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX3CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_CM_Pos \ - (10UL) /*!< USIC_CH DX3CR: CM (Bit 10) */ -#define USIC_CH_DX3CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX3CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX3CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX3CR: DXS (Bit 15) */ -#define USIC_CH_DX3CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX3CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX4CR ------------------------------- */ -#define USIC_CH_DX4CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX4CR: DSEL (Bit 0) */ -#define USIC_CH_DX4CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX4CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX4CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX4CR: INSW (Bit 4) */ -#define USIC_CH_DX4CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX4CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX4CR: DFEN (Bit 5) */ -#define USIC_CH_DX4CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX4CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX4CR: DSEN (Bit 6) */ -#define USIC_CH_DX4CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX4CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX4CR: DPOL (Bit 8) */ -#define USIC_CH_DX4CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX4CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX4CR: SFSEL (Bit 9) */ -#define USIC_CH_DX4CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX4CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_CM_Pos \ - (10UL) /*!< USIC_CH DX4CR: CM (Bit 10) */ -#define USIC_CH_DX4CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX4CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX4CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX4CR: DXS (Bit 15) */ -#define USIC_CH_DX4CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX4CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX5CR ------------------------------- */ -#define USIC_CH_DX5CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX5CR: DSEL (Bit 0) */ -#define USIC_CH_DX5CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX5CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX5CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX5CR: INSW (Bit 4) */ -#define USIC_CH_DX5CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX5CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX5CR: DFEN (Bit 5) */ -#define USIC_CH_DX5CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX5CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX5CR: DSEN (Bit 6) */ -#define USIC_CH_DX5CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX5CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX5CR: DPOL (Bit 8) */ -#define USIC_CH_DX5CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX5CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX5CR: SFSEL (Bit 9) */ -#define USIC_CH_DX5CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX5CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_CM_Pos \ - (10UL) /*!< USIC_CH DX5CR: CM (Bit 10) */ -#define USIC_CH_DX5CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX5CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX5CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX5CR: DXS (Bit 15) */ -#define USIC_CH_DX5CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX5CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_SCTR -------------------------------- */ -#define USIC_CH_SCTR_SDIR_Pos \ - (0UL) /*!< USIC_CH SCTR: SDIR (Bit 0) */ -#define USIC_CH_SCTR_SDIR_Msk \ - (0x1UL) /*!< USIC_CH SCTR: SDIR (Bitfield-Mask: 0x01) */ -#define USIC_CH_SCTR_PDL_Pos \ - (1UL) /*!< USIC_CH SCTR: PDL (Bit 1) */ -#define USIC_CH_SCTR_PDL_Msk \ - (0x2UL) /*!< USIC_CH SCTR: PDL (Bitfield-Mask: 0x01) */ -#define USIC_CH_SCTR_DSM_Pos \ - (2UL) /*!< USIC_CH SCTR: DSM (Bit 2) */ -#define USIC_CH_SCTR_DSM_Msk \ - (0xcUL) /*!< USIC_CH SCTR: DSM (Bitfield-Mask: 0x03) */ -#define USIC_CH_SCTR_HPCDIR_Pos \ - (4UL) /*!< USIC_CH SCTR: HPCDIR (Bit 4) */ -#define USIC_CH_SCTR_HPCDIR_Msk \ - (0x10UL) /*!< USIC_CH SCTR: HPCDIR (Bitfield-Mask: 0x01) */ -#define USIC_CH_SCTR_DOCFG_Pos \ - (6UL) /*!< USIC_CH SCTR: DOCFG (Bit 6) */ -#define USIC_CH_SCTR_DOCFG_Msk \ - (0xc0UL) /*!< USIC_CH SCTR: DOCFG (Bitfield-Mask: 0x03) */ -#define USIC_CH_SCTR_TRM_Pos \ - (8UL) /*!< USIC_CH SCTR: TRM (Bit 8) */ -#define USIC_CH_SCTR_TRM_Msk \ - (0x300UL) /*!< USIC_CH SCTR: TRM (Bitfield-Mask: 0x03) */ -#define USIC_CH_SCTR_FLE_Pos \ - (16UL) /*!< USIC_CH SCTR: FLE (Bit 16) */ -#define USIC_CH_SCTR_FLE_Msk \ - (0x3f0000UL) /*!< USIC_CH SCTR: FLE (Bitfield-Mask: 0x3f) */ -#define USIC_CH_SCTR_WLE_Pos \ - (24UL) /*!< USIC_CH SCTR: WLE (Bit 24) */ -#define USIC_CH_SCTR_WLE_Msk \ - (0xf000000UL) /*!< USIC_CH SCTR: WLE (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- USIC_CH_TCSR -------------------------------- */ -#define USIC_CH_TCSR_WLEMD_Pos \ - (0UL) /*!< USIC_CH TCSR: WLEMD (Bit 0) */ -#define USIC_CH_TCSR_WLEMD_Msk \ - (0x1UL) /*!< USIC_CH TCSR: WLEMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_SELMD_Pos \ - (1UL) /*!< USIC_CH TCSR: SELMD (Bit 1) */ -#define USIC_CH_TCSR_SELMD_Msk \ - (0x2UL) /*!< USIC_CH TCSR: SELMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_FLEMD_Pos \ - (2UL) /*!< USIC_CH TCSR: FLEMD (Bit 2) */ -#define USIC_CH_TCSR_FLEMD_Msk \ - (0x4UL) /*!< USIC_CH TCSR: FLEMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_WAMD_Pos \ - (3UL) /*!< USIC_CH TCSR: WAMD (Bit 3) */ -#define USIC_CH_TCSR_WAMD_Msk \ - (0x8UL) /*!< USIC_CH TCSR: WAMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_HPCMD_Pos \ - (4UL) /*!< USIC_CH TCSR: HPCMD (Bit 4) */ -#define USIC_CH_TCSR_HPCMD_Msk \ - (0x10UL) /*!< USIC_CH TCSR: HPCMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_SOF_Pos \ - (5UL) /*!< USIC_CH TCSR: SOF (Bit 5) */ -#define USIC_CH_TCSR_SOF_Msk \ - (0x20UL) /*!< USIC_CH TCSR: SOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_EOF_Pos \ - (6UL) /*!< USIC_CH TCSR: EOF (Bit 6) */ -#define USIC_CH_TCSR_EOF_Msk \ - (0x40UL) /*!< USIC_CH TCSR: EOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TDV_Pos \ - (7UL) /*!< USIC_CH TCSR: TDV (Bit 7) */ -#define USIC_CH_TCSR_TDV_Msk \ - (0x80UL) /*!< USIC_CH TCSR: TDV (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TDSSM_Pos \ - (8UL) /*!< USIC_CH TCSR: TDSSM (Bit 8) */ -#define USIC_CH_TCSR_TDSSM_Msk \ - (0x100UL) /*!< USIC_CH TCSR: TDSSM (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TDEN_Pos \ - (10UL) /*!< USIC_CH TCSR: TDEN (Bit 10) */ -#define USIC_CH_TCSR_TDEN_Msk \ - (0xc00UL) /*!< USIC_CH TCSR: TDEN (Bitfield-Mask: 0x03) */ -#define USIC_CH_TCSR_TDVTR_Pos \ - (12UL) /*!< USIC_CH TCSR: TDVTR (Bit 12) */ -#define USIC_CH_TCSR_TDVTR_Msk \ - (0x1000UL) /*!< USIC_CH TCSR: TDVTR (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_WA_Pos \ - (13UL) /*!< USIC_CH TCSR: WA (Bit 13) */ -#define USIC_CH_TCSR_WA_Msk \ - (0x2000UL) /*!< USIC_CH TCSR: WA (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TSOF_Pos \ - (24UL) /*!< USIC_CH TCSR: TSOF (Bit 24) */ -#define USIC_CH_TCSR_TSOF_Msk \ - (0x1000000UL) /*!< USIC_CH TCSR: TSOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TV_Pos \ - (26UL) /*!< USIC_CH TCSR: TV (Bit 26) */ -#define USIC_CH_TCSR_TV_Msk \ - (0x4000000UL) /*!< USIC_CH TCSR: TV (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TVC_Pos \ - (27UL) /*!< USIC_CH TCSR: TVC (Bit 27) */ -#define USIC_CH_TCSR_TVC_Msk \ - (0x8000000UL) /*!< USIC_CH TCSR: TVC (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TE_Pos \ - (28UL) /*!< USIC_CH TCSR: TE (Bit 28) */ -#define USIC_CH_TCSR_TE_Msk \ - (0x10000000UL) /*!< USIC_CH TCSR: TE (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USIC_CH_PCR -------------------------------- */ -#define USIC_CH_PCR_CTR0_Pos \ - (0UL) /*!< USIC_CH PCR: CTR0 (Bit 0) */ -#define USIC_CH_PCR_CTR0_Msk \ - (0x1UL) /*!< USIC_CH PCR: CTR0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR1_Pos \ - (1UL) /*!< USIC_CH PCR: CTR1 (Bit 1) */ -#define USIC_CH_PCR_CTR1_Msk \ - (0x2UL) /*!< USIC_CH PCR: CTR1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR2_Pos \ - (2UL) /*!< USIC_CH PCR: CTR2 (Bit 2) */ -#define USIC_CH_PCR_CTR2_Msk \ - (0x4UL) /*!< USIC_CH PCR: CTR2 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR3_Pos \ - (3UL) /*!< USIC_CH PCR: CTR3 (Bit 3) */ -#define USIC_CH_PCR_CTR3_Msk \ - (0x8UL) /*!< USIC_CH PCR: CTR3 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR4_Pos \ - (4UL) /*!< USIC_CH PCR: CTR4 (Bit 4) */ -#define USIC_CH_PCR_CTR4_Msk \ - (0x10UL) /*!< USIC_CH PCR: CTR4 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR5_Pos \ - (5UL) /*!< USIC_CH PCR: CTR5 (Bit 5) */ -#define USIC_CH_PCR_CTR5_Msk \ - (0x20UL) /*!< USIC_CH PCR: CTR5 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR6_Pos \ - (6UL) /*!< USIC_CH PCR: CTR6 (Bit 6) */ -#define USIC_CH_PCR_CTR6_Msk \ - (0x40UL) /*!< USIC_CH PCR: CTR6 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR7_Pos \ - (7UL) /*!< USIC_CH PCR: CTR7 (Bit 7) */ -#define USIC_CH_PCR_CTR7_Msk \ - (0x80UL) /*!< USIC_CH PCR: CTR7 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR8_Pos \ - (8UL) /*!< USIC_CH PCR: CTR8 (Bit 8) */ -#define USIC_CH_PCR_CTR8_Msk \ - (0x100UL) /*!< USIC_CH PCR: CTR8 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR9_Pos \ - (9UL) /*!< USIC_CH PCR: CTR9 (Bit 9) */ -#define USIC_CH_PCR_CTR9_Msk \ - (0x200UL) /*!< USIC_CH PCR: CTR9 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR10_Pos \ - (10UL) /*!< USIC_CH PCR: CTR10 (Bit 10) */ -#define USIC_CH_PCR_CTR10_Msk \ - (0x400UL) /*!< USIC_CH PCR: CTR10 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR11_Pos \ - (11UL) /*!< USIC_CH PCR: CTR11 (Bit 11) */ -#define USIC_CH_PCR_CTR11_Msk \ - (0x800UL) /*!< USIC_CH PCR: CTR11 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR12_Pos \ - (12UL) /*!< USIC_CH PCR: CTR12 (Bit 12) */ -#define USIC_CH_PCR_CTR12_Msk \ - (0x1000UL) /*!< USIC_CH PCR: CTR12 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR13_Pos \ - (13UL) /*!< USIC_CH PCR: CTR13 (Bit 13) */ -#define USIC_CH_PCR_CTR13_Msk \ - (0x2000UL) /*!< USIC_CH PCR: CTR13 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR14_Pos \ - (14UL) /*!< USIC_CH PCR: CTR14 (Bit 14) */ -#define USIC_CH_PCR_CTR14_Msk \ - (0x4000UL) /*!< USIC_CH PCR: CTR14 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR15_Pos \ - (15UL) /*!< USIC_CH PCR: CTR15 (Bit 15) */ -#define USIC_CH_PCR_CTR15_Msk \ - (0x8000UL) /*!< USIC_CH PCR: CTR15 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR16_Pos \ - (16UL) /*!< USIC_CH PCR: CTR16 (Bit 16) */ -#define USIC_CH_PCR_CTR16_Msk \ - (0x10000UL) /*!< USIC_CH PCR: CTR16 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR17_Pos \ - (17UL) /*!< USIC_CH PCR: CTR17 (Bit 17) */ -#define USIC_CH_PCR_CTR17_Msk \ - (0x20000UL) /*!< USIC_CH PCR: CTR17 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR18_Pos \ - (18UL) /*!< USIC_CH PCR: CTR18 (Bit 18) */ -#define USIC_CH_PCR_CTR18_Msk \ - (0x40000UL) /*!< USIC_CH PCR: CTR18 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR19_Pos \ - (19UL) /*!< USIC_CH PCR: CTR19 (Bit 19) */ -#define USIC_CH_PCR_CTR19_Msk \ - (0x80000UL) /*!< USIC_CH PCR: CTR19 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR20_Pos \ - (20UL) /*!< USIC_CH PCR: CTR20 (Bit 20) */ -#define USIC_CH_PCR_CTR20_Msk \ - (0x100000UL) /*!< USIC_CH PCR: CTR20 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR21_Pos \ - (21UL) /*!< USIC_CH PCR: CTR21 (Bit 21) */ -#define USIC_CH_PCR_CTR21_Msk \ - (0x200000UL) /*!< USIC_CH PCR: CTR21 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR22_Pos \ - (22UL) /*!< USIC_CH PCR: CTR22 (Bit 22) */ -#define USIC_CH_PCR_CTR22_Msk \ - (0x400000UL) /*!< USIC_CH PCR: CTR22 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR23_Pos \ - (23UL) /*!< USIC_CH PCR: CTR23 (Bit 23) */ -#define USIC_CH_PCR_CTR23_Msk \ - (0x800000UL) /*!< USIC_CH PCR: CTR23 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR24_Pos \ - (24UL) /*!< USIC_CH PCR: CTR24 (Bit 24) */ -#define USIC_CH_PCR_CTR24_Msk \ - (0x1000000UL) /*!< USIC_CH PCR: CTR24 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR25_Pos \ - (25UL) /*!< USIC_CH PCR: CTR25 (Bit 25) */ -#define USIC_CH_PCR_CTR25_Msk \ - (0x2000000UL) /*!< USIC_CH PCR: CTR25 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR26_Pos \ - (26UL) /*!< USIC_CH PCR: CTR26 (Bit 26) */ -#define USIC_CH_PCR_CTR26_Msk \ - (0x4000000UL) /*!< USIC_CH PCR: CTR26 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR27_Pos \ - (27UL) /*!< USIC_CH PCR: CTR27 (Bit 27) */ -#define USIC_CH_PCR_CTR27_Msk \ - (0x8000000UL) /*!< USIC_CH PCR: CTR27 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR28_Pos \ - (28UL) /*!< USIC_CH PCR: CTR28 (Bit 28) */ -#define USIC_CH_PCR_CTR28_Msk \ - (0x10000000UL) /*!< USIC_CH PCR: CTR28 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR29_Pos \ - (29UL) /*!< USIC_CH PCR: CTR29 (Bit 29) */ -#define USIC_CH_PCR_CTR29_Msk \ - (0x20000000UL) /*!< USIC_CH PCR: CTR29 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR30_Pos \ - (30UL) /*!< USIC_CH PCR: CTR30 (Bit 30) */ -#define USIC_CH_PCR_CTR30_Msk \ - (0x40000000UL) /*!< USIC_CH PCR: CTR30 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR31_Pos \ - (31UL) /*!< USIC_CH PCR: CTR31 (Bit 31) */ -#define USIC_CH_PCR_CTR31_Msk \ - (0x80000000UL) /*!< USIC_CH PCR: CTR31 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PCR_ASCMode ---------------------------- */ -#define USIC_CH_PCR_ASCMode_SMD_Pos \ - (0UL) /*!< USIC_CH PCR_ASCMode: SMD (Bit 0) */ -#define USIC_CH_PCR_ASCMode_SMD_Msk \ - (0x1UL) /*!< USIC_CH PCR_ASCMode: SMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_STPB_Pos \ - (1UL) /*!< USIC_CH PCR_ASCMode: STPB (Bit 1) */ -#define USIC_CH_PCR_ASCMode_STPB_Msk \ - (0x2UL) /*!< USIC_CH PCR_ASCMode: STPB (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_IDM_Pos \ - (2UL) /*!< USIC_CH PCR_ASCMode: IDM (Bit 2) */ -#define USIC_CH_PCR_ASCMode_IDM_Msk \ - (0x4UL) /*!< USIC_CH PCR_ASCMode: IDM (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_SBIEN_Pos \ - (3UL) /*!< USIC_CH PCR_ASCMode: SBIEN (Bit 3) */ -#define USIC_CH_PCR_ASCMode_SBIEN_Msk \ - (0x8UL) /*!< USIC_CH PCR_ASCMode: SBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_CDEN_Pos \ - (4UL) /*!< USIC_CH PCR_ASCMode: CDEN (Bit 4) */ -#define USIC_CH_PCR_ASCMode_CDEN_Msk \ - (0x10UL) /*!< USIC_CH PCR_ASCMode: CDEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_RNIEN_Pos \ - (5UL) /*!< USIC_CH PCR_ASCMode: RNIEN (Bit 5) */ -#define USIC_CH_PCR_ASCMode_RNIEN_Msk \ - (0x20UL) /*!< USIC_CH PCR_ASCMode: RNIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_FEIEN_Pos \ - (6UL) /*!< USIC_CH PCR_ASCMode: FEIEN (Bit 6) */ -#define USIC_CH_PCR_ASCMode_FEIEN_Msk \ - (0x40UL) /*!< USIC_CH PCR_ASCMode: FEIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_FFIEN_Pos \ - (7UL) /*!< USIC_CH PCR_ASCMode: FFIEN (Bit 7) */ -#define USIC_CH_PCR_ASCMode_FFIEN_Msk \ - (0x80UL) /*!< USIC_CH PCR_ASCMode: FFIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_SP_Pos \ - (8UL) /*!< USIC_CH PCR_ASCMode: SP (Bit 8) */ -#define USIC_CH_PCR_ASCMode_SP_Msk \ - (0x1f00UL) /*!< USIC_CH PCR_ASCMode: SP (Bitfield-Mask: 0x1f) */ -#define USIC_CH_PCR_ASCMode_PL_Pos \ - (13UL) /*!< USIC_CH PCR_ASCMode: PL (Bit 13) */ -#define USIC_CH_PCR_ASCMode_PL_Msk \ - (0xe000UL) /*!< USIC_CH PCR_ASCMode: PL (Bitfield-Mask: 0x07) */ -#define USIC_CH_PCR_ASCMode_RSTEN_Pos \ - (16UL) /*!< USIC_CH PCR_ASCMode: RSTEN (Bit 16) */ -#define USIC_CH_PCR_ASCMode_RSTEN_Msk \ - (0x10000UL) /*!< USIC_CH PCR_ASCMode: RSTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_TSTEN_Pos \ - (17UL) /*!< USIC_CH PCR_ASCMode: TSTEN (Bit 17) */ -#define USIC_CH_PCR_ASCMode_TSTEN_Msk \ - (0x20000UL) /*!< USIC_CH PCR_ASCMode: TSTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_MCLK_Pos \ - (31UL) /*!< USIC_CH PCR_ASCMode: MCLK (Bit 31) */ -#define USIC_CH_PCR_ASCMode_MCLK_Msk \ - (0x80000000UL) /*!< USIC_CH PCR_ASCMode: MCLK (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PCR_SSCMode ---------------------------- */ -#define USIC_CH_PCR_SSCMode_MSLSEN_Pos \ - (0UL) /*!< USIC_CH PCR_SSCMode: MSLSEN (Bit 0) */ -#define USIC_CH_PCR_SSCMode_MSLSEN_Msk \ - (0x1UL) /*!< USIC_CH PCR_SSCMode: MSLSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_SELCTR_Pos \ - (1UL) /*!< USIC_CH PCR_SSCMode: SELCTR (Bit 1) */ -#define USIC_CH_PCR_SSCMode_SELCTR_Msk \ - (0x2UL) /*!< USIC_CH PCR_SSCMode: SELCTR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_SELINV_Pos \ - (2UL) /*!< USIC_CH PCR_SSCMode: SELINV (Bit 2) */ -#define USIC_CH_PCR_SSCMode_SELINV_Msk \ - (0x4UL) /*!< USIC_CH PCR_SSCMode: SELINV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_FEM_Pos \ - (3UL) /*!< USIC_CH PCR_SSCMode: FEM (Bit 3) */ -#define USIC_CH_PCR_SSCMode_FEM_Msk \ - (0x8UL) /*!< USIC_CH PCR_SSCMode: FEM (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_CTQSEL1_Pos \ - (4UL) /*!< USIC_CH PCR_SSCMode: CTQSEL1 (Bit 4) */ -#define USIC_CH_PCR_SSCMode_CTQSEL1_Msk \ - (0x30UL) /*!< USIC_CH PCR_SSCMode: CTQSEL1 (Bitfield-Mask: 0x03) */ -#define USIC_CH_PCR_SSCMode_PCTQ1_Pos \ - (6UL) /*!< USIC_CH PCR_SSCMode: PCTQ1 (Bit 6) */ -#define USIC_CH_PCR_SSCMode_PCTQ1_Msk \ - (0xc0UL) /*!< USIC_CH PCR_SSCMode: PCTQ1 (Bitfield-Mask: 0x03) */ -#define USIC_CH_PCR_SSCMode_DCTQ1_Pos \ - (8UL) /*!< USIC_CH PCR_SSCMode: DCTQ1 (Bit 8) */ -#define USIC_CH_PCR_SSCMode_DCTQ1_Msk \ - (0x1f00UL) /*!< USIC_CH PCR_SSCMode: DCTQ1 (Bitfield-Mask: 0x1f) */ -#define USIC_CH_PCR_SSCMode_PARIEN_Pos \ - (13UL) /*!< USIC_CH PCR_SSCMode: PARIEN (Bit 13) */ -#define USIC_CH_PCR_SSCMode_PARIEN_Msk \ - (0x2000UL) /*!< USIC_CH PCR_SSCMode: PARIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_MSLSIEN_Pos \ - (14UL) /*!< USIC_CH PCR_SSCMode: MSLSIEN (Bit 14) */ -#define USIC_CH_PCR_SSCMode_MSLSIEN_Msk \ - (0x4000UL) /*!< USIC_CH PCR_SSCMode: MSLSIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_DX2TIEN_Pos \ - (15UL) /*!< USIC_CH PCR_SSCMode: DX2TIEN (Bit 15) */ -#define USIC_CH_PCR_SSCMode_DX2TIEN_Msk \ - (0x8000UL) /*!< USIC_CH PCR_SSCMode: DX2TIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_SELO_Pos \ - (16UL) /*!< USIC_CH PCR_SSCMode: SELO (Bit 16) */ -#define USIC_CH_PCR_SSCMode_SELO_Msk \ - (0xff0000UL) /*!< USIC_CH PCR_SSCMode: SELO (Bitfield-Mask: 0xff) */ -#define USIC_CH_PCR_SSCMode_TIWEN_Pos \ - (24UL) /*!< USIC_CH PCR_SSCMode: TIWEN (Bit 24) */ -#define USIC_CH_PCR_SSCMode_TIWEN_Msk \ - (0x1000000UL) /*!< USIC_CH PCR_SSCMode: TIWEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_SLPHSEL_Pos \ - (25UL) /*!< USIC_CH PCR_SSCMode: SLPHSEL (Bit 25) */ -#define USIC_CH_PCR_SSCMode_SLPHSEL_Msk \ - (0x2000000UL) /*!< USIC_CH PCR_SSCMode: SLPHSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_MCLK_Pos \ - (31UL) /*!< USIC_CH PCR_SSCMode: MCLK (Bit 31) */ -#define USIC_CH_PCR_SSCMode_MCLK_Msk \ - (0x80000000UL) /*!< USIC_CH PCR_SSCMode: MCLK (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PCR_IICMode ---------------------------- */ -#define USIC_CH_PCR_IICMode_SLAD_Pos \ - (0UL) /*!< USIC_CH PCR_IICMode: SLAD (Bit 0) */ -#define USIC_CH_PCR_IICMode_SLAD_Msk \ - (0xffffUL) /*!< USIC_CH PCR_IICMode: SLAD (Bitfield-Mask: 0xffff) */ -#define USIC_CH_PCR_IICMode_ACK00_Pos \ - (16UL) /*!< USIC_CH PCR_IICMode: ACK00 (Bit 16) */ -#define USIC_CH_PCR_IICMode_ACK00_Msk \ - (0x10000UL) /*!< USIC_CH PCR_IICMode: ACK00 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_STIM_Pos \ - (17UL) /*!< USIC_CH PCR_IICMode: STIM (Bit 17) */ -#define USIC_CH_PCR_IICMode_STIM_Msk \ - (0x20000UL) /*!< USIC_CH PCR_IICMode: STIM (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_SCRIEN_Pos \ - (18UL) /*!< USIC_CH PCR_IICMode: SCRIEN (Bit 18) */ -#define USIC_CH_PCR_IICMode_SCRIEN_Msk \ - (0x40000UL) /*!< USIC_CH PCR_IICMode: SCRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_RSCRIEN_Pos \ - (19UL) /*!< USIC_CH PCR_IICMode: RSCRIEN (Bit 19) */ -#define USIC_CH_PCR_IICMode_RSCRIEN_Msk \ - (0x80000UL) /*!< USIC_CH PCR_IICMode: RSCRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_PCRIEN_Pos \ - (20UL) /*!< USIC_CH PCR_IICMode: PCRIEN (Bit 20) */ -#define USIC_CH_PCR_IICMode_PCRIEN_Msk \ - (0x100000UL) /*!< USIC_CH PCR_IICMode: PCRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_NACKIEN_Pos \ - (21UL) /*!< USIC_CH PCR_IICMode: NACKIEN (Bit 21) */ -#define USIC_CH_PCR_IICMode_NACKIEN_Msk \ - (0x200000UL) /*!< USIC_CH PCR_IICMode: NACKIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_ARLIEN_Pos \ - (22UL) /*!< USIC_CH PCR_IICMode: ARLIEN (Bit 22) */ -#define USIC_CH_PCR_IICMode_ARLIEN_Msk \ - (0x400000UL) /*!< USIC_CH PCR_IICMode: ARLIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_SRRIEN_Pos \ - (23UL) /*!< USIC_CH PCR_IICMode: SRRIEN (Bit 23) */ -#define USIC_CH_PCR_IICMode_SRRIEN_Msk \ - (0x800000UL) /*!< USIC_CH PCR_IICMode: SRRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_ERRIEN_Pos \ - (24UL) /*!< USIC_CH PCR_IICMode: ERRIEN (Bit 24) */ -#define USIC_CH_PCR_IICMode_ERRIEN_Msk \ - (0x1000000UL) /*!< USIC_CH PCR_IICMode: ERRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_SACKDIS_Pos \ - (25UL) /*!< USIC_CH PCR_IICMode: SACKDIS (Bit 25) */ -#define USIC_CH_PCR_IICMode_SACKDIS_Msk \ - (0x2000000UL) /*!< USIC_CH PCR_IICMode: SACKDIS (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_HDEL_Pos \ - (26UL) /*!< USIC_CH PCR_IICMode: HDEL (Bit 26) */ -#define USIC_CH_PCR_IICMode_HDEL_Msk \ - (0x3c000000UL) /*!< USIC_CH PCR_IICMode: HDEL (Bitfield-Mask: 0x0f) */ -#define USIC_CH_PCR_IICMode_ACKIEN_Pos \ - (30UL) /*!< USIC_CH PCR_IICMode: ACKIEN (Bit 30) */ -#define USIC_CH_PCR_IICMode_ACKIEN_Msk \ - (0x40000000UL) /*!< USIC_CH PCR_IICMode: ACKIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_MCLK_Pos \ - (31UL) /*!< USIC_CH PCR_IICMode: MCLK (Bit 31) */ -#define USIC_CH_PCR_IICMode_MCLK_Msk \ - (0x80000000UL) /*!< USIC_CH PCR_IICMode: MCLK (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PCR_IISMode ---------------------------- */ -#define USIC_CH_PCR_IISMode_WAGEN_Pos \ - (0UL) /*!< USIC_CH PCR_IISMode: WAGEN (Bit 0) */ -#define USIC_CH_PCR_IISMode_WAGEN_Msk \ - (0x1UL) /*!< USIC_CH PCR_IISMode: WAGEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_DTEN_Pos \ - (1UL) /*!< USIC_CH PCR_IISMode: DTEN (Bit 1) */ -#define USIC_CH_PCR_IISMode_DTEN_Msk \ - (0x2UL) /*!< USIC_CH PCR_IISMode: DTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_SELINV_Pos \ - (2UL) /*!< USIC_CH PCR_IISMode: SELINV (Bit 2) */ -#define USIC_CH_PCR_IISMode_SELINV_Msk \ - (0x4UL) /*!< USIC_CH PCR_IISMode: SELINV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_WAFEIEN_Pos \ - (4UL) /*!< USIC_CH PCR_IISMode: WAFEIEN (Bit 4) */ -#define USIC_CH_PCR_IISMode_WAFEIEN_Msk \ - (0x10UL) /*!< USIC_CH PCR_IISMode: WAFEIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_WAREIEN_Pos \ - (5UL) /*!< USIC_CH PCR_IISMode: WAREIEN (Bit 5) */ -#define USIC_CH_PCR_IISMode_WAREIEN_Msk \ - (0x20UL) /*!< USIC_CH PCR_IISMode: WAREIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_ENDIEN_Pos \ - (6UL) /*!< USIC_CH PCR_IISMode: ENDIEN (Bit 6) */ -#define USIC_CH_PCR_IISMode_ENDIEN_Msk \ - (0x40UL) /*!< USIC_CH PCR_IISMode: ENDIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_DX2TIEN_Pos \ - (15UL) /*!< USIC_CH PCR_IISMode: DX2TIEN (Bit 15) */ -#define USIC_CH_PCR_IISMode_DX2TIEN_Msk \ - (0x8000UL) /*!< USIC_CH PCR_IISMode: DX2TIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_TDEL_Pos \ - (16UL) /*!< USIC_CH PCR_IISMode: TDEL (Bit 16) */ -#define USIC_CH_PCR_IISMode_TDEL_Msk \ - (0x3f0000UL) /*!< USIC_CH PCR_IISMode: TDEL (Bitfield-Mask: 0x3f) */ -#define USIC_CH_PCR_IISMode_MCLK_Pos \ - (31UL) /*!< USIC_CH PCR_IISMode: MCLK (Bit 31) */ -#define USIC_CH_PCR_IISMode_MCLK_Msk \ - (0x80000000UL) /*!< USIC_CH PCR_IISMode: MCLK (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USIC_CH_CCR -------------------------------- */ -#define USIC_CH_CCR_MODE_Pos \ - (0UL) /*!< USIC_CH CCR: MODE (Bit 0) */ -#define USIC_CH_CCR_MODE_Msk \ - (0xfUL) /*!< USIC_CH CCR: MODE (Bitfield-Mask: 0x0f) */ -#define USIC_CH_CCR_HPCEN_Pos \ - (6UL) /*!< USIC_CH CCR: HPCEN (Bit 6) */ -#define USIC_CH_CCR_HPCEN_Msk \ - (0xc0UL) /*!< USIC_CH CCR: HPCEN (Bitfield-Mask: 0x03) */ -#define USIC_CH_CCR_PM_Pos (8UL) /*!< USIC_CH CCR: PM (Bit 8) */ -#define USIC_CH_CCR_PM_Msk \ - (0x300UL) /*!< USIC_CH CCR: PM (Bitfield-Mask: 0x03) */ -#define USIC_CH_CCR_RSIEN_Pos \ - (10UL) /*!< USIC_CH CCR: RSIEN (Bit 10) */ -#define USIC_CH_CCR_RSIEN_Msk \ - (0x400UL) /*!< USIC_CH CCR: RSIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_DLIEN_Pos \ - (11UL) /*!< USIC_CH CCR: DLIEN (Bit 11) */ -#define USIC_CH_CCR_DLIEN_Msk \ - (0x800UL) /*!< USIC_CH CCR: DLIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_TSIEN_Pos \ - (12UL) /*!< USIC_CH CCR: TSIEN (Bit 12) */ -#define USIC_CH_CCR_TSIEN_Msk \ - (0x1000UL) /*!< USIC_CH CCR: TSIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_TBIEN_Pos \ - (13UL) /*!< USIC_CH CCR: TBIEN (Bit 13) */ -#define USIC_CH_CCR_TBIEN_Msk \ - (0x2000UL) /*!< USIC_CH CCR: TBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_RIEN_Pos \ - (14UL) /*!< USIC_CH CCR: RIEN (Bit 14) */ -#define USIC_CH_CCR_RIEN_Msk \ - (0x4000UL) /*!< USIC_CH CCR: RIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_AIEN_Pos \ - (15UL) /*!< USIC_CH CCR: AIEN (Bit 15) */ -#define USIC_CH_CCR_AIEN_Msk \ - (0x8000UL) /*!< USIC_CH CCR: AIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_BRGIEN_Pos \ - (16UL) /*!< USIC_CH CCR: BRGIEN (Bit 16) */ -#define USIC_CH_CCR_BRGIEN_Msk \ - (0x10000UL) /*!< USIC_CH CCR: BRGIEN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_CMTR -------------------------------- */ -#define USIC_CH_CMTR_CTV_Pos \ - (0UL) /*!< USIC_CH CMTR: CTV (Bit 0) */ -#define USIC_CH_CMTR_CTV_Msk \ - (0x3ffUL) /*!< USIC_CH CMTR: CTV (Bitfield-Mask: 0x3ff) */ - -/* --------------------------------- USIC_CH_PSR -------------------------------- */ -#define USIC_CH_PSR_ST0_Pos \ - (0UL) /*!< USIC_CH PSR: ST0 (Bit 0) */ -#define USIC_CH_PSR_ST0_Msk \ - (0x1UL) /*!< USIC_CH PSR: ST0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST1_Pos \ - (1UL) /*!< USIC_CH PSR: ST1 (Bit 1) */ -#define USIC_CH_PSR_ST1_Msk \ - (0x2UL) /*!< USIC_CH PSR: ST1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST2_Pos \ - (2UL) /*!< USIC_CH PSR: ST2 (Bit 2) */ -#define USIC_CH_PSR_ST2_Msk \ - (0x4UL) /*!< USIC_CH PSR: ST2 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST3_Pos \ - (3UL) /*!< USIC_CH PSR: ST3 (Bit 3) */ -#define USIC_CH_PSR_ST3_Msk \ - (0x8UL) /*!< USIC_CH PSR: ST3 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST4_Pos \ - (4UL) /*!< USIC_CH PSR: ST4 (Bit 4) */ -#define USIC_CH_PSR_ST4_Msk \ - (0x10UL) /*!< USIC_CH PSR: ST4 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST5_Pos \ - (5UL) /*!< USIC_CH PSR: ST5 (Bit 5) */ -#define USIC_CH_PSR_ST5_Msk \ - (0x20UL) /*!< USIC_CH PSR: ST5 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST6_Pos \ - (6UL) /*!< USIC_CH PSR: ST6 (Bit 6) */ -#define USIC_CH_PSR_ST6_Msk \ - (0x40UL) /*!< USIC_CH PSR: ST6 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST7_Pos \ - (7UL) /*!< USIC_CH PSR: ST7 (Bit 7) */ -#define USIC_CH_PSR_ST7_Msk \ - (0x80UL) /*!< USIC_CH PSR: ST7 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST8_Pos \ - (8UL) /*!< USIC_CH PSR: ST8 (Bit 8) */ -#define USIC_CH_PSR_ST8_Msk \ - (0x100UL) /*!< USIC_CH PSR: ST8 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST9_Pos \ - (9UL) /*!< USIC_CH PSR: ST9 (Bit 9) */ -#define USIC_CH_PSR_ST9_Msk \ - (0x200UL) /*!< USIC_CH PSR: ST9 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR: RSIF (Bit 10) */ -#define USIC_CH_PSR_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR: DLIF (Bit 11) */ -#define USIC_CH_PSR_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR: TSIF (Bit 12) */ -#define USIC_CH_PSR_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR: TBIF (Bit 13) */ -#define USIC_CH_PSR_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_RIF_Pos \ - (14UL) /*!< USIC_CH PSR: RIF (Bit 14) */ -#define USIC_CH_PSR_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_AIF_Pos \ - (15UL) /*!< USIC_CH PSR: AIF (Bit 15) */ -#define USIC_CH_PSR_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR: BRGIF (Bit 16) */ -#define USIC_CH_PSR_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR: BRGIF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PSR_ASCMode ---------------------------- */ -#define USIC_CH_PSR_ASCMode_TXIDLE_Pos \ - (0UL) /*!< USIC_CH PSR_ASCMode: TXIDLE (Bit 0) */ -#define USIC_CH_PSR_ASCMode_TXIDLE_Msk \ - (0x1UL) /*!< USIC_CH PSR_ASCMode: TXIDLE (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RXIDLE_Pos \ - (1UL) /*!< USIC_CH PSR_ASCMode: RXIDLE (Bit 1) */ -#define USIC_CH_PSR_ASCMode_RXIDLE_Msk \ - (0x2UL) /*!< USIC_CH PSR_ASCMode: RXIDLE (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_SBD_Pos \ - (2UL) /*!< USIC_CH PSR_ASCMode: SBD (Bit 2) */ -#define USIC_CH_PSR_ASCMode_SBD_Msk \ - (0x4UL) /*!< USIC_CH PSR_ASCMode: SBD (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_COL_Pos \ - (3UL) /*!< USIC_CH PSR_ASCMode: COL (Bit 3) */ -#define USIC_CH_PSR_ASCMode_COL_Msk \ - (0x8UL) /*!< USIC_CH PSR_ASCMode: COL (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RNS_Pos \ - (4UL) /*!< USIC_CH PSR_ASCMode: RNS (Bit 4) */ -#define USIC_CH_PSR_ASCMode_RNS_Msk \ - (0x10UL) /*!< USIC_CH PSR_ASCMode: RNS (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_FER0_Pos \ - (5UL) /*!< USIC_CH PSR_ASCMode: FER0 (Bit 5) */ -#define USIC_CH_PSR_ASCMode_FER0_Msk \ - (0x20UL) /*!< USIC_CH PSR_ASCMode: FER0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_FER1_Pos \ - (6UL) /*!< USIC_CH PSR_ASCMode: FER1 (Bit 6) */ -#define USIC_CH_PSR_ASCMode_FER1_Msk \ - (0x40UL) /*!< USIC_CH PSR_ASCMode: FER1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RFF_Pos \ - (7UL) /*!< USIC_CH PSR_ASCMode: RFF (Bit 7) */ -#define USIC_CH_PSR_ASCMode_RFF_Msk \ - (0x80UL) /*!< USIC_CH PSR_ASCMode: RFF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_TFF_Pos \ - (8UL) /*!< USIC_CH PSR_ASCMode: TFF (Bit 8) */ -#define USIC_CH_PSR_ASCMode_TFF_Msk \ - (0x100UL) /*!< USIC_CH PSR_ASCMode: TFF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_BUSY_Pos \ - (9UL) /*!< USIC_CH PSR_ASCMode: BUSY (Bit 9) */ -#define USIC_CH_PSR_ASCMode_BUSY_Msk \ - (0x200UL) /*!< USIC_CH PSR_ASCMode: BUSY (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR_ASCMode: RSIF (Bit 10) */ -#define USIC_CH_PSR_ASCMode_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR_ASCMode: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR_ASCMode: DLIF (Bit 11) */ -#define USIC_CH_PSR_ASCMode_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR_ASCMode: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR_ASCMode: TSIF (Bit 12) */ -#define USIC_CH_PSR_ASCMode_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR_ASCMode: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR_ASCMode: TBIF (Bit 13) */ -#define USIC_CH_PSR_ASCMode_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR_ASCMode: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RIF_Pos \ - (14UL) /*!< USIC_CH PSR_ASCMode: RIF (Bit 14) */ -#define USIC_CH_PSR_ASCMode_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR_ASCMode: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_AIF_Pos \ - (15UL) /*!< USIC_CH PSR_ASCMode: AIF (Bit 15) */ -#define USIC_CH_PSR_ASCMode_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR_ASCMode: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR_ASCMode: BRGIF (Bit 16) */ -#define USIC_CH_PSR_ASCMode_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR_ASCMode: BRGIF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PSR_SSCMode ---------------------------- */ -#define USIC_CH_PSR_SSCMode_MSLS_Pos \ - (0UL) /*!< USIC_CH PSR_SSCMode: MSLS (Bit 0) */ -#define USIC_CH_PSR_SSCMode_MSLS_Msk \ - (0x1UL) /*!< USIC_CH PSR_SSCMode: MSLS (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_DX2S_Pos \ - (1UL) /*!< USIC_CH PSR_SSCMode: DX2S (Bit 1) */ -#define USIC_CH_PSR_SSCMode_DX2S_Msk \ - (0x2UL) /*!< USIC_CH PSR_SSCMode: DX2S (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_MSLSEV_Pos \ - (2UL) /*!< USIC_CH PSR_SSCMode: MSLSEV (Bit 2) */ -#define USIC_CH_PSR_SSCMode_MSLSEV_Msk \ - (0x4UL) /*!< USIC_CH PSR_SSCMode: MSLSEV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_DX2TEV_Pos \ - (3UL) /*!< USIC_CH PSR_SSCMode: DX2TEV (Bit 3) */ -#define USIC_CH_PSR_SSCMode_DX2TEV_Msk \ - (0x8UL) /*!< USIC_CH PSR_SSCMode: DX2TEV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_PARERR_Pos \ - (4UL) /*!< USIC_CH PSR_SSCMode: PARERR (Bit 4) */ -#define USIC_CH_PSR_SSCMode_PARERR_Msk \ - (0x10UL) /*!< USIC_CH PSR_SSCMode: PARERR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR_SSCMode: RSIF (Bit 10) */ -#define USIC_CH_PSR_SSCMode_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR_SSCMode: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR_SSCMode: DLIF (Bit 11) */ -#define USIC_CH_PSR_SSCMode_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR_SSCMode: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR_SSCMode: TSIF (Bit 12) */ -#define USIC_CH_PSR_SSCMode_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR_SSCMode: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR_SSCMode: TBIF (Bit 13) */ -#define USIC_CH_PSR_SSCMode_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR_SSCMode: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_RIF_Pos \ - (14UL) /*!< USIC_CH PSR_SSCMode: RIF (Bit 14) */ -#define USIC_CH_PSR_SSCMode_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR_SSCMode: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_AIF_Pos \ - (15UL) /*!< USIC_CH PSR_SSCMode: AIF (Bit 15) */ -#define USIC_CH_PSR_SSCMode_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR_SSCMode: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR_SSCMode: BRGIF (Bit 16) */ -#define USIC_CH_PSR_SSCMode_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR_SSCMode: BRGIF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PSR_IICMode ---------------------------- */ -#define USIC_CH_PSR_IICMode_SLSEL_Pos \ - (0UL) /*!< USIC_CH PSR_IICMode: SLSEL (Bit 0) */ -#define USIC_CH_PSR_IICMode_SLSEL_Msk \ - (0x1UL) /*!< USIC_CH PSR_IICMode: SLSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_WTDF_Pos \ - (1UL) /*!< USIC_CH PSR_IICMode: WTDF (Bit 1) */ -#define USIC_CH_PSR_IICMode_WTDF_Msk \ - (0x2UL) /*!< USIC_CH PSR_IICMode: WTDF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_SCR_Pos \ - (2UL) /*!< USIC_CH PSR_IICMode: SCR (Bit 2) */ -#define USIC_CH_PSR_IICMode_SCR_Msk \ - (0x4UL) /*!< USIC_CH PSR_IICMode: SCR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_RSCR_Pos \ - (3UL) /*!< USIC_CH PSR_IICMode: RSCR (Bit 3) */ -#define USIC_CH_PSR_IICMode_RSCR_Msk \ - (0x8UL) /*!< USIC_CH PSR_IICMode: RSCR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_PCR_Pos \ - (4UL) /*!< USIC_CH PSR_IICMode: PCR (Bit 4) */ -#define USIC_CH_PSR_IICMode_PCR_Msk \ - (0x10UL) /*!< USIC_CH PSR_IICMode: PCR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_NACK_Pos \ - (5UL) /*!< USIC_CH PSR_IICMode: NACK (Bit 5) */ -#define USIC_CH_PSR_IICMode_NACK_Msk \ - (0x20UL) /*!< USIC_CH PSR_IICMode: NACK (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_ARL_Pos \ - (6UL) /*!< USIC_CH PSR_IICMode: ARL (Bit 6) */ -#define USIC_CH_PSR_IICMode_ARL_Msk \ - (0x40UL) /*!< USIC_CH PSR_IICMode: ARL (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_SRR_Pos \ - (7UL) /*!< USIC_CH PSR_IICMode: SRR (Bit 7) */ -#define USIC_CH_PSR_IICMode_SRR_Msk \ - (0x80UL) /*!< USIC_CH PSR_IICMode: SRR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_ERR_Pos \ - (8UL) /*!< USIC_CH PSR_IICMode: ERR (Bit 8) */ -#define USIC_CH_PSR_IICMode_ERR_Msk \ - (0x100UL) /*!< USIC_CH PSR_IICMode: ERR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_ACK_Pos \ - (9UL) /*!< USIC_CH PSR_IICMode: ACK (Bit 9) */ -#define USIC_CH_PSR_IICMode_ACK_Msk \ - (0x200UL) /*!< USIC_CH PSR_IICMode: ACK (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR_IICMode: RSIF (Bit 10) */ -#define USIC_CH_PSR_IICMode_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR_IICMode: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR_IICMode: DLIF (Bit 11) */ -#define USIC_CH_PSR_IICMode_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR_IICMode: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR_IICMode: TSIF (Bit 12) */ -#define USIC_CH_PSR_IICMode_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR_IICMode: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR_IICMode: TBIF (Bit 13) */ -#define USIC_CH_PSR_IICMode_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR_IICMode: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_RIF_Pos \ - (14UL) /*!< USIC_CH PSR_IICMode: RIF (Bit 14) */ -#define USIC_CH_PSR_IICMode_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR_IICMode: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_AIF_Pos \ - (15UL) /*!< USIC_CH PSR_IICMode: AIF (Bit 15) */ -#define USIC_CH_PSR_IICMode_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR_IICMode: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR_IICMode: BRGIF (Bit 16) */ -#define USIC_CH_PSR_IICMode_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR_IICMode: BRGIF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PSR_IISMode ---------------------------- */ -#define USIC_CH_PSR_IISMode_WA_Pos \ - (0UL) /*!< USIC_CH PSR_IISMode: WA (Bit 0) */ -#define USIC_CH_PSR_IISMode_WA_Msk \ - (0x1UL) /*!< USIC_CH PSR_IISMode: WA (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_DX2S_Pos \ - (1UL) /*!< USIC_CH PSR_IISMode: DX2S (Bit 1) */ -#define USIC_CH_PSR_IISMode_DX2S_Msk \ - (0x2UL) /*!< USIC_CH PSR_IISMode: DX2S (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_DX2TEV_Pos \ - (3UL) /*!< USIC_CH PSR_IISMode: DX2TEV (Bit 3) */ -#define USIC_CH_PSR_IISMode_DX2TEV_Msk \ - (0x8UL) /*!< USIC_CH PSR_IISMode: DX2TEV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_WAFE_Pos \ - (4UL) /*!< USIC_CH PSR_IISMode: WAFE (Bit 4) */ -#define USIC_CH_PSR_IISMode_WAFE_Msk \ - (0x10UL) /*!< USIC_CH PSR_IISMode: WAFE (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_WARE_Pos \ - (5UL) /*!< USIC_CH PSR_IISMode: WARE (Bit 5) */ -#define USIC_CH_PSR_IISMode_WARE_Msk \ - (0x20UL) /*!< USIC_CH PSR_IISMode: WARE (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_END_Pos \ - (6UL) /*!< USIC_CH PSR_IISMode: END (Bit 6) */ -#define USIC_CH_PSR_IISMode_END_Msk \ - (0x40UL) /*!< USIC_CH PSR_IISMode: END (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR_IISMode: RSIF (Bit 10) */ -#define USIC_CH_PSR_IISMode_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR_IISMode: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR_IISMode: DLIF (Bit 11) */ -#define USIC_CH_PSR_IISMode_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR_IISMode: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR_IISMode: TSIF (Bit 12) */ -#define USIC_CH_PSR_IISMode_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR_IISMode: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR_IISMode: TBIF (Bit 13) */ -#define USIC_CH_PSR_IISMode_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR_IISMode: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_RIF_Pos \ - (14UL) /*!< USIC_CH PSR_IISMode: RIF (Bit 14) */ -#define USIC_CH_PSR_IISMode_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR_IISMode: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_AIF_Pos \ - (15UL) /*!< USIC_CH PSR_IISMode: AIF (Bit 15) */ -#define USIC_CH_PSR_IISMode_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR_IISMode: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR_IISMode: BRGIF (Bit 16) */ -#define USIC_CH_PSR_IISMode_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR_IISMode: BRGIF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_PSCR -------------------------------- */ -#define USIC_CH_PSCR_CST0_Pos \ - (0UL) /*!< USIC_CH PSCR: CST0 (Bit 0) */ -#define USIC_CH_PSCR_CST0_Msk \ - (0x1UL) /*!< USIC_CH PSCR: CST0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST1_Pos \ - (1UL) /*!< USIC_CH PSCR: CST1 (Bit 1) */ -#define USIC_CH_PSCR_CST1_Msk \ - (0x2UL) /*!< USIC_CH PSCR: CST1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST2_Pos \ - (2UL) /*!< USIC_CH PSCR: CST2 (Bit 2) */ -#define USIC_CH_PSCR_CST2_Msk \ - (0x4UL) /*!< USIC_CH PSCR: CST2 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST3_Pos \ - (3UL) /*!< USIC_CH PSCR: CST3 (Bit 3) */ -#define USIC_CH_PSCR_CST3_Msk \ - (0x8UL) /*!< USIC_CH PSCR: CST3 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST4_Pos \ - (4UL) /*!< USIC_CH PSCR: CST4 (Bit 4) */ -#define USIC_CH_PSCR_CST4_Msk \ - (0x10UL) /*!< USIC_CH PSCR: CST4 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST5_Pos \ - (5UL) /*!< USIC_CH PSCR: CST5 (Bit 5) */ -#define USIC_CH_PSCR_CST5_Msk \ - (0x20UL) /*!< USIC_CH PSCR: CST5 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST6_Pos \ - (6UL) /*!< USIC_CH PSCR: CST6 (Bit 6) */ -#define USIC_CH_PSCR_CST6_Msk \ - (0x40UL) /*!< USIC_CH PSCR: CST6 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST7_Pos \ - (7UL) /*!< USIC_CH PSCR: CST7 (Bit 7) */ -#define USIC_CH_PSCR_CST7_Msk \ - (0x80UL) /*!< USIC_CH PSCR: CST7 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST8_Pos \ - (8UL) /*!< USIC_CH PSCR: CST8 (Bit 8) */ -#define USIC_CH_PSCR_CST8_Msk \ - (0x100UL) /*!< USIC_CH PSCR: CST8 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST9_Pos \ - (9UL) /*!< USIC_CH PSCR: CST9 (Bit 9) */ -#define USIC_CH_PSCR_CST9_Msk \ - (0x200UL) /*!< USIC_CH PSCR: CST9 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CRSIF_Pos \ - (10UL) /*!< USIC_CH PSCR: CRSIF (Bit 10) */ -#define USIC_CH_PSCR_CRSIF_Msk \ - (0x400UL) /*!< USIC_CH PSCR: CRSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CDLIF_Pos \ - (11UL) /*!< USIC_CH PSCR: CDLIF (Bit 11) */ -#define USIC_CH_PSCR_CDLIF_Msk \ - (0x800UL) /*!< USIC_CH PSCR: CDLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CTSIF_Pos \ - (12UL) /*!< USIC_CH PSCR: CTSIF (Bit 12) */ -#define USIC_CH_PSCR_CTSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSCR: CTSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CTBIF_Pos \ - (13UL) /*!< USIC_CH PSCR: CTBIF (Bit 13) */ -#define USIC_CH_PSCR_CTBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSCR: CTBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CRIF_Pos \ - (14UL) /*!< USIC_CH PSCR: CRIF (Bit 14) */ -#define USIC_CH_PSCR_CRIF_Msk \ - (0x4000UL) /*!< USIC_CH PSCR: CRIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CAIF_Pos \ - (15UL) /*!< USIC_CH PSCR: CAIF (Bit 15) */ -#define USIC_CH_PSCR_CAIF_Msk \ - (0x8000UL) /*!< USIC_CH PSCR: CAIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CBRGIF_Pos \ - (16UL) /*!< USIC_CH PSCR: CBRGIF (Bit 16) */ -#define USIC_CH_PSCR_CBRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSCR: CBRGIF (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USIC_CH_RBUFSR ------------------------------- */ -#define USIC_CH_RBUFSR_WLEN_Pos \ - (0UL) /*!< USIC_CH RBUFSR: WLEN (Bit 0) */ -#define USIC_CH_RBUFSR_WLEN_Msk \ - (0xfUL) /*!< USIC_CH RBUFSR: WLEN (Bitfield-Mask: 0x0f) */ -#define USIC_CH_RBUFSR_SOF_Pos \ - (6UL) /*!< USIC_CH RBUFSR: SOF (Bit 6) */ -#define USIC_CH_RBUFSR_SOF_Msk \ - (0x40UL) /*!< USIC_CH RBUFSR: SOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_PAR_Pos \ - (8UL) /*!< USIC_CH RBUFSR: PAR (Bit 8) */ -#define USIC_CH_RBUFSR_PAR_Msk \ - (0x100UL) /*!< USIC_CH RBUFSR: PAR (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_PERR_Pos \ - (9UL) /*!< USIC_CH RBUFSR: PERR (Bit 9) */ -#define USIC_CH_RBUFSR_PERR_Msk \ - (0x200UL) /*!< USIC_CH RBUFSR: PERR (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_RDV0_Pos \ - (13UL) /*!< USIC_CH RBUFSR: RDV0 (Bit 13) */ -#define USIC_CH_RBUFSR_RDV0_Msk \ - (0x2000UL) /*!< USIC_CH RBUFSR: RDV0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_RDV1_Pos \ - (14UL) /*!< USIC_CH RBUFSR: RDV1 (Bit 14) */ -#define USIC_CH_RBUFSR_RDV1_Msk \ - (0x4000UL) /*!< USIC_CH RBUFSR: RDV1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_DS_Pos \ - (15UL) /*!< USIC_CH RBUFSR: DS (Bit 15) */ -#define USIC_CH_RBUFSR_DS_Msk \ - (0x8000UL) /*!< USIC_CH RBUFSR: DS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_RBUF -------------------------------- */ -#define USIC_CH_RBUF_DSR_Pos \ - (0UL) /*!< USIC_CH RBUF: DSR (Bit 0) */ -#define USIC_CH_RBUF_DSR_Msk \ - (0xffffUL) /*!< USIC_CH RBUF: DSR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USIC_CH_RBUFD ------------------------------- */ -#define USIC_CH_RBUFD_DSR_Pos \ - (0UL) /*!< USIC_CH RBUFD: DSR (Bit 0) */ -#define USIC_CH_RBUFD_DSR_Msk \ - (0xffffUL) /*!< USIC_CH RBUFD: DSR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USIC_CH_RBUF0 ------------------------------- */ -#define USIC_CH_RBUF0_DSR0_Pos \ - (0UL) /*!< USIC_CH RBUF0: DSR0 (Bit 0) */ -#define USIC_CH_RBUF0_DSR0_Msk \ - (0xffffUL) /*!< USIC_CH RBUF0: DSR0 (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USIC_CH_RBUF1 ------------------------------- */ -#define USIC_CH_RBUF1_DSR1_Pos \ - (0UL) /*!< USIC_CH RBUF1: DSR1 (Bit 0) */ -#define USIC_CH_RBUF1_DSR1_Msk \ - (0xffffUL) /*!< USIC_CH RBUF1: DSR1 (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ USIC_CH_RBUF01SR ------------------------------ */ -#define USIC_CH_RBUF01SR_WLEN0_Pos \ - (0UL) /*!< USIC_CH RBUF01SR: WLEN0 (Bit 0) */ -#define USIC_CH_RBUF01SR_WLEN0_Msk \ - (0xfUL) /*!< USIC_CH RBUF01SR: WLEN0 (Bitfield-Mask: 0x0f) */ -#define USIC_CH_RBUF01SR_SOF0_Pos \ - (6UL) /*!< USIC_CH RBUF01SR: SOF0 (Bit 6) */ -#define USIC_CH_RBUF01SR_SOF0_Msk \ - (0x40UL) /*!< USIC_CH RBUF01SR: SOF0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_PAR0_Pos \ - (8UL) /*!< USIC_CH RBUF01SR: PAR0 (Bit 8) */ -#define USIC_CH_RBUF01SR_PAR0_Msk \ - (0x100UL) /*!< USIC_CH RBUF01SR: PAR0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_PERR0_Pos \ - (9UL) /*!< USIC_CH RBUF01SR: PERR0 (Bit 9) */ -#define USIC_CH_RBUF01SR_PERR0_Msk \ - (0x200UL) /*!< USIC_CH RBUF01SR: PERR0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_RDV00_Pos \ - (13UL) /*!< USIC_CH RBUF01SR: RDV00 (Bit 13) */ -#define USIC_CH_RBUF01SR_RDV00_Msk \ - (0x2000UL) /*!< USIC_CH RBUF01SR: RDV00 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_RDV01_Pos \ - (14UL) /*!< USIC_CH RBUF01SR: RDV01 (Bit 14) */ -#define USIC_CH_RBUF01SR_RDV01_Msk \ - (0x4000UL) /*!< USIC_CH RBUF01SR: RDV01 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_DS0_Pos \ - (15UL) /*!< USIC_CH RBUF01SR: DS0 (Bit 15) */ -#define USIC_CH_RBUF01SR_DS0_Msk \ - (0x8000UL) /*!< USIC_CH RBUF01SR: DS0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_WLEN1_Pos \ - (16UL) /*!< USIC_CH RBUF01SR: WLEN1 (Bit 16) */ -#define USIC_CH_RBUF01SR_WLEN1_Msk \ - (0xf0000UL) /*!< USIC_CH RBUF01SR: WLEN1 (Bitfield-Mask: 0x0f) */ -#define USIC_CH_RBUF01SR_SOF1_Pos \ - (22UL) /*!< USIC_CH RBUF01SR: SOF1 (Bit 22) */ -#define USIC_CH_RBUF01SR_SOF1_Msk \ - (0x400000UL) /*!< USIC_CH RBUF01SR: SOF1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_PAR1_Pos \ - (24UL) /*!< USIC_CH RBUF01SR: PAR1 (Bit 24) */ -#define USIC_CH_RBUF01SR_PAR1_Msk \ - (0x1000000UL) /*!< USIC_CH RBUF01SR: PAR1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_PERR1_Pos \ - (25UL) /*!< USIC_CH RBUF01SR: PERR1 (Bit 25) */ -#define USIC_CH_RBUF01SR_PERR1_Msk \ - (0x2000000UL) /*!< USIC_CH RBUF01SR: PERR1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_RDV10_Pos \ - (29UL) /*!< USIC_CH RBUF01SR: RDV10 (Bit 29) */ -#define USIC_CH_RBUF01SR_RDV10_Msk \ - (0x20000000UL) /*!< USIC_CH RBUF01SR: RDV10 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_RDV11_Pos \ - (30UL) /*!< USIC_CH RBUF01SR: RDV11 (Bit 30) */ -#define USIC_CH_RBUF01SR_RDV11_Msk \ - (0x40000000UL) /*!< USIC_CH RBUF01SR: RDV11 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_DS1_Pos \ - (31UL) /*!< USIC_CH RBUF01SR: DS1 (Bit 31) */ -#define USIC_CH_RBUF01SR_DS1_Msk \ - (0x80000000UL) /*!< USIC_CH RBUF01SR: DS1 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USIC_CH_FMR -------------------------------- */ -#define USIC_CH_FMR_MTDV_Pos \ - (0UL) /*!< USIC_CH FMR: MTDV (Bit 0) */ -#define USIC_CH_FMR_MTDV_Msk \ - (0x3UL) /*!< USIC_CH FMR: MTDV (Bitfield-Mask: 0x03) */ -#define USIC_CH_FMR_ATVC_Pos \ - (4UL) /*!< USIC_CH FMR: ATVC (Bit 4) */ -#define USIC_CH_FMR_ATVC_Msk \ - (0x10UL) /*!< USIC_CH FMR: ATVC (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_CRDV0_Pos \ - (14UL) /*!< USIC_CH FMR: CRDV0 (Bit 14) */ -#define USIC_CH_FMR_CRDV0_Msk \ - (0x4000UL) /*!< USIC_CH FMR: CRDV0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_CRDV1_Pos \ - (15UL) /*!< USIC_CH FMR: CRDV1 (Bit 15) */ -#define USIC_CH_FMR_CRDV1_Msk \ - (0x8000UL) /*!< USIC_CH FMR: CRDV1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO0_Pos \ - (16UL) /*!< USIC_CH FMR: SIO0 (Bit 16) */ -#define USIC_CH_FMR_SIO0_Msk \ - (0x10000UL) /*!< USIC_CH FMR: SIO0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO1_Pos \ - (17UL) /*!< USIC_CH FMR: SIO1 (Bit 17) */ -#define USIC_CH_FMR_SIO1_Msk \ - (0x20000UL) /*!< USIC_CH FMR: SIO1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO2_Pos \ - (18UL) /*!< USIC_CH FMR: SIO2 (Bit 18) */ -#define USIC_CH_FMR_SIO2_Msk \ - (0x40000UL) /*!< USIC_CH FMR: SIO2 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO3_Pos \ - (19UL) /*!< USIC_CH FMR: SIO3 (Bit 19) */ -#define USIC_CH_FMR_SIO3_Msk \ - (0x80000UL) /*!< USIC_CH FMR: SIO3 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO4_Pos \ - (20UL) /*!< USIC_CH FMR: SIO4 (Bit 20) */ -#define USIC_CH_FMR_SIO4_Msk \ - (0x100000UL) /*!< USIC_CH FMR: SIO4 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO5_Pos \ - (21UL) /*!< USIC_CH FMR: SIO5 (Bit 21) */ -#define USIC_CH_FMR_SIO5_Msk \ - (0x200000UL) /*!< USIC_CH FMR: SIO5 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_TBUF -------------------------------- */ -#define USIC_CH_TBUF_TDATA_Pos \ - (0UL) /*!< USIC_CH TBUF: TDATA (Bit 0) */ -#define USIC_CH_TBUF_TDATA_Msk \ - (0xffffUL) /*!< USIC_CH TBUF: TDATA (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- USIC_CH_BYP -------------------------------- */ -#define USIC_CH_BYP_BDATA_Pos \ - (0UL) /*!< USIC_CH BYP: BDATA (Bit 0) */ -#define USIC_CH_BYP_BDATA_Msk \ - (0xffffUL) /*!< USIC_CH BYP: BDATA (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USIC_CH_BYPCR ------------------------------- */ -#define USIC_CH_BYPCR_BWLE_Pos \ - (0UL) /*!< USIC_CH BYPCR: BWLE (Bit 0) */ -#define USIC_CH_BYPCR_BWLE_Msk \ - (0xfUL) /*!< USIC_CH BYPCR: BWLE (Bitfield-Mask: 0x0f) */ -#define USIC_CH_BYPCR_BDSSM_Pos \ - (8UL) /*!< USIC_CH BYPCR: BDSSM (Bit 8) */ -#define USIC_CH_BYPCR_BDSSM_Msk \ - (0x100UL) /*!< USIC_CH BYPCR: BDSSM (Bitfield-Mask: 0x01) */ -#define USIC_CH_BYPCR_BDEN_Pos \ - (10UL) /*!< USIC_CH BYPCR: BDEN (Bit 10) */ -#define USIC_CH_BYPCR_BDEN_Msk \ - (0xc00UL) /*!< USIC_CH BYPCR: BDEN (Bitfield-Mask: 0x03) */ -#define USIC_CH_BYPCR_BDVTR_Pos \ - (12UL) /*!< USIC_CH BYPCR: BDVTR (Bit 12) */ -#define USIC_CH_BYPCR_BDVTR_Msk \ - (0x1000UL) /*!< USIC_CH BYPCR: BDVTR (Bitfield-Mask: 0x01) */ -#define USIC_CH_BYPCR_BPRIO_Pos \ - (13UL) /*!< USIC_CH BYPCR: BPRIO (Bit 13) */ -#define USIC_CH_BYPCR_BPRIO_Msk \ - (0x2000UL) /*!< USIC_CH BYPCR: BPRIO (Bitfield-Mask: 0x01) */ -#define USIC_CH_BYPCR_BDV_Pos \ - (15UL) /*!< USIC_CH BYPCR: BDV (Bit 15) */ -#define USIC_CH_BYPCR_BDV_Msk \ - (0x8000UL) /*!< USIC_CH BYPCR: BDV (Bitfield-Mask: 0x01) */ -#define USIC_CH_BYPCR_BSELO_Pos \ - (16UL) /*!< USIC_CH BYPCR: BSELO (Bit 16) */ -#define USIC_CH_BYPCR_BSELO_Msk \ - (0x1f0000UL) /*!< USIC_CH BYPCR: BSELO (Bitfield-Mask: 0x1f) */ -#define USIC_CH_BYPCR_BHPC_Pos \ - (21UL) /*!< USIC_CH BYPCR: BHPC (Bit 21) */ -#define USIC_CH_BYPCR_BHPC_Msk \ - (0xe00000UL) /*!< USIC_CH BYPCR: BHPC (Bitfield-Mask: 0x07) */ - -/* -------------------------------- USIC_CH_TBCTR ------------------------------- */ -#define USIC_CH_TBCTR_DPTR_Pos \ - (0UL) /*!< USIC_CH TBCTR: DPTR (Bit 0) */ -#define USIC_CH_TBCTR_DPTR_Msk \ - (0x3fUL) /*!< USIC_CH TBCTR: DPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TBCTR_LIMIT_Pos \ - (8UL) /*!< USIC_CH TBCTR: LIMIT (Bit 8) */ -#define USIC_CH_TBCTR_LIMIT_Msk \ - (0x3f00UL) /*!< USIC_CH TBCTR: LIMIT (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TBCTR_STBTM_Pos \ - (14UL) /*!< USIC_CH TBCTR: STBTM (Bit 14) */ -#define USIC_CH_TBCTR_STBTM_Msk \ - (0x4000UL) /*!< USIC_CH TBCTR: STBTM (Bitfield-Mask: 0x01) */ -#define USIC_CH_TBCTR_STBTEN_Pos \ - (15UL) /*!< USIC_CH TBCTR: STBTEN (Bit 15) */ -#define USIC_CH_TBCTR_STBTEN_Msk \ - (0x8000UL) /*!< USIC_CH TBCTR: STBTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_TBCTR_STBINP_Pos \ - (16UL) /*!< USIC_CH TBCTR: STBINP (Bit 16) */ -#define USIC_CH_TBCTR_STBINP_Msk \ - (0x70000UL) /*!< USIC_CH TBCTR: STBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_TBCTR_ATBINP_Pos \ - (19UL) /*!< USIC_CH TBCTR: ATBINP (Bit 19) */ -#define USIC_CH_TBCTR_ATBINP_Msk \ - (0x380000UL) /*!< USIC_CH TBCTR: ATBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_TBCTR_SIZE_Pos \ - (24UL) /*!< USIC_CH TBCTR: SIZE (Bit 24) */ -#define USIC_CH_TBCTR_SIZE_Msk \ - (0x7000000UL) /*!< USIC_CH TBCTR: SIZE (Bitfield-Mask: 0x07) */ -#define USIC_CH_TBCTR_LOF_Pos \ - (28UL) /*!< USIC_CH TBCTR: LOF (Bit 28) */ -#define USIC_CH_TBCTR_LOF_Msk \ - (0x10000000UL) /*!< USIC_CH TBCTR: LOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_TBCTR_STBIEN_Pos \ - (30UL) /*!< USIC_CH TBCTR: STBIEN (Bit 30) */ -#define USIC_CH_TBCTR_STBIEN_Msk \ - (0x40000000UL) /*!< USIC_CH TBCTR: STBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_TBCTR_TBERIEN_Pos \ - (31UL) /*!< USIC_CH TBCTR: TBERIEN (Bit 31) */ -#define USIC_CH_TBCTR_TBERIEN_Msk \ - (0x80000000UL) /*!< USIC_CH TBCTR: TBERIEN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_RBCTR ------------------------------- */ -#define USIC_CH_RBCTR_DPTR_Pos \ - (0UL) /*!< USIC_CH RBCTR: DPTR (Bit 0) */ -#define USIC_CH_RBCTR_DPTR_Msk \ - (0x3fUL) /*!< USIC_CH RBCTR: DPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_RBCTR_LIMIT_Pos \ - (8UL) /*!< USIC_CH RBCTR: LIMIT (Bit 8) */ -#define USIC_CH_RBCTR_LIMIT_Msk \ - (0x3f00UL) /*!< USIC_CH RBCTR: LIMIT (Bitfield-Mask: 0x3f) */ -#define USIC_CH_RBCTR_SRBTM_Pos \ - (14UL) /*!< USIC_CH RBCTR: SRBTM (Bit 14) */ -#define USIC_CH_RBCTR_SRBTM_Msk \ - (0x4000UL) /*!< USIC_CH RBCTR: SRBTM (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_SRBTEN_Pos \ - (15UL) /*!< USIC_CH RBCTR: SRBTEN (Bit 15) */ -#define USIC_CH_RBCTR_SRBTEN_Msk \ - (0x8000UL) /*!< USIC_CH RBCTR: SRBTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_SRBINP_Pos \ - (16UL) /*!< USIC_CH RBCTR: SRBINP (Bit 16) */ -#define USIC_CH_RBCTR_SRBINP_Msk \ - (0x70000UL) /*!< USIC_CH RBCTR: SRBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_RBCTR_ARBINP_Pos \ - (19UL) /*!< USIC_CH RBCTR: ARBINP (Bit 19) */ -#define USIC_CH_RBCTR_ARBINP_Msk \ - (0x380000UL) /*!< USIC_CH RBCTR: ARBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_RBCTR_RCIM_Pos \ - (22UL) /*!< USIC_CH RBCTR: RCIM (Bit 22) */ -#define USIC_CH_RBCTR_RCIM_Msk \ - (0xc00000UL) /*!< USIC_CH RBCTR: RCIM (Bitfield-Mask: 0x03) */ -#define USIC_CH_RBCTR_SIZE_Pos \ - (24UL) /*!< USIC_CH RBCTR: SIZE (Bit 24) */ -#define USIC_CH_RBCTR_SIZE_Msk \ - (0x7000000UL) /*!< USIC_CH RBCTR: SIZE (Bitfield-Mask: 0x07) */ -#define USIC_CH_RBCTR_RNM_Pos \ - (27UL) /*!< USIC_CH RBCTR: RNM (Bit 27) */ -#define USIC_CH_RBCTR_RNM_Msk \ - (0x8000000UL) /*!< USIC_CH RBCTR: RNM (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_LOF_Pos \ - (28UL) /*!< USIC_CH RBCTR: LOF (Bit 28) */ -#define USIC_CH_RBCTR_LOF_Msk \ - (0x10000000UL) /*!< USIC_CH RBCTR: LOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_ARBIEN_Pos \ - (29UL) /*!< USIC_CH RBCTR: ARBIEN (Bit 29) */ -#define USIC_CH_RBCTR_ARBIEN_Msk \ - (0x20000000UL) /*!< USIC_CH RBCTR: ARBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_SRBIEN_Pos \ - (30UL) /*!< USIC_CH RBCTR: SRBIEN (Bit 30) */ -#define USIC_CH_RBCTR_SRBIEN_Msk \ - (0x40000000UL) /*!< USIC_CH RBCTR: SRBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_RBERIEN_Pos \ - (31UL) /*!< USIC_CH RBCTR: RBERIEN (Bit 31) */ -#define USIC_CH_RBCTR_RBERIEN_Msk \ - (0x80000000UL) /*!< USIC_CH RBCTR: RBERIEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USIC_CH_TRBPTR ------------------------------- */ -#define USIC_CH_TRBPTR_TDIPTR_Pos \ - (0UL) /*!< USIC_CH TRBPTR: TDIPTR (Bit 0) */ -#define USIC_CH_TRBPTR_TDIPTR_Msk \ - (0x3fUL) /*!< USIC_CH TRBPTR: TDIPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TRBPTR_TDOPTR_Pos \ - (8UL) /*!< USIC_CH TRBPTR: TDOPTR (Bit 8) */ -#define USIC_CH_TRBPTR_TDOPTR_Msk \ - (0x3f00UL) /*!< USIC_CH TRBPTR: TDOPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TRBPTR_RDIPTR_Pos \ - (16UL) /*!< USIC_CH TRBPTR: RDIPTR (Bit 16) */ -#define USIC_CH_TRBPTR_RDIPTR_Msk \ - (0x3f0000UL) /*!< USIC_CH TRBPTR: RDIPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TRBPTR_RDOPTR_Pos \ - (24UL) /*!< USIC_CH TRBPTR: RDOPTR (Bit 24) */ -#define USIC_CH_TRBPTR_RDOPTR_Msk \ - (0x3f000000UL) /*!< USIC_CH TRBPTR: RDOPTR (Bitfield-Mask: 0x3f) */ - -/* -------------------------------- USIC_CH_TRBSR ------------------------------- */ -#define USIC_CH_TRBSR_SRBI_Pos \ - (0UL) /*!< USIC_CH TRBSR: SRBI (Bit 0) */ -#define USIC_CH_TRBSR_SRBI_Msk \ - (0x1UL) /*!< USIC_CH TRBSR: SRBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_RBERI_Pos \ - (1UL) /*!< USIC_CH TRBSR: RBERI (Bit 1) */ -#define USIC_CH_TRBSR_RBERI_Msk \ - (0x2UL) /*!< USIC_CH TRBSR: RBERI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_ARBI_Pos \ - (2UL) /*!< USIC_CH TRBSR: ARBI (Bit 2) */ -#define USIC_CH_TRBSR_ARBI_Msk \ - (0x4UL) /*!< USIC_CH TRBSR: ARBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_REMPTY_Pos \ - (3UL) /*!< USIC_CH TRBSR: REMPTY (Bit 3) */ -#define USIC_CH_TRBSR_REMPTY_Msk \ - (0x8UL) /*!< USIC_CH TRBSR: REMPTY (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_RFULL_Pos \ - (4UL) /*!< USIC_CH TRBSR: RFULL (Bit 4) */ -#define USIC_CH_TRBSR_RFULL_Msk \ - (0x10UL) /*!< USIC_CH TRBSR: RFULL (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_RBUS_Pos \ - (5UL) /*!< USIC_CH TRBSR: RBUS (Bit 5) */ -#define USIC_CH_TRBSR_RBUS_Msk \ - (0x20UL) /*!< USIC_CH TRBSR: RBUS (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_SRBT_Pos \ - (6UL) /*!< USIC_CH TRBSR: SRBT (Bit 6) */ -#define USIC_CH_TRBSR_SRBT_Msk \ - (0x40UL) /*!< USIC_CH TRBSR: SRBT (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_STBI_Pos \ - (8UL) /*!< USIC_CH TRBSR: STBI (Bit 8) */ -#define USIC_CH_TRBSR_STBI_Msk \ - (0x100UL) /*!< USIC_CH TRBSR: STBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_TBERI_Pos \ - (9UL) /*!< USIC_CH TRBSR: TBERI (Bit 9) */ -#define USIC_CH_TRBSR_TBERI_Msk \ - (0x200UL) /*!< USIC_CH TRBSR: TBERI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_TEMPTY_Pos \ - (11UL) /*!< USIC_CH TRBSR: TEMPTY (Bit 11) */ -#define USIC_CH_TRBSR_TEMPTY_Msk \ - (0x800UL) /*!< USIC_CH TRBSR: TEMPTY (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_TFULL_Pos \ - (12UL) /*!< USIC_CH TRBSR: TFULL (Bit 12) */ -#define USIC_CH_TRBSR_TFULL_Msk \ - (0x1000UL) /*!< USIC_CH TRBSR: TFULL (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_TBUS_Pos \ - (13UL) /*!< USIC_CH TRBSR: TBUS (Bit 13) */ -#define USIC_CH_TRBSR_TBUS_Msk \ - (0x2000UL) /*!< USIC_CH TRBSR: TBUS (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_STBT_Pos \ - (14UL) /*!< USIC_CH TRBSR: STBT (Bit 14) */ -#define USIC_CH_TRBSR_STBT_Msk \ - (0x4000UL) /*!< USIC_CH TRBSR: STBT (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_RBFLVL_Pos \ - (16UL) /*!< USIC_CH TRBSR: RBFLVL (Bit 16) */ -#define USIC_CH_TRBSR_RBFLVL_Msk \ - (0x7f0000UL) /*!< USIC_CH TRBSR: RBFLVL (Bitfield-Mask: 0x7f) */ -#define USIC_CH_TRBSR_TBFLVL_Pos \ - (24UL) /*!< USIC_CH TRBSR: TBFLVL (Bit 24) */ -#define USIC_CH_TRBSR_TBFLVL_Msk \ - (0x7f000000UL) /*!< USIC_CH TRBSR: TBFLVL (Bitfield-Mask: 0x7f) */ - -/* ------------------------------- USIC_CH_TRBSCR ------------------------------- */ -#define USIC_CH_TRBSCR_CSRBI_Pos \ - (0UL) /*!< USIC_CH TRBSCR: CSRBI (Bit 0) */ -#define USIC_CH_TRBSCR_CSRBI_Msk \ - (0x1UL) /*!< USIC_CH TRBSCR: CSRBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CRBERI_Pos \ - (1UL) /*!< USIC_CH TRBSCR: CRBERI (Bit 1) */ -#define USIC_CH_TRBSCR_CRBERI_Msk \ - (0x2UL) /*!< USIC_CH TRBSCR: CRBERI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CARBI_Pos \ - (2UL) /*!< USIC_CH TRBSCR: CARBI (Bit 2) */ -#define USIC_CH_TRBSCR_CARBI_Msk \ - (0x4UL) /*!< USIC_CH TRBSCR: CARBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CSTBI_Pos \ - (8UL) /*!< USIC_CH TRBSCR: CSTBI (Bit 8) */ -#define USIC_CH_TRBSCR_CSTBI_Msk \ - (0x100UL) /*!< USIC_CH TRBSCR: CSTBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CTBERI_Pos \ - (9UL) /*!< USIC_CH TRBSCR: CTBERI (Bit 9) */ -#define USIC_CH_TRBSCR_CTBERI_Msk \ - (0x200UL) /*!< USIC_CH TRBSCR: CTBERI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CBDV_Pos \ - (10UL) /*!< USIC_CH TRBSCR: CBDV (Bit 10) */ -#define USIC_CH_TRBSCR_CBDV_Msk \ - (0x400UL) /*!< USIC_CH TRBSCR: CBDV (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_FLUSHRB_Pos \ - (14UL) /*!< USIC_CH TRBSCR: FLUSHRB (Bit 14) */ -#define USIC_CH_TRBSCR_FLUSHRB_Msk \ - (0x4000UL) /*!< USIC_CH TRBSCR: FLUSHRB (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_FLUSHTB_Pos \ - (15UL) /*!< USIC_CH TRBSCR: FLUSHTB (Bit 15) */ -#define USIC_CH_TRBSCR_FLUSHTB_Msk \ - (0x8000UL) /*!< USIC_CH TRBSCR: FLUSHTB (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_OUTR -------------------------------- */ -#define USIC_CH_OUTR_DSR_Pos \ - (0UL) /*!< USIC_CH OUTR: DSR (Bit 0) */ -#define USIC_CH_OUTR_DSR_Msk \ - (0xffffUL) /*!< USIC_CH OUTR: DSR (Bitfield-Mask: 0xffff) */ -#define USIC_CH_OUTR_RCI_Pos \ - (16UL) /*!< USIC_CH OUTR: RCI (Bit 16) */ -#define USIC_CH_OUTR_RCI_Msk \ - (0x1f0000UL) /*!< USIC_CH OUTR: RCI (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- USIC_CH_OUTDR ------------------------------- */ -#define USIC_CH_OUTDR_DSR_Pos \ - (0UL) /*!< USIC_CH OUTDR: DSR (Bit 0) */ -#define USIC_CH_OUTDR_DSR_Msk \ - (0xffffUL) /*!< USIC_CH OUTDR: DSR (Bitfield-Mask: 0xffff) */ -#define USIC_CH_OUTDR_RCI_Pos \ - (16UL) /*!< USIC_CH OUTDR: RCI (Bit 16) */ -#define USIC_CH_OUTDR_RCI_Msk \ - (0x1f0000UL) /*!< USIC_CH OUTDR: RCI (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- USIC_CH_IN --------------------------------- */ -#define USIC_CH_IN_TDATA_Pos \ - (0UL) /*!< USIC_CH IN: TDATA (Bit 0) */ -#define USIC_CH_IN_TDATA_Msk \ - (0xffffUL) /*!< USIC_CH IN: TDATA (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ struct 'CAN' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- CAN_CLC ---------------------------------- */ -#define CAN_CLC_DISR_Pos (0UL) /*!< CAN CLC: DISR (Bit 0) */ -#define CAN_CLC_DISR_Msk (0x1UL) /*!< CAN CLC: DISR (Bitfield-Mask: 0x01) */ -#define CAN_CLC_DISS_Pos (1UL) /*!< CAN CLC: DISS (Bit 1) */ -#define CAN_CLC_DISS_Msk (0x2UL) /*!< CAN CLC: DISS (Bitfield-Mask: 0x01) */ -#define CAN_CLC_EDIS_Pos (3UL) /*!< CAN CLC: EDIS (Bit 3) */ -#define CAN_CLC_EDIS_Msk (0x8UL) /*!< CAN CLC: EDIS (Bitfield-Mask: 0x01) */ -#define CAN_CLC_SBWE_Pos (4UL) /*!< CAN CLC: SBWE (Bit 4) */ -#define CAN_CLC_SBWE_Msk \ - (0x10UL) /*!< CAN CLC: SBWE (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- CAN_ID ----------------------------------- */ -#define CAN_ID_MOD_REV_Pos (0UL) /*!< CAN ID: MOD_REV (Bit 0) */ -#define CAN_ID_MOD_REV_Msk \ - (0xffUL) /*!< CAN ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define CAN_ID_MOD_TYPE_Pos \ - (8UL) /*!< CAN ID: MOD_TYPE (Bit 8) */ -#define CAN_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< CAN ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define CAN_ID_MOD_NUMBER_Pos \ - (16UL) /*!< CAN ID: MOD_NUMBER (Bit 16) */ -#define CAN_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< CAN ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- CAN_FDR ---------------------------------- */ -#define CAN_FDR_STEP_Pos (0UL) /*!< CAN FDR: STEP (Bit 0) */ -#define CAN_FDR_STEP_Msk \ - (0x3ffUL) /*!< CAN FDR: STEP (Bitfield-Mask: 0x3ff) */ -#define CAN_FDR_SM_Pos (11UL) /*!< CAN FDR: SM (Bit 11) */ -#define CAN_FDR_SM_Msk (0x800UL) /*!< CAN FDR: SM (Bitfield-Mask: 0x01) */ -#define CAN_FDR_SC_Pos (12UL) /*!< CAN FDR: SC (Bit 12) */ -#define CAN_FDR_SC_Msk \ - (0x3000UL) /*!< CAN FDR: SC (Bitfield-Mask: 0x03) */ -#define CAN_FDR_DM_Pos (14UL) /*!< CAN FDR: DM (Bit 14) */ -#define CAN_FDR_DM_Msk \ - (0xc000UL) /*!< CAN FDR: DM (Bitfield-Mask: 0x03) */ -#define CAN_FDR_RESULT_Pos \ - (16UL) /*!< CAN FDR: RESULT (Bit 16) */ -#define CAN_FDR_RESULT_Msk \ - (0x3ff0000UL) /*!< CAN FDR: RESULT (Bitfield-Mask: 0x3ff) */ -#define CAN_FDR_SUSACK_Pos \ - (28UL) /*!< CAN FDR: SUSACK (Bit 28) */ -#define CAN_FDR_SUSACK_Msk \ - (0x10000000UL) /*!< CAN FDR: SUSACK (Bitfield-Mask: 0x01) */ -#define CAN_FDR_SUSREQ_Pos \ - (29UL) /*!< CAN FDR: SUSREQ (Bit 29) */ -#define CAN_FDR_SUSREQ_Msk \ - (0x20000000UL) /*!< CAN FDR: SUSREQ (Bitfield-Mask: 0x01) */ -#define CAN_FDR_ENHW_Pos (30UL) /*!< CAN FDR: ENHW (Bit 30) */ -#define CAN_FDR_ENHW_Msk \ - (0x40000000UL) /*!< CAN FDR: ENHW (Bitfield-Mask: 0x01) */ -#define CAN_FDR_DISCLK_Pos \ - (31UL) /*!< CAN FDR: DISCLK (Bit 31) */ -#define CAN_FDR_DISCLK_Msk \ - (0x80000000UL) /*!< CAN FDR: DISCLK (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CAN_LIST ---------------------------------- */ -#define CAN_LIST_BEGIN_Pos (0UL) /*!< CAN LIST: BEGIN (Bit 0) */ -#define CAN_LIST_BEGIN_Msk \ - (0xffUL) /*!< CAN LIST: BEGIN (Bitfield-Mask: 0xff) */ -#define CAN_LIST_END_Pos (8UL) /*!< CAN LIST: END (Bit 8) */ -#define CAN_LIST_END_Msk \ - (0xff00UL) /*!< CAN LIST: END (Bitfield-Mask: 0xff) */ -#define CAN_LIST_SIZE_Pos (16UL) /*!< CAN LIST: SIZE (Bit 16) */ -#define CAN_LIST_SIZE_Msk \ - (0xff0000UL) /*!< CAN LIST: SIZE (Bitfield-Mask: 0xff) */ -#define CAN_LIST_EMPTY_Pos \ - (24UL) /*!< CAN LIST: EMPTY (Bit 24) */ -#define CAN_LIST_EMPTY_Msk \ - (0x1000000UL) /*!< CAN LIST: EMPTY (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CAN_MSPND --------------------------------- */ -#define CAN_MSPND_PND_Pos (0UL) /*!< CAN MSPND: PND (Bit 0) */ -#define CAN_MSPND_PND_Msk \ - (0xffffffffUL) /*!< CAN MSPND: PND (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- CAN_MSID ---------------------------------- */ -#define CAN_MSID_INDEX_Pos (0UL) /*!< CAN MSID: INDEX (Bit 0) */ -#define CAN_MSID_INDEX_Msk \ - (0x3fUL) /*!< CAN MSID: INDEX (Bitfield-Mask: 0x3f) */ - -/* --------------------------------- CAN_MSIMASK -------------------------------- */ -#define CAN_MSIMASK_IM_Pos (0UL) /*!< CAN MSIMASK: IM (Bit 0) */ -#define CAN_MSIMASK_IM_Msk \ - (0xffffffffUL) /*!< CAN MSIMASK: IM (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- CAN_PANCTR --------------------------------- */ -#define CAN_PANCTR_PANCMD_Pos \ - (0UL) /*!< CAN PANCTR: PANCMD (Bit 0) */ -#define CAN_PANCTR_PANCMD_Msk \ - (0xffUL) /*!< CAN PANCTR: PANCMD (Bitfield-Mask: 0xff) */ -#define CAN_PANCTR_BUSY_Pos \ - (8UL) /*!< CAN PANCTR: BUSY (Bit 8) */ -#define CAN_PANCTR_BUSY_Msk \ - (0x100UL) /*!< CAN PANCTR: BUSY (Bitfield-Mask: 0x01) */ -#define CAN_PANCTR_RBUSY_Pos \ - (9UL) /*!< CAN PANCTR: RBUSY (Bit 9) */ -#define CAN_PANCTR_RBUSY_Msk \ - (0x200UL) /*!< CAN PANCTR: RBUSY (Bitfield-Mask: 0x01) */ -#define CAN_PANCTR_PANAR1_Pos \ - (16UL) /*!< CAN PANCTR: PANAR1 (Bit 16) */ -#define CAN_PANCTR_PANAR1_Msk \ - (0xff0000UL) /*!< CAN PANCTR: PANAR1 (Bitfield-Mask: 0xff) */ -#define CAN_PANCTR_PANAR2_Pos \ - (24UL) /*!< CAN PANCTR: PANAR2 (Bit 24) */ -#define CAN_PANCTR_PANAR2_Msk \ - (0xff000000UL) /*!< CAN PANCTR: PANAR2 (Bitfield-Mask: 0xff) */ - -/* ----------------------------------- CAN_MCR ---------------------------------- */ -#define CAN_MCR_MPSEL_Pos (12UL) /*!< CAN MCR: MPSEL (Bit 12) */ -#define CAN_MCR_MPSEL_Msk \ - (0xf000UL) /*!< CAN MCR: MPSEL (Bitfield-Mask: 0x0f) */ - -/* ---------------------------------- CAN_MITR ---------------------------------- */ -#define CAN_MITR_IT_Pos (0UL) /*!< CAN MITR: IT (Bit 0) */ -#define CAN_MITR_IT_Msk (0xffUL) /*!< CAN MITR: IT (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ Group 'CAN_NODE' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- CAN_NODE_NCR -------------------------------- */ -#define CAN_NODE_NCR_INIT_Pos \ - (0UL) /*!< CAN_NODE NCR: INIT (Bit 0) */ -#define CAN_NODE_NCR_INIT_Msk \ - (0x1UL) /*!< CAN_NODE NCR: INIT (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_TRIE_Pos \ - (1UL) /*!< CAN_NODE NCR: TRIE (Bit 1) */ -#define CAN_NODE_NCR_TRIE_Msk \ - (0x2UL) /*!< CAN_NODE NCR: TRIE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_LECIE_Pos \ - (2UL) /*!< CAN_NODE NCR: LECIE (Bit 2) */ -#define CAN_NODE_NCR_LECIE_Msk \ - (0x4UL) /*!< CAN_NODE NCR: LECIE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_ALIE_Pos \ - (3UL) /*!< CAN_NODE NCR: ALIE (Bit 3) */ -#define CAN_NODE_NCR_ALIE_Msk \ - (0x8UL) /*!< CAN_NODE NCR: ALIE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_CANDIS_Pos \ - (4UL) /*!< CAN_NODE NCR: CANDIS (Bit 4) */ -#define CAN_NODE_NCR_CANDIS_Msk \ - (0x10UL) /*!< CAN_NODE NCR: CANDIS (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_CCE_Pos \ - (6UL) /*!< CAN_NODE NCR: CCE (Bit 6) */ -#define CAN_NODE_NCR_CCE_Msk \ - (0x40UL) /*!< CAN_NODE NCR: CCE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_CALM_Pos \ - (7UL) /*!< CAN_NODE NCR: CALM (Bit 7) */ -#define CAN_NODE_NCR_CALM_Msk \ - (0x80UL) /*!< CAN_NODE NCR: CALM (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_SUSEN_Pos \ - (8UL) /*!< CAN_NODE NCR: SUSEN (Bit 8) */ -#define CAN_NODE_NCR_SUSEN_Msk \ - (0x100UL) /*!< CAN_NODE NCR: SUSEN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_NODE_NSR -------------------------------- */ -#define CAN_NODE_NSR_LEC_Pos \ - (0UL) /*!< CAN_NODE NSR: LEC (Bit 0) */ -#define CAN_NODE_NSR_LEC_Msk \ - (0x7UL) /*!< CAN_NODE NSR: LEC (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NSR_TXOK_Pos \ - (3UL) /*!< CAN_NODE NSR: TXOK (Bit 3) */ -#define CAN_NODE_NSR_TXOK_Msk \ - (0x8UL) /*!< CAN_NODE NSR: TXOK (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_RXOK_Pos \ - (4UL) /*!< CAN_NODE NSR: RXOK (Bit 4) */ -#define CAN_NODE_NSR_RXOK_Msk \ - (0x10UL) /*!< CAN_NODE NSR: RXOK (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_ALERT_Pos \ - (5UL) /*!< CAN_NODE NSR: ALERT (Bit 5) */ -#define CAN_NODE_NSR_ALERT_Msk \ - (0x20UL) /*!< CAN_NODE NSR: ALERT (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_EWRN_Pos \ - (6UL) /*!< CAN_NODE NSR: EWRN (Bit 6) */ -#define CAN_NODE_NSR_EWRN_Msk \ - (0x40UL) /*!< CAN_NODE NSR: EWRN (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_BOFF_Pos \ - (7UL) /*!< CAN_NODE NSR: BOFF (Bit 7) */ -#define CAN_NODE_NSR_BOFF_Msk \ - (0x80UL) /*!< CAN_NODE NSR: BOFF (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_LLE_Pos \ - (8UL) /*!< CAN_NODE NSR: LLE (Bit 8) */ -#define CAN_NODE_NSR_LLE_Msk \ - (0x100UL) /*!< CAN_NODE NSR: LLE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_LOE_Pos \ - (9UL) /*!< CAN_NODE NSR: LOE (Bit 9) */ -#define CAN_NODE_NSR_LOE_Msk \ - (0x200UL) /*!< CAN_NODE NSR: LOE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_SUSACK_Pos \ - (10UL) /*!< CAN_NODE NSR: SUSACK (Bit 10) */ -#define CAN_NODE_NSR_SUSACK_Msk \ - (0x400UL) /*!< CAN_NODE NSR: SUSACK (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_NODE_NIPR ------------------------------- */ -#define CAN_NODE_NIPR_ALINP_Pos \ - (0UL) /*!< CAN_NODE NIPR: ALINP (Bit 0) */ -#define CAN_NODE_NIPR_ALINP_Msk \ - (0x7UL) /*!< CAN_NODE NIPR: ALINP (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NIPR_LECINP_Pos \ - (4UL) /*!< CAN_NODE NIPR: LECINP (Bit 4) */ -#define CAN_NODE_NIPR_LECINP_Msk \ - (0x70UL) /*!< CAN_NODE NIPR: LECINP (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NIPR_TRINP_Pos \ - (8UL) /*!< CAN_NODE NIPR: TRINP (Bit 8) */ -#define CAN_NODE_NIPR_TRINP_Msk \ - (0x700UL) /*!< CAN_NODE NIPR: TRINP (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NIPR_CFCINP_Pos \ - (12UL) /*!< CAN_NODE NIPR: CFCINP (Bit 12) */ -#define CAN_NODE_NIPR_CFCINP_Msk \ - (0x7000UL) /*!< CAN_NODE NIPR: CFCINP (Bitfield-Mask: 0x07) */ - -/* -------------------------------- CAN_NODE_NPCR ------------------------------- */ -#define CAN_NODE_NPCR_RXSEL_Pos \ - (0UL) /*!< CAN_NODE NPCR: RXSEL (Bit 0) */ -#define CAN_NODE_NPCR_RXSEL_Msk \ - (0x7UL) /*!< CAN_NODE NPCR: RXSEL (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NPCR_LBM_Pos \ - (8UL) /*!< CAN_NODE NPCR: LBM (Bit 8) */ -#define CAN_NODE_NPCR_LBM_Msk \ - (0x100UL) /*!< CAN_NODE NPCR: LBM (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_NODE_NBTR ------------------------------- */ -#define CAN_NODE_NBTR_BRP_Pos \ - (0UL) /*!< CAN_NODE NBTR: BRP (Bit 0) */ -#define CAN_NODE_NBTR_BRP_Msk \ - (0x3fUL) /*!< CAN_NODE NBTR: BRP (Bitfield-Mask: 0x3f) */ -#define CAN_NODE_NBTR_SJW_Pos \ - (6UL) /*!< CAN_NODE NBTR: SJW (Bit 6) */ -#define CAN_NODE_NBTR_SJW_Msk \ - (0xc0UL) /*!< CAN_NODE NBTR: SJW (Bitfield-Mask: 0x03) */ -#define CAN_NODE_NBTR_TSEG1_Pos \ - (8UL) /*!< CAN_NODE NBTR: TSEG1 (Bit 8) */ -#define CAN_NODE_NBTR_TSEG1_Msk \ - (0xf00UL) /*!< CAN_NODE NBTR: TSEG1 (Bitfield-Mask: 0x0f) */ -#define CAN_NODE_NBTR_TSEG2_Pos \ - (12UL) /*!< CAN_NODE NBTR: TSEG2 (Bit 12) */ -#define CAN_NODE_NBTR_TSEG2_Msk \ - (0x7000UL) /*!< CAN_NODE NBTR: TSEG2 (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NBTR_DIV8_Pos \ - (15UL) /*!< CAN_NODE NBTR: DIV8 (Bit 15) */ -#define CAN_NODE_NBTR_DIV8_Msk \ - (0x8000UL) /*!< CAN_NODE NBTR: DIV8 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CAN_NODE_NECNT ------------------------------- */ -#define CAN_NODE_NECNT_REC_Pos \ - (0UL) /*!< CAN_NODE NECNT: REC (Bit 0) */ -#define CAN_NODE_NECNT_REC_Msk \ - (0xffUL) /*!< CAN_NODE NECNT: REC (Bitfield-Mask: 0xff) */ -#define CAN_NODE_NECNT_TEC_Pos \ - (8UL) /*!< CAN_NODE NECNT: TEC (Bit 8) */ -#define CAN_NODE_NECNT_TEC_Msk \ - (0xff00UL) /*!< CAN_NODE NECNT: TEC (Bitfield-Mask: 0xff) */ -#define CAN_NODE_NECNT_EWRNLVL_Pos \ - (16UL) /*!< CAN_NODE NECNT: EWRNLVL (Bit 16) */ -#define CAN_NODE_NECNT_EWRNLVL_Msk \ - (0xff0000UL) /*!< CAN_NODE NECNT: EWRNLVL (Bitfield-Mask: 0xff) */ -#define CAN_NODE_NECNT_LETD_Pos \ - (24UL) /*!< CAN_NODE NECNT: LETD (Bit 24) */ -#define CAN_NODE_NECNT_LETD_Msk \ - (0x1000000UL) /*!< CAN_NODE NECNT: LETD (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NECNT_LEINC_Pos \ - (25UL) /*!< CAN_NODE NECNT: LEINC (Bit 25) */ -#define CAN_NODE_NECNT_LEINC_Msk \ - (0x2000000UL) /*!< CAN_NODE NECNT: LEINC (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_NODE_NFCR ------------------------------- */ -#define CAN_NODE_NFCR_CFC_Pos \ - (0UL) /*!< CAN_NODE NFCR: CFC (Bit 0) */ -#define CAN_NODE_NFCR_CFC_Msk \ - (0xffffUL) /*!< CAN_NODE NFCR: CFC (Bitfield-Mask: 0xffff) */ -#define CAN_NODE_NFCR_CFSEL_Pos \ - (16UL) /*!< CAN_NODE NFCR: CFSEL (Bit 16) */ -#define CAN_NODE_NFCR_CFSEL_Msk \ - (0x70000UL) /*!< CAN_NODE NFCR: CFSEL (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NFCR_CFMOD_Pos \ - (19UL) /*!< CAN_NODE NFCR: CFMOD (Bit 19) */ -#define CAN_NODE_NFCR_CFMOD_Msk \ - (0x180000UL) /*!< CAN_NODE NFCR: CFMOD (Bitfield-Mask: 0x03) */ -#define CAN_NODE_NFCR_CFCIE_Pos \ - (22UL) /*!< CAN_NODE NFCR: CFCIE (Bit 22) */ -#define CAN_NODE_NFCR_CFCIE_Msk \ - (0x400000UL) /*!< CAN_NODE NFCR: CFCIE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NFCR_CFCOV_Pos \ - (23UL) /*!< CAN_NODE NFCR: CFCOV (Bit 23) */ -#define CAN_NODE_NFCR_CFCOV_Msk \ - (0x800000UL) /*!< CAN_NODE NFCR: CFCOV (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'CAN_MO' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- CAN_MO_MOFCR -------------------------------- */ -#define CAN_MO_MOFCR_MMC_Pos \ - (0UL) /*!< CAN_MO MOFCR: MMC (Bit 0) */ -#define CAN_MO_MOFCR_MMC_Msk \ - (0xfUL) /*!< CAN_MO MOFCR: MMC (Bitfield-Mask: 0x0f) */ -#define CAN_MO_MOFCR_GDFS_Pos \ - (8UL) /*!< CAN_MO MOFCR: GDFS (Bit 8) */ -#define CAN_MO_MOFCR_GDFS_Msk \ - (0x100UL) /*!< CAN_MO MOFCR: GDFS (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_IDC_Pos \ - (9UL) /*!< CAN_MO MOFCR: IDC (Bit 9) */ -#define CAN_MO_MOFCR_IDC_Msk \ - (0x200UL) /*!< CAN_MO MOFCR: IDC (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_DLCC_Pos \ - (10UL) /*!< CAN_MO MOFCR: DLCC (Bit 10) */ -#define CAN_MO_MOFCR_DLCC_Msk \ - (0x400UL) /*!< CAN_MO MOFCR: DLCC (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_DATC_Pos \ - (11UL) /*!< CAN_MO MOFCR: DATC (Bit 11) */ -#define CAN_MO_MOFCR_DATC_Msk \ - (0x800UL) /*!< CAN_MO MOFCR: DATC (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_RXIE_Pos \ - (16UL) /*!< CAN_MO MOFCR: RXIE (Bit 16) */ -#define CAN_MO_MOFCR_RXIE_Msk \ - (0x10000UL) /*!< CAN_MO MOFCR: RXIE (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_TXIE_Pos \ - (17UL) /*!< CAN_MO MOFCR: TXIE (Bit 17) */ -#define CAN_MO_MOFCR_TXIE_Msk \ - (0x20000UL) /*!< CAN_MO MOFCR: TXIE (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_OVIE_Pos \ - (18UL) /*!< CAN_MO MOFCR: OVIE (Bit 18) */ -#define CAN_MO_MOFCR_OVIE_Msk \ - (0x40000UL) /*!< CAN_MO MOFCR: OVIE (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_FRREN_Pos \ - (20UL) /*!< CAN_MO MOFCR: FRREN (Bit 20) */ -#define CAN_MO_MOFCR_FRREN_Msk \ - (0x100000UL) /*!< CAN_MO MOFCR: FRREN (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_RMM_Pos \ - (21UL) /*!< CAN_MO MOFCR: RMM (Bit 21) */ -#define CAN_MO_MOFCR_RMM_Msk \ - (0x200000UL) /*!< CAN_MO MOFCR: RMM (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_SDT_Pos \ - (22UL) /*!< CAN_MO MOFCR: SDT (Bit 22) */ -#define CAN_MO_MOFCR_SDT_Msk \ - (0x400000UL) /*!< CAN_MO MOFCR: SDT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_STT_Pos \ - (23UL) /*!< CAN_MO MOFCR: STT (Bit 23) */ -#define CAN_MO_MOFCR_STT_Msk \ - (0x800000UL) /*!< CAN_MO MOFCR: STT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_DLC_Pos \ - (24UL) /*!< CAN_MO MOFCR: DLC (Bit 24) */ -#define CAN_MO_MOFCR_DLC_Msk \ - (0xf000000UL) /*!< CAN_MO MOFCR: DLC (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CAN_MO_MOFGPR ------------------------------- */ -#define CAN_MO_MOFGPR_BOT_Pos \ - (0UL) /*!< CAN_MO MOFGPR: BOT (Bit 0) */ -#define CAN_MO_MOFGPR_BOT_Msk \ - (0xffUL) /*!< CAN_MO MOFGPR: BOT (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOFGPR_TOP_Pos \ - (8UL) /*!< CAN_MO MOFGPR: TOP (Bit 8) */ -#define CAN_MO_MOFGPR_TOP_Msk \ - (0xff00UL) /*!< CAN_MO MOFGPR: TOP (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOFGPR_CUR_Pos \ - (16UL) /*!< CAN_MO MOFGPR: CUR (Bit 16) */ -#define CAN_MO_MOFGPR_CUR_Msk \ - (0xff0000UL) /*!< CAN_MO MOFGPR: CUR (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOFGPR_SEL_Pos \ - (24UL) /*!< CAN_MO MOFGPR: SEL (Bit 24) */ -#define CAN_MO_MOFGPR_SEL_Msk \ - (0xff000000UL) /*!< CAN_MO MOFGPR: SEL (Bitfield-Mask: 0xff) */ - -/* -------------------------------- CAN_MO_MOIPR -------------------------------- */ -#define CAN_MO_MOIPR_RXINP_Pos \ - (0UL) /*!< CAN_MO MOIPR: RXINP (Bit 0) */ -#define CAN_MO_MOIPR_RXINP_Msk \ - (0x7UL) /*!< CAN_MO MOIPR: RXINP (Bitfield-Mask: 0x07) */ -#define CAN_MO_MOIPR_TXINP_Pos \ - (4UL) /*!< CAN_MO MOIPR: TXINP (Bit 4) */ -#define CAN_MO_MOIPR_TXINP_Msk \ - (0x70UL) /*!< CAN_MO MOIPR: TXINP (Bitfield-Mask: 0x07) */ -#define CAN_MO_MOIPR_MPN_Pos \ - (8UL) /*!< CAN_MO MOIPR: MPN (Bit 8) */ -#define CAN_MO_MOIPR_MPN_Msk \ - (0xff00UL) /*!< CAN_MO MOIPR: MPN (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOIPR_CFCVAL_Pos \ - (16UL) /*!< CAN_MO MOIPR: CFCVAL (Bit 16) */ -#define CAN_MO_MOIPR_CFCVAL_Msk \ - (0xffff0000UL) /*!< CAN_MO MOIPR: CFCVAL (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CAN_MO_MOAMR -------------------------------- */ -#define CAN_MO_MOAMR_AM_Pos \ - (0UL) /*!< CAN_MO MOAMR: AM (Bit 0) */ -#define CAN_MO_MOAMR_AM_Msk \ - (0x1fffffffUL) /*!< CAN_MO MOAMR: AM (Bitfield-Mask: 0x1fffffff) */ -#define CAN_MO_MOAMR_MIDE_Pos \ - (29UL) /*!< CAN_MO MOAMR: MIDE (Bit 29) */ -#define CAN_MO_MOAMR_MIDE_Msk \ - (0x20000000UL) /*!< CAN_MO MOAMR: MIDE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CAN_MO_MODATAL ------------------------------- */ -#define CAN_MO_MODATAL_DB0_Pos \ - (0UL) /*!< CAN_MO MODATAL: DB0 (Bit 0) */ -#define CAN_MO_MODATAL_DB0_Msk \ - (0xffUL) /*!< CAN_MO MODATAL: DB0 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAL_DB1_Pos \ - (8UL) /*!< CAN_MO MODATAL: DB1 (Bit 8) */ -#define CAN_MO_MODATAL_DB1_Msk \ - (0xff00UL) /*!< CAN_MO MODATAL: DB1 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAL_DB2_Pos \ - (16UL) /*!< CAN_MO MODATAL: DB2 (Bit 16) */ -#define CAN_MO_MODATAL_DB2_Msk \ - (0xff0000UL) /*!< CAN_MO MODATAL: DB2 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAL_DB3_Pos \ - (24UL) /*!< CAN_MO MODATAL: DB3 (Bit 24) */ -#define CAN_MO_MODATAL_DB3_Msk \ - (0xff000000UL) /*!< CAN_MO MODATAL: DB3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- CAN_MO_MODATAH ------------------------------- */ -#define CAN_MO_MODATAH_DB4_Pos \ - (0UL) /*!< CAN_MO MODATAH: DB4 (Bit 0) */ -#define CAN_MO_MODATAH_DB4_Msk \ - (0xffUL) /*!< CAN_MO MODATAH: DB4 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAH_DB5_Pos \ - (8UL) /*!< CAN_MO MODATAH: DB5 (Bit 8) */ -#define CAN_MO_MODATAH_DB5_Msk \ - (0xff00UL) /*!< CAN_MO MODATAH: DB5 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAH_DB6_Pos \ - (16UL) /*!< CAN_MO MODATAH: DB6 (Bit 16) */ -#define CAN_MO_MODATAH_DB6_Msk \ - (0xff0000UL) /*!< CAN_MO MODATAH: DB6 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAH_DB7_Pos \ - (24UL) /*!< CAN_MO MODATAH: DB7 (Bit 24) */ -#define CAN_MO_MODATAH_DB7_Msk \ - (0xff000000UL) /*!< CAN_MO MODATAH: DB7 (Bitfield-Mask: 0xff) */ - -/* --------------------------------- CAN_MO_MOAR -------------------------------- */ -#define CAN_MO_MOAR_ID_Pos (0UL) /*!< CAN_MO MOAR: ID (Bit 0) */ -#define CAN_MO_MOAR_ID_Msk \ - (0x1fffffffUL) /*!< CAN_MO MOAR: ID (Bitfield-Mask: 0x1fffffff) */ -#define CAN_MO_MOAR_IDE_Pos \ - (29UL) /*!< CAN_MO MOAR: IDE (Bit 29) */ -#define CAN_MO_MOAR_IDE_Msk \ - (0x20000000UL) /*!< CAN_MO MOAR: IDE (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOAR_PRI_Pos \ - (30UL) /*!< CAN_MO MOAR: PRI (Bit 30) */ -#define CAN_MO_MOAR_PRI_Msk \ - (0xc0000000UL) /*!< CAN_MO MOAR: PRI (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CAN_MO_MOCTR -------------------------------- */ -#define CAN_MO_MOCTR_RESRXPND_Pos \ - (0UL) /*!< CAN_MO MOCTR: RESRXPND (Bit 0) */ -#define CAN_MO_MOCTR_RESRXPND_Msk \ - (0x1UL) /*!< CAN_MO MOCTR: RESRXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESTXPND_Pos \ - (1UL) /*!< CAN_MO MOCTR: RESTXPND (Bit 1) */ -#define CAN_MO_MOCTR_RESTXPND_Msk \ - (0x2UL) /*!< CAN_MO MOCTR: RESTXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESRXUPD_Pos \ - (2UL) /*!< CAN_MO MOCTR: RESRXUPD (Bit 2) */ -#define CAN_MO_MOCTR_RESRXUPD_Msk \ - (0x4UL) /*!< CAN_MO MOCTR: RESRXUPD (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESNEWDAT_Pos \ - (3UL) /*!< CAN_MO MOCTR: RESNEWDAT (Bit 3) */ -#define CAN_MO_MOCTR_RESNEWDAT_Msk \ - (0x8UL) /*!< CAN_MO MOCTR: RESNEWDAT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESMSGLST_Pos \ - (4UL) /*!< CAN_MO MOCTR: RESMSGLST (Bit 4) */ -#define CAN_MO_MOCTR_RESMSGLST_Msk \ - (0x10UL) /*!< CAN_MO MOCTR: RESMSGLST (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESMSGVAL_Pos \ - (5UL) /*!< CAN_MO MOCTR: RESMSGVAL (Bit 5) */ -#define CAN_MO_MOCTR_RESMSGVAL_Msk \ - (0x20UL) /*!< CAN_MO MOCTR: RESMSGVAL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESRTSEL_Pos \ - (6UL) /*!< CAN_MO MOCTR: RESRTSEL (Bit 6) */ -#define CAN_MO_MOCTR_RESRTSEL_Msk \ - (0x40UL) /*!< CAN_MO MOCTR: RESRTSEL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESRXEN_Pos \ - (7UL) /*!< CAN_MO MOCTR: RESRXEN (Bit 7) */ -#define CAN_MO_MOCTR_RESRXEN_Msk \ - (0x80UL) /*!< CAN_MO MOCTR: RESRXEN (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESTXRQ_Pos \ - (8UL) /*!< CAN_MO MOCTR: RESTXRQ (Bit 8) */ -#define CAN_MO_MOCTR_RESTXRQ_Msk \ - (0x100UL) /*!< CAN_MO MOCTR: RESTXRQ (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESTXEN0_Pos \ - (9UL) /*!< CAN_MO MOCTR: RESTXEN0 (Bit 9) */ -#define CAN_MO_MOCTR_RESTXEN0_Msk \ - (0x200UL) /*!< CAN_MO MOCTR: RESTXEN0 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESTXEN1_Pos \ - (10UL) /*!< CAN_MO MOCTR: RESTXEN1 (Bit 10) */ -#define CAN_MO_MOCTR_RESTXEN1_Msk \ - (0x400UL) /*!< CAN_MO MOCTR: RESTXEN1 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESDIR_Pos \ - (11UL) /*!< CAN_MO MOCTR: RESDIR (Bit 11) */ -#define CAN_MO_MOCTR_RESDIR_Msk \ - (0x800UL) /*!< CAN_MO MOCTR: RESDIR (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETRXPND_Pos \ - (16UL) /*!< CAN_MO MOCTR: SETRXPND (Bit 16) */ -#define CAN_MO_MOCTR_SETRXPND_Msk \ - (0x10000UL) /*!< CAN_MO MOCTR: SETRXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETTXPND_Pos \ - (17UL) /*!< CAN_MO MOCTR: SETTXPND (Bit 17) */ -#define CAN_MO_MOCTR_SETTXPND_Msk \ - (0x20000UL) /*!< CAN_MO MOCTR: SETTXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETRXUPD_Pos \ - (18UL) /*!< CAN_MO MOCTR: SETRXUPD (Bit 18) */ -#define CAN_MO_MOCTR_SETRXUPD_Msk \ - (0x40000UL) /*!< CAN_MO MOCTR: SETRXUPD (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETNEWDAT_Pos \ - (19UL) /*!< CAN_MO MOCTR: SETNEWDAT (Bit 19) */ -#define CAN_MO_MOCTR_SETNEWDAT_Msk \ - (0x80000UL) /*!< CAN_MO MOCTR: SETNEWDAT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETMSGLST_Pos \ - (20UL) /*!< CAN_MO MOCTR: SETMSGLST (Bit 20) */ -#define CAN_MO_MOCTR_SETMSGLST_Msk \ - (0x100000UL) /*!< CAN_MO MOCTR: SETMSGLST (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETMSGVAL_Pos \ - (21UL) /*!< CAN_MO MOCTR: SETMSGVAL (Bit 21) */ -#define CAN_MO_MOCTR_SETMSGVAL_Msk \ - (0x200000UL) /*!< CAN_MO MOCTR: SETMSGVAL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETRTSEL_Pos \ - (22UL) /*!< CAN_MO MOCTR: SETRTSEL (Bit 22) */ -#define CAN_MO_MOCTR_SETRTSEL_Msk \ - (0x400000UL) /*!< CAN_MO MOCTR: SETRTSEL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETRXEN_Pos \ - (23UL) /*!< CAN_MO MOCTR: SETRXEN (Bit 23) */ -#define CAN_MO_MOCTR_SETRXEN_Msk \ - (0x800000UL) /*!< CAN_MO MOCTR: SETRXEN (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETTXRQ_Pos \ - (24UL) /*!< CAN_MO MOCTR: SETTXRQ (Bit 24) */ -#define CAN_MO_MOCTR_SETTXRQ_Msk \ - (0x1000000UL) /*!< CAN_MO MOCTR: SETTXRQ (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETTXEN0_Pos \ - (25UL) /*!< CAN_MO MOCTR: SETTXEN0 (Bit 25) */ -#define CAN_MO_MOCTR_SETTXEN0_Msk \ - (0x2000000UL) /*!< CAN_MO MOCTR: SETTXEN0 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETTXEN1_Pos \ - (26UL) /*!< CAN_MO MOCTR: SETTXEN1 (Bit 26) */ -#define CAN_MO_MOCTR_SETTXEN1_Msk \ - (0x4000000UL) /*!< CAN_MO MOCTR: SETTXEN1 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETDIR_Pos \ - (27UL) /*!< CAN_MO MOCTR: SETDIR (Bit 27) */ -#define CAN_MO_MOCTR_SETDIR_Msk \ - (0x8000000UL) /*!< CAN_MO MOCTR: SETDIR (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_MO_MOSTAT ------------------------------- */ -#define CAN_MO_MOSTAT_RXPND_Pos \ - (0UL) /*!< CAN_MO MOSTAT: RXPND (Bit 0) */ -#define CAN_MO_MOSTAT_RXPND_Msk \ - (0x1UL) /*!< CAN_MO MOSTAT: RXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_TXPND_Pos \ - (1UL) /*!< CAN_MO MOSTAT: TXPND (Bit 1) */ -#define CAN_MO_MOSTAT_TXPND_Msk \ - (0x2UL) /*!< CAN_MO MOSTAT: TXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_RXUPD_Pos \ - (2UL) /*!< CAN_MO MOSTAT: RXUPD (Bit 2) */ -#define CAN_MO_MOSTAT_RXUPD_Msk \ - (0x4UL) /*!< CAN_MO MOSTAT: RXUPD (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_NEWDAT_Pos \ - (3UL) /*!< CAN_MO MOSTAT: NEWDAT (Bit 3) */ -#define CAN_MO_MOSTAT_NEWDAT_Msk \ - (0x8UL) /*!< CAN_MO MOSTAT: NEWDAT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_MSGLST_Pos \ - (4UL) /*!< CAN_MO MOSTAT: MSGLST (Bit 4) */ -#define CAN_MO_MOSTAT_MSGLST_Msk \ - (0x10UL) /*!< CAN_MO MOSTAT: MSGLST (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_MSGVAL_Pos \ - (5UL) /*!< CAN_MO MOSTAT: MSGVAL (Bit 5) */ -#define CAN_MO_MOSTAT_MSGVAL_Msk \ - (0x20UL) /*!< CAN_MO MOSTAT: MSGVAL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_RTSEL_Pos \ - (6UL) /*!< CAN_MO MOSTAT: RTSEL (Bit 6) */ -#define CAN_MO_MOSTAT_RTSEL_Msk \ - (0x40UL) /*!< CAN_MO MOSTAT: RTSEL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_RXEN_Pos \ - (7UL) /*!< CAN_MO MOSTAT: RXEN (Bit 7) */ -#define CAN_MO_MOSTAT_RXEN_Msk \ - (0x80UL) /*!< CAN_MO MOSTAT: RXEN (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_TXRQ_Pos \ - (8UL) /*!< CAN_MO MOSTAT: TXRQ (Bit 8) */ -#define CAN_MO_MOSTAT_TXRQ_Msk \ - (0x100UL) /*!< CAN_MO MOSTAT: TXRQ (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_TXEN0_Pos \ - (9UL) /*!< CAN_MO MOSTAT: TXEN0 (Bit 9) */ -#define CAN_MO_MOSTAT_TXEN0_Msk \ - (0x200UL) /*!< CAN_MO MOSTAT: TXEN0 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_TXEN1_Pos \ - (10UL) /*!< CAN_MO MOSTAT: TXEN1 (Bit 10) */ -#define CAN_MO_MOSTAT_TXEN1_Msk \ - (0x400UL) /*!< CAN_MO MOSTAT: TXEN1 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_DIR_Pos \ - (11UL) /*!< CAN_MO MOSTAT: DIR (Bit 11) */ -#define CAN_MO_MOSTAT_DIR_Msk \ - (0x800UL) /*!< CAN_MO MOSTAT: DIR (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_LIST_Pos \ - (12UL) /*!< CAN_MO MOSTAT: LIST (Bit 12) */ -#define CAN_MO_MOSTAT_LIST_Msk \ - (0xf000UL) /*!< CAN_MO MOSTAT: LIST (Bitfield-Mask: 0x0f) */ -#define CAN_MO_MOSTAT_PPREV_Pos \ - (16UL) /*!< CAN_MO MOSTAT: PPREV (Bit 16) */ -#define CAN_MO_MOSTAT_PPREV_Msk \ - (0xff0000UL) /*!< CAN_MO MOSTAT: PPREV (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOSTAT_PNEXT_Pos \ - (24UL) /*!< CAN_MO MOSTAT: PNEXT (Bit 24) */ -#define CAN_MO_MOSTAT_PNEXT_Msk \ - (0xff000000UL) /*!< CAN_MO MOSTAT: PNEXT (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'VADC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- VADC_CLC ---------------------------------- */ -#define VADC_CLC_DISR_Pos (0UL) /*!< VADC CLC: DISR (Bit 0) */ -#define VADC_CLC_DISR_Msk \ - (0x1UL) /*!< VADC CLC: DISR (Bitfield-Mask: 0x01) */ -#define VADC_CLC_DISS_Pos (1UL) /*!< VADC CLC: DISS (Bit 1) */ -#define VADC_CLC_DISS_Msk \ - (0x2UL) /*!< VADC CLC: DISS (Bitfield-Mask: 0x01) */ -#define VADC_CLC_EDIS_Pos (3UL) /*!< VADC CLC: EDIS (Bit 3) */ -#define VADC_CLC_EDIS_Msk \ - (0x8UL) /*!< VADC CLC: EDIS (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- VADC_ID ---------------------------------- */ -#define VADC_ID_MOD_REV_Pos \ - (0UL) /*!< VADC ID: MOD_REV (Bit 0) */ -#define VADC_ID_MOD_REV_Msk \ - (0xffUL) /*!< VADC ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define VADC_ID_MOD_TYPE_Pos \ - (8UL) /*!< VADC ID: MOD_TYPE (Bit 8) */ -#define VADC_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< VADC ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define VADC_ID_MOD_NUMBER_Pos \ - (16UL) /*!< VADC ID: MOD_NUMBER (Bit 16) */ -#define VADC_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< VADC ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- VADC_OCS ---------------------------------- */ -#define VADC_OCS_TGS_Pos (0UL) /*!< VADC OCS: TGS (Bit 0) */ -#define VADC_OCS_TGS_Msk (0x3UL) /*!< VADC OCS: TGS (Bitfield-Mask: 0x03) */ -#define VADC_OCS_TGB_Pos (2UL) /*!< VADC OCS: TGB (Bit 2) */ -#define VADC_OCS_TGB_Msk (0x4UL) /*!< VADC OCS: TGB (Bitfield-Mask: 0x01) */ -#define VADC_OCS_TG_P_Pos (3UL) /*!< VADC OCS: TG_P (Bit 3) */ -#define VADC_OCS_TG_P_Msk \ - (0x8UL) /*!< VADC OCS: TG_P (Bitfield-Mask: 0x01) */ -#define VADC_OCS_SUS_Pos (24UL) /*!< VADC OCS: SUS (Bit 24) */ -#define VADC_OCS_SUS_Msk \ - (0xf000000UL) /*!< VADC OCS: SUS (Bitfield-Mask: 0x0f) */ -#define VADC_OCS_SUS_P_Pos \ - (28UL) /*!< VADC OCS: SUS_P (Bit 28) */ -#define VADC_OCS_SUS_P_Msk \ - (0x10000000UL) /*!< VADC OCS: SUS_P (Bitfield-Mask: 0x01) */ -#define VADC_OCS_SUSSTA_Pos \ - (29UL) /*!< VADC OCS: SUSSTA (Bit 29) */ -#define VADC_OCS_SUSSTA_Msk \ - (0x20000000UL) /*!< VADC OCS: SUSSTA (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBCFG -------------------------------- */ -#define VADC_GLOBCFG_DIVA_Pos \ - (0UL) /*!< VADC GLOBCFG: DIVA (Bit 0) */ -#define VADC_GLOBCFG_DIVA_Msk \ - (0x1fUL) /*!< VADC GLOBCFG: DIVA (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBCFG_DCMSB_Pos \ - (7UL) /*!< VADC GLOBCFG: DCMSB (Bit 7) */ -#define VADC_GLOBCFG_DCMSB_Msk \ - (0x80UL) /*!< VADC GLOBCFG: DCMSB (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DIVD_Pos \ - (8UL) /*!< VADC GLOBCFG: DIVD (Bit 8) */ -#define VADC_GLOBCFG_DIVD_Msk \ - (0x300UL) /*!< VADC GLOBCFG: DIVD (Bitfield-Mask: 0x03) */ -#define VADC_GLOBCFG_DIVWC_Pos \ - (15UL) /*!< VADC GLOBCFG: DIVWC (Bit 15) */ -#define VADC_GLOBCFG_DIVWC_Msk \ - (0x8000UL) /*!< VADC GLOBCFG: DIVWC (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DPCAL0_Pos \ - (16UL) /*!< VADC GLOBCFG: DPCAL0 (Bit 16) */ -#define VADC_GLOBCFG_DPCAL0_Msk \ - (0x10000UL) /*!< VADC GLOBCFG: DPCAL0 (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DPCAL1_Pos \ - (17UL) /*!< VADC GLOBCFG: DPCAL1 (Bit 17) */ -#define VADC_GLOBCFG_DPCAL1_Msk \ - (0x20000UL) /*!< VADC GLOBCFG: DPCAL1 (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DPCAL2_Pos \ - (18UL) /*!< VADC GLOBCFG: DPCAL2 (Bit 18) */ -#define VADC_GLOBCFG_DPCAL2_Msk \ - (0x40000UL) /*!< VADC GLOBCFG: DPCAL2 (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DPCAL3_Pos \ - (19UL) /*!< VADC GLOBCFG: DPCAL3 (Bit 19) */ -#define VADC_GLOBCFG_DPCAL3_Msk \ - (0x80000UL) /*!< VADC GLOBCFG: DPCAL3 (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_SUCAL_Pos \ - (31UL) /*!< VADC GLOBCFG: SUCAL (Bit 31) */ -#define VADC_GLOBCFG_SUCAL_Msk \ - (0x80000000UL) /*!< VADC GLOBCFG: SUCAL (Bitfield-Mask: 0x01) */ - -/* ------------------------------- VADC_GLOBICLASS ------------------------------ */ -#define VADC_GLOBICLASS_STCS_Pos \ - (0UL) /*!< VADC GLOBICLASS: STCS (Bit 0) */ -#define VADC_GLOBICLASS_STCS_Msk \ - (0x1fUL) /*!< VADC GLOBICLASS: STCS (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBICLASS_CMS_Pos \ - (8UL) /*!< VADC GLOBICLASS: CMS (Bit 8) */ -#define VADC_GLOBICLASS_CMS_Msk \ - (0x700UL) /*!< VADC GLOBICLASS: CMS (Bitfield-Mask: 0x07) */ -#define VADC_GLOBICLASS_STCE_Pos \ - (16UL) /*!< VADC GLOBICLASS: STCE (Bit 16) */ -#define VADC_GLOBICLASS_STCE_Msk \ - (0x1f0000UL) /*!< VADC GLOBICLASS: STCE (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBICLASS_CME_Pos \ - (24UL) /*!< VADC GLOBICLASS: CME (Bit 24) */ -#define VADC_GLOBICLASS_CME_Msk \ - (0x7000000UL) /*!< VADC GLOBICLASS: CME (Bitfield-Mask: 0x07) */ - -/* ------------------------------- VADC_GLOBBOUND ------------------------------- */ -#define VADC_GLOBBOUND_BOUNDARY0_Pos \ - (0UL) /*!< VADC GLOBBOUND: BOUNDARY0 (Bit 0) */ -#define VADC_GLOBBOUND_BOUNDARY0_Msk \ - (0xfffUL) /*!< VADC GLOBBOUND: BOUNDARY0 (Bitfield-Mask: 0xfff) */ -#define VADC_GLOBBOUND_BOUNDARY1_Pos \ - (16UL) /*!< VADC GLOBBOUND: BOUNDARY1 (Bit 16) */ -#define VADC_GLOBBOUND_BOUNDARY1_Msk \ - (0xfff0000UL) /*!< VADC GLOBBOUND: BOUNDARY1 (Bitfield-Mask: 0xfff) */ - -/* ------------------------------- VADC_GLOBEFLAG ------------------------------- */ -#define VADC_GLOBEFLAG_SEVGLB_Pos \ - (0UL) /*!< VADC GLOBEFLAG: SEVGLB (Bit 0) */ -#define VADC_GLOBEFLAG_SEVGLB_Msk \ - (0x1UL) /*!< VADC GLOBEFLAG: SEVGLB (Bitfield-Mask: 0x01) */ -#define VADC_GLOBEFLAG_REVGLB_Pos \ - (8UL) /*!< VADC GLOBEFLAG: REVGLB (Bit 8) */ -#define VADC_GLOBEFLAG_REVGLB_Msk \ - (0x100UL) /*!< VADC GLOBEFLAG: REVGLB (Bitfield-Mask: 0x01) */ -#define VADC_GLOBEFLAG_SEVGLBCLR_Pos \ - (16UL) /*!< VADC GLOBEFLAG: SEVGLBCLR (Bit 16) */ -#define VADC_GLOBEFLAG_SEVGLBCLR_Msk \ - (0x10000UL) /*!< VADC GLOBEFLAG: SEVGLBCLR (Bitfield-Mask: 0x01) */ -#define VADC_GLOBEFLAG_REVGLBCLR_Pos \ - (24UL) /*!< VADC GLOBEFLAG: REVGLBCLR (Bit 24) */ -#define VADC_GLOBEFLAG_REVGLBCLR_Msk \ - (0x1000000UL) /*!< VADC GLOBEFLAG: REVGLBCLR (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBEVNP ------------------------------- */ -#define VADC_GLOBEVNP_SEV0NP_Pos \ - (0UL) /*!< VADC GLOBEVNP: SEV0NP (Bit 0) */ -#define VADC_GLOBEVNP_SEV0NP_Msk \ - (0xfUL) /*!< VADC GLOBEVNP: SEV0NP (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBEVNP_REV0NP_Pos \ - (16UL) /*!< VADC GLOBEVNP: REV0NP (Bit 16) */ -#define VADC_GLOBEVNP_REV0NP_Msk \ - (0xf0000UL) /*!< VADC GLOBEVNP: REV0NP (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- VADC_GLOBTF -------------------------------- */ -#define VADC_GLOBTF_CDGR_Pos \ - (4UL) /*!< VADC GLOBTF: CDGR (Bit 4) */ -#define VADC_GLOBTF_CDGR_Msk \ - (0xf0UL) /*!< VADC GLOBTF: CDGR (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBTF_CDEN_Pos \ - (8UL) /*!< VADC GLOBTF: CDEN (Bit 8) */ -#define VADC_GLOBTF_CDEN_Msk \ - (0x100UL) /*!< VADC GLOBTF: CDEN (Bitfield-Mask: 0x01) */ -#define VADC_GLOBTF_CDSEL_Pos \ - (9UL) /*!< VADC GLOBTF: CDSEL (Bit 9) */ -#define VADC_GLOBTF_CDSEL_Msk \ - (0x600UL) /*!< VADC GLOBTF: CDSEL (Bitfield-Mask: 0x03) */ -#define VADC_GLOBTF_CDWC_Pos \ - (15UL) /*!< VADC GLOBTF: CDWC (Bit 15) */ -#define VADC_GLOBTF_CDWC_Msk \ - (0x8000UL) /*!< VADC GLOBTF: CDWC (Bitfield-Mask: 0x01) */ -#define VADC_GLOBTF_PDD_Pos \ - (16UL) /*!< VADC GLOBTF: PDD (Bit 16) */ -#define VADC_GLOBTF_PDD_Msk \ - (0x10000UL) /*!< VADC GLOBTF: PDD (Bitfield-Mask: 0x01) */ -#define VADC_GLOBTF_MDWC_Pos \ - (23UL) /*!< VADC GLOBTF: MDWC (Bit 23) */ -#define VADC_GLOBTF_MDWC_Msk \ - (0x800000UL) /*!< VADC GLOBTF: MDWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_BRSSEL -------------------------------- */ -#define VADC_BRSSEL_CHSELG0_Pos \ - (0UL) /*!< VADC BRSSEL: CHSELG0 (Bit 0) */ -#define VADC_BRSSEL_CHSELG0_Msk \ - (0x1UL) /*!< VADC BRSSEL: CHSELG0 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG1_Pos \ - (1UL) /*!< VADC BRSSEL: CHSELG1 (Bit 1) */ -#define VADC_BRSSEL_CHSELG1_Msk \ - (0x2UL) /*!< VADC BRSSEL: CHSELG1 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG2_Pos \ - (2UL) /*!< VADC BRSSEL: CHSELG2 (Bit 2) */ -#define VADC_BRSSEL_CHSELG2_Msk \ - (0x4UL) /*!< VADC BRSSEL: CHSELG2 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG3_Pos \ - (3UL) /*!< VADC BRSSEL: CHSELG3 (Bit 3) */ -#define VADC_BRSSEL_CHSELG3_Msk \ - (0x8UL) /*!< VADC BRSSEL: CHSELG3 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG4_Pos \ - (4UL) /*!< VADC BRSSEL: CHSELG4 (Bit 4) */ -#define VADC_BRSSEL_CHSELG4_Msk \ - (0x10UL) /*!< VADC BRSSEL: CHSELG4 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG5_Pos \ - (5UL) /*!< VADC BRSSEL: CHSELG5 (Bit 5) */ -#define VADC_BRSSEL_CHSELG5_Msk \ - (0x20UL) /*!< VADC BRSSEL: CHSELG5 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG6_Pos \ - (6UL) /*!< VADC BRSSEL: CHSELG6 (Bit 6) */ -#define VADC_BRSSEL_CHSELG6_Msk \ - (0x40UL) /*!< VADC BRSSEL: CHSELG6 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG7_Pos \ - (7UL) /*!< VADC BRSSEL: CHSELG7 (Bit 7) */ -#define VADC_BRSSEL_CHSELG7_Msk \ - (0x80UL) /*!< VADC BRSSEL: CHSELG7 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_BRSPND -------------------------------- */ -#define VADC_BRSPND_CHPNDG0_Pos \ - (0UL) /*!< VADC BRSPND: CHPNDG0 (Bit 0) */ -#define VADC_BRSPND_CHPNDG0_Msk \ - (0x1UL) /*!< VADC BRSPND: CHPNDG0 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG1_Pos \ - (1UL) /*!< VADC BRSPND: CHPNDG1 (Bit 1) */ -#define VADC_BRSPND_CHPNDG1_Msk \ - (0x2UL) /*!< VADC BRSPND: CHPNDG1 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG2_Pos \ - (2UL) /*!< VADC BRSPND: CHPNDG2 (Bit 2) */ -#define VADC_BRSPND_CHPNDG2_Msk \ - (0x4UL) /*!< VADC BRSPND: CHPNDG2 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG3_Pos \ - (3UL) /*!< VADC BRSPND: CHPNDG3 (Bit 3) */ -#define VADC_BRSPND_CHPNDG3_Msk \ - (0x8UL) /*!< VADC BRSPND: CHPNDG3 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG4_Pos \ - (4UL) /*!< VADC BRSPND: CHPNDG4 (Bit 4) */ -#define VADC_BRSPND_CHPNDG4_Msk \ - (0x10UL) /*!< VADC BRSPND: CHPNDG4 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG5_Pos \ - (5UL) /*!< VADC BRSPND: CHPNDG5 (Bit 5) */ -#define VADC_BRSPND_CHPNDG5_Msk \ - (0x20UL) /*!< VADC BRSPND: CHPNDG5 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG6_Pos \ - (6UL) /*!< VADC BRSPND: CHPNDG6 (Bit 6) */ -#define VADC_BRSPND_CHPNDG6_Msk \ - (0x40UL) /*!< VADC BRSPND: CHPNDG6 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG7_Pos \ - (7UL) /*!< VADC BRSPND: CHPNDG7 (Bit 7) */ -#define VADC_BRSPND_CHPNDG7_Msk \ - (0x80UL) /*!< VADC BRSPND: CHPNDG7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_BRSCTRL -------------------------------- */ -#define VADC_BRSCTRL_SRCRESREG_Pos \ - (0UL) /*!< VADC BRSCTRL: SRCRESREG (Bit 0) */ -#define VADC_BRSCTRL_SRCRESREG_Msk \ - (0xfUL) /*!< VADC BRSCTRL: SRCRESREG (Bitfield-Mask: 0x0f) */ -#define VADC_BRSCTRL_XTSEL_Pos \ - (8UL) /*!< VADC BRSCTRL: XTSEL (Bit 8) */ -#define VADC_BRSCTRL_XTSEL_Msk \ - (0xf00UL) /*!< VADC BRSCTRL: XTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_BRSCTRL_XTLVL_Pos \ - (12UL) /*!< VADC BRSCTRL: XTLVL (Bit 12) */ -#define VADC_BRSCTRL_XTLVL_Msk \ - (0x1000UL) /*!< VADC BRSCTRL: XTLVL (Bitfield-Mask: 0x01) */ -#define VADC_BRSCTRL_XTMODE_Pos \ - (13UL) /*!< VADC BRSCTRL: XTMODE (Bit 13) */ -#define VADC_BRSCTRL_XTMODE_Msk \ - (0x6000UL) /*!< VADC BRSCTRL: XTMODE (Bitfield-Mask: 0x03) */ -#define VADC_BRSCTRL_XTWC_Pos \ - (15UL) /*!< VADC BRSCTRL: XTWC (Bit 15) */ -#define VADC_BRSCTRL_XTWC_Msk \ - (0x8000UL) /*!< VADC BRSCTRL: XTWC (Bitfield-Mask: 0x01) */ -#define VADC_BRSCTRL_GTSEL_Pos \ - (16UL) /*!< VADC BRSCTRL: GTSEL (Bit 16) */ -#define VADC_BRSCTRL_GTSEL_Msk \ - (0xf0000UL) /*!< VADC BRSCTRL: GTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_BRSCTRL_GTLVL_Pos \ - (20UL) /*!< VADC BRSCTRL: GTLVL (Bit 20) */ -#define VADC_BRSCTRL_GTLVL_Msk \ - (0x100000UL) /*!< VADC BRSCTRL: GTLVL (Bitfield-Mask: 0x01) */ -#define VADC_BRSCTRL_GTWC_Pos \ - (23UL) /*!< VADC BRSCTRL: GTWC (Bit 23) */ -#define VADC_BRSCTRL_GTWC_Msk \ - (0x800000UL) /*!< VADC BRSCTRL: GTWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_BRSMR --------------------------------- */ -#define VADC_BRSMR_ENGT_Pos \ - (0UL) /*!< VADC BRSMR: ENGT (Bit 0) */ -#define VADC_BRSMR_ENGT_Msk \ - (0x3UL) /*!< VADC BRSMR: ENGT (Bitfield-Mask: 0x03) */ -#define VADC_BRSMR_ENTR_Pos \ - (2UL) /*!< VADC BRSMR: ENTR (Bit 2) */ -#define VADC_BRSMR_ENTR_Msk \ - (0x4UL) /*!< VADC BRSMR: ENTR (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_ENSI_Pos \ - (3UL) /*!< VADC BRSMR: ENSI (Bit 3) */ -#define VADC_BRSMR_ENSI_Msk \ - (0x8UL) /*!< VADC BRSMR: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_SCAN_Pos \ - (4UL) /*!< VADC BRSMR: SCAN (Bit 4) */ -#define VADC_BRSMR_SCAN_Msk \ - (0x10UL) /*!< VADC BRSMR: SCAN (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_LDM_Pos (5UL) /*!< VADC BRSMR: LDM (Bit 5) */ -#define VADC_BRSMR_LDM_Msk \ - (0x20UL) /*!< VADC BRSMR: LDM (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_REQGT_Pos \ - (7UL) /*!< VADC BRSMR: REQGT (Bit 7) */ -#define VADC_BRSMR_REQGT_Msk \ - (0x80UL) /*!< VADC BRSMR: REQGT (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_CLRPND_Pos \ - (8UL) /*!< VADC BRSMR: CLRPND (Bit 8) */ -#define VADC_BRSMR_CLRPND_Msk \ - (0x100UL) /*!< VADC BRSMR: CLRPND (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_LDEV_Pos \ - (9UL) /*!< VADC BRSMR: LDEV (Bit 9) */ -#define VADC_BRSMR_LDEV_Msk \ - (0x200UL) /*!< VADC BRSMR: LDEV (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_RPTDIS_Pos \ - (16UL) /*!< VADC BRSMR: RPTDIS (Bit 16) */ -#define VADC_BRSMR_RPTDIS_Msk \ - (0x10000UL) /*!< VADC BRSMR: RPTDIS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBRCR -------------------------------- */ -#define VADC_GLOBRCR_DRCTR_Pos \ - (16UL) /*!< VADC GLOBRCR: DRCTR (Bit 16) */ -#define VADC_GLOBRCR_DRCTR_Msk \ - (0xf0000UL) /*!< VADC GLOBRCR: DRCTR (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBRCR_WFR_Pos \ - (24UL) /*!< VADC GLOBRCR: WFR (Bit 24) */ -#define VADC_GLOBRCR_WFR_Msk \ - (0x1000000UL) /*!< VADC GLOBRCR: WFR (Bitfield-Mask: 0x01) */ -#define VADC_GLOBRCR_SRGEN_Pos \ - (31UL) /*!< VADC GLOBRCR: SRGEN (Bit 31) */ -#define VADC_GLOBRCR_SRGEN_Msk \ - (0x80000000UL) /*!< VADC GLOBRCR: SRGEN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBRES -------------------------------- */ -#define VADC_GLOBRES_RESULT_Pos \ - (0UL) /*!< VADC GLOBRES: RESULT (Bit 0) */ -#define VADC_GLOBRES_RESULT_Msk \ - (0xffffUL) /*!< VADC GLOBRES: RESULT (Bitfield-Mask: 0xffff) */ -#define VADC_GLOBRES_GNR_Pos \ - (16UL) /*!< VADC GLOBRES: GNR (Bit 16) */ -#define VADC_GLOBRES_GNR_Msk \ - (0xf0000UL) /*!< VADC GLOBRES: GNR (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBRES_CHNR_Pos \ - (20UL) /*!< VADC GLOBRES: CHNR (Bit 20) */ -#define VADC_GLOBRES_CHNR_Msk \ - (0x1f00000UL) /*!< VADC GLOBRES: CHNR (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBRES_EMUX_Pos \ - (25UL) /*!< VADC GLOBRES: EMUX (Bit 25) */ -#define VADC_GLOBRES_EMUX_Msk \ - (0xe000000UL) /*!< VADC GLOBRES: EMUX (Bitfield-Mask: 0x07) */ -#define VADC_GLOBRES_CRS_Pos \ - (28UL) /*!< VADC GLOBRES: CRS (Bit 28) */ -#define VADC_GLOBRES_CRS_Msk \ - (0x30000000UL) /*!< VADC GLOBRES: CRS (Bitfield-Mask: 0x03) */ -#define VADC_GLOBRES_FCR_Pos \ - (30UL) /*!< VADC GLOBRES: FCR (Bit 30) */ -#define VADC_GLOBRES_FCR_Msk \ - (0x40000000UL) /*!< VADC GLOBRES: FCR (Bitfield-Mask: 0x01) */ -#define VADC_GLOBRES_VF_Pos \ - (31UL) /*!< VADC GLOBRES: VF (Bit 31) */ -#define VADC_GLOBRES_VF_Msk \ - (0x80000000UL) /*!< VADC GLOBRES: VF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBRESD ------------------------------- */ -#define VADC_GLOBRESD_RESULT_Pos \ - (0UL) /*!< VADC GLOBRESD: RESULT (Bit 0) */ -#define VADC_GLOBRESD_RESULT_Msk \ - (0xffffUL) /*!< VADC GLOBRESD: RESULT (Bitfield-Mask: 0xffff) */ -#define VADC_GLOBRESD_GNR_Pos \ - (16UL) /*!< VADC GLOBRESD: GNR (Bit 16) */ -#define VADC_GLOBRESD_GNR_Msk \ - (0xf0000UL) /*!< VADC GLOBRESD: GNR (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBRESD_CHNR_Pos \ - (20UL) /*!< VADC GLOBRESD: CHNR (Bit 20) */ -#define VADC_GLOBRESD_CHNR_Msk \ - (0x1f00000UL) /*!< VADC GLOBRESD: CHNR (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBRESD_EMUX_Pos \ - (25UL) /*!< VADC GLOBRESD: EMUX (Bit 25) */ -#define VADC_GLOBRESD_EMUX_Msk \ - (0xe000000UL) /*!< VADC GLOBRESD: EMUX (Bitfield-Mask: 0x07) */ -#define VADC_GLOBRESD_CRS_Pos \ - (28UL) /*!< VADC GLOBRESD: CRS (Bit 28) */ -#define VADC_GLOBRESD_CRS_Msk \ - (0x30000000UL) /*!< VADC GLOBRESD: CRS (Bitfield-Mask: 0x03) */ -#define VADC_GLOBRESD_FCR_Pos \ - (30UL) /*!< VADC GLOBRESD: FCR (Bit 30) */ -#define VADC_GLOBRESD_FCR_Msk \ - (0x40000000UL) /*!< VADC GLOBRESD: FCR (Bitfield-Mask: 0x01) */ -#define VADC_GLOBRESD_VF_Pos \ - (31UL) /*!< VADC GLOBRESD: VF (Bit 31) */ -#define VADC_GLOBRESD_VF_Msk \ - (0x80000000UL) /*!< VADC GLOBRESD: VF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_EMUXSEL -------------------------------- */ -#define VADC_EMUXSEL_EMUXGRP0_Pos \ - (0UL) /*!< VADC EMUXSEL: EMUXGRP0 (Bit 0) */ -#define VADC_EMUXSEL_EMUXGRP0_Msk \ - (0xfUL) /*!< VADC EMUXSEL: EMUXGRP0 (Bitfield-Mask: 0x0f) */ -#define VADC_EMUXSEL_EMUXGRP1_Pos \ - (4UL) /*!< VADC EMUXSEL: EMUXGRP1 (Bit 4) */ -#define VADC_EMUXSEL_EMUXGRP1_Msk \ - (0xf0UL) /*!< VADC EMUXSEL: EMUXGRP1 (Bitfield-Mask: 0x0f) */ - -/* ================================================================================ */ -/* ================ Group 'VADC_G' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- VADC_G_ARBCFG ------------------------------- */ -#define VADC_G_ARBCFG_ANONC_Pos \ - (0UL) /*!< VADC_G ARBCFG: ANONC (Bit 0) */ -#define VADC_G_ARBCFG_ANONC_Msk \ - (0x3UL) /*!< VADC_G ARBCFG: ANONC (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBCFG_ARBRND_Pos \ - (4UL) /*!< VADC_G ARBCFG: ARBRND (Bit 4) */ -#define VADC_G_ARBCFG_ARBRND_Msk \ - (0x30UL) /*!< VADC_G ARBCFG: ARBRND (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBCFG_ARBM_Pos \ - (7UL) /*!< VADC_G ARBCFG: ARBM (Bit 7) */ -#define VADC_G_ARBCFG_ARBM_Msk \ - (0x80UL) /*!< VADC_G ARBCFG: ARBM (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBCFG_ANONS_Pos \ - (16UL) /*!< VADC_G ARBCFG: ANONS (Bit 16) */ -#define VADC_G_ARBCFG_ANONS_Msk \ - (0x30000UL) /*!< VADC_G ARBCFG: ANONS (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBCFG_CAL_Pos \ - (28UL) /*!< VADC_G ARBCFG: CAL (Bit 28) */ -#define VADC_G_ARBCFG_CAL_Msk \ - (0x10000000UL) /*!< VADC_G ARBCFG: CAL (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBCFG_BUSY_Pos \ - (30UL) /*!< VADC_G ARBCFG: BUSY (Bit 30) */ -#define VADC_G_ARBCFG_BUSY_Msk \ - (0x40000000UL) /*!< VADC_G ARBCFG: BUSY (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBCFG_SAMPLE_Pos \ - (31UL) /*!< VADC_G ARBCFG: SAMPLE (Bit 31) */ -#define VADC_G_ARBCFG_SAMPLE_Msk \ - (0x80000000UL) /*!< VADC_G ARBCFG: SAMPLE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ARBPR -------------------------------- */ -#define VADC_G_ARBPR_PRIO0_Pos \ - (0UL) /*!< VADC_G ARBPR: PRIO0 (Bit 0) */ -#define VADC_G_ARBPR_PRIO0_Msk \ - (0x3UL) /*!< VADC_G ARBPR: PRIO0 (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBPR_CSM0_Pos \ - (3UL) /*!< VADC_G ARBPR: CSM0 (Bit 3) */ -#define VADC_G_ARBPR_CSM0_Msk \ - (0x8UL) /*!< VADC_G ARBPR: CSM0 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_PRIO1_Pos \ - (4UL) /*!< VADC_G ARBPR: PRIO1 (Bit 4) */ -#define VADC_G_ARBPR_PRIO1_Msk \ - (0x30UL) /*!< VADC_G ARBPR: PRIO1 (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBPR_CSM1_Pos \ - (7UL) /*!< VADC_G ARBPR: CSM1 (Bit 7) */ -#define VADC_G_ARBPR_CSM1_Msk \ - (0x80UL) /*!< VADC_G ARBPR: CSM1 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_PRIO2_Pos \ - (8UL) /*!< VADC_G ARBPR: PRIO2 (Bit 8) */ -#define VADC_G_ARBPR_PRIO2_Msk \ - (0x300UL) /*!< VADC_G ARBPR: PRIO2 (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBPR_CSM2_Pos \ - (11UL) /*!< VADC_G ARBPR: CSM2 (Bit 11) */ -#define VADC_G_ARBPR_CSM2_Msk \ - (0x800UL) /*!< VADC_G ARBPR: CSM2 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_ASEN0_Pos \ - (24UL) /*!< VADC_G ARBPR: ASEN0 (Bit 24) */ -#define VADC_G_ARBPR_ASEN0_Msk \ - (0x1000000UL) /*!< VADC_G ARBPR: ASEN0 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_ASEN1_Pos \ - (25UL) /*!< VADC_G ARBPR: ASEN1 (Bit 25) */ -#define VADC_G_ARBPR_ASEN1_Msk \ - (0x2000000UL) /*!< VADC_G ARBPR: ASEN1 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_ASEN2_Pos \ - (26UL) /*!< VADC_G ARBPR: ASEN2 (Bit 26) */ -#define VADC_G_ARBPR_ASEN2_Msk \ - (0x4000000UL) /*!< VADC_G ARBPR: ASEN2 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CHASS -------------------------------- */ -#define VADC_G_CHASS_ASSCH0_Pos \ - (0UL) /*!< VADC_G CHASS: ASSCH0 (Bit 0) */ -#define VADC_G_CHASS_ASSCH0_Msk \ - (0x1UL) /*!< VADC_G CHASS: ASSCH0 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH1_Pos \ - (1UL) /*!< VADC_G CHASS: ASSCH1 (Bit 1) */ -#define VADC_G_CHASS_ASSCH1_Msk \ - (0x2UL) /*!< VADC_G CHASS: ASSCH1 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH2_Pos \ - (2UL) /*!< VADC_G CHASS: ASSCH2 (Bit 2) */ -#define VADC_G_CHASS_ASSCH2_Msk \ - (0x4UL) /*!< VADC_G CHASS: ASSCH2 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH3_Pos \ - (3UL) /*!< VADC_G CHASS: ASSCH3 (Bit 3) */ -#define VADC_G_CHASS_ASSCH3_Msk \ - (0x8UL) /*!< VADC_G CHASS: ASSCH3 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH4_Pos \ - (4UL) /*!< VADC_G CHASS: ASSCH4 (Bit 4) */ -#define VADC_G_CHASS_ASSCH4_Msk \ - (0x10UL) /*!< VADC_G CHASS: ASSCH4 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH5_Pos \ - (5UL) /*!< VADC_G CHASS: ASSCH5 (Bit 5) */ -#define VADC_G_CHASS_ASSCH5_Msk \ - (0x20UL) /*!< VADC_G CHASS: ASSCH5 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH6_Pos \ - (6UL) /*!< VADC_G CHASS: ASSCH6 (Bit 6) */ -#define VADC_G_CHASS_ASSCH6_Msk \ - (0x40UL) /*!< VADC_G CHASS: ASSCH6 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH7_Pos \ - (7UL) /*!< VADC_G CHASS: ASSCH7 (Bit 7) */ -#define VADC_G_CHASS_ASSCH7_Msk \ - (0x80UL) /*!< VADC_G CHASS: ASSCH7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ICLASS ------------------------------- */ -#define VADC_G_ICLASS_STCS_Pos \ - (0UL) /*!< VADC_G ICLASS: STCS (Bit 0) */ -#define VADC_G_ICLASS_STCS_Msk \ - (0x1fUL) /*!< VADC_G ICLASS: STCS (Bitfield-Mask: 0x1f) */ -#define VADC_G_ICLASS_CMS_Pos \ - (8UL) /*!< VADC_G ICLASS: CMS (Bit 8) */ -#define VADC_G_ICLASS_CMS_Msk \ - (0x700UL) /*!< VADC_G ICLASS: CMS (Bitfield-Mask: 0x07) */ -#define VADC_G_ICLASS_STCE_Pos \ - (16UL) /*!< VADC_G ICLASS: STCE (Bit 16) */ -#define VADC_G_ICLASS_STCE_Msk \ - (0x1f0000UL) /*!< VADC_G ICLASS: STCE (Bitfield-Mask: 0x1f) */ -#define VADC_G_ICLASS_CME_Pos \ - (24UL) /*!< VADC_G ICLASS: CME (Bit 24) */ -#define VADC_G_ICLASS_CME_Msk \ - (0x7000000UL) /*!< VADC_G ICLASS: CME (Bitfield-Mask: 0x07) */ - -/* -------------------------------- VADC_G_ALIAS -------------------------------- */ -#define VADC_G_ALIAS_ALIAS0_Pos \ - (0UL) /*!< VADC_G ALIAS: ALIAS0 (Bit 0) */ -#define VADC_G_ALIAS_ALIAS0_Msk \ - (0x1fUL) /*!< VADC_G ALIAS: ALIAS0 (Bitfield-Mask: 0x1f) */ -#define VADC_G_ALIAS_ALIAS1_Pos \ - (8UL) /*!< VADC_G ALIAS: ALIAS1 (Bit 8) */ -#define VADC_G_ALIAS_ALIAS1_Msk \ - (0x1f00UL) /*!< VADC_G ALIAS: ALIAS1 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- VADC_G_BOUND -------------------------------- */ -#define VADC_G_BOUND_BOUNDARY0_Pos \ - (0UL) /*!< VADC_G BOUND: BOUNDARY0 (Bit 0) */ -#define VADC_G_BOUND_BOUNDARY0_Msk \ - (0xfffUL) /*!< VADC_G BOUND: BOUNDARY0 (Bitfield-Mask: 0xfff) */ -#define VADC_G_BOUND_BOUNDARY1_Pos \ - (16UL) /*!< VADC_G BOUND: BOUNDARY1 (Bit 16) */ -#define VADC_G_BOUND_BOUNDARY1_Msk \ - (0xfff0000UL) /*!< VADC_G BOUND: BOUNDARY1 (Bitfield-Mask: 0xfff) */ - -/* -------------------------------- VADC_G_SYNCTR ------------------------------- */ -#define VADC_G_SYNCTR_STSEL_Pos \ - (0UL) /*!< VADC_G SYNCTR: STSEL (Bit 0) */ -#define VADC_G_SYNCTR_STSEL_Msk \ - (0x3UL) /*!< VADC_G SYNCTR: STSEL (Bitfield-Mask: 0x03) */ -#define VADC_G_SYNCTR_EVALR1_Pos \ - (4UL) /*!< VADC_G SYNCTR: EVALR1 (Bit 4) */ -#define VADC_G_SYNCTR_EVALR1_Msk \ - (0x10UL) /*!< VADC_G SYNCTR: EVALR1 (Bitfield-Mask: 0x01) */ -#define VADC_G_SYNCTR_EVALR2_Pos \ - (5UL) /*!< VADC_G SYNCTR: EVALR2 (Bit 5) */ -#define VADC_G_SYNCTR_EVALR2_Msk \ - (0x20UL) /*!< VADC_G SYNCTR: EVALR2 (Bitfield-Mask: 0x01) */ -#define VADC_G_SYNCTR_EVALR3_Pos \ - (6UL) /*!< VADC_G SYNCTR: EVALR3 (Bit 6) */ -#define VADC_G_SYNCTR_EVALR3_Msk \ - (0x40UL) /*!< VADC_G SYNCTR: EVALR3 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_BFL --------------------------------- */ -#define VADC_G_BFL_BFL0_Pos \ - (0UL) /*!< VADC_G BFL: BFL0 (Bit 0) */ -#define VADC_G_BFL_BFL0_Msk \ - (0x1UL) /*!< VADC_G BFL: BFL0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFL1_Pos \ - (1UL) /*!< VADC_G BFL: BFL1 (Bit 1) */ -#define VADC_G_BFL_BFL1_Msk \ - (0x2UL) /*!< VADC_G BFL: BFL1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFL2_Pos \ - (2UL) /*!< VADC_G BFL: BFL2 (Bit 2) */ -#define VADC_G_BFL_BFL2_Msk \ - (0x4UL) /*!< VADC_G BFL: BFL2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFL3_Pos \ - (3UL) /*!< VADC_G BFL: BFL3 (Bit 3) */ -#define VADC_G_BFL_BFL3_Msk \ - (0x8UL) /*!< VADC_G BFL: BFL3 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFA0_Pos \ - (8UL) /*!< VADC_G BFL: BFA0 (Bit 8) */ -#define VADC_G_BFL_BFA0_Msk \ - (0x100UL) /*!< VADC_G BFL: BFA0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFA1_Pos \ - (9UL) /*!< VADC_G BFL: BFA1 (Bit 9) */ -#define VADC_G_BFL_BFA1_Msk \ - (0x200UL) /*!< VADC_G BFL: BFA1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFA2_Pos \ - (10UL) /*!< VADC_G BFL: BFA2 (Bit 10) */ -#define VADC_G_BFL_BFA2_Msk \ - (0x400UL) /*!< VADC_G BFL: BFA2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFA3_Pos \ - (11UL) /*!< VADC_G BFL: BFA3 (Bit 11) */ -#define VADC_G_BFL_BFA3_Msk \ - (0x800UL) /*!< VADC_G BFL: BFA3 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFI0_Pos \ - (16UL) /*!< VADC_G BFL: BFI0 (Bit 16) */ -#define VADC_G_BFL_BFI0_Msk \ - (0x10000UL) /*!< VADC_G BFL: BFI0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFI1_Pos \ - (17UL) /*!< VADC_G BFL: BFI1 (Bit 17) */ -#define VADC_G_BFL_BFI1_Msk \ - (0x20000UL) /*!< VADC_G BFL: BFI1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFI2_Pos \ - (18UL) /*!< VADC_G BFL: BFI2 (Bit 18) */ -#define VADC_G_BFL_BFI2_Msk \ - (0x40000UL) /*!< VADC_G BFL: BFI2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFI3_Pos \ - (19UL) /*!< VADC_G BFL: BFI3 (Bit 19) */ -#define VADC_G_BFL_BFI3_Msk \ - (0x80000UL) /*!< VADC_G BFL: BFI3 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_BFLS -------------------------------- */ -#define VADC_G_BFLS_BFC0_Pos \ - (0UL) /*!< VADC_G BFLS: BFC0 (Bit 0) */ -#define VADC_G_BFLS_BFC0_Msk \ - (0x1UL) /*!< VADC_G BFLS: BFC0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFC1_Pos \ - (1UL) /*!< VADC_G BFLS: BFC1 (Bit 1) */ -#define VADC_G_BFLS_BFC1_Msk \ - (0x2UL) /*!< VADC_G BFLS: BFC1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFC2_Pos \ - (2UL) /*!< VADC_G BFLS: BFC2 (Bit 2) */ -#define VADC_G_BFLS_BFC2_Msk \ - (0x4UL) /*!< VADC_G BFLS: BFC2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFC3_Pos \ - (3UL) /*!< VADC_G BFLS: BFC3 (Bit 3) */ -#define VADC_G_BFLS_BFC3_Msk \ - (0x8UL) /*!< VADC_G BFLS: BFC3 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFS0_Pos \ - (16UL) /*!< VADC_G BFLS: BFS0 (Bit 16) */ -#define VADC_G_BFLS_BFS0_Msk \ - (0x10000UL) /*!< VADC_G BFLS: BFS0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFS1_Pos \ - (17UL) /*!< VADC_G BFLS: BFS1 (Bit 17) */ -#define VADC_G_BFLS_BFS1_Msk \ - (0x20000UL) /*!< VADC_G BFLS: BFS1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFS2_Pos \ - (18UL) /*!< VADC_G BFLS: BFS2 (Bit 18) */ -#define VADC_G_BFLS_BFS2_Msk \ - (0x40000UL) /*!< VADC_G BFLS: BFS2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFS3_Pos \ - (19UL) /*!< VADC_G BFLS: BFS3 (Bit 19) */ -#define VADC_G_BFLS_BFS3_Msk \ - (0x80000UL) /*!< VADC_G BFLS: BFS3 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_BFLC -------------------------------- */ -#define VADC_G_BFLC_BFM0_Pos \ - (0UL) /*!< VADC_G BFLC: BFM0 (Bit 0) */ -#define VADC_G_BFLC_BFM0_Msk \ - (0xfUL) /*!< VADC_G BFLC: BFM0 (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLC_BFM1_Pos \ - (4UL) /*!< VADC_G BFLC: BFM1 (Bit 4) */ -#define VADC_G_BFLC_BFM1_Msk \ - (0xf0UL) /*!< VADC_G BFLC: BFM1 (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLC_BFM2_Pos \ - (8UL) /*!< VADC_G BFLC: BFM2 (Bit 8) */ -#define VADC_G_BFLC_BFM2_Msk \ - (0xf00UL) /*!< VADC_G BFLC: BFM2 (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLC_BFM3_Pos \ - (12UL) /*!< VADC_G BFLC: BFM3 (Bit 12) */ -#define VADC_G_BFLC_BFM3_Msk \ - (0xf000UL) /*!< VADC_G BFLC: BFM3 (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_BFLNP -------------------------------- */ -#define VADC_G_BFLNP_BFL0NP_Pos \ - (0UL) /*!< VADC_G BFLNP: BFL0NP (Bit 0) */ -#define VADC_G_BFLNP_BFL0NP_Msk \ - (0xfUL) /*!< VADC_G BFLNP: BFL0NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLNP_BFL1NP_Pos \ - (4UL) /*!< VADC_G BFLNP: BFL1NP (Bit 4) */ -#define VADC_G_BFLNP_BFL1NP_Msk \ - (0xf0UL) /*!< VADC_G BFLNP: BFL1NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLNP_BFL2NP_Pos \ - (8UL) /*!< VADC_G BFLNP: BFL2NP (Bit 8) */ -#define VADC_G_BFLNP_BFL2NP_Msk \ - (0xf00UL) /*!< VADC_G BFLNP: BFL2NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLNP_BFL3NP_Pos \ - (12UL) /*!< VADC_G BFLNP: BFL3NP (Bit 12) */ -#define VADC_G_BFLNP_BFL3NP_Msk \ - (0xf000UL) /*!< VADC_G BFLNP: BFL3NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_QCTRL0 ------------------------------- */ -#define VADC_G_QCTRL0_SRCRESREG_Pos \ - (0UL) /*!< VADC_G QCTRL0: SRCRESREG (Bit 0) */ -#define VADC_G_QCTRL0_SRCRESREG_Msk \ - (0xfUL) /*!< VADC_G QCTRL0: SRCRESREG (Bitfield-Mask: 0x0f) */ -#define VADC_G_QCTRL0_XTSEL_Pos \ - (8UL) /*!< VADC_G QCTRL0: XTSEL (Bit 8) */ -#define VADC_G_QCTRL0_XTSEL_Msk \ - (0xf00UL) /*!< VADC_G QCTRL0: XTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_G_QCTRL0_XTLVL_Pos \ - (12UL) /*!< VADC_G QCTRL0: XTLVL (Bit 12) */ -#define VADC_G_QCTRL0_XTLVL_Msk \ - (0x1000UL) /*!< VADC_G QCTRL0: XTLVL (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_XTMODE_Pos \ - (13UL) /*!< VADC_G QCTRL0: XTMODE (Bit 13) */ -#define VADC_G_QCTRL0_XTMODE_Msk \ - (0x6000UL) /*!< VADC_G QCTRL0: XTMODE (Bitfield-Mask: 0x03) */ -#define VADC_G_QCTRL0_XTWC_Pos \ - (15UL) /*!< VADC_G QCTRL0: XTWC (Bit 15) */ -#define VADC_G_QCTRL0_XTWC_Msk \ - (0x8000UL) /*!< VADC_G QCTRL0: XTWC (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_GTSEL_Pos \ - (16UL) /*!< VADC_G QCTRL0: GTSEL (Bit 16) */ -#define VADC_G_QCTRL0_GTSEL_Msk \ - (0xf0000UL) /*!< VADC_G QCTRL0: GTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_G_QCTRL0_GTLVL_Pos \ - (20UL) /*!< VADC_G QCTRL0: GTLVL (Bit 20) */ -#define VADC_G_QCTRL0_GTLVL_Msk \ - (0x100000UL) /*!< VADC_G QCTRL0: GTLVL (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_GTWC_Pos \ - (23UL) /*!< VADC_G QCTRL0: GTWC (Bit 23) */ -#define VADC_G_QCTRL0_GTWC_Msk \ - (0x800000UL) /*!< VADC_G QCTRL0: GTWC (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_TMEN_Pos \ - (28UL) /*!< VADC_G QCTRL0: TMEN (Bit 28) */ -#define VADC_G_QCTRL0_TMEN_Msk \ - (0x10000000UL) /*!< VADC_G QCTRL0: TMEN (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_TMWC_Pos \ - (31UL) /*!< VADC_G QCTRL0: TMWC (Bit 31) */ -#define VADC_G_QCTRL0_TMWC_Msk \ - (0x80000000UL) /*!< VADC_G QCTRL0: TMWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_QMR0 -------------------------------- */ -#define VADC_G_QMR0_ENGT_Pos \ - (0UL) /*!< VADC_G QMR0: ENGT (Bit 0) */ -#define VADC_G_QMR0_ENGT_Msk \ - (0x3UL) /*!< VADC_G QMR0: ENGT (Bitfield-Mask: 0x03) */ -#define VADC_G_QMR0_ENTR_Pos \ - (2UL) /*!< VADC_G QMR0: ENTR (Bit 2) */ -#define VADC_G_QMR0_ENTR_Msk \ - (0x4UL) /*!< VADC_G QMR0: ENTR (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_CLRV_Pos \ - (8UL) /*!< VADC_G QMR0: CLRV (Bit 8) */ -#define VADC_G_QMR0_CLRV_Msk \ - (0x100UL) /*!< VADC_G QMR0: CLRV (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_TREV_Pos \ - (9UL) /*!< VADC_G QMR0: TREV (Bit 9) */ -#define VADC_G_QMR0_TREV_Msk \ - (0x200UL) /*!< VADC_G QMR0: TREV (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_FLUSH_Pos \ - (10UL) /*!< VADC_G QMR0: FLUSH (Bit 10) */ -#define VADC_G_QMR0_FLUSH_Msk \ - (0x400UL) /*!< VADC_G QMR0: FLUSH (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_CEV_Pos \ - (11UL) /*!< VADC_G QMR0: CEV (Bit 11) */ -#define VADC_G_QMR0_CEV_Msk \ - (0x800UL) /*!< VADC_G QMR0: CEV (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_RPTDIS_Pos \ - (16UL) /*!< VADC_G QMR0: RPTDIS (Bit 16) */ -#define VADC_G_QMR0_RPTDIS_Msk \ - (0x10000UL) /*!< VADC_G QMR0: RPTDIS (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_QSR0 -------------------------------- */ -#define VADC_G_QSR0_FILL_Pos \ - (0UL) /*!< VADC_G QSR0: FILL (Bit 0) */ -#define VADC_G_QSR0_FILL_Msk \ - (0xfUL) /*!< VADC_G QSR0: FILL (Bitfield-Mask: 0x0f) */ -#define VADC_G_QSR0_EMPTY_Pos \ - (5UL) /*!< VADC_G QSR0: EMPTY (Bit 5) */ -#define VADC_G_QSR0_EMPTY_Msk \ - (0x20UL) /*!< VADC_G QSR0: EMPTY (Bitfield-Mask: 0x01) */ -#define VADC_G_QSR0_REQGT_Pos \ - (7UL) /*!< VADC_G QSR0: REQGT (Bit 7) */ -#define VADC_G_QSR0_REQGT_Msk \ - (0x80UL) /*!< VADC_G QSR0: REQGT (Bitfield-Mask: 0x01) */ -#define VADC_G_QSR0_EV_Pos (8UL) /*!< VADC_G QSR0: EV (Bit 8) */ -#define VADC_G_QSR0_EV_Msk \ - (0x100UL) /*!< VADC_G QSR0: EV (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_Q0R0 -------------------------------- */ -#define VADC_G_Q0R0_REQCHNR_Pos \ - (0UL) /*!< VADC_G Q0R0: REQCHNR (Bit 0) */ -#define VADC_G_Q0R0_REQCHNR_Msk \ - (0x1fUL) /*!< VADC_G Q0R0: REQCHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_Q0R0_RF_Pos (5UL) /*!< VADC_G Q0R0: RF (Bit 5) */ -#define VADC_G_Q0R0_RF_Msk \ - (0x20UL) /*!< VADC_G Q0R0: RF (Bitfield-Mask: 0x01) */ -#define VADC_G_Q0R0_ENSI_Pos \ - (6UL) /*!< VADC_G Q0R0: ENSI (Bit 6) */ -#define VADC_G_Q0R0_ENSI_Msk \ - (0x40UL) /*!< VADC_G Q0R0: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_G_Q0R0_EXTR_Pos \ - (7UL) /*!< VADC_G Q0R0: EXTR (Bit 7) */ -#define VADC_G_Q0R0_EXTR_Msk \ - (0x80UL) /*!< VADC_G Q0R0: EXTR (Bitfield-Mask: 0x01) */ -#define VADC_G_Q0R0_V_Pos (8UL) /*!< VADC_G Q0R0: V (Bit 8) */ -#define VADC_G_Q0R0_V_Msk \ - (0x100UL) /*!< VADC_G Q0R0: V (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_QINR0 -------------------------------- */ -#define VADC_G_QINR0_REQCHNR_Pos \ - (0UL) /*!< VADC_G QINR0: REQCHNR (Bit 0) */ -#define VADC_G_QINR0_REQCHNR_Msk \ - (0x1fUL) /*!< VADC_G QINR0: REQCHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_QINR0_RF_Pos \ - (5UL) /*!< VADC_G QINR0: RF (Bit 5) */ -#define VADC_G_QINR0_RF_Msk \ - (0x20UL) /*!< VADC_G QINR0: RF (Bitfield-Mask: 0x01) */ -#define VADC_G_QINR0_ENSI_Pos \ - (6UL) /*!< VADC_G QINR0: ENSI (Bit 6) */ -#define VADC_G_QINR0_ENSI_Msk \ - (0x40UL) /*!< VADC_G QINR0: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_G_QINR0_EXTR_Pos \ - (7UL) /*!< VADC_G QINR0: EXTR (Bit 7) */ -#define VADC_G_QINR0_EXTR_Msk \ - (0x80UL) /*!< VADC_G QINR0: EXTR (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_QBUR0 -------------------------------- */ -#define VADC_G_QBUR0_REQCHNR_Pos \ - (0UL) /*!< VADC_G QBUR0: REQCHNR (Bit 0) */ -#define VADC_G_QBUR0_REQCHNR_Msk \ - (0x1fUL) /*!< VADC_G QBUR0: REQCHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_QBUR0_RF_Pos \ - (5UL) /*!< VADC_G QBUR0: RF (Bit 5) */ -#define VADC_G_QBUR0_RF_Msk \ - (0x20UL) /*!< VADC_G QBUR0: RF (Bitfield-Mask: 0x01) */ -#define VADC_G_QBUR0_ENSI_Pos \ - (6UL) /*!< VADC_G QBUR0: ENSI (Bit 6) */ -#define VADC_G_QBUR0_ENSI_Msk \ - (0x40UL) /*!< VADC_G QBUR0: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_G_QBUR0_EXTR_Pos \ - (7UL) /*!< VADC_G QBUR0: EXTR (Bit 7) */ -#define VADC_G_QBUR0_EXTR_Msk \ - (0x80UL) /*!< VADC_G QBUR0: EXTR (Bitfield-Mask: 0x01) */ -#define VADC_G_QBUR0_V_Pos (8UL) /*!< VADC_G QBUR0: V (Bit 8) */ -#define VADC_G_QBUR0_V_Msk \ - (0x100UL) /*!< VADC_G QBUR0: V (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ASCTRL ------------------------------- */ -#define VADC_G_ASCTRL_SRCRESREG_Pos \ - (0UL) /*!< VADC_G ASCTRL: SRCRESREG (Bit 0) */ -#define VADC_G_ASCTRL_SRCRESREG_Msk \ - (0xfUL) /*!< VADC_G ASCTRL: SRCRESREG (Bitfield-Mask: 0x0f) */ -#define VADC_G_ASCTRL_XTSEL_Pos \ - (8UL) /*!< VADC_G ASCTRL: XTSEL (Bit 8) */ -#define VADC_G_ASCTRL_XTSEL_Msk \ - (0xf00UL) /*!< VADC_G ASCTRL: XTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_G_ASCTRL_XTLVL_Pos \ - (12UL) /*!< VADC_G ASCTRL: XTLVL (Bit 12) */ -#define VADC_G_ASCTRL_XTLVL_Msk \ - (0x1000UL) /*!< VADC_G ASCTRL: XTLVL (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_XTMODE_Pos \ - (13UL) /*!< VADC_G ASCTRL: XTMODE (Bit 13) */ -#define VADC_G_ASCTRL_XTMODE_Msk \ - (0x6000UL) /*!< VADC_G ASCTRL: XTMODE (Bitfield-Mask: 0x03) */ -#define VADC_G_ASCTRL_XTWC_Pos \ - (15UL) /*!< VADC_G ASCTRL: XTWC (Bit 15) */ -#define VADC_G_ASCTRL_XTWC_Msk \ - (0x8000UL) /*!< VADC_G ASCTRL: XTWC (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_GTSEL_Pos \ - (16UL) /*!< VADC_G ASCTRL: GTSEL (Bit 16) */ -#define VADC_G_ASCTRL_GTSEL_Msk \ - (0xf0000UL) /*!< VADC_G ASCTRL: GTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_G_ASCTRL_GTLVL_Pos \ - (20UL) /*!< VADC_G ASCTRL: GTLVL (Bit 20) */ -#define VADC_G_ASCTRL_GTLVL_Msk \ - (0x100000UL) /*!< VADC_G ASCTRL: GTLVL (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_GTWC_Pos \ - (23UL) /*!< VADC_G ASCTRL: GTWC (Bit 23) */ -#define VADC_G_ASCTRL_GTWC_Msk \ - (0x800000UL) /*!< VADC_G ASCTRL: GTWC (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_TMEN_Pos \ - (28UL) /*!< VADC_G ASCTRL: TMEN (Bit 28) */ -#define VADC_G_ASCTRL_TMEN_Msk \ - (0x10000000UL) /*!< VADC_G ASCTRL: TMEN (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_TMWC_Pos \ - (31UL) /*!< VADC_G ASCTRL: TMWC (Bit 31) */ -#define VADC_G_ASCTRL_TMWC_Msk \ - (0x80000000UL) /*!< VADC_G ASCTRL: TMWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_ASMR -------------------------------- */ -#define VADC_G_ASMR_ENGT_Pos \ - (0UL) /*!< VADC_G ASMR: ENGT (Bit 0) */ -#define VADC_G_ASMR_ENGT_Msk \ - (0x3UL) /*!< VADC_G ASMR: ENGT (Bitfield-Mask: 0x03) */ -#define VADC_G_ASMR_ENTR_Pos \ - (2UL) /*!< VADC_G ASMR: ENTR (Bit 2) */ -#define VADC_G_ASMR_ENTR_Msk \ - (0x4UL) /*!< VADC_G ASMR: ENTR (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_ENSI_Pos \ - (3UL) /*!< VADC_G ASMR: ENSI (Bit 3) */ -#define VADC_G_ASMR_ENSI_Msk \ - (0x8UL) /*!< VADC_G ASMR: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_SCAN_Pos \ - (4UL) /*!< VADC_G ASMR: SCAN (Bit 4) */ -#define VADC_G_ASMR_SCAN_Msk \ - (0x10UL) /*!< VADC_G ASMR: SCAN (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_LDM_Pos \ - (5UL) /*!< VADC_G ASMR: LDM (Bit 5) */ -#define VADC_G_ASMR_LDM_Msk \ - (0x20UL) /*!< VADC_G ASMR: LDM (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_REQGT_Pos \ - (7UL) /*!< VADC_G ASMR: REQGT (Bit 7) */ -#define VADC_G_ASMR_REQGT_Msk \ - (0x80UL) /*!< VADC_G ASMR: REQGT (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_CLRPND_Pos \ - (8UL) /*!< VADC_G ASMR: CLRPND (Bit 8) */ -#define VADC_G_ASMR_CLRPND_Msk \ - (0x100UL) /*!< VADC_G ASMR: CLRPND (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_LDEV_Pos \ - (9UL) /*!< VADC_G ASMR: LDEV (Bit 9) */ -#define VADC_G_ASMR_LDEV_Msk \ - (0x200UL) /*!< VADC_G ASMR: LDEV (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_RPTDIS_Pos \ - (16UL) /*!< VADC_G ASMR: RPTDIS (Bit 16) */ -#define VADC_G_ASMR_RPTDIS_Msk \ - (0x10000UL) /*!< VADC_G ASMR: RPTDIS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ASSEL -------------------------------- */ -#define VADC_G_ASSEL_CHSEL0_Pos \ - (0UL) /*!< VADC_G ASSEL: CHSEL0 (Bit 0) */ -#define VADC_G_ASSEL_CHSEL0_Msk \ - (0x1UL) /*!< VADC_G ASSEL: CHSEL0 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL1_Pos \ - (1UL) /*!< VADC_G ASSEL: CHSEL1 (Bit 1) */ -#define VADC_G_ASSEL_CHSEL1_Msk \ - (0x2UL) /*!< VADC_G ASSEL: CHSEL1 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL2_Pos \ - (2UL) /*!< VADC_G ASSEL: CHSEL2 (Bit 2) */ -#define VADC_G_ASSEL_CHSEL2_Msk \ - (0x4UL) /*!< VADC_G ASSEL: CHSEL2 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL3_Pos \ - (3UL) /*!< VADC_G ASSEL: CHSEL3 (Bit 3) */ -#define VADC_G_ASSEL_CHSEL3_Msk \ - (0x8UL) /*!< VADC_G ASSEL: CHSEL3 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL4_Pos \ - (4UL) /*!< VADC_G ASSEL: CHSEL4 (Bit 4) */ -#define VADC_G_ASSEL_CHSEL4_Msk \ - (0x10UL) /*!< VADC_G ASSEL: CHSEL4 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL5_Pos \ - (5UL) /*!< VADC_G ASSEL: CHSEL5 (Bit 5) */ -#define VADC_G_ASSEL_CHSEL5_Msk \ - (0x20UL) /*!< VADC_G ASSEL: CHSEL5 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL6_Pos \ - (6UL) /*!< VADC_G ASSEL: CHSEL6 (Bit 6) */ -#define VADC_G_ASSEL_CHSEL6_Msk \ - (0x40UL) /*!< VADC_G ASSEL: CHSEL6 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL7_Pos \ - (7UL) /*!< VADC_G ASSEL: CHSEL7 (Bit 7) */ -#define VADC_G_ASSEL_CHSEL7_Msk \ - (0x80UL) /*!< VADC_G ASSEL: CHSEL7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ASPND -------------------------------- */ -#define VADC_G_ASPND_CHPND0_Pos \ - (0UL) /*!< VADC_G ASPND: CHPND0 (Bit 0) */ -#define VADC_G_ASPND_CHPND0_Msk \ - (0x1UL) /*!< VADC_G ASPND: CHPND0 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND1_Pos \ - (1UL) /*!< VADC_G ASPND: CHPND1 (Bit 1) */ -#define VADC_G_ASPND_CHPND1_Msk \ - (0x2UL) /*!< VADC_G ASPND: CHPND1 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND2_Pos \ - (2UL) /*!< VADC_G ASPND: CHPND2 (Bit 2) */ -#define VADC_G_ASPND_CHPND2_Msk \ - (0x4UL) /*!< VADC_G ASPND: CHPND2 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND3_Pos \ - (3UL) /*!< VADC_G ASPND: CHPND3 (Bit 3) */ -#define VADC_G_ASPND_CHPND3_Msk \ - (0x8UL) /*!< VADC_G ASPND: CHPND3 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND4_Pos \ - (4UL) /*!< VADC_G ASPND: CHPND4 (Bit 4) */ -#define VADC_G_ASPND_CHPND4_Msk \ - (0x10UL) /*!< VADC_G ASPND: CHPND4 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND5_Pos \ - (5UL) /*!< VADC_G ASPND: CHPND5 (Bit 5) */ -#define VADC_G_ASPND_CHPND5_Msk \ - (0x20UL) /*!< VADC_G ASPND: CHPND5 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND6_Pos \ - (6UL) /*!< VADC_G ASPND: CHPND6 (Bit 6) */ -#define VADC_G_ASPND_CHPND6_Msk \ - (0x40UL) /*!< VADC_G ASPND: CHPND6 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND7_Pos \ - (7UL) /*!< VADC_G ASPND: CHPND7 (Bit 7) */ -#define VADC_G_ASPND_CHPND7_Msk \ - (0x80UL) /*!< VADC_G ASPND: CHPND7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CEFLAG ------------------------------- */ -#define VADC_G_CEFLAG_CEV0_Pos \ - (0UL) /*!< VADC_G CEFLAG: CEV0 (Bit 0) */ -#define VADC_G_CEFLAG_CEV0_Msk \ - (0x1UL) /*!< VADC_G CEFLAG: CEV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV1_Pos \ - (1UL) /*!< VADC_G CEFLAG: CEV1 (Bit 1) */ -#define VADC_G_CEFLAG_CEV1_Msk \ - (0x2UL) /*!< VADC_G CEFLAG: CEV1 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV2_Pos \ - (2UL) /*!< VADC_G CEFLAG: CEV2 (Bit 2) */ -#define VADC_G_CEFLAG_CEV2_Msk \ - (0x4UL) /*!< VADC_G CEFLAG: CEV2 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV3_Pos \ - (3UL) /*!< VADC_G CEFLAG: CEV3 (Bit 3) */ -#define VADC_G_CEFLAG_CEV3_Msk \ - (0x8UL) /*!< VADC_G CEFLAG: CEV3 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV4_Pos \ - (4UL) /*!< VADC_G CEFLAG: CEV4 (Bit 4) */ -#define VADC_G_CEFLAG_CEV4_Msk \ - (0x10UL) /*!< VADC_G CEFLAG: CEV4 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV5_Pos \ - (5UL) /*!< VADC_G CEFLAG: CEV5 (Bit 5) */ -#define VADC_G_CEFLAG_CEV5_Msk \ - (0x20UL) /*!< VADC_G CEFLAG: CEV5 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV6_Pos \ - (6UL) /*!< VADC_G CEFLAG: CEV6 (Bit 6) */ -#define VADC_G_CEFLAG_CEV6_Msk \ - (0x40UL) /*!< VADC_G CEFLAG: CEV6 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV7_Pos \ - (7UL) /*!< VADC_G CEFLAG: CEV7 (Bit 7) */ -#define VADC_G_CEFLAG_CEV7_Msk \ - (0x80UL) /*!< VADC_G CEFLAG: CEV7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_REFLAG ------------------------------- */ -#define VADC_G_REFLAG_REV0_Pos \ - (0UL) /*!< VADC_G REFLAG: REV0 (Bit 0) */ -#define VADC_G_REFLAG_REV0_Msk \ - (0x1UL) /*!< VADC_G REFLAG: REV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV1_Pos \ - (1UL) /*!< VADC_G REFLAG: REV1 (Bit 1) */ -#define VADC_G_REFLAG_REV1_Msk \ - (0x2UL) /*!< VADC_G REFLAG: REV1 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV2_Pos \ - (2UL) /*!< VADC_G REFLAG: REV2 (Bit 2) */ -#define VADC_G_REFLAG_REV2_Msk \ - (0x4UL) /*!< VADC_G REFLAG: REV2 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV3_Pos \ - (3UL) /*!< VADC_G REFLAG: REV3 (Bit 3) */ -#define VADC_G_REFLAG_REV3_Msk \ - (0x8UL) /*!< VADC_G REFLAG: REV3 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV4_Pos \ - (4UL) /*!< VADC_G REFLAG: REV4 (Bit 4) */ -#define VADC_G_REFLAG_REV4_Msk \ - (0x10UL) /*!< VADC_G REFLAG: REV4 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV5_Pos \ - (5UL) /*!< VADC_G REFLAG: REV5 (Bit 5) */ -#define VADC_G_REFLAG_REV5_Msk \ - (0x20UL) /*!< VADC_G REFLAG: REV5 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV6_Pos \ - (6UL) /*!< VADC_G REFLAG: REV6 (Bit 6) */ -#define VADC_G_REFLAG_REV6_Msk \ - (0x40UL) /*!< VADC_G REFLAG: REV6 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV7_Pos \ - (7UL) /*!< VADC_G REFLAG: REV7 (Bit 7) */ -#define VADC_G_REFLAG_REV7_Msk \ - (0x80UL) /*!< VADC_G REFLAG: REV7 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV8_Pos \ - (8UL) /*!< VADC_G REFLAG: REV8 (Bit 8) */ -#define VADC_G_REFLAG_REV8_Msk \ - (0x100UL) /*!< VADC_G REFLAG: REV8 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV9_Pos \ - (9UL) /*!< VADC_G REFLAG: REV9 (Bit 9) */ -#define VADC_G_REFLAG_REV9_Msk \ - (0x200UL) /*!< VADC_G REFLAG: REV9 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV10_Pos \ - (10UL) /*!< VADC_G REFLAG: REV10 (Bit 10) */ -#define VADC_G_REFLAG_REV10_Msk \ - (0x400UL) /*!< VADC_G REFLAG: REV10 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV11_Pos \ - (11UL) /*!< VADC_G REFLAG: REV11 (Bit 11) */ -#define VADC_G_REFLAG_REV11_Msk \ - (0x800UL) /*!< VADC_G REFLAG: REV11 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV12_Pos \ - (12UL) /*!< VADC_G REFLAG: REV12 (Bit 12) */ -#define VADC_G_REFLAG_REV12_Msk \ - (0x1000UL) /*!< VADC_G REFLAG: REV12 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV13_Pos \ - (13UL) /*!< VADC_G REFLAG: REV13 (Bit 13) */ -#define VADC_G_REFLAG_REV13_Msk \ - (0x2000UL) /*!< VADC_G REFLAG: REV13 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV14_Pos \ - (14UL) /*!< VADC_G REFLAG: REV14 (Bit 14) */ -#define VADC_G_REFLAG_REV14_Msk \ - (0x4000UL) /*!< VADC_G REFLAG: REV14 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV15_Pos \ - (15UL) /*!< VADC_G REFLAG: REV15 (Bit 15) */ -#define VADC_G_REFLAG_REV15_Msk \ - (0x8000UL) /*!< VADC_G REFLAG: REV15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_SEFLAG ------------------------------- */ -#define VADC_G_SEFLAG_SEV0_Pos \ - (0UL) /*!< VADC_G SEFLAG: SEV0 (Bit 0) */ -#define VADC_G_SEFLAG_SEV0_Msk \ - (0x1UL) /*!< VADC_G SEFLAG: SEV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_SEFLAG_SEV1_Pos \ - (1UL) /*!< VADC_G SEFLAG: SEV1 (Bit 1) */ -#define VADC_G_SEFLAG_SEV1_Msk \ - (0x2UL) /*!< VADC_G SEFLAG: SEV1 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CEFCLR ------------------------------- */ -#define VADC_G_CEFCLR_CEV0_Pos \ - (0UL) /*!< VADC_G CEFCLR: CEV0 (Bit 0) */ -#define VADC_G_CEFCLR_CEV0_Msk \ - (0x1UL) /*!< VADC_G CEFCLR: CEV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV1_Pos \ - (1UL) /*!< VADC_G CEFCLR: CEV1 (Bit 1) */ -#define VADC_G_CEFCLR_CEV1_Msk \ - (0x2UL) /*!< VADC_G CEFCLR: CEV1 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV2_Pos \ - (2UL) /*!< VADC_G CEFCLR: CEV2 (Bit 2) */ -#define VADC_G_CEFCLR_CEV2_Msk \ - (0x4UL) /*!< VADC_G CEFCLR: CEV2 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV3_Pos \ - (3UL) /*!< VADC_G CEFCLR: CEV3 (Bit 3) */ -#define VADC_G_CEFCLR_CEV3_Msk \ - (0x8UL) /*!< VADC_G CEFCLR: CEV3 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV4_Pos \ - (4UL) /*!< VADC_G CEFCLR: CEV4 (Bit 4) */ -#define VADC_G_CEFCLR_CEV4_Msk \ - (0x10UL) /*!< VADC_G CEFCLR: CEV4 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV5_Pos \ - (5UL) /*!< VADC_G CEFCLR: CEV5 (Bit 5) */ -#define VADC_G_CEFCLR_CEV5_Msk \ - (0x20UL) /*!< VADC_G CEFCLR: CEV5 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV6_Pos \ - (6UL) /*!< VADC_G CEFCLR: CEV6 (Bit 6) */ -#define VADC_G_CEFCLR_CEV6_Msk \ - (0x40UL) /*!< VADC_G CEFCLR: CEV6 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV7_Pos \ - (7UL) /*!< VADC_G CEFCLR: CEV7 (Bit 7) */ -#define VADC_G_CEFCLR_CEV7_Msk \ - (0x80UL) /*!< VADC_G CEFCLR: CEV7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_REFCLR ------------------------------- */ -#define VADC_G_REFCLR_REV0_Pos \ - (0UL) /*!< VADC_G REFCLR: REV0 (Bit 0) */ -#define VADC_G_REFCLR_REV0_Msk \ - (0x1UL) /*!< VADC_G REFCLR: REV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV1_Pos \ - (1UL) /*!< VADC_G REFCLR: REV1 (Bit 1) */ -#define VADC_G_REFCLR_REV1_Msk \ - (0x2UL) /*!< VADC_G REFCLR: REV1 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV2_Pos \ - (2UL) /*!< VADC_G REFCLR: REV2 (Bit 2) */ -#define VADC_G_REFCLR_REV2_Msk \ - (0x4UL) /*!< VADC_G REFCLR: REV2 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV3_Pos \ - (3UL) /*!< VADC_G REFCLR: REV3 (Bit 3) */ -#define VADC_G_REFCLR_REV3_Msk \ - (0x8UL) /*!< VADC_G REFCLR: REV3 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV4_Pos \ - (4UL) /*!< VADC_G REFCLR: REV4 (Bit 4) */ -#define VADC_G_REFCLR_REV4_Msk \ - (0x10UL) /*!< VADC_G REFCLR: REV4 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV5_Pos \ - (5UL) /*!< VADC_G REFCLR: REV5 (Bit 5) */ -#define VADC_G_REFCLR_REV5_Msk \ - (0x20UL) /*!< VADC_G REFCLR: REV5 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV6_Pos \ - (6UL) /*!< VADC_G REFCLR: REV6 (Bit 6) */ -#define VADC_G_REFCLR_REV6_Msk \ - (0x40UL) /*!< VADC_G REFCLR: REV6 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV7_Pos \ - (7UL) /*!< VADC_G REFCLR: REV7 (Bit 7) */ -#define VADC_G_REFCLR_REV7_Msk \ - (0x80UL) /*!< VADC_G REFCLR: REV7 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV8_Pos \ - (8UL) /*!< VADC_G REFCLR: REV8 (Bit 8) */ -#define VADC_G_REFCLR_REV8_Msk \ - (0x100UL) /*!< VADC_G REFCLR: REV8 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV9_Pos \ - (9UL) /*!< VADC_G REFCLR: REV9 (Bit 9) */ -#define VADC_G_REFCLR_REV9_Msk \ - (0x200UL) /*!< VADC_G REFCLR: REV9 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV10_Pos \ - (10UL) /*!< VADC_G REFCLR: REV10 (Bit 10) */ -#define VADC_G_REFCLR_REV10_Msk \ - (0x400UL) /*!< VADC_G REFCLR: REV10 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV11_Pos \ - (11UL) /*!< VADC_G REFCLR: REV11 (Bit 11) */ -#define VADC_G_REFCLR_REV11_Msk \ - (0x800UL) /*!< VADC_G REFCLR: REV11 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV12_Pos \ - (12UL) /*!< VADC_G REFCLR: REV12 (Bit 12) */ -#define VADC_G_REFCLR_REV12_Msk \ - (0x1000UL) /*!< VADC_G REFCLR: REV12 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV13_Pos \ - (13UL) /*!< VADC_G REFCLR: REV13 (Bit 13) */ -#define VADC_G_REFCLR_REV13_Msk \ - (0x2000UL) /*!< VADC_G REFCLR: REV13 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV14_Pos \ - (14UL) /*!< VADC_G REFCLR: REV14 (Bit 14) */ -#define VADC_G_REFCLR_REV14_Msk \ - (0x4000UL) /*!< VADC_G REFCLR: REV14 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV15_Pos \ - (15UL) /*!< VADC_G REFCLR: REV15 (Bit 15) */ -#define VADC_G_REFCLR_REV15_Msk \ - (0x8000UL) /*!< VADC_G REFCLR: REV15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_SEFCLR ------------------------------- */ -#define VADC_G_SEFCLR_SEV0_Pos \ - (0UL) /*!< VADC_G SEFCLR: SEV0 (Bit 0) */ -#define VADC_G_SEFCLR_SEV0_Msk \ - (0x1UL) /*!< VADC_G SEFCLR: SEV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_SEFCLR_SEV1_Pos \ - (1UL) /*!< VADC_G SEFCLR: SEV1 (Bit 1) */ -#define VADC_G_SEFCLR_SEV1_Msk \ - (0x2UL) /*!< VADC_G SEFCLR: SEV1 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CEVNP0 ------------------------------- */ -#define VADC_G_CEVNP0_CEV0NP_Pos \ - (0UL) /*!< VADC_G CEVNP0: CEV0NP (Bit 0) */ -#define VADC_G_CEVNP0_CEV0NP_Msk \ - (0xfUL) /*!< VADC_G CEVNP0: CEV0NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV1NP_Pos \ - (4UL) /*!< VADC_G CEVNP0: CEV1NP (Bit 4) */ -#define VADC_G_CEVNP0_CEV1NP_Msk \ - (0xf0UL) /*!< VADC_G CEVNP0: CEV1NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV2NP_Pos \ - (8UL) /*!< VADC_G CEVNP0: CEV2NP (Bit 8) */ -#define VADC_G_CEVNP0_CEV2NP_Msk \ - (0xf00UL) /*!< VADC_G CEVNP0: CEV2NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV3NP_Pos \ - (12UL) /*!< VADC_G CEVNP0: CEV3NP (Bit 12) */ -#define VADC_G_CEVNP0_CEV3NP_Msk \ - (0xf000UL) /*!< VADC_G CEVNP0: CEV3NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV4NP_Pos \ - (16UL) /*!< VADC_G CEVNP0: CEV4NP (Bit 16) */ -#define VADC_G_CEVNP0_CEV4NP_Msk \ - (0xf0000UL) /*!< VADC_G CEVNP0: CEV4NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV5NP_Pos \ - (20UL) /*!< VADC_G CEVNP0: CEV5NP (Bit 20) */ -#define VADC_G_CEVNP0_CEV5NP_Msk \ - (0xf00000UL) /*!< VADC_G CEVNP0: CEV5NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV6NP_Pos \ - (24UL) /*!< VADC_G CEVNP0: CEV6NP (Bit 24) */ -#define VADC_G_CEVNP0_CEV6NP_Msk \ - (0xf000000UL) /*!< VADC_G CEVNP0: CEV6NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV7NP_Pos \ - (28UL) /*!< VADC_G CEVNP0: CEV7NP (Bit 28) */ -#define VADC_G_CEVNP0_CEV7NP_Msk \ - (0xf0000000UL) /*!< VADC_G CEVNP0: CEV7NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_REVNP0 ------------------------------- */ -#define VADC_G_REVNP0_REV0NP_Pos \ - (0UL) /*!< VADC_G REVNP0: REV0NP (Bit 0) */ -#define VADC_G_REVNP0_REV0NP_Msk \ - (0xfUL) /*!< VADC_G REVNP0: REV0NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV1NP_Pos \ - (4UL) /*!< VADC_G REVNP0: REV1NP (Bit 4) */ -#define VADC_G_REVNP0_REV1NP_Msk \ - (0xf0UL) /*!< VADC_G REVNP0: REV1NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV2NP_Pos \ - (8UL) /*!< VADC_G REVNP0: REV2NP (Bit 8) */ -#define VADC_G_REVNP0_REV2NP_Msk \ - (0xf00UL) /*!< VADC_G REVNP0: REV2NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV3NP_Pos \ - (12UL) /*!< VADC_G REVNP0: REV3NP (Bit 12) */ -#define VADC_G_REVNP0_REV3NP_Msk \ - (0xf000UL) /*!< VADC_G REVNP0: REV3NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV4NP_Pos \ - (16UL) /*!< VADC_G REVNP0: REV4NP (Bit 16) */ -#define VADC_G_REVNP0_REV4NP_Msk \ - (0xf0000UL) /*!< VADC_G REVNP0: REV4NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV5NP_Pos \ - (20UL) /*!< VADC_G REVNP0: REV5NP (Bit 20) */ -#define VADC_G_REVNP0_REV5NP_Msk \ - (0xf00000UL) /*!< VADC_G REVNP0: REV5NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV6NP_Pos \ - (24UL) /*!< VADC_G REVNP0: REV6NP (Bit 24) */ -#define VADC_G_REVNP0_REV6NP_Msk \ - (0xf000000UL) /*!< VADC_G REVNP0: REV6NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV7NP_Pos \ - (28UL) /*!< VADC_G REVNP0: REV7NP (Bit 28) */ -#define VADC_G_REVNP0_REV7NP_Msk \ - (0xf0000000UL) /*!< VADC_G REVNP0: REV7NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_REVNP1 ------------------------------- */ -#define VADC_G_REVNP1_REV8NP_Pos \ - (0UL) /*!< VADC_G REVNP1: REV8NP (Bit 0) */ -#define VADC_G_REVNP1_REV8NP_Msk \ - (0xfUL) /*!< VADC_G REVNP1: REV8NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV9NP_Pos \ - (4UL) /*!< VADC_G REVNP1: REV9NP (Bit 4) */ -#define VADC_G_REVNP1_REV9NP_Msk \ - (0xf0UL) /*!< VADC_G REVNP1: REV9NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV10NP_Pos \ - (8UL) /*!< VADC_G REVNP1: REV10NP (Bit 8) */ -#define VADC_G_REVNP1_REV10NP_Msk \ - (0xf00UL) /*!< VADC_G REVNP1: REV10NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV11NP_Pos \ - (12UL) /*!< VADC_G REVNP1: REV11NP (Bit 12) */ -#define VADC_G_REVNP1_REV11NP_Msk \ - (0xf000UL) /*!< VADC_G REVNP1: REV11NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV12NP_Pos \ - (16UL) /*!< VADC_G REVNP1: REV12NP (Bit 16) */ -#define VADC_G_REVNP1_REV12NP_Msk \ - (0xf0000UL) /*!< VADC_G REVNP1: REV12NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV13NP_Pos \ - (20UL) /*!< VADC_G REVNP1: REV13NP (Bit 20) */ -#define VADC_G_REVNP1_REV13NP_Msk \ - (0xf00000UL) /*!< VADC_G REVNP1: REV13NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV14NP_Pos \ - (24UL) /*!< VADC_G REVNP1: REV14NP (Bit 24) */ -#define VADC_G_REVNP1_REV14NP_Msk \ - (0xf000000UL) /*!< VADC_G REVNP1: REV14NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV15NP_Pos \ - (28UL) /*!< VADC_G REVNP1: REV15NP (Bit 28) */ -#define VADC_G_REVNP1_REV15NP_Msk \ - (0xf0000000UL) /*!< VADC_G REVNP1: REV15NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_SEVNP -------------------------------- */ -#define VADC_G_SEVNP_SEV0NP_Pos \ - (0UL) /*!< VADC_G SEVNP: SEV0NP (Bit 0) */ -#define VADC_G_SEVNP_SEV0NP_Msk \ - (0xfUL) /*!< VADC_G SEVNP: SEV0NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_SEVNP_SEV1NP_Pos \ - (4UL) /*!< VADC_G SEVNP: SEV1NP (Bit 4) */ -#define VADC_G_SEVNP_SEV1NP_Msk \ - (0xf0UL) /*!< VADC_G SEVNP: SEV1NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_SRACT -------------------------------- */ -#define VADC_G_SRACT_AGSR0_Pos \ - (0UL) /*!< VADC_G SRACT: AGSR0 (Bit 0) */ -#define VADC_G_SRACT_AGSR0_Msk \ - (0x1UL) /*!< VADC_G SRACT: AGSR0 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_AGSR1_Pos \ - (1UL) /*!< VADC_G SRACT: AGSR1 (Bit 1) */ -#define VADC_G_SRACT_AGSR1_Msk \ - (0x2UL) /*!< VADC_G SRACT: AGSR1 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_AGSR2_Pos \ - (2UL) /*!< VADC_G SRACT: AGSR2 (Bit 2) */ -#define VADC_G_SRACT_AGSR2_Msk \ - (0x4UL) /*!< VADC_G SRACT: AGSR2 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_AGSR3_Pos \ - (3UL) /*!< VADC_G SRACT: AGSR3 (Bit 3) */ -#define VADC_G_SRACT_AGSR3_Msk \ - (0x8UL) /*!< VADC_G SRACT: AGSR3 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_ASSR0_Pos \ - (8UL) /*!< VADC_G SRACT: ASSR0 (Bit 8) */ -#define VADC_G_SRACT_ASSR0_Msk \ - (0x100UL) /*!< VADC_G SRACT: ASSR0 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_ASSR1_Pos \ - (9UL) /*!< VADC_G SRACT: ASSR1 (Bit 9) */ -#define VADC_G_SRACT_ASSR1_Msk \ - (0x200UL) /*!< VADC_G SRACT: ASSR1 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_ASSR2_Pos \ - (10UL) /*!< VADC_G SRACT: ASSR2 (Bit 10) */ -#define VADC_G_SRACT_ASSR2_Msk \ - (0x400UL) /*!< VADC_G SRACT: ASSR2 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_ASSR3_Pos \ - (11UL) /*!< VADC_G SRACT: ASSR3 (Bit 11) */ -#define VADC_G_SRACT_ASSR3_Msk \ - (0x800UL) /*!< VADC_G SRACT: ASSR3 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- VADC_G_EMUXCTR ------------------------------- */ -#define VADC_G_EMUXCTR_EMUXSET_Pos \ - (0UL) /*!< VADC_G EMUXCTR: EMUXSET (Bit 0) */ -#define VADC_G_EMUXCTR_EMUXSET_Msk \ - (0x7UL) /*!< VADC_G EMUXCTR: EMUXSET (Bitfield-Mask: 0x07) */ -#define VADC_G_EMUXCTR_EMUXACT_Pos \ - (8UL) /*!< VADC_G EMUXCTR: EMUXACT (Bit 8) */ -#define VADC_G_EMUXCTR_EMUXACT_Msk \ - (0x700UL) /*!< VADC_G EMUXCTR: EMUXACT (Bitfield-Mask: 0x07) */ -#define VADC_G_EMUXCTR_EMUXCH_Pos \ - (16UL) /*!< VADC_G EMUXCTR: EMUXCH (Bit 16) */ -#define VADC_G_EMUXCTR_EMUXCH_Msk \ - (0x3ff0000UL) /*!< VADC_G EMUXCTR: EMUXCH (Bitfield-Mask: 0x3ff) */ -#define VADC_G_EMUXCTR_EMUXMODE_Pos \ - (26UL) /*!< VADC_G EMUXCTR: EMUXMODE (Bit 26) */ -#define VADC_G_EMUXCTR_EMUXMODE_Msk \ - (0xc000000UL) /*!< VADC_G EMUXCTR: EMUXMODE (Bitfield-Mask: 0x03) */ -#define VADC_G_EMUXCTR_EMXCOD_Pos \ - (28UL) /*!< VADC_G EMUXCTR: EMXCOD (Bit 28) */ -#define VADC_G_EMUXCTR_EMXCOD_Msk \ - (0x10000000UL) /*!< VADC_G EMUXCTR: EMXCOD (Bitfield-Mask: 0x01) */ -#define VADC_G_EMUXCTR_EMXST_Pos \ - (29UL) /*!< VADC_G EMUXCTR: EMXST (Bit 29) */ -#define VADC_G_EMUXCTR_EMXST_Msk \ - (0x20000000UL) /*!< VADC_G EMUXCTR: EMXST (Bitfield-Mask: 0x01) */ -#define VADC_G_EMUXCTR_EMXCSS_Pos \ - (30UL) /*!< VADC_G EMUXCTR: EMXCSS (Bit 30) */ -#define VADC_G_EMUXCTR_EMXCSS_Msk \ - (0x40000000UL) /*!< VADC_G EMUXCTR: EMXCSS (Bitfield-Mask: 0x01) */ -#define VADC_G_EMUXCTR_EMXWC_Pos \ - (31UL) /*!< VADC_G EMUXCTR: EMXWC (Bit 31) */ -#define VADC_G_EMUXCTR_EMXWC_Msk \ - (0x80000000UL) /*!< VADC_G EMUXCTR: EMXWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_VFR --------------------------------- */ -#define VADC_G_VFR_VF0_Pos (0UL) /*!< VADC_G VFR: VF0 (Bit 0) */ -#define VADC_G_VFR_VF0_Msk \ - (0x1UL) /*!< VADC_G VFR: VF0 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF1_Pos (1UL) /*!< VADC_G VFR: VF1 (Bit 1) */ -#define VADC_G_VFR_VF1_Msk \ - (0x2UL) /*!< VADC_G VFR: VF1 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF2_Pos (2UL) /*!< VADC_G VFR: VF2 (Bit 2) */ -#define VADC_G_VFR_VF2_Msk \ - (0x4UL) /*!< VADC_G VFR: VF2 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF3_Pos (3UL) /*!< VADC_G VFR: VF3 (Bit 3) */ -#define VADC_G_VFR_VF3_Msk \ - (0x8UL) /*!< VADC_G VFR: VF3 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF4_Pos (4UL) /*!< VADC_G VFR: VF4 (Bit 4) */ -#define VADC_G_VFR_VF4_Msk \ - (0x10UL) /*!< VADC_G VFR: VF4 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF5_Pos (5UL) /*!< VADC_G VFR: VF5 (Bit 5) */ -#define VADC_G_VFR_VF5_Msk \ - (0x20UL) /*!< VADC_G VFR: VF5 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF6_Pos (6UL) /*!< VADC_G VFR: VF6 (Bit 6) */ -#define VADC_G_VFR_VF6_Msk \ - (0x40UL) /*!< VADC_G VFR: VF6 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF7_Pos (7UL) /*!< VADC_G VFR: VF7 (Bit 7) */ -#define VADC_G_VFR_VF7_Msk \ - (0x80UL) /*!< VADC_G VFR: VF7 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF8_Pos (8UL) /*!< VADC_G VFR: VF8 (Bit 8) */ -#define VADC_G_VFR_VF8_Msk \ - (0x100UL) /*!< VADC_G VFR: VF8 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF9_Pos (9UL) /*!< VADC_G VFR: VF9 (Bit 9) */ -#define VADC_G_VFR_VF9_Msk \ - (0x200UL) /*!< VADC_G VFR: VF9 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF10_Pos \ - (10UL) /*!< VADC_G VFR: VF10 (Bit 10) */ -#define VADC_G_VFR_VF10_Msk \ - (0x400UL) /*!< VADC_G VFR: VF10 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF11_Pos \ - (11UL) /*!< VADC_G VFR: VF11 (Bit 11) */ -#define VADC_G_VFR_VF11_Msk \ - (0x800UL) /*!< VADC_G VFR: VF11 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF12_Pos \ - (12UL) /*!< VADC_G VFR: VF12 (Bit 12) */ -#define VADC_G_VFR_VF12_Msk \ - (0x1000UL) /*!< VADC_G VFR: VF12 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF13_Pos \ - (13UL) /*!< VADC_G VFR: VF13 (Bit 13) */ -#define VADC_G_VFR_VF13_Msk \ - (0x2000UL) /*!< VADC_G VFR: VF13 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF14_Pos \ - (14UL) /*!< VADC_G VFR: VF14 (Bit 14) */ -#define VADC_G_VFR_VF14_Msk \ - (0x4000UL) /*!< VADC_G VFR: VF14 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF15_Pos \ - (15UL) /*!< VADC_G VFR: VF15 (Bit 15) */ -#define VADC_G_VFR_VF15_Msk \ - (0x8000UL) /*!< VADC_G VFR: VF15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CHCTR -------------------------------- */ -#define VADC_G_CHCTR_ICLSEL_Pos \ - (0UL) /*!< VADC_G CHCTR: ICLSEL (Bit 0) */ -#define VADC_G_CHCTR_ICLSEL_Msk \ - (0x3UL) /*!< VADC_G CHCTR: ICLSEL (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_BNDSELL_Pos \ - (4UL) /*!< VADC_G CHCTR: BNDSELL (Bit 4) */ -#define VADC_G_CHCTR_BNDSELL_Msk \ - (0x30UL) /*!< VADC_G CHCTR: BNDSELL (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_BNDSELU_Pos \ - (6UL) /*!< VADC_G CHCTR: BNDSELU (Bit 6) */ -#define VADC_G_CHCTR_BNDSELU_Msk \ - (0xc0UL) /*!< VADC_G CHCTR: BNDSELU (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_CHEVMODE_Pos \ - (8UL) /*!< VADC_G CHCTR: CHEVMODE (Bit 8) */ -#define VADC_G_CHCTR_CHEVMODE_Msk \ - (0x300UL) /*!< VADC_G CHCTR: CHEVMODE (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_SYNC_Pos \ - (10UL) /*!< VADC_G CHCTR: SYNC (Bit 10) */ -#define VADC_G_CHCTR_SYNC_Msk \ - (0x400UL) /*!< VADC_G CHCTR: SYNC (Bitfield-Mask: 0x01) */ -#define VADC_G_CHCTR_REFSEL_Pos \ - (11UL) /*!< VADC_G CHCTR: REFSEL (Bit 11) */ -#define VADC_G_CHCTR_REFSEL_Msk \ - (0x800UL) /*!< VADC_G CHCTR: REFSEL (Bitfield-Mask: 0x01) */ -#define VADC_G_CHCTR_RESREG_Pos \ - (16UL) /*!< VADC_G CHCTR: RESREG (Bit 16) */ -#define VADC_G_CHCTR_RESREG_Msk \ - (0xf0000UL) /*!< VADC_G CHCTR: RESREG (Bitfield-Mask: 0x0f) */ -#define VADC_G_CHCTR_RESTBS_Pos \ - (20UL) /*!< VADC_G CHCTR: RESTBS (Bit 20) */ -#define VADC_G_CHCTR_RESTBS_Msk \ - (0x100000UL) /*!< VADC_G CHCTR: RESTBS (Bitfield-Mask: 0x01) */ -#define VADC_G_CHCTR_RESPOS_Pos \ - (21UL) /*!< VADC_G CHCTR: RESPOS (Bit 21) */ -#define VADC_G_CHCTR_RESPOS_Msk \ - (0x200000UL) /*!< VADC_G CHCTR: RESPOS (Bitfield-Mask: 0x01) */ -#define VADC_G_CHCTR_BWDCH_Pos \ - (28UL) /*!< VADC_G CHCTR: BWDCH (Bit 28) */ -#define VADC_G_CHCTR_BWDCH_Msk \ - (0x30000000UL) /*!< VADC_G CHCTR: BWDCH (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_BWDEN_Pos \ - (30UL) /*!< VADC_G CHCTR: BWDEN (Bit 30) */ -#define VADC_G_CHCTR_BWDEN_Msk \ - (0x40000000UL) /*!< VADC_G CHCTR: BWDEN (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_RCR --------------------------------- */ -#define VADC_G_RCR_DRCTR_Pos \ - (16UL) /*!< VADC_G RCR: DRCTR (Bit 16) */ -#define VADC_G_RCR_DRCTR_Msk \ - (0xf0000UL) /*!< VADC_G RCR: DRCTR (Bitfield-Mask: 0x0f) */ -#define VADC_G_RCR_DMM_Pos \ - (20UL) /*!< VADC_G RCR: DMM (Bit 20) */ -#define VADC_G_RCR_DMM_Msk \ - (0x300000UL) /*!< VADC_G RCR: DMM (Bitfield-Mask: 0x03) */ -#define VADC_G_RCR_WFR_Pos \ - (24UL) /*!< VADC_G RCR: WFR (Bit 24) */ -#define VADC_G_RCR_WFR_Msk \ - (0x1000000UL) /*!< VADC_G RCR: WFR (Bitfield-Mask: 0x01) */ -#define VADC_G_RCR_FEN_Pos \ - (25UL) /*!< VADC_G RCR: FEN (Bit 25) */ -#define VADC_G_RCR_FEN_Msk \ - (0x6000000UL) /*!< VADC_G RCR: FEN (Bitfield-Mask: 0x03) */ -#define VADC_G_RCR_SRGEN_Pos \ - (31UL) /*!< VADC_G RCR: SRGEN (Bit 31) */ -#define VADC_G_RCR_SRGEN_Msk \ - (0x80000000UL) /*!< VADC_G RCR: SRGEN (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_RES --------------------------------- */ -#define VADC_G_RES_RESULT_Pos \ - (0UL) /*!< VADC_G RES: RESULT (Bit 0) */ -#define VADC_G_RES_RESULT_Msk \ - (0xffffUL) /*!< VADC_G RES: RESULT (Bitfield-Mask: 0xffff) */ -#define VADC_G_RES_DRC_Pos \ - (16UL) /*!< VADC_G RES: DRC (Bit 16) */ -#define VADC_G_RES_DRC_Msk \ - (0xf0000UL) /*!< VADC_G RES: DRC (Bitfield-Mask: 0x0f) */ -#define VADC_G_RES_CHNR_Pos \ - (20UL) /*!< VADC_G RES: CHNR (Bit 20) */ -#define VADC_G_RES_CHNR_Msk \ - (0x1f00000UL) /*!< VADC_G RES: CHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_RES_EMUX_Pos \ - (25UL) /*!< VADC_G RES: EMUX (Bit 25) */ -#define VADC_G_RES_EMUX_Msk \ - (0xe000000UL) /*!< VADC_G RES: EMUX (Bitfield-Mask: 0x07) */ -#define VADC_G_RES_CRS_Pos \ - (28UL) /*!< VADC_G RES: CRS (Bit 28) */ -#define VADC_G_RES_CRS_Msk \ - (0x30000000UL) /*!< VADC_G RES: CRS (Bitfield-Mask: 0x03) */ -#define VADC_G_RES_FCR_Pos \ - (30UL) /*!< VADC_G RES: FCR (Bit 30) */ -#define VADC_G_RES_FCR_Msk \ - (0x40000000UL) /*!< VADC_G RES: FCR (Bitfield-Mask: 0x01) */ -#define VADC_G_RES_VF_Pos (31UL) /*!< VADC_G RES: VF (Bit 31) */ -#define VADC_G_RES_VF_Msk \ - (0x80000000UL) /*!< VADC_G RES: VF (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_RESD -------------------------------- */ -#define VADC_G_RESD_RESULT_Pos \ - (0UL) /*!< VADC_G RESD: RESULT (Bit 0) */ -#define VADC_G_RESD_RESULT_Msk \ - (0xffffUL) /*!< VADC_G RESD: RESULT (Bitfield-Mask: 0xffff) */ -#define VADC_G_RESD_DRC_Pos \ - (16UL) /*!< VADC_G RESD: DRC (Bit 16) */ -#define VADC_G_RESD_DRC_Msk \ - (0xf0000UL) /*!< VADC_G RESD: DRC (Bitfield-Mask: 0x0f) */ -#define VADC_G_RESD_CHNR_Pos \ - (20UL) /*!< VADC_G RESD: CHNR (Bit 20) */ -#define VADC_G_RESD_CHNR_Msk \ - (0x1f00000UL) /*!< VADC_G RESD: CHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_RESD_EMUX_Pos \ - (25UL) /*!< VADC_G RESD: EMUX (Bit 25) */ -#define VADC_G_RESD_EMUX_Msk \ - (0xe000000UL) /*!< VADC_G RESD: EMUX (Bitfield-Mask: 0x07) */ -#define VADC_G_RESD_CRS_Pos \ - (28UL) /*!< VADC_G RESD: CRS (Bit 28) */ -#define VADC_G_RESD_CRS_Msk \ - (0x30000000UL) /*!< VADC_G RESD: CRS (Bitfield-Mask: 0x03) */ -#define VADC_G_RESD_FCR_Pos \ - (30UL) /*!< VADC_G RESD: FCR (Bit 30) */ -#define VADC_G_RESD_FCR_Msk \ - (0x40000000UL) /*!< VADC_G RESD: FCR (Bitfield-Mask: 0x01) */ -#define VADC_G_RESD_VF_Pos \ - (31UL) /*!< VADC_G RESD: VF (Bit 31) */ -#define VADC_G_RESD_VF_Msk \ - (0x80000000UL) /*!< VADC_G RESD: VF (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'DAC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- DAC_ID ----------------------------------- */ -#define DAC_ID_MODR_Pos (0UL) /*!< DAC ID: MODR (Bit 0) */ -#define DAC_ID_MODR_Msk (0xffUL) /*!< DAC ID: MODR (Bitfield-Mask: 0xff) */ -#define DAC_ID_MODT_Pos (8UL) /*!< DAC ID: MODT (Bit 8) */ -#define DAC_ID_MODT_Msk \ - (0xff00UL) /*!< DAC ID: MODT (Bitfield-Mask: 0xff) */ -#define DAC_ID_MODN_Pos (16UL) /*!< DAC ID: MODN (Bit 16) */ -#define DAC_ID_MODN_Msk \ - (0xffff0000UL) /*!< DAC ID: MODN (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- DAC_DAC0CFG0 -------------------------------- */ -#define DAC_DAC0CFG0_FREQ_Pos \ - (0UL) /*!< DAC DAC0CFG0: FREQ (Bit 0) */ -#define DAC_DAC0CFG0_FREQ_Msk \ - (0xfffffUL) /*!< DAC DAC0CFG0: FREQ (Bitfield-Mask: 0xfffff) */ -#define DAC_DAC0CFG0_MODE_Pos \ - (20UL) /*!< DAC DAC0CFG0: MODE (Bit 20) */ -#define DAC_DAC0CFG0_MODE_Msk \ - (0x700000UL) /*!< DAC DAC0CFG0: MODE (Bitfield-Mask: 0x07) */ -#define DAC_DAC0CFG0_SIGN_Pos \ - (23UL) /*!< DAC DAC0CFG0: SIGN (Bit 23) */ -#define DAC_DAC0CFG0_SIGN_Msk \ - (0x800000UL) /*!< DAC DAC0CFG0: SIGN (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_FIFOIND_Pos \ - (24UL) /*!< DAC DAC0CFG0: FIFOIND (Bit 24) */ -#define DAC_DAC0CFG0_FIFOIND_Msk \ - (0x3000000UL) /*!< DAC DAC0CFG0: FIFOIND (Bitfield-Mask: 0x03) */ -#define DAC_DAC0CFG0_FIFOEMP_Pos \ - (26UL) /*!< DAC DAC0CFG0: FIFOEMP (Bit 26) */ -#define DAC_DAC0CFG0_FIFOEMP_Msk \ - (0x4000000UL) /*!< DAC DAC0CFG0: FIFOEMP (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_FIFOFUL_Pos \ - (27UL) /*!< DAC DAC0CFG0: FIFOFUL (Bit 27) */ -#define DAC_DAC0CFG0_FIFOFUL_Msk \ - (0x8000000UL) /*!< DAC DAC0CFG0: FIFOFUL (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_NEGATE_Pos \ - (28UL) /*!< DAC DAC0CFG0: NEGATE (Bit 28) */ -#define DAC_DAC0CFG0_NEGATE_Msk \ - (0x10000000UL) /*!< DAC DAC0CFG0: NEGATE (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_SIGNEN_Pos \ - (29UL) /*!< DAC DAC0CFG0: SIGNEN (Bit 29) */ -#define DAC_DAC0CFG0_SIGNEN_Msk \ - (0x20000000UL) /*!< DAC DAC0CFG0: SIGNEN (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_SREN_Pos \ - (30UL) /*!< DAC DAC0CFG0: SREN (Bit 30) */ -#define DAC_DAC0CFG0_SREN_Msk \ - (0x40000000UL) /*!< DAC DAC0CFG0: SREN (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_RUN_Pos \ - (31UL) /*!< DAC DAC0CFG0: RUN (Bit 31) */ -#define DAC_DAC0CFG0_RUN_Msk \ - (0x80000000UL) /*!< DAC DAC0CFG0: RUN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- DAC_DAC0CFG1 -------------------------------- */ -#define DAC_DAC0CFG1_SCALE_Pos \ - (0UL) /*!< DAC DAC0CFG1: SCALE (Bit 0) */ -#define DAC_DAC0CFG1_SCALE_Msk \ - (0x7UL) /*!< DAC DAC0CFG1: SCALE (Bitfield-Mask: 0x07) */ -#define DAC_DAC0CFG1_MULDIV_Pos \ - (3UL) /*!< DAC DAC0CFG1: MULDIV (Bit 3) */ -#define DAC_DAC0CFG1_MULDIV_Msk \ - (0x8UL) /*!< DAC DAC0CFG1: MULDIV (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG1_OFFS_Pos \ - (4UL) /*!< DAC DAC0CFG1: OFFS (Bit 4) */ -#define DAC_DAC0CFG1_OFFS_Msk \ - (0xff0UL) /*!< DAC DAC0CFG1: OFFS (Bitfield-Mask: 0xff) */ -#define DAC_DAC0CFG1_TRIGSEL_Pos \ - (12UL) /*!< DAC DAC0CFG1: TRIGSEL (Bit 12) */ -#define DAC_DAC0CFG1_TRIGSEL_Msk \ - (0x7000UL) /*!< DAC DAC0CFG1: TRIGSEL (Bitfield-Mask: 0x07) */ -#define DAC_DAC0CFG1_DATMOD_Pos \ - (15UL) /*!< DAC DAC0CFG1: DATMOD (Bit 15) */ -#define DAC_DAC0CFG1_DATMOD_Msk \ - (0x8000UL) /*!< DAC DAC0CFG1: DATMOD (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG1_SWTRIG_Pos \ - (16UL) /*!< DAC DAC0CFG1: SWTRIG (Bit 16) */ -#define DAC_DAC0CFG1_SWTRIG_Msk \ - (0x10000UL) /*!< DAC DAC0CFG1: SWTRIG (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG1_TRIGMOD_Pos \ - (17UL) /*!< DAC DAC0CFG1: TRIGMOD (Bit 17) */ -#define DAC_DAC0CFG1_TRIGMOD_Msk \ - (0x60000UL) /*!< DAC DAC0CFG1: TRIGMOD (Bitfield-Mask: 0x03) */ -#define DAC_DAC0CFG1_ANACFG_Pos \ - (19UL) /*!< DAC DAC0CFG1: ANACFG (Bit 19) */ -#define DAC_DAC0CFG1_ANACFG_Msk \ - (0xf80000UL) /*!< DAC DAC0CFG1: ANACFG (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0CFG1_ANAEN_Pos \ - (24UL) /*!< DAC DAC0CFG1: ANAEN (Bit 24) */ -#define DAC_DAC0CFG1_ANAEN_Msk \ - (0x1000000UL) /*!< DAC DAC0CFG1: ANAEN (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG1_REFCFGL_Pos \ - (28UL) /*!< DAC DAC0CFG1: REFCFGL (Bit 28) */ -#define DAC_DAC0CFG1_REFCFGL_Msk \ - (0xf0000000UL) /*!< DAC DAC0CFG1: REFCFGL (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- DAC_DAC1CFG0 -------------------------------- */ -#define DAC_DAC1CFG0_FREQ_Pos \ - (0UL) /*!< DAC DAC1CFG0: FREQ (Bit 0) */ -#define DAC_DAC1CFG0_FREQ_Msk \ - (0xfffffUL) /*!< DAC DAC1CFG0: FREQ (Bitfield-Mask: 0xfffff) */ -#define DAC_DAC1CFG0_MODE_Pos \ - (20UL) /*!< DAC DAC1CFG0: MODE (Bit 20) */ -#define DAC_DAC1CFG0_MODE_Msk \ - (0x700000UL) /*!< DAC DAC1CFG0: MODE (Bitfield-Mask: 0x07) */ -#define DAC_DAC1CFG0_SIGN_Pos \ - (23UL) /*!< DAC DAC1CFG0: SIGN (Bit 23) */ -#define DAC_DAC1CFG0_SIGN_Msk \ - (0x800000UL) /*!< DAC DAC1CFG0: SIGN (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_FIFOIND_Pos \ - (24UL) /*!< DAC DAC1CFG0: FIFOIND (Bit 24) */ -#define DAC_DAC1CFG0_FIFOIND_Msk \ - (0x3000000UL) /*!< DAC DAC1CFG0: FIFOIND (Bitfield-Mask: 0x03) */ -#define DAC_DAC1CFG0_FIFOEMP_Pos \ - (26UL) /*!< DAC DAC1CFG0: FIFOEMP (Bit 26) */ -#define DAC_DAC1CFG0_FIFOEMP_Msk \ - (0x4000000UL) /*!< DAC DAC1CFG0: FIFOEMP (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_FIFOFUL_Pos \ - (27UL) /*!< DAC DAC1CFG0: FIFOFUL (Bit 27) */ -#define DAC_DAC1CFG0_FIFOFUL_Msk \ - (0x8000000UL) /*!< DAC DAC1CFG0: FIFOFUL (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_NEGATE_Pos \ - (28UL) /*!< DAC DAC1CFG0: NEGATE (Bit 28) */ -#define DAC_DAC1CFG0_NEGATE_Msk \ - (0x10000000UL) /*!< DAC DAC1CFG0: NEGATE (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_SIGNEN_Pos \ - (29UL) /*!< DAC DAC1CFG0: SIGNEN (Bit 29) */ -#define DAC_DAC1CFG0_SIGNEN_Msk \ - (0x20000000UL) /*!< DAC DAC1CFG0: SIGNEN (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_SREN_Pos \ - (30UL) /*!< DAC DAC1CFG0: SREN (Bit 30) */ -#define DAC_DAC1CFG0_SREN_Msk \ - (0x40000000UL) /*!< DAC DAC1CFG0: SREN (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_RUN_Pos \ - (31UL) /*!< DAC DAC1CFG0: RUN (Bit 31) */ -#define DAC_DAC1CFG0_RUN_Msk \ - (0x80000000UL) /*!< DAC DAC1CFG0: RUN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- DAC_DAC1CFG1 -------------------------------- */ -#define DAC_DAC1CFG1_SCALE_Pos \ - (0UL) /*!< DAC DAC1CFG1: SCALE (Bit 0) */ -#define DAC_DAC1CFG1_SCALE_Msk \ - (0x7UL) /*!< DAC DAC1CFG1: SCALE (Bitfield-Mask: 0x07) */ -#define DAC_DAC1CFG1_MULDIV_Pos \ - (3UL) /*!< DAC DAC1CFG1: MULDIV (Bit 3) */ -#define DAC_DAC1CFG1_MULDIV_Msk \ - (0x8UL) /*!< DAC DAC1CFG1: MULDIV (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG1_OFFS_Pos \ - (4UL) /*!< DAC DAC1CFG1: OFFS (Bit 4) */ -#define DAC_DAC1CFG1_OFFS_Msk \ - (0xff0UL) /*!< DAC DAC1CFG1: OFFS (Bitfield-Mask: 0xff) */ -#define DAC_DAC1CFG1_TRIGSEL_Pos \ - (12UL) /*!< DAC DAC1CFG1: TRIGSEL (Bit 12) */ -#define DAC_DAC1CFG1_TRIGSEL_Msk \ - (0x7000UL) /*!< DAC DAC1CFG1: TRIGSEL (Bitfield-Mask: 0x07) */ -#define DAC_DAC1CFG1_SWTRIG_Pos \ - (16UL) /*!< DAC DAC1CFG1: SWTRIG (Bit 16) */ -#define DAC_DAC1CFG1_SWTRIG_Msk \ - (0x10000UL) /*!< DAC DAC1CFG1: SWTRIG (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG1_TRIGMOD_Pos \ - (17UL) /*!< DAC DAC1CFG1: TRIGMOD (Bit 17) */ -#define DAC_DAC1CFG1_TRIGMOD_Msk \ - (0x60000UL) /*!< DAC DAC1CFG1: TRIGMOD (Bitfield-Mask: 0x03) */ -#define DAC_DAC1CFG1_ANACFG_Pos \ - (19UL) /*!< DAC DAC1CFG1: ANACFG (Bit 19) */ -#define DAC_DAC1CFG1_ANACFG_Msk \ - (0xf80000UL) /*!< DAC DAC1CFG1: ANACFG (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1CFG1_ANAEN_Pos \ - (24UL) /*!< DAC DAC1CFG1: ANAEN (Bit 24) */ -#define DAC_DAC1CFG1_ANAEN_Msk \ - (0x1000000UL) /*!< DAC DAC1CFG1: ANAEN (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG1_REFCFGH_Pos \ - (28UL) /*!< DAC DAC1CFG1: REFCFGH (Bit 28) */ -#define DAC_DAC1CFG1_REFCFGH_Msk \ - (0xf0000000UL) /*!< DAC DAC1CFG1: REFCFGH (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- DAC_DAC0DATA -------------------------------- */ -#define DAC_DAC0DATA_DATA0_Pos \ - (0UL) /*!< DAC DAC0DATA: DATA0 (Bit 0) */ -#define DAC_DAC0DATA_DATA0_Msk \ - (0xfffUL) /*!< DAC DAC0DATA: DATA0 (Bitfield-Mask: 0xfff) */ - -/* -------------------------------- DAC_DAC1DATA -------------------------------- */ -#define DAC_DAC1DATA_DATA1_Pos \ - (0UL) /*!< DAC DAC1DATA: DATA1 (Bit 0) */ -#define DAC_DAC1DATA_DATA1_Msk \ - (0xfffUL) /*!< DAC DAC1DATA: DATA1 (Bitfield-Mask: 0xfff) */ - -/* -------------------------------- DAC_DAC01DATA ------------------------------- */ -#define DAC_DAC01DATA_DATA0_Pos \ - (0UL) /*!< DAC DAC01DATA: DATA0 (Bit 0) */ -#define DAC_DAC01DATA_DATA0_Msk \ - (0xfffUL) /*!< DAC DAC01DATA: DATA0 (Bitfield-Mask: 0xfff) */ -#define DAC_DAC01DATA_DATA1_Pos \ - (16UL) /*!< DAC DAC01DATA: DATA1 (Bit 16) */ -#define DAC_DAC01DATA_DATA1_Msk \ - (0xfff0000UL) /*!< DAC DAC01DATA: DATA1 (Bitfield-Mask: 0xfff) */ - -/* -------------------------------- DAC_DAC0PATL -------------------------------- */ -#define DAC_DAC0PATL_PAT0_Pos \ - (0UL) /*!< DAC DAC0PATL: PAT0 (Bit 0) */ -#define DAC_DAC0PATL_PAT0_Msk \ - (0x1fUL) /*!< DAC DAC0PATL: PAT0 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT1_Pos \ - (5UL) /*!< DAC DAC0PATL: PAT1 (Bit 5) */ -#define DAC_DAC0PATL_PAT1_Msk \ - (0x3e0UL) /*!< DAC DAC0PATL: PAT1 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT2_Pos \ - (10UL) /*!< DAC DAC0PATL: PAT2 (Bit 10) */ -#define DAC_DAC0PATL_PAT2_Msk \ - (0x7c00UL) /*!< DAC DAC0PATL: PAT2 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT3_Pos \ - (15UL) /*!< DAC DAC0PATL: PAT3 (Bit 15) */ -#define DAC_DAC0PATL_PAT3_Msk \ - (0xf8000UL) /*!< DAC DAC0PATL: PAT3 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT4_Pos \ - (20UL) /*!< DAC DAC0PATL: PAT4 (Bit 20) */ -#define DAC_DAC0PATL_PAT4_Msk \ - (0x1f00000UL) /*!< DAC DAC0PATL: PAT4 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT5_Pos \ - (25UL) /*!< DAC DAC0PATL: PAT5 (Bit 25) */ -#define DAC_DAC0PATL_PAT5_Msk \ - (0x3e000000UL) /*!< DAC DAC0PATL: PAT5 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- DAC_DAC0PATH -------------------------------- */ -#define DAC_DAC0PATH_PAT6_Pos \ - (0UL) /*!< DAC DAC0PATH: PAT6 (Bit 0) */ -#define DAC_DAC0PATH_PAT6_Msk \ - (0x1fUL) /*!< DAC DAC0PATH: PAT6 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATH_PAT7_Pos \ - (5UL) /*!< DAC DAC0PATH: PAT7 (Bit 5) */ -#define DAC_DAC0PATH_PAT7_Msk \ - (0x3e0UL) /*!< DAC DAC0PATH: PAT7 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATH_PAT8_Pos \ - (10UL) /*!< DAC DAC0PATH: PAT8 (Bit 10) */ -#define DAC_DAC0PATH_PAT8_Msk \ - (0x7c00UL) /*!< DAC DAC0PATH: PAT8 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- DAC_DAC1PATL -------------------------------- */ -#define DAC_DAC1PATL_PAT0_Pos \ - (0UL) /*!< DAC DAC1PATL: PAT0 (Bit 0) */ -#define DAC_DAC1PATL_PAT0_Msk \ - (0x1fUL) /*!< DAC DAC1PATL: PAT0 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT1_Pos \ - (5UL) /*!< DAC DAC1PATL: PAT1 (Bit 5) */ -#define DAC_DAC1PATL_PAT1_Msk \ - (0x3e0UL) /*!< DAC DAC1PATL: PAT1 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT2_Pos \ - (10UL) /*!< DAC DAC1PATL: PAT2 (Bit 10) */ -#define DAC_DAC1PATL_PAT2_Msk \ - (0x7c00UL) /*!< DAC DAC1PATL: PAT2 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT3_Pos \ - (15UL) /*!< DAC DAC1PATL: PAT3 (Bit 15) */ -#define DAC_DAC1PATL_PAT3_Msk \ - (0xf8000UL) /*!< DAC DAC1PATL: PAT3 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT4_Pos \ - (20UL) /*!< DAC DAC1PATL: PAT4 (Bit 20) */ -#define DAC_DAC1PATL_PAT4_Msk \ - (0x1f00000UL) /*!< DAC DAC1PATL: PAT4 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT5_Pos \ - (25UL) /*!< DAC DAC1PATL: PAT5 (Bit 25) */ -#define DAC_DAC1PATL_PAT5_Msk \ - (0x3e000000UL) /*!< DAC DAC1PATL: PAT5 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- DAC_DAC1PATH -------------------------------- */ -#define DAC_DAC1PATH_PAT6_Pos \ - (0UL) /*!< DAC DAC1PATH: PAT6 (Bit 0) */ -#define DAC_DAC1PATH_PAT6_Msk \ - (0x1fUL) /*!< DAC DAC1PATH: PAT6 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATH_PAT7_Pos \ - (5UL) /*!< DAC DAC1PATH: PAT7 (Bit 5) */ -#define DAC_DAC1PATH_PAT7_Msk \ - (0x3e0UL) /*!< DAC DAC1PATH: PAT7 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATH_PAT8_Pos \ - (10UL) /*!< DAC DAC1PATH: PAT8 (Bit 10) */ -#define DAC_DAC1PATH_PAT8_Msk \ - (0x7c00UL) /*!< DAC DAC1PATH: PAT8 (Bitfield-Mask: 0x1f) */ - -/* ================================================================================ */ -/* ================ Group 'CCU4' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- CCU4_GCTRL --------------------------------- */ -#define CCU4_GCTRL_PRBC_Pos \ - (0UL) /*!< CCU4 GCTRL: PRBC (Bit 0) */ -#define CCU4_GCTRL_PRBC_Msk \ - (0x7UL) /*!< CCU4 GCTRL: PRBC (Bitfield-Mask: 0x07) */ -#define CCU4_GCTRL_PCIS_Pos \ - (4UL) /*!< CCU4 GCTRL: PCIS (Bit 4) */ -#define CCU4_GCTRL_PCIS_Msk \ - (0x30UL) /*!< CCU4 GCTRL: PCIS (Bitfield-Mask: 0x03) */ -#define CCU4_GCTRL_SUSCFG_Pos \ - (8UL) /*!< CCU4 GCTRL: SUSCFG (Bit 8) */ -#define CCU4_GCTRL_SUSCFG_Msk \ - (0x300UL) /*!< CCU4 GCTRL: SUSCFG (Bitfield-Mask: 0x03) */ -#define CCU4_GCTRL_MSE0_Pos \ - (10UL) /*!< CCU4 GCTRL: MSE0 (Bit 10) */ -#define CCU4_GCTRL_MSE0_Msk \ - (0x400UL) /*!< CCU4 GCTRL: MSE0 (Bitfield-Mask: 0x01) */ -#define CCU4_GCTRL_MSE1_Pos \ - (11UL) /*!< CCU4 GCTRL: MSE1 (Bit 11) */ -#define CCU4_GCTRL_MSE1_Msk \ - (0x800UL) /*!< CCU4 GCTRL: MSE1 (Bitfield-Mask: 0x01) */ -#define CCU4_GCTRL_MSE2_Pos \ - (12UL) /*!< CCU4 GCTRL: MSE2 (Bit 12) */ -#define CCU4_GCTRL_MSE2_Msk \ - (0x1000UL) /*!< CCU4 GCTRL: MSE2 (Bitfield-Mask: 0x01) */ -#define CCU4_GCTRL_MSE3_Pos \ - (13UL) /*!< CCU4 GCTRL: MSE3 (Bit 13) */ -#define CCU4_GCTRL_MSE3_Msk \ - (0x2000UL) /*!< CCU4 GCTRL: MSE3 (Bitfield-Mask: 0x01) */ -#define CCU4_GCTRL_MSDE_Pos \ - (14UL) /*!< CCU4 GCTRL: MSDE (Bit 14) */ -#define CCU4_GCTRL_MSDE_Msk \ - (0xc000UL) /*!< CCU4 GCTRL: MSDE (Bitfield-Mask: 0x03) */ - -/* --------------------------------- CCU4_GSTAT --------------------------------- */ -#define CCU4_GSTAT_S0I_Pos (0UL) /*!< CCU4 GSTAT: S0I (Bit 0) */ -#define CCU4_GSTAT_S0I_Msk \ - (0x1UL) /*!< CCU4 GSTAT: S0I (Bitfield-Mask: 0x01) */ -#define CCU4_GSTAT_S1I_Pos (1UL) /*!< CCU4 GSTAT: S1I (Bit 1) */ -#define CCU4_GSTAT_S1I_Msk \ - (0x2UL) /*!< CCU4 GSTAT: S1I (Bitfield-Mask: 0x01) */ -#define CCU4_GSTAT_S2I_Pos (2UL) /*!< CCU4 GSTAT: S2I (Bit 2) */ -#define CCU4_GSTAT_S2I_Msk \ - (0x4UL) /*!< CCU4 GSTAT: S2I (Bitfield-Mask: 0x01) */ -#define CCU4_GSTAT_S3I_Pos (3UL) /*!< CCU4 GSTAT: S3I (Bit 3) */ -#define CCU4_GSTAT_S3I_Msk \ - (0x8UL) /*!< CCU4 GSTAT: S3I (Bitfield-Mask: 0x01) */ -#define CCU4_GSTAT_PRB_Pos (8UL) /*!< CCU4 GSTAT: PRB (Bit 8) */ -#define CCU4_GSTAT_PRB_Msk \ - (0x100UL) /*!< CCU4 GSTAT: PRB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU4_GIDLS --------------------------------- */ -#define CCU4_GIDLS_SS0I_Pos \ - (0UL) /*!< CCU4 GIDLS: SS0I (Bit 0) */ -#define CCU4_GIDLS_SS0I_Msk \ - (0x1UL) /*!< CCU4 GIDLS: SS0I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_SS1I_Pos \ - (1UL) /*!< CCU4 GIDLS: SS1I (Bit 1) */ -#define CCU4_GIDLS_SS1I_Msk \ - (0x2UL) /*!< CCU4 GIDLS: SS1I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_SS2I_Pos \ - (2UL) /*!< CCU4 GIDLS: SS2I (Bit 2) */ -#define CCU4_GIDLS_SS2I_Msk \ - (0x4UL) /*!< CCU4 GIDLS: SS2I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_SS3I_Pos \ - (3UL) /*!< CCU4 GIDLS: SS3I (Bit 3) */ -#define CCU4_GIDLS_SS3I_Msk \ - (0x8UL) /*!< CCU4 GIDLS: SS3I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_CPRB_Pos \ - (8UL) /*!< CCU4 GIDLS: CPRB (Bit 8) */ -#define CCU4_GIDLS_CPRB_Msk \ - (0x100UL) /*!< CCU4 GIDLS: CPRB (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_PSIC_Pos \ - (9UL) /*!< CCU4 GIDLS: PSIC (Bit 9) */ -#define CCU4_GIDLS_PSIC_Msk \ - (0x200UL) /*!< CCU4 GIDLS: PSIC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU4_GIDLC --------------------------------- */ -#define CCU4_GIDLC_CS0I_Pos \ - (0UL) /*!< CCU4 GIDLC: CS0I (Bit 0) */ -#define CCU4_GIDLC_CS0I_Msk \ - (0x1UL) /*!< CCU4 GIDLC: CS0I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLC_CS1I_Pos \ - (1UL) /*!< CCU4 GIDLC: CS1I (Bit 1) */ -#define CCU4_GIDLC_CS1I_Msk \ - (0x2UL) /*!< CCU4 GIDLC: CS1I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLC_CS2I_Pos \ - (2UL) /*!< CCU4 GIDLC: CS2I (Bit 2) */ -#define CCU4_GIDLC_CS2I_Msk \ - (0x4UL) /*!< CCU4 GIDLC: CS2I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLC_CS3I_Pos \ - (3UL) /*!< CCU4 GIDLC: CS3I (Bit 3) */ -#define CCU4_GIDLC_CS3I_Msk \ - (0x8UL) /*!< CCU4 GIDLC: CS3I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLC_SPRB_Pos \ - (8UL) /*!< CCU4 GIDLC: SPRB (Bit 8) */ -#define CCU4_GIDLC_SPRB_Msk \ - (0x100UL) /*!< CCU4 GIDLC: SPRB (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_GCSS --------------------------------- */ -#define CCU4_GCSS_S0SE_Pos (0UL) /*!< CCU4 GCSS: S0SE (Bit 0) */ -#define CCU4_GCSS_S0SE_Msk \ - (0x1UL) /*!< CCU4 GCSS: S0SE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S0DSE_Pos \ - (1UL) /*!< CCU4 GCSS: S0DSE (Bit 1) */ -#define CCU4_GCSS_S0DSE_Msk \ - (0x2UL) /*!< CCU4 GCSS: S0DSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S0PSE_Pos \ - (2UL) /*!< CCU4 GCSS: S0PSE (Bit 2) */ -#define CCU4_GCSS_S0PSE_Msk \ - (0x4UL) /*!< CCU4 GCSS: S0PSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S1SE_Pos (4UL) /*!< CCU4 GCSS: S1SE (Bit 4) */ -#define CCU4_GCSS_S1SE_Msk \ - (0x10UL) /*!< CCU4 GCSS: S1SE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S1DSE_Pos \ - (5UL) /*!< CCU4 GCSS: S1DSE (Bit 5) */ -#define CCU4_GCSS_S1DSE_Msk \ - (0x20UL) /*!< CCU4 GCSS: S1DSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S1PSE_Pos \ - (6UL) /*!< CCU4 GCSS: S1PSE (Bit 6) */ -#define CCU4_GCSS_S1PSE_Msk \ - (0x40UL) /*!< CCU4 GCSS: S1PSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S2SE_Pos (8UL) /*!< CCU4 GCSS: S2SE (Bit 8) */ -#define CCU4_GCSS_S2SE_Msk \ - (0x100UL) /*!< CCU4 GCSS: S2SE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S2DSE_Pos \ - (9UL) /*!< CCU4 GCSS: S2DSE (Bit 9) */ -#define CCU4_GCSS_S2DSE_Msk \ - (0x200UL) /*!< CCU4 GCSS: S2DSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S2PSE_Pos \ - (10UL) /*!< CCU4 GCSS: S2PSE (Bit 10) */ -#define CCU4_GCSS_S2PSE_Msk \ - (0x400UL) /*!< CCU4 GCSS: S2PSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S3SE_Pos \ - (12UL) /*!< CCU4 GCSS: S3SE (Bit 12) */ -#define CCU4_GCSS_S3SE_Msk \ - (0x1000UL) /*!< CCU4 GCSS: S3SE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S3DSE_Pos \ - (13UL) /*!< CCU4 GCSS: S3DSE (Bit 13) */ -#define CCU4_GCSS_S3DSE_Msk \ - (0x2000UL) /*!< CCU4 GCSS: S3DSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S3PSE_Pos \ - (14UL) /*!< CCU4 GCSS: S3PSE (Bit 14) */ -#define CCU4_GCSS_S3PSE_Msk \ - (0x4000UL) /*!< CCU4 GCSS: S3PSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S0STS_Pos \ - (16UL) /*!< CCU4 GCSS: S0STS (Bit 16) */ -#define CCU4_GCSS_S0STS_Msk \ - (0x10000UL) /*!< CCU4 GCSS: S0STS (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S1STS_Pos \ - (17UL) /*!< CCU4 GCSS: S1STS (Bit 17) */ -#define CCU4_GCSS_S1STS_Msk \ - (0x20000UL) /*!< CCU4 GCSS: S1STS (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S2STS_Pos \ - (18UL) /*!< CCU4 GCSS: S2STS (Bit 18) */ -#define CCU4_GCSS_S2STS_Msk \ - (0x40000UL) /*!< CCU4 GCSS: S2STS (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S3STS_Pos \ - (19UL) /*!< CCU4 GCSS: S3STS (Bit 19) */ -#define CCU4_GCSS_S3STS_Msk \ - (0x80000UL) /*!< CCU4 GCSS: S3STS (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_GCSC --------------------------------- */ -#define CCU4_GCSC_S0SC_Pos (0UL) /*!< CCU4 GCSC: S0SC (Bit 0) */ -#define CCU4_GCSC_S0SC_Msk \ - (0x1UL) /*!< CCU4 GCSC: S0SC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S0DSC_Pos \ - (1UL) /*!< CCU4 GCSC: S0DSC (Bit 1) */ -#define CCU4_GCSC_S0DSC_Msk \ - (0x2UL) /*!< CCU4 GCSC: S0DSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S0PSC_Pos \ - (2UL) /*!< CCU4 GCSC: S0PSC (Bit 2) */ -#define CCU4_GCSC_S0PSC_Msk \ - (0x4UL) /*!< CCU4 GCSC: S0PSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S1SC_Pos (4UL) /*!< CCU4 GCSC: S1SC (Bit 4) */ -#define CCU4_GCSC_S1SC_Msk \ - (0x10UL) /*!< CCU4 GCSC: S1SC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S1DSC_Pos \ - (5UL) /*!< CCU4 GCSC: S1DSC (Bit 5) */ -#define CCU4_GCSC_S1DSC_Msk \ - (0x20UL) /*!< CCU4 GCSC: S1DSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S1PSC_Pos \ - (6UL) /*!< CCU4 GCSC: S1PSC (Bit 6) */ -#define CCU4_GCSC_S1PSC_Msk \ - (0x40UL) /*!< CCU4 GCSC: S1PSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S2SC_Pos (8UL) /*!< CCU4 GCSC: S2SC (Bit 8) */ -#define CCU4_GCSC_S2SC_Msk \ - (0x100UL) /*!< CCU4 GCSC: S2SC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S2DSC_Pos \ - (9UL) /*!< CCU4 GCSC: S2DSC (Bit 9) */ -#define CCU4_GCSC_S2DSC_Msk \ - (0x200UL) /*!< CCU4 GCSC: S2DSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S2PSC_Pos \ - (10UL) /*!< CCU4 GCSC: S2PSC (Bit 10) */ -#define CCU4_GCSC_S2PSC_Msk \ - (0x400UL) /*!< CCU4 GCSC: S2PSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S3SC_Pos \ - (12UL) /*!< CCU4 GCSC: S3SC (Bit 12) */ -#define CCU4_GCSC_S3SC_Msk \ - (0x1000UL) /*!< CCU4 GCSC: S3SC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S3DSC_Pos \ - (13UL) /*!< CCU4 GCSC: S3DSC (Bit 13) */ -#define CCU4_GCSC_S3DSC_Msk \ - (0x2000UL) /*!< CCU4 GCSC: S3DSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S3PSC_Pos \ - (14UL) /*!< CCU4 GCSC: S3PSC (Bit 14) */ -#define CCU4_GCSC_S3PSC_Msk \ - (0x4000UL) /*!< CCU4 GCSC: S3PSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S0STC_Pos \ - (16UL) /*!< CCU4 GCSC: S0STC (Bit 16) */ -#define CCU4_GCSC_S0STC_Msk \ - (0x10000UL) /*!< CCU4 GCSC: S0STC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S1STC_Pos \ - (17UL) /*!< CCU4 GCSC: S1STC (Bit 17) */ -#define CCU4_GCSC_S1STC_Msk \ - (0x20000UL) /*!< CCU4 GCSC: S1STC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S2STC_Pos \ - (18UL) /*!< CCU4 GCSC: S2STC (Bit 18) */ -#define CCU4_GCSC_S2STC_Msk \ - (0x40000UL) /*!< CCU4 GCSC: S2STC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S3STC_Pos \ - (19UL) /*!< CCU4 GCSC: S3STC (Bit 19) */ -#define CCU4_GCSC_S3STC_Msk \ - (0x80000UL) /*!< CCU4 GCSC: S3STC (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_GCST --------------------------------- */ -#define CCU4_GCST_S0SS_Pos (0UL) /*!< CCU4 GCST: S0SS (Bit 0) */ -#define CCU4_GCST_S0SS_Msk \ - (0x1UL) /*!< CCU4 GCST: S0SS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S0DSS_Pos \ - (1UL) /*!< CCU4 GCST: S0DSS (Bit 1) */ -#define CCU4_GCST_S0DSS_Msk \ - (0x2UL) /*!< CCU4 GCST: S0DSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S0PSS_Pos \ - (2UL) /*!< CCU4 GCST: S0PSS (Bit 2) */ -#define CCU4_GCST_S0PSS_Msk \ - (0x4UL) /*!< CCU4 GCST: S0PSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S1SS_Pos (4UL) /*!< CCU4 GCST: S1SS (Bit 4) */ -#define CCU4_GCST_S1SS_Msk \ - (0x10UL) /*!< CCU4 GCST: S1SS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S1DSS_Pos \ - (5UL) /*!< CCU4 GCST: S1DSS (Bit 5) */ -#define CCU4_GCST_S1DSS_Msk \ - (0x20UL) /*!< CCU4 GCST: S1DSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S1PSS_Pos \ - (6UL) /*!< CCU4 GCST: S1PSS (Bit 6) */ -#define CCU4_GCST_S1PSS_Msk \ - (0x40UL) /*!< CCU4 GCST: S1PSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S2SS_Pos (8UL) /*!< CCU4 GCST: S2SS (Bit 8) */ -#define CCU4_GCST_S2SS_Msk \ - (0x100UL) /*!< CCU4 GCST: S2SS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S2DSS_Pos \ - (9UL) /*!< CCU4 GCST: S2DSS (Bit 9) */ -#define CCU4_GCST_S2DSS_Msk \ - (0x200UL) /*!< CCU4 GCST: S2DSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S2PSS_Pos \ - (10UL) /*!< CCU4 GCST: S2PSS (Bit 10) */ -#define CCU4_GCST_S2PSS_Msk \ - (0x400UL) /*!< CCU4 GCST: S2PSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S3SS_Pos \ - (12UL) /*!< CCU4 GCST: S3SS (Bit 12) */ -#define CCU4_GCST_S3SS_Msk \ - (0x1000UL) /*!< CCU4 GCST: S3SS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S3DSS_Pos \ - (13UL) /*!< CCU4 GCST: S3DSS (Bit 13) */ -#define CCU4_GCST_S3DSS_Msk \ - (0x2000UL) /*!< CCU4 GCST: S3DSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S3PSS_Pos \ - (14UL) /*!< CCU4 GCST: S3PSS (Bit 14) */ -#define CCU4_GCST_S3PSS_Msk \ - (0x4000UL) /*!< CCU4 GCST: S3PSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_CC40ST_Pos \ - (16UL) /*!< CCU4 GCST: CC40ST (Bit 16) */ -#define CCU4_GCST_CC40ST_Msk \ - (0x10000UL) /*!< CCU4 GCST: CC40ST (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_CC41ST_Pos \ - (17UL) /*!< CCU4 GCST: CC41ST (Bit 17) */ -#define CCU4_GCST_CC41ST_Msk \ - (0x20000UL) /*!< CCU4 GCST: CC41ST (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_CC42ST_Pos \ - (18UL) /*!< CCU4 GCST: CC42ST (Bit 18) */ -#define CCU4_GCST_CC42ST_Msk \ - (0x40000UL) /*!< CCU4 GCST: CC42ST (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_CC43ST_Pos \ - (19UL) /*!< CCU4 GCST: CC43ST (Bit 19) */ -#define CCU4_GCST_CC43ST_Msk \ - (0x80000UL) /*!< CCU4 GCST: CC43ST (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_ECRD --------------------------------- */ -#define CCU4_ECRD_CAPV_Pos (0UL) /*!< CCU4 ECRD: CAPV (Bit 0) */ -#define CCU4_ECRD_CAPV_Msk \ - (0xffffUL) /*!< CCU4 ECRD: CAPV (Bitfield-Mask: 0xffff) */ -#define CCU4_ECRD_FPCV_Pos \ - (16UL) /*!< CCU4 ECRD: FPCV (Bit 16) */ -#define CCU4_ECRD_FPCV_Msk \ - (0xf0000UL) /*!< CCU4 ECRD: FPCV (Bitfield-Mask: 0x0f) */ -#define CCU4_ECRD_SPTR_Pos \ - (20UL) /*!< CCU4 ECRD: SPTR (Bit 20) */ -#define CCU4_ECRD_SPTR_Msk \ - (0x300000UL) /*!< CCU4 ECRD: SPTR (Bitfield-Mask: 0x03) */ -#define CCU4_ECRD_VPTR_Pos \ - (22UL) /*!< CCU4 ECRD: VPTR (Bit 22) */ -#define CCU4_ECRD_VPTR_Msk \ - (0xc00000UL) /*!< CCU4 ECRD: VPTR (Bitfield-Mask: 0x03) */ -#define CCU4_ECRD_FFL_Pos (24UL) /*!< CCU4 ECRD: FFL (Bit 24) */ -#define CCU4_ECRD_FFL_Msk \ - (0x1000000UL) /*!< CCU4 ECRD: FFL (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_MIDR --------------------------------- */ -#define CCU4_MIDR_MODR_Pos (0UL) /*!< CCU4 MIDR: MODR (Bit 0) */ -#define CCU4_MIDR_MODR_Msk \ - (0xffUL) /*!< CCU4 MIDR: MODR (Bitfield-Mask: 0xff) */ -#define CCU4_MIDR_MODT_Pos (8UL) /*!< CCU4 MIDR: MODT (Bit 8) */ -#define CCU4_MIDR_MODT_Msk \ - (0xff00UL) /*!< CCU4 MIDR: MODT (Bitfield-Mask: 0xff) */ -#define CCU4_MIDR_MODN_Pos \ - (16UL) /*!< CCU4 MIDR: MODN (Bit 16) */ -#define CCU4_MIDR_MODN_Msk \ - (0xffff0000UL) /*!< CCU4 MIDR: MODN (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ Group 'CCU4_CC4' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- CCU4_CC4_INS -------------------------------- */ -#define CCU4_CC4_INS_EV0IS_Pos \ - (0UL) /*!< CCU4_CC4 INS: EV0IS (Bit 0) */ -#define CCU4_CC4_INS_EV0IS_Msk \ - (0xfUL) /*!< CCU4_CC4 INS: EV0IS (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_INS_EV1IS_Pos \ - (4UL) /*!< CCU4_CC4 INS: EV1IS (Bit 4) */ -#define CCU4_CC4_INS_EV1IS_Msk \ - (0xf0UL) /*!< CCU4_CC4 INS: EV1IS (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_INS_EV2IS_Pos \ - (8UL) /*!< CCU4_CC4 INS: EV2IS (Bit 8) */ -#define CCU4_CC4_INS_EV2IS_Msk \ - (0xf00UL) /*!< CCU4_CC4 INS: EV2IS (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_INS_EV0EM_Pos \ - (16UL) /*!< CCU4_CC4 INS: EV0EM (Bit 16) */ -#define CCU4_CC4_INS_EV0EM_Msk \ - (0x30000UL) /*!< CCU4_CC4 INS: EV0EM (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_EV1EM_Pos \ - (18UL) /*!< CCU4_CC4 INS: EV1EM (Bit 18) */ -#define CCU4_CC4_INS_EV1EM_Msk \ - (0xc0000UL) /*!< CCU4_CC4 INS: EV1EM (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_EV2EM_Pos \ - (20UL) /*!< CCU4_CC4 INS: EV2EM (Bit 20) */ -#define CCU4_CC4_INS_EV2EM_Msk \ - (0x300000UL) /*!< CCU4_CC4 INS: EV2EM (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_EV0LM_Pos \ - (22UL) /*!< CCU4_CC4 INS: EV0LM (Bit 22) */ -#define CCU4_CC4_INS_EV0LM_Msk \ - (0x400000UL) /*!< CCU4_CC4 INS: EV0LM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INS_EV1LM_Pos \ - (23UL) /*!< CCU4_CC4 INS: EV1LM (Bit 23) */ -#define CCU4_CC4_INS_EV1LM_Msk \ - (0x800000UL) /*!< CCU4_CC4 INS: EV1LM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INS_EV2LM_Pos \ - (24UL) /*!< CCU4_CC4 INS: EV2LM (Bit 24) */ -#define CCU4_CC4_INS_EV2LM_Msk \ - (0x1000000UL) /*!< CCU4_CC4 INS: EV2LM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INS_LPF0M_Pos \ - (25UL) /*!< CCU4_CC4 INS: LPF0M (Bit 25) */ -#define CCU4_CC4_INS_LPF0M_Msk \ - (0x6000000UL) /*!< CCU4_CC4 INS: LPF0M (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_LPF1M_Pos \ - (27UL) /*!< CCU4_CC4 INS: LPF1M (Bit 27) */ -#define CCU4_CC4_INS_LPF1M_Msk \ - (0x18000000UL) /*!< CCU4_CC4 INS: LPF1M (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_LPF2M_Pos \ - (29UL) /*!< CCU4_CC4 INS: LPF2M (Bit 29) */ -#define CCU4_CC4_INS_LPF2M_Msk \ - (0x60000000UL) /*!< CCU4_CC4 INS: LPF2M (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU4_CC4_CMC -------------------------------- */ -#define CCU4_CC4_CMC_STRTS_Pos \ - (0UL) /*!< CCU4_CC4 CMC: STRTS (Bit 0) */ -#define CCU4_CC4_CMC_STRTS_Msk \ - (0x3UL) /*!< CCU4_CC4 CMC: STRTS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_ENDS_Pos \ - (2UL) /*!< CCU4_CC4 CMC: ENDS (Bit 2) */ -#define CCU4_CC4_CMC_ENDS_Msk \ - (0xcUL) /*!< CCU4_CC4 CMC: ENDS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_CAP0S_Pos \ - (4UL) /*!< CCU4_CC4 CMC: CAP0S (Bit 4) */ -#define CCU4_CC4_CMC_CAP0S_Msk \ - (0x30UL) /*!< CCU4_CC4 CMC: CAP0S (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_CAP1S_Pos \ - (6UL) /*!< CCU4_CC4 CMC: CAP1S (Bit 6) */ -#define CCU4_CC4_CMC_CAP1S_Msk \ - (0xc0UL) /*!< CCU4_CC4 CMC: CAP1S (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_GATES_Pos \ - (8UL) /*!< CCU4_CC4 CMC: GATES (Bit 8) */ -#define CCU4_CC4_CMC_GATES_Msk \ - (0x300UL) /*!< CCU4_CC4 CMC: GATES (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_UDS_Pos \ - (10UL) /*!< CCU4_CC4 CMC: UDS (Bit 10) */ -#define CCU4_CC4_CMC_UDS_Msk \ - (0xc00UL) /*!< CCU4_CC4 CMC: UDS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_LDS_Pos \ - (12UL) /*!< CCU4_CC4 CMC: LDS (Bit 12) */ -#define CCU4_CC4_CMC_LDS_Msk \ - (0x3000UL) /*!< CCU4_CC4 CMC: LDS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_CNTS_Pos \ - (14UL) /*!< CCU4_CC4 CMC: CNTS (Bit 14) */ -#define CCU4_CC4_CMC_CNTS_Msk \ - (0xc000UL) /*!< CCU4_CC4 CMC: CNTS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_OFS_Pos \ - (16UL) /*!< CCU4_CC4 CMC: OFS (Bit 16) */ -#define CCU4_CC4_CMC_OFS_Msk \ - (0x10000UL) /*!< CCU4_CC4 CMC: OFS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_CMC_TS_Pos \ - (17UL) /*!< CCU4_CC4 CMC: TS (Bit 17) */ -#define CCU4_CC4_CMC_TS_Msk \ - (0x20000UL) /*!< CCU4_CC4 CMC: TS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_CMC_MOS_Pos \ - (18UL) /*!< CCU4_CC4 CMC: MOS (Bit 18) */ -#define CCU4_CC4_CMC_MOS_Msk \ - (0xc0000UL) /*!< CCU4_CC4 CMC: MOS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_TCE_Pos \ - (20UL) /*!< CCU4_CC4 CMC: TCE (Bit 20) */ -#define CCU4_CC4_CMC_TCE_Msk \ - (0x100000UL) /*!< CCU4_CC4 CMC: TCE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_TCST ------------------------------- */ -#define CCU4_CC4_TCST_TRB_Pos \ - (0UL) /*!< CCU4_CC4 TCST: TRB (Bit 0) */ -#define CCU4_CC4_TCST_TRB_Msk \ - (0x1UL) /*!< CCU4_CC4 TCST: TRB (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TCST_CDIR_Pos \ - (1UL) /*!< CCU4_CC4 TCST: CDIR (Bit 1) */ -#define CCU4_CC4_TCST_CDIR_Msk \ - (0x2UL) /*!< CCU4_CC4 TCST: CDIR (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CCU4_CC4_TCSET ------------------------------- */ -#define CCU4_CC4_TCSET_TRBS_Pos \ - (0UL) /*!< CCU4_CC4 TCSET: TRBS (Bit 0) */ -#define CCU4_CC4_TCSET_TRBS_Msk \ - (0x1UL) /*!< CCU4_CC4 TCSET: TRBS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CCU4_CC4_TCCLR ------------------------------- */ -#define CCU4_CC4_TCCLR_TRBC_Pos \ - (0UL) /*!< CCU4_CC4 TCCLR: TRBC (Bit 0) */ -#define CCU4_CC4_TCCLR_TRBC_Msk \ - (0x1UL) /*!< CCU4_CC4 TCCLR: TRBC (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TCCLR_TCC_Pos \ - (1UL) /*!< CCU4_CC4 TCCLR: TCC (Bit 1) */ -#define CCU4_CC4_TCCLR_TCC_Msk \ - (0x2UL) /*!< CCU4_CC4 TCCLR: TCC (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TCCLR_DITC_Pos \ - (2UL) /*!< CCU4_CC4 TCCLR: DITC (Bit 2) */ -#define CCU4_CC4_TCCLR_DITC_Msk \ - (0x4UL) /*!< CCU4_CC4 TCCLR: DITC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU4_CC4_TC -------------------------------- */ -#define CCU4_CC4_TC_TCM_Pos \ - (0UL) /*!< CCU4_CC4 TC: TCM (Bit 0) */ -#define CCU4_CC4_TC_TCM_Msk \ - (0x1UL) /*!< CCU4_CC4 TC: TCM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_TSSM_Pos \ - (1UL) /*!< CCU4_CC4 TC: TSSM (Bit 1) */ -#define CCU4_CC4_TC_TSSM_Msk \ - (0x2UL) /*!< CCU4_CC4 TC: TSSM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_CLST_Pos \ - (2UL) /*!< CCU4_CC4 TC: CLST (Bit 2) */ -#define CCU4_CC4_TC_CLST_Msk \ - (0x4UL) /*!< CCU4_CC4 TC: CLST (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_CMOD_Pos \ - (3UL) /*!< CCU4_CC4 TC: CMOD (Bit 3) */ -#define CCU4_CC4_TC_CMOD_Msk \ - (0x8UL) /*!< CCU4_CC4 TC: CMOD (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_ECM_Pos \ - (4UL) /*!< CCU4_CC4 TC: ECM (Bit 4) */ -#define CCU4_CC4_TC_ECM_Msk \ - (0x10UL) /*!< CCU4_CC4 TC: ECM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_CAPC_Pos \ - (5UL) /*!< CCU4_CC4 TC: CAPC (Bit 5) */ -#define CCU4_CC4_TC_CAPC_Msk \ - (0x60UL) /*!< CCU4_CC4 TC: CAPC (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_TC_ENDM_Pos \ - (8UL) /*!< CCU4_CC4 TC: ENDM (Bit 8) */ -#define CCU4_CC4_TC_ENDM_Msk \ - (0x300UL) /*!< CCU4_CC4 TC: ENDM (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_TC_STRM_Pos \ - (10UL) /*!< CCU4_CC4 TC: STRM (Bit 10) */ -#define CCU4_CC4_TC_STRM_Msk \ - (0x400UL) /*!< CCU4_CC4 TC: STRM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_SCE_Pos \ - (11UL) /*!< CCU4_CC4 TC: SCE (Bit 11) */ -#define CCU4_CC4_TC_SCE_Msk \ - (0x800UL) /*!< CCU4_CC4 TC: SCE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_CCS_Pos \ - (12UL) /*!< CCU4_CC4 TC: CCS (Bit 12) */ -#define CCU4_CC4_TC_CCS_Msk \ - (0x1000UL) /*!< CCU4_CC4 TC: CCS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_DITHE_Pos \ - (13UL) /*!< CCU4_CC4 TC: DITHE (Bit 13) */ -#define CCU4_CC4_TC_DITHE_Msk \ - (0x6000UL) /*!< CCU4_CC4 TC: DITHE (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_TC_DIM_Pos \ - (15UL) /*!< CCU4_CC4 TC: DIM (Bit 15) */ -#define CCU4_CC4_TC_DIM_Msk \ - (0x8000UL) /*!< CCU4_CC4 TC: DIM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_FPE_Pos \ - (16UL) /*!< CCU4_CC4 TC: FPE (Bit 16) */ -#define CCU4_CC4_TC_FPE_Msk \ - (0x10000UL) /*!< CCU4_CC4 TC: FPE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_TRAPE_Pos \ - (17UL) /*!< CCU4_CC4 TC: TRAPE (Bit 17) */ -#define CCU4_CC4_TC_TRAPE_Msk \ - (0x20000UL) /*!< CCU4_CC4 TC: TRAPE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_TRPSE_Pos \ - (21UL) /*!< CCU4_CC4 TC: TRPSE (Bit 21) */ -#define CCU4_CC4_TC_TRPSE_Msk \ - (0x200000UL) /*!< CCU4_CC4 TC: TRPSE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_TRPSW_Pos \ - (22UL) /*!< CCU4_CC4 TC: TRPSW (Bit 22) */ -#define CCU4_CC4_TC_TRPSW_Msk \ - (0x400000UL) /*!< CCU4_CC4 TC: TRPSW (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_EMS_Pos \ - (23UL) /*!< CCU4_CC4 TC: EMS (Bit 23) */ -#define CCU4_CC4_TC_EMS_Msk \ - (0x800000UL) /*!< CCU4_CC4 TC: EMS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_EMT_Pos \ - (24UL) /*!< CCU4_CC4 TC: EMT (Bit 24) */ -#define CCU4_CC4_TC_EMT_Msk \ - (0x1000000UL) /*!< CCU4_CC4 TC: EMT (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_MCME_Pos \ - (25UL) /*!< CCU4_CC4 TC: MCME (Bit 25) */ -#define CCU4_CC4_TC_MCME_Msk \ - (0x2000000UL) /*!< CCU4_CC4 TC: MCME (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_PSL -------------------------------- */ -#define CCU4_CC4_PSL_PSL_Pos \ - (0UL) /*!< CCU4_CC4 PSL: PSL (Bit 0) */ -#define CCU4_CC4_PSL_PSL_Msk \ - (0x1UL) /*!< CCU4_CC4 PSL: PSL (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_DIT -------------------------------- */ -#define CCU4_CC4_DIT_DCV_Pos \ - (0UL) /*!< CCU4_CC4 DIT: DCV (Bit 0) */ -#define CCU4_CC4_DIT_DCV_Msk \ - (0xfUL) /*!< CCU4_CC4 DIT: DCV (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_DIT_DCNT_Pos \ - (8UL) /*!< CCU4_CC4 DIT: DCNT (Bit 8) */ -#define CCU4_CC4_DIT_DCNT_Msk \ - (0xf00UL) /*!< CCU4_CC4 DIT: DCNT (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU4_CC4_DITS ------------------------------- */ -#define CCU4_CC4_DITS_DCVS_Pos \ - (0UL) /*!< CCU4_CC4 DITS: DCVS (Bit 0) */ -#define CCU4_CC4_DITS_DCVS_Msk \ - (0xfUL) /*!< CCU4_CC4 DITS: DCVS (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU4_CC4_PSC -------------------------------- */ -#define CCU4_CC4_PSC_PSIV_Pos \ - (0UL) /*!< CCU4_CC4 PSC: PSIV (Bit 0) */ -#define CCU4_CC4_PSC_PSIV_Msk \ - (0xfUL) /*!< CCU4_CC4 PSC: PSIV (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU4_CC4_FPC -------------------------------- */ -#define CCU4_CC4_FPC_PCMP_Pos \ - (0UL) /*!< CCU4_CC4 FPC: PCMP (Bit 0) */ -#define CCU4_CC4_FPC_PCMP_Msk \ - (0xfUL) /*!< CCU4_CC4 FPC: PCMP (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_FPC_PVAL_Pos \ - (8UL) /*!< CCU4_CC4 FPC: PVAL (Bit 8) */ -#define CCU4_CC4_FPC_PVAL_Msk \ - (0xf00UL) /*!< CCU4_CC4 FPC: PVAL (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU4_CC4_FPCS ------------------------------- */ -#define CCU4_CC4_FPCS_PCMP_Pos \ - (0UL) /*!< CCU4_CC4 FPCS: PCMP (Bit 0) */ -#define CCU4_CC4_FPCS_PCMP_Msk \ - (0xfUL) /*!< CCU4_CC4 FPCS: PCMP (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- CCU4_CC4_PR -------------------------------- */ -#define CCU4_CC4_PR_PR_Pos (0UL) /*!< CCU4_CC4 PR: PR (Bit 0) */ -#define CCU4_CC4_PR_PR_Msk \ - (0xffffUL) /*!< CCU4_CC4 PR: PR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU4_CC4_PRS -------------------------------- */ -#define CCU4_CC4_PRS_PRS_Pos \ - (0UL) /*!< CCU4_CC4 PRS: PRS (Bit 0) */ -#define CCU4_CC4_PRS_PRS_Msk \ - (0xffffUL) /*!< CCU4_CC4 PRS: PRS (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- CCU4_CC4_CR -------------------------------- */ -#define CCU4_CC4_CR_CR_Pos (0UL) /*!< CCU4_CC4 CR: CR (Bit 0) */ -#define CCU4_CC4_CR_CR_Msk \ - (0xffffUL) /*!< CCU4_CC4 CR: CR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU4_CC4_CRS -------------------------------- */ -#define CCU4_CC4_CRS_CRS_Pos \ - (0UL) /*!< CCU4_CC4 CRS: CRS (Bit 0) */ -#define CCU4_CC4_CRS_CRS_Msk \ - (0xffffUL) /*!< CCU4_CC4 CRS: CRS (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- CCU4_CC4_TIMER ------------------------------- */ -#define CCU4_CC4_TIMER_TVAL_Pos \ - (0UL) /*!< CCU4_CC4 TIMER: TVAL (Bit 0) */ -#define CCU4_CC4_TIMER_TVAL_Msk \ - (0xffffUL) /*!< CCU4_CC4 TIMER: TVAL (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- CCU4_CC4_CV -------------------------------- */ -#define CCU4_CC4_CV_CAPTV_Pos \ - (0UL) /*!< CCU4_CC4 CV: CAPTV (Bit 0) */ -#define CCU4_CC4_CV_CAPTV_Msk \ - (0xffffUL) /*!< CCU4_CC4 CV: CAPTV (Bitfield-Mask: 0xffff) */ -#define CCU4_CC4_CV_FPCV_Pos \ - (16UL) /*!< CCU4_CC4 CV: FPCV (Bit 16) */ -#define CCU4_CC4_CV_FPCV_Msk \ - (0xf0000UL) /*!< CCU4_CC4 CV: FPCV (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_CV_FFL_Pos \ - (20UL) /*!< CCU4_CC4 CV: FFL (Bit 20) */ -#define CCU4_CC4_CV_FFL_Msk \ - (0x100000UL) /*!< CCU4_CC4 CV: FFL (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_INTS ------------------------------- */ -#define CCU4_CC4_INTS_PMUS_Pos \ - (0UL) /*!< CCU4_CC4 INTS: PMUS (Bit 0) */ -#define CCU4_CC4_INTS_PMUS_Msk \ - (0x1UL) /*!< CCU4_CC4 INTS: PMUS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_OMDS_Pos \ - (1UL) /*!< CCU4_CC4 INTS: OMDS (Bit 1) */ -#define CCU4_CC4_INTS_OMDS_Msk \ - (0x2UL) /*!< CCU4_CC4 INTS: OMDS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_CMUS_Pos \ - (2UL) /*!< CCU4_CC4 INTS: CMUS (Bit 2) */ -#define CCU4_CC4_INTS_CMUS_Msk \ - (0x4UL) /*!< CCU4_CC4 INTS: CMUS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_CMDS_Pos \ - (3UL) /*!< CCU4_CC4 INTS: CMDS (Bit 3) */ -#define CCU4_CC4_INTS_CMDS_Msk \ - (0x8UL) /*!< CCU4_CC4 INTS: CMDS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_E0AS_Pos \ - (8UL) /*!< CCU4_CC4 INTS: E0AS (Bit 8) */ -#define CCU4_CC4_INTS_E0AS_Msk \ - (0x100UL) /*!< CCU4_CC4 INTS: E0AS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_E1AS_Pos \ - (9UL) /*!< CCU4_CC4 INTS: E1AS (Bit 9) */ -#define CCU4_CC4_INTS_E1AS_Msk \ - (0x200UL) /*!< CCU4_CC4 INTS: E1AS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_E2AS_Pos \ - (10UL) /*!< CCU4_CC4 INTS: E2AS (Bit 10) */ -#define CCU4_CC4_INTS_E2AS_Msk \ - (0x400UL) /*!< CCU4_CC4 INTS: E2AS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_TRPF_Pos \ - (11UL) /*!< CCU4_CC4 INTS: TRPF (Bit 11) */ -#define CCU4_CC4_INTS_TRPF_Msk \ - (0x800UL) /*!< CCU4_CC4 INTS: TRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_INTE ------------------------------- */ -#define CCU4_CC4_INTE_PME_Pos \ - (0UL) /*!< CCU4_CC4 INTE: PME (Bit 0) */ -#define CCU4_CC4_INTE_PME_Msk \ - (0x1UL) /*!< CCU4_CC4 INTE: PME (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_OME_Pos \ - (1UL) /*!< CCU4_CC4 INTE: OME (Bit 1) */ -#define CCU4_CC4_INTE_OME_Msk \ - (0x2UL) /*!< CCU4_CC4 INTE: OME (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_CMUE_Pos \ - (2UL) /*!< CCU4_CC4 INTE: CMUE (Bit 2) */ -#define CCU4_CC4_INTE_CMUE_Msk \ - (0x4UL) /*!< CCU4_CC4 INTE: CMUE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_CMDE_Pos \ - (3UL) /*!< CCU4_CC4 INTE: CMDE (Bit 3) */ -#define CCU4_CC4_INTE_CMDE_Msk \ - (0x8UL) /*!< CCU4_CC4 INTE: CMDE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_E0AE_Pos \ - (8UL) /*!< CCU4_CC4 INTE: E0AE (Bit 8) */ -#define CCU4_CC4_INTE_E0AE_Msk \ - (0x100UL) /*!< CCU4_CC4 INTE: E0AE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_E1AE_Pos \ - (9UL) /*!< CCU4_CC4 INTE: E1AE (Bit 9) */ -#define CCU4_CC4_INTE_E1AE_Msk \ - (0x200UL) /*!< CCU4_CC4 INTE: E1AE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_E2AE_Pos \ - (10UL) /*!< CCU4_CC4 INTE: E2AE (Bit 10) */ -#define CCU4_CC4_INTE_E2AE_Msk \ - (0x400UL) /*!< CCU4_CC4 INTE: E2AE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_SRS -------------------------------- */ -#define CCU4_CC4_SRS_POSR_Pos \ - (0UL) /*!< CCU4_CC4 SRS: POSR (Bit 0) */ -#define CCU4_CC4_SRS_POSR_Msk \ - (0x3UL) /*!< CCU4_CC4 SRS: POSR (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_SRS_CMSR_Pos \ - (2UL) /*!< CCU4_CC4 SRS: CMSR (Bit 2) */ -#define CCU4_CC4_SRS_CMSR_Msk \ - (0xcUL) /*!< CCU4_CC4 SRS: CMSR (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_SRS_E0SR_Pos \ - (8UL) /*!< CCU4_CC4 SRS: E0SR (Bit 8) */ -#define CCU4_CC4_SRS_E0SR_Msk \ - (0x300UL) /*!< CCU4_CC4 SRS: E0SR (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_SRS_E1SR_Pos \ - (10UL) /*!< CCU4_CC4 SRS: E1SR (Bit 10) */ -#define CCU4_CC4_SRS_E1SR_Msk \ - (0xc00UL) /*!< CCU4_CC4 SRS: E1SR (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_SRS_E2SR_Pos \ - (12UL) /*!< CCU4_CC4 SRS: E2SR (Bit 12) */ -#define CCU4_CC4_SRS_E2SR_Msk \ - (0x3000UL) /*!< CCU4_CC4 SRS: E2SR (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU4_CC4_SWS -------------------------------- */ -#define CCU4_CC4_SWS_SPM_Pos \ - (0UL) /*!< CCU4_CC4 SWS: SPM (Bit 0) */ -#define CCU4_CC4_SWS_SPM_Msk \ - (0x1UL) /*!< CCU4_CC4 SWS: SPM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SOM_Pos \ - (1UL) /*!< CCU4_CC4 SWS: SOM (Bit 1) */ -#define CCU4_CC4_SWS_SOM_Msk \ - (0x2UL) /*!< CCU4_CC4 SWS: SOM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SCMU_Pos \ - (2UL) /*!< CCU4_CC4 SWS: SCMU (Bit 2) */ -#define CCU4_CC4_SWS_SCMU_Msk \ - (0x4UL) /*!< CCU4_CC4 SWS: SCMU (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SCMD_Pos \ - (3UL) /*!< CCU4_CC4 SWS: SCMD (Bit 3) */ -#define CCU4_CC4_SWS_SCMD_Msk \ - (0x8UL) /*!< CCU4_CC4 SWS: SCMD (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SE0A_Pos \ - (8UL) /*!< CCU4_CC4 SWS: SE0A (Bit 8) */ -#define CCU4_CC4_SWS_SE0A_Msk \ - (0x100UL) /*!< CCU4_CC4 SWS: SE0A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SE1A_Pos \ - (9UL) /*!< CCU4_CC4 SWS: SE1A (Bit 9) */ -#define CCU4_CC4_SWS_SE1A_Msk \ - (0x200UL) /*!< CCU4_CC4 SWS: SE1A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SE2A_Pos \ - (10UL) /*!< CCU4_CC4 SWS: SE2A (Bit 10) */ -#define CCU4_CC4_SWS_SE2A_Msk \ - (0x400UL) /*!< CCU4_CC4 SWS: SE2A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_STRPF_Pos \ - (11UL) /*!< CCU4_CC4 SWS: STRPF (Bit 11) */ -#define CCU4_CC4_SWS_STRPF_Msk \ - (0x800UL) /*!< CCU4_CC4 SWS: STRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_SWR -------------------------------- */ -#define CCU4_CC4_SWR_RPM_Pos \ - (0UL) /*!< CCU4_CC4 SWR: RPM (Bit 0) */ -#define CCU4_CC4_SWR_RPM_Msk \ - (0x1UL) /*!< CCU4_CC4 SWR: RPM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_ROM_Pos \ - (1UL) /*!< CCU4_CC4 SWR: ROM (Bit 1) */ -#define CCU4_CC4_SWR_ROM_Msk \ - (0x2UL) /*!< CCU4_CC4 SWR: ROM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RCMU_Pos \ - (2UL) /*!< CCU4_CC4 SWR: RCMU (Bit 2) */ -#define CCU4_CC4_SWR_RCMU_Msk \ - (0x4UL) /*!< CCU4_CC4 SWR: RCMU (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RCMD_Pos \ - (3UL) /*!< CCU4_CC4 SWR: RCMD (Bit 3) */ -#define CCU4_CC4_SWR_RCMD_Msk \ - (0x8UL) /*!< CCU4_CC4 SWR: RCMD (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RE0A_Pos \ - (8UL) /*!< CCU4_CC4 SWR: RE0A (Bit 8) */ -#define CCU4_CC4_SWR_RE0A_Msk \ - (0x100UL) /*!< CCU4_CC4 SWR: RE0A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RE1A_Pos \ - (9UL) /*!< CCU4_CC4 SWR: RE1A (Bit 9) */ -#define CCU4_CC4_SWR_RE1A_Msk \ - (0x200UL) /*!< CCU4_CC4 SWR: RE1A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RE2A_Pos \ - (10UL) /*!< CCU4_CC4 SWR: RE2A (Bit 10) */ -#define CCU4_CC4_SWR_RE2A_Msk \ - (0x400UL) /*!< CCU4_CC4 SWR: RE2A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RTRPF_Pos \ - (11UL) /*!< CCU4_CC4 SWR: RTRPF (Bit 11) */ -#define CCU4_CC4_SWR_RTRPF_Msk \ - (0x800UL) /*!< CCU4_CC4 SWR: RTRPF (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'CCU8' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- CCU8_GCTRL --------------------------------- */ -#define CCU8_GCTRL_PRBC_Pos \ - (0UL) /*!< CCU8 GCTRL: PRBC (Bit 0) */ -#define CCU8_GCTRL_PRBC_Msk \ - (0x7UL) /*!< CCU8 GCTRL: PRBC (Bitfield-Mask: 0x07) */ -#define CCU8_GCTRL_PCIS_Pos \ - (4UL) /*!< CCU8 GCTRL: PCIS (Bit 4) */ -#define CCU8_GCTRL_PCIS_Msk \ - (0x30UL) /*!< CCU8 GCTRL: PCIS (Bitfield-Mask: 0x03) */ -#define CCU8_GCTRL_SUSCFG_Pos \ - (8UL) /*!< CCU8 GCTRL: SUSCFG (Bit 8) */ -#define CCU8_GCTRL_SUSCFG_Msk \ - (0x300UL) /*!< CCU8 GCTRL: SUSCFG (Bitfield-Mask: 0x03) */ -#define CCU8_GCTRL_MSE0_Pos \ - (10UL) /*!< CCU8 GCTRL: MSE0 (Bit 10) */ -#define CCU8_GCTRL_MSE0_Msk \ - (0x400UL) /*!< CCU8 GCTRL: MSE0 (Bitfield-Mask: 0x01) */ -#define CCU8_GCTRL_MSE1_Pos \ - (11UL) /*!< CCU8 GCTRL: MSE1 (Bit 11) */ -#define CCU8_GCTRL_MSE1_Msk \ - (0x800UL) /*!< CCU8 GCTRL: MSE1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCTRL_MSE2_Pos \ - (12UL) /*!< CCU8 GCTRL: MSE2 (Bit 12) */ -#define CCU8_GCTRL_MSE2_Msk \ - (0x1000UL) /*!< CCU8 GCTRL: MSE2 (Bitfield-Mask: 0x01) */ -#define CCU8_GCTRL_MSE3_Pos \ - (13UL) /*!< CCU8 GCTRL: MSE3 (Bit 13) */ -#define CCU8_GCTRL_MSE3_Msk \ - (0x2000UL) /*!< CCU8 GCTRL: MSE3 (Bitfield-Mask: 0x01) */ -#define CCU8_GCTRL_MSDE_Pos \ - (14UL) /*!< CCU8 GCTRL: MSDE (Bit 14) */ -#define CCU8_GCTRL_MSDE_Msk \ - (0xc000UL) /*!< CCU8 GCTRL: MSDE (Bitfield-Mask: 0x03) */ - -/* --------------------------------- CCU8_GSTAT --------------------------------- */ -#define CCU8_GSTAT_S0I_Pos (0UL) /*!< CCU8 GSTAT: S0I (Bit 0) */ -#define CCU8_GSTAT_S0I_Msk \ - (0x1UL) /*!< CCU8 GSTAT: S0I (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_S1I_Pos (1UL) /*!< CCU8 GSTAT: S1I (Bit 1) */ -#define CCU8_GSTAT_S1I_Msk \ - (0x2UL) /*!< CCU8 GSTAT: S1I (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_S2I_Pos (2UL) /*!< CCU8 GSTAT: S2I (Bit 2) */ -#define CCU8_GSTAT_S2I_Msk \ - (0x4UL) /*!< CCU8 GSTAT: S2I (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_S3I_Pos (3UL) /*!< CCU8 GSTAT: S3I (Bit 3) */ -#define CCU8_GSTAT_S3I_Msk \ - (0x8UL) /*!< CCU8 GSTAT: S3I (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_PRB_Pos (8UL) /*!< CCU8 GSTAT: PRB (Bit 8) */ -#define CCU8_GSTAT_PRB_Msk \ - (0x100UL) /*!< CCU8 GSTAT: PRB (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_PCRB_Pos \ - (10UL) /*!< CCU8 GSTAT: PCRB (Bit 10) */ -#define CCU8_GSTAT_PCRB_Msk \ - (0x400UL) /*!< CCU8 GSTAT: PCRB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU8_GIDLS --------------------------------- */ -#define CCU8_GIDLS_SS0I_Pos \ - (0UL) /*!< CCU8 GIDLS: SS0I (Bit 0) */ -#define CCU8_GIDLS_SS0I_Msk \ - (0x1UL) /*!< CCU8 GIDLS: SS0I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_SS1I_Pos \ - (1UL) /*!< CCU8 GIDLS: SS1I (Bit 1) */ -#define CCU8_GIDLS_SS1I_Msk \ - (0x2UL) /*!< CCU8 GIDLS: SS1I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_SS2I_Pos \ - (2UL) /*!< CCU8 GIDLS: SS2I (Bit 2) */ -#define CCU8_GIDLS_SS2I_Msk \ - (0x4UL) /*!< CCU8 GIDLS: SS2I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_SS3I_Pos \ - (3UL) /*!< CCU8 GIDLS: SS3I (Bit 3) */ -#define CCU8_GIDLS_SS3I_Msk \ - (0x8UL) /*!< CCU8 GIDLS: SS3I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_CPRB_Pos \ - (8UL) /*!< CCU8 GIDLS: CPRB (Bit 8) */ -#define CCU8_GIDLS_CPRB_Msk \ - (0x100UL) /*!< CCU8 GIDLS: CPRB (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_PSIC_Pos \ - (9UL) /*!< CCU8 GIDLS: PSIC (Bit 9) */ -#define CCU8_GIDLS_PSIC_Msk \ - (0x200UL) /*!< CCU8 GIDLS: PSIC (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_CPCH_Pos \ - (10UL) /*!< CCU8 GIDLS: CPCH (Bit 10) */ -#define CCU8_GIDLS_CPCH_Msk \ - (0x400UL) /*!< CCU8 GIDLS: CPCH (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU8_GIDLC --------------------------------- */ -#define CCU8_GIDLC_CS0I_Pos \ - (0UL) /*!< CCU8 GIDLC: CS0I (Bit 0) */ -#define CCU8_GIDLC_CS0I_Msk \ - (0x1UL) /*!< CCU8 GIDLC: CS0I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_CS1I_Pos \ - (1UL) /*!< CCU8 GIDLC: CS1I (Bit 1) */ -#define CCU8_GIDLC_CS1I_Msk \ - (0x2UL) /*!< CCU8 GIDLC: CS1I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_CS2I_Pos \ - (2UL) /*!< CCU8 GIDLC: CS2I (Bit 2) */ -#define CCU8_GIDLC_CS2I_Msk \ - (0x4UL) /*!< CCU8 GIDLC: CS2I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_CS3I_Pos \ - (3UL) /*!< CCU8 GIDLC: CS3I (Bit 3) */ -#define CCU8_GIDLC_CS3I_Msk \ - (0x8UL) /*!< CCU8 GIDLC: CS3I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_SPRB_Pos \ - (8UL) /*!< CCU8 GIDLC: SPRB (Bit 8) */ -#define CCU8_GIDLC_SPRB_Msk \ - (0x100UL) /*!< CCU8 GIDLC: SPRB (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_SPCH_Pos \ - (10UL) /*!< CCU8 GIDLC: SPCH (Bit 10) */ -#define CCU8_GIDLC_SPCH_Msk \ - (0x400UL) /*!< CCU8 GIDLC: SPCH (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU8_GCSS --------------------------------- */ -#define CCU8_GCSS_S0SE_Pos (0UL) /*!< CCU8 GCSS: S0SE (Bit 0) */ -#define CCU8_GCSS_S0SE_Msk \ - (0x1UL) /*!< CCU8 GCSS: S0SE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S0DSE_Pos \ - (1UL) /*!< CCU8 GCSS: S0DSE (Bit 1) */ -#define CCU8_GCSS_S0DSE_Msk \ - (0x2UL) /*!< CCU8 GCSS: S0DSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S0PSE_Pos \ - (2UL) /*!< CCU8 GCSS: S0PSE (Bit 2) */ -#define CCU8_GCSS_S0PSE_Msk \ - (0x4UL) /*!< CCU8 GCSS: S0PSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1SE_Pos (4UL) /*!< CCU8 GCSS: S1SE (Bit 4) */ -#define CCU8_GCSS_S1SE_Msk \ - (0x10UL) /*!< CCU8 GCSS: S1SE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1DSE_Pos \ - (5UL) /*!< CCU8 GCSS: S1DSE (Bit 5) */ -#define CCU8_GCSS_S1DSE_Msk \ - (0x20UL) /*!< CCU8 GCSS: S1DSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1PSE_Pos \ - (6UL) /*!< CCU8 GCSS: S1PSE (Bit 6) */ -#define CCU8_GCSS_S1PSE_Msk \ - (0x40UL) /*!< CCU8 GCSS: S1PSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2SE_Pos (8UL) /*!< CCU8 GCSS: S2SE (Bit 8) */ -#define CCU8_GCSS_S2SE_Msk \ - (0x100UL) /*!< CCU8 GCSS: S2SE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2DSE_Pos \ - (9UL) /*!< CCU8 GCSS: S2DSE (Bit 9) */ -#define CCU8_GCSS_S2DSE_Msk \ - (0x200UL) /*!< CCU8 GCSS: S2DSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2PSE_Pos \ - (10UL) /*!< CCU8 GCSS: S2PSE (Bit 10) */ -#define CCU8_GCSS_S2PSE_Msk \ - (0x400UL) /*!< CCU8 GCSS: S2PSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3SE_Pos \ - (12UL) /*!< CCU8 GCSS: S3SE (Bit 12) */ -#define CCU8_GCSS_S3SE_Msk \ - (0x1000UL) /*!< CCU8 GCSS: S3SE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3DSE_Pos \ - (13UL) /*!< CCU8 GCSS: S3DSE (Bit 13) */ -#define CCU8_GCSS_S3DSE_Msk \ - (0x2000UL) /*!< CCU8 GCSS: S3DSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3PSE_Pos \ - (14UL) /*!< CCU8 GCSS: S3PSE (Bit 14) */ -#define CCU8_GCSS_S3PSE_Msk \ - (0x4000UL) /*!< CCU8 GCSS: S3PSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S0ST1S_Pos \ - (16UL) /*!< CCU8 GCSS: S0ST1S (Bit 16) */ -#define CCU8_GCSS_S0ST1S_Msk \ - (0x10000UL) /*!< CCU8 GCSS: S0ST1S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1ST1S_Pos \ - (17UL) /*!< CCU8 GCSS: S1ST1S (Bit 17) */ -#define CCU8_GCSS_S1ST1S_Msk \ - (0x20000UL) /*!< CCU8 GCSS: S1ST1S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2ST1S_Pos \ - (18UL) /*!< CCU8 GCSS: S2ST1S (Bit 18) */ -#define CCU8_GCSS_S2ST1S_Msk \ - (0x40000UL) /*!< CCU8 GCSS: S2ST1S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3ST1S_Pos \ - (19UL) /*!< CCU8 GCSS: S3ST1S (Bit 19) */ -#define CCU8_GCSS_S3ST1S_Msk \ - (0x80000UL) /*!< CCU8 GCSS: S3ST1S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S0ST2S_Pos \ - (20UL) /*!< CCU8 GCSS: S0ST2S (Bit 20) */ -#define CCU8_GCSS_S0ST2S_Msk \ - (0x100000UL) /*!< CCU8 GCSS: S0ST2S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1ST2S_Pos \ - (21UL) /*!< CCU8 GCSS: S1ST2S (Bit 21) */ -#define CCU8_GCSS_S1ST2S_Msk \ - (0x200000UL) /*!< CCU8 GCSS: S1ST2S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2ST2S_Pos \ - (22UL) /*!< CCU8 GCSS: S2ST2S (Bit 22) */ -#define CCU8_GCSS_S2ST2S_Msk \ - (0x400000UL) /*!< CCU8 GCSS: S2ST2S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3ST2S_Pos \ - (23UL) /*!< CCU8 GCSS: S3ST2S (Bit 23) */ -#define CCU8_GCSS_S3ST2S_Msk \ - (0x800000UL) /*!< CCU8 GCSS: S3ST2S (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU8_GCSC --------------------------------- */ -#define CCU8_GCSC_S0SC_Pos (0UL) /*!< CCU8 GCSC: S0SC (Bit 0) */ -#define CCU8_GCSC_S0SC_Msk \ - (0x1UL) /*!< CCU8 GCSC: S0SC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S0DSC_Pos \ - (1UL) /*!< CCU8 GCSC: S0DSC (Bit 1) */ -#define CCU8_GCSC_S0DSC_Msk \ - (0x2UL) /*!< CCU8 GCSC: S0DSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S0PSC_Pos \ - (2UL) /*!< CCU8 GCSC: S0PSC (Bit 2) */ -#define CCU8_GCSC_S0PSC_Msk \ - (0x4UL) /*!< CCU8 GCSC: S0PSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1SC_Pos (4UL) /*!< CCU8 GCSC: S1SC (Bit 4) */ -#define CCU8_GCSC_S1SC_Msk \ - (0x10UL) /*!< CCU8 GCSC: S1SC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1DSC_Pos \ - (5UL) /*!< CCU8 GCSC: S1DSC (Bit 5) */ -#define CCU8_GCSC_S1DSC_Msk \ - (0x20UL) /*!< CCU8 GCSC: S1DSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1PSC_Pos \ - (6UL) /*!< CCU8 GCSC: S1PSC (Bit 6) */ -#define CCU8_GCSC_S1PSC_Msk \ - (0x40UL) /*!< CCU8 GCSC: S1PSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2SC_Pos (8UL) /*!< CCU8 GCSC: S2SC (Bit 8) */ -#define CCU8_GCSC_S2SC_Msk \ - (0x100UL) /*!< CCU8 GCSC: S2SC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2DSC_Pos \ - (9UL) /*!< CCU8 GCSC: S2DSC (Bit 9) */ -#define CCU8_GCSC_S2DSC_Msk \ - (0x200UL) /*!< CCU8 GCSC: S2DSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2PSC_Pos \ - (10UL) /*!< CCU8 GCSC: S2PSC (Bit 10) */ -#define CCU8_GCSC_S2PSC_Msk \ - (0x400UL) /*!< CCU8 GCSC: S2PSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3SC_Pos \ - (12UL) /*!< CCU8 GCSC: S3SC (Bit 12) */ -#define CCU8_GCSC_S3SC_Msk \ - (0x1000UL) /*!< CCU8 GCSC: S3SC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3DSC_Pos \ - (13UL) /*!< CCU8 GCSC: S3DSC (Bit 13) */ -#define CCU8_GCSC_S3DSC_Msk \ - (0x2000UL) /*!< CCU8 GCSC: S3DSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3PSC_Pos \ - (14UL) /*!< CCU8 GCSC: S3PSC (Bit 14) */ -#define CCU8_GCSC_S3PSC_Msk \ - (0x4000UL) /*!< CCU8 GCSC: S3PSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S0ST1C_Pos \ - (16UL) /*!< CCU8 GCSC: S0ST1C (Bit 16) */ -#define CCU8_GCSC_S0ST1C_Msk \ - (0x10000UL) /*!< CCU8 GCSC: S0ST1C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1ST1C_Pos \ - (17UL) /*!< CCU8 GCSC: S1ST1C (Bit 17) */ -#define CCU8_GCSC_S1ST1C_Msk \ - (0x20000UL) /*!< CCU8 GCSC: S1ST1C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2ST1C_Pos \ - (18UL) /*!< CCU8 GCSC: S2ST1C (Bit 18) */ -#define CCU8_GCSC_S2ST1C_Msk \ - (0x40000UL) /*!< CCU8 GCSC: S2ST1C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3ST1C_Pos \ - (19UL) /*!< CCU8 GCSC: S3ST1C (Bit 19) */ -#define CCU8_GCSC_S3ST1C_Msk \ - (0x80000UL) /*!< CCU8 GCSC: S3ST1C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S0ST2C_Pos \ - (20UL) /*!< CCU8 GCSC: S0ST2C (Bit 20) */ -#define CCU8_GCSC_S0ST2C_Msk \ - (0x100000UL) /*!< CCU8 GCSC: S0ST2C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1ST2C_Pos \ - (21UL) /*!< CCU8 GCSC: S1ST2C (Bit 21) */ -#define CCU8_GCSC_S1ST2C_Msk \ - (0x200000UL) /*!< CCU8 GCSC: S1ST2C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2ST2C_Pos \ - (22UL) /*!< CCU8 GCSC: S2ST2C (Bit 22) */ -#define CCU8_GCSC_S2ST2C_Msk \ - (0x400000UL) /*!< CCU8 GCSC: S2ST2C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3ST2C_Pos \ - (23UL) /*!< CCU8 GCSC: S3ST2C (Bit 23) */ -#define CCU8_GCSC_S3ST2C_Msk \ - (0x800000UL) /*!< CCU8 GCSC: S3ST2C (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU8_GCST --------------------------------- */ -#define CCU8_GCST_S0SS_Pos (0UL) /*!< CCU8 GCST: S0SS (Bit 0) */ -#define CCU8_GCST_S0SS_Msk \ - (0x1UL) /*!< CCU8 GCST: S0SS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S0DSS_Pos \ - (1UL) /*!< CCU8 GCST: S0DSS (Bit 1) */ -#define CCU8_GCST_S0DSS_Msk \ - (0x2UL) /*!< CCU8 GCST: S0DSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S0PSS_Pos \ - (2UL) /*!< CCU8 GCST: S0PSS (Bit 2) */ -#define CCU8_GCST_S0PSS_Msk \ - (0x4UL) /*!< CCU8 GCST: S0PSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S1SS_Pos (4UL) /*!< CCU8 GCST: S1SS (Bit 4) */ -#define CCU8_GCST_S1SS_Msk \ - (0x10UL) /*!< CCU8 GCST: S1SS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S1DSS_Pos \ - (5UL) /*!< CCU8 GCST: S1DSS (Bit 5) */ -#define CCU8_GCST_S1DSS_Msk \ - (0x20UL) /*!< CCU8 GCST: S1DSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S1PSS_Pos \ - (6UL) /*!< CCU8 GCST: S1PSS (Bit 6) */ -#define CCU8_GCST_S1PSS_Msk \ - (0x40UL) /*!< CCU8 GCST: S1PSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S2SS_Pos (8UL) /*!< CCU8 GCST: S2SS (Bit 8) */ -#define CCU8_GCST_S2SS_Msk \ - (0x100UL) /*!< CCU8 GCST: S2SS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S2DSS_Pos \ - (9UL) /*!< CCU8 GCST: S2DSS (Bit 9) */ -#define CCU8_GCST_S2DSS_Msk \ - (0x200UL) /*!< CCU8 GCST: S2DSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S2PSS_Pos \ - (10UL) /*!< CCU8 GCST: S2PSS (Bit 10) */ -#define CCU8_GCST_S2PSS_Msk \ - (0x400UL) /*!< CCU8 GCST: S2PSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S3SS_Pos \ - (12UL) /*!< CCU8 GCST: S3SS (Bit 12) */ -#define CCU8_GCST_S3SS_Msk \ - (0x1000UL) /*!< CCU8 GCST: S3SS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S3DSS_Pos \ - (13UL) /*!< CCU8 GCST: S3DSS (Bit 13) */ -#define CCU8_GCST_S3DSS_Msk \ - (0x2000UL) /*!< CCU8 GCST: S3DSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S3PSS_Pos \ - (14UL) /*!< CCU8 GCST: S3PSS (Bit 14) */ -#define CCU8_GCST_S3PSS_Msk \ - (0x4000UL) /*!< CCU8 GCST: S3PSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC80ST1_Pos \ - (16UL) /*!< CCU8 GCST: CC80ST1 (Bit 16) */ -#define CCU8_GCST_CC80ST1_Msk \ - (0x10000UL) /*!< CCU8 GCST: CC80ST1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC81ST1_Pos \ - (17UL) /*!< CCU8 GCST: CC81ST1 (Bit 17) */ -#define CCU8_GCST_CC81ST1_Msk \ - (0x20000UL) /*!< CCU8 GCST: CC81ST1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC82ST1_Pos \ - (18UL) /*!< CCU8 GCST: CC82ST1 (Bit 18) */ -#define CCU8_GCST_CC82ST1_Msk \ - (0x40000UL) /*!< CCU8 GCST: CC82ST1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC83ST1_Pos \ - (19UL) /*!< CCU8 GCST: CC83ST1 (Bit 19) */ -#define CCU8_GCST_CC83ST1_Msk \ - (0x80000UL) /*!< CCU8 GCST: CC83ST1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC80ST2_Pos \ - (20UL) /*!< CCU8 GCST: CC80ST2 (Bit 20) */ -#define CCU8_GCST_CC80ST2_Msk \ - (0x100000UL) /*!< CCU8 GCST: CC80ST2 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC81ST2_Pos \ - (21UL) /*!< CCU8 GCST: CC81ST2 (Bit 21) */ -#define CCU8_GCST_CC81ST2_Msk \ - (0x200000UL) /*!< CCU8 GCST: CC81ST2 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC82ST2_Pos \ - (22UL) /*!< CCU8 GCST: CC82ST2 (Bit 22) */ -#define CCU8_GCST_CC82ST2_Msk \ - (0x400000UL) /*!< CCU8 GCST: CC82ST2 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC83ST2_Pos \ - (23UL) /*!< CCU8 GCST: CC83ST2 (Bit 23) */ -#define CCU8_GCST_CC83ST2_Msk \ - (0x800000UL) /*!< CCU8 GCST: CC83ST2 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU8_GPCHK --------------------------------- */ -#define CCU8_GPCHK_PASE_Pos \ - (0UL) /*!< CCU8 GPCHK: PASE (Bit 0) */ -#define CCU8_GPCHK_PASE_Msk \ - (0x1UL) /*!< CCU8 GPCHK: PASE (Bitfield-Mask: 0x01) */ -#define CCU8_GPCHK_PACS_Pos \ - (1UL) /*!< CCU8 GPCHK: PACS (Bit 1) */ -#define CCU8_GPCHK_PACS_Msk \ - (0x6UL) /*!< CCU8 GPCHK: PACS (Bitfield-Mask: 0x03) */ -#define CCU8_GPCHK_PISEL_Pos \ - (3UL) /*!< CCU8 GPCHK: PISEL (Bit 3) */ -#define CCU8_GPCHK_PISEL_Msk \ - (0x18UL) /*!< CCU8 GPCHK: PISEL (Bitfield-Mask: 0x03) */ -#define CCU8_GPCHK_PCDS_Pos \ - (5UL) /*!< CCU8 GPCHK: PCDS (Bit 5) */ -#define CCU8_GPCHK_PCDS_Msk \ - (0x60UL) /*!< CCU8 GPCHK: PCDS (Bitfield-Mask: 0x03) */ -#define CCU8_GPCHK_PCTS_Pos \ - (7UL) /*!< CCU8 GPCHK: PCTS (Bit 7) */ -#define CCU8_GPCHK_PCTS_Msk \ - (0x80UL) /*!< CCU8 GPCHK: PCTS (Bitfield-Mask: 0x01) */ -#define CCU8_GPCHK_PCST_Pos \ - (15UL) /*!< CCU8 GPCHK: PCST (Bit 15) */ -#define CCU8_GPCHK_PCST_Msk \ - (0x8000UL) /*!< CCU8 GPCHK: PCST (Bitfield-Mask: 0x01) */ -#define CCU8_GPCHK_PCSEL0_Pos \ - (16UL) /*!< CCU8 GPCHK: PCSEL0 (Bit 16) */ -#define CCU8_GPCHK_PCSEL0_Msk \ - (0xf0000UL) /*!< CCU8 GPCHK: PCSEL0 (Bitfield-Mask: 0x0f) */ -#define CCU8_GPCHK_PCSEL1_Pos \ - (20UL) /*!< CCU8 GPCHK: PCSEL1 (Bit 20) */ -#define CCU8_GPCHK_PCSEL1_Msk \ - (0xf00000UL) /*!< CCU8 GPCHK: PCSEL1 (Bitfield-Mask: 0x0f) */ -#define CCU8_GPCHK_PCSEL2_Pos \ - (24UL) /*!< CCU8 GPCHK: PCSEL2 (Bit 24) */ -#define CCU8_GPCHK_PCSEL2_Msk \ - (0xf000000UL) /*!< CCU8 GPCHK: PCSEL2 (Bitfield-Mask: 0x0f) */ -#define CCU8_GPCHK_PCSEL3_Pos \ - (28UL) /*!< CCU8 GPCHK: PCSEL3 (Bit 28) */ -#define CCU8_GPCHK_PCSEL3_Msk \ - (0xf0000000UL) /*!< CCU8 GPCHK: PCSEL3 (Bitfield-Mask: 0x0f) */ - -/* ---------------------------------- CCU8_ECRD --------------------------------- */ -#define CCU8_ECRD_CAPV_Pos (0UL) /*!< CCU8 ECRD: CAPV (Bit 0) */ -#define CCU8_ECRD_CAPV_Msk \ - (0xffffUL) /*!< CCU8 ECRD: CAPV (Bitfield-Mask: 0xffff) */ -#define CCU8_ECRD_FPCV_Pos \ - (16UL) /*!< CCU8 ECRD: FPCV (Bit 16) */ -#define CCU8_ECRD_FPCV_Msk \ - (0xf0000UL) /*!< CCU8 ECRD: FPCV (Bitfield-Mask: 0x0f) */ -#define CCU8_ECRD_SPTR_Pos \ - (20UL) /*!< CCU8 ECRD: SPTR (Bit 20) */ -#define CCU8_ECRD_SPTR_Msk \ - (0x300000UL) /*!< CCU8 ECRD: SPTR (Bitfield-Mask: 0x03) */ -#define CCU8_ECRD_VPTR_Pos \ - (22UL) /*!< CCU8 ECRD: VPTR (Bit 22) */ -#define CCU8_ECRD_VPTR_Msk \ - (0xc00000UL) /*!< CCU8 ECRD: VPTR (Bitfield-Mask: 0x03) */ -#define CCU8_ECRD_FFL_Pos (24UL) /*!< CCU8 ECRD: FFL (Bit 24) */ -#define CCU8_ECRD_FFL_Msk \ - (0x1000000UL) /*!< CCU8 ECRD: FFL (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU8_MIDR --------------------------------- */ -#define CCU8_MIDR_MODR_Pos (0UL) /*!< CCU8 MIDR: MODR (Bit 0) */ -#define CCU8_MIDR_MODR_Msk \ - (0xffUL) /*!< CCU8 MIDR: MODR (Bitfield-Mask: 0xff) */ -#define CCU8_MIDR_MODT_Pos (8UL) /*!< CCU8 MIDR: MODT (Bit 8) */ -#define CCU8_MIDR_MODT_Msk \ - (0xff00UL) /*!< CCU8 MIDR: MODT (Bitfield-Mask: 0xff) */ -#define CCU8_MIDR_MODN_Pos \ - (16UL) /*!< CCU8 MIDR: MODN (Bit 16) */ -#define CCU8_MIDR_MODN_Msk \ - (0xffff0000UL) /*!< CCU8 MIDR: MODN (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ Group 'CCU8_CC8' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- CCU8_CC8_INS -------------------------------- */ -#define CCU8_CC8_INS_EV0IS_Pos \ - (0UL) /*!< CCU8_CC8 INS: EV0IS (Bit 0) */ -#define CCU8_CC8_INS_EV0IS_Msk \ - (0xfUL) /*!< CCU8_CC8 INS: EV0IS (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_INS_EV1IS_Pos \ - (4UL) /*!< CCU8_CC8 INS: EV1IS (Bit 4) */ -#define CCU8_CC8_INS_EV1IS_Msk \ - (0xf0UL) /*!< CCU8_CC8 INS: EV1IS (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_INS_EV2IS_Pos \ - (8UL) /*!< CCU8_CC8 INS: EV2IS (Bit 8) */ -#define CCU8_CC8_INS_EV2IS_Msk \ - (0xf00UL) /*!< CCU8_CC8 INS: EV2IS (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_INS_EV0EM_Pos \ - (16UL) /*!< CCU8_CC8 INS: EV0EM (Bit 16) */ -#define CCU8_CC8_INS_EV0EM_Msk \ - (0x30000UL) /*!< CCU8_CC8 INS: EV0EM (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_EV1EM_Pos \ - (18UL) /*!< CCU8_CC8 INS: EV1EM (Bit 18) */ -#define CCU8_CC8_INS_EV1EM_Msk \ - (0xc0000UL) /*!< CCU8_CC8 INS: EV1EM (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_EV2EM_Pos \ - (20UL) /*!< CCU8_CC8 INS: EV2EM (Bit 20) */ -#define CCU8_CC8_INS_EV2EM_Msk \ - (0x300000UL) /*!< CCU8_CC8 INS: EV2EM (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_EV0LM_Pos \ - (22UL) /*!< CCU8_CC8 INS: EV0LM (Bit 22) */ -#define CCU8_CC8_INS_EV0LM_Msk \ - (0x400000UL) /*!< CCU8_CC8 INS: EV0LM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INS_EV1LM_Pos \ - (23UL) /*!< CCU8_CC8 INS: EV1LM (Bit 23) */ -#define CCU8_CC8_INS_EV1LM_Msk \ - (0x800000UL) /*!< CCU8_CC8 INS: EV1LM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INS_EV2LM_Pos \ - (24UL) /*!< CCU8_CC8 INS: EV2LM (Bit 24) */ -#define CCU8_CC8_INS_EV2LM_Msk \ - (0x1000000UL) /*!< CCU8_CC8 INS: EV2LM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INS_LPF0M_Pos \ - (25UL) /*!< CCU8_CC8 INS: LPF0M (Bit 25) */ -#define CCU8_CC8_INS_LPF0M_Msk \ - (0x6000000UL) /*!< CCU8_CC8 INS: LPF0M (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_LPF1M_Pos \ - (27UL) /*!< CCU8_CC8 INS: LPF1M (Bit 27) */ -#define CCU8_CC8_INS_LPF1M_Msk \ - (0x18000000UL) /*!< CCU8_CC8 INS: LPF1M (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_LPF2M_Pos \ - (29UL) /*!< CCU8_CC8 INS: LPF2M (Bit 29) */ -#define CCU8_CC8_INS_LPF2M_Msk \ - (0x60000000UL) /*!< CCU8_CC8 INS: LPF2M (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU8_CC8_CMC -------------------------------- */ -#define CCU8_CC8_CMC_STRTS_Pos \ - (0UL) /*!< CCU8_CC8 CMC: STRTS (Bit 0) */ -#define CCU8_CC8_CMC_STRTS_Msk \ - (0x3UL) /*!< CCU8_CC8 CMC: STRTS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_ENDS_Pos \ - (2UL) /*!< CCU8_CC8 CMC: ENDS (Bit 2) */ -#define CCU8_CC8_CMC_ENDS_Msk \ - (0xcUL) /*!< CCU8_CC8 CMC: ENDS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_CAP0S_Pos \ - (4UL) /*!< CCU8_CC8 CMC: CAP0S (Bit 4) */ -#define CCU8_CC8_CMC_CAP0S_Msk \ - (0x30UL) /*!< CCU8_CC8 CMC: CAP0S (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_CAP1S_Pos \ - (6UL) /*!< CCU8_CC8 CMC: CAP1S (Bit 6) */ -#define CCU8_CC8_CMC_CAP1S_Msk \ - (0xc0UL) /*!< CCU8_CC8 CMC: CAP1S (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_GATES_Pos \ - (8UL) /*!< CCU8_CC8 CMC: GATES (Bit 8) */ -#define CCU8_CC8_CMC_GATES_Msk \ - (0x300UL) /*!< CCU8_CC8 CMC: GATES (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_UDS_Pos \ - (10UL) /*!< CCU8_CC8 CMC: UDS (Bit 10) */ -#define CCU8_CC8_CMC_UDS_Msk \ - (0xc00UL) /*!< CCU8_CC8 CMC: UDS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_LDS_Pos \ - (12UL) /*!< CCU8_CC8 CMC: LDS (Bit 12) */ -#define CCU8_CC8_CMC_LDS_Msk \ - (0x3000UL) /*!< CCU8_CC8 CMC: LDS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_CNTS_Pos \ - (14UL) /*!< CCU8_CC8 CMC: CNTS (Bit 14) */ -#define CCU8_CC8_CMC_CNTS_Msk \ - (0xc000UL) /*!< CCU8_CC8 CMC: CNTS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_OFS_Pos \ - (16UL) /*!< CCU8_CC8 CMC: OFS (Bit 16) */ -#define CCU8_CC8_CMC_OFS_Msk \ - (0x10000UL) /*!< CCU8_CC8 CMC: OFS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CMC_TS_Pos \ - (17UL) /*!< CCU8_CC8 CMC: TS (Bit 17) */ -#define CCU8_CC8_CMC_TS_Msk \ - (0x20000UL) /*!< CCU8_CC8 CMC: TS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CMC_MOS_Pos \ - (18UL) /*!< CCU8_CC8 CMC: MOS (Bit 18) */ -#define CCU8_CC8_CMC_MOS_Msk \ - (0xc0000UL) /*!< CCU8_CC8 CMC: MOS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_TCE_Pos \ - (20UL) /*!< CCU8_CC8 CMC: TCE (Bit 20) */ -#define CCU8_CC8_CMC_TCE_Msk \ - (0x100000UL) /*!< CCU8_CC8 CMC: TCE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_TCST ------------------------------- */ -#define CCU8_CC8_TCST_TRB_Pos \ - (0UL) /*!< CCU8_CC8 TCST: TRB (Bit 0) */ -#define CCU8_CC8_TCST_TRB_Msk \ - (0x1UL) /*!< CCU8_CC8 TCST: TRB (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCST_CDIR_Pos \ - (1UL) /*!< CCU8_CC8 TCST: CDIR (Bit 1) */ -#define CCU8_CC8_TCST_CDIR_Msk \ - (0x2UL) /*!< CCU8_CC8 TCST: CDIR (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCST_DTR1_Pos \ - (3UL) /*!< CCU8_CC8 TCST: DTR1 (Bit 3) */ -#define CCU8_CC8_TCST_DTR1_Msk \ - (0x8UL) /*!< CCU8_CC8 TCST: DTR1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCST_DTR2_Pos \ - (4UL) /*!< CCU8_CC8 TCST: DTR2 (Bit 4) */ -#define CCU8_CC8_TCST_DTR2_Msk \ - (0x10UL) /*!< CCU8_CC8 TCST: DTR2 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CCU8_CC8_TCSET ------------------------------- */ -#define CCU8_CC8_TCSET_TRBS_Pos \ - (0UL) /*!< CCU8_CC8 TCSET: TRBS (Bit 0) */ -#define CCU8_CC8_TCSET_TRBS_Msk \ - (0x1UL) /*!< CCU8_CC8 TCSET: TRBS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CCU8_CC8_TCCLR ------------------------------- */ -#define CCU8_CC8_TCCLR_TRBC_Pos \ - (0UL) /*!< CCU8_CC8 TCCLR: TRBC (Bit 0) */ -#define CCU8_CC8_TCCLR_TRBC_Msk \ - (0x1UL) /*!< CCU8_CC8 TCCLR: TRBC (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCCLR_TCC_Pos \ - (1UL) /*!< CCU8_CC8 TCCLR: TCC (Bit 1) */ -#define CCU8_CC8_TCCLR_TCC_Msk \ - (0x2UL) /*!< CCU8_CC8 TCCLR: TCC (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCCLR_DITC_Pos \ - (2UL) /*!< CCU8_CC8 TCCLR: DITC (Bit 2) */ -#define CCU8_CC8_TCCLR_DITC_Msk \ - (0x4UL) /*!< CCU8_CC8 TCCLR: DITC (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCCLR_DTC1C_Pos \ - (3UL) /*!< CCU8_CC8 TCCLR: DTC1C (Bit 3) */ -#define CCU8_CC8_TCCLR_DTC1C_Msk \ - (0x8UL) /*!< CCU8_CC8 TCCLR: DTC1C (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCCLR_DTC2C_Pos \ - (4UL) /*!< CCU8_CC8 TCCLR: DTC2C (Bit 4) */ -#define CCU8_CC8_TCCLR_DTC2C_Msk \ - (0x10UL) /*!< CCU8_CC8 TCCLR: DTC2C (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU8_CC8_TC -------------------------------- */ -#define CCU8_CC8_TC_TCM_Pos \ - (0UL) /*!< CCU8_CC8 TC: TCM (Bit 0) */ -#define CCU8_CC8_TC_TCM_Msk \ - (0x1UL) /*!< CCU8_CC8 TC: TCM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TSSM_Pos \ - (1UL) /*!< CCU8_CC8 TC: TSSM (Bit 1) */ -#define CCU8_CC8_TC_TSSM_Msk \ - (0x2UL) /*!< CCU8_CC8 TC: TSSM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_CLST_Pos \ - (2UL) /*!< CCU8_CC8 TC: CLST (Bit 2) */ -#define CCU8_CC8_TC_CLST_Msk \ - (0x4UL) /*!< CCU8_CC8 TC: CLST (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_CMOD_Pos \ - (3UL) /*!< CCU8_CC8 TC: CMOD (Bit 3) */ -#define CCU8_CC8_TC_CMOD_Msk \ - (0x8UL) /*!< CCU8_CC8 TC: CMOD (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_ECM_Pos \ - (4UL) /*!< CCU8_CC8 TC: ECM (Bit 4) */ -#define CCU8_CC8_TC_ECM_Msk \ - (0x10UL) /*!< CCU8_CC8 TC: ECM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_CAPC_Pos \ - (5UL) /*!< CCU8_CC8 TC: CAPC (Bit 5) */ -#define CCU8_CC8_TC_CAPC_Msk \ - (0x60UL) /*!< CCU8_CC8 TC: CAPC (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_TC_TLS_Pos \ - (7UL) /*!< CCU8_CC8 TC: TLS (Bit 7) */ -#define CCU8_CC8_TC_TLS_Msk \ - (0x80UL) /*!< CCU8_CC8 TC: TLS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_ENDM_Pos \ - (8UL) /*!< CCU8_CC8 TC: ENDM (Bit 8) */ -#define CCU8_CC8_TC_ENDM_Msk \ - (0x300UL) /*!< CCU8_CC8 TC: ENDM (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_TC_STRM_Pos \ - (10UL) /*!< CCU8_CC8 TC: STRM (Bit 10) */ -#define CCU8_CC8_TC_STRM_Msk \ - (0x400UL) /*!< CCU8_CC8 TC: STRM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_SCE_Pos \ - (11UL) /*!< CCU8_CC8 TC: SCE (Bit 11) */ -#define CCU8_CC8_TC_SCE_Msk \ - (0x800UL) /*!< CCU8_CC8 TC: SCE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_CCS_Pos \ - (12UL) /*!< CCU8_CC8 TC: CCS (Bit 12) */ -#define CCU8_CC8_TC_CCS_Msk \ - (0x1000UL) /*!< CCU8_CC8 TC: CCS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_DITHE_Pos \ - (13UL) /*!< CCU8_CC8 TC: DITHE (Bit 13) */ -#define CCU8_CC8_TC_DITHE_Msk \ - (0x6000UL) /*!< CCU8_CC8 TC: DITHE (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_TC_DIM_Pos \ - (15UL) /*!< CCU8_CC8 TC: DIM (Bit 15) */ -#define CCU8_CC8_TC_DIM_Msk \ - (0x8000UL) /*!< CCU8_CC8 TC: DIM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_FPE_Pos \ - (16UL) /*!< CCU8_CC8 TC: FPE (Bit 16) */ -#define CCU8_CC8_TC_FPE_Msk \ - (0x10000UL) /*!< CCU8_CC8 TC: FPE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRAPE0_Pos \ - (17UL) /*!< CCU8_CC8 TC: TRAPE0 (Bit 17) */ -#define CCU8_CC8_TC_TRAPE0_Msk \ - (0x20000UL) /*!< CCU8_CC8 TC: TRAPE0 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRAPE1_Pos \ - (18UL) /*!< CCU8_CC8 TC: TRAPE1 (Bit 18) */ -#define CCU8_CC8_TC_TRAPE1_Msk \ - (0x40000UL) /*!< CCU8_CC8 TC: TRAPE1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRAPE2_Pos \ - (19UL) /*!< CCU8_CC8 TC: TRAPE2 (Bit 19) */ -#define CCU8_CC8_TC_TRAPE2_Msk \ - (0x80000UL) /*!< CCU8_CC8 TC: TRAPE2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRAPE3_Pos \ - (20UL) /*!< CCU8_CC8 TC: TRAPE3 (Bit 20) */ -#define CCU8_CC8_TC_TRAPE3_Msk \ - (0x100000UL) /*!< CCU8_CC8 TC: TRAPE3 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRPSE_Pos \ - (21UL) /*!< CCU8_CC8 TC: TRPSE (Bit 21) */ -#define CCU8_CC8_TC_TRPSE_Msk \ - (0x200000UL) /*!< CCU8_CC8 TC: TRPSE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRPSW_Pos \ - (22UL) /*!< CCU8_CC8 TC: TRPSW (Bit 22) */ -#define CCU8_CC8_TC_TRPSW_Msk \ - (0x400000UL) /*!< CCU8_CC8 TC: TRPSW (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_EMS_Pos \ - (23UL) /*!< CCU8_CC8 TC: EMS (Bit 23) */ -#define CCU8_CC8_TC_EMS_Msk \ - (0x800000UL) /*!< CCU8_CC8 TC: EMS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_EMT_Pos \ - (24UL) /*!< CCU8_CC8 TC: EMT (Bit 24) */ -#define CCU8_CC8_TC_EMT_Msk \ - (0x1000000UL) /*!< CCU8_CC8 TC: EMT (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_MCME1_Pos \ - (25UL) /*!< CCU8_CC8 TC: MCME1 (Bit 25) */ -#define CCU8_CC8_TC_MCME1_Msk \ - (0x2000000UL) /*!< CCU8_CC8 TC: MCME1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_MCME2_Pos \ - (26UL) /*!< CCU8_CC8 TC: MCME2 (Bit 26) */ -#define CCU8_CC8_TC_MCME2_Msk \ - (0x4000000UL) /*!< CCU8_CC8 TC: MCME2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_EME_Pos \ - (27UL) /*!< CCU8_CC8 TC: EME (Bit 27) */ -#define CCU8_CC8_TC_EME_Msk \ - (0x18000000UL) /*!< CCU8_CC8 TC: EME (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_TC_STOS_Pos \ - (29UL) /*!< CCU8_CC8 TC: STOS (Bit 29) */ -#define CCU8_CC8_TC_STOS_Msk \ - (0x60000000UL) /*!< CCU8_CC8 TC: STOS (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU8_CC8_PSL -------------------------------- */ -#define CCU8_CC8_PSL_PSL11_Pos \ - (0UL) /*!< CCU8_CC8 PSL: PSL11 (Bit 0) */ -#define CCU8_CC8_PSL_PSL11_Msk \ - (0x1UL) /*!< CCU8_CC8 PSL: PSL11 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_PSL_PSL12_Pos \ - (1UL) /*!< CCU8_CC8 PSL: PSL12 (Bit 1) */ -#define CCU8_CC8_PSL_PSL12_Msk \ - (0x2UL) /*!< CCU8_CC8 PSL: PSL12 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_PSL_PSL21_Pos \ - (2UL) /*!< CCU8_CC8 PSL: PSL21 (Bit 2) */ -#define CCU8_CC8_PSL_PSL21_Msk \ - (0x4UL) /*!< CCU8_CC8 PSL: PSL21 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_PSL_PSL22_Pos \ - (3UL) /*!< CCU8_CC8 PSL: PSL22 (Bit 3) */ -#define CCU8_CC8_PSL_PSL22_Msk \ - (0x8UL) /*!< CCU8_CC8 PSL: PSL22 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_DIT -------------------------------- */ -#define CCU8_CC8_DIT_DCV_Pos \ - (0UL) /*!< CCU8_CC8 DIT: DCV (Bit 0) */ -#define CCU8_CC8_DIT_DCV_Msk \ - (0xfUL) /*!< CCU8_CC8 DIT: DCV (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_DIT_DCNT_Pos \ - (8UL) /*!< CCU8_CC8 DIT: DCNT (Bit 8) */ -#define CCU8_CC8_DIT_DCNT_Msk \ - (0xf00UL) /*!< CCU8_CC8 DIT: DCNT (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU8_CC8_DITS ------------------------------- */ -#define CCU8_CC8_DITS_DCVS_Pos \ - (0UL) /*!< CCU8_CC8 DITS: DCVS (Bit 0) */ -#define CCU8_CC8_DITS_DCVS_Msk \ - (0xfUL) /*!< CCU8_CC8 DITS: DCVS (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU8_CC8_PSC -------------------------------- */ -#define CCU8_CC8_PSC_PSIV_Pos \ - (0UL) /*!< CCU8_CC8 PSC: PSIV (Bit 0) */ -#define CCU8_CC8_PSC_PSIV_Msk \ - (0xfUL) /*!< CCU8_CC8 PSC: PSIV (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU8_CC8_FPC -------------------------------- */ -#define CCU8_CC8_FPC_PCMP_Pos \ - (0UL) /*!< CCU8_CC8 FPC: PCMP (Bit 0) */ -#define CCU8_CC8_FPC_PCMP_Msk \ - (0xfUL) /*!< CCU8_CC8 FPC: PCMP (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_FPC_PVAL_Pos \ - (8UL) /*!< CCU8_CC8 FPC: PVAL (Bit 8) */ -#define CCU8_CC8_FPC_PVAL_Msk \ - (0xf00UL) /*!< CCU8_CC8 FPC: PVAL (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU8_CC8_FPCS ------------------------------- */ -#define CCU8_CC8_FPCS_PCMP_Pos \ - (0UL) /*!< CCU8_CC8 FPCS: PCMP (Bit 0) */ -#define CCU8_CC8_FPCS_PCMP_Msk \ - (0xfUL) /*!< CCU8_CC8 FPCS: PCMP (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- CCU8_CC8_PR -------------------------------- */ -#define CCU8_CC8_PR_PR_Pos (0UL) /*!< CCU8_CC8 PR: PR (Bit 0) */ -#define CCU8_CC8_PR_PR_Msk \ - (0xffffUL) /*!< CCU8_CC8 PR: PR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_PRS -------------------------------- */ -#define CCU8_CC8_PRS_PRS_Pos \ - (0UL) /*!< CCU8_CC8 PRS: PRS (Bit 0) */ -#define CCU8_CC8_PRS_PRS_Msk \ - (0xffffUL) /*!< CCU8_CC8 PRS: PRS (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CR1 -------------------------------- */ -#define CCU8_CC8_CR1_CR1_Pos \ - (0UL) /*!< CCU8_CC8 CR1: CR1 (Bit 0) */ -#define CCU8_CC8_CR1_CR1_Msk \ - (0xffffUL) /*!< CCU8_CC8 CR1: CR1 (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CR1S ------------------------------- */ -#define CCU8_CC8_CR1S_CR1S_Pos \ - (0UL) /*!< CCU8_CC8 CR1S: CR1S (Bit 0) */ -#define CCU8_CC8_CR1S_CR1S_Msk \ - (0xffffUL) /*!< CCU8_CC8 CR1S: CR1S (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CR2 -------------------------------- */ -#define CCU8_CC8_CR2_CR2_Pos \ - (0UL) /*!< CCU8_CC8 CR2: CR2 (Bit 0) */ -#define CCU8_CC8_CR2_CR2_Msk \ - (0xffffUL) /*!< CCU8_CC8 CR2: CR2 (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CR2S ------------------------------- */ -#define CCU8_CC8_CR2S_CR2S_Pos \ - (0UL) /*!< CCU8_CC8 CR2S: CR2S (Bit 0) */ -#define CCU8_CC8_CR2S_CR2S_Msk \ - (0xffffUL) /*!< CCU8_CC8 CR2S: CR2S (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CHC -------------------------------- */ -#define CCU8_CC8_CHC_ASE_Pos \ - (0UL) /*!< CCU8_CC8 CHC: ASE (Bit 0) */ -#define CCU8_CC8_CHC_ASE_Msk \ - (0x1UL) /*!< CCU8_CC8 CHC: ASE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CHC_OCS1_Pos \ - (1UL) /*!< CCU8_CC8 CHC: OCS1 (Bit 1) */ -#define CCU8_CC8_CHC_OCS1_Msk \ - (0x2UL) /*!< CCU8_CC8 CHC: OCS1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CHC_OCS2_Pos \ - (2UL) /*!< CCU8_CC8 CHC: OCS2 (Bit 2) */ -#define CCU8_CC8_CHC_OCS2_Msk \ - (0x4UL) /*!< CCU8_CC8 CHC: OCS2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CHC_OCS3_Pos \ - (3UL) /*!< CCU8_CC8 CHC: OCS3 (Bit 3) */ -#define CCU8_CC8_CHC_OCS3_Msk \ - (0x8UL) /*!< CCU8_CC8 CHC: OCS3 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CHC_OCS4_Pos \ - (4UL) /*!< CCU8_CC8 CHC: OCS4 (Bit 4) */ -#define CCU8_CC8_CHC_OCS4_Msk \ - (0x10UL) /*!< CCU8_CC8 CHC: OCS4 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_DTC -------------------------------- */ -#define CCU8_CC8_DTC_DTE1_Pos \ - (0UL) /*!< CCU8_CC8 DTC: DTE1 (Bit 0) */ -#define CCU8_CC8_DTC_DTE1_Msk \ - (0x1UL) /*!< CCU8_CC8 DTC: DTE1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DTE2_Pos \ - (1UL) /*!< CCU8_CC8 DTC: DTE2 (Bit 1) */ -#define CCU8_CC8_DTC_DTE2_Msk \ - (0x2UL) /*!< CCU8_CC8 DTC: DTE2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DCEN1_Pos \ - (2UL) /*!< CCU8_CC8 DTC: DCEN1 (Bit 2) */ -#define CCU8_CC8_DTC_DCEN1_Msk \ - (0x4UL) /*!< CCU8_CC8 DTC: DCEN1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DCEN2_Pos \ - (3UL) /*!< CCU8_CC8 DTC: DCEN2 (Bit 3) */ -#define CCU8_CC8_DTC_DCEN2_Msk \ - (0x8UL) /*!< CCU8_CC8 DTC: DCEN2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DCEN3_Pos \ - (4UL) /*!< CCU8_CC8 DTC: DCEN3 (Bit 4) */ -#define CCU8_CC8_DTC_DCEN3_Msk \ - (0x10UL) /*!< CCU8_CC8 DTC: DCEN3 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DCEN4_Pos \ - (5UL) /*!< CCU8_CC8 DTC: DCEN4 (Bit 5) */ -#define CCU8_CC8_DTC_DCEN4_Msk \ - (0x20UL) /*!< CCU8_CC8 DTC: DCEN4 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DTCC_Pos \ - (6UL) /*!< CCU8_CC8 DTC: DTCC (Bit 6) */ -#define CCU8_CC8_DTC_DTCC_Msk \ - (0xc0UL) /*!< CCU8_CC8 DTC: DTCC (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU8_CC8_DC1R ------------------------------- */ -#define CCU8_CC8_DC1R_DT1R_Pos \ - (0UL) /*!< CCU8_CC8 DC1R: DT1R (Bit 0) */ -#define CCU8_CC8_DC1R_DT1R_Msk \ - (0xffUL) /*!< CCU8_CC8 DC1R: DT1R (Bitfield-Mask: 0xff) */ -#define CCU8_CC8_DC1R_DT1F_Pos \ - (8UL) /*!< CCU8_CC8 DC1R: DT1F (Bit 8) */ -#define CCU8_CC8_DC1R_DT1F_Msk \ - (0xff00UL) /*!< CCU8_CC8 DC1R: DT1F (Bitfield-Mask: 0xff) */ - -/* -------------------------------- CCU8_CC8_DC2R ------------------------------- */ -#define CCU8_CC8_DC2R_DT2R_Pos \ - (0UL) /*!< CCU8_CC8 DC2R: DT2R (Bit 0) */ -#define CCU8_CC8_DC2R_DT2R_Msk \ - (0xffUL) /*!< CCU8_CC8 DC2R: DT2R (Bitfield-Mask: 0xff) */ -#define CCU8_CC8_DC2R_DT2F_Pos \ - (8UL) /*!< CCU8_CC8 DC2R: DT2F (Bit 8) */ -#define CCU8_CC8_DC2R_DT2F_Msk \ - (0xff00UL) /*!< CCU8_CC8 DC2R: DT2F (Bitfield-Mask: 0xff) */ - -/* ------------------------------- CCU8_CC8_TIMER ------------------------------- */ -#define CCU8_CC8_TIMER_TVAL_Pos \ - (0UL) /*!< CCU8_CC8 TIMER: TVAL (Bit 0) */ -#define CCU8_CC8_TIMER_TVAL_Msk \ - (0xffffUL) /*!< CCU8_CC8 TIMER: TVAL (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- CCU8_CC8_CV -------------------------------- */ -#define CCU8_CC8_CV_CAPTV_Pos \ - (0UL) /*!< CCU8_CC8 CV: CAPTV (Bit 0) */ -#define CCU8_CC8_CV_CAPTV_Msk \ - (0xffffUL) /*!< CCU8_CC8 CV: CAPTV (Bitfield-Mask: 0xffff) */ -#define CCU8_CC8_CV_FPCV_Pos \ - (16UL) /*!< CCU8_CC8 CV: FPCV (Bit 16) */ -#define CCU8_CC8_CV_FPCV_Msk \ - (0xf0000UL) /*!< CCU8_CC8 CV: FPCV (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_CV_FFL_Pos \ - (20UL) /*!< CCU8_CC8 CV: FFL (Bit 20) */ -#define CCU8_CC8_CV_FFL_Msk \ - (0x100000UL) /*!< CCU8_CC8 CV: FFL (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_INTS ------------------------------- */ -#define CCU8_CC8_INTS_PMUS_Pos \ - (0UL) /*!< CCU8_CC8 INTS: PMUS (Bit 0) */ -#define CCU8_CC8_INTS_PMUS_Msk \ - (0x1UL) /*!< CCU8_CC8 INTS: PMUS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_OMDS_Pos \ - (1UL) /*!< CCU8_CC8 INTS: OMDS (Bit 1) */ -#define CCU8_CC8_INTS_OMDS_Msk \ - (0x2UL) /*!< CCU8_CC8 INTS: OMDS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_CMU1S_Pos \ - (2UL) /*!< CCU8_CC8 INTS: CMU1S (Bit 2) */ -#define CCU8_CC8_INTS_CMU1S_Msk \ - (0x4UL) /*!< CCU8_CC8 INTS: CMU1S (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_CMD1S_Pos \ - (3UL) /*!< CCU8_CC8 INTS: CMD1S (Bit 3) */ -#define CCU8_CC8_INTS_CMD1S_Msk \ - (0x8UL) /*!< CCU8_CC8 INTS: CMD1S (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_CMU2S_Pos \ - (4UL) /*!< CCU8_CC8 INTS: CMU2S (Bit 4) */ -#define CCU8_CC8_INTS_CMU2S_Msk \ - (0x10UL) /*!< CCU8_CC8 INTS: CMU2S (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_CMD2S_Pos \ - (5UL) /*!< CCU8_CC8 INTS: CMD2S (Bit 5) */ -#define CCU8_CC8_INTS_CMD2S_Msk \ - (0x20UL) /*!< CCU8_CC8 INTS: CMD2S (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_E0AS_Pos \ - (8UL) /*!< CCU8_CC8 INTS: E0AS (Bit 8) */ -#define CCU8_CC8_INTS_E0AS_Msk \ - (0x100UL) /*!< CCU8_CC8 INTS: E0AS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_E1AS_Pos \ - (9UL) /*!< CCU8_CC8 INTS: E1AS (Bit 9) */ -#define CCU8_CC8_INTS_E1AS_Msk \ - (0x200UL) /*!< CCU8_CC8 INTS: E1AS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_E2AS_Pos \ - (10UL) /*!< CCU8_CC8 INTS: E2AS (Bit 10) */ -#define CCU8_CC8_INTS_E2AS_Msk \ - (0x400UL) /*!< CCU8_CC8 INTS: E2AS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_TRPF_Pos \ - (11UL) /*!< CCU8_CC8 INTS: TRPF (Bit 11) */ -#define CCU8_CC8_INTS_TRPF_Msk \ - (0x800UL) /*!< CCU8_CC8 INTS: TRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_INTE ------------------------------- */ -#define CCU8_CC8_INTE_PME_Pos \ - (0UL) /*!< CCU8_CC8 INTE: PME (Bit 0) */ -#define CCU8_CC8_INTE_PME_Msk \ - (0x1UL) /*!< CCU8_CC8 INTE: PME (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_OME_Pos \ - (1UL) /*!< CCU8_CC8 INTE: OME (Bit 1) */ -#define CCU8_CC8_INTE_OME_Msk \ - (0x2UL) /*!< CCU8_CC8 INTE: OME (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_CMU1E_Pos \ - (2UL) /*!< CCU8_CC8 INTE: CMU1E (Bit 2) */ -#define CCU8_CC8_INTE_CMU1E_Msk \ - (0x4UL) /*!< CCU8_CC8 INTE: CMU1E (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_CMD1E_Pos \ - (3UL) /*!< CCU8_CC8 INTE: CMD1E (Bit 3) */ -#define CCU8_CC8_INTE_CMD1E_Msk \ - (0x8UL) /*!< CCU8_CC8 INTE: CMD1E (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_CMU2E_Pos \ - (4UL) /*!< CCU8_CC8 INTE: CMU2E (Bit 4) */ -#define CCU8_CC8_INTE_CMU2E_Msk \ - (0x10UL) /*!< CCU8_CC8 INTE: CMU2E (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_CMD2E_Pos \ - (5UL) /*!< CCU8_CC8 INTE: CMD2E (Bit 5) */ -#define CCU8_CC8_INTE_CMD2E_Msk \ - (0x20UL) /*!< CCU8_CC8 INTE: CMD2E (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_E0AE_Pos \ - (8UL) /*!< CCU8_CC8 INTE: E0AE (Bit 8) */ -#define CCU8_CC8_INTE_E0AE_Msk \ - (0x100UL) /*!< CCU8_CC8 INTE: E0AE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_E1AE_Pos \ - (9UL) /*!< CCU8_CC8 INTE: E1AE (Bit 9) */ -#define CCU8_CC8_INTE_E1AE_Msk \ - (0x200UL) /*!< CCU8_CC8 INTE: E1AE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_E2AE_Pos \ - (10UL) /*!< CCU8_CC8 INTE: E2AE (Bit 10) */ -#define CCU8_CC8_INTE_E2AE_Msk \ - (0x400UL) /*!< CCU8_CC8 INTE: E2AE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_SRS -------------------------------- */ -#define CCU8_CC8_SRS_POSR_Pos \ - (0UL) /*!< CCU8_CC8 SRS: POSR (Bit 0) */ -#define CCU8_CC8_SRS_POSR_Msk \ - (0x3UL) /*!< CCU8_CC8 SRS: POSR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_CM1SR_Pos \ - (2UL) /*!< CCU8_CC8 SRS: CM1SR (Bit 2) */ -#define CCU8_CC8_SRS_CM1SR_Msk \ - (0xcUL) /*!< CCU8_CC8 SRS: CM1SR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_CM2SR_Pos \ - (4UL) /*!< CCU8_CC8 SRS: CM2SR (Bit 4) */ -#define CCU8_CC8_SRS_CM2SR_Msk \ - (0x30UL) /*!< CCU8_CC8 SRS: CM2SR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_E0SR_Pos \ - (8UL) /*!< CCU8_CC8 SRS: E0SR (Bit 8) */ -#define CCU8_CC8_SRS_E0SR_Msk \ - (0x300UL) /*!< CCU8_CC8 SRS: E0SR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_E1SR_Pos \ - (10UL) /*!< CCU8_CC8 SRS: E1SR (Bit 10) */ -#define CCU8_CC8_SRS_E1SR_Msk \ - (0xc00UL) /*!< CCU8_CC8 SRS: E1SR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_E2SR_Pos \ - (12UL) /*!< CCU8_CC8 SRS: E2SR (Bit 12) */ -#define CCU8_CC8_SRS_E2SR_Msk \ - (0x3000UL) /*!< CCU8_CC8 SRS: E2SR (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU8_CC8_SWS -------------------------------- */ -#define CCU8_CC8_SWS_SPM_Pos \ - (0UL) /*!< CCU8_CC8 SWS: SPM (Bit 0) */ -#define CCU8_CC8_SWS_SPM_Msk \ - (0x1UL) /*!< CCU8_CC8 SWS: SPM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SOM_Pos \ - (1UL) /*!< CCU8_CC8 SWS: SOM (Bit 1) */ -#define CCU8_CC8_SWS_SOM_Msk \ - (0x2UL) /*!< CCU8_CC8 SWS: SOM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SCM1U_Pos \ - (2UL) /*!< CCU8_CC8 SWS: SCM1U (Bit 2) */ -#define CCU8_CC8_SWS_SCM1U_Msk \ - (0x4UL) /*!< CCU8_CC8 SWS: SCM1U (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SCM1D_Pos \ - (3UL) /*!< CCU8_CC8 SWS: SCM1D (Bit 3) */ -#define CCU8_CC8_SWS_SCM1D_Msk \ - (0x8UL) /*!< CCU8_CC8 SWS: SCM1D (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SCM2U_Pos \ - (4UL) /*!< CCU8_CC8 SWS: SCM2U (Bit 4) */ -#define CCU8_CC8_SWS_SCM2U_Msk \ - (0x10UL) /*!< CCU8_CC8 SWS: SCM2U (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SCM2D_Pos \ - (5UL) /*!< CCU8_CC8 SWS: SCM2D (Bit 5) */ -#define CCU8_CC8_SWS_SCM2D_Msk \ - (0x20UL) /*!< CCU8_CC8 SWS: SCM2D (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SE0A_Pos \ - (8UL) /*!< CCU8_CC8 SWS: SE0A (Bit 8) */ -#define CCU8_CC8_SWS_SE0A_Msk \ - (0x100UL) /*!< CCU8_CC8 SWS: SE0A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SE1A_Pos \ - (9UL) /*!< CCU8_CC8 SWS: SE1A (Bit 9) */ -#define CCU8_CC8_SWS_SE1A_Msk \ - (0x200UL) /*!< CCU8_CC8 SWS: SE1A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SE2A_Pos \ - (10UL) /*!< CCU8_CC8 SWS: SE2A (Bit 10) */ -#define CCU8_CC8_SWS_SE2A_Msk \ - (0x400UL) /*!< CCU8_CC8 SWS: SE2A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_STRPF_Pos \ - (11UL) /*!< CCU8_CC8 SWS: STRPF (Bit 11) */ -#define CCU8_CC8_SWS_STRPF_Msk \ - (0x800UL) /*!< CCU8_CC8 SWS: STRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_SWR -------------------------------- */ -#define CCU8_CC8_SWR_RPM_Pos \ - (0UL) /*!< CCU8_CC8 SWR: RPM (Bit 0) */ -#define CCU8_CC8_SWR_RPM_Msk \ - (0x1UL) /*!< CCU8_CC8 SWR: RPM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_ROM_Pos \ - (1UL) /*!< CCU8_CC8 SWR: ROM (Bit 1) */ -#define CCU8_CC8_SWR_ROM_Msk \ - (0x2UL) /*!< CCU8_CC8 SWR: ROM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RCM1U_Pos \ - (2UL) /*!< CCU8_CC8 SWR: RCM1U (Bit 2) */ -#define CCU8_CC8_SWR_RCM1U_Msk \ - (0x4UL) /*!< CCU8_CC8 SWR: RCM1U (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RCM1D_Pos \ - (3UL) /*!< CCU8_CC8 SWR: RCM1D (Bit 3) */ -#define CCU8_CC8_SWR_RCM1D_Msk \ - (0x8UL) /*!< CCU8_CC8 SWR: RCM1D (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RCM2U_Pos \ - (4UL) /*!< CCU8_CC8 SWR: RCM2U (Bit 4) */ -#define CCU8_CC8_SWR_RCM2U_Msk \ - (0x10UL) /*!< CCU8_CC8 SWR: RCM2U (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RCM2D_Pos \ - (5UL) /*!< CCU8_CC8 SWR: RCM2D (Bit 5) */ -#define CCU8_CC8_SWR_RCM2D_Msk \ - (0x20UL) /*!< CCU8_CC8 SWR: RCM2D (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RE0A_Pos \ - (8UL) /*!< CCU8_CC8 SWR: RE0A (Bit 8) */ -#define CCU8_CC8_SWR_RE0A_Msk \ - (0x100UL) /*!< CCU8_CC8 SWR: RE0A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RE1A_Pos \ - (9UL) /*!< CCU8_CC8 SWR: RE1A (Bit 9) */ -#define CCU8_CC8_SWR_RE1A_Msk \ - (0x200UL) /*!< CCU8_CC8 SWR: RE1A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RE2A_Pos \ - (10UL) /*!< CCU8_CC8 SWR: RE2A (Bit 10) */ -#define CCU8_CC8_SWR_RE2A_Msk \ - (0x400UL) /*!< CCU8_CC8 SWR: RE2A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RTRPF_Pos \ - (11UL) /*!< CCU8_CC8 SWR: RTRPF (Bit 11) */ -#define CCU8_CC8_SWR_RTRPF_Msk \ - (0x800UL) /*!< CCU8_CC8 SWR: RTRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_STC -------------------------------- */ -#define CCU8_CC8_STC_CSE_Pos \ - (0UL) /*!< CCU8_CC8 STC: CSE (Bit 0) */ -#define CCU8_CC8_STC_CSE_Msk \ - (0x1UL) /*!< CCU8_CC8 STC: CSE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_STC_STM_Pos \ - (1UL) /*!< CCU8_CC8 STC: STM (Bit 1) */ -#define CCU8_CC8_STC_STM_Msk \ - (0x6UL) /*!< CCU8_CC8 STC: STM (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- HRPWM0_HRBSC -------------------------------- */ -#define HRPWM0_HRBSC_SUSCFG_Pos \ - (0UL) /*!< HRPWM0 HRBSC: SUSCFG (Bit 0) */ -#define HRPWM0_HRBSC_SUSCFG_Msk \ - (0x7UL) /*!< HRPWM0 HRBSC: SUSCFG (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRBSC_HRBE_Pos \ - (8UL) /*!< HRPWM0 HRBSC: HRBE (Bit 8) */ -#define HRPWM0_HRBSC_HRBE_Msk \ - (0x100UL) /*!< HRPWM0 HRBSC: HRBE (Bitfield-Mask: 0x01) */ - -/* --------------------------------- HRPWM0_MIDR -------------------------------- */ -#define HRPWM0_MIDR_MODR_Pos \ - (0UL) /*!< HRPWM0 MIDR: MODR (Bit 0) */ -#define HRPWM0_MIDR_MODR_Msk \ - (0xffUL) /*!< HRPWM0 MIDR: MODR (Bitfield-Mask: 0xff) */ -#define HRPWM0_MIDR_MODT_Pos \ - (8UL) /*!< HRPWM0 MIDR: MODT (Bit 8) */ -#define HRPWM0_MIDR_MODT_Msk \ - (0xff00UL) /*!< HRPWM0 MIDR: MODT (Bitfield-Mask: 0xff) */ -#define HRPWM0_MIDR_MODN_Pos \ - (16UL) /*!< HRPWM0 MIDR: MODN (Bit 16) */ -#define HRPWM0_MIDR_MODN_Msk \ - (0xffff0000UL) /*!< HRPWM0 MIDR: MODN (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- HRPWM0_GLBANA ------------------------------- */ -#define HRPWM0_GLBANA_SLDLY_Pos \ - (0UL) /*!< HRPWM0 GLBANA: SLDLY (Bit 0) */ -#define HRPWM0_GLBANA_SLDLY_Msk \ - (0x3UL) /*!< HRPWM0 GLBANA: SLDLY (Bitfield-Mask: 0x03) */ -#define HRPWM0_GLBANA_FUP_Pos \ - (2UL) /*!< HRPWM0 GLBANA: FUP (Bit 2) */ -#define HRPWM0_GLBANA_FUP_Msk \ - (0x4UL) /*!< HRPWM0 GLBANA: FUP (Bitfield-Mask: 0x01) */ -#define HRPWM0_GLBANA_FDN_Pos \ - (3UL) /*!< HRPWM0 GLBANA: FDN (Bit 3) */ -#define HRPWM0_GLBANA_FDN_Msk \ - (0x8UL) /*!< HRPWM0 GLBANA: FDN (Bitfield-Mask: 0x01) */ -#define HRPWM0_GLBANA_SLCP_Pos \ - (6UL) /*!< HRPWM0 GLBANA: SLCP (Bit 6) */ -#define HRPWM0_GLBANA_SLCP_Msk \ - (0x1c0UL) /*!< HRPWM0 GLBANA: SLCP (Bitfield-Mask: 0x07) */ -#define HRPWM0_GLBANA_SLIBLDO_Pos \ - (9UL) /*!< HRPWM0 GLBANA: SLIBLDO (Bit 9) */ -#define HRPWM0_GLBANA_SLIBLDO_Msk \ - (0x600UL) /*!< HRPWM0 GLBANA: SLIBLDO (Bitfield-Mask: 0x03) */ -#define HRPWM0_GLBANA_SLIBLF_Pos \ - (11UL) /*!< HRPWM0 GLBANA: SLIBLF (Bit 11) */ -#define HRPWM0_GLBANA_SLIBLF_Msk \ - (0x1800UL) /*!< HRPWM0 GLBANA: SLIBLF (Bitfield-Mask: 0x03) */ -#define HRPWM0_GLBANA_SLVREF_Pos \ - (13UL) /*!< HRPWM0 GLBANA: SLVREF (Bit 13) */ -#define HRPWM0_GLBANA_SLVREF_Msk \ - (0xe000UL) /*!< HRPWM0 GLBANA: SLVREF (Bitfield-Mask: 0x07) */ -#define HRPWM0_GLBANA_TRIBIAS_Pos \ - (16UL) /*!< HRPWM0 GLBANA: TRIBIAS (Bit 16) */ -#define HRPWM0_GLBANA_TRIBIAS_Msk \ - (0x30000UL) /*!< HRPWM0 GLBANA: TRIBIAS (Bitfield-Mask: 0x03) */ -#define HRPWM0_GLBANA_GHREN_Pos \ - (18UL) /*!< HRPWM0 GLBANA: GHREN (Bit 18) */ -#define HRPWM0_GLBANA_GHREN_Msk \ - (0x40000UL) /*!< HRPWM0 GLBANA: GHREN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGCFG ------------------------------- */ -#define HRPWM0_CSGCFG_C0PM_Pos \ - (0UL) /*!< HRPWM0 CSGCFG: C0PM (Bit 0) */ -#define HRPWM0_CSGCFG_C0PM_Msk \ - (0x3UL) /*!< HRPWM0 CSGCFG: C0PM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSGCFG_C1PM_Pos \ - (2UL) /*!< HRPWM0 CSGCFG: C1PM (Bit 2) */ -#define HRPWM0_CSGCFG_C1PM_Msk \ - (0xcUL) /*!< HRPWM0 CSGCFG: C1PM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSGCFG_C2PM_Pos \ - (4UL) /*!< HRPWM0 CSGCFG: C2PM (Bit 4) */ -#define HRPWM0_CSGCFG_C2PM_Msk \ - (0x30UL) /*!< HRPWM0 CSGCFG: C2PM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSGCFG_C0CD_Pos \ - (16UL) /*!< HRPWM0 CSGCFG: C0CD (Bit 16) */ -#define HRPWM0_CSGCFG_C0CD_Msk \ - (0x10000UL) /*!< HRPWM0 CSGCFG: C0CD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCFG_C1CD_Pos \ - (17UL) /*!< HRPWM0 CSGCFG: C1CD (Bit 17) */ -#define HRPWM0_CSGCFG_C1CD_Msk \ - (0x20000UL) /*!< HRPWM0 CSGCFG: C1CD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCFG_C2CD_Pos \ - (18UL) /*!< HRPWM0 CSGCFG: C2CD (Bit 18) */ -#define HRPWM0_CSGCFG_C2CD_Msk \ - (0x40000UL) /*!< HRPWM0 CSGCFG: C2CD (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSGSETG ------------------------------- */ -#define HRPWM0_CSGSETG_SD0R_Pos \ - (0UL) /*!< HRPWM0 CSGSETG: SD0R (Bit 0) */ -#define HRPWM0_CSGSETG_SD0R_Msk \ - (0x1UL) /*!< HRPWM0 CSGSETG: SD0R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC0R_Pos \ - (1UL) /*!< HRPWM0 CSGSETG: SC0R (Bit 1) */ -#define HRPWM0_CSGSETG_SC0R_Msk \ - (0x2UL) /*!< HRPWM0 CSGSETG: SC0R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC0P_Pos \ - (2UL) /*!< HRPWM0 CSGSETG: SC0P (Bit 2) */ -#define HRPWM0_CSGSETG_SC0P_Msk \ - (0x4UL) /*!< HRPWM0 CSGSETG: SC0P (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SD1R_Pos \ - (4UL) /*!< HRPWM0 CSGSETG: SD1R (Bit 4) */ -#define HRPWM0_CSGSETG_SD1R_Msk \ - (0x10UL) /*!< HRPWM0 CSGSETG: SD1R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC1R_Pos \ - (5UL) /*!< HRPWM0 CSGSETG: SC1R (Bit 5) */ -#define HRPWM0_CSGSETG_SC1R_Msk \ - (0x20UL) /*!< HRPWM0 CSGSETG: SC1R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC1P_Pos \ - (6UL) /*!< HRPWM0 CSGSETG: SC1P (Bit 6) */ -#define HRPWM0_CSGSETG_SC1P_Msk \ - (0x40UL) /*!< HRPWM0 CSGSETG: SC1P (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SD2R_Pos \ - (8UL) /*!< HRPWM0 CSGSETG: SD2R (Bit 8) */ -#define HRPWM0_CSGSETG_SD2R_Msk \ - (0x100UL) /*!< HRPWM0 CSGSETG: SD2R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC2R_Pos \ - (9UL) /*!< HRPWM0 CSGSETG: SC2R (Bit 9) */ -#define HRPWM0_CSGSETG_SC2R_Msk \ - (0x200UL) /*!< HRPWM0 CSGSETG: SC2R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC2P_Pos \ - (10UL) /*!< HRPWM0 CSGSETG: SC2P (Bit 10) */ -#define HRPWM0_CSGSETG_SC2P_Msk \ - (0x400UL) /*!< HRPWM0 CSGSETG: SC2P (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSGCLRG ------------------------------- */ -#define HRPWM0_CSGCLRG_CD0R_Pos \ - (0UL) /*!< HRPWM0 CSGCLRG: CD0R (Bit 0) */ -#define HRPWM0_CSGCLRG_CD0R_Msk \ - (0x1UL) /*!< HRPWM0 CSGCLRG: CD0R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC0R_Pos \ - (1UL) /*!< HRPWM0 CSGCLRG: CC0R (Bit 1) */ -#define HRPWM0_CSGCLRG_CC0R_Msk \ - (0x2UL) /*!< HRPWM0 CSGCLRG: CC0R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC0P_Pos \ - (2UL) /*!< HRPWM0 CSGCLRG: CC0P (Bit 2) */ -#define HRPWM0_CSGCLRG_CC0P_Msk \ - (0x4UL) /*!< HRPWM0 CSGCLRG: CC0P (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CD1R_Pos \ - (4UL) /*!< HRPWM0 CSGCLRG: CD1R (Bit 4) */ -#define HRPWM0_CSGCLRG_CD1R_Msk \ - (0x10UL) /*!< HRPWM0 CSGCLRG: CD1R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC1R_Pos \ - (5UL) /*!< HRPWM0 CSGCLRG: CC1R (Bit 5) */ -#define HRPWM0_CSGCLRG_CC1R_Msk \ - (0x20UL) /*!< HRPWM0 CSGCLRG: CC1R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC1P_Pos \ - (6UL) /*!< HRPWM0 CSGCLRG: CC1P (Bit 6) */ -#define HRPWM0_CSGCLRG_CC1P_Msk \ - (0x40UL) /*!< HRPWM0 CSGCLRG: CC1P (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CD2R_Pos \ - (8UL) /*!< HRPWM0 CSGCLRG: CD2R (Bit 8) */ -#define HRPWM0_CSGCLRG_CD2R_Msk \ - (0x100UL) /*!< HRPWM0 CSGCLRG: CD2R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC2R_Pos \ - (9UL) /*!< HRPWM0 CSGCLRG: CC2R (Bit 9) */ -#define HRPWM0_CSGCLRG_CC2R_Msk \ - (0x200UL) /*!< HRPWM0 CSGCLRG: CC2R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC2P_Pos \ - (10UL) /*!< HRPWM0 CSGCLRG: CC2P (Bit 10) */ -#define HRPWM0_CSGCLRG_CC2P_Msk \ - (0x400UL) /*!< HRPWM0 CSGCLRG: CC2P (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSGSTATG ------------------------------ */ -#define HRPWM0_CSGSTATG_D0RB_Pos \ - (0UL) /*!< HRPWM0 CSGSTATG: D0RB (Bit 0) */ -#define HRPWM0_CSGSTATG_D0RB_Msk \ - (0x1UL) /*!< HRPWM0 CSGSTATG: D0RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_C0RB_Pos \ - (1UL) /*!< HRPWM0 CSGSTATG: C0RB (Bit 1) */ -#define HRPWM0_CSGSTATG_C0RB_Msk \ - (0x2UL) /*!< HRPWM0 CSGSTATG: C0RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_PSLS0_Pos \ - (2UL) /*!< HRPWM0 CSGSTATG: PSLS0 (Bit 2) */ -#define HRPWM0_CSGSTATG_PSLS0_Msk \ - (0x4UL) /*!< HRPWM0 CSGSTATG: PSLS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_D1RB_Pos \ - (4UL) /*!< HRPWM0 CSGSTATG: D1RB (Bit 4) */ -#define HRPWM0_CSGSTATG_D1RB_Msk \ - (0x10UL) /*!< HRPWM0 CSGSTATG: D1RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_C1RB_Pos \ - (5UL) /*!< HRPWM0 CSGSTATG: C1RB (Bit 5) */ -#define HRPWM0_CSGSTATG_C1RB_Msk \ - (0x20UL) /*!< HRPWM0 CSGSTATG: C1RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_PSLS1_Pos \ - (6UL) /*!< HRPWM0 CSGSTATG: PSLS1 (Bit 6) */ -#define HRPWM0_CSGSTATG_PSLS1_Msk \ - (0x40UL) /*!< HRPWM0 CSGSTATG: PSLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_D2RB_Pos \ - (8UL) /*!< HRPWM0 CSGSTATG: D2RB (Bit 8) */ -#define HRPWM0_CSGSTATG_D2RB_Msk \ - (0x100UL) /*!< HRPWM0 CSGSTATG: D2RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_C2RB_Pos \ - (9UL) /*!< HRPWM0 CSGSTATG: C2RB (Bit 9) */ -#define HRPWM0_CSGSTATG_C2RB_Msk \ - (0x200UL) /*!< HRPWM0 CSGSTATG: C2RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_PSLS2_Pos \ - (10UL) /*!< HRPWM0 CSGSTATG: PSLS2 (Bit 10) */ -#define HRPWM0_CSGSTATG_PSLS2_Msk \ - (0x400UL) /*!< HRPWM0 CSGSTATG: PSLS2 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGFCG ------------------------------- */ -#define HRPWM0_CSGFCG_S0STR_Pos \ - (0UL) /*!< HRPWM0 CSGFCG: S0STR (Bit 0) */ -#define HRPWM0_CSGFCG_S0STR_Msk \ - (0x1UL) /*!< HRPWM0 CSGFCG: S0STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S0STP_Pos \ - (1UL) /*!< HRPWM0 CSGFCG: S0STP (Bit 1) */ -#define HRPWM0_CSGFCG_S0STP_Msk \ - (0x2UL) /*!< HRPWM0 CSGFCG: S0STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS0STR_Pos \ - (2UL) /*!< HRPWM0 CSGFCG: PS0STR (Bit 2) */ -#define HRPWM0_CSGFCG_PS0STR_Msk \ - (0x4UL) /*!< HRPWM0 CSGFCG: PS0STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS0STP_Pos \ - (3UL) /*!< HRPWM0 CSGFCG: PS0STP (Bit 3) */ -#define HRPWM0_CSGFCG_PS0STP_Msk \ - (0x8UL) /*!< HRPWM0 CSGFCG: PS0STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS0CLR_Pos \ - (4UL) /*!< HRPWM0 CSGFCG: PS0CLR (Bit 4) */ -#define HRPWM0_CSGFCG_PS0CLR_Msk \ - (0x10UL) /*!< HRPWM0 CSGFCG: PS0CLR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S1STR_Pos \ - (8UL) /*!< HRPWM0 CSGFCG: S1STR (Bit 8) */ -#define HRPWM0_CSGFCG_S1STR_Msk \ - (0x100UL) /*!< HRPWM0 CSGFCG: S1STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S1STP_Pos \ - (9UL) /*!< HRPWM0 CSGFCG: S1STP (Bit 9) */ -#define HRPWM0_CSGFCG_S1STP_Msk \ - (0x200UL) /*!< HRPWM0 CSGFCG: S1STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS1STR_Pos \ - (10UL) /*!< HRPWM0 CSGFCG: PS1STR (Bit 10) */ -#define HRPWM0_CSGFCG_PS1STR_Msk \ - (0x400UL) /*!< HRPWM0 CSGFCG: PS1STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS1STP_Pos \ - (11UL) /*!< HRPWM0 CSGFCG: PS1STP (Bit 11) */ -#define HRPWM0_CSGFCG_PS1STP_Msk \ - (0x800UL) /*!< HRPWM0 CSGFCG: PS1STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS1CLR_Pos \ - (12UL) /*!< HRPWM0 CSGFCG: PS1CLR (Bit 12) */ -#define HRPWM0_CSGFCG_PS1CLR_Msk \ - (0x1000UL) /*!< HRPWM0 CSGFCG: PS1CLR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S2STR_Pos \ - (16UL) /*!< HRPWM0 CSGFCG: S2STR (Bit 16) */ -#define HRPWM0_CSGFCG_S2STR_Msk \ - (0x10000UL) /*!< HRPWM0 CSGFCG: S2STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S2STP_Pos \ - (17UL) /*!< HRPWM0 CSGFCG: S2STP (Bit 17) */ -#define HRPWM0_CSGFCG_S2STP_Msk \ - (0x20000UL) /*!< HRPWM0 CSGFCG: S2STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS2STR_Pos \ - (18UL) /*!< HRPWM0 CSGFCG: PS2STR (Bit 18) */ -#define HRPWM0_CSGFCG_PS2STR_Msk \ - (0x40000UL) /*!< HRPWM0 CSGFCG: PS2STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS2STP_Pos \ - (19UL) /*!< HRPWM0 CSGFCG: PS2STP (Bit 19) */ -#define HRPWM0_CSGFCG_PS2STP_Msk \ - (0x80000UL) /*!< HRPWM0 CSGFCG: PS2STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS2CLR_Pos \ - (20UL) /*!< HRPWM0 CSGFCG: PS2CLR (Bit 20) */ -#define HRPWM0_CSGFCG_PS2CLR_Msk \ - (0x100000UL) /*!< HRPWM0 CSGFCG: PS2CLR (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGFSG ------------------------------- */ -#define HRPWM0_CSGFSG_S0RB_Pos \ - (0UL) /*!< HRPWM0 CSGFSG: S0RB (Bit 0) */ -#define HRPWM0_CSGFSG_S0RB_Msk \ - (0x1UL) /*!< HRPWM0 CSGFSG: S0RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_P0RB_Pos \ - (1UL) /*!< HRPWM0 CSGFSG: P0RB (Bit 1) */ -#define HRPWM0_CSGFSG_P0RB_Msk \ - (0x2UL) /*!< HRPWM0 CSGFSG: P0RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_S1RB_Pos \ - (8UL) /*!< HRPWM0 CSGFSG: S1RB (Bit 8) */ -#define HRPWM0_CSGFSG_S1RB_Msk \ - (0x100UL) /*!< HRPWM0 CSGFSG: S1RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_P1RB_Pos \ - (9UL) /*!< HRPWM0 CSGFSG: P1RB (Bit 9) */ -#define HRPWM0_CSGFSG_P1RB_Msk \ - (0x200UL) /*!< HRPWM0 CSGFSG: P1RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_S2RB_Pos \ - (16UL) /*!< HRPWM0 CSGFSG: S2RB (Bit 16) */ -#define HRPWM0_CSGFSG_S2RB_Msk \ - (0x10000UL) /*!< HRPWM0 CSGFSG: S2RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_P2RB_Pos \ - (17UL) /*!< HRPWM0 CSGFSG: P2RB (Bit 17) */ -#define HRPWM0_CSGFSG_P2RB_Msk \ - (0x20000UL) /*!< HRPWM0 CSGFSG: P2RB (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGTRG ------------------------------- */ -#define HRPWM0_CSGTRG_D0SES_Pos \ - (0UL) /*!< HRPWM0 CSGTRG: D0SES (Bit 0) */ -#define HRPWM0_CSGTRG_D0SES_Msk \ - (0x1UL) /*!< HRPWM0 CSGTRG: D0SES (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D0SVS_Pos \ - (1UL) /*!< HRPWM0 CSGTRG: D0SVS (Bit 1) */ -#define HRPWM0_CSGTRG_D0SVS_Msk \ - (0x2UL) /*!< HRPWM0 CSGTRG: D0SVS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D1SES_Pos \ - (4UL) /*!< HRPWM0 CSGTRG: D1SES (Bit 4) */ -#define HRPWM0_CSGTRG_D1SES_Msk \ - (0x10UL) /*!< HRPWM0 CSGTRG: D1SES (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D1SVS_Pos \ - (5UL) /*!< HRPWM0 CSGTRG: D1SVS (Bit 5) */ -#define HRPWM0_CSGTRG_D1SVS_Msk \ - (0x20UL) /*!< HRPWM0 CSGTRG: D1SVS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D2SES_Pos \ - (8UL) /*!< HRPWM0 CSGTRG: D2SES (Bit 8) */ -#define HRPWM0_CSGTRG_D2SES_Msk \ - (0x100UL) /*!< HRPWM0 CSGTRG: D2SES (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D2SVS_Pos \ - (9UL) /*!< HRPWM0 CSGTRG: D2SVS (Bit 9) */ -#define HRPWM0_CSGTRG_D2SVS_Msk \ - (0x200UL) /*!< HRPWM0 CSGTRG: D2SVS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGTRC ------------------------------- */ -#define HRPWM0_CSGTRC_D0SEC_Pos \ - (0UL) /*!< HRPWM0 CSGTRC: D0SEC (Bit 0) */ -#define HRPWM0_CSGTRC_D0SEC_Msk \ - (0x1UL) /*!< HRPWM0 CSGTRC: D0SEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRC_D1SEC_Pos \ - (4UL) /*!< HRPWM0 CSGTRC: D1SEC (Bit 4) */ -#define HRPWM0_CSGTRC_D1SEC_Msk \ - (0x10UL) /*!< HRPWM0 CSGTRC: D1SEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRC_D2SEC_Pos \ - (8UL) /*!< HRPWM0 CSGTRC: D2SEC (Bit 8) */ -#define HRPWM0_CSGTRC_D2SEC_Msk \ - (0x100UL) /*!< HRPWM0 CSGTRC: D2SEC (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSGTRSG ------------------------------- */ -#define HRPWM0_CSGTRSG_D0STE_Pos \ - (0UL) /*!< HRPWM0 CSGTRSG: D0STE (Bit 0) */ -#define HRPWM0_CSGTRSG_D0STE_Msk \ - (0x1UL) /*!< HRPWM0 CSGTRSG: D0STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_SW0ST_Pos \ - (1UL) /*!< HRPWM0 CSGTRSG: SW0ST (Bit 1) */ -#define HRPWM0_CSGTRSG_SW0ST_Msk \ - (0x2UL) /*!< HRPWM0 CSGTRSG: SW0ST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_D1STE_Pos \ - (4UL) /*!< HRPWM0 CSGTRSG: D1STE (Bit 4) */ -#define HRPWM0_CSGTRSG_D1STE_Msk \ - (0x10UL) /*!< HRPWM0 CSGTRSG: D1STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_SW1ST_Pos \ - (5UL) /*!< HRPWM0 CSGTRSG: SW1ST (Bit 5) */ -#define HRPWM0_CSGTRSG_SW1ST_Msk \ - (0x20UL) /*!< HRPWM0 CSGTRSG: SW1ST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_D2STE_Pos \ - (8UL) /*!< HRPWM0 CSGTRSG: D2STE (Bit 8) */ -#define HRPWM0_CSGTRSG_D2STE_Msk \ - (0x100UL) /*!< HRPWM0 CSGTRSG: D2STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_SW2ST_Pos \ - (9UL) /*!< HRPWM0 CSGTRSG: SW2ST (Bit 9) */ -#define HRPWM0_CSGTRSG_SW2ST_Msk \ - (0x200UL) /*!< HRPWM0 CSGTRSG: SW2ST (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_HRCCFG ------------------------------- */ -#define HRPWM0_HRCCFG_HRCPM_Pos \ - (0UL) /*!< HRPWM0 HRCCFG: HRCPM (Bit 0) */ -#define HRPWM0_HRCCFG_HRCPM_Msk \ - (0x1UL) /*!< HRPWM0 HRCCFG: HRCPM (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_HRC0E_Pos \ - (4UL) /*!< HRPWM0 HRCCFG: HRC0E (Bit 4) */ -#define HRPWM0_HRCCFG_HRC0E_Msk \ - (0x10UL) /*!< HRPWM0 HRCCFG: HRC0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_HRC1E_Pos \ - (5UL) /*!< HRPWM0 HRCCFG: HRC1E (Bit 5) */ -#define HRPWM0_HRCCFG_HRC1E_Msk \ - (0x20UL) /*!< HRPWM0 HRCCFG: HRC1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_HRC2E_Pos \ - (6UL) /*!< HRPWM0 HRCCFG: HRC2E (Bit 6) */ -#define HRPWM0_HRCCFG_HRC2E_Msk \ - (0x40UL) /*!< HRPWM0 HRCCFG: HRC2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_HRC3E_Pos \ - (7UL) /*!< HRPWM0 HRCCFG: HRC3E (Bit 7) */ -#define HRPWM0_HRCCFG_HRC3E_Msk \ - (0x80UL) /*!< HRPWM0 HRCCFG: HRC3E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_CLKC_Pos \ - (16UL) /*!< HRPWM0 HRCCFG: CLKC (Bit 16) */ -#define HRPWM0_HRCCFG_CLKC_Msk \ - (0x70000UL) /*!< HRPWM0 HRCCFG: CLKC (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRCCFG_LRC0E_Pos \ - (20UL) /*!< HRPWM0 HRCCFG: LRC0E (Bit 20) */ -#define HRPWM0_HRCCFG_LRC0E_Msk \ - (0x100000UL) /*!< HRPWM0 HRCCFG: LRC0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_LRC1E_Pos \ - (21UL) /*!< HRPWM0 HRCCFG: LRC1E (Bit 21) */ -#define HRPWM0_HRCCFG_LRC1E_Msk \ - (0x200000UL) /*!< HRPWM0 HRCCFG: LRC1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_LRC2E_Pos \ - (22UL) /*!< HRPWM0 HRCCFG: LRC2E (Bit 22) */ -#define HRPWM0_HRCCFG_LRC2E_Msk \ - (0x400000UL) /*!< HRPWM0 HRCCFG: LRC2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_LRC3E_Pos \ - (23UL) /*!< HRPWM0 HRCCFG: LRC3E (Bit 23) */ -#define HRPWM0_HRCCFG_LRC3E_Msk \ - (0x800000UL) /*!< HRPWM0 HRCCFG: LRC3E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRCSTRG ------------------------------- */ -#define HRPWM0_HRCSTRG_H0ES_Pos \ - (0UL) /*!< HRPWM0 HRCSTRG: H0ES (Bit 0) */ -#define HRPWM0_HRCSTRG_H0ES_Msk \ - (0x1UL) /*!< HRPWM0 HRCSTRG: H0ES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H0DES_Pos \ - (1UL) /*!< HRPWM0 HRCSTRG: H0DES (Bit 1) */ -#define HRPWM0_HRCSTRG_H0DES_Msk \ - (0x2UL) /*!< HRPWM0 HRCSTRG: H0DES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H1ES_Pos \ - (4UL) /*!< HRPWM0 HRCSTRG: H1ES (Bit 4) */ -#define HRPWM0_HRCSTRG_H1ES_Msk \ - (0x10UL) /*!< HRPWM0 HRCSTRG: H1ES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H1DES_Pos \ - (5UL) /*!< HRPWM0 HRCSTRG: H1DES (Bit 5) */ -#define HRPWM0_HRCSTRG_H1DES_Msk \ - (0x20UL) /*!< HRPWM0 HRCSTRG: H1DES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H2ES_Pos \ - (8UL) /*!< HRPWM0 HRCSTRG: H2ES (Bit 8) */ -#define HRPWM0_HRCSTRG_H2ES_Msk \ - (0x100UL) /*!< HRPWM0 HRCSTRG: H2ES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H2DES_Pos \ - (9UL) /*!< HRPWM0 HRCSTRG: H2DES (Bit 9) */ -#define HRPWM0_HRCSTRG_H2DES_Msk \ - (0x200UL) /*!< HRPWM0 HRCSTRG: H2DES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H3ES_Pos \ - (12UL) /*!< HRPWM0 HRCSTRG: H3ES (Bit 12) */ -#define HRPWM0_HRCSTRG_H3ES_Msk \ - (0x1000UL) /*!< HRPWM0 HRCSTRG: H3ES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H3DES_Pos \ - (13UL) /*!< HRPWM0 HRCSTRG: H3DES (Bit 13) */ -#define HRPWM0_HRCSTRG_H3DES_Msk \ - (0x2000UL) /*!< HRPWM0 HRCSTRG: H3DES (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRCCTRG ------------------------------- */ -#define HRPWM0_HRCCTRG_H0EC_Pos \ - (0UL) /*!< HRPWM0 HRCCTRG: H0EC (Bit 0) */ -#define HRPWM0_HRCCTRG_H0EC_Msk \ - (0x1UL) /*!< HRPWM0 HRCCTRG: H0EC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H0DEC_Pos \ - (1UL) /*!< HRPWM0 HRCCTRG: H0DEC (Bit 1) */ -#define HRPWM0_HRCCTRG_H0DEC_Msk \ - (0x2UL) /*!< HRPWM0 HRCCTRG: H0DEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H1EC_Pos \ - (4UL) /*!< HRPWM0 HRCCTRG: H1EC (Bit 4) */ -#define HRPWM0_HRCCTRG_H1EC_Msk \ - (0x10UL) /*!< HRPWM0 HRCCTRG: H1EC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H1DEC_Pos \ - (5UL) /*!< HRPWM0 HRCCTRG: H1DEC (Bit 5) */ -#define HRPWM0_HRCCTRG_H1DEC_Msk \ - (0x20UL) /*!< HRPWM0 HRCCTRG: H1DEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H2CEC_Pos \ - (8UL) /*!< HRPWM0 HRCCTRG: H2CEC (Bit 8) */ -#define HRPWM0_HRCCTRG_H2CEC_Msk \ - (0x100UL) /*!< HRPWM0 HRCCTRG: H2CEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H2DEC_Pos \ - (9UL) /*!< HRPWM0 HRCCTRG: H2DEC (Bit 9) */ -#define HRPWM0_HRCCTRG_H2DEC_Msk \ - (0x200UL) /*!< HRPWM0 HRCCTRG: H2DEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H3EC_Pos \ - (12UL) /*!< HRPWM0 HRCCTRG: H3EC (Bit 12) */ -#define HRPWM0_HRCCTRG_H3EC_Msk \ - (0x1000UL) /*!< HRPWM0 HRCCTRG: H3EC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H3DEC_Pos \ - (13UL) /*!< HRPWM0 HRCCTRG: H3DEC (Bit 13) */ -#define HRPWM0_HRCCTRG_H3DEC_Msk \ - (0x2000UL) /*!< HRPWM0 HRCCTRG: H3DEC (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRCSTSG ------------------------------- */ -#define HRPWM0_HRCSTSG_H0STE_Pos \ - (0UL) /*!< HRPWM0 HRCSTSG: H0STE (Bit 0) */ -#define HRPWM0_HRCSTSG_H0STE_Msk \ - (0x1UL) /*!< HRPWM0 HRCSTSG: H0STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H0DSTE_Pos \ - (1UL) /*!< HRPWM0 HRCSTSG: H0DSTE (Bit 1) */ -#define HRPWM0_HRCSTSG_H0DSTE_Msk \ - (0x2UL) /*!< HRPWM0 HRCSTSG: H0DSTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H1STE_Pos \ - (4UL) /*!< HRPWM0 HRCSTSG: H1STE (Bit 4) */ -#define HRPWM0_HRCSTSG_H1STE_Msk \ - (0x10UL) /*!< HRPWM0 HRCSTSG: H1STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H1DSTE_Pos \ - (5UL) /*!< HRPWM0 HRCSTSG: H1DSTE (Bit 5) */ -#define HRPWM0_HRCSTSG_H1DSTE_Msk \ - (0x20UL) /*!< HRPWM0 HRCSTSG: H1DSTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H2STE_Pos \ - (8UL) /*!< HRPWM0 HRCSTSG: H2STE (Bit 8) */ -#define HRPWM0_HRCSTSG_H2STE_Msk \ - (0x100UL) /*!< HRPWM0 HRCSTSG: H2STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H2DSTE_Pos \ - (9UL) /*!< HRPWM0 HRCSTSG: H2DSTE (Bit 9) */ -#define HRPWM0_HRCSTSG_H2DSTE_Msk \ - (0x200UL) /*!< HRPWM0 HRCSTSG: H2DSTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H3STE_Pos \ - (12UL) /*!< HRPWM0 HRCSTSG: H3STE (Bit 12) */ -#define HRPWM0_HRCSTSG_H3STE_Msk \ - (0x1000UL) /*!< HRPWM0 HRCSTSG: H3STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H3DSTE_Pos \ - (13UL) /*!< HRPWM0 HRCSTSG: H3DSTE (Bit 13) */ -#define HRPWM0_HRCSTSG_H3DSTE_Msk \ - (0x2000UL) /*!< HRPWM0 HRCSTSG: H3DSTE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_HRGHRS ------------------------------- */ -#define HRPWM0_HRGHRS_HRGR_Pos \ - (0UL) /*!< HRPWM0 HRGHRS: HRGR (Bit 0) */ -#define HRPWM0_HRGHRS_HRGR_Msk \ - (0x1UL) /*!< HRPWM0 HRGHRS: HRGR (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'HRPWM0_CSG' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_CSG_DCI ------------------------------- */ -#define HRPWM0_CSG_DCI_SVIS_Pos \ - (0UL) /*!< HRPWM0_CSG DCI: SVIS (Bit 0) */ -#define HRPWM0_CSG_DCI_SVIS_Msk \ - (0xfUL) /*!< HRPWM0_CSG DCI: SVIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_STRIS_Pos \ - (4UL) /*!< HRPWM0_CSG DCI: STRIS (Bit 4) */ -#define HRPWM0_CSG_DCI_STRIS_Msk \ - (0xf0UL) /*!< HRPWM0_CSG DCI: STRIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_STPIS_Pos \ - (8UL) /*!< HRPWM0_CSG DCI: STPIS (Bit 8) */ -#define HRPWM0_CSG_DCI_STPIS_Msk \ - (0xf00UL) /*!< HRPWM0_CSG DCI: STPIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_TRGIS_Pos \ - (12UL) /*!< HRPWM0_CSG DCI: TRGIS (Bit 12) */ -#define HRPWM0_CSG_DCI_TRGIS_Msk \ - (0xf000UL) /*!< HRPWM0_CSG DCI: TRGIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_STIS_Pos \ - (16UL) /*!< HRPWM0_CSG DCI: STIS (Bit 16) */ -#define HRPWM0_CSG_DCI_STIS_Msk \ - (0xf0000UL) /*!< HRPWM0_CSG DCI: STIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_SCS_Pos \ - (20UL) /*!< HRPWM0_CSG DCI: SCS (Bit 20) */ -#define HRPWM0_CSG_DCI_SCS_Msk \ - (0x300000UL) /*!< HRPWM0_CSG DCI: SCS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG_IES ------------------------------- */ -#define HRPWM0_CSG_IES_SVLS_Pos \ - (0UL) /*!< HRPWM0_CSG IES: SVLS (Bit 0) */ -#define HRPWM0_CSG_IES_SVLS_Msk \ - (0x3UL) /*!< HRPWM0_CSG IES: SVLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_IES_STRES_Pos \ - (2UL) /*!< HRPWM0_CSG IES: STRES (Bit 2) */ -#define HRPWM0_CSG_IES_STRES_Msk \ - (0xcUL) /*!< HRPWM0_CSG IES: STRES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_IES_STPES_Pos \ - (4UL) /*!< HRPWM0_CSG IES: STPES (Bit 4) */ -#define HRPWM0_CSG_IES_STPES_Msk \ - (0x30UL) /*!< HRPWM0_CSG IES: STPES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_IES_TRGES_Pos \ - (6UL) /*!< HRPWM0_CSG IES: TRGES (Bit 6) */ -#define HRPWM0_CSG_IES_TRGES_Msk \ - (0xc0UL) /*!< HRPWM0_CSG IES: TRGES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_IES_STES_Pos \ - (8UL) /*!< HRPWM0_CSG IES: STES (Bit 8) */ -#define HRPWM0_CSG_IES_STES_Msk \ - (0x300UL) /*!< HRPWM0_CSG IES: STES (Bitfield-Mask: 0x03) */ - -/* -------------------------------- HRPWM0_CSG_SC ------------------------------- */ -#define HRPWM0_CSG_SC_PSRM_Pos \ - (0UL) /*!< HRPWM0_CSG SC: PSRM (Bit 0) */ -#define HRPWM0_CSG_SC_PSRM_Msk \ - (0x3UL) /*!< HRPWM0_CSG SC: PSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_PSTM_Pos \ - (2UL) /*!< HRPWM0_CSG SC: PSTM (Bit 2) */ -#define HRPWM0_CSG_SC_PSTM_Msk \ - (0xcUL) /*!< HRPWM0_CSG SC: PSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_FPD_Pos \ - (4UL) /*!< HRPWM0_CSG SC: FPD (Bit 4) */ -#define HRPWM0_CSG_SC_FPD_Msk \ - (0x10UL) /*!< HRPWM0_CSG SC: FPD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SC_PSV_Pos \ - (5UL) /*!< HRPWM0_CSG SC: PSV (Bit 5) */ -#define HRPWM0_CSG_SC_PSV_Msk \ - (0x60UL) /*!< HRPWM0_CSG SC: PSV (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SCM_Pos \ - (8UL) /*!< HRPWM0_CSG SC: SCM (Bit 8) */ -#define HRPWM0_CSG_SC_SCM_Msk \ - (0x300UL) /*!< HRPWM0_CSG SC: SCM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SSRM_Pos \ - (10UL) /*!< HRPWM0_CSG SC: SSRM (Bit 10) */ -#define HRPWM0_CSG_SC_SSRM_Msk \ - (0xc00UL) /*!< HRPWM0_CSG SC: SSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SSTM_Pos \ - (12UL) /*!< HRPWM0_CSG SC: SSTM (Bit 12) */ -#define HRPWM0_CSG_SC_SSTM_Msk \ - (0x3000UL) /*!< HRPWM0_CSG SC: SSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SVSC_Pos \ - (14UL) /*!< HRPWM0_CSG SC: SVSC (Bit 14) */ -#define HRPWM0_CSG_SC_SVSC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG SC: SVSC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SWSM_Pos \ - (16UL) /*!< HRPWM0_CSG SC: SWSM (Bit 16) */ -#define HRPWM0_CSG_SC_SWSM_Msk \ - (0x30000UL) /*!< HRPWM0_CSG SC: SWSM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_GCFG_Pos \ - (18UL) /*!< HRPWM0_CSG SC: GCFG (Bit 18) */ -#define HRPWM0_CSG_SC_GCFG_Msk \ - (0xc0000UL) /*!< HRPWM0_CSG SC: GCFG (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_IST_Pos \ - (20UL) /*!< HRPWM0_CSG SC: IST (Bit 20) */ -#define HRPWM0_CSG_SC_IST_Msk \ - (0x100000UL) /*!< HRPWM0_CSG SC: IST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SC_PSE_Pos \ - (21UL) /*!< HRPWM0_CSG SC: PSE (Bit 21) */ -#define HRPWM0_CSG_SC_PSE_Msk \ - (0x200000UL) /*!< HRPWM0_CSG SC: PSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SC_PSWM_Pos \ - (24UL) /*!< HRPWM0_CSG SC: PSWM (Bit 24) */ -#define HRPWM0_CSG_SC_PSWM_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG SC: PSWM (Bitfield-Mask: 0x03) */ - -/* -------------------------------- HRPWM0_CSG_PC ------------------------------- */ -#define HRPWM0_CSG_PC_PSWV_Pos \ - (0UL) /*!< HRPWM0_CSG PC: PSWV (Bit 0) */ -#define HRPWM0_CSG_PC_PSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG PC: PSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- HRPWM0_CSG_DSV1 ------------------------------ */ -#define HRPWM0_CSG_DSV1_DSV1_Pos \ - (0UL) /*!< HRPWM0_CSG DSV1: DSV1 (Bit 0) */ -#define HRPWM0_CSG_DSV1_DSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG DSV1: DSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG_DSV2 ------------------------------ */ -#define HRPWM0_CSG_DSV2_DSV2_Pos \ - (0UL) /*!< HRPWM0_CSG DSV2: DSV2 (Bit 0) */ -#define HRPWM0_CSG_DSV2_DSV2_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG DSV2: DSV2 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG_SDSV1 ------------------------------ */ -#define HRPWM0_CSG_SDSV1_SDSV1_Pos \ - (0UL) /*!< HRPWM0_CSG SDSV1: SDSV1 (Bit 0) */ -#define HRPWM0_CSG_SDSV1_SDSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG SDSV1: SDSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG_SPC ------------------------------- */ -#define HRPWM0_CSG_SPC_SPSWV_Pos \ - (0UL) /*!< HRPWM0_CSG SPC: SPSWV (Bit 0) */ -#define HRPWM0_CSG_SPC_SPSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG SPC: SPSWV (Bitfield-Mask: 0x3f) */ - -/* -------------------------------- HRPWM0_CSG_CC ------------------------------- */ -#define HRPWM0_CSG_CC_IBS_Pos \ - (0UL) /*!< HRPWM0_CSG CC: IBS (Bit 0) */ -#define HRPWM0_CSG_CC_IBS_Msk \ - (0xfUL) /*!< HRPWM0_CSG CC: IBS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_CC_IMCS_Pos \ - (8UL) /*!< HRPWM0_CSG CC: IMCS (Bit 8) */ -#define HRPWM0_CSG_CC_IMCS_Msk \ - (0x100UL) /*!< HRPWM0_CSG CC: IMCS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_IMCC_Pos \ - (9UL) /*!< HRPWM0_CSG CC: IMCC (Bit 9) */ -#define HRPWM0_CSG_CC_IMCC_Msk \ - (0x600UL) /*!< HRPWM0_CSG CC: IMCC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_CC_ESE_Pos \ - (11UL) /*!< HRPWM0_CSG CC: ESE (Bit 11) */ -#define HRPWM0_CSG_CC_ESE_Msk \ - (0x800UL) /*!< HRPWM0_CSG CC: ESE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_OIE_Pos \ - (12UL) /*!< HRPWM0_CSG CC: OIE (Bit 12) */ -#define HRPWM0_CSG_CC_OIE_Msk \ - (0x1000UL) /*!< HRPWM0_CSG CC: OIE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_OSE_Pos \ - (13UL) /*!< HRPWM0_CSG CC: OSE (Bit 13) */ -#define HRPWM0_CSG_CC_OSE_Msk \ - (0x2000UL) /*!< HRPWM0_CSG CC: OSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_BLMC_Pos \ - (14UL) /*!< HRPWM0_CSG CC: BLMC (Bit 14) */ -#define HRPWM0_CSG_CC_BLMC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG CC: BLMC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_CC_EBE_Pos \ - (16UL) /*!< HRPWM0_CSG CC: EBE (Bit 16) */ -#define HRPWM0_CSG_CC_EBE_Msk \ - (0x10000UL) /*!< HRPWM0_CSG CC: EBE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_COFE_Pos \ - (17UL) /*!< HRPWM0_CSG CC: COFE (Bit 17) */ -#define HRPWM0_CSG_CC_COFE_Msk \ - (0x20000UL) /*!< HRPWM0_CSG CC: COFE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_COFM_Pos \ - (18UL) /*!< HRPWM0_CSG CC: COFM (Bit 18) */ -#define HRPWM0_CSG_CC_COFM_Msk \ - (0x3c0000UL) /*!< HRPWM0_CSG CC: COFM (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_CC_COFC_Pos \ - (24UL) /*!< HRPWM0_CSG CC: COFC (Bit 24) */ -#define HRPWM0_CSG_CC_COFC_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG CC: COFC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG_PLC ------------------------------- */ -#define HRPWM0_CSG_PLC_IPLS_Pos \ - (0UL) /*!< HRPWM0_CSG PLC: IPLS (Bit 0) */ -#define HRPWM0_CSG_PLC_IPLS_Msk \ - (0xfUL) /*!< HRPWM0_CSG PLC: IPLS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_PLC_PLCL_Pos \ - (8UL) /*!< HRPWM0_CSG PLC: PLCL (Bit 8) */ -#define HRPWM0_CSG_PLC_PLCL_Msk \ - (0x300UL) /*!< HRPWM0_CSG PLC: PLCL (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_PLC_PSL_Pos \ - (10UL) /*!< HRPWM0_CSG PLC: PSL (Bit 10) */ -#define HRPWM0_CSG_PLC_PSL_Msk \ - (0x400UL) /*!< HRPWM0_CSG PLC: PSL (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_PLC_PLSW_Pos \ - (11UL) /*!< HRPWM0_CSG PLC: PLSW (Bit 11) */ -#define HRPWM0_CSG_PLC_PLSW_Msk \ - (0x800UL) /*!< HRPWM0_CSG PLC: PLSW (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_PLC_PLEC_Pos \ - (12UL) /*!< HRPWM0_CSG PLC: PLEC (Bit 12) */ -#define HRPWM0_CSG_PLC_PLEC_Msk \ - (0x3000UL) /*!< HRPWM0_CSG PLC: PLEC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_PLC_PLXC_Pos \ - (14UL) /*!< HRPWM0_CSG PLC: PLXC (Bit 14) */ -#define HRPWM0_CSG_PLC_PLXC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG PLC: PLXC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG_BLV ------------------------------- */ -#define HRPWM0_CSG_BLV_BLV_Pos \ - (0UL) /*!< HRPWM0_CSG BLV: BLV (Bit 0) */ -#define HRPWM0_CSG_BLV_BLV_Msk \ - (0xffUL) /*!< HRPWM0_CSG BLV: BLV (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_CSG_SRE ------------------------------- */ -#define HRPWM0_CSG_SRE_VLS1E_Pos \ - (0UL) /*!< HRPWM0_CSG SRE: VLS1E (Bit 0) */ -#define HRPWM0_CSG_SRE_VLS1E_Msk \ - (0x1UL) /*!< HRPWM0_CSG SRE: VLS1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_VLS2E_Pos \ - (1UL) /*!< HRPWM0_CSG SRE: VLS2E (Bit 1) */ -#define HRPWM0_CSG_SRE_VLS2E_Msk \ - (0x2UL) /*!< HRPWM0_CSG SRE: VLS2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_TRGSE_Pos \ - (2UL) /*!< HRPWM0_CSG SRE: TRGSE (Bit 2) */ -#define HRPWM0_CSG_SRE_TRGSE_Msk \ - (0x4UL) /*!< HRPWM0_CSG SRE: TRGSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_STRSE_Pos \ - (3UL) /*!< HRPWM0_CSG SRE: STRSE (Bit 3) */ -#define HRPWM0_CSG_SRE_STRSE_Msk \ - (0x8UL) /*!< HRPWM0_CSG SRE: STRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_STPSE_Pos \ - (4UL) /*!< HRPWM0_CSG SRE: STPSE (Bit 4) */ -#define HRPWM0_CSG_SRE_STPSE_Msk \ - (0x10UL) /*!< HRPWM0_CSG SRE: STPSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_STDE_Pos \ - (5UL) /*!< HRPWM0_CSG SRE: STDE (Bit 5) */ -#define HRPWM0_CSG_SRE_STDE_Msk \ - (0x20UL) /*!< HRPWM0_CSG SRE: STDE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_CRSE_Pos \ - (6UL) /*!< HRPWM0_CSG SRE: CRSE (Bit 6) */ -#define HRPWM0_CSG_SRE_CRSE_Msk \ - (0x40UL) /*!< HRPWM0_CSG SRE: CRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_CFSE_Pos \ - (7UL) /*!< HRPWM0_CSG SRE: CFSE (Bit 7) */ -#define HRPWM0_CSG_SRE_CFSE_Msk \ - (0x80UL) /*!< HRPWM0_CSG SRE: CFSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_CSEE_Pos \ - (8UL) /*!< HRPWM0_CSG SRE: CSEE (Bit 8) */ -#define HRPWM0_CSG_SRE_CSEE_Msk \ - (0x100UL) /*!< HRPWM0_CSG SRE: CSEE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG_SRS ------------------------------- */ -#define HRPWM0_CSG_SRS_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG SRS: VLS1S (Bit 0) */ -#define HRPWM0_CSG_SRS_VLS1S_Msk \ - (0x3UL) /*!< HRPWM0_CSG SRS: VLS1S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_VLS2S_Pos \ - (2UL) /*!< HRPWM0_CSG SRS: VLS2S (Bit 2) */ -#define HRPWM0_CSG_SRS_VLS2S_Msk \ - (0xcUL) /*!< HRPWM0_CSG SRS: VLS2S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_TRLS_Pos \ - (4UL) /*!< HRPWM0_CSG SRS: TRLS (Bit 4) */ -#define HRPWM0_CSG_SRS_TRLS_Msk \ - (0x30UL) /*!< HRPWM0_CSG SRS: TRLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_SSLS_Pos \ - (6UL) /*!< HRPWM0_CSG SRS: SSLS (Bit 6) */ -#define HRPWM0_CSG_SRS_SSLS_Msk \ - (0xc0UL) /*!< HRPWM0_CSG SRS: SSLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_STLS_Pos \ - (8UL) /*!< HRPWM0_CSG SRS: STLS (Bit 8) */ -#define HRPWM0_CSG_SRS_STLS_Msk \ - (0x300UL) /*!< HRPWM0_CSG SRS: STLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_CRFLS_Pos \ - (10UL) /*!< HRPWM0_CSG SRS: CRFLS (Bit 10) */ -#define HRPWM0_CSG_SRS_CRFLS_Msk \ - (0xc00UL) /*!< HRPWM0_CSG SRS: CRFLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_CSLS_Pos \ - (12UL) /*!< HRPWM0_CSG SRS: CSLS (Bit 12) */ -#define HRPWM0_CSG_SRS_CSLS_Msk \ - (0x3000UL) /*!< HRPWM0_CSG SRS: CSLS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG_SWS ------------------------------- */ -#define HRPWM0_CSG_SWS_SVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG SWS: SVLS1 (Bit 0) */ -#define HRPWM0_CSG_SWS_SVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG SWS: SVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG SWS: SVLS2 (Bit 1) */ -#define HRPWM0_CSG_SWS_SVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG SWS: SVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_STRGS_Pos \ - (2UL) /*!< HRPWM0_CSG SWS: STRGS (Bit 2) */ -#define HRPWM0_CSG_SWS_STRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG SWS: STRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG SWS: SSTRS (Bit 3) */ -#define HRPWM0_CSG_SWS_SSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG SWS: SSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG SWS: SSTPS (Bit 4) */ -#define HRPWM0_CSG_SWS_SSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG SWS: SSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SSTD_Pos \ - (5UL) /*!< HRPWM0_CSG SWS: SSTD (Bit 5) */ -#define HRPWM0_CSG_SWS_SSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG SWS: SSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SCRS_Pos \ - (6UL) /*!< HRPWM0_CSG SWS: SCRS (Bit 6) */ -#define HRPWM0_CSG_SWS_SCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG SWS: SCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SCFS_Pos \ - (7UL) /*!< HRPWM0_CSG SWS: SCFS (Bit 7) */ -#define HRPWM0_CSG_SWS_SCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG SWS: SCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SCSS_Pos \ - (8UL) /*!< HRPWM0_CSG SWS: SCSS (Bit 8) */ -#define HRPWM0_CSG_SWS_SCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG SWS: SCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG_SWC ------------------------------- */ -#define HRPWM0_CSG_SWC_CVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG SWC: CVLS1 (Bit 0) */ -#define HRPWM0_CSG_SWC_CVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG SWC: CVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG SWC: CVLS2 (Bit 1) */ -#define HRPWM0_CSG_SWC_CVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG SWC: CVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CTRGS_Pos \ - (2UL) /*!< HRPWM0_CSG SWC: CTRGS (Bit 2) */ -#define HRPWM0_CSG_SWC_CTRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG SWC: CTRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG SWC: CSTRS (Bit 3) */ -#define HRPWM0_CSG_SWC_CSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG SWC: CSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG SWC: CSTPS (Bit 4) */ -#define HRPWM0_CSG_SWC_CSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG SWC: CSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CSTD_Pos \ - (5UL) /*!< HRPWM0_CSG SWC: CSTD (Bit 5) */ -#define HRPWM0_CSG_SWC_CSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG SWC: CSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CCRS_Pos \ - (6UL) /*!< HRPWM0_CSG SWC: CCRS (Bit 6) */ -#define HRPWM0_CSG_SWC_CCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG SWC: CCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CCFS_Pos \ - (7UL) /*!< HRPWM0_CSG SWC: CCFS (Bit 7) */ -#define HRPWM0_CSG_SWC_CCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG SWC: CCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CCSS_Pos \ - (8UL) /*!< HRPWM0_CSG SWC: CCSS (Bit 8) */ -#define HRPWM0_CSG_SWC_CCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG SWC: CCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_CSG_ISTAT ------------------------------ */ -#define HRPWM0_CSG_ISTAT_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG ISTAT: VLS1S (Bit 0) */ -#define HRPWM0_CSG_ISTAT_VLS1S_Msk \ - (0x1UL) /*!< HRPWM0_CSG ISTAT: VLS1S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_VLS2S_Pos \ - (1UL) /*!< HRPWM0_CSG ISTAT: VLS2S (Bit 1) */ -#define HRPWM0_CSG_ISTAT_VLS2S_Msk \ - (0x2UL) /*!< HRPWM0_CSG ISTAT: VLS2S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_TRGSS_Pos \ - (2UL) /*!< HRPWM0_CSG ISTAT: TRGSS (Bit 2) */ -#define HRPWM0_CSG_ISTAT_TRGSS_Msk \ - (0x4UL) /*!< HRPWM0_CSG ISTAT: TRGSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_STRSS_Pos \ - (3UL) /*!< HRPWM0_CSG ISTAT: STRSS (Bit 3) */ -#define HRPWM0_CSG_ISTAT_STRSS_Msk \ - (0x8UL) /*!< HRPWM0_CSG ISTAT: STRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_STPSS_Pos \ - (4UL) /*!< HRPWM0_CSG ISTAT: STPSS (Bit 4) */ -#define HRPWM0_CSG_ISTAT_STPSS_Msk \ - (0x10UL) /*!< HRPWM0_CSG ISTAT: STPSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_STDS_Pos \ - (5UL) /*!< HRPWM0_CSG ISTAT: STDS (Bit 5) */ -#define HRPWM0_CSG_ISTAT_STDS_Msk \ - (0x20UL) /*!< HRPWM0_CSG ISTAT: STDS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_CRSS_Pos \ - (6UL) /*!< HRPWM0_CSG ISTAT: CRSS (Bit 6) */ -#define HRPWM0_CSG_ISTAT_CRSS_Msk \ - (0x40UL) /*!< HRPWM0_CSG ISTAT: CRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_CFSS_Pos \ - (7UL) /*!< HRPWM0_CSG ISTAT: CFSS (Bit 7) */ -#define HRPWM0_CSG_ISTAT_CFSS_Msk \ - (0x80UL) /*!< HRPWM0_CSG ISTAT: CFSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_CSES_Pos \ - (8UL) /*!< HRPWM0_CSG ISTAT: CSES (Bit 8) */ -#define HRPWM0_CSG_ISTAT_CSES_Msk \ - (0x100UL) /*!< HRPWM0_CSG ISTAT: CSES (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_CSG0' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_CSG0_DCI ------------------------------ */ -#define HRPWM0_CSG0_DCI_SVIS_Pos \ - (0UL) /*!< HRPWM0_CSG0 DCI: SVIS (Bit 0) */ -#define HRPWM0_CSG0_DCI_SVIS_Msk \ - (0xfUL) /*!< HRPWM0_CSG0 DCI: SVIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_STRIS_Pos \ - (4UL) /*!< HRPWM0_CSG0 DCI: STRIS (Bit 4) */ -#define HRPWM0_CSG0_DCI_STRIS_Msk \ - (0xf0UL) /*!< HRPWM0_CSG0 DCI: STRIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_STPIS_Pos \ - (8UL) /*!< HRPWM0_CSG0 DCI: STPIS (Bit 8) */ -#define HRPWM0_CSG0_DCI_STPIS_Msk \ - (0xf00UL) /*!< HRPWM0_CSG0 DCI: STPIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_TRGIS_Pos \ - (12UL) /*!< HRPWM0_CSG0 DCI: TRGIS (Bit 12) */ -#define HRPWM0_CSG0_DCI_TRGIS_Msk \ - (0xf000UL) /*!< HRPWM0_CSG0 DCI: TRGIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_STIS_Pos \ - (16UL) /*!< HRPWM0_CSG0 DCI: STIS (Bit 16) */ -#define HRPWM0_CSG0_DCI_STIS_Msk \ - (0xf0000UL) /*!< HRPWM0_CSG0 DCI: STIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_SCS_Pos \ - (20UL) /*!< HRPWM0_CSG0 DCI: SCS (Bit 20) */ -#define HRPWM0_CSG0_DCI_SCS_Msk \ - (0x300000UL) /*!< HRPWM0_CSG0 DCI: SCS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_IES ------------------------------ */ -#define HRPWM0_CSG0_IES_SVLS_Pos \ - (0UL) /*!< HRPWM0_CSG0 IES: SVLS (Bit 0) */ -#define HRPWM0_CSG0_IES_SVLS_Msk \ - (0x3UL) /*!< HRPWM0_CSG0 IES: SVLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_IES_STRES_Pos \ - (2UL) /*!< HRPWM0_CSG0 IES: STRES (Bit 2) */ -#define HRPWM0_CSG0_IES_STRES_Msk \ - (0xcUL) /*!< HRPWM0_CSG0 IES: STRES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_IES_STPES_Pos \ - (4UL) /*!< HRPWM0_CSG0 IES: STPES (Bit 4) */ -#define HRPWM0_CSG0_IES_STPES_Msk \ - (0x30UL) /*!< HRPWM0_CSG0 IES: STPES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_IES_TRGES_Pos \ - (6UL) /*!< HRPWM0_CSG0 IES: TRGES (Bit 6) */ -#define HRPWM0_CSG0_IES_TRGES_Msk \ - (0xc0UL) /*!< HRPWM0_CSG0 IES: TRGES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_IES_STES_Pos \ - (8UL) /*!< HRPWM0_CSG0 IES: STES (Bit 8) */ -#define HRPWM0_CSG0_IES_STES_Msk \ - (0x300UL) /*!< HRPWM0_CSG0 IES: STES (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_SC ------------------------------- */ -#define HRPWM0_CSG0_SC_PSRM_Pos \ - (0UL) /*!< HRPWM0_CSG0 SC: PSRM (Bit 0) */ -#define HRPWM0_CSG0_SC_PSRM_Msk \ - (0x3UL) /*!< HRPWM0_CSG0 SC: PSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_PSTM_Pos \ - (2UL) /*!< HRPWM0_CSG0 SC: PSTM (Bit 2) */ -#define HRPWM0_CSG0_SC_PSTM_Msk \ - (0xcUL) /*!< HRPWM0_CSG0 SC: PSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_FPD_Pos \ - (4UL) /*!< HRPWM0_CSG0 SC: FPD (Bit 4) */ -#define HRPWM0_CSG0_SC_FPD_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 SC: FPD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SC_PSV_Pos \ - (5UL) /*!< HRPWM0_CSG0 SC: PSV (Bit 5) */ -#define HRPWM0_CSG0_SC_PSV_Msk \ - (0x60UL) /*!< HRPWM0_CSG0 SC: PSV (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SCM_Pos \ - (8UL) /*!< HRPWM0_CSG0 SC: SCM (Bit 8) */ -#define HRPWM0_CSG0_SC_SCM_Msk \ - (0x300UL) /*!< HRPWM0_CSG0 SC: SCM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SSRM_Pos \ - (10UL) /*!< HRPWM0_CSG0 SC: SSRM (Bit 10) */ -#define HRPWM0_CSG0_SC_SSRM_Msk \ - (0xc00UL) /*!< HRPWM0_CSG0 SC: SSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SSTM_Pos \ - (12UL) /*!< HRPWM0_CSG0 SC: SSTM (Bit 12) */ -#define HRPWM0_CSG0_SC_SSTM_Msk \ - (0x3000UL) /*!< HRPWM0_CSG0 SC: SSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SVSC_Pos \ - (14UL) /*!< HRPWM0_CSG0 SC: SVSC (Bit 14) */ -#define HRPWM0_CSG0_SC_SVSC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG0 SC: SVSC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SWSM_Pos \ - (16UL) /*!< HRPWM0_CSG0 SC: SWSM (Bit 16) */ -#define HRPWM0_CSG0_SC_SWSM_Msk \ - (0x30000UL) /*!< HRPWM0_CSG0 SC: SWSM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_GCFG_Pos \ - (18UL) /*!< HRPWM0_CSG0 SC: GCFG (Bit 18) */ -#define HRPWM0_CSG0_SC_GCFG_Msk \ - (0xc0000UL) /*!< HRPWM0_CSG0 SC: GCFG (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_IST_Pos \ - (20UL) /*!< HRPWM0_CSG0 SC: IST (Bit 20) */ -#define HRPWM0_CSG0_SC_IST_Msk \ - (0x100000UL) /*!< HRPWM0_CSG0 SC: IST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SC_PSE_Pos \ - (21UL) /*!< HRPWM0_CSG0 SC: PSE (Bit 21) */ -#define HRPWM0_CSG0_SC_PSE_Msk \ - (0x200000UL) /*!< HRPWM0_CSG0 SC: PSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SC_PSWM_Pos \ - (24UL) /*!< HRPWM0_CSG0 SC: PSWM (Bit 24) */ -#define HRPWM0_CSG0_SC_PSWM_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG0 SC: PSWM (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_PC ------------------------------- */ -#define HRPWM0_CSG0_PC_PSWV_Pos \ - (0UL) /*!< HRPWM0_CSG0 PC: PSWV (Bit 0) */ -#define HRPWM0_CSG0_PC_PSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG0 PC: PSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------ HRPWM0_CSG0_DSV1 ------------------------------ */ -#define HRPWM0_CSG0_DSV1_DSV1_Pos \ - (0UL) /*!< HRPWM0_CSG0 DSV1: DSV1 (Bit 0) */ -#define HRPWM0_CSG0_DSV1_DSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG0 DSV1: DSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG0_DSV2 ------------------------------ */ -#define HRPWM0_CSG0_DSV2_DSV2_Pos \ - (0UL) /*!< HRPWM0_CSG0 DSV2: DSV2 (Bit 0) */ -#define HRPWM0_CSG0_DSV2_DSV2_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG0 DSV2: DSV2 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG0_SDSV1 ----------------------------- */ -#define HRPWM0_CSG0_SDSV1_SDSV1_Pos \ - (0UL) /*!< HRPWM0_CSG0 SDSV1: SDSV1 (Bit 0) */ -#define HRPWM0_CSG0_SDSV1_SDSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG0 SDSV1: SDSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG0_SPC ------------------------------ */ -#define HRPWM0_CSG0_SPC_SPSWV_Pos \ - (0UL) /*!< HRPWM0_CSG0 SPC: SPSWV (Bit 0) */ -#define HRPWM0_CSG0_SPC_SPSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG0 SPC: SPSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- HRPWM0_CSG0_CC ------------------------------- */ -#define HRPWM0_CSG0_CC_IBS_Pos \ - (0UL) /*!< HRPWM0_CSG0 CC: IBS (Bit 0) */ -#define HRPWM0_CSG0_CC_IBS_Msk \ - (0xfUL) /*!< HRPWM0_CSG0 CC: IBS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_CC_IMCS_Pos \ - (8UL) /*!< HRPWM0_CSG0 CC: IMCS (Bit 8) */ -#define HRPWM0_CSG0_CC_IMCS_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 CC: IMCS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_IMCC_Pos \ - (9UL) /*!< HRPWM0_CSG0 CC: IMCC (Bit 9) */ -#define HRPWM0_CSG0_CC_IMCC_Msk \ - (0x600UL) /*!< HRPWM0_CSG0 CC: IMCC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_CC_ESE_Pos \ - (11UL) /*!< HRPWM0_CSG0 CC: ESE (Bit 11) */ -#define HRPWM0_CSG0_CC_ESE_Msk \ - (0x800UL) /*!< HRPWM0_CSG0 CC: ESE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_OIE_Pos \ - (12UL) /*!< HRPWM0_CSG0 CC: OIE (Bit 12) */ -#define HRPWM0_CSG0_CC_OIE_Msk \ - (0x1000UL) /*!< HRPWM0_CSG0 CC: OIE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_OSE_Pos \ - (13UL) /*!< HRPWM0_CSG0 CC: OSE (Bit 13) */ -#define HRPWM0_CSG0_CC_OSE_Msk \ - (0x2000UL) /*!< HRPWM0_CSG0 CC: OSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_BLMC_Pos \ - (14UL) /*!< HRPWM0_CSG0 CC: BLMC (Bit 14) */ -#define HRPWM0_CSG0_CC_BLMC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG0 CC: BLMC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_CC_EBE_Pos \ - (16UL) /*!< HRPWM0_CSG0 CC: EBE (Bit 16) */ -#define HRPWM0_CSG0_CC_EBE_Msk \ - (0x10000UL) /*!< HRPWM0_CSG0 CC: EBE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_COFE_Pos \ - (17UL) /*!< HRPWM0_CSG0 CC: COFE (Bit 17) */ -#define HRPWM0_CSG0_CC_COFE_Msk \ - (0x20000UL) /*!< HRPWM0_CSG0 CC: COFE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_COFM_Pos \ - (18UL) /*!< HRPWM0_CSG0 CC: COFM (Bit 18) */ -#define HRPWM0_CSG0_CC_COFM_Msk \ - (0x3c0000UL) /*!< HRPWM0_CSG0 CC: COFM (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_CC_COFC_Pos \ - (24UL) /*!< HRPWM0_CSG0 CC: COFC (Bit 24) */ -#define HRPWM0_CSG0_CC_COFC_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG0 CC: COFC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_PLC ------------------------------ */ -#define HRPWM0_CSG0_PLC_IPLS_Pos \ - (0UL) /*!< HRPWM0_CSG0 PLC: IPLS (Bit 0) */ -#define HRPWM0_CSG0_PLC_IPLS_Msk \ - (0xfUL) /*!< HRPWM0_CSG0 PLC: IPLS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_PLC_PLCL_Pos \ - (8UL) /*!< HRPWM0_CSG0 PLC: PLCL (Bit 8) */ -#define HRPWM0_CSG0_PLC_PLCL_Msk \ - (0x300UL) /*!< HRPWM0_CSG0 PLC: PLCL (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_PLC_PSL_Pos \ - (10UL) /*!< HRPWM0_CSG0 PLC: PSL (Bit 10) */ -#define HRPWM0_CSG0_PLC_PSL_Msk \ - (0x400UL) /*!< HRPWM0_CSG0 PLC: PSL (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_PLC_PLSW_Pos \ - (11UL) /*!< HRPWM0_CSG0 PLC: PLSW (Bit 11) */ -#define HRPWM0_CSG0_PLC_PLSW_Msk \ - (0x800UL) /*!< HRPWM0_CSG0 PLC: PLSW (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_PLC_PLEC_Pos \ - (12UL) /*!< HRPWM0_CSG0 PLC: PLEC (Bit 12) */ -#define HRPWM0_CSG0_PLC_PLEC_Msk \ - (0x3000UL) /*!< HRPWM0_CSG0 PLC: PLEC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_PLC_PLXC_Pos \ - (14UL) /*!< HRPWM0_CSG0 PLC: PLXC (Bit 14) */ -#define HRPWM0_CSG0_PLC_PLXC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG0 PLC: PLXC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_BLV ------------------------------ */ -#define HRPWM0_CSG0_BLV_BLV_Pos \ - (0UL) /*!< HRPWM0_CSG0 BLV: BLV (Bit 0) */ -#define HRPWM0_CSG0_BLV_BLV_Msk \ - (0xffUL) /*!< HRPWM0_CSG0 BLV: BLV (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_CSG0_SRE ------------------------------ */ -#define HRPWM0_CSG0_SRE_VLS1E_Pos \ - (0UL) /*!< HRPWM0_CSG0 SRE: VLS1E (Bit 0) */ -#define HRPWM0_CSG0_SRE_VLS1E_Msk \ - (0x1UL) /*!< HRPWM0_CSG0 SRE: VLS1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_VLS2E_Pos \ - (1UL) /*!< HRPWM0_CSG0 SRE: VLS2E (Bit 1) */ -#define HRPWM0_CSG0_SRE_VLS2E_Msk \ - (0x2UL) /*!< HRPWM0_CSG0 SRE: VLS2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_TRGSE_Pos \ - (2UL) /*!< HRPWM0_CSG0 SRE: TRGSE (Bit 2) */ -#define HRPWM0_CSG0_SRE_TRGSE_Msk \ - (0x4UL) /*!< HRPWM0_CSG0 SRE: TRGSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_STRSE_Pos \ - (3UL) /*!< HRPWM0_CSG0 SRE: STRSE (Bit 3) */ -#define HRPWM0_CSG0_SRE_STRSE_Msk \ - (0x8UL) /*!< HRPWM0_CSG0 SRE: STRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_STPSE_Pos \ - (4UL) /*!< HRPWM0_CSG0 SRE: STPSE (Bit 4) */ -#define HRPWM0_CSG0_SRE_STPSE_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 SRE: STPSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_STDE_Pos \ - (5UL) /*!< HRPWM0_CSG0 SRE: STDE (Bit 5) */ -#define HRPWM0_CSG0_SRE_STDE_Msk \ - (0x20UL) /*!< HRPWM0_CSG0 SRE: STDE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_CRSE_Pos \ - (6UL) /*!< HRPWM0_CSG0 SRE: CRSE (Bit 6) */ -#define HRPWM0_CSG0_SRE_CRSE_Msk \ - (0x40UL) /*!< HRPWM0_CSG0 SRE: CRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_CFSE_Pos \ - (7UL) /*!< HRPWM0_CSG0 SRE: CFSE (Bit 7) */ -#define HRPWM0_CSG0_SRE_CFSE_Msk \ - (0x80UL) /*!< HRPWM0_CSG0 SRE: CFSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_CSEE_Pos \ - (8UL) /*!< HRPWM0_CSG0 SRE: CSEE (Bit 8) */ -#define HRPWM0_CSG0_SRE_CSEE_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 SRE: CSEE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG0_SRS ------------------------------ */ -#define HRPWM0_CSG0_SRS_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG0 SRS: VLS1S (Bit 0) */ -#define HRPWM0_CSG0_SRS_VLS1S_Msk \ - (0x3UL) /*!< HRPWM0_CSG0 SRS: VLS1S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_VLS2S_Pos \ - (2UL) /*!< HRPWM0_CSG0 SRS: VLS2S (Bit 2) */ -#define HRPWM0_CSG0_SRS_VLS2S_Msk \ - (0xcUL) /*!< HRPWM0_CSG0 SRS: VLS2S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_TRLS_Pos \ - (4UL) /*!< HRPWM0_CSG0 SRS: TRLS (Bit 4) */ -#define HRPWM0_CSG0_SRS_TRLS_Msk \ - (0x30UL) /*!< HRPWM0_CSG0 SRS: TRLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_SSLS_Pos \ - (6UL) /*!< HRPWM0_CSG0 SRS: SSLS (Bit 6) */ -#define HRPWM0_CSG0_SRS_SSLS_Msk \ - (0xc0UL) /*!< HRPWM0_CSG0 SRS: SSLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_STLS_Pos \ - (8UL) /*!< HRPWM0_CSG0 SRS: STLS (Bit 8) */ -#define HRPWM0_CSG0_SRS_STLS_Msk \ - (0x300UL) /*!< HRPWM0_CSG0 SRS: STLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_CRFLS_Pos \ - (10UL) /*!< HRPWM0_CSG0 SRS: CRFLS (Bit 10) */ -#define HRPWM0_CSG0_SRS_CRFLS_Msk \ - (0xc00UL) /*!< HRPWM0_CSG0 SRS: CRFLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_CSLS_Pos \ - (12UL) /*!< HRPWM0_CSG0 SRS: CSLS (Bit 12) */ -#define HRPWM0_CSG0_SRS_CSLS_Msk \ - (0x3000UL) /*!< HRPWM0_CSG0 SRS: CSLS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_SWS ------------------------------ */ -#define HRPWM0_CSG0_SWS_SVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG0 SWS: SVLS1 (Bit 0) */ -#define HRPWM0_CSG0_SWS_SVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG0 SWS: SVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG0 SWS: SVLS2 (Bit 1) */ -#define HRPWM0_CSG0_SWS_SVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG0 SWS: SVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_STRGS_Pos \ - (2UL) /*!< HRPWM0_CSG0 SWS: STRGS (Bit 2) */ -#define HRPWM0_CSG0_SWS_STRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG0 SWS: STRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG0 SWS: SSTRS (Bit 3) */ -#define HRPWM0_CSG0_SWS_SSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG0 SWS: SSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG0 SWS: SSTPS (Bit 4) */ -#define HRPWM0_CSG0_SWS_SSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 SWS: SSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SSTD_Pos \ - (5UL) /*!< HRPWM0_CSG0 SWS: SSTD (Bit 5) */ -#define HRPWM0_CSG0_SWS_SSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG0 SWS: SSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SCRS_Pos \ - (6UL) /*!< HRPWM0_CSG0 SWS: SCRS (Bit 6) */ -#define HRPWM0_CSG0_SWS_SCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG0 SWS: SCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SCFS_Pos \ - (7UL) /*!< HRPWM0_CSG0 SWS: SCFS (Bit 7) */ -#define HRPWM0_CSG0_SWS_SCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG0 SWS: SCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SCSS_Pos \ - (8UL) /*!< HRPWM0_CSG0 SWS: SCSS (Bit 8) */ -#define HRPWM0_CSG0_SWS_SCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 SWS: SCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG0_SWC ------------------------------ */ -#define HRPWM0_CSG0_SWC_CVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG0 SWC: CVLS1 (Bit 0) */ -#define HRPWM0_CSG0_SWC_CVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG0 SWC: CVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG0 SWC: CVLS2 (Bit 1) */ -#define HRPWM0_CSG0_SWC_CVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG0 SWC: CVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CTRGS_Pos \ - (2UL) /*!< HRPWM0_CSG0 SWC: CTRGS (Bit 2) */ -#define HRPWM0_CSG0_SWC_CTRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG0 SWC: CTRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG0 SWC: CSTRS (Bit 3) */ -#define HRPWM0_CSG0_SWC_CSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG0 SWC: CSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG0 SWC: CSTPS (Bit 4) */ -#define HRPWM0_CSG0_SWC_CSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 SWC: CSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CSTD_Pos \ - (5UL) /*!< HRPWM0_CSG0 SWC: CSTD (Bit 5) */ -#define HRPWM0_CSG0_SWC_CSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG0 SWC: CSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CCRS_Pos \ - (6UL) /*!< HRPWM0_CSG0 SWC: CCRS (Bit 6) */ -#define HRPWM0_CSG0_SWC_CCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG0 SWC: CCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CCFS_Pos \ - (7UL) /*!< HRPWM0_CSG0 SWC: CCFS (Bit 7) */ -#define HRPWM0_CSG0_SWC_CCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG0 SWC: CCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CCSS_Pos \ - (8UL) /*!< HRPWM0_CSG0 SWC: CCSS (Bit 8) */ -#define HRPWM0_CSG0_SWC_CCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 SWC: CCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_CSG0_ISTAT ----------------------------- */ -#define HRPWM0_CSG0_ISTAT_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG0 ISTAT: VLS1S (Bit 0) */ -#define HRPWM0_CSG0_ISTAT_VLS1S_Msk \ - (0x1UL) /*!< HRPWM0_CSG0 ISTAT: VLS1S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_VLS2S_Pos \ - (1UL) /*!< HRPWM0_CSG0 ISTAT: VLS2S (Bit 1) */ -#define HRPWM0_CSG0_ISTAT_VLS2S_Msk \ - (0x2UL) /*!< HRPWM0_CSG0 ISTAT: VLS2S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_TRGSS_Pos \ - (2UL) /*!< HRPWM0_CSG0 ISTAT: TRGSS (Bit 2) */ -#define HRPWM0_CSG0_ISTAT_TRGSS_Msk \ - (0x4UL) /*!< HRPWM0_CSG0 ISTAT: TRGSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_STRSS_Pos \ - (3UL) /*!< HRPWM0_CSG0 ISTAT: STRSS (Bit 3) */ -#define HRPWM0_CSG0_ISTAT_STRSS_Msk \ - (0x8UL) /*!< HRPWM0_CSG0 ISTAT: STRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_STPSS_Pos \ - (4UL) /*!< HRPWM0_CSG0 ISTAT: STPSS (Bit 4) */ -#define HRPWM0_CSG0_ISTAT_STPSS_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 ISTAT: STPSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_STDS_Pos \ - (5UL) /*!< HRPWM0_CSG0 ISTAT: STDS (Bit 5) */ -#define HRPWM0_CSG0_ISTAT_STDS_Msk \ - (0x20UL) /*!< HRPWM0_CSG0 ISTAT: STDS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_CRSS_Pos \ - (6UL) /*!< HRPWM0_CSG0 ISTAT: CRSS (Bit 6) */ -#define HRPWM0_CSG0_ISTAT_CRSS_Msk \ - (0x40UL) /*!< HRPWM0_CSG0 ISTAT: CRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_CFSS_Pos \ - (7UL) /*!< HRPWM0_CSG0 ISTAT: CFSS (Bit 7) */ -#define HRPWM0_CSG0_ISTAT_CFSS_Msk \ - (0x80UL) /*!< HRPWM0_CSG0 ISTAT: CFSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_CSES_Pos \ - (8UL) /*!< HRPWM0_CSG0 ISTAT: CSES (Bit 8) */ -#define HRPWM0_CSG0_ISTAT_CSES_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 ISTAT: CSES (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_CSG1' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_CSG1_DCI ------------------------------ */ -#define HRPWM0_CSG1_DCI_SVIS_Pos \ - (0UL) /*!< HRPWM0_CSG1 DCI: SVIS (Bit 0) */ -#define HRPWM0_CSG1_DCI_SVIS_Msk \ - (0xfUL) /*!< HRPWM0_CSG1 DCI: SVIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_STRIS_Pos \ - (4UL) /*!< HRPWM0_CSG1 DCI: STRIS (Bit 4) */ -#define HRPWM0_CSG1_DCI_STRIS_Msk \ - (0xf0UL) /*!< HRPWM0_CSG1 DCI: STRIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_STPIS_Pos \ - (8UL) /*!< HRPWM0_CSG1 DCI: STPIS (Bit 8) */ -#define HRPWM0_CSG1_DCI_STPIS_Msk \ - (0xf00UL) /*!< HRPWM0_CSG1 DCI: STPIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_TRGIS_Pos \ - (12UL) /*!< HRPWM0_CSG1 DCI: TRGIS (Bit 12) */ -#define HRPWM0_CSG1_DCI_TRGIS_Msk \ - (0xf000UL) /*!< HRPWM0_CSG1 DCI: TRGIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_STIS_Pos \ - (16UL) /*!< HRPWM0_CSG1 DCI: STIS (Bit 16) */ -#define HRPWM0_CSG1_DCI_STIS_Msk \ - (0xf0000UL) /*!< HRPWM0_CSG1 DCI: STIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_SCS_Pos \ - (20UL) /*!< HRPWM0_CSG1 DCI: SCS (Bit 20) */ -#define HRPWM0_CSG1_DCI_SCS_Msk \ - (0x300000UL) /*!< HRPWM0_CSG1 DCI: SCS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_IES ------------------------------ */ -#define HRPWM0_CSG1_IES_SVLS_Pos \ - (0UL) /*!< HRPWM0_CSG1 IES: SVLS (Bit 0) */ -#define HRPWM0_CSG1_IES_SVLS_Msk \ - (0x3UL) /*!< HRPWM0_CSG1 IES: SVLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_IES_STRES_Pos \ - (2UL) /*!< HRPWM0_CSG1 IES: STRES (Bit 2) */ -#define HRPWM0_CSG1_IES_STRES_Msk \ - (0xcUL) /*!< HRPWM0_CSG1 IES: STRES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_IES_STPES_Pos \ - (4UL) /*!< HRPWM0_CSG1 IES: STPES (Bit 4) */ -#define HRPWM0_CSG1_IES_STPES_Msk \ - (0x30UL) /*!< HRPWM0_CSG1 IES: STPES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_IES_TRGES_Pos \ - (6UL) /*!< HRPWM0_CSG1 IES: TRGES (Bit 6) */ -#define HRPWM0_CSG1_IES_TRGES_Msk \ - (0xc0UL) /*!< HRPWM0_CSG1 IES: TRGES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_IES_STES_Pos \ - (8UL) /*!< HRPWM0_CSG1 IES: STES (Bit 8) */ -#define HRPWM0_CSG1_IES_STES_Msk \ - (0x300UL) /*!< HRPWM0_CSG1 IES: STES (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_SC ------------------------------- */ -#define HRPWM0_CSG1_SC_PSRM_Pos \ - (0UL) /*!< HRPWM0_CSG1 SC: PSRM (Bit 0) */ -#define HRPWM0_CSG1_SC_PSRM_Msk \ - (0x3UL) /*!< HRPWM0_CSG1 SC: PSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_PSTM_Pos \ - (2UL) /*!< HRPWM0_CSG1 SC: PSTM (Bit 2) */ -#define HRPWM0_CSG1_SC_PSTM_Msk \ - (0xcUL) /*!< HRPWM0_CSG1 SC: PSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_FPD_Pos \ - (4UL) /*!< HRPWM0_CSG1 SC: FPD (Bit 4) */ -#define HRPWM0_CSG1_SC_FPD_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 SC: FPD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SC_PSV_Pos \ - (5UL) /*!< HRPWM0_CSG1 SC: PSV (Bit 5) */ -#define HRPWM0_CSG1_SC_PSV_Msk \ - (0x60UL) /*!< HRPWM0_CSG1 SC: PSV (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SCM_Pos \ - (8UL) /*!< HRPWM0_CSG1 SC: SCM (Bit 8) */ -#define HRPWM0_CSG1_SC_SCM_Msk \ - (0x300UL) /*!< HRPWM0_CSG1 SC: SCM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SSRM_Pos \ - (10UL) /*!< HRPWM0_CSG1 SC: SSRM (Bit 10) */ -#define HRPWM0_CSG1_SC_SSRM_Msk \ - (0xc00UL) /*!< HRPWM0_CSG1 SC: SSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SSTM_Pos \ - (12UL) /*!< HRPWM0_CSG1 SC: SSTM (Bit 12) */ -#define HRPWM0_CSG1_SC_SSTM_Msk \ - (0x3000UL) /*!< HRPWM0_CSG1 SC: SSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SVSC_Pos \ - (14UL) /*!< HRPWM0_CSG1 SC: SVSC (Bit 14) */ -#define HRPWM0_CSG1_SC_SVSC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG1 SC: SVSC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SWSM_Pos \ - (16UL) /*!< HRPWM0_CSG1 SC: SWSM (Bit 16) */ -#define HRPWM0_CSG1_SC_SWSM_Msk \ - (0x30000UL) /*!< HRPWM0_CSG1 SC: SWSM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_GCFG_Pos \ - (18UL) /*!< HRPWM0_CSG1 SC: GCFG (Bit 18) */ -#define HRPWM0_CSG1_SC_GCFG_Msk \ - (0xc0000UL) /*!< HRPWM0_CSG1 SC: GCFG (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_IST_Pos \ - (20UL) /*!< HRPWM0_CSG1 SC: IST (Bit 20) */ -#define HRPWM0_CSG1_SC_IST_Msk \ - (0x100000UL) /*!< HRPWM0_CSG1 SC: IST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SC_PSE_Pos \ - (21UL) /*!< HRPWM0_CSG1 SC: PSE (Bit 21) */ -#define HRPWM0_CSG1_SC_PSE_Msk \ - (0x200000UL) /*!< HRPWM0_CSG1 SC: PSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SC_PSWM_Pos \ - (24UL) /*!< HRPWM0_CSG1 SC: PSWM (Bit 24) */ -#define HRPWM0_CSG1_SC_PSWM_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG1 SC: PSWM (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_PC ------------------------------- */ -#define HRPWM0_CSG1_PC_PSWV_Pos \ - (0UL) /*!< HRPWM0_CSG1 PC: PSWV (Bit 0) */ -#define HRPWM0_CSG1_PC_PSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG1 PC: PSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------ HRPWM0_CSG1_DSV1 ------------------------------ */ -#define HRPWM0_CSG1_DSV1_DSV1_Pos \ - (0UL) /*!< HRPWM0_CSG1 DSV1: DSV1 (Bit 0) */ -#define HRPWM0_CSG1_DSV1_DSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG1 DSV1: DSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG1_DSV2 ------------------------------ */ -#define HRPWM0_CSG1_DSV2_DSV2_Pos \ - (0UL) /*!< HRPWM0_CSG1 DSV2: DSV2 (Bit 0) */ -#define HRPWM0_CSG1_DSV2_DSV2_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG1 DSV2: DSV2 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG1_SDSV1 ----------------------------- */ -#define HRPWM0_CSG1_SDSV1_SDSV1_Pos \ - (0UL) /*!< HRPWM0_CSG1 SDSV1: SDSV1 (Bit 0) */ -#define HRPWM0_CSG1_SDSV1_SDSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG1 SDSV1: SDSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG1_SPC ------------------------------ */ -#define HRPWM0_CSG1_SPC_SPSWV_Pos \ - (0UL) /*!< HRPWM0_CSG1 SPC: SPSWV (Bit 0) */ -#define HRPWM0_CSG1_SPC_SPSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG1 SPC: SPSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- HRPWM0_CSG1_CC ------------------------------- */ -#define HRPWM0_CSG1_CC_IBS_Pos \ - (0UL) /*!< HRPWM0_CSG1 CC: IBS (Bit 0) */ -#define HRPWM0_CSG1_CC_IBS_Msk \ - (0xfUL) /*!< HRPWM0_CSG1 CC: IBS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_CC_IMCS_Pos \ - (8UL) /*!< HRPWM0_CSG1 CC: IMCS (Bit 8) */ -#define HRPWM0_CSG1_CC_IMCS_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 CC: IMCS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_IMCC_Pos \ - (9UL) /*!< HRPWM0_CSG1 CC: IMCC (Bit 9) */ -#define HRPWM0_CSG1_CC_IMCC_Msk \ - (0x600UL) /*!< HRPWM0_CSG1 CC: IMCC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_CC_ESE_Pos \ - (11UL) /*!< HRPWM0_CSG1 CC: ESE (Bit 11) */ -#define HRPWM0_CSG1_CC_ESE_Msk \ - (0x800UL) /*!< HRPWM0_CSG1 CC: ESE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_OIE_Pos \ - (12UL) /*!< HRPWM0_CSG1 CC: OIE (Bit 12) */ -#define HRPWM0_CSG1_CC_OIE_Msk \ - (0x1000UL) /*!< HRPWM0_CSG1 CC: OIE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_OSE_Pos \ - (13UL) /*!< HRPWM0_CSG1 CC: OSE (Bit 13) */ -#define HRPWM0_CSG1_CC_OSE_Msk \ - (0x2000UL) /*!< HRPWM0_CSG1 CC: OSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_BLMC_Pos \ - (14UL) /*!< HRPWM0_CSG1 CC: BLMC (Bit 14) */ -#define HRPWM0_CSG1_CC_BLMC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG1 CC: BLMC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_CC_EBE_Pos \ - (16UL) /*!< HRPWM0_CSG1 CC: EBE (Bit 16) */ -#define HRPWM0_CSG1_CC_EBE_Msk \ - (0x10000UL) /*!< HRPWM0_CSG1 CC: EBE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_COFE_Pos \ - (17UL) /*!< HRPWM0_CSG1 CC: COFE (Bit 17) */ -#define HRPWM0_CSG1_CC_COFE_Msk \ - (0x20000UL) /*!< HRPWM0_CSG1 CC: COFE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_COFM_Pos \ - (18UL) /*!< HRPWM0_CSG1 CC: COFM (Bit 18) */ -#define HRPWM0_CSG1_CC_COFM_Msk \ - (0x3c0000UL) /*!< HRPWM0_CSG1 CC: COFM (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_CC_COFC_Pos \ - (24UL) /*!< HRPWM0_CSG1 CC: COFC (Bit 24) */ -#define HRPWM0_CSG1_CC_COFC_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG1 CC: COFC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_PLC ------------------------------ */ -#define HRPWM0_CSG1_PLC_IPLS_Pos \ - (0UL) /*!< HRPWM0_CSG1 PLC: IPLS (Bit 0) */ -#define HRPWM0_CSG1_PLC_IPLS_Msk \ - (0xfUL) /*!< HRPWM0_CSG1 PLC: IPLS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_PLC_PLCL_Pos \ - (8UL) /*!< HRPWM0_CSG1 PLC: PLCL (Bit 8) */ -#define HRPWM0_CSG1_PLC_PLCL_Msk \ - (0x300UL) /*!< HRPWM0_CSG1 PLC: PLCL (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_PLC_PSL_Pos \ - (10UL) /*!< HRPWM0_CSG1 PLC: PSL (Bit 10) */ -#define HRPWM0_CSG1_PLC_PSL_Msk \ - (0x400UL) /*!< HRPWM0_CSG1 PLC: PSL (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_PLC_PLSW_Pos \ - (11UL) /*!< HRPWM0_CSG1 PLC: PLSW (Bit 11) */ -#define HRPWM0_CSG1_PLC_PLSW_Msk \ - (0x800UL) /*!< HRPWM0_CSG1 PLC: PLSW (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_PLC_PLEC_Pos \ - (12UL) /*!< HRPWM0_CSG1 PLC: PLEC (Bit 12) */ -#define HRPWM0_CSG1_PLC_PLEC_Msk \ - (0x3000UL) /*!< HRPWM0_CSG1 PLC: PLEC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_PLC_PLXC_Pos \ - (14UL) /*!< HRPWM0_CSG1 PLC: PLXC (Bit 14) */ -#define HRPWM0_CSG1_PLC_PLXC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG1 PLC: PLXC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_BLV ------------------------------ */ -#define HRPWM0_CSG1_BLV_BLV_Pos \ - (0UL) /*!< HRPWM0_CSG1 BLV: BLV (Bit 0) */ -#define HRPWM0_CSG1_BLV_BLV_Msk \ - (0xffUL) /*!< HRPWM0_CSG1 BLV: BLV (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_CSG1_SRE ------------------------------ */ -#define HRPWM0_CSG1_SRE_VLS1E_Pos \ - (0UL) /*!< HRPWM0_CSG1 SRE: VLS1E (Bit 0) */ -#define HRPWM0_CSG1_SRE_VLS1E_Msk \ - (0x1UL) /*!< HRPWM0_CSG1 SRE: VLS1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_VLS2E_Pos \ - (1UL) /*!< HRPWM0_CSG1 SRE: VLS2E (Bit 1) */ -#define HRPWM0_CSG1_SRE_VLS2E_Msk \ - (0x2UL) /*!< HRPWM0_CSG1 SRE: VLS2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_TRGSE_Pos \ - (2UL) /*!< HRPWM0_CSG1 SRE: TRGSE (Bit 2) */ -#define HRPWM0_CSG1_SRE_TRGSE_Msk \ - (0x4UL) /*!< HRPWM0_CSG1 SRE: TRGSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_STRSE_Pos \ - (3UL) /*!< HRPWM0_CSG1 SRE: STRSE (Bit 3) */ -#define HRPWM0_CSG1_SRE_STRSE_Msk \ - (0x8UL) /*!< HRPWM0_CSG1 SRE: STRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_STPSE_Pos \ - (4UL) /*!< HRPWM0_CSG1 SRE: STPSE (Bit 4) */ -#define HRPWM0_CSG1_SRE_STPSE_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 SRE: STPSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_STDE_Pos \ - (5UL) /*!< HRPWM0_CSG1 SRE: STDE (Bit 5) */ -#define HRPWM0_CSG1_SRE_STDE_Msk \ - (0x20UL) /*!< HRPWM0_CSG1 SRE: STDE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_CRSE_Pos \ - (6UL) /*!< HRPWM0_CSG1 SRE: CRSE (Bit 6) */ -#define HRPWM0_CSG1_SRE_CRSE_Msk \ - (0x40UL) /*!< HRPWM0_CSG1 SRE: CRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_CFSE_Pos \ - (7UL) /*!< HRPWM0_CSG1 SRE: CFSE (Bit 7) */ -#define HRPWM0_CSG1_SRE_CFSE_Msk \ - (0x80UL) /*!< HRPWM0_CSG1 SRE: CFSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_CSEE_Pos \ - (8UL) /*!< HRPWM0_CSG1 SRE: CSEE (Bit 8) */ -#define HRPWM0_CSG1_SRE_CSEE_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 SRE: CSEE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG1_SRS ------------------------------ */ -#define HRPWM0_CSG1_SRS_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG1 SRS: VLS1S (Bit 0) */ -#define HRPWM0_CSG1_SRS_VLS1S_Msk \ - (0x3UL) /*!< HRPWM0_CSG1 SRS: VLS1S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_VLS2S_Pos \ - (2UL) /*!< HRPWM0_CSG1 SRS: VLS2S (Bit 2) */ -#define HRPWM0_CSG1_SRS_VLS2S_Msk \ - (0xcUL) /*!< HRPWM0_CSG1 SRS: VLS2S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_TRLS_Pos \ - (4UL) /*!< HRPWM0_CSG1 SRS: TRLS (Bit 4) */ -#define HRPWM0_CSG1_SRS_TRLS_Msk \ - (0x30UL) /*!< HRPWM0_CSG1 SRS: TRLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_SSLS_Pos \ - (6UL) /*!< HRPWM0_CSG1 SRS: SSLS (Bit 6) */ -#define HRPWM0_CSG1_SRS_SSLS_Msk \ - (0xc0UL) /*!< HRPWM0_CSG1 SRS: SSLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_STLS_Pos \ - (8UL) /*!< HRPWM0_CSG1 SRS: STLS (Bit 8) */ -#define HRPWM0_CSG1_SRS_STLS_Msk \ - (0x300UL) /*!< HRPWM0_CSG1 SRS: STLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_CRFLS_Pos \ - (10UL) /*!< HRPWM0_CSG1 SRS: CRFLS (Bit 10) */ -#define HRPWM0_CSG1_SRS_CRFLS_Msk \ - (0xc00UL) /*!< HRPWM0_CSG1 SRS: CRFLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_CSLS_Pos \ - (12UL) /*!< HRPWM0_CSG1 SRS: CSLS (Bit 12) */ -#define HRPWM0_CSG1_SRS_CSLS_Msk \ - (0x3000UL) /*!< HRPWM0_CSG1 SRS: CSLS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_SWS ------------------------------ */ -#define HRPWM0_CSG1_SWS_SVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG1 SWS: SVLS1 (Bit 0) */ -#define HRPWM0_CSG1_SWS_SVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG1 SWS: SVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG1 SWS: SVLS2 (Bit 1) */ -#define HRPWM0_CSG1_SWS_SVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG1 SWS: SVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_STRGS_Pos \ - (2UL) /*!< HRPWM0_CSG1 SWS: STRGS (Bit 2) */ -#define HRPWM0_CSG1_SWS_STRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG1 SWS: STRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG1 SWS: SSTRS (Bit 3) */ -#define HRPWM0_CSG1_SWS_SSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG1 SWS: SSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG1 SWS: SSTPS (Bit 4) */ -#define HRPWM0_CSG1_SWS_SSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 SWS: SSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SSTD_Pos \ - (5UL) /*!< HRPWM0_CSG1 SWS: SSTD (Bit 5) */ -#define HRPWM0_CSG1_SWS_SSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG1 SWS: SSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SCRS_Pos \ - (6UL) /*!< HRPWM0_CSG1 SWS: SCRS (Bit 6) */ -#define HRPWM0_CSG1_SWS_SCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG1 SWS: SCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SCFS_Pos \ - (7UL) /*!< HRPWM0_CSG1 SWS: SCFS (Bit 7) */ -#define HRPWM0_CSG1_SWS_SCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG1 SWS: SCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SCSS_Pos \ - (8UL) /*!< HRPWM0_CSG1 SWS: SCSS (Bit 8) */ -#define HRPWM0_CSG1_SWS_SCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 SWS: SCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG1_SWC ------------------------------ */ -#define HRPWM0_CSG1_SWC_CVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG1 SWC: CVLS1 (Bit 0) */ -#define HRPWM0_CSG1_SWC_CVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG1 SWC: CVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG1 SWC: CVLS2 (Bit 1) */ -#define HRPWM0_CSG1_SWC_CVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG1 SWC: CVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CTRGS_Pos \ - (2UL) /*!< HRPWM0_CSG1 SWC: CTRGS (Bit 2) */ -#define HRPWM0_CSG1_SWC_CTRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG1 SWC: CTRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG1 SWC: CSTRS (Bit 3) */ -#define HRPWM0_CSG1_SWC_CSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG1 SWC: CSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG1 SWC: CSTPS (Bit 4) */ -#define HRPWM0_CSG1_SWC_CSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 SWC: CSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CSTD_Pos \ - (5UL) /*!< HRPWM0_CSG1 SWC: CSTD (Bit 5) */ -#define HRPWM0_CSG1_SWC_CSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG1 SWC: CSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CCRS_Pos \ - (6UL) /*!< HRPWM0_CSG1 SWC: CCRS (Bit 6) */ -#define HRPWM0_CSG1_SWC_CCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG1 SWC: CCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CCFS_Pos \ - (7UL) /*!< HRPWM0_CSG1 SWC: CCFS (Bit 7) */ -#define HRPWM0_CSG1_SWC_CCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG1 SWC: CCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CCSS_Pos \ - (8UL) /*!< HRPWM0_CSG1 SWC: CCSS (Bit 8) */ -#define HRPWM0_CSG1_SWC_CCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 SWC: CCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_CSG1_ISTAT ----------------------------- */ -#define HRPWM0_CSG1_ISTAT_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG1 ISTAT: VLS1S (Bit 0) */ -#define HRPWM0_CSG1_ISTAT_VLS1S_Msk \ - (0x1UL) /*!< HRPWM0_CSG1 ISTAT: VLS1S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_VLS2S_Pos \ - (1UL) /*!< HRPWM0_CSG1 ISTAT: VLS2S (Bit 1) */ -#define HRPWM0_CSG1_ISTAT_VLS2S_Msk \ - (0x2UL) /*!< HRPWM0_CSG1 ISTAT: VLS2S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_TRGSS_Pos \ - (2UL) /*!< HRPWM0_CSG1 ISTAT: TRGSS (Bit 2) */ -#define HRPWM0_CSG1_ISTAT_TRGSS_Msk \ - (0x4UL) /*!< HRPWM0_CSG1 ISTAT: TRGSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_STRSS_Pos \ - (3UL) /*!< HRPWM0_CSG1 ISTAT: STRSS (Bit 3) */ -#define HRPWM0_CSG1_ISTAT_STRSS_Msk \ - (0x8UL) /*!< HRPWM0_CSG1 ISTAT: STRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_STPSS_Pos \ - (4UL) /*!< HRPWM0_CSG1 ISTAT: STPSS (Bit 4) */ -#define HRPWM0_CSG1_ISTAT_STPSS_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 ISTAT: STPSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_STDS_Pos \ - (5UL) /*!< HRPWM0_CSG1 ISTAT: STDS (Bit 5) */ -#define HRPWM0_CSG1_ISTAT_STDS_Msk \ - (0x20UL) /*!< HRPWM0_CSG1 ISTAT: STDS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_CRSS_Pos \ - (6UL) /*!< HRPWM0_CSG1 ISTAT: CRSS (Bit 6) */ -#define HRPWM0_CSG1_ISTAT_CRSS_Msk \ - (0x40UL) /*!< HRPWM0_CSG1 ISTAT: CRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_CFSS_Pos \ - (7UL) /*!< HRPWM0_CSG1 ISTAT: CFSS (Bit 7) */ -#define HRPWM0_CSG1_ISTAT_CFSS_Msk \ - (0x80UL) /*!< HRPWM0_CSG1 ISTAT: CFSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_CSES_Pos \ - (8UL) /*!< HRPWM0_CSG1 ISTAT: CSES (Bit 8) */ -#define HRPWM0_CSG1_ISTAT_CSES_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 ISTAT: CSES (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_CSG2' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_CSG2_DCI ------------------------------ */ -#define HRPWM0_CSG2_DCI_SVIS_Pos \ - (0UL) /*!< HRPWM0_CSG2 DCI: SVIS (Bit 0) */ -#define HRPWM0_CSG2_DCI_SVIS_Msk \ - (0xfUL) /*!< HRPWM0_CSG2 DCI: SVIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_STRIS_Pos \ - (4UL) /*!< HRPWM0_CSG2 DCI: STRIS (Bit 4) */ -#define HRPWM0_CSG2_DCI_STRIS_Msk \ - (0xf0UL) /*!< HRPWM0_CSG2 DCI: STRIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_STPIS_Pos \ - (8UL) /*!< HRPWM0_CSG2 DCI: STPIS (Bit 8) */ -#define HRPWM0_CSG2_DCI_STPIS_Msk \ - (0xf00UL) /*!< HRPWM0_CSG2 DCI: STPIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_TRGIS_Pos \ - (12UL) /*!< HRPWM0_CSG2 DCI: TRGIS (Bit 12) */ -#define HRPWM0_CSG2_DCI_TRGIS_Msk \ - (0xf000UL) /*!< HRPWM0_CSG2 DCI: TRGIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_STIS_Pos \ - (16UL) /*!< HRPWM0_CSG2 DCI: STIS (Bit 16) */ -#define HRPWM0_CSG2_DCI_STIS_Msk \ - (0xf0000UL) /*!< HRPWM0_CSG2 DCI: STIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_SCS_Pos \ - (20UL) /*!< HRPWM0_CSG2 DCI: SCS (Bit 20) */ -#define HRPWM0_CSG2_DCI_SCS_Msk \ - (0x300000UL) /*!< HRPWM0_CSG2 DCI: SCS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_IES ------------------------------ */ -#define HRPWM0_CSG2_IES_SVLS_Pos \ - (0UL) /*!< HRPWM0_CSG2 IES: SVLS (Bit 0) */ -#define HRPWM0_CSG2_IES_SVLS_Msk \ - (0x3UL) /*!< HRPWM0_CSG2 IES: SVLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_IES_STRES_Pos \ - (2UL) /*!< HRPWM0_CSG2 IES: STRES (Bit 2) */ -#define HRPWM0_CSG2_IES_STRES_Msk \ - (0xcUL) /*!< HRPWM0_CSG2 IES: STRES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_IES_STPES_Pos \ - (4UL) /*!< HRPWM0_CSG2 IES: STPES (Bit 4) */ -#define HRPWM0_CSG2_IES_STPES_Msk \ - (0x30UL) /*!< HRPWM0_CSG2 IES: STPES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_IES_TRGES_Pos \ - (6UL) /*!< HRPWM0_CSG2 IES: TRGES (Bit 6) */ -#define HRPWM0_CSG2_IES_TRGES_Msk \ - (0xc0UL) /*!< HRPWM0_CSG2 IES: TRGES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_IES_STES_Pos \ - (8UL) /*!< HRPWM0_CSG2 IES: STES (Bit 8) */ -#define HRPWM0_CSG2_IES_STES_Msk \ - (0x300UL) /*!< HRPWM0_CSG2 IES: STES (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_SC ------------------------------- */ -#define HRPWM0_CSG2_SC_PSRM_Pos \ - (0UL) /*!< HRPWM0_CSG2 SC: PSRM (Bit 0) */ -#define HRPWM0_CSG2_SC_PSRM_Msk \ - (0x3UL) /*!< HRPWM0_CSG2 SC: PSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_PSTM_Pos \ - (2UL) /*!< HRPWM0_CSG2 SC: PSTM (Bit 2) */ -#define HRPWM0_CSG2_SC_PSTM_Msk \ - (0xcUL) /*!< HRPWM0_CSG2 SC: PSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_FPD_Pos \ - (4UL) /*!< HRPWM0_CSG2 SC: FPD (Bit 4) */ -#define HRPWM0_CSG2_SC_FPD_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 SC: FPD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SC_PSV_Pos \ - (5UL) /*!< HRPWM0_CSG2 SC: PSV (Bit 5) */ -#define HRPWM0_CSG2_SC_PSV_Msk \ - (0x60UL) /*!< HRPWM0_CSG2 SC: PSV (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SCM_Pos \ - (8UL) /*!< HRPWM0_CSG2 SC: SCM (Bit 8) */ -#define HRPWM0_CSG2_SC_SCM_Msk \ - (0x300UL) /*!< HRPWM0_CSG2 SC: SCM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SSRM_Pos \ - (10UL) /*!< HRPWM0_CSG2 SC: SSRM (Bit 10) */ -#define HRPWM0_CSG2_SC_SSRM_Msk \ - (0xc00UL) /*!< HRPWM0_CSG2 SC: SSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SSTM_Pos \ - (12UL) /*!< HRPWM0_CSG2 SC: SSTM (Bit 12) */ -#define HRPWM0_CSG2_SC_SSTM_Msk \ - (0x3000UL) /*!< HRPWM0_CSG2 SC: SSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SVSC_Pos \ - (14UL) /*!< HRPWM0_CSG2 SC: SVSC (Bit 14) */ -#define HRPWM0_CSG2_SC_SVSC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG2 SC: SVSC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SWSM_Pos \ - (16UL) /*!< HRPWM0_CSG2 SC: SWSM (Bit 16) */ -#define HRPWM0_CSG2_SC_SWSM_Msk \ - (0x30000UL) /*!< HRPWM0_CSG2 SC: SWSM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_GCFG_Pos \ - (18UL) /*!< HRPWM0_CSG2 SC: GCFG (Bit 18) */ -#define HRPWM0_CSG2_SC_GCFG_Msk \ - (0xc0000UL) /*!< HRPWM0_CSG2 SC: GCFG (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_IST_Pos \ - (20UL) /*!< HRPWM0_CSG2 SC: IST (Bit 20) */ -#define HRPWM0_CSG2_SC_IST_Msk \ - (0x100000UL) /*!< HRPWM0_CSG2 SC: IST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SC_PSE_Pos \ - (21UL) /*!< HRPWM0_CSG2 SC: PSE (Bit 21) */ -#define HRPWM0_CSG2_SC_PSE_Msk \ - (0x200000UL) /*!< HRPWM0_CSG2 SC: PSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SC_PSWM_Pos \ - (24UL) /*!< HRPWM0_CSG2 SC: PSWM (Bit 24) */ -#define HRPWM0_CSG2_SC_PSWM_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG2 SC: PSWM (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_PC ------------------------------- */ -#define HRPWM0_CSG2_PC_PSWV_Pos \ - (0UL) /*!< HRPWM0_CSG2 PC: PSWV (Bit 0) */ -#define HRPWM0_CSG2_PC_PSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG2 PC: PSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------ HRPWM0_CSG2_DSV1 ------------------------------ */ -#define HRPWM0_CSG2_DSV1_DSV1_Pos \ - (0UL) /*!< HRPWM0_CSG2 DSV1: DSV1 (Bit 0) */ -#define HRPWM0_CSG2_DSV1_DSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG2 DSV1: DSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG2_DSV2 ------------------------------ */ -#define HRPWM0_CSG2_DSV2_DSV2_Pos \ - (0UL) /*!< HRPWM0_CSG2 DSV2: DSV2 (Bit 0) */ -#define HRPWM0_CSG2_DSV2_DSV2_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG2 DSV2: DSV2 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG2_SDSV1 ----------------------------- */ -#define HRPWM0_CSG2_SDSV1_SDSV1_Pos \ - (0UL) /*!< HRPWM0_CSG2 SDSV1: SDSV1 (Bit 0) */ -#define HRPWM0_CSG2_SDSV1_SDSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG2 SDSV1: SDSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG2_SPC ------------------------------ */ -#define HRPWM0_CSG2_SPC_SPSWV_Pos \ - (0UL) /*!< HRPWM0_CSG2 SPC: SPSWV (Bit 0) */ -#define HRPWM0_CSG2_SPC_SPSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG2 SPC: SPSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- HRPWM0_CSG2_CC ------------------------------- */ -#define HRPWM0_CSG2_CC_IBS_Pos \ - (0UL) /*!< HRPWM0_CSG2 CC: IBS (Bit 0) */ -#define HRPWM0_CSG2_CC_IBS_Msk \ - (0xfUL) /*!< HRPWM0_CSG2 CC: IBS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_CC_IMCS_Pos \ - (8UL) /*!< HRPWM0_CSG2 CC: IMCS (Bit 8) */ -#define HRPWM0_CSG2_CC_IMCS_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 CC: IMCS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_IMCC_Pos \ - (9UL) /*!< HRPWM0_CSG2 CC: IMCC (Bit 9) */ -#define HRPWM0_CSG2_CC_IMCC_Msk \ - (0x600UL) /*!< HRPWM0_CSG2 CC: IMCC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_CC_ESE_Pos \ - (11UL) /*!< HRPWM0_CSG2 CC: ESE (Bit 11) */ -#define HRPWM0_CSG2_CC_ESE_Msk \ - (0x800UL) /*!< HRPWM0_CSG2 CC: ESE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_OIE_Pos \ - (12UL) /*!< HRPWM0_CSG2 CC: OIE (Bit 12) */ -#define HRPWM0_CSG2_CC_OIE_Msk \ - (0x1000UL) /*!< HRPWM0_CSG2 CC: OIE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_OSE_Pos \ - (13UL) /*!< HRPWM0_CSG2 CC: OSE (Bit 13) */ -#define HRPWM0_CSG2_CC_OSE_Msk \ - (0x2000UL) /*!< HRPWM0_CSG2 CC: OSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_BLMC_Pos \ - (14UL) /*!< HRPWM0_CSG2 CC: BLMC (Bit 14) */ -#define HRPWM0_CSG2_CC_BLMC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG2 CC: BLMC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_CC_EBE_Pos \ - (16UL) /*!< HRPWM0_CSG2 CC: EBE (Bit 16) */ -#define HRPWM0_CSG2_CC_EBE_Msk \ - (0x10000UL) /*!< HRPWM0_CSG2 CC: EBE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_COFE_Pos \ - (17UL) /*!< HRPWM0_CSG2 CC: COFE (Bit 17) */ -#define HRPWM0_CSG2_CC_COFE_Msk \ - (0x20000UL) /*!< HRPWM0_CSG2 CC: COFE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_COFM_Pos \ - (18UL) /*!< HRPWM0_CSG2 CC: COFM (Bit 18) */ -#define HRPWM0_CSG2_CC_COFM_Msk \ - (0x3c0000UL) /*!< HRPWM0_CSG2 CC: COFM (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_CC_COFC_Pos \ - (24UL) /*!< HRPWM0_CSG2 CC: COFC (Bit 24) */ -#define HRPWM0_CSG2_CC_COFC_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG2 CC: COFC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_PLC ------------------------------ */ -#define HRPWM0_CSG2_PLC_IPLS_Pos \ - (0UL) /*!< HRPWM0_CSG2 PLC: IPLS (Bit 0) */ -#define HRPWM0_CSG2_PLC_IPLS_Msk \ - (0xfUL) /*!< HRPWM0_CSG2 PLC: IPLS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_PLC_PLCL_Pos \ - (8UL) /*!< HRPWM0_CSG2 PLC: PLCL (Bit 8) */ -#define HRPWM0_CSG2_PLC_PLCL_Msk \ - (0x300UL) /*!< HRPWM0_CSG2 PLC: PLCL (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_PLC_PSL_Pos \ - (10UL) /*!< HRPWM0_CSG2 PLC: PSL (Bit 10) */ -#define HRPWM0_CSG2_PLC_PSL_Msk \ - (0x400UL) /*!< HRPWM0_CSG2 PLC: PSL (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_PLC_PLSW_Pos \ - (11UL) /*!< HRPWM0_CSG2 PLC: PLSW (Bit 11) */ -#define HRPWM0_CSG2_PLC_PLSW_Msk \ - (0x800UL) /*!< HRPWM0_CSG2 PLC: PLSW (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_PLC_PLEC_Pos \ - (12UL) /*!< HRPWM0_CSG2 PLC: PLEC (Bit 12) */ -#define HRPWM0_CSG2_PLC_PLEC_Msk \ - (0x3000UL) /*!< HRPWM0_CSG2 PLC: PLEC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_PLC_PLXC_Pos \ - (14UL) /*!< HRPWM0_CSG2 PLC: PLXC (Bit 14) */ -#define HRPWM0_CSG2_PLC_PLXC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG2 PLC: PLXC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_BLV ------------------------------ */ -#define HRPWM0_CSG2_BLV_BLV_Pos \ - (0UL) /*!< HRPWM0_CSG2 BLV: BLV (Bit 0) */ -#define HRPWM0_CSG2_BLV_BLV_Msk \ - (0xffUL) /*!< HRPWM0_CSG2 BLV: BLV (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_CSG2_SRE ------------------------------ */ -#define HRPWM0_CSG2_SRE_VLS1E_Pos \ - (0UL) /*!< HRPWM0_CSG2 SRE: VLS1E (Bit 0) */ -#define HRPWM0_CSG2_SRE_VLS1E_Msk \ - (0x1UL) /*!< HRPWM0_CSG2 SRE: VLS1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_VLS2E_Pos \ - (1UL) /*!< HRPWM0_CSG2 SRE: VLS2E (Bit 1) */ -#define HRPWM0_CSG2_SRE_VLS2E_Msk \ - (0x2UL) /*!< HRPWM0_CSG2 SRE: VLS2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_TRGSE_Pos \ - (2UL) /*!< HRPWM0_CSG2 SRE: TRGSE (Bit 2) */ -#define HRPWM0_CSG2_SRE_TRGSE_Msk \ - (0x4UL) /*!< HRPWM0_CSG2 SRE: TRGSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_STRSE_Pos \ - (3UL) /*!< HRPWM0_CSG2 SRE: STRSE (Bit 3) */ -#define HRPWM0_CSG2_SRE_STRSE_Msk \ - (0x8UL) /*!< HRPWM0_CSG2 SRE: STRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_STPSE_Pos \ - (4UL) /*!< HRPWM0_CSG2 SRE: STPSE (Bit 4) */ -#define HRPWM0_CSG2_SRE_STPSE_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 SRE: STPSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_STDE_Pos \ - (5UL) /*!< HRPWM0_CSG2 SRE: STDE (Bit 5) */ -#define HRPWM0_CSG2_SRE_STDE_Msk \ - (0x20UL) /*!< HRPWM0_CSG2 SRE: STDE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_CRSE_Pos \ - (6UL) /*!< HRPWM0_CSG2 SRE: CRSE (Bit 6) */ -#define HRPWM0_CSG2_SRE_CRSE_Msk \ - (0x40UL) /*!< HRPWM0_CSG2 SRE: CRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_CFSE_Pos \ - (7UL) /*!< HRPWM0_CSG2 SRE: CFSE (Bit 7) */ -#define HRPWM0_CSG2_SRE_CFSE_Msk \ - (0x80UL) /*!< HRPWM0_CSG2 SRE: CFSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_CSEE_Pos \ - (8UL) /*!< HRPWM0_CSG2 SRE: CSEE (Bit 8) */ -#define HRPWM0_CSG2_SRE_CSEE_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 SRE: CSEE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG2_SRS ------------------------------ */ -#define HRPWM0_CSG2_SRS_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG2 SRS: VLS1S (Bit 0) */ -#define HRPWM0_CSG2_SRS_VLS1S_Msk \ - (0x3UL) /*!< HRPWM0_CSG2 SRS: VLS1S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_VLS2S_Pos \ - (2UL) /*!< HRPWM0_CSG2 SRS: VLS2S (Bit 2) */ -#define HRPWM0_CSG2_SRS_VLS2S_Msk \ - (0xcUL) /*!< HRPWM0_CSG2 SRS: VLS2S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_TRLS_Pos \ - (4UL) /*!< HRPWM0_CSG2 SRS: TRLS (Bit 4) */ -#define HRPWM0_CSG2_SRS_TRLS_Msk \ - (0x30UL) /*!< HRPWM0_CSG2 SRS: TRLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_SSLS_Pos \ - (6UL) /*!< HRPWM0_CSG2 SRS: SSLS (Bit 6) */ -#define HRPWM0_CSG2_SRS_SSLS_Msk \ - (0xc0UL) /*!< HRPWM0_CSG2 SRS: SSLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_STLS_Pos \ - (8UL) /*!< HRPWM0_CSG2 SRS: STLS (Bit 8) */ -#define HRPWM0_CSG2_SRS_STLS_Msk \ - (0x300UL) /*!< HRPWM0_CSG2 SRS: STLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_CRFLS_Pos \ - (10UL) /*!< HRPWM0_CSG2 SRS: CRFLS (Bit 10) */ -#define HRPWM0_CSG2_SRS_CRFLS_Msk \ - (0xc00UL) /*!< HRPWM0_CSG2 SRS: CRFLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_CSLS_Pos \ - (12UL) /*!< HRPWM0_CSG2 SRS: CSLS (Bit 12) */ -#define HRPWM0_CSG2_SRS_CSLS_Msk \ - (0x3000UL) /*!< HRPWM0_CSG2 SRS: CSLS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_SWS ------------------------------ */ -#define HRPWM0_CSG2_SWS_SVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG2 SWS: SVLS1 (Bit 0) */ -#define HRPWM0_CSG2_SWS_SVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG2 SWS: SVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG2 SWS: SVLS2 (Bit 1) */ -#define HRPWM0_CSG2_SWS_SVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG2 SWS: SVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_STRGS_Pos \ - (2UL) /*!< HRPWM0_CSG2 SWS: STRGS (Bit 2) */ -#define HRPWM0_CSG2_SWS_STRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG2 SWS: STRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG2 SWS: SSTRS (Bit 3) */ -#define HRPWM0_CSG2_SWS_SSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG2 SWS: SSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG2 SWS: SSTPS (Bit 4) */ -#define HRPWM0_CSG2_SWS_SSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 SWS: SSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SSTD_Pos \ - (5UL) /*!< HRPWM0_CSG2 SWS: SSTD (Bit 5) */ -#define HRPWM0_CSG2_SWS_SSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG2 SWS: SSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SCRS_Pos \ - (6UL) /*!< HRPWM0_CSG2 SWS: SCRS (Bit 6) */ -#define HRPWM0_CSG2_SWS_SCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG2 SWS: SCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SCFS_Pos \ - (7UL) /*!< HRPWM0_CSG2 SWS: SCFS (Bit 7) */ -#define HRPWM0_CSG2_SWS_SCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG2 SWS: SCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SCSS_Pos \ - (8UL) /*!< HRPWM0_CSG2 SWS: SCSS (Bit 8) */ -#define HRPWM0_CSG2_SWS_SCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 SWS: SCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG2_SWC ------------------------------ */ -#define HRPWM0_CSG2_SWC_CVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG2 SWC: CVLS1 (Bit 0) */ -#define HRPWM0_CSG2_SWC_CVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG2 SWC: CVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG2 SWC: CVLS2 (Bit 1) */ -#define HRPWM0_CSG2_SWC_CVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG2 SWC: CVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CTRGS_Pos \ - (2UL) /*!< HRPWM0_CSG2 SWC: CTRGS (Bit 2) */ -#define HRPWM0_CSG2_SWC_CTRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG2 SWC: CTRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG2 SWC: CSTRS (Bit 3) */ -#define HRPWM0_CSG2_SWC_CSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG2 SWC: CSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG2 SWC: CSTPS (Bit 4) */ -#define HRPWM0_CSG2_SWC_CSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 SWC: CSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CSTD_Pos \ - (5UL) /*!< HRPWM0_CSG2 SWC: CSTD (Bit 5) */ -#define HRPWM0_CSG2_SWC_CSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG2 SWC: CSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CCRS_Pos \ - (6UL) /*!< HRPWM0_CSG2 SWC: CCRS (Bit 6) */ -#define HRPWM0_CSG2_SWC_CCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG2 SWC: CCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CCFS_Pos \ - (7UL) /*!< HRPWM0_CSG2 SWC: CCFS (Bit 7) */ -#define HRPWM0_CSG2_SWC_CCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG2 SWC: CCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CCSS_Pos \ - (8UL) /*!< HRPWM0_CSG2 SWC: CCSS (Bit 8) */ -#define HRPWM0_CSG2_SWC_CCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 SWC: CCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_CSG2_ISTAT ----------------------------- */ -#define HRPWM0_CSG2_ISTAT_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG2 ISTAT: VLS1S (Bit 0) */ -#define HRPWM0_CSG2_ISTAT_VLS1S_Msk \ - (0x1UL) /*!< HRPWM0_CSG2 ISTAT: VLS1S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_VLS2S_Pos \ - (1UL) /*!< HRPWM0_CSG2 ISTAT: VLS2S (Bit 1) */ -#define HRPWM0_CSG2_ISTAT_VLS2S_Msk \ - (0x2UL) /*!< HRPWM0_CSG2 ISTAT: VLS2S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_TRGSS_Pos \ - (2UL) /*!< HRPWM0_CSG2 ISTAT: TRGSS (Bit 2) */ -#define HRPWM0_CSG2_ISTAT_TRGSS_Msk \ - (0x4UL) /*!< HRPWM0_CSG2 ISTAT: TRGSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_STRSS_Pos \ - (3UL) /*!< HRPWM0_CSG2 ISTAT: STRSS (Bit 3) */ -#define HRPWM0_CSG2_ISTAT_STRSS_Msk \ - (0x8UL) /*!< HRPWM0_CSG2 ISTAT: STRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_STPSS_Pos \ - (4UL) /*!< HRPWM0_CSG2 ISTAT: STPSS (Bit 4) */ -#define HRPWM0_CSG2_ISTAT_STPSS_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 ISTAT: STPSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_STDS_Pos \ - (5UL) /*!< HRPWM0_CSG2 ISTAT: STDS (Bit 5) */ -#define HRPWM0_CSG2_ISTAT_STDS_Msk \ - (0x20UL) /*!< HRPWM0_CSG2 ISTAT: STDS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_CRSS_Pos \ - (6UL) /*!< HRPWM0_CSG2 ISTAT: CRSS (Bit 6) */ -#define HRPWM0_CSG2_ISTAT_CRSS_Msk \ - (0x40UL) /*!< HRPWM0_CSG2 ISTAT: CRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_CFSS_Pos \ - (7UL) /*!< HRPWM0_CSG2 ISTAT: CFSS (Bit 7) */ -#define HRPWM0_CSG2_ISTAT_CFSS_Msk \ - (0x80UL) /*!< HRPWM0_CSG2 ISTAT: CFSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_CSES_Pos \ - (8UL) /*!< HRPWM0_CSG2 ISTAT: CSES (Bit 8) */ -#define HRPWM0_CSG2_ISTAT_CSES_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 ISTAT: CSES (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'HRPWM0_HRC' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- HRPWM0_HRC_GC ------------------------------- */ -#define HRPWM0_HRC_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC GC: DTE (Bit 8) */ -#define HRPWM0_HRC_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC GC: TR0E (Bit 9) */ -#define HRPWM0_HRC_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC GC: TR1E (Bit 10) */ -#define HRPWM0_HRC_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC GC: STC (Bit 11) */ -#define HRPWM0_HRC_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC GC: DSTC (Bit 12) */ -#define HRPWM0_HRC_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC GC: DTUS (Bit 16) */ -#define HRPWM0_HRC_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC GC: DTUS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_HRC_PL ------------------------------- */ -#define HRPWM0_HRC_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC_GSEL ------------------------------ */ -#define HRPWM0_HRC_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_HRC_TSEL ------------------------------ */ -#define HRPWM0_HRC_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_HRC_SC ------------------------------- */ -#define HRPWM0_HRC_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC SC: ST (Bit 0) */ -#define HRPWM0_HRC_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC_DCR ------------------------------- */ -#define HRPWM0_HRC_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC_DCF ------------------------------- */ -#define HRPWM0_HRC_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC_CR1 ------------------------------- */ -#define HRPWM0_HRC_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC_CR2 ------------------------------- */ -#define HRPWM0_HRC_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC_SSC ------------------------------- */ -#define HRPWM0_HRC_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC SSC: SST (Bit 0) */ -#define HRPWM0_HRC_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC_SDCR ------------------------------ */ -#define HRPWM0_HRC_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC_SDCF ------------------------------ */ -#define HRPWM0_HRC_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC_SCR1 ------------------------------ */ -#define HRPWM0_HRC_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC_SCR2 ------------------------------ */ -#define HRPWM0_HRC_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_HRC0' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_HRC0_GC ------------------------------- */ -#define HRPWM0_HRC0_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC0 GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC0_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC0 GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC0 GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC0_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC0 GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC0 GC: DTE (Bit 8) */ -#define HRPWM0_HRC0_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC0 GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC0 GC: TR0E (Bit 9) */ -#define HRPWM0_HRC0_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC0 GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC0 GC: TR1E (Bit 10) */ -#define HRPWM0_HRC0_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC0 GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC0 GC: STC (Bit 11) */ -#define HRPWM0_HRC0_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC0 GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC0 GC: DSTC (Bit 12) */ -#define HRPWM0_HRC0_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC0 GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC0 GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC0_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC0 GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC0 GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC0_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC0 GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC0 GC: DTUS (Bit 16) */ -#define HRPWM0_HRC0_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC0 GC: DTUS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC0_PL ------------------------------- */ -#define HRPWM0_HRC0_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC0 PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC0_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC0 PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC0 PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC0_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC0 PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC0_GSEL ------------------------------ */ -#define HRPWM0_HRC0_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC0 GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC0_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC0 GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC0 GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC0_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC0 GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC0 GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC0_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC0 GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC0 GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC0_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC0 GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC0 GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC0_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC0 GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC0 GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC0_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC0 GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC0 GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC0_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC0 GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC0 GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC0_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC0 GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC0 GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC0_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC0 GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC0 GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC0_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC0 GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC0 GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC0_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC0 GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC0 GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC0_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC0 GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------ HRPWM0_HRC0_TSEL ------------------------------ */ -#define HRPWM0_HRC0_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC0 TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC0_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC0 TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC0 TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC0_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC0 TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC0 TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC0_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC0 TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC0 TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC0_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC0 TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC0_SC ------------------------------- */ -#define HRPWM0_HRC0_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC0 SC: ST (Bit 0) */ -#define HRPWM0_HRC0_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC0 SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC0_DCR ------------------------------ */ -#define HRPWM0_HRC0_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC0 DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC0_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC0 DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC0_DCF ------------------------------ */ -#define HRPWM0_HRC0_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC0 DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC0_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC0 DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC0_CR1 ------------------------------ */ -#define HRPWM0_HRC0_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC0 CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC0_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC0 CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC0_CR2 ------------------------------ */ -#define HRPWM0_HRC0_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC0 CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC0_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC0 CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC0_SSC ------------------------------ */ -#define HRPWM0_HRC0_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC0 SSC: SST (Bit 0) */ -#define HRPWM0_HRC0_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC0 SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC0_SDCR ------------------------------ */ -#define HRPWM0_HRC0_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC0 SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC0_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC0 SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC0_SDCF ------------------------------ */ -#define HRPWM0_HRC0_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC0 SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC0_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC0 SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC0_SCR1 ------------------------------ */ -#define HRPWM0_HRC0_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC0 SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC0_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC0 SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------ HRPWM0_HRC0_SCR2 ------------------------------ */ -#define HRPWM0_HRC0_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC0 SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC0_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC0 SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_HRC1' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_HRC1_GC ------------------------------- */ -#define HRPWM0_HRC1_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC1 GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC1_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC1 GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC1 GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC1_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC1 GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC1 GC: DTE (Bit 8) */ -#define HRPWM0_HRC1_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC1 GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC1 GC: TR0E (Bit 9) */ -#define HRPWM0_HRC1_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC1 GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC1 GC: TR1E (Bit 10) */ -#define HRPWM0_HRC1_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC1 GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC1 GC: STC (Bit 11) */ -#define HRPWM0_HRC1_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC1 GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC1 GC: DSTC (Bit 12) */ -#define HRPWM0_HRC1_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC1 GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC1 GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC1_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC1 GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC1 GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC1_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC1 GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC1 GC: DTUS (Bit 16) */ -#define HRPWM0_HRC1_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC1 GC: DTUS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC1_PL ------------------------------- */ -#define HRPWM0_HRC1_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC1 PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC1_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC1 PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC1 PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC1_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC1 PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC1_GSEL ------------------------------ */ -#define HRPWM0_HRC1_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC1 GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC1_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC1 GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC1 GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC1_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC1 GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC1 GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC1_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC1 GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC1 GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC1_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC1 GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC1 GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC1_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC1 GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC1 GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC1_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC1 GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC1 GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC1_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC1 GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC1 GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC1_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC1 GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC1 GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC1_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC1 GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC1 GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC1_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC1 GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC1 GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC1_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC1 GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC1 GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC1_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC1 GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------ HRPWM0_HRC1_TSEL ------------------------------ */ -#define HRPWM0_HRC1_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC1 TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC1_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC1 TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC1 TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC1_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC1 TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC1 TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC1_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC1 TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC1 TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC1_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC1 TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC1_SC ------------------------------- */ -#define HRPWM0_HRC1_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC1 SC: ST (Bit 0) */ -#define HRPWM0_HRC1_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC1 SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC1_DCR ------------------------------ */ -#define HRPWM0_HRC1_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC1 DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC1_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC1 DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC1_DCF ------------------------------ */ -#define HRPWM0_HRC1_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC1 DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC1_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC1 DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC1_CR1 ------------------------------ */ -#define HRPWM0_HRC1_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC1 CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC1_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC1 CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC1_CR2 ------------------------------ */ -#define HRPWM0_HRC1_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC1 CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC1_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC1 CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC1_SSC ------------------------------ */ -#define HRPWM0_HRC1_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC1 SSC: SST (Bit 0) */ -#define HRPWM0_HRC1_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC1 SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC1_SDCR ------------------------------ */ -#define HRPWM0_HRC1_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC1 SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC1_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC1 SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC1_SDCF ------------------------------ */ -#define HRPWM0_HRC1_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC1 SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC1_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC1 SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC1_SCR1 ------------------------------ */ -#define HRPWM0_HRC1_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC1 SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC1_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC1 SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------ HRPWM0_HRC1_SCR2 ------------------------------ */ -#define HRPWM0_HRC1_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC1 SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC1_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC1 SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_HRC2' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_HRC2_GC ------------------------------- */ -#define HRPWM0_HRC2_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC2 GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC2_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC2 GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC2 GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC2_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC2 GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC2 GC: DTE (Bit 8) */ -#define HRPWM0_HRC2_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC2 GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC2 GC: TR0E (Bit 9) */ -#define HRPWM0_HRC2_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC2 GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC2 GC: TR1E (Bit 10) */ -#define HRPWM0_HRC2_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC2 GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC2 GC: STC (Bit 11) */ -#define HRPWM0_HRC2_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC2 GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC2 GC: DSTC (Bit 12) */ -#define HRPWM0_HRC2_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC2 GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC2 GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC2_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC2 GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC2 GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC2_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC2 GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC2 GC: DTUS (Bit 16) */ -#define HRPWM0_HRC2_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC2 GC: DTUS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC2_PL ------------------------------- */ -#define HRPWM0_HRC2_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC2 PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC2_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC2 PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC2 PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC2_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC2 PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC2_GSEL ------------------------------ */ -#define HRPWM0_HRC2_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC2 GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC2_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC2 GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC2 GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC2_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC2 GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC2 GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC2_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC2 GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC2 GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC2_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC2 GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC2 GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC2_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC2 GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC2 GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC2_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC2 GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC2 GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC2_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC2 GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC2 GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC2_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC2 GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC2 GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC2_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC2 GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC2 GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC2_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC2 GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC2 GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC2_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC2 GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC2 GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC2_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC2 GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------ HRPWM0_HRC2_TSEL ------------------------------ */ -#define HRPWM0_HRC2_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC2 TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC2_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC2 TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC2 TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC2_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC2 TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC2 TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC2_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC2 TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC2 TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC2_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC2 TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC2_SC ------------------------------- */ -#define HRPWM0_HRC2_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC2 SC: ST (Bit 0) */ -#define HRPWM0_HRC2_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC2 SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC2_DCR ------------------------------ */ -#define HRPWM0_HRC2_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC2 DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC2_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC2 DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC2_DCF ------------------------------ */ -#define HRPWM0_HRC2_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC2 DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC2_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC2 DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC2_CR1 ------------------------------ */ -#define HRPWM0_HRC2_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC2 CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC2_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC2 CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC2_CR2 ------------------------------ */ -#define HRPWM0_HRC2_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC2 CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC2_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC2 CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC2_SSC ------------------------------ */ -#define HRPWM0_HRC2_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC2 SSC: SST (Bit 0) */ -#define HRPWM0_HRC2_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC2 SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC2_SDCR ------------------------------ */ -#define HRPWM0_HRC2_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC2 SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC2_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC2 SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC2_SDCF ------------------------------ */ -#define HRPWM0_HRC2_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC2 SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC2_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC2 SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC2_SCR1 ------------------------------ */ -#define HRPWM0_HRC2_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC2 SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC2_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC2 SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------ HRPWM0_HRC2_SCR2 ------------------------------ */ -#define HRPWM0_HRC2_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC2 SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC2_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC2 SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_HRC3' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_HRC3_GC ------------------------------- */ -#define HRPWM0_HRC3_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC3 GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC3_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC3 GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC3 GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC3_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC3 GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC3 GC: DTE (Bit 8) */ -#define HRPWM0_HRC3_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC3 GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC3 GC: TR0E (Bit 9) */ -#define HRPWM0_HRC3_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC3 GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC3 GC: TR1E (Bit 10) */ -#define HRPWM0_HRC3_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC3 GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC3 GC: STC (Bit 11) */ -#define HRPWM0_HRC3_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC3 GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC3 GC: DSTC (Bit 12) */ -#define HRPWM0_HRC3_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC3 GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC3 GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC3_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC3 GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC3 GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC3_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC3 GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC3 GC: DTUS (Bit 16) */ -#define HRPWM0_HRC3_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC3 GC: DTUS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC3_PL ------------------------------- */ -#define HRPWM0_HRC3_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC3 PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC3_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC3 PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC3 PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC3_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC3 PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC3_GSEL ------------------------------ */ -#define HRPWM0_HRC3_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC3 GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC3_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC3 GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC3 GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC3_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC3 GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC3 GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC3_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC3 GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC3 GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC3_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC3 GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC3 GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC3_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC3 GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC3 GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC3_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC3 GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC3 GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC3_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC3 GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC3 GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC3_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC3 GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC3 GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC3_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC3 GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC3 GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC3_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC3 GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC3 GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC3_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC3 GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC3 GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC3_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC3 GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------ HRPWM0_HRC3_TSEL ------------------------------ */ -#define HRPWM0_HRC3_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC3 TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC3_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC3 TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC3 TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC3_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC3 TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC3 TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC3_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC3 TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC3 TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC3_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC3 TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC3_SC ------------------------------- */ -#define HRPWM0_HRC3_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC3 SC: ST (Bit 0) */ -#define HRPWM0_HRC3_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC3 SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC3_DCR ------------------------------ */ -#define HRPWM0_HRC3_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC3 DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC3_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC3 DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC3_DCF ------------------------------ */ -#define HRPWM0_HRC3_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC3 DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC3_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC3 DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC3_CR1 ------------------------------ */ -#define HRPWM0_HRC3_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC3 CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC3_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC3 CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC3_CR2 ------------------------------ */ -#define HRPWM0_HRC3_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC3 CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC3_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC3 CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC3_SSC ------------------------------ */ -#define HRPWM0_HRC3_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC3 SSC: SST (Bit 0) */ -#define HRPWM0_HRC3_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC3 SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC3_SDCR ------------------------------ */ -#define HRPWM0_HRC3_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC3 SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC3_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC3 SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC3_SDCF ------------------------------ */ -#define HRPWM0_HRC3_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC3 SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC3_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC3 SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC3_SCR1 ------------------------------ */ -#define HRPWM0_HRC3_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC3 SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC3_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC3 SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------ HRPWM0_HRC3_SCR2 ------------------------------ */ -#define HRPWM0_HRC3_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC3 SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC3_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC3 SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ Group 'POSIF' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- POSIF_PCONF -------------------------------- */ -#define POSIF_PCONF_FSEL_Pos \ - (0UL) /*!< POSIF PCONF: FSEL (Bit 0) */ -#define POSIF_PCONF_FSEL_Msk \ - (0x3UL) /*!< POSIF PCONF: FSEL (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_QDCM_Pos \ - (2UL) /*!< POSIF PCONF: QDCM (Bit 2) */ -#define POSIF_PCONF_QDCM_Msk \ - (0x4UL) /*!< POSIF PCONF: QDCM (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_HIDG_Pos \ - (4UL) /*!< POSIF PCONF: HIDG (Bit 4) */ -#define POSIF_PCONF_HIDG_Msk \ - (0x10UL) /*!< POSIF PCONF: HIDG (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_MCUE_Pos \ - (5UL) /*!< POSIF PCONF: MCUE (Bit 5) */ -#define POSIF_PCONF_MCUE_Msk \ - (0x20UL) /*!< POSIF PCONF: MCUE (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_INSEL0_Pos \ - (8UL) /*!< POSIF PCONF: INSEL0 (Bit 8) */ -#define POSIF_PCONF_INSEL0_Msk \ - (0x300UL) /*!< POSIF PCONF: INSEL0 (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_INSEL1_Pos \ - (10UL) /*!< POSIF PCONF: INSEL1 (Bit 10) */ -#define POSIF_PCONF_INSEL1_Msk \ - (0xc00UL) /*!< POSIF PCONF: INSEL1 (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_INSEL2_Pos \ - (12UL) /*!< POSIF PCONF: INSEL2 (Bit 12) */ -#define POSIF_PCONF_INSEL2_Msk \ - (0x3000UL) /*!< POSIF PCONF: INSEL2 (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_DSEL_Pos \ - (16UL) /*!< POSIF PCONF: DSEL (Bit 16) */ -#define POSIF_PCONF_DSEL_Msk \ - (0x10000UL) /*!< POSIF PCONF: DSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_SPES_Pos \ - (17UL) /*!< POSIF PCONF: SPES (Bit 17) */ -#define POSIF_PCONF_SPES_Msk \ - (0x20000UL) /*!< POSIF PCONF: SPES (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_MSETS_Pos \ - (18UL) /*!< POSIF PCONF: MSETS (Bit 18) */ -#define POSIF_PCONF_MSETS_Msk \ - (0x1c0000UL) /*!< POSIF PCONF: MSETS (Bitfield-Mask: 0x07) */ -#define POSIF_PCONF_MSES_Pos \ - (21UL) /*!< POSIF PCONF: MSES (Bit 21) */ -#define POSIF_PCONF_MSES_Msk \ - (0x200000UL) /*!< POSIF PCONF: MSES (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_MSYNS_Pos \ - (22UL) /*!< POSIF PCONF: MSYNS (Bit 22) */ -#define POSIF_PCONF_MSYNS_Msk \ - (0xc00000UL) /*!< POSIF PCONF: MSYNS (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_EWIS_Pos \ - (24UL) /*!< POSIF PCONF: EWIS (Bit 24) */ -#define POSIF_PCONF_EWIS_Msk \ - (0x3000000UL) /*!< POSIF PCONF: EWIS (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_EWIE_Pos \ - (26UL) /*!< POSIF PCONF: EWIE (Bit 26) */ -#define POSIF_PCONF_EWIE_Msk \ - (0x4000000UL) /*!< POSIF PCONF: EWIE (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_EWIL_Pos \ - (27UL) /*!< POSIF PCONF: EWIL (Bit 27) */ -#define POSIF_PCONF_EWIL_Msk \ - (0x8000000UL) /*!< POSIF PCONF: EWIL (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_LPC_Pos \ - (28UL) /*!< POSIF PCONF: LPC (Bit 28) */ -#define POSIF_PCONF_LPC_Msk \ - (0x70000000UL) /*!< POSIF PCONF: LPC (Bitfield-Mask: 0x07) */ - -/* --------------------------------- POSIF_PSUS --------------------------------- */ -#define POSIF_PSUS_QSUS_Pos \ - (0UL) /*!< POSIF PSUS: QSUS (Bit 0) */ -#define POSIF_PSUS_QSUS_Msk \ - (0x3UL) /*!< POSIF PSUS: QSUS (Bitfield-Mask: 0x03) */ -#define POSIF_PSUS_MSUS_Pos \ - (2UL) /*!< POSIF PSUS: MSUS (Bit 2) */ -#define POSIF_PSUS_MSUS_Msk \ - (0xcUL) /*!< POSIF PSUS: MSUS (Bitfield-Mask: 0x03) */ - -/* --------------------------------- POSIF_PRUNS -------------------------------- */ -#define POSIF_PRUNS_SRB_Pos \ - (0UL) /*!< POSIF PRUNS: SRB (Bit 0) */ -#define POSIF_PRUNS_SRB_Msk \ - (0x1UL) /*!< POSIF PRUNS: SRB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PRUNC -------------------------------- */ -#define POSIF_PRUNC_CRB_Pos \ - (0UL) /*!< POSIF PRUNC: CRB (Bit 0) */ -#define POSIF_PRUNC_CRB_Msk \ - (0x1UL) /*!< POSIF PRUNC: CRB (Bitfield-Mask: 0x01) */ -#define POSIF_PRUNC_CSM_Pos \ - (1UL) /*!< POSIF PRUNC: CSM (Bit 1) */ -#define POSIF_PRUNC_CSM_Msk \ - (0x2UL) /*!< POSIF PRUNC: CSM (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PRUN --------------------------------- */ -#define POSIF_PRUN_RB_Pos (0UL) /*!< POSIF PRUN: RB (Bit 0) */ -#define POSIF_PRUN_RB_Msk \ - (0x1UL) /*!< POSIF PRUN: RB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_MIDR --------------------------------- */ -#define POSIF_MIDR_MODR_Pos \ - (0UL) /*!< POSIF MIDR: MODR (Bit 0) */ -#define POSIF_MIDR_MODR_Msk \ - (0xffUL) /*!< POSIF MIDR: MODR (Bitfield-Mask: 0xff) */ -#define POSIF_MIDR_MODT_Pos \ - (8UL) /*!< POSIF MIDR: MODT (Bit 8) */ -#define POSIF_MIDR_MODT_Msk \ - (0xff00UL) /*!< POSIF MIDR: MODT (Bitfield-Mask: 0xff) */ -#define POSIF_MIDR_MODN_Pos \ - (16UL) /*!< POSIF MIDR: MODN (Bit 16) */ -#define POSIF_MIDR_MODN_Msk \ - (0xffff0000UL) /*!< POSIF MIDR: MODN (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- POSIF_HALP --------------------------------- */ -#define POSIF_HALP_HCP_Pos (0UL) /*!< POSIF HALP: HCP (Bit 0) */ -#define POSIF_HALP_HCP_Msk \ - (0x7UL) /*!< POSIF HALP: HCP (Bitfield-Mask: 0x07) */ -#define POSIF_HALP_HEP_Pos (3UL) /*!< POSIF HALP: HEP (Bit 3) */ -#define POSIF_HALP_HEP_Msk \ - (0x38UL) /*!< POSIF HALP: HEP (Bitfield-Mask: 0x07) */ - -/* --------------------------------- POSIF_HALPS -------------------------------- */ -#define POSIF_HALPS_HCPS_Pos \ - (0UL) /*!< POSIF HALPS: HCPS (Bit 0) */ -#define POSIF_HALPS_HCPS_Msk \ - (0x7UL) /*!< POSIF HALPS: HCPS (Bitfield-Mask: 0x07) */ -#define POSIF_HALPS_HEPS_Pos \ - (3UL) /*!< POSIF HALPS: HEPS (Bit 3) */ -#define POSIF_HALPS_HEPS_Msk \ - (0x38UL) /*!< POSIF HALPS: HEPS (Bitfield-Mask: 0x07) */ - -/* ---------------------------------- POSIF_MCM --------------------------------- */ -#define POSIF_MCM_MCMP_Pos (0UL) /*!< POSIF MCM: MCMP (Bit 0) */ -#define POSIF_MCM_MCMP_Msk \ - (0xffffUL) /*!< POSIF MCM: MCMP (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- POSIF_MCSM --------------------------------- */ -#define POSIF_MCSM_MCMPS_Pos \ - (0UL) /*!< POSIF MCSM: MCMPS (Bit 0) */ -#define POSIF_MCSM_MCMPS_Msk \ - (0xffffUL) /*!< POSIF MCSM: MCMPS (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- POSIF_MCMS --------------------------------- */ -#define POSIF_MCMS_MNPS_Pos \ - (0UL) /*!< POSIF MCMS: MNPS (Bit 0) */ -#define POSIF_MCMS_MNPS_Msk \ - (0x1UL) /*!< POSIF MCMS: MNPS (Bitfield-Mask: 0x01) */ -#define POSIF_MCMS_STHR_Pos \ - (1UL) /*!< POSIF MCMS: STHR (Bit 1) */ -#define POSIF_MCMS_STHR_Msk \ - (0x2UL) /*!< POSIF MCMS: STHR (Bitfield-Mask: 0x01) */ -#define POSIF_MCMS_STMR_Pos \ - (2UL) /*!< POSIF MCMS: STMR (Bit 2) */ -#define POSIF_MCMS_STMR_Msk \ - (0x4UL) /*!< POSIF MCMS: STMR (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_MCMC --------------------------------- */ -#define POSIF_MCMC_MNPC_Pos \ - (0UL) /*!< POSIF MCMC: MNPC (Bit 0) */ -#define POSIF_MCMC_MNPC_Msk \ - (0x1UL) /*!< POSIF MCMC: MNPC (Bitfield-Mask: 0x01) */ -#define POSIF_MCMC_MPC_Pos (1UL) /*!< POSIF MCMC: MPC (Bit 1) */ -#define POSIF_MCMC_MPC_Msk \ - (0x2UL) /*!< POSIF MCMC: MPC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_MCMF --------------------------------- */ -#define POSIF_MCMF_MSS_Pos (0UL) /*!< POSIF MCMF: MSS (Bit 0) */ -#define POSIF_MCMF_MSS_Msk \ - (0x1UL) /*!< POSIF MCMF: MSS (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- POSIF_QDC --------------------------------- */ -#define POSIF_QDC_PALS_Pos (0UL) /*!< POSIF QDC: PALS (Bit 0) */ -#define POSIF_QDC_PALS_Msk \ - (0x1UL) /*!< POSIF QDC: PALS (Bitfield-Mask: 0x01) */ -#define POSIF_QDC_PBLS_Pos (1UL) /*!< POSIF QDC: PBLS (Bit 1) */ -#define POSIF_QDC_PBLS_Msk \ - (0x2UL) /*!< POSIF QDC: PBLS (Bitfield-Mask: 0x01) */ -#define POSIF_QDC_PHS_Pos (2UL) /*!< POSIF QDC: PHS (Bit 2) */ -#define POSIF_QDC_PHS_Msk \ - (0x4UL) /*!< POSIF QDC: PHS (Bitfield-Mask: 0x01) */ -#define POSIF_QDC_ICM_Pos (4UL) /*!< POSIF QDC: ICM (Bit 4) */ -#define POSIF_QDC_ICM_Msk \ - (0x30UL) /*!< POSIF QDC: ICM (Bitfield-Mask: 0x03) */ -#define POSIF_QDC_DVAL_Pos (8UL) /*!< POSIF QDC: DVAL (Bit 8) */ -#define POSIF_QDC_DVAL_Msk \ - (0x100UL) /*!< POSIF QDC: DVAL (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PFLG --------------------------------- */ -#define POSIF_PFLG_CHES_Pos \ - (0UL) /*!< POSIF PFLG: CHES (Bit 0) */ -#define POSIF_PFLG_CHES_Msk \ - (0x1UL) /*!< POSIF PFLG: CHES (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_WHES_Pos \ - (1UL) /*!< POSIF PFLG: WHES (Bit 1) */ -#define POSIF_PFLG_WHES_Msk \ - (0x2UL) /*!< POSIF PFLG: WHES (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_HIES_Pos \ - (2UL) /*!< POSIF PFLG: HIES (Bit 2) */ -#define POSIF_PFLG_HIES_Msk \ - (0x4UL) /*!< POSIF PFLG: HIES (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_MSTS_Pos \ - (4UL) /*!< POSIF PFLG: MSTS (Bit 4) */ -#define POSIF_PFLG_MSTS_Msk \ - (0x10UL) /*!< POSIF PFLG: MSTS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_INDXS_Pos \ - (8UL) /*!< POSIF PFLG: INDXS (Bit 8) */ -#define POSIF_PFLG_INDXS_Msk \ - (0x100UL) /*!< POSIF PFLG: INDXS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_ERRS_Pos \ - (9UL) /*!< POSIF PFLG: ERRS (Bit 9) */ -#define POSIF_PFLG_ERRS_Msk \ - (0x200UL) /*!< POSIF PFLG: ERRS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_CNTS_Pos \ - (10UL) /*!< POSIF PFLG: CNTS (Bit 10) */ -#define POSIF_PFLG_CNTS_Msk \ - (0x400UL) /*!< POSIF PFLG: CNTS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_DIRS_Pos \ - (11UL) /*!< POSIF PFLG: DIRS (Bit 11) */ -#define POSIF_PFLG_DIRS_Msk \ - (0x800UL) /*!< POSIF PFLG: DIRS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_PCLKS_Pos \ - (12UL) /*!< POSIF PFLG: PCLKS (Bit 12) */ -#define POSIF_PFLG_PCLKS_Msk \ - (0x1000UL) /*!< POSIF PFLG: PCLKS (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PFLGE -------------------------------- */ -#define POSIF_PFLGE_ECHE_Pos \ - (0UL) /*!< POSIF PFLGE: ECHE (Bit 0) */ -#define POSIF_PFLGE_ECHE_Msk \ - (0x1UL) /*!< POSIF PFLGE: ECHE (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EWHE_Pos \ - (1UL) /*!< POSIF PFLGE: EWHE (Bit 1) */ -#define POSIF_PFLGE_EWHE_Msk \ - (0x2UL) /*!< POSIF PFLGE: EWHE (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EHIE_Pos \ - (2UL) /*!< POSIF PFLGE: EHIE (Bit 2) */ -#define POSIF_PFLGE_EHIE_Msk \ - (0x4UL) /*!< POSIF PFLGE: EHIE (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EMST_Pos \ - (4UL) /*!< POSIF PFLGE: EMST (Bit 4) */ -#define POSIF_PFLGE_EMST_Msk \ - (0x10UL) /*!< POSIF PFLGE: EMST (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EINDX_Pos \ - (8UL) /*!< POSIF PFLGE: EINDX (Bit 8) */ -#define POSIF_PFLGE_EINDX_Msk \ - (0x100UL) /*!< POSIF PFLGE: EINDX (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EERR_Pos \ - (9UL) /*!< POSIF PFLGE: EERR (Bit 9) */ -#define POSIF_PFLGE_EERR_Msk \ - (0x200UL) /*!< POSIF PFLGE: EERR (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_ECNT_Pos \ - (10UL) /*!< POSIF PFLGE: ECNT (Bit 10) */ -#define POSIF_PFLGE_ECNT_Msk \ - (0x400UL) /*!< POSIF PFLGE: ECNT (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EDIR_Pos \ - (11UL) /*!< POSIF PFLGE: EDIR (Bit 11) */ -#define POSIF_PFLGE_EDIR_Msk \ - (0x800UL) /*!< POSIF PFLGE: EDIR (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EPCLK_Pos \ - (12UL) /*!< POSIF PFLGE: EPCLK (Bit 12) */ -#define POSIF_PFLGE_EPCLK_Msk \ - (0x1000UL) /*!< POSIF PFLGE: EPCLK (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_CHESEL_Pos \ - (16UL) /*!< POSIF PFLGE: CHESEL (Bit 16) */ -#define POSIF_PFLGE_CHESEL_Msk \ - (0x10000UL) /*!< POSIF PFLGE: CHESEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_WHESEL_Pos \ - (17UL) /*!< POSIF PFLGE: WHESEL (Bit 17) */ -#define POSIF_PFLGE_WHESEL_Msk \ - (0x20000UL) /*!< POSIF PFLGE: WHESEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_HIESEL_Pos \ - (18UL) /*!< POSIF PFLGE: HIESEL (Bit 18) */ -#define POSIF_PFLGE_HIESEL_Msk \ - (0x40000UL) /*!< POSIF PFLGE: HIESEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_MSTSEL_Pos \ - (20UL) /*!< POSIF PFLGE: MSTSEL (Bit 20) */ -#define POSIF_PFLGE_MSTSEL_Msk \ - (0x100000UL) /*!< POSIF PFLGE: MSTSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_INDSEL_Pos \ - (24UL) /*!< POSIF PFLGE: INDSEL (Bit 24) */ -#define POSIF_PFLGE_INDSEL_Msk \ - (0x1000000UL) /*!< POSIF PFLGE: INDSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_ERRSEL_Pos \ - (25UL) /*!< POSIF PFLGE: ERRSEL (Bit 25) */ -#define POSIF_PFLGE_ERRSEL_Msk \ - (0x2000000UL) /*!< POSIF PFLGE: ERRSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_CNTSEL_Pos \ - (26UL) /*!< POSIF PFLGE: CNTSEL (Bit 26) */ -#define POSIF_PFLGE_CNTSEL_Msk \ - (0x4000000UL) /*!< POSIF PFLGE: CNTSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_DIRSEL_Pos \ - (27UL) /*!< POSIF PFLGE: DIRSEL (Bit 27) */ -#define POSIF_PFLGE_DIRSEL_Msk \ - (0x8000000UL) /*!< POSIF PFLGE: DIRSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_PCLSEL_Pos \ - (28UL) /*!< POSIF PFLGE: PCLSEL (Bit 28) */ -#define POSIF_PFLGE_PCLSEL_Msk \ - (0x10000000UL) /*!< POSIF PFLGE: PCLSEL (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_SPFLG -------------------------------- */ -#define POSIF_SPFLG_SCHE_Pos \ - (0UL) /*!< POSIF SPFLG: SCHE (Bit 0) */ -#define POSIF_SPFLG_SCHE_Msk \ - (0x1UL) /*!< POSIF SPFLG: SCHE (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SWHE_Pos \ - (1UL) /*!< POSIF SPFLG: SWHE (Bit 1) */ -#define POSIF_SPFLG_SWHE_Msk \ - (0x2UL) /*!< POSIF SPFLG: SWHE (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SHIE_Pos \ - (2UL) /*!< POSIF SPFLG: SHIE (Bit 2) */ -#define POSIF_SPFLG_SHIE_Msk \ - (0x4UL) /*!< POSIF SPFLG: SHIE (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SMST_Pos \ - (4UL) /*!< POSIF SPFLG: SMST (Bit 4) */ -#define POSIF_SPFLG_SMST_Msk \ - (0x10UL) /*!< POSIF SPFLG: SMST (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SINDX_Pos \ - (8UL) /*!< POSIF SPFLG: SINDX (Bit 8) */ -#define POSIF_SPFLG_SINDX_Msk \ - (0x100UL) /*!< POSIF SPFLG: SINDX (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SERR_Pos \ - (9UL) /*!< POSIF SPFLG: SERR (Bit 9) */ -#define POSIF_SPFLG_SERR_Msk \ - (0x200UL) /*!< POSIF SPFLG: SERR (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SCNT_Pos \ - (10UL) /*!< POSIF SPFLG: SCNT (Bit 10) */ -#define POSIF_SPFLG_SCNT_Msk \ - (0x400UL) /*!< POSIF SPFLG: SCNT (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SDIR_Pos \ - (11UL) /*!< POSIF SPFLG: SDIR (Bit 11) */ -#define POSIF_SPFLG_SDIR_Msk \ - (0x800UL) /*!< POSIF SPFLG: SDIR (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SPCLK_Pos \ - (12UL) /*!< POSIF SPFLG: SPCLK (Bit 12) */ -#define POSIF_SPFLG_SPCLK_Msk \ - (0x1000UL) /*!< POSIF SPFLG: SPCLK (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_RPFLG -------------------------------- */ -#define POSIF_RPFLG_RCHE_Pos \ - (0UL) /*!< POSIF RPFLG: RCHE (Bit 0) */ -#define POSIF_RPFLG_RCHE_Msk \ - (0x1UL) /*!< POSIF RPFLG: RCHE (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RWHE_Pos \ - (1UL) /*!< POSIF RPFLG: RWHE (Bit 1) */ -#define POSIF_RPFLG_RWHE_Msk \ - (0x2UL) /*!< POSIF RPFLG: RWHE (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RHIE_Pos \ - (2UL) /*!< POSIF RPFLG: RHIE (Bit 2) */ -#define POSIF_RPFLG_RHIE_Msk \ - (0x4UL) /*!< POSIF RPFLG: RHIE (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RMST_Pos \ - (4UL) /*!< POSIF RPFLG: RMST (Bit 4) */ -#define POSIF_RPFLG_RMST_Msk \ - (0x10UL) /*!< POSIF RPFLG: RMST (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RINDX_Pos \ - (8UL) /*!< POSIF RPFLG: RINDX (Bit 8) */ -#define POSIF_RPFLG_RINDX_Msk \ - (0x100UL) /*!< POSIF RPFLG: RINDX (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RERR_Pos \ - (9UL) /*!< POSIF RPFLG: RERR (Bit 9) */ -#define POSIF_RPFLG_RERR_Msk \ - (0x200UL) /*!< POSIF RPFLG: RERR (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RCNT_Pos \ - (10UL) /*!< POSIF RPFLG: RCNT (Bit 10) */ -#define POSIF_RPFLG_RCNT_Msk \ - (0x400UL) /*!< POSIF RPFLG: RCNT (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RDIR_Pos \ - (11UL) /*!< POSIF RPFLG: RDIR (Bit 11) */ -#define POSIF_RPFLG_RDIR_Msk \ - (0x800UL) /*!< POSIF RPFLG: RDIR (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RPCLK_Pos \ - (12UL) /*!< POSIF RPFLG: RPCLK (Bit 12) */ -#define POSIF_RPFLG_RPCLK_Msk \ - (0x1000UL) /*!< POSIF RPFLG: RPCLK (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PDBG --------------------------------- */ -#define POSIF_PDBG_QCSV_Pos \ - (0UL) /*!< POSIF PDBG: QCSV (Bit 0) */ -#define POSIF_PDBG_QCSV_Msk \ - (0x3UL) /*!< POSIF PDBG: QCSV (Bitfield-Mask: 0x03) */ -#define POSIF_PDBG_QPSV_Pos \ - (2UL) /*!< POSIF PDBG: QPSV (Bit 2) */ -#define POSIF_PDBG_QPSV_Msk \ - (0xcUL) /*!< POSIF PDBG: QPSV (Bitfield-Mask: 0x03) */ -#define POSIF_PDBG_IVAL_Pos \ - (4UL) /*!< POSIF PDBG: IVAL (Bit 4) */ -#define POSIF_PDBG_IVAL_Msk \ - (0x10UL) /*!< POSIF PDBG: IVAL (Bitfield-Mask: 0x01) */ -#define POSIF_PDBG_HSP_Pos (5UL) /*!< POSIF PDBG: HSP (Bit 5) */ -#define POSIF_PDBG_HSP_Msk \ - (0xe0UL) /*!< POSIF PDBG: HSP (Bitfield-Mask: 0x07) */ -#define POSIF_PDBG_LPP0_Pos \ - (8UL) /*!< POSIF PDBG: LPP0 (Bit 8) */ -#define POSIF_PDBG_LPP0_Msk \ - (0x3f00UL) /*!< POSIF PDBG: LPP0 (Bitfield-Mask: 0x3f) */ -#define POSIF_PDBG_LPP1_Pos \ - (16UL) /*!< POSIF PDBG: LPP1 (Bit 16) */ -#define POSIF_PDBG_LPP1_Msk \ - (0x3f0000UL) /*!< POSIF PDBG: LPP1 (Bitfield-Mask: 0x3f) */ -#define POSIF_PDBG_LPP2_Pos \ - (22UL) /*!< POSIF PDBG: LPP2 (Bit 22) */ -#define POSIF_PDBG_LPP2_Msk \ - (0xfc00000UL) /*!< POSIF PDBG: LPP2 (Bitfield-Mask: 0x3f) */ - -/* ================================================================================ */ -/* ================ struct 'PORT0' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT0_OUT --------------------------------- */ -#define PORT0_OUT_P0_Pos (0UL) /*!< PORT0 OUT: P0 (Bit 0) */ -#define PORT0_OUT_P0_Msk (0x1UL) /*!< PORT0 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P1_Pos (1UL) /*!< PORT0 OUT: P1 (Bit 1) */ -#define PORT0_OUT_P1_Msk (0x2UL) /*!< PORT0 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P2_Pos (2UL) /*!< PORT0 OUT: P2 (Bit 2) */ -#define PORT0_OUT_P2_Msk (0x4UL) /*!< PORT0 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P3_Pos (3UL) /*!< PORT0 OUT: P3 (Bit 3) */ -#define PORT0_OUT_P3_Msk (0x8UL) /*!< PORT0 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P4_Pos (4UL) /*!< PORT0 OUT: P4 (Bit 4) */ -#define PORT0_OUT_P4_Msk \ - (0x10UL) /*!< PORT0 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P5_Pos (5UL) /*!< PORT0 OUT: P5 (Bit 5) */ -#define PORT0_OUT_P5_Msk \ - (0x20UL) /*!< PORT0 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P6_Pos (6UL) /*!< PORT0 OUT: P6 (Bit 6) */ -#define PORT0_OUT_P6_Msk \ - (0x40UL) /*!< PORT0 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P7_Pos (7UL) /*!< PORT0 OUT: P7 (Bit 7) */ -#define PORT0_OUT_P7_Msk \ - (0x80UL) /*!< PORT0 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P8_Pos (8UL) /*!< PORT0 OUT: P8 (Bit 8) */ -#define PORT0_OUT_P8_Msk \ - (0x100UL) /*!< PORT0 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P9_Pos (9UL) /*!< PORT0 OUT: P9 (Bit 9) */ -#define PORT0_OUT_P9_Msk \ - (0x200UL) /*!< PORT0 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P10_Pos (10UL) /*!< PORT0 OUT: P10 (Bit 10) */ -#define PORT0_OUT_P10_Msk \ - (0x400UL) /*!< PORT0 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P11_Pos (11UL) /*!< PORT0 OUT: P11 (Bit 11) */ -#define PORT0_OUT_P11_Msk \ - (0x800UL) /*!< PORT0 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P12_Pos (12UL) /*!< PORT0 OUT: P12 (Bit 12) */ -#define PORT0_OUT_P12_Msk \ - (0x1000UL) /*!< PORT0 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P13_Pos (13UL) /*!< PORT0 OUT: P13 (Bit 13) */ -#define PORT0_OUT_P13_Msk \ - (0x2000UL) /*!< PORT0 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P14_Pos (14UL) /*!< PORT0 OUT: P14 (Bit 14) */ -#define PORT0_OUT_P14_Msk \ - (0x4000UL) /*!< PORT0 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P15_Pos (15UL) /*!< PORT0 OUT: P15 (Bit 15) */ -#define PORT0_OUT_P15_Msk \ - (0x8000UL) /*!< PORT0 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT0_OMR --------------------------------- */ -#define PORT0_OMR_PS0_Pos (0UL) /*!< PORT0 OMR: PS0 (Bit 0) */ -#define PORT0_OMR_PS0_Msk \ - (0x1UL) /*!< PORT0 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS1_Pos (1UL) /*!< PORT0 OMR: PS1 (Bit 1) */ -#define PORT0_OMR_PS1_Msk \ - (0x2UL) /*!< PORT0 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS2_Pos (2UL) /*!< PORT0 OMR: PS2 (Bit 2) */ -#define PORT0_OMR_PS2_Msk \ - (0x4UL) /*!< PORT0 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS3_Pos (3UL) /*!< PORT0 OMR: PS3 (Bit 3) */ -#define PORT0_OMR_PS3_Msk \ - (0x8UL) /*!< PORT0 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS4_Pos (4UL) /*!< PORT0 OMR: PS4 (Bit 4) */ -#define PORT0_OMR_PS4_Msk \ - (0x10UL) /*!< PORT0 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS5_Pos (5UL) /*!< PORT0 OMR: PS5 (Bit 5) */ -#define PORT0_OMR_PS5_Msk \ - (0x20UL) /*!< PORT0 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS6_Pos (6UL) /*!< PORT0 OMR: PS6 (Bit 6) */ -#define PORT0_OMR_PS6_Msk \ - (0x40UL) /*!< PORT0 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS7_Pos (7UL) /*!< PORT0 OMR: PS7 (Bit 7) */ -#define PORT0_OMR_PS7_Msk \ - (0x80UL) /*!< PORT0 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS8_Pos (8UL) /*!< PORT0 OMR: PS8 (Bit 8) */ -#define PORT0_OMR_PS8_Msk \ - (0x100UL) /*!< PORT0 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS9_Pos (9UL) /*!< PORT0 OMR: PS9 (Bit 9) */ -#define PORT0_OMR_PS9_Msk \ - (0x200UL) /*!< PORT0 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS10_Pos \ - (10UL) /*!< PORT0 OMR: PS10 (Bit 10) */ -#define PORT0_OMR_PS10_Msk \ - (0x400UL) /*!< PORT0 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS11_Pos \ - (11UL) /*!< PORT0 OMR: PS11 (Bit 11) */ -#define PORT0_OMR_PS11_Msk \ - (0x800UL) /*!< PORT0 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS12_Pos \ - (12UL) /*!< PORT0 OMR: PS12 (Bit 12) */ -#define PORT0_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT0 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS13_Pos \ - (13UL) /*!< PORT0 OMR: PS13 (Bit 13) */ -#define PORT0_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT0 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS14_Pos \ - (14UL) /*!< PORT0 OMR: PS14 (Bit 14) */ -#define PORT0_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT0 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS15_Pos \ - (15UL) /*!< PORT0 OMR: PS15 (Bit 15) */ -#define PORT0_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT0 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR0_Pos (16UL) /*!< PORT0 OMR: PR0 (Bit 16) */ -#define PORT0_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT0 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR1_Pos (17UL) /*!< PORT0 OMR: PR1 (Bit 17) */ -#define PORT0_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT0 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR2_Pos (18UL) /*!< PORT0 OMR: PR2 (Bit 18) */ -#define PORT0_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT0 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR3_Pos (19UL) /*!< PORT0 OMR: PR3 (Bit 19) */ -#define PORT0_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT0 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR4_Pos (20UL) /*!< PORT0 OMR: PR4 (Bit 20) */ -#define PORT0_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT0 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR5_Pos (21UL) /*!< PORT0 OMR: PR5 (Bit 21) */ -#define PORT0_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT0 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR6_Pos (22UL) /*!< PORT0 OMR: PR6 (Bit 22) */ -#define PORT0_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT0 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR7_Pos (23UL) /*!< PORT0 OMR: PR7 (Bit 23) */ -#define PORT0_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT0 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR8_Pos (24UL) /*!< PORT0 OMR: PR8 (Bit 24) */ -#define PORT0_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT0 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR9_Pos (25UL) /*!< PORT0 OMR: PR9 (Bit 25) */ -#define PORT0_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT0 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR10_Pos \ - (26UL) /*!< PORT0 OMR: PR10 (Bit 26) */ -#define PORT0_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT0 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR11_Pos \ - (27UL) /*!< PORT0 OMR: PR11 (Bit 27) */ -#define PORT0_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT0 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR12_Pos \ - (28UL) /*!< PORT0 OMR: PR12 (Bit 28) */ -#define PORT0_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT0 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR13_Pos \ - (29UL) /*!< PORT0 OMR: PR13 (Bit 29) */ -#define PORT0_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT0 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR14_Pos \ - (30UL) /*!< PORT0 OMR: PR14 (Bit 30) */ -#define PORT0_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT0 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR15_Pos \ - (31UL) /*!< PORT0 OMR: PR15 (Bit 31) */ -#define PORT0_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT0 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT0_IOCR0 -------------------------------- */ -#define PORT0_IOCR0_PC0_Pos \ - (3UL) /*!< PORT0 IOCR0: PC0 (Bit 3) */ -#define PORT0_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT0 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR0_PC1_Pos \ - (11UL) /*!< PORT0 IOCR0: PC1 (Bit 11) */ -#define PORT0_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT0 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR0_PC2_Pos \ - (19UL) /*!< PORT0 IOCR0: PC2 (Bit 19) */ -#define PORT0_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT0 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR0_PC3_Pos \ - (27UL) /*!< PORT0 IOCR0: PC3 (Bit 27) */ -#define PORT0_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT0 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT0_IOCR4 -------------------------------- */ -#define PORT0_IOCR4_PC4_Pos \ - (3UL) /*!< PORT0 IOCR4: PC4 (Bit 3) */ -#define PORT0_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT0 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR4_PC5_Pos \ - (11UL) /*!< PORT0 IOCR4: PC5 (Bit 11) */ -#define PORT0_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT0 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR4_PC6_Pos \ - (19UL) /*!< PORT0 IOCR4: PC6 (Bit 19) */ -#define PORT0_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT0 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR4_PC7_Pos \ - (27UL) /*!< PORT0 IOCR4: PC7 (Bit 27) */ -#define PORT0_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT0 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT0_IOCR8 -------------------------------- */ -#define PORT0_IOCR8_PC8_Pos \ - (3UL) /*!< PORT0 IOCR8: PC8 (Bit 3) */ -#define PORT0_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT0 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR8_PC9_Pos \ - (11UL) /*!< PORT0 IOCR8: PC9 (Bit 11) */ -#define PORT0_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT0 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR8_PC10_Pos \ - (19UL) /*!< PORT0 IOCR8: PC10 (Bit 19) */ -#define PORT0_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT0 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR8_PC11_Pos \ - (27UL) /*!< PORT0 IOCR8: PC11 (Bit 27) */ -#define PORT0_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT0 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT0_IN ---------------------------------- */ -#define PORT0_IN_P0_Pos (0UL) /*!< PORT0 IN: P0 (Bit 0) */ -#define PORT0_IN_P0_Msk (0x1UL) /*!< PORT0 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P1_Pos (1UL) /*!< PORT0 IN: P1 (Bit 1) */ -#define PORT0_IN_P1_Msk (0x2UL) /*!< PORT0 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P2_Pos (2UL) /*!< PORT0 IN: P2 (Bit 2) */ -#define PORT0_IN_P2_Msk (0x4UL) /*!< PORT0 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P3_Pos (3UL) /*!< PORT0 IN: P3 (Bit 3) */ -#define PORT0_IN_P3_Msk (0x8UL) /*!< PORT0 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P4_Pos (4UL) /*!< PORT0 IN: P4 (Bit 4) */ -#define PORT0_IN_P4_Msk (0x10UL) /*!< PORT0 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P5_Pos (5UL) /*!< PORT0 IN: P5 (Bit 5) */ -#define PORT0_IN_P5_Msk (0x20UL) /*!< PORT0 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P6_Pos (6UL) /*!< PORT0 IN: P6 (Bit 6) */ -#define PORT0_IN_P6_Msk (0x40UL) /*!< PORT0 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P7_Pos (7UL) /*!< PORT0 IN: P7 (Bit 7) */ -#define PORT0_IN_P7_Msk (0x80UL) /*!< PORT0 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P8_Pos (8UL) /*!< PORT0 IN: P8 (Bit 8) */ -#define PORT0_IN_P8_Msk \ - (0x100UL) /*!< PORT0 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P9_Pos (9UL) /*!< PORT0 IN: P9 (Bit 9) */ -#define PORT0_IN_P9_Msk \ - (0x200UL) /*!< PORT0 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P10_Pos (10UL) /*!< PORT0 IN: P10 (Bit 10) */ -#define PORT0_IN_P10_Msk \ - (0x400UL) /*!< PORT0 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P11_Pos (11UL) /*!< PORT0 IN: P11 (Bit 11) */ -#define PORT0_IN_P11_Msk \ - (0x800UL) /*!< PORT0 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P12_Pos (12UL) /*!< PORT0 IN: P12 (Bit 12) */ -#define PORT0_IN_P12_Msk \ - (0x1000UL) /*!< PORT0 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P13_Pos (13UL) /*!< PORT0 IN: P13 (Bit 13) */ -#define PORT0_IN_P13_Msk \ - (0x2000UL) /*!< PORT0 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P14_Pos (14UL) /*!< PORT0 IN: P14 (Bit 14) */ -#define PORT0_IN_P14_Msk \ - (0x4000UL) /*!< PORT0 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P15_Pos (15UL) /*!< PORT0 IN: P15 (Bit 15) */ -#define PORT0_IN_P15_Msk \ - (0x8000UL) /*!< PORT0 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT0_PDR0 --------------------------------- */ -#define PORT0_PDR0_PD0_Pos (0UL) /*!< PORT0 PDR0: PD0 (Bit 0) */ -#define PORT0_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT0 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD1_Pos (4UL) /*!< PORT0 PDR0: PD1 (Bit 4) */ -#define PORT0_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT0 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD2_Pos (8UL) /*!< PORT0 PDR0: PD2 (Bit 8) */ -#define PORT0_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT0 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD3_Pos \ - (12UL) /*!< PORT0 PDR0: PD3 (Bit 12) */ -#define PORT0_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT0 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD4_Pos \ - (16UL) /*!< PORT0 PDR0: PD4 (Bit 16) */ -#define PORT0_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT0 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD5_Pos \ - (20UL) /*!< PORT0 PDR0: PD5 (Bit 20) */ -#define PORT0_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT0 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD6_Pos \ - (24UL) /*!< PORT0 PDR0: PD6 (Bit 24) */ -#define PORT0_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT0 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD7_Pos \ - (28UL) /*!< PORT0 PDR0: PD7 (Bit 28) */ -#define PORT0_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT0 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT0_PDR1 --------------------------------- */ -#define PORT0_PDR1_PD8_Pos (0UL) /*!< PORT0 PDR1: PD8 (Bit 0) */ -#define PORT0_PDR1_PD8_Msk \ - (0x7UL) /*!< PORT0 PDR1: PD8 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD9_Pos (4UL) /*!< PORT0 PDR1: PD9 (Bit 4) */ -#define PORT0_PDR1_PD9_Msk \ - (0x70UL) /*!< PORT0 PDR1: PD9 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD10_Pos \ - (8UL) /*!< PORT0 PDR1: PD10 (Bit 8) */ -#define PORT0_PDR1_PD10_Msk \ - (0x700UL) /*!< PORT0 PDR1: PD10 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD11_Pos \ - (12UL) /*!< PORT0 PDR1: PD11 (Bit 12) */ -#define PORT0_PDR1_PD11_Msk \ - (0x7000UL) /*!< PORT0 PDR1: PD11 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD12_Pos \ - (16UL) /*!< PORT0 PDR1: PD12 (Bit 16) */ -#define PORT0_PDR1_PD12_Msk \ - (0x70000UL) /*!< PORT0 PDR1: PD12 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD13_Pos \ - (20UL) /*!< PORT0 PDR1: PD13 (Bit 20) */ -#define PORT0_PDR1_PD13_Msk \ - (0x700000UL) /*!< PORT0 PDR1: PD13 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD14_Pos \ - (24UL) /*!< PORT0 PDR1: PD14 (Bit 24) */ -#define PORT0_PDR1_PD14_Msk \ - (0x7000000UL) /*!< PORT0 PDR1: PD14 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD15_Pos \ - (28UL) /*!< PORT0 PDR1: PD15 (Bit 28) */ -#define PORT0_PDR1_PD15_Msk \ - (0x70000000UL) /*!< PORT0 PDR1: PD15 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT0_PDISC -------------------------------- */ -#define PORT0_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT0 PDISC: PDIS0 (Bit 0) */ -#define PORT0_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT0 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT0 PDISC: PDIS1 (Bit 1) */ -#define PORT0_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT0 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT0 PDISC: PDIS2 (Bit 2) */ -#define PORT0_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT0 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT0 PDISC: PDIS3 (Bit 3) */ -#define PORT0_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT0 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT0 PDISC: PDIS4 (Bit 4) */ -#define PORT0_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT0 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT0 PDISC: PDIS5 (Bit 5) */ -#define PORT0_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT0 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT0 PDISC: PDIS6 (Bit 6) */ -#define PORT0_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT0 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT0 PDISC: PDIS7 (Bit 7) */ -#define PORT0_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT0 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT0 PDISC: PDIS8 (Bit 8) */ -#define PORT0_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT0 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT0 PDISC: PDIS9 (Bit 9) */ -#define PORT0_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT0 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT0 PDISC: PDIS10 (Bit 10) */ -#define PORT0_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT0 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT0 PDISC: PDIS11 (Bit 11) */ -#define PORT0_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT0 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT0 PDISC: PDIS12 (Bit 12) */ -#define PORT0_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT0 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT0 PDISC: PDIS13 (Bit 13) */ -#define PORT0_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT0 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT0 PDISC: PDIS14 (Bit 14) */ -#define PORT0_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT0 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT0 PDISC: PDIS15 (Bit 15) */ -#define PORT0_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT0 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT0_PPS --------------------------------- */ -#define PORT0_PPS_PPS0_Pos (0UL) /*!< PORT0 PPS: PPS0 (Bit 0) */ -#define PORT0_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT0 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS1_Pos (1UL) /*!< PORT0 PPS: PPS1 (Bit 1) */ -#define PORT0_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT0 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS2_Pos (2UL) /*!< PORT0 PPS: PPS2 (Bit 2) */ -#define PORT0_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT0 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS3_Pos (3UL) /*!< PORT0 PPS: PPS3 (Bit 3) */ -#define PORT0_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT0 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS4_Pos (4UL) /*!< PORT0 PPS: PPS4 (Bit 4) */ -#define PORT0_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT0 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS5_Pos (5UL) /*!< PORT0 PPS: PPS5 (Bit 5) */ -#define PORT0_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT0 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS6_Pos (6UL) /*!< PORT0 PPS: PPS6 (Bit 6) */ -#define PORT0_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT0 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS7_Pos (7UL) /*!< PORT0 PPS: PPS7 (Bit 7) */ -#define PORT0_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT0 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS8_Pos (8UL) /*!< PORT0 PPS: PPS8 (Bit 8) */ -#define PORT0_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT0 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS9_Pos (9UL) /*!< PORT0 PPS: PPS9 (Bit 9) */ -#define PORT0_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT0 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS10_Pos \ - (10UL) /*!< PORT0 PPS: PPS10 (Bit 10) */ -#define PORT0_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT0 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS11_Pos \ - (11UL) /*!< PORT0 PPS: PPS11 (Bit 11) */ -#define PORT0_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT0 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS12_Pos \ - (12UL) /*!< PORT0 PPS: PPS12 (Bit 12) */ -#define PORT0_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT0 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS13_Pos \ - (13UL) /*!< PORT0 PPS: PPS13 (Bit 13) */ -#define PORT0_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT0 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS14_Pos \ - (14UL) /*!< PORT0 PPS: PPS14 (Bit 14) */ -#define PORT0_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT0 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS15_Pos \ - (15UL) /*!< PORT0 PPS: PPS15 (Bit 15) */ -#define PORT0_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT0 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT0_HWSEL -------------------------------- */ -#define PORT0_HWSEL_HW0_Pos \ - (0UL) /*!< PORT0 HWSEL: HW0 (Bit 0) */ -#define PORT0_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT0 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW1_Pos \ - (2UL) /*!< PORT0 HWSEL: HW1 (Bit 2) */ -#define PORT0_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT0 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW2_Pos \ - (4UL) /*!< PORT0 HWSEL: HW2 (Bit 4) */ -#define PORT0_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT0 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW3_Pos \ - (6UL) /*!< PORT0 HWSEL: HW3 (Bit 6) */ -#define PORT0_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT0 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW4_Pos \ - (8UL) /*!< PORT0 HWSEL: HW4 (Bit 8) */ -#define PORT0_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT0 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW5_Pos \ - (10UL) /*!< PORT0 HWSEL: HW5 (Bit 10) */ -#define PORT0_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT0 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW6_Pos \ - (12UL) /*!< PORT0 HWSEL: HW6 (Bit 12) */ -#define PORT0_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT0 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW7_Pos \ - (14UL) /*!< PORT0 HWSEL: HW7 (Bit 14) */ -#define PORT0_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT0 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW8_Pos \ - (16UL) /*!< PORT0 HWSEL: HW8 (Bit 16) */ -#define PORT0_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT0 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW9_Pos \ - (18UL) /*!< PORT0 HWSEL: HW9 (Bit 18) */ -#define PORT0_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT0 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW10_Pos \ - (20UL) /*!< PORT0 HWSEL: HW10 (Bit 20) */ -#define PORT0_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT0 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW11_Pos \ - (22UL) /*!< PORT0 HWSEL: HW11 (Bit 22) */ -#define PORT0_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT0 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW12_Pos \ - (24UL) /*!< PORT0 HWSEL: HW12 (Bit 24) */ -#define PORT0_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT0 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW13_Pos \ - (26UL) /*!< PORT0 HWSEL: HW13 (Bit 26) */ -#define PORT0_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT0 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW14_Pos \ - (28UL) /*!< PORT0 HWSEL: HW14 (Bit 28) */ -#define PORT0_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT0 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW15_Pos \ - (30UL) /*!< PORT0 HWSEL: HW15 (Bit 30) */ -#define PORT0_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT0 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT1' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT1_OUT --------------------------------- */ -#define PORT1_OUT_P0_Pos (0UL) /*!< PORT1 OUT: P0 (Bit 0) */ -#define PORT1_OUT_P0_Msk (0x1UL) /*!< PORT1 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P1_Pos (1UL) /*!< PORT1 OUT: P1 (Bit 1) */ -#define PORT1_OUT_P1_Msk (0x2UL) /*!< PORT1 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P2_Pos (2UL) /*!< PORT1 OUT: P2 (Bit 2) */ -#define PORT1_OUT_P2_Msk (0x4UL) /*!< PORT1 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P3_Pos (3UL) /*!< PORT1 OUT: P3 (Bit 3) */ -#define PORT1_OUT_P3_Msk (0x8UL) /*!< PORT1 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P4_Pos (4UL) /*!< PORT1 OUT: P4 (Bit 4) */ -#define PORT1_OUT_P4_Msk \ - (0x10UL) /*!< PORT1 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P5_Pos (5UL) /*!< PORT1 OUT: P5 (Bit 5) */ -#define PORT1_OUT_P5_Msk \ - (0x20UL) /*!< PORT1 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P6_Pos (6UL) /*!< PORT1 OUT: P6 (Bit 6) */ -#define PORT1_OUT_P6_Msk \ - (0x40UL) /*!< PORT1 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P7_Pos (7UL) /*!< PORT1 OUT: P7 (Bit 7) */ -#define PORT1_OUT_P7_Msk \ - (0x80UL) /*!< PORT1 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P8_Pos (8UL) /*!< PORT1 OUT: P8 (Bit 8) */ -#define PORT1_OUT_P8_Msk \ - (0x100UL) /*!< PORT1 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P9_Pos (9UL) /*!< PORT1 OUT: P9 (Bit 9) */ -#define PORT1_OUT_P9_Msk \ - (0x200UL) /*!< PORT1 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P10_Pos (10UL) /*!< PORT1 OUT: P10 (Bit 10) */ -#define PORT1_OUT_P10_Msk \ - (0x400UL) /*!< PORT1 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P11_Pos (11UL) /*!< PORT1 OUT: P11 (Bit 11) */ -#define PORT1_OUT_P11_Msk \ - (0x800UL) /*!< PORT1 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P12_Pos (12UL) /*!< PORT1 OUT: P12 (Bit 12) */ -#define PORT1_OUT_P12_Msk \ - (0x1000UL) /*!< PORT1 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P13_Pos (13UL) /*!< PORT1 OUT: P13 (Bit 13) */ -#define PORT1_OUT_P13_Msk \ - (0x2000UL) /*!< PORT1 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P14_Pos (14UL) /*!< PORT1 OUT: P14 (Bit 14) */ -#define PORT1_OUT_P14_Msk \ - (0x4000UL) /*!< PORT1 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P15_Pos (15UL) /*!< PORT1 OUT: P15 (Bit 15) */ -#define PORT1_OUT_P15_Msk \ - (0x8000UL) /*!< PORT1 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT1_OMR --------------------------------- */ -#define PORT1_OMR_PS0_Pos (0UL) /*!< PORT1 OMR: PS0 (Bit 0) */ -#define PORT1_OMR_PS0_Msk \ - (0x1UL) /*!< PORT1 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS1_Pos (1UL) /*!< PORT1 OMR: PS1 (Bit 1) */ -#define PORT1_OMR_PS1_Msk \ - (0x2UL) /*!< PORT1 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS2_Pos (2UL) /*!< PORT1 OMR: PS2 (Bit 2) */ -#define PORT1_OMR_PS2_Msk \ - (0x4UL) /*!< PORT1 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS3_Pos (3UL) /*!< PORT1 OMR: PS3 (Bit 3) */ -#define PORT1_OMR_PS3_Msk \ - (0x8UL) /*!< PORT1 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS4_Pos (4UL) /*!< PORT1 OMR: PS4 (Bit 4) */ -#define PORT1_OMR_PS4_Msk \ - (0x10UL) /*!< PORT1 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS5_Pos (5UL) /*!< PORT1 OMR: PS5 (Bit 5) */ -#define PORT1_OMR_PS5_Msk \ - (0x20UL) /*!< PORT1 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS6_Pos (6UL) /*!< PORT1 OMR: PS6 (Bit 6) */ -#define PORT1_OMR_PS6_Msk \ - (0x40UL) /*!< PORT1 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS7_Pos (7UL) /*!< PORT1 OMR: PS7 (Bit 7) */ -#define PORT1_OMR_PS7_Msk \ - (0x80UL) /*!< PORT1 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS8_Pos (8UL) /*!< PORT1 OMR: PS8 (Bit 8) */ -#define PORT1_OMR_PS8_Msk \ - (0x100UL) /*!< PORT1 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS9_Pos (9UL) /*!< PORT1 OMR: PS9 (Bit 9) */ -#define PORT1_OMR_PS9_Msk \ - (0x200UL) /*!< PORT1 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS10_Pos \ - (10UL) /*!< PORT1 OMR: PS10 (Bit 10) */ -#define PORT1_OMR_PS10_Msk \ - (0x400UL) /*!< PORT1 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS11_Pos \ - (11UL) /*!< PORT1 OMR: PS11 (Bit 11) */ -#define PORT1_OMR_PS11_Msk \ - (0x800UL) /*!< PORT1 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS12_Pos \ - (12UL) /*!< PORT1 OMR: PS12 (Bit 12) */ -#define PORT1_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT1 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS13_Pos \ - (13UL) /*!< PORT1 OMR: PS13 (Bit 13) */ -#define PORT1_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT1 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS14_Pos \ - (14UL) /*!< PORT1 OMR: PS14 (Bit 14) */ -#define PORT1_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT1 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS15_Pos \ - (15UL) /*!< PORT1 OMR: PS15 (Bit 15) */ -#define PORT1_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT1 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR0_Pos (16UL) /*!< PORT1 OMR: PR0 (Bit 16) */ -#define PORT1_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT1 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR1_Pos (17UL) /*!< PORT1 OMR: PR1 (Bit 17) */ -#define PORT1_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT1 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR2_Pos (18UL) /*!< PORT1 OMR: PR2 (Bit 18) */ -#define PORT1_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT1 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR3_Pos (19UL) /*!< PORT1 OMR: PR3 (Bit 19) */ -#define PORT1_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT1 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR4_Pos (20UL) /*!< PORT1 OMR: PR4 (Bit 20) */ -#define PORT1_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT1 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR5_Pos (21UL) /*!< PORT1 OMR: PR5 (Bit 21) */ -#define PORT1_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT1 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR6_Pos (22UL) /*!< PORT1 OMR: PR6 (Bit 22) */ -#define PORT1_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT1 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR7_Pos (23UL) /*!< PORT1 OMR: PR7 (Bit 23) */ -#define PORT1_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT1 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR8_Pos (24UL) /*!< PORT1 OMR: PR8 (Bit 24) */ -#define PORT1_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT1 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR9_Pos (25UL) /*!< PORT1 OMR: PR9 (Bit 25) */ -#define PORT1_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT1 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR10_Pos \ - (26UL) /*!< PORT1 OMR: PR10 (Bit 26) */ -#define PORT1_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT1 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR11_Pos \ - (27UL) /*!< PORT1 OMR: PR11 (Bit 27) */ -#define PORT1_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT1 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR12_Pos \ - (28UL) /*!< PORT1 OMR: PR12 (Bit 28) */ -#define PORT1_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT1 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR13_Pos \ - (29UL) /*!< PORT1 OMR: PR13 (Bit 29) */ -#define PORT1_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT1 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR14_Pos \ - (30UL) /*!< PORT1 OMR: PR14 (Bit 30) */ -#define PORT1_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT1 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR15_Pos \ - (31UL) /*!< PORT1 OMR: PR15 (Bit 31) */ -#define PORT1_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT1 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT1_IOCR0 -------------------------------- */ -#define PORT1_IOCR0_PC0_Pos \ - (3UL) /*!< PORT1 IOCR0: PC0 (Bit 3) */ -#define PORT1_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT1 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR0_PC1_Pos \ - (11UL) /*!< PORT1 IOCR0: PC1 (Bit 11) */ -#define PORT1_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT1 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR0_PC2_Pos \ - (19UL) /*!< PORT1 IOCR0: PC2 (Bit 19) */ -#define PORT1_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT1 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR0_PC3_Pos \ - (27UL) /*!< PORT1 IOCR0: PC3 (Bit 27) */ -#define PORT1_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT1 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT1_IOCR4 -------------------------------- */ -#define PORT1_IOCR4_PC4_Pos \ - (3UL) /*!< PORT1 IOCR4: PC4 (Bit 3) */ -#define PORT1_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT1 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR4_PC5_Pos \ - (11UL) /*!< PORT1 IOCR4: PC5 (Bit 11) */ -#define PORT1_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT1 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR4_PC6_Pos \ - (19UL) /*!< PORT1 IOCR4: PC6 (Bit 19) */ -#define PORT1_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT1 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR4_PC7_Pos \ - (27UL) /*!< PORT1 IOCR4: PC7 (Bit 27) */ -#define PORT1_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT1 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT1_IOCR8 -------------------------------- */ -#define PORT1_IOCR8_PC8_Pos \ - (3UL) /*!< PORT1 IOCR8: PC8 (Bit 3) */ -#define PORT1_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT1 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR8_PC9_Pos \ - (11UL) /*!< PORT1 IOCR8: PC9 (Bit 11) */ -#define PORT1_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT1 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR8_PC10_Pos \ - (19UL) /*!< PORT1 IOCR8: PC10 (Bit 19) */ -#define PORT1_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT1 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR8_PC11_Pos \ - (27UL) /*!< PORT1 IOCR8: PC11 (Bit 27) */ -#define PORT1_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT1 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT1_IOCR12 -------------------------------- */ -#define PORT1_IOCR12_PC12_Pos \ - (3UL) /*!< PORT1 IOCR12: PC12 (Bit 3) */ -#define PORT1_IOCR12_PC12_Msk \ - (0xf8UL) /*!< PORT1 IOCR12: PC12 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR12_PC13_Pos \ - (11UL) /*!< PORT1 IOCR12: PC13 (Bit 11) */ -#define PORT1_IOCR12_PC13_Msk \ - (0xf800UL) /*!< PORT1 IOCR12: PC13 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR12_PC14_Pos \ - (19UL) /*!< PORT1 IOCR12: PC14 (Bit 19) */ -#define PORT1_IOCR12_PC14_Msk \ - (0xf80000UL) /*!< PORT1 IOCR12: PC14 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR12_PC15_Pos \ - (27UL) /*!< PORT1 IOCR12: PC15 (Bit 27) */ -#define PORT1_IOCR12_PC15_Msk \ - (0xf8000000UL) /*!< PORT1 IOCR12: PC15 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT1_IN ---------------------------------- */ -#define PORT1_IN_P0_Pos (0UL) /*!< PORT1 IN: P0 (Bit 0) */ -#define PORT1_IN_P0_Msk (0x1UL) /*!< PORT1 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P1_Pos (1UL) /*!< PORT1 IN: P1 (Bit 1) */ -#define PORT1_IN_P1_Msk (0x2UL) /*!< PORT1 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P2_Pos (2UL) /*!< PORT1 IN: P2 (Bit 2) */ -#define PORT1_IN_P2_Msk (0x4UL) /*!< PORT1 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P3_Pos (3UL) /*!< PORT1 IN: P3 (Bit 3) */ -#define PORT1_IN_P3_Msk (0x8UL) /*!< PORT1 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P4_Pos (4UL) /*!< PORT1 IN: P4 (Bit 4) */ -#define PORT1_IN_P4_Msk (0x10UL) /*!< PORT1 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P5_Pos (5UL) /*!< PORT1 IN: P5 (Bit 5) */ -#define PORT1_IN_P5_Msk (0x20UL) /*!< PORT1 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P6_Pos (6UL) /*!< PORT1 IN: P6 (Bit 6) */ -#define PORT1_IN_P6_Msk (0x40UL) /*!< PORT1 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P7_Pos (7UL) /*!< PORT1 IN: P7 (Bit 7) */ -#define PORT1_IN_P7_Msk (0x80UL) /*!< PORT1 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P8_Pos (8UL) /*!< PORT1 IN: P8 (Bit 8) */ -#define PORT1_IN_P8_Msk \ - (0x100UL) /*!< PORT1 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P9_Pos (9UL) /*!< PORT1 IN: P9 (Bit 9) */ -#define PORT1_IN_P9_Msk \ - (0x200UL) /*!< PORT1 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P10_Pos (10UL) /*!< PORT1 IN: P10 (Bit 10) */ -#define PORT1_IN_P10_Msk \ - (0x400UL) /*!< PORT1 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P11_Pos (11UL) /*!< PORT1 IN: P11 (Bit 11) */ -#define PORT1_IN_P11_Msk \ - (0x800UL) /*!< PORT1 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P12_Pos (12UL) /*!< PORT1 IN: P12 (Bit 12) */ -#define PORT1_IN_P12_Msk \ - (0x1000UL) /*!< PORT1 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P13_Pos (13UL) /*!< PORT1 IN: P13 (Bit 13) */ -#define PORT1_IN_P13_Msk \ - (0x2000UL) /*!< PORT1 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P14_Pos (14UL) /*!< PORT1 IN: P14 (Bit 14) */ -#define PORT1_IN_P14_Msk \ - (0x4000UL) /*!< PORT1 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P15_Pos (15UL) /*!< PORT1 IN: P15 (Bit 15) */ -#define PORT1_IN_P15_Msk \ - (0x8000UL) /*!< PORT1 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT1_PDR0 --------------------------------- */ -#define PORT1_PDR0_PD0_Pos (0UL) /*!< PORT1 PDR0: PD0 (Bit 0) */ -#define PORT1_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT1 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD1_Pos (4UL) /*!< PORT1 PDR0: PD1 (Bit 4) */ -#define PORT1_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT1 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD2_Pos (8UL) /*!< PORT1 PDR0: PD2 (Bit 8) */ -#define PORT1_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT1 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD3_Pos \ - (12UL) /*!< PORT1 PDR0: PD3 (Bit 12) */ -#define PORT1_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT1 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD4_Pos \ - (16UL) /*!< PORT1 PDR0: PD4 (Bit 16) */ -#define PORT1_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT1 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD5_Pos \ - (20UL) /*!< PORT1 PDR0: PD5 (Bit 20) */ -#define PORT1_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT1 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD6_Pos \ - (24UL) /*!< PORT1 PDR0: PD6 (Bit 24) */ -#define PORT1_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT1 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD7_Pos \ - (28UL) /*!< PORT1 PDR0: PD7 (Bit 28) */ -#define PORT1_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT1 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT1_PDR1 --------------------------------- */ -#define PORT1_PDR1_PD8_Pos (0UL) /*!< PORT1 PDR1: PD8 (Bit 0) */ -#define PORT1_PDR1_PD8_Msk \ - (0x7UL) /*!< PORT1 PDR1: PD8 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD9_Pos (4UL) /*!< PORT1 PDR1: PD9 (Bit 4) */ -#define PORT1_PDR1_PD9_Msk \ - (0x70UL) /*!< PORT1 PDR1: PD9 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD10_Pos \ - (8UL) /*!< PORT1 PDR1: PD10 (Bit 8) */ -#define PORT1_PDR1_PD10_Msk \ - (0x700UL) /*!< PORT1 PDR1: PD10 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD11_Pos \ - (12UL) /*!< PORT1 PDR1: PD11 (Bit 12) */ -#define PORT1_PDR1_PD11_Msk \ - (0x7000UL) /*!< PORT1 PDR1: PD11 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD12_Pos \ - (16UL) /*!< PORT1 PDR1: PD12 (Bit 16) */ -#define PORT1_PDR1_PD12_Msk \ - (0x70000UL) /*!< PORT1 PDR1: PD12 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD13_Pos \ - (20UL) /*!< PORT1 PDR1: PD13 (Bit 20) */ -#define PORT1_PDR1_PD13_Msk \ - (0x700000UL) /*!< PORT1 PDR1: PD13 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD14_Pos \ - (24UL) /*!< PORT1 PDR1: PD14 (Bit 24) */ -#define PORT1_PDR1_PD14_Msk \ - (0x7000000UL) /*!< PORT1 PDR1: PD14 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD15_Pos \ - (28UL) /*!< PORT1 PDR1: PD15 (Bit 28) */ -#define PORT1_PDR1_PD15_Msk \ - (0x70000000UL) /*!< PORT1 PDR1: PD15 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT1_PDISC -------------------------------- */ -#define PORT1_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT1 PDISC: PDIS0 (Bit 0) */ -#define PORT1_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT1 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT1 PDISC: PDIS1 (Bit 1) */ -#define PORT1_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT1 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT1 PDISC: PDIS2 (Bit 2) */ -#define PORT1_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT1 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT1 PDISC: PDIS3 (Bit 3) */ -#define PORT1_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT1 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT1 PDISC: PDIS4 (Bit 4) */ -#define PORT1_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT1 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT1 PDISC: PDIS5 (Bit 5) */ -#define PORT1_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT1 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT1 PDISC: PDIS6 (Bit 6) */ -#define PORT1_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT1 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT1 PDISC: PDIS7 (Bit 7) */ -#define PORT1_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT1 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT1 PDISC: PDIS8 (Bit 8) */ -#define PORT1_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT1 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT1 PDISC: PDIS9 (Bit 9) */ -#define PORT1_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT1 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT1 PDISC: PDIS10 (Bit 10) */ -#define PORT1_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT1 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT1 PDISC: PDIS11 (Bit 11) */ -#define PORT1_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT1 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT1 PDISC: PDIS12 (Bit 12) */ -#define PORT1_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT1 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT1 PDISC: PDIS13 (Bit 13) */ -#define PORT1_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT1 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT1 PDISC: PDIS14 (Bit 14) */ -#define PORT1_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT1 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT1 PDISC: PDIS15 (Bit 15) */ -#define PORT1_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT1 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT1_PPS --------------------------------- */ -#define PORT1_PPS_PPS0_Pos (0UL) /*!< PORT1 PPS: PPS0 (Bit 0) */ -#define PORT1_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT1 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS1_Pos (1UL) /*!< PORT1 PPS: PPS1 (Bit 1) */ -#define PORT1_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT1 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS2_Pos (2UL) /*!< PORT1 PPS: PPS2 (Bit 2) */ -#define PORT1_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT1 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS3_Pos (3UL) /*!< PORT1 PPS: PPS3 (Bit 3) */ -#define PORT1_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT1 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS4_Pos (4UL) /*!< PORT1 PPS: PPS4 (Bit 4) */ -#define PORT1_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT1 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS5_Pos (5UL) /*!< PORT1 PPS: PPS5 (Bit 5) */ -#define PORT1_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT1 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS6_Pos (6UL) /*!< PORT1 PPS: PPS6 (Bit 6) */ -#define PORT1_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT1 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS7_Pos (7UL) /*!< PORT1 PPS: PPS7 (Bit 7) */ -#define PORT1_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT1 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS8_Pos (8UL) /*!< PORT1 PPS: PPS8 (Bit 8) */ -#define PORT1_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT1 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS9_Pos (9UL) /*!< PORT1 PPS: PPS9 (Bit 9) */ -#define PORT1_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT1 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS10_Pos \ - (10UL) /*!< PORT1 PPS: PPS10 (Bit 10) */ -#define PORT1_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT1 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS11_Pos \ - (11UL) /*!< PORT1 PPS: PPS11 (Bit 11) */ -#define PORT1_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT1 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS12_Pos \ - (12UL) /*!< PORT1 PPS: PPS12 (Bit 12) */ -#define PORT1_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT1 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS13_Pos \ - (13UL) /*!< PORT1 PPS: PPS13 (Bit 13) */ -#define PORT1_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT1 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS14_Pos \ - (14UL) /*!< PORT1 PPS: PPS14 (Bit 14) */ -#define PORT1_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT1 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS15_Pos \ - (15UL) /*!< PORT1 PPS: PPS15 (Bit 15) */ -#define PORT1_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT1 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT1_HWSEL -------------------------------- */ -#define PORT1_HWSEL_HW0_Pos \ - (0UL) /*!< PORT1 HWSEL: HW0 (Bit 0) */ -#define PORT1_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT1 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW1_Pos \ - (2UL) /*!< PORT1 HWSEL: HW1 (Bit 2) */ -#define PORT1_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT1 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW2_Pos \ - (4UL) /*!< PORT1 HWSEL: HW2 (Bit 4) */ -#define PORT1_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT1 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW3_Pos \ - (6UL) /*!< PORT1 HWSEL: HW3 (Bit 6) */ -#define PORT1_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT1 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW4_Pos \ - (8UL) /*!< PORT1 HWSEL: HW4 (Bit 8) */ -#define PORT1_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT1 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW5_Pos \ - (10UL) /*!< PORT1 HWSEL: HW5 (Bit 10) */ -#define PORT1_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT1 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW6_Pos \ - (12UL) /*!< PORT1 HWSEL: HW6 (Bit 12) */ -#define PORT1_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT1 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW7_Pos \ - (14UL) /*!< PORT1 HWSEL: HW7 (Bit 14) */ -#define PORT1_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT1 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW8_Pos \ - (16UL) /*!< PORT1 HWSEL: HW8 (Bit 16) */ -#define PORT1_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT1 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW9_Pos \ - (18UL) /*!< PORT1 HWSEL: HW9 (Bit 18) */ -#define PORT1_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT1 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW10_Pos \ - (20UL) /*!< PORT1 HWSEL: HW10 (Bit 20) */ -#define PORT1_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT1 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW11_Pos \ - (22UL) /*!< PORT1 HWSEL: HW11 (Bit 22) */ -#define PORT1_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT1 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW12_Pos \ - (24UL) /*!< PORT1 HWSEL: HW12 (Bit 24) */ -#define PORT1_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT1 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW13_Pos \ - (26UL) /*!< PORT1 HWSEL: HW13 (Bit 26) */ -#define PORT1_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT1 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW14_Pos \ - (28UL) /*!< PORT1 HWSEL: HW14 (Bit 28) */ -#define PORT1_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT1 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW15_Pos \ - (30UL) /*!< PORT1 HWSEL: HW15 (Bit 30) */ -#define PORT1_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT1 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT2' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT2_OUT --------------------------------- */ -#define PORT2_OUT_P0_Pos (0UL) /*!< PORT2 OUT: P0 (Bit 0) */ -#define PORT2_OUT_P0_Msk (0x1UL) /*!< PORT2 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P1_Pos (1UL) /*!< PORT2 OUT: P1 (Bit 1) */ -#define PORT2_OUT_P1_Msk (0x2UL) /*!< PORT2 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P2_Pos (2UL) /*!< PORT2 OUT: P2 (Bit 2) */ -#define PORT2_OUT_P2_Msk (0x4UL) /*!< PORT2 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P3_Pos (3UL) /*!< PORT2 OUT: P3 (Bit 3) */ -#define PORT2_OUT_P3_Msk (0x8UL) /*!< PORT2 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P4_Pos (4UL) /*!< PORT2 OUT: P4 (Bit 4) */ -#define PORT2_OUT_P4_Msk \ - (0x10UL) /*!< PORT2 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P5_Pos (5UL) /*!< PORT2 OUT: P5 (Bit 5) */ -#define PORT2_OUT_P5_Msk \ - (0x20UL) /*!< PORT2 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P6_Pos (6UL) /*!< PORT2 OUT: P6 (Bit 6) */ -#define PORT2_OUT_P6_Msk \ - (0x40UL) /*!< PORT2 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P7_Pos (7UL) /*!< PORT2 OUT: P7 (Bit 7) */ -#define PORT2_OUT_P7_Msk \ - (0x80UL) /*!< PORT2 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P8_Pos (8UL) /*!< PORT2 OUT: P8 (Bit 8) */ -#define PORT2_OUT_P8_Msk \ - (0x100UL) /*!< PORT2 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P9_Pos (9UL) /*!< PORT2 OUT: P9 (Bit 9) */ -#define PORT2_OUT_P9_Msk \ - (0x200UL) /*!< PORT2 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P10_Pos (10UL) /*!< PORT2 OUT: P10 (Bit 10) */ -#define PORT2_OUT_P10_Msk \ - (0x400UL) /*!< PORT2 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P11_Pos (11UL) /*!< PORT2 OUT: P11 (Bit 11) */ -#define PORT2_OUT_P11_Msk \ - (0x800UL) /*!< PORT2 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P12_Pos (12UL) /*!< PORT2 OUT: P12 (Bit 12) */ -#define PORT2_OUT_P12_Msk \ - (0x1000UL) /*!< PORT2 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P13_Pos (13UL) /*!< PORT2 OUT: P13 (Bit 13) */ -#define PORT2_OUT_P13_Msk \ - (0x2000UL) /*!< PORT2 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P14_Pos (14UL) /*!< PORT2 OUT: P14 (Bit 14) */ -#define PORT2_OUT_P14_Msk \ - (0x4000UL) /*!< PORT2 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P15_Pos (15UL) /*!< PORT2 OUT: P15 (Bit 15) */ -#define PORT2_OUT_P15_Msk \ - (0x8000UL) /*!< PORT2 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT2_OMR --------------------------------- */ -#define PORT2_OMR_PS0_Pos (0UL) /*!< PORT2 OMR: PS0 (Bit 0) */ -#define PORT2_OMR_PS0_Msk \ - (0x1UL) /*!< PORT2 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS1_Pos (1UL) /*!< PORT2 OMR: PS1 (Bit 1) */ -#define PORT2_OMR_PS1_Msk \ - (0x2UL) /*!< PORT2 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS2_Pos (2UL) /*!< PORT2 OMR: PS2 (Bit 2) */ -#define PORT2_OMR_PS2_Msk \ - (0x4UL) /*!< PORT2 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS3_Pos (3UL) /*!< PORT2 OMR: PS3 (Bit 3) */ -#define PORT2_OMR_PS3_Msk \ - (0x8UL) /*!< PORT2 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS4_Pos (4UL) /*!< PORT2 OMR: PS4 (Bit 4) */ -#define PORT2_OMR_PS4_Msk \ - (0x10UL) /*!< PORT2 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS5_Pos (5UL) /*!< PORT2 OMR: PS5 (Bit 5) */ -#define PORT2_OMR_PS5_Msk \ - (0x20UL) /*!< PORT2 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS6_Pos (6UL) /*!< PORT2 OMR: PS6 (Bit 6) */ -#define PORT2_OMR_PS6_Msk \ - (0x40UL) /*!< PORT2 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS7_Pos (7UL) /*!< PORT2 OMR: PS7 (Bit 7) */ -#define PORT2_OMR_PS7_Msk \ - (0x80UL) /*!< PORT2 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS8_Pos (8UL) /*!< PORT2 OMR: PS8 (Bit 8) */ -#define PORT2_OMR_PS8_Msk \ - (0x100UL) /*!< PORT2 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS9_Pos (9UL) /*!< PORT2 OMR: PS9 (Bit 9) */ -#define PORT2_OMR_PS9_Msk \ - (0x200UL) /*!< PORT2 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS10_Pos \ - (10UL) /*!< PORT2 OMR: PS10 (Bit 10) */ -#define PORT2_OMR_PS10_Msk \ - (0x400UL) /*!< PORT2 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS11_Pos \ - (11UL) /*!< PORT2 OMR: PS11 (Bit 11) */ -#define PORT2_OMR_PS11_Msk \ - (0x800UL) /*!< PORT2 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS12_Pos \ - (12UL) /*!< PORT2 OMR: PS12 (Bit 12) */ -#define PORT2_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT2 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS13_Pos \ - (13UL) /*!< PORT2 OMR: PS13 (Bit 13) */ -#define PORT2_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT2 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS14_Pos \ - (14UL) /*!< PORT2 OMR: PS14 (Bit 14) */ -#define PORT2_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT2 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS15_Pos \ - (15UL) /*!< PORT2 OMR: PS15 (Bit 15) */ -#define PORT2_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT2 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR0_Pos (16UL) /*!< PORT2 OMR: PR0 (Bit 16) */ -#define PORT2_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT2 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR1_Pos (17UL) /*!< PORT2 OMR: PR1 (Bit 17) */ -#define PORT2_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT2 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR2_Pos (18UL) /*!< PORT2 OMR: PR2 (Bit 18) */ -#define PORT2_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT2 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR3_Pos (19UL) /*!< PORT2 OMR: PR3 (Bit 19) */ -#define PORT2_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT2 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR4_Pos (20UL) /*!< PORT2 OMR: PR4 (Bit 20) */ -#define PORT2_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT2 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR5_Pos (21UL) /*!< PORT2 OMR: PR5 (Bit 21) */ -#define PORT2_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT2 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR6_Pos (22UL) /*!< PORT2 OMR: PR6 (Bit 22) */ -#define PORT2_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT2 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR7_Pos (23UL) /*!< PORT2 OMR: PR7 (Bit 23) */ -#define PORT2_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT2 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR8_Pos (24UL) /*!< PORT2 OMR: PR8 (Bit 24) */ -#define PORT2_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT2 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR9_Pos (25UL) /*!< PORT2 OMR: PR9 (Bit 25) */ -#define PORT2_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT2 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR10_Pos \ - (26UL) /*!< PORT2 OMR: PR10 (Bit 26) */ -#define PORT2_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT2 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR11_Pos \ - (27UL) /*!< PORT2 OMR: PR11 (Bit 27) */ -#define PORT2_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT2 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR12_Pos \ - (28UL) /*!< PORT2 OMR: PR12 (Bit 28) */ -#define PORT2_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT2 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR13_Pos \ - (29UL) /*!< PORT2 OMR: PR13 (Bit 29) */ -#define PORT2_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT2 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR14_Pos \ - (30UL) /*!< PORT2 OMR: PR14 (Bit 30) */ -#define PORT2_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT2 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR15_Pos \ - (31UL) /*!< PORT2 OMR: PR15 (Bit 31) */ -#define PORT2_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT2 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT2_IOCR0 -------------------------------- */ -#define PORT2_IOCR0_PC0_Pos \ - (3UL) /*!< PORT2 IOCR0: PC0 (Bit 3) */ -#define PORT2_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT2 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR0_PC1_Pos \ - (11UL) /*!< PORT2 IOCR0: PC1 (Bit 11) */ -#define PORT2_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT2 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR0_PC2_Pos \ - (19UL) /*!< PORT2 IOCR0: PC2 (Bit 19) */ -#define PORT2_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT2 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR0_PC3_Pos \ - (27UL) /*!< PORT2 IOCR0: PC3 (Bit 27) */ -#define PORT2_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT2 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT2_IOCR4 -------------------------------- */ -#define PORT2_IOCR4_PC4_Pos \ - (3UL) /*!< PORT2 IOCR4: PC4 (Bit 3) */ -#define PORT2_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT2 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR4_PC5_Pos \ - (11UL) /*!< PORT2 IOCR4: PC5 (Bit 11) */ -#define PORT2_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT2 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR4_PC6_Pos \ - (19UL) /*!< PORT2 IOCR4: PC6 (Bit 19) */ -#define PORT2_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT2 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR4_PC7_Pos \ - (27UL) /*!< PORT2 IOCR4: PC7 (Bit 27) */ -#define PORT2_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT2 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT2_IOCR8 -------------------------------- */ -#define PORT2_IOCR8_PC8_Pos \ - (3UL) /*!< PORT2 IOCR8: PC8 (Bit 3) */ -#define PORT2_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT2 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR8_PC9_Pos \ - (11UL) /*!< PORT2 IOCR8: PC9 (Bit 11) */ -#define PORT2_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT2 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR8_PC10_Pos \ - (19UL) /*!< PORT2 IOCR8: PC10 (Bit 19) */ -#define PORT2_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT2 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR8_PC11_Pos \ - (27UL) /*!< PORT2 IOCR8: PC11 (Bit 27) */ -#define PORT2_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT2 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT2_IOCR12 -------------------------------- */ -#define PORT2_IOCR12_PC12_Pos \ - (3UL) /*!< PORT2 IOCR12: PC12 (Bit 3) */ -#define PORT2_IOCR12_PC12_Msk \ - (0xf8UL) /*!< PORT2 IOCR12: PC12 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR12_PC13_Pos \ - (11UL) /*!< PORT2 IOCR12: PC13 (Bit 11) */ -#define PORT2_IOCR12_PC13_Msk \ - (0xf800UL) /*!< PORT2 IOCR12: PC13 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR12_PC14_Pos \ - (19UL) /*!< PORT2 IOCR12: PC14 (Bit 19) */ -#define PORT2_IOCR12_PC14_Msk \ - (0xf80000UL) /*!< PORT2 IOCR12: PC14 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR12_PC15_Pos \ - (27UL) /*!< PORT2 IOCR12: PC15 (Bit 27) */ -#define PORT2_IOCR12_PC15_Msk \ - (0xf8000000UL) /*!< PORT2 IOCR12: PC15 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT2_IN ---------------------------------- */ -#define PORT2_IN_P0_Pos (0UL) /*!< PORT2 IN: P0 (Bit 0) */ -#define PORT2_IN_P0_Msk (0x1UL) /*!< PORT2 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P1_Pos (1UL) /*!< PORT2 IN: P1 (Bit 1) */ -#define PORT2_IN_P1_Msk (0x2UL) /*!< PORT2 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P2_Pos (2UL) /*!< PORT2 IN: P2 (Bit 2) */ -#define PORT2_IN_P2_Msk (0x4UL) /*!< PORT2 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P3_Pos (3UL) /*!< PORT2 IN: P3 (Bit 3) */ -#define PORT2_IN_P3_Msk (0x8UL) /*!< PORT2 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P4_Pos (4UL) /*!< PORT2 IN: P4 (Bit 4) */ -#define PORT2_IN_P4_Msk (0x10UL) /*!< PORT2 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P5_Pos (5UL) /*!< PORT2 IN: P5 (Bit 5) */ -#define PORT2_IN_P5_Msk (0x20UL) /*!< PORT2 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P6_Pos (6UL) /*!< PORT2 IN: P6 (Bit 6) */ -#define PORT2_IN_P6_Msk (0x40UL) /*!< PORT2 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P7_Pos (7UL) /*!< PORT2 IN: P7 (Bit 7) */ -#define PORT2_IN_P7_Msk (0x80UL) /*!< PORT2 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P8_Pos (8UL) /*!< PORT2 IN: P8 (Bit 8) */ -#define PORT2_IN_P8_Msk \ - (0x100UL) /*!< PORT2 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P9_Pos (9UL) /*!< PORT2 IN: P9 (Bit 9) */ -#define PORT2_IN_P9_Msk \ - (0x200UL) /*!< PORT2 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P10_Pos (10UL) /*!< PORT2 IN: P10 (Bit 10) */ -#define PORT2_IN_P10_Msk \ - (0x400UL) /*!< PORT2 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P11_Pos (11UL) /*!< PORT2 IN: P11 (Bit 11) */ -#define PORT2_IN_P11_Msk \ - (0x800UL) /*!< PORT2 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P12_Pos (12UL) /*!< PORT2 IN: P12 (Bit 12) */ -#define PORT2_IN_P12_Msk \ - (0x1000UL) /*!< PORT2 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P13_Pos (13UL) /*!< PORT2 IN: P13 (Bit 13) */ -#define PORT2_IN_P13_Msk \ - (0x2000UL) /*!< PORT2 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P14_Pos (14UL) /*!< PORT2 IN: P14 (Bit 14) */ -#define PORT2_IN_P14_Msk \ - (0x4000UL) /*!< PORT2 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P15_Pos (15UL) /*!< PORT2 IN: P15 (Bit 15) */ -#define PORT2_IN_P15_Msk \ - (0x8000UL) /*!< PORT2 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT2_PDR0 --------------------------------- */ -#define PORT2_PDR0_PD0_Pos (0UL) /*!< PORT2 PDR0: PD0 (Bit 0) */ -#define PORT2_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT2 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD1_Pos (4UL) /*!< PORT2 PDR0: PD1 (Bit 4) */ -#define PORT2_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT2 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD2_Pos (8UL) /*!< PORT2 PDR0: PD2 (Bit 8) */ -#define PORT2_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT2 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD3_Pos \ - (12UL) /*!< PORT2 PDR0: PD3 (Bit 12) */ -#define PORT2_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT2 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD4_Pos \ - (16UL) /*!< PORT2 PDR0: PD4 (Bit 16) */ -#define PORT2_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT2 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD5_Pos \ - (20UL) /*!< PORT2 PDR0: PD5 (Bit 20) */ -#define PORT2_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT2 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD6_Pos \ - (24UL) /*!< PORT2 PDR0: PD6 (Bit 24) */ -#define PORT2_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT2 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD7_Pos \ - (28UL) /*!< PORT2 PDR0: PD7 (Bit 28) */ -#define PORT2_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT2 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT2_PDR1 --------------------------------- */ -#define PORT2_PDR1_PD8_Pos (0UL) /*!< PORT2 PDR1: PD8 (Bit 0) */ -#define PORT2_PDR1_PD8_Msk \ - (0x7UL) /*!< PORT2 PDR1: PD8 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD9_Pos (4UL) /*!< PORT2 PDR1: PD9 (Bit 4) */ -#define PORT2_PDR1_PD9_Msk \ - (0x70UL) /*!< PORT2 PDR1: PD9 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD10_Pos \ - (8UL) /*!< PORT2 PDR1: PD10 (Bit 8) */ -#define PORT2_PDR1_PD10_Msk \ - (0x700UL) /*!< PORT2 PDR1: PD10 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD11_Pos \ - (12UL) /*!< PORT2 PDR1: PD11 (Bit 12) */ -#define PORT2_PDR1_PD11_Msk \ - (0x7000UL) /*!< PORT2 PDR1: PD11 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD12_Pos \ - (16UL) /*!< PORT2 PDR1: PD12 (Bit 16) */ -#define PORT2_PDR1_PD12_Msk \ - (0x70000UL) /*!< PORT2 PDR1: PD12 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD13_Pos \ - (20UL) /*!< PORT2 PDR1: PD13 (Bit 20) */ -#define PORT2_PDR1_PD13_Msk \ - (0x700000UL) /*!< PORT2 PDR1: PD13 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD14_Pos \ - (24UL) /*!< PORT2 PDR1: PD14 (Bit 24) */ -#define PORT2_PDR1_PD14_Msk \ - (0x7000000UL) /*!< PORT2 PDR1: PD14 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD15_Pos \ - (28UL) /*!< PORT2 PDR1: PD15 (Bit 28) */ -#define PORT2_PDR1_PD15_Msk \ - (0x70000000UL) /*!< PORT2 PDR1: PD15 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT2_PDISC -------------------------------- */ -#define PORT2_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT2 PDISC: PDIS0 (Bit 0) */ -#define PORT2_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT2 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT2 PDISC: PDIS1 (Bit 1) */ -#define PORT2_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT2 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT2 PDISC: PDIS2 (Bit 2) */ -#define PORT2_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT2 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT2 PDISC: PDIS3 (Bit 3) */ -#define PORT2_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT2 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT2 PDISC: PDIS4 (Bit 4) */ -#define PORT2_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT2 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT2 PDISC: PDIS5 (Bit 5) */ -#define PORT2_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT2 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT2 PDISC: PDIS6 (Bit 6) */ -#define PORT2_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT2 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT2 PDISC: PDIS7 (Bit 7) */ -#define PORT2_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT2 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT2 PDISC: PDIS8 (Bit 8) */ -#define PORT2_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT2 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT2 PDISC: PDIS9 (Bit 9) */ -#define PORT2_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT2 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT2 PDISC: PDIS10 (Bit 10) */ -#define PORT2_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT2 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT2 PDISC: PDIS11 (Bit 11) */ -#define PORT2_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT2 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT2 PDISC: PDIS12 (Bit 12) */ -#define PORT2_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT2 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT2 PDISC: PDIS13 (Bit 13) */ -#define PORT2_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT2 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT2 PDISC: PDIS14 (Bit 14) */ -#define PORT2_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT2 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT2 PDISC: PDIS15 (Bit 15) */ -#define PORT2_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT2 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT2_PPS --------------------------------- */ -#define PORT2_PPS_PPS0_Pos (0UL) /*!< PORT2 PPS: PPS0 (Bit 0) */ -#define PORT2_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT2 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS1_Pos (1UL) /*!< PORT2 PPS: PPS1 (Bit 1) */ -#define PORT2_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT2 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS2_Pos (2UL) /*!< PORT2 PPS: PPS2 (Bit 2) */ -#define PORT2_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT2 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS3_Pos (3UL) /*!< PORT2 PPS: PPS3 (Bit 3) */ -#define PORT2_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT2 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS4_Pos (4UL) /*!< PORT2 PPS: PPS4 (Bit 4) */ -#define PORT2_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT2 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS5_Pos (5UL) /*!< PORT2 PPS: PPS5 (Bit 5) */ -#define PORT2_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT2 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS6_Pos (6UL) /*!< PORT2 PPS: PPS6 (Bit 6) */ -#define PORT2_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT2 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS7_Pos (7UL) /*!< PORT2 PPS: PPS7 (Bit 7) */ -#define PORT2_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT2 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS8_Pos (8UL) /*!< PORT2 PPS: PPS8 (Bit 8) */ -#define PORT2_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT2 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS9_Pos (9UL) /*!< PORT2 PPS: PPS9 (Bit 9) */ -#define PORT2_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT2 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS10_Pos \ - (10UL) /*!< PORT2 PPS: PPS10 (Bit 10) */ -#define PORT2_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT2 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS11_Pos \ - (11UL) /*!< PORT2 PPS: PPS11 (Bit 11) */ -#define PORT2_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT2 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS12_Pos \ - (12UL) /*!< PORT2 PPS: PPS12 (Bit 12) */ -#define PORT2_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT2 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS13_Pos \ - (13UL) /*!< PORT2 PPS: PPS13 (Bit 13) */ -#define PORT2_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT2 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS14_Pos \ - (14UL) /*!< PORT2 PPS: PPS14 (Bit 14) */ -#define PORT2_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT2 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS15_Pos \ - (15UL) /*!< PORT2 PPS: PPS15 (Bit 15) */ -#define PORT2_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT2 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT2_HWSEL -------------------------------- */ -#define PORT2_HWSEL_HW0_Pos \ - (0UL) /*!< PORT2 HWSEL: HW0 (Bit 0) */ -#define PORT2_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT2 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW1_Pos \ - (2UL) /*!< PORT2 HWSEL: HW1 (Bit 2) */ -#define PORT2_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT2 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW2_Pos \ - (4UL) /*!< PORT2 HWSEL: HW2 (Bit 4) */ -#define PORT2_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT2 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW3_Pos \ - (6UL) /*!< PORT2 HWSEL: HW3 (Bit 6) */ -#define PORT2_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT2 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW4_Pos \ - (8UL) /*!< PORT2 HWSEL: HW4 (Bit 8) */ -#define PORT2_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT2 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW5_Pos \ - (10UL) /*!< PORT2 HWSEL: HW5 (Bit 10) */ -#define PORT2_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT2 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW6_Pos \ - (12UL) /*!< PORT2 HWSEL: HW6 (Bit 12) */ -#define PORT2_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT2 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW7_Pos \ - (14UL) /*!< PORT2 HWSEL: HW7 (Bit 14) */ -#define PORT2_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT2 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW8_Pos \ - (16UL) /*!< PORT2 HWSEL: HW8 (Bit 16) */ -#define PORT2_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT2 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW9_Pos \ - (18UL) /*!< PORT2 HWSEL: HW9 (Bit 18) */ -#define PORT2_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT2 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW10_Pos \ - (20UL) /*!< PORT2 HWSEL: HW10 (Bit 20) */ -#define PORT2_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT2 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW11_Pos \ - (22UL) /*!< PORT2 HWSEL: HW11 (Bit 22) */ -#define PORT2_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT2 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW12_Pos \ - (24UL) /*!< PORT2 HWSEL: HW12 (Bit 24) */ -#define PORT2_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT2 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW13_Pos \ - (26UL) /*!< PORT2 HWSEL: HW13 (Bit 26) */ -#define PORT2_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT2 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW14_Pos \ - (28UL) /*!< PORT2 HWSEL: HW14 (Bit 28) */ -#define PORT2_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT2 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW15_Pos \ - (30UL) /*!< PORT2 HWSEL: HW15 (Bit 30) */ -#define PORT2_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT2 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT3' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT3_OUT --------------------------------- */ -#define PORT3_OUT_P0_Pos (0UL) /*!< PORT3 OUT: P0 (Bit 0) */ -#define PORT3_OUT_P0_Msk (0x1UL) /*!< PORT3 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P1_Pos (1UL) /*!< PORT3 OUT: P1 (Bit 1) */ -#define PORT3_OUT_P1_Msk (0x2UL) /*!< PORT3 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P2_Pos (2UL) /*!< PORT3 OUT: P2 (Bit 2) */ -#define PORT3_OUT_P2_Msk (0x4UL) /*!< PORT3 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P3_Pos (3UL) /*!< PORT3 OUT: P3 (Bit 3) */ -#define PORT3_OUT_P3_Msk (0x8UL) /*!< PORT3 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P4_Pos (4UL) /*!< PORT3 OUT: P4 (Bit 4) */ -#define PORT3_OUT_P4_Msk \ - (0x10UL) /*!< PORT3 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P5_Pos (5UL) /*!< PORT3 OUT: P5 (Bit 5) */ -#define PORT3_OUT_P5_Msk \ - (0x20UL) /*!< PORT3 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P6_Pos (6UL) /*!< PORT3 OUT: P6 (Bit 6) */ -#define PORT3_OUT_P6_Msk \ - (0x40UL) /*!< PORT3 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P7_Pos (7UL) /*!< PORT3 OUT: P7 (Bit 7) */ -#define PORT3_OUT_P7_Msk \ - (0x80UL) /*!< PORT3 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P8_Pos (8UL) /*!< PORT3 OUT: P8 (Bit 8) */ -#define PORT3_OUT_P8_Msk \ - (0x100UL) /*!< PORT3 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P9_Pos (9UL) /*!< PORT3 OUT: P9 (Bit 9) */ -#define PORT3_OUT_P9_Msk \ - (0x200UL) /*!< PORT3 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P10_Pos (10UL) /*!< PORT3 OUT: P10 (Bit 10) */ -#define PORT3_OUT_P10_Msk \ - (0x400UL) /*!< PORT3 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P11_Pos (11UL) /*!< PORT3 OUT: P11 (Bit 11) */ -#define PORT3_OUT_P11_Msk \ - (0x800UL) /*!< PORT3 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P12_Pos (12UL) /*!< PORT3 OUT: P12 (Bit 12) */ -#define PORT3_OUT_P12_Msk \ - (0x1000UL) /*!< PORT3 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P13_Pos (13UL) /*!< PORT3 OUT: P13 (Bit 13) */ -#define PORT3_OUT_P13_Msk \ - (0x2000UL) /*!< PORT3 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P14_Pos (14UL) /*!< PORT3 OUT: P14 (Bit 14) */ -#define PORT3_OUT_P14_Msk \ - (0x4000UL) /*!< PORT3 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P15_Pos (15UL) /*!< PORT3 OUT: P15 (Bit 15) */ -#define PORT3_OUT_P15_Msk \ - (0x8000UL) /*!< PORT3 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT3_OMR --------------------------------- */ -#define PORT3_OMR_PS0_Pos (0UL) /*!< PORT3 OMR: PS0 (Bit 0) */ -#define PORT3_OMR_PS0_Msk \ - (0x1UL) /*!< PORT3 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS1_Pos (1UL) /*!< PORT3 OMR: PS1 (Bit 1) */ -#define PORT3_OMR_PS1_Msk \ - (0x2UL) /*!< PORT3 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS2_Pos (2UL) /*!< PORT3 OMR: PS2 (Bit 2) */ -#define PORT3_OMR_PS2_Msk \ - (0x4UL) /*!< PORT3 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS3_Pos (3UL) /*!< PORT3 OMR: PS3 (Bit 3) */ -#define PORT3_OMR_PS3_Msk \ - (0x8UL) /*!< PORT3 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS4_Pos (4UL) /*!< PORT3 OMR: PS4 (Bit 4) */ -#define PORT3_OMR_PS4_Msk \ - (0x10UL) /*!< PORT3 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS5_Pos (5UL) /*!< PORT3 OMR: PS5 (Bit 5) */ -#define PORT3_OMR_PS5_Msk \ - (0x20UL) /*!< PORT3 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS6_Pos (6UL) /*!< PORT3 OMR: PS6 (Bit 6) */ -#define PORT3_OMR_PS6_Msk \ - (0x40UL) /*!< PORT3 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS7_Pos (7UL) /*!< PORT3 OMR: PS7 (Bit 7) */ -#define PORT3_OMR_PS7_Msk \ - (0x80UL) /*!< PORT3 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS8_Pos (8UL) /*!< PORT3 OMR: PS8 (Bit 8) */ -#define PORT3_OMR_PS8_Msk \ - (0x100UL) /*!< PORT3 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS9_Pos (9UL) /*!< PORT3 OMR: PS9 (Bit 9) */ -#define PORT3_OMR_PS9_Msk \ - (0x200UL) /*!< PORT3 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS10_Pos \ - (10UL) /*!< PORT3 OMR: PS10 (Bit 10) */ -#define PORT3_OMR_PS10_Msk \ - (0x400UL) /*!< PORT3 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS11_Pos \ - (11UL) /*!< PORT3 OMR: PS11 (Bit 11) */ -#define PORT3_OMR_PS11_Msk \ - (0x800UL) /*!< PORT3 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS12_Pos \ - (12UL) /*!< PORT3 OMR: PS12 (Bit 12) */ -#define PORT3_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT3 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS13_Pos \ - (13UL) /*!< PORT3 OMR: PS13 (Bit 13) */ -#define PORT3_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT3 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS14_Pos \ - (14UL) /*!< PORT3 OMR: PS14 (Bit 14) */ -#define PORT3_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT3 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS15_Pos \ - (15UL) /*!< PORT3 OMR: PS15 (Bit 15) */ -#define PORT3_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT3 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR0_Pos (16UL) /*!< PORT3 OMR: PR0 (Bit 16) */ -#define PORT3_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT3 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR1_Pos (17UL) /*!< PORT3 OMR: PR1 (Bit 17) */ -#define PORT3_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT3 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR2_Pos (18UL) /*!< PORT3 OMR: PR2 (Bit 18) */ -#define PORT3_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT3 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR3_Pos (19UL) /*!< PORT3 OMR: PR3 (Bit 19) */ -#define PORT3_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT3 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR4_Pos (20UL) /*!< PORT3 OMR: PR4 (Bit 20) */ -#define PORT3_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT3 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR5_Pos (21UL) /*!< PORT3 OMR: PR5 (Bit 21) */ -#define PORT3_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT3 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR6_Pos (22UL) /*!< PORT3 OMR: PR6 (Bit 22) */ -#define PORT3_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT3 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR7_Pos (23UL) /*!< PORT3 OMR: PR7 (Bit 23) */ -#define PORT3_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT3 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR8_Pos (24UL) /*!< PORT3 OMR: PR8 (Bit 24) */ -#define PORT3_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT3 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR9_Pos (25UL) /*!< PORT3 OMR: PR9 (Bit 25) */ -#define PORT3_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT3 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR10_Pos \ - (26UL) /*!< PORT3 OMR: PR10 (Bit 26) */ -#define PORT3_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT3 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR11_Pos \ - (27UL) /*!< PORT3 OMR: PR11 (Bit 27) */ -#define PORT3_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT3 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR12_Pos \ - (28UL) /*!< PORT3 OMR: PR12 (Bit 28) */ -#define PORT3_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT3 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR13_Pos \ - (29UL) /*!< PORT3 OMR: PR13 (Bit 29) */ -#define PORT3_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT3 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR14_Pos \ - (30UL) /*!< PORT3 OMR: PR14 (Bit 30) */ -#define PORT3_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT3 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR15_Pos \ - (31UL) /*!< PORT3 OMR: PR15 (Bit 31) */ -#define PORT3_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT3 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT3_IOCR0 -------------------------------- */ -#define PORT3_IOCR0_PC0_Pos \ - (3UL) /*!< PORT3 IOCR0: PC0 (Bit 3) */ -#define PORT3_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT3 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR0_PC1_Pos \ - (11UL) /*!< PORT3 IOCR0: PC1 (Bit 11) */ -#define PORT3_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT3 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR0_PC2_Pos \ - (19UL) /*!< PORT3 IOCR0: PC2 (Bit 19) */ -#define PORT3_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT3 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR0_PC3_Pos \ - (27UL) /*!< PORT3 IOCR0: PC3 (Bit 27) */ -#define PORT3_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT3 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT3_IN ---------------------------------- */ -#define PORT3_IN_P0_Pos (0UL) /*!< PORT3 IN: P0 (Bit 0) */ -#define PORT3_IN_P0_Msk (0x1UL) /*!< PORT3 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P1_Pos (1UL) /*!< PORT3 IN: P1 (Bit 1) */ -#define PORT3_IN_P1_Msk (0x2UL) /*!< PORT3 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P2_Pos (2UL) /*!< PORT3 IN: P2 (Bit 2) */ -#define PORT3_IN_P2_Msk (0x4UL) /*!< PORT3 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P3_Pos (3UL) /*!< PORT3 IN: P3 (Bit 3) */ -#define PORT3_IN_P3_Msk (0x8UL) /*!< PORT3 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P4_Pos (4UL) /*!< PORT3 IN: P4 (Bit 4) */ -#define PORT3_IN_P4_Msk (0x10UL) /*!< PORT3 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P5_Pos (5UL) /*!< PORT3 IN: P5 (Bit 5) */ -#define PORT3_IN_P5_Msk (0x20UL) /*!< PORT3 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P6_Pos (6UL) /*!< PORT3 IN: P6 (Bit 6) */ -#define PORT3_IN_P6_Msk (0x40UL) /*!< PORT3 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P7_Pos (7UL) /*!< PORT3 IN: P7 (Bit 7) */ -#define PORT3_IN_P7_Msk (0x80UL) /*!< PORT3 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P8_Pos (8UL) /*!< PORT3 IN: P8 (Bit 8) */ -#define PORT3_IN_P8_Msk \ - (0x100UL) /*!< PORT3 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P9_Pos (9UL) /*!< PORT3 IN: P9 (Bit 9) */ -#define PORT3_IN_P9_Msk \ - (0x200UL) /*!< PORT3 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P10_Pos (10UL) /*!< PORT3 IN: P10 (Bit 10) */ -#define PORT3_IN_P10_Msk \ - (0x400UL) /*!< PORT3 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P11_Pos (11UL) /*!< PORT3 IN: P11 (Bit 11) */ -#define PORT3_IN_P11_Msk \ - (0x800UL) /*!< PORT3 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P12_Pos (12UL) /*!< PORT3 IN: P12 (Bit 12) */ -#define PORT3_IN_P12_Msk \ - (0x1000UL) /*!< PORT3 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P13_Pos (13UL) /*!< PORT3 IN: P13 (Bit 13) */ -#define PORT3_IN_P13_Msk \ - (0x2000UL) /*!< PORT3 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P14_Pos (14UL) /*!< PORT3 IN: P14 (Bit 14) */ -#define PORT3_IN_P14_Msk \ - (0x4000UL) /*!< PORT3 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P15_Pos (15UL) /*!< PORT3 IN: P15 (Bit 15) */ -#define PORT3_IN_P15_Msk \ - (0x8000UL) /*!< PORT3 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT3_PDR0 --------------------------------- */ -#define PORT3_PDR0_PD0_Pos (0UL) /*!< PORT3 PDR0: PD0 (Bit 0) */ -#define PORT3_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT3 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD1_Pos (4UL) /*!< PORT3 PDR0: PD1 (Bit 4) */ -#define PORT3_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT3 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD2_Pos (8UL) /*!< PORT3 PDR0: PD2 (Bit 8) */ -#define PORT3_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT3 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD3_Pos \ - (12UL) /*!< PORT3 PDR0: PD3 (Bit 12) */ -#define PORT3_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT3 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD4_Pos \ - (16UL) /*!< PORT3 PDR0: PD4 (Bit 16) */ -#define PORT3_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT3 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD5_Pos \ - (20UL) /*!< PORT3 PDR0: PD5 (Bit 20) */ -#define PORT3_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT3 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD6_Pos \ - (24UL) /*!< PORT3 PDR0: PD6 (Bit 24) */ -#define PORT3_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT3 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD7_Pos \ - (28UL) /*!< PORT3 PDR0: PD7 (Bit 28) */ -#define PORT3_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT3 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT3_PDISC -------------------------------- */ -#define PORT3_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT3 PDISC: PDIS0 (Bit 0) */ -#define PORT3_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT3 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT3 PDISC: PDIS1 (Bit 1) */ -#define PORT3_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT3 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT3 PDISC: PDIS2 (Bit 2) */ -#define PORT3_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT3 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT3 PDISC: PDIS3 (Bit 3) */ -#define PORT3_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT3 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT3 PDISC: PDIS4 (Bit 4) */ -#define PORT3_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT3 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT3 PDISC: PDIS5 (Bit 5) */ -#define PORT3_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT3 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT3 PDISC: PDIS6 (Bit 6) */ -#define PORT3_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT3 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT3 PDISC: PDIS7 (Bit 7) */ -#define PORT3_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT3 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT3 PDISC: PDIS8 (Bit 8) */ -#define PORT3_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT3 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT3 PDISC: PDIS9 (Bit 9) */ -#define PORT3_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT3 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT3 PDISC: PDIS10 (Bit 10) */ -#define PORT3_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT3 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT3 PDISC: PDIS11 (Bit 11) */ -#define PORT3_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT3 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT3 PDISC: PDIS12 (Bit 12) */ -#define PORT3_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT3 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT3 PDISC: PDIS13 (Bit 13) */ -#define PORT3_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT3 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT3 PDISC: PDIS14 (Bit 14) */ -#define PORT3_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT3 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT3 PDISC: PDIS15 (Bit 15) */ -#define PORT3_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT3 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT3_PPS --------------------------------- */ -#define PORT3_PPS_PPS0_Pos (0UL) /*!< PORT3 PPS: PPS0 (Bit 0) */ -#define PORT3_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT3 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS1_Pos (1UL) /*!< PORT3 PPS: PPS1 (Bit 1) */ -#define PORT3_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT3 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS2_Pos (2UL) /*!< PORT3 PPS: PPS2 (Bit 2) */ -#define PORT3_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT3 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS3_Pos (3UL) /*!< PORT3 PPS: PPS3 (Bit 3) */ -#define PORT3_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT3 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS4_Pos (4UL) /*!< PORT3 PPS: PPS4 (Bit 4) */ -#define PORT3_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT3 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS5_Pos (5UL) /*!< PORT3 PPS: PPS5 (Bit 5) */ -#define PORT3_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT3 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS6_Pos (6UL) /*!< PORT3 PPS: PPS6 (Bit 6) */ -#define PORT3_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT3 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS7_Pos (7UL) /*!< PORT3 PPS: PPS7 (Bit 7) */ -#define PORT3_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT3 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS8_Pos (8UL) /*!< PORT3 PPS: PPS8 (Bit 8) */ -#define PORT3_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT3 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS9_Pos (9UL) /*!< PORT3 PPS: PPS9 (Bit 9) */ -#define PORT3_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT3 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS10_Pos \ - (10UL) /*!< PORT3 PPS: PPS10 (Bit 10) */ -#define PORT3_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT3 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS11_Pos \ - (11UL) /*!< PORT3 PPS: PPS11 (Bit 11) */ -#define PORT3_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT3 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS12_Pos \ - (12UL) /*!< PORT3 PPS: PPS12 (Bit 12) */ -#define PORT3_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT3 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS13_Pos \ - (13UL) /*!< PORT3 PPS: PPS13 (Bit 13) */ -#define PORT3_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT3 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS14_Pos \ - (14UL) /*!< PORT3 PPS: PPS14 (Bit 14) */ -#define PORT3_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT3 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS15_Pos \ - (15UL) /*!< PORT3 PPS: PPS15 (Bit 15) */ -#define PORT3_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT3 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT3_HWSEL -------------------------------- */ -#define PORT3_HWSEL_HW0_Pos \ - (0UL) /*!< PORT3 HWSEL: HW0 (Bit 0) */ -#define PORT3_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT3 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW1_Pos \ - (2UL) /*!< PORT3 HWSEL: HW1 (Bit 2) */ -#define PORT3_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT3 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW2_Pos \ - (4UL) /*!< PORT3 HWSEL: HW2 (Bit 4) */ -#define PORT3_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT3 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW3_Pos \ - (6UL) /*!< PORT3 HWSEL: HW3 (Bit 6) */ -#define PORT3_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT3 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW4_Pos \ - (8UL) /*!< PORT3 HWSEL: HW4 (Bit 8) */ -#define PORT3_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT3 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW5_Pos \ - (10UL) /*!< PORT3 HWSEL: HW5 (Bit 10) */ -#define PORT3_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT3 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW6_Pos \ - (12UL) /*!< PORT3 HWSEL: HW6 (Bit 12) */ -#define PORT3_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT3 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW7_Pos \ - (14UL) /*!< PORT3 HWSEL: HW7 (Bit 14) */ -#define PORT3_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT3 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW8_Pos \ - (16UL) /*!< PORT3 HWSEL: HW8 (Bit 16) */ -#define PORT3_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT3 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW9_Pos \ - (18UL) /*!< PORT3 HWSEL: HW9 (Bit 18) */ -#define PORT3_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT3 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW10_Pos \ - (20UL) /*!< PORT3 HWSEL: HW10 (Bit 20) */ -#define PORT3_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT3 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW11_Pos \ - (22UL) /*!< PORT3 HWSEL: HW11 (Bit 22) */ -#define PORT3_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT3 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW12_Pos \ - (24UL) /*!< PORT3 HWSEL: HW12 (Bit 24) */ -#define PORT3_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT3 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW13_Pos \ - (26UL) /*!< PORT3 HWSEL: HW13 (Bit 26) */ -#define PORT3_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT3 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW14_Pos \ - (28UL) /*!< PORT3 HWSEL: HW14 (Bit 28) */ -#define PORT3_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT3 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW15_Pos \ - (30UL) /*!< PORT3 HWSEL: HW15 (Bit 30) */ -#define PORT3_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT3 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT14' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- PORT14_OUT --------------------------------- */ -#define PORT14_OUT_P0_Pos (0UL) /*!< PORT14 OUT: P0 (Bit 0) */ -#define PORT14_OUT_P0_Msk \ - (0x1UL) /*!< PORT14 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P1_Pos (1UL) /*!< PORT14 OUT: P1 (Bit 1) */ -#define PORT14_OUT_P1_Msk \ - (0x2UL) /*!< PORT14 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P2_Pos (2UL) /*!< PORT14 OUT: P2 (Bit 2) */ -#define PORT14_OUT_P2_Msk \ - (0x4UL) /*!< PORT14 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P3_Pos (3UL) /*!< PORT14 OUT: P3 (Bit 3) */ -#define PORT14_OUT_P3_Msk \ - (0x8UL) /*!< PORT14 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P4_Pos (4UL) /*!< PORT14 OUT: P4 (Bit 4) */ -#define PORT14_OUT_P4_Msk \ - (0x10UL) /*!< PORT14 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P5_Pos (5UL) /*!< PORT14 OUT: P5 (Bit 5) */ -#define PORT14_OUT_P5_Msk \ - (0x20UL) /*!< PORT14 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P6_Pos (6UL) /*!< PORT14 OUT: P6 (Bit 6) */ -#define PORT14_OUT_P6_Msk \ - (0x40UL) /*!< PORT14 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P7_Pos (7UL) /*!< PORT14 OUT: P7 (Bit 7) */ -#define PORT14_OUT_P7_Msk \ - (0x80UL) /*!< PORT14 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P8_Pos (8UL) /*!< PORT14 OUT: P8 (Bit 8) */ -#define PORT14_OUT_P8_Msk \ - (0x100UL) /*!< PORT14 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P9_Pos (9UL) /*!< PORT14 OUT: P9 (Bit 9) */ -#define PORT14_OUT_P9_Msk \ - (0x200UL) /*!< PORT14 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P10_Pos \ - (10UL) /*!< PORT14 OUT: P10 (Bit 10) */ -#define PORT14_OUT_P10_Msk \ - (0x400UL) /*!< PORT14 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P11_Pos \ - (11UL) /*!< PORT14 OUT: P11 (Bit 11) */ -#define PORT14_OUT_P11_Msk \ - (0x800UL) /*!< PORT14 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P12_Pos \ - (12UL) /*!< PORT14 OUT: P12 (Bit 12) */ -#define PORT14_OUT_P12_Msk \ - (0x1000UL) /*!< PORT14 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P13_Pos \ - (13UL) /*!< PORT14 OUT: P13 (Bit 13) */ -#define PORT14_OUT_P13_Msk \ - (0x2000UL) /*!< PORT14 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P14_Pos \ - (14UL) /*!< PORT14 OUT: P14 (Bit 14) */ -#define PORT14_OUT_P14_Msk \ - (0x4000UL) /*!< PORT14 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P15_Pos \ - (15UL) /*!< PORT14 OUT: P15 (Bit 15) */ -#define PORT14_OUT_P15_Msk \ - (0x8000UL) /*!< PORT14 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT14_OMR --------------------------------- */ -#define PORT14_OMR_PS0_Pos (0UL) /*!< PORT14 OMR: PS0 (Bit 0) */ -#define PORT14_OMR_PS0_Msk \ - (0x1UL) /*!< PORT14 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS1_Pos (1UL) /*!< PORT14 OMR: PS1 (Bit 1) */ -#define PORT14_OMR_PS1_Msk \ - (0x2UL) /*!< PORT14 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS2_Pos (2UL) /*!< PORT14 OMR: PS2 (Bit 2) */ -#define PORT14_OMR_PS2_Msk \ - (0x4UL) /*!< PORT14 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS3_Pos (3UL) /*!< PORT14 OMR: PS3 (Bit 3) */ -#define PORT14_OMR_PS3_Msk \ - (0x8UL) /*!< PORT14 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS4_Pos (4UL) /*!< PORT14 OMR: PS4 (Bit 4) */ -#define PORT14_OMR_PS4_Msk \ - (0x10UL) /*!< PORT14 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS5_Pos (5UL) /*!< PORT14 OMR: PS5 (Bit 5) */ -#define PORT14_OMR_PS5_Msk \ - (0x20UL) /*!< PORT14 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS6_Pos (6UL) /*!< PORT14 OMR: PS6 (Bit 6) */ -#define PORT14_OMR_PS6_Msk \ - (0x40UL) /*!< PORT14 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS7_Pos (7UL) /*!< PORT14 OMR: PS7 (Bit 7) */ -#define PORT14_OMR_PS7_Msk \ - (0x80UL) /*!< PORT14 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS8_Pos (8UL) /*!< PORT14 OMR: PS8 (Bit 8) */ -#define PORT14_OMR_PS8_Msk \ - (0x100UL) /*!< PORT14 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS9_Pos (9UL) /*!< PORT14 OMR: PS9 (Bit 9) */ -#define PORT14_OMR_PS9_Msk \ - (0x200UL) /*!< PORT14 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS10_Pos \ - (10UL) /*!< PORT14 OMR: PS10 (Bit 10) */ -#define PORT14_OMR_PS10_Msk \ - (0x400UL) /*!< PORT14 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS11_Pos \ - (11UL) /*!< PORT14 OMR: PS11 (Bit 11) */ -#define PORT14_OMR_PS11_Msk \ - (0x800UL) /*!< PORT14 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS12_Pos \ - (12UL) /*!< PORT14 OMR: PS12 (Bit 12) */ -#define PORT14_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT14 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS13_Pos \ - (13UL) /*!< PORT14 OMR: PS13 (Bit 13) */ -#define PORT14_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT14 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS14_Pos \ - (14UL) /*!< PORT14 OMR: PS14 (Bit 14) */ -#define PORT14_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT14 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS15_Pos \ - (15UL) /*!< PORT14 OMR: PS15 (Bit 15) */ -#define PORT14_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT14 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR0_Pos \ - (16UL) /*!< PORT14 OMR: PR0 (Bit 16) */ -#define PORT14_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT14 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR1_Pos \ - (17UL) /*!< PORT14 OMR: PR1 (Bit 17) */ -#define PORT14_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT14 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR2_Pos \ - (18UL) /*!< PORT14 OMR: PR2 (Bit 18) */ -#define PORT14_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT14 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR3_Pos \ - (19UL) /*!< PORT14 OMR: PR3 (Bit 19) */ -#define PORT14_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT14 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR4_Pos \ - (20UL) /*!< PORT14 OMR: PR4 (Bit 20) */ -#define PORT14_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT14 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR5_Pos \ - (21UL) /*!< PORT14 OMR: PR5 (Bit 21) */ -#define PORT14_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT14 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR6_Pos \ - (22UL) /*!< PORT14 OMR: PR6 (Bit 22) */ -#define PORT14_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT14 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR7_Pos \ - (23UL) /*!< PORT14 OMR: PR7 (Bit 23) */ -#define PORT14_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT14 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR8_Pos \ - (24UL) /*!< PORT14 OMR: PR8 (Bit 24) */ -#define PORT14_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT14 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR9_Pos \ - (25UL) /*!< PORT14 OMR: PR9 (Bit 25) */ -#define PORT14_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT14 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR10_Pos \ - (26UL) /*!< PORT14 OMR: PR10 (Bit 26) */ -#define PORT14_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT14 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR11_Pos \ - (27UL) /*!< PORT14 OMR: PR11 (Bit 27) */ -#define PORT14_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT14 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR12_Pos \ - (28UL) /*!< PORT14 OMR: PR12 (Bit 28) */ -#define PORT14_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT14 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR13_Pos \ - (29UL) /*!< PORT14 OMR: PR13 (Bit 29) */ -#define PORT14_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT14 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR14_Pos \ - (30UL) /*!< PORT14 OMR: PR14 (Bit 30) */ -#define PORT14_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT14 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR15_Pos \ - (31UL) /*!< PORT14 OMR: PR15 (Bit 31) */ -#define PORT14_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT14 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT14_IOCR0 -------------------------------- */ -#define PORT14_IOCR0_PC0_Pos \ - (3UL) /*!< PORT14 IOCR0: PC0 (Bit 3) */ -#define PORT14_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT14 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR0_PC1_Pos \ - (11UL) /*!< PORT14 IOCR0: PC1 (Bit 11) */ -#define PORT14_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT14 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR0_PC2_Pos \ - (19UL) /*!< PORT14 IOCR0: PC2 (Bit 19) */ -#define PORT14_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT14 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR0_PC3_Pos \ - (27UL) /*!< PORT14 IOCR0: PC3 (Bit 27) */ -#define PORT14_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT14 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT14_IOCR4 -------------------------------- */ -#define PORT14_IOCR4_PC4_Pos \ - (3UL) /*!< PORT14 IOCR4: PC4 (Bit 3) */ -#define PORT14_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT14 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR4_PC5_Pos \ - (11UL) /*!< PORT14 IOCR4: PC5 (Bit 11) */ -#define PORT14_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT14 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR4_PC6_Pos \ - (19UL) /*!< PORT14 IOCR4: PC6 (Bit 19) */ -#define PORT14_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT14 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR4_PC7_Pos \ - (27UL) /*!< PORT14 IOCR4: PC7 (Bit 27) */ -#define PORT14_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT14 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT14_IOCR8 -------------------------------- */ -#define PORT14_IOCR8_PC8_Pos \ - (3UL) /*!< PORT14 IOCR8: PC8 (Bit 3) */ -#define PORT14_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT14 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR8_PC9_Pos \ - (11UL) /*!< PORT14 IOCR8: PC9 (Bit 11) */ -#define PORT14_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT14 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR8_PC10_Pos \ - (19UL) /*!< PORT14 IOCR8: PC10 (Bit 19) */ -#define PORT14_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT14 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR8_PC11_Pos \ - (27UL) /*!< PORT14 IOCR8: PC11 (Bit 27) */ -#define PORT14_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT14 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT14_IOCR12 ------------------------------- */ -#define PORT14_IOCR12_PC12_Pos \ - (3UL) /*!< PORT14 IOCR12: PC12 (Bit 3) */ -#define PORT14_IOCR12_PC12_Msk \ - (0xf8UL) /*!< PORT14 IOCR12: PC12 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR12_PC13_Pos \ - (11UL) /*!< PORT14 IOCR12: PC13 (Bit 11) */ -#define PORT14_IOCR12_PC13_Msk \ - (0xf800UL) /*!< PORT14 IOCR12: PC13 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR12_PC14_Pos \ - (19UL) /*!< PORT14 IOCR12: PC14 (Bit 19) */ -#define PORT14_IOCR12_PC14_Msk \ - (0xf80000UL) /*!< PORT14 IOCR12: PC14 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR12_PC15_Pos \ - (27UL) /*!< PORT14 IOCR12: PC15 (Bit 27) */ -#define PORT14_IOCR12_PC15_Msk \ - (0xf8000000UL) /*!< PORT14 IOCR12: PC15 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT14_IN --------------------------------- */ -#define PORT14_IN_P0_Pos (0UL) /*!< PORT14 IN: P0 (Bit 0) */ -#define PORT14_IN_P0_Msk (0x1UL) /*!< PORT14 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P1_Pos (1UL) /*!< PORT14 IN: P1 (Bit 1) */ -#define PORT14_IN_P1_Msk (0x2UL) /*!< PORT14 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P2_Pos (2UL) /*!< PORT14 IN: P2 (Bit 2) */ -#define PORT14_IN_P2_Msk (0x4UL) /*!< PORT14 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P3_Pos (3UL) /*!< PORT14 IN: P3 (Bit 3) */ -#define PORT14_IN_P3_Msk (0x8UL) /*!< PORT14 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P4_Pos (4UL) /*!< PORT14 IN: P4 (Bit 4) */ -#define PORT14_IN_P4_Msk \ - (0x10UL) /*!< PORT14 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P5_Pos (5UL) /*!< PORT14 IN: P5 (Bit 5) */ -#define PORT14_IN_P5_Msk \ - (0x20UL) /*!< PORT14 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P6_Pos (6UL) /*!< PORT14 IN: P6 (Bit 6) */ -#define PORT14_IN_P6_Msk \ - (0x40UL) /*!< PORT14 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P7_Pos (7UL) /*!< PORT14 IN: P7 (Bit 7) */ -#define PORT14_IN_P7_Msk \ - (0x80UL) /*!< PORT14 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P8_Pos (8UL) /*!< PORT14 IN: P8 (Bit 8) */ -#define PORT14_IN_P8_Msk \ - (0x100UL) /*!< PORT14 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P9_Pos (9UL) /*!< PORT14 IN: P9 (Bit 9) */ -#define PORT14_IN_P9_Msk \ - (0x200UL) /*!< PORT14 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P10_Pos (10UL) /*!< PORT14 IN: P10 (Bit 10) */ -#define PORT14_IN_P10_Msk \ - (0x400UL) /*!< PORT14 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P11_Pos (11UL) /*!< PORT14 IN: P11 (Bit 11) */ -#define PORT14_IN_P11_Msk \ - (0x800UL) /*!< PORT14 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P12_Pos (12UL) /*!< PORT14 IN: P12 (Bit 12) */ -#define PORT14_IN_P12_Msk \ - (0x1000UL) /*!< PORT14 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P13_Pos (13UL) /*!< PORT14 IN: P13 (Bit 13) */ -#define PORT14_IN_P13_Msk \ - (0x2000UL) /*!< PORT14 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P14_Pos (14UL) /*!< PORT14 IN: P14 (Bit 14) */ -#define PORT14_IN_P14_Msk \ - (0x4000UL) /*!< PORT14 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P15_Pos (15UL) /*!< PORT14 IN: P15 (Bit 15) */ -#define PORT14_IN_P15_Msk \ - (0x8000UL) /*!< PORT14 IN: P15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT14_PDISC -------------------------------- */ -#define PORT14_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT14 PDISC: PDIS0 (Bit 0) */ -#define PORT14_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT14 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT14 PDISC: PDIS1 (Bit 1) */ -#define PORT14_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT14 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT14 PDISC: PDIS2 (Bit 2) */ -#define PORT14_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT14 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT14 PDISC: PDIS3 (Bit 3) */ -#define PORT14_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT14 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT14 PDISC: PDIS4 (Bit 4) */ -#define PORT14_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT14 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT14 PDISC: PDIS5 (Bit 5) */ -#define PORT14_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT14 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT14 PDISC: PDIS6 (Bit 6) */ -#define PORT14_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT14 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT14 PDISC: PDIS7 (Bit 7) */ -#define PORT14_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT14 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT14 PDISC: PDIS8 (Bit 8) */ -#define PORT14_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT14 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT14 PDISC: PDIS9 (Bit 9) */ -#define PORT14_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT14 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT14 PDISC: PDIS10 (Bit 10) */ -#define PORT14_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT14 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT14 PDISC: PDIS11 (Bit 11) */ -#define PORT14_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT14 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT14 PDISC: PDIS12 (Bit 12) */ -#define PORT14_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT14 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT14 PDISC: PDIS13 (Bit 13) */ -#define PORT14_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT14 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT14 PDISC: PDIS14 (Bit 14) */ -#define PORT14_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT14 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT14 PDISC: PDIS15 (Bit 15) */ -#define PORT14_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT14 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT14_PPS --------------------------------- */ -#define PORT14_PPS_PPS0_Pos \ - (0UL) /*!< PORT14 PPS: PPS0 (Bit 0) */ -#define PORT14_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT14 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS1_Pos \ - (1UL) /*!< PORT14 PPS: PPS1 (Bit 1) */ -#define PORT14_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT14 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS2_Pos \ - (2UL) /*!< PORT14 PPS: PPS2 (Bit 2) */ -#define PORT14_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT14 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS3_Pos \ - (3UL) /*!< PORT14 PPS: PPS3 (Bit 3) */ -#define PORT14_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT14 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS4_Pos \ - (4UL) /*!< PORT14 PPS: PPS4 (Bit 4) */ -#define PORT14_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT14 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS5_Pos \ - (5UL) /*!< PORT14 PPS: PPS5 (Bit 5) */ -#define PORT14_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT14 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS6_Pos \ - (6UL) /*!< PORT14 PPS: PPS6 (Bit 6) */ -#define PORT14_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT14 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS7_Pos \ - (7UL) /*!< PORT14 PPS: PPS7 (Bit 7) */ -#define PORT14_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT14 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS8_Pos \ - (8UL) /*!< PORT14 PPS: PPS8 (Bit 8) */ -#define PORT14_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT14 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS9_Pos \ - (9UL) /*!< PORT14 PPS: PPS9 (Bit 9) */ -#define PORT14_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT14 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS10_Pos \ - (10UL) /*!< PORT14 PPS: PPS10 (Bit 10) */ -#define PORT14_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT14 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS11_Pos \ - (11UL) /*!< PORT14 PPS: PPS11 (Bit 11) */ -#define PORT14_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT14 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS12_Pos \ - (12UL) /*!< PORT14 PPS: PPS12 (Bit 12) */ -#define PORT14_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT14 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS13_Pos \ - (13UL) /*!< PORT14 PPS: PPS13 (Bit 13) */ -#define PORT14_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT14 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS14_Pos \ - (14UL) /*!< PORT14 PPS: PPS14 (Bit 14) */ -#define PORT14_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT14 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS15_Pos \ - (15UL) /*!< PORT14 PPS: PPS15 (Bit 15) */ -#define PORT14_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT14 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT14_HWSEL -------------------------------- */ -#define PORT14_HWSEL_HW0_Pos \ - (0UL) /*!< PORT14 HWSEL: HW0 (Bit 0) */ -#define PORT14_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT14 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW1_Pos \ - (2UL) /*!< PORT14 HWSEL: HW1 (Bit 2) */ -#define PORT14_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT14 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW2_Pos \ - (4UL) /*!< PORT14 HWSEL: HW2 (Bit 4) */ -#define PORT14_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT14 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW3_Pos \ - (6UL) /*!< PORT14 HWSEL: HW3 (Bit 6) */ -#define PORT14_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT14 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW4_Pos \ - (8UL) /*!< PORT14 HWSEL: HW4 (Bit 8) */ -#define PORT14_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT14 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW5_Pos \ - (10UL) /*!< PORT14 HWSEL: HW5 (Bit 10) */ -#define PORT14_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT14 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW6_Pos \ - (12UL) /*!< PORT14 HWSEL: HW6 (Bit 12) */ -#define PORT14_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT14 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW7_Pos \ - (14UL) /*!< PORT14 HWSEL: HW7 (Bit 14) */ -#define PORT14_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT14 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW8_Pos \ - (16UL) /*!< PORT14 HWSEL: HW8 (Bit 16) */ -#define PORT14_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT14 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW9_Pos \ - (18UL) /*!< PORT14 HWSEL: HW9 (Bit 18) */ -#define PORT14_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT14 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW10_Pos \ - (20UL) /*!< PORT14 HWSEL: HW10 (Bit 20) */ -#define PORT14_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT14 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW11_Pos \ - (22UL) /*!< PORT14 HWSEL: HW11 (Bit 22) */ -#define PORT14_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT14 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW12_Pos \ - (24UL) /*!< PORT14 HWSEL: HW12 (Bit 24) */ -#define PORT14_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT14 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW13_Pos \ - (26UL) /*!< PORT14 HWSEL: HW13 (Bit 26) */ -#define PORT14_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT14 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW14_Pos \ - (28UL) /*!< PORT14 HWSEL: HW14 (Bit 28) */ -#define PORT14_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT14 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW15_Pos \ - (30UL) /*!< PORT14 HWSEL: HW15 (Bit 30) */ -#define PORT14_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT14 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ Peripheral memory map ================ */ -/* ================================================================================ */ - -#define PPB_BASE 0xE000E000UL -#define DLR_BASE 0x50004900UL -#define ERU0_BASE 0x50004800UL -#define ERU1_BASE 0x40044000UL -#define GPDMA0_BASE 0x500142C0UL -#define GPDMA0_CH0_BASE 0x50014000UL -#define GPDMA0_CH1_BASE 0x50014058UL -#define GPDMA0_CH2_BASE 0x500140B0UL -#define GPDMA0_CH3_BASE 0x50014108UL -#define GPDMA0_CH4_BASE 0x50014160UL -#define GPDMA0_CH5_BASE 0x500141B8UL -#define GPDMA0_CH6_BASE 0x50014210UL -#define GPDMA0_CH7_BASE 0x50014268UL -#define FCE_BASE 0x50020000UL -#define FCE_KE0_BASE 0x50020020UL -#define FCE_KE1_BASE 0x50020040UL -#define FCE_KE2_BASE 0x50020060UL -#define FCE_KE3_BASE 0x50020080UL -#define PBA0_BASE 0x40000000UL -#define PBA1_BASE 0x48000000UL -#define FLASH0_BASE 0x58001000UL -#define PREF_BASE 0x58004000UL -#define PMU0_BASE 0x58000508UL -#define WDT_BASE 0x50008000UL -#define RTC_BASE 0x50004A00UL -#define SCU_CLK_BASE 0x50004600UL -#define SCU_OSC_BASE 0x50004700UL -#define SCU_PLL_BASE 0x50004710UL -#define SCU_GENERAL_BASE 0x50004000UL -#define SCU_INTERRUPT_BASE 0x50004074UL -#define SCU_PARITY_BASE 0x5000413CUL -#define SCU_TRAP_BASE 0x50004160UL -#define SCU_HIBERNATE_BASE 0x50004300UL -#define SCU_POWER_BASE 0x50004200UL -#define SCU_RESET_BASE 0x50004400UL -#define LEDTS0_BASE 0x48010000UL -#define USB0_BASE 0x50040000UL -#define USB_EP_BASE 0x50040900UL -#define USB0_EP1_BASE 0x50040920UL -#define USB0_EP2_BASE 0x50040940UL -#define USB0_EP3_BASE 0x50040960UL -#define USB0_EP4_BASE 0x50040980UL -#define USB0_EP5_BASE 0x500409A0UL -#define USB0_EP6_BASE 0x500409C0UL -#define USIC0_BASE 0x40030008UL -#define USIC1_BASE 0x48020008UL -#define USIC0_CH0_BASE 0x40030000UL -#define USIC0_CH1_BASE 0x40030200UL -#define USIC1_CH0_BASE 0x48020000UL -#define USIC1_CH1_BASE 0x48020200UL -#define CAN_BASE 0x48014000UL -#define CAN_NODE0_BASE 0x48014200UL -#define CAN_NODE1_BASE 0x48014300UL -#define CAN_MO0_BASE 0x48015000UL -#define CAN_MO1_BASE 0x48015020UL -#define CAN_MO2_BASE 0x48015040UL -#define CAN_MO3_BASE 0x48015060UL -#define CAN_MO4_BASE 0x48015080UL -#define CAN_MO5_BASE 0x480150A0UL -#define CAN_MO6_BASE 0x480150C0UL -#define CAN_MO7_BASE 0x480150E0UL -#define CAN_MO8_BASE 0x48015100UL -#define CAN_MO9_BASE 0x48015120UL -#define CAN_MO10_BASE 0x48015140UL -#define CAN_MO11_BASE 0x48015160UL -#define CAN_MO12_BASE 0x48015180UL -#define CAN_MO13_BASE 0x480151A0UL -#define CAN_MO14_BASE 0x480151C0UL -#define CAN_MO15_BASE 0x480151E0UL -#define CAN_MO16_BASE 0x48015200UL -#define CAN_MO17_BASE 0x48015220UL -#define CAN_MO18_BASE 0x48015240UL -#define CAN_MO19_BASE 0x48015260UL -#define CAN_MO20_BASE 0x48015280UL -#define CAN_MO21_BASE 0x480152A0UL -#define CAN_MO22_BASE 0x480152C0UL -#define CAN_MO23_BASE 0x480152E0UL -#define CAN_MO24_BASE 0x48015300UL -#define CAN_MO25_BASE 0x48015320UL -#define CAN_MO26_BASE 0x48015340UL -#define CAN_MO27_BASE 0x48015360UL -#define CAN_MO28_BASE 0x48015380UL -#define CAN_MO29_BASE 0x480153A0UL -#define CAN_MO30_BASE 0x480153C0UL -#define CAN_MO31_BASE 0x480153E0UL -#define CAN_MO32_BASE 0x48015400UL -#define CAN_MO33_BASE 0x48015420UL -#define CAN_MO34_BASE 0x48015440UL -#define CAN_MO35_BASE 0x48015460UL -#define CAN_MO36_BASE 0x48015480UL -#define CAN_MO37_BASE 0x480154A0UL -#define CAN_MO38_BASE 0x480154C0UL -#define CAN_MO39_BASE 0x480154E0UL -#define CAN_MO40_BASE 0x48015500UL -#define CAN_MO41_BASE 0x48015520UL -#define CAN_MO42_BASE 0x48015540UL -#define CAN_MO43_BASE 0x48015560UL -#define CAN_MO44_BASE 0x48015580UL -#define CAN_MO45_BASE 0x480155A0UL -#define CAN_MO46_BASE 0x480155C0UL -#define CAN_MO47_BASE 0x480155E0UL -#define CAN_MO48_BASE 0x48015600UL -#define CAN_MO49_BASE 0x48015620UL -#define CAN_MO50_BASE 0x48015640UL -#define CAN_MO51_BASE 0x48015660UL -#define CAN_MO52_BASE 0x48015680UL -#define CAN_MO53_BASE 0x480156A0UL -#define CAN_MO54_BASE 0x480156C0UL -#define CAN_MO55_BASE 0x480156E0UL -#define CAN_MO56_BASE 0x48015700UL -#define CAN_MO57_BASE 0x48015720UL -#define CAN_MO58_BASE 0x48015740UL -#define CAN_MO59_BASE 0x48015760UL -#define CAN_MO60_BASE 0x48015780UL -#define CAN_MO61_BASE 0x480157A0UL -#define CAN_MO62_BASE 0x480157C0UL -#define CAN_MO63_BASE 0x480157E0UL -#define VADC_BASE 0x40004000UL -#define VADC_G0_BASE 0x40004400UL -#define VADC_G1_BASE 0x40004800UL -#define DAC_BASE 0x48018000UL -#define CCU40_BASE 0x4000C000UL -#define CCU41_BASE 0x40010000UL -#define CCU40_CC40_BASE 0x4000C100UL -#define CCU40_CC41_BASE 0x4000C200UL -#define CCU40_CC42_BASE 0x4000C300UL -#define CCU40_CC43_BASE 0x4000C400UL -#define CCU41_CC40_BASE 0x40010100UL -#define CCU41_CC41_BASE 0x40010200UL -#define CCU41_CC42_BASE 0x40010300UL -#define CCU41_CC43_BASE 0x40010400UL -#define CCU80_BASE 0x40020000UL -#define CCU80_CC80_BASE 0x40020100UL -#define CCU80_CC81_BASE 0x40020200UL -#define CCU80_CC82_BASE 0x40020300UL -#define CCU80_CC83_BASE 0x40020400UL -#define HRPWM0_BASE 0x40020900UL -#define HRPWM0_CSG0_BASE 0x40020A00UL -#define HRPWM0_CSG1_BASE 0x40020B00UL -#define HRPWM0_CSG2_BASE 0x40020C00UL -#define HRPWM0_HRC0_BASE 0x40021300UL -#define HRPWM0_HRC1_BASE 0x40021400UL -#define HRPWM0_HRC2_BASE 0x40021500UL -#define HRPWM0_HRC3_BASE 0x40021600UL -#define POSIF0_BASE 0x40028000UL -#define PORT0_BASE 0x48028000UL -#define PORT1_BASE 0x48028100UL -#define PORT2_BASE 0x48028200UL -#define PORT3_BASE 0x48028300UL -#define PORT14_BASE 0x48028E00UL - -/* ================================================================================ */ -/* ================ Peripheral declaration ================ */ -/* ================================================================================ */ - -#define PPB ((PPB_Type *)PPB_BASE) -#define DLR ((DLR_GLOBAL_TypeDef *)DLR_BASE) -#define ERU0 ((ERU_GLOBAL_TypeDef *)ERU0_BASE) -#define ERU1 ((ERU_GLOBAL_TypeDef *)ERU1_BASE) -#define GPDMA0 ((GPDMA0_GLOBAL_TypeDef *)GPDMA0_BASE) -#define GPDMA0_CH0 ((GPDMA0_CH_TypeDef *)GPDMA0_CH0_BASE) -#define GPDMA0_CH1 ((GPDMA0_CH_TypeDef *)GPDMA0_CH1_BASE) -#define GPDMA0_CH2 ((GPDMA0_CH_TypeDef *)GPDMA0_CH2_BASE) -#define GPDMA0_CH3 ((GPDMA0_CH_TypeDef *)GPDMA0_CH3_BASE) -#define GPDMA0_CH4 ((GPDMA0_CH_TypeDef *)GPDMA0_CH4_BASE) -#define GPDMA0_CH5 ((GPDMA0_CH_TypeDef *)GPDMA0_CH5_BASE) -#define GPDMA0_CH6 ((GPDMA0_CH_TypeDef *)GPDMA0_CH6_BASE) -#define GPDMA0_CH7 ((GPDMA0_CH_TypeDef *)GPDMA0_CH7_BASE) -#define FCE ((FCE_GLOBAL_TypeDef *)FCE_BASE) -#define FCE_KE0 ((FCE_KE_TypeDef *)FCE_KE0_BASE) -#define FCE_KE1 ((FCE_KE_TypeDef *)FCE_KE1_BASE) -#define FCE_KE2 ((FCE_KE_TypeDef *)FCE_KE2_BASE) -#define FCE_KE3 ((FCE_KE_TypeDef *)FCE_KE3_BASE) -#define PBA0 ((PBA_GLOBAL_TypeDef *)PBA0_BASE) -#define PBA1 ((PBA_GLOBAL_TypeDef *)PBA1_BASE) -#define FLASH0 ((FLASH0_GLOBAL_TypeDef *)FLASH0_BASE) -#define PREF ((PREF_GLOBAL_TypeDef *)PREF_BASE) -#define PMU0 ((PMU0_GLOBAL_TypeDef *)PMU0_BASE) -#define WDT ((WDT_GLOBAL_TypeDef *)WDT_BASE) -#define RTC ((RTC_GLOBAL_TypeDef *)RTC_BASE) -#define SCU_CLK ((SCU_CLK_TypeDef *)SCU_CLK_BASE) -#define SCU_OSC ((SCU_OSC_TypeDef *)SCU_OSC_BASE) -#define SCU_PLL ((SCU_PLL_TypeDef *)SCU_PLL_BASE) -#define SCU_GENERAL ((SCU_GENERAL_TypeDef *)SCU_GENERAL_BASE) -#define SCU_INTERRUPT ((SCU_INTERRUPT_TypeDef *)SCU_INTERRUPT_BASE) -#define SCU_PARITY ((SCU_PARITY_TypeDef *)SCU_PARITY_BASE) -#define SCU_TRAP ((SCU_TRAP_TypeDef *)SCU_TRAP_BASE) -#define SCU_HIBERNATE ((SCU_HIBERNATE_TypeDef *)SCU_HIBERNATE_BASE) -#define SCU_POWER ((SCU_POWER_TypeDef *)SCU_POWER_BASE) -#define SCU_RESET ((SCU_RESET_TypeDef *)SCU_RESET_BASE) -#define LEDTS0 ((LEDTS0_GLOBAL_TypeDef *)LEDTS0_BASE) -#define USB0 ((USB0_GLOBAL_TypeDef *)USB0_BASE) -#define USB0_EP0 ((USB0_EP0_TypeDef *)USB_EP_BASE) -#define USB0_EP1 ((USB0_EP_TypeDef *)USB0_EP1_BASE) -#define USB0_EP2 ((USB0_EP_TypeDef *)USB0_EP2_BASE) -#define USB0_EP3 ((USB0_EP_TypeDef *)USB0_EP3_BASE) -#define USB0_EP4 ((USB0_EP_TypeDef *)USB0_EP4_BASE) -#define USB0_EP5 ((USB0_EP_TypeDef *)USB0_EP5_BASE) -#define USB0_EP6 ((USB0_EP_TypeDef *)USB0_EP6_BASE) -#define USIC0 ((USIC_GLOBAL_TypeDef *)USIC0_BASE) -#define USIC1 ((USIC_GLOBAL_TypeDef *)USIC1_BASE) -#define USIC0_CH0 ((USIC_CH_TypeDef *)USIC0_CH0_BASE) -#define USIC0_CH1 ((USIC_CH_TypeDef *)USIC0_CH1_BASE) -#define USIC1_CH0 ((USIC_CH_TypeDef *)USIC1_CH0_BASE) -#define USIC1_CH1 ((USIC_CH_TypeDef *)USIC1_CH1_BASE) -#define CAN_xmc ((CAN_GLOBAL_TypeDef *)CAN_BASE) -#define CAN_NODE0 ((CAN_NODE_TypeDef *)CAN_NODE0_BASE) -#define CAN_NODE1 ((CAN_NODE_TypeDef *)CAN_NODE1_BASE) -#define CAN_MO0 ((CAN_MO_TypeDef *)CAN_MO0_BASE) -#define CAN_MO1 ((CAN_MO_TypeDef *)CAN_MO1_BASE) -#define CAN_MO2 ((CAN_MO_TypeDef *)CAN_MO2_BASE) -#define CAN_MO3 ((CAN_MO_TypeDef *)CAN_MO3_BASE) -#define CAN_MO4 ((CAN_MO_TypeDef *)CAN_MO4_BASE) -#define CAN_MO5 ((CAN_MO_TypeDef *)CAN_MO5_BASE) -#define CAN_MO6 ((CAN_MO_TypeDef *)CAN_MO6_BASE) -#define CAN_MO7 ((CAN_MO_TypeDef *)CAN_MO7_BASE) -#define CAN_MO8 ((CAN_MO_TypeDef *)CAN_MO8_BASE) -#define CAN_MO9 ((CAN_MO_TypeDef *)CAN_MO9_BASE) -#define CAN_MO10 ((CAN_MO_TypeDef *)CAN_MO10_BASE) -#define CAN_MO11 ((CAN_MO_TypeDef *)CAN_MO11_BASE) -#define CAN_MO12 ((CAN_MO_TypeDef *)CAN_MO12_BASE) -#define CAN_MO13 ((CAN_MO_TypeDef *)CAN_MO13_BASE) -#define CAN_MO14 ((CAN_MO_TypeDef *)CAN_MO14_BASE) -#define CAN_MO15 ((CAN_MO_TypeDef *)CAN_MO15_BASE) -#define CAN_MO16 ((CAN_MO_TypeDef *)CAN_MO16_BASE) -#define CAN_MO17 ((CAN_MO_TypeDef *)CAN_MO17_BASE) -#define CAN_MO18 ((CAN_MO_TypeDef *)CAN_MO18_BASE) -#define CAN_MO19 ((CAN_MO_TypeDef *)CAN_MO19_BASE) -#define CAN_MO20 ((CAN_MO_TypeDef *)CAN_MO20_BASE) -#define CAN_MO21 ((CAN_MO_TypeDef *)CAN_MO21_BASE) -#define CAN_MO22 ((CAN_MO_TypeDef *)CAN_MO22_BASE) -#define CAN_MO23 ((CAN_MO_TypeDef *)CAN_MO23_BASE) -#define CAN_MO24 ((CAN_MO_TypeDef *)CAN_MO24_BASE) -#define CAN_MO25 ((CAN_MO_TypeDef *)CAN_MO25_BASE) -#define CAN_MO26 ((CAN_MO_TypeDef *)CAN_MO26_BASE) -#define CAN_MO27 ((CAN_MO_TypeDef *)CAN_MO27_BASE) -#define CAN_MO28 ((CAN_MO_TypeDef *)CAN_MO28_BASE) -#define CAN_MO29 ((CAN_MO_TypeDef *)CAN_MO29_BASE) -#define CAN_MO30 ((CAN_MO_TypeDef *)CAN_MO30_BASE) -#define CAN_MO31 ((CAN_MO_TypeDef *)CAN_MO31_BASE) -#define CAN_MO32 ((CAN_MO_TypeDef *)CAN_MO32_BASE) -#define CAN_MO33 ((CAN_MO_TypeDef *)CAN_MO33_BASE) -#define CAN_MO34 ((CAN_MO_TypeDef *)CAN_MO34_BASE) -#define CAN_MO35 ((CAN_MO_TypeDef *)CAN_MO35_BASE) -#define CAN_MO36 ((CAN_MO_TypeDef *)CAN_MO36_BASE) -#define CAN_MO37 ((CAN_MO_TypeDef *)CAN_MO37_BASE) -#define CAN_MO38 ((CAN_MO_TypeDef *)CAN_MO38_BASE) -#define CAN_MO39 ((CAN_MO_TypeDef *)CAN_MO39_BASE) -#define CAN_MO40 ((CAN_MO_TypeDef *)CAN_MO40_BASE) -#define CAN_MO41 ((CAN_MO_TypeDef *)CAN_MO41_BASE) -#define CAN_MO42 ((CAN_MO_TypeDef *)CAN_MO42_BASE) -#define CAN_MO43 ((CAN_MO_TypeDef *)CAN_MO43_BASE) -#define CAN_MO44 ((CAN_MO_TypeDef *)CAN_MO44_BASE) -#define CAN_MO45 ((CAN_MO_TypeDef *)CAN_MO45_BASE) -#define CAN_MO46 ((CAN_MO_TypeDef *)CAN_MO46_BASE) -#define CAN_MO47 ((CAN_MO_TypeDef *)CAN_MO47_BASE) -#define CAN_MO48 ((CAN_MO_TypeDef *)CAN_MO48_BASE) -#define CAN_MO49 ((CAN_MO_TypeDef *)CAN_MO49_BASE) -#define CAN_MO50 ((CAN_MO_TypeDef *)CAN_MO50_BASE) -#define CAN_MO51 ((CAN_MO_TypeDef *)CAN_MO51_BASE) -#define CAN_MO52 ((CAN_MO_TypeDef *)CAN_MO52_BASE) -#define CAN_MO53 ((CAN_MO_TypeDef *)CAN_MO53_BASE) -#define CAN_MO54 ((CAN_MO_TypeDef *)CAN_MO54_BASE) -#define CAN_MO55 ((CAN_MO_TypeDef *)CAN_MO55_BASE) -#define CAN_MO56 ((CAN_MO_TypeDef *)CAN_MO56_BASE) -#define CAN_MO57 ((CAN_MO_TypeDef *)CAN_MO57_BASE) -#define CAN_MO58 ((CAN_MO_TypeDef *)CAN_MO58_BASE) -#define CAN_MO59 ((CAN_MO_TypeDef *)CAN_MO59_BASE) -#define CAN_MO60 ((CAN_MO_TypeDef *)CAN_MO60_BASE) -#define CAN_MO61 ((CAN_MO_TypeDef *)CAN_MO61_BASE) -#define CAN_MO62 ((CAN_MO_TypeDef *)CAN_MO62_BASE) -#define CAN_MO63 ((CAN_MO_TypeDef *)CAN_MO63_BASE) -#define VADC ((VADC_GLOBAL_TypeDef *)VADC_BASE) -#define VADC_G0 ((VADC_G_TypeDef *)VADC_G0_BASE) -#define VADC_G1 ((VADC_G_TypeDef *)VADC_G1_BASE) -#define DAC ((DAC_GLOBAL_TypeDef *)DAC_BASE) -#define CCU40 ((CCU4_GLOBAL_TypeDef *)CCU40_BASE) -#define CCU41 ((CCU4_GLOBAL_TypeDef *)CCU41_BASE) -#define CCU40_CC40 ((CCU4_CC4_TypeDef *)CCU40_CC40_BASE) -#define CCU40_CC41 ((CCU4_CC4_TypeDef *)CCU40_CC41_BASE) -#define CCU40_CC42 ((CCU4_CC4_TypeDef *)CCU40_CC42_BASE) -#define CCU40_CC43 ((CCU4_CC4_TypeDef *)CCU40_CC43_BASE) -#define CCU41_CC40 ((CCU4_CC4_TypeDef *)CCU41_CC40_BASE) -#define CCU41_CC41 ((CCU4_CC4_TypeDef *)CCU41_CC41_BASE) -#define CCU41_CC42 ((CCU4_CC4_TypeDef *)CCU41_CC42_BASE) -#define CCU41_CC43 ((CCU4_CC4_TypeDef *)CCU41_CC43_BASE) -#define CCU80 ((CCU8_GLOBAL_TypeDef *)CCU80_BASE) -#define CCU80_CC80 ((CCU8_CC8_TypeDef *)CCU80_CC80_BASE) -#define CCU80_CC81 ((CCU8_CC8_TypeDef *)CCU80_CC81_BASE) -#define CCU80_CC82 ((CCU8_CC8_TypeDef *)CCU80_CC82_BASE) -#define CCU80_CC83 ((CCU8_CC8_TypeDef *)CCU80_CC83_BASE) -#define HRPWM0 ((HRPWM0_Type *)HRPWM0_BASE) -#define HRPWM0_CSG0 ((HRPWM0_CSG_Type *)HRPWM0_CSG0_BASE) -#define HRPWM0_CSG1 ((HRPWM0_CSG_Type *)HRPWM0_CSG1_BASE) -#define HRPWM0_CSG2 ((HRPWM0_CSG_Type *)HRPWM0_CSG2_BASE) -#define HRPWM0_HRC0 ((HRPWM0_HRC_Type *)HRPWM0_HRC0_BASE) -#define HRPWM0_HRC1 ((HRPWM0_HRC_Type *)HRPWM0_HRC1_BASE) -#define HRPWM0_HRC2 ((HRPWM0_HRC_Type *)HRPWM0_HRC2_BASE) -#define HRPWM0_HRC3 ((HRPWM0_HRC_Type *)HRPWM0_HRC3_BASE) -#define POSIF0 ((POSIF_GLOBAL_TypeDef *)POSIF0_BASE) -#define PORT0 ((PORT0_Type *)PORT0_BASE) -#define PORT1 ((PORT1_Type *)PORT1_BASE) -#define PORT2 ((PORT2_Type *)PORT2_BASE) -#define PORT3 ((PORT3_Type *)PORT3_BASE) -#define PORT14 ((PORT14_Type *)PORT14_BASE) - -/** @} */ /* End of group Device_Peripheral_Registers */ -/** @} */ /* End of group XMC4200 */ -/** @} */ /* End of group Infineon */ - -#ifdef __cplusplus -} -#endif - -#endif /* XMC4200_H */ diff --git a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h b/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h deleted file mode 100644 index dadd1dd5..00000000 --- a/variants/XMC4200/config/KIT_XMC_PLT2GO_XMC4200/pins_arduino.h +++ /dev/null @@ -1,364 +0,0 @@ -/* - pins_arduino.h - Pin definition functions for Arduino - Part of Arduino - http://www.arduino.cc/ - - Copyright (c) 2007 David A. Mellis - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA - - Copyright (c) 2019 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ -#ifndef PINS_ARDUINO_H_ -#define PINS_ARDUINO_H_ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define XMC_BOARD KIT_XMC_PLT2GO_XMC4200 - -/* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ -#define XMC_LED_ON 1 - -// Following were defines now evaluated by compilation as const variables -// After definitions of associated mapping arrays -extern const uint8_t NUM_DIGITAL; -extern const uint8_t GND; -extern const uint8_t NUM_PWM4; -extern const uint8_t NUM_PWM8; -extern const uint8_t NUM_PWM; -extern const uint8_t NUM_INTERRUPT; -extern const uint8_t NUM_ANALOG_INPUTS; -#ifdef DAC -extern const uint8_t NUM_ANALOG_OUTPUTS; -#endif -#define NUM_LEDS 1 -#define NUM_BUTTONS 1 -#define NUM_SERIAL 1 -#define NUM_TONE_PINS 7 -#define NUM_TASKS_VARIANT 12 -#define NUM_SPI 1 -#define NUM_I2C 1 - -// Indicate unit has RTC/Alarm -#define HAS_RTC 1 - -// Generate 490Hz @fCCU=80MHz -#define PWM4_TIMER_PERIOD (0x09F7) -// Generate 490Hz @fCCU=80MHz -#define PWM8_TIMER_PERIOD (0x09F7) - -#define PCLK 80000000u - -#define PIN_SPI_SS 10 -#define PIN_SPI_MOSI 11 -#define PIN_SPI_MISO 12 -#define PIN_SPI_SCK 13 - -extern uint8_t SS; -extern uint8_t MOSI; -extern uint8_t MISO; -extern uint8_t SCK; - -#define A0 0 // ADC G0CH0 P14.0 -#define A1 1 // ADC G0CH6 P14.6 -#define A2 2 // ADC G0CH7 P14.7 -#define A3 3 // ADC G1CH0 P14.8 -#define A4 4 // ADC G0CH4 P14.4 -#define A5 5 // ADC G0CH5 P14.5 -// Additional ADC ports starting here -#define A6 6 // ADC G1CH6 on P14.14 -#define A7 7 // ADC G1CH1 on P14.9 - -#define LED1 36 // Additional LED1 -#define LED_BUILTIN LED1 // Standard Arduino LED: Uses LED1 -#define LED2 \ - LED1 // Dummy LED define macro; added to comply with LED Library examples in CI/CD workflow -#define BUTTON1 27 // Additional BUTTON1 - -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : -1)) - -#ifdef ARDUINO_MAIN -// Mapping of digital pins and comments -const XMC_PORT_PIN_t mapping_port_pin[] = { - /* 0 */ {XMC_GPIO_PORT2, 15}, // RX P2.15 X1-4 - /* 1 */ {XMC_GPIO_PORT2, 14}, // TX P2.14 X1-3 - /* 2 */ {XMC_GPIO_PORT1, 0}, // GPIO / External INT 0 P1.0 X1-11 - /* 3 */ {XMC_GPIO_PORT2, 2}, // PWM41-3 / PWM0 / External INT 1 P2.2 X1-31 - /* 4 */ {XMC_GPIO_PORT2, 9}, // IO_0 P2.9 X1-36 - /* 5 */ {XMC_GPIO_PORT2, 3}, // PWM41-2 output / PWM1 P2.3 X1-32 - /* 6 */ {XMC_GPIO_PORT2, 4}, // PWM41-1 output / PWM2 P2.4 X1-33 - /* 7 */ {XMC_GPIO_PORT2, 8}, // IO_1 P2.8 X1-35 - - /* 8 */ {XMC_GPIO_PORT2, 6}, // IO_2 P2.6 X1-27 - /* 9 */ {XMC_GPIO_PORT0, 11}, // PWM80-31 output / PWM3 P0.11 X2-7 - /* 10 */ {XMC_GPIO_PORT1, 7}, // SPI-CS P1.7 X1-8 - /* 11 */ {XMC_GPIO_PORT1, 9}, // SPI-MOSI P1.9 X1-10 - /* 12 */ {XMC_GPIO_PORT0, 0}, // SPI-MISO P0.0 X2-18 - /* 13 */ {XMC_GPIO_PORT1, 8}, // SPI-SCK P1.8 X1-9 - /* 14 */ {XMC_GPIO_PORT2, 5}, // I2C Data / Address SDA / A4 P2.5 (Hardwired to A4) - // X1-34 - /* 15 */ {XMC_GPIO_PORT3, 0}, // I2C Clock SCL / A5 P3.0 (Hardwired to A5) - // X2-19 - /* 16 */ {XMC_GPIO_PORT14, 0}, // A0 / ADC Input P14.0 (INPUT ONLY) - // X2-34 - /* 17 */ {XMC_GPIO_PORT14, 6}, // A1 / ADC Input P14.6 (INPUT ONLY) - // X2-25 - /* 18 */ {XMC_GPIO_PORT14, 7}, // A2 / ADC Input P14.7 (INPUT ONLY) - // X2-28 - /* 19 */ {XMC_GPIO_PORT14, 8}, // A3 / ADC Input / AN_MikroBus / DAC0 P14.8 X2-33 - /* 20 */ {XMC_GPIO_PORT14, 4}, // A4 / ADC Input / SDA / AN1_2GO_1 P14.4 (Hardwired to - // SDA) X2-24 - /* 21 */ {XMC_GPIO_PORT14, 5}, // A5 / ADC Input / SCL / AN2_2GO_2 P14.5 (Hardwired to - // SCL) X2-30 - - // Additional pins for port X1 starting here - /* 22 */ {XMC_GPIO_PORT1, 1}, // PWM_MikroBus / PWM40-2 P1.1 X1-12 - /* 23 */ {XMC_GPIO_PORT1, 2}, // PWM / PWM40-1 / GPIO4_S2GO_1 P1.2 X1-13 - /* 24 */ {XMC_GPIO_PORT1, 3}, // PWM / PWM40-0 / GPIO4_2GO_2 P1.3 X1-14 - /* 25 */ {XMC_GPIO_PORT1, 4}, // PC_TXD P1.4 X1-15 - /* 26 */ {XMC_GPIO_PORT1, 5}, // PC_RXD P1.5 X1-16 - /* 27 */ {XMC_GPIO_PORT1, 15}, // BUTTON1 P1.15 X1-22 - /* 28 */ {XMC_GPIO_PORT2, 7}, // RST_MikroBus P2.7 X1-28 - /* 29 */ {XMC_GPIO_PORT2, 0}, // CAN_TX P2.0 X1-29 - /* 30 */ {XMC_GPIO_PORT2, 1}, // GPIO1_2GO_2 P2.1 X1-30 - - // Additional pins for port X2 starting here - /* 31 */ {XMC_GPIO_PORT0, 7}, // SPI-CS_MikroBus P0.7 X2-1 - /* 32 */ {XMC_GPIO_PORT0, 8}, // RST / GPIO2_2GO_1 P0.8 X2-4 - /* 33 */ {XMC_GPIO_PORT0, 5}, // INT / GPIO3_2GO_1 P0.5 X2-9 - /* 34 */ {XMC_GPIO_PORT0, 3}, // INT / GPIO3_2GO_2 P0.3 X2-11 - /* 35 */ {XMC_GPIO_PORT0, 6}, // RST / GPIO2_2GO_2 P0.6 X2-12 - /* 36 */ {XMC_GPIO_PORT0, 1}, // LED1 P0.1 X2-13 - /* 37 */ {XMC_GPIO_PORT0, 4}, // GPIO1_S2GO_1 P0.4 X2-14 - /* 38 */ {XMC_GPIO_PORT0, 10}, // INT_MikroBus P0.10 X2-15 - /* 39 */ {XMC_GPIO_PORT0, 2}, // SPI-CS_2GO_1 P0.2 X2-16 - /* 40 */ {XMC_GPIO_PORT0, 9}, // SPI-CS_2GO_2 P0.9 X2-20 - /* 41 */ {XMC_GPIO_PORT14, 14}, // AN2_2GO_1 / A6 / ADC Input P14.14 (INPUT ONLY) - // X2-21 - /* 42 */ {XMC_GPIO_PORT14, 3}, // CAN_RX P14.3 X2-32 - /* 43 */ {XMC_GPIO_PORT14, 9}, // AN1_2GO_2 / A7 / ADC Input / DAC1 P14.9 X2-36 -}; - -const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); -const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); -bool gpio_current_value[NUM_DIGITAL] = {false}; -; - -const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { - /* 0 */ {XMC_ERU0, XMC_ERU_ETL_INPUT_A0, XMC_ERU_ETL_INPUT_B0, 3, 3, 0}, - /* 1 */ {XMC_ERU0, XMC_ERU_ETL_INPUT_A0, XMC_ERU_ETL_INPUT_B2, 1, 0, 1}}; -const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERRUPT_t)); - -/* Mapping of Arduino Pins to PWM4 channels as pin and index in PWM4 channel - mapping array XMC_PWM4_t mapping_pwm4[] - last entry 255 for both parts. - Putting both parts in array means if a PWM4 channel gets reassigned for - another function later a gap in channel numbers will not mess things up */ -const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 - {5, 1}, // PWM1 - {6, 2}, // PWM2 - {22, 3}, // PWM - {23, 4}, // PWM - {24, 5}, // PWM - {255, 255}}; - -/* Configurations of PWM channels for CCU4 type */ -XMC_PWM4_t mapping_pwm4[] = { - {CCU41, CCU41_CC43, 3, mapping_port_pin[3], P2_2_AF_CCU41_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 3 P2.2 - {CCU41, CCU41_CC42, 2, mapping_port_pin[5], P2_3_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 5 P2.3 - {CCU41, CCU41_CC41, 1, mapping_port_pin[6], P2_4_AF_CCU41_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 6 P2.4 - // additional pwm outputs starting here - {CCU40, CCU40_CC42, 2, mapping_port_pin[22], P1_1_AF_CCU40_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 22 P1.1 - {CCU40, CCU40_CC41, 1, mapping_port_pin[23], P1_2_AF_CCU40_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 23 P1.2 - {CCU40, CCU40_CC40, 0, mapping_port_pin[24], P1_3_AF_CCU40_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false} // PWM disabled 24 P1.3 -}; -const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); - -/* Mapping in same manner as PWM4 for PWM8 channels */ -const uint8_t mapping_pin_PWM8[][2] = {{9, 0}, // PWM3 - {255, 255}}; - -/* Configurations of PWM channels for CCU8 type */ -XMC_PWM8_t mapping_pwm8[] = { - {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], - P0_11_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false} // PWM disabled 9 P0.11 -}; -const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); -const uint8_t NUM_PWM = - (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)) + (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); - - /* Analog Pin mappings and configurations */ - #ifdef DAC -const uint8_t mapping_pin_DAC[][2] = {{19, 0}, {43, 1}, {255, 255}}; - -/* Analog Pin mappings and configurations */ -XMC_ARD_DAC_t mapping_dac[] = {{XMC_DAC0, 0, 12}, {XMC_DAC0, 1, 12}}; -const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)); - #endif - -XMC_ADC_t mapping_adc[] = { - // Result reg numbers are now equal to channel numbers - {VADC, 0, VADC_G0, 0, 0, false}, // A0 - {VADC, 6, VADC_G0, 0, 1, false}, // A1 - {VADC, 7, VADC_G0, 0, 2, false}, // A2 - {VADC, 0, VADC_G1, 1, 0, false}, // A3 - {VADC, 4, VADC_G0, 0, 3, false}, // A4 - {VADC, 5, VADC_G0, 0, 4, false}, // A5 - // Additional ADC channels starting here - {VADC, 6, VADC_G1, 1, 1, false}, // A6 - {VADC, 1, VADC_G1, 1, 2, false}, // A7 -}; -const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); - -XMC_UART_t XMC_UART_0 = { - .channel = XMC_UART0_CH0, - .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)4}, - .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)5}, - .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .input_source_dx0 = (XMC_USIC_INPUT_t)USIC0_C0_DX0_P1_4, - .input_source_dx1 = XMC_INPUT_INVALID, - .input_source_dx2 = XMC_INPUT_INVALID, - .input_source_dx3 = XMC_INPUT_INVALID, - .irq_num = USIC0_0_IRQn, - .irq_service_request = 0}; - -XMC_UART_t XMC_UART_1 = { - .channel = XMC_UART1_CH0, - .rx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)15}, - .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .tx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14}, - .tx_config = {.mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .input_source_dx0 = (XMC_USIC_INPUT_t)USIC1_C0_DX0_P2_15, - .input_source_dx1 = XMC_INPUT_INVALID, - .input_source_dx2 = XMC_INPUT_INVALID, - .input_source_dx3 = XMC_INPUT_INVALID, - .irq_num = USIC1_0_IRQn, - .irq_service_request = 0}; - -// Object instantiated of the HardwareSerial class for UART PC (debug) interface -Uart Serial(&XMC_UART_0); -// Object instantiated of the HardwareSerial class for UART ONBOARD interface -Uart Serial1(&XMC_UART_1); - -// SPI instance -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI1_CH1, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)9}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_D, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)8}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -}; - -// I2C instance -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)5}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)0}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .input_source_dx0 = XMC_INPUT_B, - .input_source_dx1 = XMC_INPUT_B, - .slave_receive_irq_num = (IRQn_Type)84, - .slave_receive_irq_service_request = 1, - .protocol_irq_num = (IRQn_Type)85, - .protocol_irq_service_request = 2}; - - // XMC CAN instance - #ifdef CAN_xmc -XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE0, - .can_node_num = XMC_NODE_NUM_0, - .can_clock = XMC_CAN_CANCLKSRC_FPERI, - .can_frequency = (uint32_t)144000000, - .rx = {.port = (XMC_GPIO_PORT_t *)PORT14_BASE, .pin = (uint8_t)3}, - .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, - .tx = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1}, - .node_input = CAN_NODE0_RXD_P14_3, - .irq_num = CAN0_7_IRQn, - .irq_service_request = 7u}; - #endif - - // Serial Interrupt and event handling - #ifdef __cplusplus -extern "C" { - #endif -void serialEventRun(); -void serialEvent() __attribute__((weak)); -void serialEvent1() __attribute__((weak)); - -void serialEventRun() { - if (serialEvent) { - if (Serial.available()) - serialEvent(); - } - if (serialEvent1) { - if (Serial1.available()) - serialEvent1(); - } -} - -// IRQ Handler of Serial Onboard (USIC1) -void USIC1_0_IRQHandler() { Serial1.IrqHandler(); } - -// IRQ Handler of Serial to PC USB (USIC0) -void USIC0_0_IRQHandler() { Serial.IrqHandler(); } - - #ifdef __cplusplus -} - #endif -#endif /* ARDUINO_MAIN*/ - -#ifdef __cplusplus -#endif -#endif diff --git a/variants/XMC4200/linker_script.ld b/variants/XMC4200/linker_script.ld deleted file mode 100644 index 6c17ab3d..00000000 --- a/variants/XMC4200/linker_script.ld +++ /dev/null @@ -1,286 +0,0 @@ -/** - * @file XMC4200x256.ld - * @date 2017-04-20 - * - * @cond - ********************************************************************************************************************* - * Linker file for the GNU C Compiler v1.8 - * Supported devices: XMC4200-F64x256 - * XMC4200-Q48x256 - * - * Copyright (c) 2015-2020, Infineon Technologies AG - * All rights reserved. - * - * Boost Software License - Version 1.0 - August 17th, 2003 - * - * Permission is hereby granted, free of charge, to any person or organization - * obtaining a copy of the software and accompanying documentation covered by - * this license (the "Software") to use, reproduce, display, distribute, - * execute, and transmit the Software, and to prepare derivative works of the - * Software, and to permit third-parties to whom the Software is furnished to - * do so, all subject to the following: - * - * The copyright notices in the Software and this entire statement, including - * the above license grant, this restriction and the following disclaimer, - * must be included in all copies of the Software, in whole or in part, and - * all derivative works of the Software, unless such copies or derivative - * works are solely in the form of machine-executable object code generated by - * a source language processor. - * - * 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT - * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE - * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * To improve the quality of the software, users are encouraged to share - * modifications, enhancements or bug fixes with Infineon Technologies AG - * at XMCSupport@infineon.com. - ********************************************************************************************************************* - * - * Change History - * -------------- - * - * 2015-07-07: - * - Product splitting - * - Copyright notice update - * - * 2015-11-24: - * - Compatibility with GCC 4.9 2015q2 - * - * 2016-03-08: - * - Fix size of BSS and DATA sections to be multiple of 4 - * - Add assertion to check that region SRAM_combined does not overflowed no_init section - * - * 2017-04-07: - * - Added new symbols __text_size and eText - * - * 2017-04-20: - * - Change vtable location to flash area to save ram - * - * @endcond - * - */ - -OUTPUT_FORMAT("elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) - -MEMORY -{ - FLASH_1_cached(RX) : ORIGIN = 0x08000000, LENGTH = 0x40000 - FLASH_1_uncached(RX) : ORIGIN = 0x0C000000, LENGTH = 0x40000 - PSRAM_1(!RX) : ORIGIN = 0x1FFFC000, LENGTH = 0x4000 - DSRAM_1_system(!RX) : ORIGIN = 0x20000000, LENGTH = 0x6000 - SRAM_combined(!RX) : ORIGIN = 0x1FFFC000, LENGTH = 0xA000 -} - -stack_size = DEFINED(stack_size) ? stack_size : 2048; -no_init_size = 64; - -SECTIONS -{ - /* TEXT section */ - - .text : - { - sText = .; - KEEP(*(.reset)); - *(.text .text.* .gnu.linkonce.t.*); - - /* C++ Support */ - KEEP(*(.init)) - KEEP(*(.fini)) - - /* .ctors */ - *crtbegin.o(.ctors) - *crtbegin?.o(.ctors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) - *(SORT(.ctors.*)) - *(.ctors) - - /* .dtors */ - *crtbegin.o(.dtors) - *crtbegin?.o(.dtors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) - *(SORT(.dtors.*)) - *(.dtors) - - *(.rodata .rodata.*) - *(.gnu.linkonce.r*) - - *(vtable) - - . = ALIGN(4); - } > FLASH_1_cached AT > FLASH_1_uncached - - .eh_frame_hdr : ALIGN (4) - { - KEEP (*(.eh_frame_hdr)) - } > FLASH_1_cached AT > FLASH_1_uncached - - .eh_frame : ALIGN (4) - { - KEEP (*(.eh_frame)) - } > FLASH_1_cached AT > FLASH_1_uncached - - /* Exception handling, exidx needs a dedicated section */ - .ARM.extab : ALIGN(4) - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > FLASH_1_cached AT > FLASH_1_uncached - - . = ALIGN(4); - __exidx_start = .; - .ARM.exidx : ALIGN(4) - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > FLASH_1_cached AT > FLASH_1_uncached - __exidx_end = .; - . = ALIGN(4); - - /* DSRAM layout (Lowest to highest)*/ - Stack (NOLOAD) : - { - __stack_start = .; - . = . + stack_size; - __stack_end = .; - __initial_sp = .; - } > SRAM_combined - - /* functions with __attribute__((section(".ram_code"))) */ - .ram_code : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __ram_code_start = .; - *(.ram_code) - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __ram_code_end = .; - } > SRAM_combined AT > FLASH_1_uncached - __ram_code_load = LOADADDR (.ram_code); - __ram_code_size = __ram_code_end - __ram_code_start; - - /* Standard DATA and user defined DATA/BSS/CONST sections */ - .data : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __data_start = .; - * (.data); - * (.data*); - *(*.data); - *(.gnu.linkonce.d*) - - . = ALIGN(4); - /* preinit data */ - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP(*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - - . = ALIGN(4); - /* init data */ - PROVIDE_HIDDEN (__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - - . = ALIGN(4); - /* finit data */ - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP(*(SORT(.fini_array.*))) - KEEP(*(.fini_array)) - PROVIDE_HIDDEN (__fini_array_end = .); - - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __data_end = .; - } > SRAM_combined AT > FLASH_1_uncached - __data_load = LOADADDR (.data); - __data_size = __data_end - __data_start; - - __text_size = (__exidx_end - sText) + __data_size + __ram_code_size; - eText = sText + __text_size; - - /* BSS section */ - .bss (NOLOAD) : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __bss_start = .; - * (.bss); - * (.bss*); - * (COMMON); - *(.gnu.linkonce.b*) - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __bss_end = .; - } > SRAM_combined - __bss_size = __bss_end - __bss_start; - - /* Shift location counter, so that ETH_RAM and USB_RAM are located above DSRAM_1_system */ - __shift_loc = (__bss_end >= ORIGIN(DSRAM_1_system)) ? 0 : (ORIGIN(DSRAM_1_system) - __bss_end); - - USB_RAM (__bss_end + __shift_loc) (NOLOAD) : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - USB_RAM_start = .; - *(USB_RAM) - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - USB_RAM_end = .; - . = ALIGN(8); - Heap_Bank1_Start = .; - } > SRAM_combined - USB_RAM_size = USB_RAM_end - USB_RAM_start; - - /* .no_init section contains chipid, SystemCoreClock and trimming data. See system.c file */ - .no_init ORIGIN(SRAM_combined) + LENGTH(SRAM_combined) - no_init_size (NOLOAD) : - { - Heap_Bank1_End = .; - * (.no_init); - } > SRAM_combined - - /* Heap - Bank1*/ - Heap_Bank1_Size = Heap_Bank1_End - Heap_Bank1_Start; - - ASSERT(Heap_Bank1_Start <= Heap_Bank1_End, "region SRAM_combined overflowed no_init section") - - /DISCARD/ : - { - *(.comment) - } - - .stab 0 (NOLOAD) : { *(.stab) } - .stabstr 0 (NOLOAD) : { *(.stabstr) } - - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_pubtypes 0 : { *(.debug_pubtypes) } - - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - - /* DWARF 2.1 */ - .debug_ranges 0 : { *(.debug_ranges) } - - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - - /* Build attributes */ - .build_attributes 0 : { *(.ARM.attributes) } -} diff --git a/variants/XMC4200/startup_XMC4200.S b/variants/XMC4200/startup_XMC4200.S deleted file mode 100644 index 362c9ea6..00000000 --- a/variants/XMC4200/startup_XMC4200.S +++ /dev/null @@ -1,434 +0,0 @@ -/********************************************************************************************************************* - * @file startup_XMC4200.S - * @brief CMSIS Core Device Startup File for Infineon XMC4200 Device Series - * @version V1.1 - * @date 15 Mai 2020 - * - * @cond - ********************************************************************************************************************* - * Copyright (c) 2012-2020, Infineon Technologies AG - * All rights reserved. - * - * Boost Software License - Version 1.0 - August 17th, 2003 - * - * Permission is hereby granted, free of charge, to any person or organization - * obtaining a copy of the software and accompanying documentation covered by - * this license (the "Software") to use, reproduce, display, distribute, - * execute, and transmit the Software, and to prepare derivative works of the - * Software, and to permit third-parties to whom the Software is furnished to - * do so, all subject to the following: - * - * The copyright notices in the Software and this entire statement, including - * the above license grant, this restriction and the following disclaimer, - * must be included in all copies of the Software, in whole or in part, and - * all derivative works of the Software, unless such copies or derivative - * works are solely in the form of machine-executable object code generated by - * a source language processor. - * - * 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT - * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE - * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * To improve the quality of the software, users are encouraged to share - * modifications, enhancements or bug fixes with Infineon Technologies AG - * at XMCSupport@infineon.com. - ********************************************************************************************************************* - * - **************************** Change history ******************************** - * V0.1,Sep, 13, 2012 ES : initial version - * V0.2,Oct, 12, 2012 PKB: C++ support - * V0.3,Jan, 26, 2013 PKB: Workaround for prefetch bug - * V0.4,Jul, 29, 2013 PKB: AAPCS violation in V0.3 fixed - * V0.5,Feb, 05, 2014 PKB: Removed redundant alignment code from copy+clear funcs - * V0.6,May, 05, 2014 JFT: Added ram_code section - * V0.7,Nov, 25, 2014 JFT: CPU workaround disabled. Single default handler. - * Removed DAVE3 dependency - * V0.8,Jan, 05, 2016 JFT: Fix .reset section attributes - * V0.9,March,04,2016 JFT: Fix weak definition of Veneers. - * Only relevant for AA, which needs ENABLE_PMU_CM_001_WORKAROUND - * V1.0,June ,01,2016 JFT: Rename ENABLE_CPU_CM_001_WORKAROUND to ENABLE_PMU_CM_001_WORKAROUND - * Action required: If using AA step, use ENABLE_PMU_CM_001_WORKAROUND instead of ENABLE_CPU_CM_001_WORKAROUND - * V1.1,Mai, 15, 2020 JFT:Added option (ENABLE_OWN_HANDLER) to generate a individual interrupt handlers for unhandled vectors - * @endcond - */ - -/* ===========START : MACRO DEFINITION MACRO DEFINITION ================== */ - -.macro Entry Handler -#if defined(ENABLE_PMU_CM_001_WORKAROUND) - .long \Handler\()_Veneer -#else - .long \Handler -#endif -.endm - -.macro Insert_ExceptionHandler Handler_Func - .weak \Handler_Func -#if defined(ENABLE_OWN_HANDLER) - .thumb_func - .type \Handler_Func, %function -\Handler_Func: - b . - .size \Handler_Func, . - \Handler_Func -#else - .thumb_set \Handler_Func, Default_Handler -#endif - -#if defined(ENABLE_PMU_CM_001_WORKAROUND) - .weak \Handler_Func\()_Veneer - .type \Handler_Func\()_Veneer, %function -\Handler_Func\()_Veneer: - push {r0, lr} - ldr r0, =\Handler_Func - blx r0 - pop {r0, pc} - .size \Handler_Func\()_Veneer, . - \Handler_Func\()_Veneer -#endif -.endm - -/* =============END : MACRO DEFINITION MACRO DEFINITION ================== */ - -/* ================== START OF VECTOR TABLE DEFINITION ====================== */ -/* Vector Table - This gets programed into VTOR register by onchip BootROM */ - .syntax unified - - .section .reset, "a", %progbits - - .align 2 - .globl __Vectors - .type __Vectors, %object -__Vectors: - .long __initial_sp /* Top of Stack */ - .long Reset_Handler /* Reset Handler */ - - Entry NMI_Handler /* NMI Handler */ - Entry HardFault_Handler /* Hard Fault Handler */ - Entry MemManage_Handler /* MPU Fault Handler */ - Entry BusFault_Handler /* Bus Fault Handler */ - Entry UsageFault_Handler /* Usage Fault Handler */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - Entry SVC_Handler /* SVCall Handler */ - Entry DebugMon_Handler /* Debug Monitor Handler */ - .long 0 /* Reserved */ - Entry PendSV_Handler /* PendSV Handler */ - Entry SysTick_Handler /* SysTick Handler */ - - /* Interrupt Handlers for Service Requests (SR) from XMC4200 Peripherals */ - Entry SCU_0_IRQHandler /* Handler name for SR SCU_0 */ - Entry ERU0_0_IRQHandler /* Handler name for SR ERU0_0 */ - Entry ERU0_1_IRQHandler /* Handler name for SR ERU0_1 */ - Entry ERU0_2_IRQHandler /* Handler name for SR ERU0_2 */ - Entry ERU0_3_IRQHandler /* Handler name for SR ERU0_3 */ - Entry ERU1_0_IRQHandler /* Handler name for SR ERU1_0 */ - Entry ERU1_1_IRQHandler /* Handler name for SR ERU1_1 */ - Entry ERU1_2_IRQHandler /* Handler name for SR ERU1_2 */ - Entry ERU1_3_IRQHandler /* Handler name for SR ERU1_3 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - Entry PMU0_0_IRQHandler /* Handler name for SR PMU0_0 */ - .long 0 /* Not Available */ - Entry VADC0_C0_0_IRQHandler /* Handler name for SR VADC0_C0_0 */ - Entry VADC0_C0_1_IRQHandler /* Handler name for SR VADC0_C0_1 */ - Entry VADC0_C0_2_IRQHandler /* Handler name for SR VADC0_C0_1 */ - Entry VADC0_C0_3_IRQHandler /* Handler name for SR VADC0_C0_3 */ - Entry VADC0_G0_0_IRQHandler /* Handler name for SR VADC0_G0_0 */ - Entry VADC0_G0_1_IRQHandler /* Handler name for SR VADC0_G0_1 */ - Entry VADC0_G0_2_IRQHandler /* Handler name for SR VADC0_G0_2 */ - Entry VADC0_G0_3_IRQHandler /* Handler name for SR VADC0_G0_3 */ - Entry VADC0_G1_0_IRQHandler /* Handler name for SR VADC0_G1_0 */ - Entry VADC0_G1_1_IRQHandler /* Handler name for SR VADC0_G1_1 */ - Entry VADC0_G1_2_IRQHandler /* Handler name for SR VADC0_G1_2 */ - Entry VADC0_G1_3_IRQHandler /* Handler name for SR VADC0_G1_3 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - Entry DAC0_0_IRQHandler /* Handler name for SR DAC0_0 */ - Entry DAC0_1_IRQHandler /* Handler name for SR DAC0_1 */ - Entry CCU40_0_IRQHandler /* Handler name for SR CCU40_0 */ - Entry CCU40_1_IRQHandler /* Handler name for SR CCU40_1 */ - Entry CCU40_2_IRQHandler /* Handler name for SR CCU40_2 */ - Entry CCU40_3_IRQHandler /* Handler name for SR CCU40_3 */ - Entry CCU41_0_IRQHandler /* Handler name for SR CCU41_0 */ - Entry CCU41_1_IRQHandler /* Handler name for SR CCU41_1 */ - Entry CCU41_2_IRQHandler /* Handler name for SR CCU41_2 */ - Entry CCU41_3_IRQHandler /* Handler name for SR CCU41_3 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - Entry CCU80_0_IRQHandler /* Handler name for SR CCU80_0 */ - Entry CCU80_1_IRQHandler /* Handler name for SR CCU80_1 */ - Entry CCU80_2_IRQHandler /* Handler name for SR CCU80_2 */ - Entry CCU80_3_IRQHandler /* Handler name for SR CCU80_3 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - Entry POSIF0_0_IRQHandler /* Handler name for SR POSIF0_0 */ - Entry POSIF0_1_IRQHandler /* Handler name for SR POSIF0_1 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - Entry HRPWM_0_IRQHandler /* Handler name for SR HRPWM_0 */ - Entry HRPWM_1_IRQHandler /* Handler name for SR HRPWM_1 */ - Entry HRPWM_2_IRQHandler /* Handler name for SR HRPWM_2 */ - Entry HRPWM_3_IRQHandler /* Handler name for SR HRPWM_3 */ - Entry CAN0_0_IRQHandler /* Handler name for SR CAN0_0 */ - Entry CAN0_1_IRQHandler /* Handler name for SR CAN0_1 */ - Entry CAN0_2_IRQHandler /* Handler name for SR CAN0_2 */ - Entry CAN0_3_IRQHandler /* Handler name for SR CAN0_3 */ - Entry CAN0_4_IRQHandler /* Handler name for SR CAN0_4 */ - Entry CAN0_5_IRQHandler /* Handler name for SR CAN0_5 */ - Entry CAN0_6_IRQHandler /* Handler name for SR CAN0_6 */ - Entry CAN0_7_IRQHandler /* Handler name for SR CAN0_7 */ - Entry USIC0_0_IRQHandler /* Handler name for SR USIC0_0 */ - Entry USIC0_1_IRQHandler /* Handler name for SR USIC0_1 */ - Entry USIC0_2_IRQHandler /* Handler name for SR USIC0_2 */ - Entry USIC0_3_IRQHandler /* Handler name for SR USIC0_3 */ - Entry USIC0_4_IRQHandler /* Handler name for SR USIC0_4 */ - Entry USIC0_5_IRQHandler /* Handler name for SR USIC0_5 */ - Entry USIC1_0_IRQHandler /* Handler name for SR USIC1_0 */ - Entry USIC1_1_IRQHandler /* Handler name for SR USIC1_1 */ - Entry USIC1_2_IRQHandler /* Handler name for SR USIC1_2 */ - Entry USIC1_3_IRQHandler /* Handler name for SR USIC1_3 */ - Entry USIC1_4_IRQHandler /* Handler name for SR USIC1_4 */ - Entry USIC1_5_IRQHandler /* Handler name for SR USIC1_5 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - Entry LEDTS0_0_IRQHandler /* Handler name for SR LEDTS0_0 */ - .long 0 /* Not Available */ - Entry FCE0_0_IRQHandler /* Handler name for SR FCE0_0 */ - Entry GPDMA0_0_IRQHandler /* Handler name for SR GPDMA0_0 */ - .long 0 /* Not Available */ - Entry USB0_0_IRQHandler /* Handler name for SR USB0_0 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - - .size __Vectors, . - __Vectors -/* ================== END OF VECTOR TABLE DEFINITION ======================= */ - -/* ================== START OF VECTOR ROUTINES ============================= */ - - .align 1 - .thumb - -/* Reset Handler */ - .thumb_func - .globl Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - ldr sp,=__initial_sp - -#ifndef __SKIP_SYSTEM_INIT - ldr r0, =SystemInit - blx r0 -#endif - -/* Initialize data - * - * Between symbol address __copy_table_start__ and __copy_table_end__, - * there are array of triplets, each of which specify: - * offset 0: LMA of start of a section to copy from - * offset 4: VMA of start of a section to copy to - * offset 8: size of the section to copy. Must be multiply of 4 - * - * All addresses must be aligned to 4 bytes boundary. - */ - ldr r4, =__copy_table_start__ - ldr r5, =__copy_table_end__ - -.L_loop0: - cmp r4, r5 - bge .L_loop0_done - ldr r1, [r4] - ldr r2, [r4, #4] - ldr r3, [r4, #8] - -.L_loop0_0: - subs r3, #4 - ittt ge - ldrge r0, [r1, r3] - strge r0, [r2, r3] - bge .L_loop0_0 - - adds r4, #12 - b .L_loop0 - -.L_loop0_done: - -/* Zero initialized data - * Between symbol address __zero_table_start__ and __zero_table_end__, - * there are array of tuples specifying: - * offset 0: Start of a BSS section - * offset 4: Size of this BSS section. Must be multiply of 4 - * - * Define __SKIP_BSS_CLEAR to disable zeroing uninitialzed data in startup. - */ -#ifndef __SKIP_BSS_CLEAR - ldr r3, =__zero_table_start__ - ldr r4, =__zero_table_end__ - -.L_loop2: - cmp r3, r4 - bge .L_loop2_done - ldr r1, [r3] - ldr r2, [r3, #4] - movs r0, 0 - -.L_loop2_0: - subs r2, #4 - itt ge - strge r0, [r1, r2] - bge .L_loop2_0 - - adds r3, #8 - b .L_loop2 -.L_loop2_done: -#endif /* __SKIP_BSS_CLEAR */ - -#ifndef __SKIP_LIBC_INIT_ARRAY - ldr r0, =__libc_init_array - blx r0 -#endif - - ldr r0, =main - blx r0 - -.align 2 -__copy_table_start__: - .long __data_load, __data_start, __data_size - .long __ram_code_load, __ram_code_start, __ram_code_size -__copy_table_end__: - -__zero_table_start__: - .long __bss_start, __bss_size - .long USB_RAM_start, USB_RAM_size -__zero_table_end__: - - .pool - .size Reset_Handler,.-Reset_Handler - -/* ======================================================================== */ -/* ========== START OF EXCEPTION HANDLER DEFINITION ======================== */ - -/* Default exception Handlers - Users may override this default functionality by - defining handlers of the same name in their C code */ - - .align 1 - .thumb_func - .weak Default_Handler - .type Default_Handler, %function -Default_Handler: - b . - .size Default_Handler, . - Default_Handler - - Insert_ExceptionHandler NMI_Handler - Insert_ExceptionHandler HardFault_Handler - Insert_ExceptionHandler MemManage_Handler - Insert_ExceptionHandler BusFault_Handler - Insert_ExceptionHandler UsageFault_Handler - Insert_ExceptionHandler SVC_Handler - Insert_ExceptionHandler DebugMon_Handler - Insert_ExceptionHandler PendSV_Handler - Insert_ExceptionHandler SysTick_Handler - - Insert_ExceptionHandler SCU_0_IRQHandler - Insert_ExceptionHandler ERU0_0_IRQHandler - Insert_ExceptionHandler ERU0_1_IRQHandler - Insert_ExceptionHandler ERU0_2_IRQHandler - Insert_ExceptionHandler ERU0_3_IRQHandler - Insert_ExceptionHandler ERU1_0_IRQHandler - Insert_ExceptionHandler ERU1_1_IRQHandler - Insert_ExceptionHandler ERU1_2_IRQHandler - Insert_ExceptionHandler ERU1_3_IRQHandler - Insert_ExceptionHandler PMU0_0_IRQHandler - Insert_ExceptionHandler VADC0_C0_0_IRQHandler - Insert_ExceptionHandler VADC0_C0_1_IRQHandler - Insert_ExceptionHandler VADC0_C0_2_IRQHandler - Insert_ExceptionHandler VADC0_C0_3_IRQHandler - Insert_ExceptionHandler VADC0_G0_0_IRQHandler - Insert_ExceptionHandler VADC0_G0_1_IRQHandler - Insert_ExceptionHandler VADC0_G0_2_IRQHandler - Insert_ExceptionHandler VADC0_G0_3_IRQHandler - Insert_ExceptionHandler VADC0_G1_0_IRQHandler - Insert_ExceptionHandler VADC0_G1_1_IRQHandler - Insert_ExceptionHandler VADC0_G1_2_IRQHandler - Insert_ExceptionHandler VADC0_G1_3_IRQHandler - Insert_ExceptionHandler DAC0_0_IRQHandler - Insert_ExceptionHandler DAC0_1_IRQHandler - Insert_ExceptionHandler CCU40_0_IRQHandler - Insert_ExceptionHandler CCU40_1_IRQHandler - Insert_ExceptionHandler CCU40_2_IRQHandler - Insert_ExceptionHandler CCU40_3_IRQHandler - Insert_ExceptionHandler CCU41_0_IRQHandler - Insert_ExceptionHandler CCU41_1_IRQHandler - Insert_ExceptionHandler CCU41_2_IRQHandler - Insert_ExceptionHandler CCU41_3_IRQHandler - Insert_ExceptionHandler CCU80_0_IRQHandler - Insert_ExceptionHandler CCU80_1_IRQHandler - Insert_ExceptionHandler CCU80_2_IRQHandler - Insert_ExceptionHandler CCU80_3_IRQHandler - Insert_ExceptionHandler POSIF0_0_IRQHandler - Insert_ExceptionHandler POSIF0_1_IRQHandler - Insert_ExceptionHandler HRPWM_0_IRQHandler - Insert_ExceptionHandler HRPWM_1_IRQHandler - Insert_ExceptionHandler HRPWM_2_IRQHandler - Insert_ExceptionHandler HRPWM_3_IRQHandler - Insert_ExceptionHandler CAN0_0_IRQHandler - Insert_ExceptionHandler CAN0_1_IRQHandler - Insert_ExceptionHandler CAN0_2_IRQHandler - Insert_ExceptionHandler CAN0_3_IRQHandler - Insert_ExceptionHandler CAN0_4_IRQHandler - Insert_ExceptionHandler CAN0_5_IRQHandler - Insert_ExceptionHandler CAN0_6_IRQHandler - Insert_ExceptionHandler CAN0_7_IRQHandler - Insert_ExceptionHandler USIC0_0_IRQHandler - Insert_ExceptionHandler USIC0_1_IRQHandler - Insert_ExceptionHandler USIC0_2_IRQHandler - Insert_ExceptionHandler USIC0_3_IRQHandler - Insert_ExceptionHandler USIC0_4_IRQHandler - Insert_ExceptionHandler USIC0_5_IRQHandler - Insert_ExceptionHandler USIC1_0_IRQHandler - Insert_ExceptionHandler USIC1_1_IRQHandler - Insert_ExceptionHandler USIC1_2_IRQHandler - Insert_ExceptionHandler USIC1_3_IRQHandler - Insert_ExceptionHandler USIC1_4_IRQHandler - Insert_ExceptionHandler USIC1_5_IRQHandler - Insert_ExceptionHandler LEDTS0_0_IRQHandler - Insert_ExceptionHandler FCE0_0_IRQHandler - Insert_ExceptionHandler GPDMA0_0_IRQHandler - Insert_ExceptionHandler USB0_0_IRQHandler - -/* ============= END OF INTERRUPT HANDLER DEFINITION ====================== */ - - .end diff --git a/variants/XMC4200/system_XMC4200.c b/variants/XMC4200/system_XMC4200.c deleted file mode 100644 index 96513119..00000000 --- a/variants/XMC4200/system_XMC4200.c +++ /dev/null @@ -1,696 +0,0 @@ -/********************************************************************************************************************* - * @file system_XMC4200.c - * @brief CMSIS Cortex-M4 Device Peripheral Access Layer Header File for the Infineon XMC4200 - *Device Series - * @version V3.1.6 - * @date 27. Aug 2020 - * - * @cond - ********************************************************************************************************************* - * Copyright (c) 2015-2020, Infineon Technologies AG - * All rights reserved. - * - * Boost Software License - Version 1.0 - August 17th, 2003 - * - * Permission is hereby granted, free of charge, to any person or organization - * obtaining a copy of the software and accompanying documentation covered by - * this license (the "Software") to use, reproduce, display, distribute, - * execute, and transmit the Software, and to prepare derivative works of the - * Software, and to permit third-parties to whom the Software is furnished to - * do so, all subject to the following: - * - * The copyright notices in the Software and this entire statement, including - * the above license grant, this restriction and the following disclaimer, - * must be included in all copies of the Software, in whole or in part, and - * all derivative works of the Software, unless such copies or derivative - * works are solely in the form of machine-executable object code generated by - * a source language processor. - * - * 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT - * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE - * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * To improve the quality of the software, users are encouraged to share - * modifications, enhancements or bug fixes with Infineon Technologies AG - * at XMCSupport@infineon.com. - ********************************************************************************************************************* - * - ********************** Version History *************************************** - * V3.1.0, Dec 2014, Added options to configure clock settings - * V3.1.1, 01. Jun 2016, Fix masking of OSCHPCTRL value - * V3.1.2, 19. Jun 2017, Rely on cmsis_compiler.h instead of defining __WEAK - * Added support for ARM Compiler 6 (armclang) - * V3.1.3, 26. Sep 2017, Disable FPU if FPU_USED is zero - * V3.1.4, 29. Oct 2018, Fix variable location of SystemCoreClock, g_hrpwm_char_data and g_chipid - *for ARMCC compiler V3.1.5, 02. Dec 2019, Fix including device header file following the - *convention: angle brackets are used for standard includes and double quotes for everything else. - * Fix EXTCLKDIV macro definition - * Fix code for condition EXTCLK_PIN == EXTCLK_PIN_P1_15 - * V3.1.6, 27. Aug 2020. Fix K1 divider input clock for PLL in prescaler mode - * Added compiler checks for input VCO and VCO frequencies - * Added wait for K2 divider ready after updating the K2 divider in the PLL - *ramp up Removed wait for lock after changing the K2 divider in the PLL ramp up since a - *modification of the K2-divider has no impact on the VCO Lock status Use P,N,K2 even values - *dividers for system PLL to minimize jitter (for the case of external clock 12MHz) Use P,N,K2 value - *dividers for system PLL when running out of internal oscillator that centers the input frequency - *of the VCO to 6MHz instead of 4MHz (minimum value in DS) - ****************************************************************************** - * @endcond - */ - -/******************************************************************************* - * HEADER FILES - *******************************************************************************/ -#include - -#include "XMC4200.h" -#include "system_XMC4200.h" - -/******************************************************************************* - * MACROS - *******************************************************************************/ -#define CHIPID_LOC ((uint8_t *)0x20000000UL) -#define HRPWM_CHARDATA_LOC ((uint8_t *)0x20000084UL) - -#define PMU_FLASH_WS (0x2U) -#define FPLL_FREQUENCY (80000000U) -#define FOSCREF (2500000U) -#define DELAY_CNT_50US_50MHZ (2500UL) -#define DELAY_CNT_150US_50MHZ (7500UL) -#define DELAY_CNT_50US_60MHZ (3000UL) -#define DELAY_CNT_50US_80MHZ (4000UL) - -#define VCO_INPUT_MIN (4000000UL) -#define VCO_INPUT_MAX (16000000UL) -#define VCO_MIN (260000000UL) -#define VCO_MAX (520000000UL) - -#define SCU_PLL_PLLSTAT_OSC_USABLE \ - (SCU_PLL_PLLSTAT_PLLHV_Msk | SCU_PLL_PLLSTAT_PLLLV_Msk | SCU_PLL_PLLSTAT_PLLSP_Msk) - -/* -//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ -*/ - -/* -// Clock configuration -*/ - -/* -// External crystal frequency [Hz] -// <8000000=> 8MHz -// <12000000=> 12MHz -// <16000000=> 16MHz -// Defines external crystal frequency -// Default: 8MHz -*/ -#define OSCHP_FREQUENCY (12000000U) - -#if OSCHP_FREQUENCY == 8000000U - #define USB_PDIV (1U) - #define USB_NDIV (95U) - #define USB_DIV (3U) - -#elif OSCHP_FREQUENCY == 12000000U - #define USB_PDIV (1U) - #define USB_NDIV (63U) - #define USB_DIV (3U) - -#elif OSCHP_FREQUENCY == 16000000U - #define USB_PDIV (1U) - #define USB_NDIV (47U) - #define USB_DIV (3U) - -#else - #error "External crystal frequency not supported" - -#endif - -#define USB_VCO ((OSCHP_FREQUENCY / (USB_PDIV + 1UL)) * (USB_NDIV + 1UL)) -#define USB_VCO_INPUT (OSCHP_FREQUENCY / (USB_PDIV + 1UL)) - -/* -// System clock (fSYS) source selection -// <0=> Backup clock (24MHz) -// <1=> Maximum clock frequency using PLL (80MHz) -// Default: Maximum clock frequency using PLL (80MHz) -*/ -#define SYS_CLOCK_SRC 1 -#define SYS_CLOCK_SRC_OFI 0 -#define SYS_CLOCK_SRC_PLL 1 - -/* -// Backup clock calibration mode -// <0=> Factory calibration -// <1=> Automatic calibration -// Default: Automatic calibration -*/ -#define FOFI_CALIBRATION_MODE 1 -#define FOFI_CALIBRATION_MODE_FACTORY 0 -#define FOFI_CALIBRATION_MODE_AUTOMATIC 1 - -/* -// Standby clock (fSTDBY) source selection -// <0=> Internal slow oscillator (32768Hz) -// <1=> External crystal (32768Hz) -// Default: Internal slow oscillator (32768Hz) -*/ -#define STDBY_CLOCK_SRC 0 -#define STDBY_CLOCK_SRC_OSI 0 -#define STDBY_CLOCK_SRC_OSCULP 1 - -/* -// PLL clock source selection -// <0=> External crystal -// <1=> External direct input -// <2=> Internal fast oscillator -// Default: External crystal -*/ -#define PLL_CLOCK_SRC 0 -#define PLL_CLOCK_SRC_EXT_XTAL 0 -#define PLL_CLOCK_SRC_EXT_DIRECT 1 -#define PLL_CLOCK_SRC_OFI 2 - -#if PLL_CLOCK_SRC == PLL_CLOCK_SRC_EXT_XTAL - #if OSCHP_FREQUENCY == 8000000U - #define PLL_PDIV (1U) - #define PLL_NDIV (79U) - #define PLL_K2DIV (3U) - - #elif OSCHP_FREQUENCY == 12000000U - #define PLL_PDIV (1U) - #define PLL_NDIV (79U) - #define PLL_K2DIV (5U) - - #elif OSCHP_FREQUENCY == 16000000U - #define PLL_PDIV (1U) - #define PLL_NDIV (39U) - #define PLL_K2DIV (3U) - - #else - #error "External crystal frequency not supported" - - #endif - - #define VCO ((OSCHP_FREQUENCY / (PLL_PDIV + 1UL)) * (PLL_NDIV + 1UL)) - #define VCO_INPUT (OSCHP_FREQUENCY / (PLL_PDIV + 1UL)) - -#else /* PLL_CLOCK_SRC == PLL_CLOCK_SRC_EXT_XTAL */ - #define PLL_PDIV (3U) - #define PLL_NDIV (79U) - #define PLL_K2DIV (5U) - - #define VCO ((OFI_FREQUENCY / (PLL_PDIV + 1UL)) * (PLL_NDIV + 1UL)) - #define VCO_INPUT (OFI_FREQUENCY / (PLL_PDIV + 1UL)) - -#endif /* PLL_CLOCK_SRC == PLL_CLOCK_SRC_OFI */ - -#if (VCO_INPUT < VCO_INPUT_MIN) || (VCO_INPUT > VCO_INPUT_MAX) - #error VCO_INPUT frequency out of range. -#endif - -#if (VCO < VCO_MIN) || (VCO > VCO_MAX) - #error VCO frequency out of range. -#endif - -#if (USB_VCO_INPUT < VCO_INPUT_MIN) || (USB_VCO_INPUT > VCO_INPUT_MAX) - #error USB_VCO_INPUT frequency out of range. -#endif - -#if (USB_VCO < VCO_MIN) || (USB_VCO > VCO_MAX) - #error USB_VCO frequency out of range. -#endif - -#define PLL_K2DIV_0 ((VCO / OFI_FREQUENCY) - 1UL) -#define PLL_K2DIV_1 ((VCO / 60000000U) - 1UL) - -#define SCU_CLK_CLKCLR_ENABLE_USBCLK SCU_CLK_CLKCLR_USBCDI_Msk -#define SCU_CLK_CLKCLR_ENABLE_CCUCLK SCU_CLK_CLKCLR_CCUCDI_Msk -#define SCU_CLK_CLKCLR_ENABLE_WDTCLK SCU_CLK_CLKCLR_WDTCDI_Msk - -#define SCU_CLK_USBCLKCR_USBSEL_USBPLL (0U << SCU_CLK_USBCLKCR_USBSEL_Pos) -#define SCU_CLK_USBCLKCR_USBSEL_PLL (1U << SCU_CLK_USBCLKCR_USBSEL_Pos) - -#define SCU_CLK_WDTCLKCR_WDTSEL_OFI (0U << SCU_CLK_WDTCLKCR_WDTSEL_Pos) -#define SCU_CLK_WDTCLKCR_WDTSEL_STANDBY (1U << SCU_CLK_WDTCLKCR_WDTSEL_Pos) -#define SCU_CLK_WDTCLKCR_WDTSEL_PLL (2U << SCU_CLK_WDTCLKCR_WDTSEL_Pos) - -#define SCU_CLK_EXTCLKCR_ECKSEL_SYS (0U << SCU_CLK_EXTCLKCR_ECKSEL_Pos) -#define SCU_CLK_EXTCLKCR_ECKSEL_USBPLL (2U << SCU_CLK_EXTCLKCR_ECKSEL_Pos) -#define SCU_CLK_EXTCLKCR_ECKSEL_PLL (3U << SCU_CLK_EXTCLKCR_ECKSEL_Pos) -#define SCU_CLK_EXTCLKCR_ECKSEL_STANDBY (4U << SCU_CLK_EXTCLKCR_ECKSEL_Pos) - -#define EXTCLK_PIN_P0_8 (0) -#define EXTCLK_PIN_P1_15 (1) - -/* -// Clock tree -// CPU clock divider -// <0=> fCPU = fSYS -// <1=> fCPU = fSYS / 2 -// Peripheral clock divider -// <0=> fPB = fCPU -// <1=> fPB = fCPU / 2 -// Enable CCU clock -// CCU clock divider -// <0=> fCCU = fCPU -// <1=> fCCU = fCPU / 2 -// -// Enable WDT clock -// WDT clock divider <1-256><#-1> -// WDT clock source <0=> fOFI -// <1=> fSTDBY -// <2=> fPLL -// -// Enable USB clock -// USB clock source <0=> USBPLL -// <1=> PLL -// -// External Clock configuration -// External clock source selection -// <0=> System clock -// <2=> USB PLL clock -// <3=> PLL clock -// <4=> Standby clock -// External clock divider <1-512><#-1> -// Only valid for USB PLL and PLL clocks -// External Pin Selection -// <0=> P0.8 -// <1=> P1.15 -// -// -*/ -#define ENABLE_SCUCLK (0U) -#define CPUCLKDIV (0U) -#define PBCLKDIV (0U) -#define CCUCLKDIV (0U) -#define WDTCLKDIV (0U | SCU_CLK_WDTCLKCR_WDTSEL_OFI) -#define USBCLKDIV (0U | SCU_CLK_USBCLKCR_USBSEL_USBPLL | USB_DIV) - -#define ENABLE_EXTCLK (0U) -#define EXTCLKDIV ((0U << SCU_CLK_EXTCLKCR_ECKDIV_Pos) | SCU_CLK_EXTCLKCR_ECKSEL_SYS) -#define EXTCLK_PIN (0U) - -#define ENABLE_PLL \ - (SYS_CLOCK_SRC == SYS_CLOCK_SRC_PLL) || \ - (((ENABLE_SCUCLK & SCU_CLK_CLKSET_USBCEN_Msk) != 0) && \ - ((USBCLKDIV & SCU_CLK_USBCLKCR_USBSEL_Msk) == SCU_CLK_USBCLKCR_USBSEL_PLL)) || \ - (((ENABLE_SCUCLK & SCU_CLK_CLKSET_WDTCEN_Msk) != 0) && \ - ((WDTCLKDIV & SCU_CLK_WDTCLKCR_WDTSEL_Msk) == SCU_CLK_WDTCLKCR_WDTSEL_PLL)) - -/* -// -*/ - -/* -//-------- <<< end of configuration section >>> ------------------ -*/ - -/******************************************************************************* - * GLOBAL VARIABLES - *******************************************************************************/ -#if defined(__CC_ARM) -uint32_t SystemCoreClock __attribute__((at(0x20005FC0))); -uint8_t g_chipid[16] __attribute__((at(0x20005FC4))); -uint32_t g_hrpwm_char_data[3] __attribute__((at(0x20005FD4))); -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) -uint32_t SystemCoreClock __attribute__((section(".bss.ARM.__at_0x20005FC0"))); -uint8_t g_chipid[16] __attribute__((section(".bss.ARM.__at_0x20005FC4"))); -uint32_t g_hrpwm_char_data[3] __attribute__((section(".bss.ARM.__at_0x20005FD4"))); -#elif defined(__ICCARM__) -__no_init uint32_t SystemCoreClock; -__no_init uint8_t g_chipid[16]; -__no_init uint32_t g_hrpwm_char_data[3]; -#elif defined(__GNUC__) -uint32_t SystemCoreClock __attribute__((section(".no_init"))); -uint8_t g_chipid[16] __attribute__((section(".no_init"))); -uint32_t g_hrpwm_char_data[3] __attribute__((section(".no_init"))); -#elif defined(__TASKING__) -uint32_t SystemCoreClock __at(0x20005FC0); -uint8_t g_chipid[16] __at(0x20005FC4); -uint32_t g_hrpwm_char_data[3] __at(0x20005FD4); -#endif - -extern uint32_t __Vectors; - -/******************************************************************************* - * LOCAL FUNCTIONS - *******************************************************************************/ -static void delay(uint32_t cycles) { - volatile uint32_t i; - - for (i = 0UL; i < cycles; ++i) { - __NOP(); - } -} - -/******************************************************************************* - * API IMPLEMENTATION - *******************************************************************************/ - -__WEAK void SystemInit(void) { - memcpy(g_chipid, CHIPID_LOC, 16); - memcpy(g_hrpwm_char_data, HRPWM_CHARDATA_LOC, 12); - - SystemCoreSetup(); - SystemCoreClockSetup(); -} - -__WEAK void SystemCoreSetup(void) { - uint32_t temp; - - /* relocate vector table */ - __disable_irq(); - SCB->VTOR = (uint32_t)(&__Vectors); - __DSB(); - __enable_irq(); - - /* __FPU_PRESENT = 1 defined in device header file */ - /* __FPU_USED value depends on compiler/linker options. */ - /* __FPU_USED = 0 if -mfloat-abi=soft is selected */ - /* __FPU_USED = 1 if -mfloat-abi=softfp or –mfloat-abi=hard */ - -#if ((__FPU_PRESENT == 1) && (__FPU_USED == 1)) - SCB->CPACR |= ((3UL << 10 * 2) | /* set CP10 Full Access */ - (3UL << 11 * 2)); /* set CP11 Full Access */ -#else - SCB->CPACR = 0; -#endif - - /* Enable unaligned memory access - SCB_CCR.UNALIGN_TRP = 0 */ - SCB->CCR &= ~(SCB_CCR_UNALIGN_TRP_Msk); - - temp = FLASH0->FCON; - temp &= ~FLASH_FCON_WSPFLASH_Msk; - temp |= PMU_FLASH_WS; - FLASH0->FCON = temp; -} - -__WEAK void SystemCoreClockSetup(void) { -#if FOFI_CALIBRATION_MODE == FOFI_CALIBRATION_MODE_FACTORY - /* Enable factory calibration */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_FOTR_Msk; -#else - /* Automatic calibration uses the fSTDBY */ - - /* Enable HIB domain */ - /* Power up HIB domain if and only if it is currently powered down */ - if ((SCU_POWER->PWRSTAT & SCU_POWER_PWRSTAT_HIBEN_Msk) == 0) { - SCU_POWER->PWRSET |= SCU_POWER_PWRSET_HIB_Msk; - - while ((SCU_POWER->PWRSTAT & SCU_POWER_PWRSTAT_HIBEN_Msk) == 0) { - /* wait until HIB domain is enabled */ - } - } - - /* Remove the reset only if HIB domain were in a state of reset */ - if ((SCU_RESET->RSTSTAT) & SCU_RESET_RSTSTAT_HIBRS_Msk) { - SCU_RESET->RSTCLR |= SCU_RESET_RSTCLR_HIBRS_Msk; - delay(DELAY_CNT_150US_50MHZ); - } - - #if STDBY_CLOCK_SRC == STDBY_CLOCK_SRC_OSCULP - /* Enable OSC_ULP */ - if ((SCU_HIBERNATE->OSCULCTRL & SCU_HIBERNATE_OSCULCTRL_MODE_Msk) != 0UL) { - /*enable OSC_ULP*/ - while (SCU_GENERAL->MIRRSTS & SCU_GENERAL_MIRRSTS_OSCULCTRL_Msk) { - /* check SCU_MIRRSTS to ensure that no transfer over serial interface is pending */ - } - SCU_HIBERNATE->OSCULCTRL &= ~SCU_HIBERNATE_OSCULCTRL_MODE_Msk; - - /* Check if the clock is OK using OSCULP Oscillator Watchdog*/ - while (SCU_GENERAL->MIRRSTS & SCU_GENERAL_MIRRSTS_HDCR_Msk) { - /* check SCU_MIRRSTS to ensure that no transfer over serial interface is pending */ - } - SCU_HIBERNATE->HDCR |= SCU_HIBERNATE_HDCR_ULPWDGEN_Msk; - - /* wait till clock is stable */ - do { - while (SCU_GENERAL->MIRRSTS & SCU_GENERAL_MIRRSTS_HDCLR_Msk) { - /* check SCU_MIRRSTS to ensure that no transfer over serial interface is pending */ - } - SCU_HIBERNATE->HDCLR |= SCU_HIBERNATE_HDCLR_ULPWDG_Msk; - - delay(DELAY_CNT_50US_50MHZ); - - } while ((SCU_HIBERNATE->HDSTAT & SCU_HIBERNATE_HDSTAT_ULPWDG_Msk) != 0UL); - } - - /* now OSC_ULP is running and can be used*/ - /* Select OSC_ULP as the clock source for RTC and STDBY*/ - while (SCU_GENERAL->MIRRSTS & SCU_GENERAL_MIRRSTS_HDCR_Msk) { - /* check SCU_MIRRSTS to ensure that no transfer over serial interface is pending */ - } - SCU_HIBERNATE->HDCR |= SCU_HIBERNATE_HDCR_RCS_Msk | SCU_HIBERNATE_HDCR_STDBYSEL_Msk; - - #endif /* STDBY_CLOCK_SRC == STDBY_CLOCK_SRC_OSCULP */ - - /* Enable automatic calibration of internal fast oscillator */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_AOTREN_Msk; -#endif /* FOFI_CALIBRATION_MODE == FOFI_CALIBRATION_MODE_AUTOMATIC */ - - delay(DELAY_CNT_50US_50MHZ); - -#if ENABLE_PLL - - /* enable PLL */ - SCU_PLL->PLLCON0 &= ~(SCU_PLL_PLLCON0_VCOPWD_Msk | SCU_PLL_PLLCON0_PLLPWD_Msk); - - #if PLL_CLOCK_SRC != PLL_CLOCK_SRC_OFI - /* enable OSC_HP */ - if ((SCU_OSC->OSCHPCTRL & SCU_OSC_OSCHPCTRL_MODE_Msk) != 0U) { - SCU_OSC->OSCHPCTRL &= ~(SCU_OSC_OSCHPCTRL_MODE_Msk | SCU_OSC_OSCHPCTRL_OSCVAL_Msk); - SCU_OSC->OSCHPCTRL |= ((OSCHP_GetFrequency() / FOSCREF) - 1UL) - << SCU_OSC_OSCHPCTRL_OSCVAL_Pos; - - /* select OSC_HP clock as PLL input */ - SCU_PLL->PLLCON2 = 0; - - /* restart OSC Watchdog */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_OSCRES_Msk; - - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_OSC_USABLE) != SCU_PLL_PLLSTAT_OSC_USABLE) { - /* wait till OSC_HP output frequency is usable */ - } - } - #else /* PLL_CLOCK_SRC != PLL_CLOCK_SRC_OFI */ - - /* select backup clock as PLL input */ - SCU_PLL->PLLCON2 = SCU_PLL_PLLCON2_PINSEL_Msk | SCU_PLL_PLLCON2_K1INSEL_Msk; - #endif - - /* Go to bypass the Main PLL */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_VCOBYP_Msk; - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOBYST_Msk) == 0U) { - /* wait for prescaler mode */ - } - - /* disconnect Oscillator from PLL */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_FINDIS_Msk; - - /* Setup divider settings for main PLL */ - SCU_PLL->PLLCON1 = - ((PLL_NDIV << SCU_PLL_PLLCON1_NDIV_Pos) | (PLL_K2DIV_0 << SCU_PLL_PLLCON1_K2DIV_Pos) | - (PLL_PDIV << SCU_PLL_PLLCON1_PDIV_Pos)); - - /* Set OSCDISCDIS */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_OSCDISCDIS_Msk; - - /* connect Oscillator to PLL */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_FINDIS_Msk; - - /* restart PLL Lock detection */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_RESLD_Msk; - - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOLOCK_Msk) == 0U) { - /* wait for PLL Lock */ - } - - /* Disable bypass- put PLL clock back */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_VCOBYP_Msk; - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOBYST_Msk) != 0U) { - /* wait for normal mode */ - } -#endif /* ENABLE_PLL */ - -#if (SYS_CLOCK_SRC == SYS_CLOCK_SRC_PLL) - /* Switch system clock to PLL */ - SCU_CLK->SYSCLKCR |= SCU_CLK_SYSCLKCR_SYSSEL_Msk; -#else - /* Switch system clock to backup clock */ - SCU_CLK->SYSCLKCR &= ~SCU_CLK_SYSCLKCR_SYSSEL_Msk; -#endif - - /* Before scaling to final frequency we need to setup the clock dividers */ - SCU_CLK->PBCLKCR = PBCLKDIV; - SCU_CLK->CPUCLKCR = CPUCLKDIV; - SCU_CLK->CCUCLKCR = CCUCLKDIV; - SCU_CLK->WDTCLKCR = WDTCLKDIV; - SCU_CLK->USBCLKCR = USBCLKDIV; - -#if ENABLE_PLL - /* PLL frequency stepping...*/ - /* Reset OSCDISCDIS */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_OSCDISCDIS_Msk; - - SCU_PLL->PLLCON1 = - ((PLL_NDIV << SCU_PLL_PLLCON1_NDIV_Pos) | (PLL_K2DIV_1 << SCU_PLL_PLLCON1_K2DIV_Pos) | - (PLL_PDIV << SCU_PLL_PLLCON1_PDIV_Pos)); - - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_K2RDY_Msk) == 0U) { - /* wait until K2-divider operates on the configured value */ - } - - delay(DELAY_CNT_50US_60MHZ); - - SCU_PLL->PLLCON1 = - ((PLL_NDIV << SCU_PLL_PLLCON1_NDIV_Pos) | (PLL_K2DIV << SCU_PLL_PLLCON1_K2DIV_Pos) | - (PLL_PDIV << SCU_PLL_PLLCON1_PDIV_Pos)); - - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_K2RDY_Msk) == 0U) { - /* wait until K2-divider operates on the configured value */ - } - - delay(DELAY_CNT_50US_80MHZ); - - SCU_TRAP->TRAPCLR = SCU_TRAP_TRAPCLR_SOSCWDGT_Msk | SCU_TRAP_TRAPCLR_SVCOLCKT_Msk; -#endif /* ENABLE_PLL */ - -#if (((ENABLE_SCUCLK & SCU_CLK_CLKSET_USBCEN_Msk) != 0) && \ - ((USBCLKDIV & SCU_CLK_USBCLKCR_USBSEL_Msk) == SCU_CLK_USBCLKCR_USBSEL_USBPLL)) - /* enable USB PLL first */ - SCU_PLL->USBPLLCON &= ~(SCU_PLL_USBPLLCON_VCOPWD_Msk | SCU_PLL_USBPLLCON_PLLPWD_Msk); - - /* USB PLL uses as clock input the OSC_HP */ - /* check and if not already running enable OSC_HP */ - if ((SCU_OSC->OSCHPCTRL & SCU_OSC_OSCHPCTRL_MODE_Msk) != 0U) { - /* check if Main PLL is switched on for OSC WDG*/ - if ((SCU_PLL->PLLCON0 & (SCU_PLL_PLLCON0_VCOPWD_Msk | SCU_PLL_PLLCON0_PLLPWD_Msk)) != 0UL) { - /* enable PLL first */ - SCU_PLL->PLLCON0 &= ~(SCU_PLL_PLLCON0_VCOPWD_Msk | SCU_PLL_PLLCON0_PLLPWD_Msk); - } - - SCU_OSC->OSCHPCTRL &= ~(SCU_OSC_OSCHPCTRL_MODE_Msk | SCU_OSC_OSCHPCTRL_OSCVAL_Msk); - SCU_OSC->OSCHPCTRL |= ((OSCHP_GetFrequency() / FOSCREF) - 1UL) - << SCU_OSC_OSCHPCTRL_OSCVAL_Pos; - - /* restart OSC Watchdog */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_OSCRES_Msk; - - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_OSC_USABLE) != SCU_PLL_PLLSTAT_OSC_USABLE) { - /* wait till OSC_HP output frequency is usable */ - } - } - - /* Setup USB PLL */ - /* Go to bypass the USB PLL */ - SCU_PLL->USBPLLCON |= SCU_PLL_USBPLLCON_VCOBYP_Msk; - while ((SCU_PLL->USBPLLSTAT & SCU_PLL_USBPLLSTAT_VCOBYST_Msk) == 0U) { - /* wait for prescaler mode */ - } - - /* disconnect Oscillator from USB PLL */ - SCU_PLL->USBPLLCON |= SCU_PLL_USBPLLCON_FINDIS_Msk; - - /* Setup Divider settings for USB PLL */ - SCU_PLL->USBPLLCON = - ((USB_NDIV << SCU_PLL_USBPLLCON_NDIV_Pos) | (USB_PDIV << SCU_PLL_USBPLLCON_PDIV_Pos)); - - /* Set OSCDISCDIS */ - SCU_PLL->USBPLLCON |= SCU_PLL_USBPLLCON_OSCDISCDIS_Msk; - - /* connect Oscillator to USB PLL */ - SCU_PLL->USBPLLCON &= ~SCU_PLL_USBPLLCON_FINDIS_Msk; - - /* restart PLL Lock detection */ - SCU_PLL->USBPLLCON |= SCU_PLL_USBPLLCON_RESLD_Msk; - - while ((SCU_PLL->USBPLLSTAT & SCU_PLL_USBPLLSTAT_VCOLOCK_Msk) == 0U) { - /* wait for PLL Lock */ - } - - /* Disable bypass- put PLL clock back */ - SCU_PLL->USBPLLCON &= ~SCU_PLL_USBPLLCON_VCOBYP_Msk; - while ((SCU_PLL->USBPLLSTAT & SCU_PLL_USBPLLSTAT_VCOBYST_Msk) != 0U) { - /* wait for normal mode */ - } - - /* Reset OSCDISCDIS */ - SCU_PLL->USBPLLCON &= ~SCU_PLL_USBPLLCON_OSCDISCDIS_Msk; - - SCU_TRAP->TRAPCLR = SCU_TRAP_TRAPCLR_UVCOLCKT_Msk; -#endif /* (USBCLKDIV & SCU_CLK_USBCLKCR_USBSEL_Msk) */ - - /* Enable selected clocks */ - SCU_CLK->CLKSET = ENABLE_SCUCLK; - -#if ENABLE_EXTCLK == 1 - /* Configure external clock */ - SCU_CLK->EXTCLKCR = EXTCLKDIV; - - #if EXTCLK_PIN == EXTCLK_PIN_P1_15 - /* P1.15 */ - PORT1->PDR1 &= ~PORT1_PDR1_PD15_Msk; - PORT1->IOCR12 = (PORT1->IOCR12 & ~PORT1_IOCR12_PC15_Msk) | (0x11U << PORT1_IOCR12_PC15_Pos); - #else - /* P0.8 */ - PORT0->HWSEL &= ~PORT0_HWSEL_HW8_Msk; - PORT0->PDR1 &= ~PORT0_PDR1_PD8_Msk; - PORT0->IOCR8 = (PORT0->IOCR8 & ~PORT0_IOCR8_PC8_Msk) | (0x11U << PORT0_IOCR8_PC8_Pos); - #endif - -#endif /* ENABLE_EXTCLK == 1 */ - - SystemCoreClockUpdate(); -} - -__WEAK void SystemCoreClockUpdate(void) { - uint32_t pdiv; - uint32_t ndiv; - uint32_t kdiv; - uint32_t temp; - - if (SCU_CLK->SYSCLKCR & SCU_CLK_SYSCLKCR_SYSSEL_Msk) { - /* fPLL is clock source for fSYS */ - if (SCU_PLL->PLLCON2 & SCU_PLL_PLLCON2_PINSEL_Msk) { - /* PLL input clock is the backup clock (fOFI) */ - temp = OFI_FREQUENCY; - } else { - /* PLL input clock is the high performance osicllator (fOSCHP) */ - temp = OSCHP_GetFrequency(); - } - - /* check if PLL is locked */ - if (SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOLOCK_Msk) { - /* PLL normal mode */ - /* read back divider settings */ - pdiv = ((SCU_PLL->PLLCON1 & SCU_PLL_PLLCON1_PDIV_Msk) >> SCU_PLL_PLLCON1_PDIV_Pos) + 1; - ndiv = ((SCU_PLL->PLLCON1 & SCU_PLL_PLLCON1_NDIV_Msk) >> SCU_PLL_PLLCON1_NDIV_Pos) + 1; - kdiv = - ((SCU_PLL->PLLCON1 & SCU_PLL_PLLCON1_K2DIV_Msk) >> SCU_PLL_PLLCON1_K2DIV_Pos) + 1; - - temp = (temp / (pdiv * kdiv)) * ndiv; - } else { - /* PLL prescalar mode */ - /* read back divider settings */ - kdiv = - ((SCU_PLL->PLLCON1 & SCU_PLL_PLLCON1_K1DIV_Msk) >> SCU_PLL_PLLCON1_K1DIV_Pos) + 1; - - temp = (temp / kdiv); - } - } else { - /* fOFI is clock source for fSYS */ - temp = OFI_FREQUENCY; - } - - temp = temp / ((SCU_CLK->SYSCLKCR & SCU_CLK_SYSCLKCR_SYSDIV_Msk) + 1); - temp = temp / ((SCU_CLK->CPUCLKCR & SCU_CLK_CPUCLKCR_CPUDIV_Msk) + 1); - - SystemCoreClock = temp; -} - -__WEAK uint32_t OSCHP_GetFrequency(void) { return OSCHP_FREQUENCY; } diff --git a/variants/XMC4200/system_XMC4200.h b/variants/XMC4200/system_XMC4200.h deleted file mode 100644 index 1bb5fe33..00000000 --- a/variants/XMC4200/system_XMC4200.h +++ /dev/null @@ -1,110 +0,0 @@ -/********************************************************************************************************************* - * @file system_XMC4200.h - * @brief Device specific initialization for the XMC4200-Series according to CMSIS - * @version V1.6 - * @date 23 October 2012 - * - * @cond - ********************************************************************************************************************* - * Copyright (c) 2012-2020, Infineon Technologies AG - * All rights reserved. - * - * Boost Software License - Version 1.0 - August 17th, 2003 - * - * Permission is hereby granted, free of charge, to any person or organization - * obtaining a copy of the software and accompanying documentation covered by - * this license (the "Software") to use, reproduce, display, distribute, - * execute, and transmit the Software, and to prepare derivative works of the - * Software, and to permit third-parties to whom the Software is furnished to - * do so, all subject to the following: - * - * The copyright notices in the Software and this entire statement, including - * the above license grant, this restriction and the following disclaimer, - * must be included in all copies of the Software, in whole or in part, and - * all derivative works of the Software, unless such copies or derivative - * works are solely in the form of machine-executable object code generated by - * a source language processor. - * - * 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT - * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE - * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * To improve the quality of the software, users are encouraged to share - * modifications, enhancements or bug fixes with Infineon Technologies AG - * at XMCSupport@infineon.com. - ********************************************************************************************************************* - * - **************************** Change history ********************************* - ***************************************************************************** - * @endcond - */ - -#ifndef SYSTEM_XMC4200_H -#define SYSTEM_XMC4200_H - -/******************************************************************************* - * HEADER FILES - *******************************************************************************/ - -#include - -/******************************************************************************* - * MACROS - *******************************************************************************/ -#define OFI_FREQUENCY (24000000UL) /**< 24MHz Backup Clock (fOFI) frequency. */ -#define OSI_FREQUENCY (32768UL) /**< 32KHz Internal Slow Clock source (fOSI) frequency. */ - -/******************************************************************************* - * GLOBAL VARIABLES - *******************************************************************************/ -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ -extern uint8_t g_chipid[16]; /*!< Unique chip ID */ -extern uint32_t g_hrpwm_char_data[3]; /*!< HRPWM characterization data */ - -/******************************************************************************* - * API PROTOTYPES - *******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Initialize the system - * - */ -void SystemInit(void); - -/** - * @brief Initialize CPU settings - * - */ -void SystemCoreSetup(void); - -/** - * @brief Initialize clock - * - */ -void SystemCoreClockSetup(void); - -/** - * @brief Update SystemCoreClock variable - * - */ -void SystemCoreClockUpdate(void); - -/** - * @brief Returns frequency of the high performace oscillator - * User needs to overload this function to return the correct oscillator frequency - */ -uint32_t OSCHP_GetFrequency(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/variants/XMC4400/XMC4400.h b/variants/XMC4400/XMC4400.h deleted file mode 100644 index 27ec899a..00000000 --- a/variants/XMC4400/XMC4400.h +++ /dev/null @@ -1,27384 +0,0 @@ -/********************************************************************************************************************* - * Copyright (c) 2011-2017, Infineon Technologies AG - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification,are permitted - *provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of conditions - *and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions - *and the following disclaimer in the documentation and/or other materials provided with the - *distribution. - * - * Neither the name of the copyright holders nor the names of its contributors may be used to - *endorse or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - *IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - *FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - *CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - *DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - *DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - *IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - *OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * To improve the quality of the software, users are encouraged to share modifications, enhancements - *or bug fixes with Infineon Technologies AG dave@infineon.com). - *********************************************************************************************************************/ - -/****************************************************************************************************/ /** - * @file XMC4400.h - * - * @brief CMSIS Cortex-M4 Peripheral Access Layer Header File for - * XMC4400 from Infineon. - * - * @version V1.6.1 (Reference Manual v1.6) - * @date 19. June 2017 - * - * @note Generated with SVDConv V2.87l - * from CMSIS SVD File 'XMC4400_Processed_SVD.xml' Version 1.6.0 (Reference Manual v1.6), - * added support for ARM Compiler 6 (armclang) - *******************************************************************************************************/ - -/** @addtogroup Infineon - * @{ - */ - -/** @addtogroup XMC4400 - * @{ - */ - -#ifndef XMC4400_H -#define XMC4400_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------------- Interrupt Number Definition ------------------------ */ - -typedef enum { - /* ------------------- Cortex-M4 Processor Exceptions Numbers ------------------- */ - Reset_IRQn = -15, /*!< 1 Reset Vector, invoked on Power up and warm reset */ - NonMaskableInt_IRQn = -14, /*!< 2 Non maskable Interrupt, cannot be stopped or preempted */ - HardFault_IRQn = -13, /*!< 3 Hard Fault, all classes of Fault */ - MemoryManagement_IRQn = -12, /*!< 4 Memory Management, MPU mismatch, including Access - Violation and No Match */ - BusFault_IRQn = -11, /*!< 5 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory - related Fault */ - UsageFault_IRQn = - -10, /*!< 6 Usage Fault, i.e. Undef Instruction, Illegal State Transition */ - SVCall_IRQn = -5, /*!< 11 System Service Call via SVC instruction */ - DebugMonitor_IRQn = -4, /*!< 12 Debug Monitor */ - PendSV_IRQn = -2, /*!< 14 Pendable request for system service */ - SysTick_IRQn = -1, /*!< 15 System Tick Timer */ - /* --------------------- XMC4400 Specific Interrupt Numbers --------------------- */ - SCU_0_IRQn = 0, /*!< 0 System Control */ - ERU0_0_IRQn = 1, /*!< 1 External Request Unit 0 */ - ERU0_1_IRQn = 2, /*!< 2 External Request Unit 0 */ - ERU0_2_IRQn = 3, /*!< 3 External Request Unit 0 */ - ERU0_3_IRQn = 4, /*!< 4 External Request Unit 0 */ - ERU1_0_IRQn = 5, /*!< 5 External Request Unit 1 */ - ERU1_1_IRQn = 6, /*!< 6 External Request Unit 1 */ - ERU1_2_IRQn = 7, /*!< 7 External Request Unit 1 */ - ERU1_3_IRQn = 8, /*!< 8 External Request Unit 1 */ - PMU0_0_IRQn = 12, /*!< 12 Program Management Unit */ - VADC0_C0_0_IRQn = 14, /*!< 14 Analog to Digital Converter Common Block 0 */ - VADC0_C0_1_IRQn = 15, /*!< 15 Analog to Digital Converter Common Block 0 */ - VADC0_C0_2_IRQn = 16, /*!< 16 Analog to Digital Converter Common Block 0 */ - VADC0_C0_3_IRQn = 17, /*!< 17 Analog to Digital Converter Common Block 0 */ - VADC0_G0_0_IRQn = 18, /*!< 18 Analog to Digital Converter Group 0 */ - VADC0_G0_1_IRQn = 19, /*!< 19 Analog to Digital Converter Group 0 */ - VADC0_G0_2_IRQn = 20, /*!< 20 Analog to Digital Converter Group 0 */ - VADC0_G0_3_IRQn = 21, /*!< 21 Analog to Digital Converter Group 0 */ - VADC0_G1_0_IRQn = 22, /*!< 22 Analog to Digital Converter Group 1 */ - VADC0_G1_1_IRQn = 23, /*!< 23 Analog to Digital Converter Group 1 */ - VADC0_G1_2_IRQn = 24, /*!< 24 Analog to Digital Converter Group 1 */ - VADC0_G1_3_IRQn = 25, /*!< 25 Analog to Digital Converter Group 1 */ - VADC0_G2_0_IRQn = 26, /*!< 26 Analog to Digital Converter Group 2 */ - VADC0_G2_1_IRQn = 27, /*!< 27 Analog to Digital Converter Group 2 */ - VADC0_G2_2_IRQn = 28, /*!< 28 Analog to Digital Converter Group 2 */ - VADC0_G2_3_IRQn = 29, /*!< 29 Analog to Digital Converter Group 2 */ - VADC0_G3_0_IRQn = 30, /*!< 30 Analog to Digital Converter Group 3 */ - VADC0_G3_1_IRQn = 31, /*!< 31 Analog to Digital Converter Group 3 */ - VADC0_G3_2_IRQn = 32, /*!< 32 Analog to Digital Converter Group 3 */ - VADC0_G3_3_IRQn = 33, /*!< 33 Analog to Digital Converter Group 3 */ - DSD0_M_0_IRQn = 34, /*!< 34 Delta Sigma Demodulator Main */ - DSD0_M_1_IRQn = 35, /*!< 35 Delta Sigma Demodulator Main */ - DSD0_M_2_IRQn = 36, /*!< 36 Delta Sigma Demodulator Main */ - DSD0_M_3_IRQn = 37, /*!< 37 Delta Sigma Demodulator Main */ - DSD0_A_4_IRQn = 38, /*!< 38 Delta Sigma Demodulator Auxiliary */ - DSD0_A_5_IRQn = 39, /*!< 39 Delta Sigma Demodulator Auxiliary */ - DSD0_A_6_IRQn = 40, /*!< 40 Delta Sigma Demodulator Auxiliary */ - DSD0_A_7_IRQn = 41, /*!< 41 Delta Sigma Demodulator Auxiliary */ - DAC0_0_IRQn = 42, /*!< 42 Digital to Analog Converter */ - DAC0_1_IRQn = 43, /*!< 43 Digital to Analog Converter */ - CCU40_0_IRQn = 44, /*!< 44 Capture Compare Unit 4 (Module 0) */ - CCU40_1_IRQn = 45, /*!< 45 Capture Compare Unit 4 (Module 0) */ - CCU40_2_IRQn = 46, /*!< 46 Capture Compare Unit 4 (Module 0) */ - CCU40_3_IRQn = 47, /*!< 47 Capture Compare Unit 4 (Module 0) */ - CCU41_0_IRQn = 48, /*!< 48 Capture Compare Unit 4 (Module 1) */ - CCU41_1_IRQn = 49, /*!< 49 Capture Compare Unit 4 (Module 1) */ - CCU41_2_IRQn = 50, /*!< 50 Capture Compare Unit 4 (Module 1) */ - CCU41_3_IRQn = 51, /*!< 51 Capture Compare Unit 4 (Module 1) */ - CCU42_0_IRQn = 52, /*!< 52 Capture Compare Unit 4 (Module 2) */ - CCU42_1_IRQn = 53, /*!< 53 Capture Compare Unit 4 (Module 2) */ - CCU42_2_IRQn = 54, /*!< 54 Capture Compare Unit 4 (Module 2) */ - CCU42_3_IRQn = 55, /*!< 55 Capture Compare Unit 4 (Module 2) */ - CCU43_0_IRQn = 56, /*!< 56 Capture Compare Unit 4 (Module 3) */ - CCU43_1_IRQn = 57, /*!< 57 Capture Compare Unit 4 (Module 3) */ - CCU43_2_IRQn = 58, /*!< 58 Capture Compare Unit 4 (Module 3) */ - CCU43_3_IRQn = 59, /*!< 59 Capture Compare Unit 4 (Module 3) */ - CCU80_0_IRQn = 60, /*!< 60 Capture Compare Unit 8 (Module 0) */ - CCU80_1_IRQn = 61, /*!< 61 Capture Compare Unit 8 (Module 0) */ - CCU80_2_IRQn = 62, /*!< 62 Capture Compare Unit 8 (Module 0) */ - CCU80_3_IRQn = 63, /*!< 63 Capture Compare Unit 8 (Module 0) */ - CCU81_0_IRQn = 64, /*!< 64 Capture Compare Unit 8 (Module 1) */ - CCU81_1_IRQn = 65, /*!< 65 Capture Compare Unit 8 (Module 1) */ - CCU81_2_IRQn = 66, /*!< 66 Capture Compare Unit 8 (Module 1) */ - CCU81_3_IRQn = 67, /*!< 67 Capture Compare Unit 8 (Module 1) */ - POSIF0_0_IRQn = 68, /*!< 68 Position Interface (Module 0) */ - POSIF0_1_IRQn = 69, /*!< 69 Position Interface (Module 0) */ - POSIF1_0_IRQn = 70, /*!< 70 Position Interface (Module 1) */ - POSIF1_1_IRQn = 71, /*!< 71 Position Interface (Module 1) */ - HRPWM_0_IRQn = 72, /*!< 72 High Resolution Pulse Width Modulation (Module 0) */ - HRPWM_1_IRQn = 73, /*!< 73 High Resolution Pulse Width Modulation (Module 0) */ - HRPWM_2_IRQn = 74, /*!< 74 High Resolution Pulse Width Modulation (Module 0) */ - HRPWM_3_IRQn = 75, /*!< 75 High Resolution Pulse Width Modulation (Module 0) */ - CAN0_0_IRQn = 76, /*!< 76 MultiCAN */ - CAN0_1_IRQn = 77, /*!< 77 MultiCAN */ - CAN0_2_IRQn = 78, /*!< 78 MultiCAN */ - CAN0_3_IRQn = 79, /*!< 79 MultiCAN */ - CAN0_4_IRQn = 80, /*!< 80 MultiCAN */ - CAN0_5_IRQn = 81, /*!< 81 MultiCAN */ - CAN0_6_IRQn = 82, /*!< 82 MultiCAN */ - CAN0_7_IRQn = 83, /*!< 83 MultiCAN */ - USIC0_0_IRQn = 84, /*!< 84 Universal Serial Interface Channel (Module 0) */ - USIC0_1_IRQn = 85, /*!< 85 Universal Serial Interface Channel (Module 0) */ - USIC0_2_IRQn = 86, /*!< 86 Universal Serial Interface Channel (Module 0) */ - USIC0_3_IRQn = 87, /*!< 87 Universal Serial Interface Channel (Module 0) */ - USIC0_4_IRQn = 88, /*!< 88 Universal Serial Interface Channel (Module 0) */ - USIC0_5_IRQn = 89, /*!< 89 Universal Serial Interface Channel (Module 0) */ - USIC1_0_IRQn = 90, /*!< 90 Universal Serial Interface Channel (Module 1) */ - USIC1_1_IRQn = 91, /*!< 91 Universal Serial Interface Channel (Module 1) */ - USIC1_2_IRQn = 92, /*!< 92 Universal Serial Interface Channel (Module 1) */ - USIC1_3_IRQn = 93, /*!< 93 Universal Serial Interface Channel (Module 1) */ - USIC1_4_IRQn = 94, /*!< 94 Universal Serial Interface Channel (Module 1) */ - USIC1_5_IRQn = 95, /*!< 95 Universal Serial Interface Channel (Module 1) */ - LEDTS0_0_IRQn = 102, /*!< 102 LED and Touch Sense Control Unit (Module 0) */ - FCE0_0_IRQn = 104, /*!< 104 Flexible CRC Engine */ - GPDMA0_0_IRQn = 105, /*!< 105 General Purpose DMA Unit 0 */ - USB0_0_IRQn = 107, /*!< 107 Universal Serial Bus (Module 0) */ - ETH0_0_IRQn = 108 /*!< 108 Ethernet (Module 0) */ -} IRQn_Type; - -/** @addtogroup Configuration_of_CMSIS - * @{ - */ - -/* ================================================================================ */ -/* ================ Processor and Core Peripheral Section ================ */ -/* ================================================================================ */ - -/* ----------------Configuration of the Cortex-M4 Processor and Core Peripherals---------------- */ -#define __CM4_REV \ - 0x0200 /*!< Cortex-M4 Core Revision */ -#define __MPU_PRESENT \ - 1 /*!< MPU present or not */ -#define __NVIC_PRIO_BITS \ - 6 /*!< Number of Bits used for Priority Levels */ -#define __Vendor_SysTickConfig \ - 0 /*!< Set to 1 if different SysTick Config is used */ -#define __FPU_PRESENT \ - 1 /*!< FPU present or not */ -/** @} */ /* End of group Configuration_of_CMSIS */ - -#include "core_cm4.h" /*!< Cortex-M4 processor and core peripherals */ -#include "system_XMC4400.h" /*!< XMC4400 System */ - -/* ================================================================================ */ -/* ================ Device Specific Peripheral Section ================ */ -/* ================================================================================ */ -/* Macro to modify desired bitfields of a register */ -#define WR_REG(reg, mask, pos, val) \ - reg = (((uint32_t)val << pos) & ((uint32_t)mask)) | (reg & ((uint32_t) ~((uint32_t)mask))) - -/* Macro to modify desired bitfields of a register */ -#define WR_REG_SIZE(reg, mask, pos, val, size) \ - { \ - uint##size##_t VAL1 = (uint##size##_t)((uint##size##_t)val << pos); \ - uint##size##_t VAL2 = (uint##size##_t)(VAL1 & (uint##size##_t)mask); \ - uint##size##_t VAL3 = (uint##size##_t) ~((uint##size##_t)mask); \ - uint##size##_t VAL4 = (uint##size##_t)((uint##size##_t)reg & VAL3); \ - reg = (uint##size##_t)(VAL2 | VAL4); \ - } - -/** Macro to read bitfields from a register */ -#define RD_REG(reg, mask, pos) (((uint32_t)reg & (uint32_t)mask) >> pos) - -/** Macro to read bitfields from a register */ -#define RD_REG_SIZE(reg, mask, pos, size) \ - ((uint##size##_t)(((uint32_t)reg & (uint32_t)mask) >> pos)) - -/** Macro to set a bit in register */ -#define SET_BIT(reg, pos) (reg |= ((uint32_t)1 << pos)) - -/** Macro to clear a bit in register */ -#define CLR_BIT(reg, pos) (reg = reg & (uint32_t)(~((uint32_t)1 << pos))) -/* - * ========================================================================== - * ---------- Interrupt Handler Definition ---------------------------------- - * ========================================================================== - */ -#define IRQ_Hdlr_0 SCU_0_IRQHandler -#define IRQ_Hdlr_1 ERU0_0_IRQHandler -#define IRQ_Hdlr_2 ERU0_1_IRQHandler -#define IRQ_Hdlr_3 ERU0_2_IRQHandler -#define IRQ_Hdlr_4 ERU0_3_IRQHandler -#define IRQ_Hdlr_5 ERU1_0_IRQHandler -#define IRQ_Hdlr_6 ERU1_1_IRQHandler -#define IRQ_Hdlr_7 ERU1_2_IRQHandler -#define IRQ_Hdlr_8 ERU1_3_IRQHandler -#define IRQ_Hdlr_12 PMU0_0_IRQHandler -#define IRQ_Hdlr_14 VADC0_C0_0_IRQHandler -#define IRQ_Hdlr_15 VADC0_C0_1_IRQHandler -#define IRQ_Hdlr_16 VADC0_C0_2_IRQHandler -#define IRQ_Hdlr_17 VADC0_C0_3_IRQHandler -#define IRQ_Hdlr_18 VADC0_G0_0_IRQHandler -#define IRQ_Hdlr_19 VADC0_G0_1_IRQHandler -#define IRQ_Hdlr_20 VADC0_G0_2_IRQHandler -#define IRQ_Hdlr_21 VADC0_G0_3_IRQHandler -#define IRQ_Hdlr_22 VADC0_G1_0_IRQHandler -#define IRQ_Hdlr_23 VADC0_G1_1_IRQHandler -#define IRQ_Hdlr_24 VADC0_G1_2_IRQHandler -#define IRQ_Hdlr_25 VADC0_G1_3_IRQHandler -#define IRQ_Hdlr_26 VADC0_G2_0_IRQHandler -#define IRQ_Hdlr_27 VADC0_G2_1_IRQHandler -#define IRQ_Hdlr_28 VADC0_G2_2_IRQHandler -#define IRQ_Hdlr_29 VADC0_G2_3_IRQHandler -#define IRQ_Hdlr_30 VADC0_G3_0_IRQHandler -#define IRQ_Hdlr_31 VADC0_G3_1_IRQHandler -#define IRQ_Hdlr_32 VADC0_G3_2_IRQHandler -#define IRQ_Hdlr_33 VADC0_G3_3_IRQHandler -#define IRQ_Hdlr_34 DSD0_0_IRQHandler -#define IRQ_Hdlr_35 DSD0_1_IRQHandler -#define IRQ_Hdlr_36 DSD0_2_IRQHandler -#define IRQ_Hdlr_37 DSD0_3_IRQHandler -#define IRQ_Hdlr_38 DSD0_4_IRQHandler -#define IRQ_Hdlr_39 DSD0_5_IRQHandler -#define IRQ_Hdlr_40 DSD0_6_IRQHandler -#define IRQ_Hdlr_41 DSD0_7_IRQHandler -#define IRQ_Hdlr_42 DAC0_0_IRQHandler -#define IRQ_Hdlr_43 DAC0_1_IRQHandler -#define IRQ_Hdlr_44 CCU40_0_IRQHandler -#define IRQ_Hdlr_45 CCU40_1_IRQHandler -#define IRQ_Hdlr_46 CCU40_2_IRQHandler -#define IRQ_Hdlr_47 CCU40_3_IRQHandler -#define IRQ_Hdlr_48 CCU41_0_IRQHandler -#define IRQ_Hdlr_49 CCU41_1_IRQHandler -#define IRQ_Hdlr_50 CCU41_2_IRQHandler -#define IRQ_Hdlr_51 CCU41_3_IRQHandler -#define IRQ_Hdlr_52 CCU42_0_IRQHandler -#define IRQ_Hdlr_53 CCU42_1_IRQHandler -#define IRQ_Hdlr_54 CCU42_2_IRQHandler -#define IRQ_Hdlr_55 CCU42_3_IRQHandler -#define IRQ_Hdlr_56 CCU43_0_IRQHandler -#define IRQ_Hdlr_57 CCU43_1_IRQHandler -#define IRQ_Hdlr_58 CCU43_2_IRQHandler -#define IRQ_Hdlr_59 CCU43_3_IRQHandler -#define IRQ_Hdlr_60 CCU80_0_IRQHandler -#define IRQ_Hdlr_61 CCU80_1_IRQHandler -#define IRQ_Hdlr_62 CCU80_2_IRQHandler -#define IRQ_Hdlr_63 CCU80_3_IRQHandler -#define IRQ_Hdlr_64 CCU81_0_IRQHandler -#define IRQ_Hdlr_65 CCU81_1_IRQHandler -#define IRQ_Hdlr_66 CCU81_2_IRQHandler -#define IRQ_Hdlr_67 CCU81_3_IRQHandler -#define IRQ_Hdlr_68 POSIF0_0_IRQHandler -#define IRQ_Hdlr_69 POSIF0_1_IRQHandler -#define IRQ_Hdlr_70 POSIF1_0_IRQHandler -#define IRQ_Hdlr_71 POSIF1_1_IRQHandler -#define IRQ_Hdlr_72 HRPWM_0_IRQHandler -#define IRQ_Hdlr_73 HRPWM_1_IRQHandler -#define IRQ_Hdlr_74 HRPWM_2_IRQHandler -#define IRQ_Hdlr_75 HRPWM_3_IRQHandler -#define IRQ_Hdlr_76 CAN0_0_IRQHandler -#define IRQ_Hdlr_77 CAN0_1_IRQHandler -#define IRQ_Hdlr_78 CAN0_2_IRQHandler -#define IRQ_Hdlr_79 CAN0_3_IRQHandler -#define IRQ_Hdlr_80 CAN0_4_IRQHandler -#define IRQ_Hdlr_81 CAN0_5_IRQHandler -#define IRQ_Hdlr_82 CAN0_6_IRQHandler -#define IRQ_Hdlr_83 CAN0_7_IRQHandler -#define IRQ_Hdlr_84 USIC0_0_IRQHandler -#define IRQ_Hdlr_85 USIC0_1_IRQHandler -#define IRQ_Hdlr_86 USIC0_2_IRQHandler -#define IRQ_Hdlr_87 USIC0_3_IRQHandler -#define IRQ_Hdlr_88 USIC0_4_IRQHandler -#define IRQ_Hdlr_89 USIC0_5_IRQHandler -#define IRQ_Hdlr_90 USIC1_0_IRQHandler -#define IRQ_Hdlr_91 USIC1_1_IRQHandler -#define IRQ_Hdlr_92 USIC1_2_IRQHandler -#define IRQ_Hdlr_93 USIC1_3_IRQHandler -#define IRQ_Hdlr_94 USIC1_4_IRQHandler -#define IRQ_Hdlr_95 USIC1_5_IRQHandler -#define IRQ_Hdlr_102 LEDTS0_0_IRQHandler -#define IRQ_Hdlr_104 FCE0_0_IRQHandler -#define IRQ_Hdlr_105 GPDMA0_0_IRQHandler -#define IRQ_Hdlr_107 USB0_0_IRQHandler -#define IRQ_Hdlr_108 ETH0_0_IRQHandler - -/* - * ========================================================================== - * ---------- Interrupt Handler retrieval macro ----------------------------- - * ========================================================================== - */ -#define GET_IRQ_HANDLER(N) IRQ_Hdlr_##N - -/** @addtogroup Device_Peripheral_Registers - * @{ - */ - -/* ------------------- Start of section using anonymous unions ------------------ */ -#if defined(__CC_ARM) - #pragma push - #pragma anon_unions -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wc11-extensions" - #pragma clang diagnostic ignored "-Wreserved-id-macro" -#elif defined(__ICCARM__) - #pragma language = extended -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) -/* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning 586 -#else - #warning Not supported compiler type -#endif - -/* ================================================================================ */ -/* ================ PPB ================ */ -/* ================================================================================ */ - -/** - * @brief Cortex-M4 Private Peripheral Block (PPB) - */ - -typedef struct { /*!< (@ 0xE000E000) PPB Structure */ - __I uint32_t RESERVED[2]; - __IO uint32_t ACTLR; /*!< (@ 0xE000E008) Auxiliary Control Register */ - __I uint32_t RESERVED1; - __IO uint32_t SYST_CSR; /*!< (@ 0xE000E010) SysTick Control and Status Register */ - __IO uint32_t SYST_RVR; /*!< (@ 0xE000E014) SysTick Reload Value Register */ - __IO uint32_t SYST_CVR; /*!< (@ 0xE000E018) SysTick Current Value Register */ - __IO uint32_t SYST_CALIB; /*!< (@ 0xE000E01C) SysTick Calibration Value Register r */ - __I uint32_t RESERVED2[56]; - __IO uint32_t NVIC_ISER0; /*!< (@ 0xE000E100) Interrupt Set-enable Register 0 */ - __IO uint32_t NVIC_ISER1; /*!< (@ 0xE000E104) Interrupt Set-enable Register 1 */ - __IO uint32_t NVIC_ISER2; /*!< (@ 0xE000E108) Interrupt Set-enable Register 2 */ - __IO uint32_t NVIC_ISER3; /*!< (@ 0xE000E10C) Interrupt Set-enable Register 3 */ - __I uint32_t RESERVED3[28]; - __IO uint32_t NVIC_ICER0; /*!< (@ 0xE000E180) Interrupt Clear-enable Register 0 */ - __IO uint32_t NVIC_ICER1; /*!< (@ 0xE000E184) Interrupt Clear-enable Register 1 */ - __IO uint32_t NVIC_ICER2; /*!< (@ 0xE000E188) Interrupt Clear-enable Register 2 */ - __IO uint32_t NVIC_ICER3; /*!< (@ 0xE000E18C) Interrupt Clear-enable Register 3 */ - __I uint32_t RESERVED4[28]; - __IO uint32_t NVIC_ISPR0; /*!< (@ 0xE000E200) Interrupt Set-pending Register 0 */ - __IO uint32_t NVIC_ISPR1; /*!< (@ 0xE000E204) Interrupt Set-pending Register 1 */ - __IO uint32_t NVIC_ISPR2; /*!< (@ 0xE000E208) Interrupt Set-pending Register 2 */ - __IO uint32_t NVIC_ISPR3; /*!< (@ 0xE000E20C) Interrupt Set-pending Register 3 */ - __I uint32_t RESERVED5[28]; - __IO uint32_t NVIC_ICPR0; /*!< (@ 0xE000E280) Interrupt Clear-pending Register 0 */ - __IO uint32_t NVIC_ICPR1; /*!< (@ 0xE000E284) Interrupt Clear-pending Register 1 */ - __IO uint32_t NVIC_ICPR2; /*!< (@ 0xE000E288) Interrupt Clear-pending Register 2 */ - __IO uint32_t NVIC_ICPR3; /*!< (@ 0xE000E28C) Interrupt Clear-pending Register 3 */ - __I uint32_t RESERVED6[28]; - __IO uint32_t NVIC_IABR0; /*!< (@ 0xE000E300) Interrupt Active Bit Register 0 */ - __IO uint32_t NVIC_IABR1; /*!< (@ 0xE000E304) Interrupt Active Bit Register 1 */ - __IO uint32_t NVIC_IABR2; /*!< (@ 0xE000E308) Interrupt Active Bit Register 2 */ - __IO uint32_t NVIC_IABR3; /*!< (@ 0xE000E30C) Interrupt Active Bit Register 3 */ - __I uint32_t RESERVED7[60]; - __IO uint32_t NVIC_IPR0; /*!< (@ 0xE000E400) Interrupt Priority Register 0 */ - __IO uint32_t NVIC_IPR1; /*!< (@ 0xE000E404) Interrupt Priority Register 1 */ - __IO uint32_t NVIC_IPR2; /*!< (@ 0xE000E408) Interrupt Priority Register 2 */ - __IO uint32_t NVIC_IPR3; /*!< (@ 0xE000E40C) Interrupt Priority Register 3 */ - __IO uint32_t NVIC_IPR4; /*!< (@ 0xE000E410) Interrupt Priority Register 4 */ - __IO uint32_t NVIC_IPR5; /*!< (@ 0xE000E414) Interrupt Priority Register 5 */ - __IO uint32_t NVIC_IPR6; /*!< (@ 0xE000E418) Interrupt Priority Register 6 */ - __IO uint32_t NVIC_IPR7; /*!< (@ 0xE000E41C) Interrupt Priority Register 7 */ - __IO uint32_t NVIC_IPR8; /*!< (@ 0xE000E420) Interrupt Priority Register 8 */ - __IO uint32_t NVIC_IPR9; /*!< (@ 0xE000E424) Interrupt Priority Register 9 */ - __IO uint32_t NVIC_IPR10; /*!< (@ 0xE000E428) Interrupt Priority Register 10 */ - __IO uint32_t NVIC_IPR11; /*!< (@ 0xE000E42C) Interrupt Priority Register 11 */ - __IO uint32_t NVIC_IPR12; /*!< (@ 0xE000E430) Interrupt Priority Register 12 */ - __IO uint32_t NVIC_IPR13; /*!< (@ 0xE000E434) Interrupt Priority Register 13 */ - __IO uint32_t NVIC_IPR14; /*!< (@ 0xE000E438) Interrupt Priority Register 14 */ - __IO uint32_t NVIC_IPR15; /*!< (@ 0xE000E43C) Interrupt Priority Register 15 */ - __IO uint32_t NVIC_IPR16; /*!< (@ 0xE000E440) Interrupt Priority Register 16 */ - __IO uint32_t NVIC_IPR17; /*!< (@ 0xE000E444) Interrupt Priority Register 17 */ - __IO uint32_t NVIC_IPR18; /*!< (@ 0xE000E448) Interrupt Priority Register 18 */ - __IO uint32_t NVIC_IPR19; /*!< (@ 0xE000E44C) Interrupt Priority Register 19 */ - __IO uint32_t NVIC_IPR20; /*!< (@ 0xE000E450) Interrupt Priority Register 20 */ - __IO uint32_t NVIC_IPR21; /*!< (@ 0xE000E454) Interrupt Priority Register 21 */ - __IO uint32_t NVIC_IPR22; /*!< (@ 0xE000E458) Interrupt Priority Register 22 */ - __IO uint32_t NVIC_IPR23; /*!< (@ 0xE000E45C) Interrupt Priority Register 23 */ - __IO uint32_t NVIC_IPR24; /*!< (@ 0xE000E460) Interrupt Priority Register 24 */ - __IO uint32_t NVIC_IPR25; /*!< (@ 0xE000E464) Interrupt Priority Register 25 */ - __IO uint32_t NVIC_IPR26; /*!< (@ 0xE000E468) Interrupt Priority Register 26 */ - __IO uint32_t NVIC_IPR27; /*!< (@ 0xE000E46C) Interrupt Priority Register 27 */ - __I uint32_t RESERVED8[548]; - __I uint32_t CPUID; /*!< (@ 0xE000ED00) CPUID Base Register */ - __IO uint32_t ICSR; /*!< (@ 0xE000ED04) Interrupt Control and State Register */ - __IO uint32_t VTOR; /*!< (@ 0xE000ED08) Vector Table Offset Register */ - __IO uint32_t AIRCR; /*!< (@ 0xE000ED0C) Application Interrupt and Reset Control Register */ - __IO uint32_t SCR; /*!< (@ 0xE000ED10) System Control Register */ - __IO uint32_t CCR; /*!< (@ 0xE000ED14) Configuration and Control Register */ - __IO uint32_t SHPR1; /*!< (@ 0xE000ED18) System Handler Priority Register 1 */ - __IO uint32_t SHPR2; /*!< (@ 0xE000ED1C) System Handler Priority Register 2 */ - __IO uint32_t SHPR3; /*!< (@ 0xE000ED20) System Handler Priority Register 3 */ - __IO uint32_t SHCSR; /*!< (@ 0xE000ED24) System Handler Control and State Register */ - __IO uint32_t CFSR; /*!< (@ 0xE000ED28) Configurable Fault Status Register */ - __IO uint32_t HFSR; /*!< (@ 0xE000ED2C) HardFault Status Register */ - __I uint32_t RESERVED9; - __IO uint32_t MMFAR; /*!< (@ 0xE000ED34) MemManage Fault Address Register */ - __IO uint32_t BFAR; /*!< (@ 0xE000ED38) BusFault Address Register */ - __IO uint32_t AFSR; /*!< (@ 0xE000ED3C) Auxiliary Fault Status Register */ - __I uint32_t RESERVED10[18]; - __IO uint32_t CPACR; /*!< (@ 0xE000ED88) Coprocessor Access Control Register */ - __I uint32_t RESERVED11; - __I uint32_t MPU_TYPE; /*!< (@ 0xE000ED90) MPU Type Register */ - __IO uint32_t MPU_CTRL; /*!< (@ 0xE000ED94) MPU Control Register */ - __IO uint32_t MPU_RNR; /*!< (@ 0xE000ED98) MPU Region Number Register */ - __IO uint32_t MPU_RBAR; /*!< (@ 0xE000ED9C) MPU Region Base Address Register */ - __IO uint32_t MPU_RASR; /*!< (@ 0xE000EDA0) MPU Region Attribute and Size Register */ - __IO uint32_t MPU_RBAR_A1; /*!< (@ 0xE000EDA4) MPU Region Base Address Register A1 */ - __IO uint32_t MPU_RASR_A1; /*!< (@ 0xE000EDA8) MPU Region Attribute and Size Register A1 */ - __IO uint32_t MPU_RBAR_A2; /*!< (@ 0xE000EDAC) MPU Region Base Address Register A2 */ - __IO uint32_t MPU_RASR_A2; /*!< (@ 0xE000EDB0) MPU Region Attribute and Size Register A2 */ - __IO uint32_t MPU_RBAR_A3; /*!< (@ 0xE000EDB4) MPU Region Base Address Register A3 */ - __IO uint32_t MPU_RASR_A3; /*!< (@ 0xE000EDB8) MPU Region Attribute and Size Register A3 */ - __I uint32_t RESERVED12[81]; - __O uint32_t STIR; /*!< (@ 0xE000EF00) Software Trigger Interrupt Register */ - __I uint32_t RESERVED13[12]; - __IO uint32_t FPCCR; /*!< (@ 0xE000EF34) Floating-point Context Control Register */ - __IO uint32_t FPCAR; /*!< (@ 0xE000EF38) Floating-point Context Address Register */ - __IO uint32_t FPDSCR; /*!< (@ 0xE000EF3C) Floating-point Default Status Control Register */ -} PPB_Type; - -/* ================================================================================ */ -/* ================ DLR ================ */ -/* ================================================================================ */ - -/** - * @brief DMA Line Router (DLR) - */ - -typedef struct { /*!< (@ 0x50004900) DLR Structure */ - __I uint32_t OVRSTAT; /*!< (@ 0x50004900) Overrun Status */ - __O uint32_t OVRCLR; /*!< (@ 0x50004904) Overrun Clear */ - __IO uint32_t SRSEL0; /*!< (@ 0x50004908) Service Request Selection 0 */ - __I uint32_t RESERVED; - __IO uint32_t LNEN; /*!< (@ 0x50004910) Line Enable */ -} DLR_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ ERU [ERU0] ================ */ -/* ================================================================================ */ - -/** - * @brief Event Request Unit 0 (ERU) - */ - -typedef struct { /*!< (@ 0x50004800) ERU Structure */ - __IO uint32_t EXISEL; /*!< (@ 0x50004800) Event Input Select */ - __I uint32_t RESERVED[3]; - __IO uint32_t EXICON[4]; /*!< (@ 0x50004810) Event Input Control */ - __IO uint32_t EXOCON[4]; /*!< (@ 0x50004820) Event Output Trigger Control */ -} ERU_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ GPDMA0 ================ */ -/* ================================================================================ */ - -/** - * @brief General Purpose DMA Unit 0 (GPDMA0) - */ - -typedef struct { /*!< (@ 0x500142C0) GPDMA0 Structure */ - __IO uint32_t RAWTFR; /*!< (@ 0x500142C0) Raw IntTfr Status */ - __I uint32_t RESERVED; - __IO uint32_t RAWBLOCK; /*!< (@ 0x500142C8) Raw IntBlock Status */ - __I uint32_t RESERVED1; - __IO uint32_t RAWSRCTRAN; /*!< (@ 0x500142D0) Raw IntSrcTran Status */ - __I uint32_t RESERVED2; - __IO uint32_t RAWDSTTRAN; /*!< (@ 0x500142D8) Raw IntBlock Status */ - __I uint32_t RESERVED3; - __IO uint32_t RAWERR; /*!< (@ 0x500142E0) Raw IntErr Status */ - __I uint32_t RESERVED4; - __I uint32_t STATUSTFR; /*!< (@ 0x500142E8) IntTfr Status */ - __I uint32_t RESERVED5; - __I uint32_t STATUSBLOCK; /*!< (@ 0x500142F0) IntBlock Status */ - __I uint32_t RESERVED6; - __I uint32_t STATUSSRCTRAN; /*!< (@ 0x500142F8) IntSrcTran Status */ - __I uint32_t RESERVED7; - __I uint32_t STATUSDSTTRAN; /*!< (@ 0x50014300) IntBlock Status */ - __I uint32_t RESERVED8; - __I uint32_t STATUSERR; /*!< (@ 0x50014308) IntErr Status */ - __I uint32_t RESERVED9; - __IO uint32_t MASKTFR; /*!< (@ 0x50014310) Mask for Raw IntTfr Status */ - __I uint32_t RESERVED10; - __IO uint32_t MASKBLOCK; /*!< (@ 0x50014318) Mask for Raw IntBlock Status */ - __I uint32_t RESERVED11; - __IO uint32_t MASKSRCTRAN; /*!< (@ 0x50014320) Mask for Raw IntSrcTran Status */ - __I uint32_t RESERVED12; - __IO uint32_t MASKDSTTRAN; /*!< (@ 0x50014328) Mask for Raw IntBlock Status */ - __I uint32_t RESERVED13; - __IO uint32_t MASKERR; /*!< (@ 0x50014330) Mask for Raw IntErr Status */ - __I uint32_t RESERVED14; - __O uint32_t CLEARTFR; /*!< (@ 0x50014338) IntTfr Status */ - __I uint32_t RESERVED15; - __O uint32_t CLEARBLOCK; /*!< (@ 0x50014340) IntBlock Status */ - __I uint32_t RESERVED16; - __O uint32_t CLEARSRCTRAN; /*!< (@ 0x50014348) IntSrcTran Status */ - __I uint32_t RESERVED17; - __O uint32_t CLEARDSTTRAN; /*!< (@ 0x50014350) IntBlock Status */ - __I uint32_t RESERVED18; - __O uint32_t CLEARERR; /*!< (@ 0x50014358) IntErr Status */ - __I uint32_t RESERVED19; - __I uint32_t STATUSINT; /*!< (@ 0x50014360) Combined Interrupt Status Register */ - __I uint32_t RESERVED20; - __IO uint32_t REQSRCREG; /*!< (@ 0x50014368) Source Software Transaction Request Register */ - __I uint32_t RESERVED21; - __IO uint32_t - REQDSTREG; /*!< (@ 0x50014370) Destination Software Transaction Request Register */ - __I uint32_t RESERVED22; - __IO uint32_t SGLREQSRCREG; /*!< (@ 0x50014378) Single Source Transaction Request Register */ - __I uint32_t RESERVED23; - __IO uint32_t - SGLREQDSTREG; /*!< (@ 0x50014380) Single Destination Transaction Request Register */ - __I uint32_t RESERVED24; - __IO uint32_t LSTSRCREG; /*!< (@ 0x50014388) Last Source Transaction Request Register */ - __I uint32_t RESERVED25; - __IO uint32_t LSTDSTREG; /*!< (@ 0x50014390) Last Destination Transaction Request Register */ - __I uint32_t RESERVED26; - __IO uint32_t DMACFGREG; /*!< (@ 0x50014398) GPDMA Configuration Register */ - __I uint32_t RESERVED27; - __IO uint32_t CHENREG; /*!< (@ 0x500143A0) GPDMA Channel Enable Register */ - __I uint32_t RESERVED28; - __I uint32_t ID; /*!< (@ 0x500143A8) GPDMA0 ID Register */ - __I uint32_t RESERVED29[19]; - __I uint32_t TYPE; /*!< (@ 0x500143F8) GPDMA Component Type */ - __I uint32_t VERSION; /*!< (@ 0x500143FC) DMA Component Version */ -} GPDMA0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ GPDMA0_CH0_1 [GPDMA0_CH0] ================ */ -/* ================================================================================ */ - -/** - * @brief General Purpose DMA Unit 0 (GPDMA0_CH0_1) - */ - -typedef struct { /*!< (@ 0x50014000) GPDMA0_CH0_1 Structure */ - __IO uint32_t SAR; /*!< (@ 0x50014000) Source Address Register */ - __I uint32_t RESERVED; - __IO uint32_t DAR; /*!< (@ 0x50014008) Destination Address Register */ - __I uint32_t RESERVED1; - __IO uint32_t LLP; /*!< (@ 0x50014010) Linked List Pointer Register */ - __I uint32_t RESERVED2; - __IO uint32_t CTLL; /*!< (@ 0x50014018) Control Register Low */ - __IO uint32_t CTLH; /*!< (@ 0x5001401C) Control Register High */ - __IO uint32_t SSTAT; /*!< (@ 0x50014020) Source Status Register */ - __I uint32_t RESERVED3; - __IO uint32_t DSTAT; /*!< (@ 0x50014028) Destination Status Register */ - __I uint32_t RESERVED4; - __IO uint32_t SSTATAR; /*!< (@ 0x50014030) Source Status Address Register */ - __I uint32_t RESERVED5; - __IO uint32_t DSTATAR; /*!< (@ 0x50014038) Destination Status Address Register */ - __I uint32_t RESERVED6; - __IO uint32_t CFGL; /*!< (@ 0x50014040) Configuration Register Low */ - __IO uint32_t CFGH; /*!< (@ 0x50014044) Configuration Register High */ - __IO uint32_t SGR; /*!< (@ 0x50014048) Source Gather Register */ - __I uint32_t RESERVED7; - __IO uint32_t DSR; /*!< (@ 0x50014050) Destination Scatter Register */ -} GPDMA0_CH_TypeDef; - -/* ================================================================================ */ -/* ================ GPDMA0_CH2_7 [GPDMA0_CH2] ================ */ -/* ================================================================================ */ - -/** - * @brief General Purpose DMA Unit 0 (GPDMA0_CH2_7) - */ - -typedef struct { /*!< (@ 0x500140B0) GPDMA0_CH2_7 Structure */ - __IO uint32_t SAR; /*!< (@ 0x500140B0) Source Address Register */ - __I uint32_t RESERVED; - __IO uint32_t DAR; /*!< (@ 0x500140B8) Destination Address Register */ - __I uint32_t RESERVED1[3]; - __IO uint32_t CTLL; /*!< (@ 0x500140C8) Control Register Low */ - __IO uint32_t CTLH; /*!< (@ 0x500140CC) Control Register High */ - __I uint32_t RESERVED2[8]; - __IO uint32_t CFGL; /*!< (@ 0x500140F0) Configuration Register Low */ - __IO uint32_t CFGH; /*!< (@ 0x500140F4) Configuration Register High */ -} GPDMA0_CH2_7_Type; - -/* ================================================================================ */ -/* ================ FCE ================ */ -/* ================================================================================ */ - -/** - * @brief Flexible CRC Engine (FCE) - */ - -typedef struct { /*!< (@ 0x50020000) FCE Structure */ - __IO uint32_t CLC; /*!< (@ 0x50020000) Clock Control Register */ - __I uint32_t RESERVED; - __I uint32_t ID; /*!< (@ 0x50020008) Module Identification Register */ -} FCE_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ FCE_KE [FCE_KE0] ================ */ -/* ================================================================================ */ - -/** - * @brief Flexible CRC Engine (FCE_KE) - */ - -typedef struct { /*!< (@ 0x50020020) FCE_KE Structure */ - __IO uint32_t IR; /*!< (@ 0x50020020) Input Register */ - __I uint32_t RES; /*!< (@ 0x50020024) CRC Result Register */ - __IO uint32_t CFG; /*!< (@ 0x50020028) CRC Configuration Register */ - __IO uint32_t STS; /*!< (@ 0x5002002C) CRC Status Register */ - __IO uint32_t LENGTH; /*!< (@ 0x50020030) CRC Length Register */ - __IO uint32_t CHECK; /*!< (@ 0x50020034) CRC Check Register */ - __IO uint32_t CRC; /*!< (@ 0x50020038) CRC Register */ - __IO uint32_t CTR; /*!< (@ 0x5002003C) CRC Test Register */ -} FCE_KE_TypeDef; - -/* ================================================================================ */ -/* ================ PBA [PBA0] ================ */ -/* ================================================================================ */ - -/** - * @brief Peripheral Bridge AHB 0 (PBA) - */ - -typedef struct { /*!< (@ 0x40000000) PBA Structure */ - __IO uint32_t STS; /*!< (@ 0x40000000) Peripheral Bridge Status Register */ - __I uint32_t WADDR; /*!< (@ 0x40000004) PBA Write Error Address Register */ -} PBA_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ FLASH [FLASH0] ================ */ -/* ================================================================================ */ - -/** - * @brief Flash Memory Controller (FLASH) - */ - -typedef struct { /*!< (@ 0x58001000) FLASH Structure */ - __I uint32_t RESERVED[1026]; - __I uint32_t ID; /*!< (@ 0x58002008) Flash Module Identification Register */ - __I uint32_t RESERVED1; - __I uint32_t FSR; /*!< (@ 0x58002010) Flash Status Register */ - __IO uint32_t FCON; /*!< (@ 0x58002014) Flash Configuration Register */ - __IO uint32_t MARP; /*!< (@ 0x58002018) Margin Control Register PFLASH */ - __I uint32_t RESERVED2; - __I uint32_t PROCON0; /*!< (@ 0x58002020) Flash Protection Configuration Register User - 0 */ - __I uint32_t PROCON1; /*!< (@ 0x58002024) Flash Protection Configuration Register User - 1 */ - __I uint32_t PROCON2; /*!< (@ 0x58002028) Flash Protection Configuration Register User - 2 */ -} FLASH0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ PREF ================ */ -/* ================================================================================ */ - -/** - * @brief Prefetch Unit (PREF) - */ - -typedef struct { /*!< (@ 0x58004000) PREF Structure */ - __IO uint32_t PCON; /*!< (@ 0x58004000) Prefetch Configuration Register */ -} PREF_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ PMU [PMU0] ================ */ -/* ================================================================================ */ - -/** - * @brief Program Management Unit (PMU) - */ - -typedef struct { /*!< (@ 0x58000508) PMU Structure */ - __I uint32_t ID; /*!< (@ 0x58000508) PMU0 Identification Register */ -} PMU0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ WDT ================ */ -/* ================================================================================ */ - -/** - * @brief Watch Dog Timer (WDT) - */ - -typedef struct { /*!< (@ 0x50008000) WDT Structure */ - __I uint32_t ID; /*!< (@ 0x50008000) WDT ID Register */ - __IO uint32_t CTR; /*!< (@ 0x50008004) WDT Control Register */ - __O uint32_t SRV; /*!< (@ 0x50008008) WDT Service Register */ - __I uint32_t TIM; /*!< (@ 0x5000800C) WDT Timer Register */ - __IO uint32_t WLB; /*!< (@ 0x50008010) WDT Window Lower Bound Register */ - __IO uint32_t WUB; /*!< (@ 0x50008014) WDT Window Upper Bound Register */ - __I uint32_t WDTSTS; /*!< (@ 0x50008018) WDT Status Register */ - __O uint32_t WDTCLR; /*!< (@ 0x5000801C) WDT Clear Register */ -} WDT_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ RTC ================ */ -/* ================================================================================ */ - -/** - * @brief Real Time Clock (RTC) - */ - -typedef struct { /*!< (@ 0x50004A00) RTC Structure */ - __I uint32_t ID; /*!< (@ 0x50004A00) RTC ID Register */ - __IO uint32_t CTR; /*!< (@ 0x50004A04) RTC Control Register */ - __I uint32_t RAWSTAT; /*!< (@ 0x50004A08) RTC Raw Service Request Register */ - __I uint32_t STSSR; /*!< (@ 0x50004A0C) RTC Service Request Status Register */ - __IO uint32_t MSKSR; /*!< (@ 0x50004A10) RTC Service Request Mask Register */ - __O uint32_t CLRSR; /*!< (@ 0x50004A14) RTC Clear Service Request Register */ - __IO uint32_t ATIM0; /*!< (@ 0x50004A18) RTC Alarm Time Register 0 */ - __IO uint32_t ATIM1; /*!< (@ 0x50004A1C) RTC Alarm Time Register 1 */ - __IO uint32_t TIM0; /*!< (@ 0x50004A20) RTC Time Register 0 */ - __IO uint32_t TIM1; /*!< (@ 0x50004A24) RTC Time Register 1 */ -} RTC_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_CLK ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_CLK) - */ - -typedef struct { /*!< (@ 0x50004600) SCU_CLK Structure */ - __I uint32_t CLKSTAT; /*!< (@ 0x50004600) Clock Status Register */ - __O uint32_t CLKSET; /*!< (@ 0x50004604) CLK Set Register */ - __O uint32_t CLKCLR; /*!< (@ 0x50004608) CLK Clear Register */ - __IO uint32_t SYSCLKCR; /*!< (@ 0x5000460C) System Clock Control Register */ - __IO uint32_t CPUCLKCR; /*!< (@ 0x50004610) CPU Clock Control Register */ - __IO uint32_t PBCLKCR; /*!< (@ 0x50004614) Peripheral Bus Clock Control Register */ - __IO uint32_t USBCLKCR; /*!< (@ 0x50004618) USB Clock Control Register */ - __I uint32_t RESERVED; - __IO uint32_t CCUCLKCR; /*!< (@ 0x50004620) CCU Clock Control Register */ - __IO uint32_t WDTCLKCR; /*!< (@ 0x50004624) WDT Clock Control Register */ - __IO uint32_t EXTCLKCR; /*!< (@ 0x50004628) External Clock Control */ - __IO uint32_t MLINKCLKCR; /*!< (@ 0x5000462C) Multi-Link Clock Control */ - __IO uint32_t SLEEPCR; /*!< (@ 0x50004630) Sleep Control Register */ - __IO uint32_t DSLEEPCR; /*!< (@ 0x50004634) Deep Sleep Control Register */ - __I uint32_t RESERVED1[2]; - __I uint32_t CGATSTAT0; /*!< (@ 0x50004640) Peripheral 0 Clock Gating Status */ - __O uint32_t CGATSET0; /*!< (@ 0x50004644) Peripheral 0 Clock Gating Set */ - __O uint32_t CGATCLR0; /*!< (@ 0x50004648) Peripheral 0 Clock Gating Clear */ - __I uint32_t CGATSTAT1; /*!< (@ 0x5000464C) Peripheral 1 Clock Gating Status */ - __O uint32_t CGATSET1; /*!< (@ 0x50004650) Peripheral 1 Clock Gating Set */ - __O uint32_t CGATCLR1; /*!< (@ 0x50004654) Peripheral 1 Clock Gating Clear */ - __I uint32_t CGATSTAT2; /*!< (@ 0x50004658) Peripheral 2 Clock Gating Status */ - __O uint32_t CGATSET2; /*!< (@ 0x5000465C) Peripheral 2 Clock Gating Set */ - __O uint32_t CGATCLR2; /*!< (@ 0x50004660) Peripheral 2 Clock Gating Clear */ -} SCU_CLK_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_OSC ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_OSC) - */ - -typedef struct { /*!< (@ 0x50004700) SCU_OSC Structure */ - __I uint32_t OSCHPSTAT; /*!< (@ 0x50004700) OSC_HP Status Register */ - __IO uint32_t OSCHPCTRL; /*!< (@ 0x50004704) OSC_HP Control Register */ - __I uint32_t RESERVED; - __IO uint32_t CLKCALCONST; /*!< (@ 0x5000470C) Clock Calibration Constant Register */ -} SCU_OSC_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_PLL ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_PLL) - */ - -typedef struct { /*!< (@ 0x50004710) SCU_PLL Structure */ - __I uint32_t PLLSTAT; /*!< (@ 0x50004710) PLL Status Register */ - __IO uint32_t PLLCON0; /*!< (@ 0x50004714) PLL Configuration 0 Register */ - __IO uint32_t PLLCON1; /*!< (@ 0x50004718) PLL Configuration 1 Register */ - __IO uint32_t PLLCON2; /*!< (@ 0x5000471C) PLL Configuration 2 Register */ - __I uint32_t USBPLLSTAT; /*!< (@ 0x50004720) USB PLL Status Register */ - __IO uint32_t USBPLLCON; /*!< (@ 0x50004724) USB PLL Configuration Register */ - __I uint32_t RESERVED[4]; - __I uint32_t CLKMXSTAT; /*!< (@ 0x50004738) Clock Multiplexing Status Register */ -} SCU_PLL_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_GENERAL ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_GENERAL) - */ - -typedef struct { /*!< (@ 0x50004000) SCU_GENERAL Structure */ - __I uint32_t ID; /*!< (@ 0x50004000) SCU Module ID Register */ - __I uint32_t IDCHIP; /*!< (@ 0x50004004) Chip ID Register */ - __I uint32_t IDMANUF; /*!< (@ 0x50004008) Manufactory ID Register */ - __I uint32_t RESERVED; - __IO uint32_t STCON; /*!< (@ 0x50004010) Startup Configuration Register */ - __I uint32_t RESERVED1[6]; - __IO uint32_t GPR[2]; /*!< (@ 0x5000402C) General Purpose Register 0 */ - __I uint32_t RESERVED2[6]; - __IO uint32_t CCUCON; /*!< (@ 0x5000404C) CCU Control Register */ - __I uint32_t RESERVED3[15]; - __IO uint32_t DTSCON; /*!< (@ 0x5000408C) Die Temperature Sensor Control Register */ - __I uint32_t DTSSTAT; /*!< (@ 0x50004090) Die Temperature Sensor Status Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t GORCEN[2]; /*!< (@ 0x500040A0) Out of Range Comparator Enable Register 0 */ - __IO uint32_t DTEMPLIM; /*!< (@ 0x500040A8) Die Temperature Sensor Limit Register */ - __I uint32_t DTEMPALARM; /*!< (@ 0x500040AC) Die Temperature Sensor Alarm Register */ - __I uint32_t RESERVED5[5]; - __I uint32_t MIRRSTS; /*!< (@ 0x500040C4) Mirror Write Status Register */ - __IO uint32_t RMACR; /*!< (@ 0x500040C8) Retention Memory Access Control Register */ - __IO uint32_t RMDATA; /*!< (@ 0x500040CC) Retention Memory Access Data Register */ - __I uint32_t MIRRALLSTAT; /*!< (@ 0x500040D0) Mirror All Status */ - __O uint32_t MIRRALLREQ; /*!< (@ 0x500040D4) Mirror All Request */ -} SCU_GENERAL_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_INTERRUPT ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_INTERRUPT) - */ - -typedef struct { /*!< (@ 0x50004074) SCU_INTERRUPT Structure */ - __I uint32_t SRSTAT; /*!< (@ 0x50004074) SCU Service Request Status */ - __I uint32_t SRRAW; /*!< (@ 0x50004078) SCU Raw Service Request Status */ - __IO uint32_t SRMSK; /*!< (@ 0x5000407C) SCU Service Request Mask */ - __O uint32_t SRCLR; /*!< (@ 0x50004080) SCU Service Request Clear */ - __O uint32_t SRSET; /*!< (@ 0x50004084) SCU Service Request Set */ - __IO uint32_t NMIREQEN; /*!< (@ 0x50004088) SCU Service Request Mask */ -} SCU_INTERRUPT_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_PARITY ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_PARITY) - */ - -typedef struct { /*!< (@ 0x5000413C) SCU_PARITY Structure */ - __IO uint32_t PEEN; /*!< (@ 0x5000413C) Parity Error Enable Register */ - __IO uint32_t MCHKCON; /*!< (@ 0x50004140) Memory Checking Control Register */ - __IO uint32_t PETE; /*!< (@ 0x50004144) Parity Error Trap Enable Register */ - __IO uint32_t PERSTEN; /*!< (@ 0x50004148) Parity Error Reset Enable Register */ - __I uint32_t RESERVED; - __IO uint32_t PEFLAG; /*!< (@ 0x50004150) Parity Error Flag Register */ - __IO uint32_t PMTPR; /*!< (@ 0x50004154) Parity Memory Test Pattern Register */ - __IO uint32_t PMTSR; /*!< (@ 0x50004158) Parity Memory Test Select Register */ -} SCU_PARITY_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_TRAP ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_TRAP) - */ - -typedef struct { /*!< (@ 0x50004160) SCU_TRAP Structure */ - __I uint32_t TRAPSTAT; /*!< (@ 0x50004160) Trap Status Register */ - __I uint32_t TRAPRAW; /*!< (@ 0x50004164) Trap Raw Status Register */ - __IO uint32_t TRAPDIS; /*!< (@ 0x50004168) Trap Disable Register */ - __O uint32_t TRAPCLR; /*!< (@ 0x5000416C) Trap Clear Register */ - __O uint32_t TRAPSET; /*!< (@ 0x50004170) Trap Set Register */ -} SCU_TRAP_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_HIBERNATE ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_HIBERNATE) - */ - -typedef struct { /*!< (@ 0x50004300) SCU_HIBERNATE Structure */ - __I uint32_t HDSTAT; /*!< (@ 0x50004300) Hibernate Domain Status Register */ - __O uint32_t HDCLR; /*!< (@ 0x50004304) Hibernate Domain Status Clear Register */ - __O uint32_t HDSET; /*!< (@ 0x50004308) Hibernate Domain Status Set Register */ - __IO uint32_t HDCR; /*!< (@ 0x5000430C) Hibernate Domain Control Register */ - __I uint32_t RESERVED; - __IO uint32_t OSCSICTRL; /*!< (@ 0x50004314) fOSI Control Register */ - __I uint32_t OSCULSTAT; /*!< (@ 0x50004318) OSC_ULP Status Register */ - __IO uint32_t OSCULCTRL; /*!< (@ 0x5000431C) OSC_ULP Control Register */ - __IO uint32_t LPACCONF; /*!< (@ 0x50004320) Analog Wake-up Configuration Register */ - __IO uint32_t LPACTH0; /*!< (@ 0x50004324) LPAC Threshold Register 0 */ - __IO uint32_t LPACTH1; /*!< (@ 0x50004328) LPAC Threshold Register 1 */ - __I uint32_t LPACST; /*!< (@ 0x5000432C) Hibernate Analog Control State Register */ - __O uint32_t LPACCLR; /*!< (@ 0x50004330) LPAC Control Clear Register */ - __O uint32_t LPACSET; /*!< (@ 0x50004334) LPAC Control Set Register */ - __I uint32_t HINTST; /*!< (@ 0x50004338) Hibernate Internal Control State Register */ - __O uint32_t HINTCLR; /*!< (@ 0x5000433C) Hibernate Internal Control Clear Register */ - __O uint32_t HINTSET; /*!< (@ 0x50004340) Hibernate Internal Control Set Register */ -} SCU_HIBERNATE_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_POWER ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_POWER) - */ - -typedef struct { /*!< (@ 0x50004200) SCU_POWER Structure */ - __I uint32_t PWRSTAT; /*!< (@ 0x50004200) PCU Status Register */ - __O uint32_t PWRSET; /*!< (@ 0x50004204) PCU Set Control Register */ - __O uint32_t PWRCLR; /*!< (@ 0x50004208) PCU Clear Control Register */ - __I uint32_t RESERVED; - __I uint32_t EVRSTAT; /*!< (@ 0x50004210) EVR Status Register */ - __I uint32_t EVRVADCSTAT; /*!< (@ 0x50004214) EVR VADC Status Register */ - __I uint32_t RESERVED1[5]; - __IO uint32_t PWRMON; /*!< (@ 0x5000422C) Power Monitor Control */ -} SCU_POWER_TypeDef; - -/* ================================================================================ */ -/* ================ SCU_RESET ================ */ -/* ================================================================================ */ - -/** - * @brief System Control Unit (SCU_RESET) - */ - -typedef struct { /*!< (@ 0x50004400) SCU_RESET Structure */ - __I uint32_t RSTSTAT; /*!< (@ 0x50004400) RCU Reset Status */ - __O uint32_t RSTSET; /*!< (@ 0x50004404) RCU Reset Set Register */ - __O uint32_t RSTCLR; /*!< (@ 0x50004408) RCU Reset Clear Register */ - __I uint32_t PRSTAT0; /*!< (@ 0x5000440C) RCU Peripheral 0 Reset Status */ - __O uint32_t PRSET0; /*!< (@ 0x50004410) RCU Peripheral 0 Reset Set */ - __O uint32_t PRCLR0; /*!< (@ 0x50004414) RCU Peripheral 0 Reset Clear */ - __I uint32_t PRSTAT1; /*!< (@ 0x50004418) RCU Peripheral 1 Reset Status */ - __O uint32_t PRSET1; /*!< (@ 0x5000441C) RCU Peripheral 1 Reset Set */ - __O uint32_t PRCLR1; /*!< (@ 0x50004420) RCU Peripheral 1 Reset Clear */ - __I uint32_t PRSTAT2; /*!< (@ 0x50004424) RCU Peripheral 2 Reset Status */ - __O uint32_t PRSET2; /*!< (@ 0x50004428) RCU Peripheral 2 Reset Set */ - __O uint32_t PRCLR2; /*!< (@ 0x5000442C) RCU Peripheral 2 Reset Clear */ -} SCU_RESET_TypeDef; - -/* ================================================================================ */ -/* ================ LEDTS [LEDTS0] ================ */ -/* ================================================================================ */ - -/** - * @brief LED and Touch Sense Unit 0 (LEDTS) - */ - -typedef struct { /*!< (@ 0x48010000) LEDTS Structure */ - __I uint32_t ID; /*!< (@ 0x48010000) Module Identification Register */ - __IO uint32_t GLOBCTL; /*!< (@ 0x48010004) Global Control Register */ - __IO uint32_t FNCTL; /*!< (@ 0x48010008) Function Control Register */ - __O uint32_t EVFR; /*!< (@ 0x4801000C) Event Flag Register */ - __IO uint32_t TSVAL; /*!< (@ 0x48010010) Touch-sense TS-Counter Value */ - __IO uint32_t LINE0; /*!< (@ 0x48010014) Line Pattern Register 0 */ - __IO uint32_t LINE1; /*!< (@ 0x48010018) Line Pattern Register 1 */ - __IO uint32_t LDCMP0; /*!< (@ 0x4801001C) LED Compare Register 0 */ - __IO uint32_t LDCMP1; /*!< (@ 0x48010020) LED Compare Register 1 */ - __IO uint32_t TSCMP0; /*!< (@ 0x48010024) Touch-sense Compare Register 0 */ - __IO uint32_t TSCMP1; /*!< (@ 0x48010028) Touch-sense Compare Register 1 */ -} LEDTS0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ ETH0_CON ================ */ -/* ================================================================================ */ - -/** - * @brief Ethernet Control Register (ETH0_CON) - */ - -typedef struct { /*!< (@ 0x50004040) ETH0_CON Structure */ - __IO uint32_t CON; /*!< (@ 0x50004040) Ethernet 0 Port Control Register */ -} ETH0_CON_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ ETH [ETH0] ================ */ -/* ================================================================================ */ - -/** - * @brief Ethernet Unit 0 (ETH) - */ - -typedef struct { /*!< (@ 0x5000C000) ETH Structure */ - __IO uint32_t MAC_CONFIGURATION; /*!< (@ 0x5000C000) MAC Configuration Register */ - __IO uint32_t MAC_FRAME_FILTER; /*!< (@ 0x5000C004) MAC Frame Filter */ - __IO uint32_t HASH_TABLE_HIGH; /*!< (@ 0x5000C008) Hash Table High Register */ - __IO uint32_t HASH_TABLE_LOW; /*!< (@ 0x5000C00C) Hash Table Low Register */ - __IO uint32_t GMII_ADDRESS; /*!< (@ 0x5000C010) MII Address Register */ - __IO uint32_t GMII_DATA; /*!< (@ 0x5000C014) MII Data Register */ - __IO uint32_t FLOW_CONTROL; /*!< (@ 0x5000C018) Flow Control Register */ - __IO uint32_t VLAN_TAG; /*!< (@ 0x5000C01C) VLAN Tag Register */ - __I uint32_t VERSION; /*!< (@ 0x5000C020) Version Register */ - __I uint32_t DEBUG; /*!< (@ 0x5000C024) Debug Register */ - __IO uint32_t - REMOTE_WAKE_UP_FRAME_FILTER; /*!< (@ 0x5000C028) Remote Wake Up Frame Filter Register */ - __IO uint32_t PMT_CONTROL_STATUS; /*!< (@ 0x5000C02C) PMT Control and Status Register */ - __I uint32_t RESERVED[2]; - __I uint32_t INTERRUPT_STATUS; /*!< (@ 0x5000C038) Interrupt Register */ - __IO uint32_t INTERRUPT_MASK; /*!< (@ 0x5000C03C) Interrupt Mask Register */ - __IO uint32_t MAC_ADDRESS0_HIGH; /*!< (@ 0x5000C040) MAC Address0 High Register */ - __IO uint32_t MAC_ADDRESS0_LOW; /*!< (@ 0x5000C044) MAC Address0 Low Register */ - __IO uint32_t MAC_ADDRESS1_HIGH; /*!< (@ 0x5000C048) MAC Address1 High Register */ - __IO uint32_t MAC_ADDRESS1_LOW; /*!< (@ 0x5000C04C) MAC Address1 Low Register */ - __IO uint32_t MAC_ADDRESS2_HIGH; /*!< (@ 0x5000C050) MAC Address2 High Register */ - __IO uint32_t MAC_ADDRESS2_LOW; /*!< (@ 0x5000C054) MAC Address2 Low Register */ - __IO uint32_t MAC_ADDRESS3_HIGH; /*!< (@ 0x5000C058) MAC Address3 High Register */ - __IO uint32_t MAC_ADDRESS3_LOW; /*!< (@ 0x5000C05C) MAC Address3 Low Register */ - __I uint32_t RESERVED1[40]; - __IO uint32_t MMC_CONTROL; /*!< (@ 0x5000C100) MMC Control Register */ - __I uint32_t MMC_RECEIVE_INTERRUPT; /*!< (@ 0x5000C104) MMC Receive Interrupt Register */ - __I uint32_t MMC_TRANSMIT_INTERRUPT; /*!< (@ 0x5000C108) MMC Transmit Interrupt Register */ - __IO uint32_t - MMC_RECEIVE_INTERRUPT_MASK; /*!< (@ 0x5000C10C) MMC Reveive Interrupt Mask Register */ - __IO uint32_t - MMC_TRANSMIT_INTERRUPT_MASK; /*!< (@ 0x5000C110) MMC Transmit Interrupt Mask Register */ - __I uint32_t TX_OCTET_COUNT_GOOD_BAD; /*!< (@ 0x5000C114) Transmit Octet Count for Good and Bad - Frames Register */ - __I uint32_t TX_FRAME_COUNT_GOOD_BAD; /*!< (@ 0x5000C118) Transmit Frame Count for Goodand Bad - Frames Register */ - __I uint32_t TX_BROADCAST_FRAMES_GOOD; /*!< (@ 0x5000C11C) Transmit Frame Count for Good - Broadcast Frames */ - __I uint32_t TX_MULTICAST_FRAMES_GOOD; /*!< (@ 0x5000C120) Transmit Frame Count for Good - Multicast Frames */ - __I uint32_t TX_64OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C124) Transmit Octet Count for Good and - Bad 64 Byte Frames */ - __I uint32_t TX_65TO127OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C128) Transmit Octet Count for Good - and Bad 65 to 127 Bytes Frames */ - __I uint32_t TX_128TO255OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C12C) Transmit Octet Count for - Good and Bad 128 to 255 Bytes Frames */ - __I uint32_t TX_256TO511OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C130) Transmit Octet Count for - Good and Bad 256 to 511 Bytes Frames */ - __I uint32_t TX_512TO1023OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C134) Transmit Octet Count for - Good and Bad 512 to 1023 Bytes Frames */ - __I uint32_t TX_1024TOMAXOCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C138) Transmit Octet Count for - Good and Bad 1024 to Maxsize Bytes Frames */ - __I uint32_t TX_UNICAST_FRAMES_GOOD_BAD; /*!< (@ 0x5000C13C) Transmit Frame Count for Good and - Bad Unicast Frames */ - __I uint32_t TX_MULTICAST_FRAMES_GOOD_BAD; /*!< (@ 0x5000C140) Transmit Frame Count for Good and - Bad Multicast Frames */ - __I uint32_t TX_BROADCAST_FRAMES_GOOD_BAD; /*!< (@ 0x5000C144) Transmit Frame Count for Good and - Bad Broadcast Frames */ - __I uint32_t TX_UNDERFLOW_ERROR_FRAMES; /*!< (@ 0x5000C148) Transmit Frame Count for Underflow - Error Frames */ - __I uint32_t TX_SINGLE_COLLISION_GOOD_FRAMES; /*!< (@ 0x5000C14C) Transmit Frame Count for - Frames Transmitted after Single Collision */ - __I uint32_t - TX_MULTIPLE_COLLISION_GOOD_FRAMES; /*!< (@ 0x5000C150) Transmit Frame Count for Frames - Transmitted after Multiple Collision */ - __I uint32_t TX_DEFERRED_FRAMES; /*!< (@ 0x5000C154) Tx Deferred Frames Register */ - __I uint32_t TX_LATE_COLLISION_FRAMES; /*!< (@ 0x5000C158) Transmit Frame Count for Late - Collision Error Frames */ - __I uint32_t TX_EXCESSIVE_COLLISION_FRAMES; /*!< (@ 0x5000C15C) Transmit Frame Count for - Excessive Collision Error Frames */ - __I uint32_t TX_CARRIER_ERROR_FRAMES; /*!< (@ 0x5000C160) Transmit Frame Count for Carrier Sense - Error Frames */ - __I uint32_t TX_OCTET_COUNT_GOOD; /*!< (@ 0x5000C164) Tx Octet Count Good Register */ - __I uint32_t TX_FRAME_COUNT_GOOD; /*!< (@ 0x5000C168) Tx Frame Count Good Register */ - __I uint32_t TX_EXCESSIVE_DEFERRAL_ERROR; /*!< (@ 0x5000C16C) Transmit Frame Count for Excessive - Deferral Error Frames */ - __I uint32_t TX_PAUSE_FRAMES; /*!< (@ 0x5000C170) Transmit Frame Count for Good PAUSE Frames */ - __I uint32_t - TX_VLAN_FRAMES_GOOD; /*!< (@ 0x5000C174) Transmit Frame Count for Good VLAN Frames */ - __I uint32_t - TX_OSIZE_FRAMES_GOOD; /*!< (@ 0x5000C178) Transmit Frame Count for Good Oversize Frames */ - __I uint32_t RESERVED2; - __I uint32_t - RX_FRAMES_COUNT_GOOD_BAD; /*!< (@ 0x5000C180) Receive Frame Count for Good and Bad Frames */ - __I uint32_t - RX_OCTET_COUNT_GOOD_BAD; /*!< (@ 0x5000C184) Receive Octet Count for Good and Bad Frames */ - __I uint32_t RX_OCTET_COUNT_GOOD; /*!< (@ 0x5000C188) Rx Octet Count Good Register */ - __I uint32_t RX_BROADCAST_FRAMES_GOOD; /*!< (@ 0x5000C18C) Receive Frame Count for Good - Broadcast Frames */ - __I uint32_t RX_MULTICAST_FRAMES_GOOD; /*!< (@ 0x5000C190) Receive Frame Count for Good - Multicast Frames */ - __I uint32_t - RX_CRC_ERROR_FRAMES; /*!< (@ 0x5000C194) Receive Frame Count for CRC Error Frames */ - __I uint32_t RX_ALIGNMENT_ERROR_FRAMES; /*!< (@ 0x5000C198) Receive Frame Count for Alignment - Error Frames */ - __I uint32_t - RX_RUNT_ERROR_FRAMES; /*!< (@ 0x5000C19C) Receive Frame Count for Runt Error Frames */ - __I uint32_t - RX_JABBER_ERROR_FRAMES; /*!< (@ 0x5000C1A0) Receive Frame Count for Jabber Error Frames */ - __I uint32_t - RX_UNDERSIZE_FRAMES_GOOD; /*!< (@ 0x5000C1A4) Receive Frame Count for Undersize Frames */ - __I uint32_t RX_OVERSIZE_FRAMES_GOOD; /*!< (@ 0x5000C1A8) Rx Oversize Frames Good Register */ - __I uint32_t RX_64OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C1AC) Receive Frame Count for Good and - Bad 64 Byte Frames */ - __I uint32_t RX_65TO127OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C1B0) Receive Frame Count for Good - and Bad 65 to 127 Bytes Frames */ - __I uint32_t RX_128TO255OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C1B4) Receive Frame Count for Good - and Bad 128 to 255 Bytes Frames */ - __I uint32_t RX_256TO511OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C1B8) Receive Frame Count for Good - and Bad 256 to 511 Bytes Frames */ - __I uint32_t RX_512TO1023OCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C1BC) Receive Frame Count for - Good and Bad 512 to 1,023 Bytes Frames */ - __I uint32_t - RX_1024TOMAXOCTETS_FRAMES_GOOD_BAD; /*!< (@ 0x5000C1C0) Receive Frame Count for Good and Bad - 1,024 to Maxsize Bytes Frames */ - __I uint32_t - RX_UNICAST_FRAMES_GOOD; /*!< (@ 0x5000C1C4) Receive Frame Count for Good Unicast Frames */ - __I uint32_t - RX_LENGTH_ERROR_FRAMES; /*!< (@ 0x5000C1C8) Receive Frame Count for Length Error Frames */ - __I uint32_t RX_OUT_OF_RANGE_TYPE_FRAMES; /*!< (@ 0x5000C1CC) Receive Frame Count for Out of - Range Frames */ - __I uint32_t RX_PAUSE_FRAMES; /*!< (@ 0x5000C1D0) Receive Frame Count for PAUSE Frames */ - __I uint32_t - RX_FIFO_OVERFLOW_FRAMES; /*!< (@ 0x5000C1D4) Receive Frame Count for FIFO Overflow Frames */ - __I uint32_t RX_VLAN_FRAMES_GOOD_BAD; /*!< (@ 0x5000C1D8) Receive Frame Count for Good and Bad - VLAN Frames */ - __I uint32_t RX_WATCHDOG_ERROR_FRAMES; /*!< (@ 0x5000C1DC) Receive Frame Count for Watchdog - Error Frames */ - __I uint32_t - RX_RECEIVE_ERROR_FRAMES; /*!< (@ 0x5000C1E0) Receive Frame Count for Receive Error Frames */ - __I uint32_t RX_CONTROL_FRAMES_GOOD; /*!< (@ 0x5000C1E4) Receive Frame Count for Good Control - Frames Frames */ - __I uint32_t RESERVED3[6]; - __IO uint32_t MMC_IPC_RECEIVE_INTERRUPT_MASK; /*!< (@ 0x5000C200) MMC Receive Checksum Offload - Interrupt Mask Register */ - __I uint32_t RESERVED4; - __I uint32_t MMC_IPC_RECEIVE_INTERRUPT; /*!< (@ 0x5000C208) MMC Receive Checksum Offload - Interrupt Register */ - __I uint32_t RESERVED5; - __I uint32_t RXIPV4_GOOD_FRAMES; /*!< (@ 0x5000C210) RxIPv4 Good Frames Register */ - __I uint32_t RXIPV4_HEADER_ERROR_FRAMES; /*!< (@ 0x5000C214) Receive IPV4 Header Error Frame - Counter Register */ - __I uint32_t RXIPV4_NO_PAYLOAD_FRAMES; /*!< (@ 0x5000C218) Receive IPV4 No Payload Frame Counter - Register */ - __I uint32_t RXIPV4_FRAGMENTED_FRAMES; /*!< (@ 0x5000C21C) Receive IPV4 Fragmented Frame Counter - Register */ - __I uint32_t RXIPV4_UDP_CHECKSUM_DISABLED_FRAMES; /*!< (@ 0x5000C220) Receive IPV4 UDP Checksum - Disabled Frame Counter Register */ - __I uint32_t RXIPV6_GOOD_FRAMES; /*!< (@ 0x5000C224) RxIPv6 Good Frames Register */ - __I uint32_t RXIPV6_HEADER_ERROR_FRAMES; /*!< (@ 0x5000C228) Receive IPV6 Header Error Frame - Counter Register */ - __I uint32_t RXIPV6_NO_PAYLOAD_FRAMES; /*!< (@ 0x5000C22C) Receive IPV6 No Payload Frame Counter - Register */ - __I uint32_t RXUDP_GOOD_FRAMES; /*!< (@ 0x5000C230) RxUDP Good Frames Register */ - __I uint32_t RXUDP_ERROR_FRAMES; /*!< (@ 0x5000C234) RxUDP Error Frames Register */ - __I uint32_t RXTCP_GOOD_FRAMES; /*!< (@ 0x5000C238) RxTCP Good Frames Register */ - __I uint32_t RXTCP_ERROR_FRAMES; /*!< (@ 0x5000C23C) RxTCP Error Frames Register */ - __I uint32_t RXICMP_GOOD_FRAMES; /*!< (@ 0x5000C240) RxICMP Good Frames Register */ - __I uint32_t RXICMP_ERROR_FRAMES; /*!< (@ 0x5000C244) RxICMP Error Frames Register */ - __I uint32_t RESERVED6[2]; - __I uint32_t RXIPV4_GOOD_OCTETS; /*!< (@ 0x5000C250) RxIPv4 Good Octets Register */ - __I uint32_t RXIPV4_HEADER_ERROR_OCTETS; /*!< (@ 0x5000C254) Receive IPV4 Header Error Octet - Counter Register */ - __I uint32_t RXIPV4_NO_PAYLOAD_OCTETS; /*!< (@ 0x5000C258) Receive IPV4 No Payload Octet Counter - Register */ - __I uint32_t RXIPV4_FRAGMENTED_OCTETS; /*!< (@ 0x5000C25C) Receive IPV4 Fragmented Octet Counter - Register */ - __I uint32_t RXIPV4_UDP_CHECKSUM_DISABLE_OCTETS; /*!< (@ 0x5000C260) Receive IPV4 Fragmented - Octet Counter Register */ - __I uint32_t RXIPV6_GOOD_OCTETS; /*!< (@ 0x5000C264) RxIPv6 Good Octets Register */ - __I uint32_t RXIPV6_HEADER_ERROR_OCTETS; /*!< (@ 0x5000C268) Receive IPV6 Header Error Octet - Counter Register */ - __I uint32_t RXIPV6_NO_PAYLOAD_OCTETS; /*!< (@ 0x5000C26C) Receive IPV6 No Payload Octet Counter - Register */ - __I uint32_t RXUDP_GOOD_OCTETS; /*!< (@ 0x5000C270) Receive UDP Good Octets Register */ - __I uint32_t RXUDP_ERROR_OCTETS; /*!< (@ 0x5000C274) Receive UDP Error Octets Register */ - __I uint32_t RXTCP_GOOD_OCTETS; /*!< (@ 0x5000C278) Receive TCP Good Octets Register */ - __I uint32_t RXTCP_ERROR_OCTETS; /*!< (@ 0x5000C27C) Receive TCP Error Octets Register */ - __I uint32_t RXICMP_GOOD_OCTETS; /*!< (@ 0x5000C280) Receive ICMP Good Octets Register */ - __I uint32_t RXICMP_ERROR_OCTETS; /*!< (@ 0x5000C284) Receive ICMP Error Octets Register */ - __I uint32_t RESERVED7[286]; - __IO uint32_t TIMESTAMP_CONTROL; /*!< (@ 0x5000C700) Timestamp Control Register */ - __IO uint32_t SUB_SECOND_INCREMENT; /*!< (@ 0x5000C704) Sub-Second Increment Register */ - __I uint32_t SYSTEM_TIME_SECONDS; /*!< (@ 0x5000C708) System Time - Seconds Register */ - __I uint32_t SYSTEM_TIME_NANOSECONDS; /*!< (@ 0x5000C70C) System Time Nanoseconds Register */ - __IO uint32_t - SYSTEM_TIME_SECONDS_UPDATE; /*!< (@ 0x5000C710) System Time - Seconds Update Register */ - __IO uint32_t SYSTEM_TIME_NANOSECONDS_UPDATE; /*!< (@ 0x5000C714) System Time Nanoseconds Update - Register */ - __IO uint32_t TIMESTAMP_ADDEND; /*!< (@ 0x5000C718) Timestamp Addend Register */ - __IO uint32_t TARGET_TIME_SECONDS; /*!< (@ 0x5000C71C) Target Time Seconds Register */ - __IO uint32_t TARGET_TIME_NANOSECONDS; /*!< (@ 0x5000C720) Target Time Nanoseconds Register */ - __IO uint32_t SYSTEM_TIME_HIGHER_WORD_SECONDS; /*!< (@ 0x5000C724) System Time - Higher Word - Seconds Register */ - __I uint32_t TIMESTAMP_STATUS; /*!< (@ 0x5000C728) Timestamp Status Register */ - __IO uint32_t PPS_CONTROL; /*!< (@ 0x5000C72C) PPS Control Register */ - __I uint32_t RESERVED8[564]; - __IO uint32_t BUS_MODE; /*!< (@ 0x5000D000) Bus Mode Register */ - __IO uint32_t TRANSMIT_POLL_DEMAND; /*!< (@ 0x5000D004) Transmit Poll Demand Register */ - __IO uint32_t RECEIVE_POLL_DEMAND; /*!< (@ 0x5000D008) Receive Poll Demand Register */ - __IO uint32_t - RECEIVE_DESCRIPTOR_LIST_ADDRESS; /*!< (@ 0x5000D00C) Receive Descriptor Address Register */ - __IO uint32_t TRANSMIT_DESCRIPTOR_LIST_ADDRESS; /*!< (@ 0x5000D010) Transmit descripter Address - Register */ - __IO uint32_t STATUS; /*!< (@ 0x5000D014) Status Register */ - __IO uint32_t OPERATION_MODE; /*!< (@ 0x5000D018) Operation Mode Register */ - __IO uint32_t INTERRUPT_ENABLE; /*!< (@ 0x5000D01C) Interrupt Enable Register */ - __I uint32_t MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER; /*!< (@ 0x5000D020) Missed Frame and - Buffer Overflow Counter Register */ - __IO uint32_t RECEIVE_INTERRUPT_WATCHDOG_TIMER; /*!< (@ 0x5000D024) Receive Interrupt Watchdog - Timer Register */ - __I uint32_t RESERVED9; - __I uint32_t AHB_STATUS; /*!< (@ 0x5000D02C) AHB Status Register */ - __I uint32_t RESERVED10[6]; - __I uint32_t CURRENT_HOST_TRANSMIT_DESCRIPTOR; /*!< (@ 0x5000D048) Current Host Transmit - Descriptor Register */ - __I uint32_t CURRENT_HOST_RECEIVE_DESCRIPTOR; /*!< (@ 0x5000D04C) Current Host Receive - Descriptor Register */ - __I uint32_t CURRENT_HOST_TRANSMIT_BUFFER_ADDRESS; /*!< (@ 0x5000D050) Current Host Transmit - Buffer Address Register */ - __I uint32_t CURRENT_HOST_RECEIVE_BUFFER_ADDRESS; /*!< (@ 0x5000D054) Current Host Receive - Buffer Address Register */ - __IO uint32_t HW_FEATURE; /*!< (@ 0x5000D058) HW Feature Register */ -} ETH_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ USB [USB0] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Bus (USB) - */ - -typedef struct { /*!< (@ 0x50040000) USB Structure */ - __IO uint32_t GOTGCTL; /*!< (@ 0x50040000) Control and Status Register */ - __IO uint32_t GOTGINT; /*!< (@ 0x50040004) OTG Interrupt Register */ - __IO uint32_t GAHBCFG; /*!< (@ 0x50040008) AHB Configuration Register */ - __IO uint32_t GUSBCFG; /*!< (@ 0x5004000C) USB Configuration Register */ - __IO uint32_t GRSTCTL; /*!< (@ 0x50040010) Reset Register */ - - union { - __IO uint32_t GINTSTS_DEVICEMODE; /*!< (@ 0x50040014) Interrupt Register [DEVICEMODE] */ - __IO uint32_t GINTSTS_HOSTMODE; /*!< (@ 0x50040014) Interrupt Register [HOSTMODE] */ - }; - - union { - __IO uint32_t - GINTMSK_DEVICEMODE; /*!< (@ 0x50040018) Interrupt Mask Register [DEVICEMODE] */ - __IO uint32_t GINTMSK_HOSTMODE; /*!< (@ 0x50040018) Interrupt Mask Register [HOSTMODE] */ - }; - - union { - __I uint32_t GRXSTSR_DEVICEMODE; /*!< (@ 0x5004001C) Receive Status Debug Read Register - [DEVICEMODE] */ - __I uint32_t - GRXSTSR_HOSTMODE; /*!< (@ 0x5004001C) Receive Status Debug Read Register [HOSTMODE] */ - }; - - union { - __I uint32_t - GRXSTSP_HOSTMODE; /*!< (@ 0x50040020) Receive Status Read and Pop Register [HOSTMODE] */ - __I uint32_t GRXSTSP_DEVICEMODE; /*!< (@ 0x50040020) Receive Status Read and Pop Register - [DEVICEMODE] */ - }; - - __IO uint32_t GRXFSIZ; /*!< (@ 0x50040024) Receive FIFO Size Register */ - - union { - __IO uint32_t GNPTXFSIZ_DEVICEMODE; /*!< (@ 0x50040028) Non-Periodic Transmit FIFO Size - Register [DEVICEMODE] */ - __IO uint32_t GNPTXFSIZ_HOSTMODE; /*!< (@ 0x50040028) Non-Periodic Transmit FIFO Size - Register [HOSTMODE] */ - }; - - __I uint32_t GNPTXSTS; /*!< (@ 0x5004002C) Non-Periodic Transmit FIFO/Queue Status Register */ - __I uint32_t RESERVED[3]; - __IO uint32_t GUID; /*!< (@ 0x5004003C) USB Module Identification Register */ - __I uint32_t RESERVED1[7]; - __IO uint32_t GDFIFOCFG; /*!< (@ 0x5004005C) Global DFIFO Software Config Register */ - __I uint32_t RESERVED2[40]; - __IO uint32_t HPTXFSIZ; /*!< (@ 0x50040100) Host Periodic Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF1; /*!< (@ 0x50040104) Device IN Endpoint Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF2; /*!< (@ 0x50040108) Device IN Endpoint Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF3; /*!< (@ 0x5004010C) Device IN Endpoint Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF4; /*!< (@ 0x50040110) Device IN Endpoint Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF5; /*!< (@ 0x50040114) Device IN Endpoint Transmit FIFO Size Register */ - __IO uint32_t DIEPTXF6; /*!< (@ 0x50040118) Device IN Endpoint Transmit FIFO Size Register */ - __I uint32_t RESERVED3[185]; - __IO uint32_t HCFG; /*!< (@ 0x50040400) Host Configuration Register */ - __IO uint32_t HFIR; /*!< (@ 0x50040404) Host Frame Interval Register */ - __IO uint32_t HFNUM; /*!< (@ 0x50040408) Host Frame Number/Frame Time Remaining Register */ - __I uint32_t RESERVED4; - __IO uint32_t HPTXSTS; /*!< (@ 0x50040410) Host Periodic Transmit FIFO/ Queue Status Register */ - __I uint32_t HAINT; /*!< (@ 0x50040414) Host All Channels Interrupt Register */ - __IO uint32_t HAINTMSK; /*!< (@ 0x50040418) Host All Channels Interrupt Mask Register */ - __IO uint32_t HFLBADDR; /*!< (@ 0x5004041C) Host Frame List Base Address Register */ - __I uint32_t RESERVED5[8]; - __IO uint32_t HPRT; /*!< (@ 0x50040440) Host Port Control and Status Register */ - __I uint32_t RESERVED6[239]; - __IO uint32_t DCFG; /*!< (@ 0x50040800) Device Configuration Register */ - __IO uint32_t DCTL; /*!< (@ 0x50040804) Device Control Register */ - __I uint32_t DSTS; /*!< (@ 0x50040808) Device Status Register */ - __I uint32_t RESERVED7; - __IO uint32_t DIEPMSK; /*!< (@ 0x50040810) Device IN Endpoint Common Interrupt Mask Register */ - __IO uint32_t DOEPMSK; /*!< (@ 0x50040814) Device OUT Endpoint Common Interrupt Mask Register */ - __I uint32_t DAINT; /*!< (@ 0x50040818) Device All Endpoints Interrupt Register */ - __IO uint32_t DAINTMSK; /*!< (@ 0x5004081C) Device All Endpoints Interrupt Mask Register */ - __I uint32_t RESERVED8[2]; - __IO uint32_t DVBUSDIS; /*!< (@ 0x50040828) Device VBUS Discharge Time Register */ - __IO uint32_t DVBUSPULSE; /*!< (@ 0x5004082C) Device VBUS Pulsing Time Register */ - __I uint32_t RESERVED9; - __IO uint32_t DIEPEMPMSK; /*!< (@ 0x50040834) Device IN Endpoint FIFO Empty Interrupt Mask - Register */ - __I uint32_t RESERVED10[370]; - __IO uint32_t PCGCCTL; /*!< (@ 0x50040E00) Power and Clock Gating Control Register */ -} USB0_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ USB0_EP0 ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Bus (USB0_EP0) - */ - -typedef struct { /*!< (@ 0x50040900) USB0_EP0 Structure */ - __IO uint32_t DIEPCTL0; /*!< (@ 0x50040900) Device Control IN Endpoint Control Register */ - __I uint32_t RESERVED; - __IO uint32_t DIEPINT0; /*!< (@ 0x50040908) Device Endpoint Interrupt Register */ - __I uint32_t RESERVED1; - __IO uint32_t DIEPTSIZ0; /*!< (@ 0x50040910) Device IN Endpoint Transfer Size Register */ - __IO uint32_t DIEPDMA0; /*!< (@ 0x50040914) Device Endpoint DMA Address Register */ - __I uint32_t DTXFSTS0; /*!< (@ 0x50040918) Device IN Endpoint Transmit FIFO Status Register */ - __I uint32_t DIEPDMAB0; /*!< (@ 0x5004091C) Device Endpoint DMA Buffer Address Register */ - __I uint32_t RESERVED2[120]; - __IO uint32_t DOEPCTL0; /*!< (@ 0x50040B00) Device Control OUT Endpoint Control Register */ - __I uint32_t RESERVED3; - __IO uint32_t DOEPINT0; /*!< (@ 0x50040B08) Device Endpoint Interrupt Register */ - __I uint32_t RESERVED4; - __IO uint32_t DOEPTSIZ0; /*!< (@ 0x50040B10) Device OUT Endpoint Transfer Size Register */ - __IO uint32_t DOEPDMA0; /*!< (@ 0x50040B14) Device Endpoint DMA Address Register */ - __I uint32_t RESERVED5; - __I uint32_t DOEPDMAB0; /*!< (@ 0x50040B1C) Device Endpoint DMA Buffer Address Register */ -} USB0_EP0_TypeDef; - -/* ================================================================================ */ -/* ================ USB_EP [USB0_EP1] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Bus (USB_EP) - */ - -typedef struct { /*!< (@ 0x50040920) USB_EP Structure */ - - union { - __IO uint32_t - DIEPCTL_INTBULK; /*!< (@ 0x50040920) Device Endpoint Control Register [INTBULK] */ - __IO uint32_t - DIEPCTL_ISOCONT; /*!< (@ 0x50040920) Device Endpoint Control Register [ISOCONT] */ - }; - - __I uint32_t RESERVED; - __IO uint32_t DIEPINT; /*!< (@ 0x50040928) Device Endpoint Interrupt Register */ - __I uint32_t RESERVED1; - __IO uint32_t DIEPTSIZ; /*!< (@ 0x50040930) Device Endpoint Transfer Size Register */ - __IO uint32_t DIEPDMA; /*!< (@ 0x50040934) Device Endpoint DMA Address Register */ - __I uint32_t DTXFSTS; /*!< (@ 0x50040938) Device IN Endpoint Transmit FIFO Status Register */ - __I uint32_t DIEPDMAB; /*!< (@ 0x5004093C) Device Endpoint DMA Buffer Address Register */ - __I uint32_t RESERVED2[120]; - - union { - __IO uint32_t - DOEPCTL_INTBULK; /*!< (@ 0x50040B20) Device Endpoint Control Register [INTBULK] */ - __IO uint32_t - DOEPCTL_ISOCONT; /*!< (@ 0x50040B20) Device Endpoint Control Register [ISOCONT] */ - }; - - __I uint32_t RESERVED3; - __IO uint32_t DOEPINT; /*!< (@ 0x50040B28) Device Endpoint Interrupt Register */ - __I uint32_t RESERVED4; - - union { - __IO uint32_t - DOEPTSIZ_CONTROL; /*!< (@ 0x50040B30) Device Endpoint Transfer Size Register [CONT] */ - __IO uint32_t - DOEPTSIZ_ISO; /*!< (@ 0x50040B30) Device Endpoint Transfer Size Register [ISO] */ - }; - - __IO uint32_t DOEPDMA; /*!< (@ 0x50040B34) Device Endpoint DMA Address Register */ - __I uint32_t RESERVED5; - __I uint32_t DOEPDMAB; /*!< (@ 0x50040B3C) Device Endpoint DMA Buffer Address Register */ -} USB0_EP_TypeDef; - -/* ================================================================================ */ -/* ================ USB_CH [USB0_CH0] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Bus (USB_CH) - */ - -typedef struct { /*!< (@ 0x50040500) USB_CH Structure */ - __IO uint32_t HCCHAR; /*!< (@ 0x50040500) Host Channel Characteristics Register */ - __I uint32_t RESERVED; - __IO uint32_t HCINT; /*!< (@ 0x50040508) Host Channel Interrupt Register */ - __IO uint32_t HCINTMSK; /*!< (@ 0x5004050C) Host Channel Interrupt Mask Register */ - - union { - __IO uint32_t HCTSIZ_SCATGATHER; /*!< (@ 0x50040510) Host Channel Transfer Size Register - [SCATGATHER] */ - __IO uint32_t HCTSIZ_BUFFERMODE; /*!< (@ 0x50040510) Host Channel Transfer Size Register - [BUFFERMODE] */ - }; - - union { - __IO uint32_t - HCDMA_SCATGATHER; /*!< (@ 0x50040514) Host Channel DMA Address Register [SCATGATHER] */ - __IO uint32_t - HCDMA_BUFFERMODE; /*!< (@ 0x50040514) Host Channel DMA Address Register [BUFFERMODE] */ - }; - - __I uint32_t RESERVED1; - __I uint32_t HCDMAB; /*!< (@ 0x5004051C) Host Channel DMA Buffer Address Register */ -} USB0_CH_TypeDef; - -/* ================================================================================ */ -/* ================ USIC [USIC0] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Interface Controller 0 (USIC) - */ - -typedef struct { /*!< (@ 0x40030008) USIC Structure */ - __I uint32_t ID; /*!< (@ 0x40030008) Module Identification Register */ -} USIC_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ USIC_CH [USIC0_CH0] ================ */ -/* ================================================================================ */ - -/** - * @brief Universal Serial Interface Controller 0 (USIC_CH) - */ - -typedef struct { /*!< (@ 0x40030000) USIC_CH Structure */ - __I uint32_t RESERVED; - __I uint32_t CCFG; /*!< (@ 0x40030004) Channel Configuration Register */ - __I uint32_t RESERVED1; - __IO uint32_t KSCFG; /*!< (@ 0x4003000C) Kernel State Configuration Register */ - __IO uint32_t FDR; /*!< (@ 0x40030010) Fractional Divider Register */ - __IO uint32_t BRG; /*!< (@ 0x40030014) Baud Rate Generator Register */ - __IO uint32_t INPR; /*!< (@ 0x40030018) Interrupt Node Pointer Register */ - __IO uint32_t DX0CR; /*!< (@ 0x4003001C) Input Control Register 0 */ - __IO uint32_t DX1CR; /*!< (@ 0x40030020) Input Control Register 1 */ - __IO uint32_t DX2CR; /*!< (@ 0x40030024) Input Control Register 2 */ - __IO uint32_t DX3CR; /*!< (@ 0x40030028) Input Control Register 3 */ - __IO uint32_t DX4CR; /*!< (@ 0x4003002C) Input Control Register 4 */ - __IO uint32_t DX5CR; /*!< (@ 0x40030030) Input Control Register 5 */ - __IO uint32_t SCTR; /*!< (@ 0x40030034) Shift Control Register */ - __IO uint32_t TCSR; /*!< (@ 0x40030038) Transmit Control/Status Register */ - - union { - __IO uint32_t PCR_IICMode; /*!< (@ 0x4003003C) Protocol Control Register [IIC Mode] */ - __IO uint32_t PCR_IISMode; /*!< (@ 0x4003003C) Protocol Control Register [IIS Mode] */ - __IO uint32_t PCR_SSCMode; /*!< (@ 0x4003003C) Protocol Control Register [SSC Mode] */ - __IO uint32_t PCR; /*!< (@ 0x4003003C) Protocol Control Register */ - __IO uint32_t PCR_ASCMode; /*!< (@ 0x4003003C) Protocol Control Register [ASC Mode] */ - }; - - __IO uint32_t CCR; /*!< (@ 0x40030040) Channel Control Register */ - __IO uint32_t CMTR; /*!< (@ 0x40030044) Capture Mode Timer Register */ - - union { - __IO uint32_t PSR_IICMode; /*!< (@ 0x40030048) Protocol Status Register [IIC Mode] */ - __IO uint32_t PSR_IISMode; /*!< (@ 0x40030048) Protocol Status Register [IIS Mode] */ - __IO uint32_t PSR_SSCMode; /*!< (@ 0x40030048) Protocol Status Register [SSC Mode] */ - __IO uint32_t PSR; /*!< (@ 0x40030048) Protocol Status Register */ - __IO uint32_t PSR_ASCMode; /*!< (@ 0x40030048) Protocol Status Register [ASC Mode] */ - }; - - __O uint32_t PSCR; /*!< (@ 0x4003004C) Protocol Status Clear Register */ - __I uint32_t RBUFSR; /*!< (@ 0x40030050) Receiver Buffer Status Register */ - __I uint32_t RBUF; /*!< (@ 0x40030054) Receiver Buffer Register */ - __I uint32_t RBUFD; /*!< (@ 0x40030058) Receiver Buffer Register for Debugger */ - __I uint32_t RBUF0; /*!< (@ 0x4003005C) Receiver Buffer Register 0 */ - __I uint32_t RBUF1; /*!< (@ 0x40030060) Receiver Buffer Register 1 */ - __I uint32_t RBUF01SR; /*!< (@ 0x40030064) Receiver Buffer 01 Status Register */ - __O uint32_t FMR; /*!< (@ 0x40030068) Flag Modification Register */ - __I uint32_t RESERVED2[5]; - __IO uint32_t TBUF[32]; /*!< (@ 0x40030080) Transmit Buffer */ - __IO uint32_t BYP; /*!< (@ 0x40030100) Bypass Data Register */ - __IO uint32_t BYPCR; /*!< (@ 0x40030104) Bypass Control Register */ - __IO uint32_t TBCTR; /*!< (@ 0x40030108) Transmitter Buffer Control Register */ - __IO uint32_t RBCTR; /*!< (@ 0x4003010C) Receiver Buffer Control Register */ - __I uint32_t TRBPTR; /*!< (@ 0x40030110) Transmit/Receive Buffer Pointer Register */ - __IO uint32_t TRBSR; /*!< (@ 0x40030114) Transmit/Receive Buffer Status Register */ - __O uint32_t TRBSCR; /*!< (@ 0x40030118) Transmit/Receive Buffer Status Clear Register */ - __I uint32_t OUTR; /*!< (@ 0x4003011C) Receiver Buffer Output Register */ - __I uint32_t OUTDR; /*!< (@ 0x40030120) Receiver Buffer Output Register L for Debugger */ - __I uint32_t RESERVED3[23]; - __O uint32_t IN[32]; /*!< (@ 0x40030180) Transmit FIFO Buffer */ -} USIC_CH_TypeDef; - -/* ================================================================================ */ -/* ================ CAN ================ */ -/* ================================================================================ */ - -/** - * @brief Controller Area Networks (CAN) - */ - -typedef struct { /*!< (@ 0x48014000) CAN Structure */ - __IO uint32_t CLC; /*!< (@ 0x48014000) CAN Clock Control Register */ - __I uint32_t RESERVED; - __I uint32_t ID; /*!< (@ 0x48014008) Module Identification Register */ - __IO uint32_t FDR; /*!< (@ 0x4801400C) CAN Fractional Divider Register */ - __I uint32_t RESERVED1[60]; - __I uint32_t LIST[8]; /*!< (@ 0x48014100) List Register */ - __I uint32_t RESERVED2[8]; - __IO uint32_t MSPND[8]; /*!< (@ 0x48014140) Message Pending Register */ - __I uint32_t RESERVED3[8]; - __I uint32_t MSID[8]; /*!< (@ 0x48014180) Message Index Register */ - __I uint32_t RESERVED4[8]; - __IO uint32_t MSIMASK; /*!< (@ 0x480141C0) Message Index Mask Register */ - __IO uint32_t PANCTR; /*!< (@ 0x480141C4) Panel Control Register */ - __IO uint32_t MCR; /*!< (@ 0x480141C8) Module Control Register */ - __O uint32_t MITR; /*!< (@ 0x480141CC) Module Interrupt Trigger Register */ -} CAN_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ CAN_NODE [CAN_NODE0] ================ */ -/* ================================================================================ */ - -/** - * @brief Controller Area Networks (CAN_NODE) - */ - -typedef struct { /*!< (@ 0x48014200) CAN_NODE Structure */ - __IO uint32_t NCR; /*!< (@ 0x48014200) Node Control Register */ - __IO uint32_t NSR; /*!< (@ 0x48014204) Node Status Register */ - __IO uint32_t NIPR; /*!< (@ 0x48014208) Node Interrupt Pointer Register */ - __IO uint32_t NPCR; /*!< (@ 0x4801420C) Node Port Control Register */ - __IO uint32_t NBTR; /*!< (@ 0x48014210) Node Bit Timing Register */ - __IO uint32_t NECNT; /*!< (@ 0x48014214) Node Error Counter Register */ - __IO uint32_t NFCR; /*!< (@ 0x48014218) Node Frame Counter Register */ -} CAN_NODE_TypeDef; - -/* ================================================================================ */ -/* ================ CAN_MO [CAN_MO0] ================ */ -/* ================================================================================ */ - -/** - * @brief Controller Area Networks (CAN_MO) - */ - -typedef struct { /*!< (@ 0x48015000) CAN_MO Structure */ - __IO uint32_t MOFCR; /*!< (@ 0x48015000) Message Object Function Control Register */ - __IO uint32_t MOFGPR; /*!< (@ 0x48015004) Message Object FIFO/Gateway Pointer Register */ - __IO uint32_t MOIPR; /*!< (@ 0x48015008) Message Object Interrupt Pointer Register */ - __IO uint32_t MOAMR; /*!< (@ 0x4801500C) Message Object Acceptance Mask Register */ - __IO uint32_t MODATAL; /*!< (@ 0x48015010) Message Object Data Register Low */ - __IO uint32_t MODATAH; /*!< (@ 0x48015014) Message Object Data Register High */ - __IO uint32_t MOAR; /*!< (@ 0x48015018) Message Object Arbitration Register */ - - union { - __I uint32_t MOSTAT; /*!< (@ 0x4801501C) Message Object Status Register */ - __O uint32_t MOCTR; /*!< (@ 0x4801501C) Message Object Control Register */ - }; -} CAN_MO_TypeDef; - -/* ================================================================================ */ -/* ================ VADC ================ */ -/* ================================================================================ */ - -/** - * @brief Analog to Digital Converter (VADC) - */ - -typedef struct { /*!< (@ 0x40004000) VADC Structure */ - __IO uint32_t CLC; /*!< (@ 0x40004000) Clock Control Register */ - __I uint32_t RESERVED; - __I uint32_t ID; /*!< (@ 0x40004008) Module Identification Register */ - __I uint32_t RESERVED1[7]; - __IO uint32_t OCS; /*!< (@ 0x40004028) OCDS Control and Status Register */ - __I uint32_t RESERVED2[21]; - __IO uint32_t GLOBCFG; /*!< (@ 0x40004080) Global Configuration Register */ - __I uint32_t RESERVED3[7]; - __IO uint32_t GLOBICLASS[2]; /*!< (@ 0x400040A0) Input Class Register, Global */ - __I uint32_t RESERVED4[4]; - __IO uint32_t GLOBBOUND; /*!< (@ 0x400040B8) Global Boundary Select Register */ - __I uint32_t RESERVED5[9]; - __IO uint32_t GLOBEFLAG; /*!< (@ 0x400040E0) Global Event Flag Register */ - __I uint32_t RESERVED6[23]; - __IO uint32_t GLOBEVNP; /*!< (@ 0x40004140) Global Event Node Pointer Register */ - __I uint32_t RESERVED7[7]; - __IO uint32_t GLOBTF; /*!< (@ 0x40004160) Global Test Functions Register */ - __I uint32_t RESERVED8[7]; - __IO uint32_t - BRSSEL[4]; /*!< (@ 0x40004180) Background Request Source Channel Select Register */ - __I uint32_t RESERVED9[12]; - __IO uint32_t BRSPND[4]; /*!< (@ 0x400041C0) Background Request Source Pending Register */ - __I uint32_t RESERVED10[12]; - __IO uint32_t BRSCTRL; /*!< (@ 0x40004200) Background Request Source Control Register */ - __IO uint32_t BRSMR; /*!< (@ 0x40004204) Background Request Source Mode Register */ - __I uint32_t RESERVED11[30]; - __IO uint32_t GLOBRCR; /*!< (@ 0x40004280) Global Result Control Register */ - __I uint32_t RESERVED12[31]; - __IO uint32_t GLOBRES; /*!< (@ 0x40004300) Global Result Register */ - __I uint32_t RESERVED13[31]; - __IO uint32_t GLOBRESD; /*!< (@ 0x40004380) Global Result Register, Debug */ - __I uint32_t RESERVED14[27]; - __IO uint32_t EMUXSEL; /*!< (@ 0x400043F0) External Multiplexer Select Register */ -} VADC_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ VADC_G [VADC_G0] ================ */ -/* ================================================================================ */ - -/** - * @brief Analog to Digital Converter (VADC_G) - */ - -typedef struct { /*!< (@ 0x40004400) VADC_G Structure */ - __I uint32_t RESERVED[32]; - __IO uint32_t ARBCFG; /*!< (@ 0x40004480) Arbitration Configuration Register */ - __IO uint32_t ARBPR; /*!< (@ 0x40004484) Arbitration Priority Register */ - __IO uint32_t CHASS; /*!< (@ 0x40004488) Channel Assignment Register */ - __I uint32_t RESERVED1[5]; - __IO uint32_t ICLASS[2]; /*!< (@ 0x400044A0) Input Class Register */ - __I uint32_t RESERVED2[2]; - __IO uint32_t ALIAS; /*!< (@ 0x400044B0) Alias Register */ - __I uint32_t RESERVED3; - __IO uint32_t BOUND; /*!< (@ 0x400044B8) Boundary Select Register */ - __I uint32_t RESERVED4; - __IO uint32_t SYNCTR; /*!< (@ 0x400044C0) Synchronization Control Register */ - __I uint32_t RESERVED5; - __IO uint32_t BFL; /*!< (@ 0x400044C8) Boundary Flag Register */ - __O uint32_t BFLS; /*!< (@ 0x400044CC) Boundary Flag Software Register */ - __IO uint32_t BFLC; /*!< (@ 0x400044D0) Boundary Flag Control Register */ - __IO uint32_t BFLNP; /*!< (@ 0x400044D4) Boundary Flag Node Pointer Register */ - __I uint32_t RESERVED6[10]; - __IO uint32_t QCTRL0; /*!< (@ 0x40004500) Queue 0 Source Control Register */ - __IO uint32_t QMR0; /*!< (@ 0x40004504) Queue 0 Mode Register */ - __I uint32_t QSR0; /*!< (@ 0x40004508) Queue 0 Status Register */ - __I uint32_t Q0R0; /*!< (@ 0x4000450C) Queue 0 Register 0 */ - - union { - __I uint32_t QBUR0; /*!< (@ 0x40004510) Queue 0 Backup Register */ - __O uint32_t QINR0; /*!< (@ 0x40004510) Queue 0 Input Register */ - }; - - __I uint32_t RESERVED7[3]; - __IO uint32_t ASCTRL; /*!< (@ 0x40004520) Autoscan Source Control Register */ - __IO uint32_t ASMR; /*!< (@ 0x40004524) Autoscan Source Mode Register */ - __IO uint32_t ASSEL; /*!< (@ 0x40004528) Autoscan Source Channel Select Register */ - __IO uint32_t ASPND; /*!< (@ 0x4000452C) Autoscan Source Pending Register */ - __I uint32_t RESERVED8[20]; - __IO uint32_t CEFLAG; /*!< (@ 0x40004580) Channel Event Flag Register */ - __IO uint32_t REFLAG; /*!< (@ 0x40004584) Result Event Flag Register */ - __IO uint32_t SEFLAG; /*!< (@ 0x40004588) Source Event Flag Register */ - __I uint32_t RESERVED9; - __O uint32_t CEFCLR; /*!< (@ 0x40004590) Channel Event Flag Clear Register */ - __O uint32_t REFCLR; /*!< (@ 0x40004594) Result Event Flag Clear Register */ - __O uint32_t SEFCLR; /*!< (@ 0x40004598) Source Event Flag Clear Register */ - __I uint32_t RESERVED10; - __IO uint32_t CEVNP0; /*!< (@ 0x400045A0) Channel Event Node Pointer Register 0 */ - __I uint32_t RESERVED11[3]; - __IO uint32_t REVNP0; /*!< (@ 0x400045B0) Result Event Node Pointer Register 0 */ - __IO uint32_t REVNP1; /*!< (@ 0x400045B4) Result Event Node Pointer Register 1 */ - __I uint32_t RESERVED12[2]; - __IO uint32_t SEVNP; /*!< (@ 0x400045C0) Source Event Node Pointer Register */ - __I uint32_t RESERVED13; - __O uint32_t SRACT; /*!< (@ 0x400045C8) Service Request Software Activation Trigger */ - __I uint32_t RESERVED14[9]; - __IO uint32_t EMUXCTR; /*!< (@ 0x400045F0) E0ternal Multiplexer Control Register */ - __I uint32_t RESERVED15; - __IO uint32_t VFR; /*!< (@ 0x400045F8) Valid Flag Register */ - __I uint32_t RESERVED16; - __IO uint32_t CHCTR[8]; /*!< (@ 0x40004600) Channel Ctrl. Reg. */ - __I uint32_t RESERVED17[24]; - __IO uint32_t RCR[16]; /*!< (@ 0x40004680) Result Control Register */ - __I uint32_t RESERVED18[16]; - __IO uint32_t RES[16]; /*!< (@ 0x40004700) Result Register */ - __I uint32_t RESERVED19[16]; - __I uint32_t RESD[16]; /*!< (@ 0x40004780) Result Register, Debug */ -} VADC_G_TypeDef; - -/* ================================================================================ */ -/* ================ DSD ================ */ -/* ================================================================================ */ - -/** - * @brief Delta Sigma Demodulator (DSD) - */ - -typedef struct { /*!< (@ 0x40008000) DSD Structure */ - __IO uint32_t CLC; /*!< (@ 0x40008000) Clock Control Register */ - __I uint32_t RESERVED; - __I uint32_t ID; /*!< (@ 0x40008008) Module Identification Register */ - __I uint32_t RESERVED1[7]; - __IO uint32_t OCS; /*!< (@ 0x40008028) OCDS Control and Status Register */ - __I uint32_t RESERVED2[21]; - __IO uint32_t GLOBCFG; /*!< (@ 0x40008080) Global Configuration Register */ - __I uint32_t RESERVED3; - __IO uint32_t GLOBRC; /*!< (@ 0x40008088) Global Run Control Register */ - __I uint32_t RESERVED4[5]; - __IO uint32_t CGCFG; /*!< (@ 0x400080A0) Carrier Generator Configuration Register */ - __I uint32_t RESERVED5[15]; - __IO uint32_t EVFLAG; /*!< (@ 0x400080E0) Event Flag Register */ - __O uint32_t EVFLAGCLR; /*!< (@ 0x400080E4) Event Flag Clear Register */ -} DSD_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ DSD_CH [DSD_CH0] ================ */ -/* ================================================================================ */ - -/** - * @brief Delta Sigma Demodulator (DSD_CH) - */ - -typedef struct { /*!< (@ 0x40008100) DSD_CH Structure */ - __IO uint32_t MODCFG; /*!< (@ 0x40008100) Modulator Configuration Register */ - __I uint32_t RESERVED; - __IO uint32_t DICFG; /*!< (@ 0x40008108) Demodulator Input Configuration Register */ - __I uint32_t RESERVED1[2]; - __IO uint32_t FCFGC; /*!< (@ 0x40008114) Filter Configuration Register, Main CIC Filter */ - __IO uint32_t FCFGA; /*!< (@ 0x40008118) Filter Configuration Register, Auxiliary Filter */ - __I uint32_t RESERVED2; - __IO uint32_t IWCTR; /*!< (@ 0x40008120) Integration Window Control Register */ - __I uint32_t RESERVED3; - __IO uint32_t BOUNDSEL; /*!< (@ 0x40008128) Boundary Select Register */ - __I uint32_t RESERVED4; - __I uint32_t RESM; /*!< (@ 0x40008130) Result Register, Main Filter */ - __I uint32_t RESERVED5; - __IO uint32_t OFFM; /*!< (@ 0x40008138) Offset Register, Main Filter */ - __I uint32_t RESERVED6; - __I uint32_t RESA; /*!< (@ 0x40008140) Result Register, Auxiliary Filter */ - __I uint32_t RESERVED7[3]; - __I uint32_t TSTMP; /*!< (@ 0x40008150) Time-Stamp Register */ - __I uint32_t RESERVED8[19]; - __IO uint32_t CGSYNC; /*!< (@ 0x400081A0) Carrier Generator Synchronization Register */ - __I uint32_t RESERVED9; - __IO uint32_t RECTCFG; /*!< (@ 0x400081A8) Rectification Configuration Register */ -} DSD_CH_TypeDef; - -/* ================================================================================ */ -/* ================ DAC ================ */ -/* ================================================================================ */ - -/** - * @brief Digital to Analog Converter (DAC) - */ - -typedef struct { /*!< (@ 0x48018000) DAC Structure */ - __I uint32_t ID; /*!< (@ 0x48018000) Module Identification Register */ - __IO uint32_t DAC0CFG0; /*!< (@ 0x48018004) DAC0 Configuration Register 0 */ - __IO uint32_t DAC0CFG1; /*!< (@ 0x48018008) DAC0 Configuration Register 1 */ - __IO uint32_t DAC1CFG0; /*!< (@ 0x4801800C) DAC1 Configuration Register 0 */ - __IO uint32_t DAC1CFG1; /*!< (@ 0x48018010) DAC1 Configuration Register 1 */ - __IO uint32_t DAC0DATA; /*!< (@ 0x48018014) DAC0 Data Register */ - __IO uint32_t DAC1DATA; /*!< (@ 0x48018018) DAC1 Data Register */ - __IO uint32_t DAC01DATA; /*!< (@ 0x4801801C) DAC01 Data Register */ - __IO uint32_t DAC0PATL; /*!< (@ 0x48018020) DAC0 Lower Pattern Register */ - __IO uint32_t DAC0PATH; /*!< (@ 0x48018024) DAC0 Higher Pattern Register */ - __IO uint32_t DAC1PATL; /*!< (@ 0x48018028) DAC1 Lower Pattern Register */ - __IO uint32_t DAC1PATH; /*!< (@ 0x4801802C) DAC1 Higher Pattern Register */ -} DAC_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ CCU4 [CCU40] ================ */ -/* ================================================================================ */ - -/** - * @brief Capture Compare Unit 4 - Unit 0 (CCU4) - */ - -typedef struct { /*!< (@ 0x4000C000) CCU4 Structure */ - __IO uint32_t GCTRL; /*!< (@ 0x4000C000) Global Control Register */ - __I uint32_t GSTAT; /*!< (@ 0x4000C004) Global Status Register */ - __O uint32_t GIDLS; /*!< (@ 0x4000C008) Global Idle Set */ - __O uint32_t GIDLC; /*!< (@ 0x4000C00C) Global Idle Clear */ - __O uint32_t GCSS; /*!< (@ 0x4000C010) Global Channel Set */ - __O uint32_t GCSC; /*!< (@ 0x4000C014) Global Channel Clear */ - __I uint32_t GCST; /*!< (@ 0x4000C018) Global Channel Status */ - __I uint32_t RESERVED[13]; - __I uint32_t ECRD; /*!< (@ 0x4000C050) Extended Capture Mode Read */ - __I uint32_t RESERVED1[11]; - __I uint32_t MIDR; /*!< (@ 0x4000C080) Module Identification */ -} CCU4_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ CCU4_CC4 [CCU40_CC40] ================ */ -/* ================================================================================ */ - -/** - * @brief Capture Compare Unit 4 - Unit 0 (CCU4_CC4) - */ - -typedef struct { /*!< (@ 0x4000C100) CCU4_CC4 Structure */ - __IO uint32_t INS; /*!< (@ 0x4000C100) Input Selector Configuration */ - __IO uint32_t CMC; /*!< (@ 0x4000C104) Connection Matrix Control */ - __I uint32_t TCST; /*!< (@ 0x4000C108) Slice Timer Status */ - __O uint32_t TCSET; /*!< (@ 0x4000C10C) Slice Timer Run Set */ - __O uint32_t TCCLR; /*!< (@ 0x4000C110) Slice Timer Clear */ - __IO uint32_t TC; /*!< (@ 0x4000C114) Slice Timer Control */ - __IO uint32_t PSL; /*!< (@ 0x4000C118) Passive Level Config */ - __I uint32_t DIT; /*!< (@ 0x4000C11C) Dither Config */ - __IO uint32_t DITS; /*!< (@ 0x4000C120) Dither Shadow Register */ - __IO uint32_t PSC; /*!< (@ 0x4000C124) Prescaler Control */ - __IO uint32_t FPC; /*!< (@ 0x4000C128) Floating Prescaler Control */ - __IO uint32_t FPCS; /*!< (@ 0x4000C12C) Floating Prescaler Shadow */ - __I uint32_t PR; /*!< (@ 0x4000C130) Timer Period Value */ - __IO uint32_t PRS; /*!< (@ 0x4000C134) Timer Shadow Period Value */ - __I uint32_t CR; /*!< (@ 0x4000C138) Timer Compare Value */ - __IO uint32_t CRS; /*!< (@ 0x4000C13C) Timer Shadow Compare Value */ - __I uint32_t RESERVED[12]; - __IO uint32_t TIMER; /*!< (@ 0x4000C170) Timer Value */ - __I uint32_t CV[4]; /*!< (@ 0x4000C174) Capture Register 0 */ - __I uint32_t RESERVED1[7]; - __I uint32_t INTS; /*!< (@ 0x4000C1A0) Interrupt Status */ - __IO uint32_t INTE; /*!< (@ 0x4000C1A4) Interrupt Enable Control */ - __IO uint32_t SRS; /*!< (@ 0x4000C1A8) Service Request Selector */ - __O uint32_t SWS; /*!< (@ 0x4000C1AC) Interrupt Status Set */ - __O uint32_t SWR; /*!< (@ 0x4000C1B0) Interrupt Status Clear */ -} CCU4_CC4_TypeDef; - -/* ================================================================================ */ -/* ================ CCU8 [CCU80] ================ */ -/* ================================================================================ */ - -/** - * @brief Capture Compare Unit 8 - Unit 0 (CCU8) - */ - -typedef struct { /*!< (@ 0x40020000) CCU8 Structure */ - __IO uint32_t GCTRL; /*!< (@ 0x40020000) Global Control Register */ - __I uint32_t GSTAT; /*!< (@ 0x40020004) Global Status Register */ - __O uint32_t GIDLS; /*!< (@ 0x40020008) Global Idle Set */ - __O uint32_t GIDLC; /*!< (@ 0x4002000C) Global Idle Clear */ - __O uint32_t GCSS; /*!< (@ 0x40020010) Global Channel Set */ - __O uint32_t GCSC; /*!< (@ 0x40020014) Global Channel Clear */ - __I uint32_t GCST; /*!< (@ 0x40020018) Global Channel status */ - __IO uint32_t GPCHK; /*!< (@ 0x4002001C) Parity Checker Configuration */ - __I uint32_t RESERVED[12]; - __I uint32_t ECRD; /*!< (@ 0x40020050) Extended Capture Mode Read */ - __I uint32_t RESERVED1[11]; - __I uint32_t MIDR; /*!< (@ 0x40020080) Module Identification */ -} CCU8_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ CCU8_CC8 [CCU80_CC80] ================ */ -/* ================================================================================ */ - -/** - * @brief Capture Compare Unit 8 - Unit 0 (CCU8_CC8) - */ - -typedef struct { /*!< (@ 0x40020100) CCU8_CC8 Structure */ - __IO uint32_t INS; /*!< (@ 0x40020100) Input Selector Configuration */ - __IO uint32_t CMC; /*!< (@ 0x40020104) Connection Matrix Control */ - __I uint32_t TCST; /*!< (@ 0x40020108) Slice Timer Status */ - __O uint32_t TCSET; /*!< (@ 0x4002010C) Slice Timer Run Set */ - __O uint32_t TCCLR; /*!< (@ 0x40020110) Slice Timer Clear */ - __IO uint32_t TC; /*!< (@ 0x40020114) Slice Timer Control */ - __IO uint32_t PSL; /*!< (@ 0x40020118) Passive Level Config */ - __I uint32_t DIT; /*!< (@ 0x4002011C) Dither Config */ - __IO uint32_t DITS; /*!< (@ 0x40020120) Dither Shadow Register */ - __IO uint32_t PSC; /*!< (@ 0x40020124) Prescaler Control */ - __IO uint32_t FPC; /*!< (@ 0x40020128) Floating Prescaler Control */ - __IO uint32_t FPCS; /*!< (@ 0x4002012C) Floating Prescaler Shadow */ - __I uint32_t PR; /*!< (@ 0x40020130) Timer Period Value */ - __IO uint32_t PRS; /*!< (@ 0x40020134) Timer Shadow Period Value */ - __I uint32_t CR1; /*!< (@ 0x40020138) Channel 1 Compare Value */ - __IO uint32_t CR1S; /*!< (@ 0x4002013C) Channel 1 Compare Shadow Value */ - __I uint32_t CR2; /*!< (@ 0x40020140) Channel 2 Compare Value */ - __IO uint32_t CR2S; /*!< (@ 0x40020144) Channel 2 Compare Shadow Value */ - __IO uint32_t CHC; /*!< (@ 0x40020148) Channel Control */ - __IO uint32_t DTC; /*!< (@ 0x4002014C) Dead Time Control */ - __IO uint32_t DC1R; /*!< (@ 0x40020150) Channel 1 Dead Time Values */ - __IO uint32_t DC2R; /*!< (@ 0x40020154) Channel 2 Dead Time Values */ - __I uint32_t RESERVED[6]; - __IO uint32_t TIMER; /*!< (@ 0x40020170) Timer Value */ - __I uint32_t CV[4]; /*!< (@ 0x40020174) Capture Register 0 */ - __I uint32_t RESERVED1[7]; - __I uint32_t INTS; /*!< (@ 0x400201A0) Interrupt Status */ - __IO uint32_t INTE; /*!< (@ 0x400201A4) Interrupt Enable Control */ - __IO uint32_t SRS; /*!< (@ 0x400201A8) Service Request Selector */ - __O uint32_t SWS; /*!< (@ 0x400201AC) Interrupt Status Set */ - __O uint32_t SWR; /*!< (@ 0x400201B0) Interrupt Status Clear */ - __IO uint32_t STC; /*!< (@ 0x400201B4) Shadow transfer control */ -} CCU8_CC8_TypeDef; - -/* ================================================================================ */ -/* ================ HRPWM0 ================ */ -/* ================================================================================ */ - -/** - * @brief High Resolution PWM Unit (HRPWM0) - */ - -typedef struct { /*!< (@ 0x40020900) HRPWM0 Structure */ - __IO uint32_t HRBSC; /*!< (@ 0x40020900) Bias and suspend configuration */ - __I uint32_t RESERVED; - __I uint32_t MIDR; /*!< (@ 0x40020908) Module identification register */ - __I uint32_t RESERVED1[2]; - __IO uint32_t GLBANA; /*!< (@ 0x40020914) Global Analog Configuration */ - __I uint32_t RESERVED2[2]; - __IO uint32_t CSGCFG; /*!< (@ 0x40020920) Global CSG configuration */ - __O uint32_t CSGSETG; /*!< (@ 0x40020924) Global CSG run bit set */ - __O uint32_t CSGCLRG; /*!< (@ 0x40020928) Global CSG run bit clear */ - __I uint32_t CSGSTATG; /*!< (@ 0x4002092C) Global CSG run bit status */ - __O uint32_t CSGFCG; /*!< (@ 0x40020930) Global CSG slope/prescaler control */ - __I uint32_t CSGFSG; /*!< (@ 0x40020934) Global CSG slope/prescaler status */ - __O uint32_t CSGTRG; /*!< (@ 0x40020938) Global CSG shadow/switch trigger */ - __O uint32_t CSGTRC; /*!< (@ 0x4002093C) Global CSG shadow trigger clear */ - __I uint32_t CSGTRSG; /*!< (@ 0x40020940) Global CSG shadow/switch status */ - __I uint32_t RESERVED3[7]; - __IO uint32_t HRCCFG; /*!< (@ 0x40020960) Global HRC configuration */ - __O uint32_t HRCSTRG; /*!< (@ 0x40020964) Global HRC shadow trigger set */ - __O uint32_t HRCCTRG; /*!< (@ 0x40020968) Global HRC shadow trigger clear */ - __I uint32_t HRCSTSG; /*!< (@ 0x4002096C) Global HRC shadow transfer status */ - __I uint32_t HRGHRS; /*!< (@ 0x40020970) High Resolution Generation Status */ -} HRPWM0_Type; - -/* ================================================================================ */ -/* ================ HRPWM0_CSG [HRPWM0_CSG0] ================ */ -/* ================================================================================ */ - -/** - * @brief High Resolution PWM Unit (HRPWM0_CSG) - */ - -typedef struct { /*!< (@ 0x40020A00) HRPWM0_CSG Structure */ - __IO uint32_t DCI; /*!< (@ 0x40020A00) External input selection */ - __IO uint32_t IES; /*!< (@ 0x40020A04) External input selection */ - __IO uint32_t SC; /*!< (@ 0x40020A08) Slope generation control */ - __I uint32_t PC; /*!< (@ 0x40020A0C) Pulse swallow configuration */ - __I uint32_t DSV1; /*!< (@ 0x40020A10) DAC reference value 1 */ - __IO uint32_t DSV2; /*!< (@ 0x40020A14) DAC reference value 1 */ - __IO uint32_t SDSV1; /*!< (@ 0x40020A18) Shadow reference value 1 */ - __IO uint32_t SPC; /*!< (@ 0x40020A1C) Shadow Pulse swallow value */ - __IO uint32_t CC; /*!< (@ 0x40020A20) Comparator configuration */ - __IO uint32_t PLC; /*!< (@ 0x40020A24) Passive level configuration */ - __IO uint32_t BLV; /*!< (@ 0x40020A28) Comparator blanking value */ - __IO uint32_t SRE; /*!< (@ 0x40020A2C) Service request enable */ - __IO uint32_t SRS; /*!< (@ 0x40020A30) Service request line selector */ - __O uint32_t SWS; /*!< (@ 0x40020A34) Service request SW set */ - __O uint32_t SWC; /*!< (@ 0x40020A38) Service request SW clear */ - __I uint32_t ISTAT; /*!< (@ 0x40020A3C) Service request status */ -} HRPWM0_CSG_Type; - -/* ================================================================================ */ -/* ================ HRPWM0_HRC [HRPWM0_HRC0] ================ */ -/* ================================================================================ */ - -/** - * @brief High Resolution PWM Unit (HRPWM0_HRC) - */ - -typedef struct { /*!< (@ 0x40021300) HRPWM0_HRC Structure */ - __IO uint32_t GC; /*!< (@ 0x40021300) HRC mode configuration */ - __IO uint32_t PL; /*!< (@ 0x40021304) HRC output passive level */ - __IO uint32_t GSEL; /*!< (@ 0x40021308) HRC global control selection */ - __IO uint32_t TSEL; /*!< (@ 0x4002130C) HRC timer selection */ - __I uint32_t SC; /*!< (@ 0x40021310) HRC current source for shadow */ - __I uint32_t DCR; /*!< (@ 0x40021314) HRC dead time rising value */ - __I uint32_t DCF; /*!< (@ 0x40021318) HRC dead time falling value */ - __I uint32_t CR1; /*!< (@ 0x4002131C) HRC rising edge value */ - __I uint32_t CR2; /*!< (@ 0x40021320) HRC falling edge value */ - __IO uint32_t SSC; /*!< (@ 0x40021324) HRC next source for shadow */ - __IO uint32_t SDCR; /*!< (@ 0x40021328) HRC shadow dead time rising */ - __IO uint32_t SDCF; /*!< (@ 0x4002132C) HRC shadow dead time falling */ - __IO uint32_t SCR1; /*!< (@ 0x40021330) HRC shadow rising edge value */ - __IO uint32_t SCR2; /*!< (@ 0x40021334) HRC shadow falling edge value */ -} HRPWM0_HRC_Type; - -/* ================================================================================ */ -/* ================ POSIF [POSIF0] ================ */ -/* ================================================================================ */ - -/** - * @brief Position Interface 0 (POSIF) - */ - -typedef struct { /*!< (@ 0x40028000) POSIF Structure */ - __IO uint32_t PCONF; /*!< (@ 0x40028000) Service Request Processing configuration */ - __IO uint32_t PSUS; /*!< (@ 0x40028004) Service Request Processing Suspend Config */ - __O uint32_t PRUNS; /*!< (@ 0x40028008) Service Request Processing Run Bit Set */ - __O uint32_t PRUNC; /*!< (@ 0x4002800C) Service Request Processing Run Bit Clear */ - __I uint32_t PRUN; /*!< (@ 0x40028010) Service Request Processing Run Bit Status */ - __I uint32_t RESERVED[3]; - __I uint32_t MIDR; /*!< (@ 0x40028020) Module Identification register */ - __I uint32_t RESERVED1[3]; - __I uint32_t HALP; /*!< (@ 0x40028030) Hall Sensor Patterns */ - __IO uint32_t HALPS; /*!< (@ 0x40028034) Hall Sensor Shadow Patterns */ - __I uint32_t RESERVED2[2]; - __I uint32_t MCM; /*!< (@ 0x40028040) Multi-Channel Pattern */ - __IO uint32_t MCSM; /*!< (@ 0x40028044) Multi-Channel Shadow Pattern */ - __O uint32_t MCMS; /*!< (@ 0x40028048) Multi-Channel Pattern Control set */ - __O uint32_t MCMC; /*!< (@ 0x4002804C) Multi-Channel Pattern Control clear */ - __I uint32_t MCMF; /*!< (@ 0x40028050) Multi-Channel Pattern Control flag */ - __I uint32_t RESERVED3[3]; - __IO uint32_t QDC; /*!< (@ 0x40028060) Quadrature Decoder Control */ - __I uint32_t RESERVED4[3]; - __I uint32_t PFLG; /*!< (@ 0x40028070) Service Request Processing Interrupt Flags */ - __IO uint32_t PFLGE; /*!< (@ 0x40028074) Service Request Processing Interrupt Enable */ - __O uint32_t SPFLG; /*!< (@ 0x40028078) Service Request Processing Interrupt Set */ - __O uint32_t RPFLG; /*!< (@ 0x4002807C) Service Request Processing Interrupt Clear */ - __I uint32_t RESERVED5[32]; - __I uint32_t PDBG; /*!< (@ 0x40028100) POSIF Debug register */ -} POSIF_GLOBAL_TypeDef; - -/* ================================================================================ */ -/* ================ PORT0 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 0 (PORT0) - */ - -typedef struct { /*!< (@ 0x48028000) PORT0 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028000) Port 0 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028004) Port 0 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028010) Port 0 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028014) Port 0 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028018) Port 0 Input/Output Control Register 8 */ - __IO uint32_t IOCR12; /*!< (@ 0x4802801C) Port 0 Input/Output Control Register 12 */ - __I uint32_t RESERVED1; - __I uint32_t IN; /*!< (@ 0x48028024) Port 0 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028040) Port 0 Pad Driver Mode 0 Register */ - __IO uint32_t PDR1; /*!< (@ 0x48028044) Port 0 Pad Driver Mode 1 Register */ - __I uint32_t RESERVED3[6]; - __I uint32_t PDISC; /*!< (@ 0x48028060) Port 0 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028070) Port 0 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028074) Port 0 Pin Hardware Select Register */ -} PORT0_Type; - -/* ================================================================================ */ -/* ================ PORT1 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 1 (PORT1) - */ - -typedef struct { /*!< (@ 0x48028100) PORT1 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028100) Port 1 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028104) Port 1 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028110) Port 1 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028114) Port 1 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028118) Port 1 Input/Output Control Register 8 */ - __IO uint32_t IOCR12; /*!< (@ 0x4802811C) Port 1 Input/Output Control Register 12 */ - __I uint32_t RESERVED1; - __I uint32_t IN; /*!< (@ 0x48028124) Port 1 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028140) Port 1 Pad Driver Mode 0 Register */ - __IO uint32_t PDR1; /*!< (@ 0x48028144) Port 1 Pad Driver Mode 1 Register */ - __I uint32_t RESERVED3[6]; - __I uint32_t PDISC; /*!< (@ 0x48028160) Port 1 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028170) Port 1 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028174) Port 1 Pin Hardware Select Register */ -} PORT1_Type; - -/* ================================================================================ */ -/* ================ PORT2 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 2 (PORT2) - */ - -typedef struct { /*!< (@ 0x48028200) PORT2 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028200) Port 2 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028204) Port 2 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028210) Port 2 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028214) Port 2 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028218) Port 2 Input/Output Control Register 8 */ - __IO uint32_t IOCR12; /*!< (@ 0x4802821C) Port 2 Input/Output Control Register 12 */ - __I uint32_t RESERVED1; - __I uint32_t IN; /*!< (@ 0x48028224) Port 2 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028240) Port 2 Pad Driver Mode 0 Register */ - __IO uint32_t PDR1; /*!< (@ 0x48028244) Port 2 Pad Driver Mode 1 Register */ - __I uint32_t RESERVED3[6]; - __I uint32_t PDISC; /*!< (@ 0x48028260) Port 2 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028270) Port 2 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028274) Port 2 Pin Hardware Select Register */ -} PORT2_Type; - -/* ================================================================================ */ -/* ================ PORT3 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 3 (PORT3) - */ - -typedef struct { /*!< (@ 0x48028300) PORT3 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028300) Port 3 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028304) Port 3 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028310) Port 3 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028314) Port 3 Input/Output Control Register 4 */ - __I uint32_t RESERVED1[3]; - __I uint32_t IN; /*!< (@ 0x48028324) Port 3 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028340) Port 3 Pad Driver Mode 0 Register */ - __I uint32_t RESERVED3[7]; - __I uint32_t PDISC; /*!< (@ 0x48028360) Port 3 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028370) Port 3 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028374) Port 3 Pin Hardware Select Register */ -} PORT3_Type; - -/* ================================================================================ */ -/* ================ PORT4 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 4 (PORT4) - */ - -typedef struct { /*!< (@ 0x48028400) PORT4 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028400) Port 4 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028404) Port 4 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028410) Port 4 Input/Output Control Register 0 */ - __I uint32_t RESERVED1[4]; - __I uint32_t IN; /*!< (@ 0x48028424) Port 4 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028440) Port 4 Pad Driver Mode 0 Register */ - __I uint32_t RESERVED3[7]; - __I uint32_t PDISC; /*!< (@ 0x48028460) Port 4 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028470) Port 4 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028474) Port 4 Pin Hardware Select Register */ -} PORT4_Type; - -/* ================================================================================ */ -/* ================ PORT5 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 5 (PORT5) - */ - -typedef struct { /*!< (@ 0x48028500) PORT5 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028500) Port 5 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028504) Port 5 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028510) Port 5 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028514) Port 5 Input/Output Control Register 4 */ - __I uint32_t RESERVED1[3]; - __I uint32_t IN; /*!< (@ 0x48028524) Port 5 Input Register */ - __I uint32_t RESERVED2[6]; - __IO uint32_t PDR0; /*!< (@ 0x48028540) Port 5 Pad Driver Mode 0 Register */ - __I uint32_t RESERVED3[7]; - __I uint32_t PDISC; /*!< (@ 0x48028560) Port 5 Pin Function Decision Control Register */ - __I uint32_t RESERVED4[3]; - __IO uint32_t PPS; /*!< (@ 0x48028570) Port 5 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028574) Port 5 Pin Hardware Select Register */ -} PORT5_Type; - -/* ================================================================================ */ -/* ================ PORT14 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 14 (PORT14) - */ - -typedef struct { /*!< (@ 0x48028E00) PORT14 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028E00) Port 14 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028E04) Port 14 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028E10) Port 14 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028E14) Port 14 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028E18) Port 14 Input/Output Control Register 8 */ - __IO uint32_t IOCR12; /*!< (@ 0x48028E1C) Port 14 Input/Output Control Register 12 */ - __I uint32_t RESERVED1; - __I uint32_t IN; /*!< (@ 0x48028E24) Port 14 Input Register */ - __I uint32_t RESERVED2[14]; - __IO uint32_t PDISC; /*!< (@ 0x48028E60) Port 14 Pin Function Decision Control Register */ - __I uint32_t RESERVED3[3]; - __IO uint32_t PPS; /*!< (@ 0x48028E70) Port 14 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028E74) Port 14 Pin Hardware Select Register */ -} PORT14_Type; - -/* ================================================================================ */ -/* ================ PORT15 ================ */ -/* ================================================================================ */ - -/** - * @brief Port 15 (PORT15) - */ - -typedef struct { /*!< (@ 0x48028F00) PORT15 Structure */ - __IO uint32_t OUT; /*!< (@ 0x48028F00) Port 15 Output Register */ - __O uint32_t OMR; /*!< (@ 0x48028F04) Port 15 Output Modification Register */ - __I uint32_t RESERVED[2]; - __IO uint32_t IOCR0; /*!< (@ 0x48028F10) Port 15 Input/Output Control Register 0 */ - __IO uint32_t IOCR4; /*!< (@ 0x48028F14) Port 15 Input/Output Control Register 4 */ - __IO uint32_t IOCR8; /*!< (@ 0x48028F18) Port 15 Input/Output Control Register 8 */ - __I uint32_t RESERVED1[2]; - __I uint32_t IN; /*!< (@ 0x48028F24) Port 15 Input Register */ - __I uint32_t RESERVED2[14]; - __IO uint32_t PDISC; /*!< (@ 0x48028F60) Port 15 Pin Function Decision Control Register */ - __I uint32_t RESERVED3[3]; - __IO uint32_t PPS; /*!< (@ 0x48028F70) Port 15 Pin Power Save Register */ - __IO uint32_t HWSEL; /*!< (@ 0x48028F74) Port 15 Pin Hardware Select Register */ -} PORT15_Type; - -/* -------------------- End of section using anonymous unions ------------------- */ -#if defined(__CC_ARM) - #pragma pop -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang diagnostic pop -#elif defined(__ICCARM__) - /* leave anonymous unions enabled */ -#elif defined(__GNUC__) - /* anonymous unions are enabled by default */ -#elif defined(__TMS470__) - /* anonymous unions are enabled by default */ -#elif defined(__TASKING__) - #pragma warning restore -#else - #warning Not supported compiler type -#endif - -/* ================================================================================ */ -/* ================ struct 'PPB' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PPB_ACTLR --------------------------------- */ -#define PPB_ACTLR_DISMCYCINT_Pos \ - (0UL) /*!< PPB ACTLR: DISMCYCINT (Bit 0) */ -#define PPB_ACTLR_DISMCYCINT_Msk \ - (0x1UL) /*!< PPB ACTLR: DISMCYCINT (Bitfield-Mask: 0x01) */ -#define PPB_ACTLR_DISDEFWBUF_Pos \ - (1UL) /*!< PPB ACTLR: DISDEFWBUF (Bit 1) */ -#define PPB_ACTLR_DISDEFWBUF_Msk \ - (0x2UL) /*!< PPB ACTLR: DISDEFWBUF (Bitfield-Mask: 0x01) */ -#define PPB_ACTLR_DISFOLD_Pos \ - (2UL) /*!< PPB ACTLR: DISFOLD (Bit 2) */ -#define PPB_ACTLR_DISFOLD_Msk \ - (0x4UL) /*!< PPB ACTLR: DISFOLD (Bitfield-Mask: 0x01) */ -#define PPB_ACTLR_DISFPCA_Pos \ - (8UL) /*!< PPB ACTLR: DISFPCA (Bit 8) */ -#define PPB_ACTLR_DISFPCA_Msk \ - (0x100UL) /*!< PPB ACTLR: DISFPCA (Bitfield-Mask: 0x01) */ -#define PPB_ACTLR_DISOOFP_Pos \ - (9UL) /*!< PPB ACTLR: DISOOFP (Bit 9) */ -#define PPB_ACTLR_DISOOFP_Msk \ - (0x200UL) /*!< PPB ACTLR: DISOOFP (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PPB_SYST_CSR -------------------------------- */ -#define PPB_SYST_CSR_ENABLE_Pos \ - (0UL) /*!< PPB SYST_CSR: ENABLE (Bit 0) */ -#define PPB_SYST_CSR_ENABLE_Msk \ - (0x1UL) /*!< PPB SYST_CSR: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_SYST_CSR_TICKINT_Pos \ - (1UL) /*!< PPB SYST_CSR: TICKINT (Bit 1) */ -#define PPB_SYST_CSR_TICKINT_Msk \ - (0x2UL) /*!< PPB SYST_CSR: TICKINT (Bitfield-Mask: 0x01) */ -#define PPB_SYST_CSR_CLKSOURCE_Pos \ - (2UL) /*!< PPB SYST_CSR: CLKSOURCE (Bit 2) */ -#define PPB_SYST_CSR_CLKSOURCE_Msk \ - (0x4UL) /*!< PPB SYST_CSR: CLKSOURCE (Bitfield-Mask: 0x01) */ -#define PPB_SYST_CSR_COUNTFLAG_Pos \ - (16UL) /*!< PPB SYST_CSR: COUNTFLAG (Bit 16) */ -#define PPB_SYST_CSR_COUNTFLAG_Msk \ - (0x10000UL) /*!< PPB SYST_CSR: COUNTFLAG (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PPB_SYST_RVR -------------------------------- */ -#define PPB_SYST_RVR_RELOAD_Pos \ - (0UL) /*!< PPB SYST_RVR: RELOAD (Bit 0) */ -#define PPB_SYST_RVR_RELOAD_Msk \ - (0xffffffUL) /*!< PPB SYST_RVR: RELOAD (Bitfield-Mask: 0xffffff) */ - -/* -------------------------------- PPB_SYST_CVR -------------------------------- */ -#define PPB_SYST_CVR_CURRENT_Pos \ - (0UL) /*!< PPB SYST_CVR: CURRENT (Bit 0) */ -#define PPB_SYST_CVR_CURRENT_Msk \ - (0xffffffUL) /*!< PPB SYST_CVR: CURRENT (Bitfield-Mask: 0xffffff) */ - -/* ------------------------------- PPB_SYST_CALIB ------------------------------- */ -#define PPB_SYST_CALIB_TENMS_Pos \ - (0UL) /*!< PPB SYST_CALIB: TENMS (Bit 0) */ -#define PPB_SYST_CALIB_TENMS_Msk \ - (0xffffffUL) /*!< PPB SYST_CALIB: TENMS (Bitfield-Mask: 0xffffff) */ -#define PPB_SYST_CALIB_SKEW_Pos \ - (30UL) /*!< PPB SYST_CALIB: SKEW (Bit 30) */ -#define PPB_SYST_CALIB_SKEW_Msk \ - (0x40000000UL) /*!< PPB SYST_CALIB: SKEW (Bitfield-Mask: 0x01) */ -#define PPB_SYST_CALIB_NOREF_Pos \ - (31UL) /*!< PPB SYST_CALIB: NOREF (Bit 31) */ -#define PPB_SYST_CALIB_NOREF_Msk \ - (0x80000000UL) /*!< PPB SYST_CALIB: NOREF (Bitfield-Mask: 0x01) */ - -/* ------------------------------- PPB_NVIC_ISER0 ------------------------------- */ -#define PPB_NVIC_ISER0_SETENA_Pos \ - (0UL) /*!< PPB NVIC_ISER0: SETENA (Bit 0) */ -#define PPB_NVIC_ISER0_SETENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISER0: SETENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISER1 ------------------------------- */ -#define PPB_NVIC_ISER1_SETENA_Pos \ - (0UL) /*!< PPB NVIC_ISER1: SETENA (Bit 0) */ -#define PPB_NVIC_ISER1_SETENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISER1: SETENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISER2 ------------------------------- */ -#define PPB_NVIC_ISER2_SETENA_Pos \ - (0UL) /*!< PPB NVIC_ISER2: SETENA (Bit 0) */ -#define PPB_NVIC_ISER2_SETENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISER2: SETENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISER3 ------------------------------- */ -#define PPB_NVIC_ISER3_SETENA_Pos \ - (0UL) /*!< PPB NVIC_ISER3: SETENA (Bit 0) */ -#define PPB_NVIC_ISER3_SETENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISER3: SETENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICER0 ------------------------------- */ -#define PPB_NVIC_ICER0_CLRENA_Pos \ - (0UL) /*!< PPB NVIC_ICER0: CLRENA (Bit 0) */ -#define PPB_NVIC_ICER0_CLRENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICER0: CLRENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICER1 ------------------------------- */ -#define PPB_NVIC_ICER1_CLRENA_Pos \ - (0UL) /*!< PPB NVIC_ICER1: CLRENA (Bit 0) */ -#define PPB_NVIC_ICER1_CLRENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICER1: CLRENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICER2 ------------------------------- */ -#define PPB_NVIC_ICER2_CLRENA_Pos \ - (0UL) /*!< PPB NVIC_ICER2: CLRENA (Bit 0) */ -#define PPB_NVIC_ICER2_CLRENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICER2: CLRENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICER3 ------------------------------- */ -#define PPB_NVIC_ICER3_CLRENA_Pos \ - (0UL) /*!< PPB NVIC_ICER3: CLRENA (Bit 0) */ -#define PPB_NVIC_ICER3_CLRENA_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICER3: CLRENA (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISPR0 ------------------------------- */ -#define PPB_NVIC_ISPR0_SETPEND_Pos \ - (0UL) /*!< PPB NVIC_ISPR0: SETPEND (Bit 0) */ -#define PPB_NVIC_ISPR0_SETPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISPR0: SETPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISPR1 ------------------------------- */ -#define PPB_NVIC_ISPR1_SETPEND_Pos \ - (0UL) /*!< PPB NVIC_ISPR1: SETPEND (Bit 0) */ -#define PPB_NVIC_ISPR1_SETPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISPR1: SETPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISPR2 ------------------------------- */ -#define PPB_NVIC_ISPR2_SETPEND_Pos \ - (0UL) /*!< PPB NVIC_ISPR2: SETPEND (Bit 0) */ -#define PPB_NVIC_ISPR2_SETPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISPR2: SETPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ISPR3 ------------------------------- */ -#define PPB_NVIC_ISPR3_SETPEND_Pos \ - (0UL) /*!< PPB NVIC_ISPR3: SETPEND (Bit 0) */ -#define PPB_NVIC_ISPR3_SETPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ISPR3: SETPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICPR0 ------------------------------- */ -#define PPB_NVIC_ICPR0_CLRPEND_Pos \ - (0UL) /*!< PPB NVIC_ICPR0: CLRPEND (Bit 0) */ -#define PPB_NVIC_ICPR0_CLRPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICPR0: CLRPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICPR1 ------------------------------- */ -#define PPB_NVIC_ICPR1_CLRPEND_Pos \ - (0UL) /*!< PPB NVIC_ICPR1: CLRPEND (Bit 0) */ -#define PPB_NVIC_ICPR1_CLRPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICPR1: CLRPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICPR2 ------------------------------- */ -#define PPB_NVIC_ICPR2_CLRPEND_Pos \ - (0UL) /*!< PPB NVIC_ICPR2: CLRPEND (Bit 0) */ -#define PPB_NVIC_ICPR2_CLRPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICPR2: CLRPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_ICPR3 ------------------------------- */ -#define PPB_NVIC_ICPR3_CLRPEND_Pos \ - (0UL) /*!< PPB NVIC_ICPR3: CLRPEND (Bit 0) */ -#define PPB_NVIC_ICPR3_CLRPEND_Msk \ - (0xffffffffUL) /*!< PPB NVIC_ICPR3: CLRPEND (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_IABR0 ------------------------------- */ -#define PPB_NVIC_IABR0_ACTIVE_Pos \ - (0UL) /*!< PPB NVIC_IABR0: ACTIVE (Bit 0) */ -#define PPB_NVIC_IABR0_ACTIVE_Msk \ - (0xffffffffUL) /*!< PPB NVIC_IABR0: ACTIVE (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_IABR1 ------------------------------- */ -#define PPB_NVIC_IABR1_ACTIVE_Pos \ - (0UL) /*!< PPB NVIC_IABR1: ACTIVE (Bit 0) */ -#define PPB_NVIC_IABR1_ACTIVE_Msk \ - (0xffffffffUL) /*!< PPB NVIC_IABR1: ACTIVE (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_IABR2 ------------------------------- */ -#define PPB_NVIC_IABR2_ACTIVE_Pos \ - (0UL) /*!< PPB NVIC_IABR2: ACTIVE (Bit 0) */ -#define PPB_NVIC_IABR2_ACTIVE_Msk \ - (0xffffffffUL) /*!< PPB NVIC_IABR2: ACTIVE (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- PPB_NVIC_IABR3 ------------------------------- */ -#define PPB_NVIC_IABR3_ACTIVE_Pos \ - (0UL) /*!< PPB NVIC_IABR3: ACTIVE (Bit 0) */ -#define PPB_NVIC_IABR3_ACTIVE_Msk \ - (0xffffffffUL) /*!< PPB NVIC_IABR3: ACTIVE (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------------- PPB_NVIC_IPR0 ------------------------------- */ -#define PPB_NVIC_IPR0_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR0: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR0_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR0: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR0_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR0: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR0_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR0: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR0_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR0: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR0_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR0: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR0_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR0: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR0_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR0: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR1 ------------------------------- */ -#define PPB_NVIC_IPR1_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR1: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR1_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR1: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR1_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR1: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR1_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR1: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR1_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR1: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR1_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR1: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR1_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR1: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR1_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR1: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR2 ------------------------------- */ -#define PPB_NVIC_IPR2_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR2: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR2_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR2: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR2_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR2: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR2_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR2: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR2_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR2: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR2_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR2: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR2_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR2: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR2_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR2: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR3 ------------------------------- */ -#define PPB_NVIC_IPR3_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR3: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR3_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR3: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR3_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR3: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR3_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR3: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR3_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR3: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR3_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR3: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR3_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR3: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR3_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR3: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR4 ------------------------------- */ -#define PPB_NVIC_IPR4_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR4: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR4_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR4: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR4_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR4: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR4_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR4: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR4_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR4: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR4_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR4: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR4_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR4: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR4_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR4: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR5 ------------------------------- */ -#define PPB_NVIC_IPR5_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR5: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR5_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR5: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR5_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR5: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR5_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR5: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR5_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR5: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR5_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR5: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR5_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR5: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR5_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR5: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR6 ------------------------------- */ -#define PPB_NVIC_IPR6_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR6: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR6_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR6: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR6_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR6: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR6_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR6: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR6_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR6: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR6_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR6: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR6_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR6: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR6_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR6: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR7 ------------------------------- */ -#define PPB_NVIC_IPR7_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR7: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR7_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR7: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR7_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR7: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR7_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR7: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR7_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR7: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR7_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR7: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR7_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR7: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR7_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR7: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR8 ------------------------------- */ -#define PPB_NVIC_IPR8_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR8: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR8_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR8: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR8_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR8: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR8_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR8: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR8_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR8: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR8_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR8: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR8_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR8: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR8_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR8: PRI_3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_NVIC_IPR9 ------------------------------- */ -#define PPB_NVIC_IPR9_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR9: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR9_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR9: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR9_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR9: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR9_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR9: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR9_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR9: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR9_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR9: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR9_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR9: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR9_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR9: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR10 ------------------------------- */ -#define PPB_NVIC_IPR10_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR10: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR10_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR10: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR10_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR10: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR10_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR10: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR10_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR10: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR10_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR10: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR10_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR10: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR10_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR10: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR11 ------------------------------- */ -#define PPB_NVIC_IPR11_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR11: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR11_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR11: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR11_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR11: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR11_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR11: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR11_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR11: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR11_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR11: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR11_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR11: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR11_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR11: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR12 ------------------------------- */ -#define PPB_NVIC_IPR12_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR12: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR12_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR12: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR12_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR12: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR12_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR12: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR12_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR12: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR12_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR12: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR12_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR12: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR12_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR12: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR13 ------------------------------- */ -#define PPB_NVIC_IPR13_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR13: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR13_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR13: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR13_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR13: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR13_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR13: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR13_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR13: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR13_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR13: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR13_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR13: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR13_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR13: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR14 ------------------------------- */ -#define PPB_NVIC_IPR14_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR14: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR14_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR14: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR14_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR14: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR14_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR14: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR14_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR14: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR14_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR14: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR14_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR14: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR14_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR14: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR15 ------------------------------- */ -#define PPB_NVIC_IPR15_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR15: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR15_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR15: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR15_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR15: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR15_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR15: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR15_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR15: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR15_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR15: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR15_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR15: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR15_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR15: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR16 ------------------------------- */ -#define PPB_NVIC_IPR16_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR16: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR16_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR16: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR16_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR16: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR16_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR16: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR16_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR16: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR16_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR16: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR16_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR16: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR16_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR16: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR17 ------------------------------- */ -#define PPB_NVIC_IPR17_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR17: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR17_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR17: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR17_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR17: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR17_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR17: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR17_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR17: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR17_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR17: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR17_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR17: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR17_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR17: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR18 ------------------------------- */ -#define PPB_NVIC_IPR18_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR18: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR18_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR18: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR18_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR18: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR18_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR18: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR18_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR18: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR18_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR18: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR18_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR18: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR18_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR18: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR19 ------------------------------- */ -#define PPB_NVIC_IPR19_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR19: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR19_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR19: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR19_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR19: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR19_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR19: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR19_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR19: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR19_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR19: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR19_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR19: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR19_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR19: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR20 ------------------------------- */ -#define PPB_NVIC_IPR20_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR20: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR20_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR20: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR20_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR20: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR20_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR20: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR20_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR20: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR20_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR20: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR20_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR20: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR20_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR20: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR21 ------------------------------- */ -#define PPB_NVIC_IPR21_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR21: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR21_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR21: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR21_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR21: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR21_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR21: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR21_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR21: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR21_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR21: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR21_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR21: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR21_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR21: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR22 ------------------------------- */ -#define PPB_NVIC_IPR22_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR22: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR22_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR22: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR22_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR22: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR22_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR22: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR22_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR22: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR22_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR22: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR22_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR22: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR22_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR22: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR23 ------------------------------- */ -#define PPB_NVIC_IPR23_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR23: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR23_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR23: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR23_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR23: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR23_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR23: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR23_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR23: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR23_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR23: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR23_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR23: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR23_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR23: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR24 ------------------------------- */ -#define PPB_NVIC_IPR24_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR24: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR24_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR24: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR24_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR24: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR24_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR24: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR24_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR24: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR24_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR24: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR24_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR24: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR24_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR24: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR25 ------------------------------- */ -#define PPB_NVIC_IPR25_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR25: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR25_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR25: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR25_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR25: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR25_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR25: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR25_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR25: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR25_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR25: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR25_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR25: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR25_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR25: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR26 ------------------------------- */ -#define PPB_NVIC_IPR26_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR26: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR26_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR26: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR26_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR26: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR26_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR26: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR26_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR26: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR26_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR26: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR26_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR26: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR26_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR26: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- PPB_NVIC_IPR27 ------------------------------- */ -#define PPB_NVIC_IPR27_PRI_0_Pos \ - (0UL) /*!< PPB NVIC_IPR27: PRI_0 (Bit 0) */ -#define PPB_NVIC_IPR27_PRI_0_Msk \ - (0xffUL) /*!< PPB NVIC_IPR27: PRI_0 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR27_PRI_1_Pos \ - (8UL) /*!< PPB NVIC_IPR27: PRI_1 (Bit 8) */ -#define PPB_NVIC_IPR27_PRI_1_Msk \ - (0xff00UL) /*!< PPB NVIC_IPR27: PRI_1 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR27_PRI_2_Pos \ - (16UL) /*!< PPB NVIC_IPR27: PRI_2 (Bit 16) */ -#define PPB_NVIC_IPR27_PRI_2_Msk \ - (0xff0000UL) /*!< PPB NVIC_IPR27: PRI_2 (Bitfield-Mask: 0xff) */ -#define PPB_NVIC_IPR27_PRI_3_Pos \ - (24UL) /*!< PPB NVIC_IPR27: PRI_3 (Bit 24) */ -#define PPB_NVIC_IPR27_PRI_3_Msk \ - (0xff000000UL) /*!< PPB NVIC_IPR27: PRI_3 (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_CPUID --------------------------------- */ -#define PPB_CPUID_Revision_Pos \ - (0UL) /*!< PPB CPUID: Revision (Bit 0) */ -#define PPB_CPUID_Revision_Msk \ - (0xfUL) /*!< PPB CPUID: Revision (Bitfield-Mask: 0x0f) */ -#define PPB_CPUID_PartNo_Pos \ - (4UL) /*!< PPB CPUID: PartNo (Bit 4) */ -#define PPB_CPUID_PartNo_Msk \ - (0xfff0UL) /*!< PPB CPUID: PartNo (Bitfield-Mask: 0xfff) */ -#define PPB_CPUID_Constant_Pos \ - (16UL) /*!< PPB CPUID: Constant (Bit 16) */ -#define PPB_CPUID_Constant_Msk \ - (0xf0000UL) /*!< PPB CPUID: Constant (Bitfield-Mask: 0x0f) */ -#define PPB_CPUID_Variant_Pos \ - (20UL) /*!< PPB CPUID: Variant (Bit 20) */ -#define PPB_CPUID_Variant_Msk \ - (0xf00000UL) /*!< PPB CPUID: Variant (Bitfield-Mask: 0x0f) */ -#define PPB_CPUID_Implementer_Pos \ - (24UL) /*!< PPB CPUID: Implementer (Bit 24) */ -#define PPB_CPUID_Implementer_Msk \ - (0xff000000UL) /*!< PPB CPUID: Implementer (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_ICSR ---------------------------------- */ -#define PPB_ICSR_VECTACTIVE_Pos \ - (0UL) /*!< PPB ICSR: VECTACTIVE (Bit 0) */ -#define PPB_ICSR_VECTACTIVE_Msk \ - (0x1ffUL) /*!< PPB ICSR: VECTACTIVE (Bitfield-Mask: 0x1ff) */ -#define PPB_ICSR_RETTOBASE_Pos \ - (11UL) /*!< PPB ICSR: RETTOBASE (Bit 11) */ -#define PPB_ICSR_RETTOBASE_Msk \ - (0x800UL) /*!< PPB ICSR: RETTOBASE (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_VECTPENDING_Pos \ - (12UL) /*!< PPB ICSR: VECTPENDING (Bit 12) */ -#define PPB_ICSR_VECTPENDING_Msk \ - (0x3f000UL) /*!< PPB ICSR: VECTPENDING (Bitfield-Mask: 0x3f) */ -#define PPB_ICSR_ISRPENDING_Pos \ - (22UL) /*!< PPB ICSR: ISRPENDING (Bit 22) */ -#define PPB_ICSR_ISRPENDING_Msk \ - (0x400000UL) /*!< PPB ICSR: ISRPENDING (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_PENDSTCLR_Pos \ - (25UL) /*!< PPB ICSR: PENDSTCLR (Bit 25) */ -#define PPB_ICSR_PENDSTCLR_Msk \ - (0x2000000UL) /*!< PPB ICSR: PENDSTCLR (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_PENDSTSET_Pos \ - (26UL) /*!< PPB ICSR: PENDSTSET (Bit 26) */ -#define PPB_ICSR_PENDSTSET_Msk \ - (0x4000000UL) /*!< PPB ICSR: PENDSTSET (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_PENDSVCLR_Pos \ - (27UL) /*!< PPB ICSR: PENDSVCLR (Bit 27) */ -#define PPB_ICSR_PENDSVCLR_Msk \ - (0x8000000UL) /*!< PPB ICSR: PENDSVCLR (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_PENDSVSET_Pos \ - (28UL) /*!< PPB ICSR: PENDSVSET (Bit 28) */ -#define PPB_ICSR_PENDSVSET_Msk \ - (0x10000000UL) /*!< PPB ICSR: PENDSVSET (Bitfield-Mask: 0x01) */ -#define PPB_ICSR_NMIPENDSET_Pos \ - (31UL) /*!< PPB ICSR: NMIPENDSET (Bit 31) */ -#define PPB_ICSR_NMIPENDSET_Msk \ - (0x80000000UL) /*!< PPB ICSR: NMIPENDSET (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_VTOR ---------------------------------- */ -#define PPB_VTOR_TBLOFF_Pos \ - (10UL) /*!< PPB VTOR: TBLOFF (Bit 10) */ -#define PPB_VTOR_TBLOFF_Msk \ - (0xfffffc00UL) /*!< PPB VTOR: TBLOFF (Bitfield-Mask: 0x3fffff) */ - -/* ---------------------------------- PPB_AIRCR --------------------------------- */ -#define PPB_AIRCR_VECTRESET_Pos \ - (0UL) /*!< PPB AIRCR: VECTRESET (Bit 0) */ -#define PPB_AIRCR_VECTRESET_Msk \ - (0x1UL) /*!< PPB AIRCR: VECTRESET (Bitfield-Mask: 0x01) */ -#define PPB_AIRCR_VECTCLRACTIVE_Pos \ - (1UL) /*!< PPB AIRCR: VECTCLRACTIVE (Bit 1) */ -#define PPB_AIRCR_VECTCLRACTIVE_Msk \ - (0x2UL) /*!< PPB AIRCR: VECTCLRACTIVE (Bitfield-Mask: 0x01) */ -#define PPB_AIRCR_SYSRESETREQ_Pos \ - (2UL) /*!< PPB AIRCR: SYSRESETREQ (Bit 2) */ -#define PPB_AIRCR_SYSRESETREQ_Msk \ - (0x4UL) /*!< PPB AIRCR: SYSRESETREQ (Bitfield-Mask: 0x01) */ -#define PPB_AIRCR_PRIGROUP_Pos \ - (8UL) /*!< PPB AIRCR: PRIGROUP (Bit 8) */ -#define PPB_AIRCR_PRIGROUP_Msk \ - (0x700UL) /*!< PPB AIRCR: PRIGROUP (Bitfield-Mask: 0x07) */ -#define PPB_AIRCR_ENDIANNESS_Pos \ - (15UL) /*!< PPB AIRCR: ENDIANNESS (Bit 15) */ -#define PPB_AIRCR_ENDIANNESS_Msk \ - (0x8000UL) /*!< PPB AIRCR: ENDIANNESS (Bitfield-Mask: 0x01) */ -#define PPB_AIRCR_VECTKEY_Pos \ - (16UL) /*!< PPB AIRCR: VECTKEY (Bit 16) */ -#define PPB_AIRCR_VECTKEY_Msk \ - (0xffff0000UL) /*!< PPB AIRCR: VECTKEY (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- PPB_SCR ---------------------------------- */ -#define PPB_SCR_SLEEPONEXIT_Pos \ - (1UL) /*!< PPB SCR: SLEEPONEXIT (Bit 1) */ -#define PPB_SCR_SLEEPONEXIT_Msk \ - (0x2UL) /*!< PPB SCR: SLEEPONEXIT (Bitfield-Mask: 0x01) */ -#define PPB_SCR_SLEEPDEEP_Pos \ - (2UL) /*!< PPB SCR: SLEEPDEEP (Bit 2) */ -#define PPB_SCR_SLEEPDEEP_Msk \ - (0x4UL) /*!< PPB SCR: SLEEPDEEP (Bitfield-Mask: 0x01) */ -#define PPB_SCR_SEVONPEND_Pos \ - (4UL) /*!< PPB SCR: SEVONPEND (Bit 4) */ -#define PPB_SCR_SEVONPEND_Msk \ - (0x10UL) /*!< PPB SCR: SEVONPEND (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- PPB_CCR ---------------------------------- */ -#define PPB_CCR_NONBASETHRDENA_Pos \ - (0UL) /*!< PPB CCR: NONBASETHRDENA (Bit 0) */ -#define PPB_CCR_NONBASETHRDENA_Msk \ - (0x1UL) /*!< PPB CCR: NONBASETHRDENA (Bitfield-Mask: 0x01) */ -#define PPB_CCR_USERSETMPEND_Pos \ - (1UL) /*!< PPB CCR: USERSETMPEND (Bit 1) */ -#define PPB_CCR_USERSETMPEND_Msk \ - (0x2UL) /*!< PPB CCR: USERSETMPEND (Bitfield-Mask: 0x01) */ -#define PPB_CCR_UNALIGN_TRP_Pos \ - (3UL) /*!< PPB CCR: UNALIGN_TRP (Bit 3) */ -#define PPB_CCR_UNALIGN_TRP_Msk \ - (0x8UL) /*!< PPB CCR: UNALIGN_TRP (Bitfield-Mask: 0x01) */ -#define PPB_CCR_DIV_0_TRP_Pos \ - (4UL) /*!< PPB CCR: DIV_0_TRP (Bit 4) */ -#define PPB_CCR_DIV_0_TRP_Msk \ - (0x10UL) /*!< PPB CCR: DIV_0_TRP (Bitfield-Mask: 0x01) */ -#define PPB_CCR_BFHFNMIGN_Pos \ - (8UL) /*!< PPB CCR: BFHFNMIGN (Bit 8) */ -#define PPB_CCR_BFHFNMIGN_Msk \ - (0x100UL) /*!< PPB CCR: BFHFNMIGN (Bitfield-Mask: 0x01) */ -#define PPB_CCR_STKALIGN_Pos \ - (9UL) /*!< PPB CCR: STKALIGN (Bit 9) */ -#define PPB_CCR_STKALIGN_Msk \ - (0x200UL) /*!< PPB CCR: STKALIGN (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_SHPR1 --------------------------------- */ -#define PPB_SHPR1_PRI_4_Pos \ - (0UL) /*!< PPB SHPR1: PRI_4 (Bit 0) */ -#define PPB_SHPR1_PRI_4_Msk \ - (0xffUL) /*!< PPB SHPR1: PRI_4 (Bitfield-Mask: 0xff) */ -#define PPB_SHPR1_PRI_5_Pos \ - (8UL) /*!< PPB SHPR1: PRI_5 (Bit 8) */ -#define PPB_SHPR1_PRI_5_Msk \ - (0xff00UL) /*!< PPB SHPR1: PRI_5 (Bitfield-Mask: 0xff) */ -#define PPB_SHPR1_PRI_6_Pos \ - (16UL) /*!< PPB SHPR1: PRI_6 (Bit 16) */ -#define PPB_SHPR1_PRI_6_Msk \ - (0xff0000UL) /*!< PPB SHPR1: PRI_6 (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_SHPR2 --------------------------------- */ -#define PPB_SHPR2_PRI_11_Pos \ - (24UL) /*!< PPB SHPR2: PRI_11 (Bit 24) */ -#define PPB_SHPR2_PRI_11_Msk \ - (0xff000000UL) /*!< PPB SHPR2: PRI_11 (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_SHPR3 --------------------------------- */ -#define PPB_SHPR3_PRI_14_Pos \ - (16UL) /*!< PPB SHPR3: PRI_14 (Bit 16) */ -#define PPB_SHPR3_PRI_14_Msk \ - (0xff0000UL) /*!< PPB SHPR3: PRI_14 (Bitfield-Mask: 0xff) */ -#define PPB_SHPR3_PRI_15_Pos \ - (24UL) /*!< PPB SHPR3: PRI_15 (Bit 24) */ -#define PPB_SHPR3_PRI_15_Msk \ - (0xff000000UL) /*!< PPB SHPR3: PRI_15 (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- PPB_SHCSR --------------------------------- */ -#define PPB_SHCSR_MEMFAULTACT_Pos \ - (0UL) /*!< PPB SHCSR: MEMFAULTACT (Bit 0) */ -#define PPB_SHCSR_MEMFAULTACT_Msk \ - (0x1UL) /*!< PPB SHCSR: MEMFAULTACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_BUSFAULTACT_Pos \ - (1UL) /*!< PPB SHCSR: BUSFAULTACT (Bit 1) */ -#define PPB_SHCSR_BUSFAULTACT_Msk \ - (0x2UL) /*!< PPB SHCSR: BUSFAULTACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_USGFAULTACT_Pos \ - (3UL) /*!< PPB SHCSR: USGFAULTACT (Bit 3) */ -#define PPB_SHCSR_USGFAULTACT_Msk \ - (0x8UL) /*!< PPB SHCSR: USGFAULTACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_SVCALLACT_Pos \ - (7UL) /*!< PPB SHCSR: SVCALLACT (Bit 7) */ -#define PPB_SHCSR_SVCALLACT_Msk \ - (0x80UL) /*!< PPB SHCSR: SVCALLACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_MONITORACT_Pos \ - (8UL) /*!< PPB SHCSR: MONITORACT (Bit 8) */ -#define PPB_SHCSR_MONITORACT_Msk \ - (0x100UL) /*!< PPB SHCSR: MONITORACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_PENDSVACT_Pos \ - (10UL) /*!< PPB SHCSR: PENDSVACT (Bit 10) */ -#define PPB_SHCSR_PENDSVACT_Msk \ - (0x400UL) /*!< PPB SHCSR: PENDSVACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_SYSTICKACT_Pos \ - (11UL) /*!< PPB SHCSR: SYSTICKACT (Bit 11) */ -#define PPB_SHCSR_SYSTICKACT_Msk \ - (0x800UL) /*!< PPB SHCSR: SYSTICKACT (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_USGFAULTPENDED_Pos \ - (12UL) /*!< PPB SHCSR: USGFAULTPENDED (Bit 12) */ -#define PPB_SHCSR_USGFAULTPENDED_Msk \ - (0x1000UL) /*!< PPB SHCSR: USGFAULTPENDED (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_MEMFAULTPENDED_Pos \ - (13UL) /*!< PPB SHCSR: MEMFAULTPENDED (Bit 13) */ -#define PPB_SHCSR_MEMFAULTPENDED_Msk \ - (0x2000UL) /*!< PPB SHCSR: MEMFAULTPENDED (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_BUSFAULTPENDED_Pos \ - (14UL) /*!< PPB SHCSR: BUSFAULTPENDED (Bit 14) */ -#define PPB_SHCSR_BUSFAULTPENDED_Msk \ - (0x4000UL) /*!< PPB SHCSR: BUSFAULTPENDED (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_SVCALLPENDED_Pos \ - (15UL) /*!< PPB SHCSR: SVCALLPENDED (Bit 15) */ -#define PPB_SHCSR_SVCALLPENDED_Msk \ - (0x8000UL) /*!< PPB SHCSR: SVCALLPENDED (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_MEMFAULTENA_Pos \ - (16UL) /*!< PPB SHCSR: MEMFAULTENA (Bit 16) */ -#define PPB_SHCSR_MEMFAULTENA_Msk \ - (0x10000UL) /*!< PPB SHCSR: MEMFAULTENA (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_BUSFAULTENA_Pos \ - (17UL) /*!< PPB SHCSR: BUSFAULTENA (Bit 17) */ -#define PPB_SHCSR_BUSFAULTENA_Msk \ - (0x20000UL) /*!< PPB SHCSR: BUSFAULTENA (Bitfield-Mask: 0x01) */ -#define PPB_SHCSR_USGFAULTENA_Pos \ - (18UL) /*!< PPB SHCSR: USGFAULTENA (Bit 18) */ -#define PPB_SHCSR_USGFAULTENA_Msk \ - (0x40000UL) /*!< PPB SHCSR: USGFAULTENA (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_CFSR ---------------------------------- */ -#define PPB_CFSR_IACCVIOL_Pos \ - (0UL) /*!< PPB CFSR: IACCVIOL (Bit 0) */ -#define PPB_CFSR_IACCVIOL_Msk \ - (0x1UL) /*!< PPB CFSR: IACCVIOL (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_DACCVIOL_Pos \ - (1UL) /*!< PPB CFSR: DACCVIOL (Bit 1) */ -#define PPB_CFSR_DACCVIOL_Msk \ - (0x2UL) /*!< PPB CFSR: DACCVIOL (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_MUNSTKERR_Pos \ - (3UL) /*!< PPB CFSR: MUNSTKERR (Bit 3) */ -#define PPB_CFSR_MUNSTKERR_Msk \ - (0x8UL) /*!< PPB CFSR: MUNSTKERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_MSTKERR_Pos \ - (4UL) /*!< PPB CFSR: MSTKERR (Bit 4) */ -#define PPB_CFSR_MSTKERR_Msk \ - (0x10UL) /*!< PPB CFSR: MSTKERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_MLSPERR_Pos \ - (5UL) /*!< PPB CFSR: MLSPERR (Bit 5) */ -#define PPB_CFSR_MLSPERR_Msk \ - (0x20UL) /*!< PPB CFSR: MLSPERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_MMARVALID_Pos \ - (7UL) /*!< PPB CFSR: MMARVALID (Bit 7) */ -#define PPB_CFSR_MMARVALID_Msk \ - (0x80UL) /*!< PPB CFSR: MMARVALID (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_IBUSERR_Pos \ - (8UL) /*!< PPB CFSR: IBUSERR (Bit 8) */ -#define PPB_CFSR_IBUSERR_Msk \ - (0x100UL) /*!< PPB CFSR: IBUSERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_PRECISERR_Pos \ - (9UL) /*!< PPB CFSR: PRECISERR (Bit 9) */ -#define PPB_CFSR_PRECISERR_Msk \ - (0x200UL) /*!< PPB CFSR: PRECISERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_IMPRECISERR_Pos \ - (10UL) /*!< PPB CFSR: IMPRECISERR (Bit 10) */ -#define PPB_CFSR_IMPRECISERR_Msk \ - (0x400UL) /*!< PPB CFSR: IMPRECISERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_UNSTKERR_Pos \ - (11UL) /*!< PPB CFSR: UNSTKERR (Bit 11) */ -#define PPB_CFSR_UNSTKERR_Msk \ - (0x800UL) /*!< PPB CFSR: UNSTKERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_STKERR_Pos \ - (12UL) /*!< PPB CFSR: STKERR (Bit 12) */ -#define PPB_CFSR_STKERR_Msk \ - (0x1000UL) /*!< PPB CFSR: STKERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_LSPERR_Pos \ - (13UL) /*!< PPB CFSR: LSPERR (Bit 13) */ -#define PPB_CFSR_LSPERR_Msk \ - (0x2000UL) /*!< PPB CFSR: LSPERR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_BFARVALID_Pos \ - (15UL) /*!< PPB CFSR: BFARVALID (Bit 15) */ -#define PPB_CFSR_BFARVALID_Msk \ - (0x8000UL) /*!< PPB CFSR: BFARVALID (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_UNDEFINSTR_Pos \ - (16UL) /*!< PPB CFSR: UNDEFINSTR (Bit 16) */ -#define PPB_CFSR_UNDEFINSTR_Msk \ - (0x10000UL) /*!< PPB CFSR: UNDEFINSTR (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_INVSTATE_Pos \ - (17UL) /*!< PPB CFSR: INVSTATE (Bit 17) */ -#define PPB_CFSR_INVSTATE_Msk \ - (0x20000UL) /*!< PPB CFSR: INVSTATE (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_INVPC_Pos \ - (18UL) /*!< PPB CFSR: INVPC (Bit 18) */ -#define PPB_CFSR_INVPC_Msk \ - (0x40000UL) /*!< PPB CFSR: INVPC (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_NOCP_Pos (19UL) /*!< PPB CFSR: NOCP (Bit 19) */ -#define PPB_CFSR_NOCP_Msk \ - (0x80000UL) /*!< PPB CFSR: NOCP (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_UNALIGNED_Pos \ - (24UL) /*!< PPB CFSR: UNALIGNED (Bit 24) */ -#define PPB_CFSR_UNALIGNED_Msk \ - (0x1000000UL) /*!< PPB CFSR: UNALIGNED (Bitfield-Mask: 0x01) */ -#define PPB_CFSR_DIVBYZERO_Pos \ - (25UL) /*!< PPB CFSR: DIVBYZERO (Bit 25) */ -#define PPB_CFSR_DIVBYZERO_Msk \ - (0x2000000UL) /*!< PPB CFSR: DIVBYZERO (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_HFSR ---------------------------------- */ -#define PPB_HFSR_VECTTBL_Pos \ - (1UL) /*!< PPB HFSR: VECTTBL (Bit 1) */ -#define PPB_HFSR_VECTTBL_Msk \ - (0x2UL) /*!< PPB HFSR: VECTTBL (Bitfield-Mask: 0x01) */ -#define PPB_HFSR_FORCED_Pos \ - (30UL) /*!< PPB HFSR: FORCED (Bit 30) */ -#define PPB_HFSR_FORCED_Msk \ - (0x40000000UL) /*!< PPB HFSR: FORCED (Bitfield-Mask: 0x01) */ -#define PPB_HFSR_DEBUGEVT_Pos \ - (31UL) /*!< PPB HFSR: DEBUGEVT (Bit 31) */ -#define PPB_HFSR_DEBUGEVT_Msk \ - (0x80000000UL) /*!< PPB HFSR: DEBUGEVT (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_MMFAR --------------------------------- */ -#define PPB_MMFAR_ADDRESS_Pos \ - (0UL) /*!< PPB MMFAR: ADDRESS (Bit 0) */ -#define PPB_MMFAR_ADDRESS_Msk \ - (0xffffffffUL) /*!< PPB MMFAR: ADDRESS (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- PPB_BFAR ---------------------------------- */ -#define PPB_BFAR_ADDRESS_Pos \ - (0UL) /*!< PPB BFAR: ADDRESS (Bit 0) */ -#define PPB_BFAR_ADDRESS_Msk \ - (0xffffffffUL) /*!< PPB BFAR: ADDRESS (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- PPB_AFSR ---------------------------------- */ -#define PPB_AFSR_VALUE_Pos (0UL) /*!< PPB AFSR: VALUE (Bit 0) */ -#define PPB_AFSR_VALUE_Msk \ - (0xffffffffUL) /*!< PPB AFSR: VALUE (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- PPB_CPACR --------------------------------- */ -#define PPB_CPACR_CP10_Pos \ - (20UL) /*!< PPB CPACR: CP10 (Bit 20) */ -#define PPB_CPACR_CP10_Msk \ - (0x300000UL) /*!< PPB CPACR: CP10 (Bitfield-Mask: 0x03) */ -#define PPB_CPACR_CP11_Pos \ - (22UL) /*!< PPB CPACR: CP11 (Bit 22) */ -#define PPB_CPACR_CP11_Msk \ - (0xc00000UL) /*!< PPB CPACR: CP11 (Bitfield-Mask: 0x03) */ - -/* -------------------------------- PPB_MPU_TYPE -------------------------------- */ -#define PPB_MPU_TYPE_SEPARATE_Pos \ - (0UL) /*!< PPB MPU_TYPE: SEPARATE (Bit 0) */ -#define PPB_MPU_TYPE_SEPARATE_Msk \ - (0x1UL) /*!< PPB MPU_TYPE: SEPARATE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_TYPE_DREGION_Pos \ - (8UL) /*!< PPB MPU_TYPE: DREGION (Bit 8) */ -#define PPB_MPU_TYPE_DREGION_Msk \ - (0xff00UL) /*!< PPB MPU_TYPE: DREGION (Bitfield-Mask: 0xff) */ -#define PPB_MPU_TYPE_IREGION_Pos \ - (16UL) /*!< PPB MPU_TYPE: IREGION (Bit 16) */ -#define PPB_MPU_TYPE_IREGION_Msk \ - (0xff0000UL) /*!< PPB MPU_TYPE: IREGION (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_MPU_CTRL -------------------------------- */ -#define PPB_MPU_CTRL_ENABLE_Pos \ - (0UL) /*!< PPB MPU_CTRL: ENABLE (Bit 0) */ -#define PPB_MPU_CTRL_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_CTRL: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_CTRL_HFNMIENA_Pos \ - (1UL) /*!< PPB MPU_CTRL: HFNMIENA (Bit 1) */ -#define PPB_MPU_CTRL_HFNMIENA_Msk \ - (0x2UL) /*!< PPB MPU_CTRL: HFNMIENA (Bitfield-Mask: 0x01) */ -#define PPB_MPU_CTRL_PRIVDEFENA_Pos \ - (2UL) /*!< PPB MPU_CTRL: PRIVDEFENA (Bit 2) */ -#define PPB_MPU_CTRL_PRIVDEFENA_Msk \ - (0x4UL) /*!< PPB MPU_CTRL: PRIVDEFENA (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PPB_MPU_RNR -------------------------------- */ -#define PPB_MPU_RNR_REGION_Pos \ - (0UL) /*!< PPB MPU_RNR: REGION (Bit 0) */ -#define PPB_MPU_RNR_REGION_Msk \ - (0xffUL) /*!< PPB MPU_RNR: REGION (Bitfield-Mask: 0xff) */ - -/* -------------------------------- PPB_MPU_RBAR -------------------------------- */ -#define PPB_MPU_RBAR_REGION_Pos \ - (0UL) /*!< PPB MPU_RBAR: REGION (Bit 0) */ -#define PPB_MPU_RBAR_REGION_Msk \ - (0xfUL) /*!< PPB MPU_RBAR: REGION (Bitfield-Mask: 0x0f) */ -#define PPB_MPU_RBAR_VALID_Pos \ - (4UL) /*!< PPB MPU_RBAR: VALID (Bit 4) */ -#define PPB_MPU_RBAR_VALID_Msk \ - (0x10UL) /*!< PPB MPU_RBAR: VALID (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RBAR_ADDR_Pos \ - (9UL) /*!< PPB MPU_RBAR: ADDR (Bit 9) */ -#define PPB_MPU_RBAR_ADDR_Msk \ - (0xfffffe00UL) /*!< PPB MPU_RBAR: ADDR (Bitfield-Mask: 0x7fffff) */ - -/* -------------------------------- PPB_MPU_RASR -------------------------------- */ -#define PPB_MPU_RASR_ENABLE_Pos \ - (0UL) /*!< PPB MPU_RASR: ENABLE (Bit 0) */ -#define PPB_MPU_RASR_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_RASR: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_SIZE_Pos \ - (1UL) /*!< PPB MPU_RASR: SIZE (Bit 1) */ -#define PPB_MPU_RASR_SIZE_Msk \ - (0x3eUL) /*!< PPB MPU_RASR: SIZE (Bitfield-Mask: 0x1f) */ -#define PPB_MPU_RASR_SRD_Pos \ - (8UL) /*!< PPB MPU_RASR: SRD (Bit 8) */ -#define PPB_MPU_RASR_SRD_Msk \ - (0xff00UL) /*!< PPB MPU_RASR: SRD (Bitfield-Mask: 0xff) */ -#define PPB_MPU_RASR_B_Pos \ - (16UL) /*!< PPB MPU_RASR: B (Bit 16) */ -#define PPB_MPU_RASR_B_Msk \ - (0x10000UL) /*!< PPB MPU_RASR: B (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_C_Pos \ - (17UL) /*!< PPB MPU_RASR: C (Bit 17) */ -#define PPB_MPU_RASR_C_Msk \ - (0x20000UL) /*!< PPB MPU_RASR: C (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_S_Pos \ - (18UL) /*!< PPB MPU_RASR: S (Bit 18) */ -#define PPB_MPU_RASR_S_Msk \ - (0x40000UL) /*!< PPB MPU_RASR: S (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_TEX_Pos \ - (19UL) /*!< PPB MPU_RASR: TEX (Bit 19) */ -#define PPB_MPU_RASR_TEX_Msk \ - (0x380000UL) /*!< PPB MPU_RASR: TEX (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_AP_Pos \ - (24UL) /*!< PPB MPU_RASR: AP (Bit 24) */ -#define PPB_MPU_RASR_AP_Msk \ - (0x7000000UL) /*!< PPB MPU_RASR: AP (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_XN_Pos \ - (28UL) /*!< PPB MPU_RASR: XN (Bit 28) */ -#define PPB_MPU_RASR_XN_Msk \ - (0x10000000UL) /*!< PPB MPU_RASR: XN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- PPB_MPU_RBAR_A1 ------------------------------ */ -#define PPB_MPU_RBAR_A1_REGION_Pos \ - (0UL) /*!< PPB MPU_RBAR_A1: REGION (Bit 0) */ -#define PPB_MPU_RBAR_A1_REGION_Msk \ - (0xfUL) /*!< PPB MPU_RBAR_A1: REGION (Bitfield-Mask: 0x0f) */ -#define PPB_MPU_RBAR_A1_VALID_Pos \ - (4UL) /*!< PPB MPU_RBAR_A1: VALID (Bit 4) */ -#define PPB_MPU_RBAR_A1_VALID_Msk \ - (0x10UL) /*!< PPB MPU_RBAR_A1: VALID (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RBAR_A1_ADDR_Pos \ - (9UL) /*!< PPB MPU_RBAR_A1: ADDR (Bit 9) */ -#define PPB_MPU_RBAR_A1_ADDR_Msk \ - (0xfffffe00UL) /*!< PPB MPU_RBAR_A1: ADDR (Bitfield-Mask: 0x7fffff) */ - -/* ------------------------------- PPB_MPU_RASR_A1 ------------------------------ */ -#define PPB_MPU_RASR_A1_ENABLE_Pos \ - (0UL) /*!< PPB MPU_RASR_A1: ENABLE (Bit 0) */ -#define PPB_MPU_RASR_A1_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_RASR_A1: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A1_SIZE_Pos \ - (1UL) /*!< PPB MPU_RASR_A1: SIZE (Bit 1) */ -#define PPB_MPU_RASR_A1_SIZE_Msk \ - (0x3eUL) /*!< PPB MPU_RASR_A1: SIZE (Bitfield-Mask: 0x1f) */ -#define PPB_MPU_RASR_A1_SRD_Pos \ - (8UL) /*!< PPB MPU_RASR_A1: SRD (Bit 8) */ -#define PPB_MPU_RASR_A1_SRD_Msk \ - (0xff00UL) /*!< PPB MPU_RASR_A1: SRD (Bitfield-Mask: 0xff) */ -#define PPB_MPU_RASR_A1_B_Pos \ - (16UL) /*!< PPB MPU_RASR_A1: B (Bit 16) */ -#define PPB_MPU_RASR_A1_B_Msk \ - (0x10000UL) /*!< PPB MPU_RASR_A1: B (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A1_C_Pos \ - (17UL) /*!< PPB MPU_RASR_A1: C (Bit 17) */ -#define PPB_MPU_RASR_A1_C_Msk \ - (0x20000UL) /*!< PPB MPU_RASR_A1: C (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A1_S_Pos \ - (18UL) /*!< PPB MPU_RASR_A1: S (Bit 18) */ -#define PPB_MPU_RASR_A1_S_Msk \ - (0x40000UL) /*!< PPB MPU_RASR_A1: S (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A1_TEX_Pos \ - (19UL) /*!< PPB MPU_RASR_A1: TEX (Bit 19) */ -#define PPB_MPU_RASR_A1_TEX_Msk \ - (0x380000UL) /*!< PPB MPU_RASR_A1: TEX (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A1_AP_Pos \ - (24UL) /*!< PPB MPU_RASR_A1: AP (Bit 24) */ -#define PPB_MPU_RASR_A1_AP_Msk \ - (0x7000000UL) /*!< PPB MPU_RASR_A1: AP (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A1_XN_Pos \ - (28UL) /*!< PPB MPU_RASR_A1: XN (Bit 28) */ -#define PPB_MPU_RASR_A1_XN_Msk \ - (0x10000000UL) /*!< PPB MPU_RASR_A1: XN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- PPB_MPU_RBAR_A2 ------------------------------ */ -#define PPB_MPU_RBAR_A2_REGION_Pos \ - (0UL) /*!< PPB MPU_RBAR_A2: REGION (Bit 0) */ -#define PPB_MPU_RBAR_A2_REGION_Msk \ - (0xfUL) /*!< PPB MPU_RBAR_A2: REGION (Bitfield-Mask: 0x0f) */ -#define PPB_MPU_RBAR_A2_VALID_Pos \ - (4UL) /*!< PPB MPU_RBAR_A2: VALID (Bit 4) */ -#define PPB_MPU_RBAR_A2_VALID_Msk \ - (0x10UL) /*!< PPB MPU_RBAR_A2: VALID (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RBAR_A2_ADDR_Pos \ - (9UL) /*!< PPB MPU_RBAR_A2: ADDR (Bit 9) */ -#define PPB_MPU_RBAR_A2_ADDR_Msk \ - (0xfffffe00UL) /*!< PPB MPU_RBAR_A2: ADDR (Bitfield-Mask: 0x7fffff) */ - -/* ------------------------------- PPB_MPU_RASR_A2 ------------------------------ */ -#define PPB_MPU_RASR_A2_ENABLE_Pos \ - (0UL) /*!< PPB MPU_RASR_A2: ENABLE (Bit 0) */ -#define PPB_MPU_RASR_A2_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_RASR_A2: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A2_SIZE_Pos \ - (1UL) /*!< PPB MPU_RASR_A2: SIZE (Bit 1) */ -#define PPB_MPU_RASR_A2_SIZE_Msk \ - (0x3eUL) /*!< PPB MPU_RASR_A2: SIZE (Bitfield-Mask: 0x1f) */ -#define PPB_MPU_RASR_A2_SRD_Pos \ - (8UL) /*!< PPB MPU_RASR_A2: SRD (Bit 8) */ -#define PPB_MPU_RASR_A2_SRD_Msk \ - (0xff00UL) /*!< PPB MPU_RASR_A2: SRD (Bitfield-Mask: 0xff) */ -#define PPB_MPU_RASR_A2_B_Pos \ - (16UL) /*!< PPB MPU_RASR_A2: B (Bit 16) */ -#define PPB_MPU_RASR_A2_B_Msk \ - (0x10000UL) /*!< PPB MPU_RASR_A2: B (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A2_C_Pos \ - (17UL) /*!< PPB MPU_RASR_A2: C (Bit 17) */ -#define PPB_MPU_RASR_A2_C_Msk \ - (0x20000UL) /*!< PPB MPU_RASR_A2: C (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A2_S_Pos \ - (18UL) /*!< PPB MPU_RASR_A2: S (Bit 18) */ -#define PPB_MPU_RASR_A2_S_Msk \ - (0x40000UL) /*!< PPB MPU_RASR_A2: S (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A2_TEX_Pos \ - (19UL) /*!< PPB MPU_RASR_A2: TEX (Bit 19) */ -#define PPB_MPU_RASR_A2_TEX_Msk \ - (0x380000UL) /*!< PPB MPU_RASR_A2: TEX (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A2_AP_Pos \ - (24UL) /*!< PPB MPU_RASR_A2: AP (Bit 24) */ -#define PPB_MPU_RASR_A2_AP_Msk \ - (0x7000000UL) /*!< PPB MPU_RASR_A2: AP (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A2_XN_Pos \ - (28UL) /*!< PPB MPU_RASR_A2: XN (Bit 28) */ -#define PPB_MPU_RASR_A2_XN_Msk \ - (0x10000000UL) /*!< PPB MPU_RASR_A2: XN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- PPB_MPU_RBAR_A3 ------------------------------ */ -#define PPB_MPU_RBAR_A3_REGION_Pos \ - (0UL) /*!< PPB MPU_RBAR_A3: REGION (Bit 0) */ -#define PPB_MPU_RBAR_A3_REGION_Msk \ - (0xfUL) /*!< PPB MPU_RBAR_A3: REGION (Bitfield-Mask: 0x0f) */ -#define PPB_MPU_RBAR_A3_VALID_Pos \ - (4UL) /*!< PPB MPU_RBAR_A3: VALID (Bit 4) */ -#define PPB_MPU_RBAR_A3_VALID_Msk \ - (0x10UL) /*!< PPB MPU_RBAR_A3: VALID (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RBAR_A3_ADDR_Pos \ - (9UL) /*!< PPB MPU_RBAR_A3: ADDR (Bit 9) */ -#define PPB_MPU_RBAR_A3_ADDR_Msk \ - (0xfffffe00UL) /*!< PPB MPU_RBAR_A3: ADDR (Bitfield-Mask: 0x7fffff) */ - -/* ------------------------------- PPB_MPU_RASR_A3 ------------------------------ */ -#define PPB_MPU_RASR_A3_ENABLE_Pos \ - (0UL) /*!< PPB MPU_RASR_A3: ENABLE (Bit 0) */ -#define PPB_MPU_RASR_A3_ENABLE_Msk \ - (0x1UL) /*!< PPB MPU_RASR_A3: ENABLE (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A3_SIZE_Pos \ - (1UL) /*!< PPB MPU_RASR_A3: SIZE (Bit 1) */ -#define PPB_MPU_RASR_A3_SIZE_Msk \ - (0x3eUL) /*!< PPB MPU_RASR_A3: SIZE (Bitfield-Mask: 0x1f) */ -#define PPB_MPU_RASR_A3_SRD_Pos \ - (8UL) /*!< PPB MPU_RASR_A3: SRD (Bit 8) */ -#define PPB_MPU_RASR_A3_SRD_Msk \ - (0xff00UL) /*!< PPB MPU_RASR_A3: SRD (Bitfield-Mask: 0xff) */ -#define PPB_MPU_RASR_A3_B_Pos \ - (16UL) /*!< PPB MPU_RASR_A3: B (Bit 16) */ -#define PPB_MPU_RASR_A3_B_Msk \ - (0x10000UL) /*!< PPB MPU_RASR_A3: B (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A3_C_Pos \ - (17UL) /*!< PPB MPU_RASR_A3: C (Bit 17) */ -#define PPB_MPU_RASR_A3_C_Msk \ - (0x20000UL) /*!< PPB MPU_RASR_A3: C (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A3_S_Pos \ - (18UL) /*!< PPB MPU_RASR_A3: S (Bit 18) */ -#define PPB_MPU_RASR_A3_S_Msk \ - (0x40000UL) /*!< PPB MPU_RASR_A3: S (Bitfield-Mask: 0x01) */ -#define PPB_MPU_RASR_A3_TEX_Pos \ - (19UL) /*!< PPB MPU_RASR_A3: TEX (Bit 19) */ -#define PPB_MPU_RASR_A3_TEX_Msk \ - (0x380000UL) /*!< PPB MPU_RASR_A3: TEX (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A3_AP_Pos \ - (24UL) /*!< PPB MPU_RASR_A3: AP (Bit 24) */ -#define PPB_MPU_RASR_A3_AP_Msk \ - (0x7000000UL) /*!< PPB MPU_RASR_A3: AP (Bitfield-Mask: 0x07) */ -#define PPB_MPU_RASR_A3_XN_Pos \ - (28UL) /*!< PPB MPU_RASR_A3: XN (Bit 28) */ -#define PPB_MPU_RASR_A3_XN_Msk \ - (0x10000000UL) /*!< PPB MPU_RASR_A3: XN (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_STIR ---------------------------------- */ -#define PPB_STIR_INTID_Pos (0UL) /*!< PPB STIR: INTID (Bit 0) */ -#define PPB_STIR_INTID_Msk \ - (0x1ffUL) /*!< PPB STIR: INTID (Bitfield-Mask: 0x1ff) */ - -/* ---------------------------------- PPB_FPCCR --------------------------------- */ -#define PPB_FPCCR_LSPACT_Pos \ - (0UL) /*!< PPB FPCCR: LSPACT (Bit 0) */ -#define PPB_FPCCR_LSPACT_Msk \ - (0x1UL) /*!< PPB FPCCR: LSPACT (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_USER_Pos (1UL) /*!< PPB FPCCR: USER (Bit 1) */ -#define PPB_FPCCR_USER_Msk \ - (0x2UL) /*!< PPB FPCCR: USER (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_THREAD_Pos \ - (3UL) /*!< PPB FPCCR: THREAD (Bit 3) */ -#define PPB_FPCCR_THREAD_Msk \ - (0x8UL) /*!< PPB FPCCR: THREAD (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_HFRDY_Pos \ - (4UL) /*!< PPB FPCCR: HFRDY (Bit 4) */ -#define PPB_FPCCR_HFRDY_Msk \ - (0x10UL) /*!< PPB FPCCR: HFRDY (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_MMRDY_Pos \ - (5UL) /*!< PPB FPCCR: MMRDY (Bit 5) */ -#define PPB_FPCCR_MMRDY_Msk \ - (0x20UL) /*!< PPB FPCCR: MMRDY (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_BFRDY_Pos \ - (6UL) /*!< PPB FPCCR: BFRDY (Bit 6) */ -#define PPB_FPCCR_BFRDY_Msk \ - (0x40UL) /*!< PPB FPCCR: BFRDY (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_MONRDY_Pos \ - (8UL) /*!< PPB FPCCR: MONRDY (Bit 8) */ -#define PPB_FPCCR_MONRDY_Msk \ - (0x100UL) /*!< PPB FPCCR: MONRDY (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_LSPEN_Pos \ - (30UL) /*!< PPB FPCCR: LSPEN (Bit 30) */ -#define PPB_FPCCR_LSPEN_Msk \ - (0x40000000UL) /*!< PPB FPCCR: LSPEN (Bitfield-Mask: 0x01) */ -#define PPB_FPCCR_ASPEN_Pos \ - (31UL) /*!< PPB FPCCR: ASPEN (Bit 31) */ -#define PPB_FPCCR_ASPEN_Msk \ - (0x80000000UL) /*!< PPB FPCCR: ASPEN (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PPB_FPCAR --------------------------------- */ -#define PPB_FPCAR_ADDRESS_Pos \ - (3UL) /*!< PPB FPCAR: ADDRESS (Bit 3) */ -#define PPB_FPCAR_ADDRESS_Msk \ - (0xfffffff8UL) /*!< PPB FPCAR: ADDRESS (Bitfield-Mask: 0x1fffffff) */ - -/* --------------------------------- PPB_FPDSCR --------------------------------- */ -#define PPB_FPDSCR_RMode_Pos \ - (22UL) /*!< PPB FPDSCR: RMode (Bit 22) */ -#define PPB_FPDSCR_RMode_Msk \ - (0xc00000UL) /*!< PPB FPDSCR: RMode (Bitfield-Mask: 0x03) */ -#define PPB_FPDSCR_FZ_Pos (24UL) /*!< PPB FPDSCR: FZ (Bit 24) */ -#define PPB_FPDSCR_FZ_Msk \ - (0x1000000UL) /*!< PPB FPDSCR: FZ (Bitfield-Mask: 0x01) */ -#define PPB_FPDSCR_DN_Pos (25UL) /*!< PPB FPDSCR: DN (Bit 25) */ -#define PPB_FPDSCR_DN_Msk \ - (0x2000000UL) /*!< PPB FPDSCR: DN (Bitfield-Mask: 0x01) */ -#define PPB_FPDSCR_AHP_Pos \ - (26UL) /*!< PPB FPDSCR: AHP (Bit 26) */ -#define PPB_FPDSCR_AHP_Msk \ - (0x4000000UL) /*!< PPB FPDSCR: AHP (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'DLR' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- DLR_OVRSTAT -------------------------------- */ -#define DLR_OVRSTAT_LN0_Pos \ - (0UL) /*!< DLR OVRSTAT: LN0 (Bit 0) */ -#define DLR_OVRSTAT_LN0_Msk \ - (0x1UL) /*!< DLR OVRSTAT: LN0 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN1_Pos \ - (1UL) /*!< DLR OVRSTAT: LN1 (Bit 1) */ -#define DLR_OVRSTAT_LN1_Msk \ - (0x2UL) /*!< DLR OVRSTAT: LN1 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN2_Pos \ - (2UL) /*!< DLR OVRSTAT: LN2 (Bit 2) */ -#define DLR_OVRSTAT_LN2_Msk \ - (0x4UL) /*!< DLR OVRSTAT: LN2 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN3_Pos \ - (3UL) /*!< DLR OVRSTAT: LN3 (Bit 3) */ -#define DLR_OVRSTAT_LN3_Msk \ - (0x8UL) /*!< DLR OVRSTAT: LN3 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN4_Pos \ - (4UL) /*!< DLR OVRSTAT: LN4 (Bit 4) */ -#define DLR_OVRSTAT_LN4_Msk \ - (0x10UL) /*!< DLR OVRSTAT: LN4 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN5_Pos \ - (5UL) /*!< DLR OVRSTAT: LN5 (Bit 5) */ -#define DLR_OVRSTAT_LN5_Msk \ - (0x20UL) /*!< DLR OVRSTAT: LN5 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN6_Pos \ - (6UL) /*!< DLR OVRSTAT: LN6 (Bit 6) */ -#define DLR_OVRSTAT_LN6_Msk \ - (0x40UL) /*!< DLR OVRSTAT: LN6 (Bitfield-Mask: 0x01) */ -#define DLR_OVRSTAT_LN7_Pos \ - (7UL) /*!< DLR OVRSTAT: LN7 (Bit 7) */ -#define DLR_OVRSTAT_LN7_Msk \ - (0x80UL) /*!< DLR OVRSTAT: LN7 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- DLR_OVRCLR --------------------------------- */ -#define DLR_OVRCLR_LN0_Pos (0UL) /*!< DLR OVRCLR: LN0 (Bit 0) */ -#define DLR_OVRCLR_LN0_Msk \ - (0x1UL) /*!< DLR OVRCLR: LN0 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN1_Pos (1UL) /*!< DLR OVRCLR: LN1 (Bit 1) */ -#define DLR_OVRCLR_LN1_Msk \ - (0x2UL) /*!< DLR OVRCLR: LN1 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN2_Pos (2UL) /*!< DLR OVRCLR: LN2 (Bit 2) */ -#define DLR_OVRCLR_LN2_Msk \ - (0x4UL) /*!< DLR OVRCLR: LN2 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN3_Pos (3UL) /*!< DLR OVRCLR: LN3 (Bit 3) */ -#define DLR_OVRCLR_LN3_Msk \ - (0x8UL) /*!< DLR OVRCLR: LN3 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN4_Pos (4UL) /*!< DLR OVRCLR: LN4 (Bit 4) */ -#define DLR_OVRCLR_LN4_Msk \ - (0x10UL) /*!< DLR OVRCLR: LN4 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN5_Pos (5UL) /*!< DLR OVRCLR: LN5 (Bit 5) */ -#define DLR_OVRCLR_LN5_Msk \ - (0x20UL) /*!< DLR OVRCLR: LN5 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN6_Pos (6UL) /*!< DLR OVRCLR: LN6 (Bit 6) */ -#define DLR_OVRCLR_LN6_Msk \ - (0x40UL) /*!< DLR OVRCLR: LN6 (Bitfield-Mask: 0x01) */ -#define DLR_OVRCLR_LN7_Pos (7UL) /*!< DLR OVRCLR: LN7 (Bit 7) */ -#define DLR_OVRCLR_LN7_Msk \ - (0x80UL) /*!< DLR OVRCLR: LN7 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- DLR_SRSEL0 --------------------------------- */ -#define DLR_SRSEL0_RS0_Pos (0UL) /*!< DLR SRSEL0: RS0 (Bit 0) */ -#define DLR_SRSEL0_RS0_Msk \ - (0xfUL) /*!< DLR SRSEL0: RS0 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS1_Pos (4UL) /*!< DLR SRSEL0: RS1 (Bit 4) */ -#define DLR_SRSEL0_RS1_Msk \ - (0xf0UL) /*!< DLR SRSEL0: RS1 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS2_Pos (8UL) /*!< DLR SRSEL0: RS2 (Bit 8) */ -#define DLR_SRSEL0_RS2_Msk \ - (0xf00UL) /*!< DLR SRSEL0: RS2 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS3_Pos \ - (12UL) /*!< DLR SRSEL0: RS3 (Bit 12) */ -#define DLR_SRSEL0_RS3_Msk \ - (0xf000UL) /*!< DLR SRSEL0: RS3 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS4_Pos \ - (16UL) /*!< DLR SRSEL0: RS4 (Bit 16) */ -#define DLR_SRSEL0_RS4_Msk \ - (0xf0000UL) /*!< DLR SRSEL0: RS4 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS5_Pos \ - (20UL) /*!< DLR SRSEL0: RS5 (Bit 20) */ -#define DLR_SRSEL0_RS5_Msk \ - (0xf00000UL) /*!< DLR SRSEL0: RS5 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS6_Pos \ - (24UL) /*!< DLR SRSEL0: RS6 (Bit 24) */ -#define DLR_SRSEL0_RS6_Msk \ - (0xf000000UL) /*!< DLR SRSEL0: RS6 (Bitfield-Mask: 0x0f) */ -#define DLR_SRSEL0_RS7_Pos \ - (28UL) /*!< DLR SRSEL0: RS7 (Bit 28) */ -#define DLR_SRSEL0_RS7_Msk \ - (0xf0000000UL) /*!< DLR SRSEL0: RS7 (Bitfield-Mask: 0x0f) */ - -/* ---------------------------------- DLR_LNEN ---------------------------------- */ -#define DLR_LNEN_LN0_Pos (0UL) /*!< DLR LNEN: LN0 (Bit 0) */ -#define DLR_LNEN_LN0_Msk (0x1UL) /*!< DLR LNEN: LN0 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN1_Pos (1UL) /*!< DLR LNEN: LN1 (Bit 1) */ -#define DLR_LNEN_LN1_Msk (0x2UL) /*!< DLR LNEN: LN1 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN2_Pos (2UL) /*!< DLR LNEN: LN2 (Bit 2) */ -#define DLR_LNEN_LN2_Msk (0x4UL) /*!< DLR LNEN: LN2 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN3_Pos (3UL) /*!< DLR LNEN: LN3 (Bit 3) */ -#define DLR_LNEN_LN3_Msk (0x8UL) /*!< DLR LNEN: LN3 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN4_Pos (4UL) /*!< DLR LNEN: LN4 (Bit 4) */ -#define DLR_LNEN_LN4_Msk \ - (0x10UL) /*!< DLR LNEN: LN4 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN5_Pos (5UL) /*!< DLR LNEN: LN5 (Bit 5) */ -#define DLR_LNEN_LN5_Msk \ - (0x20UL) /*!< DLR LNEN: LN5 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN6_Pos (6UL) /*!< DLR LNEN: LN6 (Bit 6) */ -#define DLR_LNEN_LN6_Msk \ - (0x40UL) /*!< DLR LNEN: LN6 (Bitfield-Mask: 0x01) */ -#define DLR_LNEN_LN7_Pos (7UL) /*!< DLR LNEN: LN7 (Bit 7) */ -#define DLR_LNEN_LN7_Msk \ - (0x80UL) /*!< DLR LNEN: LN7 (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'ERU' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- ERU_EXISEL --------------------------------- */ -#define ERU_EXISEL_EXS0A_Pos \ - (0UL) /*!< ERU EXISEL: EXS0A (Bit 0) */ -#define ERU_EXISEL_EXS0A_Msk \ - (0x3UL) /*!< ERU EXISEL: EXS0A (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS0B_Pos \ - (2UL) /*!< ERU EXISEL: EXS0B (Bit 2) */ -#define ERU_EXISEL_EXS0B_Msk \ - (0xcUL) /*!< ERU EXISEL: EXS0B (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS1A_Pos \ - (4UL) /*!< ERU EXISEL: EXS1A (Bit 4) */ -#define ERU_EXISEL_EXS1A_Msk \ - (0x30UL) /*!< ERU EXISEL: EXS1A (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS1B_Pos \ - (6UL) /*!< ERU EXISEL: EXS1B (Bit 6) */ -#define ERU_EXISEL_EXS1B_Msk \ - (0xc0UL) /*!< ERU EXISEL: EXS1B (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS2A_Pos \ - (8UL) /*!< ERU EXISEL: EXS2A (Bit 8) */ -#define ERU_EXISEL_EXS2A_Msk \ - (0x300UL) /*!< ERU EXISEL: EXS2A (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS2B_Pos \ - (10UL) /*!< ERU EXISEL: EXS2B (Bit 10) */ -#define ERU_EXISEL_EXS2B_Msk \ - (0xc00UL) /*!< ERU EXISEL: EXS2B (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS3A_Pos \ - (12UL) /*!< ERU EXISEL: EXS3A (Bit 12) */ -#define ERU_EXISEL_EXS3A_Msk \ - (0x3000UL) /*!< ERU EXISEL: EXS3A (Bitfield-Mask: 0x03) */ -#define ERU_EXISEL_EXS3B_Pos \ - (14UL) /*!< ERU EXISEL: EXS3B (Bit 14) */ -#define ERU_EXISEL_EXS3B_Msk \ - (0xc000UL) /*!< ERU EXISEL: EXS3B (Bitfield-Mask: 0x03) */ - -/* --------------------------------- ERU_EXICON --------------------------------- */ -#define ERU_EXICON_PE_Pos (0UL) /*!< ERU EXICON: PE (Bit 0) */ -#define ERU_EXICON_PE_Msk \ - (0x1UL) /*!< ERU EXICON: PE (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_LD_Pos (1UL) /*!< ERU EXICON: LD (Bit 1) */ -#define ERU_EXICON_LD_Msk \ - (0x2UL) /*!< ERU EXICON: LD (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_RE_Pos (2UL) /*!< ERU EXICON: RE (Bit 2) */ -#define ERU_EXICON_RE_Msk \ - (0x4UL) /*!< ERU EXICON: RE (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_FE_Pos (3UL) /*!< ERU EXICON: FE (Bit 3) */ -#define ERU_EXICON_FE_Msk \ - (0x8UL) /*!< ERU EXICON: FE (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_OCS_Pos (4UL) /*!< ERU EXICON: OCS (Bit 4) */ -#define ERU_EXICON_OCS_Msk \ - (0x70UL) /*!< ERU EXICON: OCS (Bitfield-Mask: 0x07) */ -#define ERU_EXICON_FL_Pos (7UL) /*!< ERU EXICON: FL (Bit 7) */ -#define ERU_EXICON_FL_Msk \ - (0x80UL) /*!< ERU EXICON: FL (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_SS_Pos (8UL) /*!< ERU EXICON: SS (Bit 8) */ -#define ERU_EXICON_SS_Msk \ - (0x300UL) /*!< ERU EXICON: SS (Bitfield-Mask: 0x03) */ -#define ERU_EXICON_NA_Pos (10UL) /*!< ERU EXICON: NA (Bit 10) */ -#define ERU_EXICON_NA_Msk \ - (0x400UL) /*!< ERU EXICON: NA (Bitfield-Mask: 0x01) */ -#define ERU_EXICON_NB_Pos (11UL) /*!< ERU EXICON: NB (Bit 11) */ -#define ERU_EXICON_NB_Msk \ - (0x800UL) /*!< ERU EXICON: NB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- ERU_EXOCON --------------------------------- */ -#define ERU_EXOCON_ISS_Pos (0UL) /*!< ERU EXOCON: ISS (Bit 0) */ -#define ERU_EXOCON_ISS_Msk \ - (0x3UL) /*!< ERU EXOCON: ISS (Bitfield-Mask: 0x03) */ -#define ERU_EXOCON_GEEN_Pos \ - (2UL) /*!< ERU EXOCON: GEEN (Bit 2) */ -#define ERU_EXOCON_GEEN_Msk \ - (0x4UL) /*!< ERU EXOCON: GEEN (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_PDR_Pos (3UL) /*!< ERU EXOCON: PDR (Bit 3) */ -#define ERU_EXOCON_PDR_Msk \ - (0x8UL) /*!< ERU EXOCON: PDR (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_GP_Pos (4UL) /*!< ERU EXOCON: GP (Bit 4) */ -#define ERU_EXOCON_GP_Msk \ - (0x30UL) /*!< ERU EXOCON: GP (Bitfield-Mask: 0x03) */ -#define ERU_EXOCON_IPEN0_Pos \ - (12UL) /*!< ERU EXOCON: IPEN0 (Bit 12) */ -#define ERU_EXOCON_IPEN0_Msk \ - (0x1000UL) /*!< ERU EXOCON: IPEN0 (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_IPEN1_Pos \ - (13UL) /*!< ERU EXOCON: IPEN1 (Bit 13) */ -#define ERU_EXOCON_IPEN1_Msk \ - (0x2000UL) /*!< ERU EXOCON: IPEN1 (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_IPEN2_Pos \ - (14UL) /*!< ERU EXOCON: IPEN2 (Bit 14) */ -#define ERU_EXOCON_IPEN2_Msk \ - (0x4000UL) /*!< ERU EXOCON: IPEN2 (Bitfield-Mask: 0x01) */ -#define ERU_EXOCON_IPEN3_Pos \ - (15UL) /*!< ERU EXOCON: IPEN3 (Bit 15) */ -#define ERU_EXOCON_IPEN3_Msk \ - (0x8000UL) /*!< ERU EXOCON: IPEN3 (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'GPDMA0' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- GPDMA0_RAWTFR ------------------------------- */ -#define GPDMA0_RAWTFR_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWTFR: CH0 (Bit 0) */ -#define GPDMA0_RAWTFR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWTFR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWTFR: CH1 (Bit 1) */ -#define GPDMA0_RAWTFR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWTFR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWTFR: CH2 (Bit 2) */ -#define GPDMA0_RAWTFR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWTFR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWTFR: CH3 (Bit 3) */ -#define GPDMA0_RAWTFR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWTFR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWTFR: CH4 (Bit 4) */ -#define GPDMA0_RAWTFR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWTFR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWTFR: CH5 (Bit 5) */ -#define GPDMA0_RAWTFR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWTFR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWTFR: CH6 (Bit 6) */ -#define GPDMA0_RAWTFR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWTFR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWTFR_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWTFR: CH7 (Bit 7) */ -#define GPDMA0_RAWTFR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWTFR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_RAWBLOCK ------------------------------ */ -#define GPDMA0_RAWBLOCK_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWBLOCK: CH0 (Bit 0) */ -#define GPDMA0_RAWBLOCK_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWBLOCK: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWBLOCK: CH1 (Bit 1) */ -#define GPDMA0_RAWBLOCK_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWBLOCK: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWBLOCK: CH2 (Bit 2) */ -#define GPDMA0_RAWBLOCK_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWBLOCK: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWBLOCK: CH3 (Bit 3) */ -#define GPDMA0_RAWBLOCK_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWBLOCK: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWBLOCK: CH4 (Bit 4) */ -#define GPDMA0_RAWBLOCK_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWBLOCK: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWBLOCK: CH5 (Bit 5) */ -#define GPDMA0_RAWBLOCK_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWBLOCK: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWBLOCK: CH6 (Bit 6) */ -#define GPDMA0_RAWBLOCK_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWBLOCK: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWBLOCK_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWBLOCK: CH7 (Bit 7) */ -#define GPDMA0_RAWBLOCK_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWBLOCK: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_RAWSRCTRAN ----------------------------- */ -#define GPDMA0_RAWSRCTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWSRCTRAN: CH0 (Bit 0) */ -#define GPDMA0_RAWSRCTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWSRCTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWSRCTRAN: CH1 (Bit 1) */ -#define GPDMA0_RAWSRCTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWSRCTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWSRCTRAN: CH2 (Bit 2) */ -#define GPDMA0_RAWSRCTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWSRCTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWSRCTRAN: CH3 (Bit 3) */ -#define GPDMA0_RAWSRCTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWSRCTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWSRCTRAN: CH4 (Bit 4) */ -#define GPDMA0_RAWSRCTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWSRCTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWSRCTRAN: CH5 (Bit 5) */ -#define GPDMA0_RAWSRCTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWSRCTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWSRCTRAN: CH6 (Bit 6) */ -#define GPDMA0_RAWSRCTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWSRCTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWSRCTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWSRCTRAN: CH7 (Bit 7) */ -#define GPDMA0_RAWSRCTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWSRCTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_RAWDSTTRAN ----------------------------- */ -#define GPDMA0_RAWDSTTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWDSTTRAN: CH0 (Bit 0) */ -#define GPDMA0_RAWDSTTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWDSTTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWDSTTRAN: CH1 (Bit 1) */ -#define GPDMA0_RAWDSTTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWDSTTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWDSTTRAN: CH2 (Bit 2) */ -#define GPDMA0_RAWDSTTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWDSTTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWDSTTRAN: CH3 (Bit 3) */ -#define GPDMA0_RAWDSTTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWDSTTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWDSTTRAN: CH4 (Bit 4) */ -#define GPDMA0_RAWDSTTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWDSTTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWDSTTRAN: CH5 (Bit 5) */ -#define GPDMA0_RAWDSTTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWDSTTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWDSTTRAN: CH6 (Bit 6) */ -#define GPDMA0_RAWDSTTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWDSTTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWDSTTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWDSTTRAN: CH7 (Bit 7) */ -#define GPDMA0_RAWDSTTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWDSTTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- GPDMA0_RAWERR ------------------------------- */ -#define GPDMA0_RAWERR_CH0_Pos \ - (0UL) /*!< GPDMA0 RAWERR: CH0 (Bit 0) */ -#define GPDMA0_RAWERR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 RAWERR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH1_Pos \ - (1UL) /*!< GPDMA0 RAWERR: CH1 (Bit 1) */ -#define GPDMA0_RAWERR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 RAWERR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH2_Pos \ - (2UL) /*!< GPDMA0 RAWERR: CH2 (Bit 2) */ -#define GPDMA0_RAWERR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 RAWERR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH3_Pos \ - (3UL) /*!< GPDMA0 RAWERR: CH3 (Bit 3) */ -#define GPDMA0_RAWERR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 RAWERR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH4_Pos \ - (4UL) /*!< GPDMA0 RAWERR: CH4 (Bit 4) */ -#define GPDMA0_RAWERR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 RAWERR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH5_Pos \ - (5UL) /*!< GPDMA0 RAWERR: CH5 (Bit 5) */ -#define GPDMA0_RAWERR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 RAWERR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH6_Pos \ - (6UL) /*!< GPDMA0 RAWERR: CH6 (Bit 6) */ -#define GPDMA0_RAWERR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 RAWERR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_RAWERR_CH7_Pos \ - (7UL) /*!< GPDMA0 RAWERR: CH7 (Bit 7) */ -#define GPDMA0_RAWERR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 RAWERR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_STATUSTFR ------------------------------ */ -#define GPDMA0_STATUSTFR_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSTFR: CH0 (Bit 0) */ -#define GPDMA0_STATUSTFR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSTFR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSTFR: CH1 (Bit 1) */ -#define GPDMA0_STATUSTFR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSTFR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSTFR: CH2 (Bit 2) */ -#define GPDMA0_STATUSTFR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSTFR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSTFR: CH3 (Bit 3) */ -#define GPDMA0_STATUSTFR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSTFR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSTFR: CH4 (Bit 4) */ -#define GPDMA0_STATUSTFR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSTFR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSTFR: CH5 (Bit 5) */ -#define GPDMA0_STATUSTFR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSTFR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSTFR: CH6 (Bit 6) */ -#define GPDMA0_STATUSTFR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSTFR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSTFR_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSTFR: CH7 (Bit 7) */ -#define GPDMA0_STATUSTFR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSTFR: CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_STATUSBLOCK ----------------------------- */ -#define GPDMA0_STATUSBLOCK_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSBLOCK: CH0 (Bit 0) */ -#define GPDMA0_STATUSBLOCK_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSBLOCK: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSBLOCK: CH1 (Bit 1) */ -#define GPDMA0_STATUSBLOCK_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSBLOCK: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSBLOCK: CH2 (Bit 2) */ -#define GPDMA0_STATUSBLOCK_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSBLOCK: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSBLOCK: CH3 (Bit 3) */ -#define GPDMA0_STATUSBLOCK_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSBLOCK: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSBLOCK: CH4 (Bit 4) */ -#define GPDMA0_STATUSBLOCK_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSBLOCK: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSBLOCK: CH5 (Bit 5) */ -#define GPDMA0_STATUSBLOCK_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSBLOCK: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSBLOCK: CH6 (Bit 6) */ -#define GPDMA0_STATUSBLOCK_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSBLOCK: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSBLOCK_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSBLOCK: CH7 (Bit 7) */ -#define GPDMA0_STATUSBLOCK_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSBLOCK: CH7 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- GPDMA0_STATUSSRCTRAN ---------------------------- */ -#define GPDMA0_STATUSSRCTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSSRCTRAN: CH0 (Bit 0) */ -#define GPDMA0_STATUSSRCTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSSRCTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSSRCTRAN: CH1 (Bit 1) */ -#define GPDMA0_STATUSSRCTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSSRCTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSSRCTRAN: CH2 (Bit 2) */ -#define GPDMA0_STATUSSRCTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSSRCTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSSRCTRAN: CH3 (Bit 3) */ -#define GPDMA0_STATUSSRCTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSSRCTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSSRCTRAN: CH4 (Bit 4) */ -#define GPDMA0_STATUSSRCTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSSRCTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSSRCTRAN: CH5 (Bit 5) */ -#define GPDMA0_STATUSSRCTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSSRCTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSSRCTRAN: CH6 (Bit 6) */ -#define GPDMA0_STATUSSRCTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSSRCTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSSRCTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSSRCTRAN: CH7 (Bit 7) */ -#define GPDMA0_STATUSSRCTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSSRCTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- GPDMA0_STATUSDSTTRAN ---------------------------- */ -#define GPDMA0_STATUSDSTTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSDSTTRAN: CH0 (Bit 0) */ -#define GPDMA0_STATUSDSTTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSDSTTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSDSTTRAN: CH1 (Bit 1) */ -#define GPDMA0_STATUSDSTTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSDSTTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSDSTTRAN: CH2 (Bit 2) */ -#define GPDMA0_STATUSDSTTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSDSTTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSDSTTRAN: CH3 (Bit 3) */ -#define GPDMA0_STATUSDSTTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSDSTTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSDSTTRAN: CH4 (Bit 4) */ -#define GPDMA0_STATUSDSTTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSDSTTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSDSTTRAN: CH5 (Bit 5) */ -#define GPDMA0_STATUSDSTTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSDSTTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSDSTTRAN: CH6 (Bit 6) */ -#define GPDMA0_STATUSDSTTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSDSTTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSDSTTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSDSTTRAN: CH7 (Bit 7) */ -#define GPDMA0_STATUSDSTTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSDSTTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_STATUSERR ------------------------------ */ -#define GPDMA0_STATUSERR_CH0_Pos \ - (0UL) /*!< GPDMA0 STATUSERR: CH0 (Bit 0) */ -#define GPDMA0_STATUSERR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 STATUSERR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH1_Pos \ - (1UL) /*!< GPDMA0 STATUSERR: CH1 (Bit 1) */ -#define GPDMA0_STATUSERR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 STATUSERR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH2_Pos \ - (2UL) /*!< GPDMA0 STATUSERR: CH2 (Bit 2) */ -#define GPDMA0_STATUSERR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 STATUSERR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH3_Pos \ - (3UL) /*!< GPDMA0 STATUSERR: CH3 (Bit 3) */ -#define GPDMA0_STATUSERR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 STATUSERR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH4_Pos \ - (4UL) /*!< GPDMA0 STATUSERR: CH4 (Bit 4) */ -#define GPDMA0_STATUSERR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 STATUSERR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH5_Pos \ - (5UL) /*!< GPDMA0 STATUSERR: CH5 (Bit 5) */ -#define GPDMA0_STATUSERR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 STATUSERR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH6_Pos \ - (6UL) /*!< GPDMA0 STATUSERR: CH6 (Bit 6) */ -#define GPDMA0_STATUSERR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 STATUSERR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSERR_CH7_Pos \ - (7UL) /*!< GPDMA0 STATUSERR: CH7 (Bit 7) */ -#define GPDMA0_STATUSERR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 STATUSERR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_MASKTFR ------------------------------- */ -#define GPDMA0_MASKTFR_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKTFR: CH0 (Bit 0) */ -#define GPDMA0_MASKTFR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKTFR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKTFR: CH1 (Bit 1) */ -#define GPDMA0_MASKTFR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKTFR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKTFR: CH2 (Bit 2) */ -#define GPDMA0_MASKTFR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKTFR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKTFR: CH3 (Bit 3) */ -#define GPDMA0_MASKTFR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKTFR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKTFR: CH4 (Bit 4) */ -#define GPDMA0_MASKTFR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKTFR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKTFR: CH5 (Bit 5) */ -#define GPDMA0_MASKTFR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKTFR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKTFR: CH6 (Bit 6) */ -#define GPDMA0_MASKTFR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKTFR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKTFR: CH7 (Bit 7) */ -#define GPDMA0_MASKTFR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKTFR: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKTFR: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKTFR_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKTFR: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKTFR: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKTFR_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKTFR: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKTFR: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKTFR_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKTFR: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKTFR: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKTFR_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKTFR: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKTFR: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKTFR_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKTFR: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKTFR: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKTFR_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKTFR: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKTFR: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKTFR_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKTFR: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKTFR_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKTFR: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKTFR_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKTFR: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_MASKBLOCK ------------------------------ */ -#define GPDMA0_MASKBLOCK_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKBLOCK: CH0 (Bit 0) */ -#define GPDMA0_MASKBLOCK_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKBLOCK: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKBLOCK: CH1 (Bit 1) */ -#define GPDMA0_MASKBLOCK_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKBLOCK: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKBLOCK: CH2 (Bit 2) */ -#define GPDMA0_MASKBLOCK_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKBLOCK: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKBLOCK: CH3 (Bit 3) */ -#define GPDMA0_MASKBLOCK_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKBLOCK: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKBLOCK: CH4 (Bit 4) */ -#define GPDMA0_MASKBLOCK_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKBLOCK: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKBLOCK: CH5 (Bit 5) */ -#define GPDMA0_MASKBLOCK_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKBLOCK: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKBLOCK: CH6 (Bit 6) */ -#define GPDMA0_MASKBLOCK_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKBLOCK: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKBLOCK: CH7 (Bit 7) */ -#define GPDMA0_MASKBLOCK_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKBLOCK: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKBLOCK: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKBLOCK_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKBLOCK: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKBLOCK: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKBLOCK_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKBLOCK: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKBLOCK: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKBLOCK_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKBLOCK: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKBLOCK: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKBLOCK_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKBLOCK: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKBLOCK: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKBLOCK_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKBLOCK: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKBLOCK: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKBLOCK_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKBLOCK: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKBLOCK: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKBLOCK_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKBLOCK: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKBLOCK_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKBLOCK: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKBLOCK_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKBLOCK: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_MASKSRCTRAN ----------------------------- */ -#define GPDMA0_MASKSRCTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKSRCTRAN: CH0 (Bit 0) */ -#define GPDMA0_MASKSRCTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKSRCTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKSRCTRAN: CH1 (Bit 1) */ -#define GPDMA0_MASKSRCTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKSRCTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKSRCTRAN: CH2 (Bit 2) */ -#define GPDMA0_MASKSRCTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKSRCTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKSRCTRAN: CH3 (Bit 3) */ -#define GPDMA0_MASKSRCTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKSRCTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKSRCTRAN: CH4 (Bit 4) */ -#define GPDMA0_MASKSRCTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKSRCTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKSRCTRAN: CH5 (Bit 5) */ -#define GPDMA0_MASKSRCTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKSRCTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKSRCTRAN: CH6 (Bit 6) */ -#define GPDMA0_MASKSRCTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKSRCTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKSRCTRAN: CH7 (Bit 7) */ -#define GPDMA0_MASKSRCTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKSRCTRAN: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKSRCTRAN_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKSRCTRAN_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKSRCTRAN_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKSRCTRAN_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKSRCTRAN_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKSRCTRAN_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKSRCTRAN_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKSRCTRAN_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKSRCTRAN_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKSRCTRAN: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_MASKDSTTRAN ----------------------------- */ -#define GPDMA0_MASKDSTTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKDSTTRAN: CH0 (Bit 0) */ -#define GPDMA0_MASKDSTTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKDSTTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKDSTTRAN: CH1 (Bit 1) */ -#define GPDMA0_MASKDSTTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKDSTTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKDSTTRAN: CH2 (Bit 2) */ -#define GPDMA0_MASKDSTTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKDSTTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKDSTTRAN: CH3 (Bit 3) */ -#define GPDMA0_MASKDSTTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKDSTTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKDSTTRAN: CH4 (Bit 4) */ -#define GPDMA0_MASKDSTTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKDSTTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKDSTTRAN: CH5 (Bit 5) */ -#define GPDMA0_MASKDSTTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKDSTTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKDSTTRAN: CH6 (Bit 6) */ -#define GPDMA0_MASKDSTTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKDSTTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKDSTTRAN: CH7 (Bit 7) */ -#define GPDMA0_MASKDSTTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKDSTTRAN: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKDSTTRAN_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKDSTTRAN_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKDSTTRAN_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKDSTTRAN_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKDSTTRAN_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKDSTTRAN_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKDSTTRAN_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKDSTTRAN_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKDSTTRAN_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKDSTTRAN: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_MASKERR ------------------------------- */ -#define GPDMA0_MASKERR_CH0_Pos \ - (0UL) /*!< GPDMA0 MASKERR: CH0 (Bit 0) */ -#define GPDMA0_MASKERR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 MASKERR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH1_Pos \ - (1UL) /*!< GPDMA0 MASKERR: CH1 (Bit 1) */ -#define GPDMA0_MASKERR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 MASKERR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH2_Pos \ - (2UL) /*!< GPDMA0 MASKERR: CH2 (Bit 2) */ -#define GPDMA0_MASKERR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 MASKERR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH3_Pos \ - (3UL) /*!< GPDMA0 MASKERR: CH3 (Bit 3) */ -#define GPDMA0_MASKERR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 MASKERR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH4_Pos \ - (4UL) /*!< GPDMA0 MASKERR: CH4 (Bit 4) */ -#define GPDMA0_MASKERR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 MASKERR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH5_Pos \ - (5UL) /*!< GPDMA0 MASKERR: CH5 (Bit 5) */ -#define GPDMA0_MASKERR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 MASKERR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH6_Pos \ - (6UL) /*!< GPDMA0 MASKERR: CH6 (Bit 6) */ -#define GPDMA0_MASKERR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 MASKERR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_CH7_Pos \ - (7UL) /*!< GPDMA0 MASKERR: CH7 (Bit 7) */ -#define GPDMA0_MASKERR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 MASKERR: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 MASKERR: WE_CH0 (Bit 8) */ -#define GPDMA0_MASKERR_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 MASKERR: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 MASKERR: WE_CH1 (Bit 9) */ -#define GPDMA0_MASKERR_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 MASKERR: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 MASKERR: WE_CH2 (Bit 10) */ -#define GPDMA0_MASKERR_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 MASKERR: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 MASKERR: WE_CH3 (Bit 11) */ -#define GPDMA0_MASKERR_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 MASKERR: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 MASKERR: WE_CH4 (Bit 12) */ -#define GPDMA0_MASKERR_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 MASKERR: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 MASKERR: WE_CH5 (Bit 13) */ -#define GPDMA0_MASKERR_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 MASKERR: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 MASKERR: WE_CH6 (Bit 14) */ -#define GPDMA0_MASKERR_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 MASKERR: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_MASKERR_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 MASKERR: WE_CH7 (Bit 15) */ -#define GPDMA0_MASKERR_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 MASKERR: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_CLEARTFR ------------------------------ */ -#define GPDMA0_CLEARTFR_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARTFR: CH0 (Bit 0) */ -#define GPDMA0_CLEARTFR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARTFR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARTFR: CH1 (Bit 1) */ -#define GPDMA0_CLEARTFR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARTFR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARTFR: CH2 (Bit 2) */ -#define GPDMA0_CLEARTFR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARTFR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARTFR: CH3 (Bit 3) */ -#define GPDMA0_CLEARTFR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARTFR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARTFR: CH4 (Bit 4) */ -#define GPDMA0_CLEARTFR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARTFR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARTFR: CH5 (Bit 5) */ -#define GPDMA0_CLEARTFR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARTFR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARTFR: CH6 (Bit 6) */ -#define GPDMA0_CLEARTFR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARTFR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARTFR_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARTFR: CH7 (Bit 7) */ -#define GPDMA0_CLEARTFR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARTFR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_CLEARBLOCK ----------------------------- */ -#define GPDMA0_CLEARBLOCK_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARBLOCK: CH0 (Bit 0) */ -#define GPDMA0_CLEARBLOCK_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARBLOCK: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARBLOCK: CH1 (Bit 1) */ -#define GPDMA0_CLEARBLOCK_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARBLOCK: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARBLOCK: CH2 (Bit 2) */ -#define GPDMA0_CLEARBLOCK_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARBLOCK: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARBLOCK: CH3 (Bit 3) */ -#define GPDMA0_CLEARBLOCK_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARBLOCK: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARBLOCK: CH4 (Bit 4) */ -#define GPDMA0_CLEARBLOCK_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARBLOCK: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARBLOCK: CH5 (Bit 5) */ -#define GPDMA0_CLEARBLOCK_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARBLOCK: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARBLOCK: CH6 (Bit 6) */ -#define GPDMA0_CLEARBLOCK_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARBLOCK: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARBLOCK_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARBLOCK: CH7 (Bit 7) */ -#define GPDMA0_CLEARBLOCK_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARBLOCK: CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_CLEARSRCTRAN ---------------------------- */ -#define GPDMA0_CLEARSRCTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARSRCTRAN: CH0 (Bit 0) */ -#define GPDMA0_CLEARSRCTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARSRCTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARSRCTRAN: CH1 (Bit 1) */ -#define GPDMA0_CLEARSRCTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARSRCTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARSRCTRAN: CH2 (Bit 2) */ -#define GPDMA0_CLEARSRCTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARSRCTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARSRCTRAN: CH3 (Bit 3) */ -#define GPDMA0_CLEARSRCTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARSRCTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARSRCTRAN: CH4 (Bit 4) */ -#define GPDMA0_CLEARSRCTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARSRCTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARSRCTRAN: CH5 (Bit 5) */ -#define GPDMA0_CLEARSRCTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARSRCTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARSRCTRAN: CH6 (Bit 6) */ -#define GPDMA0_CLEARSRCTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARSRCTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARSRCTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARSRCTRAN: CH7 (Bit 7) */ -#define GPDMA0_CLEARSRCTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARSRCTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_CLEARDSTTRAN ---------------------------- */ -#define GPDMA0_CLEARDSTTRAN_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARDSTTRAN: CH0 (Bit 0) */ -#define GPDMA0_CLEARDSTTRAN_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARDSTTRAN: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARDSTTRAN: CH1 (Bit 1) */ -#define GPDMA0_CLEARDSTTRAN_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARDSTTRAN: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARDSTTRAN: CH2 (Bit 2) */ -#define GPDMA0_CLEARDSTTRAN_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARDSTTRAN: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARDSTTRAN: CH3 (Bit 3) */ -#define GPDMA0_CLEARDSTTRAN_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARDSTTRAN: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARDSTTRAN: CH4 (Bit 4) */ -#define GPDMA0_CLEARDSTTRAN_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARDSTTRAN: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARDSTTRAN: CH5 (Bit 5) */ -#define GPDMA0_CLEARDSTTRAN_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARDSTTRAN: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARDSTTRAN: CH6 (Bit 6) */ -#define GPDMA0_CLEARDSTTRAN_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARDSTTRAN: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARDSTTRAN_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARDSTTRAN: CH7 (Bit 7) */ -#define GPDMA0_CLEARDSTTRAN_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARDSTTRAN: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_CLEARERR ------------------------------ */ -#define GPDMA0_CLEARERR_CH0_Pos \ - (0UL) /*!< GPDMA0 CLEARERR: CH0 (Bit 0) */ -#define GPDMA0_CLEARERR_CH0_Msk \ - (0x1UL) /*!< GPDMA0 CLEARERR: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH1_Pos \ - (1UL) /*!< GPDMA0 CLEARERR: CH1 (Bit 1) */ -#define GPDMA0_CLEARERR_CH1_Msk \ - (0x2UL) /*!< GPDMA0 CLEARERR: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH2_Pos \ - (2UL) /*!< GPDMA0 CLEARERR: CH2 (Bit 2) */ -#define GPDMA0_CLEARERR_CH2_Msk \ - (0x4UL) /*!< GPDMA0 CLEARERR: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH3_Pos \ - (3UL) /*!< GPDMA0 CLEARERR: CH3 (Bit 3) */ -#define GPDMA0_CLEARERR_CH3_Msk \ - (0x8UL) /*!< GPDMA0 CLEARERR: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH4_Pos \ - (4UL) /*!< GPDMA0 CLEARERR: CH4 (Bit 4) */ -#define GPDMA0_CLEARERR_CH4_Msk \ - (0x10UL) /*!< GPDMA0 CLEARERR: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH5_Pos \ - (5UL) /*!< GPDMA0 CLEARERR: CH5 (Bit 5) */ -#define GPDMA0_CLEARERR_CH5_Msk \ - (0x20UL) /*!< GPDMA0 CLEARERR: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH6_Pos \ - (6UL) /*!< GPDMA0 CLEARERR: CH6 (Bit 6) */ -#define GPDMA0_CLEARERR_CH6_Msk \ - (0x40UL) /*!< GPDMA0 CLEARERR: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_CLEARERR_CH7_Pos \ - (7UL) /*!< GPDMA0 CLEARERR: CH7 (Bit 7) */ -#define GPDMA0_CLEARERR_CH7_Msk \ - (0x80UL) /*!< GPDMA0 CLEARERR: CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_STATUSINT ------------------------------ */ -#define GPDMA0_STATUSINT_TFR_Pos \ - (0UL) /*!< GPDMA0 STATUSINT: TFR (Bit 0) */ -#define GPDMA0_STATUSINT_TFR_Msk \ - (0x1UL) /*!< GPDMA0 STATUSINT: TFR (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSINT_BLOCK_Pos \ - (1UL) /*!< GPDMA0 STATUSINT: BLOCK (Bit 1) */ -#define GPDMA0_STATUSINT_BLOCK_Msk \ - (0x2UL) /*!< GPDMA0 STATUSINT: BLOCK (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSINT_SRCT_Pos \ - (2UL) /*!< GPDMA0 STATUSINT: SRCT (Bit 2) */ -#define GPDMA0_STATUSINT_SRCT_Msk \ - (0x4UL) /*!< GPDMA0 STATUSINT: SRCT (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSINT_DSTT_Pos \ - (3UL) /*!< GPDMA0 STATUSINT: DSTT (Bit 3) */ -#define GPDMA0_STATUSINT_DSTT_Msk \ - (0x8UL) /*!< GPDMA0 STATUSINT: DSTT (Bitfield-Mask: 0x01) */ -#define GPDMA0_STATUSINT_ERR_Pos \ - (4UL) /*!< GPDMA0 STATUSINT: ERR (Bit 4) */ -#define GPDMA0_STATUSINT_ERR_Msk \ - (0x10UL) /*!< GPDMA0 STATUSINT: ERR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_REQSRCREG ------------------------------ */ -#define GPDMA0_REQSRCREG_CH0_Pos \ - (0UL) /*!< GPDMA0 REQSRCREG: CH0 (Bit 0) */ -#define GPDMA0_REQSRCREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 REQSRCREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH1_Pos \ - (1UL) /*!< GPDMA0 REQSRCREG: CH1 (Bit 1) */ -#define GPDMA0_REQSRCREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 REQSRCREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH2_Pos \ - (2UL) /*!< GPDMA0 REQSRCREG: CH2 (Bit 2) */ -#define GPDMA0_REQSRCREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 REQSRCREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH3_Pos \ - (3UL) /*!< GPDMA0 REQSRCREG: CH3 (Bit 3) */ -#define GPDMA0_REQSRCREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 REQSRCREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH4_Pos \ - (4UL) /*!< GPDMA0 REQSRCREG: CH4 (Bit 4) */ -#define GPDMA0_REQSRCREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 REQSRCREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH5_Pos \ - (5UL) /*!< GPDMA0 REQSRCREG: CH5 (Bit 5) */ -#define GPDMA0_REQSRCREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 REQSRCREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH6_Pos \ - (6UL) /*!< GPDMA0 REQSRCREG: CH6 (Bit 6) */ -#define GPDMA0_REQSRCREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 REQSRCREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_CH7_Pos \ - (7UL) /*!< GPDMA0 REQSRCREG: CH7 (Bit 7) */ -#define GPDMA0_REQSRCREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 REQSRCREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 REQSRCREG: WE_CH0 (Bit 8) */ -#define GPDMA0_REQSRCREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 REQSRCREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 REQSRCREG: WE_CH1 (Bit 9) */ -#define GPDMA0_REQSRCREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 REQSRCREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 REQSRCREG: WE_CH2 (Bit 10) */ -#define GPDMA0_REQSRCREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 REQSRCREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 REQSRCREG: WE_CH3 (Bit 11) */ -#define GPDMA0_REQSRCREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 REQSRCREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 REQSRCREG: WE_CH4 (Bit 12) */ -#define GPDMA0_REQSRCREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 REQSRCREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 REQSRCREG: WE_CH5 (Bit 13) */ -#define GPDMA0_REQSRCREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 REQSRCREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 REQSRCREG: WE_CH6 (Bit 14) */ -#define GPDMA0_REQSRCREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 REQSRCREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQSRCREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 REQSRCREG: WE_CH7 (Bit 15) */ -#define GPDMA0_REQSRCREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 REQSRCREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_REQDSTREG ------------------------------ */ -#define GPDMA0_REQDSTREG_CH0_Pos \ - (0UL) /*!< GPDMA0 REQDSTREG: CH0 (Bit 0) */ -#define GPDMA0_REQDSTREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 REQDSTREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH1_Pos \ - (1UL) /*!< GPDMA0 REQDSTREG: CH1 (Bit 1) */ -#define GPDMA0_REQDSTREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 REQDSTREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH2_Pos \ - (2UL) /*!< GPDMA0 REQDSTREG: CH2 (Bit 2) */ -#define GPDMA0_REQDSTREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 REQDSTREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH3_Pos \ - (3UL) /*!< GPDMA0 REQDSTREG: CH3 (Bit 3) */ -#define GPDMA0_REQDSTREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 REQDSTREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH4_Pos \ - (4UL) /*!< GPDMA0 REQDSTREG: CH4 (Bit 4) */ -#define GPDMA0_REQDSTREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 REQDSTREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH5_Pos \ - (5UL) /*!< GPDMA0 REQDSTREG: CH5 (Bit 5) */ -#define GPDMA0_REQDSTREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 REQDSTREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH6_Pos \ - (6UL) /*!< GPDMA0 REQDSTREG: CH6 (Bit 6) */ -#define GPDMA0_REQDSTREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 REQDSTREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_CH7_Pos \ - (7UL) /*!< GPDMA0 REQDSTREG: CH7 (Bit 7) */ -#define GPDMA0_REQDSTREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 REQDSTREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 REQDSTREG: WE_CH0 (Bit 8) */ -#define GPDMA0_REQDSTREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 REQDSTREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 REQDSTREG: WE_CH1 (Bit 9) */ -#define GPDMA0_REQDSTREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 REQDSTREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 REQDSTREG: WE_CH2 (Bit 10) */ -#define GPDMA0_REQDSTREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 REQDSTREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 REQDSTREG: WE_CH3 (Bit 11) */ -#define GPDMA0_REQDSTREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 REQDSTREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 REQDSTREG: WE_CH4 (Bit 12) */ -#define GPDMA0_REQDSTREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 REQDSTREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 REQDSTREG: WE_CH5 (Bit 13) */ -#define GPDMA0_REQDSTREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 REQDSTREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 REQDSTREG: WE_CH6 (Bit 14) */ -#define GPDMA0_REQDSTREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 REQDSTREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_REQDSTREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 REQDSTREG: WE_CH7 (Bit 15) */ -#define GPDMA0_REQDSTREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 REQDSTREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_SGLREQSRCREG ---------------------------- */ -#define GPDMA0_SGLREQSRCREG_CH0_Pos \ - (0UL) /*!< GPDMA0 SGLREQSRCREG: CH0 (Bit 0) */ -#define GPDMA0_SGLREQSRCREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 SGLREQSRCREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH1_Pos \ - (1UL) /*!< GPDMA0 SGLREQSRCREG: CH1 (Bit 1) */ -#define GPDMA0_SGLREQSRCREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 SGLREQSRCREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH2_Pos \ - (2UL) /*!< GPDMA0 SGLREQSRCREG: CH2 (Bit 2) */ -#define GPDMA0_SGLREQSRCREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 SGLREQSRCREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH3_Pos \ - (3UL) /*!< GPDMA0 SGLREQSRCREG: CH3 (Bit 3) */ -#define GPDMA0_SGLREQSRCREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 SGLREQSRCREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH4_Pos \ - (4UL) /*!< GPDMA0 SGLREQSRCREG: CH4 (Bit 4) */ -#define GPDMA0_SGLREQSRCREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 SGLREQSRCREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH5_Pos \ - (5UL) /*!< GPDMA0 SGLREQSRCREG: CH5 (Bit 5) */ -#define GPDMA0_SGLREQSRCREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 SGLREQSRCREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH6_Pos \ - (6UL) /*!< GPDMA0 SGLREQSRCREG: CH6 (Bit 6) */ -#define GPDMA0_SGLREQSRCREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 SGLREQSRCREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_CH7_Pos \ - (7UL) /*!< GPDMA0 SGLREQSRCREG: CH7 (Bit 7) */ -#define GPDMA0_SGLREQSRCREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 SGLREQSRCREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH0 (Bit 8) */ -#define GPDMA0_SGLREQSRCREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH1 (Bit 9) */ -#define GPDMA0_SGLREQSRCREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH2 (Bit 10) */ -#define GPDMA0_SGLREQSRCREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH3 (Bit 11) */ -#define GPDMA0_SGLREQSRCREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH4 (Bit 12) */ -#define GPDMA0_SGLREQSRCREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH5 (Bit 13) */ -#define GPDMA0_SGLREQSRCREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH6 (Bit 14) */ -#define GPDMA0_SGLREQSRCREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQSRCREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH7 (Bit 15) */ -#define GPDMA0_SGLREQSRCREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 SGLREQSRCREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_SGLREQDSTREG ---------------------------- */ -#define GPDMA0_SGLREQDSTREG_CH0_Pos \ - (0UL) /*!< GPDMA0 SGLREQDSTREG: CH0 (Bit 0) */ -#define GPDMA0_SGLREQDSTREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 SGLREQDSTREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH1_Pos \ - (1UL) /*!< GPDMA0 SGLREQDSTREG: CH1 (Bit 1) */ -#define GPDMA0_SGLREQDSTREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 SGLREQDSTREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH2_Pos \ - (2UL) /*!< GPDMA0 SGLREQDSTREG: CH2 (Bit 2) */ -#define GPDMA0_SGLREQDSTREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 SGLREQDSTREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH3_Pos \ - (3UL) /*!< GPDMA0 SGLREQDSTREG: CH3 (Bit 3) */ -#define GPDMA0_SGLREQDSTREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 SGLREQDSTREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH4_Pos \ - (4UL) /*!< GPDMA0 SGLREQDSTREG: CH4 (Bit 4) */ -#define GPDMA0_SGLREQDSTREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 SGLREQDSTREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH5_Pos \ - (5UL) /*!< GPDMA0 SGLREQDSTREG: CH5 (Bit 5) */ -#define GPDMA0_SGLREQDSTREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 SGLREQDSTREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH6_Pos \ - (6UL) /*!< GPDMA0 SGLREQDSTREG: CH6 (Bit 6) */ -#define GPDMA0_SGLREQDSTREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 SGLREQDSTREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_CH7_Pos \ - (7UL) /*!< GPDMA0 SGLREQDSTREG: CH7 (Bit 7) */ -#define GPDMA0_SGLREQDSTREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 SGLREQDSTREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH0 (Bit 8) */ -#define GPDMA0_SGLREQDSTREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH1 (Bit 9) */ -#define GPDMA0_SGLREQDSTREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH2 (Bit 10) */ -#define GPDMA0_SGLREQDSTREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH3 (Bit 11) */ -#define GPDMA0_SGLREQDSTREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH4 (Bit 12) */ -#define GPDMA0_SGLREQDSTREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH5 (Bit 13) */ -#define GPDMA0_SGLREQDSTREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH6 (Bit 14) */ -#define GPDMA0_SGLREQDSTREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_SGLREQDSTREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH7 (Bit 15) */ -#define GPDMA0_SGLREQDSTREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 SGLREQDSTREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_LSTSRCREG ------------------------------ */ -#define GPDMA0_LSTSRCREG_CH0_Pos \ - (0UL) /*!< GPDMA0 LSTSRCREG: CH0 (Bit 0) */ -#define GPDMA0_LSTSRCREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 LSTSRCREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH1_Pos \ - (1UL) /*!< GPDMA0 LSTSRCREG: CH1 (Bit 1) */ -#define GPDMA0_LSTSRCREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 LSTSRCREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH2_Pos \ - (2UL) /*!< GPDMA0 LSTSRCREG: CH2 (Bit 2) */ -#define GPDMA0_LSTSRCREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 LSTSRCREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH3_Pos \ - (3UL) /*!< GPDMA0 LSTSRCREG: CH3 (Bit 3) */ -#define GPDMA0_LSTSRCREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 LSTSRCREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH4_Pos \ - (4UL) /*!< GPDMA0 LSTSRCREG: CH4 (Bit 4) */ -#define GPDMA0_LSTSRCREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 LSTSRCREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH5_Pos \ - (5UL) /*!< GPDMA0 LSTSRCREG: CH5 (Bit 5) */ -#define GPDMA0_LSTSRCREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 LSTSRCREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH6_Pos \ - (6UL) /*!< GPDMA0 LSTSRCREG: CH6 (Bit 6) */ -#define GPDMA0_LSTSRCREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 LSTSRCREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_CH7_Pos \ - (7UL) /*!< GPDMA0 LSTSRCREG: CH7 (Bit 7) */ -#define GPDMA0_LSTSRCREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 LSTSRCREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 LSTSRCREG: WE_CH0 (Bit 8) */ -#define GPDMA0_LSTSRCREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 LSTSRCREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 LSTSRCREG: WE_CH1 (Bit 9) */ -#define GPDMA0_LSTSRCREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 LSTSRCREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 LSTSRCREG: WE_CH2 (Bit 10) */ -#define GPDMA0_LSTSRCREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 LSTSRCREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 LSTSRCREG: WE_CH3 (Bit 11) */ -#define GPDMA0_LSTSRCREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 LSTSRCREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 LSTSRCREG: WE_CH4 (Bit 12) */ -#define GPDMA0_LSTSRCREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 LSTSRCREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 LSTSRCREG: WE_CH5 (Bit 13) */ -#define GPDMA0_LSTSRCREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 LSTSRCREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 LSTSRCREG: WE_CH6 (Bit 14) */ -#define GPDMA0_LSTSRCREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 LSTSRCREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTSRCREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 LSTSRCREG: WE_CH7 (Bit 15) */ -#define GPDMA0_LSTSRCREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 LSTSRCREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_LSTDSTREG ------------------------------ */ -#define GPDMA0_LSTDSTREG_CH0_Pos \ - (0UL) /*!< GPDMA0 LSTDSTREG: CH0 (Bit 0) */ -#define GPDMA0_LSTDSTREG_CH0_Msk \ - (0x1UL) /*!< GPDMA0 LSTDSTREG: CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH1_Pos \ - (1UL) /*!< GPDMA0 LSTDSTREG: CH1 (Bit 1) */ -#define GPDMA0_LSTDSTREG_CH1_Msk \ - (0x2UL) /*!< GPDMA0 LSTDSTREG: CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH2_Pos \ - (2UL) /*!< GPDMA0 LSTDSTREG: CH2 (Bit 2) */ -#define GPDMA0_LSTDSTREG_CH2_Msk \ - (0x4UL) /*!< GPDMA0 LSTDSTREG: CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH3_Pos \ - (3UL) /*!< GPDMA0 LSTDSTREG: CH3 (Bit 3) */ -#define GPDMA0_LSTDSTREG_CH3_Msk \ - (0x8UL) /*!< GPDMA0 LSTDSTREG: CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH4_Pos \ - (4UL) /*!< GPDMA0 LSTDSTREG: CH4 (Bit 4) */ -#define GPDMA0_LSTDSTREG_CH4_Msk \ - (0x10UL) /*!< GPDMA0 LSTDSTREG: CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH5_Pos \ - (5UL) /*!< GPDMA0 LSTDSTREG: CH5 (Bit 5) */ -#define GPDMA0_LSTDSTREG_CH5_Msk \ - (0x20UL) /*!< GPDMA0 LSTDSTREG: CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH6_Pos \ - (6UL) /*!< GPDMA0 LSTDSTREG: CH6 (Bit 6) */ -#define GPDMA0_LSTDSTREG_CH6_Msk \ - (0x40UL) /*!< GPDMA0 LSTDSTREG: CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_CH7_Pos \ - (7UL) /*!< GPDMA0 LSTDSTREG: CH7 (Bit 7) */ -#define GPDMA0_LSTDSTREG_CH7_Msk \ - (0x80UL) /*!< GPDMA0 LSTDSTREG: CH7 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH0_Pos \ - (8UL) /*!< GPDMA0 LSTDSTREG: WE_CH0 (Bit 8) */ -#define GPDMA0_LSTDSTREG_WE_CH0_Msk \ - (0x100UL) /*!< GPDMA0 LSTDSTREG: WE_CH0 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH1_Pos \ - (9UL) /*!< GPDMA0 LSTDSTREG: WE_CH1 (Bit 9) */ -#define GPDMA0_LSTDSTREG_WE_CH1_Msk \ - (0x200UL) /*!< GPDMA0 LSTDSTREG: WE_CH1 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH2_Pos \ - (10UL) /*!< GPDMA0 LSTDSTREG: WE_CH2 (Bit 10) */ -#define GPDMA0_LSTDSTREG_WE_CH2_Msk \ - (0x400UL) /*!< GPDMA0 LSTDSTREG: WE_CH2 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH3_Pos \ - (11UL) /*!< GPDMA0 LSTDSTREG: WE_CH3 (Bit 11) */ -#define GPDMA0_LSTDSTREG_WE_CH3_Msk \ - (0x800UL) /*!< GPDMA0 LSTDSTREG: WE_CH3 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH4_Pos \ - (12UL) /*!< GPDMA0 LSTDSTREG: WE_CH4 (Bit 12) */ -#define GPDMA0_LSTDSTREG_WE_CH4_Msk \ - (0x1000UL) /*!< GPDMA0 LSTDSTREG: WE_CH4 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH5_Pos \ - (13UL) /*!< GPDMA0 LSTDSTREG: WE_CH5 (Bit 13) */ -#define GPDMA0_LSTDSTREG_WE_CH5_Msk \ - (0x2000UL) /*!< GPDMA0 LSTDSTREG: WE_CH5 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH6_Pos \ - (14UL) /*!< GPDMA0 LSTDSTREG: WE_CH6 (Bit 14) */ -#define GPDMA0_LSTDSTREG_WE_CH6_Msk \ - (0x4000UL) /*!< GPDMA0 LSTDSTREG: WE_CH6 (Bitfield-Mask: 0x01) */ -#define GPDMA0_LSTDSTREG_WE_CH7_Pos \ - (15UL) /*!< GPDMA0 LSTDSTREG: WE_CH7 (Bit 15) */ -#define GPDMA0_LSTDSTREG_WE_CH7_Msk \ - (0x8000UL) /*!< GPDMA0 LSTDSTREG: WE_CH7 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_DMACFGREG ------------------------------ */ -#define GPDMA0_DMACFGREG_DMA_EN_Pos \ - (0UL) /*!< GPDMA0 DMACFGREG: DMA_EN (Bit 0) */ -#define GPDMA0_DMACFGREG_DMA_EN_Msk \ - (0x1UL) /*!< GPDMA0 DMACFGREG: DMA_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- GPDMA0_CHENREG ------------------------------- */ -#define GPDMA0_CHENREG_CH_Pos \ - (0UL) /*!< GPDMA0 CHENREG: CH (Bit 0) */ -#define GPDMA0_CHENREG_CH_Msk \ - (0xffUL) /*!< GPDMA0 CHENREG: CH (Bitfield-Mask: 0xff) */ -#define GPDMA0_CHENREG_WE_CH_Pos \ - (8UL) /*!< GPDMA0 CHENREG: WE_CH (Bit 8) */ -#define GPDMA0_CHENREG_WE_CH_Msk \ - (0xff00UL) /*!< GPDMA0 CHENREG: WE_CH (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- GPDMA0_ID --------------------------------- */ -#define GPDMA0_ID_VALUE_Pos \ - (0UL) /*!< GPDMA0 ID: VALUE (Bit 0) */ -#define GPDMA0_ID_VALUE_Msk \ - (0xffffffffUL) /*!< GPDMA0 ID: VALUE (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- GPDMA0_TYPE -------------------------------- */ -#define GPDMA0_TYPE_VALUE_Pos \ - (0UL) /*!< GPDMA0 TYPE: VALUE (Bit 0) */ -#define GPDMA0_TYPE_VALUE_Msk \ - (0xffffffffUL) /*!< GPDMA0 TYPE: VALUE (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- GPDMA0_VERSION ------------------------------- */ -#define GPDMA0_VERSION_VALUE_Pos \ - (0UL) /*!< GPDMA0 VERSION: VALUE (Bit 0) */ -#define GPDMA0_VERSION_VALUE_Msk \ - (0xffffffffUL) /*!< GPDMA0 VERSION: VALUE (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'GPDMA0_CH0_1' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ GPDMA0_CH_SAR ------------------------------ */ -#define GPDMA0_CH_SAR_SAR_Pos \ - (0UL) /*!< GPDMA0_CH0_1 SAR: SAR (Bit 0) */ -#define GPDMA0_CH_SAR_SAR_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 SAR: SAR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ GPDMA0_CH_DAR ------------------------------ */ -#define GPDMA0_CH_DAR_DAR_Pos \ - (0UL) /*!< GPDMA0_CH0_1 DAR: DAR (Bit 0) */ -#define GPDMA0_CH_DAR_DAR_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 DAR: DAR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ GPDMA0_CH_LLP ------------------------------ */ -#define GPDMA0_CH_LLP_LOC_Pos \ - (2UL) /*!< GPDMA0_CH0_1 LLP: LOC (Bit 2) */ -#define GPDMA0_CH_LLP_LOC_Msk \ - (0xfffffffcUL) /*!< GPDMA0_CH0_1 LLP: LOC (Bitfield-Mask: 0x3fffffff) */ - -/* ------------------------------ GPDMA0_CH_CTLL ----------------------------- */ -#define GPDMA0_CH_CTLL_INT_EN_Pos \ - (0UL) /*!< GPDMA0_CH0_1 CTLL: INT_EN (Bit 0) */ -#define GPDMA0_CH_CTLL_INT_EN_Msk \ - (0x1UL) /*!< GPDMA0_CH0_1 CTLL: INT_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CTLL_DST_TR_WIDTH_Pos \ - (1UL) /*!< GPDMA0_CH0_1 CTLL: DST_TR_WIDTH (Bit 1) */ -#define GPDMA0_CH_CTLL_DST_TR_WIDTH_Msk \ - (0xeUL) /*!< GPDMA0_CH0_1 CTLL: DST_TR_WIDTH (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_SRC_TR_WIDTH_Pos \ - (4UL) /*!< GPDMA0_CH0_1 CTLL: SRC_TR_WIDTH (Bit 4) */ -#define GPDMA0_CH_CTLL_SRC_TR_WIDTH_Msk \ - (0x70UL) /*!< GPDMA0_CH0_1 CTLL: SRC_TR_WIDTH (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_DINC_Pos \ - (7UL) /*!< GPDMA0_CH0_1 CTLL: DINC (Bit 7) */ -#define GPDMA0_CH_CTLL_DINC_Msk \ - (0x180UL) /*!< GPDMA0_CH0_1 CTLL: DINC (Bitfield-Mask: 0x03) */ -#define GPDMA0_CH_CTLL_SINC_Pos \ - (9UL) /*!< GPDMA0_CH0_1 CTLL: SINC (Bit 9) */ -#define GPDMA0_CH_CTLL_SINC_Msk \ - (0x600UL) /*!< GPDMA0_CH0_1 CTLL: SINC (Bitfield-Mask: 0x03) */ -#define GPDMA0_CH_CTLL_DEST_MSIZE_Pos \ - (11UL) /*!< GPDMA0_CH0_1 CTLL: DEST_MSIZE (Bit 11) */ -#define GPDMA0_CH_CTLL_DEST_MSIZE_Msk \ - (0x3800UL) /*!< GPDMA0_CH0_1 CTLL: DEST_MSIZE (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_SRC_MSIZE_Pos \ - (14UL) /*!< GPDMA0_CH0_1 CTLL: SRC_MSIZE (Bit 14) */ -#define GPDMA0_CH_CTLL_SRC_MSIZE_Msk \ - (0x1c000UL) /*!< GPDMA0_CH0_1 CTLL: SRC_MSIZE (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_SRC_GATHER_EN_Pos \ - (17UL) /*!< GPDMA0_CH0_1 CTLL: SRC_GATHER_EN (Bit 17) */ -#define GPDMA0_CH_CTLL_SRC_GATHER_EN_Msk \ - (0x20000UL) /*!< GPDMA0_CH0_1 CTLL: SRC_GATHER_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CTLL_DST_SCATTER_EN_Pos \ - (18UL) /*!< GPDMA0_CH0_1 CTLL: DST_SCATTER_EN (Bit 18) */ -#define GPDMA0_CH_CTLL_DST_SCATTER_EN_Msk \ - (0x40000UL) /*!< GPDMA0_CH0_1 CTLL: DST_SCATTER_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CTLL_TT_FC_Pos \ - (20UL) /*!< GPDMA0_CH0_1 CTLL: TT_FC (Bit 20) */ -#define GPDMA0_CH_CTLL_TT_FC_Msk \ - (0x700000UL) /*!< GPDMA0_CH0_1 CTLL: TT_FC (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CTLL_LLP_DST_EN_Pos \ - (27UL) /*!< GPDMA0_CH0_1 CTLL: LLP_DST_EN (Bit 27) */ -#define GPDMA0_CH_CTLL_LLP_DST_EN_Msk \ - (0x8000000UL) /*!< GPDMA0_CH0_1 CTLL: LLP_DST_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CTLL_LLP_SRC_EN_Pos \ - (28UL) /*!< GPDMA0_CH0_1 CTLL: LLP_SRC_EN (Bit 28) */ -#define GPDMA0_CH_CTLL_LLP_SRC_EN_Msk \ - (0x10000000UL) /*!< GPDMA0_CH0_1 CTLL: LLP_SRC_EN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_CH_CTLH ----------------------------- */ -#define GPDMA0_CH_CTLH_BLOCK_TS_Pos \ - (0UL) /*!< GPDMA0_CH0_1 CTLH: BLOCK_TS (Bit 0) */ -#define GPDMA0_CH_CTLH_BLOCK_TS_Msk \ - (0xfffUL) /*!< GPDMA0_CH0_1 CTLH: BLOCK_TS (Bitfield-Mask: 0xfff) */ -#define GPDMA0_CH_CTLH_DONE_Pos \ - (12UL) /*!< GPDMA0_CH0_1 CTLH: DONE (Bit 12) */ -#define GPDMA0_CH_CTLH_DONE_Msk \ - (0x1000UL) /*!< GPDMA0_CH0_1 CTLH: DONE (Bitfield-Mask: 0x01) */ - -/* ----------------------------- GPDMA0_CH_SSTAT ----------------------------- */ -#define GPDMA0_CH_SSTAT_SSTAT_Pos \ - (0UL) /*!< GPDMA0_CH0_1 SSTAT: SSTAT (Bit 0) */ -#define GPDMA0_CH_SSTAT_SSTAT_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 SSTAT: SSTAT (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- GPDMA0_CH_DSTAT ----------------------------- */ -#define GPDMA0_CH_DSTAT_DSTAT_Pos \ - (0UL) /*!< GPDMA0_CH0_1 DSTAT: DSTAT (Bit 0) */ -#define GPDMA0_CH_DSTAT_DSTAT_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 DSTAT: DSTAT (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- GPDMA0_CH_SSTATAR ---------------------------- */ -#define GPDMA0_CH_SSTATAR_SSTATAR_Pos \ - (0UL) /*!< GPDMA0_CH0_1 SSTATAR: SSTATAR (Bit 0) */ -#define GPDMA0_CH_SSTATAR_SSTATAR_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 SSTATAR: SSTATAR (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- GPDMA0_CH_DSTATAR ---------------------------- */ -#define GPDMA0_CH_DSTATAR_DSTATAR_Pos \ - (0UL) /*!< GPDMA0_CH0_1 DSTATAR: DSTATAR (Bit 0) */ -#define GPDMA0_CH_DSTATAR_DSTATAR_Msk \ - (0xffffffffUL) /*!< GPDMA0_CH0_1 DSTATAR: DSTATAR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ GPDMA0_CH_CFGL ----------------------------- */ -#define GPDMA0_CH_CFGL_CH_PRIOR_Pos \ - (5UL) /*!< GPDMA0_CH0_1 CFGL: CH_PRIOR (Bit 5) */ -#define GPDMA0_CH_CFGL_CH_PRIOR_Msk \ - (0xe0UL) /*!< GPDMA0_CH0_1 CFGL: CH_PRIOR (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CFGL_CH_SUSP_Pos \ - (8UL) /*!< GPDMA0_CH0_1 CFGL: CH_SUSP (Bit 8) */ -#define GPDMA0_CH_CFGL_CH_SUSP_Msk \ - (0x100UL) /*!< GPDMA0_CH0_1 CFGL: CH_SUSP (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_FIFO_EMPTY_Pos \ - (9UL) /*!< GPDMA0_CH0_1 CFGL: FIFO_EMPTY (Bit 9) */ -#define GPDMA0_CH_CFGL_FIFO_EMPTY_Msk \ - (0x200UL) /*!< GPDMA0_CH0_1 CFGL: FIFO_EMPTY (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_HS_SEL_DST_Pos \ - (10UL) /*!< GPDMA0_CH0_1 CFGL: HS_SEL_DST (Bit 10) */ -#define GPDMA0_CH_CFGL_HS_SEL_DST_Msk \ - (0x400UL) /*!< GPDMA0_CH0_1 CFGL: HS_SEL_DST (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_HS_SEL_SRC_Pos \ - (11UL) /*!< GPDMA0_CH0_1 CFGL: HS_SEL_SRC (Bit 11) */ -#define GPDMA0_CH_CFGL_HS_SEL_SRC_Msk \ - (0x800UL) /*!< GPDMA0_CH0_1 CFGL: HS_SEL_SRC (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_LOCK_CH_L_Pos \ - (12UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_CH_L (Bit 12) */ -#define GPDMA0_CH_CFGL_LOCK_CH_L_Msk \ - (0x3000UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_CH_L (Bitfield-Mask: 0x03) */ -#define GPDMA0_CH_CFGL_LOCK_B_L_Pos \ - (14UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_B_L (Bit 14) */ -#define GPDMA0_CH_CFGL_LOCK_B_L_Msk \ - (0xc000UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_B_L (Bitfield-Mask: 0x03) */ -#define GPDMA0_CH_CFGL_LOCK_CH_Pos \ - (16UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_CH (Bit 16) */ -#define GPDMA0_CH_CFGL_LOCK_CH_Msk \ - (0x10000UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_CH (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_LOCK_B_Pos \ - (17UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_B (Bit 17) */ -#define GPDMA0_CH_CFGL_LOCK_B_Msk \ - (0x20000UL) /*!< GPDMA0_CH0_1 CFGL: LOCK_B (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_DST_HS_POL_Pos \ - (18UL) /*!< GPDMA0_CH0_1 CFGL: DST_HS_POL (Bit 18) */ -#define GPDMA0_CH_CFGL_DST_HS_POL_Msk \ - (0x40000UL) /*!< GPDMA0_CH0_1 CFGL: DST_HS_POL (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_SRC_HS_POL_Pos \ - (19UL) /*!< GPDMA0_CH0_1 CFGL: SRC_HS_POL (Bit 19) */ -#define GPDMA0_CH_CFGL_SRC_HS_POL_Msk \ - (0x80000UL) /*!< GPDMA0_CH0_1 CFGL: SRC_HS_POL (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_MAX_ABRST_Pos \ - (20UL) /*!< GPDMA0_CH0_1 CFGL: MAX_ABRST (Bit 20) */ -#define GPDMA0_CH_CFGL_MAX_ABRST_Msk \ - (0x3ff00000UL) /*!< GPDMA0_CH0_1 CFGL: MAX_ABRST (Bitfield-Mask: 0x3ff) */ -#define GPDMA0_CH_CFGL_RELOAD_SRC_Pos \ - (30UL) /*!< GPDMA0_CH0_1 CFGL: RELOAD_SRC (Bit 30) */ -#define GPDMA0_CH_CFGL_RELOAD_SRC_Msk \ - (0x40000000UL) /*!< GPDMA0_CH0_1 CFGL: RELOAD_SRC (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGL_RELOAD_DST_Pos \ - (31UL) /*!< GPDMA0_CH0_1 CFGL: RELOAD_DST (Bit 31) */ -#define GPDMA0_CH_CFGL_RELOAD_DST_Msk \ - (0x80000000UL) /*!< GPDMA0_CH0_1 CFGL: RELOAD_DST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ GPDMA0_CH_CFGH ----------------------------- */ -#define GPDMA0_CH_CFGH_FCMODE_Pos \ - (0UL) /*!< GPDMA0_CH0_1 CFGH: FCMODE (Bit 0) */ -#define GPDMA0_CH_CFGH_FCMODE_Msk \ - (0x1UL) /*!< GPDMA0_CH0_1 CFGH: FCMODE (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGH_FIFO_MODE_Pos \ - (1UL) /*!< GPDMA0_CH0_1 CFGH: FIFO_MODE (Bit 1) */ -#define GPDMA0_CH_CFGH_FIFO_MODE_Msk \ - (0x2UL) /*!< GPDMA0_CH0_1 CFGH: FIFO_MODE (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGH_PROTCTL_Pos \ - (2UL) /*!< GPDMA0_CH0_1 CFGH: PROTCTL (Bit 2) */ -#define GPDMA0_CH_CFGH_PROTCTL_Msk \ - (0x1cUL) /*!< GPDMA0_CH0_1 CFGH: PROTCTL (Bitfield-Mask: 0x07) */ -#define GPDMA0_CH_CFGH_DS_UPD_EN_Pos \ - (5UL) /*!< GPDMA0_CH0_1 CFGH: DS_UPD_EN (Bit 5) */ -#define GPDMA0_CH_CFGH_DS_UPD_EN_Msk \ - (0x20UL) /*!< GPDMA0_CH0_1 CFGH: DS_UPD_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGH_SS_UPD_EN_Pos \ - (6UL) /*!< GPDMA0_CH0_1 CFGH: SS_UPD_EN (Bit 6) */ -#define GPDMA0_CH_CFGH_SS_UPD_EN_Msk \ - (0x40UL) /*!< GPDMA0_CH0_1 CFGH: SS_UPD_EN (Bitfield-Mask: 0x01) */ -#define GPDMA0_CH_CFGH_SRC_PER_Pos \ - (7UL) /*!< GPDMA0_CH0_1 CFGH: SRC_PER (Bit 7) */ -#define GPDMA0_CH_CFGH_SRC_PER_Msk \ - (0x780UL) /*!< GPDMA0_CH0_1 CFGH: SRC_PER (Bitfield-Mask: 0x0f) */ -#define GPDMA0_CH_CFGH_DEST_PER_Pos \ - (11UL) /*!< GPDMA0_CH0_1 CFGH: DEST_PER (Bit 11) */ -#define GPDMA0_CH_CFGH_DEST_PER_Msk \ - (0x7800UL) /*!< GPDMA0_CH0_1 CFGH: DEST_PER (Bitfield-Mask: 0x0f) */ - -/* ------------------------------ GPDMA0_CH_SGR ------------------------------ */ -#define GPDMA0_CH_SGR_SGI_Pos \ - (0UL) /*!< GPDMA0_CH0_1 SGR: SGI (Bit 0) */ -#define GPDMA0_CH_SGR_SGI_Msk \ - (0xfffffUL) /*!< GPDMA0_CH0_1 SGR: SGI (Bitfield-Mask: 0xfffff) */ -#define GPDMA0_CH_SGR_SGC_Pos \ - (20UL) /*!< GPDMA0_CH0_1 SGR: SGC (Bit 20) */ -#define GPDMA0_CH_SGR_SGC_Msk \ - (0xfff00000UL) /*!< GPDMA0_CH0_1 SGR: SGC (Bitfield-Mask: 0xfff) */ - -/* ------------------------------ GPDMA0_CH_DSR ------------------------------ */ -#define GPDMA0_CH_DSR_DSI_Pos \ - (0UL) /*!< GPDMA0_CH0_1 DSR: DSI (Bit 0) */ -#define GPDMA0_CH_DSR_DSI_Msk \ - (0xfffffUL) /*!< GPDMA0_CH0_1 DSR: DSI (Bitfield-Mask: 0xfffff) */ -#define GPDMA0_CH_DSR_DSC_Pos \ - (20UL) /*!< GPDMA0_CH0_1 DSR: DSC (Bit 20) */ -#define GPDMA0_CH_DSR_DSC_Msk \ - (0xfff00000UL) /*!< GPDMA0_CH0_1 DSR: DSC (Bitfield-Mask: 0xfff) */ - -/* ================================================================================ */ -/* ================ struct 'FCE' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- FCE_CLC ---------------------------------- */ -#define FCE_CLC_DISR_Pos (0UL) /*!< FCE CLC: DISR (Bit 0) */ -#define FCE_CLC_DISR_Msk (0x1UL) /*!< FCE CLC: DISR (Bitfield-Mask: 0x01) */ -#define FCE_CLC_DISS_Pos (1UL) /*!< FCE CLC: DISS (Bit 1) */ -#define FCE_CLC_DISS_Msk (0x2UL) /*!< FCE CLC: DISS (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- FCE_ID ----------------------------------- */ -#define FCE_ID_MOD_REV_Pos (0UL) /*!< FCE ID: MOD_REV (Bit 0) */ -#define FCE_ID_MOD_REV_Msk \ - (0xffUL) /*!< FCE ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define FCE_ID_MOD_TYPE_Pos \ - (8UL) /*!< FCE ID: MOD_TYPE (Bit 8) */ -#define FCE_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< FCE ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define FCE_ID_MOD_NUMBER_Pos \ - (16UL) /*!< FCE ID: MOD_NUMBER (Bit 16) */ -#define FCE_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< FCE ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ Group 'FCE_KE' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- FCE_KE_IR --------------------------------- */ -#define FCE_KE_IR_IR_Pos (0UL) /*!< FCE_KE IR: IR (Bit 0) */ -#define FCE_KE_IR_IR_Msk \ - (0xffffffffUL) /*!< FCE_KE IR: IR (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- FCE_KE_RES --------------------------------- */ -#define FCE_KE_RES_RES_Pos (0UL) /*!< FCE_KE RES: RES (Bit 0) */ -#define FCE_KE_RES_RES_Msk \ - (0xffffffffUL) /*!< FCE_KE RES: RES (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- FCE_KE_CFG --------------------------------- */ -#define FCE_KE_CFG_CMI_Pos (0UL) /*!< FCE_KE CFG: CMI (Bit 0) */ -#define FCE_KE_CFG_CMI_Msk \ - (0x1UL) /*!< FCE_KE CFG: CMI (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_CEI_Pos (1UL) /*!< FCE_KE CFG: CEI (Bit 1) */ -#define FCE_KE_CFG_CEI_Msk \ - (0x2UL) /*!< FCE_KE CFG: CEI (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_LEI_Pos (2UL) /*!< FCE_KE CFG: LEI (Bit 2) */ -#define FCE_KE_CFG_LEI_Msk \ - (0x4UL) /*!< FCE_KE CFG: LEI (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_BEI_Pos (3UL) /*!< FCE_KE CFG: BEI (Bit 3) */ -#define FCE_KE_CFG_BEI_Msk \ - (0x8UL) /*!< FCE_KE CFG: BEI (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_CCE_Pos (4UL) /*!< FCE_KE CFG: CCE (Bit 4) */ -#define FCE_KE_CFG_CCE_Msk \ - (0x10UL) /*!< FCE_KE CFG: CCE (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_ALR_Pos (5UL) /*!< FCE_KE CFG: ALR (Bit 5) */ -#define FCE_KE_CFG_ALR_Msk \ - (0x20UL) /*!< FCE_KE CFG: ALR (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_REFIN_Pos \ - (8UL) /*!< FCE_KE CFG: REFIN (Bit 8) */ -#define FCE_KE_CFG_REFIN_Msk \ - (0x100UL) /*!< FCE_KE CFG: REFIN (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_REFOUT_Pos \ - (9UL) /*!< FCE_KE CFG: REFOUT (Bit 9) */ -#define FCE_KE_CFG_REFOUT_Msk \ - (0x200UL) /*!< FCE_KE CFG: REFOUT (Bitfield-Mask: 0x01) */ -#define FCE_KE_CFG_XSEL_Pos \ - (10UL) /*!< FCE_KE CFG: XSEL (Bit 10) */ -#define FCE_KE_CFG_XSEL_Msk \ - (0x400UL) /*!< FCE_KE CFG: XSEL (Bitfield-Mask: 0x01) */ - -/* --------------------------------- FCE_KE_STS --------------------------------- */ -#define FCE_KE_STS_CMF_Pos (0UL) /*!< FCE_KE STS: CMF (Bit 0) */ -#define FCE_KE_STS_CMF_Msk \ - (0x1UL) /*!< FCE_KE STS: CMF (Bitfield-Mask: 0x01) */ -#define FCE_KE_STS_CEF_Pos (1UL) /*!< FCE_KE STS: CEF (Bit 1) */ -#define FCE_KE_STS_CEF_Msk \ - (0x2UL) /*!< FCE_KE STS: CEF (Bitfield-Mask: 0x01) */ -#define FCE_KE_STS_LEF_Pos (2UL) /*!< FCE_KE STS: LEF (Bit 2) */ -#define FCE_KE_STS_LEF_Msk \ - (0x4UL) /*!< FCE_KE STS: LEF (Bitfield-Mask: 0x01) */ -#define FCE_KE_STS_BEF_Pos (3UL) /*!< FCE_KE STS: BEF (Bit 3) */ -#define FCE_KE_STS_BEF_Msk \ - (0x8UL) /*!< FCE_KE STS: BEF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- FCE_KE_LENGTH ------------------------------- */ -#define FCE_KE_LENGTH_LENGTH_Pos \ - (0UL) /*!< FCE_KE LENGTH: LENGTH (Bit 0) */ -#define FCE_KE_LENGTH_LENGTH_Msk \ - (0xffffUL) /*!< FCE_KE LENGTH: LENGTH (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- FCE_KE_CHECK -------------------------------- */ -#define FCE_KE_CHECK_CHECK_Pos \ - (0UL) /*!< FCE_KE CHECK: CHECK (Bit 0) */ -#define FCE_KE_CHECK_CHECK_Msk \ - (0xffffffffUL) /*!< FCE_KE CHECK: CHECK (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- FCE_KE_CRC --------------------------------- */ -#define FCE_KE_CRC_CRC_Pos (0UL) /*!< FCE_KE CRC: CRC (Bit 0) */ -#define FCE_KE_CRC_CRC_Msk \ - (0xffffffffUL) /*!< FCE_KE CRC: CRC (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- FCE_KE_CTR --------------------------------- */ -#define FCE_KE_CTR_FCM_Pos (0UL) /*!< FCE_KE CTR: FCM (Bit 0) */ -#define FCE_KE_CTR_FCM_Msk \ - (0x1UL) /*!< FCE_KE CTR: FCM (Bitfield-Mask: 0x01) */ -#define FCE_KE_CTR_FRM_CFG_Pos \ - (1UL) /*!< FCE_KE CTR: FRM_CFG (Bit 1) */ -#define FCE_KE_CTR_FRM_CFG_Msk \ - (0x2UL) /*!< FCE_KE CTR: FRM_CFG (Bitfield-Mask: 0x01) */ -#define FCE_KE_CTR_FRM_CHECK_Pos \ - (2UL) /*!< FCE_KE CTR: FRM_CHECK (Bit 2) */ -#define FCE_KE_CTR_FRM_CHECK_Msk \ - (0x4UL) /*!< FCE_KE CTR: FRM_CHECK (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'PBA' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- PBA_STS ---------------------------------- */ -#define PBA_STS_WERR_Pos (0UL) /*!< PBA STS: WERR (Bit 0) */ -#define PBA_STS_WERR_Msk (0x1UL) /*!< PBA STS: WERR (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PBA_WADDR --------------------------------- */ -#define PBA_WADDR_WADDR_Pos \ - (0UL) /*!< PBA WADDR: WADDR (Bit 0) */ -#define PBA_WADDR_WADDR_Msk \ - (0xffffffffUL) /*!< PBA WADDR: WADDR (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'FLASH' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- FLASH_ID ---------------------------------- */ -#define FLASH_ID_MOD_REV_Pos \ - (0UL) /*!< FLASH ID: MOD_REV (Bit 0) */ -#define FLASH_ID_MOD_REV_Msk \ - (0xffUL) /*!< FLASH ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define FLASH_ID_MOD_TYPE_Pos \ - (8UL) /*!< FLASH ID: MOD_TYPE (Bit 8) */ -#define FLASH_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< FLASH ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define FLASH_ID_MOD_NUMBER_Pos \ - (16UL) /*!< FLASH ID: MOD_NUMBER (Bit 16) */ -#define FLASH_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< FLASH ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- FLASH_FSR --------------------------------- */ -#define FLASH_FSR_PBUSY_Pos \ - (0UL) /*!< FLASH FSR: PBUSY (Bit 0) */ -#define FLASH_FSR_PBUSY_Msk \ - (0x1UL) /*!< FLASH FSR: PBUSY (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_FABUSY_Pos \ - (1UL) /*!< FLASH FSR: FABUSY (Bit 1) */ -#define FLASH_FSR_FABUSY_Msk \ - (0x2UL) /*!< FLASH FSR: FABUSY (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PROG_Pos (4UL) /*!< FLASH FSR: PROG (Bit 4) */ -#define FLASH_FSR_PROG_Msk \ - (0x10UL) /*!< FLASH FSR: PROG (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_ERASE_Pos \ - (5UL) /*!< FLASH FSR: ERASE (Bit 5) */ -#define FLASH_FSR_ERASE_Msk \ - (0x20UL) /*!< FLASH FSR: ERASE (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PFPAGE_Pos \ - (6UL) /*!< FLASH FSR: PFPAGE (Bit 6) */ -#define FLASH_FSR_PFPAGE_Msk \ - (0x40UL) /*!< FLASH FSR: PFPAGE (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PFOPER_Pos \ - (8UL) /*!< FLASH FSR: PFOPER (Bit 8) */ -#define FLASH_FSR_PFOPER_Msk \ - (0x100UL) /*!< FLASH FSR: PFOPER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_SQER_Pos \ - (10UL) /*!< FLASH FSR: SQER (Bit 10) */ -#define FLASH_FSR_SQER_Msk \ - (0x400UL) /*!< FLASH FSR: SQER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PROER_Pos \ - (11UL) /*!< FLASH FSR: PROER (Bit 11) */ -#define FLASH_FSR_PROER_Msk \ - (0x800UL) /*!< FLASH FSR: PROER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PFSBER_Pos \ - (12UL) /*!< FLASH FSR: PFSBER (Bit 12) */ -#define FLASH_FSR_PFSBER_Msk \ - (0x1000UL) /*!< FLASH FSR: PFSBER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PFDBER_Pos \ - (14UL) /*!< FLASH FSR: PFDBER (Bit 14) */ -#define FLASH_FSR_PFDBER_Msk \ - (0x4000UL) /*!< FLASH FSR: PFDBER (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_PROIN_Pos \ - (16UL) /*!< FLASH FSR: PROIN (Bit 16) */ -#define FLASH_FSR_PROIN_Msk \ - (0x10000UL) /*!< FLASH FSR: PROIN (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_RPROIN_Pos \ - (18UL) /*!< FLASH FSR: RPROIN (Bit 18) */ -#define FLASH_FSR_RPROIN_Msk \ - (0x40000UL) /*!< FLASH FSR: RPROIN (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_RPRODIS_Pos \ - (19UL) /*!< FLASH FSR: RPRODIS (Bit 19) */ -#define FLASH_FSR_RPRODIS_Msk \ - (0x80000UL) /*!< FLASH FSR: RPRODIS (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPROIN0_Pos \ - (21UL) /*!< FLASH FSR: WPROIN0 (Bit 21) */ -#define FLASH_FSR_WPROIN0_Msk \ - (0x200000UL) /*!< FLASH FSR: WPROIN0 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPROIN1_Pos \ - (22UL) /*!< FLASH FSR: WPROIN1 (Bit 22) */ -#define FLASH_FSR_WPROIN1_Msk \ - (0x400000UL) /*!< FLASH FSR: WPROIN1 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPROIN2_Pos \ - (23UL) /*!< FLASH FSR: WPROIN2 (Bit 23) */ -#define FLASH_FSR_WPROIN2_Msk \ - (0x800000UL) /*!< FLASH FSR: WPROIN2 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPRODIS0_Pos \ - (25UL) /*!< FLASH FSR: WPRODIS0 (Bit 25) */ -#define FLASH_FSR_WPRODIS0_Msk \ - (0x2000000UL) /*!< FLASH FSR: WPRODIS0 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_WPRODIS1_Pos \ - (26UL) /*!< FLASH FSR: WPRODIS1 (Bit 26) */ -#define FLASH_FSR_WPRODIS1_Msk \ - (0x4000000UL) /*!< FLASH FSR: WPRODIS1 (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_SLM_Pos (28UL) /*!< FLASH FSR: SLM (Bit 28) */ -#define FLASH_FSR_SLM_Msk \ - (0x10000000UL) /*!< FLASH FSR: SLM (Bitfield-Mask: 0x01) */ -#define FLASH_FSR_VER_Pos (31UL) /*!< FLASH FSR: VER (Bit 31) */ -#define FLASH_FSR_VER_Msk \ - (0x80000000UL) /*!< FLASH FSR: VER (Bitfield-Mask: 0x01) */ - -/* --------------------------------- FLASH_FCON --------------------------------- */ -#define FLASH_FCON_WSPFLASH_Pos \ - (0UL) /*!< FLASH FCON: WSPFLASH (Bit 0) */ -#define FLASH_FCON_WSPFLASH_Msk \ - (0xfUL) /*!< FLASH FCON: WSPFLASH (Bitfield-Mask: 0x0f) */ -#define FLASH_FCON_WSECPF_Pos \ - (4UL) /*!< FLASH FCON: WSECPF (Bit 4) */ -#define FLASH_FCON_WSECPF_Msk \ - (0x10UL) /*!< FLASH FCON: WSECPF (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_IDLE_Pos \ - (13UL) /*!< FLASH FCON: IDLE (Bit 13) */ -#define FLASH_FCON_IDLE_Msk \ - (0x2000UL) /*!< FLASH FCON: IDLE (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_ESLDIS_Pos \ - (14UL) /*!< FLASH FCON: ESLDIS (Bit 14) */ -#define FLASH_FCON_ESLDIS_Msk \ - (0x4000UL) /*!< FLASH FCON: ESLDIS (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_SLEEP_Pos \ - (15UL) /*!< FLASH FCON: SLEEP (Bit 15) */ -#define FLASH_FCON_SLEEP_Msk \ - (0x8000UL) /*!< FLASH FCON: SLEEP (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_RPA_Pos \ - (16UL) /*!< FLASH FCON: RPA (Bit 16) */ -#define FLASH_FCON_RPA_Msk \ - (0x10000UL) /*!< FLASH FCON: RPA (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_DCF_Pos \ - (17UL) /*!< FLASH FCON: DCF (Bit 17) */ -#define FLASH_FCON_DCF_Msk \ - (0x20000UL) /*!< FLASH FCON: DCF (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_DDF_Pos \ - (18UL) /*!< FLASH FCON: DDF (Bit 18) */ -#define FLASH_FCON_DDF_Msk \ - (0x40000UL) /*!< FLASH FCON: DDF (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_VOPERM_Pos \ - (24UL) /*!< FLASH FCON: VOPERM (Bit 24) */ -#define FLASH_FCON_VOPERM_Msk \ - (0x1000000UL) /*!< FLASH FCON: VOPERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_SQERM_Pos \ - (25UL) /*!< FLASH FCON: SQERM (Bit 25) */ -#define FLASH_FCON_SQERM_Msk \ - (0x2000000UL) /*!< FLASH FCON: SQERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_PROERM_Pos \ - (26UL) /*!< FLASH FCON: PROERM (Bit 26) */ -#define FLASH_FCON_PROERM_Msk \ - (0x4000000UL) /*!< FLASH FCON: PROERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_PFSBERM_Pos \ - (27UL) /*!< FLASH FCON: PFSBERM (Bit 27) */ -#define FLASH_FCON_PFSBERM_Msk \ - (0x8000000UL) /*!< FLASH FCON: PFSBERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_PFDBERM_Pos \ - (29UL) /*!< FLASH FCON: PFDBERM (Bit 29) */ -#define FLASH_FCON_PFDBERM_Msk \ - (0x20000000UL) /*!< FLASH FCON: PFDBERM (Bitfield-Mask: 0x01) */ -#define FLASH_FCON_EOBM_Pos \ - (31UL) /*!< FLASH FCON: EOBM (Bit 31) */ -#define FLASH_FCON_EOBM_Msk \ - (0x80000000UL) /*!< FLASH FCON: EOBM (Bitfield-Mask: 0x01) */ - -/* --------------------------------- FLASH_MARP --------------------------------- */ -#define FLASH_MARP_MARGIN_Pos \ - (0UL) /*!< FLASH MARP: MARGIN (Bit 0) */ -#define FLASH_MARP_MARGIN_Msk \ - (0xfUL) /*!< FLASH MARP: MARGIN (Bitfield-Mask: 0x0f) */ -#define FLASH_MARP_TRAPDIS_Pos \ - (15UL) /*!< FLASH MARP: TRAPDIS (Bit 15) */ -#define FLASH_MARP_TRAPDIS_Msk \ - (0x8000UL) /*!< FLASH MARP: TRAPDIS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- FLASH_PROCON0 ------------------------------- */ -#define FLASH_PROCON0_S0L_Pos \ - (0UL) /*!< FLASH PROCON0: S0L (Bit 0) */ -#define FLASH_PROCON0_S0L_Msk \ - (0x1UL) /*!< FLASH PROCON0: S0L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S1L_Pos \ - (1UL) /*!< FLASH PROCON0: S1L (Bit 1) */ -#define FLASH_PROCON0_S1L_Msk \ - (0x2UL) /*!< FLASH PROCON0: S1L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S2L_Pos \ - (2UL) /*!< FLASH PROCON0: S2L (Bit 2) */ -#define FLASH_PROCON0_S2L_Msk \ - (0x4UL) /*!< FLASH PROCON0: S2L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S3L_Pos \ - (3UL) /*!< FLASH PROCON0: S3L (Bit 3) */ -#define FLASH_PROCON0_S3L_Msk \ - (0x8UL) /*!< FLASH PROCON0: S3L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S4L_Pos \ - (4UL) /*!< FLASH PROCON0: S4L (Bit 4) */ -#define FLASH_PROCON0_S4L_Msk \ - (0x10UL) /*!< FLASH PROCON0: S4L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S5L_Pos \ - (5UL) /*!< FLASH PROCON0: S5L (Bit 5) */ -#define FLASH_PROCON0_S5L_Msk \ - (0x20UL) /*!< FLASH PROCON0: S5L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S6L_Pos \ - (6UL) /*!< FLASH PROCON0: S6L (Bit 6) */ -#define FLASH_PROCON0_S6L_Msk \ - (0x40UL) /*!< FLASH PROCON0: S6L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S7L_Pos \ - (7UL) /*!< FLASH PROCON0: S7L (Bit 7) */ -#define FLASH_PROCON0_S7L_Msk \ - (0x80UL) /*!< FLASH PROCON0: S7L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S8L_Pos \ - (8UL) /*!< FLASH PROCON0: S8L (Bit 8) */ -#define FLASH_PROCON0_S8L_Msk \ - (0x100UL) /*!< FLASH PROCON0: S8L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_S9L_Pos \ - (9UL) /*!< FLASH PROCON0: S9L (Bit 9) */ -#define FLASH_PROCON0_S9L_Msk \ - (0x200UL) /*!< FLASH PROCON0: S9L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON0_RPRO_Pos \ - (15UL) /*!< FLASH PROCON0: RPRO (Bit 15) */ -#define FLASH_PROCON0_RPRO_Msk \ - (0x8000UL) /*!< FLASH PROCON0: RPRO (Bitfield-Mask: 0x01) */ - -/* -------------------------------- FLASH_PROCON1 ------------------------------- */ -#define FLASH_PROCON1_S0L_Pos \ - (0UL) /*!< FLASH PROCON1: S0L (Bit 0) */ -#define FLASH_PROCON1_S0L_Msk \ - (0x1UL) /*!< FLASH PROCON1: S0L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S1L_Pos \ - (1UL) /*!< FLASH PROCON1: S1L (Bit 1) */ -#define FLASH_PROCON1_S1L_Msk \ - (0x2UL) /*!< FLASH PROCON1: S1L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S2L_Pos \ - (2UL) /*!< FLASH PROCON1: S2L (Bit 2) */ -#define FLASH_PROCON1_S2L_Msk \ - (0x4UL) /*!< FLASH PROCON1: S2L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S3L_Pos \ - (3UL) /*!< FLASH PROCON1: S3L (Bit 3) */ -#define FLASH_PROCON1_S3L_Msk \ - (0x8UL) /*!< FLASH PROCON1: S3L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S4L_Pos \ - (4UL) /*!< FLASH PROCON1: S4L (Bit 4) */ -#define FLASH_PROCON1_S4L_Msk \ - (0x10UL) /*!< FLASH PROCON1: S4L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S5L_Pos \ - (5UL) /*!< FLASH PROCON1: S5L (Bit 5) */ -#define FLASH_PROCON1_S5L_Msk \ - (0x20UL) /*!< FLASH PROCON1: S5L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S6L_Pos \ - (6UL) /*!< FLASH PROCON1: S6L (Bit 6) */ -#define FLASH_PROCON1_S6L_Msk \ - (0x40UL) /*!< FLASH PROCON1: S6L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S7L_Pos \ - (7UL) /*!< FLASH PROCON1: S7L (Bit 7) */ -#define FLASH_PROCON1_S7L_Msk \ - (0x80UL) /*!< FLASH PROCON1: S7L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S8L_Pos \ - (8UL) /*!< FLASH PROCON1: S8L (Bit 8) */ -#define FLASH_PROCON1_S8L_Msk \ - (0x100UL) /*!< FLASH PROCON1: S8L (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON1_S9L_Pos \ - (9UL) /*!< FLASH PROCON1: S9L (Bit 9) */ -#define FLASH_PROCON1_S9L_Msk \ - (0x200UL) /*!< FLASH PROCON1: S9L (Bitfield-Mask: 0x01) */ - -/* -------------------------------- FLASH_PROCON2 ------------------------------- */ -#define FLASH_PROCON2_S0ROM_Pos \ - (0UL) /*!< FLASH PROCON2: S0ROM (Bit 0) */ -#define FLASH_PROCON2_S0ROM_Msk \ - (0x1UL) /*!< FLASH PROCON2: S0ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S1ROM_Pos \ - (1UL) /*!< FLASH PROCON2: S1ROM (Bit 1) */ -#define FLASH_PROCON2_S1ROM_Msk \ - (0x2UL) /*!< FLASH PROCON2: S1ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S2ROM_Pos \ - (2UL) /*!< FLASH PROCON2: S2ROM (Bit 2) */ -#define FLASH_PROCON2_S2ROM_Msk \ - (0x4UL) /*!< FLASH PROCON2: S2ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S3ROM_Pos \ - (3UL) /*!< FLASH PROCON2: S3ROM (Bit 3) */ -#define FLASH_PROCON2_S3ROM_Msk \ - (0x8UL) /*!< FLASH PROCON2: S3ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S4ROM_Pos \ - (4UL) /*!< FLASH PROCON2: S4ROM (Bit 4) */ -#define FLASH_PROCON2_S4ROM_Msk \ - (0x10UL) /*!< FLASH PROCON2: S4ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S5ROM_Pos \ - (5UL) /*!< FLASH PROCON2: S5ROM (Bit 5) */ -#define FLASH_PROCON2_S5ROM_Msk \ - (0x20UL) /*!< FLASH PROCON2: S5ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S6ROM_Pos \ - (6UL) /*!< FLASH PROCON2: S6ROM (Bit 6) */ -#define FLASH_PROCON2_S6ROM_Msk \ - (0x40UL) /*!< FLASH PROCON2: S6ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S7ROM_Pos \ - (7UL) /*!< FLASH PROCON2: S7ROM (Bit 7) */ -#define FLASH_PROCON2_S7ROM_Msk \ - (0x80UL) /*!< FLASH PROCON2: S7ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S8ROM_Pos \ - (8UL) /*!< FLASH PROCON2: S8ROM (Bit 8) */ -#define FLASH_PROCON2_S8ROM_Msk \ - (0x100UL) /*!< FLASH PROCON2: S8ROM (Bitfield-Mask: 0x01) */ -#define FLASH_PROCON2_S9ROM_Pos \ - (9UL) /*!< FLASH PROCON2: S9ROM (Bit 9) */ -#define FLASH_PROCON2_S9ROM_Msk \ - (0x200UL) /*!< FLASH PROCON2: S9ROM (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'PREF' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PREF_PCON --------------------------------- */ -#define PREF_PCON_IBYP_Pos (0UL) /*!< PREF PCON: IBYP (Bit 0) */ -#define PREF_PCON_IBYP_Msk \ - (0x1UL) /*!< PREF PCON: IBYP (Bitfield-Mask: 0x01) */ -#define PREF_PCON_IINV_Pos (1UL) /*!< PREF PCON: IINV (Bit 1) */ -#define PREF_PCON_IINV_Msk \ - (0x2UL) /*!< PREF PCON: IINV (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'PMU' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- PMU_ID ----------------------------------- */ -#define PMU_ID_MOD_REV_Pos (0UL) /*!< PMU ID: MOD_REV (Bit 0) */ -#define PMU_ID_MOD_REV_Msk \ - (0xffUL) /*!< PMU ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define PMU_ID_MOD_TYPE_Pos \ - (8UL) /*!< PMU ID: MOD_TYPE (Bit 8) */ -#define PMU_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< PMU ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define PMU_ID_MOD_NUMBER_Pos \ - (16UL) /*!< PMU ID: MOD_NUMBER (Bit 16) */ -#define PMU_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< PMU ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ struct 'WDT' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- WDT_ID ----------------------------------- */ -#define WDT_ID_MOD_REV_Pos (0UL) /*!< WDT ID: MOD_REV (Bit 0) */ -#define WDT_ID_MOD_REV_Msk \ - (0xffUL) /*!< WDT ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define WDT_ID_MOD_TYPE_Pos \ - (8UL) /*!< WDT ID: MOD_TYPE (Bit 8) */ -#define WDT_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< WDT ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define WDT_ID_MOD_NUMBER_Pos \ - (16UL) /*!< WDT ID: MOD_NUMBER (Bit 16) */ -#define WDT_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< WDT ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- WDT_CTR ---------------------------------- */ -#define WDT_CTR_ENB_Pos (0UL) /*!< WDT CTR: ENB (Bit 0) */ -#define WDT_CTR_ENB_Msk (0x1UL) /*!< WDT CTR: ENB (Bitfield-Mask: 0x01) */ -#define WDT_CTR_PRE_Pos (1UL) /*!< WDT CTR: PRE (Bit 1) */ -#define WDT_CTR_PRE_Msk (0x2UL) /*!< WDT CTR: PRE (Bitfield-Mask: 0x01) */ -#define WDT_CTR_DSP_Pos (4UL) /*!< WDT CTR: DSP (Bit 4) */ -#define WDT_CTR_DSP_Msk (0x10UL) /*!< WDT CTR: DSP (Bitfield-Mask: 0x01) */ -#define WDT_CTR_SPW_Pos (8UL) /*!< WDT CTR: SPW (Bit 8) */ -#define WDT_CTR_SPW_Msk \ - (0xff00UL) /*!< WDT CTR: SPW (Bitfield-Mask: 0xff) */ - -/* ----------------------------------- WDT_SRV ---------------------------------- */ -#define WDT_SRV_SRV_Pos (0UL) /*!< WDT SRV: SRV (Bit 0) */ -#define WDT_SRV_SRV_Msk \ - (0xffffffffUL) /*!< WDT SRV: SRV (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------------- WDT_TIM ---------------------------------- */ -#define WDT_TIM_TIM_Pos (0UL) /*!< WDT TIM: TIM (Bit 0) */ -#define WDT_TIM_TIM_Msk \ - (0xffffffffUL) /*!< WDT TIM: TIM (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------------- WDT_WLB ---------------------------------- */ -#define WDT_WLB_WLB_Pos (0UL) /*!< WDT WLB: WLB (Bit 0) */ -#define WDT_WLB_WLB_Msk \ - (0xffffffffUL) /*!< WDT WLB: WLB (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------------- WDT_WUB ---------------------------------- */ -#define WDT_WUB_WUB_Pos (0UL) /*!< WDT WUB: WUB (Bit 0) */ -#define WDT_WUB_WUB_Msk \ - (0xffffffffUL) /*!< WDT WUB: WUB (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- WDT_WDTSTS --------------------------------- */ -#define WDT_WDTSTS_ALMS_Pos \ - (0UL) /*!< WDT WDTSTS: ALMS (Bit 0) */ -#define WDT_WDTSTS_ALMS_Msk \ - (0x1UL) /*!< WDT WDTSTS: ALMS (Bitfield-Mask: 0x01) */ - -/* --------------------------------- WDT_WDTCLR --------------------------------- */ -#define WDT_WDTCLR_ALMC_Pos \ - (0UL) /*!< WDT WDTCLR: ALMC (Bit 0) */ -#define WDT_WDTCLR_ALMC_Msk \ - (0x1UL) /*!< WDT WDTCLR: ALMC (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'RTC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- RTC_ID ----------------------------------- */ -#define RTC_ID_MOD_REV_Pos (0UL) /*!< RTC ID: MOD_REV (Bit 0) */ -#define RTC_ID_MOD_REV_Msk \ - (0xffUL) /*!< RTC ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define RTC_ID_MOD_TYPE_Pos \ - (8UL) /*!< RTC ID: MOD_TYPE (Bit 8) */ -#define RTC_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< RTC ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define RTC_ID_MOD_NUMBER_Pos \ - (16UL) /*!< RTC ID: MOD_NUMBER (Bit 16) */ -#define RTC_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< RTC ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- RTC_CTR ---------------------------------- */ -#define RTC_CTR_ENB_Pos (0UL) /*!< RTC CTR: ENB (Bit 0) */ -#define RTC_CTR_ENB_Msk (0x1UL) /*!< RTC CTR: ENB (Bitfield-Mask: 0x01) */ -#define RTC_CTR_TAE_Pos (2UL) /*!< RTC CTR: TAE (Bit 2) */ -#define RTC_CTR_TAE_Msk (0x4UL) /*!< RTC CTR: TAE (Bitfield-Mask: 0x01) */ -#define RTC_CTR_ESEC_Pos (8UL) /*!< RTC CTR: ESEC (Bit 8) */ -#define RTC_CTR_ESEC_Msk \ - (0x100UL) /*!< RTC CTR: ESEC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EMIC_Pos (9UL) /*!< RTC CTR: EMIC (Bit 9) */ -#define RTC_CTR_EMIC_Msk \ - (0x200UL) /*!< RTC CTR: EMIC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EHOC_Pos (10UL) /*!< RTC CTR: EHOC (Bit 10) */ -#define RTC_CTR_EHOC_Msk \ - (0x400UL) /*!< RTC CTR: EHOC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EDAC_Pos (11UL) /*!< RTC CTR: EDAC (Bit 11) */ -#define RTC_CTR_EDAC_Msk \ - (0x800UL) /*!< RTC CTR: EDAC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EMOC_Pos (13UL) /*!< RTC CTR: EMOC (Bit 13) */ -#define RTC_CTR_EMOC_Msk \ - (0x2000UL) /*!< RTC CTR: EMOC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_EYEC_Pos (14UL) /*!< RTC CTR: EYEC (Bit 14) */ -#define RTC_CTR_EYEC_Msk \ - (0x4000UL) /*!< RTC CTR: EYEC (Bitfield-Mask: 0x01) */ -#define RTC_CTR_DIV_Pos (16UL) /*!< RTC CTR: DIV (Bit 16) */ -#define RTC_CTR_DIV_Msk \ - (0xffff0000UL) /*!< RTC CTR: DIV (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- RTC_RAWSTAT -------------------------------- */ -#define RTC_RAWSTAT_RPSE_Pos \ - (0UL) /*!< RTC RAWSTAT: RPSE (Bit 0) */ -#define RTC_RAWSTAT_RPSE_Msk \ - (0x1UL) /*!< RTC RAWSTAT: RPSE (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPMI_Pos \ - (1UL) /*!< RTC RAWSTAT: RPMI (Bit 1) */ -#define RTC_RAWSTAT_RPMI_Msk \ - (0x2UL) /*!< RTC RAWSTAT: RPMI (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPHO_Pos \ - (2UL) /*!< RTC RAWSTAT: RPHO (Bit 2) */ -#define RTC_RAWSTAT_RPHO_Msk \ - (0x4UL) /*!< RTC RAWSTAT: RPHO (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPDA_Pos \ - (3UL) /*!< RTC RAWSTAT: RPDA (Bit 3) */ -#define RTC_RAWSTAT_RPDA_Msk \ - (0x8UL) /*!< RTC RAWSTAT: RPDA (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPMO_Pos \ - (5UL) /*!< RTC RAWSTAT: RPMO (Bit 5) */ -#define RTC_RAWSTAT_RPMO_Msk \ - (0x20UL) /*!< RTC RAWSTAT: RPMO (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RPYE_Pos \ - (6UL) /*!< RTC RAWSTAT: RPYE (Bit 6) */ -#define RTC_RAWSTAT_RPYE_Msk \ - (0x40UL) /*!< RTC RAWSTAT: RPYE (Bitfield-Mask: 0x01) */ -#define RTC_RAWSTAT_RAI_Pos \ - (8UL) /*!< RTC RAWSTAT: RAI (Bit 8) */ -#define RTC_RAWSTAT_RAI_Msk \ - (0x100UL) /*!< RTC RAWSTAT: RAI (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- RTC_STSSR --------------------------------- */ -#define RTC_STSSR_SPSE_Pos (0UL) /*!< RTC STSSR: SPSE (Bit 0) */ -#define RTC_STSSR_SPSE_Msk \ - (0x1UL) /*!< RTC STSSR: SPSE (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPMI_Pos (1UL) /*!< RTC STSSR: SPMI (Bit 1) */ -#define RTC_STSSR_SPMI_Msk \ - (0x2UL) /*!< RTC STSSR: SPMI (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPHO_Pos (2UL) /*!< RTC STSSR: SPHO (Bit 2) */ -#define RTC_STSSR_SPHO_Msk \ - (0x4UL) /*!< RTC STSSR: SPHO (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPDA_Pos (3UL) /*!< RTC STSSR: SPDA (Bit 3) */ -#define RTC_STSSR_SPDA_Msk \ - (0x8UL) /*!< RTC STSSR: SPDA (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPMO_Pos (5UL) /*!< RTC STSSR: SPMO (Bit 5) */ -#define RTC_STSSR_SPMO_Msk \ - (0x20UL) /*!< RTC STSSR: SPMO (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SPYE_Pos (6UL) /*!< RTC STSSR: SPYE (Bit 6) */ -#define RTC_STSSR_SPYE_Msk \ - (0x40UL) /*!< RTC STSSR: SPYE (Bitfield-Mask: 0x01) */ -#define RTC_STSSR_SAI_Pos (8UL) /*!< RTC STSSR: SAI (Bit 8) */ -#define RTC_STSSR_SAI_Msk \ - (0x100UL) /*!< RTC STSSR: SAI (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- RTC_MSKSR --------------------------------- */ -#define RTC_MSKSR_MPSE_Pos (0UL) /*!< RTC MSKSR: MPSE (Bit 0) */ -#define RTC_MSKSR_MPSE_Msk \ - (0x1UL) /*!< RTC MSKSR: MPSE (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPMI_Pos (1UL) /*!< RTC MSKSR: MPMI (Bit 1) */ -#define RTC_MSKSR_MPMI_Msk \ - (0x2UL) /*!< RTC MSKSR: MPMI (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPHO_Pos (2UL) /*!< RTC MSKSR: MPHO (Bit 2) */ -#define RTC_MSKSR_MPHO_Msk \ - (0x4UL) /*!< RTC MSKSR: MPHO (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPDA_Pos (3UL) /*!< RTC MSKSR: MPDA (Bit 3) */ -#define RTC_MSKSR_MPDA_Msk \ - (0x8UL) /*!< RTC MSKSR: MPDA (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPMO_Pos (5UL) /*!< RTC MSKSR: MPMO (Bit 5) */ -#define RTC_MSKSR_MPMO_Msk \ - (0x20UL) /*!< RTC MSKSR: MPMO (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MPYE_Pos (6UL) /*!< RTC MSKSR: MPYE (Bit 6) */ -#define RTC_MSKSR_MPYE_Msk \ - (0x40UL) /*!< RTC MSKSR: MPYE (Bitfield-Mask: 0x01) */ -#define RTC_MSKSR_MAI_Pos (8UL) /*!< RTC MSKSR: MAI (Bit 8) */ -#define RTC_MSKSR_MAI_Msk \ - (0x100UL) /*!< RTC MSKSR: MAI (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- RTC_CLRSR --------------------------------- */ -#define RTC_CLRSR_RPSE_Pos (0UL) /*!< RTC CLRSR: RPSE (Bit 0) */ -#define RTC_CLRSR_RPSE_Msk \ - (0x1UL) /*!< RTC CLRSR: RPSE (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPMI_Pos (1UL) /*!< RTC CLRSR: RPMI (Bit 1) */ -#define RTC_CLRSR_RPMI_Msk \ - (0x2UL) /*!< RTC CLRSR: RPMI (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPHO_Pos (2UL) /*!< RTC CLRSR: RPHO (Bit 2) */ -#define RTC_CLRSR_RPHO_Msk \ - (0x4UL) /*!< RTC CLRSR: RPHO (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPDA_Pos (3UL) /*!< RTC CLRSR: RPDA (Bit 3) */ -#define RTC_CLRSR_RPDA_Msk \ - (0x8UL) /*!< RTC CLRSR: RPDA (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPMO_Pos (5UL) /*!< RTC CLRSR: RPMO (Bit 5) */ -#define RTC_CLRSR_RPMO_Msk \ - (0x20UL) /*!< RTC CLRSR: RPMO (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RPYE_Pos (6UL) /*!< RTC CLRSR: RPYE (Bit 6) */ -#define RTC_CLRSR_RPYE_Msk \ - (0x40UL) /*!< RTC CLRSR: RPYE (Bitfield-Mask: 0x01) */ -#define RTC_CLRSR_RAI_Pos (8UL) /*!< RTC CLRSR: RAI (Bit 8) */ -#define RTC_CLRSR_RAI_Msk \ - (0x100UL) /*!< RTC CLRSR: RAI (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- RTC_ATIM0 --------------------------------- */ -#define RTC_ATIM0_ASE_Pos (0UL) /*!< RTC ATIM0: ASE (Bit 0) */ -#define RTC_ATIM0_ASE_Msk \ - (0x3fUL) /*!< RTC ATIM0: ASE (Bitfield-Mask: 0x3f) */ -#define RTC_ATIM0_AMI_Pos (8UL) /*!< RTC ATIM0: AMI (Bit 8) */ -#define RTC_ATIM0_AMI_Msk \ - (0x3f00UL) /*!< RTC ATIM0: AMI (Bitfield-Mask: 0x3f) */ -#define RTC_ATIM0_AHO_Pos (16UL) /*!< RTC ATIM0: AHO (Bit 16) */ -#define RTC_ATIM0_AHO_Msk \ - (0x1f0000UL) /*!< RTC ATIM0: AHO (Bitfield-Mask: 0x1f) */ -#define RTC_ATIM0_ADA_Pos (24UL) /*!< RTC ATIM0: ADA (Bit 24) */ -#define RTC_ATIM0_ADA_Msk \ - (0x1f000000UL) /*!< RTC ATIM0: ADA (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- RTC_ATIM1 --------------------------------- */ -#define RTC_ATIM1_AMO_Pos (8UL) /*!< RTC ATIM1: AMO (Bit 8) */ -#define RTC_ATIM1_AMO_Msk \ - (0xf00UL) /*!< RTC ATIM1: AMO (Bitfield-Mask: 0x0f) */ -#define RTC_ATIM1_AYE_Pos (16UL) /*!< RTC ATIM1: AYE (Bit 16) */ -#define RTC_ATIM1_AYE_Msk \ - (0xffff0000UL) /*!< RTC ATIM1: AYE (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- RTC_TIM0 ---------------------------------- */ -#define RTC_TIM0_SE_Pos (0UL) /*!< RTC TIM0: SE (Bit 0) */ -#define RTC_TIM0_SE_Msk (0x3fUL) /*!< RTC TIM0: SE (Bitfield-Mask: 0x3f) */ -#define RTC_TIM0_MI_Pos (8UL) /*!< RTC TIM0: MI (Bit 8) */ -#define RTC_TIM0_MI_Msk \ - (0x3f00UL) /*!< RTC TIM0: MI (Bitfield-Mask: 0x3f) */ -#define RTC_TIM0_HO_Pos (16UL) /*!< RTC TIM0: HO (Bit 16) */ -#define RTC_TIM0_HO_Msk \ - (0x1f0000UL) /*!< RTC TIM0: HO (Bitfield-Mask: 0x1f) */ -#define RTC_TIM0_DA_Pos (24UL) /*!< RTC TIM0: DA (Bit 24) */ -#define RTC_TIM0_DA_Msk \ - (0x1f000000UL) /*!< RTC TIM0: DA (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- RTC_TIM1 ---------------------------------- */ -#define RTC_TIM1_DAWE_Pos (0UL) /*!< RTC TIM1: DAWE (Bit 0) */ -#define RTC_TIM1_DAWE_Msk \ - (0x7UL) /*!< RTC TIM1: DAWE (Bitfield-Mask: 0x07) */ -#define RTC_TIM1_MO_Pos (8UL) /*!< RTC TIM1: MO (Bit 8) */ -#define RTC_TIM1_MO_Msk \ - (0xf00UL) /*!< RTC TIM1: MO (Bitfield-Mask: 0x0f) */ -#define RTC_TIM1_YE_Pos (16UL) /*!< RTC TIM1: YE (Bit 16) */ -#define RTC_TIM1_YE_Msk \ - (0xffff0000UL) /*!< RTC TIM1: YE (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_CLK' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- SCU_CLK_CLKSTAT ------------------------------ */ -#define SCU_CLK_CLKSTAT_USBCST_Pos \ - (0UL) /*!< SCU_CLK CLKSTAT: USBCST (Bit 0) */ -#define SCU_CLK_CLKSTAT_USBCST_Msk \ - (0x1UL) /*!< SCU_CLK CLKSTAT: USBCST (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSTAT_ETH0CST_Pos \ - (2UL) /*!< SCU_CLK CLKSTAT: ETH0CST (Bit 2) */ -#define SCU_CLK_CLKSTAT_ETH0CST_Msk \ - (0x4UL) /*!< SCU_CLK CLKSTAT: ETH0CST (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSTAT_CCUCST_Pos \ - (4UL) /*!< SCU_CLK CLKSTAT: CCUCST (Bit 4) */ -#define SCU_CLK_CLKSTAT_CCUCST_Msk \ - (0x10UL) /*!< SCU_CLK CLKSTAT: CCUCST (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSTAT_WDTCST_Pos \ - (5UL) /*!< SCU_CLK CLKSTAT: WDTCST (Bit 5) */ -#define SCU_CLK_CLKSTAT_WDTCST_Msk \ - (0x20UL) /*!< SCU_CLK CLKSTAT: WDTCST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_CLK_CLKSET ------------------------------- */ -#define SCU_CLK_CLKSET_USBCEN_Pos \ - (0UL) /*!< SCU_CLK CLKSET: USBCEN (Bit 0) */ -#define SCU_CLK_CLKSET_USBCEN_Msk \ - (0x1UL) /*!< SCU_CLK CLKSET: USBCEN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSET_ETH0CEN_Pos \ - (2UL) /*!< SCU_CLK CLKSET: ETH0CEN (Bit 2) */ -#define SCU_CLK_CLKSET_ETH0CEN_Msk \ - (0x4UL) /*!< SCU_CLK CLKSET: ETH0CEN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSET_CCUCEN_Pos \ - (4UL) /*!< SCU_CLK CLKSET: CCUCEN (Bit 4) */ -#define SCU_CLK_CLKSET_CCUCEN_Msk \ - (0x10UL) /*!< SCU_CLK CLKSET: CCUCEN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKSET_WDTCEN_Pos \ - (5UL) /*!< SCU_CLK CLKSET: WDTCEN (Bit 5) */ -#define SCU_CLK_CLKSET_WDTCEN_Msk \ - (0x20UL) /*!< SCU_CLK CLKSET: WDTCEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_CLK_CLKCLR ------------------------------- */ -#define SCU_CLK_CLKCLR_USBCDI_Pos \ - (0UL) /*!< SCU_CLK CLKCLR: USBCDI (Bit 0) */ -#define SCU_CLK_CLKCLR_USBCDI_Msk \ - (0x1UL) /*!< SCU_CLK CLKCLR: USBCDI (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKCLR_ETH0CDI_Pos \ - (2UL) /*!< SCU_CLK CLKCLR: ETH0CDI (Bit 2) */ -#define SCU_CLK_CLKCLR_ETH0CDI_Msk \ - (0x4UL) /*!< SCU_CLK CLKCLR: ETH0CDI (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKCLR_CCUCDI_Pos \ - (4UL) /*!< SCU_CLK CLKCLR: CCUCDI (Bit 4) */ -#define SCU_CLK_CLKCLR_CCUCDI_Msk \ - (0x10UL) /*!< SCU_CLK CLKCLR: CCUCDI (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CLKCLR_WDTCDI_Pos \ - (5UL) /*!< SCU_CLK CLKCLR: WDTCDI (Bit 5) */ -#define SCU_CLK_CLKCLR_WDTCDI_Msk \ - (0x20UL) /*!< SCU_CLK CLKCLR: WDTCDI (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_SYSCLKCR ------------------------------ */ -#define SCU_CLK_SYSCLKCR_SYSDIV_Pos \ - (0UL) /*!< SCU_CLK SYSCLKCR: SYSDIV (Bit 0) */ -#define SCU_CLK_SYSCLKCR_SYSDIV_Msk \ - (0xffUL) /*!< SCU_CLK SYSCLKCR: SYSDIV (Bitfield-Mask: 0xff) */ -#define SCU_CLK_SYSCLKCR_SYSSEL_Pos \ - (16UL) /*!< SCU_CLK SYSCLKCR: SYSSEL (Bit 16) */ -#define SCU_CLK_SYSCLKCR_SYSSEL_Msk \ - (0x10000UL) /*!< SCU_CLK SYSCLKCR: SYSSEL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CPUCLKCR ------------------------------ */ -#define SCU_CLK_CPUCLKCR_CPUDIV_Pos \ - (0UL) /*!< SCU_CLK CPUCLKCR: CPUDIV (Bit 0) */ -#define SCU_CLK_CPUCLKCR_CPUDIV_Msk \ - (0x1UL) /*!< SCU_CLK CPUCLKCR: CPUDIV (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_CLK_PBCLKCR ------------------------------ */ -#define SCU_CLK_PBCLKCR_PBDIV_Pos \ - (0UL) /*!< SCU_CLK PBCLKCR: PBDIV (Bit 0) */ -#define SCU_CLK_PBCLKCR_PBDIV_Msk \ - (0x1UL) /*!< SCU_CLK PBCLKCR: PBDIV (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_USBCLKCR ------------------------------ */ -#define SCU_CLK_USBCLKCR_USBDIV_Pos \ - (0UL) /*!< SCU_CLK USBCLKCR: USBDIV (Bit 0) */ -#define SCU_CLK_USBCLKCR_USBDIV_Msk \ - (0x7UL) /*!< SCU_CLK USBCLKCR: USBDIV (Bitfield-Mask: 0x07) */ -#define SCU_CLK_USBCLKCR_USBSEL_Pos \ - (16UL) /*!< SCU_CLK USBCLKCR: USBSEL (Bit 16) */ -#define SCU_CLK_USBCLKCR_USBSEL_Msk \ - (0x10000UL) /*!< SCU_CLK USBCLKCR: USBSEL (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CCUCLKCR ------------------------------ */ -#define SCU_CLK_CCUCLKCR_CCUDIV_Pos \ - (0UL) /*!< SCU_CLK CCUCLKCR: CCUDIV (Bit 0) */ -#define SCU_CLK_CCUCLKCR_CCUDIV_Msk \ - (0x1UL) /*!< SCU_CLK CCUCLKCR: CCUDIV (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_WDTCLKCR ------------------------------ */ -#define SCU_CLK_WDTCLKCR_WDTDIV_Pos \ - (0UL) /*!< SCU_CLK WDTCLKCR: WDTDIV (Bit 0) */ -#define SCU_CLK_WDTCLKCR_WDTDIV_Msk \ - (0xffUL) /*!< SCU_CLK WDTCLKCR: WDTDIV (Bitfield-Mask: 0xff) */ -#define SCU_CLK_WDTCLKCR_WDTSEL_Pos \ - (16UL) /*!< SCU_CLK WDTCLKCR: WDTSEL (Bit 16) */ -#define SCU_CLK_WDTCLKCR_WDTSEL_Msk \ - (0x30000UL) /*!< SCU_CLK WDTCLKCR: WDTSEL (Bitfield-Mask: 0x03) */ - -/* ------------------------------ SCU_CLK_EXTCLKCR ------------------------------ */ -#define SCU_CLK_EXTCLKCR_ECKSEL_Pos \ - (0UL) /*!< SCU_CLK EXTCLKCR: ECKSEL (Bit 0) */ -#define SCU_CLK_EXTCLKCR_ECKSEL_Msk \ - (0x7UL) /*!< SCU_CLK EXTCLKCR: ECKSEL (Bitfield-Mask: 0x07) */ -#define SCU_CLK_EXTCLKCR_ECKDIV_Pos \ - (16UL) /*!< SCU_CLK EXTCLKCR: ECKDIV (Bit 16) */ -#define SCU_CLK_EXTCLKCR_ECKDIV_Msk \ - (0x1ff0000UL) /*!< SCU_CLK EXTCLKCR: ECKDIV (Bitfield-Mask: 0x1ff) */ - -/* ----------------------------- SCU_CLK_MLINKCLKCR ----------------------------- */ -#define SCU_CLK_MLINKCLKCR_SYSDIV_Pos \ - (0UL) /*!< SCU_CLK MLINKCLKCR: SYSDIV (Bit 0) */ -#define SCU_CLK_MLINKCLKCR_SYSDIV_Msk \ - (0xffUL) /*!< SCU_CLK MLINKCLKCR: SYSDIV (Bitfield-Mask: 0xff) */ -#define SCU_CLK_MLINKCLKCR_SYSSEL_Pos \ - (8UL) /*!< SCU_CLK MLINKCLKCR: SYSSEL (Bit 8) */ -#define SCU_CLK_MLINKCLKCR_SYSSEL_Msk \ - (0x100UL) /*!< SCU_CLK MLINKCLKCR: SYSSEL (Bitfield-Mask: 0x01) */ -#define SCU_CLK_MLINKCLKCR_CPUDIV_Pos \ - (10UL) /*!< SCU_CLK MLINKCLKCR: CPUDIV (Bit 10) */ -#define SCU_CLK_MLINKCLKCR_CPUDIV_Msk \ - (0x400UL) /*!< SCU_CLK MLINKCLKCR: CPUDIV (Bitfield-Mask: 0x01) */ -#define SCU_CLK_MLINKCLKCR_PBDIV_Pos \ - (12UL) /*!< SCU_CLK MLINKCLKCR: PBDIV (Bit 12) */ -#define SCU_CLK_MLINKCLKCR_PBDIV_Msk \ - (0x1000UL) /*!< SCU_CLK MLINKCLKCR: PBDIV (Bitfield-Mask: 0x01) */ -#define SCU_CLK_MLINKCLKCR_CCUDIV_Pos \ - (14UL) /*!< SCU_CLK MLINKCLKCR: CCUDIV (Bit 14) */ -#define SCU_CLK_MLINKCLKCR_CCUDIV_Msk \ - (0x4000UL) /*!< SCU_CLK MLINKCLKCR: CCUDIV (Bitfield-Mask: 0x01) */ -#define SCU_CLK_MLINKCLKCR_WDTDIV_Pos \ - (16UL) /*!< SCU_CLK MLINKCLKCR: WDTDIV (Bit 16) */ -#define SCU_CLK_MLINKCLKCR_WDTDIV_Msk \ - (0xff0000UL) /*!< SCU_CLK MLINKCLKCR: WDTDIV (Bitfield-Mask: 0xff) */ -#define SCU_CLK_MLINKCLKCR_WDTSEL_Pos \ - (24UL) /*!< SCU_CLK MLINKCLKCR: WDTSEL (Bit 24) */ -#define SCU_CLK_MLINKCLKCR_WDTSEL_Msk \ - (0x3000000UL) /*!< SCU_CLK MLINKCLKCR: WDTSEL (Bitfield-Mask: 0x03) */ - -/* ------------------------------- SCU_CLK_SLEEPCR ------------------------------ */ -#define SCU_CLK_SLEEPCR_SYSSEL_Pos \ - (0UL) /*!< SCU_CLK SLEEPCR: SYSSEL (Bit 0) */ -#define SCU_CLK_SLEEPCR_SYSSEL_Msk \ - (0x1UL) /*!< SCU_CLK SLEEPCR: SYSSEL (Bitfield-Mask: 0x01) */ -#define SCU_CLK_SLEEPCR_USBCR_Pos \ - (16UL) /*!< SCU_CLK SLEEPCR: USBCR (Bit 16) */ -#define SCU_CLK_SLEEPCR_USBCR_Msk \ - (0x10000UL) /*!< SCU_CLK SLEEPCR: USBCR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_SLEEPCR_ETH0CR_Pos \ - (18UL) /*!< SCU_CLK SLEEPCR: ETH0CR (Bit 18) */ -#define SCU_CLK_SLEEPCR_ETH0CR_Msk \ - (0x40000UL) /*!< SCU_CLK SLEEPCR: ETH0CR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_SLEEPCR_CCUCR_Pos \ - (20UL) /*!< SCU_CLK SLEEPCR: CCUCR (Bit 20) */ -#define SCU_CLK_SLEEPCR_CCUCR_Msk \ - (0x100000UL) /*!< SCU_CLK SLEEPCR: CCUCR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_SLEEPCR_WDTCR_Pos \ - (21UL) /*!< SCU_CLK SLEEPCR: WDTCR (Bit 21) */ -#define SCU_CLK_SLEEPCR_WDTCR_Msk \ - (0x200000UL) /*!< SCU_CLK SLEEPCR: WDTCR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_DSLEEPCR ------------------------------ */ -#define SCU_CLK_DSLEEPCR_SYSSEL_Pos \ - (0UL) /*!< SCU_CLK DSLEEPCR: SYSSEL (Bit 0) */ -#define SCU_CLK_DSLEEPCR_SYSSEL_Msk \ - (0x1UL) /*!< SCU_CLK DSLEEPCR: SYSSEL (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_FPDN_Pos \ - (11UL) /*!< SCU_CLK DSLEEPCR: FPDN (Bit 11) */ -#define SCU_CLK_DSLEEPCR_FPDN_Msk \ - (0x800UL) /*!< SCU_CLK DSLEEPCR: FPDN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_PLLPDN_Pos \ - (12UL) /*!< SCU_CLK DSLEEPCR: PLLPDN (Bit 12) */ -#define SCU_CLK_DSLEEPCR_PLLPDN_Msk \ - (0x1000UL) /*!< SCU_CLK DSLEEPCR: PLLPDN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_VCOPDN_Pos \ - (13UL) /*!< SCU_CLK DSLEEPCR: VCOPDN (Bit 13) */ -#define SCU_CLK_DSLEEPCR_VCOPDN_Msk \ - (0x2000UL) /*!< SCU_CLK DSLEEPCR: VCOPDN (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_USBCR_Pos \ - (16UL) /*!< SCU_CLK DSLEEPCR: USBCR (Bit 16) */ -#define SCU_CLK_DSLEEPCR_USBCR_Msk \ - (0x10000UL) /*!< SCU_CLK DSLEEPCR: USBCR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_ETH0CR_Pos \ - (18UL) /*!< SCU_CLK DSLEEPCR: ETH0CR (Bit 18) */ -#define SCU_CLK_DSLEEPCR_ETH0CR_Msk \ - (0x40000UL) /*!< SCU_CLK DSLEEPCR: ETH0CR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_CCUCR_Pos \ - (20UL) /*!< SCU_CLK DSLEEPCR: CCUCR (Bit 20) */ -#define SCU_CLK_DSLEEPCR_CCUCR_Msk \ - (0x100000UL) /*!< SCU_CLK DSLEEPCR: CCUCR (Bitfield-Mask: 0x01) */ -#define SCU_CLK_DSLEEPCR_WDTCR_Pos \ - (21UL) /*!< SCU_CLK DSLEEPCR: WDTCR (Bit 21) */ -#define SCU_CLK_DSLEEPCR_WDTCR_Msk \ - (0x200000UL) /*!< SCU_CLK DSLEEPCR: WDTCR (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSTAT0 ----------------------------- */ -#define SCU_CLK_CGATSTAT0_VADC_Pos \ - (0UL) /*!< SCU_CLK CGATSTAT0: VADC (Bit 0) */ -#define SCU_CLK_CGATSTAT0_VADC_Msk \ - (0x1UL) /*!< SCU_CLK CGATSTAT0: VADC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_DSD_Pos \ - (1UL) /*!< SCU_CLK CGATSTAT0: DSD (Bit 1) */ -#define SCU_CLK_CGATSTAT0_DSD_Msk \ - (0x2UL) /*!< SCU_CLK CGATSTAT0: DSD (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_CCU40_Pos \ - (2UL) /*!< SCU_CLK CGATSTAT0: CCU40 (Bit 2) */ -#define SCU_CLK_CGATSTAT0_CCU40_Msk \ - (0x4UL) /*!< SCU_CLK CGATSTAT0: CCU40 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_CCU41_Pos \ - (3UL) /*!< SCU_CLK CGATSTAT0: CCU41 (Bit 3) */ -#define SCU_CLK_CGATSTAT0_CCU41_Msk \ - (0x8UL) /*!< SCU_CLK CGATSTAT0: CCU41 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_CCU42_Pos \ - (4UL) /*!< SCU_CLK CGATSTAT0: CCU42 (Bit 4) */ -#define SCU_CLK_CGATSTAT0_CCU42_Msk \ - (0x10UL) /*!< SCU_CLK CGATSTAT0: CCU42 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_CCU80_Pos \ - (7UL) /*!< SCU_CLK CGATSTAT0: CCU80 (Bit 7) */ -#define SCU_CLK_CGATSTAT0_CCU80_Msk \ - (0x80UL) /*!< SCU_CLK CGATSTAT0: CCU80 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_CCU81_Pos \ - (8UL) /*!< SCU_CLK CGATSTAT0: CCU81 (Bit 8) */ -#define SCU_CLK_CGATSTAT0_CCU81_Msk \ - (0x100UL) /*!< SCU_CLK CGATSTAT0: CCU81 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_POSIF0_Pos \ - (9UL) /*!< SCU_CLK CGATSTAT0: POSIF0 (Bit 9) */ -#define SCU_CLK_CGATSTAT0_POSIF0_Msk \ - (0x200UL) /*!< SCU_CLK CGATSTAT0: POSIF0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_POSIF1_Pos \ - (10UL) /*!< SCU_CLK CGATSTAT0: POSIF1 (Bit 10) */ -#define SCU_CLK_CGATSTAT0_POSIF1_Msk \ - (0x400UL) /*!< SCU_CLK CGATSTAT0: POSIF1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_USIC0_Pos \ - (11UL) /*!< SCU_CLK CGATSTAT0: USIC0 (Bit 11) */ -#define SCU_CLK_CGATSTAT0_USIC0_Msk \ - (0x800UL) /*!< SCU_CLK CGATSTAT0: USIC0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_ERU1_Pos \ - (16UL) /*!< SCU_CLK CGATSTAT0: ERU1 (Bit 16) */ -#define SCU_CLK_CGATSTAT0_ERU1_Msk \ - (0x10000UL) /*!< SCU_CLK CGATSTAT0: ERU1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT0_HRPWM0_Pos \ - (23UL) /*!< SCU_CLK CGATSTAT0: HRPWM0 (Bit 23) */ -#define SCU_CLK_CGATSTAT0_HRPWM0_Msk \ - (0x800000UL) /*!< SCU_CLK CGATSTAT0: HRPWM0 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSET0 ------------------------------ */ -#define SCU_CLK_CGATSET0_VADC_Pos \ - (0UL) /*!< SCU_CLK CGATSET0: VADC (Bit 0) */ -#define SCU_CLK_CGATSET0_VADC_Msk \ - (0x1UL) /*!< SCU_CLK CGATSET0: VADC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_DSD_Pos \ - (1UL) /*!< SCU_CLK CGATSET0: DSD (Bit 1) */ -#define SCU_CLK_CGATSET0_DSD_Msk \ - (0x2UL) /*!< SCU_CLK CGATSET0: DSD (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_CCU40_Pos \ - (2UL) /*!< SCU_CLK CGATSET0: CCU40 (Bit 2) */ -#define SCU_CLK_CGATSET0_CCU40_Msk \ - (0x4UL) /*!< SCU_CLK CGATSET0: CCU40 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_CCU41_Pos \ - (3UL) /*!< SCU_CLK CGATSET0: CCU41 (Bit 3) */ -#define SCU_CLK_CGATSET0_CCU41_Msk \ - (0x8UL) /*!< SCU_CLK CGATSET0: CCU41 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_CCU42_Pos \ - (4UL) /*!< SCU_CLK CGATSET0: CCU42 (Bit 4) */ -#define SCU_CLK_CGATSET0_CCU42_Msk \ - (0x10UL) /*!< SCU_CLK CGATSET0: CCU42 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_CCU80_Pos \ - (7UL) /*!< SCU_CLK CGATSET0: CCU80 (Bit 7) */ -#define SCU_CLK_CGATSET0_CCU80_Msk \ - (0x80UL) /*!< SCU_CLK CGATSET0: CCU80 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_CCU81_Pos \ - (8UL) /*!< SCU_CLK CGATSET0: CCU81 (Bit 8) */ -#define SCU_CLK_CGATSET0_CCU81_Msk \ - (0x100UL) /*!< SCU_CLK CGATSET0: CCU81 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_POSIF0_Pos \ - (9UL) /*!< SCU_CLK CGATSET0: POSIF0 (Bit 9) */ -#define SCU_CLK_CGATSET0_POSIF0_Msk \ - (0x200UL) /*!< SCU_CLK CGATSET0: POSIF0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_POSIF1_Pos \ - (10UL) /*!< SCU_CLK CGATSET0: POSIF1 (Bit 10) */ -#define SCU_CLK_CGATSET0_POSIF1_Msk \ - (0x400UL) /*!< SCU_CLK CGATSET0: POSIF1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_USIC0_Pos \ - (11UL) /*!< SCU_CLK CGATSET0: USIC0 (Bit 11) */ -#define SCU_CLK_CGATSET0_USIC0_Msk \ - (0x800UL) /*!< SCU_CLK CGATSET0: USIC0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_ERU1_Pos \ - (16UL) /*!< SCU_CLK CGATSET0: ERU1 (Bit 16) */ -#define SCU_CLK_CGATSET0_ERU1_Msk \ - (0x10000UL) /*!< SCU_CLK CGATSET0: ERU1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET0_HRPWM0_Pos \ - (23UL) /*!< SCU_CLK CGATSET0: HRPWM0 (Bit 23) */ -#define SCU_CLK_CGATSET0_HRPWM0_Msk \ - (0x800000UL) /*!< SCU_CLK CGATSET0: HRPWM0 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATCLR0 ------------------------------ */ -#define SCU_CLK_CGATCLR0_VADC_Pos \ - (0UL) /*!< SCU_CLK CGATCLR0: VADC (Bit 0) */ -#define SCU_CLK_CGATCLR0_VADC_Msk \ - (0x1UL) /*!< SCU_CLK CGATCLR0: VADC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_DSD_Pos \ - (1UL) /*!< SCU_CLK CGATCLR0: DSD (Bit 1) */ -#define SCU_CLK_CGATCLR0_DSD_Msk \ - (0x2UL) /*!< SCU_CLK CGATCLR0: DSD (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_CCU40_Pos \ - (2UL) /*!< SCU_CLK CGATCLR0: CCU40 (Bit 2) */ -#define SCU_CLK_CGATCLR0_CCU40_Msk \ - (0x4UL) /*!< SCU_CLK CGATCLR0: CCU40 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_CCU41_Pos \ - (3UL) /*!< SCU_CLK CGATCLR0: CCU41 (Bit 3) */ -#define SCU_CLK_CGATCLR0_CCU41_Msk \ - (0x8UL) /*!< SCU_CLK CGATCLR0: CCU41 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_CCU42_Pos \ - (4UL) /*!< SCU_CLK CGATCLR0: CCU42 (Bit 4) */ -#define SCU_CLK_CGATCLR0_CCU42_Msk \ - (0x10UL) /*!< SCU_CLK CGATCLR0: CCU42 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_CCU80_Pos \ - (7UL) /*!< SCU_CLK CGATCLR0: CCU80 (Bit 7) */ -#define SCU_CLK_CGATCLR0_CCU80_Msk \ - (0x80UL) /*!< SCU_CLK CGATCLR0: CCU80 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_CCU81_Pos \ - (8UL) /*!< SCU_CLK CGATCLR0: CCU81 (Bit 8) */ -#define SCU_CLK_CGATCLR0_CCU81_Msk \ - (0x100UL) /*!< SCU_CLK CGATCLR0: CCU81 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_POSIF0_Pos \ - (9UL) /*!< SCU_CLK CGATCLR0: POSIF0 (Bit 9) */ -#define SCU_CLK_CGATCLR0_POSIF0_Msk \ - (0x200UL) /*!< SCU_CLK CGATCLR0: POSIF0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_POSIF1_Pos \ - (10UL) /*!< SCU_CLK CGATCLR0: POSIF1 (Bit 10) */ -#define SCU_CLK_CGATCLR0_POSIF1_Msk \ - (0x400UL) /*!< SCU_CLK CGATCLR0: POSIF1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_USIC0_Pos \ - (11UL) /*!< SCU_CLK CGATCLR0: USIC0 (Bit 11) */ -#define SCU_CLK_CGATCLR0_USIC0_Msk \ - (0x800UL) /*!< SCU_CLK CGATCLR0: USIC0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_ERU1_Pos \ - (16UL) /*!< SCU_CLK CGATCLR0: ERU1 (Bit 16) */ -#define SCU_CLK_CGATCLR0_ERU1_Msk \ - (0x10000UL) /*!< SCU_CLK CGATCLR0: ERU1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR0_HRPWM0_Pos \ - (23UL) /*!< SCU_CLK CGATCLR0: HRPWM0 (Bit 23) */ -#define SCU_CLK_CGATCLR0_HRPWM0_Msk \ - (0x800000UL) /*!< SCU_CLK CGATCLR0: HRPWM0 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSTAT1 ----------------------------- */ -#define SCU_CLK_CGATSTAT1_CCU43_Pos \ - (0UL) /*!< SCU_CLK CGATSTAT1: CCU43 (Bit 0) */ -#define SCU_CLK_CGATSTAT1_CCU43_Msk \ - (0x1UL) /*!< SCU_CLK CGATSTAT1: CCU43 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_LEDTSCU0_Pos \ - (3UL) /*!< SCU_CLK CGATSTAT1: LEDTSCU0 (Bit 3) */ -#define SCU_CLK_CGATSTAT1_LEDTSCU0_Msk \ - (0x8UL) /*!< SCU_CLK CGATSTAT1: LEDTSCU0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_MCAN0_Pos \ - (4UL) /*!< SCU_CLK CGATSTAT1: MCAN0 (Bit 4) */ -#define SCU_CLK_CGATSTAT1_MCAN0_Msk \ - (0x10UL) /*!< SCU_CLK CGATSTAT1: MCAN0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_DAC_Pos \ - (5UL) /*!< SCU_CLK CGATSTAT1: DAC (Bit 5) */ -#define SCU_CLK_CGATSTAT1_DAC_Msk \ - (0x20UL) /*!< SCU_CLK CGATSTAT1: DAC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_USIC1_Pos \ - (7UL) /*!< SCU_CLK CGATSTAT1: USIC1 (Bit 7) */ -#define SCU_CLK_CGATSTAT1_USIC1_Msk \ - (0x80UL) /*!< SCU_CLK CGATSTAT1: USIC1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT1_PPORTS_Pos \ - (9UL) /*!< SCU_CLK CGATSTAT1: PPORTS (Bit 9) */ -#define SCU_CLK_CGATSTAT1_PPORTS_Msk \ - (0x200UL) /*!< SCU_CLK CGATSTAT1: PPORTS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSET1 ------------------------------ */ -#define SCU_CLK_CGATSET1_CCU43_Pos \ - (0UL) /*!< SCU_CLK CGATSET1: CCU43 (Bit 0) */ -#define SCU_CLK_CGATSET1_CCU43_Msk \ - (0x1UL) /*!< SCU_CLK CGATSET1: CCU43 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_LEDTSCU0_Pos \ - (3UL) /*!< SCU_CLK CGATSET1: LEDTSCU0 (Bit 3) */ -#define SCU_CLK_CGATSET1_LEDTSCU0_Msk \ - (0x8UL) /*!< SCU_CLK CGATSET1: LEDTSCU0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_MCAN0_Pos \ - (4UL) /*!< SCU_CLK CGATSET1: MCAN0 (Bit 4) */ -#define SCU_CLK_CGATSET1_MCAN0_Msk \ - (0x10UL) /*!< SCU_CLK CGATSET1: MCAN0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_DAC_Pos \ - (5UL) /*!< SCU_CLK CGATSET1: DAC (Bit 5) */ -#define SCU_CLK_CGATSET1_DAC_Msk \ - (0x20UL) /*!< SCU_CLK CGATSET1: DAC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_USIC1_Pos \ - (7UL) /*!< SCU_CLK CGATSET1: USIC1 (Bit 7) */ -#define SCU_CLK_CGATSET1_USIC1_Msk \ - (0x80UL) /*!< SCU_CLK CGATSET1: USIC1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET1_PPORTS_Pos \ - (9UL) /*!< SCU_CLK CGATSET1: PPORTS (Bit 9) */ -#define SCU_CLK_CGATSET1_PPORTS_Msk \ - (0x200UL) /*!< SCU_CLK CGATSET1: PPORTS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATCLR1 ------------------------------ */ -#define SCU_CLK_CGATCLR1_CCU43_Pos \ - (0UL) /*!< SCU_CLK CGATCLR1: CCU43 (Bit 0) */ -#define SCU_CLK_CGATCLR1_CCU43_Msk \ - (0x1UL) /*!< SCU_CLK CGATCLR1: CCU43 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_LEDTSCU0_Pos \ - (3UL) /*!< SCU_CLK CGATCLR1: LEDTSCU0 (Bit 3) */ -#define SCU_CLK_CGATCLR1_LEDTSCU0_Msk \ - (0x8UL) /*!< SCU_CLK CGATCLR1: LEDTSCU0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_MCAN0_Pos \ - (4UL) /*!< SCU_CLK CGATCLR1: MCAN0 (Bit 4) */ -#define SCU_CLK_CGATCLR1_MCAN0_Msk \ - (0x10UL) /*!< SCU_CLK CGATCLR1: MCAN0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_DAC_Pos \ - (5UL) /*!< SCU_CLK CGATCLR1: DAC (Bit 5) */ -#define SCU_CLK_CGATCLR1_DAC_Msk \ - (0x20UL) /*!< SCU_CLK CGATCLR1: DAC (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_USIC1_Pos \ - (7UL) /*!< SCU_CLK CGATCLR1: USIC1 (Bit 7) */ -#define SCU_CLK_CGATCLR1_USIC1_Msk \ - (0x80UL) /*!< SCU_CLK CGATCLR1: USIC1 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR1_PPORTS_Pos \ - (9UL) /*!< SCU_CLK CGATCLR1: PPORTS (Bit 9) */ -#define SCU_CLK_CGATCLR1_PPORTS_Msk \ - (0x200UL) /*!< SCU_CLK CGATCLR1: PPORTS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSTAT2 ----------------------------- */ -#define SCU_CLK_CGATSTAT2_WDT_Pos \ - (1UL) /*!< SCU_CLK CGATSTAT2: WDT (Bit 1) */ -#define SCU_CLK_CGATSTAT2_WDT_Msk \ - (0x2UL) /*!< SCU_CLK CGATSTAT2: WDT (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT2_ETH0_Pos \ - (2UL) /*!< SCU_CLK CGATSTAT2: ETH0 (Bit 2) */ -#define SCU_CLK_CGATSTAT2_ETH0_Msk \ - (0x4UL) /*!< SCU_CLK CGATSTAT2: ETH0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT2_DMA0_Pos \ - (4UL) /*!< SCU_CLK CGATSTAT2: DMA0 (Bit 4) */ -#define SCU_CLK_CGATSTAT2_DMA0_Msk \ - (0x10UL) /*!< SCU_CLK CGATSTAT2: DMA0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT2_FCE_Pos \ - (6UL) /*!< SCU_CLK CGATSTAT2: FCE (Bit 6) */ -#define SCU_CLK_CGATSTAT2_FCE_Msk \ - (0x40UL) /*!< SCU_CLK CGATSTAT2: FCE (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSTAT2_USB_Pos \ - (7UL) /*!< SCU_CLK CGATSTAT2: USB (Bit 7) */ -#define SCU_CLK_CGATSTAT2_USB_Msk \ - (0x80UL) /*!< SCU_CLK CGATSTAT2: USB (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATSET2 ------------------------------ */ -#define SCU_CLK_CGATSET2_WDT_Pos \ - (1UL) /*!< SCU_CLK CGATSET2: WDT (Bit 1) */ -#define SCU_CLK_CGATSET2_WDT_Msk \ - (0x2UL) /*!< SCU_CLK CGATSET2: WDT (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET2_ETH0_Pos \ - (2UL) /*!< SCU_CLK CGATSET2: ETH0 (Bit 2) */ -#define SCU_CLK_CGATSET2_ETH0_Msk \ - (0x4UL) /*!< SCU_CLK CGATSET2: ETH0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET2_DMA0_Pos \ - (4UL) /*!< SCU_CLK CGATSET2: DMA0 (Bit 4) */ -#define SCU_CLK_CGATSET2_DMA0_Msk \ - (0x10UL) /*!< SCU_CLK CGATSET2: DMA0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET2_FCE_Pos \ - (6UL) /*!< SCU_CLK CGATSET2: FCE (Bit 6) */ -#define SCU_CLK_CGATSET2_FCE_Msk \ - (0x40UL) /*!< SCU_CLK CGATSET2: FCE (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATSET2_USB_Pos \ - (7UL) /*!< SCU_CLK CGATSET2: USB (Bit 7) */ -#define SCU_CLK_CGATSET2_USB_Msk \ - (0x80UL) /*!< SCU_CLK CGATSET2: USB (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_CLK_CGATCLR2 ------------------------------ */ -#define SCU_CLK_CGATCLR2_WDT_Pos \ - (1UL) /*!< SCU_CLK CGATCLR2: WDT (Bit 1) */ -#define SCU_CLK_CGATCLR2_WDT_Msk \ - (0x2UL) /*!< SCU_CLK CGATCLR2: WDT (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR2_ETH0_Pos \ - (2UL) /*!< SCU_CLK CGATCLR2: ETH0 (Bit 2) */ -#define SCU_CLK_CGATCLR2_ETH0_Msk \ - (0x4UL) /*!< SCU_CLK CGATCLR2: ETH0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR2_DMA0_Pos \ - (4UL) /*!< SCU_CLK CGATCLR2: DMA0 (Bit 4) */ -#define SCU_CLK_CGATCLR2_DMA0_Msk \ - (0x10UL) /*!< SCU_CLK CGATCLR2: DMA0 (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR2_FCE_Pos \ - (6UL) /*!< SCU_CLK CGATCLR2: FCE (Bit 6) */ -#define SCU_CLK_CGATCLR2_FCE_Msk \ - (0x40UL) /*!< SCU_CLK CGATCLR2: FCE (Bitfield-Mask: 0x01) */ -#define SCU_CLK_CGATCLR2_USB_Pos \ - (7UL) /*!< SCU_CLK CGATCLR2: USB (Bit 7) */ -#define SCU_CLK_CGATCLR2_USB_Msk \ - (0x80UL) /*!< SCU_CLK CGATCLR2: USB (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_OSC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ SCU_OSC_OSCHPSTAT ----------------------------- */ -#define SCU_OSC_OSCHPSTAT_X1D_Pos \ - (0UL) /*!< SCU_OSC OSCHPSTAT: X1D (Bit 0) */ -#define SCU_OSC_OSCHPSTAT_X1D_Msk \ - (0x1UL) /*!< SCU_OSC OSCHPSTAT: X1D (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_OSC_OSCHPCTRL ----------------------------- */ -#define SCU_OSC_OSCHPCTRL_X1DEN_Pos \ - (0UL) /*!< SCU_OSC OSCHPCTRL: X1DEN (Bit 0) */ -#define SCU_OSC_OSCHPCTRL_X1DEN_Msk \ - (0x1UL) /*!< SCU_OSC OSCHPCTRL: X1DEN (Bitfield-Mask: 0x01) */ -#define SCU_OSC_OSCHPCTRL_SHBY_Pos \ - (1UL) /*!< SCU_OSC OSCHPCTRL: SHBY (Bit 1) */ -#define SCU_OSC_OSCHPCTRL_SHBY_Msk \ - (0x2UL) /*!< SCU_OSC OSCHPCTRL: SHBY (Bitfield-Mask: 0x01) */ -#define SCU_OSC_OSCHPCTRL_MODE_Pos \ - (4UL) /*!< SCU_OSC OSCHPCTRL: MODE (Bit 4) */ -#define SCU_OSC_OSCHPCTRL_MODE_Msk \ - (0x30UL) /*!< SCU_OSC OSCHPCTRL: MODE (Bitfield-Mask: 0x03) */ -#define SCU_OSC_OSCHPCTRL_OSCVAL_Pos \ - (16UL) /*!< SCU_OSC OSCHPCTRL: OSCVAL (Bit 16) */ -#define SCU_OSC_OSCHPCTRL_OSCVAL_Msk \ - (0xf0000UL) /*!< SCU_OSC OSCHPCTRL: OSCVAL (Bitfield-Mask: 0x0f) */ - -/* ----------------------------- SCU_OSC_CLKCALCONST ---------------------------- */ -#define SCU_OSC_CLKCALCONST_CALIBCONST_Pos \ - (0UL) /*!< SCU_OSC CLKCALCONST: CALIBCONST (Bit 0) */ -#define SCU_OSC_CLKCALCONST_CALIBCONST_Msk \ - (0xfUL) /*!< SCU_OSC CLKCALCONST: CALIBCONST (Bitfield-Mask: 0x0f) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_PLL' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- SCU_PLL_PLLSTAT ------------------------------ */ -#define SCU_PLL_PLLSTAT_VCOBYST_Pos \ - (0UL) /*!< SCU_PLL PLLSTAT: VCOBYST (Bit 0) */ -#define SCU_PLL_PLLSTAT_VCOBYST_Msk \ - (0x1UL) /*!< SCU_PLL PLLSTAT: VCOBYST (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_PWDSTAT_Pos \ - (1UL) /*!< SCU_PLL PLLSTAT: PWDSTAT (Bit 1) */ -#define SCU_PLL_PLLSTAT_PWDSTAT_Msk \ - (0x2UL) /*!< SCU_PLL PLLSTAT: PWDSTAT (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_VCOLOCK_Pos \ - (2UL) /*!< SCU_PLL PLLSTAT: VCOLOCK (Bit 2) */ -#define SCU_PLL_PLLSTAT_VCOLOCK_Msk \ - (0x4UL) /*!< SCU_PLL PLLSTAT: VCOLOCK (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_K1RDY_Pos \ - (4UL) /*!< SCU_PLL PLLSTAT: K1RDY (Bit 4) */ -#define SCU_PLL_PLLSTAT_K1RDY_Msk \ - (0x10UL) /*!< SCU_PLL PLLSTAT: K1RDY (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_K2RDY_Pos \ - (5UL) /*!< SCU_PLL PLLSTAT: K2RDY (Bit 5) */ -#define SCU_PLL_PLLSTAT_K2RDY_Msk \ - (0x20UL) /*!< SCU_PLL PLLSTAT: K2RDY (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_BY_Pos \ - (6UL) /*!< SCU_PLL PLLSTAT: BY (Bit 6) */ -#define SCU_PLL_PLLSTAT_BY_Msk \ - (0x40UL) /*!< SCU_PLL PLLSTAT: BY (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_PLLLV_Pos \ - (7UL) /*!< SCU_PLL PLLSTAT: PLLLV (Bit 7) */ -#define SCU_PLL_PLLSTAT_PLLLV_Msk \ - (0x80UL) /*!< SCU_PLL PLLSTAT: PLLLV (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_PLLHV_Pos \ - (8UL) /*!< SCU_PLL PLLSTAT: PLLHV (Bit 8) */ -#define SCU_PLL_PLLSTAT_PLLHV_Msk \ - (0x100UL) /*!< SCU_PLL PLLSTAT: PLLHV (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLSTAT_PLLSP_Pos \ - (9UL) /*!< SCU_PLL PLLSTAT: PLLSP (Bit 9) */ -#define SCU_PLL_PLLSTAT_PLLSP_Msk \ - (0x200UL) /*!< SCU_PLL PLLSTAT: PLLSP (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_PLL_PLLCON0 ------------------------------ */ -#define SCU_PLL_PLLCON0_VCOBYP_Pos \ - (0UL) /*!< SCU_PLL PLLCON0: VCOBYP (Bit 0) */ -#define SCU_PLL_PLLCON0_VCOBYP_Msk \ - (0x1UL) /*!< SCU_PLL PLLCON0: VCOBYP (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_VCOPWD_Pos \ - (1UL) /*!< SCU_PLL PLLCON0: VCOPWD (Bit 1) */ -#define SCU_PLL_PLLCON0_VCOPWD_Msk \ - (0x2UL) /*!< SCU_PLL PLLCON0: VCOPWD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_VCOTR_Pos \ - (2UL) /*!< SCU_PLL PLLCON0: VCOTR (Bit 2) */ -#define SCU_PLL_PLLCON0_VCOTR_Msk \ - (0x4UL) /*!< SCU_PLL PLLCON0: VCOTR (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_FINDIS_Pos \ - (4UL) /*!< SCU_PLL PLLCON0: FINDIS (Bit 4) */ -#define SCU_PLL_PLLCON0_FINDIS_Msk \ - (0x10UL) /*!< SCU_PLL PLLCON0: FINDIS (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_OSCDISCDIS_Pos \ - (6UL) /*!< SCU_PLL PLLCON0: OSCDISCDIS (Bit 6) */ -#define SCU_PLL_PLLCON0_OSCDISCDIS_Msk \ - (0x40UL) /*!< SCU_PLL PLLCON0: OSCDISCDIS (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_PLLPWD_Pos \ - (16UL) /*!< SCU_PLL PLLCON0: PLLPWD (Bit 16) */ -#define SCU_PLL_PLLCON0_PLLPWD_Msk \ - (0x10000UL) /*!< SCU_PLL PLLCON0: PLLPWD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_OSCRES_Pos \ - (17UL) /*!< SCU_PLL PLLCON0: OSCRES (Bit 17) */ -#define SCU_PLL_PLLCON0_OSCRES_Msk \ - (0x20000UL) /*!< SCU_PLL PLLCON0: OSCRES (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_RESLD_Pos \ - (18UL) /*!< SCU_PLL PLLCON0: RESLD (Bit 18) */ -#define SCU_PLL_PLLCON0_RESLD_Msk \ - (0x40000UL) /*!< SCU_PLL PLLCON0: RESLD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_AOTREN_Pos \ - (19UL) /*!< SCU_PLL PLLCON0: AOTREN (Bit 19) */ -#define SCU_PLL_PLLCON0_AOTREN_Msk \ - (0x80000UL) /*!< SCU_PLL PLLCON0: AOTREN (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON0_FOTR_Pos \ - (20UL) /*!< SCU_PLL PLLCON0: FOTR (Bit 20) */ -#define SCU_PLL_PLLCON0_FOTR_Msk \ - (0x100000UL) /*!< SCU_PLL PLLCON0: FOTR (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_PLL_PLLCON1 ------------------------------ */ -#define SCU_PLL_PLLCON1_K1DIV_Pos \ - (0UL) /*!< SCU_PLL PLLCON1: K1DIV (Bit 0) */ -#define SCU_PLL_PLLCON1_K1DIV_Msk \ - (0x7fUL) /*!< SCU_PLL PLLCON1: K1DIV (Bitfield-Mask: 0x7f) */ -#define SCU_PLL_PLLCON1_NDIV_Pos \ - (8UL) /*!< SCU_PLL PLLCON1: NDIV (Bit 8) */ -#define SCU_PLL_PLLCON1_NDIV_Msk \ - (0x7f00UL) /*!< SCU_PLL PLLCON1: NDIV (Bitfield-Mask: 0x7f) */ -#define SCU_PLL_PLLCON1_K2DIV_Pos \ - (16UL) /*!< SCU_PLL PLLCON1: K2DIV (Bit 16) */ -#define SCU_PLL_PLLCON1_K2DIV_Msk \ - (0x7f0000UL) /*!< SCU_PLL PLLCON1: K2DIV (Bitfield-Mask: 0x7f) */ -#define SCU_PLL_PLLCON1_PDIV_Pos \ - (24UL) /*!< SCU_PLL PLLCON1: PDIV (Bit 24) */ -#define SCU_PLL_PLLCON1_PDIV_Msk \ - (0xf000000UL) /*!< SCU_PLL PLLCON1: PDIV (Bitfield-Mask: 0x0f) */ - -/* ------------------------------- SCU_PLL_PLLCON2 ------------------------------ */ -#define SCU_PLL_PLLCON2_PINSEL_Pos \ - (0UL) /*!< SCU_PLL PLLCON2: PINSEL (Bit 0) */ -#define SCU_PLL_PLLCON2_PINSEL_Msk \ - (0x1UL) /*!< SCU_PLL PLLCON2: PINSEL (Bitfield-Mask: 0x01) */ -#define SCU_PLL_PLLCON2_K1INSEL_Pos \ - (8UL) /*!< SCU_PLL PLLCON2: K1INSEL (Bit 8) */ -#define SCU_PLL_PLLCON2_K1INSEL_Msk \ - (0x100UL) /*!< SCU_PLL PLLCON2: K1INSEL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_PLL_USBPLLSTAT ----------------------------- */ -#define SCU_PLL_USBPLLSTAT_VCOBYST_Pos \ - (0UL) /*!< SCU_PLL USBPLLSTAT: VCOBYST (Bit 0) */ -#define SCU_PLL_USBPLLSTAT_VCOBYST_Msk \ - (0x1UL) /*!< SCU_PLL USBPLLSTAT: VCOBYST (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLSTAT_PWDSTAT_Pos \ - (1UL) /*!< SCU_PLL USBPLLSTAT: PWDSTAT (Bit 1) */ -#define SCU_PLL_USBPLLSTAT_PWDSTAT_Msk \ - (0x2UL) /*!< SCU_PLL USBPLLSTAT: PWDSTAT (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLSTAT_VCOLOCK_Pos \ - (2UL) /*!< SCU_PLL USBPLLSTAT: VCOLOCK (Bit 2) */ -#define SCU_PLL_USBPLLSTAT_VCOLOCK_Msk \ - (0x4UL) /*!< SCU_PLL USBPLLSTAT: VCOLOCK (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLSTAT_BY_Pos \ - (6UL) /*!< SCU_PLL USBPLLSTAT: BY (Bit 6) */ -#define SCU_PLL_USBPLLSTAT_BY_Msk \ - (0x40UL) /*!< SCU_PLL USBPLLSTAT: BY (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLSTAT_VCOLOCKED_Pos \ - (7UL) /*!< SCU_PLL USBPLLSTAT: VCOLOCKED (Bit 7) */ -#define SCU_PLL_USBPLLSTAT_VCOLOCKED_Msk \ - (0x80UL) /*!< SCU_PLL USBPLLSTAT: VCOLOCKED (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_PLL_USBPLLCON ----------------------------- */ -#define SCU_PLL_USBPLLCON_VCOBYP_Pos \ - (0UL) /*!< SCU_PLL USBPLLCON: VCOBYP (Bit 0) */ -#define SCU_PLL_USBPLLCON_VCOBYP_Msk \ - (0x1UL) /*!< SCU_PLL USBPLLCON: VCOBYP (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_VCOPWD_Pos \ - (1UL) /*!< SCU_PLL USBPLLCON: VCOPWD (Bit 1) */ -#define SCU_PLL_USBPLLCON_VCOPWD_Msk \ - (0x2UL) /*!< SCU_PLL USBPLLCON: VCOPWD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_VCOTR_Pos \ - (2UL) /*!< SCU_PLL USBPLLCON: VCOTR (Bit 2) */ -#define SCU_PLL_USBPLLCON_VCOTR_Msk \ - (0x4UL) /*!< SCU_PLL USBPLLCON: VCOTR (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_FINDIS_Pos \ - (4UL) /*!< SCU_PLL USBPLLCON: FINDIS (Bit 4) */ -#define SCU_PLL_USBPLLCON_FINDIS_Msk \ - (0x10UL) /*!< SCU_PLL USBPLLCON: FINDIS (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_OSCDISCDIS_Pos \ - (6UL) /*!< SCU_PLL USBPLLCON: OSCDISCDIS (Bit 6) */ -#define SCU_PLL_USBPLLCON_OSCDISCDIS_Msk \ - (0x40UL) /*!< SCU_PLL USBPLLCON: OSCDISCDIS (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_NDIV_Pos \ - (8UL) /*!< SCU_PLL USBPLLCON: NDIV (Bit 8) */ -#define SCU_PLL_USBPLLCON_NDIV_Msk \ - (0x7f00UL) /*!< SCU_PLL USBPLLCON: NDIV (Bitfield-Mask: 0x7f) */ -#define SCU_PLL_USBPLLCON_PLLPWD_Pos \ - (16UL) /*!< SCU_PLL USBPLLCON: PLLPWD (Bit 16) */ -#define SCU_PLL_USBPLLCON_PLLPWD_Msk \ - (0x10000UL) /*!< SCU_PLL USBPLLCON: PLLPWD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_RESLD_Pos \ - (18UL) /*!< SCU_PLL USBPLLCON: RESLD (Bit 18) */ -#define SCU_PLL_USBPLLCON_RESLD_Msk \ - (0x40000UL) /*!< SCU_PLL USBPLLCON: RESLD (Bitfield-Mask: 0x01) */ -#define SCU_PLL_USBPLLCON_PDIV_Pos \ - (24UL) /*!< SCU_PLL USBPLLCON: PDIV (Bit 24) */ -#define SCU_PLL_USBPLLCON_PDIV_Msk \ - (0xf000000UL) /*!< SCU_PLL USBPLLCON: PDIV (Bitfield-Mask: 0x0f) */ - -/* ------------------------------ SCU_PLL_CLKMXSTAT ----------------------------- */ -#define SCU_PLL_CLKMXSTAT_SYSCLKMUX_Pos \ - (0UL) /*!< SCU_PLL CLKMXSTAT: SYSCLKMUX (Bit 0) */ -#define SCU_PLL_CLKMXSTAT_SYSCLKMUX_Msk \ - (0x3UL) /*!< SCU_PLL CLKMXSTAT: SYSCLKMUX (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_GENERAL' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- SCU_GENERAL_ID ------------------------------- */ -#define SCU_GENERAL_ID_MOD_REV_Pos \ - (0UL) /*!< SCU_GENERAL ID: MOD_REV (Bit 0) */ -#define SCU_GENERAL_ID_MOD_REV_Msk \ - (0xffUL) /*!< SCU_GENERAL ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define SCU_GENERAL_ID_MOD_TYPE_Pos \ - (8UL) /*!< SCU_GENERAL ID: MOD_TYPE (Bit 8) */ -#define SCU_GENERAL_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< SCU_GENERAL ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define SCU_GENERAL_ID_MOD_NUMBER_Pos \ - (16UL) /*!< SCU_GENERAL ID: MOD_NUMBER (Bit 16) */ -#define SCU_GENERAL_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< SCU_GENERAL ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- SCU_GENERAL_IDCHIP ----------------------------- */ -#define SCU_GENERAL_IDCHIP_IDCHIP_Pos \ - (0UL) /*!< SCU_GENERAL IDCHIP: IDCHIP (Bit 0) */ -#define SCU_GENERAL_IDCHIP_IDCHIP_Msk \ - (0xffffffffUL) /*!< SCU_GENERAL IDCHIP: IDCHIP (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- SCU_GENERAL_IDMANUF ---------------------------- */ -#define SCU_GENERAL_IDMANUF_DEPT_Pos \ - (0UL) /*!< SCU_GENERAL IDMANUF: DEPT (Bit 0) */ -#define SCU_GENERAL_IDMANUF_DEPT_Msk \ - (0x1fUL) /*!< SCU_GENERAL IDMANUF: DEPT (Bitfield-Mask: 0x1f) */ -#define SCU_GENERAL_IDMANUF_MANUF_Pos \ - (5UL) /*!< SCU_GENERAL IDMANUF: MANUF (Bit 5) */ -#define SCU_GENERAL_IDMANUF_MANUF_Msk \ - (0xffe0UL) /*!< SCU_GENERAL IDMANUF: MANUF (Bitfield-Mask: 0x7ff) */ - -/* ------------------------------ SCU_GENERAL_STCON ----------------------------- */ -#define SCU_GENERAL_STCON_HWCON_Pos \ - (0UL) /*!< SCU_GENERAL STCON: HWCON (Bit 0) */ -#define SCU_GENERAL_STCON_HWCON_Msk \ - (0x3UL) /*!< SCU_GENERAL STCON: HWCON (Bitfield-Mask: 0x03) */ -#define SCU_GENERAL_STCON_SWCON_Pos \ - (8UL) /*!< SCU_GENERAL STCON: SWCON (Bit 8) */ -#define SCU_GENERAL_STCON_SWCON_Msk \ - (0xf00UL) /*!< SCU_GENERAL STCON: SWCON (Bitfield-Mask: 0x0f) */ - -/* ------------------------------- SCU_GENERAL_GPR ------------------------------ */ -#define SCU_GENERAL_GPR_DAT_Pos \ - (0UL) /*!< SCU_GENERAL GPR: DAT (Bit 0) */ -#define SCU_GENERAL_GPR_DAT_Msk \ - (0xffffffffUL) /*!< SCU_GENERAL GPR: DAT (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- SCU_GENERAL_CCUCON ----------------------------- */ -#define SCU_GENERAL_CCUCON_GSC40_Pos \ - (0UL) /*!< SCU_GENERAL CCUCON: GSC40 (Bit 0) */ -#define SCU_GENERAL_CCUCON_GSC40_Msk \ - (0x1UL) /*!< SCU_GENERAL CCUCON: GSC40 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSC41_Pos \ - (1UL) /*!< SCU_GENERAL CCUCON: GSC41 (Bit 1) */ -#define SCU_GENERAL_CCUCON_GSC41_Msk \ - (0x2UL) /*!< SCU_GENERAL CCUCON: GSC41 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSC42_Pos \ - (2UL) /*!< SCU_GENERAL CCUCON: GSC42 (Bit 2) */ -#define SCU_GENERAL_CCUCON_GSC42_Msk \ - (0x4UL) /*!< SCU_GENERAL CCUCON: GSC42 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSC43_Pos \ - (3UL) /*!< SCU_GENERAL CCUCON: GSC43 (Bit 3) */ -#define SCU_GENERAL_CCUCON_GSC43_Msk \ - (0x8UL) /*!< SCU_GENERAL CCUCON: GSC43 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSC80_Pos \ - (8UL) /*!< SCU_GENERAL CCUCON: GSC80 (Bit 8) */ -#define SCU_GENERAL_CCUCON_GSC80_Msk \ - (0x100UL) /*!< SCU_GENERAL CCUCON: GSC80 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSC81_Pos \ - (9UL) /*!< SCU_GENERAL CCUCON: GSC81 (Bit 9) */ -#define SCU_GENERAL_CCUCON_GSC81_Msk \ - (0x200UL) /*!< SCU_GENERAL CCUCON: GSC81 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_CCUCON_GSHR0_Pos \ - (24UL) /*!< SCU_GENERAL CCUCON: GSHR0 (Bit 24) */ -#define SCU_GENERAL_CCUCON_GSHR0_Msk \ - (0x1000000UL) /*!< SCU_GENERAL CCUCON: GSHR0 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_GENERAL_DTSCON ----------------------------- */ -#define SCU_GENERAL_DTSCON_PWD_Pos \ - (0UL) /*!< SCU_GENERAL DTSCON: PWD (Bit 0) */ -#define SCU_GENERAL_DTSCON_PWD_Msk \ - (0x1UL) /*!< SCU_GENERAL DTSCON: PWD (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_DTSCON_START_Pos \ - (1UL) /*!< SCU_GENERAL DTSCON: START (Bit 1) */ -#define SCU_GENERAL_DTSCON_START_Msk \ - (0x2UL) /*!< SCU_GENERAL DTSCON: START (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_DTSCON_OFFSET_Pos \ - (4UL) /*!< SCU_GENERAL DTSCON: OFFSET (Bit 4) */ -#define SCU_GENERAL_DTSCON_OFFSET_Msk \ - (0x7f0UL) /*!< SCU_GENERAL DTSCON: OFFSET (Bitfield-Mask: 0x7f) */ -#define SCU_GENERAL_DTSCON_GAIN_Pos \ - (11UL) /*!< SCU_GENERAL DTSCON: GAIN (Bit 11) */ -#define SCU_GENERAL_DTSCON_GAIN_Msk \ - (0x1f800UL) /*!< SCU_GENERAL DTSCON: GAIN (Bitfield-Mask: 0x3f) */ -#define SCU_GENERAL_DTSCON_REFTRIM_Pos \ - (17UL) /*!< SCU_GENERAL DTSCON: REFTRIM (Bit 17) */ -#define SCU_GENERAL_DTSCON_REFTRIM_Msk \ - (0xe0000UL) /*!< SCU_GENERAL DTSCON: REFTRIM (Bitfield-Mask: 0x07) */ -#define SCU_GENERAL_DTSCON_BGTRIM_Pos \ - (20UL) /*!< SCU_GENERAL DTSCON: BGTRIM (Bit 20) */ -#define SCU_GENERAL_DTSCON_BGTRIM_Msk \ - (0xf00000UL) /*!< SCU_GENERAL DTSCON: BGTRIM (Bitfield-Mask: 0x0f) */ - -/* ----------------------------- SCU_GENERAL_DTSSTAT ---------------------------- */ -#define SCU_GENERAL_DTSSTAT_RESULT_Pos \ - (0UL) /*!< SCU_GENERAL DTSSTAT: RESULT (Bit 0) */ -#define SCU_GENERAL_DTSSTAT_RESULT_Msk \ - (0x3ffUL) /*!< SCU_GENERAL DTSSTAT: RESULT (Bitfield-Mask: 0x3ff) */ -#define SCU_GENERAL_DTSSTAT_RDY_Pos \ - (14UL) /*!< SCU_GENERAL DTSSTAT: RDY (Bit 14) */ -#define SCU_GENERAL_DTSSTAT_RDY_Msk \ - (0x4000UL) /*!< SCU_GENERAL DTSSTAT: RDY (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_DTSSTAT_BUSY_Pos \ - (15UL) /*!< SCU_GENERAL DTSSTAT: BUSY (Bit 15) */ -#define SCU_GENERAL_DTSSTAT_BUSY_Msk \ - (0x8000UL) /*!< SCU_GENERAL DTSSTAT: BUSY (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_GENERAL_GORCEN ----------------------------- */ -#define SCU_GENERAL_GORCEN_ENORC6_Pos \ - (6UL) /*!< SCU_GENERAL GORCEN: ENORC6 (Bit 6) */ -#define SCU_GENERAL_GORCEN_ENORC6_Msk \ - (0x40UL) /*!< SCU_GENERAL GORCEN: ENORC6 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_GORCEN_ENORC7_Pos \ - (7UL) /*!< SCU_GENERAL GORCEN: ENORC7 (Bit 7) */ -#define SCU_GENERAL_GORCEN_ENORC7_Msk \ - (0x80UL) /*!< SCU_GENERAL GORCEN: ENORC7 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_GENERAL_DTEMPLIM ---------------------------- */ -#define SCU_GENERAL_DTEMPLIM_LOWER_Pos \ - (0UL) /*!< SCU_GENERAL DTEMPLIM: LOWER (Bit 0) */ -#define SCU_GENERAL_DTEMPLIM_LOWER_Msk \ - (0x3ffUL) /*!< SCU_GENERAL DTEMPLIM: LOWER (Bitfield-Mask: 0x3ff) */ -#define SCU_GENERAL_DTEMPLIM_UPPER_Pos \ - (16UL) /*!< SCU_GENERAL DTEMPLIM: UPPER (Bit 16) */ -#define SCU_GENERAL_DTEMPLIM_UPPER_Msk \ - (0x3ff0000UL) /*!< SCU_GENERAL DTEMPLIM: UPPER (Bitfield-Mask: 0x3ff) */ - -/* --------------------------- SCU_GENERAL_DTEMPALARM --------------------------- */ -#define SCU_GENERAL_DTEMPALARM_UNDERFL_Pos \ - (0UL) /*!< SCU_GENERAL DTEMPALARM: UNDERFL (Bit 0) */ -#define SCU_GENERAL_DTEMPALARM_UNDERFL_Msk \ - (0x1UL) /*!< SCU_GENERAL DTEMPALARM: UNDERFL (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_DTEMPALARM_OVERFL_Pos \ - (16UL) /*!< SCU_GENERAL DTEMPALARM: OVERFL (Bit 16) */ -#define SCU_GENERAL_DTEMPALARM_OVERFL_Msk \ - (0x10000UL) /*!< SCU_GENERAL DTEMPALARM: OVERFL (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_GENERAL_MIRRSTS ---------------------------- */ -#define SCU_GENERAL_MIRRSTS_HDCLR_Pos \ - (1UL) /*!< SCU_GENERAL MIRRSTS: HDCLR (Bit 1) */ -#define SCU_GENERAL_MIRRSTS_HDCLR_Msk \ - (0x2UL) /*!< SCU_GENERAL MIRRSTS: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_HDSET_Pos \ - (2UL) /*!< SCU_GENERAL MIRRSTS: HDSET (Bit 2) */ -#define SCU_GENERAL_MIRRSTS_HDSET_Msk \ - (0x4UL) /*!< SCU_GENERAL MIRRSTS: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_HDCR_Pos \ - (3UL) /*!< SCU_GENERAL MIRRSTS: HDCR (Bit 3) */ -#define SCU_GENERAL_MIRRSTS_HDCR_Msk \ - (0x8UL) /*!< SCU_GENERAL MIRRSTS: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_OSCSICTRL_Pos \ - (5UL) /*!< SCU_GENERAL MIRRSTS: OSCSICTRL (Bit 5) */ -#define SCU_GENERAL_MIRRSTS_OSCSICTRL_Msk \ - (0x20UL) /*!< SCU_GENERAL MIRRSTS: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_OSCULCTRL_Pos \ - (7UL) /*!< SCU_GENERAL MIRRSTS: OSCULCTRL (Bit 7) */ -#define SCU_GENERAL_MIRRSTS_OSCULCTRL_Msk \ - (0x80UL) /*!< SCU_GENERAL MIRRSTS: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_CTR_Pos \ - (8UL) /*!< SCU_GENERAL MIRRSTS: RTC_CTR (Bit 8) */ -#define SCU_GENERAL_MIRRSTS_RTC_CTR_Msk \ - (0x100UL) /*!< SCU_GENERAL MIRRSTS: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_ATIM0_Pos \ - (9UL) /*!< SCU_GENERAL MIRRSTS: RTC_ATIM0 (Bit 9) */ -#define SCU_GENERAL_MIRRSTS_RTC_ATIM0_Msk \ - (0x200UL) /*!< SCU_GENERAL MIRRSTS: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_ATIM1_Pos \ - (10UL) /*!< SCU_GENERAL MIRRSTS: RTC_ATIM1 (Bit 10) */ -#define SCU_GENERAL_MIRRSTS_RTC_ATIM1_Msk \ - (0x400UL) /*!< SCU_GENERAL MIRRSTS: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_TIM0_Pos \ - (11UL) /*!< SCU_GENERAL MIRRSTS: RTC_TIM0 (Bit 11) */ -#define SCU_GENERAL_MIRRSTS_RTC_TIM0_Msk \ - (0x800UL) /*!< SCU_GENERAL MIRRSTS: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_TIM1_Pos \ - (12UL) /*!< SCU_GENERAL MIRRSTS: RTC_TIM1 (Bit 12) */ -#define SCU_GENERAL_MIRRSTS_RTC_TIM1_Msk \ - (0x1000UL) /*!< SCU_GENERAL MIRRSTS: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RMX_Pos \ - (13UL) /*!< SCU_GENERAL MIRRSTS: RMX (Bit 13) */ -#define SCU_GENERAL_MIRRSTS_RMX_Msk \ - (0x2000UL) /*!< SCU_GENERAL MIRRSTS: RMX (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_MSKSR_Pos \ - (14UL) /*!< SCU_GENERAL MIRRSTS: RTC_MSKSR (Bit 14) */ -#define SCU_GENERAL_MIRRSTS_RTC_MSKSR_Msk \ - (0x4000UL) /*!< SCU_GENERAL MIRRSTS: RTC_MSKSR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_RTC_CLRSR_Pos \ - (15UL) /*!< SCU_GENERAL MIRRSTS: RTC_CLRSR (Bit 15) */ -#define SCU_GENERAL_MIRRSTS_RTC_CLRSR_Msk \ - (0x8000UL) /*!< SCU_GENERAL MIRRSTS: RTC_CLRSR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACCONF_Pos \ - (16UL) /*!< SCU_GENERAL MIRRSTS: LPACCONF (Bit 16) */ -#define SCU_GENERAL_MIRRSTS_LPACCONF_Msk \ - (0x10000UL) /*!< SCU_GENERAL MIRRSTS: LPACCONF (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACTH0_Pos \ - (17UL) /*!< SCU_GENERAL MIRRSTS: LPACTH0 (Bit 17) */ -#define SCU_GENERAL_MIRRSTS_LPACTH0_Msk \ - (0x20000UL) /*!< SCU_GENERAL MIRRSTS: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACTH1_Pos \ - (18UL) /*!< SCU_GENERAL MIRRSTS: LPACTH1 (Bit 18) */ -#define SCU_GENERAL_MIRRSTS_LPACTH1_Msk \ - (0x40000UL) /*!< SCU_GENERAL MIRRSTS: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACCLR_Pos \ - (20UL) /*!< SCU_GENERAL MIRRSTS: LPACCLR (Bit 20) */ -#define SCU_GENERAL_MIRRSTS_LPACCLR_Msk \ - (0x100000UL) /*!< SCU_GENERAL MIRRSTS: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_LPACSET_Pos \ - (21UL) /*!< SCU_GENERAL MIRRSTS: LPACSET (Bit 21) */ -#define SCU_GENERAL_MIRRSTS_LPACSET_Msk \ - (0x200000UL) /*!< SCU_GENERAL MIRRSTS: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_HINTCLR_Pos \ - (23UL) /*!< SCU_GENERAL MIRRSTS: HINTCLR (Bit 23) */ -#define SCU_GENERAL_MIRRSTS_HINTCLR_Msk \ - (0x800000UL) /*!< SCU_GENERAL MIRRSTS: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_MIRRSTS_HINTSET_Pos \ - (24UL) /*!< SCU_GENERAL MIRRSTS: HINTSET (Bit 24) */ -#define SCU_GENERAL_MIRRSTS_HINTSET_Msk \ - (0x1000000UL) /*!< SCU_GENERAL MIRRSTS: HINTSET (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_GENERAL_RMACR ----------------------------- */ -#define SCU_GENERAL_RMACR_RDWR_Pos \ - (0UL) /*!< SCU_GENERAL RMACR: RDWR (Bit 0) */ -#define SCU_GENERAL_RMACR_RDWR_Msk \ - (0x1UL) /*!< SCU_GENERAL RMACR: RDWR (Bitfield-Mask: 0x01) */ -#define SCU_GENERAL_RMACR_ADDR_Pos \ - (16UL) /*!< SCU_GENERAL RMACR: ADDR (Bit 16) */ -#define SCU_GENERAL_RMACR_ADDR_Msk \ - (0xf0000UL) /*!< SCU_GENERAL RMACR: ADDR (Bitfield-Mask: 0x0f) */ - -/* ----------------------------- SCU_GENERAL_RMDATA ----------------------------- */ -#define SCU_GENERAL_RMDATA_DATA_Pos \ - (0UL) /*!< SCU_GENERAL RMDATA: DATA (Bit 0) */ -#define SCU_GENERAL_RMDATA_DATA_Msk \ - (0xffffffffUL) /*!< SCU_GENERAL RMDATA: DATA (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- SCU_GENERAL_MIRRALLSTAT -------------------------- */ -#define SCU_GENERAL_MIRRALLSTAT_BUSY_Pos \ - (0UL) /*!< SCU_GENERAL MIRRALLSTAT: BUSY (Bit 0) */ -#define SCU_GENERAL_MIRRALLSTAT_BUSY_Msk \ - (0x1UL) /*!< SCU_GENERAL MIRRALLSTAT: BUSY (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_GENERAL_MIRRALLREQ --------------------------- */ -#define SCU_GENERAL_MIRRALLREQ_REQ_Pos \ - (0UL) /*!< SCU_GENERAL MIRRALLREQ: REQ (Bit 0) */ -#define SCU_GENERAL_MIRRALLREQ_REQ_Msk \ - (0x1UL) /*!< SCU_GENERAL MIRRALLREQ: REQ (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_INTERRUPT' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------- SCU_INTERRUPT_SRSTAT ---------------------------- */ -#define SCU_INTERRUPT_SRSTAT_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRSTAT: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRSTAT_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRSTAT: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRSTAT: PI (Bit 1) */ -#define SCU_INTERRUPT_SRSTAT_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRSTAT: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRSTAT: AI (Bit 2) */ -#define SCU_INTERRUPT_SRSTAT_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRSTAT: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRSTAT: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRSTAT_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRSTAT: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRSTAT: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRSTAT_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRSTAT: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRSTAT: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRSTAT_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRSTAT: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRSTAT: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRSTAT_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRSTAT: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRSTAT: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRSTAT_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRSTAT: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRSTAT: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRSTAT_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRSTAT: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRSTAT: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRSTAT_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRSTAT: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRSTAT: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRSTAT_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRSTAT: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRSTAT: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRSTAT_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRSTAT: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRSTAT: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRSTAT_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRSTAT: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HDCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRSTAT: HDCLR (Bit 17) */ -#define SCU_INTERRUPT_SRSTAT_HDCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRSTAT: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HDSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRSTAT: HDSET (Bit 18) */ -#define SCU_INTERRUPT_SRSTAT_HDSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRSTAT: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRSTAT: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRSTAT_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRSTAT: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRSTAT: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRSTAT_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRSTAT: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRSTAT: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRSTAT_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRSTAT: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRSTAT: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRSTAT_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRSTAT: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRSTAT_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRSTAT: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRSTAT_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRSTAT: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRSTAT_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRSTAT: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRSTAT_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRSTAT: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSTAT_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRSTAT: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRSTAT_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRSTAT: RMX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_INTERRUPT_SRRAW ---------------------------- */ -#define SCU_INTERRUPT_SRRAW_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRRAW: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRRAW_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRRAW: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRRAW: PI (Bit 1) */ -#define SCU_INTERRUPT_SRRAW_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRRAW: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRRAW: AI (Bit 2) */ -#define SCU_INTERRUPT_SRRAW_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRRAW: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRRAW: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRRAW_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRRAW: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRRAW: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRRAW_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRRAW: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRRAW: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRRAW_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRRAW: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRRAW: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRRAW_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRRAW: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRRAW: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRRAW_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRRAW: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRRAW: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRRAW_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRRAW: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRRAW: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRRAW_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRRAW: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRRAW: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRRAW_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRRAW: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRRAW: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRRAW_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRRAW: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRRAW: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRRAW_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRRAW: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HDCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRRAW: HDCLR (Bit 17) */ -#define SCU_INTERRUPT_SRRAW_HDCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRRAW: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HDSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRRAW: HDSET (Bit 18) */ -#define SCU_INTERRUPT_SRRAW_HDSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRRAW: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRRAW: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRRAW_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRRAW: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRRAW: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRRAW_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRRAW: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRRAW: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRRAW_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRRAW: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRRAW: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRRAW_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRRAW: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRRAW_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRRAW: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRRAW_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRRAW: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRRAW_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRRAW: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRRAW_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRRAW: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRRAW_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRRAW: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRRAW_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRRAW: RMX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_INTERRUPT_SRMSK ---------------------------- */ -#define SCU_INTERRUPT_SRMSK_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRMSK: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRMSK_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRMSK: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRMSK: PI (Bit 1) */ -#define SCU_INTERRUPT_SRMSK_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRMSK: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRMSK: AI (Bit 2) */ -#define SCU_INTERRUPT_SRMSK_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRMSK: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRMSK: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRMSK_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRMSK: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRMSK: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRMSK_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRMSK: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRMSK: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRMSK_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRMSK: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRMSK: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRMSK_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRMSK: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRMSK: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRMSK_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRMSK: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRMSK: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRMSK_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRMSK: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRMSK: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRMSK_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRMSK: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRMSK: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRMSK_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRMSK: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRMSK: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRMSK_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRMSK: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRMSK: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRMSK_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRMSK: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HDCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRMSK: HDCLR (Bit 17) */ -#define SCU_INTERRUPT_SRMSK_HDCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRMSK: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HDSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRMSK: HDSET (Bit 18) */ -#define SCU_INTERRUPT_SRMSK_HDSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRMSK: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRMSK: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRMSK_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRMSK: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRMSK: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRMSK_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRMSK: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRMSK: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRMSK_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRMSK: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRMSK: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRMSK_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRMSK: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRMSK_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRMSK: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRMSK_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRMSK: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRMSK_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRMSK: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRMSK_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRMSK: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRMSK_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRMSK: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRMSK_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRMSK: RMX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_INTERRUPT_SRCLR ---------------------------- */ -#define SCU_INTERRUPT_SRCLR_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRCLR: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRCLR_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRCLR: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRCLR: PI (Bit 1) */ -#define SCU_INTERRUPT_SRCLR_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRCLR: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRCLR: AI (Bit 2) */ -#define SCU_INTERRUPT_SRCLR_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRCLR: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRCLR: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRCLR_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRCLR: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRCLR: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRCLR_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRCLR: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRCLR: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRCLR_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRCLR: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRCLR: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRCLR_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRCLR: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRCLR: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRCLR_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRCLR: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRCLR: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRCLR_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRCLR: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRCLR: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRCLR_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRCLR: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRCLR: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRCLR_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRCLR: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRCLR: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRCLR_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRCLR: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRCLR: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRCLR_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRCLR: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HDCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRCLR: HDCLR (Bit 17) */ -#define SCU_INTERRUPT_SRCLR_HDCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRCLR: HDCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HDSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRCLR: HDSET (Bit 18) */ -#define SCU_INTERRUPT_SRCLR_HDSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRCLR: HDSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRCLR: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRCLR_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRCLR: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRCLR: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRCLR_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRCLR: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRCLR: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRCLR_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRCLR: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRCLR: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRCLR_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRCLR: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRCLR_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRCLR: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRCLR_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRCLR: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRCLR_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRCLR: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRCLR_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRCLR: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRCLR_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRCLR: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRCLR_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRCLR: RMX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_INTERRUPT_SRSET ---------------------------- */ -#define SCU_INTERRUPT_SRSET_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT SRSET: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_SRSET_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT SRSET: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT SRSET: PI (Bit 1) */ -#define SCU_INTERRUPT_SRSET_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT SRSET: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT SRSET: AI (Bit 2) */ -#define SCU_INTERRUPT_SRSET_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT SRSET: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_DLROVR_Pos \ - (3UL) /*!< SCU_INTERRUPT SRSET: DLROVR (Bit 3) */ -#define SCU_INTERRUPT_SRSET_DLROVR_Msk \ - (0x8UL) /*!< SCU_INTERRUPT SRSET: DLROVR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACCR_Pos \ - (6UL) /*!< SCU_INTERRUPT SRSET: LPACCR (Bit 6) */ -#define SCU_INTERRUPT_SRSET_LPACCR_Msk \ - (0x40UL) /*!< SCU_INTERRUPT SRSET: LPACCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACTH0_Pos \ - (7UL) /*!< SCU_INTERRUPT SRSET: LPACTH0 (Bit 7) */ -#define SCU_INTERRUPT_SRSET_LPACTH0_Msk \ - (0x80UL) /*!< SCU_INTERRUPT SRSET: LPACTH0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACTH1_Pos \ - (8UL) /*!< SCU_INTERRUPT SRSET: LPACTH1 (Bit 8) */ -#define SCU_INTERRUPT_SRSET_LPACTH1_Msk \ - (0x100UL) /*!< SCU_INTERRUPT SRSET: LPACTH1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACST_Pos \ - (9UL) /*!< SCU_INTERRUPT SRSET: LPACST (Bit 9) */ -#define SCU_INTERRUPT_SRSET_LPACST_Msk \ - (0x200UL) /*!< SCU_INTERRUPT SRSET: LPACST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACCLR_Pos \ - (10UL) /*!< SCU_INTERRUPT SRSET: LPACCLR (Bit 10) */ -#define SCU_INTERRUPT_SRSET_LPACCLR_Msk \ - (0x400UL) /*!< SCU_INTERRUPT SRSET: LPACCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_LPACSET_Pos \ - (11UL) /*!< SCU_INTERRUPT SRSET: LPACSET (Bit 11) */ -#define SCU_INTERRUPT_SRSET_LPACSET_Msk \ - (0x800UL) /*!< SCU_INTERRUPT SRSET: LPACSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HINTST_Pos \ - (12UL) /*!< SCU_INTERRUPT SRSET: HINTST (Bit 12) */ -#define SCU_INTERRUPT_SRSET_HINTST_Msk \ - (0x1000UL) /*!< SCU_INTERRUPT SRSET: HINTST (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HINTCLR_Pos \ - (13UL) /*!< SCU_INTERRUPT SRSET: HINTCLR (Bit 13) */ -#define SCU_INTERRUPT_SRSET_HINTCLR_Msk \ - (0x2000UL) /*!< SCU_INTERRUPT SRSET: HINTCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HINTSET_Pos \ - (14UL) /*!< SCU_INTERRUPT SRSET: HINTSET (Bit 14) */ -#define SCU_INTERRUPT_SRSET_HINTSET_Msk \ - (0x4000UL) /*!< SCU_INTERRUPT SRSET: HINTSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HDCRCLR_Pos \ - (17UL) /*!< SCU_INTERRUPT SRSET: HDCRCLR (Bit 17) */ -#define SCU_INTERRUPT_SRSET_HDCRCLR_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT SRSET: HDCRCLR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HDCRSET_Pos \ - (18UL) /*!< SCU_INTERRUPT SRSET: HDCRSET (Bit 18) */ -#define SCU_INTERRUPT_SRSET_HDCRSET_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT SRSET: HDCRSET (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_HDCR_Pos \ - (19UL) /*!< SCU_INTERRUPT SRSET: HDCR (Bit 19) */ -#define SCU_INTERRUPT_SRSET_HDCR_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT SRSET: HDCR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_OSCSICTRL_Pos \ - (21UL) /*!< SCU_INTERRUPT SRSET: OSCSICTRL (Bit 21) */ -#define SCU_INTERRUPT_SRSET_OSCSICTRL_Msk \ - (0x200000UL) /*!< SCU_INTERRUPT SRSET: OSCSICTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_OSCULCTRL_Pos \ - (23UL) /*!< SCU_INTERRUPT SRSET: OSCULCTRL (Bit 23) */ -#define SCU_INTERRUPT_SRSET_OSCULCTRL_Msk \ - (0x800000UL) /*!< SCU_INTERRUPT SRSET: OSCULCTRL (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_CTR_Pos \ - (24UL) /*!< SCU_INTERRUPT SRSET: RTC_CTR (Bit 24) */ -#define SCU_INTERRUPT_SRSET_RTC_CTR_Msk \ - (0x1000000UL) /*!< SCU_INTERRUPT SRSET: RTC_CTR (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_ATIM0_Pos \ - (25UL) /*!< SCU_INTERRUPT SRSET: RTC_ATIM0 (Bit 25) */ -#define SCU_INTERRUPT_SRSET_RTC_ATIM0_Msk \ - (0x2000000UL) /*!< SCU_INTERRUPT SRSET: RTC_ATIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_ATIM1_Pos \ - (26UL) /*!< SCU_INTERRUPT SRSET: RTC_ATIM1 (Bit 26) */ -#define SCU_INTERRUPT_SRSET_RTC_ATIM1_Msk \ - (0x4000000UL) /*!< SCU_INTERRUPT SRSET: RTC_ATIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_TIM0_Pos \ - (27UL) /*!< SCU_INTERRUPT SRSET: RTC_TIM0 (Bit 27) */ -#define SCU_INTERRUPT_SRSET_RTC_TIM0_Msk \ - (0x8000000UL) /*!< SCU_INTERRUPT SRSET: RTC_TIM0 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RTC_TIM1_Pos \ - (28UL) /*!< SCU_INTERRUPT SRSET: RTC_TIM1 (Bit 28) */ -#define SCU_INTERRUPT_SRSET_RTC_TIM1_Msk \ - (0x10000000UL) /*!< SCU_INTERRUPT SRSET: RTC_TIM1 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_SRSET_RMX_Pos \ - (29UL) /*!< SCU_INTERRUPT SRSET: RMX (Bit 29) */ -#define SCU_INTERRUPT_SRSET_RMX_Msk \ - (0x20000000UL) /*!< SCU_INTERRUPT SRSET: RMX (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_INTERRUPT_NMIREQEN --------------------------- */ -#define SCU_INTERRUPT_NMIREQEN_PRWARN_Pos \ - (0UL) /*!< SCU_INTERRUPT NMIREQEN: PRWARN (Bit 0) */ -#define SCU_INTERRUPT_NMIREQEN_PRWARN_Msk \ - (0x1UL) /*!< SCU_INTERRUPT NMIREQEN: PRWARN (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_PI_Pos \ - (1UL) /*!< SCU_INTERRUPT NMIREQEN: PI (Bit 1) */ -#define SCU_INTERRUPT_NMIREQEN_PI_Msk \ - (0x2UL) /*!< SCU_INTERRUPT NMIREQEN: PI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_AI_Pos \ - (2UL) /*!< SCU_INTERRUPT NMIREQEN: AI (Bit 2) */ -#define SCU_INTERRUPT_NMIREQEN_AI_Msk \ - (0x4UL) /*!< SCU_INTERRUPT NMIREQEN: AI (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_ERU00_Pos \ - (16UL) /*!< SCU_INTERRUPT NMIREQEN: ERU00 (Bit 16) */ -#define SCU_INTERRUPT_NMIREQEN_ERU00_Msk \ - (0x10000UL) /*!< SCU_INTERRUPT NMIREQEN: ERU00 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_ERU01_Pos \ - (17UL) /*!< SCU_INTERRUPT NMIREQEN: ERU01 (Bit 17) */ -#define SCU_INTERRUPT_NMIREQEN_ERU01_Msk \ - (0x20000UL) /*!< SCU_INTERRUPT NMIREQEN: ERU01 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_ERU02_Pos \ - (18UL) /*!< SCU_INTERRUPT NMIREQEN: ERU02 (Bit 18) */ -#define SCU_INTERRUPT_NMIREQEN_ERU02_Msk \ - (0x40000UL) /*!< SCU_INTERRUPT NMIREQEN: ERU02 (Bitfield-Mask: 0x01) */ -#define SCU_INTERRUPT_NMIREQEN_ERU03_Pos \ - (19UL) /*!< SCU_INTERRUPT NMIREQEN: ERU03 (Bit 19) */ -#define SCU_INTERRUPT_NMIREQEN_ERU03_Msk \ - (0x80000UL) /*!< SCU_INTERRUPT NMIREQEN: ERU03 (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_PARITY' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- SCU_PARITY_PEEN ------------------------------ */ -#define SCU_PARITY_PEEN_PEENPS_Pos \ - (0UL) /*!< SCU_PARITY PEEN: PEENPS (Bit 0) */ -#define SCU_PARITY_PEEN_PEENPS_Msk \ - (0x1UL) /*!< SCU_PARITY PEEN: PEENPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENDS1_Pos \ - (1UL) /*!< SCU_PARITY PEEN: PEENDS1 (Bit 1) */ -#define SCU_PARITY_PEEN_PEENDS1_Msk \ - (0x2UL) /*!< SCU_PARITY PEEN: PEENDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENDS2_Pos \ - (2UL) /*!< SCU_PARITY PEEN: PEENDS2 (Bit 2) */ -#define SCU_PARITY_PEEN_PEENDS2_Msk \ - (0x4UL) /*!< SCU_PARITY PEEN: PEENDS2 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENU0_Pos \ - (8UL) /*!< SCU_PARITY PEEN: PEENU0 (Bit 8) */ -#define SCU_PARITY_PEEN_PEENU0_Msk \ - (0x100UL) /*!< SCU_PARITY PEEN: PEENU0 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENU1_Pos \ - (9UL) /*!< SCU_PARITY PEEN: PEENU1 (Bit 9) */ -#define SCU_PARITY_PEEN_PEENU1_Msk \ - (0x200UL) /*!< SCU_PARITY PEEN: PEENU1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENMC_Pos \ - (12UL) /*!< SCU_PARITY PEEN: PEENMC (Bit 12) */ -#define SCU_PARITY_PEEN_PEENMC_Msk \ - (0x1000UL) /*!< SCU_PARITY PEEN: PEENMC (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENPPRF_Pos \ - (13UL) /*!< SCU_PARITY PEEN: PEENPPRF (Bit 13) */ -#define SCU_PARITY_PEEN_PEENPPRF_Msk \ - (0x2000UL) /*!< SCU_PARITY PEEN: PEENPPRF (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENUSB_Pos \ - (16UL) /*!< SCU_PARITY PEEN: PEENUSB (Bit 16) */ -#define SCU_PARITY_PEEN_PEENUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY PEEN: PEENUSB (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENETH0TX_Pos \ - (17UL) /*!< SCU_PARITY PEEN: PEENETH0TX (Bit 17) */ -#define SCU_PARITY_PEEN_PEENETH0TX_Msk \ - (0x20000UL) /*!< SCU_PARITY PEEN: PEENETH0TX (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEEN_PEENETH0RX_Pos \ - (18UL) /*!< SCU_PARITY PEEN: PEENETH0RX (Bit 18) */ -#define SCU_PARITY_PEEN_PEENETH0RX_Msk \ - (0x40000UL) /*!< SCU_PARITY PEEN: PEENETH0RX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_PARITY_MCHKCON ----------------------------- */ -#define SCU_PARITY_MCHKCON_SELPS_Pos \ - (0UL) /*!< SCU_PARITY MCHKCON: SELPS (Bit 0) */ -#define SCU_PARITY_MCHKCON_SELPS_Msk \ - (0x1UL) /*!< SCU_PARITY MCHKCON: SELPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_SELDS1_Pos \ - (1UL) /*!< SCU_PARITY MCHKCON: SELDS1 (Bit 1) */ -#define SCU_PARITY_MCHKCON_SELDS1_Msk \ - (0x2UL) /*!< SCU_PARITY MCHKCON: SELDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_SELDS2_Pos \ - (2UL) /*!< SCU_PARITY MCHKCON: SELDS2 (Bit 2) */ -#define SCU_PARITY_MCHKCON_SELDS2_Msk \ - (0x4UL) /*!< SCU_PARITY MCHKCON: SELDS2 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_USIC0DRA_Pos \ - (8UL) /*!< SCU_PARITY MCHKCON: USIC0DRA (Bit 8) */ -#define SCU_PARITY_MCHKCON_USIC0DRA_Msk \ - (0x100UL) /*!< SCU_PARITY MCHKCON: USIC0DRA (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_USIC1DRA_Pos \ - (9UL) /*!< SCU_PARITY MCHKCON: USIC1DRA (Bit 9) */ -#define SCU_PARITY_MCHKCON_USIC1DRA_Msk \ - (0x200UL) /*!< SCU_PARITY MCHKCON: USIC1DRA (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_MCANDRA_Pos \ - (12UL) /*!< SCU_PARITY MCHKCON: MCANDRA (Bit 12) */ -#define SCU_PARITY_MCHKCON_MCANDRA_Msk \ - (0x1000UL) /*!< SCU_PARITY MCHKCON: MCANDRA (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_PPRFDRA_Pos \ - (13UL) /*!< SCU_PARITY MCHKCON: PPRFDRA (Bit 13) */ -#define SCU_PARITY_MCHKCON_PPRFDRA_Msk \ - (0x2000UL) /*!< SCU_PARITY MCHKCON: PPRFDRA (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_SELUSB_Pos \ - (16UL) /*!< SCU_PARITY MCHKCON: SELUSB (Bit 16) */ -#define SCU_PARITY_MCHKCON_SELUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY MCHKCON: SELUSB (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_SELETH0TX_Pos \ - (17UL) /*!< SCU_PARITY MCHKCON: SELETH0TX (Bit 17) */ -#define SCU_PARITY_MCHKCON_SELETH0TX_Msk \ - (0x20000UL) /*!< SCU_PARITY MCHKCON: SELETH0TX (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_MCHKCON_SELETH0RX_Pos \ - (18UL) /*!< SCU_PARITY MCHKCON: SELETH0RX (Bit 18) */ -#define SCU_PARITY_MCHKCON_SELETH0RX_Msk \ - (0x40000UL) /*!< SCU_PARITY MCHKCON: SELETH0RX (Bitfield-Mask: 0x01) */ - -/* ------------------------------- SCU_PARITY_PETE ------------------------------ */ -#define SCU_PARITY_PETE_PETEPS_Pos \ - (0UL) /*!< SCU_PARITY PETE: PETEPS (Bit 0) */ -#define SCU_PARITY_PETE_PETEPS_Msk \ - (0x1UL) /*!< SCU_PARITY PETE: PETEPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEDS1_Pos \ - (1UL) /*!< SCU_PARITY PETE: PETEDS1 (Bit 1) */ -#define SCU_PARITY_PETE_PETEDS1_Msk \ - (0x2UL) /*!< SCU_PARITY PETE: PETEDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEDS2_Pos \ - (2UL) /*!< SCU_PARITY PETE: PETEDS2 (Bit 2) */ -#define SCU_PARITY_PETE_PETEDS2_Msk \ - (0x4UL) /*!< SCU_PARITY PETE: PETEDS2 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEU0_Pos \ - (8UL) /*!< SCU_PARITY PETE: PETEU0 (Bit 8) */ -#define SCU_PARITY_PETE_PETEU0_Msk \ - (0x100UL) /*!< SCU_PARITY PETE: PETEU0 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEU1_Pos \ - (9UL) /*!< SCU_PARITY PETE: PETEU1 (Bit 9) */ -#define SCU_PARITY_PETE_PETEU1_Msk \ - (0x200UL) /*!< SCU_PARITY PETE: PETEU1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEMC_Pos \ - (12UL) /*!< SCU_PARITY PETE: PETEMC (Bit 12) */ -#define SCU_PARITY_PETE_PETEMC_Msk \ - (0x1000UL) /*!< SCU_PARITY PETE: PETEMC (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEPPRF_Pos \ - (13UL) /*!< SCU_PARITY PETE: PETEPPRF (Bit 13) */ -#define SCU_PARITY_PETE_PETEPPRF_Msk \ - (0x2000UL) /*!< SCU_PARITY PETE: PETEPPRF (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEUSB_Pos \ - (16UL) /*!< SCU_PARITY PETE: PETEUSB (Bit 16) */ -#define SCU_PARITY_PETE_PETEUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY PETE: PETEUSB (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEETH0TX_Pos \ - (17UL) /*!< SCU_PARITY PETE: PETEETH0TX (Bit 17) */ -#define SCU_PARITY_PETE_PETEETH0TX_Msk \ - (0x20000UL) /*!< SCU_PARITY PETE: PETEETH0TX (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PETE_PETEETH0RX_Pos \ - (18UL) /*!< SCU_PARITY PETE: PETEETH0RX (Bit 18) */ -#define SCU_PARITY_PETE_PETEETH0RX_Msk \ - (0x40000UL) /*!< SCU_PARITY PETE: PETEETH0RX (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_PARITY_PERSTEN ----------------------------- */ -#define SCU_PARITY_PERSTEN_RSEN_Pos \ - (0UL) /*!< SCU_PARITY PERSTEN: RSEN (Bit 0) */ -#define SCU_PARITY_PERSTEN_RSEN_Msk \ - (0x1UL) /*!< SCU_PARITY PERSTEN: RSEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_PARITY_PEFLAG ----------------------------- */ -#define SCU_PARITY_PEFLAG_PEFPS_Pos \ - (0UL) /*!< SCU_PARITY PEFLAG: PEFPS (Bit 0) */ -#define SCU_PARITY_PEFLAG_PEFPS_Msk \ - (0x1UL) /*!< SCU_PARITY PEFLAG: PEFPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFDS1_Pos \ - (1UL) /*!< SCU_PARITY PEFLAG: PEFDS1 (Bit 1) */ -#define SCU_PARITY_PEFLAG_PEFDS1_Msk \ - (0x2UL) /*!< SCU_PARITY PEFLAG: PEFDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFDS2_Pos \ - (2UL) /*!< SCU_PARITY PEFLAG: PEFDS2 (Bit 2) */ -#define SCU_PARITY_PEFLAG_PEFDS2_Msk \ - (0x4UL) /*!< SCU_PARITY PEFLAG: PEFDS2 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFU0_Pos \ - (8UL) /*!< SCU_PARITY PEFLAG: PEFU0 (Bit 8) */ -#define SCU_PARITY_PEFLAG_PEFU0_Msk \ - (0x100UL) /*!< SCU_PARITY PEFLAG: PEFU0 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFU1_Pos \ - (9UL) /*!< SCU_PARITY PEFLAG: PEFU1 (Bit 9) */ -#define SCU_PARITY_PEFLAG_PEFU1_Msk \ - (0x200UL) /*!< SCU_PARITY PEFLAG: PEFU1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFMC_Pos \ - (12UL) /*!< SCU_PARITY PEFLAG: PEFMC (Bit 12) */ -#define SCU_PARITY_PEFLAG_PEFMC_Msk \ - (0x1000UL) /*!< SCU_PARITY PEFLAG: PEFMC (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEFPPRF_Pos \ - (13UL) /*!< SCU_PARITY PEFLAG: PEFPPRF (Bit 13) */ -#define SCU_PARITY_PEFLAG_PEFPPRF_Msk \ - (0x2000UL) /*!< SCU_PARITY PEFLAG: PEFPPRF (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEUSB_Pos \ - (16UL) /*!< SCU_PARITY PEFLAG: PEUSB (Bit 16) */ -#define SCU_PARITY_PEFLAG_PEUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY PEFLAG: PEUSB (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEETH0TX_Pos \ - (17UL) /*!< SCU_PARITY PEFLAG: PEETH0TX (Bit 17) */ -#define SCU_PARITY_PEFLAG_PEETH0TX_Msk \ - (0x20000UL) /*!< SCU_PARITY PEFLAG: PEETH0TX (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PEFLAG_PEETH0RX_Pos \ - (18UL) /*!< SCU_PARITY PEFLAG: PEETH0RX (Bit 18) */ -#define SCU_PARITY_PEFLAG_PEETH0RX_Msk \ - (0x40000UL) /*!< SCU_PARITY PEFLAG: PEETH0RX (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_PARITY_PMTPR ------------------------------ */ -#define SCU_PARITY_PMTPR_PWR_Pos \ - (0UL) /*!< SCU_PARITY PMTPR: PWR (Bit 0) */ -#define SCU_PARITY_PMTPR_PWR_Msk \ - (0xffUL) /*!< SCU_PARITY PMTPR: PWR (Bitfield-Mask: 0xff) */ -#define SCU_PARITY_PMTPR_PRD_Pos \ - (8UL) /*!< SCU_PARITY PMTPR: PRD (Bit 8) */ -#define SCU_PARITY_PMTPR_PRD_Msk \ - (0xff00UL) /*!< SCU_PARITY PMTPR: PRD (Bitfield-Mask: 0xff) */ - -/* ------------------------------ SCU_PARITY_PMTSR ------------------------------ */ -#define SCU_PARITY_PMTSR_MTENPS_Pos \ - (0UL) /*!< SCU_PARITY PMTSR: MTENPS (Bit 0) */ -#define SCU_PARITY_PMTSR_MTENPS_Msk \ - (0x1UL) /*!< SCU_PARITY PMTSR: MTENPS (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTENDS1_Pos \ - (1UL) /*!< SCU_PARITY PMTSR: MTENDS1 (Bit 1) */ -#define SCU_PARITY_PMTSR_MTENDS1_Msk \ - (0x2UL) /*!< SCU_PARITY PMTSR: MTENDS1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTENDS2_Pos \ - (2UL) /*!< SCU_PARITY PMTSR: MTENDS2 (Bit 2) */ -#define SCU_PARITY_PMTSR_MTENDS2_Msk \ - (0x4UL) /*!< SCU_PARITY PMTSR: MTENDS2 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTEU0_Pos \ - (8UL) /*!< SCU_PARITY PMTSR: MTEU0 (Bit 8) */ -#define SCU_PARITY_PMTSR_MTEU0_Msk \ - (0x100UL) /*!< SCU_PARITY PMTSR: MTEU0 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTEU1_Pos \ - (9UL) /*!< SCU_PARITY PMTSR: MTEU1 (Bit 9) */ -#define SCU_PARITY_PMTSR_MTEU1_Msk \ - (0x200UL) /*!< SCU_PARITY PMTSR: MTEU1 (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTEMC_Pos \ - (12UL) /*!< SCU_PARITY PMTSR: MTEMC (Bit 12) */ -#define SCU_PARITY_PMTSR_MTEMC_Msk \ - (0x1000UL) /*!< SCU_PARITY PMTSR: MTEMC (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTEPPRF_Pos \ - (13UL) /*!< SCU_PARITY PMTSR: MTEPPRF (Bit 13) */ -#define SCU_PARITY_PMTSR_MTEPPRF_Msk \ - (0x2000UL) /*!< SCU_PARITY PMTSR: MTEPPRF (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTUSB_Pos \ - (16UL) /*!< SCU_PARITY PMTSR: MTUSB (Bit 16) */ -#define SCU_PARITY_PMTSR_MTUSB_Msk \ - (0x10000UL) /*!< SCU_PARITY PMTSR: MTUSB (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTETH0TX_Pos \ - (17UL) /*!< SCU_PARITY PMTSR: MTETH0TX (Bit 17) */ -#define SCU_PARITY_PMTSR_MTETH0TX_Msk \ - (0x20000UL) /*!< SCU_PARITY PMTSR: MTETH0TX (Bitfield-Mask: 0x01) */ -#define SCU_PARITY_PMTSR_MTETH0RX_Pos \ - (18UL) /*!< SCU_PARITY PMTSR: MTETH0RX (Bit 18) */ -#define SCU_PARITY_PMTSR_MTETH0RX_Msk \ - (0x40000UL) /*!< SCU_PARITY PMTSR: MTETH0RX (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_TRAP' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ SCU_TRAP_TRAPSTAT ----------------------------- */ -#define SCU_TRAP_TRAPSTAT_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPSTAT: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPSTAT_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPSTAT: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPSTAT: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPSTAT_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPSTAT: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPSTAT: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPSTAT_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPSTAT: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPSTAT: PET (Bit 4) */ -#define SCU_TRAP_TRAPSTAT_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPSTAT: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPSTAT: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPSTAT_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPSTAT: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_ULPWDGT_Pos \ - (6UL) /*!< SCU_TRAP TRAPSTAT: ULPWDGT (Bit 6) */ -#define SCU_TRAP_TRAPSTAT_ULPWDGT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPSTAT: ULPWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPSTAT: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPSTAT_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPSTAT: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPSTAT: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPSTAT_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPSTAT: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPSTAT: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPSTAT_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPSTAT: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSTAT_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPSTAT: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPSTAT_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPSTAT: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_TRAP_TRAPRAW ------------------------------ */ -#define SCU_TRAP_TRAPRAW_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPRAW: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPRAW_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPRAW: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPRAW: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPRAW_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPRAW: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPRAW: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPRAW_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPRAW: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPRAW: PET (Bit 4) */ -#define SCU_TRAP_TRAPRAW_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPRAW: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPRAW: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPRAW_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPRAW: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_ULPWDGT_Pos \ - (6UL) /*!< SCU_TRAP TRAPRAW: ULPWDGT (Bit 6) */ -#define SCU_TRAP_TRAPRAW_ULPWDGT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPRAW: ULPWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPRAW: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPRAW_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPRAW: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPRAW: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPRAW_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPRAW: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPRAW: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPRAW_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPRAW: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPRAW_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPRAW: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPRAW_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPRAW: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_TRAP_TRAPDIS ------------------------------ */ -#define SCU_TRAP_TRAPDIS_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPDIS: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPDIS_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPDIS: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPDIS: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPDIS_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPDIS: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPDIS: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPDIS_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPDIS: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPDIS: PET (Bit 4) */ -#define SCU_TRAP_TRAPDIS_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPDIS: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPDIS: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPDIS_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPDIS: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_ULPWDGT_Pos \ - (6UL) /*!< SCU_TRAP TRAPDIS: ULPWDGT (Bit 6) */ -#define SCU_TRAP_TRAPDIS_ULPWDGT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPDIS: ULPWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPDIS: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPDIS_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPDIS: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPDIS: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPDIS_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPDIS: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPDIS: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPDIS_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPDIS: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPDIS_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPDIS: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPDIS_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPDIS: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_TRAP_TRAPCLR ------------------------------ */ -#define SCU_TRAP_TRAPCLR_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPCLR: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPCLR_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPCLR: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPCLR: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPCLR_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPCLR: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPCLR: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPCLR_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPCLR: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPCLR: PET (Bit 4) */ -#define SCU_TRAP_TRAPCLR_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPCLR: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPCLR: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPCLR_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPCLR: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_ULPWDGT_Pos \ - (6UL) /*!< SCU_TRAP TRAPCLR: ULPWDGT (Bit 6) */ -#define SCU_TRAP_TRAPCLR_ULPWDGT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPCLR: ULPWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPCLR: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPCLR_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPCLR: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPCLR: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPCLR_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPCLR: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPCLR: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPCLR_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPCLR: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPCLR_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPCLR: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPCLR_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPCLR: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_TRAP_TRAPSET ------------------------------ */ -#define SCU_TRAP_TRAPSET_SOSCWDGT_Pos \ - (0UL) /*!< SCU_TRAP TRAPSET: SOSCWDGT (Bit 0) */ -#define SCU_TRAP_TRAPSET_SOSCWDGT_Msk \ - (0x1UL) /*!< SCU_TRAP TRAPSET: SOSCWDGT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_SVCOLCKT_Pos \ - (2UL) /*!< SCU_TRAP TRAPSET: SVCOLCKT (Bit 2) */ -#define SCU_TRAP_TRAPSET_SVCOLCKT_Msk \ - (0x4UL) /*!< SCU_TRAP TRAPSET: SVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_UVCOLCKT_Pos \ - (3UL) /*!< SCU_TRAP TRAPSET: UVCOLCKT (Bit 3) */ -#define SCU_TRAP_TRAPSET_UVCOLCKT_Msk \ - (0x8UL) /*!< SCU_TRAP TRAPSET: UVCOLCKT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_PET_Pos \ - (4UL) /*!< SCU_TRAP TRAPSET: PET (Bit 4) */ -#define SCU_TRAP_TRAPSET_PET_Msk \ - (0x10UL) /*!< SCU_TRAP TRAPSET: PET (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_BRWNT_Pos \ - (5UL) /*!< SCU_TRAP TRAPSET: BRWNT (Bit 5) */ -#define SCU_TRAP_TRAPSET_BRWNT_Msk \ - (0x20UL) /*!< SCU_TRAP TRAPSET: BRWNT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_ULPWDT_Pos \ - (6UL) /*!< SCU_TRAP TRAPSET: ULPWDT (Bit 6) */ -#define SCU_TRAP_TRAPSET_ULPWDT_Msk \ - (0x40UL) /*!< SCU_TRAP TRAPSET: ULPWDT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_BWERR0T_Pos \ - (7UL) /*!< SCU_TRAP TRAPSET: BWERR0T (Bit 7) */ -#define SCU_TRAP_TRAPSET_BWERR0T_Msk \ - (0x80UL) /*!< SCU_TRAP TRAPSET: BWERR0T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_BWERR1T_Pos \ - (8UL) /*!< SCU_TRAP TRAPSET: BWERR1T (Bit 8) */ -#define SCU_TRAP_TRAPSET_BWERR1T_Msk \ - (0x100UL) /*!< SCU_TRAP TRAPSET: BWERR1T (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_TEMPHIT_Pos \ - (12UL) /*!< SCU_TRAP TRAPSET: TEMPHIT (Bit 12) */ -#define SCU_TRAP_TRAPSET_TEMPHIT_Msk \ - (0x1000UL) /*!< SCU_TRAP TRAPSET: TEMPHIT (Bitfield-Mask: 0x01) */ -#define SCU_TRAP_TRAPSET_TEMPLOT_Pos \ - (13UL) /*!< SCU_TRAP TRAPSET: TEMPLOT (Bit 13) */ -#define SCU_TRAP_TRAPSET_TEMPLOT_Msk \ - (0x2000UL) /*!< SCU_TRAP TRAPSET: TEMPLOT (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_HIBERNATE' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------- SCU_HIBERNATE_HDSTAT ---------------------------- */ -#define SCU_HIBERNATE_HDSTAT_EPEV_Pos \ - (0UL) /*!< SCU_HIBERNATE HDSTAT: EPEV (Bit 0) */ -#define SCU_HIBERNATE_HDSTAT_EPEV_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HDSTAT: EPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_ENEV_Pos \ - (1UL) /*!< SCU_HIBERNATE HDSTAT: ENEV (Bit 1) */ -#define SCU_HIBERNATE_HDSTAT_ENEV_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HDSTAT: ENEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_RTCEV_Pos \ - (2UL) /*!< SCU_HIBERNATE HDSTAT: RTCEV (Bit 2) */ -#define SCU_HIBERNATE_HDSTAT_RTCEV_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HDSTAT: RTCEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_ULPWDG_Pos \ - (3UL) /*!< SCU_HIBERNATE HDSTAT: ULPWDG (Bit 3) */ -#define SCU_HIBERNATE_HDSTAT_ULPWDG_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HDSTAT: ULPWDG (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_HIBNOUT_Pos \ - (4UL) /*!< SCU_HIBERNATE HDSTAT: HIBNOUT (Bit 4) */ -#define SCU_HIBERNATE_HDSTAT_HIBNOUT_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HDSTAT: HIBNOUT (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_VBATPEV_Pos \ - (8UL) /*!< SCU_HIBERNATE HDSTAT: VBATPEV (Bit 8) */ -#define SCU_HIBERNATE_HDSTAT_VBATPEV_Msk \ - (0x100UL) /*!< SCU_HIBERNATE HDSTAT: VBATPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_VBATNEV_Pos \ - (9UL) /*!< SCU_HIBERNATE HDSTAT: VBATNEV (Bit 9) */ -#define SCU_HIBERNATE_HDSTAT_VBATNEV_Msk \ - (0x200UL) /*!< SCU_HIBERNATE HDSTAT: VBATNEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO0PEV_Pos \ - (10UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO0PEV (Bit 10) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO0PEV_Msk \ - (0x400UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO0PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO0NEV_Pos \ - (11UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO0NEV (Bit 11) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO0NEV_Msk \ - (0x800UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO0NEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO1PEV_Pos \ - (12UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO1PEV (Bit 12) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO1PEV_Msk \ - (0x1000UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO1PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO1NEV_Pos \ - (13UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO1NEV (Bit 13) */ -#define SCU_HIBERNATE_HDSTAT_AHIBIO1NEV_Msk \ - (0x2000UL) /*!< SCU_HIBERNATE HDSTAT: AHIBIO1NEV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_HIBERNATE_HDCLR ---------------------------- */ -#define SCU_HIBERNATE_HDCLR_EPEV_Pos \ - (0UL) /*!< SCU_HIBERNATE HDCLR: EPEV (Bit 0) */ -#define SCU_HIBERNATE_HDCLR_EPEV_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HDCLR: EPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_ENEV_Pos \ - (1UL) /*!< SCU_HIBERNATE HDCLR: ENEV (Bit 1) */ -#define SCU_HIBERNATE_HDCLR_ENEV_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HDCLR: ENEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_RTCEV_Pos \ - (2UL) /*!< SCU_HIBERNATE HDCLR: RTCEV (Bit 2) */ -#define SCU_HIBERNATE_HDCLR_RTCEV_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HDCLR: RTCEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_ULPWDG_Pos \ - (3UL) /*!< SCU_HIBERNATE HDCLR: ULPWDG (Bit 3) */ -#define SCU_HIBERNATE_HDCLR_ULPWDG_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HDCLR: ULPWDG (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_VBATPEV_Pos \ - (8UL) /*!< SCU_HIBERNATE HDCLR: VBATPEV (Bit 8) */ -#define SCU_HIBERNATE_HDCLR_VBATPEV_Msk \ - (0x100UL) /*!< SCU_HIBERNATE HDCLR: VBATPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_VBATNEV_Pos \ - (9UL) /*!< SCU_HIBERNATE HDCLR: VBATNEV (Bit 9) */ -#define SCU_HIBERNATE_HDCLR_VBATNEV_Msk \ - (0x200UL) /*!< SCU_HIBERNATE HDCLR: VBATNEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO0PEV_Pos \ - (10UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO0PEV (Bit 10) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO0PEV_Msk \ - (0x400UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO0PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO0NEV_Pos \ - (11UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO0NEV (Bit 11) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO0NEV_Msk \ - (0x800UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO0NEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO1PEV_Pos \ - (12UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO1PEV (Bit 12) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO1PEV_Msk \ - (0x1000UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO1PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO1NEV_Pos \ - (13UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO1NEV (Bit 13) */ -#define SCU_HIBERNATE_HDCLR_AHIBIO1NEV_Msk \ - (0x2000UL) /*!< SCU_HIBERNATE HDCLR: AHIBIO1NEV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_HIBERNATE_HDSET ---------------------------- */ -#define SCU_HIBERNATE_HDSET_EPEV_Pos \ - (0UL) /*!< SCU_HIBERNATE HDSET: EPEV (Bit 0) */ -#define SCU_HIBERNATE_HDSET_EPEV_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HDSET: EPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_ENEV_Pos \ - (1UL) /*!< SCU_HIBERNATE HDSET: ENEV (Bit 1) */ -#define SCU_HIBERNATE_HDSET_ENEV_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HDSET: ENEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_RTCEV_Pos \ - (2UL) /*!< SCU_HIBERNATE HDSET: RTCEV (Bit 2) */ -#define SCU_HIBERNATE_HDSET_RTCEV_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HDSET: RTCEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_ULPWDG_Pos \ - (3UL) /*!< SCU_HIBERNATE HDSET: ULPWDG (Bit 3) */ -#define SCU_HIBERNATE_HDSET_ULPWDG_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HDSET: ULPWDG (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_VBATPEV_Pos \ - (8UL) /*!< SCU_HIBERNATE HDSET: VBATPEV (Bit 8) */ -#define SCU_HIBERNATE_HDSET_VBATPEV_Msk \ - (0x100UL) /*!< SCU_HIBERNATE HDSET: VBATPEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_VBATNEV_Pos \ - (9UL) /*!< SCU_HIBERNATE HDSET: VBATNEV (Bit 9) */ -#define SCU_HIBERNATE_HDSET_VBATNEV_Msk \ - (0x200UL) /*!< SCU_HIBERNATE HDSET: VBATNEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_AHIBIO0PEV_Pos \ - (10UL) /*!< SCU_HIBERNATE HDSET: AHIBIO0PEV (Bit 10) */ -#define SCU_HIBERNATE_HDSET_AHIBIO0PEV_Msk \ - (0x400UL) /*!< SCU_HIBERNATE HDSET: AHIBIO0PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_AHIBIO0NEV_Pos \ - (11UL) /*!< SCU_HIBERNATE HDSET: AHIBIO0NEV (Bit 11) */ -#define SCU_HIBERNATE_HDSET_AHIBIO0NEV_Msk \ - (0x800UL) /*!< SCU_HIBERNATE HDSET: AHIBIO0NEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_AHIBIO1PEV_Pos \ - (12UL) /*!< SCU_HIBERNATE HDSET: AHIBIO1PEV (Bit 12) */ -#define SCU_HIBERNATE_HDSET_AHIBIO1PEV_Msk \ - (0x1000UL) /*!< SCU_HIBERNATE HDSET: AHIBIO1PEV (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDSET_AHIBIO1NEV_Pos \ - (13UL) /*!< SCU_HIBERNATE HDSET: AHIBIO1NEV (Bit 13) */ -#define SCU_HIBERNATE_HDSET_AHIBIO1NEV_Msk \ - (0x2000UL) /*!< SCU_HIBERNATE HDSET: AHIBIO1NEV (Bitfield-Mask: 0x01) */ - -/* ----------------------------- SCU_HIBERNATE_HDCR ----------------------------- */ -#define SCU_HIBERNATE_HDCR_WKPEP_Pos \ - (0UL) /*!< SCU_HIBERNATE HDCR: WKPEP (Bit 0) */ -#define SCU_HIBERNATE_HDCR_WKPEP_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HDCR: WKPEP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_WKPEN_Pos \ - (1UL) /*!< SCU_HIBERNATE HDCR: WKPEN (Bit 1) */ -#define SCU_HIBERNATE_HDCR_WKPEN_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HDCR: WKPEN (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_RTCE_Pos \ - (2UL) /*!< SCU_HIBERNATE HDCR: RTCE (Bit 2) */ -#define SCU_HIBERNATE_HDCR_RTCE_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HDCR: RTCE (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_ULPWDGEN_Pos \ - (3UL) /*!< SCU_HIBERNATE HDCR: ULPWDGEN (Bit 3) */ -#define SCU_HIBERNATE_HDCR_ULPWDGEN_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HDCR: ULPWDGEN (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_HIB_Pos \ - (4UL) /*!< SCU_HIBERNATE HDCR: HIB (Bit 4) */ -#define SCU_HIBERNATE_HDCR_HIB_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HDCR: HIB (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_XTALGPI1SEL_Pos \ - (5UL) /*!< SCU_HIBERNATE HDCR: XTALGPI1SEL (Bit 5) */ -#define SCU_HIBERNATE_HDCR_XTALGPI1SEL_Msk \ - (0x20UL) /*!< SCU_HIBERNATE HDCR: XTALGPI1SEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_RCS_Pos \ - (6UL) /*!< SCU_HIBERNATE HDCR: RCS (Bit 6) */ -#define SCU_HIBERNATE_HDCR_RCS_Msk \ - (0x40UL) /*!< SCU_HIBERNATE HDCR: RCS (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_STDBYSEL_Pos \ - (7UL) /*!< SCU_HIBERNATE HDCR: STDBYSEL (Bit 7) */ -#define SCU_HIBERNATE_HDCR_STDBYSEL_Msk \ - (0x80UL) /*!< SCU_HIBERNATE HDCR: STDBYSEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_WKUPSEL_Pos \ - (8UL) /*!< SCU_HIBERNATE HDCR: WKUPSEL (Bit 8) */ -#define SCU_HIBERNATE_HDCR_WKUPSEL_Msk \ - (0x100UL) /*!< SCU_HIBERNATE HDCR: WKUPSEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_GPI0SEL_Pos \ - (10UL) /*!< SCU_HIBERNATE HDCR: GPI0SEL (Bit 10) */ -#define SCU_HIBERNATE_HDCR_GPI0SEL_Msk \ - (0x400UL) /*!< SCU_HIBERNATE HDCR: GPI0SEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_GPI1SEL_Pos \ - (11UL) /*!< SCU_HIBERNATE HDCR: GPI1SEL (Bit 11) */ -#define SCU_HIBERNATE_HDCR_GPI1SEL_Msk \ - (0x800UL) /*!< SCU_HIBERNATE HDCR: GPI1SEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_HIBIO0POL_Pos \ - (12UL) /*!< SCU_HIBERNATE HDCR: HIBIO0POL (Bit 12) */ -#define SCU_HIBERNATE_HDCR_HIBIO0POL_Msk \ - (0x1000UL) /*!< SCU_HIBERNATE HDCR: HIBIO0POL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_HIBIO1POL_Pos \ - (13UL) /*!< SCU_HIBERNATE HDCR: HIBIO1POL (Bit 13) */ -#define SCU_HIBERNATE_HDCR_HIBIO1POL_Msk \ - (0x2000UL) /*!< SCU_HIBERNATE HDCR: HIBIO1POL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_ADIG0SEL_Pos \ - (14UL) /*!< SCU_HIBERNATE HDCR: ADIG0SEL (Bit 14) */ -#define SCU_HIBERNATE_HDCR_ADIG0SEL_Msk \ - (0x4000UL) /*!< SCU_HIBERNATE HDCR: ADIG0SEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_ADIG1SEL_Pos \ - (15UL) /*!< SCU_HIBERNATE HDCR: ADIG1SEL (Bit 15) */ -#define SCU_HIBERNATE_HDCR_ADIG1SEL_Msk \ - (0x8000UL) /*!< SCU_HIBERNATE HDCR: ADIG1SEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_HIBIO0SEL_Pos \ - (16UL) /*!< SCU_HIBERNATE HDCR: HIBIO0SEL (Bit 16) */ -#define SCU_HIBERNATE_HDCR_HIBIO0SEL_Msk \ - (0xf0000UL) /*!< SCU_HIBERNATE HDCR: HIBIO0SEL (Bitfield-Mask: 0x0f) */ -#define SCU_HIBERNATE_HDCR_HIBIO1SEL_Pos \ - (20UL) /*!< SCU_HIBERNATE HDCR: HIBIO1SEL (Bit 20) */ -#define SCU_HIBERNATE_HDCR_HIBIO1SEL_Msk \ - (0xf00000UL) /*!< SCU_HIBERNATE HDCR: HIBIO1SEL (Bitfield-Mask: 0x0f) */ -#define SCU_HIBERNATE_HDCR_VBATLO_Pos \ - (24UL) /*!< SCU_HIBERNATE HDCR: VBATLO (Bit 24) */ -#define SCU_HIBERNATE_HDCR_VBATLO_Msk \ - (0x1000000UL) /*!< SCU_HIBERNATE HDCR: VBATLO (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_VBATHI_Pos \ - (25UL) /*!< SCU_HIBERNATE HDCR: VBATHI (Bit 25) */ -#define SCU_HIBERNATE_HDCR_VBATHI_Msk \ - (0x2000000UL) /*!< SCU_HIBERNATE HDCR: VBATHI (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_AHIBIO0LO_Pos \ - (26UL) /*!< SCU_HIBERNATE HDCR: AHIBIO0LO (Bit 26) */ -#define SCU_HIBERNATE_HDCR_AHIBIO0LO_Msk \ - (0x4000000UL) /*!< SCU_HIBERNATE HDCR: AHIBIO0LO (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_AHIBIO0HI_Pos \ - (27UL) /*!< SCU_HIBERNATE HDCR: AHIBIO0HI (Bit 27) */ -#define SCU_HIBERNATE_HDCR_AHIBIO0HI_Msk \ - (0x8000000UL) /*!< SCU_HIBERNATE HDCR: AHIBIO0HI (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_AHIBIO1LO_Pos \ - (28UL) /*!< SCU_HIBERNATE HDCR: AHIBIO1LO (Bit 28) */ -#define SCU_HIBERNATE_HDCR_AHIBIO1LO_Msk \ - (0x10000000UL) /*!< SCU_HIBERNATE HDCR: AHIBIO1LO (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HDCR_AHIBIO1HI_Pos \ - (29UL) /*!< SCU_HIBERNATE HDCR: AHIBIO1HI (Bit 29) */ -#define SCU_HIBERNATE_HDCR_AHIBIO1HI_Msk \ - (0x20000000UL) /*!< SCU_HIBERNATE HDCR: AHIBIO1HI (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_HIBERNATE_OSCSICTRL -------------------------- */ -#define SCU_HIBERNATE_OSCSICTRL_PWD_Pos \ - (0UL) /*!< SCU_HIBERNATE OSCSICTRL: PWD (Bit 0) */ -#define SCU_HIBERNATE_OSCSICTRL_PWD_Msk \ - (0x1UL) /*!< SCU_HIBERNATE OSCSICTRL: PWD (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_HIBERNATE_OSCULSTAT -------------------------- */ -#define SCU_HIBERNATE_OSCULSTAT_X1D_Pos \ - (0UL) /*!< SCU_HIBERNATE OSCULSTAT: X1D (Bit 0) */ -#define SCU_HIBERNATE_OSCULSTAT_X1D_Msk \ - (0x1UL) /*!< SCU_HIBERNATE OSCULSTAT: X1D (Bitfield-Mask: 0x01) */ - -/* --------------------------- SCU_HIBERNATE_OSCULCTRL -------------------------- */ -#define SCU_HIBERNATE_OSCULCTRL_X1DEN_Pos \ - (0UL) /*!< SCU_HIBERNATE OSCULCTRL: X1DEN (Bit 0) */ -#define SCU_HIBERNATE_OSCULCTRL_X1DEN_Msk \ - (0x1UL) /*!< SCU_HIBERNATE OSCULCTRL: X1DEN (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_OSCULCTRL_MODE_Pos \ - (4UL) /*!< SCU_HIBERNATE OSCULCTRL: MODE (Bit 4) */ -#define SCU_HIBERNATE_OSCULCTRL_MODE_Msk \ - (0x30UL) /*!< SCU_HIBERNATE OSCULCTRL: MODE (Bitfield-Mask: 0x03) */ - -/* --------------------------- SCU_HIBERNATE_LPACCONF --------------------------- */ -#define SCU_HIBERNATE_LPACCONF_CMPEN_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACCONF: CMPEN (Bit 0) */ -#define SCU_HIBERNATE_LPACCONF_CMPEN_Msk \ - (0x7UL) /*!< SCU_HIBERNATE LPACCONF: CMPEN (Bitfield-Mask: 0x07) */ -#define SCU_HIBERNATE_LPACCONF_TRIGSEL_Pos \ - (4UL) /*!< SCU_HIBERNATE LPACCONF: TRIGSEL (Bit 4) */ -#define SCU_HIBERNATE_LPACCONF_TRIGSEL_Msk \ - (0x70UL) /*!< SCU_HIBERNATE LPACCONF: TRIGSEL (Bitfield-Mask: 0x07) */ -#define SCU_HIBERNATE_LPACCONF_CONVDEL_Pos \ - (12UL) /*!< SCU_HIBERNATE LPACCONF: CONVDEL (Bit 12) */ -#define SCU_HIBERNATE_LPACCONF_CONVDEL_Msk \ - (0x1000UL) /*!< SCU_HIBERNATE LPACCONF: CONVDEL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCONF_INTERVCNT_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACCONF: INTERVCNT (Bit 16) */ -#define SCU_HIBERNATE_LPACCONF_INTERVCNT_Msk \ - (0xfff0000UL) /*!< SCU_HIBERNATE LPACCONF: INTERVCNT (Bitfield-Mask: 0xfff) */ -#define SCU_HIBERNATE_LPACCONF_SETTLECNT_Pos \ - (28UL) /*!< SCU_HIBERNATE LPACCONF: SETTLECNT (Bit 28) */ -#define SCU_HIBERNATE_LPACCONF_SETTLECNT_Msk \ - (0xf0000000UL) /*!< SCU_HIBERNATE LPACCONF: SETTLECNT (Bitfield-Mask: 0x0f) */ - -/* ---------------------------- SCU_HIBERNATE_LPACTH0 --------------------------- */ -#define SCU_HIBERNATE_LPACTH0_VBATLO_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACTH0: VBATLO (Bit 0) */ -#define SCU_HIBERNATE_LPACTH0_VBATLO_Msk \ - (0x3fUL) /*!< SCU_HIBERNATE LPACTH0: VBATLO (Bitfield-Mask: 0x3f) */ -#define SCU_HIBERNATE_LPACTH0_VBATHI_Pos \ - (8UL) /*!< SCU_HIBERNATE LPACTH0: VBATHI (Bit 8) */ -#define SCU_HIBERNATE_LPACTH0_VBATHI_Msk \ - (0x3f00UL) /*!< SCU_HIBERNATE LPACTH0: VBATHI (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- SCU_HIBERNATE_LPACTH1 --------------------------- */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO0LO_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO0LO (Bit 0) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO0LO_Msk \ - (0x3fUL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO0LO (Bitfield-Mask: 0x3f) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO0HI_Pos \ - (8UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO0HI (Bit 8) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO0HI_Msk \ - (0x3f00UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO0HI (Bitfield-Mask: 0x3f) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO1LO_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO1LO (Bit 16) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO1LO_Msk \ - (0x3f0000UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO1LO (Bitfield-Mask: 0x3f) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO1HI_Pos \ - (24UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO1HI (Bit 24) */ -#define SCU_HIBERNATE_LPACTH1_AHIBIO1HI_Msk \ - (0x3f000000UL) /*!< SCU_HIBERNATE LPACTH1: AHIBIO1HI (Bitfield-Mask: 0x3f) */ - -/* ---------------------------- SCU_HIBERNATE_LPACST ---------------------------- */ -#define SCU_HIBERNATE_LPACST_VBATSCMP_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACST: VBATSCMP (Bit 0) */ -#define SCU_HIBERNATE_LPACST_VBATSCMP_Msk \ - (0x1UL) /*!< SCU_HIBERNATE LPACST: VBATSCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACST_AHIBIO0SCMP_Pos \ - (1UL) /*!< SCU_HIBERNATE LPACST: AHIBIO0SCMP (Bit 1) */ -#define SCU_HIBERNATE_LPACST_AHIBIO0SCMP_Msk \ - (0x2UL) /*!< SCU_HIBERNATE LPACST: AHIBIO0SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACST_AHIBIO1SCMP_Pos \ - (2UL) /*!< SCU_HIBERNATE LPACST: AHIBIO1SCMP (Bit 2) */ -#define SCU_HIBERNATE_LPACST_AHIBIO1SCMP_Msk \ - (0x4UL) /*!< SCU_HIBERNATE LPACST: AHIBIO1SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACST_VBATVAL_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACST: VBATVAL (Bit 16) */ -#define SCU_HIBERNATE_LPACST_VBATVAL_Msk \ - (0x10000UL) /*!< SCU_HIBERNATE LPACST: VBATVAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACST_AHIBIO0VAL_Pos \ - (17UL) /*!< SCU_HIBERNATE LPACST: AHIBIO0VAL (Bit 17) */ -#define SCU_HIBERNATE_LPACST_AHIBIO0VAL_Msk \ - (0x20000UL) /*!< SCU_HIBERNATE LPACST: AHIBIO0VAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACST_AHIBIO1VAL_Pos \ - (18UL) /*!< SCU_HIBERNATE LPACST: AHIBIO1VAL (Bit 18) */ -#define SCU_HIBERNATE_LPACST_AHIBIO1VAL_Msk \ - (0x40000UL) /*!< SCU_HIBERNATE LPACST: AHIBIO1VAL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_LPACCLR --------------------------- */ -#define SCU_HIBERNATE_LPACCLR_VBATSCMP_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACCLR: VBATSCMP (Bit 0) */ -#define SCU_HIBERNATE_LPACCLR_VBATSCMP_Msk \ - (0x1UL) /*!< SCU_HIBERNATE LPACCLR: VBATSCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO0SCMP_Pos \ - (1UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO0SCMP (Bit 1) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO0SCMP_Msk \ - (0x2UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO0SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO1SCMP_Pos \ - (2UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO1SCMP (Bit 2) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO1SCMP_Msk \ - (0x4UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO1SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCLR_VBATVAL_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACCLR: VBATVAL (Bit 16) */ -#define SCU_HIBERNATE_LPACCLR_VBATVAL_Msk \ - (0x10000UL) /*!< SCU_HIBERNATE LPACCLR: VBATVAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO0VAL_Pos \ - (17UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO0VAL (Bit 17) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO0VAL_Msk \ - (0x20000UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO0VAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO1VAL_Pos \ - (18UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO1VAL (Bit 18) */ -#define SCU_HIBERNATE_LPACCLR_AHIBIO1VAL_Msk \ - (0x40000UL) /*!< SCU_HIBERNATE LPACCLR: AHIBIO1VAL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_LPACSET --------------------------- */ -#define SCU_HIBERNATE_LPACSET_VBATSCMP_Pos \ - (0UL) /*!< SCU_HIBERNATE LPACSET: VBATSCMP (Bit 0) */ -#define SCU_HIBERNATE_LPACSET_VBATSCMP_Msk \ - (0x1UL) /*!< SCU_HIBERNATE LPACSET: VBATSCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO0SCMP_Pos \ - (1UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO0SCMP (Bit 1) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO0SCMP_Msk \ - (0x2UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO0SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO1SCMP_Pos \ - (2UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO1SCMP (Bit 2) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO1SCMP_Msk \ - (0x4UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO1SCMP (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACSET_VBATVAL_Pos \ - (16UL) /*!< SCU_HIBERNATE LPACSET: VBATVAL (Bit 16) */ -#define SCU_HIBERNATE_LPACSET_VBATVAL_Msk \ - (0x10000UL) /*!< SCU_HIBERNATE LPACSET: VBATVAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO0VAL_Pos \ - (17UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO0VAL (Bit 17) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO0VAL_Msk \ - (0x20000UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO0VAL (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO1VAL_Pos \ - (18UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO1VAL (Bit 18) */ -#define SCU_HIBERNATE_LPACSET_AHIBIO1VAL_Msk \ - (0x40000UL) /*!< SCU_HIBERNATE LPACSET: AHIBIO1VAL (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_HINTST ---------------------------- */ -#define SCU_HIBERNATE_HINTST_HIBNINT_Pos \ - (0UL) /*!< SCU_HIBERNATE HINTST: HIBNINT (Bit 0) */ -#define SCU_HIBERNATE_HINTST_HIBNINT_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HINTST: HIBNINT (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTST_FLASHOFF_Pos \ - (2UL) /*!< SCU_HIBERNATE HINTST: FLASHOFF (Bit 2) */ -#define SCU_HIBERNATE_HINTST_FLASHOFF_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HINTST: FLASHOFF (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTST_FLASHPD_Pos \ - (3UL) /*!< SCU_HIBERNATE HINTST: FLASHPD (Bit 3) */ -#define SCU_HIBERNATE_HINTST_FLASHPD_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HINTST: FLASHPD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTST_POFFD_Pos \ - (4UL) /*!< SCU_HIBERNATE HINTST: POFFD (Bit 4) */ -#define SCU_HIBERNATE_HINTST_POFFD_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HINTST: POFFD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTST_PPODEL_Pos \ - (16UL) /*!< SCU_HIBERNATE HINTST: PPODEL (Bit 16) */ -#define SCU_HIBERNATE_HINTST_PPODEL_Msk \ - (0x30000UL) /*!< SCU_HIBERNATE HINTST: PPODEL (Bitfield-Mask: 0x03) */ -#define SCU_HIBERNATE_HINTST_POFFH_Pos \ - (20UL) /*!< SCU_HIBERNATE HINTST: POFFH (Bit 20) */ -#define SCU_HIBERNATE_HINTST_POFFH_Msk \ - (0x100000UL) /*!< SCU_HIBERNATE HINTST: POFFH (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_HINTCLR --------------------------- */ -#define SCU_HIBERNATE_HINTCLR_HIBNINT_Pos \ - (0UL) /*!< SCU_HIBERNATE HINTCLR: HIBNINT (Bit 0) */ -#define SCU_HIBERNATE_HINTCLR_HIBNINT_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HINTCLR: HIBNINT (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTCLR_FLASHOFF_Pos \ - (2UL) /*!< SCU_HIBERNATE HINTCLR: FLASHOFF (Bit 2) */ -#define SCU_HIBERNATE_HINTCLR_FLASHOFF_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HINTCLR: FLASHOFF (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTCLR_FLASHPD_Pos \ - (3UL) /*!< SCU_HIBERNATE HINTCLR: FLASHPD (Bit 3) */ -#define SCU_HIBERNATE_HINTCLR_FLASHPD_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HINTCLR: FLASHPD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTCLR_POFFD_Pos \ - (4UL) /*!< SCU_HIBERNATE HINTCLR: POFFD (Bit 4) */ -#define SCU_HIBERNATE_HINTCLR_POFFD_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HINTCLR: POFFD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTCLR_PPODEL_Pos \ - (16UL) /*!< SCU_HIBERNATE HINTCLR: PPODEL (Bit 16) */ -#define SCU_HIBERNATE_HINTCLR_PPODEL_Msk \ - (0x30000UL) /*!< SCU_HIBERNATE HINTCLR: PPODEL (Bitfield-Mask: 0x03) */ -#define SCU_HIBERNATE_HINTCLR_POFFH_Pos \ - (20UL) /*!< SCU_HIBERNATE HINTCLR: POFFH (Bit 20) */ -#define SCU_HIBERNATE_HINTCLR_POFFH_Msk \ - (0x100000UL) /*!< SCU_HIBERNATE HINTCLR: POFFH (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_HIBERNATE_HINTSET --------------------------- */ -#define SCU_HIBERNATE_HINTSET_HIBNINT_Pos \ - (0UL) /*!< SCU_HIBERNATE HINTSET: HIBNINT (Bit 0) */ -#define SCU_HIBERNATE_HINTSET_HIBNINT_Msk \ - (0x1UL) /*!< SCU_HIBERNATE HINTSET: HIBNINT (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_VCOREOFF_Pos \ - (1UL) /*!< SCU_HIBERNATE HINTSET: VCOREOFF (Bit 1) */ -#define SCU_HIBERNATE_HINTSET_VCOREOFF_Msk \ - (0x2UL) /*!< SCU_HIBERNATE HINTSET: VCOREOFF (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_FLASHOFF_Pos \ - (2UL) /*!< SCU_HIBERNATE HINTSET: FLASHOFF (Bit 2) */ -#define SCU_HIBERNATE_HINTSET_FLASHOFF_Msk \ - (0x4UL) /*!< SCU_HIBERNATE HINTSET: FLASHOFF (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_FLASHPD_Pos \ - (3UL) /*!< SCU_HIBERNATE HINTSET: FLASHPD (Bit 3) */ -#define SCU_HIBERNATE_HINTSET_FLASHPD_Msk \ - (0x8UL) /*!< SCU_HIBERNATE HINTSET: FLASHPD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_POFFD_Pos \ - (4UL) /*!< SCU_HIBERNATE HINTSET: POFFD (Bit 4) */ -#define SCU_HIBERNATE_HINTSET_POFFD_Msk \ - (0x10UL) /*!< SCU_HIBERNATE HINTSET: POFFD (Bitfield-Mask: 0x01) */ -#define SCU_HIBERNATE_HINTSET_PPODEL_Pos \ - (16UL) /*!< SCU_HIBERNATE HINTSET: PPODEL (Bit 16) */ -#define SCU_HIBERNATE_HINTSET_PPODEL_Msk \ - (0x30000UL) /*!< SCU_HIBERNATE HINTSET: PPODEL (Bitfield-Mask: 0x03) */ -#define SCU_HIBERNATE_HINTSET_POFFH_Pos \ - (20UL) /*!< SCU_HIBERNATE HINTSET: POFFH (Bit 20) */ -#define SCU_HIBERNATE_HINTSET_POFFH_Msk \ - (0x100000UL) /*!< SCU_HIBERNATE HINTSET: POFFH (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_POWER' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ SCU_POWER_PWRSTAT ----------------------------- */ -#define SCU_POWER_PWRSTAT_HIBEN_Pos \ - (0UL) /*!< SCU_POWER PWRSTAT: HIBEN (Bit 0) */ -#define SCU_POWER_PWRSTAT_HIBEN_Msk \ - (0x1UL) /*!< SCU_POWER PWRSTAT: HIBEN (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSTAT_USBPHYPDQ_Pos \ - (16UL) /*!< SCU_POWER PWRSTAT: USBPHYPDQ (Bit 16) */ -#define SCU_POWER_PWRSTAT_USBPHYPDQ_Msk \ - (0x10000UL) /*!< SCU_POWER PWRSTAT: USBPHYPDQ (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSTAT_USBOTGEN_Pos \ - (17UL) /*!< SCU_POWER PWRSTAT: USBOTGEN (Bit 17) */ -#define SCU_POWER_PWRSTAT_USBOTGEN_Msk \ - (0x20000UL) /*!< SCU_POWER PWRSTAT: USBOTGEN (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSTAT_USBPUWQ_Pos \ - (18UL) /*!< SCU_POWER PWRSTAT: USBPUWQ (Bit 18) */ -#define SCU_POWER_PWRSTAT_USBPUWQ_Msk \ - (0x40000UL) /*!< SCU_POWER PWRSTAT: USBPUWQ (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_POWER_PWRSET ------------------------------ */ -#define SCU_POWER_PWRSET_HIB_Pos \ - (0UL) /*!< SCU_POWER PWRSET: HIB (Bit 0) */ -#define SCU_POWER_PWRSET_HIB_Msk \ - (0x1UL) /*!< SCU_POWER PWRSET: HIB (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSET_USBPHYPDQ_Pos \ - (16UL) /*!< SCU_POWER PWRSET: USBPHYPDQ (Bit 16) */ -#define SCU_POWER_PWRSET_USBPHYPDQ_Msk \ - (0x10000UL) /*!< SCU_POWER PWRSET: USBPHYPDQ (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSET_USBOTGEN_Pos \ - (17UL) /*!< SCU_POWER PWRSET: USBOTGEN (Bit 17) */ -#define SCU_POWER_PWRSET_USBOTGEN_Msk \ - (0x20000UL) /*!< SCU_POWER PWRSET: USBOTGEN (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRSET_USBPUWQ_Pos \ - (18UL) /*!< SCU_POWER PWRSET: USBPUWQ (Bit 18) */ -#define SCU_POWER_PWRSET_USBPUWQ_Msk \ - (0x40000UL) /*!< SCU_POWER PWRSET: USBPUWQ (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_POWER_PWRCLR ------------------------------ */ -#define SCU_POWER_PWRCLR_HIB_Pos \ - (0UL) /*!< SCU_POWER PWRCLR: HIB (Bit 0) */ -#define SCU_POWER_PWRCLR_HIB_Msk \ - (0x1UL) /*!< SCU_POWER PWRCLR: HIB (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRCLR_USBPHYPDQ_Pos \ - (16UL) /*!< SCU_POWER PWRCLR: USBPHYPDQ (Bit 16) */ -#define SCU_POWER_PWRCLR_USBPHYPDQ_Msk \ - (0x10000UL) /*!< SCU_POWER PWRCLR: USBPHYPDQ (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRCLR_USBOTGEN_Pos \ - (17UL) /*!< SCU_POWER PWRCLR: USBOTGEN (Bit 17) */ -#define SCU_POWER_PWRCLR_USBOTGEN_Msk \ - (0x20000UL) /*!< SCU_POWER PWRCLR: USBOTGEN (Bitfield-Mask: 0x01) */ -#define SCU_POWER_PWRCLR_USBPUWQ_Pos \ - (18UL) /*!< SCU_POWER PWRCLR: USBPUWQ (Bit 18) */ -#define SCU_POWER_PWRCLR_USBPUWQ_Msk \ - (0x40000UL) /*!< SCU_POWER PWRCLR: USBPUWQ (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_POWER_EVRSTAT ----------------------------- */ -#define SCU_POWER_EVRSTAT_OV13_Pos \ - (1UL) /*!< SCU_POWER EVRSTAT: OV13 (Bit 1) */ -#define SCU_POWER_EVRSTAT_OV13_Msk \ - (0x2UL) /*!< SCU_POWER EVRSTAT: OV13 (Bitfield-Mask: 0x01) */ - -/* ---------------------------- SCU_POWER_EVRVADCSTAT --------------------------- */ -#define SCU_POWER_EVRVADCSTAT_VADC13V_Pos \ - (0UL) /*!< SCU_POWER EVRVADCSTAT: VADC13V (Bit 0) */ -#define SCU_POWER_EVRVADCSTAT_VADC13V_Msk \ - (0xffUL) /*!< SCU_POWER EVRVADCSTAT: VADC13V (Bitfield-Mask: 0xff) */ -#define SCU_POWER_EVRVADCSTAT_VADC33V_Pos \ - (8UL) /*!< SCU_POWER EVRVADCSTAT: VADC33V (Bit 8) */ -#define SCU_POWER_EVRVADCSTAT_VADC33V_Msk \ - (0xff00UL) /*!< SCU_POWER EVRVADCSTAT: VADC33V (Bitfield-Mask: 0xff) */ - -/* ------------------------------ SCU_POWER_PWRMON ------------------------------ */ -#define SCU_POWER_PWRMON_THRS_Pos \ - (0UL) /*!< SCU_POWER PWRMON: THRS (Bit 0) */ -#define SCU_POWER_PWRMON_THRS_Msk \ - (0xffUL) /*!< SCU_POWER PWRMON: THRS (Bitfield-Mask: 0xff) */ -#define SCU_POWER_PWRMON_INTV_Pos \ - (8UL) /*!< SCU_POWER PWRMON: INTV (Bit 8) */ -#define SCU_POWER_PWRMON_INTV_Msk \ - (0xff00UL) /*!< SCU_POWER PWRMON: INTV (Bitfield-Mask: 0xff) */ -#define SCU_POWER_PWRMON_ENB_Pos \ - (16UL) /*!< SCU_POWER PWRMON: ENB (Bit 16) */ -#define SCU_POWER_PWRMON_ENB_Msk \ - (0x10000UL) /*!< SCU_POWER PWRMON: ENB (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'SCU_RESET' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ SCU_RESET_RSTSTAT ----------------------------- */ -#define SCU_RESET_RSTSTAT_RSTSTAT_Pos \ - (0UL) /*!< SCU_RESET RSTSTAT: RSTSTAT (Bit 0) */ -#define SCU_RESET_RSTSTAT_RSTSTAT_Msk \ - (0xffUL) /*!< SCU_RESET RSTSTAT: RSTSTAT (Bitfield-Mask: 0xff) */ -#define SCU_RESET_RSTSTAT_HIBWK_Pos \ - (8UL) /*!< SCU_RESET RSTSTAT: HIBWK (Bit 8) */ -#define SCU_RESET_RSTSTAT_HIBWK_Msk \ - (0x100UL) /*!< SCU_RESET RSTSTAT: HIBWK (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTSTAT_HIBRS_Pos \ - (9UL) /*!< SCU_RESET RSTSTAT: HIBRS (Bit 9) */ -#define SCU_RESET_RSTSTAT_HIBRS_Msk \ - (0x200UL) /*!< SCU_RESET RSTSTAT: HIBRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTSTAT_LCKEN_Pos \ - (10UL) /*!< SCU_RESET RSTSTAT: LCKEN (Bit 10) */ -#define SCU_RESET_RSTSTAT_LCKEN_Msk \ - (0x400UL) /*!< SCU_RESET RSTSTAT: LCKEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_RSTSET ------------------------------ */ -#define SCU_RESET_RSTSET_HIBWK_Pos \ - (8UL) /*!< SCU_RESET RSTSET: HIBWK (Bit 8) */ -#define SCU_RESET_RSTSET_HIBWK_Msk \ - (0x100UL) /*!< SCU_RESET RSTSET: HIBWK (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTSET_HIBRS_Pos \ - (9UL) /*!< SCU_RESET RSTSET: HIBRS (Bit 9) */ -#define SCU_RESET_RSTSET_HIBRS_Msk \ - (0x200UL) /*!< SCU_RESET RSTSET: HIBRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTSET_LCKEN_Pos \ - (10UL) /*!< SCU_RESET RSTSET: LCKEN (Bit 10) */ -#define SCU_RESET_RSTSET_LCKEN_Msk \ - (0x400UL) /*!< SCU_RESET RSTSET: LCKEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_RSTCLR ------------------------------ */ -#define SCU_RESET_RSTCLR_RSCLR_Pos \ - (0UL) /*!< SCU_RESET RSTCLR: RSCLR (Bit 0) */ -#define SCU_RESET_RSTCLR_RSCLR_Msk \ - (0x1UL) /*!< SCU_RESET RSTCLR: RSCLR (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTCLR_HIBWK_Pos \ - (8UL) /*!< SCU_RESET RSTCLR: HIBWK (Bit 8) */ -#define SCU_RESET_RSTCLR_HIBWK_Msk \ - (0x100UL) /*!< SCU_RESET RSTCLR: HIBWK (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTCLR_HIBRS_Pos \ - (9UL) /*!< SCU_RESET RSTCLR: HIBRS (Bit 9) */ -#define SCU_RESET_RSTCLR_HIBRS_Msk \ - (0x200UL) /*!< SCU_RESET RSTCLR: HIBRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_RSTCLR_LCKEN_Pos \ - (10UL) /*!< SCU_RESET RSTCLR: LCKEN (Bit 10) */ -#define SCU_RESET_RSTCLR_LCKEN_Msk \ - (0x400UL) /*!< SCU_RESET RSTCLR: LCKEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSTAT0 ----------------------------- */ -#define SCU_RESET_PRSTAT0_VADCRS_Pos \ - (0UL) /*!< SCU_RESET PRSTAT0: VADCRS (Bit 0) */ -#define SCU_RESET_PRSTAT0_VADCRS_Msk \ - (0x1UL) /*!< SCU_RESET PRSTAT0: VADCRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_DSDRS_Pos \ - (1UL) /*!< SCU_RESET PRSTAT0: DSDRS (Bit 1) */ -#define SCU_RESET_PRSTAT0_DSDRS_Msk \ - (0x2UL) /*!< SCU_RESET PRSTAT0: DSDRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_CCU40RS_Pos \ - (2UL) /*!< SCU_RESET PRSTAT0: CCU40RS (Bit 2) */ -#define SCU_RESET_PRSTAT0_CCU40RS_Msk \ - (0x4UL) /*!< SCU_RESET PRSTAT0: CCU40RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_CCU41RS_Pos \ - (3UL) /*!< SCU_RESET PRSTAT0: CCU41RS (Bit 3) */ -#define SCU_RESET_PRSTAT0_CCU41RS_Msk \ - (0x8UL) /*!< SCU_RESET PRSTAT0: CCU41RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_CCU42RS_Pos \ - (4UL) /*!< SCU_RESET PRSTAT0: CCU42RS (Bit 4) */ -#define SCU_RESET_PRSTAT0_CCU42RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSTAT0: CCU42RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_CCU80RS_Pos \ - (7UL) /*!< SCU_RESET PRSTAT0: CCU80RS (Bit 7) */ -#define SCU_RESET_PRSTAT0_CCU80RS_Msk \ - (0x80UL) /*!< SCU_RESET PRSTAT0: CCU80RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_CCU81RS_Pos \ - (8UL) /*!< SCU_RESET PRSTAT0: CCU81RS (Bit 8) */ -#define SCU_RESET_PRSTAT0_CCU81RS_Msk \ - (0x100UL) /*!< SCU_RESET PRSTAT0: CCU81RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_POSIF0RS_Pos \ - (9UL) /*!< SCU_RESET PRSTAT0: POSIF0RS (Bit 9) */ -#define SCU_RESET_PRSTAT0_POSIF0RS_Msk \ - (0x200UL) /*!< SCU_RESET PRSTAT0: POSIF0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_POSIF1RS_Pos \ - (10UL) /*!< SCU_RESET PRSTAT0: POSIF1RS (Bit 10) */ -#define SCU_RESET_PRSTAT0_POSIF1RS_Msk \ - (0x400UL) /*!< SCU_RESET PRSTAT0: POSIF1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_USIC0RS_Pos \ - (11UL) /*!< SCU_RESET PRSTAT0: USIC0RS (Bit 11) */ -#define SCU_RESET_PRSTAT0_USIC0RS_Msk \ - (0x800UL) /*!< SCU_RESET PRSTAT0: USIC0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_ERU1RS_Pos \ - (16UL) /*!< SCU_RESET PRSTAT0: ERU1RS (Bit 16) */ -#define SCU_RESET_PRSTAT0_ERU1RS_Msk \ - (0x10000UL) /*!< SCU_RESET PRSTAT0: ERU1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT0_HRPWM0RS_Pos \ - (23UL) /*!< SCU_RESET PRSTAT0: HRPWM0RS (Bit 23) */ -#define SCU_RESET_PRSTAT0_HRPWM0RS_Msk \ - (0x800000UL) /*!< SCU_RESET PRSTAT0: HRPWM0RS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSET0 ------------------------------ */ -#define SCU_RESET_PRSET0_VADCRS_Pos \ - (0UL) /*!< SCU_RESET PRSET0: VADCRS (Bit 0) */ -#define SCU_RESET_PRSET0_VADCRS_Msk \ - (0x1UL) /*!< SCU_RESET PRSET0: VADCRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_DSDRS_Pos \ - (1UL) /*!< SCU_RESET PRSET0: DSDRS (Bit 1) */ -#define SCU_RESET_PRSET0_DSDRS_Msk \ - (0x2UL) /*!< SCU_RESET PRSET0: DSDRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_CCU40RS_Pos \ - (2UL) /*!< SCU_RESET PRSET0: CCU40RS (Bit 2) */ -#define SCU_RESET_PRSET0_CCU40RS_Msk \ - (0x4UL) /*!< SCU_RESET PRSET0: CCU40RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_CCU41RS_Pos \ - (3UL) /*!< SCU_RESET PRSET0: CCU41RS (Bit 3) */ -#define SCU_RESET_PRSET0_CCU41RS_Msk \ - (0x8UL) /*!< SCU_RESET PRSET0: CCU41RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_CCU42RS_Pos \ - (4UL) /*!< SCU_RESET PRSET0: CCU42RS (Bit 4) */ -#define SCU_RESET_PRSET0_CCU42RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSET0: CCU42RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_CCU80RS_Pos \ - (7UL) /*!< SCU_RESET PRSET0: CCU80RS (Bit 7) */ -#define SCU_RESET_PRSET0_CCU80RS_Msk \ - (0x80UL) /*!< SCU_RESET PRSET0: CCU80RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_CCU81RS_Pos \ - (8UL) /*!< SCU_RESET PRSET0: CCU81RS (Bit 8) */ -#define SCU_RESET_PRSET0_CCU81RS_Msk \ - (0x100UL) /*!< SCU_RESET PRSET0: CCU81RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_POSIF0RS_Pos \ - (9UL) /*!< SCU_RESET PRSET0: POSIF0RS (Bit 9) */ -#define SCU_RESET_PRSET0_POSIF0RS_Msk \ - (0x200UL) /*!< SCU_RESET PRSET0: POSIF0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_POSIF1RS_Pos \ - (10UL) /*!< SCU_RESET PRSET0: POSIF1RS (Bit 10) */ -#define SCU_RESET_PRSET0_POSIF1RS_Msk \ - (0x400UL) /*!< SCU_RESET PRSET0: POSIF1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_USIC0RS_Pos \ - (11UL) /*!< SCU_RESET PRSET0: USIC0RS (Bit 11) */ -#define SCU_RESET_PRSET0_USIC0RS_Msk \ - (0x800UL) /*!< SCU_RESET PRSET0: USIC0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_ERU1RS_Pos \ - (16UL) /*!< SCU_RESET PRSET0: ERU1RS (Bit 16) */ -#define SCU_RESET_PRSET0_ERU1RS_Msk \ - (0x10000UL) /*!< SCU_RESET PRSET0: ERU1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET0_HRPWM0RS_Pos \ - (23UL) /*!< SCU_RESET PRSET0: HRPWM0RS (Bit 23) */ -#define SCU_RESET_PRSET0_HRPWM0RS_Msk \ - (0x800000UL) /*!< SCU_RESET PRSET0: HRPWM0RS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRCLR0 ------------------------------ */ -#define SCU_RESET_PRCLR0_VADCRS_Pos \ - (0UL) /*!< SCU_RESET PRCLR0: VADCRS (Bit 0) */ -#define SCU_RESET_PRCLR0_VADCRS_Msk \ - (0x1UL) /*!< SCU_RESET PRCLR0: VADCRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_DSDRS_Pos \ - (1UL) /*!< SCU_RESET PRCLR0: DSDRS (Bit 1) */ -#define SCU_RESET_PRCLR0_DSDRS_Msk \ - (0x2UL) /*!< SCU_RESET PRCLR0: DSDRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_CCU40RS_Pos \ - (2UL) /*!< SCU_RESET PRCLR0: CCU40RS (Bit 2) */ -#define SCU_RESET_PRCLR0_CCU40RS_Msk \ - (0x4UL) /*!< SCU_RESET PRCLR0: CCU40RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_CCU41RS_Pos \ - (3UL) /*!< SCU_RESET PRCLR0: CCU41RS (Bit 3) */ -#define SCU_RESET_PRCLR0_CCU41RS_Msk \ - (0x8UL) /*!< SCU_RESET PRCLR0: CCU41RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_CCU42RS_Pos \ - (4UL) /*!< SCU_RESET PRCLR0: CCU42RS (Bit 4) */ -#define SCU_RESET_PRCLR0_CCU42RS_Msk \ - (0x10UL) /*!< SCU_RESET PRCLR0: CCU42RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_CCU80RS_Pos \ - (7UL) /*!< SCU_RESET PRCLR0: CCU80RS (Bit 7) */ -#define SCU_RESET_PRCLR0_CCU80RS_Msk \ - (0x80UL) /*!< SCU_RESET PRCLR0: CCU80RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_CCU81RS_Pos \ - (8UL) /*!< SCU_RESET PRCLR0: CCU81RS (Bit 8) */ -#define SCU_RESET_PRCLR0_CCU81RS_Msk \ - (0x100UL) /*!< SCU_RESET PRCLR0: CCU81RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_POSIF0RS_Pos \ - (9UL) /*!< SCU_RESET PRCLR0: POSIF0RS (Bit 9) */ -#define SCU_RESET_PRCLR0_POSIF0RS_Msk \ - (0x200UL) /*!< SCU_RESET PRCLR0: POSIF0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_POSIF1RS_Pos \ - (10UL) /*!< SCU_RESET PRCLR0: POSIF1RS (Bit 10) */ -#define SCU_RESET_PRCLR0_POSIF1RS_Msk \ - (0x400UL) /*!< SCU_RESET PRCLR0: POSIF1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_USIC0RS_Pos \ - (11UL) /*!< SCU_RESET PRCLR0: USIC0RS (Bit 11) */ -#define SCU_RESET_PRCLR0_USIC0RS_Msk \ - (0x800UL) /*!< SCU_RESET PRCLR0: USIC0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_ERU1RS_Pos \ - (16UL) /*!< SCU_RESET PRCLR0: ERU1RS (Bit 16) */ -#define SCU_RESET_PRCLR0_ERU1RS_Msk \ - (0x10000UL) /*!< SCU_RESET PRCLR0: ERU1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR0_HRPWM0RS_Pos \ - (23UL) /*!< SCU_RESET PRCLR0: HRPWM0RS (Bit 23) */ -#define SCU_RESET_PRCLR0_HRPWM0RS_Msk \ - (0x800000UL) /*!< SCU_RESET PRCLR0: HRPWM0RS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSTAT1 ----------------------------- */ -#define SCU_RESET_PRSTAT1_CCU43RS_Pos \ - (0UL) /*!< SCU_RESET PRSTAT1: CCU43RS (Bit 0) */ -#define SCU_RESET_PRSTAT1_CCU43RS_Msk \ - (0x1UL) /*!< SCU_RESET PRSTAT1: CCU43RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_LEDTSCU0RS_Pos \ - (3UL) /*!< SCU_RESET PRSTAT1: LEDTSCU0RS (Bit 3) */ -#define SCU_RESET_PRSTAT1_LEDTSCU0RS_Msk \ - (0x8UL) /*!< SCU_RESET PRSTAT1: LEDTSCU0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_MCAN0RS_Pos \ - (4UL) /*!< SCU_RESET PRSTAT1: MCAN0RS (Bit 4) */ -#define SCU_RESET_PRSTAT1_MCAN0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSTAT1: MCAN0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_DACRS_Pos \ - (5UL) /*!< SCU_RESET PRSTAT1: DACRS (Bit 5) */ -#define SCU_RESET_PRSTAT1_DACRS_Msk \ - (0x20UL) /*!< SCU_RESET PRSTAT1: DACRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_USIC1RS_Pos \ - (7UL) /*!< SCU_RESET PRSTAT1: USIC1RS (Bit 7) */ -#define SCU_RESET_PRSTAT1_USIC1RS_Msk \ - (0x80UL) /*!< SCU_RESET PRSTAT1: USIC1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT1_PPORTSRS_Pos \ - (9UL) /*!< SCU_RESET PRSTAT1: PPORTSRS (Bit 9) */ -#define SCU_RESET_PRSTAT1_PPORTSRS_Msk \ - (0x200UL) /*!< SCU_RESET PRSTAT1: PPORTSRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSET1 ------------------------------ */ -#define SCU_RESET_PRSET1_CCU43RS_Pos \ - (0UL) /*!< SCU_RESET PRSET1: CCU43RS (Bit 0) */ -#define SCU_RESET_PRSET1_CCU43RS_Msk \ - (0x1UL) /*!< SCU_RESET PRSET1: CCU43RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_LEDTSCU0RS_Pos \ - (3UL) /*!< SCU_RESET PRSET1: LEDTSCU0RS (Bit 3) */ -#define SCU_RESET_PRSET1_LEDTSCU0RS_Msk \ - (0x8UL) /*!< SCU_RESET PRSET1: LEDTSCU0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_MCAN0RS_Pos \ - (4UL) /*!< SCU_RESET PRSET1: MCAN0RS (Bit 4) */ -#define SCU_RESET_PRSET1_MCAN0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSET1: MCAN0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_DACRS_Pos \ - (5UL) /*!< SCU_RESET PRSET1: DACRS (Bit 5) */ -#define SCU_RESET_PRSET1_DACRS_Msk \ - (0x20UL) /*!< SCU_RESET PRSET1: DACRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_USIC1RS_Pos \ - (7UL) /*!< SCU_RESET PRSET1: USIC1RS (Bit 7) */ -#define SCU_RESET_PRSET1_USIC1RS_Msk \ - (0x80UL) /*!< SCU_RESET PRSET1: USIC1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET1_PPORTSRS_Pos \ - (9UL) /*!< SCU_RESET PRSET1: PPORTSRS (Bit 9) */ -#define SCU_RESET_PRSET1_PPORTSRS_Msk \ - (0x200UL) /*!< SCU_RESET PRSET1: PPORTSRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRCLR1 ------------------------------ */ -#define SCU_RESET_PRCLR1_CCU43RS_Pos \ - (0UL) /*!< SCU_RESET PRCLR1: CCU43RS (Bit 0) */ -#define SCU_RESET_PRCLR1_CCU43RS_Msk \ - (0x1UL) /*!< SCU_RESET PRCLR1: CCU43RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_LEDTSCU0RS_Pos \ - (3UL) /*!< SCU_RESET PRCLR1: LEDTSCU0RS (Bit 3) */ -#define SCU_RESET_PRCLR1_LEDTSCU0RS_Msk \ - (0x8UL) /*!< SCU_RESET PRCLR1: LEDTSCU0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_MCAN0RS_Pos \ - (4UL) /*!< SCU_RESET PRCLR1: MCAN0RS (Bit 4) */ -#define SCU_RESET_PRCLR1_MCAN0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRCLR1: MCAN0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_DACRS_Pos \ - (5UL) /*!< SCU_RESET PRCLR1: DACRS (Bit 5) */ -#define SCU_RESET_PRCLR1_DACRS_Msk \ - (0x20UL) /*!< SCU_RESET PRCLR1: DACRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_USIC1RS_Pos \ - (7UL) /*!< SCU_RESET PRCLR1: USIC1RS (Bit 7) */ -#define SCU_RESET_PRCLR1_USIC1RS_Msk \ - (0x80UL) /*!< SCU_RESET PRCLR1: USIC1RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR1_PPORTSRS_Pos \ - (9UL) /*!< SCU_RESET PRCLR1: PPORTSRS (Bit 9) */ -#define SCU_RESET_PRCLR1_PPORTSRS_Msk \ - (0x200UL) /*!< SCU_RESET PRCLR1: PPORTSRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSTAT2 ----------------------------- */ -#define SCU_RESET_PRSTAT2_WDTRS_Pos \ - (1UL) /*!< SCU_RESET PRSTAT2: WDTRS (Bit 1) */ -#define SCU_RESET_PRSTAT2_WDTRS_Msk \ - (0x2UL) /*!< SCU_RESET PRSTAT2: WDTRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT2_ETH0RS_Pos \ - (2UL) /*!< SCU_RESET PRSTAT2: ETH0RS (Bit 2) */ -#define SCU_RESET_PRSTAT2_ETH0RS_Msk \ - (0x4UL) /*!< SCU_RESET PRSTAT2: ETH0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT2_DMA0RS_Pos \ - (4UL) /*!< SCU_RESET PRSTAT2: DMA0RS (Bit 4) */ -#define SCU_RESET_PRSTAT2_DMA0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSTAT2: DMA0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT2_FCERS_Pos \ - (6UL) /*!< SCU_RESET PRSTAT2: FCERS (Bit 6) */ -#define SCU_RESET_PRSTAT2_FCERS_Msk \ - (0x40UL) /*!< SCU_RESET PRSTAT2: FCERS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSTAT2_USBRS_Pos \ - (7UL) /*!< SCU_RESET PRSTAT2: USBRS (Bit 7) */ -#define SCU_RESET_PRSTAT2_USBRS_Msk \ - (0x80UL) /*!< SCU_RESET PRSTAT2: USBRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRSET2 ------------------------------ */ -#define SCU_RESET_PRSET2_WDTRS_Pos \ - (1UL) /*!< SCU_RESET PRSET2: WDTRS (Bit 1) */ -#define SCU_RESET_PRSET2_WDTRS_Msk \ - (0x2UL) /*!< SCU_RESET PRSET2: WDTRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET2_ETH0RS_Pos \ - (2UL) /*!< SCU_RESET PRSET2: ETH0RS (Bit 2) */ -#define SCU_RESET_PRSET2_ETH0RS_Msk \ - (0x4UL) /*!< SCU_RESET PRSET2: ETH0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET2_DMA0RS_Pos \ - (4UL) /*!< SCU_RESET PRSET2: DMA0RS (Bit 4) */ -#define SCU_RESET_PRSET2_DMA0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRSET2: DMA0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET2_FCERS_Pos \ - (6UL) /*!< SCU_RESET PRSET2: FCERS (Bit 6) */ -#define SCU_RESET_PRSET2_FCERS_Msk \ - (0x40UL) /*!< SCU_RESET PRSET2: FCERS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRSET2_USBRS_Pos \ - (7UL) /*!< SCU_RESET PRSET2: USBRS (Bit 7) */ -#define SCU_RESET_PRSET2_USBRS_Msk \ - (0x80UL) /*!< SCU_RESET PRSET2: USBRS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ SCU_RESET_PRCLR2 ------------------------------ */ -#define SCU_RESET_PRCLR2_WDTRS_Pos \ - (1UL) /*!< SCU_RESET PRCLR2: WDTRS (Bit 1) */ -#define SCU_RESET_PRCLR2_WDTRS_Msk \ - (0x2UL) /*!< SCU_RESET PRCLR2: WDTRS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR2_ETH0RS_Pos \ - (2UL) /*!< SCU_RESET PRCLR2: ETH0RS (Bit 2) */ -#define SCU_RESET_PRCLR2_ETH0RS_Msk \ - (0x4UL) /*!< SCU_RESET PRCLR2: ETH0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR2_DMA0RS_Pos \ - (4UL) /*!< SCU_RESET PRCLR2: DMA0RS (Bit 4) */ -#define SCU_RESET_PRCLR2_DMA0RS_Msk \ - (0x10UL) /*!< SCU_RESET PRCLR2: DMA0RS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR2_FCERS_Pos \ - (6UL) /*!< SCU_RESET PRCLR2: FCERS (Bit 6) */ -#define SCU_RESET_PRCLR2_FCERS_Msk \ - (0x40UL) /*!< SCU_RESET PRCLR2: FCERS (Bitfield-Mask: 0x01) */ -#define SCU_RESET_PRCLR2_USBRS_Pos \ - (7UL) /*!< SCU_RESET PRCLR2: USBRS (Bit 7) */ -#define SCU_RESET_PRCLR2_USBRS_Msk \ - (0x80UL) /*!< SCU_RESET PRCLR2: USBRS (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'LEDTS' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- LEDTS_ID ---------------------------------- */ -#define LEDTS_ID_MOD_REV_Pos \ - (0UL) /*!< LEDTS ID: MOD_REV (Bit 0) */ -#define LEDTS_ID_MOD_REV_Msk \ - (0xffUL) /*!< LEDTS ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define LEDTS_ID_MOD_TYPE_Pos \ - (8UL) /*!< LEDTS ID: MOD_TYPE (Bit 8) */ -#define LEDTS_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< LEDTS ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define LEDTS_ID_MOD_NUMBER_Pos \ - (16UL) /*!< LEDTS ID: MOD_NUMBER (Bit 16) */ -#define LEDTS_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< LEDTS ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- LEDTS_GLOBCTL ------------------------------- */ -#define LEDTS_GLOBCTL_TS_EN_Pos \ - (0UL) /*!< LEDTS GLOBCTL: TS_EN (Bit 0) */ -#define LEDTS_GLOBCTL_TS_EN_Msk \ - (0x1UL) /*!< LEDTS GLOBCTL: TS_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_LD_EN_Pos \ - (1UL) /*!< LEDTS GLOBCTL: LD_EN (Bit 1) */ -#define LEDTS_GLOBCTL_LD_EN_Msk \ - (0x2UL) /*!< LEDTS GLOBCTL: LD_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_CMTR_Pos \ - (2UL) /*!< LEDTS GLOBCTL: CMTR (Bit 2) */ -#define LEDTS_GLOBCTL_CMTR_Msk \ - (0x4UL) /*!< LEDTS GLOBCTL: CMTR (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_ENSYNC_Pos \ - (3UL) /*!< LEDTS GLOBCTL: ENSYNC (Bit 3) */ -#define LEDTS_GLOBCTL_ENSYNC_Msk \ - (0x8UL) /*!< LEDTS GLOBCTL: ENSYNC (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_SUSCFG_Pos \ - (8UL) /*!< LEDTS GLOBCTL: SUSCFG (Bit 8) */ -#define LEDTS_GLOBCTL_SUSCFG_Msk \ - (0x100UL) /*!< LEDTS GLOBCTL: SUSCFG (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_MASKVAL_Pos \ - (9UL) /*!< LEDTS GLOBCTL: MASKVAL (Bit 9) */ -#define LEDTS_GLOBCTL_MASKVAL_Msk \ - (0xe00UL) /*!< LEDTS GLOBCTL: MASKVAL (Bitfield-Mask: 0x07) */ -#define LEDTS_GLOBCTL_FENVAL_Pos \ - (12UL) /*!< LEDTS GLOBCTL: FENVAL (Bit 12) */ -#define LEDTS_GLOBCTL_FENVAL_Msk \ - (0x1000UL) /*!< LEDTS GLOBCTL: FENVAL (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_ITS_EN_Pos \ - (13UL) /*!< LEDTS GLOBCTL: ITS_EN (Bit 13) */ -#define LEDTS_GLOBCTL_ITS_EN_Msk \ - (0x2000UL) /*!< LEDTS GLOBCTL: ITS_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_ITF_EN_Pos \ - (14UL) /*!< LEDTS GLOBCTL: ITF_EN (Bit 14) */ -#define LEDTS_GLOBCTL_ITF_EN_Msk \ - (0x4000UL) /*!< LEDTS GLOBCTL: ITF_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_ITP_EN_Pos \ - (15UL) /*!< LEDTS GLOBCTL: ITP_EN (Bit 15) */ -#define LEDTS_GLOBCTL_ITP_EN_Msk \ - (0x8000UL) /*!< LEDTS GLOBCTL: ITP_EN (Bitfield-Mask: 0x01) */ -#define LEDTS_GLOBCTL_CLK_PS_Pos \ - (16UL) /*!< LEDTS GLOBCTL: CLK_PS (Bit 16) */ -#define LEDTS_GLOBCTL_CLK_PS_Msk \ - (0xffff0000UL) /*!< LEDTS GLOBCTL: CLK_PS (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- LEDTS_FNCTL -------------------------------- */ -#define LEDTS_FNCTL_PADT_Pos \ - (0UL) /*!< LEDTS FNCTL: PADT (Bit 0) */ -#define LEDTS_FNCTL_PADT_Msk \ - (0x7UL) /*!< LEDTS FNCTL: PADT (Bitfield-Mask: 0x07) */ -#define LEDTS_FNCTL_PADTSW_Pos \ - (3UL) /*!< LEDTS FNCTL: PADTSW (Bit 3) */ -#define LEDTS_FNCTL_PADTSW_Msk \ - (0x8UL) /*!< LEDTS FNCTL: PADTSW (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_EPULL_Pos \ - (4UL) /*!< LEDTS FNCTL: EPULL (Bit 4) */ -#define LEDTS_FNCTL_EPULL_Msk \ - (0x10UL) /*!< LEDTS FNCTL: EPULL (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_FNCOL_Pos \ - (5UL) /*!< LEDTS FNCTL: FNCOL (Bit 5) */ -#define LEDTS_FNCTL_FNCOL_Msk \ - (0xe0UL) /*!< LEDTS FNCTL: FNCOL (Bitfield-Mask: 0x07) */ -#define LEDTS_FNCTL_ACCCNT_Pos \ - (16UL) /*!< LEDTS FNCTL: ACCCNT (Bit 16) */ -#define LEDTS_FNCTL_ACCCNT_Msk \ - (0xf0000UL) /*!< LEDTS FNCTL: ACCCNT (Bitfield-Mask: 0x0f) */ -#define LEDTS_FNCTL_TSCCMP_Pos \ - (20UL) /*!< LEDTS FNCTL: TSCCMP (Bit 20) */ -#define LEDTS_FNCTL_TSCCMP_Msk \ - (0x100000UL) /*!< LEDTS FNCTL: TSCCMP (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_TSOEXT_Pos \ - (21UL) /*!< LEDTS FNCTL: TSOEXT (Bit 21) */ -#define LEDTS_FNCTL_TSOEXT_Msk \ - (0x600000UL) /*!< LEDTS FNCTL: TSOEXT (Bitfield-Mask: 0x03) */ -#define LEDTS_FNCTL_TSCTRR_Pos \ - (23UL) /*!< LEDTS FNCTL: TSCTRR (Bit 23) */ -#define LEDTS_FNCTL_TSCTRR_Msk \ - (0x800000UL) /*!< LEDTS FNCTL: TSCTRR (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_TSCTRSAT_Pos \ - (24UL) /*!< LEDTS FNCTL: TSCTRSAT (Bit 24) */ -#define LEDTS_FNCTL_TSCTRSAT_Msk \ - (0x1000000UL) /*!< LEDTS FNCTL: TSCTRSAT (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_NR_TSIN_Pos \ - (25UL) /*!< LEDTS FNCTL: NR_TSIN (Bit 25) */ -#define LEDTS_FNCTL_NR_TSIN_Msk \ - (0xe000000UL) /*!< LEDTS FNCTL: NR_TSIN (Bitfield-Mask: 0x07) */ -#define LEDTS_FNCTL_COLLEV_Pos \ - (28UL) /*!< LEDTS FNCTL: COLLEV (Bit 28) */ -#define LEDTS_FNCTL_COLLEV_Msk \ - (0x10000000UL) /*!< LEDTS FNCTL: COLLEV (Bitfield-Mask: 0x01) */ -#define LEDTS_FNCTL_NR_LEDCOL_Pos \ - (29UL) /*!< LEDTS FNCTL: NR_LEDCOL (Bit 29) */ -#define LEDTS_FNCTL_NR_LEDCOL_Msk \ - (0xe0000000UL) /*!< LEDTS FNCTL: NR_LEDCOL (Bitfield-Mask: 0x07) */ - -/* --------------------------------- LEDTS_EVFR --------------------------------- */ -#define LEDTS_EVFR_TSF_Pos (0UL) /*!< LEDTS EVFR: TSF (Bit 0) */ -#define LEDTS_EVFR_TSF_Msk \ - (0x1UL) /*!< LEDTS EVFR: TSF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_TFF_Pos (1UL) /*!< LEDTS EVFR: TFF (Bit 1) */ -#define LEDTS_EVFR_TFF_Msk \ - (0x2UL) /*!< LEDTS EVFR: TFF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_TPF_Pos (2UL) /*!< LEDTS EVFR: TPF (Bit 2) */ -#define LEDTS_EVFR_TPF_Msk \ - (0x4UL) /*!< LEDTS EVFR: TPF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_TSCTROVF_Pos \ - (3UL) /*!< LEDTS EVFR: TSCTROVF (Bit 3) */ -#define LEDTS_EVFR_TSCTROVF_Msk \ - (0x8UL) /*!< LEDTS EVFR: TSCTROVF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_CTSF_Pos \ - (16UL) /*!< LEDTS EVFR: CTSF (Bit 16) */ -#define LEDTS_EVFR_CTSF_Msk \ - (0x10000UL) /*!< LEDTS EVFR: CTSF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_CTFF_Pos \ - (17UL) /*!< LEDTS EVFR: CTFF (Bit 17) */ -#define LEDTS_EVFR_CTFF_Msk \ - (0x20000UL) /*!< LEDTS EVFR: CTFF (Bitfield-Mask: 0x01) */ -#define LEDTS_EVFR_CTPF_Pos \ - (18UL) /*!< LEDTS EVFR: CTPF (Bit 18) */ -#define LEDTS_EVFR_CTPF_Msk \ - (0x40000UL) /*!< LEDTS EVFR: CTPF (Bitfield-Mask: 0x01) */ - -/* --------------------------------- LEDTS_TSVAL -------------------------------- */ -#define LEDTS_TSVAL_TSCTRVALR_Pos \ - (0UL) /*!< LEDTS TSVAL: TSCTRVALR (Bit 0) */ -#define LEDTS_TSVAL_TSCTRVALR_Msk \ - (0xffffUL) /*!< LEDTS TSVAL: TSCTRVALR (Bitfield-Mask: 0xffff) */ -#define LEDTS_TSVAL_TSCTRVAL_Pos \ - (16UL) /*!< LEDTS TSVAL: TSCTRVAL (Bit 16) */ -#define LEDTS_TSVAL_TSCTRVAL_Msk \ - (0xffff0000UL) /*!< LEDTS TSVAL: TSCTRVAL (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- LEDTS_LINE0 -------------------------------- */ -#define LEDTS_LINE0_LINE_0_Pos \ - (0UL) /*!< LEDTS LINE0: LINE_0 (Bit 0) */ -#define LEDTS_LINE0_LINE_0_Msk \ - (0xffUL) /*!< LEDTS LINE0: LINE_0 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE0_LINE_1_Pos \ - (8UL) /*!< LEDTS LINE0: LINE_1 (Bit 8) */ -#define LEDTS_LINE0_LINE_1_Msk \ - (0xff00UL) /*!< LEDTS LINE0: LINE_1 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE0_LINE_2_Pos \ - (16UL) /*!< LEDTS LINE0: LINE_2 (Bit 16) */ -#define LEDTS_LINE0_LINE_2_Msk \ - (0xff0000UL) /*!< LEDTS LINE0: LINE_2 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE0_LINE_3_Pos \ - (24UL) /*!< LEDTS LINE0: LINE_3 (Bit 24) */ -#define LEDTS_LINE0_LINE_3_Msk \ - (0xff000000UL) /*!< LEDTS LINE0: LINE_3 (Bitfield-Mask: 0xff) */ - -/* --------------------------------- LEDTS_LINE1 -------------------------------- */ -#define LEDTS_LINE1_LINE_4_Pos \ - (0UL) /*!< LEDTS LINE1: LINE_4 (Bit 0) */ -#define LEDTS_LINE1_LINE_4_Msk \ - (0xffUL) /*!< LEDTS LINE1: LINE_4 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE1_LINE_5_Pos \ - (8UL) /*!< LEDTS LINE1: LINE_5 (Bit 8) */ -#define LEDTS_LINE1_LINE_5_Msk \ - (0xff00UL) /*!< LEDTS LINE1: LINE_5 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE1_LINE_6_Pos \ - (16UL) /*!< LEDTS LINE1: LINE_6 (Bit 16) */ -#define LEDTS_LINE1_LINE_6_Msk \ - (0xff0000UL) /*!< LEDTS LINE1: LINE_6 (Bitfield-Mask: 0xff) */ -#define LEDTS_LINE1_LINE_A_Pos \ - (24UL) /*!< LEDTS LINE1: LINE_A (Bit 24) */ -#define LEDTS_LINE1_LINE_A_Msk \ - (0xff000000UL) /*!< LEDTS LINE1: LINE_A (Bitfield-Mask: 0xff) */ - -/* -------------------------------- LEDTS_LDCMP0 -------------------------------- */ -#define LEDTS_LDCMP0_CMP_LD0_Pos \ - (0UL) /*!< LEDTS LDCMP0: CMP_LD0 (Bit 0) */ -#define LEDTS_LDCMP0_CMP_LD0_Msk \ - (0xffUL) /*!< LEDTS LDCMP0: CMP_LD0 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP0_CMP_LD1_Pos \ - (8UL) /*!< LEDTS LDCMP0: CMP_LD1 (Bit 8) */ -#define LEDTS_LDCMP0_CMP_LD1_Msk \ - (0xff00UL) /*!< LEDTS LDCMP0: CMP_LD1 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP0_CMP_LD2_Pos \ - (16UL) /*!< LEDTS LDCMP0: CMP_LD2 (Bit 16) */ -#define LEDTS_LDCMP0_CMP_LD2_Msk \ - (0xff0000UL) /*!< LEDTS LDCMP0: CMP_LD2 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP0_CMP_LD3_Pos \ - (24UL) /*!< LEDTS LDCMP0: CMP_LD3 (Bit 24) */ -#define LEDTS_LDCMP0_CMP_LD3_Msk \ - (0xff000000UL) /*!< LEDTS LDCMP0: CMP_LD3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- LEDTS_LDCMP1 -------------------------------- */ -#define LEDTS_LDCMP1_CMP_LD4_Pos \ - (0UL) /*!< LEDTS LDCMP1: CMP_LD4 (Bit 0) */ -#define LEDTS_LDCMP1_CMP_LD4_Msk \ - (0xffUL) /*!< LEDTS LDCMP1: CMP_LD4 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP1_CMP_LD5_Pos \ - (8UL) /*!< LEDTS LDCMP1: CMP_LD5 (Bit 8) */ -#define LEDTS_LDCMP1_CMP_LD5_Msk \ - (0xff00UL) /*!< LEDTS LDCMP1: CMP_LD5 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP1_CMP_LD6_Pos \ - (16UL) /*!< LEDTS LDCMP1: CMP_LD6 (Bit 16) */ -#define LEDTS_LDCMP1_CMP_LD6_Msk \ - (0xff0000UL) /*!< LEDTS LDCMP1: CMP_LD6 (Bitfield-Mask: 0xff) */ -#define LEDTS_LDCMP1_CMP_LDA_TSCOM_Pos \ - (24UL) /*!< LEDTS LDCMP1: CMP_LDA_TSCOM (Bit 24) */ -#define LEDTS_LDCMP1_CMP_LDA_TSCOM_Msk \ - (0xff000000UL) /*!< LEDTS LDCMP1: CMP_LDA_TSCOM (Bitfield-Mask: 0xff) */ - -/* -------------------------------- LEDTS_TSCMP0 -------------------------------- */ -#define LEDTS_TSCMP0_CMP_TS0_Pos \ - (0UL) /*!< LEDTS TSCMP0: CMP_TS0 (Bit 0) */ -#define LEDTS_TSCMP0_CMP_TS0_Msk \ - (0xffUL) /*!< LEDTS TSCMP0: CMP_TS0 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP0_CMP_TS1_Pos \ - (8UL) /*!< LEDTS TSCMP0: CMP_TS1 (Bit 8) */ -#define LEDTS_TSCMP0_CMP_TS1_Msk \ - (0xff00UL) /*!< LEDTS TSCMP0: CMP_TS1 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP0_CMP_TS2_Pos \ - (16UL) /*!< LEDTS TSCMP0: CMP_TS2 (Bit 16) */ -#define LEDTS_TSCMP0_CMP_TS2_Msk \ - (0xff0000UL) /*!< LEDTS TSCMP0: CMP_TS2 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP0_CMP_TS3_Pos \ - (24UL) /*!< LEDTS TSCMP0: CMP_TS3 (Bit 24) */ -#define LEDTS_TSCMP0_CMP_TS3_Msk \ - (0xff000000UL) /*!< LEDTS TSCMP0: CMP_TS3 (Bitfield-Mask: 0xff) */ - -/* -------------------------------- LEDTS_TSCMP1 -------------------------------- */ -#define LEDTS_TSCMP1_CMP_TS4_Pos \ - (0UL) /*!< LEDTS TSCMP1: CMP_TS4 (Bit 0) */ -#define LEDTS_TSCMP1_CMP_TS4_Msk \ - (0xffUL) /*!< LEDTS TSCMP1: CMP_TS4 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP1_CMP_TS5_Pos \ - (8UL) /*!< LEDTS TSCMP1: CMP_TS5 (Bit 8) */ -#define LEDTS_TSCMP1_CMP_TS5_Msk \ - (0xff00UL) /*!< LEDTS TSCMP1: CMP_TS5 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP1_CMP_TS6_Pos \ - (16UL) /*!< LEDTS TSCMP1: CMP_TS6 (Bit 16) */ -#define LEDTS_TSCMP1_CMP_TS6_Msk \ - (0xff0000UL) /*!< LEDTS TSCMP1: CMP_TS6 (Bitfield-Mask: 0xff) */ -#define LEDTS_TSCMP1_CMP_TS7_Pos \ - (24UL) /*!< LEDTS TSCMP1: CMP_TS7 (Bit 24) */ -#define LEDTS_TSCMP1_CMP_TS7_Msk \ - (0xff000000UL) /*!< LEDTS TSCMP1: CMP_TS7 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'ETH0_CON' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ ETH0_CON_ETH0_CON ----------------------------- */ -#define ETH_CON_RXD0_Pos (0UL) /*!< ETH0_CON ETH0_CON: RXD0 (Bit 0) */ -#define ETH_CON_RXD0_Msk (0x3UL) /*!< ETH0_CON ETH0_CON: RXD0 (Bitfield-Mask: 0x03) */ -#define ETH_CON_RXD1_Pos (2UL) /*!< ETH0_CON ETH0_CON: RXD1 (Bit 2) */ -#define ETH_CON_RXD1_Msk (0xcUL) /*!< ETH0_CON ETH0_CON: RXD1 (Bitfield-Mask: 0x03) */ -#define ETH_CON_RXD2_Pos (4UL) /*!< ETH0_CON ETH0_CON: RXD2 (Bit 4) */ -#define ETH_CON_RXD2_Msk \ - (0x30UL) /*!< ETH0_CON ETH0_CON: RXD2 (Bitfield-Mask: 0x03) */ -#define ETH_CON_RXD3_Pos (6UL) /*!< ETH0_CON ETH0_CON: RXD3 (Bit 6) */ -#define ETH_CON_RXD3_Msk \ - (0xc0UL) /*!< ETH0_CON ETH0_CON: RXD3 (Bitfield-Mask: 0x03) */ -#define ETH_CON_CLK_RMII_Pos \ - (8UL) /*!< ETH0_CON ETH0_CON: CLK_RMII (Bit 8) */ -#define ETH_CON_CLK_RMII_Msk \ - (0x300UL) /*!< ETH0_CON ETH0_CON: CLK_RMII (Bitfield-Mask: 0x03) */ -#define ETH_CON_CRS_DV_Pos \ - (10UL) /*!< ETH0_CON ETH0_CON: CRS_DV (Bit 10) */ -#define ETH_CON_CRS_DV_Msk \ - (0xc00UL) /*!< ETH0_CON ETH0_CON: CRS_DV (Bitfield-Mask: 0x03) */ -#define ETH_CON_CRS_Pos (12UL) /*!< ETH0_CON ETH0_CON: CRS (Bit 12) */ -#define ETH_CON_CRS_Msk \ - (0x3000UL) /*!< ETH0_CON ETH0_CON: CRS (Bitfield-Mask: 0x03) */ -#define ETH_CON_RXER_Pos (14UL) /*!< ETH0_CON ETH0_CON: RXER (Bit 14) */ -#define ETH_CON_RXER_Msk \ - (0xc000UL) /*!< ETH0_CON ETH0_CON: RXER (Bitfield-Mask: 0x03) */ -#define ETH_CON_COL_Pos (16UL) /*!< ETH0_CON ETH0_CON: COL (Bit 16) */ -#define ETH_CON_COL_Msk \ - (0x30000UL) /*!< ETH0_CON ETH0_CON: COL (Bitfield-Mask: 0x03) */ -#define ETH_CON_CLK_TX_Pos \ - (18UL) /*!< ETH0_CON ETH0_CON: CLK_TX (Bit 18) */ -#define ETH_CON_CLK_TX_Msk \ - (0xc0000UL) /*!< ETH0_CON ETH0_CON: CLK_TX (Bitfield-Mask: 0x03) */ -#define ETH_CON_MDIO_Pos (22UL) /*!< ETH0_CON ETH0_CON: MDIO (Bit 22) */ -#define ETH_CON_MDIO_Msk \ - (0xc00000UL) /*!< ETH0_CON ETH0_CON: MDIO (Bitfield-Mask: 0x03) */ -#define ETH_CON_INFSEL_Pos \ - (26UL) /*!< ETH0_CON ETH0_CON: INFSEL (Bit 26) */ -#define ETH_CON_INFSEL_Msk \ - (0x4000000UL) /*!< ETH0_CON ETH0_CON: INFSEL (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'ETH' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------- ETH_MAC_CONFIGURATION --------------------------- */ -#define ETH_MAC_CONFIGURATION_PRELEN_Pos \ - (0UL) /*!< ETH MAC_CONFIGURATION: PRELEN (Bit 0) */ -#define ETH_MAC_CONFIGURATION_PRELEN_Msk \ - (0x3UL) /*!< ETH MAC_CONFIGURATION: PRELEN (Bitfield-Mask: 0x03) */ -#define ETH_MAC_CONFIGURATION_RE_Pos \ - (2UL) /*!< ETH MAC_CONFIGURATION: RE (Bit 2) */ -#define ETH_MAC_CONFIGURATION_RE_Msk \ - (0x4UL) /*!< ETH MAC_CONFIGURATION: RE (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_TE_Pos \ - (3UL) /*!< ETH MAC_CONFIGURATION: TE (Bit 3) */ -#define ETH_MAC_CONFIGURATION_TE_Msk \ - (0x8UL) /*!< ETH MAC_CONFIGURATION: TE (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_DC_Pos \ - (4UL) /*!< ETH MAC_CONFIGURATION: DC (Bit 4) */ -#define ETH_MAC_CONFIGURATION_DC_Msk \ - (0x10UL) /*!< ETH MAC_CONFIGURATION: DC (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_BL_Pos \ - (5UL) /*!< ETH MAC_CONFIGURATION: BL (Bit 5) */ -#define ETH_MAC_CONFIGURATION_BL_Msk \ - (0x60UL) /*!< ETH MAC_CONFIGURATION: BL (Bitfield-Mask: 0x03) */ -#define ETH_MAC_CONFIGURATION_ACS_Pos \ - (7UL) /*!< ETH MAC_CONFIGURATION: ACS (Bit 7) */ -#define ETH_MAC_CONFIGURATION_ACS_Msk \ - (0x80UL) /*!< ETH MAC_CONFIGURATION: ACS (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_DR_Pos \ - (9UL) /*!< ETH MAC_CONFIGURATION: DR (Bit 9) */ -#define ETH_MAC_CONFIGURATION_DR_Msk \ - (0x200UL) /*!< ETH MAC_CONFIGURATION: DR (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_IPC_Pos \ - (10UL) /*!< ETH MAC_CONFIGURATION: IPC (Bit 10) */ -#define ETH_MAC_CONFIGURATION_IPC_Msk \ - (0x400UL) /*!< ETH MAC_CONFIGURATION: IPC (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_DM_Pos \ - (11UL) /*!< ETH MAC_CONFIGURATION: DM (Bit 11) */ -#define ETH_MAC_CONFIGURATION_DM_Msk \ - (0x800UL) /*!< ETH MAC_CONFIGURATION: DM (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_LM_Pos \ - (12UL) /*!< ETH MAC_CONFIGURATION: LM (Bit 12) */ -#define ETH_MAC_CONFIGURATION_LM_Msk \ - (0x1000UL) /*!< ETH MAC_CONFIGURATION: LM (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_DO_Pos \ - (13UL) /*!< ETH MAC_CONFIGURATION: DO (Bit 13) */ -#define ETH_MAC_CONFIGURATION_DO_Msk \ - (0x2000UL) /*!< ETH MAC_CONFIGURATION: DO (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_FES_Pos \ - (14UL) /*!< ETH MAC_CONFIGURATION: FES (Bit 14) */ -#define ETH_MAC_CONFIGURATION_FES_Msk \ - (0x4000UL) /*!< ETH MAC_CONFIGURATION: FES (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_DCRS_Pos \ - (16UL) /*!< ETH MAC_CONFIGURATION: DCRS (Bit 16) */ -#define ETH_MAC_CONFIGURATION_DCRS_Msk \ - (0x10000UL) /*!< ETH MAC_CONFIGURATION: DCRS (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_IFG_Pos \ - (17UL) /*!< ETH MAC_CONFIGURATION: IFG (Bit 17) */ -#define ETH_MAC_CONFIGURATION_IFG_Msk \ - (0xe0000UL) /*!< ETH MAC_CONFIGURATION: IFG (Bitfield-Mask: 0x07) */ -#define ETH_MAC_CONFIGURATION_JE_Pos \ - (20UL) /*!< ETH MAC_CONFIGURATION: JE (Bit 20) */ -#define ETH_MAC_CONFIGURATION_JE_Msk \ - (0x100000UL) /*!< ETH MAC_CONFIGURATION: JE (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_BE_Pos \ - (21UL) /*!< ETH MAC_CONFIGURATION: BE (Bit 21) */ -#define ETH_MAC_CONFIGURATION_BE_Msk \ - (0x200000UL) /*!< ETH MAC_CONFIGURATION: BE (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_JD_Pos \ - (22UL) /*!< ETH MAC_CONFIGURATION: JD (Bit 22) */ -#define ETH_MAC_CONFIGURATION_JD_Msk \ - (0x400000UL) /*!< ETH MAC_CONFIGURATION: JD (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_WD_Pos \ - (23UL) /*!< ETH MAC_CONFIGURATION: WD (Bit 23) */ -#define ETH_MAC_CONFIGURATION_WD_Msk \ - (0x800000UL) /*!< ETH MAC_CONFIGURATION: WD (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_TC_Pos \ - (24UL) /*!< ETH MAC_CONFIGURATION: TC (Bit 24) */ -#define ETH_MAC_CONFIGURATION_TC_Msk \ - (0x1000000UL) /*!< ETH MAC_CONFIGURATION: TC (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_CST_Pos \ - (25UL) /*!< ETH MAC_CONFIGURATION: CST (Bit 25) */ -#define ETH_MAC_CONFIGURATION_CST_Msk \ - (0x2000000UL) /*!< ETH MAC_CONFIGURATION: CST (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_TWOKPE_Pos \ - (27UL) /*!< ETH MAC_CONFIGURATION: TWOKPE (Bit 27) */ -#define ETH_MAC_CONFIGURATION_TWOKPE_Msk \ - (0x8000000UL) /*!< ETH MAC_CONFIGURATION: TWOKPE (Bitfield-Mask: 0x01) */ -#define ETH_MAC_CONFIGURATION_SARC_Pos \ - (28UL) /*!< ETH MAC_CONFIGURATION: SARC (Bit 28) */ -#define ETH_MAC_CONFIGURATION_SARC_Msk \ - (0x70000000UL) /*!< ETH MAC_CONFIGURATION: SARC (Bitfield-Mask: 0x07) */ - -/* ---------------------------- ETH_MAC_FRAME_FILTER ---------------------------- */ -#define ETH_MAC_FRAME_FILTER_PR_Pos \ - (0UL) /*!< ETH MAC_FRAME_FILTER: PR (Bit 0) */ -#define ETH_MAC_FRAME_FILTER_PR_Msk \ - (0x1UL) /*!< ETH MAC_FRAME_FILTER: PR (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_HUC_Pos \ - (1UL) /*!< ETH MAC_FRAME_FILTER: HUC (Bit 1) */ -#define ETH_MAC_FRAME_FILTER_HUC_Msk \ - (0x2UL) /*!< ETH MAC_FRAME_FILTER: HUC (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_HMC_Pos \ - (2UL) /*!< ETH MAC_FRAME_FILTER: HMC (Bit 2) */ -#define ETH_MAC_FRAME_FILTER_HMC_Msk \ - (0x4UL) /*!< ETH MAC_FRAME_FILTER: HMC (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_DAIF_Pos \ - (3UL) /*!< ETH MAC_FRAME_FILTER: DAIF (Bit 3) */ -#define ETH_MAC_FRAME_FILTER_DAIF_Msk \ - (0x8UL) /*!< ETH MAC_FRAME_FILTER: DAIF (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_PM_Pos \ - (4UL) /*!< ETH MAC_FRAME_FILTER: PM (Bit 4) */ -#define ETH_MAC_FRAME_FILTER_PM_Msk \ - (0x10UL) /*!< ETH MAC_FRAME_FILTER: PM (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_DBF_Pos \ - (5UL) /*!< ETH MAC_FRAME_FILTER: DBF (Bit 5) */ -#define ETH_MAC_FRAME_FILTER_DBF_Msk \ - (0x20UL) /*!< ETH MAC_FRAME_FILTER: DBF (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_PCF_Pos \ - (6UL) /*!< ETH MAC_FRAME_FILTER: PCF (Bit 6) */ -#define ETH_MAC_FRAME_FILTER_PCF_Msk \ - (0xc0UL) /*!< ETH MAC_FRAME_FILTER: PCF (Bitfield-Mask: 0x03) */ -#define ETH_MAC_FRAME_FILTER_SAIF_Pos \ - (8UL) /*!< ETH MAC_FRAME_FILTER: SAIF (Bit 8) */ -#define ETH_MAC_FRAME_FILTER_SAIF_Msk \ - (0x100UL) /*!< ETH MAC_FRAME_FILTER: SAIF (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_SAF_Pos \ - (9UL) /*!< ETH MAC_FRAME_FILTER: SAF (Bit 9) */ -#define ETH_MAC_FRAME_FILTER_SAF_Msk \ - (0x200UL) /*!< ETH MAC_FRAME_FILTER: SAF (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_HPF_Pos \ - (10UL) /*!< ETH MAC_FRAME_FILTER: HPF (Bit 10) */ -#define ETH_MAC_FRAME_FILTER_HPF_Msk \ - (0x400UL) /*!< ETH MAC_FRAME_FILTER: HPF (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_VTFE_Pos \ - (16UL) /*!< ETH MAC_FRAME_FILTER: VTFE (Bit 16) */ -#define ETH_MAC_FRAME_FILTER_VTFE_Msk \ - (0x10000UL) /*!< ETH MAC_FRAME_FILTER: VTFE (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_IPFE_Pos \ - (20UL) /*!< ETH MAC_FRAME_FILTER: IPFE (Bit 20) */ -#define ETH_MAC_FRAME_FILTER_IPFE_Msk \ - (0x100000UL) /*!< ETH MAC_FRAME_FILTER: IPFE (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_DNTU_Pos \ - (21UL) /*!< ETH MAC_FRAME_FILTER: DNTU (Bit 21) */ -#define ETH_MAC_FRAME_FILTER_DNTU_Msk \ - (0x200000UL) /*!< ETH MAC_FRAME_FILTER: DNTU (Bitfield-Mask: 0x01) */ -#define ETH_MAC_FRAME_FILTER_RA_Pos \ - (31UL) /*!< ETH MAC_FRAME_FILTER: RA (Bit 31) */ -#define ETH_MAC_FRAME_FILTER_RA_Msk \ - (0x80000000UL) /*!< ETH MAC_FRAME_FILTER: RA (Bitfield-Mask: 0x01) */ - -/* ----------------------------- ETH_HASH_TABLE_HIGH ---------------------------- */ -#define ETH_HASH_TABLE_HIGH_HTH_Pos \ - (0UL) /*!< ETH HASH_TABLE_HIGH: HTH (Bit 0) */ -#define ETH_HASH_TABLE_HIGH_HTH_Msk \ - (0xffffffffUL) /*!< ETH HASH_TABLE_HIGH: HTH (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- ETH_HASH_TABLE_LOW ----------------------------- */ -#define ETH_HASH_TABLE_LOW_HTL_Pos \ - (0UL) /*!< ETH HASH_TABLE_LOW: HTL (Bit 0) */ -#define ETH_HASH_TABLE_LOW_HTL_Msk \ - (0xffffffffUL) /*!< ETH HASH_TABLE_LOW: HTL (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ ETH_GMII_ADDRESS ------------------------------ */ -#define ETH_GMII_ADDRESS_MB_Pos \ - (0UL) /*!< ETH GMII_ADDRESS: MB (Bit 0) */ -#define ETH_GMII_ADDRESS_MB_Msk \ - (0x1UL) /*!< ETH GMII_ADDRESS: MB (Bitfield-Mask: 0x01) */ -#define ETH_GMII_ADDRESS_MW_Pos \ - (1UL) /*!< ETH GMII_ADDRESS: MW (Bit 1) */ -#define ETH_GMII_ADDRESS_MW_Msk \ - (0x2UL) /*!< ETH GMII_ADDRESS: MW (Bitfield-Mask: 0x01) */ -#define ETH_GMII_ADDRESS_CR_Pos \ - (2UL) /*!< ETH GMII_ADDRESS: CR (Bit 2) */ -#define ETH_GMII_ADDRESS_CR_Msk \ - (0x3cUL) /*!< ETH GMII_ADDRESS: CR (Bitfield-Mask: 0x0f) */ -#define ETH_GMII_ADDRESS_MR_Pos \ - (6UL) /*!< ETH GMII_ADDRESS: MR (Bit 6) */ -#define ETH_GMII_ADDRESS_MR_Msk \ - (0x7c0UL) /*!< ETH GMII_ADDRESS: MR (Bitfield-Mask: 0x1f) */ -#define ETH_GMII_ADDRESS_PA_Pos \ - (11UL) /*!< ETH GMII_ADDRESS: PA (Bit 11) */ -#define ETH_GMII_ADDRESS_PA_Msk \ - (0xf800UL) /*!< ETH GMII_ADDRESS: PA (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- ETH_GMII_DATA ------------------------------- */ -#define ETH_GMII_DATA_MD_Pos \ - (0UL) /*!< ETH GMII_DATA: MD (Bit 0) */ -#define ETH_GMII_DATA_MD_Msk \ - (0xffffUL) /*!< ETH GMII_DATA: MD (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ ETH_FLOW_CONTROL ------------------------------ */ -#define ETH_FLOW_CONTROL_FCA_BPA_Pos \ - (0UL) /*!< ETH FLOW_CONTROL: FCA_BPA (Bit 0) */ -#define ETH_FLOW_CONTROL_FCA_BPA_Msk \ - (0x1UL) /*!< ETH FLOW_CONTROL: FCA_BPA (Bitfield-Mask: 0x01) */ -#define ETH_FLOW_CONTROL_TFE_Pos \ - (1UL) /*!< ETH FLOW_CONTROL: TFE (Bit 1) */ -#define ETH_FLOW_CONTROL_TFE_Msk \ - (0x2UL) /*!< ETH FLOW_CONTROL: TFE (Bitfield-Mask: 0x01) */ -#define ETH_FLOW_CONTROL_RFE_Pos \ - (2UL) /*!< ETH FLOW_CONTROL: RFE (Bit 2) */ -#define ETH_FLOW_CONTROL_RFE_Msk \ - (0x4UL) /*!< ETH FLOW_CONTROL: RFE (Bitfield-Mask: 0x01) */ -#define ETH_FLOW_CONTROL_UP_Pos \ - (3UL) /*!< ETH FLOW_CONTROL: UP (Bit 3) */ -#define ETH_FLOW_CONTROL_UP_Msk \ - (0x8UL) /*!< ETH FLOW_CONTROL: UP (Bitfield-Mask: 0x01) */ -#define ETH_FLOW_CONTROL_PLT_Pos \ - (4UL) /*!< ETH FLOW_CONTROL: PLT (Bit 4) */ -#define ETH_FLOW_CONTROL_PLT_Msk \ - (0x30UL) /*!< ETH FLOW_CONTROL: PLT (Bitfield-Mask: 0x03) */ -#define ETH_FLOW_CONTROL_DZPQ_Pos \ - (7UL) /*!< ETH FLOW_CONTROL: DZPQ (Bit 7) */ -#define ETH_FLOW_CONTROL_DZPQ_Msk \ - (0x80UL) /*!< ETH FLOW_CONTROL: DZPQ (Bitfield-Mask: 0x01) */ -#define ETH_FLOW_CONTROL_PT_Pos \ - (16UL) /*!< ETH FLOW_CONTROL: PT (Bit 16) */ -#define ETH_FLOW_CONTROL_PT_Msk \ - (0xffff0000UL) /*!< ETH FLOW_CONTROL: PT (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- ETH_VLAN_TAG -------------------------------- */ -#define ETH_VLAN_TAG_VL_Pos \ - (0UL) /*!< ETH VLAN_TAG: VL (Bit 0) */ -#define ETH_VLAN_TAG_VL_Msk \ - (0xffffUL) /*!< ETH VLAN_TAG: VL (Bitfield-Mask: 0xffff) */ -#define ETH_VLAN_TAG_ETV_Pos \ - (16UL) /*!< ETH VLAN_TAG: ETV (Bit 16) */ -#define ETH_VLAN_TAG_ETV_Msk \ - (0x10000UL) /*!< ETH VLAN_TAG: ETV (Bitfield-Mask: 0x01) */ -#define ETH_VLAN_TAG_VTIM_Pos \ - (17UL) /*!< ETH VLAN_TAG: VTIM (Bit 17) */ -#define ETH_VLAN_TAG_VTIM_Msk \ - (0x20000UL) /*!< ETH VLAN_TAG: VTIM (Bitfield-Mask: 0x01) */ -#define ETH_VLAN_TAG_ESVL_Pos \ - (18UL) /*!< ETH VLAN_TAG: ESVL (Bit 18) */ -#define ETH_VLAN_TAG_ESVL_Msk \ - (0x40000UL) /*!< ETH VLAN_TAG: ESVL (Bitfield-Mask: 0x01) */ -#define ETH_VLAN_TAG_VTHM_Pos \ - (19UL) /*!< ETH VLAN_TAG: VTHM (Bit 19) */ -#define ETH_VLAN_TAG_VTHM_Msk \ - (0x80000UL) /*!< ETH VLAN_TAG: VTHM (Bitfield-Mask: 0x01) */ - -/* --------------------------------- ETH_VERSION -------------------------------- */ -#define ETH_VERSION_SNPSVER_Pos \ - (0UL) /*!< ETH VERSION: SNPSVER (Bit 0) */ -#define ETH_VERSION_SNPSVER_Msk \ - (0xffUL) /*!< ETH VERSION: SNPSVER (Bitfield-Mask: 0xff) */ -#define ETH_VERSION_USERVER_Pos \ - (8UL) /*!< ETH VERSION: USERVER (Bit 8) */ -#define ETH_VERSION_USERVER_Msk \ - (0xff00UL) /*!< ETH VERSION: USERVER (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- ETH_DEBUG --------------------------------- */ -#define ETH_DEBUG_RPESTS_Pos \ - (0UL) /*!< ETH DEBUG: RPESTS (Bit 0) */ -#define ETH_DEBUG_RPESTS_Msk \ - (0x1UL) /*!< ETH DEBUG: RPESTS (Bitfield-Mask: 0x01) */ -#define ETH_DEBUG_RFCFCSTS_Pos \ - (1UL) /*!< ETH DEBUG: RFCFCSTS (Bit 1) */ -#define ETH_DEBUG_RFCFCSTS_Msk \ - (0x6UL) /*!< ETH DEBUG: RFCFCSTS (Bitfield-Mask: 0x03) */ -#define ETH_DEBUG_RWCSTS_Pos \ - (4UL) /*!< ETH DEBUG: RWCSTS (Bit 4) */ -#define ETH_DEBUG_RWCSTS_Msk \ - (0x10UL) /*!< ETH DEBUG: RWCSTS (Bitfield-Mask: 0x01) */ -#define ETH_DEBUG_RRCSTS_Pos \ - (5UL) /*!< ETH DEBUG: RRCSTS (Bit 5) */ -#define ETH_DEBUG_RRCSTS_Msk \ - (0x60UL) /*!< ETH DEBUG: RRCSTS (Bitfield-Mask: 0x03) */ -#define ETH_DEBUG_RXFSTS_Pos \ - (8UL) /*!< ETH DEBUG: RXFSTS (Bit 8) */ -#define ETH_DEBUG_RXFSTS_Msk \ - (0x300UL) /*!< ETH DEBUG: RXFSTS (Bitfield-Mask: 0x03) */ -#define ETH_DEBUG_TPESTS_Pos \ - (16UL) /*!< ETH DEBUG: TPESTS (Bit 16) */ -#define ETH_DEBUG_TPESTS_Msk \ - (0x10000UL) /*!< ETH DEBUG: TPESTS (Bitfield-Mask: 0x01) */ -#define ETH_DEBUG_TFCSTS_Pos \ - (17UL) /*!< ETH DEBUG: TFCSTS (Bit 17) */ -#define ETH_DEBUG_TFCSTS_Msk \ - (0x60000UL) /*!< ETH DEBUG: TFCSTS (Bitfield-Mask: 0x03) */ -#define ETH_DEBUG_TXPAUSED_Pos \ - (19UL) /*!< ETH DEBUG: TXPAUSED (Bit 19) */ -#define ETH_DEBUG_TXPAUSED_Msk \ - (0x80000UL) /*!< ETH DEBUG: TXPAUSED (Bitfield-Mask: 0x01) */ -#define ETH_DEBUG_TRCSTS_Pos \ - (20UL) /*!< ETH DEBUG: TRCSTS (Bit 20) */ -#define ETH_DEBUG_TRCSTS_Msk \ - (0x300000UL) /*!< ETH DEBUG: TRCSTS (Bitfield-Mask: 0x03) */ -#define ETH_DEBUG_TWCSTS_Pos \ - (22UL) /*!< ETH DEBUG: TWCSTS (Bit 22) */ -#define ETH_DEBUG_TWCSTS_Msk \ - (0x400000UL) /*!< ETH DEBUG: TWCSTS (Bitfield-Mask: 0x01) */ -#define ETH_DEBUG_TXFSTS_Pos \ - (24UL) /*!< ETH DEBUG: TXFSTS (Bit 24) */ -#define ETH_DEBUG_TXFSTS_Msk \ - (0x1000000UL) /*!< ETH DEBUG: TXFSTS (Bitfield-Mask: 0x01) */ -#define ETH_DEBUG_TXSTSFSTS_Pos \ - (25UL) /*!< ETH DEBUG: TXSTSFSTS (Bit 25) */ -#define ETH_DEBUG_TXSTSFSTS_Msk \ - (0x2000000UL) /*!< ETH DEBUG: TXSTSFSTS (Bitfield-Mask: 0x01) */ - -/* ----------------------- ETH_REMOTE_WAKE_UP_FRAME_FILTER ---------------------- */ -#define ETH_REMOTE_WAKE_UP_FRAME_FILTER_WKUPFRMFTR_Pos \ - (0UL) /*!< ETH REMOTE_WAKE_UP_FRAME_FILTER: WKUPFRMFTR (Bit 0) */ -#define ETH_REMOTE_WAKE_UP_FRAME_FILTER_WKUPFRMFTR_Msk \ - (0xffffffffUL) /*!< ETH REMOTE_WAKE_UP_FRAME_FILTER: WKUPFRMFTR (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_PMT_CONTROL_STATUS --------------------------- */ -#define ETH_PMT_CONTROL_STATUS_PWRDWN_Pos \ - (0UL) /*!< ETH PMT_CONTROL_STATUS: PWRDWN (Bit 0) */ -#define ETH_PMT_CONTROL_STATUS_PWRDWN_Msk \ - (0x1UL) /*!< ETH PMT_CONTROL_STATUS: PWRDWN (Bitfield-Mask: 0x01) */ -#define ETH_PMT_CONTROL_STATUS_MGKPKTEN_Pos \ - (1UL) /*!< ETH PMT_CONTROL_STATUS: MGKPKTEN (Bit 1) */ -#define ETH_PMT_CONTROL_STATUS_MGKPKTEN_Msk \ - (0x2UL) /*!< ETH PMT_CONTROL_STATUS: MGKPKTEN (Bitfield-Mask: 0x01) */ -#define ETH_PMT_CONTROL_STATUS_RWKPKTEN_Pos \ - (2UL) /*!< ETH PMT_CONTROL_STATUS: RWKPKTEN (Bit 2) */ -#define ETH_PMT_CONTROL_STATUS_RWKPKTEN_Msk \ - (0x4UL) /*!< ETH PMT_CONTROL_STATUS: RWKPKTEN (Bitfield-Mask: 0x01) */ -#define ETH_PMT_CONTROL_STATUS_MGKPRCVD_Pos \ - (5UL) /*!< ETH PMT_CONTROL_STATUS: MGKPRCVD (Bit 5) */ -#define ETH_PMT_CONTROL_STATUS_MGKPRCVD_Msk \ - (0x20UL) /*!< ETH PMT_CONTROL_STATUS: MGKPRCVD (Bitfield-Mask: 0x01) */ -#define ETH_PMT_CONTROL_STATUS_RWKPRCVD_Pos \ - (6UL) /*!< ETH PMT_CONTROL_STATUS: RWKPRCVD (Bit 6) */ -#define ETH_PMT_CONTROL_STATUS_RWKPRCVD_Msk \ - (0x40UL) /*!< ETH PMT_CONTROL_STATUS: RWKPRCVD (Bitfield-Mask: 0x01) */ -#define ETH_PMT_CONTROL_STATUS_GLBLUCAST_Pos \ - (9UL) /*!< ETH PMT_CONTROL_STATUS: GLBLUCAST (Bit 9) */ -#define ETH_PMT_CONTROL_STATUS_GLBLUCAST_Msk \ - (0x200UL) /*!< ETH PMT_CONTROL_STATUS: GLBLUCAST (Bitfield-Mask: 0x01) */ -#define ETH_PMT_CONTROL_STATUS_RWKFILTRST_Pos \ - (31UL) /*!< ETH PMT_CONTROL_STATUS: RWKFILTRST (Bit 31) */ -#define ETH_PMT_CONTROL_STATUS_RWKFILTRST_Msk \ - (0x80000000UL) /*!< ETH PMT_CONTROL_STATUS: RWKFILTRST (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ETH_INTERRUPT_STATUS ---------------------------- */ -#define ETH_INTERRUPT_STATUS_PMTIS_Pos \ - (3UL) /*!< ETH INTERRUPT_STATUS: PMTIS (Bit 3) */ -#define ETH_INTERRUPT_STATUS_PMTIS_Msk \ - (0x8UL) /*!< ETH INTERRUPT_STATUS: PMTIS (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_STATUS_MMCIS_Pos \ - (4UL) /*!< ETH INTERRUPT_STATUS: MMCIS (Bit 4) */ -#define ETH_INTERRUPT_STATUS_MMCIS_Msk \ - (0x10UL) /*!< ETH INTERRUPT_STATUS: MMCIS (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_STATUS_MMCRXIS_Pos \ - (5UL) /*!< ETH INTERRUPT_STATUS: MMCRXIS (Bit 5) */ -#define ETH_INTERRUPT_STATUS_MMCRXIS_Msk \ - (0x20UL) /*!< ETH INTERRUPT_STATUS: MMCRXIS (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_STATUS_MMCTXIS_Pos \ - (6UL) /*!< ETH INTERRUPT_STATUS: MMCTXIS (Bit 6) */ -#define ETH_INTERRUPT_STATUS_MMCTXIS_Msk \ - (0x40UL) /*!< ETH INTERRUPT_STATUS: MMCTXIS (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_STATUS_MMCRXIPIS_Pos \ - (7UL) /*!< ETH INTERRUPT_STATUS: MMCRXIPIS (Bit 7) */ -#define ETH_INTERRUPT_STATUS_MMCRXIPIS_Msk \ - (0x80UL) /*!< ETH INTERRUPT_STATUS: MMCRXIPIS (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_STATUS_TSIS_Pos \ - (9UL) /*!< ETH INTERRUPT_STATUS: TSIS (Bit 9) */ -#define ETH_INTERRUPT_STATUS_TSIS_Msk \ - (0x200UL) /*!< ETH INTERRUPT_STATUS: TSIS (Bitfield-Mask: 0x01) */ - -/* ----------------------------- ETH_INTERRUPT_MASK ----------------------------- */ -#define ETH_INTERRUPT_MASK_PMTIM_Pos \ - (3UL) /*!< ETH INTERRUPT_MASK: PMTIM (Bit 3) */ -#define ETH_INTERRUPT_MASK_PMTIM_Msk \ - (0x8UL) /*!< ETH INTERRUPT_MASK: PMTIM (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_MASK_TSIM_Pos \ - (9UL) /*!< ETH INTERRUPT_MASK: TSIM (Bit 9) */ -#define ETH_INTERRUPT_MASK_TSIM_Msk \ - (0x200UL) /*!< ETH INTERRUPT_MASK: TSIM (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ETH_MAC_ADDRESS0_HIGH --------------------------- */ -#define ETH_MAC_ADDRESS0_HIGH_ADDRHI_Pos \ - (0UL) /*!< ETH MAC_ADDRESS0_HIGH: ADDRHI (Bit 0) */ -#define ETH_MAC_ADDRESS0_HIGH_ADDRHI_Msk \ - (0xffffUL) /*!< ETH MAC_ADDRESS0_HIGH: ADDRHI (Bitfield-Mask: 0xffff) */ -#define ETH_MAC_ADDRESS0_HIGH_AE_Pos \ - (31UL) /*!< ETH MAC_ADDRESS0_HIGH: AE (Bit 31) */ -#define ETH_MAC_ADDRESS0_HIGH_AE_Msk \ - (0x80000000UL) /*!< ETH MAC_ADDRESS0_HIGH: AE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ETH_MAC_ADDRESS0_LOW ---------------------------- */ -#define ETH_MAC_ADDRESS0_LOW_ADDRLO_Pos \ - (0UL) /*!< ETH MAC_ADDRESS0_LOW: ADDRLO (Bit 0) */ -#define ETH_MAC_ADDRESS0_LOW_ADDRLO_Msk \ - (0xffffffffUL) /*!< ETH MAC_ADDRESS0_LOW: ADDRLO (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- ETH_MAC_ADDRESS1_HIGH --------------------------- */ -#define ETH_MAC_ADDRESS1_HIGH_ADDRHI_Pos \ - (0UL) /*!< ETH MAC_ADDRESS1_HIGH: ADDRHI (Bit 0) */ -#define ETH_MAC_ADDRESS1_HIGH_ADDRHI_Msk \ - (0xffffUL) /*!< ETH MAC_ADDRESS1_HIGH: ADDRHI (Bitfield-Mask: 0xffff) */ -#define ETH_MAC_ADDRESS1_HIGH_MBC_Pos \ - (24UL) /*!< ETH MAC_ADDRESS1_HIGH: MBC (Bit 24) */ -#define ETH_MAC_ADDRESS1_HIGH_MBC_Msk \ - (0x3f000000UL) /*!< ETH MAC_ADDRESS1_HIGH: MBC (Bitfield-Mask: 0x3f) */ -#define ETH_MAC_ADDRESS1_HIGH_SA_Pos \ - (30UL) /*!< ETH MAC_ADDRESS1_HIGH: SA (Bit 30) */ -#define ETH_MAC_ADDRESS1_HIGH_SA_Msk \ - (0x40000000UL) /*!< ETH MAC_ADDRESS1_HIGH: SA (Bitfield-Mask: 0x01) */ -#define ETH_MAC_ADDRESS1_HIGH_AE_Pos \ - (31UL) /*!< ETH MAC_ADDRESS1_HIGH: AE (Bit 31) */ -#define ETH_MAC_ADDRESS1_HIGH_AE_Msk \ - (0x80000000UL) /*!< ETH MAC_ADDRESS1_HIGH: AE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ETH_MAC_ADDRESS1_LOW ---------------------------- */ -#define ETH_MAC_ADDRESS1_LOW_ADDRLO_Pos \ - (0UL) /*!< ETH MAC_ADDRESS1_LOW: ADDRLO (Bit 0) */ -#define ETH_MAC_ADDRESS1_LOW_ADDRLO_Msk \ - (0xffffffffUL) /*!< ETH MAC_ADDRESS1_LOW: ADDRLO (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- ETH_MAC_ADDRESS2_HIGH --------------------------- */ -#define ETH_MAC_ADDRESS2_HIGH_ADDRHI_Pos \ - (0UL) /*!< ETH MAC_ADDRESS2_HIGH: ADDRHI (Bit 0) */ -#define ETH_MAC_ADDRESS2_HIGH_ADDRHI_Msk \ - (0xffffUL) /*!< ETH MAC_ADDRESS2_HIGH: ADDRHI (Bitfield-Mask: 0xffff) */ -#define ETH_MAC_ADDRESS2_HIGH_MBC_Pos \ - (24UL) /*!< ETH MAC_ADDRESS2_HIGH: MBC (Bit 24) */ -#define ETH_MAC_ADDRESS2_HIGH_MBC_Msk \ - (0x3f000000UL) /*!< ETH MAC_ADDRESS2_HIGH: MBC (Bitfield-Mask: 0x3f) */ -#define ETH_MAC_ADDRESS2_HIGH_SA_Pos \ - (30UL) /*!< ETH MAC_ADDRESS2_HIGH: SA (Bit 30) */ -#define ETH_MAC_ADDRESS2_HIGH_SA_Msk \ - (0x40000000UL) /*!< ETH MAC_ADDRESS2_HIGH: SA (Bitfield-Mask: 0x01) */ -#define ETH_MAC_ADDRESS2_HIGH_AE_Pos \ - (31UL) /*!< ETH MAC_ADDRESS2_HIGH: AE (Bit 31) */ -#define ETH_MAC_ADDRESS2_HIGH_AE_Msk \ - (0x80000000UL) /*!< ETH MAC_ADDRESS2_HIGH: AE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ETH_MAC_ADDRESS2_LOW ---------------------------- */ -#define ETH_MAC_ADDRESS2_LOW_ADDRLO_Pos \ - (0UL) /*!< ETH MAC_ADDRESS2_LOW: ADDRLO (Bit 0) */ -#define ETH_MAC_ADDRESS2_LOW_ADDRLO_Msk \ - (0xffffffffUL) /*!< ETH MAC_ADDRESS2_LOW: ADDRLO (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- ETH_MAC_ADDRESS3_HIGH --------------------------- */ -#define ETH_MAC_ADDRESS3_HIGH_ADDRHI_Pos \ - (0UL) /*!< ETH MAC_ADDRESS3_HIGH: ADDRHI (Bit 0) */ -#define ETH_MAC_ADDRESS3_HIGH_ADDRHI_Msk \ - (0xffffUL) /*!< ETH MAC_ADDRESS3_HIGH: ADDRHI (Bitfield-Mask: 0xffff) */ -#define ETH_MAC_ADDRESS3_HIGH_MBC_Pos \ - (24UL) /*!< ETH MAC_ADDRESS3_HIGH: MBC (Bit 24) */ -#define ETH_MAC_ADDRESS3_HIGH_MBC_Msk \ - (0x3f000000UL) /*!< ETH MAC_ADDRESS3_HIGH: MBC (Bitfield-Mask: 0x3f) */ -#define ETH_MAC_ADDRESS3_HIGH_SA_Pos \ - (30UL) /*!< ETH MAC_ADDRESS3_HIGH: SA (Bit 30) */ -#define ETH_MAC_ADDRESS3_HIGH_SA_Msk \ - (0x40000000UL) /*!< ETH MAC_ADDRESS3_HIGH: SA (Bitfield-Mask: 0x01) */ -#define ETH_MAC_ADDRESS3_HIGH_AE_Pos \ - (31UL) /*!< ETH MAC_ADDRESS3_HIGH: AE (Bit 31) */ -#define ETH_MAC_ADDRESS3_HIGH_AE_Msk \ - (0x80000000UL) /*!< ETH MAC_ADDRESS3_HIGH: AE (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ETH_MAC_ADDRESS3_LOW ---------------------------- */ -#define ETH_MAC_ADDRESS3_LOW_ADDRLO_Pos \ - (0UL) /*!< ETH MAC_ADDRESS3_LOW: ADDRLO (Bit 0) */ -#define ETH_MAC_ADDRESS3_LOW_ADDRLO_Msk \ - (0xffffffffUL) /*!< ETH MAC_ADDRESS3_LOW: ADDRLO (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- ETH_MMC_CONTROL ------------------------------ */ -#define ETH_MMC_CONTROL_CNTRST_Pos \ - (0UL) /*!< ETH MMC_CONTROL: CNTRST (Bit 0) */ -#define ETH_MMC_CONTROL_CNTRST_Msk \ - (0x1UL) /*!< ETH MMC_CONTROL: CNTRST (Bitfield-Mask: 0x01) */ -#define ETH_MMC_CONTROL_CNTSTOPRO_Pos \ - (1UL) /*!< ETH MMC_CONTROL: CNTSTOPRO (Bit 1) */ -#define ETH_MMC_CONTROL_CNTSTOPRO_Msk \ - (0x2UL) /*!< ETH MMC_CONTROL: CNTSTOPRO (Bitfield-Mask: 0x01) */ -#define ETH_MMC_CONTROL_RSTONRD_Pos \ - (2UL) /*!< ETH MMC_CONTROL: RSTONRD (Bit 2) */ -#define ETH_MMC_CONTROL_RSTONRD_Msk \ - (0x4UL) /*!< ETH MMC_CONTROL: RSTONRD (Bitfield-Mask: 0x01) */ -#define ETH_MMC_CONTROL_CNTFREEZ_Pos \ - (3UL) /*!< ETH MMC_CONTROL: CNTFREEZ (Bit 3) */ -#define ETH_MMC_CONTROL_CNTFREEZ_Msk \ - (0x8UL) /*!< ETH MMC_CONTROL: CNTFREEZ (Bitfield-Mask: 0x01) */ -#define ETH_MMC_CONTROL_CNTPRST_Pos \ - (4UL) /*!< ETH MMC_CONTROL: CNTPRST (Bit 4) */ -#define ETH_MMC_CONTROL_CNTPRST_Msk \ - (0x10UL) /*!< ETH MMC_CONTROL: CNTPRST (Bitfield-Mask: 0x01) */ -#define ETH_MMC_CONTROL_CNTPRSTLVL_Pos \ - (5UL) /*!< ETH MMC_CONTROL: CNTPRSTLVL (Bit 5) */ -#define ETH_MMC_CONTROL_CNTPRSTLVL_Msk \ - (0x20UL) /*!< ETH MMC_CONTROL: CNTPRSTLVL (Bitfield-Mask: 0x01) */ -#define ETH_MMC_CONTROL_UCDBC_Pos \ - (8UL) /*!< ETH MMC_CONTROL: UCDBC (Bit 8) */ -#define ETH_MMC_CONTROL_UCDBC_Msk \ - (0x100UL) /*!< ETH MMC_CONTROL: UCDBC (Bitfield-Mask: 0x01) */ - -/* -------------------------- ETH_MMC_RECEIVE_INTERRUPT ------------------------- */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXGBFRMIS_Pos \ - (0UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXGBFRMIS (Bit 0) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXGBFRMIS_Msk \ - (0x1UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXGBFRMIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXGBOCTIS_Pos \ - (1UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXGBOCTIS (Bit 1) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXGBOCTIS_Msk \ - (0x2UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXGBOCTIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXGOCTIS_Pos \ - (2UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXGOCTIS (Bit 2) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXGOCTIS_Msk \ - (0x4UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXGOCTIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXBCGFIS_Pos \ - (3UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXBCGFIS (Bit 3) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXBCGFIS_Msk \ - (0x8UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXBCGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXMCGFIS_Pos \ - (4UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXMCGFIS (Bit 4) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXMCGFIS_Msk \ - (0x10UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXMCGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXCRCERFIS_Pos \ - (5UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXCRCERFIS (Bit 5) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXCRCERFIS_Msk \ - (0x20UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXCRCERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXALGNERFIS_Pos \ - (6UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXALGNERFIS (Bit 6) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXALGNERFIS_Msk \ - (0x40UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXALGNERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXRUNTFIS_Pos \ - (7UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXRUNTFIS (Bit 7) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXRUNTFIS_Msk \ - (0x80UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXRUNTFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXJABERFIS_Pos \ - (8UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXJABERFIS (Bit 8) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXJABERFIS_Msk \ - (0x100UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXJABERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXUSIZEGFIS_Pos \ - (9UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXUSIZEGFIS (Bit 9) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXUSIZEGFIS_Msk \ - (0x200UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXUSIZEGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXOSIZEGFIS_Pos \ - (10UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXOSIZEGFIS (Bit 10) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXOSIZEGFIS_Msk \ - (0x400UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXOSIZEGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX64OCTGBFIS_Pos \ - (11UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX64OCTGBFIS (Bit 11) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX64OCTGBFIS_Msk \ - (0x800UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX64OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX65T127OCTGBFIS_Pos \ - (12UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX65T127OCTGBFIS (Bit 12) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX65T127OCTGBFIS_Msk \ - (0x1000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX65T127OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX128T255OCTGBFIS_Pos \ - (13UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX128T255OCTGBFIS (Bit 13) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX128T255OCTGBFIS_Msk \ - (0x2000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX128T255OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX256T511OCTGBFIS_Pos \ - (14UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX256T511OCTGBFIS (Bit 14) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX256T511OCTGBFIS_Msk \ - (0x4000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX256T511OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX512T1023OCTGBFIS_Pos \ - (15UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX512T1023OCTGBFIS (Bit 15) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX512T1023OCTGBFIS_Msk \ - (0x8000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX512T1023OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX1024TMAXOCTGBFIS_Pos \ - (16UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX1024TMAXOCTGBFIS (Bit 16) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RX1024TMAXOCTGBFIS_Msk \ - (0x10000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RX1024TMAXOCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXUCGFIS_Pos \ - (17UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXUCGFIS (Bit 17) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXUCGFIS_Msk \ - (0x20000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXUCGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXLENERFIS_Pos \ - (18UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXLENERFIS (Bit 18) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXLENERFIS_Msk \ - (0x40000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXLENERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXORANGEFIS_Pos \ - (19UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXORANGEFIS (Bit 19) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXORANGEFIS_Msk \ - (0x80000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXORANGEFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXPAUSFIS_Pos \ - (20UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXPAUSFIS (Bit 20) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXPAUSFIS_Msk \ - (0x100000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXPAUSFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXFOVFIS_Pos \ - (21UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXFOVFIS (Bit 21) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXFOVFIS_Msk \ - (0x200000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXFOVFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXVLANGBFIS_Pos \ - (22UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXVLANGBFIS (Bit 22) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXVLANGBFIS_Msk \ - (0x400000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXVLANGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXWDOGFIS_Pos \ - (23UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXWDOGFIS (Bit 23) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXWDOGFIS_Msk \ - (0x800000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXWDOGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXRCVERRFIS_Pos \ - (24UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXRCVERRFIS (Bit 24) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXRCVERRFIS_Msk \ - (0x1000000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXRCVERRFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXCTRLFIS_Pos \ - (25UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXCTRLFIS (Bit 25) */ -#define ETH_MMC_RECEIVE_INTERRUPT_RXCTRLFIS_Msk \ - (0x2000000UL) /*!< ETH MMC_RECEIVE_INTERRUPT: RXCTRLFIS (Bitfield-Mask: 0x01) */ - -/* ------------------------- ETH_MMC_TRANSMIT_INTERRUPT ------------------------- */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXGBOCTIS_Pos \ - (0UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXGBOCTIS (Bit 0) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXGBOCTIS_Msk \ - (0x1UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXGBOCTIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXGBFRMIS_Pos \ - (1UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXGBFRMIS (Bit 1) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXGBFRMIS_Msk \ - (0x2UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXGBFRMIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXBCGFIS_Pos \ - (2UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXBCGFIS (Bit 2) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXBCGFIS_Msk \ - (0x4UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXBCGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXMCGFIS_Pos \ - (3UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXMCGFIS (Bit 3) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXMCGFIS_Msk \ - (0x8UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXMCGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX64OCTGBFIS_Pos \ - (4UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX64OCTGBFIS (Bit 4) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX64OCTGBFIS_Msk \ - (0x10UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX64OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX65T127OCTGBFIS_Pos \ - (5UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX65T127OCTGBFIS (Bit 5) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX65T127OCTGBFIS_Msk \ - (0x20UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX65T127OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX128T255OCTGBFIS_Pos \ - (6UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX128T255OCTGBFIS (Bit 6) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX128T255OCTGBFIS_Msk \ - (0x40UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX128T255OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX256T511OCTGBFIS_Pos \ - (7UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX256T511OCTGBFIS (Bit 7) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX256T511OCTGBFIS_Msk \ - (0x80UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX256T511OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX512T1023OCTGBFIS_Pos \ - (8UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX512T1023OCTGBFIS (Bit 8) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX512T1023OCTGBFIS_Msk \ - (0x100UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX512T1023OCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX1024TMAXOCTGBFIS_Pos \ - (9UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX1024TMAXOCTGBFIS (Bit 9) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TX1024TMAXOCTGBFIS_Msk \ - (0x200UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TX1024TMAXOCTGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXUCGBFIS_Pos \ - (10UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXUCGBFIS (Bit 10) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXUCGBFIS_Msk \ - (0x400UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXUCGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXMCGBFIS_Pos \ - (11UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXMCGBFIS (Bit 11) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXMCGBFIS_Msk \ - (0x800UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXMCGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXBCGBFIS_Pos \ - (12UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXBCGBFIS (Bit 12) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXBCGBFIS_Msk \ - (0x1000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXBCGBFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXUFLOWERFIS_Pos \ - (13UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXUFLOWERFIS (Bit 13) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXUFLOWERFIS_Msk \ - (0x2000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXUFLOWERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXSCOLGFIS_Pos \ - (14UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXSCOLGFIS (Bit 14) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXSCOLGFIS_Msk \ - (0x4000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXSCOLGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXMCOLGFIS_Pos \ - (15UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXMCOLGFIS (Bit 15) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXMCOLGFIS_Msk \ - (0x8000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXMCOLGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXDEFFIS_Pos \ - (16UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXDEFFIS (Bit 16) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXDEFFIS_Msk \ - (0x10000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXDEFFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXLATCOLFIS_Pos \ - (17UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXLATCOLFIS (Bit 17) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXLATCOLFIS_Msk \ - (0x20000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXLATCOLFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXEXCOLFIS_Pos \ - (18UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXEXCOLFIS (Bit 18) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXEXCOLFIS_Msk \ - (0x40000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXEXCOLFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXCARERFIS_Pos \ - (19UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXCARERFIS (Bit 19) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXCARERFIS_Msk \ - (0x80000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXCARERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXGOCTIS_Pos \ - (20UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXGOCTIS (Bit 20) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXGOCTIS_Msk \ - (0x100000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXGOCTIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXGFRMIS_Pos \ - (21UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXGFRMIS (Bit 21) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXGFRMIS_Msk \ - (0x200000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXGFRMIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXEXDEFFIS_Pos \ - (22UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXEXDEFFIS (Bit 22) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXEXDEFFIS_Msk \ - (0x400000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXEXDEFFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXPAUSFIS_Pos \ - (23UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXPAUSFIS (Bit 23) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXPAUSFIS_Msk \ - (0x800000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXPAUSFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXVLANGFIS_Pos \ - (24UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXVLANGFIS (Bit 24) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXVLANGFIS_Msk \ - (0x1000000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXVLANGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXOSIZEGFIS_Pos \ - (25UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXOSIZEGFIS (Bit 25) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_TXOSIZEGFIS_Msk \ - (0x2000000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT: TXOSIZEGFIS (Bitfield-Mask: 0x01) */ - -/* ----------------------- ETH_MMC_RECEIVE_INTERRUPT_MASK ----------------------- */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXGBFRMIM_Pos \ - (0UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXGBFRMIM (Bit 0) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXGBFRMIM_Msk \ - (0x1UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXGBFRMIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXGBOCTIM_Pos \ - (1UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXGBOCTIM (Bit 1) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXGBOCTIM_Msk \ - (0x2UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXGBOCTIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXGOCTIM_Pos \ - (2UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXGOCTIM (Bit 2) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXGOCTIM_Msk \ - (0x4UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXGOCTIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXBCGFIM_Pos \ - (3UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXBCGFIM (Bit 3) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXBCGFIM_Msk \ - (0x8UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXBCGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXMCGFIM_Pos \ - (4UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXMCGFIM (Bit 4) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXMCGFIM_Msk \ - (0x10UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXMCGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXCRCERFIM_Pos \ - (5UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXCRCERFIM (Bit 5) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXCRCERFIM_Msk \ - (0x20UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXCRCERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXALGNERFIM_Pos \ - (6UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXALGNERFIM (Bit 6) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXALGNERFIM_Msk \ - (0x40UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXALGNERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXRUNTFIM_Pos \ - (7UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXRUNTFIM (Bit 7) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXRUNTFIM_Msk \ - (0x80UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXRUNTFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXJABERFIM_Pos \ - (8UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXJABERFIM (Bit 8) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXJABERFIM_Msk \ - (0x100UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXJABERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXUSIZEGFIM_Pos \ - (9UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXUSIZEGFIM (Bit 9) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXUSIZEGFIM_Msk \ - (0x200UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXUSIZEGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXOSIZEGFIM_Pos \ - (10UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXOSIZEGFIM (Bit 10) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXOSIZEGFIM_Msk \ - (0x400UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXOSIZEGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX64OCTGBFIM_Pos \ - (11UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX64OCTGBFIM (Bit 11) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX64OCTGBFIM_Msk \ - (0x800UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX64OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX65T127OCTGBFIM_Pos \ - (12UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX65T127OCTGBFIM (Bit 12) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX65T127OCTGBFIM_Msk \ - (0x1000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX65T127OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX128T255OCTGBFIM_Pos \ - (13UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX128T255OCTGBFIM (Bit 13) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX128T255OCTGBFIM_Msk \ - (0x2000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX128T255OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX256T511OCTGBFIM_Pos \ - (14UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX256T511OCTGBFIM (Bit 14) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX256T511OCTGBFIM_Msk \ - (0x4000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX256T511OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX512T1023OCTGBFIM_Pos \ - (15UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX512T1023OCTGBFIM (Bit 15) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX512T1023OCTGBFIM_Msk \ - (0x8000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX512T1023OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX1024TMAXOCTGBFIM_Pos \ - (16UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX1024TMAXOCTGBFIM (Bit 16) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RX1024TMAXOCTGBFIM_Msk \ - (0x10000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RX1024TMAXOCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXUCGFIM_Pos \ - (17UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXUCGFIM (Bit 17) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXUCGFIM_Msk \ - (0x20000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXUCGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXLENERFIM_Pos \ - (18UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXLENERFIM (Bit 18) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXLENERFIM_Msk \ - (0x40000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXLENERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXORANGEFIM_Pos \ - (19UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXORANGEFIM (Bit 19) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXORANGEFIM_Msk \ - (0x80000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXORANGEFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXPAUSFIM_Pos \ - (20UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXPAUSFIM (Bit 20) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXPAUSFIM_Msk \ - (0x100000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXPAUSFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXFOVFIM_Pos \ - (21UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXFOVFIM (Bit 21) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXFOVFIM_Msk \ - (0x200000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXFOVFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXVLANGBFIM_Pos \ - (22UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXVLANGBFIM (Bit 22) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXVLANGBFIM_Msk \ - (0x400000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXVLANGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXWDOGFIM_Pos \ - (23UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXWDOGFIM (Bit 23) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXWDOGFIM_Msk \ - (0x800000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXWDOGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXRCVERRFIM_Pos \ - (24UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXRCVERRFIM (Bit 24) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXRCVERRFIM_Msk \ - (0x1000000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXRCVERRFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXCTRLFIM_Pos \ - (25UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXCTRLFIM (Bit 25) */ -#define ETH_MMC_RECEIVE_INTERRUPT_MASK_RXCTRLFIM_Msk \ - (0x2000000UL) /*!< ETH MMC_RECEIVE_INTERRUPT_MASK: RXCTRLFIM (Bitfield-Mask: 0x01) */ - -/* ----------------------- ETH_MMC_TRANSMIT_INTERRUPT_MASK ---------------------- */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXGBOCTIM_Pos \ - (0UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXGBOCTIM (Bit 0) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXGBOCTIM_Msk \ - (0x1UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXGBOCTIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXGBFRMIM_Pos \ - (1UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXGBFRMIM (Bit 1) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXGBFRMIM_Msk \ - (0x2UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXGBFRMIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXBCGFIM_Pos \ - (2UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXBCGFIM (Bit 2) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXBCGFIM_Msk \ - (0x4UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXBCGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXMCGFIM_Pos \ - (3UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXMCGFIM (Bit 3) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXMCGFIM_Msk \ - (0x8UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXMCGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX64OCTGBFIM_Pos \ - (4UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX64OCTGBFIM (Bit 4) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX64OCTGBFIM_Msk \ - (0x10UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX64OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX65T127OCTGBFIM_Pos \ - (5UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX65T127OCTGBFIM (Bit 5) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX65T127OCTGBFIM_Msk \ - (0x20UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX65T127OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX128T255OCTGBFIM_Pos \ - (6UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX128T255OCTGBFIM (Bit 6) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX128T255OCTGBFIM_Msk \ - (0x40UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX128T255OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX256T511OCTGBFIM_Pos \ - (7UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX256T511OCTGBFIM (Bit 7) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX256T511OCTGBFIM_Msk \ - (0x80UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX256T511OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX512T1023OCTGBFIM_Pos \ - (8UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX512T1023OCTGBFIM (Bit 8) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX512T1023OCTGBFIM_Msk \ - (0x100UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX512T1023OCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX1024TMAXOCTGBFIM_Pos \ - (9UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX1024TMAXOCTGBFIM (Bit 9) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TX1024TMAXOCTGBFIM_Msk \ - (0x200UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TX1024TMAXOCTGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXUCGBFIM_Pos \ - (10UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXUCGBFIM (Bit 10) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXUCGBFIM_Msk \ - (0x400UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXUCGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXMCGBFIM_Pos \ - (11UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXMCGBFIM (Bit 11) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXMCGBFIM_Msk \ - (0x800UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXMCGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXBCGBFIM_Pos \ - (12UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXBCGBFIM (Bit 12) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXBCGBFIM_Msk \ - (0x1000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXBCGBFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXUFLOWERFIM_Pos \ - (13UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXUFLOWERFIM (Bit 13) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXUFLOWERFIM_Msk \ - (0x2000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXUFLOWERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXSCOLGFIM_Pos \ - (14UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXSCOLGFIM (Bit 14) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXSCOLGFIM_Msk \ - (0x4000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXSCOLGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXMCOLGFIM_Pos \ - (15UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXMCOLGFIM (Bit 15) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXMCOLGFIM_Msk \ - (0x8000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXMCOLGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXDEFFIM_Pos \ - (16UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXDEFFIM (Bit 16) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXDEFFIM_Msk \ - (0x10000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXDEFFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXLATCOLFIM_Pos \ - (17UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXLATCOLFIM (Bit 17) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXLATCOLFIM_Msk \ - (0x20000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXLATCOLFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXEXCOLFIM_Pos \ - (18UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXEXCOLFIM (Bit 18) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXEXCOLFIM_Msk \ - (0x40000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXEXCOLFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXCARERFIM_Pos \ - (19UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXCARERFIM (Bit 19) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXCARERFIM_Msk \ - (0x80000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXCARERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXGOCTIM_Pos \ - (20UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXGOCTIM (Bit 20) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXGOCTIM_Msk \ - (0x100000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXGOCTIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXGFRMIM_Pos \ - (21UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXGFRMIM (Bit 21) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXGFRMIM_Msk \ - (0x200000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXGFRMIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXEXDEFFIM_Pos \ - (22UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXEXDEFFIM (Bit 22) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXEXDEFFIM_Msk \ - (0x400000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXEXDEFFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXPAUSFIM_Pos \ - (23UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXPAUSFIM (Bit 23) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXPAUSFIM_Msk \ - (0x800000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXPAUSFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXVLANGFIM_Pos \ - (24UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXVLANGFIM (Bit 24) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXVLANGFIM_Msk \ - (0x1000000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXVLANGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXOSIZEGFIM_Pos \ - (25UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXOSIZEGFIM (Bit 25) */ -#define ETH_MMC_TRANSMIT_INTERRUPT_MASK_TXOSIZEGFIM_Msk \ - (0x2000000UL) /*!< ETH MMC_TRANSMIT_INTERRUPT_MASK: TXOSIZEGFIM (Bitfield-Mask: 0x01) */ - -/* ------------------------- ETH_TX_OCTET_COUNT_GOOD_BAD ------------------------ */ -#define ETH_TX_OCTET_COUNT_GOOD_BAD_TXOCTGB_Pos \ - (0UL) /*!< ETH TX_OCTET_COUNT_GOOD_BAD: TXOCTGB (Bit 0) */ -#define ETH_TX_OCTET_COUNT_GOOD_BAD_TXOCTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_OCTET_COUNT_GOOD_BAD: TXOCTGB (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_TX_FRAME_COUNT_GOOD_BAD ------------------------ */ -#define ETH_TX_FRAME_COUNT_GOOD_BAD_TXFRMGB_Pos \ - (0UL) /*!< ETH TX_FRAME_COUNT_GOOD_BAD: TXFRMGB (Bit 0) */ -#define ETH_TX_FRAME_COUNT_GOOD_BAD_TXFRMGB_Msk \ - (0xffffffffUL) /*!< ETH TX_FRAME_COUNT_GOOD_BAD: TXFRMGB (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_TX_BROADCAST_FRAMES_GOOD ------------------------ */ -#define ETH_TX_BROADCAST_FRAMES_GOOD_TXBCASTG_Pos \ - (0UL) /*!< ETH TX_BROADCAST_FRAMES_GOOD: TXBCASTG (Bit 0) */ -#define ETH_TX_BROADCAST_FRAMES_GOOD_TXBCASTG_Msk \ - (0xffffffffUL) /*!< ETH TX_BROADCAST_FRAMES_GOOD: TXBCASTG (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_TX_MULTICAST_FRAMES_GOOD ------------------------ */ -#define ETH_TX_MULTICAST_FRAMES_GOOD_TXMCASTG_Pos \ - (0UL) /*!< ETH TX_MULTICAST_FRAMES_GOOD: TXMCASTG (Bit 0) */ -#define ETH_TX_MULTICAST_FRAMES_GOOD_TXMCASTG_Msk \ - (0xffffffffUL) /*!< ETH TX_MULTICAST_FRAMES_GOOD: TXMCASTG (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- ETH_TX_64OCTETS_FRAMES_GOOD_BAD ---------------------- */ -#define ETH_TX_64OCTETS_FRAMES_GOOD_BAD_TX64OCTGB_Pos \ - (0UL) /*!< ETH TX_64OCTETS_FRAMES_GOOD_BAD: TX64OCTGB (Bit 0) */ -#define ETH_TX_64OCTETS_FRAMES_GOOD_BAD_TX64OCTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_64OCTETS_FRAMES_GOOD_BAD: TX64OCTGB (Bitfield-Mask: 0xffffffff) */ - -/* -------------------- ETH_TX_65TO127OCTETS_FRAMES_GOOD_BAD -------------------- */ -#define ETH_TX_65TO127OCTETS_FRAMES_GOOD_BAD_TX65_127OCTGB_Pos \ - (0UL) /*!< ETH TX_65TO127OCTETS_FRAMES_GOOD_BAD: TX65_127OCTGB (Bit 0) */ -#define ETH_TX_65TO127OCTETS_FRAMES_GOOD_BAD_TX65_127OCTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_65TO127OCTETS_FRAMES_GOOD_BAD: TX65_127OCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* -------------------- ETH_TX_128TO255OCTETS_FRAMES_GOOD_BAD ------------------- */ -#define ETH_TX_128TO255OCTETS_FRAMES_GOOD_BAD_TX128_255OCTGB_Pos \ - (0UL) /*!< ETH TX_128TO255OCTETS_FRAMES_GOOD_BAD: TX128_255OCTGB (Bit 0) */ -#define ETH_TX_128TO255OCTETS_FRAMES_GOOD_BAD_TX128_255OCTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_128TO255OCTETS_FRAMES_GOOD_BAD: TX128_255OCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* -------------------- ETH_TX_256TO511OCTETS_FRAMES_GOOD_BAD ------------------- */ -#define ETH_TX_256TO511OCTETS_FRAMES_GOOD_BAD_TX256_511OCTGB_Pos \ - (0UL) /*!< ETH TX_256TO511OCTETS_FRAMES_GOOD_BAD: TX256_511OCTGB (Bit 0) */ -#define ETH_TX_256TO511OCTETS_FRAMES_GOOD_BAD_TX256_511OCTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_256TO511OCTETS_FRAMES_GOOD_BAD: TX256_511OCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------- ETH_TX_512TO1023OCTETS_FRAMES_GOOD_BAD ------------------- */ -#define ETH_TX_512TO1023OCTETS_FRAMES_GOOD_BAD_TX512_1023OCTGB_Pos \ - (0UL) /*!< ETH TX_512TO1023OCTETS_FRAMES_GOOD_BAD: TX512_1023OCTGB (Bit 0) */ -#define ETH_TX_512TO1023OCTETS_FRAMES_GOOD_BAD_TX512_1023OCTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_512TO1023OCTETS_FRAMES_GOOD_BAD: TX512_1023OCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------- ETH_TX_1024TOMAXOCTETS_FRAMES_GOOD_BAD ------------------- */ -#define ETH_TX_1024TOMAXOCTETS_FRAMES_GOOD_BAD_TX1024_MAXOCTGB_Pos \ - (0UL) /*!< ETH TX_1024TOMAXOCTETS_FRAMES_GOOD_BAD: TX1024_MAXOCTGB (Bit 0) */ -#define ETH_TX_1024TOMAXOCTETS_FRAMES_GOOD_BAD_TX1024_MAXOCTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_1024TOMAXOCTETS_FRAMES_GOOD_BAD: TX1024_MAXOCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* ----------------------- ETH_TX_UNICAST_FRAMES_GOOD_BAD ----------------------- */ -#define ETH_TX_UNICAST_FRAMES_GOOD_BAD_TXUCASTGB_Pos \ - (0UL) /*!< ETH TX_UNICAST_FRAMES_GOOD_BAD: TXUCASTGB (Bit 0) */ -#define ETH_TX_UNICAST_FRAMES_GOOD_BAD_TXUCASTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_UNICAST_FRAMES_GOOD_BAD: TXUCASTGB (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------- ETH_TX_MULTICAST_FRAMES_GOOD_BAD ---------------------- */ -#define ETH_TX_MULTICAST_FRAMES_GOOD_BAD_TXMCASTGB_Pos \ - (0UL) /*!< ETH TX_MULTICAST_FRAMES_GOOD_BAD: TXMCASTGB (Bit 0) */ -#define ETH_TX_MULTICAST_FRAMES_GOOD_BAD_TXMCASTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_MULTICAST_FRAMES_GOOD_BAD: TXMCASTGB (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------- ETH_TX_BROADCAST_FRAMES_GOOD_BAD ---------------------- */ -#define ETH_TX_BROADCAST_FRAMES_GOOD_BAD_TXBCASTGB_Pos \ - (0UL) /*!< ETH TX_BROADCAST_FRAMES_GOOD_BAD: TXBCASTGB (Bit 0) */ -#define ETH_TX_BROADCAST_FRAMES_GOOD_BAD_TXBCASTGB_Msk \ - (0xffffffffUL) /*!< ETH TX_BROADCAST_FRAMES_GOOD_BAD: TXBCASTGB (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_TX_UNDERFLOW_ERROR_FRAMES ----------------------- */ -#define ETH_TX_UNDERFLOW_ERROR_FRAMES_TXUNDRFLW_Pos \ - (0UL) /*!< ETH TX_UNDERFLOW_ERROR_FRAMES: TXUNDRFLW (Bit 0) */ -#define ETH_TX_UNDERFLOW_ERROR_FRAMES_TXUNDRFLW_Msk \ - (0xffffffffUL) /*!< ETH TX_UNDERFLOW_ERROR_FRAMES: TXUNDRFLW (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- ETH_TX_SINGLE_COLLISION_GOOD_FRAMES -------------------- */ -#define ETH_TX_SINGLE_COLLISION_GOOD_FRAMES_TXSNGLCOLG_Pos \ - (0UL) /*!< ETH TX_SINGLE_COLLISION_GOOD_FRAMES: TXSNGLCOLG (Bit 0) */ -#define ETH_TX_SINGLE_COLLISION_GOOD_FRAMES_TXSNGLCOLG_Msk \ - (0xffffffffUL) /*!< ETH TX_SINGLE_COLLISION_GOOD_FRAMES: TXSNGLCOLG (Bitfield-Mask: \ - 0xffffffff) */ - -/* -------------------- ETH_TX_MULTIPLE_COLLISION_GOOD_FRAMES ------------------- */ -#define ETH_TX_MULTIPLE_COLLISION_GOOD_FRAMES_TXMULTCOLG_Pos \ - (0UL) /*!< ETH TX_MULTIPLE_COLLISION_GOOD_FRAMES: TXMULTCOLG (Bit 0) */ -#define ETH_TX_MULTIPLE_COLLISION_GOOD_FRAMES_TXMULTCOLG_Msk \ - (0xffffffffUL) /*!< ETH TX_MULTIPLE_COLLISION_GOOD_FRAMES: TXMULTCOLG (Bitfield-Mask: \ - 0xffffffff) */ - -/* --------------------------- ETH_TX_DEFERRED_FRAMES --------------------------- */ -#define ETH_TX_DEFERRED_FRAMES_TXDEFRD_Pos \ - (0UL) /*!< ETH TX_DEFERRED_FRAMES: TXDEFRD (Bit 0) */ -#define ETH_TX_DEFERRED_FRAMES_TXDEFRD_Msk \ - (0xffffffffUL) /*!< ETH TX_DEFERRED_FRAMES: TXDEFRD (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_TX_LATE_COLLISION_FRAMES ------------------------ */ -#define ETH_TX_LATE_COLLISION_FRAMES_TXLATECOL_Pos \ - (0UL) /*!< ETH TX_LATE_COLLISION_FRAMES: TXLATECOL (Bit 0) */ -#define ETH_TX_LATE_COLLISION_FRAMES_TXLATECOL_Msk \ - (0xffffffffUL) /*!< ETH TX_LATE_COLLISION_FRAMES: TXLATECOL (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------- ETH_TX_EXCESSIVE_COLLISION_FRAMES --------------------- */ -#define ETH_TX_EXCESSIVE_COLLISION_FRAMES_TXEXSCOL_Pos \ - (0UL) /*!< ETH TX_EXCESSIVE_COLLISION_FRAMES: TXEXSCOL (Bit 0) */ -#define ETH_TX_EXCESSIVE_COLLISION_FRAMES_TXEXSCOL_Msk \ - (0xffffffffUL) /*!< ETH TX_EXCESSIVE_COLLISION_FRAMES: TXEXSCOL (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_TX_CARRIER_ERROR_FRAMES ------------------------ */ -#define ETH_TX_CARRIER_ERROR_FRAMES_TXCARR_Pos \ - (0UL) /*!< ETH TX_CARRIER_ERROR_FRAMES: TXCARR (Bit 0) */ -#define ETH_TX_CARRIER_ERROR_FRAMES_TXCARR_Msk \ - (0xffffffffUL) /*!< ETH TX_CARRIER_ERROR_FRAMES: TXCARR (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_TX_OCTET_COUNT_GOOD -------------------------- */ -#define ETH_TX_OCTET_COUNT_GOOD_TXOCTG_Pos \ - (0UL) /*!< ETH TX_OCTET_COUNT_GOOD: TXOCTG (Bit 0) */ -#define ETH_TX_OCTET_COUNT_GOOD_TXOCTG_Msk \ - (0xffffffffUL) /*!< ETH TX_OCTET_COUNT_GOOD: TXOCTG (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_TX_FRAME_COUNT_GOOD -------------------------- */ -#define ETH_TX_FRAME_COUNT_GOOD_TXFRMG_Pos \ - (0UL) /*!< ETH TX_FRAME_COUNT_GOOD: TXFRMG (Bit 0) */ -#define ETH_TX_FRAME_COUNT_GOOD_TXFRMG_Msk \ - (0xffffffffUL) /*!< ETH TX_FRAME_COUNT_GOOD: TXFRMG (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- ETH_TX_EXCESSIVE_DEFERRAL_ERROR ---------------------- */ -#define ETH_TX_EXCESSIVE_DEFERRAL_ERROR_TXEXSDEF_Pos \ - (0UL) /*!< ETH TX_EXCESSIVE_DEFERRAL_ERROR: TXEXSDEF (Bit 0) */ -#define ETH_TX_EXCESSIVE_DEFERRAL_ERROR_TXEXSDEF_Msk \ - (0xffffffffUL) /*!< ETH TX_EXCESSIVE_DEFERRAL_ERROR: TXEXSDEF (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- ETH_TX_PAUSE_FRAMES ---------------------------- */ -#define ETH_TX_PAUSE_FRAMES_TXPAUSE_Pos \ - (0UL) /*!< ETH TX_PAUSE_FRAMES: TXPAUSE (Bit 0) */ -#define ETH_TX_PAUSE_FRAMES_TXPAUSE_Msk \ - (0xffffffffUL) /*!< ETH TX_PAUSE_FRAMES: TXPAUSE (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_TX_VLAN_FRAMES_GOOD -------------------------- */ -#define ETH_TX_VLAN_FRAMES_GOOD_TXVLANG_Pos \ - (0UL) /*!< ETH TX_VLAN_FRAMES_GOOD: TXVLANG (Bit 0) */ -#define ETH_TX_VLAN_FRAMES_GOOD_TXVLANG_Msk \ - (0xffffffffUL) /*!< ETH TX_VLAN_FRAMES_GOOD: TXVLANG (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- ETH_TX_OSIZE_FRAMES_GOOD -------------------------- */ -#define ETH_TX_OSIZE_FRAMES_GOOD_TXOSIZG_Pos \ - (0UL) /*!< ETH TX_OSIZE_FRAMES_GOOD: TXOSIZG (Bit 0) */ -#define ETH_TX_OSIZE_FRAMES_GOOD_TXOSIZG_Msk \ - (0xffffffffUL) /*!< ETH TX_OSIZE_FRAMES_GOOD: TXOSIZG (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_RX_FRAMES_COUNT_GOOD_BAD ------------------------ */ -#define ETH_RX_FRAMES_COUNT_GOOD_BAD_RXFRMGB_Pos \ - (0UL) /*!< ETH RX_FRAMES_COUNT_GOOD_BAD: RXFRMGB (Bit 0) */ -#define ETH_RX_FRAMES_COUNT_GOOD_BAD_RXFRMGB_Msk \ - (0xffffffffUL) /*!< ETH RX_FRAMES_COUNT_GOOD_BAD: RXFRMGB (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_RX_OCTET_COUNT_GOOD_BAD ------------------------ */ -#define ETH_RX_OCTET_COUNT_GOOD_BAD_RXOCTGB_Pos \ - (0UL) /*!< ETH RX_OCTET_COUNT_GOOD_BAD: RXOCTGB (Bit 0) */ -#define ETH_RX_OCTET_COUNT_GOOD_BAD_RXOCTGB_Msk \ - (0xffffffffUL) /*!< ETH RX_OCTET_COUNT_GOOD_BAD: RXOCTGB (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RX_OCTET_COUNT_GOOD -------------------------- */ -#define ETH_RX_OCTET_COUNT_GOOD_RXOCTG_Pos \ - (0UL) /*!< ETH RX_OCTET_COUNT_GOOD: RXOCTG (Bit 0) */ -#define ETH_RX_OCTET_COUNT_GOOD_RXOCTG_Msk \ - (0xffffffffUL) /*!< ETH RX_OCTET_COUNT_GOOD: RXOCTG (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_RX_BROADCAST_FRAMES_GOOD ------------------------ */ -#define ETH_RX_BROADCAST_FRAMES_GOOD_RXBCASTG_Pos \ - (0UL) /*!< ETH RX_BROADCAST_FRAMES_GOOD: RXBCASTG (Bit 0) */ -#define ETH_RX_BROADCAST_FRAMES_GOOD_RXBCASTG_Msk \ - (0xffffffffUL) /*!< ETH RX_BROADCAST_FRAMES_GOOD: RXBCASTG (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_RX_MULTICAST_FRAMES_GOOD ------------------------ */ -#define ETH_RX_MULTICAST_FRAMES_GOOD_RXMCASTG_Pos \ - (0UL) /*!< ETH RX_MULTICAST_FRAMES_GOOD: RXMCASTG (Bit 0) */ -#define ETH_RX_MULTICAST_FRAMES_GOOD_RXMCASTG_Msk \ - (0xffffffffUL) /*!< ETH RX_MULTICAST_FRAMES_GOOD: RXMCASTG (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RX_CRC_ERROR_FRAMES -------------------------- */ -#define ETH_RX_CRC_ERROR_FRAMES_RXCRCERR_Pos \ - (0UL) /*!< ETH RX_CRC_ERROR_FRAMES: RXCRCERR (Bit 0) */ -#define ETH_RX_CRC_ERROR_FRAMES_RXCRCERR_Msk \ - (0xffffffffUL) /*!< ETH RX_CRC_ERROR_FRAMES: RXCRCERR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_RX_ALIGNMENT_ERROR_FRAMES ----------------------- */ -#define ETH_RX_ALIGNMENT_ERROR_FRAMES_RXALGNERR_Pos \ - (0UL) /*!< ETH RX_ALIGNMENT_ERROR_FRAMES: RXALGNERR (Bit 0) */ -#define ETH_RX_ALIGNMENT_ERROR_FRAMES_RXALGNERR_Msk \ - (0xffffffffUL) /*!< ETH RX_ALIGNMENT_ERROR_FRAMES: RXALGNERR (Bitfield-Mask: 0xffffffff) */ - -/* -------------------------- ETH_RX_RUNT_ERROR_FRAMES -------------------------- */ -#define ETH_RX_RUNT_ERROR_FRAMES_RXRUNTERR_Pos \ - (0UL) /*!< ETH RX_RUNT_ERROR_FRAMES: RXRUNTERR (Bit 0) */ -#define ETH_RX_RUNT_ERROR_FRAMES_RXRUNTERR_Msk \ - (0xffffffffUL) /*!< ETH RX_RUNT_ERROR_FRAMES: RXRUNTERR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_RX_JABBER_ERROR_FRAMES ------------------------- */ -#define ETH_RX_JABBER_ERROR_FRAMES_RXJABERR_Pos \ - (0UL) /*!< ETH RX_JABBER_ERROR_FRAMES: RXJABERR (Bit 0) */ -#define ETH_RX_JABBER_ERROR_FRAMES_RXJABERR_Msk \ - (0xffffffffUL) /*!< ETH RX_JABBER_ERROR_FRAMES: RXJABERR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_RX_UNDERSIZE_FRAMES_GOOD ------------------------ */ -#define ETH_RX_UNDERSIZE_FRAMES_GOOD_RXUNDERSZG_Pos \ - (0UL) /*!< ETH RX_UNDERSIZE_FRAMES_GOOD: RXUNDERSZG (Bit 0) */ -#define ETH_RX_UNDERSIZE_FRAMES_GOOD_RXUNDERSZG_Msk \ - (0xffffffffUL) /*!< ETH RX_UNDERSIZE_FRAMES_GOOD: RXUNDERSZG (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_RX_OVERSIZE_FRAMES_GOOD ------------------------ */ -#define ETH_RX_OVERSIZE_FRAMES_GOOD_RXOVERSZG_Pos \ - (0UL) /*!< ETH RX_OVERSIZE_FRAMES_GOOD: RXOVERSZG (Bit 0) */ -#define ETH_RX_OVERSIZE_FRAMES_GOOD_RXOVERSZG_Msk \ - (0xffffffffUL) /*!< ETH RX_OVERSIZE_FRAMES_GOOD: RXOVERSZG (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- ETH_RX_64OCTETS_FRAMES_GOOD_BAD ---------------------- */ -#define ETH_RX_64OCTETS_FRAMES_GOOD_BAD_RX64OCTGB_Pos \ - (0UL) /*!< ETH RX_64OCTETS_FRAMES_GOOD_BAD: RX64OCTGB (Bit 0) */ -#define ETH_RX_64OCTETS_FRAMES_GOOD_BAD_RX64OCTGB_Msk \ - (0xffffffffUL) /*!< ETH RX_64OCTETS_FRAMES_GOOD_BAD: RX64OCTGB (Bitfield-Mask: 0xffffffff) */ - -/* -------------------- ETH_RX_65TO127OCTETS_FRAMES_GOOD_BAD -------------------- */ -#define ETH_RX_65TO127OCTETS_FRAMES_GOOD_BAD_RX65_127OCTGB_Pos \ - (0UL) /*!< ETH RX_65TO127OCTETS_FRAMES_GOOD_BAD: RX65_127OCTGB (Bit 0) */ -#define ETH_RX_65TO127OCTETS_FRAMES_GOOD_BAD_RX65_127OCTGB_Msk \ - (0xffffffffUL) /*!< ETH RX_65TO127OCTETS_FRAMES_GOOD_BAD: RX65_127OCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* -------------------- ETH_RX_128TO255OCTETS_FRAMES_GOOD_BAD ------------------- */ -#define ETH_RX_128TO255OCTETS_FRAMES_GOOD_BAD_RX128_255OCTGB_Pos \ - (0UL) /*!< ETH RX_128TO255OCTETS_FRAMES_GOOD_BAD: RX128_255OCTGB (Bit 0) */ -#define ETH_RX_128TO255OCTETS_FRAMES_GOOD_BAD_RX128_255OCTGB_Msk \ - (0xffffffffUL) /*!< ETH RX_128TO255OCTETS_FRAMES_GOOD_BAD: RX128_255OCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* -------------------- ETH_RX_256TO511OCTETS_FRAMES_GOOD_BAD ------------------- */ -#define ETH_RX_256TO511OCTETS_FRAMES_GOOD_BAD_RX256_511OCTGB_Pos \ - (0UL) /*!< ETH RX_256TO511OCTETS_FRAMES_GOOD_BAD: RX256_511OCTGB (Bit 0) */ -#define ETH_RX_256TO511OCTETS_FRAMES_GOOD_BAD_RX256_511OCTGB_Msk \ - (0xffffffffUL) /*!< ETH RX_256TO511OCTETS_FRAMES_GOOD_BAD: RX256_511OCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------- ETH_RX_512TO1023OCTETS_FRAMES_GOOD_BAD ------------------- */ -#define ETH_RX_512TO1023OCTETS_FRAMES_GOOD_BAD_RX512_1023OCTGB_Pos \ - (0UL) /*!< ETH RX_512TO1023OCTETS_FRAMES_GOOD_BAD: RX512_1023OCTGB (Bit 0) */ -#define ETH_RX_512TO1023OCTETS_FRAMES_GOOD_BAD_RX512_1023OCTGB_Msk \ - (0xffffffffUL) /*!< ETH RX_512TO1023OCTETS_FRAMES_GOOD_BAD: RX512_1023OCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------- ETH_RX_1024TOMAXOCTETS_FRAMES_GOOD_BAD ------------------- */ -#define ETH_RX_1024TOMAXOCTETS_FRAMES_GOOD_BAD_RX1024_MAXOCTGB_Pos \ - (0UL) /*!< ETH RX_1024TOMAXOCTETS_FRAMES_GOOD_BAD: RX1024_MAXOCTGB (Bit 0) */ -#define ETH_RX_1024TOMAXOCTETS_FRAMES_GOOD_BAD_RX1024_MAXOCTGB_Msk \ - (0xffffffffUL) /*!< ETH RX_1024TOMAXOCTETS_FRAMES_GOOD_BAD: RX1024_MAXOCTGB (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------------- ETH_RX_UNICAST_FRAMES_GOOD ------------------------- */ -#define ETH_RX_UNICAST_FRAMES_GOOD_RXUCASTG_Pos \ - (0UL) /*!< ETH RX_UNICAST_FRAMES_GOOD: RXUCASTG (Bit 0) */ -#define ETH_RX_UNICAST_FRAMES_GOOD_RXUCASTG_Msk \ - (0xffffffffUL) /*!< ETH RX_UNICAST_FRAMES_GOOD: RXUCASTG (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_RX_LENGTH_ERROR_FRAMES ------------------------- */ -#define ETH_RX_LENGTH_ERROR_FRAMES_RXLENERR_Pos \ - (0UL) /*!< ETH RX_LENGTH_ERROR_FRAMES: RXLENERR (Bit 0) */ -#define ETH_RX_LENGTH_ERROR_FRAMES_RXLENERR_Msk \ - (0xffffffffUL) /*!< ETH RX_LENGTH_ERROR_FRAMES: RXLENERR (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- ETH_RX_OUT_OF_RANGE_TYPE_FRAMES ---------------------- */ -#define ETH_RX_OUT_OF_RANGE_TYPE_FRAMES_RXOUTOFRNG_Pos \ - (0UL) /*!< ETH RX_OUT_OF_RANGE_TYPE_FRAMES: RXOUTOFRNG (Bit 0) */ -#define ETH_RX_OUT_OF_RANGE_TYPE_FRAMES_RXOUTOFRNG_Msk \ - (0xffffffffUL) /*!< ETH RX_OUT_OF_RANGE_TYPE_FRAMES: RXOUTOFRNG (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- ETH_RX_PAUSE_FRAMES ---------------------------- */ -#define ETH_RX_PAUSE_FRAMES_RXPAUSEFRM_Pos \ - (0UL) /*!< ETH RX_PAUSE_FRAMES: RXPAUSEFRM (Bit 0) */ -#define ETH_RX_PAUSE_FRAMES_RXPAUSEFRM_Msk \ - (0xffffffffUL) /*!< ETH RX_PAUSE_FRAMES: RXPAUSEFRM (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_RX_FIFO_OVERFLOW_FRAMES ------------------------ */ -#define ETH_RX_FIFO_OVERFLOW_FRAMES_RXFIFOOVFL_Pos \ - (0UL) /*!< ETH RX_FIFO_OVERFLOW_FRAMES: RXFIFOOVFL (Bit 0) */ -#define ETH_RX_FIFO_OVERFLOW_FRAMES_RXFIFOOVFL_Msk \ - (0xffffffffUL) /*!< ETH RX_FIFO_OVERFLOW_FRAMES: RXFIFOOVFL (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_RX_VLAN_FRAMES_GOOD_BAD ------------------------ */ -#define ETH_RX_VLAN_FRAMES_GOOD_BAD_RXVLANFRGB_Pos \ - (0UL) /*!< ETH RX_VLAN_FRAMES_GOOD_BAD: RXVLANFRGB (Bit 0) */ -#define ETH_RX_VLAN_FRAMES_GOOD_BAD_RXVLANFRGB_Msk \ - (0xffffffffUL) /*!< ETH RX_VLAN_FRAMES_GOOD_BAD: RXVLANFRGB (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------ ETH_RX_WATCHDOG_ERROR_FRAMES ------------------------ */ -#define ETH_RX_WATCHDOG_ERROR_FRAMES_RXWDGERR_Pos \ - (0UL) /*!< ETH RX_WATCHDOG_ERROR_FRAMES: RXWDGERR (Bit 0) */ -#define ETH_RX_WATCHDOG_ERROR_FRAMES_RXWDGERR_Msk \ - (0xffffffffUL) /*!< ETH RX_WATCHDOG_ERROR_FRAMES: RXWDGERR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_RX_RECEIVE_ERROR_FRAMES ------------------------ */ -#define ETH_RX_RECEIVE_ERROR_FRAMES_RXRCVERR_Pos \ - (0UL) /*!< ETH RX_RECEIVE_ERROR_FRAMES: RXRCVERR (Bit 0) */ -#define ETH_RX_RECEIVE_ERROR_FRAMES_RXRCVERR_Msk \ - (0xffffffffUL) /*!< ETH RX_RECEIVE_ERROR_FRAMES: RXRCVERR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_RX_CONTROL_FRAMES_GOOD ------------------------- */ -#define ETH_RX_CONTROL_FRAMES_GOOD_RXCTRLG_Pos \ - (0UL) /*!< ETH RX_CONTROL_FRAMES_GOOD: RXCTRLG (Bit 0) */ -#define ETH_RX_CONTROL_FRAMES_GOOD_RXCTRLG_Msk \ - (0xffffffffUL) /*!< ETH RX_CONTROL_FRAMES_GOOD: RXCTRLG (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK --------------------- */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4GFIM_Pos \ - (0UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4GFIM (Bit 0) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4GFIM_Msk \ - (0x1UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4GFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4HERFIM_Pos \ - (1UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4HERFIM (Bit 1) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4HERFIM_Msk \ - (0x2UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4HERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4NOPAYFIM_Pos \ - (2UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4NOPAYFIM (Bit 2) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4NOPAYFIM_Msk \ - (0x4UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4NOPAYFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4FRAGFIM_Pos \ - (3UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4FRAGFIM (Bit 3) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4FRAGFIM_Msk \ - (0x8UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4FRAGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4UDSBLFIM_Pos \ - (4UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4UDSBLFIM (Bit 4) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4UDSBLFIM_Msk \ - (0x10UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4UDSBLFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6GFIM_Pos \ - (5UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6GFIM (Bit 5) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6GFIM_Msk \ - (0x20UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6GFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6HERFIM_Pos \ - (6UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6HERFIM (Bit 6) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6HERFIM_Msk \ - (0x40UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6HERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6NOPAYFIM_Pos \ - (7UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6NOPAYFIM (Bit 7) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6NOPAYFIM_Msk \ - (0x80UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6NOPAYFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXUDPGFIM_Pos \ - (8UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXUDPGFIM (Bit 8) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXUDPGFIM_Msk \ - (0x100UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXUDPGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXUDPERFIM_Pos \ - (9UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXUDPERFIM (Bit 9) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXUDPERFIM_Msk \ - (0x200UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXUDPERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXTCPGFIM_Pos \ - (10UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXTCPGFIM (Bit 10) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXTCPGFIM_Msk \ - (0x400UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXTCPGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXTCPERFIM_Pos \ - (11UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXTCPERFIM (Bit 11) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXTCPERFIM_Msk \ - (0x800UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXTCPERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXICMPGFIM_Pos \ - (12UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXICMPGFIM (Bit 12) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXICMPGFIM_Msk \ - (0x1000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXICMPGFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXICMPERFIM_Pos \ - (13UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXICMPERFIM (Bit 13) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXICMPERFIM_Msk \ - (0x2000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXICMPERFIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4GOIM_Pos \ - (16UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4GOIM (Bit 16) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4GOIM_Msk \ - (0x10000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4GOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4HEROIM_Pos \ - (17UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4HEROIM (Bit 17) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4HEROIM_Msk \ - (0x20000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4HEROIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4NOPAYOIM_Pos \ - (18UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4NOPAYOIM (Bit 18) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4NOPAYOIM_Msk \ - (0x40000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4NOPAYOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4FRAGOIM_Pos \ - (19UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4FRAGOIM (Bit 19) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4FRAGOIM_Msk \ - (0x80000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4FRAGOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4UDSBLOIM_Pos \ - (20UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4UDSBLOIM (Bit 20) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV4UDSBLOIM_Msk \ - (0x100000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV4UDSBLOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6GOIM_Pos \ - (21UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6GOIM (Bit 21) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6GOIM_Msk \ - (0x200000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6GOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6HEROIM_Pos \ - (22UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6HEROIM (Bit 22) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6HEROIM_Msk \ - (0x400000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6HEROIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6NOPAYOIM_Pos \ - (23UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6NOPAYOIM (Bit 23) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXIPV6NOPAYOIM_Msk \ - (0x800000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXIPV6NOPAYOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXUDPGOIM_Pos \ - (24UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXUDPGOIM (Bit 24) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXUDPGOIM_Msk \ - (0x1000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXUDPGOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXUDPEROIM_Pos \ - (25UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXUDPEROIM (Bit 25) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXUDPEROIM_Msk \ - (0x2000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXUDPEROIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXTCPGOIM_Pos \ - (26UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXTCPGOIM (Bit 26) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXTCPGOIM_Msk \ - (0x4000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXTCPGOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXTCPEROIM_Pos \ - (27UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXTCPEROIM (Bit 27) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXTCPEROIM_Msk \ - (0x8000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXTCPEROIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXICMPGOIM_Pos \ - (28UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXICMPGOIM (Bit 28) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXICMPGOIM_Msk \ - (0x10000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXICMPGOIM (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXICMPEROIM_Pos \ - (29UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXICMPEROIM (Bit 29) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_MASK_RXICMPEROIM_Msk \ - (0x20000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT_MASK: RXICMPEROIM (Bitfield-Mask: 0x01) */ - -/* ------------------------ ETH_MMC_IPC_RECEIVE_INTERRUPT ----------------------- */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4GFIS_Pos \ - (0UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4GFIS (Bit 0) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4GFIS_Msk \ - (0x1UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4GFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4HERFIS_Pos \ - (1UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4HERFIS (Bit 1) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4HERFIS_Msk \ - (0x2UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4HERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4NOPAYFIS_Pos \ - (2UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4NOPAYFIS (Bit 2) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4NOPAYFIS_Msk \ - (0x4UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4NOPAYFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4FRAGFIS_Pos \ - (3UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4FRAGFIS (Bit 3) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4FRAGFIS_Msk \ - (0x8UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4FRAGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4UDSBLFIS_Pos \ - (4UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4UDSBLFIS (Bit 4) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4UDSBLFIS_Msk \ - (0x10UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4UDSBLFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6GFIS_Pos \ - (5UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6GFIS (Bit 5) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6GFIS_Msk \ - (0x20UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6GFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6HERFIS_Pos \ - (6UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6HERFIS (Bit 6) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6HERFIS_Msk \ - (0x40UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6HERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6NOPAYFIS_Pos \ - (7UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6NOPAYFIS (Bit 7) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6NOPAYFIS_Msk \ - (0x80UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6NOPAYFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXUDPGFIS_Pos \ - (8UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXUDPGFIS (Bit 8) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXUDPGFIS_Msk \ - (0x100UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXUDPGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXUDPERFIS_Pos \ - (9UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXUDPERFIS (Bit 9) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXUDPERFIS_Msk \ - (0x200UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXUDPERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXTCPGFIS_Pos \ - (10UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXTCPGFIS (Bit 10) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXTCPGFIS_Msk \ - (0x400UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXTCPGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXTCPERFIS_Pos \ - (11UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXTCPERFIS (Bit 11) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXTCPERFIS_Msk \ - (0x800UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXTCPERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXICMPGFIS_Pos \ - (12UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXICMPGFIS (Bit 12) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXICMPGFIS_Msk \ - (0x1000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXICMPGFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXICMPERFIS_Pos \ - (13UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXICMPERFIS (Bit 13) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXICMPERFIS_Msk \ - (0x2000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXICMPERFIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4GOIS_Pos \ - (16UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4GOIS (Bit 16) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4GOIS_Msk \ - (0x10000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4GOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4HEROIS_Pos \ - (17UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4HEROIS (Bit 17) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4HEROIS_Msk \ - (0x20000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4HEROIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4NOPAYOIS_Pos \ - (18UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4NOPAYOIS (Bit 18) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4NOPAYOIS_Msk \ - (0x40000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4NOPAYOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4FRAGOIS_Pos \ - (19UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4FRAGOIS (Bit 19) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4FRAGOIS_Msk \ - (0x80000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4FRAGOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4UDSBLOIS_Pos \ - (20UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4UDSBLOIS (Bit 20) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV4UDSBLOIS_Msk \ - (0x100000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV4UDSBLOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6GOIS_Pos \ - (21UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6GOIS (Bit 21) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6GOIS_Msk \ - (0x200000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6GOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6HEROIS_Pos \ - (22UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6HEROIS (Bit 22) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6HEROIS_Msk \ - (0x400000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6HEROIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6NOPAYOIS_Pos \ - (23UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6NOPAYOIS (Bit 23) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXIPV6NOPAYOIS_Msk \ - (0x800000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXIPV6NOPAYOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXUDPGOIS_Pos \ - (24UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXUDPGOIS (Bit 24) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXUDPGOIS_Msk \ - (0x1000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXUDPGOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXUDPEROIS_Pos \ - (25UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXUDPEROIS (Bit 25) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXUDPEROIS_Msk \ - (0x2000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXUDPEROIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXTCPGOIS_Pos \ - (26UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXTCPGOIS (Bit 26) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXTCPGOIS_Msk \ - (0x4000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXTCPGOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXTCPEROIS_Pos \ - (27UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXTCPEROIS (Bit 27) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXTCPEROIS_Msk \ - (0x8000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXTCPEROIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXICMPGOIS_Pos \ - (28UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXICMPGOIS (Bit 28) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXICMPGOIS_Msk \ - (0x10000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXICMPGOIS (Bitfield-Mask: 0x01) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXICMPEROIS_Pos \ - (29UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXICMPEROIS (Bit 29) */ -#define ETH_MMC_IPC_RECEIVE_INTERRUPT_RXICMPEROIS_Msk \ - (0x20000000UL) /*!< ETH MMC_IPC_RECEIVE_INTERRUPT: RXICMPEROIS (Bitfield-Mask: 0x01) */ - -/* --------------------------- ETH_RXIPV4_GOOD_FRAMES --------------------------- */ -#define ETH_RXIPV4_GOOD_FRAMES_RXIPV4GDFRM_Pos \ - (0UL) /*!< ETH RXIPV4_GOOD_FRAMES: RXIPV4GDFRM (Bit 0) */ -#define ETH_RXIPV4_GOOD_FRAMES_RXIPV4GDFRM_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_GOOD_FRAMES: RXIPV4GDFRM (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- ETH_RXIPV4_HEADER_ERROR_FRAMES ----------------------- */ -#define ETH_RXIPV4_HEADER_ERROR_FRAMES_RXIPV4HDRERRFRM_Pos \ - (0UL) /*!< ETH RXIPV4_HEADER_ERROR_FRAMES: RXIPV4HDRERRFRM (Bit 0) */ -#define ETH_RXIPV4_HEADER_ERROR_FRAMES_RXIPV4HDRERRFRM_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_HEADER_ERROR_FRAMES: RXIPV4HDRERRFRM (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------------ ETH_RXIPV4_NO_PAYLOAD_FRAMES ------------------------ */ -#define ETH_RXIPV4_NO_PAYLOAD_FRAMES_RXIPV4NOPAYFRM_Pos \ - (0UL) /*!< ETH RXIPV4_NO_PAYLOAD_FRAMES: RXIPV4NOPAYFRM (Bit 0) */ -#define ETH_RXIPV4_NO_PAYLOAD_FRAMES_RXIPV4NOPAYFRM_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_NO_PAYLOAD_FRAMES: RXIPV4NOPAYFRM (Bitfield-Mask: 0xffffffff) \ - */ - -/* ------------------------ ETH_RXIPV4_FRAGMENTED_FRAMES ------------------------ */ -#define ETH_RXIPV4_FRAGMENTED_FRAMES_RXIPV4FRAGFRM_Pos \ - (0UL) /*!< ETH RXIPV4_FRAGMENTED_FRAMES: RXIPV4FRAGFRM (Bit 0) */ -#define ETH_RXIPV4_FRAGMENTED_FRAMES_RXIPV4FRAGFRM_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_FRAGMENTED_FRAMES: RXIPV4FRAGFRM (Bitfield-Mask: 0xffffffff) */ - -/* ------------------- ETH_RXIPV4_UDP_CHECKSUM_DISABLED_FRAMES ------------------ */ -#define ETH_RXIPV4_UDP_CHECKSUM_DISABLED_FRAMES_RXIPV4UDSBLFRM_Pos \ - (0UL) /*!< ETH RXIPV4_UDP_CHECKSUM_DISABLED_FRAMES: RXIPV4UDSBLFRM (Bit 0) */ -#define ETH_RXIPV4_UDP_CHECKSUM_DISABLED_FRAMES_RXIPV4UDSBLFRM_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_UDP_CHECKSUM_DISABLED_FRAMES: RXIPV4UDSBLFRM (Bitfield-Mask: \ - 0xffffffff) */ - -/* --------------------------- ETH_RXIPV6_GOOD_FRAMES --------------------------- */ -#define ETH_RXIPV6_GOOD_FRAMES_RXIPV6GDFRM_Pos \ - (0UL) /*!< ETH RXIPV6_GOOD_FRAMES: RXIPV6GDFRM (Bit 0) */ -#define ETH_RXIPV6_GOOD_FRAMES_RXIPV6GDFRM_Msk \ - (0xffffffffUL) /*!< ETH RXIPV6_GOOD_FRAMES: RXIPV6GDFRM (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- ETH_RXIPV6_HEADER_ERROR_FRAMES ----------------------- */ -#define ETH_RXIPV6_HEADER_ERROR_FRAMES_RXIPV6HDRERRFRM_Pos \ - (0UL) /*!< ETH RXIPV6_HEADER_ERROR_FRAMES: RXIPV6HDRERRFRM (Bit 0) */ -#define ETH_RXIPV6_HEADER_ERROR_FRAMES_RXIPV6HDRERRFRM_Msk \ - (0xffffffffUL) /*!< ETH RXIPV6_HEADER_ERROR_FRAMES: RXIPV6HDRERRFRM (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------------ ETH_RXIPV6_NO_PAYLOAD_FRAMES ------------------------ */ -#define ETH_RXIPV6_NO_PAYLOAD_FRAMES_RXIPV6NOPAYFRM_Pos \ - (0UL) /*!< ETH RXIPV6_NO_PAYLOAD_FRAMES: RXIPV6NOPAYFRM (Bit 0) */ -#define ETH_RXIPV6_NO_PAYLOAD_FRAMES_RXIPV6NOPAYFRM_Msk \ - (0xffffffffUL) /*!< ETH RXIPV6_NO_PAYLOAD_FRAMES: RXIPV6NOPAYFRM (Bitfield-Mask: 0xffffffff) \ - */ - -/* ---------------------------- ETH_RXUDP_GOOD_FRAMES --------------------------- */ -#define ETH_RXUDP_GOOD_FRAMES_RXUDPGDFRM_Pos \ - (0UL) /*!< ETH RXUDP_GOOD_FRAMES: RXUDPGDFRM (Bit 0) */ -#define ETH_RXUDP_GOOD_FRAMES_RXUDPGDFRM_Msk \ - (0xffffffffUL) /*!< ETH RXUDP_GOOD_FRAMES: RXUDPGDFRM (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXUDP_ERROR_FRAMES --------------------------- */ -#define ETH_RXUDP_ERROR_FRAMES_RXUDPERRFRM_Pos \ - (0UL) /*!< ETH RXUDP_ERROR_FRAMES: RXUDPERRFRM (Bit 0) */ -#define ETH_RXUDP_ERROR_FRAMES_RXUDPERRFRM_Msk \ - (0xffffffffUL) /*!< ETH RXUDP_ERROR_FRAMES: RXUDPERRFRM (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- ETH_RXTCP_GOOD_FRAMES --------------------------- */ -#define ETH_RXTCP_GOOD_FRAMES_RXTCPGDFRM_Pos \ - (0UL) /*!< ETH RXTCP_GOOD_FRAMES: RXTCPGDFRM (Bit 0) */ -#define ETH_RXTCP_GOOD_FRAMES_RXTCPGDFRM_Msk \ - (0xffffffffUL) /*!< ETH RXTCP_GOOD_FRAMES: RXTCPGDFRM (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXTCP_ERROR_FRAMES --------------------------- */ -#define ETH_RXTCP_ERROR_FRAMES_RXTCPERRFRM_Pos \ - (0UL) /*!< ETH RXTCP_ERROR_FRAMES: RXTCPERRFRM (Bit 0) */ -#define ETH_RXTCP_ERROR_FRAMES_RXTCPERRFRM_Msk \ - (0xffffffffUL) /*!< ETH RXTCP_ERROR_FRAMES: RXTCPERRFRM (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXICMP_GOOD_FRAMES --------------------------- */ -#define ETH_RXICMP_GOOD_FRAMES_RXICMPGDFRM_Pos \ - (0UL) /*!< ETH RXICMP_GOOD_FRAMES: RXICMPGDFRM (Bit 0) */ -#define ETH_RXICMP_GOOD_FRAMES_RXICMPGDFRM_Msk \ - (0xffffffffUL) /*!< ETH RXICMP_GOOD_FRAMES: RXICMPGDFRM (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXICMP_ERROR_FRAMES -------------------------- */ -#define ETH_RXICMP_ERROR_FRAMES_RXICMPERRFRM_Pos \ - (0UL) /*!< ETH RXICMP_ERROR_FRAMES: RXICMPERRFRM (Bit 0) */ -#define ETH_RXICMP_ERROR_FRAMES_RXICMPERRFRM_Msk \ - (0xffffffffUL) /*!< ETH RXICMP_ERROR_FRAMES: RXICMPERRFRM (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXIPV4_GOOD_OCTETS --------------------------- */ -#define ETH_RXIPV4_GOOD_OCTETS_RXIPV4GDOCT_Pos \ - (0UL) /*!< ETH RXIPV4_GOOD_OCTETS: RXIPV4GDOCT (Bit 0) */ -#define ETH_RXIPV4_GOOD_OCTETS_RXIPV4GDOCT_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_GOOD_OCTETS: RXIPV4GDOCT (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- ETH_RXIPV4_HEADER_ERROR_OCTETS ----------------------- */ -#define ETH_RXIPV4_HEADER_ERROR_OCTETS_RXIPV4HDRERROCT_Pos \ - (0UL) /*!< ETH RXIPV4_HEADER_ERROR_OCTETS: RXIPV4HDRERROCT (Bit 0) */ -#define ETH_RXIPV4_HEADER_ERROR_OCTETS_RXIPV4HDRERROCT_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_HEADER_ERROR_OCTETS: RXIPV4HDRERROCT (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------------ ETH_RXIPV4_NO_PAYLOAD_OCTETS ------------------------ */ -#define ETH_RXIPV4_NO_PAYLOAD_OCTETS_RXIPV4NOPAYOCT_Pos \ - (0UL) /*!< ETH RXIPV4_NO_PAYLOAD_OCTETS: RXIPV4NOPAYOCT (Bit 0) */ -#define ETH_RXIPV4_NO_PAYLOAD_OCTETS_RXIPV4NOPAYOCT_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_NO_PAYLOAD_OCTETS: RXIPV4NOPAYOCT (Bitfield-Mask: 0xffffffff) \ - */ - -/* ------------------------ ETH_RXIPV4_FRAGMENTED_OCTETS ------------------------ */ -#define ETH_RXIPV4_FRAGMENTED_OCTETS_RXIPV4FRAGOCT_Pos \ - (0UL) /*!< ETH RXIPV4_FRAGMENTED_OCTETS: RXIPV4FRAGOCT (Bit 0) */ -#define ETH_RXIPV4_FRAGMENTED_OCTETS_RXIPV4FRAGOCT_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_FRAGMENTED_OCTETS: RXIPV4FRAGOCT (Bitfield-Mask: 0xffffffff) */ - -/* ------------------- ETH_RXIPV4_UDP_CHECKSUM_DISABLE_OCTETS ------------------- */ -#define ETH_RXIPV4_UDP_CHECKSUM_DISABLE_OCTETS_RXIPV4UDSBLOCT_Pos \ - (0UL) /*!< ETH RXIPV4_UDP_CHECKSUM_DISABLE_OCTETS: RXIPV4UDSBLOCT (Bit 0) */ -#define ETH_RXIPV4_UDP_CHECKSUM_DISABLE_OCTETS_RXIPV4UDSBLOCT_Msk \ - (0xffffffffUL) /*!< ETH RXIPV4_UDP_CHECKSUM_DISABLE_OCTETS: RXIPV4UDSBLOCT (Bitfield-Mask: \ - 0xffffffff) */ - -/* --------------------------- ETH_RXIPV6_GOOD_OCTETS --------------------------- */ -#define ETH_RXIPV6_GOOD_OCTETS_RXIPV6GDOCT_Pos \ - (0UL) /*!< ETH RXIPV6_GOOD_OCTETS: RXIPV6GDOCT (Bit 0) */ -#define ETH_RXIPV6_GOOD_OCTETS_RXIPV6GDOCT_Msk \ - (0xffffffffUL) /*!< ETH RXIPV6_GOOD_OCTETS: RXIPV6GDOCT (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------- ETH_RXIPV6_HEADER_ERROR_OCTETS ----------------------- */ -#define ETH_RXIPV6_HEADER_ERROR_OCTETS_RXIPV6HDRERROCT_Pos \ - (0UL) /*!< ETH RXIPV6_HEADER_ERROR_OCTETS: RXIPV6HDRERROCT (Bit 0) */ -#define ETH_RXIPV6_HEADER_ERROR_OCTETS_RXIPV6HDRERROCT_Msk \ - (0xffffffffUL) /*!< ETH RXIPV6_HEADER_ERROR_OCTETS: RXIPV6HDRERROCT (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------------ ETH_RXIPV6_NO_PAYLOAD_OCTETS ------------------------ */ -#define ETH_RXIPV6_NO_PAYLOAD_OCTETS_RXIPV6NOPAYOCT_Pos \ - (0UL) /*!< ETH RXIPV6_NO_PAYLOAD_OCTETS: RXIPV6NOPAYOCT (Bit 0) */ -#define ETH_RXIPV6_NO_PAYLOAD_OCTETS_RXIPV6NOPAYOCT_Msk \ - (0xffffffffUL) /*!< ETH RXIPV6_NO_PAYLOAD_OCTETS: RXIPV6NOPAYOCT (Bitfield-Mask: 0xffffffff) \ - */ - -/* ---------------------------- ETH_RXUDP_GOOD_OCTETS --------------------------- */ -#define ETH_RXUDP_GOOD_OCTETS_RXUDPGDOCT_Pos \ - (0UL) /*!< ETH RXUDP_GOOD_OCTETS: RXUDPGDOCT (Bit 0) */ -#define ETH_RXUDP_GOOD_OCTETS_RXUDPGDOCT_Msk \ - (0xffffffffUL) /*!< ETH RXUDP_GOOD_OCTETS: RXUDPGDOCT (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXUDP_ERROR_OCTETS --------------------------- */ -#define ETH_RXUDP_ERROR_OCTETS_RXUDPERROCT_Pos \ - (0UL) /*!< ETH RXUDP_ERROR_OCTETS: RXUDPERROCT (Bit 0) */ -#define ETH_RXUDP_ERROR_OCTETS_RXUDPERROCT_Msk \ - (0xffffffffUL) /*!< ETH RXUDP_ERROR_OCTETS: RXUDPERROCT (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- ETH_RXTCP_GOOD_OCTETS --------------------------- */ -#define ETH_RXTCP_GOOD_OCTETS_RXTCPGDOCT_Pos \ - (0UL) /*!< ETH RXTCP_GOOD_OCTETS: RXTCPGDOCT (Bit 0) */ -#define ETH_RXTCP_GOOD_OCTETS_RXTCPGDOCT_Msk \ - (0xffffffffUL) /*!< ETH RXTCP_GOOD_OCTETS: RXTCPGDOCT (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXTCP_ERROR_OCTETS --------------------------- */ -#define ETH_RXTCP_ERROR_OCTETS_RXTCPERROCT_Pos \ - (0UL) /*!< ETH RXTCP_ERROR_OCTETS: RXTCPERROCT (Bit 0) */ -#define ETH_RXTCP_ERROR_OCTETS_RXTCPERROCT_Msk \ - (0xffffffffUL) /*!< ETH RXTCP_ERROR_OCTETS: RXTCPERROCT (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXICMP_GOOD_OCTETS --------------------------- */ -#define ETH_RXICMP_GOOD_OCTETS_RXICMPGDOCT_Pos \ - (0UL) /*!< ETH RXICMP_GOOD_OCTETS: RXICMPGDOCT (Bit 0) */ -#define ETH_RXICMP_GOOD_OCTETS_RXICMPGDOCT_Msk \ - (0xffffffffUL) /*!< ETH RXICMP_GOOD_OCTETS: RXICMPGDOCT (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RXICMP_ERROR_OCTETS -------------------------- */ -#define ETH_RXICMP_ERROR_OCTETS_RXICMPERROCT_Pos \ - (0UL) /*!< ETH RXICMP_ERROR_OCTETS: RXICMPERROCT (Bit 0) */ -#define ETH_RXICMP_ERROR_OCTETS_RXICMPERROCT_Msk \ - (0xffffffffUL) /*!< ETH RXICMP_ERROR_OCTETS: RXICMPERROCT (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------- ETH_TIMESTAMP_CONTROL --------------------------- */ -#define ETH_TIMESTAMP_CONTROL_TSENA_Pos \ - (0UL) /*!< ETH TIMESTAMP_CONTROL: TSENA (Bit 0) */ -#define ETH_TIMESTAMP_CONTROL_TSENA_Msk \ - (0x1UL) /*!< ETH TIMESTAMP_CONTROL: TSENA (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSCFUPDT_Pos \ - (1UL) /*!< ETH TIMESTAMP_CONTROL: TSCFUPDT (Bit 1) */ -#define ETH_TIMESTAMP_CONTROL_TSCFUPDT_Msk \ - (0x2UL) /*!< ETH TIMESTAMP_CONTROL: TSCFUPDT (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSINIT_Pos \ - (2UL) /*!< ETH TIMESTAMP_CONTROL: TSINIT (Bit 2) */ -#define ETH_TIMESTAMP_CONTROL_TSINIT_Msk \ - (0x4UL) /*!< ETH TIMESTAMP_CONTROL: TSINIT (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSUPDT_Pos \ - (3UL) /*!< ETH TIMESTAMP_CONTROL: TSUPDT (Bit 3) */ -#define ETH_TIMESTAMP_CONTROL_TSUPDT_Msk \ - (0x8UL) /*!< ETH TIMESTAMP_CONTROL: TSUPDT (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSTRIG_Pos \ - (4UL) /*!< ETH TIMESTAMP_CONTROL: TSTRIG (Bit 4) */ -#define ETH_TIMESTAMP_CONTROL_TSTRIG_Msk \ - (0x10UL) /*!< ETH TIMESTAMP_CONTROL: TSTRIG (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSADDREG_Pos \ - (5UL) /*!< ETH TIMESTAMP_CONTROL: TSADDREG (Bit 5) */ -#define ETH_TIMESTAMP_CONTROL_TSADDREG_Msk \ - (0x20UL) /*!< ETH TIMESTAMP_CONTROL: TSADDREG (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSENALL_Pos \ - (8UL) /*!< ETH TIMESTAMP_CONTROL: TSENALL (Bit 8) */ -#define ETH_TIMESTAMP_CONTROL_TSENALL_Msk \ - (0x100UL) /*!< ETH TIMESTAMP_CONTROL: TSENALL (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSCTRLSSR_Pos \ - (9UL) /*!< ETH TIMESTAMP_CONTROL: TSCTRLSSR (Bit 9) */ -#define ETH_TIMESTAMP_CONTROL_TSCTRLSSR_Msk \ - (0x200UL) /*!< ETH TIMESTAMP_CONTROL: TSCTRLSSR (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSVER2ENA_Pos \ - (10UL) /*!< ETH TIMESTAMP_CONTROL: TSVER2ENA (Bit 10) */ -#define ETH_TIMESTAMP_CONTROL_TSVER2ENA_Msk \ - (0x400UL) /*!< ETH TIMESTAMP_CONTROL: TSVER2ENA (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSIPENA_Pos \ - (11UL) /*!< ETH TIMESTAMP_CONTROL: TSIPENA (Bit 11) */ -#define ETH_TIMESTAMP_CONTROL_TSIPENA_Msk \ - (0x800UL) /*!< ETH TIMESTAMP_CONTROL: TSIPENA (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSIPV6ENA_Pos \ - (12UL) /*!< ETH TIMESTAMP_CONTROL: TSIPV6ENA (Bit 12) */ -#define ETH_TIMESTAMP_CONTROL_TSIPV6ENA_Msk \ - (0x1000UL) /*!< ETH TIMESTAMP_CONTROL: TSIPV6ENA (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSIPV4ENA_Pos \ - (13UL) /*!< ETH TIMESTAMP_CONTROL: TSIPV4ENA (Bit 13) */ -#define ETH_TIMESTAMP_CONTROL_TSIPV4ENA_Msk \ - (0x2000UL) /*!< ETH TIMESTAMP_CONTROL: TSIPV4ENA (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSEVNTENA_Pos \ - (14UL) /*!< ETH TIMESTAMP_CONTROL: TSEVNTENA (Bit 14) */ -#define ETH_TIMESTAMP_CONTROL_TSEVNTENA_Msk \ - (0x4000UL) /*!< ETH TIMESTAMP_CONTROL: TSEVNTENA (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_TSMSTRENA_Pos \ - (15UL) /*!< ETH TIMESTAMP_CONTROL: TSMSTRENA (Bit 15) */ -#define ETH_TIMESTAMP_CONTROL_TSMSTRENA_Msk \ - (0x8000UL) /*!< ETH TIMESTAMP_CONTROL: TSMSTRENA (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_CONTROL_SNAPTYPSEL_Pos \ - (16UL) /*!< ETH TIMESTAMP_CONTROL: SNAPTYPSEL (Bit 16) */ -#define ETH_TIMESTAMP_CONTROL_SNAPTYPSEL_Msk \ - (0x30000UL) /*!< ETH TIMESTAMP_CONTROL: SNAPTYPSEL (Bitfield-Mask: 0x03) */ -#define ETH_TIMESTAMP_CONTROL_TSENMACADDR_Pos \ - (18UL) /*!< ETH TIMESTAMP_CONTROL: TSENMACADDR (Bit 18) */ -#define ETH_TIMESTAMP_CONTROL_TSENMACADDR_Msk \ - (0x40000UL) /*!< ETH TIMESTAMP_CONTROL: TSENMACADDR (Bitfield-Mask: 0x01) */ - -/* -------------------------- ETH_SUB_SECOND_INCREMENT -------------------------- */ -#define ETH_SUB_SECOND_INCREMENT_SSINC_Pos \ - (0UL) /*!< ETH SUB_SECOND_INCREMENT: SSINC (Bit 0) */ -#define ETH_SUB_SECOND_INCREMENT_SSINC_Msk \ - (0xffUL) /*!< ETH SUB_SECOND_INCREMENT: SSINC (Bitfield-Mask: 0xff) */ - -/* --------------------------- ETH_SYSTEM_TIME_SECONDS -------------------------- */ -#define ETH_SYSTEM_TIME_SECONDS_TSS_Pos \ - (0UL) /*!< ETH SYSTEM_TIME_SECONDS: TSS (Bit 0) */ -#define ETH_SYSTEM_TIME_SECONDS_TSS_Msk \ - (0xffffffffUL) /*!< ETH SYSTEM_TIME_SECONDS: TSS (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_SYSTEM_TIME_NANOSECONDS ------------------------ */ -#define ETH_SYSTEM_TIME_NANOSECONDS_TSSS_Pos \ - (0UL) /*!< ETH SYSTEM_TIME_NANOSECONDS: TSSS (Bit 0) */ -#define ETH_SYSTEM_TIME_NANOSECONDS_TSSS_Msk \ - (0x7fffffffUL) /*!< ETH SYSTEM_TIME_NANOSECONDS: TSSS (Bitfield-Mask: 0x7fffffff) */ - -/* ----------------------- ETH_SYSTEM_TIME_SECONDS_UPDATE ----------------------- */ -#define ETH_SYSTEM_TIME_SECONDS_UPDATE_TSS_Pos \ - (0UL) /*!< ETH SYSTEM_TIME_SECONDS_UPDATE: TSS (Bit 0) */ -#define ETH_SYSTEM_TIME_SECONDS_UPDATE_TSS_Msk \ - (0xffffffffUL) /*!< ETH SYSTEM_TIME_SECONDS_UPDATE: TSS (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- ETH_SYSTEM_TIME_NANOSECONDS_UPDATE --------------------- */ -#define ETH_SYSTEM_TIME_NANOSECONDS_UPDATE_TSSS_Pos \ - (0UL) /*!< ETH SYSTEM_TIME_NANOSECONDS_UPDATE: TSSS (Bit 0) */ -#define ETH_SYSTEM_TIME_NANOSECONDS_UPDATE_TSSS_Msk \ - (0x7fffffffUL) /*!< ETH SYSTEM_TIME_NANOSECONDS_UPDATE: TSSS (Bitfield-Mask: 0x7fffffff) */ -#define ETH_SYSTEM_TIME_NANOSECONDS_UPDATE_ADDSUB_Pos \ - (31UL) /*!< ETH SYSTEM_TIME_NANOSECONDS_UPDATE: ADDSUB (Bit 31) */ -#define ETH_SYSTEM_TIME_NANOSECONDS_UPDATE_ADDSUB_Msk \ - (0x80000000UL) /*!< ETH SYSTEM_TIME_NANOSECONDS_UPDATE: ADDSUB (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ETH_TIMESTAMP_ADDEND ---------------------------- */ -#define ETH_TIMESTAMP_ADDEND_TSAR_Pos \ - (0UL) /*!< ETH TIMESTAMP_ADDEND: TSAR (Bit 0) */ -#define ETH_TIMESTAMP_ADDEND_TSAR_Msk \ - (0xffffffffUL) /*!< ETH TIMESTAMP_ADDEND: TSAR (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_TARGET_TIME_SECONDS -------------------------- */ -#define ETH_TARGET_TIME_SECONDS_TSTR_Pos \ - (0UL) /*!< ETH TARGET_TIME_SECONDS: TSTR (Bit 0) */ -#define ETH_TARGET_TIME_SECONDS_TSTR_Msk \ - (0xffffffffUL) /*!< ETH TARGET_TIME_SECONDS: TSTR (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------- ETH_TARGET_TIME_NANOSECONDS ------------------------ */ -#define ETH_TARGET_TIME_NANOSECONDS_TTSLO_Pos \ - (0UL) /*!< ETH TARGET_TIME_NANOSECONDS: TTSLO (Bit 0) */ -#define ETH_TARGET_TIME_NANOSECONDS_TTSLO_Msk \ - (0x7fffffffUL) /*!< ETH TARGET_TIME_NANOSECONDS: TTSLO (Bitfield-Mask: 0x7fffffff) */ -#define ETH_TARGET_TIME_NANOSECONDS_TRGTBUSY_Pos \ - (31UL) /*!< ETH TARGET_TIME_NANOSECONDS: TRGTBUSY (Bit 31) */ -#define ETH_TARGET_TIME_NANOSECONDS_TRGTBUSY_Msk \ - (0x80000000UL) /*!< ETH TARGET_TIME_NANOSECONDS: TRGTBUSY (Bitfield-Mask: 0x01) */ - -/* --------------------- ETH_SYSTEM_TIME_HIGHER_WORD_SECONDS -------------------- */ -#define ETH_SYSTEM_TIME_HIGHER_WORD_SECONDS_TSHWR_Pos \ - (0UL) /*!< ETH SYSTEM_TIME_HIGHER_WORD_SECONDS: TSHWR (Bit 0) */ -#define ETH_SYSTEM_TIME_HIGHER_WORD_SECONDS_TSHWR_Msk \ - (0xffffUL) /*!< ETH SYSTEM_TIME_HIGHER_WORD_SECONDS: TSHWR (Bitfield-Mask: 0xffff) */ - -/* ---------------------------- ETH_TIMESTAMP_STATUS ---------------------------- */ -#define ETH_TIMESTAMP_STATUS_TSSOVF_Pos \ - (0UL) /*!< ETH TIMESTAMP_STATUS: TSSOVF (Bit 0) */ -#define ETH_TIMESTAMP_STATUS_TSSOVF_Msk \ - (0x1UL) /*!< ETH TIMESTAMP_STATUS: TSSOVF (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_STATUS_TSTARGT_Pos \ - (1UL) /*!< ETH TIMESTAMP_STATUS: TSTARGT (Bit 1) */ -#define ETH_TIMESTAMP_STATUS_TSTARGT_Msk \ - (0x2UL) /*!< ETH TIMESTAMP_STATUS: TSTARGT (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_STATUS_TSTRGTERR_Pos \ - (3UL) /*!< ETH TIMESTAMP_STATUS: TSTRGTERR (Bit 3) */ -#define ETH_TIMESTAMP_STATUS_TSTRGTERR_Msk \ - (0x8UL) /*!< ETH TIMESTAMP_STATUS: TSTRGTERR (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_STATUS_TSTARGT1_Pos \ - (4UL) /*!< ETH TIMESTAMP_STATUS: TSTARGT1 (Bit 4) */ -#define ETH_TIMESTAMP_STATUS_TSTARGT1_Msk \ - (0x10UL) /*!< ETH TIMESTAMP_STATUS: TSTARGT1 (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_STATUS_TSTRGTERR1_Pos \ - (5UL) /*!< ETH TIMESTAMP_STATUS: TSTRGTERR1 (Bit 5) */ -#define ETH_TIMESTAMP_STATUS_TSTRGTERR1_Msk \ - (0x20UL) /*!< ETH TIMESTAMP_STATUS: TSTRGTERR1 (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_STATUS_TSTARGT2_Pos \ - (6UL) /*!< ETH TIMESTAMP_STATUS: TSTARGT2 (Bit 6) */ -#define ETH_TIMESTAMP_STATUS_TSTARGT2_Msk \ - (0x40UL) /*!< ETH TIMESTAMP_STATUS: TSTARGT2 (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_STATUS_TSTRGTERR2_Pos \ - (7UL) /*!< ETH TIMESTAMP_STATUS: TSTRGTERR2 (Bit 7) */ -#define ETH_TIMESTAMP_STATUS_TSTRGTERR2_Msk \ - (0x80UL) /*!< ETH TIMESTAMP_STATUS: TSTRGTERR2 (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_STATUS_TSTARGT3_Pos \ - (8UL) /*!< ETH TIMESTAMP_STATUS: TSTARGT3 (Bit 8) */ -#define ETH_TIMESTAMP_STATUS_TSTARGT3_Msk \ - (0x100UL) /*!< ETH TIMESTAMP_STATUS: TSTARGT3 (Bitfield-Mask: 0x01) */ -#define ETH_TIMESTAMP_STATUS_TSTRGTERR3_Pos \ - (9UL) /*!< ETH TIMESTAMP_STATUS: TSTRGTERR3 (Bit 9) */ -#define ETH_TIMESTAMP_STATUS_TSTRGTERR3_Msk \ - (0x200UL) /*!< ETH TIMESTAMP_STATUS: TSTRGTERR3 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- ETH_PPS_CONTROL ------------------------------ */ -#define ETH_PPS_CONTROL_PPSCTRL_PPSCMD_Pos \ - (0UL) /*!< ETH PPS_CONTROL: PPSCTRL_PPSCMD (Bit 0) */ -#define ETH_PPS_CONTROL_PPSCTRL_PPSCMD_Msk \ - (0xfUL) /*!< ETH PPS_CONTROL: PPSCTRL_PPSCMD (Bitfield-Mask: 0x0f) */ -#define ETH_PPS_CONTROL_PPSEN0_Pos \ - (4UL) /*!< ETH PPS_CONTROL: PPSEN0 (Bit 4) */ -#define ETH_PPS_CONTROL_PPSEN0_Msk \ - (0x10UL) /*!< ETH PPS_CONTROL: PPSEN0 (Bitfield-Mask: 0x01) */ -#define ETH_PPS_CONTROL_TRGTMODSEL0_Pos \ - (5UL) /*!< ETH PPS_CONTROL: TRGTMODSEL0 (Bit 5) */ -#define ETH_PPS_CONTROL_TRGTMODSEL0_Msk \ - (0x60UL) /*!< ETH PPS_CONTROL: TRGTMODSEL0 (Bitfield-Mask: 0x03) */ -#define ETH_PPS_CONTROL_PPSCMD1_Pos \ - (8UL) /*!< ETH PPS_CONTROL: PPSCMD1 (Bit 8) */ -#define ETH_PPS_CONTROL_PPSCMD1_Msk \ - (0x700UL) /*!< ETH PPS_CONTROL: PPSCMD1 (Bitfield-Mask: 0x07) */ -#define ETH_PPS_CONTROL_TRGTMODSEL1_Pos \ - (13UL) /*!< ETH PPS_CONTROL: TRGTMODSEL1 (Bit 13) */ -#define ETH_PPS_CONTROL_TRGTMODSEL1_Msk \ - (0x6000UL) /*!< ETH PPS_CONTROL: TRGTMODSEL1 (Bitfield-Mask: 0x03) */ -#define ETH_PPS_CONTROL_PPSCMD2_Pos \ - (16UL) /*!< ETH PPS_CONTROL: PPSCMD2 (Bit 16) */ -#define ETH_PPS_CONTROL_PPSCMD2_Msk \ - (0x70000UL) /*!< ETH PPS_CONTROL: PPSCMD2 (Bitfield-Mask: 0x07) */ -#define ETH_PPS_CONTROL_TRGTMODSEL2_Pos \ - (21UL) /*!< ETH PPS_CONTROL: TRGTMODSEL2 (Bit 21) */ -#define ETH_PPS_CONTROL_TRGTMODSEL2_Msk \ - (0x600000UL) /*!< ETH PPS_CONTROL: TRGTMODSEL2 (Bitfield-Mask: 0x03) */ -#define ETH_PPS_CONTROL_PPSCMD3_Pos \ - (24UL) /*!< ETH PPS_CONTROL: PPSCMD3 (Bit 24) */ -#define ETH_PPS_CONTROL_PPSCMD3_Msk \ - (0x7000000UL) /*!< ETH PPS_CONTROL: PPSCMD3 (Bitfield-Mask: 0x07) */ -#define ETH_PPS_CONTROL_TRGTMODSEL3_Pos \ - (29UL) /*!< ETH PPS_CONTROL: TRGTMODSEL3 (Bit 29) */ -#define ETH_PPS_CONTROL_TRGTMODSEL3_Msk \ - (0x60000000UL) /*!< ETH PPS_CONTROL: TRGTMODSEL3 (Bitfield-Mask: 0x03) */ - -/* -------------------------------- ETH_BUS_MODE -------------------------------- */ -#define ETH_BUS_MODE_SWR_Pos \ - (0UL) /*!< ETH BUS_MODE: SWR (Bit 0) */ -#define ETH_BUS_MODE_SWR_Msk \ - (0x1UL) /*!< ETH BUS_MODE: SWR (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_DA_Pos \ - (1UL) /*!< ETH BUS_MODE: DA (Bit 1) */ -#define ETH_BUS_MODE_DA_Msk \ - (0x2UL) /*!< ETH BUS_MODE: DA (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_DSL_Pos \ - (2UL) /*!< ETH BUS_MODE: DSL (Bit 2) */ -#define ETH_BUS_MODE_DSL_Msk \ - (0x7cUL) /*!< ETH BUS_MODE: DSL (Bitfield-Mask: 0x1f) */ -#define ETH_BUS_MODE_ATDS_Pos \ - (7UL) /*!< ETH BUS_MODE: ATDS (Bit 7) */ -#define ETH_BUS_MODE_ATDS_Msk \ - (0x80UL) /*!< ETH BUS_MODE: ATDS (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_PBL_Pos \ - (8UL) /*!< ETH BUS_MODE: PBL (Bit 8) */ -#define ETH_BUS_MODE_PBL_Msk \ - (0x3f00UL) /*!< ETH BUS_MODE: PBL (Bitfield-Mask: 0x3f) */ -#define ETH_BUS_MODE_PR_Pos \ - (14UL) /*!< ETH BUS_MODE: PR (Bit 14) */ -#define ETH_BUS_MODE_PR_Msk \ - (0xc000UL) /*!< ETH BUS_MODE: PR (Bitfield-Mask: 0x03) */ -#define ETH_BUS_MODE_FB_Pos \ - (16UL) /*!< ETH BUS_MODE: FB (Bit 16) */ -#define ETH_BUS_MODE_FB_Msk \ - (0x10000UL) /*!< ETH BUS_MODE: FB (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_RPBL_Pos \ - (17UL) /*!< ETH BUS_MODE: RPBL (Bit 17) */ -#define ETH_BUS_MODE_RPBL_Msk \ - (0x7e0000UL) /*!< ETH BUS_MODE: RPBL (Bitfield-Mask: 0x3f) */ -#define ETH_BUS_MODE_USP_Pos \ - (23UL) /*!< ETH BUS_MODE: USP (Bit 23) */ -#define ETH_BUS_MODE_USP_Msk \ - (0x800000UL) /*!< ETH BUS_MODE: USP (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_EIGHTxPBL_Pos \ - (24UL) /*!< ETH BUS_MODE: EIGHTxPBL (Bit 24) */ -#define ETH_BUS_MODE_EIGHTxPBL_Msk \ - (0x1000000UL) /*!< ETH BUS_MODE: EIGHTxPBL (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_AAL_Pos \ - (25UL) /*!< ETH BUS_MODE: AAL (Bit 25) */ -#define ETH_BUS_MODE_AAL_Msk \ - (0x2000000UL) /*!< ETH BUS_MODE: AAL (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_MB_Pos \ - (26UL) /*!< ETH BUS_MODE: MB (Bit 26) */ -#define ETH_BUS_MODE_MB_Msk \ - (0x4000000UL) /*!< ETH BUS_MODE: MB (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_TXPR_Pos \ - (27UL) /*!< ETH BUS_MODE: TXPR (Bit 27) */ -#define ETH_BUS_MODE_TXPR_Msk \ - (0x8000000UL) /*!< ETH BUS_MODE: TXPR (Bitfield-Mask: 0x01) */ -#define ETH_BUS_MODE_PRWG_Pos \ - (28UL) /*!< ETH BUS_MODE: PRWG (Bit 28) */ -#define ETH_BUS_MODE_PRWG_Msk \ - (0x30000000UL) /*!< ETH BUS_MODE: PRWG (Bitfield-Mask: 0x03) */ - -/* -------------------------- ETH_TRANSMIT_POLL_DEMAND -------------------------- */ -#define ETH_TRANSMIT_POLL_DEMAND_TPD_Pos \ - (0UL) /*!< ETH TRANSMIT_POLL_DEMAND: TPD (Bit 0) */ -#define ETH_TRANSMIT_POLL_DEMAND_TPD_Msk \ - (0xffffffffUL) /*!< ETH TRANSMIT_POLL_DEMAND: TPD (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- ETH_RECEIVE_POLL_DEMAND -------------------------- */ -#define ETH_RECEIVE_POLL_DEMAND_RPD_Pos \ - (0UL) /*!< ETH RECEIVE_POLL_DEMAND: RPD (Bit 0) */ -#define ETH_RECEIVE_POLL_DEMAND_RPD_Msk \ - (0xffffffffUL) /*!< ETH RECEIVE_POLL_DEMAND: RPD (Bitfield-Mask: 0xffffffff) */ - -/* --------------------- ETH_RECEIVE_DESCRIPTOR_LIST_ADDRESS -------------------- */ -#define ETH_RECEIVE_DESCRIPTOR_LIST_ADDRESS_RDESLA_32bit_Pos \ - (2UL) /*!< ETH RECEIVE_DESCRIPTOR_LIST_ADDRESS: RDESLA_32bit (Bit 2) */ -#define ETH_RECEIVE_DESCRIPTOR_LIST_ADDRESS_RDESLA_32bit_Msk \ - (0xfffffffcUL) /*!< ETH RECEIVE_DESCRIPTOR_LIST_ADDRESS: RDESLA_32bit (Bitfield-Mask: \ - 0x3fffffff) */ - -/* -------------------- ETH_TRANSMIT_DESCRIPTOR_LIST_ADDRESS -------------------- */ -#define ETH_TRANSMIT_DESCRIPTOR_LIST_ADDRESS_TDESLA_32bit_Pos \ - (2UL) /*!< ETH TRANSMIT_DESCRIPTOR_LIST_ADDRESS: TDESLA_32bit (Bit 2) */ -#define ETH_TRANSMIT_DESCRIPTOR_LIST_ADDRESS_TDESLA_32bit_Msk \ - (0xfffffffcUL) /*!< ETH TRANSMIT_DESCRIPTOR_LIST_ADDRESS: TDESLA_32bit (Bitfield-Mask: \ - 0x3fffffff) */ - -/* --------------------------------- ETH_STATUS --------------------------------- */ -#define ETH_STATUS_TI_Pos (0UL) /*!< ETH STATUS: TI (Bit 0) */ -#define ETH_STATUS_TI_Msk \ - (0x1UL) /*!< ETH STATUS: TI (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_TPS_Pos (1UL) /*!< ETH STATUS: TPS (Bit 1) */ -#define ETH_STATUS_TPS_Msk \ - (0x2UL) /*!< ETH STATUS: TPS (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_TU_Pos (2UL) /*!< ETH STATUS: TU (Bit 2) */ -#define ETH_STATUS_TU_Msk \ - (0x4UL) /*!< ETH STATUS: TU (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_TJT_Pos (3UL) /*!< ETH STATUS: TJT (Bit 3) */ -#define ETH_STATUS_TJT_Msk \ - (0x8UL) /*!< ETH STATUS: TJT (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_OVF_Pos (4UL) /*!< ETH STATUS: OVF (Bit 4) */ -#define ETH_STATUS_OVF_Msk \ - (0x10UL) /*!< ETH STATUS: OVF (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_UNF_Pos (5UL) /*!< ETH STATUS: UNF (Bit 5) */ -#define ETH_STATUS_UNF_Msk \ - (0x20UL) /*!< ETH STATUS: UNF (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_RI_Pos (6UL) /*!< ETH STATUS: RI (Bit 6) */ -#define ETH_STATUS_RI_Msk \ - (0x40UL) /*!< ETH STATUS: RI (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_RU_Pos (7UL) /*!< ETH STATUS: RU (Bit 7) */ -#define ETH_STATUS_RU_Msk \ - (0x80UL) /*!< ETH STATUS: RU (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_RPS_Pos (8UL) /*!< ETH STATUS: RPS (Bit 8) */ -#define ETH_STATUS_RPS_Msk \ - (0x100UL) /*!< ETH STATUS: RPS (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_RWT_Pos (9UL) /*!< ETH STATUS: RWT (Bit 9) */ -#define ETH_STATUS_RWT_Msk \ - (0x200UL) /*!< ETH STATUS: RWT (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_ETI_Pos \ - (10UL) /*!< ETH STATUS: ETI (Bit 10) */ -#define ETH_STATUS_ETI_Msk \ - (0x400UL) /*!< ETH STATUS: ETI (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_FBI_Pos \ - (13UL) /*!< ETH STATUS: FBI (Bit 13) */ -#define ETH_STATUS_FBI_Msk \ - (0x2000UL) /*!< ETH STATUS: FBI (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_ERI_Pos \ - (14UL) /*!< ETH STATUS: ERI (Bit 14) */ -#define ETH_STATUS_ERI_Msk \ - (0x4000UL) /*!< ETH STATUS: ERI (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_AIS_Pos \ - (15UL) /*!< ETH STATUS: AIS (Bit 15) */ -#define ETH_STATUS_AIS_Msk \ - (0x8000UL) /*!< ETH STATUS: AIS (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_NIS_Pos \ - (16UL) /*!< ETH STATUS: NIS (Bit 16) */ -#define ETH_STATUS_NIS_Msk \ - (0x10000UL) /*!< ETH STATUS: NIS (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_RS_Pos (17UL) /*!< ETH STATUS: RS (Bit 17) */ -#define ETH_STATUS_RS_Msk \ - (0xe0000UL) /*!< ETH STATUS: RS (Bitfield-Mask: 0x07) */ -#define ETH_STATUS_TS_Pos (20UL) /*!< ETH STATUS: TS (Bit 20) */ -#define ETH_STATUS_TS_Msk \ - (0x700000UL) /*!< ETH STATUS: TS (Bitfield-Mask: 0x07) */ -#define ETH_STATUS_EB_Pos (23UL) /*!< ETH STATUS: EB (Bit 23) */ -#define ETH_STATUS_EB_Msk \ - (0x3800000UL) /*!< ETH STATUS: EB (Bitfield-Mask: 0x07) */ -#define ETH_STATUS_EMI_Pos \ - (27UL) /*!< ETH STATUS: EMI (Bit 27) */ -#define ETH_STATUS_EMI_Msk \ - (0x8000000UL) /*!< ETH STATUS: EMI (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_EPI_Pos \ - (28UL) /*!< ETH STATUS: EPI (Bit 28) */ -#define ETH_STATUS_EPI_Msk \ - (0x10000000UL) /*!< ETH STATUS: EPI (Bitfield-Mask: 0x01) */ -#define ETH_STATUS_TTI_Pos \ - (29UL) /*!< ETH STATUS: TTI (Bit 29) */ -#define ETH_STATUS_TTI_Msk \ - (0x20000000UL) /*!< ETH STATUS: TTI (Bitfield-Mask: 0x01) */ - -/* ----------------------------- ETH_OPERATION_MODE ----------------------------- */ -#define ETH_OPERATION_MODE_SR_Pos \ - (1UL) /*!< ETH OPERATION_MODE: SR (Bit 1) */ -#define ETH_OPERATION_MODE_SR_Msk \ - (0x2UL) /*!< ETH OPERATION_MODE: SR (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_OSF_Pos \ - (2UL) /*!< ETH OPERATION_MODE: OSF (Bit 2) */ -#define ETH_OPERATION_MODE_OSF_Msk \ - (0x4UL) /*!< ETH OPERATION_MODE: OSF (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_RTC_Pos \ - (3UL) /*!< ETH OPERATION_MODE: RTC (Bit 3) */ -#define ETH_OPERATION_MODE_RTC_Msk \ - (0x18UL) /*!< ETH OPERATION_MODE: RTC (Bitfield-Mask: 0x03) */ -#define ETH_OPERATION_MODE_FUF_Pos \ - (6UL) /*!< ETH OPERATION_MODE: FUF (Bit 6) */ -#define ETH_OPERATION_MODE_FUF_Msk \ - (0x40UL) /*!< ETH OPERATION_MODE: FUF (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_FEF_Pos \ - (7UL) /*!< ETH OPERATION_MODE: FEF (Bit 7) */ -#define ETH_OPERATION_MODE_FEF_Msk \ - (0x80UL) /*!< ETH OPERATION_MODE: FEF (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_ST_Pos \ - (13UL) /*!< ETH OPERATION_MODE: ST (Bit 13) */ -#define ETH_OPERATION_MODE_ST_Msk \ - (0x2000UL) /*!< ETH OPERATION_MODE: ST (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_TTC_Pos \ - (14UL) /*!< ETH OPERATION_MODE: TTC (Bit 14) */ -#define ETH_OPERATION_MODE_TTC_Msk \ - (0x1c000UL) /*!< ETH OPERATION_MODE: TTC (Bitfield-Mask: 0x07) */ -#define ETH_OPERATION_MODE_FTF_Pos \ - (20UL) /*!< ETH OPERATION_MODE: FTF (Bit 20) */ -#define ETH_OPERATION_MODE_FTF_Msk \ - (0x100000UL) /*!< ETH OPERATION_MODE: FTF (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_TSF_Pos \ - (21UL) /*!< ETH OPERATION_MODE: TSF (Bit 21) */ -#define ETH_OPERATION_MODE_TSF_Msk \ - (0x200000UL) /*!< ETH OPERATION_MODE: TSF (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_DFF_Pos \ - (24UL) /*!< ETH OPERATION_MODE: DFF (Bit 24) */ -#define ETH_OPERATION_MODE_DFF_Msk \ - (0x1000000UL) /*!< ETH OPERATION_MODE: DFF (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_RSF_Pos \ - (25UL) /*!< ETH OPERATION_MODE: RSF (Bit 25) */ -#define ETH_OPERATION_MODE_RSF_Msk \ - (0x2000000UL) /*!< ETH OPERATION_MODE: RSF (Bitfield-Mask: 0x01) */ -#define ETH_OPERATION_MODE_DT_Pos \ - (26UL) /*!< ETH OPERATION_MODE: DT (Bit 26) */ -#define ETH_OPERATION_MODE_DT_Msk \ - (0x4000000UL) /*!< ETH OPERATION_MODE: DT (Bitfield-Mask: 0x01) */ - -/* ---------------------------- ETH_INTERRUPT_ENABLE ---------------------------- */ -#define ETH_INTERRUPT_ENABLE_TIE_Pos \ - (0UL) /*!< ETH INTERRUPT_ENABLE: TIE (Bit 0) */ -#define ETH_INTERRUPT_ENABLE_TIE_Msk \ - (0x1UL) /*!< ETH INTERRUPT_ENABLE: TIE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_TSE_Pos \ - (1UL) /*!< ETH INTERRUPT_ENABLE: TSE (Bit 1) */ -#define ETH_INTERRUPT_ENABLE_TSE_Msk \ - (0x2UL) /*!< ETH INTERRUPT_ENABLE: TSE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_TUE_Pos \ - (2UL) /*!< ETH INTERRUPT_ENABLE: TUE (Bit 2) */ -#define ETH_INTERRUPT_ENABLE_TUE_Msk \ - (0x4UL) /*!< ETH INTERRUPT_ENABLE: TUE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_TJE_Pos \ - (3UL) /*!< ETH INTERRUPT_ENABLE: TJE (Bit 3) */ -#define ETH_INTERRUPT_ENABLE_TJE_Msk \ - (0x8UL) /*!< ETH INTERRUPT_ENABLE: TJE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_OVE_Pos \ - (4UL) /*!< ETH INTERRUPT_ENABLE: OVE (Bit 4) */ -#define ETH_INTERRUPT_ENABLE_OVE_Msk \ - (0x10UL) /*!< ETH INTERRUPT_ENABLE: OVE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_UNE_Pos \ - (5UL) /*!< ETH INTERRUPT_ENABLE: UNE (Bit 5) */ -#define ETH_INTERRUPT_ENABLE_UNE_Msk \ - (0x20UL) /*!< ETH INTERRUPT_ENABLE: UNE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_RIE_Pos \ - (6UL) /*!< ETH INTERRUPT_ENABLE: RIE (Bit 6) */ -#define ETH_INTERRUPT_ENABLE_RIE_Msk \ - (0x40UL) /*!< ETH INTERRUPT_ENABLE: RIE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_RUE_Pos \ - (7UL) /*!< ETH INTERRUPT_ENABLE: RUE (Bit 7) */ -#define ETH_INTERRUPT_ENABLE_RUE_Msk \ - (0x80UL) /*!< ETH INTERRUPT_ENABLE: RUE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_RSE_Pos \ - (8UL) /*!< ETH INTERRUPT_ENABLE: RSE (Bit 8) */ -#define ETH_INTERRUPT_ENABLE_RSE_Msk \ - (0x100UL) /*!< ETH INTERRUPT_ENABLE: RSE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_RWE_Pos \ - (9UL) /*!< ETH INTERRUPT_ENABLE: RWE (Bit 9) */ -#define ETH_INTERRUPT_ENABLE_RWE_Msk \ - (0x200UL) /*!< ETH INTERRUPT_ENABLE: RWE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_ETE_Pos \ - (10UL) /*!< ETH INTERRUPT_ENABLE: ETE (Bit 10) */ -#define ETH_INTERRUPT_ENABLE_ETE_Msk \ - (0x400UL) /*!< ETH INTERRUPT_ENABLE: ETE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_FBE_Pos \ - (13UL) /*!< ETH INTERRUPT_ENABLE: FBE (Bit 13) */ -#define ETH_INTERRUPT_ENABLE_FBE_Msk \ - (0x2000UL) /*!< ETH INTERRUPT_ENABLE: FBE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_ERE_Pos \ - (14UL) /*!< ETH INTERRUPT_ENABLE: ERE (Bit 14) */ -#define ETH_INTERRUPT_ENABLE_ERE_Msk \ - (0x4000UL) /*!< ETH INTERRUPT_ENABLE: ERE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_AIE_Pos \ - (15UL) /*!< ETH INTERRUPT_ENABLE: AIE (Bit 15) */ -#define ETH_INTERRUPT_ENABLE_AIE_Msk \ - (0x8000UL) /*!< ETH INTERRUPT_ENABLE: AIE (Bitfield-Mask: 0x01) */ -#define ETH_INTERRUPT_ENABLE_NIE_Pos \ - (16UL) /*!< ETH INTERRUPT_ENABLE: NIE (Bit 16) */ -#define ETH_INTERRUPT_ENABLE_NIE_Msk \ - (0x10000UL) /*!< ETH INTERRUPT_ENABLE: NIE (Bitfield-Mask: 0x01) */ - -/* ---------------- ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER ---------------- */ -#define ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER_MISFRMCNT_Pos \ - (0UL) /*!< ETH MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER: MISFRMCNT (Bit 0) */ -#define ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER_MISFRMCNT_Msk \ - (0xffffUL) /*!< ETH MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER: MISFRMCNT (Bitfield-Mask: \ - 0xffff) */ -#define ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER_MISCNTOVF_Pos \ - (16UL) /*!< ETH MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER: MISCNTOVF (Bit 16) */ -#define ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER_MISCNTOVF_Msk \ - (0x10000UL) /*!< ETH MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER: MISCNTOVF (Bitfield-Mask: 0x01) \ - */ -#define ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER_OVFFRMCNT_Pos \ - (17UL) /*!< ETH MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER: OVFFRMCNT (Bit 17) */ -#define ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER_OVFFRMCNT_Msk \ - (0xffe0000UL) /*!< ETH MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER: OVFFRMCNT (Bitfield-Mask: \ - 0x7ff) */ -#define ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER_OVFCNTOVF_Pos \ - (28UL) /*!< ETH MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER: OVFCNTOVF (Bit 28) */ -#define ETH_MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER_OVFCNTOVF_Msk \ - (0x10000000UL) /*!< ETH MISSED_FRAME_AND_BUFFER_OVERFLOW_COUNTER: OVFCNTOVF (Bitfield-Mask: \ - 0x01) */ - -/* -------------------- ETH_RECEIVE_INTERRUPT_WATCHDOG_TIMER -------------------- */ -#define ETH_RECEIVE_INTERRUPT_WATCHDOG_TIMER_RIWT_Pos \ - (0UL) /*!< ETH RECEIVE_INTERRUPT_WATCHDOG_TIMER: RIWT (Bit 0) */ -#define ETH_RECEIVE_INTERRUPT_WATCHDOG_TIMER_RIWT_Msk \ - (0xffUL) /*!< ETH RECEIVE_INTERRUPT_WATCHDOG_TIMER: RIWT (Bitfield-Mask: 0xff) */ - -/* ------------------------------- ETH_AHB_STATUS ------------------------------- */ -#define ETH_AHB_STATUS_AHBMS_Pos \ - (0UL) /*!< ETH AHB_STATUS: AHBMS (Bit 0) */ -#define ETH_AHB_STATUS_AHBMS_Msk \ - (0x1UL) /*!< ETH AHB_STATUS: AHBMS (Bitfield-Mask: 0x01) */ - -/* -------------------- ETH_CURRENT_HOST_TRANSMIT_DESCRIPTOR -------------------- */ -#define ETH_CURRENT_HOST_TRANSMIT_DESCRIPTOR_CURTDESAPTR_Pos \ - (0UL) /*!< ETH CURRENT_HOST_TRANSMIT_DESCRIPTOR: CURTDESAPTR (Bit 0) */ -#define ETH_CURRENT_HOST_TRANSMIT_DESCRIPTOR_CURTDESAPTR_Msk \ - (0xffffffffUL) /*!< ETH CURRENT_HOST_TRANSMIT_DESCRIPTOR: CURTDESAPTR (Bitfield-Mask: \ - 0xffffffff) */ - -/* --------------------- ETH_CURRENT_HOST_RECEIVE_DESCRIPTOR -------------------- */ -#define ETH_CURRENT_HOST_RECEIVE_DESCRIPTOR_CURRDESAPTR_Pos \ - (0UL) /*!< ETH CURRENT_HOST_RECEIVE_DESCRIPTOR: CURRDESAPTR (Bit 0) */ -#define ETH_CURRENT_HOST_RECEIVE_DESCRIPTOR_CURRDESAPTR_Msk \ - (0xffffffffUL) /*!< ETH CURRENT_HOST_RECEIVE_DESCRIPTOR: CURRDESAPTR (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------ ETH_CURRENT_HOST_TRANSMIT_BUFFER_ADDRESS ------------------ */ -#define ETH_CURRENT_HOST_TRANSMIT_BUFFER_ADDRESS_CURTBUFAPTR_Pos \ - (0UL) /*!< ETH CURRENT_HOST_TRANSMIT_BUFFER_ADDRESS: CURTBUFAPTR (Bit 0) */ -#define ETH_CURRENT_HOST_TRANSMIT_BUFFER_ADDRESS_CURTBUFAPTR_Msk \ - (0xffffffffUL) /*!< ETH CURRENT_HOST_TRANSMIT_BUFFER_ADDRESS: CURTBUFAPTR (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------- ETH_CURRENT_HOST_RECEIVE_BUFFER_ADDRESS ------------------ */ -#define ETH_CURRENT_HOST_RECEIVE_BUFFER_ADDRESS_CURRBUFAPTR_Pos \ - (0UL) /*!< ETH CURRENT_HOST_RECEIVE_BUFFER_ADDRESS: CURRBUFAPTR (Bit 0) */ -#define ETH_CURRENT_HOST_RECEIVE_BUFFER_ADDRESS_CURRBUFAPTR_Msk \ - (0xffffffffUL) /*!< ETH CURRENT_HOST_RECEIVE_BUFFER_ADDRESS: CURRBUFAPTR (Bitfield-Mask: \ - 0xffffffff) */ - -/* ------------------------------- ETH_HW_FEATURE ------------------------------- */ -#define ETH_HW_FEATURE_MIISEL_Pos \ - (0UL) /*!< ETH HW_FEATURE: MIISEL (Bit 0) */ -#define ETH_HW_FEATURE_MIISEL_Msk \ - (0x1UL) /*!< ETH HW_FEATURE: MIISEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_GMIISEL_Pos \ - (1UL) /*!< ETH HW_FEATURE: GMIISEL (Bit 1) */ -#define ETH_HW_FEATURE_GMIISEL_Msk \ - (0x2UL) /*!< ETH HW_FEATURE: GMIISEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_HDSEL_Pos \ - (2UL) /*!< ETH HW_FEATURE: HDSEL (Bit 2) */ -#define ETH_HW_FEATURE_HDSEL_Msk \ - (0x4UL) /*!< ETH HW_FEATURE: HDSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_EXTHASHEN_Pos \ - (3UL) /*!< ETH HW_FEATURE: EXTHASHEN (Bit 3) */ -#define ETH_HW_FEATURE_EXTHASHEN_Msk \ - (0x8UL) /*!< ETH HW_FEATURE: EXTHASHEN (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_HASHSEL_Pos \ - (4UL) /*!< ETH HW_FEATURE: HASHSEL (Bit 4) */ -#define ETH_HW_FEATURE_HASHSEL_Msk \ - (0x10UL) /*!< ETH HW_FEATURE: HASHSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_ADDMACADRSEL_Pos \ - (5UL) /*!< ETH HW_FEATURE: ADDMACADRSEL (Bit 5) */ -#define ETH_HW_FEATURE_ADDMACADRSEL_Msk \ - (0x20UL) /*!< ETH HW_FEATURE: ADDMACADRSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_PCSSEL_Pos \ - (6UL) /*!< ETH HW_FEATURE: PCSSEL (Bit 6) */ -#define ETH_HW_FEATURE_PCSSEL_Msk \ - (0x40UL) /*!< ETH HW_FEATURE: PCSSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_L3L4FLTREN_Pos \ - (7UL) /*!< ETH HW_FEATURE: L3L4FLTREN (Bit 7) */ -#define ETH_HW_FEATURE_L3L4FLTREN_Msk \ - (0x80UL) /*!< ETH HW_FEATURE: L3L4FLTREN (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_SMASEL_Pos \ - (8UL) /*!< ETH HW_FEATURE: SMASEL (Bit 8) */ -#define ETH_HW_FEATURE_SMASEL_Msk \ - (0x100UL) /*!< ETH HW_FEATURE: SMASEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_RWKSEL_Pos \ - (9UL) /*!< ETH HW_FEATURE: RWKSEL (Bit 9) */ -#define ETH_HW_FEATURE_RWKSEL_Msk \ - (0x200UL) /*!< ETH HW_FEATURE: RWKSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_MGKSEL_Pos \ - (10UL) /*!< ETH HW_FEATURE: MGKSEL (Bit 10) */ -#define ETH_HW_FEATURE_MGKSEL_Msk \ - (0x400UL) /*!< ETH HW_FEATURE: MGKSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_MMCSEL_Pos \ - (11UL) /*!< ETH HW_FEATURE: MMCSEL (Bit 11) */ -#define ETH_HW_FEATURE_MMCSEL_Msk \ - (0x800UL) /*!< ETH HW_FEATURE: MMCSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_TSVER1SEL_Pos \ - (12UL) /*!< ETH HW_FEATURE: TSVER1SEL (Bit 12) */ -#define ETH_HW_FEATURE_TSVER1SEL_Msk \ - (0x1000UL) /*!< ETH HW_FEATURE: TSVER1SEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_TSVER2SEL_Pos \ - (13UL) /*!< ETH HW_FEATURE: TSVER2SEL (Bit 13) */ -#define ETH_HW_FEATURE_TSVER2SEL_Msk \ - (0x2000UL) /*!< ETH HW_FEATURE: TSVER2SEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_EEESEL_Pos \ - (14UL) /*!< ETH HW_FEATURE: EEESEL (Bit 14) */ -#define ETH_HW_FEATURE_EEESEL_Msk \ - (0x4000UL) /*!< ETH HW_FEATURE: EEESEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_AVSEL_Pos \ - (15UL) /*!< ETH HW_FEATURE: AVSEL (Bit 15) */ -#define ETH_HW_FEATURE_AVSEL_Msk \ - (0x8000UL) /*!< ETH HW_FEATURE: AVSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_TXCOESEL_Pos \ - (16UL) /*!< ETH HW_FEATURE: TXCOESEL (Bit 16) */ -#define ETH_HW_FEATURE_TXCOESEL_Msk \ - (0x10000UL) /*!< ETH HW_FEATURE: TXCOESEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_RXTYP1COE_Pos \ - (17UL) /*!< ETH HW_FEATURE: RXTYP1COE (Bit 17) */ -#define ETH_HW_FEATURE_RXTYP1COE_Msk \ - (0x20000UL) /*!< ETH HW_FEATURE: RXTYP1COE (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_RXTYP2COE_Pos \ - (18UL) /*!< ETH HW_FEATURE: RXTYP2COE (Bit 18) */ -#define ETH_HW_FEATURE_RXTYP2COE_Msk \ - (0x40000UL) /*!< ETH HW_FEATURE: RXTYP2COE (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_RXFIFOSIZE_Pos \ - (19UL) /*!< ETH HW_FEATURE: RXFIFOSIZE (Bit 19) */ -#define ETH_HW_FEATURE_RXFIFOSIZE_Msk \ - (0x80000UL) /*!< ETH HW_FEATURE: RXFIFOSIZE (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_RXCHCNT_Pos \ - (20UL) /*!< ETH HW_FEATURE: RXCHCNT (Bit 20) */ -#define ETH_HW_FEATURE_RXCHCNT_Msk \ - (0x300000UL) /*!< ETH HW_FEATURE: RXCHCNT (Bitfield-Mask: 0x03) */ -#define ETH_HW_FEATURE_TXCHCNT_Pos \ - (22UL) /*!< ETH HW_FEATURE: TXCHCNT (Bit 22) */ -#define ETH_HW_FEATURE_TXCHCNT_Msk \ - (0xc00000UL) /*!< ETH HW_FEATURE: TXCHCNT (Bitfield-Mask: 0x03) */ -#define ETH_HW_FEATURE_ENHDESSEL_Pos \ - (24UL) /*!< ETH HW_FEATURE: ENHDESSEL (Bit 24) */ -#define ETH_HW_FEATURE_ENHDESSEL_Msk \ - (0x1000000UL) /*!< ETH HW_FEATURE: ENHDESSEL (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_INTTSEN_Pos \ - (25UL) /*!< ETH HW_FEATURE: INTTSEN (Bit 25) */ -#define ETH_HW_FEATURE_INTTSEN_Msk \ - (0x2000000UL) /*!< ETH HW_FEATURE: INTTSEN (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_FLEXIPPSEN_Pos \ - (26UL) /*!< ETH HW_FEATURE: FLEXIPPSEN (Bit 26) */ -#define ETH_HW_FEATURE_FLEXIPPSEN_Msk \ - (0x4000000UL) /*!< ETH HW_FEATURE: FLEXIPPSEN (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_SAVLANINS_Pos \ - (27UL) /*!< ETH HW_FEATURE: SAVLANINS (Bit 27) */ -#define ETH_HW_FEATURE_SAVLANINS_Msk \ - (0x8000000UL) /*!< ETH HW_FEATURE: SAVLANINS (Bitfield-Mask: 0x01) */ -#define ETH_HW_FEATURE_ACTPHYIF_Pos \ - (28UL) /*!< ETH HW_FEATURE: ACTPHYIF (Bit 28) */ -#define ETH_HW_FEATURE_ACTPHYIF_Msk \ - (0x70000000UL) /*!< ETH HW_FEATURE: ACTPHYIF (Bitfield-Mask: 0x07) */ - -/* ================================================================================ */ -/* ================ Group 'USB' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- USB_GOTGCTL -------------------------------- */ -#define USB_GOTGCTL_SesReqScs_Pos \ - (0UL) /*!< USB GOTGCTL: SesReqScs (Bit 0) */ -#define USB_GOTGCTL_SesReqScs_Msk \ - (0x1UL) /*!< USB GOTGCTL: SesReqScs (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_SesReq_Pos \ - (1UL) /*!< USB GOTGCTL: SesReq (Bit 1) */ -#define USB_GOTGCTL_SesReq_Msk \ - (0x2UL) /*!< USB GOTGCTL: SesReq (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_VbvalidOvEn_Pos \ - (2UL) /*!< USB GOTGCTL: VbvalidOvEn (Bit 2) */ -#define USB_GOTGCTL_VbvalidOvEn_Msk \ - (0x4UL) /*!< USB GOTGCTL: VbvalidOvEn (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_VbvalidOvVal_Pos \ - (3UL) /*!< USB GOTGCTL: VbvalidOvVal (Bit 3) */ -#define USB_GOTGCTL_VbvalidOvVal_Msk \ - (0x8UL) /*!< USB GOTGCTL: VbvalidOvVal (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_AvalidOvEn_Pos \ - (4UL) /*!< USB GOTGCTL: AvalidOvEn (Bit 4) */ -#define USB_GOTGCTL_AvalidOvEn_Msk \ - (0x10UL) /*!< USB GOTGCTL: AvalidOvEn (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_AvalidOvVal_Pos \ - (5UL) /*!< USB GOTGCTL: AvalidOvVal (Bit 5) */ -#define USB_GOTGCTL_AvalidOvVal_Msk \ - (0x20UL) /*!< USB GOTGCTL: AvalidOvVal (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_BvalidOvEn_Pos \ - (6UL) /*!< USB GOTGCTL: BvalidOvEn (Bit 6) */ -#define USB_GOTGCTL_BvalidOvEn_Msk \ - (0x40UL) /*!< USB GOTGCTL: BvalidOvEn (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_BvalidOvVal_Pos \ - (7UL) /*!< USB GOTGCTL: BvalidOvVal (Bit 7) */ -#define USB_GOTGCTL_BvalidOvVal_Msk \ - (0x80UL) /*!< USB GOTGCTL: BvalidOvVal (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_HstNegScs_Pos \ - (8UL) /*!< USB GOTGCTL: HstNegScs (Bit 8) */ -#define USB_GOTGCTL_HstNegScs_Msk \ - (0x100UL) /*!< USB GOTGCTL: HstNegScs (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_HNPReq_Pos \ - (9UL) /*!< USB GOTGCTL: HNPReq (Bit 9) */ -#define USB_GOTGCTL_HNPReq_Msk \ - (0x200UL) /*!< USB GOTGCTL: HNPReq (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_HstSetHNPEn_Pos \ - (10UL) /*!< USB GOTGCTL: HstSetHNPEn (Bit 10) */ -#define USB_GOTGCTL_HstSetHNPEn_Msk \ - (0x400UL) /*!< USB GOTGCTL: HstSetHNPEn (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_DevHNPEn_Pos \ - (11UL) /*!< USB GOTGCTL: DevHNPEn (Bit 11) */ -#define USB_GOTGCTL_DevHNPEn_Msk \ - (0x800UL) /*!< USB GOTGCTL: DevHNPEn (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_ConlDSts_Pos \ - (16UL) /*!< USB GOTGCTL: ConlDSts (Bit 16) */ -#define USB_GOTGCTL_ConlDSts_Msk \ - (0x10000UL) /*!< USB GOTGCTL: ConlDSts (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_DbncTime_Pos \ - (17UL) /*!< USB GOTGCTL: DbncTime (Bit 17) */ -#define USB_GOTGCTL_DbncTime_Msk \ - (0x20000UL) /*!< USB GOTGCTL: DbncTime (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_ASesVId_Pos \ - (18UL) /*!< USB GOTGCTL: ASesVId (Bit 18) */ -#define USB_GOTGCTL_ASesVId_Msk \ - (0x40000UL) /*!< USB GOTGCTL: ASesVId (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_BSesVld_Pos \ - (19UL) /*!< USB GOTGCTL: BSesVld (Bit 19) */ -#define USB_GOTGCTL_BSesVld_Msk \ - (0x80000UL) /*!< USB GOTGCTL: BSesVld (Bitfield-Mask: 0x01) */ -#define USB_GOTGCTL_OTGVer_Pos \ - (20UL) /*!< USB GOTGCTL: OTGVer (Bit 20) */ -#define USB_GOTGCTL_OTGVer_Msk \ - (0x100000UL) /*!< USB GOTGCTL: OTGVer (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GOTGINT -------------------------------- */ -#define USB_GOTGINT_SesEndDet_Pos \ - (2UL) /*!< USB GOTGINT: SesEndDet (Bit 2) */ -#define USB_GOTGINT_SesEndDet_Msk \ - (0x4UL) /*!< USB GOTGINT: SesEndDet (Bitfield-Mask: 0x01) */ -#define USB_GOTGINT_SesReqSucStsChng_Pos \ - (8UL) /*!< USB GOTGINT: SesReqSucStsChng (Bit 8) */ -#define USB_GOTGINT_SesReqSucStsChng_Msk \ - (0x100UL) /*!< USB GOTGINT: SesReqSucStsChng (Bitfield-Mask: 0x01) */ -#define USB_GOTGINT_HstNegSucStsChng_Pos \ - (9UL) /*!< USB GOTGINT: HstNegSucStsChng (Bit 9) */ -#define USB_GOTGINT_HstNegSucStsChng_Msk \ - (0x200UL) /*!< USB GOTGINT: HstNegSucStsChng (Bitfield-Mask: 0x01) */ -#define USB_GOTGINT_HstNegDet_Pos \ - (17UL) /*!< USB GOTGINT: HstNegDet (Bit 17) */ -#define USB_GOTGINT_HstNegDet_Msk \ - (0x20000UL) /*!< USB GOTGINT: HstNegDet (Bitfield-Mask: 0x01) */ -#define USB_GOTGINT_ADevTOUTChg_Pos \ - (18UL) /*!< USB GOTGINT: ADevTOUTChg (Bit 18) */ -#define USB_GOTGINT_ADevTOUTChg_Msk \ - (0x40000UL) /*!< USB GOTGINT: ADevTOUTChg (Bitfield-Mask: 0x01) */ -#define USB_GOTGINT_DbnceDone_Pos \ - (19UL) /*!< USB GOTGINT: DbnceDone (Bit 19) */ -#define USB_GOTGINT_DbnceDone_Msk \ - (0x80000UL) /*!< USB GOTGINT: DbnceDone (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GAHBCFG -------------------------------- */ -#define USB_GAHBCFG_GlblIntrMsk_Pos \ - (0UL) /*!< USB GAHBCFG: GlblIntrMsk (Bit 0) */ -#define USB_GAHBCFG_GlblIntrMsk_Msk \ - (0x1UL) /*!< USB GAHBCFG: GlblIntrMsk (Bitfield-Mask: 0x01) */ -#define USB_GAHBCFG_HBstLen_Pos \ - (1UL) /*!< USB GAHBCFG: HBstLen (Bit 1) */ -#define USB_GAHBCFG_HBstLen_Msk \ - (0x1eUL) /*!< USB GAHBCFG: HBstLen (Bitfield-Mask: 0x0f) */ -#define USB_GAHBCFG_DMAEn_Pos \ - (5UL) /*!< USB GAHBCFG: DMAEn (Bit 5) */ -#define USB_GAHBCFG_DMAEn_Msk \ - (0x20UL) /*!< USB GAHBCFG: DMAEn (Bitfield-Mask: 0x01) */ -#define USB_GAHBCFG_NPTxFEmpLvl_Pos \ - (7UL) /*!< USB GAHBCFG: NPTxFEmpLvl (Bit 7) */ -#define USB_GAHBCFG_NPTxFEmpLvl_Msk \ - (0x80UL) /*!< USB GAHBCFG: NPTxFEmpLvl (Bitfield-Mask: 0x01) */ -#define USB_GAHBCFG_PTxFEmpLvl_Pos \ - (8UL) /*!< USB GAHBCFG: PTxFEmpLvl (Bit 8) */ -#define USB_GAHBCFG_PTxFEmpLvl_Msk \ - (0x100UL) /*!< USB GAHBCFG: PTxFEmpLvl (Bitfield-Mask: 0x01) */ -#define USB_GAHBCFG_AHBSingle_Pos \ - (23UL) /*!< USB GAHBCFG: AHBSingle (Bit 23) */ -#define USB_GAHBCFG_AHBSingle_Msk \ - (0x800000UL) /*!< USB GAHBCFG: AHBSingle (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GUSBCFG -------------------------------- */ -#define USB_GUSBCFG_TOutCal_Pos \ - (0UL) /*!< USB GUSBCFG: TOutCal (Bit 0) */ -#define USB_GUSBCFG_TOutCal_Msk \ - (0x7UL) /*!< USB GUSBCFG: TOutCal (Bitfield-Mask: 0x07) */ -#define USB_GUSBCFG_PHYSel_Pos \ - (6UL) /*!< USB GUSBCFG: PHYSel (Bit 6) */ -#define USB_GUSBCFG_PHYSel_Msk \ - (0x40UL) /*!< USB GUSBCFG: PHYSel (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_SRPCap_Pos \ - (8UL) /*!< USB GUSBCFG: SRPCap (Bit 8) */ -#define USB_GUSBCFG_SRPCap_Msk \ - (0x100UL) /*!< USB GUSBCFG: SRPCap (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_HNPCap_Pos \ - (9UL) /*!< USB GUSBCFG: HNPCap (Bit 9) */ -#define USB_GUSBCFG_HNPCap_Msk \ - (0x200UL) /*!< USB GUSBCFG: HNPCap (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_USBTrdTim_Pos \ - (10UL) /*!< USB GUSBCFG: USBTrdTim (Bit 10) */ -#define USB_GUSBCFG_USBTrdTim_Msk \ - (0x3c00UL) /*!< USB GUSBCFG: USBTrdTim (Bitfield-Mask: 0x0f) */ -#define USB_GUSBCFG_OtgI2CSel_Pos \ - (16UL) /*!< USB GUSBCFG: OtgI2CSel (Bit 16) */ -#define USB_GUSBCFG_OtgI2CSel_Msk \ - (0x10000UL) /*!< USB GUSBCFG: OtgI2CSel (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_TxEndDelay_Pos \ - (28UL) /*!< USB GUSBCFG: TxEndDelay (Bit 28) */ -#define USB_GUSBCFG_TxEndDelay_Msk \ - (0x10000000UL) /*!< USB GUSBCFG: TxEndDelay (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_ForceHstMode_Pos \ - (29UL) /*!< USB GUSBCFG: ForceHstMode (Bit 29) */ -#define USB_GUSBCFG_ForceHstMode_Msk \ - (0x20000000UL) /*!< USB GUSBCFG: ForceHstMode (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_ForceDevMode_Pos \ - (30UL) /*!< USB GUSBCFG: ForceDevMode (Bit 30) */ -#define USB_GUSBCFG_ForceDevMode_Msk \ - (0x40000000UL) /*!< USB GUSBCFG: ForceDevMode (Bitfield-Mask: 0x01) */ -#define USB_GUSBCFG_CTP_Pos \ - (31UL) /*!< USB GUSBCFG: CTP (Bit 31) */ -#define USB_GUSBCFG_CTP_Msk \ - (0x80000000UL) /*!< USB GUSBCFG: CTP (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_GRSTCTL -------------------------------- */ -#define USB_GRSTCTL_CSftRst_Pos \ - (0UL) /*!< USB GRSTCTL: CSftRst (Bit 0) */ -#define USB_GRSTCTL_CSftRst_Msk \ - (0x1UL) /*!< USB GRSTCTL: CSftRst (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_FrmCntrRst_Pos \ - (2UL) /*!< USB GRSTCTL: FrmCntrRst (Bit 2) */ -#define USB_GRSTCTL_FrmCntrRst_Msk \ - (0x4UL) /*!< USB GRSTCTL: FrmCntrRst (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_RxFFlsh_Pos \ - (4UL) /*!< USB GRSTCTL: RxFFlsh (Bit 4) */ -#define USB_GRSTCTL_RxFFlsh_Msk \ - (0x10UL) /*!< USB GRSTCTL: RxFFlsh (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_TxFFlsh_Pos \ - (5UL) /*!< USB GRSTCTL: TxFFlsh (Bit 5) */ -#define USB_GRSTCTL_TxFFlsh_Msk \ - (0x20UL) /*!< USB GRSTCTL: TxFFlsh (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_TxFNum_Pos \ - (6UL) /*!< USB GRSTCTL: TxFNum (Bit 6) */ -#define USB_GRSTCTL_TxFNum_Msk \ - (0x7c0UL) /*!< USB GRSTCTL: TxFNum (Bitfield-Mask: 0x1f) */ -#define USB_GRSTCTL_DMAReq_Pos \ - (30UL) /*!< USB GRSTCTL: DMAReq (Bit 30) */ -#define USB_GRSTCTL_DMAReq_Msk \ - (0x40000000UL) /*!< USB GRSTCTL: DMAReq (Bitfield-Mask: 0x01) */ -#define USB_GRSTCTL_AHBIdle_Pos \ - (31UL) /*!< USB GRSTCTL: AHBIdle (Bit 31) */ -#define USB_GRSTCTL_AHBIdle_Msk \ - (0x80000000UL) /*!< USB GRSTCTL: AHBIdle (Bitfield-Mask: 0x01) */ - -/* ---------------------------- USB_GINTSTS_HOSTMODE ---------------------------- */ -#define USB_GINTSTS_HOSTMODE_CurMod_Pos \ - (0UL) /*!< USB GINTSTS_HOSTMODE: CurMod (Bit 0) */ -#define USB_GINTSTS_HOSTMODE_CurMod_Msk \ - (0x1UL) /*!< USB GINTSTS_HOSTMODE: CurMod (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_ModeMis_Pos \ - (1UL) /*!< USB GINTSTS_HOSTMODE: ModeMis (Bit 1) */ -#define USB_GINTSTS_HOSTMODE_ModeMis_Msk \ - (0x2UL) /*!< USB GINTSTS_HOSTMODE: ModeMis (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_OTGInt_Pos \ - (2UL) /*!< USB GINTSTS_HOSTMODE: OTGInt (Bit 2) */ -#define USB_GINTSTS_HOSTMODE_OTGInt_Msk \ - (0x4UL) /*!< USB GINTSTS_HOSTMODE: OTGInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_Sof_Pos \ - (3UL) /*!< USB GINTSTS_HOSTMODE: Sof (Bit 3) */ -#define USB_GINTSTS_HOSTMODE_Sof_Msk \ - (0x8UL) /*!< USB GINTSTS_HOSTMODE: Sof (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_RxFLvl_Pos \ - (4UL) /*!< USB GINTSTS_HOSTMODE: RxFLvl (Bit 4) */ -#define USB_GINTSTS_HOSTMODE_RxFLvl_Msk \ - (0x10UL) /*!< USB GINTSTS_HOSTMODE: RxFLvl (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_incomplP_Pos \ - (21UL) /*!< USB GINTSTS_HOSTMODE: incomplP (Bit 21) */ -#define USB_GINTSTS_HOSTMODE_incomplP_Msk \ - (0x200000UL) /*!< USB GINTSTS_HOSTMODE: incomplP (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_PrtInt_Pos \ - (24UL) /*!< USB GINTSTS_HOSTMODE: PrtInt (Bit 24) */ -#define USB_GINTSTS_HOSTMODE_PrtInt_Msk \ - (0x1000000UL) /*!< USB GINTSTS_HOSTMODE: PrtInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_HChInt_Pos \ - (25UL) /*!< USB GINTSTS_HOSTMODE: HChInt (Bit 25) */ -#define USB_GINTSTS_HOSTMODE_HChInt_Msk \ - (0x2000000UL) /*!< USB GINTSTS_HOSTMODE: HChInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_PTxFEmp_Pos \ - (26UL) /*!< USB GINTSTS_HOSTMODE: PTxFEmp (Bit 26) */ -#define USB_GINTSTS_HOSTMODE_PTxFEmp_Msk \ - (0x4000000UL) /*!< USB GINTSTS_HOSTMODE: PTxFEmp (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_ConIDStsChng_Pos \ - (28UL) /*!< USB GINTSTS_HOSTMODE: ConIDStsChng (Bit 28) */ -#define USB_GINTSTS_HOSTMODE_ConIDStsChng_Msk \ - (0x10000000UL) /*!< USB GINTSTS_HOSTMODE: ConIDStsChng (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_DisconnInt_Pos \ - (29UL) /*!< USB GINTSTS_HOSTMODE: DisconnInt (Bit 29) */ -#define USB_GINTSTS_HOSTMODE_DisconnInt_Msk \ - (0x20000000UL) /*!< USB GINTSTS_HOSTMODE: DisconnInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_SessReqInt_Pos \ - (30UL) /*!< USB GINTSTS_HOSTMODE: SessReqInt (Bit 30) */ -#define USB_GINTSTS_HOSTMODE_SessReqInt_Msk \ - (0x40000000UL) /*!< USB GINTSTS_HOSTMODE: SessReqInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_HOSTMODE_WkUpInt_Pos \ - (31UL) /*!< USB GINTSTS_HOSTMODE: WkUpInt (Bit 31) */ -#define USB_GINTSTS_HOSTMODE_WkUpInt_Msk \ - (0x80000000UL) /*!< USB GINTSTS_HOSTMODE: WkUpInt (Bitfield-Mask: 0x01) */ - -/* --------------------------- USB_GINTSTS_DEVICEMODE --------------------------- */ -#define USB_GINTSTS_DEVICEMODE_CurMod_Pos \ - (0UL) /*!< USB GINTSTS_DEVICEMODE: CurMod (Bit 0) */ -#define USB_GINTSTS_DEVICEMODE_CurMod_Msk \ - (0x1UL) /*!< USB GINTSTS_DEVICEMODE: CurMod (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_ModeMis_Pos \ - (1UL) /*!< USB GINTSTS_DEVICEMODE: ModeMis (Bit 1) */ -#define USB_GINTSTS_DEVICEMODE_ModeMis_Msk \ - (0x2UL) /*!< USB GINTSTS_DEVICEMODE: ModeMis (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_OTGInt_Pos \ - (2UL) /*!< USB GINTSTS_DEVICEMODE: OTGInt (Bit 2) */ -#define USB_GINTSTS_DEVICEMODE_OTGInt_Msk \ - (0x4UL) /*!< USB GINTSTS_DEVICEMODE: OTGInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_Sof_Pos \ - (3UL) /*!< USB GINTSTS_DEVICEMODE: Sof (Bit 3) */ -#define USB_GINTSTS_DEVICEMODE_Sof_Msk \ - (0x8UL) /*!< USB GINTSTS_DEVICEMODE: Sof (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_RxFLvl_Pos \ - (4UL) /*!< USB GINTSTS_DEVICEMODE: RxFLvl (Bit 4) */ -#define USB_GINTSTS_DEVICEMODE_RxFLvl_Msk \ - (0x10UL) /*!< USB GINTSTS_DEVICEMODE: RxFLvl (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_GINNakEff_Pos \ - (6UL) /*!< USB GINTSTS_DEVICEMODE: GINNakEff (Bit 6) */ -#define USB_GINTSTS_DEVICEMODE_GINNakEff_Msk \ - (0x40UL) /*!< USB GINTSTS_DEVICEMODE: GINNakEff (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_GOUTNakEff_Pos \ - (7UL) /*!< USB GINTSTS_DEVICEMODE: GOUTNakEff (Bit 7) */ -#define USB_GINTSTS_DEVICEMODE_GOUTNakEff_Msk \ - (0x80UL) /*!< USB GINTSTS_DEVICEMODE: GOUTNakEff (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_ErlySusp_Pos \ - (10UL) /*!< USB GINTSTS_DEVICEMODE: ErlySusp (Bit 10) */ -#define USB_GINTSTS_DEVICEMODE_ErlySusp_Msk \ - (0x400UL) /*!< USB GINTSTS_DEVICEMODE: ErlySusp (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_USBSusp_Pos \ - (11UL) /*!< USB GINTSTS_DEVICEMODE: USBSusp (Bit 11) */ -#define USB_GINTSTS_DEVICEMODE_USBSusp_Msk \ - (0x800UL) /*!< USB GINTSTS_DEVICEMODE: USBSusp (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_USBRst_Pos \ - (12UL) /*!< USB GINTSTS_DEVICEMODE: USBRst (Bit 12) */ -#define USB_GINTSTS_DEVICEMODE_USBRst_Msk \ - (0x1000UL) /*!< USB GINTSTS_DEVICEMODE: USBRst (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_EnumDone_Pos \ - (13UL) /*!< USB GINTSTS_DEVICEMODE: EnumDone (Bit 13) */ -#define USB_GINTSTS_DEVICEMODE_EnumDone_Msk \ - (0x2000UL) /*!< USB GINTSTS_DEVICEMODE: EnumDone (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_ISOOutDrop_Pos \ - (14UL) /*!< USB GINTSTS_DEVICEMODE: ISOOutDrop (Bit 14) */ -#define USB_GINTSTS_DEVICEMODE_ISOOutDrop_Msk \ - (0x4000UL) /*!< USB GINTSTS_DEVICEMODE: ISOOutDrop (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_EOPF_Pos \ - (15UL) /*!< USB GINTSTS_DEVICEMODE: EOPF (Bit 15) */ -#define USB_GINTSTS_DEVICEMODE_EOPF_Msk \ - (0x8000UL) /*!< USB GINTSTS_DEVICEMODE: EOPF (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_IEPInt_Pos \ - (18UL) /*!< USB GINTSTS_DEVICEMODE: IEPInt (Bit 18) */ -#define USB_GINTSTS_DEVICEMODE_IEPInt_Msk \ - (0x40000UL) /*!< USB GINTSTS_DEVICEMODE: IEPInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_OEPInt_Pos \ - (19UL) /*!< USB GINTSTS_DEVICEMODE: OEPInt (Bit 19) */ -#define USB_GINTSTS_DEVICEMODE_OEPInt_Msk \ - (0x80000UL) /*!< USB GINTSTS_DEVICEMODE: OEPInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_incompISOIN_Pos \ - (20UL) /*!< USB GINTSTS_DEVICEMODE: incompISOIN (Bit 20) */ -#define USB_GINTSTS_DEVICEMODE_incompISOIN_Msk \ - (0x100000UL) /*!< USB GINTSTS_DEVICEMODE: incompISOIN (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_incomplSOOUT_Pos \ - (21UL) /*!< USB GINTSTS_DEVICEMODE: incomplSOOUT (Bit 21) */ -#define USB_GINTSTS_DEVICEMODE_incomplSOOUT_Msk \ - (0x200000UL) /*!< USB GINTSTS_DEVICEMODE: incomplSOOUT (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_ConIDStsChng_Pos \ - (28UL) /*!< USB GINTSTS_DEVICEMODE: ConIDStsChng (Bit 28) */ -#define USB_GINTSTS_DEVICEMODE_ConIDStsChng_Msk \ - (0x10000000UL) /*!< USB GINTSTS_DEVICEMODE: ConIDStsChng (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_SessReqInt_Pos \ - (30UL) /*!< USB GINTSTS_DEVICEMODE: SessReqInt (Bit 30) */ -#define USB_GINTSTS_DEVICEMODE_SessReqInt_Msk \ - (0x40000000UL) /*!< USB GINTSTS_DEVICEMODE: SessReqInt (Bitfield-Mask: 0x01) */ -#define USB_GINTSTS_DEVICEMODE_WkUpInt_Pos \ - (31UL) /*!< USB GINTSTS_DEVICEMODE: WkUpInt (Bit 31) */ -#define USB_GINTSTS_DEVICEMODE_WkUpInt_Msk \ - (0x80000000UL) /*!< USB GINTSTS_DEVICEMODE: WkUpInt (Bitfield-Mask: 0x01) */ - -/* ---------------------------- USB_GINTMSK_HOSTMODE ---------------------------- */ -#define USB_GINTMSK_HOSTMODE_ModeMisMsk_Pos \ - (1UL) /*!< USB GINTMSK_HOSTMODE: ModeMisMsk (Bit 1) */ -#define USB_GINTMSK_HOSTMODE_ModeMisMsk_Msk \ - (0x2UL) /*!< USB GINTMSK_HOSTMODE: ModeMisMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_OTGIntMsk_Pos \ - (2UL) /*!< USB GINTMSK_HOSTMODE: OTGIntMsk (Bit 2) */ -#define USB_GINTMSK_HOSTMODE_OTGIntMsk_Msk \ - (0x4UL) /*!< USB GINTMSK_HOSTMODE: OTGIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_SofMsk_Pos \ - (3UL) /*!< USB GINTMSK_HOSTMODE: SofMsk (Bit 3) */ -#define USB_GINTMSK_HOSTMODE_SofMsk_Msk \ - (0x8UL) /*!< USB GINTMSK_HOSTMODE: SofMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_RxFLvlMsk_Pos \ - (4UL) /*!< USB GINTMSK_HOSTMODE: RxFLvlMsk (Bit 4) */ -#define USB_GINTMSK_HOSTMODE_RxFLvlMsk_Msk \ - (0x10UL) /*!< USB GINTMSK_HOSTMODE: RxFLvlMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_incomplPMsk_Pos \ - (21UL) /*!< USB GINTMSK_HOSTMODE: incomplPMsk (Bit 21) */ -#define USB_GINTMSK_HOSTMODE_incomplPMsk_Msk \ - (0x200000UL) /*!< USB GINTMSK_HOSTMODE: incomplPMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_PrtIntMsk_Pos \ - (24UL) /*!< USB GINTMSK_HOSTMODE: PrtIntMsk (Bit 24) */ -#define USB_GINTMSK_HOSTMODE_PrtIntMsk_Msk \ - (0x1000000UL) /*!< USB GINTMSK_HOSTMODE: PrtIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_HChIntMsk_Pos \ - (25UL) /*!< USB GINTMSK_HOSTMODE: HChIntMsk (Bit 25) */ -#define USB_GINTMSK_HOSTMODE_HChIntMsk_Msk \ - (0x2000000UL) /*!< USB GINTMSK_HOSTMODE: HChIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_PTxFEmpMsk_Pos \ - (26UL) /*!< USB GINTMSK_HOSTMODE: PTxFEmpMsk (Bit 26) */ -#define USB_GINTMSK_HOSTMODE_PTxFEmpMsk_Msk \ - (0x4000000UL) /*!< USB GINTMSK_HOSTMODE: PTxFEmpMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_ConIDStsChngMsk_Pos \ - (28UL) /*!< USB GINTMSK_HOSTMODE: ConIDStsChngMsk (Bit 28) */ -#define USB_GINTMSK_HOSTMODE_ConIDStsChngMsk_Msk \ - (0x10000000UL) /*!< USB GINTMSK_HOSTMODE: ConIDStsChngMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_DisconnIntMsk_Pos \ - (29UL) /*!< USB GINTMSK_HOSTMODE: DisconnIntMsk (Bit 29) */ -#define USB_GINTMSK_HOSTMODE_DisconnIntMsk_Msk \ - (0x20000000UL) /*!< USB GINTMSK_HOSTMODE: DisconnIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_SessReqIntMsk_Pos \ - (30UL) /*!< USB GINTMSK_HOSTMODE: SessReqIntMsk (Bit 30) */ -#define USB_GINTMSK_HOSTMODE_SessReqIntMsk_Msk \ - (0x40000000UL) /*!< USB GINTMSK_HOSTMODE: SessReqIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_HOSTMODE_WkUpIntMsk_Pos \ - (31UL) /*!< USB GINTMSK_HOSTMODE: WkUpIntMsk (Bit 31) */ -#define USB_GINTMSK_HOSTMODE_WkUpIntMsk_Msk \ - (0x80000000UL) /*!< USB GINTMSK_HOSTMODE: WkUpIntMsk (Bitfield-Mask: 0x01) */ - -/* --------------------------- USB_GINTMSK_DEVICEMODE --------------------------- */ -#define USB_GINTMSK_DEVICEMODE_ModeMisMsk_Pos \ - (1UL) /*!< USB GINTMSK_DEVICEMODE: ModeMisMsk (Bit 1) */ -#define USB_GINTMSK_DEVICEMODE_ModeMisMsk_Msk \ - (0x2UL) /*!< USB GINTMSK_DEVICEMODE: ModeMisMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_OTGIntMsk_Pos \ - (2UL) /*!< USB GINTMSK_DEVICEMODE: OTGIntMsk (Bit 2) */ -#define USB_GINTMSK_DEVICEMODE_OTGIntMsk_Msk \ - (0x4UL) /*!< USB GINTMSK_DEVICEMODE: OTGIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_SofMsk_Pos \ - (3UL) /*!< USB GINTMSK_DEVICEMODE: SofMsk (Bit 3) */ -#define USB_GINTMSK_DEVICEMODE_SofMsk_Msk \ - (0x8UL) /*!< USB GINTMSK_DEVICEMODE: SofMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_RxFLvlMsk_Pos \ - (4UL) /*!< USB GINTMSK_DEVICEMODE: RxFLvlMsk (Bit 4) */ -#define USB_GINTMSK_DEVICEMODE_RxFLvlMsk_Msk \ - (0x10UL) /*!< USB GINTMSK_DEVICEMODE: RxFLvlMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_GINNakEffMsk_Pos \ - (6UL) /*!< USB GINTMSK_DEVICEMODE: GINNakEffMsk (Bit 6) */ -#define USB_GINTMSK_DEVICEMODE_GINNakEffMsk_Msk \ - (0x40UL) /*!< USB GINTMSK_DEVICEMODE: GINNakEffMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_GOUTNakEffMsk_Pos \ - (7UL) /*!< USB GINTMSK_DEVICEMODE: GOUTNakEffMsk (Bit 7) */ -#define USB_GINTMSK_DEVICEMODE_GOUTNakEffMsk_Msk \ - (0x80UL) /*!< USB GINTMSK_DEVICEMODE: GOUTNakEffMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_ErlySuspMsk_Pos \ - (10UL) /*!< USB GINTMSK_DEVICEMODE: ErlySuspMsk (Bit 10) */ -#define USB_GINTMSK_DEVICEMODE_ErlySuspMsk_Msk \ - (0x400UL) /*!< USB GINTMSK_DEVICEMODE: ErlySuspMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_USBSuspMsk_Pos \ - (11UL) /*!< USB GINTMSK_DEVICEMODE: USBSuspMsk (Bit 11) */ -#define USB_GINTMSK_DEVICEMODE_USBSuspMsk_Msk \ - (0x800UL) /*!< USB GINTMSK_DEVICEMODE: USBSuspMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_USBRstMsk_Pos \ - (12UL) /*!< USB GINTMSK_DEVICEMODE: USBRstMsk (Bit 12) */ -#define USB_GINTMSK_DEVICEMODE_USBRstMsk_Msk \ - (0x1000UL) /*!< USB GINTMSK_DEVICEMODE: USBRstMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_EnumDoneMsk_Pos \ - (13UL) /*!< USB GINTMSK_DEVICEMODE: EnumDoneMsk (Bit 13) */ -#define USB_GINTMSK_DEVICEMODE_EnumDoneMsk_Msk \ - (0x2000UL) /*!< USB GINTMSK_DEVICEMODE: EnumDoneMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_ISOOutDropMsk_Pos \ - (14UL) /*!< USB GINTMSK_DEVICEMODE: ISOOutDropMsk (Bit 14) */ -#define USB_GINTMSK_DEVICEMODE_ISOOutDropMsk_Msk \ - (0x4000UL) /*!< USB GINTMSK_DEVICEMODE: ISOOutDropMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_EOPFMsk_Pos \ - (15UL) /*!< USB GINTMSK_DEVICEMODE: EOPFMsk (Bit 15) */ -#define USB_GINTMSK_DEVICEMODE_EOPFMsk_Msk \ - (0x8000UL) /*!< USB GINTMSK_DEVICEMODE: EOPFMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_IEPIntMsk_Pos \ - (18UL) /*!< USB GINTMSK_DEVICEMODE: IEPIntMsk (Bit 18) */ -#define USB_GINTMSK_DEVICEMODE_IEPIntMsk_Msk \ - (0x40000UL) /*!< USB GINTMSK_DEVICEMODE: IEPIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_OEPIntMsk_Pos \ - (19UL) /*!< USB GINTMSK_DEVICEMODE: OEPIntMsk (Bit 19) */ -#define USB_GINTMSK_DEVICEMODE_OEPIntMsk_Msk \ - (0x80000UL) /*!< USB GINTMSK_DEVICEMODE: OEPIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_incompISOINMsk_Pos \ - (20UL) /*!< USB GINTMSK_DEVICEMODE: incompISOINMsk (Bit 20) */ -#define USB_GINTMSK_DEVICEMODE_incompISOINMsk_Msk \ - (0x100000UL) /*!< USB GINTMSK_DEVICEMODE: incompISOINMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_incomplSOOUTMsk_Pos \ - (21UL) /*!< USB GINTMSK_DEVICEMODE: incomplSOOUTMsk (Bit 21) */ -#define USB_GINTMSK_DEVICEMODE_incomplSOOUTMsk_Msk \ - (0x200000UL) /*!< USB GINTMSK_DEVICEMODE: incomplSOOUTMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_ConIDStsChngMsk_Pos \ - (28UL) /*!< USB GINTMSK_DEVICEMODE: ConIDStsChngMsk (Bit 28) */ -#define USB_GINTMSK_DEVICEMODE_ConIDStsChngMsk_Msk \ - (0x10000000UL) /*!< USB GINTMSK_DEVICEMODE: ConIDStsChngMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_DisconnIntMsk_Pos \ - (29UL) /*!< USB GINTMSK_DEVICEMODE: DisconnIntMsk (Bit 29) */ -#define USB_GINTMSK_DEVICEMODE_DisconnIntMsk_Msk \ - (0x20000000UL) /*!< USB GINTMSK_DEVICEMODE: DisconnIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_SessReqIntMsk_Pos \ - (30UL) /*!< USB GINTMSK_DEVICEMODE: SessReqIntMsk (Bit 30) */ -#define USB_GINTMSK_DEVICEMODE_SessReqIntMsk_Msk \ - (0x40000000UL) /*!< USB GINTMSK_DEVICEMODE: SessReqIntMsk (Bitfield-Mask: 0x01) */ -#define USB_GINTMSK_DEVICEMODE_WkUpIntMsk_Pos \ - (31UL) /*!< USB GINTMSK_DEVICEMODE: WkUpIntMsk (Bit 31) */ -#define USB_GINTMSK_DEVICEMODE_WkUpIntMsk_Msk \ - (0x80000000UL) /*!< USB GINTMSK_DEVICEMODE: WkUpIntMsk (Bitfield-Mask: 0x01) */ - -/* ---------------------------- USB_GRXSTSR_HOSTMODE ---------------------------- */ -#define USB_GRXSTSR_HOSTMODE_ChNum_Pos \ - (0UL) /*!< USB GRXSTSR_HOSTMODE: ChNum (Bit 0) */ -#define USB_GRXSTSR_HOSTMODE_ChNum_Msk \ - (0xfUL) /*!< USB GRXSTSR_HOSTMODE: ChNum (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSR_HOSTMODE_BCnt_Pos \ - (4UL) /*!< USB GRXSTSR_HOSTMODE: BCnt (Bit 4) */ -#define USB_GRXSTSR_HOSTMODE_BCnt_Msk \ - (0x7ff0UL) /*!< USB GRXSTSR_HOSTMODE: BCnt (Bitfield-Mask: 0x7ff) */ -#define USB_GRXSTSR_HOSTMODE_DPID_Pos \ - (15UL) /*!< USB GRXSTSR_HOSTMODE: DPID (Bit 15) */ -#define USB_GRXSTSR_HOSTMODE_DPID_Msk \ - (0x18000UL) /*!< USB GRXSTSR_HOSTMODE: DPID (Bitfield-Mask: 0x03) */ -#define USB_GRXSTSR_HOSTMODE_PktSts_Pos \ - (17UL) /*!< USB GRXSTSR_HOSTMODE: PktSts (Bit 17) */ -#define USB_GRXSTSR_HOSTMODE_PktSts_Msk \ - (0x1e0000UL) /*!< USB GRXSTSR_HOSTMODE: PktSts (Bitfield-Mask: 0x0f) */ - -/* --------------------------- USB_GRXSTSR_DEVICEMODE --------------------------- */ -#define USB_GRXSTSR_DEVICEMODE_EPNum_Pos \ - (0UL) /*!< USB GRXSTSR_DEVICEMODE: EPNum (Bit 0) */ -#define USB_GRXSTSR_DEVICEMODE_EPNum_Msk \ - (0xfUL) /*!< USB GRXSTSR_DEVICEMODE: EPNum (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSR_DEVICEMODE_BCnt_Pos \ - (4UL) /*!< USB GRXSTSR_DEVICEMODE: BCnt (Bit 4) */ -#define USB_GRXSTSR_DEVICEMODE_BCnt_Msk \ - (0x7ff0UL) /*!< USB GRXSTSR_DEVICEMODE: BCnt (Bitfield-Mask: 0x7ff) */ -#define USB_GRXSTSR_DEVICEMODE_DPID_Pos \ - (15UL) /*!< USB GRXSTSR_DEVICEMODE: DPID (Bit 15) */ -#define USB_GRXSTSR_DEVICEMODE_DPID_Msk \ - (0x18000UL) /*!< USB GRXSTSR_DEVICEMODE: DPID (Bitfield-Mask: 0x03) */ -#define USB_GRXSTSR_DEVICEMODE_PktSts_Pos \ - (17UL) /*!< USB GRXSTSR_DEVICEMODE: PktSts (Bit 17) */ -#define USB_GRXSTSR_DEVICEMODE_PktSts_Msk \ - (0x1e0000UL) /*!< USB GRXSTSR_DEVICEMODE: PktSts (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSR_DEVICEMODE_FN_Pos \ - (21UL) /*!< USB GRXSTSR_DEVICEMODE: FN (Bit 21) */ -#define USB_GRXSTSR_DEVICEMODE_FN_Msk \ - (0x1e00000UL) /*!< USB GRXSTSR_DEVICEMODE: FN (Bitfield-Mask: 0x0f) */ - -/* --------------------------- USB_GRXSTSP_DEVICEMODE --------------------------- */ -#define USB_GRXSTSP_DEVICEMODE_EPNum_Pos \ - (0UL) /*!< USB GRXSTSP_DEVICEMODE: EPNum (Bit 0) */ -#define USB_GRXSTSP_DEVICEMODE_EPNum_Msk \ - (0xfUL) /*!< USB GRXSTSP_DEVICEMODE: EPNum (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSP_DEVICEMODE_BCnt_Pos \ - (4UL) /*!< USB GRXSTSP_DEVICEMODE: BCnt (Bit 4) */ -#define USB_GRXSTSP_DEVICEMODE_BCnt_Msk \ - (0x7ff0UL) /*!< USB GRXSTSP_DEVICEMODE: BCnt (Bitfield-Mask: 0x7ff) */ -#define USB_GRXSTSP_DEVICEMODE_DPID_Pos \ - (15UL) /*!< USB GRXSTSP_DEVICEMODE: DPID (Bit 15) */ -#define USB_GRXSTSP_DEVICEMODE_DPID_Msk \ - (0x18000UL) /*!< USB GRXSTSP_DEVICEMODE: DPID (Bitfield-Mask: 0x03) */ -#define USB_GRXSTSP_DEVICEMODE_PktSts_Pos \ - (17UL) /*!< USB GRXSTSP_DEVICEMODE: PktSts (Bit 17) */ -#define USB_GRXSTSP_DEVICEMODE_PktSts_Msk \ - (0x1e0000UL) /*!< USB GRXSTSP_DEVICEMODE: PktSts (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSP_DEVICEMODE_FN_Pos \ - (21UL) /*!< USB GRXSTSP_DEVICEMODE: FN (Bit 21) */ -#define USB_GRXSTSP_DEVICEMODE_FN_Msk \ - (0x1e00000UL) /*!< USB GRXSTSP_DEVICEMODE: FN (Bitfield-Mask: 0x0f) */ - -/* ---------------------------- USB_GRXSTSP_HOSTMODE ---------------------------- */ -#define USB_GRXSTSP_HOSTMODE_ChNum_Pos \ - (0UL) /*!< USB GRXSTSP_HOSTMODE: ChNum (Bit 0) */ -#define USB_GRXSTSP_HOSTMODE_ChNum_Msk \ - (0xfUL) /*!< USB GRXSTSP_HOSTMODE: ChNum (Bitfield-Mask: 0x0f) */ -#define USB_GRXSTSP_HOSTMODE_BCnt_Pos \ - (4UL) /*!< USB GRXSTSP_HOSTMODE: BCnt (Bit 4) */ -#define USB_GRXSTSP_HOSTMODE_BCnt_Msk \ - (0x7ff0UL) /*!< USB GRXSTSP_HOSTMODE: BCnt (Bitfield-Mask: 0x7ff) */ -#define USB_GRXSTSP_HOSTMODE_DPID_Pos \ - (15UL) /*!< USB GRXSTSP_HOSTMODE: DPID (Bit 15) */ -#define USB_GRXSTSP_HOSTMODE_DPID_Msk \ - (0x18000UL) /*!< USB GRXSTSP_HOSTMODE: DPID (Bitfield-Mask: 0x03) */ -#define USB_GRXSTSP_HOSTMODE_PktSts_Pos \ - (17UL) /*!< USB GRXSTSP_HOSTMODE: PktSts (Bit 17) */ -#define USB_GRXSTSP_HOSTMODE_PktSts_Msk \ - (0x1e0000UL) /*!< USB GRXSTSP_HOSTMODE: PktSts (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- USB_GRXFSIZ -------------------------------- */ -#define USB_GRXFSIZ_RxFDep_Pos \ - (0UL) /*!< USB GRXFSIZ: RxFDep (Bit 0) */ -#define USB_GRXFSIZ_RxFDep_Msk \ - (0xffffUL) /*!< USB GRXFSIZ: RxFDep (Bitfield-Mask: 0xffff) */ - -/* --------------------------- USB_GNPTXFSIZ_HOSTMODE --------------------------- */ -#define USB_GNPTXFSIZ_HOSTMODE_NPTxFStAddr_Pos \ - (0UL) /*!< USB GNPTXFSIZ_HOSTMODE: NPTxFStAddr (Bit 0) */ -#define USB_GNPTXFSIZ_HOSTMODE_NPTxFStAddr_Msk \ - (0xffffUL) /*!< USB GNPTXFSIZ_HOSTMODE: NPTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_GNPTXFSIZ_HOSTMODE_NPTxFDep_Pos \ - (16UL) /*!< USB GNPTXFSIZ_HOSTMODE: NPTxFDep (Bit 16) */ -#define USB_GNPTXFSIZ_HOSTMODE_NPTxFDep_Msk \ - (0xffff0000UL) /*!< USB GNPTXFSIZ_HOSTMODE: NPTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------- USB_GNPTXFSIZ_DEVICEMODE -------------------------- */ -#define USB_GNPTXFSIZ_DEVICEMODE_INEPTxF0StAddr_Pos \ - (0UL) /*!< USB GNPTXFSIZ_DEVICEMODE: INEPTxF0StAddr (Bit 0) */ -#define USB_GNPTXFSIZ_DEVICEMODE_INEPTxF0StAddr_Msk \ - (0xffffUL) /*!< USB GNPTXFSIZ_DEVICEMODE: INEPTxF0StAddr (Bitfield-Mask: 0xffff) */ -#define USB_GNPTXFSIZ_DEVICEMODE_INEPTxF0Dep_Pos \ - (16UL) /*!< USB GNPTXFSIZ_DEVICEMODE: INEPTxF0Dep (Bit 16) */ -#define USB_GNPTXFSIZ_DEVICEMODE_INEPTxF0Dep_Msk \ - (0xffff0000UL) /*!< USB GNPTXFSIZ_DEVICEMODE: INEPTxF0Dep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_GNPTXSTS -------------------------------- */ -#define USB_GNPTXSTS_NPTxFSpcAvail_Pos \ - (0UL) /*!< USB GNPTXSTS: NPTxFSpcAvail (Bit 0) */ -#define USB_GNPTXSTS_NPTxFSpcAvail_Msk \ - (0xffffUL) /*!< USB GNPTXSTS: NPTxFSpcAvail (Bitfield-Mask: 0xffff) */ -#define USB_GNPTXSTS_NPTxQSpcAvail_Pos \ - (16UL) /*!< USB GNPTXSTS: NPTxQSpcAvail (Bit 16) */ -#define USB_GNPTXSTS_NPTxQSpcAvail_Msk \ - (0xff0000UL) /*!< USB GNPTXSTS: NPTxQSpcAvail (Bitfield-Mask: 0xff) */ -#define USB_GNPTXSTS_NPTxQTop_Pos \ - (24UL) /*!< USB GNPTXSTS: NPTxQTop (Bit 24) */ -#define USB_GNPTXSTS_NPTxQTop_Msk \ - (0x7f000000UL) /*!< USB GNPTXSTS: NPTxQTop (Bitfield-Mask: 0x7f) */ - -/* ---------------------------------- USB_GUID ---------------------------------- */ -#define USB_GUID_MOD_REV_Pos \ - (0UL) /*!< USB GUID: MOD_REV (Bit 0) */ -#define USB_GUID_MOD_REV_Msk \ - (0xffUL) /*!< USB GUID: MOD_REV (Bitfield-Mask: 0xff) */ -#define USB_GUID_MOD_TYPE_Pos \ - (8UL) /*!< USB GUID: MOD_TYPE (Bit 8) */ -#define USB_GUID_MOD_TYPE_Msk \ - (0xff00UL) /*!< USB GUID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define USB_GUID_MOD_NUMBER_Pos \ - (16UL) /*!< USB GUID: MOD_NUMBER (Bit 16) */ -#define USB_GUID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< USB GUID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_GDFIFOCFG ------------------------------- */ -#define USB_GDFIFOCFG_GDFIFOCfg_Pos \ - (0UL) /*!< USB GDFIFOCFG: GDFIFOCfg (Bit 0) */ -#define USB_GDFIFOCFG_GDFIFOCfg_Msk \ - (0xffffUL) /*!< USB GDFIFOCFG: GDFIFOCfg (Bitfield-Mask: 0xffff) */ -#define USB_GDFIFOCFG_EPInfoBaseAddr_Pos \ - (16UL) /*!< USB GDFIFOCFG: EPInfoBaseAddr (Bit 16) */ -#define USB_GDFIFOCFG_EPInfoBaseAddr_Msk \ - (0xffff0000UL) /*!< USB GDFIFOCFG: EPInfoBaseAddr (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_HPTXFSIZ -------------------------------- */ -#define USB_HPTXFSIZ_PTxFStAddr_Pos \ - (0UL) /*!< USB HPTXFSIZ: PTxFStAddr (Bit 0) */ -#define USB_HPTXFSIZ_PTxFStAddr_Msk \ - (0xffffUL) /*!< USB HPTXFSIZ: PTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_HPTXFSIZ_PTxFSize_Pos \ - (16UL) /*!< USB HPTXFSIZ: PTxFSize (Bit 16) */ -#define USB_HPTXFSIZ_PTxFSize_Msk \ - (0xffff0000UL) /*!< USB HPTXFSIZ: PTxFSize (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF1 -------------------------------- */ -#define USB_DIEPTXF1_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF1: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF1_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF1: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF1_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF1: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF1_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF1: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF2 -------------------------------- */ -#define USB_DIEPTXF2_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF2: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF2_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF2: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF2_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF2: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF2_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF2: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF3 -------------------------------- */ -#define USB_DIEPTXF3_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF3: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF3_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF3: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF3_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF3: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF3_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF3: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF4 -------------------------------- */ -#define USB_DIEPTXF4_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF4: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF4_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF4: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF4_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF4: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF4_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF4: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF5 -------------------------------- */ -#define USB_DIEPTXF5_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF5: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF5_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF5: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF5_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF5: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF5_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF5: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DIEPTXF6 -------------------------------- */ -#define USB_DIEPTXF6_INEPnTxFStAddr_Pos \ - (0UL) /*!< USB DIEPTXF6: INEPnTxFStAddr (Bit 0) */ -#define USB_DIEPTXF6_INEPnTxFStAddr_Msk \ - (0xffffUL) /*!< USB DIEPTXF6: INEPnTxFStAddr (Bitfield-Mask: 0xffff) */ -#define USB_DIEPTXF6_INEPnTxFDep_Pos \ - (16UL) /*!< USB DIEPTXF6: INEPnTxFDep (Bit 16) */ -#define USB_DIEPTXF6_INEPnTxFDep_Msk \ - (0xffff0000UL) /*!< USB DIEPTXF6: INEPnTxFDep (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- USB_HCFG ---------------------------------- */ -#define USB_HCFG_FSLSPclkSel_Pos \ - (0UL) /*!< USB HCFG: FSLSPclkSel (Bit 0) */ -#define USB_HCFG_FSLSPclkSel_Msk \ - (0x3UL) /*!< USB HCFG: FSLSPclkSel (Bitfield-Mask: 0x03) */ -#define USB_HCFG_FSLSSupp_Pos \ - (2UL) /*!< USB HCFG: FSLSSupp (Bit 2) */ -#define USB_HCFG_FSLSSupp_Msk \ - (0x4UL) /*!< USB HCFG: FSLSSupp (Bitfield-Mask: 0x01) */ -#define USB_HCFG_DescDMA_Pos \ - (23UL) /*!< USB HCFG: DescDMA (Bit 23) */ -#define USB_HCFG_DescDMA_Msk \ - (0x800000UL) /*!< USB HCFG: DescDMA (Bitfield-Mask: 0x01) */ -#define USB_HCFG_FrListEn_Pos \ - (24UL) /*!< USB HCFG: FrListEn (Bit 24) */ -#define USB_HCFG_FrListEn_Msk \ - (0x3000000UL) /*!< USB HCFG: FrListEn (Bitfield-Mask: 0x03) */ -#define USB_HCFG_PerSchedEna_Pos \ - (26UL) /*!< USB HCFG: PerSchedEna (Bit 26) */ -#define USB_HCFG_PerSchedEna_Msk \ - (0x4000000UL) /*!< USB HCFG: PerSchedEna (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- USB_HFIR ---------------------------------- */ -#define USB_HFIR_FrInt_Pos (0UL) /*!< USB HFIR: FrInt (Bit 0) */ -#define USB_HFIR_FrInt_Msk \ - (0xffffUL) /*!< USB HFIR: FrInt (Bitfield-Mask: 0xffff) */ -#define USB_HFIR_HFIRRldCtrl_Pos \ - (16UL) /*!< USB HFIR: HFIRRldCtrl (Bit 16) */ -#define USB_HFIR_HFIRRldCtrl_Msk \ - (0x10000UL) /*!< USB HFIR: HFIRRldCtrl (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- USB_HFNUM --------------------------------- */ -#define USB_HFNUM_FrNum_Pos \ - (0UL) /*!< USB HFNUM: FrNum (Bit 0) */ -#define USB_HFNUM_FrNum_Msk \ - (0xffffUL) /*!< USB HFNUM: FrNum (Bitfield-Mask: 0xffff) */ -#define USB_HFNUM_FrRem_Pos \ - (16UL) /*!< USB HFNUM: FrRem (Bit 16) */ -#define USB_HFNUM_FrRem_Msk \ - (0xffff0000UL) /*!< USB HFNUM: FrRem (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- USB_HPTXSTS -------------------------------- */ -#define USB_HPTXSTS_PTxFSpcAvail_Pos \ - (0UL) /*!< USB HPTXSTS: PTxFSpcAvail (Bit 0) */ -#define USB_HPTXSTS_PTxFSpcAvail_Msk \ - (0xffffUL) /*!< USB HPTXSTS: PTxFSpcAvail (Bitfield-Mask: 0xffff) */ -#define USB_HPTXSTS_PTxQSpcAvail_Pos \ - (16UL) /*!< USB HPTXSTS: PTxQSpcAvail (Bit 16) */ -#define USB_HPTXSTS_PTxQSpcAvail_Msk \ - (0xff0000UL) /*!< USB HPTXSTS: PTxQSpcAvail (Bitfield-Mask: 0xff) */ -#define USB_HPTXSTS_PTxQTop_Pos \ - (24UL) /*!< USB HPTXSTS: PTxQTop (Bit 24) */ -#define USB_HPTXSTS_PTxQTop_Msk \ - (0xff000000UL) /*!< USB HPTXSTS: PTxQTop (Bitfield-Mask: 0xff) */ - -/* ---------------------------------- USB_HAINT --------------------------------- */ -#define USB_HAINT_HAINT_Pos \ - (0UL) /*!< USB HAINT: HAINT (Bit 0) */ -#define USB_HAINT_HAINT_Msk \ - (0x3fffUL) /*!< USB HAINT: HAINT (Bitfield-Mask: 0x3fff) */ - -/* -------------------------------- USB_HAINTMSK -------------------------------- */ -#define USB_HAINTMSK_HAINTMsk_Pos \ - (0UL) /*!< USB HAINTMSK: HAINTMsk (Bit 0) */ -#define USB_HAINTMSK_HAINTMsk_Msk \ - (0x3fffUL) /*!< USB HAINTMSK: HAINTMsk (Bitfield-Mask: 0x3fff) */ - -/* -------------------------------- USB_HFLBADDR -------------------------------- */ -#define USB_HFLBADDR_Starting_Address_Pos \ - (0UL) /*!< USB HFLBADDR: Starting_Address (Bit 0) */ -#define USB_HFLBADDR_Starting_Address_Msk \ - (0xffffffffUL) /*!< USB HFLBADDR: Starting_Address (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- USB_HPRT ---------------------------------- */ -#define USB_HPRT_PrtConnSts_Pos \ - (0UL) /*!< USB HPRT: PrtConnSts (Bit 0) */ -#define USB_HPRT_PrtConnSts_Msk \ - (0x1UL) /*!< USB HPRT: PrtConnSts (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtConnDet_Pos \ - (1UL) /*!< USB HPRT: PrtConnDet (Bit 1) */ -#define USB_HPRT_PrtConnDet_Msk \ - (0x2UL) /*!< USB HPRT: PrtConnDet (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtEna_Pos \ - (2UL) /*!< USB HPRT: PrtEna (Bit 2) */ -#define USB_HPRT_PrtEna_Msk \ - (0x4UL) /*!< USB HPRT: PrtEna (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtEnChng_Pos \ - (3UL) /*!< USB HPRT: PrtEnChng (Bit 3) */ -#define USB_HPRT_PrtEnChng_Msk \ - (0x8UL) /*!< USB HPRT: PrtEnChng (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtOvrCurrAct_Pos \ - (4UL) /*!< USB HPRT: PrtOvrCurrAct (Bit 4) */ -#define USB_HPRT_PrtOvrCurrAct_Msk \ - (0x10UL) /*!< USB HPRT: PrtOvrCurrAct (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtOvrCurrChng_Pos \ - (5UL) /*!< USB HPRT: PrtOvrCurrChng (Bit 5) */ -#define USB_HPRT_PrtOvrCurrChng_Msk \ - (0x20UL) /*!< USB HPRT: PrtOvrCurrChng (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtRes_Pos \ - (6UL) /*!< USB HPRT: PrtRes (Bit 6) */ -#define USB_HPRT_PrtRes_Msk \ - (0x40UL) /*!< USB HPRT: PrtRes (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtSusp_Pos \ - (7UL) /*!< USB HPRT: PrtSusp (Bit 7) */ -#define USB_HPRT_PrtSusp_Msk \ - (0x80UL) /*!< USB HPRT: PrtSusp (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtRst_Pos \ - (8UL) /*!< USB HPRT: PrtRst (Bit 8) */ -#define USB_HPRT_PrtRst_Msk \ - (0x100UL) /*!< USB HPRT: PrtRst (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtLnSts_Pos \ - (10UL) /*!< USB HPRT: PrtLnSts (Bit 10) */ -#define USB_HPRT_PrtLnSts_Msk \ - (0xc00UL) /*!< USB HPRT: PrtLnSts (Bitfield-Mask: 0x03) */ -#define USB_HPRT_PrtPwr_Pos \ - (12UL) /*!< USB HPRT: PrtPwr (Bit 12) */ -#define USB_HPRT_PrtPwr_Msk \ - (0x1000UL) /*!< USB HPRT: PrtPwr (Bitfield-Mask: 0x01) */ -#define USB_HPRT_PrtSpd_Pos \ - (17UL) /*!< USB HPRT: PrtSpd (Bit 17) */ -#define USB_HPRT_PrtSpd_Msk \ - (0x60000UL) /*!< USB HPRT: PrtSpd (Bitfield-Mask: 0x03) */ - -/* ---------------------------------- USB_DCFG ---------------------------------- */ -#define USB_DCFG_DevSpd_Pos \ - (0UL) /*!< USB DCFG: DevSpd (Bit 0) */ -#define USB_DCFG_DevSpd_Msk \ - (0x3UL) /*!< USB DCFG: DevSpd (Bitfield-Mask: 0x03) */ -#define USB_DCFG_NZStsOUTHShk_Pos \ - (2UL) /*!< USB DCFG: NZStsOUTHShk (Bit 2) */ -#define USB_DCFG_NZStsOUTHShk_Msk \ - (0x4UL) /*!< USB DCFG: NZStsOUTHShk (Bitfield-Mask: 0x01) */ -#define USB_DCFG_DevAddr_Pos \ - (4UL) /*!< USB DCFG: DevAddr (Bit 4) */ -#define USB_DCFG_DevAddr_Msk \ - (0x7f0UL) /*!< USB DCFG: DevAddr (Bitfield-Mask: 0x7f) */ -#define USB_DCFG_PerFrInt_Pos \ - (11UL) /*!< USB DCFG: PerFrInt (Bit 11) */ -#define USB_DCFG_PerFrInt_Msk \ - (0x1800UL) /*!< USB DCFG: PerFrInt (Bitfield-Mask: 0x03) */ -#define USB_DCFG_DescDMA_Pos \ - (23UL) /*!< USB DCFG: DescDMA (Bit 23) */ -#define USB_DCFG_DescDMA_Msk \ - (0x800000UL) /*!< USB DCFG: DescDMA (Bitfield-Mask: 0x01) */ -#define USB_DCFG_PerSchIntvl_Pos \ - (24UL) /*!< USB DCFG: PerSchIntvl (Bit 24) */ -#define USB_DCFG_PerSchIntvl_Msk \ - (0x3000000UL) /*!< USB DCFG: PerSchIntvl (Bitfield-Mask: 0x03) */ - -/* ---------------------------------- USB_DCTL ---------------------------------- */ -#define USB_DCTL_RmtWkUpSig_Pos \ - (0UL) /*!< USB DCTL: RmtWkUpSig (Bit 0) */ -#define USB_DCTL_RmtWkUpSig_Msk \ - (0x1UL) /*!< USB DCTL: RmtWkUpSig (Bitfield-Mask: 0x01) */ -#define USB_DCTL_SftDiscon_Pos \ - (1UL) /*!< USB DCTL: SftDiscon (Bit 1) */ -#define USB_DCTL_SftDiscon_Msk \ - (0x2UL) /*!< USB DCTL: SftDiscon (Bitfield-Mask: 0x01) */ -#define USB_DCTL_GNPINNakSts_Pos \ - (2UL) /*!< USB DCTL: GNPINNakSts (Bit 2) */ -#define USB_DCTL_GNPINNakSts_Msk \ - (0x4UL) /*!< USB DCTL: GNPINNakSts (Bitfield-Mask: 0x01) */ -#define USB_DCTL_GOUTNakSts_Pos \ - (3UL) /*!< USB DCTL: GOUTNakSts (Bit 3) */ -#define USB_DCTL_GOUTNakSts_Msk \ - (0x8UL) /*!< USB DCTL: GOUTNakSts (Bitfield-Mask: 0x01) */ -#define USB_DCTL_SGNPInNak_Pos \ - (7UL) /*!< USB DCTL: SGNPInNak (Bit 7) */ -#define USB_DCTL_SGNPInNak_Msk \ - (0x80UL) /*!< USB DCTL: SGNPInNak (Bitfield-Mask: 0x01) */ -#define USB_DCTL_CGNPInNak_Pos \ - (8UL) /*!< USB DCTL: CGNPInNak (Bit 8) */ -#define USB_DCTL_CGNPInNak_Msk \ - (0x100UL) /*!< USB DCTL: CGNPInNak (Bitfield-Mask: 0x01) */ -#define USB_DCTL_SGOUTNak_Pos \ - (9UL) /*!< USB DCTL: SGOUTNak (Bit 9) */ -#define USB_DCTL_SGOUTNak_Msk \ - (0x200UL) /*!< USB DCTL: SGOUTNak (Bitfield-Mask: 0x01) */ -#define USB_DCTL_CGOUTNak_Pos \ - (10UL) /*!< USB DCTL: CGOUTNak (Bit 10) */ -#define USB_DCTL_CGOUTNak_Msk \ - (0x400UL) /*!< USB DCTL: CGOUTNak (Bitfield-Mask: 0x01) */ -#define USB_DCTL_GMC_Pos (13UL) /*!< USB DCTL: GMC (Bit 13) */ -#define USB_DCTL_GMC_Msk \ - (0x6000UL) /*!< USB DCTL: GMC (Bitfield-Mask: 0x03) */ -#define USB_DCTL_IgnrFrmNum_Pos \ - (15UL) /*!< USB DCTL: IgnrFrmNum (Bit 15) */ -#define USB_DCTL_IgnrFrmNum_Msk \ - (0x8000UL) /*!< USB DCTL: IgnrFrmNum (Bitfield-Mask: 0x01) */ -#define USB_DCTL_NakOnBble_Pos \ - (16UL) /*!< USB DCTL: NakOnBble (Bit 16) */ -#define USB_DCTL_NakOnBble_Msk \ - (0x10000UL) /*!< USB DCTL: NakOnBble (Bitfield-Mask: 0x01) */ -#define USB_DCTL_EnContOnBNA_Pos \ - (17UL) /*!< USB DCTL: EnContOnBNA (Bit 17) */ -#define USB_DCTL_EnContOnBNA_Msk \ - (0x20000UL) /*!< USB DCTL: EnContOnBNA (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- USB_DSTS ---------------------------------- */ -#define USB_DSTS_SuspSts_Pos \ - (0UL) /*!< USB DSTS: SuspSts (Bit 0) */ -#define USB_DSTS_SuspSts_Msk \ - (0x1UL) /*!< USB DSTS: SuspSts (Bitfield-Mask: 0x01) */ -#define USB_DSTS_EnumSpd_Pos \ - (1UL) /*!< USB DSTS: EnumSpd (Bit 1) */ -#define USB_DSTS_EnumSpd_Msk \ - (0x6UL) /*!< USB DSTS: EnumSpd (Bitfield-Mask: 0x03) */ -#define USB_DSTS_ErrticErr_Pos \ - (3UL) /*!< USB DSTS: ErrticErr (Bit 3) */ -#define USB_DSTS_ErrticErr_Msk \ - (0x8UL) /*!< USB DSTS: ErrticErr (Bitfield-Mask: 0x01) */ -#define USB_DSTS_SOFFN_Pos (8UL) /*!< USB DSTS: SOFFN (Bit 8) */ -#define USB_DSTS_SOFFN_Msk \ - (0x3fff00UL) /*!< USB DSTS: SOFFN (Bitfield-Mask: 0x3fff) */ - -/* --------------------------------- USB_DIEPMSK -------------------------------- */ -#define USB_DIEPMSK_XferComplMsk_Pos \ - (0UL) /*!< USB DIEPMSK: XferComplMsk (Bit 0) */ -#define USB_DIEPMSK_XferComplMsk_Msk \ - (0x1UL) /*!< USB DIEPMSK: XferComplMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_EPDisbldMsk_Pos \ - (1UL) /*!< USB DIEPMSK: EPDisbldMsk (Bit 1) */ -#define USB_DIEPMSK_EPDisbldMsk_Msk \ - (0x2UL) /*!< USB DIEPMSK: EPDisbldMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_AHBErrMsk_Pos \ - (2UL) /*!< USB DIEPMSK: AHBErrMsk (Bit 2) */ -#define USB_DIEPMSK_AHBErrMsk_Msk \ - (0x4UL) /*!< USB DIEPMSK: AHBErrMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_TimeOUTMsk_Pos \ - (3UL) /*!< USB DIEPMSK: TimeOUTMsk (Bit 3) */ -#define USB_DIEPMSK_TimeOUTMsk_Msk \ - (0x8UL) /*!< USB DIEPMSK: TimeOUTMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_INTknTXFEmpMsk_Pos \ - (4UL) /*!< USB DIEPMSK: INTknTXFEmpMsk (Bit 4) */ -#define USB_DIEPMSK_INTknTXFEmpMsk_Msk \ - (0x10UL) /*!< USB DIEPMSK: INTknTXFEmpMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_INEPNakEffMsk_Pos \ - (6UL) /*!< USB DIEPMSK: INEPNakEffMsk (Bit 6) */ -#define USB_DIEPMSK_INEPNakEffMsk_Msk \ - (0x40UL) /*!< USB DIEPMSK: INEPNakEffMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_TxfifoUndrnMsk_Pos \ - (8UL) /*!< USB DIEPMSK: TxfifoUndrnMsk (Bit 8) */ -#define USB_DIEPMSK_TxfifoUndrnMsk_Msk \ - (0x100UL) /*!< USB DIEPMSK: TxfifoUndrnMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_BNAInIntrMsk_Pos \ - (9UL) /*!< USB DIEPMSK: BNAInIntrMsk (Bit 9) */ -#define USB_DIEPMSK_BNAInIntrMsk_Msk \ - (0x200UL) /*!< USB DIEPMSK: BNAInIntrMsk (Bitfield-Mask: 0x01) */ -#define USB_DIEPMSK_NAKMsk_Pos \ - (13UL) /*!< USB DIEPMSK: NAKMsk (Bit 13) */ -#define USB_DIEPMSK_NAKMsk_Msk \ - (0x2000UL) /*!< USB DIEPMSK: NAKMsk (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USB_DOEPMSK -------------------------------- */ -#define USB_DOEPMSK_XferComplMsk_Pos \ - (0UL) /*!< USB DOEPMSK: XferComplMsk (Bit 0) */ -#define USB_DOEPMSK_XferComplMsk_Msk \ - (0x1UL) /*!< USB DOEPMSK: XferComplMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_EPDisbldMsk_Pos \ - (1UL) /*!< USB DOEPMSK: EPDisbldMsk (Bit 1) */ -#define USB_DOEPMSK_EPDisbldMsk_Msk \ - (0x2UL) /*!< USB DOEPMSK: EPDisbldMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_AHBErrMsk_Pos \ - (2UL) /*!< USB DOEPMSK: AHBErrMsk (Bit 2) */ -#define USB_DOEPMSK_AHBErrMsk_Msk \ - (0x4UL) /*!< USB DOEPMSK: AHBErrMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_SetUPMsk_Pos \ - (3UL) /*!< USB DOEPMSK: SetUPMsk (Bit 3) */ -#define USB_DOEPMSK_SetUPMsk_Msk \ - (0x8UL) /*!< USB DOEPMSK: SetUPMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_OUTTknEPdisMsk_Pos \ - (4UL) /*!< USB DOEPMSK: OUTTknEPdisMsk (Bit 4) */ -#define USB_DOEPMSK_OUTTknEPdisMsk_Msk \ - (0x10UL) /*!< USB DOEPMSK: OUTTknEPdisMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_Back2BackSETup_Pos \ - (6UL) /*!< USB DOEPMSK: Back2BackSETup (Bit 6) */ -#define USB_DOEPMSK_Back2BackSETup_Msk \ - (0x40UL) /*!< USB DOEPMSK: Back2BackSETup (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_OutPktErrMsk_Pos \ - (8UL) /*!< USB DOEPMSK: OutPktErrMsk (Bit 8) */ -#define USB_DOEPMSK_OutPktErrMsk_Msk \ - (0x100UL) /*!< USB DOEPMSK: OutPktErrMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_BnaOutIntrMsk_Pos \ - (9UL) /*!< USB DOEPMSK: BnaOutIntrMsk (Bit 9) */ -#define USB_DOEPMSK_BnaOutIntrMsk_Msk \ - (0x200UL) /*!< USB DOEPMSK: BnaOutIntrMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_BbleErrMsk_Pos \ - (12UL) /*!< USB DOEPMSK: BbleErrMsk (Bit 12) */ -#define USB_DOEPMSK_BbleErrMsk_Msk \ - (0x1000UL) /*!< USB DOEPMSK: BbleErrMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_NAKMsk_Pos \ - (13UL) /*!< USB DOEPMSK: NAKMsk (Bit 13) */ -#define USB_DOEPMSK_NAKMsk_Msk \ - (0x2000UL) /*!< USB DOEPMSK: NAKMsk (Bitfield-Mask: 0x01) */ -#define USB_DOEPMSK_NYETMsk_Pos \ - (14UL) /*!< USB DOEPMSK: NYETMsk (Bit 14) */ -#define USB_DOEPMSK_NYETMsk_Msk \ - (0x4000UL) /*!< USB DOEPMSK: NYETMsk (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- USB_DAINT --------------------------------- */ -#define USB_DAINT_InEpInt_Pos \ - (0UL) /*!< USB DAINT: InEpInt (Bit 0) */ -#define USB_DAINT_InEpInt_Msk \ - (0xffffUL) /*!< USB DAINT: InEpInt (Bitfield-Mask: 0xffff) */ -#define USB_DAINT_OutEPInt_Pos \ - (16UL) /*!< USB DAINT: OutEPInt (Bit 16) */ -#define USB_DAINT_OutEPInt_Msk \ - (0xffff0000UL) /*!< USB DAINT: OutEPInt (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DAINTMSK -------------------------------- */ -#define USB_DAINTMSK_InEpMsk_Pos \ - (0UL) /*!< USB DAINTMSK: InEpMsk (Bit 0) */ -#define USB_DAINTMSK_InEpMsk_Msk \ - (0xffffUL) /*!< USB DAINTMSK: InEpMsk (Bitfield-Mask: 0xffff) */ -#define USB_DAINTMSK_OutEpMsk_Pos \ - (16UL) /*!< USB DAINTMSK: OutEpMsk (Bit 16) */ -#define USB_DAINTMSK_OutEpMsk_Msk \ - (0xffff0000UL) /*!< USB DAINTMSK: OutEpMsk (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USB_DVBUSDIS -------------------------------- */ -#define USB_DVBUSDIS_DVBUSDis_Pos \ - (0UL) /*!< USB DVBUSDIS: DVBUSDis (Bit 0) */ -#define USB_DVBUSDIS_DVBUSDis_Msk \ - (0xffffUL) /*!< USB DVBUSDIS: DVBUSDis (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- USB_DVBUSPULSE ------------------------------- */ -#define USB_DVBUSPULSE_DVBUSPulse_Pos \ - (0UL) /*!< USB DVBUSPULSE: DVBUSPulse (Bit 0) */ -#define USB_DVBUSPULSE_DVBUSPulse_Msk \ - (0xfffUL) /*!< USB DVBUSPULSE: DVBUSPulse (Bitfield-Mask: 0xfff) */ - -/* ------------------------------- USB_DIEPEMPMSK ------------------------------- */ -#define USB_DIEPEMPMSK_InEpTxfEmpMsk_Pos \ - (0UL) /*!< USB DIEPEMPMSK: InEpTxfEmpMsk (Bit 0) */ -#define USB_DIEPEMPMSK_InEpTxfEmpMsk_Msk \ - (0xffffUL) /*!< USB DIEPEMPMSK: InEpTxfEmpMsk (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- USB_PCGCCTL -------------------------------- */ -#define USB_PCGCCTL_StopPclk_Pos \ - (0UL) /*!< USB PCGCCTL: StopPclk (Bit 0) */ -#define USB_PCGCCTL_StopPclk_Msk \ - (0x1UL) /*!< USB PCGCCTL: StopPclk (Bitfield-Mask: 0x01) */ -#define USB_PCGCCTL_GateHclk_Pos \ - (1UL) /*!< USB PCGCCTL: GateHclk (Bit 1) */ -#define USB_PCGCCTL_GateHclk_Msk \ - (0x2UL) /*!< USB PCGCCTL: GateHclk (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'USB0_EP0' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------ USB_EP_DIEPCTL0 ----------------------------- */ -#define USB_EP_DIEPCTL0_MPS_Pos \ - (0UL) /*!< USB0_EP0 DIEPCTL0: MPS (Bit 0) */ -#define USB_EP_DIEPCTL0_MPS_Msk \ - (0x3UL) /*!< USB0_EP0 DIEPCTL0: MPS (Bitfield-Mask: 0x03) */ -#define USB_EP_DIEPCTL0_USBActEP_Pos \ - (15UL) /*!< USB0_EP0 DIEPCTL0: USBActEP (Bit 15) */ -#define USB_EP_DIEPCTL0_USBActEP_Msk \ - (0x8000UL) /*!< USB0_EP0 DIEPCTL0: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_NAKSts_Pos \ - (17UL) /*!< USB0_EP0 DIEPCTL0: NAKSts (Bit 17) */ -#define USB_EP_DIEPCTL0_NAKSts_Msk \ - (0x20000UL) /*!< USB0_EP0 DIEPCTL0: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_EPType_Pos \ - (18UL) /*!< USB0_EP0 DIEPCTL0: EPType (Bit 18) */ -#define USB_EP_DIEPCTL0_EPType_Msk \ - (0xc0000UL) /*!< USB0_EP0 DIEPCTL0: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DIEPCTL0_Stall_Pos \ - (21UL) /*!< USB0_EP0 DIEPCTL0: Stall (Bit 21) */ -#define USB_EP_DIEPCTL0_Stall_Msk \ - (0x200000UL) /*!< USB0_EP0 DIEPCTL0: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_TxFNum_Pos \ - (22UL) /*!< USB0_EP0 DIEPCTL0: TxFNum (Bit 22) */ -#define USB_EP_DIEPCTL0_TxFNum_Msk \ - (0x3c00000UL) /*!< USB0_EP0 DIEPCTL0: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DIEPCTL0_CNAK_Pos \ - (26UL) /*!< USB0_EP0 DIEPCTL0: CNAK (Bit 26) */ -#define USB_EP_DIEPCTL0_CNAK_Msk \ - (0x4000000UL) /*!< USB0_EP0 DIEPCTL0: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_SNAK_Pos \ - (27UL) /*!< USB0_EP0 DIEPCTL0: SNAK (Bit 27) */ -#define USB_EP_DIEPCTL0_SNAK_Msk \ - (0x8000000UL) /*!< USB0_EP0 DIEPCTL0: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_EPDis_Pos \ - (30UL) /*!< USB0_EP0 DIEPCTL0: EPDis (Bit 30) */ -#define USB_EP_DIEPCTL0_EPDis_Msk \ - (0x40000000UL) /*!< USB0_EP0 DIEPCTL0: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL0_EPEna_Pos \ - (31UL) /*!< USB0_EP0 DIEPCTL0: EPEna (Bit 31) */ -#define USB_EP_DIEPCTL0_EPEna_Msk \ - (0x80000000UL) /*!< USB0_EP0 DIEPCTL0: EPEna (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_EP_DIEPINT0 ----------------------------- */ -#define USB_EP_DIEPINT0_XferCompl_Pos \ - (0UL) /*!< USB0_EP0 DIEPINT0: XferCompl (Bit 0) */ -#define USB_EP_DIEPINT0_XferCompl_Msk \ - (0x1UL) /*!< USB0_EP0 DIEPINT0: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_EPDisbld_Pos \ - (1UL) /*!< USB0_EP0 DIEPINT0: EPDisbld (Bit 1) */ -#define USB_EP_DIEPINT0_EPDisbld_Msk \ - (0x2UL) /*!< USB0_EP0 DIEPINT0: EPDisbld (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_AHBErr_Pos \ - (2UL) /*!< USB0_EP0 DIEPINT0: AHBErr (Bit 2) */ -#define USB_EP_DIEPINT0_AHBErr_Msk \ - (0x4UL) /*!< USB0_EP0 DIEPINT0: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_TimeOUT_Pos \ - (3UL) /*!< USB0_EP0 DIEPINT0: TimeOUT (Bit 3) */ -#define USB_EP_DIEPINT0_TimeOUT_Msk \ - (0x8UL) /*!< USB0_EP0 DIEPINT0: TimeOUT (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_INTknTXFEmp_Pos \ - (4UL) /*!< USB0_EP0 DIEPINT0: INTknTXFEmp (Bit 4) */ -#define USB_EP_DIEPINT0_INTknTXFEmp_Msk \ - (0x10UL) /*!< USB0_EP0 DIEPINT0: INTknTXFEmp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_INEPNakEff_Pos \ - (6UL) /*!< USB0_EP0 DIEPINT0: INEPNakEff (Bit 6) */ -#define USB_EP_DIEPINT0_INEPNakEff_Msk \ - (0x40UL) /*!< USB0_EP0 DIEPINT0: INEPNakEff (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_TxFEmp_Pos \ - (7UL) /*!< USB0_EP0 DIEPINT0: TxFEmp (Bit 7) */ -#define USB_EP_DIEPINT0_TxFEmp_Msk \ - (0x80UL) /*!< USB0_EP0 DIEPINT0: TxFEmp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT0_BNAIntr_Pos \ - (9UL) /*!< USB0_EP0 DIEPINT0: BNAIntr (Bit 9) */ -#define USB_EP_DIEPINT0_BNAIntr_Msk \ - (0x200UL) /*!< USB0_EP0 DIEPINT0: BNAIntr (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_EP_DIEPTSIZ0 ----------------------------- */ -#define USB_EP_DIEPTSIZ0_XferSize_Pos \ - (0UL) /*!< USB0_EP0 DIEPTSIZ0: XferSize (Bit 0) */ -#define USB_EP_DIEPTSIZ0_XferSize_Msk \ - (0x7fUL) /*!< USB0_EP0 DIEPTSIZ0: XferSize (Bitfield-Mask: 0x7f) */ -#define USB_EP_DIEPTSIZ0_PktCnt_Pos \ - (19UL) /*!< USB0_EP0 DIEPTSIZ0: PktCnt (Bit 19) */ -#define USB_EP_DIEPTSIZ0_PktCnt_Msk \ - (0x180000UL) /*!< USB0_EP0 DIEPTSIZ0: PktCnt (Bitfield-Mask: 0x03) */ - -/* ------------------------------ USB_EP_DIEPDMA0 ----------------------------- */ -#define USB_EP_DIEPDMA0_DMAAddr_Pos \ - (0UL) /*!< USB0_EP0 DIEPDMA0: DMAAddr (Bit 0) */ -#define USB_EP_DIEPDMA0_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB0_EP0 DIEPDMA0: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ USB_EP_DTXFSTS0 ----------------------------- */ -#define USB_EP_DTXFSTS0_INEPTxFSpcAvail_Pos \ - (0UL) /*!< USB0_EP0 DTXFSTS0: INEPTxFSpcAvail (Bit 0) */ -#define USB_EP_DTXFSTS0_INEPTxFSpcAvail_Msk \ - (0xffffUL) /*!< USB0_EP0 DTXFSTS0: INEPTxFSpcAvail (Bitfield-Mask: 0xffff) */ - -/* ----------------------------- USB_EP_DIEPDMAB0 ----------------------------- */ -#define USB_EP_DIEPDMAB0_DMABufferAddr_Pos \ - (0UL) /*!< USB0_EP0 DIEPDMAB0: DMABufferAddr (Bit 0) */ -#define USB_EP_DIEPDMAB0_DMABufferAddr_Msk \ - (0xffffffffUL) /*!< USB0_EP0 DIEPDMAB0: DMABufferAddr (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------ USB_EP_DOEPCTL0 ----------------------------- */ -#define USB_EP_DOEPCTL0_MPS_Pos \ - (0UL) /*!< USB0_EP0 DOEPCTL0: MPS (Bit 0) */ -#define USB_EP_DOEPCTL0_MPS_Msk \ - (0x3UL) /*!< USB0_EP0 DOEPCTL0: MPS (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPCTL0_USBActEP_Pos \ - (15UL) /*!< USB0_EP0 DOEPCTL0: USBActEP (Bit 15) */ -#define USB_EP_DOEPCTL0_USBActEP_Msk \ - (0x8000UL) /*!< USB0_EP0 DOEPCTL0: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_NAKSts_Pos \ - (17UL) /*!< USB0_EP0 DOEPCTL0: NAKSts (Bit 17) */ -#define USB_EP_DOEPCTL0_NAKSts_Msk \ - (0x20000UL) /*!< USB0_EP0 DOEPCTL0: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_EPType_Pos \ - (18UL) /*!< USB0_EP0 DOEPCTL0: EPType (Bit 18) */ -#define USB_EP_DOEPCTL0_EPType_Msk \ - (0xc0000UL) /*!< USB0_EP0 DOEPCTL0: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPCTL0_Snp_Pos \ - (20UL) /*!< USB0_EP0 DOEPCTL0: Snp (Bit 20) */ -#define USB_EP_DOEPCTL0_Snp_Msk \ - (0x100000UL) /*!< USB0_EP0 DOEPCTL0: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_Stall_Pos \ - (21UL) /*!< USB0_EP0 DOEPCTL0: Stall (Bit 21) */ -#define USB_EP_DOEPCTL0_Stall_Msk \ - (0x200000UL) /*!< USB0_EP0 DOEPCTL0: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_CNAK_Pos \ - (26UL) /*!< USB0_EP0 DOEPCTL0: CNAK (Bit 26) */ -#define USB_EP_DOEPCTL0_CNAK_Msk \ - (0x4000000UL) /*!< USB0_EP0 DOEPCTL0: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_SNAK_Pos \ - (27UL) /*!< USB0_EP0 DOEPCTL0: SNAK (Bit 27) */ -#define USB_EP_DOEPCTL0_SNAK_Msk \ - (0x8000000UL) /*!< USB0_EP0 DOEPCTL0: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_EPDis_Pos \ - (30UL) /*!< USB0_EP0 DOEPCTL0: EPDis (Bit 30) */ -#define USB_EP_DOEPCTL0_EPDis_Msk \ - (0x40000000UL) /*!< USB0_EP0 DOEPCTL0: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL0_EPEna_Pos \ - (31UL) /*!< USB0_EP0 DOEPCTL0: EPEna (Bit 31) */ -#define USB_EP_DOEPCTL0_EPEna_Msk \ - (0x80000000UL) /*!< USB0_EP0 DOEPCTL0: EPEna (Bitfield-Mask: 0x01) */ - -/* ------------------------------ USB_EP_DOEPINT0 ----------------------------- */ -#define USB_EP_DOEPINT0_XferCompl_Pos \ - (0UL) /*!< USB0_EP0 DOEPINT0: XferCompl (Bit 0) */ -#define USB_EP_DOEPINT0_XferCompl_Msk \ - (0x1UL) /*!< USB0_EP0 DOEPINT0: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_EPDisbld_Pos \ - (1UL) /*!< USB0_EP0 DOEPINT0: EPDisbld (Bit 1) */ -#define USB_EP_DOEPINT0_EPDisbld_Msk \ - (0x2UL) /*!< USB0_EP0 DOEPINT0: EPDisbld (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_AHBErr_Pos \ - (2UL) /*!< USB0_EP0 DOEPINT0: AHBErr (Bit 2) */ -#define USB_EP_DOEPINT0_AHBErr_Msk \ - (0x4UL) /*!< USB0_EP0 DOEPINT0: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_SetUp_Pos \ - (3UL) /*!< USB0_EP0 DOEPINT0: SetUp (Bit 3) */ -#define USB_EP_DOEPINT0_SetUp_Msk \ - (0x8UL) /*!< USB0_EP0 DOEPINT0: SetUp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_OUTTknEPdis_Pos \ - (4UL) /*!< USB0_EP0 DOEPINT0: OUTTknEPdis (Bit 4) */ -#define USB_EP_DOEPINT0_OUTTknEPdis_Msk \ - (0x10UL) /*!< USB0_EP0 DOEPINT0: OUTTknEPdis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_StsPhseRcvd_Pos \ - (5UL) /*!< USB0_EP0 DOEPINT0: StsPhseRcvd (Bit 5) */ -#define USB_EP_DOEPINT0_StsPhseRcvd_Msk \ - (0x20UL) /*!< USB0_EP0 DOEPINT0: StsPhseRcvd (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_Back2BackSETup_Pos \ - (6UL) /*!< USB0_EP0 DOEPINT0: Back2BackSETup (Bit 6) */ -#define USB_EP_DOEPINT0_Back2BackSETup_Msk \ - (0x40UL) /*!< USB0_EP0 DOEPINT0: Back2BackSETup (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_BNAIntr_Pos \ - (9UL) /*!< USB0_EP0 DOEPINT0: BNAIntr (Bit 9) */ -#define USB_EP_DOEPINT0_BNAIntr_Msk \ - (0x200UL) /*!< USB0_EP0 DOEPINT0: BNAIntr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_PktDrpSts_Pos \ - (11UL) /*!< USB0_EP0 DOEPINT0: PktDrpSts (Bit 11) */ -#define USB_EP_DOEPINT0_PktDrpSts_Msk \ - (0x800UL) /*!< USB0_EP0 DOEPINT0: PktDrpSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_BbleErrIntrpt_Pos \ - (12UL) /*!< USB0_EP0 DOEPINT0: BbleErrIntrpt (Bit 12) */ -#define USB_EP_DOEPINT0_BbleErrIntrpt_Msk \ - (0x1000UL) /*!< USB0_EP0 DOEPINT0: BbleErrIntrpt (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_NAKIntrpt_Pos \ - (13UL) /*!< USB0_EP0 DOEPINT0: NAKIntrpt (Bit 13) */ -#define USB_EP_DOEPINT0_NAKIntrpt_Msk \ - (0x2000UL) /*!< USB0_EP0 DOEPINT0: NAKIntrpt (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT0_NYETIntrpt_Pos \ - (14UL) /*!< USB0_EP0 DOEPINT0: NYETIntrpt (Bit 14) */ -#define USB_EP_DOEPINT0_NYETIntrpt_Msk \ - (0x4000UL) /*!< USB0_EP0 DOEPINT0: NYETIntrpt (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_EP_DOEPTSIZ0 ----------------------------- */ -#define USB_EP_DOEPTSIZ0_XferSize_Pos \ - (0UL) /*!< USB0_EP0 DOEPTSIZ0: XferSize (Bit 0) */ -#define USB_EP_DOEPTSIZ0_XferSize_Msk \ - (0x7fUL) /*!< USB0_EP0 DOEPTSIZ0: XferSize (Bitfield-Mask: 0x7f) */ -#define USB_EP_DOEPTSIZ0_PktCnt_Pos \ - (19UL) /*!< USB0_EP0 DOEPTSIZ0: PktCnt (Bit 19) */ -#define USB_EP_DOEPTSIZ0_PktCnt_Msk \ - (0x180000UL) /*!< USB0_EP0 DOEPTSIZ0: PktCnt (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPTSIZ0_SUPCnt_Pos \ - (29UL) /*!< USB0_EP0 DOEPTSIZ0: SUPCnt (Bit 29) */ -#define USB_EP_DOEPTSIZ0_SUPCnt_Msk \ - (0x60000000UL) /*!< USB0_EP0 DOEPTSIZ0: SUPCnt (Bitfield-Mask: 0x03) */ - -/* ------------------------------ USB_EP_DOEPDMA0 ----------------------------- */ -#define USB_EP_DOEPDMA0_DMAAddr_Pos \ - (0UL) /*!< USB0_EP0 DOEPDMA0: DMAAddr (Bit 0) */ -#define USB_EP_DOEPDMA0_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB0_EP0 DOEPDMA0: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* ----------------------------- USB_EP_DOEPDMAB0 ----------------------------- */ -#define USB_EP_DOEPDMAB0_DMABufferAddr_Pos \ - (0UL) /*!< USB0_EP0 DOEPDMAB0: DMABufferAddr (Bit 0) */ -#define USB_EP_DOEPDMAB0_DMABufferAddr_Msk \ - (0xffffffffUL) /*!< USB0_EP0 DOEPDMAB0: DMABufferAddr (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'USB_EP' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------- USB_EP_DIEPCTL_ISOCONT --------------------------- */ -#define USB_EP_DIEPCTL_ISOCONT_MPS_Pos \ - (0UL) /*!< USB_EP DIEPCTL_ISOCONT: MPS (Bit 0) */ -#define USB_EP_DIEPCTL_ISOCONT_MPS_Msk \ - (0x7ffUL) /*!< USB_EP DIEPCTL_ISOCONT: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_EP_DIEPCTL_ISOCONT_USBActEP_Pos \ - (15UL) /*!< USB_EP DIEPCTL_ISOCONT: USBActEP (Bit 15) */ -#define USB_EP_DIEPCTL_ISOCONT_USBActEP_Msk \ - (0x8000UL) /*!< USB_EP DIEPCTL_ISOCONT: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_EO_FrNum_Pos \ - (16UL) /*!< USB_EP DIEPCTL_ISOCONT: EO_FrNum (Bit 16) */ -#define USB_EP_DIEPCTL_ISOCONT_EO_FrNum_Msk \ - (0x10000UL) /*!< USB_EP DIEPCTL_ISOCONT: EO_FrNum (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_NAKSts_Pos \ - (17UL) /*!< USB_EP DIEPCTL_ISOCONT: NAKSts (Bit 17) */ -#define USB_EP_DIEPCTL_ISOCONT_NAKSts_Msk \ - (0x20000UL) /*!< USB_EP DIEPCTL_ISOCONT: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_EPType_Pos \ - (18UL) /*!< USB_EP DIEPCTL_ISOCONT: EPType (Bit 18) */ -#define USB_EP_DIEPCTL_ISOCONT_EPType_Msk \ - (0xc0000UL) /*!< USB_EP DIEPCTL_ISOCONT: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DIEPCTL_ISOCONT_Snp_Pos \ - (20UL) /*!< USB_EP DIEPCTL_ISOCONT: Snp (Bit 20) */ -#define USB_EP_DIEPCTL_ISOCONT_Snp_Msk \ - (0x100000UL) /*!< USB_EP DIEPCTL_ISOCONT: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_Stall_Pos \ - (21UL) /*!< USB_EP DIEPCTL_ISOCONT: Stall (Bit 21) */ -#define USB_EP_DIEPCTL_ISOCONT_Stall_Msk \ - (0x200000UL) /*!< USB_EP DIEPCTL_ISOCONT: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_TxFNum_Pos \ - (22UL) /*!< USB_EP DIEPCTL_ISOCONT: TxFNum (Bit 22) */ -#define USB_EP_DIEPCTL_ISOCONT_TxFNum_Msk \ - (0x3c00000UL) /*!< USB_EP DIEPCTL_ISOCONT: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DIEPCTL_ISOCONT_CNAK_Pos \ - (26UL) /*!< USB_EP DIEPCTL_ISOCONT: CNAK (Bit 26) */ -#define USB_EP_DIEPCTL_ISOCONT_CNAK_Msk \ - (0x4000000UL) /*!< USB_EP DIEPCTL_ISOCONT: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_SNAK_Pos \ - (27UL) /*!< USB_EP DIEPCTL_ISOCONT: SNAK (Bit 27) */ -#define USB_EP_DIEPCTL_ISOCONT_SNAK_Msk \ - (0x8000000UL) /*!< USB_EP DIEPCTL_ISOCONT: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_SetEvenFr_Pos \ - (28UL) /*!< USB_EP DIEPCTL_ISOCONT: SetEvenFr (Bit 28) */ -#define USB_EP_DIEPCTL_ISOCONT_SetEvenFr_Msk \ - (0x10000000UL) /*!< USB_EP DIEPCTL_ISOCONT: SetEvenFr (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_SetOddFr_Pos \ - (29UL) /*!< USB_EP DIEPCTL_ISOCONT: SetOddFr (Bit 29) */ -#define USB_EP_DIEPCTL_ISOCONT_SetOddFr_Msk \ - (0x20000000UL) /*!< USB_EP DIEPCTL_ISOCONT: SetOddFr (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_EPDis_Pos \ - (30UL) /*!< USB_EP DIEPCTL_ISOCONT: EPDis (Bit 30) */ -#define USB_EP_DIEPCTL_ISOCONT_EPDis_Msk \ - (0x40000000UL) /*!< USB_EP DIEPCTL_ISOCONT: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_ISOCONT_EPEna_Pos \ - (31UL) /*!< USB_EP DIEPCTL_ISOCONT: EPEna (Bit 31) */ -#define USB_EP_DIEPCTL_ISOCONT_EPEna_Msk \ - (0x80000000UL) /*!< USB_EP DIEPCTL_ISOCONT: EPEna (Bitfield-Mask: 0x01) */ - -/* --------------------------- USB_EP_DIEPCTL_INTBULK --------------------------- */ -#define USB_EP_DIEPCTL_INTBULK_MPS_Pos \ - (0UL) /*!< USB_EP DIEPCTL_INTBULK: MPS (Bit 0) */ -#define USB_EP_DIEPCTL_INTBULK_MPS_Msk \ - (0x7ffUL) /*!< USB_EP DIEPCTL_INTBULK: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_EP_DIEPCTL_INTBULK_USBActEP_Pos \ - (15UL) /*!< USB_EP DIEPCTL_INTBULK: USBActEP (Bit 15) */ -#define USB_EP_DIEPCTL_INTBULK_USBActEP_Msk \ - (0x8000UL) /*!< USB_EP DIEPCTL_INTBULK: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_DPID_Pos \ - (16UL) /*!< USB_EP DIEPCTL_INTBULK: DPID (Bit 16) */ -#define USB_EP_DIEPCTL_INTBULK_DPID_Msk \ - (0x10000UL) /*!< USB_EP DIEPCTL_INTBULK: DPID (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_NAKSts_Pos \ - (17UL) /*!< USB_EP DIEPCTL_INTBULK: NAKSts (Bit 17) */ -#define USB_EP_DIEPCTL_INTBULK_NAKSts_Msk \ - (0x20000UL) /*!< USB_EP DIEPCTL_INTBULK: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_EPType_Pos \ - (18UL) /*!< USB_EP DIEPCTL_INTBULK: EPType (Bit 18) */ -#define USB_EP_DIEPCTL_INTBULK_EPType_Msk \ - (0xc0000UL) /*!< USB_EP DIEPCTL_INTBULK: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DIEPCTL_INTBULK_Snp_Pos \ - (20UL) /*!< USB_EP DIEPCTL_INTBULK: Snp (Bit 20) */ -#define USB_EP_DIEPCTL_INTBULK_Snp_Msk \ - (0x100000UL) /*!< USB_EP DIEPCTL_INTBULK: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_Stall_Pos \ - (21UL) /*!< USB_EP DIEPCTL_INTBULK: Stall (Bit 21) */ -#define USB_EP_DIEPCTL_INTBULK_Stall_Msk \ - (0x200000UL) /*!< USB_EP DIEPCTL_INTBULK: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_TxFNum_Pos \ - (22UL) /*!< USB_EP DIEPCTL_INTBULK: TxFNum (Bit 22) */ -#define USB_EP_DIEPCTL_INTBULK_TxFNum_Msk \ - (0x3c00000UL) /*!< USB_EP DIEPCTL_INTBULK: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DIEPCTL_INTBULK_CNAK_Pos \ - (26UL) /*!< USB_EP DIEPCTL_INTBULK: CNAK (Bit 26) */ -#define USB_EP_DIEPCTL_INTBULK_CNAK_Msk \ - (0x4000000UL) /*!< USB_EP DIEPCTL_INTBULK: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_SNAK_Pos \ - (27UL) /*!< USB_EP DIEPCTL_INTBULK: SNAK (Bit 27) */ -#define USB_EP_DIEPCTL_INTBULK_SNAK_Msk \ - (0x8000000UL) /*!< USB_EP DIEPCTL_INTBULK: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_SetD0PID_Pos \ - (28UL) /*!< USB_EP DIEPCTL_INTBULK: SetD0PID (Bit 28) */ -#define USB_EP_DIEPCTL_INTBULK_SetD0PID_Msk \ - (0x10000000UL) /*!< USB_EP DIEPCTL_INTBULK: SetD0PID (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_SetD1PID_Pos \ - (29UL) /*!< USB_EP DIEPCTL_INTBULK: SetD1PID (Bit 29) */ -#define USB_EP_DIEPCTL_INTBULK_SetD1PID_Msk \ - (0x20000000UL) /*!< USB_EP DIEPCTL_INTBULK: SetD1PID (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_EPDis_Pos \ - (30UL) /*!< USB_EP DIEPCTL_INTBULK: EPDis (Bit 30) */ -#define USB_EP_DIEPCTL_INTBULK_EPDis_Msk \ - (0x40000000UL) /*!< USB_EP DIEPCTL_INTBULK: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPCTL_INTBULK_EPEna_Pos \ - (31UL) /*!< USB_EP DIEPCTL_INTBULK: EPEna (Bit 31) */ -#define USB_EP_DIEPCTL_INTBULK_EPEna_Msk \ - (0x80000000UL) /*!< USB_EP DIEPCTL_INTBULK: EPEna (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_EP_DIEPINT ------------------------------- */ -#define USB_EP_DIEPINT_XferCompl_Pos \ - (0UL) /*!< USB_EP DIEPINT: XferCompl (Bit 0) */ -#define USB_EP_DIEPINT_XferCompl_Msk \ - (0x1UL) /*!< USB_EP DIEPINT: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_EPDisbld_Pos \ - (1UL) /*!< USB_EP DIEPINT: EPDisbld (Bit 1) */ -#define USB_EP_DIEPINT_EPDisbld_Msk \ - (0x2UL) /*!< USB_EP DIEPINT: EPDisbld (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_AHBErr_Pos \ - (2UL) /*!< USB_EP DIEPINT: AHBErr (Bit 2) */ -#define USB_EP_DIEPINT_AHBErr_Msk \ - (0x4UL) /*!< USB_EP DIEPINT: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_TimeOUT_Pos \ - (3UL) /*!< USB_EP DIEPINT: TimeOUT (Bit 3) */ -#define USB_EP_DIEPINT_TimeOUT_Msk \ - (0x8UL) /*!< USB_EP DIEPINT: TimeOUT (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_INTknTXFEmp_Pos \ - (4UL) /*!< USB_EP DIEPINT: INTknTXFEmp (Bit 4) */ -#define USB_EP_DIEPINT_INTknTXFEmp_Msk \ - (0x10UL) /*!< USB_EP DIEPINT: INTknTXFEmp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_INEPNakEff_Pos \ - (6UL) /*!< USB_EP DIEPINT: INEPNakEff (Bit 6) */ -#define USB_EP_DIEPINT_INEPNakEff_Msk \ - (0x40UL) /*!< USB_EP DIEPINT: INEPNakEff (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_TxFEmp_Pos \ - (7UL) /*!< USB_EP DIEPINT: TxFEmp (Bit 7) */ -#define USB_EP_DIEPINT_TxFEmp_Msk \ - (0x80UL) /*!< USB_EP DIEPINT: TxFEmp (Bitfield-Mask: 0x01) */ -#define USB_EP_DIEPINT_BNAIntr_Pos \ - (9UL) /*!< USB_EP DIEPINT: BNAIntr (Bit 9) */ -#define USB_EP_DIEPINT_BNAIntr_Msk \ - (0x200UL) /*!< USB_EP DIEPINT: BNAIntr (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_EP_DIEPTSIZ ------------------------------ */ -#define USB_EP_DIEPTSIZ_XferSize_Pos \ - (0UL) /*!< USB_EP DIEPTSIZ: XferSize (Bit 0) */ -#define USB_EP_DIEPTSIZ_XferSize_Msk \ - (0x7ffffUL) /*!< USB_EP DIEPTSIZ: XferSize (Bitfield-Mask: 0x7ffff) */ -#define USB_EP_DIEPTSIZ_PktCnt_Pos \ - (19UL) /*!< USB_EP DIEPTSIZ: PktCnt (Bit 19) */ -#define USB_EP_DIEPTSIZ_PktCnt_Msk \ - (0x1ff80000UL) /*!< USB_EP DIEPTSIZ: PktCnt (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- USB_EP_DIEPDMA ------------------------------- */ -#define USB_EP_DIEPDMA_DMAAddr_Pos \ - (0UL) /*!< USB_EP DIEPDMA: DMAAddr (Bit 0) */ -#define USB_EP_DIEPDMA_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB_EP DIEPDMA: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- USB_EP_DTXFSTS ------------------------------- */ -#define USB_EP_DTXFSTS_INEPTxFSpcAvail_Pos \ - (0UL) /*!< USB_EP DTXFSTS: INEPTxFSpcAvail (Bit 0) */ -#define USB_EP_DTXFSTS_INEPTxFSpcAvail_Msk \ - (0xffffUL) /*!< USB_EP DTXFSTS: INEPTxFSpcAvail (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- USB_EP_DIEPDMAB ------------------------------ */ -#define USB_EP_DIEPDMAB_DMABufferAddr_Pos \ - (0UL) /*!< USB_EP DIEPDMAB: DMABufferAddr (Bit 0) */ -#define USB_EP_DIEPDMAB_DMABufferAddr_Msk \ - (0xffffffffUL) /*!< USB_EP DIEPDMAB: DMABufferAddr (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- USB_EP_DOEPCTL_ISOCONT --------------------------- */ -#define USB_EP_DOEPCTL_ISOCONT_MPS_Pos \ - (0UL) /*!< USB_EP DOEPCTL_ISOCONT: MPS (Bit 0) */ -#define USB_EP_DOEPCTL_ISOCONT_MPS_Msk \ - (0x7ffUL) /*!< USB_EP DOEPCTL_ISOCONT: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_EP_DOEPCTL_ISOCONT_USBActEP_Pos \ - (15UL) /*!< USB_EP DOEPCTL_ISOCONT: USBActEP (Bit 15) */ -#define USB_EP_DOEPCTL_ISOCONT_USBActEP_Msk \ - (0x8000UL) /*!< USB_EP DOEPCTL_ISOCONT: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_EO_FrNum_Pos \ - (16UL) /*!< USB_EP DOEPCTL_ISOCONT: EO_FrNum (Bit 16) */ -#define USB_EP_DOEPCTL_ISOCONT_EO_FrNum_Msk \ - (0x10000UL) /*!< USB_EP DOEPCTL_ISOCONT: EO_FrNum (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_NAKSts_Pos \ - (17UL) /*!< USB_EP DOEPCTL_ISOCONT: NAKSts (Bit 17) */ -#define USB_EP_DOEPCTL_ISOCONT_NAKSts_Msk \ - (0x20000UL) /*!< USB_EP DOEPCTL_ISOCONT: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_EPType_Pos \ - (18UL) /*!< USB_EP DOEPCTL_ISOCONT: EPType (Bit 18) */ -#define USB_EP_DOEPCTL_ISOCONT_EPType_Msk \ - (0xc0000UL) /*!< USB_EP DOEPCTL_ISOCONT: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPCTL_ISOCONT_Snp_Pos \ - (20UL) /*!< USB_EP DOEPCTL_ISOCONT: Snp (Bit 20) */ -#define USB_EP_DOEPCTL_ISOCONT_Snp_Msk \ - (0x100000UL) /*!< USB_EP DOEPCTL_ISOCONT: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_Stall_Pos \ - (21UL) /*!< USB_EP DOEPCTL_ISOCONT: Stall (Bit 21) */ -#define USB_EP_DOEPCTL_ISOCONT_Stall_Msk \ - (0x200000UL) /*!< USB_EP DOEPCTL_ISOCONT: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_TxFNum_Pos \ - (22UL) /*!< USB_EP DOEPCTL_ISOCONT: TxFNum (Bit 22) */ -#define USB_EP_DOEPCTL_ISOCONT_TxFNum_Msk \ - (0x3c00000UL) /*!< USB_EP DOEPCTL_ISOCONT: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DOEPCTL_ISOCONT_CNAK_Pos \ - (26UL) /*!< USB_EP DOEPCTL_ISOCONT: CNAK (Bit 26) */ -#define USB_EP_DOEPCTL_ISOCONT_CNAK_Msk \ - (0x4000000UL) /*!< USB_EP DOEPCTL_ISOCONT: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_SNAK_Pos \ - (27UL) /*!< USB_EP DOEPCTL_ISOCONT: SNAK (Bit 27) */ -#define USB_EP_DOEPCTL_ISOCONT_SNAK_Msk \ - (0x8000000UL) /*!< USB_EP DOEPCTL_ISOCONT: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_SetEvenFr_Pos \ - (28UL) /*!< USB_EP DOEPCTL_ISOCONT: SetEvenFr (Bit 28) */ -#define USB_EP_DOEPCTL_ISOCONT_SetEvenFr_Msk \ - (0x10000000UL) /*!< USB_EP DOEPCTL_ISOCONT: SetEvenFr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_SetOddFr_Pos \ - (29UL) /*!< USB_EP DOEPCTL_ISOCONT: SetOddFr (Bit 29) */ -#define USB_EP_DOEPCTL_ISOCONT_SetOddFr_Msk \ - (0x20000000UL) /*!< USB_EP DOEPCTL_ISOCONT: SetOddFr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_EPDis_Pos \ - (30UL) /*!< USB_EP DOEPCTL_ISOCONT: EPDis (Bit 30) */ -#define USB_EP_DOEPCTL_ISOCONT_EPDis_Msk \ - (0x40000000UL) /*!< USB_EP DOEPCTL_ISOCONT: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_ISOCONT_EPEna_Pos \ - (31UL) /*!< USB_EP DOEPCTL_ISOCONT: EPEna (Bit 31) */ -#define USB_EP_DOEPCTL_ISOCONT_EPEna_Msk \ - (0x80000000UL) /*!< USB_EP DOEPCTL_ISOCONT: EPEna (Bitfield-Mask: 0x01) */ - -/* --------------------------- USB_EP_DOEPCTL_INTBULK --------------------------- */ -#define USB_EP_DOEPCTL_INTBULK_MPS_Pos \ - (0UL) /*!< USB_EP DOEPCTL_INTBULK: MPS (Bit 0) */ -#define USB_EP_DOEPCTL_INTBULK_MPS_Msk \ - (0x7ffUL) /*!< USB_EP DOEPCTL_INTBULK: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_EP_DOEPCTL_INTBULK_USBActEP_Pos \ - (15UL) /*!< USB_EP DOEPCTL_INTBULK: USBActEP (Bit 15) */ -#define USB_EP_DOEPCTL_INTBULK_USBActEP_Msk \ - (0x8000UL) /*!< USB_EP DOEPCTL_INTBULK: USBActEP (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_DPID_Pos \ - (16UL) /*!< USB_EP DOEPCTL_INTBULK: DPID (Bit 16) */ -#define USB_EP_DOEPCTL_INTBULK_DPID_Msk \ - (0x10000UL) /*!< USB_EP DOEPCTL_INTBULK: DPID (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_NAKSts_Pos \ - (17UL) /*!< USB_EP DOEPCTL_INTBULK: NAKSts (Bit 17) */ -#define USB_EP_DOEPCTL_INTBULK_NAKSts_Msk \ - (0x20000UL) /*!< USB_EP DOEPCTL_INTBULK: NAKSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_EPType_Pos \ - (18UL) /*!< USB_EP DOEPCTL_INTBULK: EPType (Bit 18) */ -#define USB_EP_DOEPCTL_INTBULK_EPType_Msk \ - (0xc0000UL) /*!< USB_EP DOEPCTL_INTBULK: EPType (Bitfield-Mask: 0x03) */ -#define USB_EP_DOEPCTL_INTBULK_Snp_Pos \ - (20UL) /*!< USB_EP DOEPCTL_INTBULK: Snp (Bit 20) */ -#define USB_EP_DOEPCTL_INTBULK_Snp_Msk \ - (0x100000UL) /*!< USB_EP DOEPCTL_INTBULK: Snp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_Stall_Pos \ - (21UL) /*!< USB_EP DOEPCTL_INTBULK: Stall (Bit 21) */ -#define USB_EP_DOEPCTL_INTBULK_Stall_Msk \ - (0x200000UL) /*!< USB_EP DOEPCTL_INTBULK: Stall (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_TxFNum_Pos \ - (22UL) /*!< USB_EP DOEPCTL_INTBULK: TxFNum (Bit 22) */ -#define USB_EP_DOEPCTL_INTBULK_TxFNum_Msk \ - (0x3c00000UL) /*!< USB_EP DOEPCTL_INTBULK: TxFNum (Bitfield-Mask: 0x0f) */ -#define USB_EP_DOEPCTL_INTBULK_CNAK_Pos \ - (26UL) /*!< USB_EP DOEPCTL_INTBULK: CNAK (Bit 26) */ -#define USB_EP_DOEPCTL_INTBULK_CNAK_Msk \ - (0x4000000UL) /*!< USB_EP DOEPCTL_INTBULK: CNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_SNAK_Pos \ - (27UL) /*!< USB_EP DOEPCTL_INTBULK: SNAK (Bit 27) */ -#define USB_EP_DOEPCTL_INTBULK_SNAK_Msk \ - (0x8000000UL) /*!< USB_EP DOEPCTL_INTBULK: SNAK (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_SetD0PID_Pos \ - (28UL) /*!< USB_EP DOEPCTL_INTBULK: SetD0PID (Bit 28) */ -#define USB_EP_DOEPCTL_INTBULK_SetD0PID_Msk \ - (0x10000000UL) /*!< USB_EP DOEPCTL_INTBULK: SetD0PID (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_SetD1PID_Pos \ - (29UL) /*!< USB_EP DOEPCTL_INTBULK: SetD1PID (Bit 29) */ -#define USB_EP_DOEPCTL_INTBULK_SetD1PID_Msk \ - (0x20000000UL) /*!< USB_EP DOEPCTL_INTBULK: SetD1PID (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_EPDis_Pos \ - (30UL) /*!< USB_EP DOEPCTL_INTBULK: EPDis (Bit 30) */ -#define USB_EP_DOEPCTL_INTBULK_EPDis_Msk \ - (0x40000000UL) /*!< USB_EP DOEPCTL_INTBULK: EPDis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPCTL_INTBULK_EPEna_Pos \ - (31UL) /*!< USB_EP DOEPCTL_INTBULK: EPEna (Bit 31) */ -#define USB_EP_DOEPCTL_INTBULK_EPEna_Msk \ - (0x80000000UL) /*!< USB_EP DOEPCTL_INTBULK: EPEna (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_EP_DOEPINT ------------------------------- */ -#define USB_EP_DOEPINT_XferCompl_Pos \ - (0UL) /*!< USB_EP DOEPINT: XferCompl (Bit 0) */ -#define USB_EP_DOEPINT_XferCompl_Msk \ - (0x1UL) /*!< USB_EP DOEPINT: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_EPDisbld_Pos \ - (1UL) /*!< USB_EP DOEPINT: EPDisbld (Bit 1) */ -#define USB_EP_DOEPINT_EPDisbld_Msk \ - (0x2UL) /*!< USB_EP DOEPINT: EPDisbld (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_AHBErr_Pos \ - (2UL) /*!< USB_EP DOEPINT: AHBErr (Bit 2) */ -#define USB_EP_DOEPINT_AHBErr_Msk \ - (0x4UL) /*!< USB_EP DOEPINT: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_SetUp_Pos \ - (3UL) /*!< USB_EP DOEPINT: SetUp (Bit 3) */ -#define USB_EP_DOEPINT_SetUp_Msk \ - (0x8UL) /*!< USB_EP DOEPINT: SetUp (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_OUTTknEPdis_Pos \ - (4UL) /*!< USB_EP DOEPINT: OUTTknEPdis (Bit 4) */ -#define USB_EP_DOEPINT_OUTTknEPdis_Msk \ - (0x10UL) /*!< USB_EP DOEPINT: OUTTknEPdis (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_StsPhseRcvd_Pos \ - (5UL) /*!< USB_EP DOEPINT: StsPhseRcvd (Bit 5) */ -#define USB_EP_DOEPINT_StsPhseRcvd_Msk \ - (0x20UL) /*!< USB_EP DOEPINT: StsPhseRcvd (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_Back2BackSETup_Pos \ - (6UL) /*!< USB_EP DOEPINT: Back2BackSETup (Bit 6) */ -#define USB_EP_DOEPINT_Back2BackSETup_Msk \ - (0x40UL) /*!< USB_EP DOEPINT: Back2BackSETup (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_BNAIntr_Pos \ - (9UL) /*!< USB_EP DOEPINT: BNAIntr (Bit 9) */ -#define USB_EP_DOEPINT_BNAIntr_Msk \ - (0x200UL) /*!< USB_EP DOEPINT: BNAIntr (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_PktDrpSts_Pos \ - (11UL) /*!< USB_EP DOEPINT: PktDrpSts (Bit 11) */ -#define USB_EP_DOEPINT_PktDrpSts_Msk \ - (0x800UL) /*!< USB_EP DOEPINT: PktDrpSts (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_BbleErrIntrpt_Pos \ - (12UL) /*!< USB_EP DOEPINT: BbleErrIntrpt (Bit 12) */ -#define USB_EP_DOEPINT_BbleErrIntrpt_Msk \ - (0x1000UL) /*!< USB_EP DOEPINT: BbleErrIntrpt (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_NAKIntrpt_Pos \ - (13UL) /*!< USB_EP DOEPINT: NAKIntrpt (Bit 13) */ -#define USB_EP_DOEPINT_NAKIntrpt_Msk \ - (0x2000UL) /*!< USB_EP DOEPINT: NAKIntrpt (Bitfield-Mask: 0x01) */ -#define USB_EP_DOEPINT_NYETIntrpt_Pos \ - (14UL) /*!< USB_EP DOEPINT: NYETIntrpt (Bit 14) */ -#define USB_EP_DOEPINT_NYETIntrpt_Msk \ - (0x4000UL) /*!< USB_EP DOEPINT: NYETIntrpt (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USB_EP_DOEPTSIZ_ISO ---------------------------- */ -#define USB_EP_DOEPTSIZ_ISO_XferSize_Pos \ - (0UL) /*!< USB_EP DOEPTSIZ_ISO: XferSize (Bit 0) */ -#define USB_EP_DOEPTSIZ_ISO_XferSize_Msk \ - (0x7ffffUL) /*!< USB_EP DOEPTSIZ_ISO: XferSize (Bitfield-Mask: 0x7ffff) */ -#define USB_EP_DOEPTSIZ_ISO_PktCnt_Pos \ - (19UL) /*!< USB_EP DOEPTSIZ_ISO: PktCnt (Bit 19) */ -#define USB_EP_DOEPTSIZ_ISO_PktCnt_Msk \ - (0x1ff80000UL) /*!< USB_EP DOEPTSIZ_ISO: PktCnt (Bitfield-Mask: 0x3ff) */ -#define USB_EP_DOEPTSIZ_ISO_RxDPID_Pos \ - (29UL) /*!< USB_EP DOEPTSIZ_ISO: RxDPID (Bit 29) */ -#define USB_EP_DOEPTSIZ_ISO_RxDPID_Msk \ - (0x60000000UL) /*!< USB_EP DOEPTSIZ_ISO: RxDPID (Bitfield-Mask: 0x03) */ - -/* --------------------------- USB_EP_DOEPTSIZ_CONTROL -------------------------- */ -#define USB_EP_DOEPTSIZ_CONTROL_XferSize_Pos \ - (0UL) /*!< USB_EP DOEPTSIZ_CONTROL: XferSize (Bit 0) */ -#define USB_EP_DOEPTSIZ_CONTROL_XferSize_Msk \ - (0x7ffffUL) /*!< USB_EP DOEPTSIZ_CONTROL: XferSize (Bitfield-Mask: 0x7ffff) */ -#define USB_EP_DOEPTSIZ_CONTROL_PktCnt_Pos \ - (19UL) /*!< USB_EP DOEPTSIZ_CONTROL: PktCnt (Bit 19) */ -#define USB_EP_DOEPTSIZ_CONTROL_PktCnt_Msk \ - (0x1ff80000UL) /*!< USB_EP DOEPTSIZ_CONTROL: PktCnt (Bitfield-Mask: 0x3ff) */ -#define USB_EP_DOEPTSIZ_CONTROL_SUPCnt_Pos \ - (29UL) /*!< USB_EP DOEPTSIZ_CONTROL: SUPCnt (Bit 29) */ -#define USB_EP_DOEPTSIZ_CONTROL_SUPCnt_Msk \ - (0x60000000UL) /*!< USB_EP DOEPTSIZ_CONTROL: SUPCnt (Bitfield-Mask: 0x03) */ - -/* ------------------------------- USB_EP_DOEPDMA ------------------------------- */ -#define USB_EP_DOEPDMA_DMAAddr_Pos \ - (0UL) /*!< USB_EP DOEPDMA: DMAAddr (Bit 0) */ -#define USB_EP_DOEPDMA_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB_EP DOEPDMA: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* ------------------------------- USB_EP_DOEPDMAB ------------------------------ */ -#define USB_EP_DOEPDMAB_DMABufferAddr_Pos \ - (0UL) /*!< USB_EP DOEPDMAB: DMABufferAddr (Bit 0) */ -#define USB_EP_DOEPDMAB_DMABufferAddr_Msk \ - (0xffffffffUL) /*!< USB_EP DOEPDMAB: DMABufferAddr (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'USB_CH' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- USB_CH_HCCHAR ------------------------------- */ -#define USB_CH_HCCHAR_MPS_Pos \ - (0UL) /*!< USB_CH HCCHAR: MPS (Bit 0) */ -#define USB_CH_HCCHAR_MPS_Msk \ - (0x7ffUL) /*!< USB_CH HCCHAR: MPS (Bitfield-Mask: 0x7ff) */ -#define USB_CH_HCCHAR_EPNum_Pos \ - (11UL) /*!< USB_CH HCCHAR: EPNum (Bit 11) */ -#define USB_CH_HCCHAR_EPNum_Msk \ - (0x7800UL) /*!< USB_CH HCCHAR: EPNum (Bitfield-Mask: 0x0f) */ -#define USB_CH_HCCHAR_EPDir_Pos \ - (15UL) /*!< USB_CH HCCHAR: EPDir (Bit 15) */ -#define USB_CH_HCCHAR_EPDir_Msk \ - (0x8000UL) /*!< USB_CH HCCHAR: EPDir (Bitfield-Mask: 0x01) */ -#define USB_CH_HCCHAR_EPType_Pos \ - (18UL) /*!< USB_CH HCCHAR: EPType (Bit 18) */ -#define USB_CH_HCCHAR_EPType_Msk \ - (0xc0000UL) /*!< USB_CH HCCHAR: EPType (Bitfield-Mask: 0x03) */ -#define USB_CH_HCCHAR_MC_EC_Pos \ - (20UL) /*!< USB_CH HCCHAR: MC_EC (Bit 20) */ -#define USB_CH_HCCHAR_MC_EC_Msk \ - (0x300000UL) /*!< USB_CH HCCHAR: MC_EC (Bitfield-Mask: 0x03) */ -#define USB_CH_HCCHAR_DevAddr_Pos \ - (22UL) /*!< USB_CH HCCHAR: DevAddr (Bit 22) */ -#define USB_CH_HCCHAR_DevAddr_Msk \ - (0x1fc00000UL) /*!< USB_CH HCCHAR: DevAddr (Bitfield-Mask: 0x7f) */ -#define USB_CH_HCCHAR_OddFrm_Pos \ - (29UL) /*!< USB_CH HCCHAR: OddFrm (Bit 29) */ -#define USB_CH_HCCHAR_OddFrm_Msk \ - (0x20000000UL) /*!< USB_CH HCCHAR: OddFrm (Bitfield-Mask: 0x01) */ -#define USB_CH_HCCHAR_ChDis_Pos \ - (30UL) /*!< USB_CH HCCHAR: ChDis (Bit 30) */ -#define USB_CH_HCCHAR_ChDis_Msk \ - (0x40000000UL) /*!< USB_CH HCCHAR: ChDis (Bitfield-Mask: 0x01) */ -#define USB_CH_HCCHAR_ChEna_Pos \ - (31UL) /*!< USB_CH HCCHAR: ChEna (Bit 31) */ -#define USB_CH_HCCHAR_ChEna_Msk \ - (0x80000000UL) /*!< USB_CH HCCHAR: ChEna (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USB_CH_HCINT -------------------------------- */ -#define USB_CH_HCINT_XferCompl_Pos \ - (0UL) /*!< USB_CH HCINT: XferCompl (Bit 0) */ -#define USB_CH_HCINT_XferCompl_Msk \ - (0x1UL) /*!< USB_CH HCINT: XferCompl (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_ChHltd_Pos \ - (1UL) /*!< USB_CH HCINT: ChHltd (Bit 1) */ -#define USB_CH_HCINT_ChHltd_Msk \ - (0x2UL) /*!< USB_CH HCINT: ChHltd (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_AHBErr_Pos \ - (2UL) /*!< USB_CH HCINT: AHBErr (Bit 2) */ -#define USB_CH_HCINT_AHBErr_Msk \ - (0x4UL) /*!< USB_CH HCINT: AHBErr (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_STALL_Pos \ - (3UL) /*!< USB_CH HCINT: STALL (Bit 3) */ -#define USB_CH_HCINT_STALL_Msk \ - (0x8UL) /*!< USB_CH HCINT: STALL (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_NAK_Pos \ - (4UL) /*!< USB_CH HCINT: NAK (Bit 4) */ -#define USB_CH_HCINT_NAK_Msk \ - (0x10UL) /*!< USB_CH HCINT: NAK (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_ACK_Pos \ - (5UL) /*!< USB_CH HCINT: ACK (Bit 5) */ -#define USB_CH_HCINT_ACK_Msk \ - (0x20UL) /*!< USB_CH HCINT: ACK (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_NYET_Pos \ - (6UL) /*!< USB_CH HCINT: NYET (Bit 6) */ -#define USB_CH_HCINT_NYET_Msk \ - (0x40UL) /*!< USB_CH HCINT: NYET (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_XactErr_Pos \ - (7UL) /*!< USB_CH HCINT: XactErr (Bit 7) */ -#define USB_CH_HCINT_XactErr_Msk \ - (0x80UL) /*!< USB_CH HCINT: XactErr (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_BblErr_Pos \ - (8UL) /*!< USB_CH HCINT: BblErr (Bit 8) */ -#define USB_CH_HCINT_BblErr_Msk \ - (0x100UL) /*!< USB_CH HCINT: BblErr (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_FrmOvrun_Pos \ - (9UL) /*!< USB_CH HCINT: FrmOvrun (Bit 9) */ -#define USB_CH_HCINT_FrmOvrun_Msk \ - (0x200UL) /*!< USB_CH HCINT: FrmOvrun (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_DataTglErr_Pos \ - (10UL) /*!< USB_CH HCINT: DataTglErr (Bit 10) */ -#define USB_CH_HCINT_DataTglErr_Msk \ - (0x400UL) /*!< USB_CH HCINT: DataTglErr (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_BNAIntr_Pos \ - (11UL) /*!< USB_CH HCINT: BNAIntr (Bit 11) */ -#define USB_CH_HCINT_BNAIntr_Msk \ - (0x800UL) /*!< USB_CH HCINT: BNAIntr (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_XCS_XACT_ERR_Pos \ - (12UL) /*!< USB_CH HCINT: XCS_XACT_ERR (Bit 12) */ -#define USB_CH_HCINT_XCS_XACT_ERR_Msk \ - (0x1000UL) /*!< USB_CH HCINT: XCS_XACT_ERR (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINT_DESC_LST_ROLLIntr_Pos \ - (13UL) /*!< USB_CH HCINT: DESC_LST_ROLLIntr (Bit 13) */ -#define USB_CH_HCINT_DESC_LST_ROLLIntr_Msk \ - (0x2000UL) /*!< USB_CH HCINT: DESC_LST_ROLLIntr (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USB_CH_HCINTMSK ------------------------------ */ -#define USB_CH_HCINTMSK_XferComplMsk_Pos \ - (0UL) /*!< USB_CH HCINTMSK: XferComplMsk (Bit 0) */ -#define USB_CH_HCINTMSK_XferComplMsk_Msk \ - (0x1UL) /*!< USB_CH HCINTMSK: XferComplMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_ChHltdMsk_Pos \ - (1UL) /*!< USB_CH HCINTMSK: ChHltdMsk (Bit 1) */ -#define USB_CH_HCINTMSK_ChHltdMsk_Msk \ - (0x2UL) /*!< USB_CH HCINTMSK: ChHltdMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_AHBErrMsk_Pos \ - (2UL) /*!< USB_CH HCINTMSK: AHBErrMsk (Bit 2) */ -#define USB_CH_HCINTMSK_AHBErrMsk_Msk \ - (0x4UL) /*!< USB_CH HCINTMSK: AHBErrMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_StallMsk_Pos \ - (3UL) /*!< USB_CH HCINTMSK: StallMsk (Bit 3) */ -#define USB_CH_HCINTMSK_StallMsk_Msk \ - (0x8UL) /*!< USB_CH HCINTMSK: StallMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_NakMsk_Pos \ - (4UL) /*!< USB_CH HCINTMSK: NakMsk (Bit 4) */ -#define USB_CH_HCINTMSK_NakMsk_Msk \ - (0x10UL) /*!< USB_CH HCINTMSK: NakMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_AckMsk_Pos \ - (5UL) /*!< USB_CH HCINTMSK: AckMsk (Bit 5) */ -#define USB_CH_HCINTMSK_AckMsk_Msk \ - (0x20UL) /*!< USB_CH HCINTMSK: AckMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_NyetMsk_Pos \ - (6UL) /*!< USB_CH HCINTMSK: NyetMsk (Bit 6) */ -#define USB_CH_HCINTMSK_NyetMsk_Msk \ - (0x40UL) /*!< USB_CH HCINTMSK: NyetMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_XactErrMsk_Pos \ - (7UL) /*!< USB_CH HCINTMSK: XactErrMsk (Bit 7) */ -#define USB_CH_HCINTMSK_XactErrMsk_Msk \ - (0x80UL) /*!< USB_CH HCINTMSK: XactErrMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_BblErrMsk_Pos \ - (8UL) /*!< USB_CH HCINTMSK: BblErrMsk (Bit 8) */ -#define USB_CH_HCINTMSK_BblErrMsk_Msk \ - (0x100UL) /*!< USB_CH HCINTMSK: BblErrMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_FrmOvrunMsk_Pos \ - (9UL) /*!< USB_CH HCINTMSK: FrmOvrunMsk (Bit 9) */ -#define USB_CH_HCINTMSK_FrmOvrunMsk_Msk \ - (0x200UL) /*!< USB_CH HCINTMSK: FrmOvrunMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_DataTglErrMsk_Pos \ - (10UL) /*!< USB_CH HCINTMSK: DataTglErrMsk (Bit 10) */ -#define USB_CH_HCINTMSK_DataTglErrMsk_Msk \ - (0x400UL) /*!< USB_CH HCINTMSK: DataTglErrMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_BNAIntrMsk_Pos \ - (11UL) /*!< USB_CH HCINTMSK: BNAIntrMsk (Bit 11) */ -#define USB_CH_HCINTMSK_BNAIntrMsk_Msk \ - (0x800UL) /*!< USB_CH HCINTMSK: BNAIntrMsk (Bitfield-Mask: 0x01) */ -#define USB_CH_HCINTMSK_DESC_LST_ROLLIntrMsk_Pos \ - (13UL) /*!< USB_CH HCINTMSK: DESC_LST_ROLLIntrMsk (Bit 13) */ -#define USB_CH_HCINTMSK_DESC_LST_ROLLIntrMsk_Msk \ - (0x2000UL) /*!< USB_CH HCINTMSK: DESC_LST_ROLLIntrMsk (Bitfield-Mask: 0x01) */ - -/* -------------------------- USB_CH_HCTSIZ_BUFFERMODE -------------------------- */ -#define USB_CH_HCTSIZ_BUFFERMODE_XferSize_Pos \ - (0UL) /*!< USB_CH HCTSIZ_BUFFERMODE: XferSize (Bit 0) */ -#define USB_CH_HCTSIZ_BUFFERMODE_XferSize_Msk \ - (0x7ffffUL) /*!< USB_CH HCTSIZ_BUFFERMODE: XferSize (Bitfield-Mask: 0x7ffff) */ -#define USB_CH_HCTSIZ_BUFFERMODE_PktCnt_Pos \ - (19UL) /*!< USB_CH HCTSIZ_BUFFERMODE: PktCnt (Bit 19) */ -#define USB_CH_HCTSIZ_BUFFERMODE_PktCnt_Msk \ - (0x1ff80000UL) /*!< USB_CH HCTSIZ_BUFFERMODE: PktCnt (Bitfield-Mask: 0x3ff) */ -#define USB_CH_HCTSIZ_BUFFERMODE_Pid_Pos \ - (29UL) /*!< USB_CH HCTSIZ_BUFFERMODE: Pid (Bit 29) */ -#define USB_CH_HCTSIZ_BUFFERMODE_Pid_Msk \ - (0x60000000UL) /*!< USB_CH HCTSIZ_BUFFERMODE: Pid (Bitfield-Mask: 0x03) */ - -/* -------------------------- USB_CH_HCTSIZ_SCATGATHER -------------------------- */ -#define USB_CH_HCTSIZ_SCATGATHER_SCHED_INFO_Pos \ - (0UL) /*!< USB_CH HCTSIZ_SCATGATHER: SCHED_INFO (Bit 0) */ -#define USB_CH_HCTSIZ_SCATGATHER_SCHED_INFO_Msk \ - (0xffUL) /*!< USB_CH HCTSIZ_SCATGATHER: SCHED_INFO (Bitfield-Mask: 0xff) */ -#define USB_CH_HCTSIZ_SCATGATHER_NTD_Pos \ - (8UL) /*!< USB_CH HCTSIZ_SCATGATHER: NTD (Bit 8) */ -#define USB_CH_HCTSIZ_SCATGATHER_NTD_Msk \ - (0xff00UL) /*!< USB_CH HCTSIZ_SCATGATHER: NTD (Bitfield-Mask: 0xff) */ -#define USB_CH_HCTSIZ_SCATGATHER_Pid_Pos \ - (29UL) /*!< USB_CH HCTSIZ_SCATGATHER: Pid (Bit 29) */ -#define USB_CH_HCTSIZ_SCATGATHER_Pid_Msk \ - (0x60000000UL) /*!< USB_CH HCTSIZ_SCATGATHER: Pid (Bitfield-Mask: 0x03) */ - -/* --------------------------- USB_CH_HCDMA_BUFFERMODE -------------------------- */ -#define USB_CH_HCDMA_BUFFERMODE_DMAAddr_Pos \ - (0UL) /*!< USB_CH HCDMA_BUFFERMODE: DMAAddr (Bit 0) */ -#define USB_CH_HCDMA_BUFFERMODE_DMAAddr_Msk \ - (0xffffffffUL) /*!< USB_CH HCDMA_BUFFERMODE: DMAAddr (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------- USB_CH_HCDMA_SCATGATHER -------------------------- */ -#define USB_CH_HCDMA_SCATGATHER_CTD_Pos \ - (3UL) /*!< USB_CH HCDMA_SCATGATHER: CTD (Bit 3) */ -#define USB_CH_HCDMA_SCATGATHER_CTD_Msk \ - (0x1f8UL) /*!< USB_CH HCDMA_SCATGATHER: CTD (Bitfield-Mask: 0x3f) */ -#define USB_CH_HCDMA_SCATGATHER_DMAAddr_Pos \ - (9UL) /*!< USB_CH HCDMA_SCATGATHER: DMAAddr (Bit 9) */ -#define USB_CH_HCDMA_SCATGATHER_DMAAddr_Msk \ - (0xfffffe00UL) /*!< USB_CH HCDMA_SCATGATHER: DMAAddr (Bitfield-Mask: 0x7fffff) */ - -/* -------------------------------- USB_CH_HCDMAB ------------------------------- */ -#define USB_CH_HCDMAB_Buffer_Address_Pos \ - (0UL) /*!< USB_CH HCDMAB: Buffer_Address (Bit 0) */ -#define USB_CH_HCDMAB_Buffer_Address_Msk \ - (0xffffffffUL) /*!< USB_CH HCDMAB: Buffer_Address (Bitfield-Mask: 0xffffffff) */ - -/* ================================================================================ */ -/* ================ Group 'USIC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- USIC_ID ---------------------------------- */ -#define USIC_ID_MOD_REV_Pos \ - (0UL) /*!< USIC ID: MOD_REV (Bit 0) */ -#define USIC_ID_MOD_REV_Msk \ - (0xffUL) /*!< USIC ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define USIC_ID_MOD_TYPE_Pos \ - (8UL) /*!< USIC ID: MOD_TYPE (Bit 8) */ -#define USIC_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< USIC ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define USIC_ID_MOD_NUMBER_Pos \ - (16UL) /*!< USIC ID: MOD_NUMBER (Bit 16) */ -#define USIC_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< USIC ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ Group 'USIC_CH' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- USIC_CH_CCFG -------------------------------- */ -#define USIC_CH_CCFG_SSC_Pos \ - (0UL) /*!< USIC_CH CCFG: SSC (Bit 0) */ -#define USIC_CH_CCFG_SSC_Msk \ - (0x1UL) /*!< USIC_CH CCFG: SSC (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_ASC_Pos \ - (1UL) /*!< USIC_CH CCFG: ASC (Bit 1) */ -#define USIC_CH_CCFG_ASC_Msk \ - (0x2UL) /*!< USIC_CH CCFG: ASC (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_IIC_Pos \ - (2UL) /*!< USIC_CH CCFG: IIC (Bit 2) */ -#define USIC_CH_CCFG_IIC_Msk \ - (0x4UL) /*!< USIC_CH CCFG: IIC (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_IIS_Pos \ - (3UL) /*!< USIC_CH CCFG: IIS (Bit 3) */ -#define USIC_CH_CCFG_IIS_Msk \ - (0x8UL) /*!< USIC_CH CCFG: IIS (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_RB_Pos \ - (6UL) /*!< USIC_CH CCFG: RB (Bit 6) */ -#define USIC_CH_CCFG_RB_Msk \ - (0x40UL) /*!< USIC_CH CCFG: RB (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCFG_TB_Pos \ - (7UL) /*!< USIC_CH CCFG: TB (Bit 7) */ -#define USIC_CH_CCFG_TB_Msk \ - (0x80UL) /*!< USIC_CH CCFG: TB (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_KSCFG ------------------------------- */ -#define USIC_CH_KSCFG_MODEN_Pos \ - (0UL) /*!< USIC_CH KSCFG: MODEN (Bit 0) */ -#define USIC_CH_KSCFG_MODEN_Msk \ - (0x1UL) /*!< USIC_CH KSCFG: MODEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_KSCFG_BPMODEN_Pos \ - (1UL) /*!< USIC_CH KSCFG: BPMODEN (Bit 1) */ -#define USIC_CH_KSCFG_BPMODEN_Msk \ - (0x2UL) /*!< USIC_CH KSCFG: BPMODEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_KSCFG_NOMCFG_Pos \ - (4UL) /*!< USIC_CH KSCFG: NOMCFG (Bit 4) */ -#define USIC_CH_KSCFG_NOMCFG_Msk \ - (0x30UL) /*!< USIC_CH KSCFG: NOMCFG (Bitfield-Mask: 0x03) */ -#define USIC_CH_KSCFG_BPNOM_Pos \ - (7UL) /*!< USIC_CH KSCFG: BPNOM (Bit 7) */ -#define USIC_CH_KSCFG_BPNOM_Msk \ - (0x80UL) /*!< USIC_CH KSCFG: BPNOM (Bitfield-Mask: 0x01) */ -#define USIC_CH_KSCFG_SUMCFG_Pos \ - (8UL) /*!< USIC_CH KSCFG: SUMCFG (Bit 8) */ -#define USIC_CH_KSCFG_SUMCFG_Msk \ - (0x300UL) /*!< USIC_CH KSCFG: SUMCFG (Bitfield-Mask: 0x03) */ -#define USIC_CH_KSCFG_BPSUM_Pos \ - (11UL) /*!< USIC_CH KSCFG: BPSUM (Bit 11) */ -#define USIC_CH_KSCFG_BPSUM_Msk \ - (0x800UL) /*!< USIC_CH KSCFG: BPSUM (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USIC_CH_FDR -------------------------------- */ -#define USIC_CH_FDR_STEP_Pos \ - (0UL) /*!< USIC_CH FDR: STEP (Bit 0) */ -#define USIC_CH_FDR_STEP_Msk \ - (0x3ffUL) /*!< USIC_CH FDR: STEP (Bitfield-Mask: 0x3ff) */ -#define USIC_CH_FDR_DM_Pos \ - (14UL) /*!< USIC_CH FDR: DM (Bit 14) */ -#define USIC_CH_FDR_DM_Msk \ - (0xc000UL) /*!< USIC_CH FDR: DM (Bitfield-Mask: 0x03) */ -#define USIC_CH_FDR_RESULT_Pos \ - (16UL) /*!< USIC_CH FDR: RESULT (Bit 16) */ -#define USIC_CH_FDR_RESULT_Msk \ - (0x3ff0000UL) /*!< USIC_CH FDR: RESULT (Bitfield-Mask: 0x3ff) */ - -/* --------------------------------- USIC_CH_BRG -------------------------------- */ -#define USIC_CH_BRG_CLKSEL_Pos \ - (0UL) /*!< USIC_CH BRG: CLKSEL (Bit 0) */ -#define USIC_CH_BRG_CLKSEL_Msk \ - (0x3UL) /*!< USIC_CH BRG: CLKSEL (Bitfield-Mask: 0x03) */ -#define USIC_CH_BRG_TMEN_Pos \ - (3UL) /*!< USIC_CH BRG: TMEN (Bit 3) */ -#define USIC_CH_BRG_TMEN_Msk \ - (0x8UL) /*!< USIC_CH BRG: TMEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_BRG_PPPEN_Pos \ - (4UL) /*!< USIC_CH BRG: PPPEN (Bit 4) */ -#define USIC_CH_BRG_PPPEN_Msk \ - (0x10UL) /*!< USIC_CH BRG: PPPEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_BRG_CTQSEL_Pos \ - (6UL) /*!< USIC_CH BRG: CTQSEL (Bit 6) */ -#define USIC_CH_BRG_CTQSEL_Msk \ - (0xc0UL) /*!< USIC_CH BRG: CTQSEL (Bitfield-Mask: 0x03) */ -#define USIC_CH_BRG_PCTQ_Pos \ - (8UL) /*!< USIC_CH BRG: PCTQ (Bit 8) */ -#define USIC_CH_BRG_PCTQ_Msk \ - (0x300UL) /*!< USIC_CH BRG: PCTQ (Bitfield-Mask: 0x03) */ -#define USIC_CH_BRG_DCTQ_Pos \ - (10UL) /*!< USIC_CH BRG: DCTQ (Bit 10) */ -#define USIC_CH_BRG_DCTQ_Msk \ - (0x7c00UL) /*!< USIC_CH BRG: DCTQ (Bitfield-Mask: 0x1f) */ -#define USIC_CH_BRG_PDIV_Pos \ - (16UL) /*!< USIC_CH BRG: PDIV (Bit 16) */ -#define USIC_CH_BRG_PDIV_Msk \ - (0x3ff0000UL) /*!< USIC_CH BRG: PDIV (Bitfield-Mask: 0x3ff) */ -#define USIC_CH_BRG_SCLKOSEL_Pos \ - (28UL) /*!< USIC_CH BRG: SCLKOSEL (Bit 28) */ -#define USIC_CH_BRG_SCLKOSEL_Msk \ - (0x10000000UL) /*!< USIC_CH BRG: SCLKOSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_BRG_MCLKCFG_Pos \ - (29UL) /*!< USIC_CH BRG: MCLKCFG (Bit 29) */ -#define USIC_CH_BRG_MCLKCFG_Msk \ - (0x20000000UL) /*!< USIC_CH BRG: MCLKCFG (Bitfield-Mask: 0x01) */ -#define USIC_CH_BRG_SCLKCFG_Pos \ - (30UL) /*!< USIC_CH BRG: SCLKCFG (Bit 30) */ -#define USIC_CH_BRG_SCLKCFG_Msk \ - (0xc0000000UL) /*!< USIC_CH BRG: SCLKCFG (Bitfield-Mask: 0x03) */ - -/* -------------------------------- USIC_CH_INPR -------------------------------- */ -#define USIC_CH_INPR_TSINP_Pos \ - (0UL) /*!< USIC_CH INPR: TSINP (Bit 0) */ -#define USIC_CH_INPR_TSINP_Msk \ - (0x7UL) /*!< USIC_CH INPR: TSINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_INPR_TBINP_Pos \ - (4UL) /*!< USIC_CH INPR: TBINP (Bit 4) */ -#define USIC_CH_INPR_TBINP_Msk \ - (0x70UL) /*!< USIC_CH INPR: TBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_INPR_RINP_Pos \ - (8UL) /*!< USIC_CH INPR: RINP (Bit 8) */ -#define USIC_CH_INPR_RINP_Msk \ - (0x700UL) /*!< USIC_CH INPR: RINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_INPR_AINP_Pos \ - (12UL) /*!< USIC_CH INPR: AINP (Bit 12) */ -#define USIC_CH_INPR_AINP_Msk \ - (0x7000UL) /*!< USIC_CH INPR: AINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_INPR_PINP_Pos \ - (16UL) /*!< USIC_CH INPR: PINP (Bit 16) */ -#define USIC_CH_INPR_PINP_Msk \ - (0x70000UL) /*!< USIC_CH INPR: PINP (Bitfield-Mask: 0x07) */ - -/* -------------------------------- USIC_CH_DX0CR ------------------------------- */ -#define USIC_CH_DX0CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX0CR: DSEL (Bit 0) */ -#define USIC_CH_DX0CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX0CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX0CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX0CR: INSW (Bit 4) */ -#define USIC_CH_DX0CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX0CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX0CR: DFEN (Bit 5) */ -#define USIC_CH_DX0CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX0CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX0CR: DSEN (Bit 6) */ -#define USIC_CH_DX0CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX0CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX0CR: DPOL (Bit 8) */ -#define USIC_CH_DX0CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX0CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX0CR: SFSEL (Bit 9) */ -#define USIC_CH_DX0CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX0CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX0CR_CM_Pos \ - (10UL) /*!< USIC_CH DX0CR: CM (Bit 10) */ -#define USIC_CH_DX0CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX0CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX0CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX0CR: DXS (Bit 15) */ -#define USIC_CH_DX0CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX0CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX1CR ------------------------------- */ -#define USIC_CH_DX1CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX1CR: DSEL (Bit 0) */ -#define USIC_CH_DX1CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX1CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX1CR_DCEN_Pos \ - (3UL) /*!< USIC_CH DX1CR: DCEN (Bit 3) */ -#define USIC_CH_DX1CR_DCEN_Msk \ - (0x8UL) /*!< USIC_CH DX1CR: DCEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX1CR: INSW (Bit 4) */ -#define USIC_CH_DX1CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX1CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX1CR: DFEN (Bit 5) */ -#define USIC_CH_DX1CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX1CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX1CR: DSEN (Bit 6) */ -#define USIC_CH_DX1CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX1CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX1CR: DPOL (Bit 8) */ -#define USIC_CH_DX1CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX1CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX1CR: SFSEL (Bit 9) */ -#define USIC_CH_DX1CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX1CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX1CR_CM_Pos \ - (10UL) /*!< USIC_CH DX1CR: CM (Bit 10) */ -#define USIC_CH_DX1CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX1CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX1CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX1CR: DXS (Bit 15) */ -#define USIC_CH_DX1CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX1CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX2CR ------------------------------- */ -#define USIC_CH_DX2CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX2CR: DSEL (Bit 0) */ -#define USIC_CH_DX2CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX2CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX2CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX2CR: INSW (Bit 4) */ -#define USIC_CH_DX2CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX2CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX2CR: DFEN (Bit 5) */ -#define USIC_CH_DX2CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX2CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX2CR: DSEN (Bit 6) */ -#define USIC_CH_DX2CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX2CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX2CR: DPOL (Bit 8) */ -#define USIC_CH_DX2CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX2CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX2CR: SFSEL (Bit 9) */ -#define USIC_CH_DX2CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX2CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX2CR_CM_Pos \ - (10UL) /*!< USIC_CH DX2CR: CM (Bit 10) */ -#define USIC_CH_DX2CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX2CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX2CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX2CR: DXS (Bit 15) */ -#define USIC_CH_DX2CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX2CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX3CR ------------------------------- */ -#define USIC_CH_DX3CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX3CR: DSEL (Bit 0) */ -#define USIC_CH_DX3CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX3CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX3CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX3CR: INSW (Bit 4) */ -#define USIC_CH_DX3CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX3CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX3CR: DFEN (Bit 5) */ -#define USIC_CH_DX3CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX3CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX3CR: DSEN (Bit 6) */ -#define USIC_CH_DX3CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX3CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX3CR: DPOL (Bit 8) */ -#define USIC_CH_DX3CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX3CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX3CR: SFSEL (Bit 9) */ -#define USIC_CH_DX3CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX3CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX3CR_CM_Pos \ - (10UL) /*!< USIC_CH DX3CR: CM (Bit 10) */ -#define USIC_CH_DX3CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX3CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX3CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX3CR: DXS (Bit 15) */ -#define USIC_CH_DX3CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX3CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX4CR ------------------------------- */ -#define USIC_CH_DX4CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX4CR: DSEL (Bit 0) */ -#define USIC_CH_DX4CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX4CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX4CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX4CR: INSW (Bit 4) */ -#define USIC_CH_DX4CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX4CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX4CR: DFEN (Bit 5) */ -#define USIC_CH_DX4CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX4CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX4CR: DSEN (Bit 6) */ -#define USIC_CH_DX4CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX4CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX4CR: DPOL (Bit 8) */ -#define USIC_CH_DX4CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX4CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX4CR: SFSEL (Bit 9) */ -#define USIC_CH_DX4CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX4CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX4CR_CM_Pos \ - (10UL) /*!< USIC_CH DX4CR: CM (Bit 10) */ -#define USIC_CH_DX4CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX4CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX4CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX4CR: DXS (Bit 15) */ -#define USIC_CH_DX4CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX4CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_DX5CR ------------------------------- */ -#define USIC_CH_DX5CR_DSEL_Pos \ - (0UL) /*!< USIC_CH DX5CR: DSEL (Bit 0) */ -#define USIC_CH_DX5CR_DSEL_Msk \ - (0x7UL) /*!< USIC_CH DX5CR: DSEL (Bitfield-Mask: 0x07) */ -#define USIC_CH_DX5CR_INSW_Pos \ - (4UL) /*!< USIC_CH DX5CR: INSW (Bit 4) */ -#define USIC_CH_DX5CR_INSW_Msk \ - (0x10UL) /*!< USIC_CH DX5CR: INSW (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_DFEN_Pos \ - (5UL) /*!< USIC_CH DX5CR: DFEN (Bit 5) */ -#define USIC_CH_DX5CR_DFEN_Msk \ - (0x20UL) /*!< USIC_CH DX5CR: DFEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_DSEN_Pos \ - (6UL) /*!< USIC_CH DX5CR: DSEN (Bit 6) */ -#define USIC_CH_DX5CR_DSEN_Msk \ - (0x40UL) /*!< USIC_CH DX5CR: DSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_DPOL_Pos \ - (8UL) /*!< USIC_CH DX5CR: DPOL (Bit 8) */ -#define USIC_CH_DX5CR_DPOL_Msk \ - (0x100UL) /*!< USIC_CH DX5CR: DPOL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_SFSEL_Pos \ - (9UL) /*!< USIC_CH DX5CR: SFSEL (Bit 9) */ -#define USIC_CH_DX5CR_SFSEL_Msk \ - (0x200UL) /*!< USIC_CH DX5CR: SFSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_DX5CR_CM_Pos \ - (10UL) /*!< USIC_CH DX5CR: CM (Bit 10) */ -#define USIC_CH_DX5CR_CM_Msk \ - (0xc00UL) /*!< USIC_CH DX5CR: CM (Bitfield-Mask: 0x03) */ -#define USIC_CH_DX5CR_DXS_Pos \ - (15UL) /*!< USIC_CH DX5CR: DXS (Bit 15) */ -#define USIC_CH_DX5CR_DXS_Msk \ - (0x8000UL) /*!< USIC_CH DX5CR: DXS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_SCTR -------------------------------- */ -#define USIC_CH_SCTR_SDIR_Pos \ - (0UL) /*!< USIC_CH SCTR: SDIR (Bit 0) */ -#define USIC_CH_SCTR_SDIR_Msk \ - (0x1UL) /*!< USIC_CH SCTR: SDIR (Bitfield-Mask: 0x01) */ -#define USIC_CH_SCTR_PDL_Pos \ - (1UL) /*!< USIC_CH SCTR: PDL (Bit 1) */ -#define USIC_CH_SCTR_PDL_Msk \ - (0x2UL) /*!< USIC_CH SCTR: PDL (Bitfield-Mask: 0x01) */ -#define USIC_CH_SCTR_DSM_Pos \ - (2UL) /*!< USIC_CH SCTR: DSM (Bit 2) */ -#define USIC_CH_SCTR_DSM_Msk \ - (0xcUL) /*!< USIC_CH SCTR: DSM (Bitfield-Mask: 0x03) */ -#define USIC_CH_SCTR_HPCDIR_Pos \ - (4UL) /*!< USIC_CH SCTR: HPCDIR (Bit 4) */ -#define USIC_CH_SCTR_HPCDIR_Msk \ - (0x10UL) /*!< USIC_CH SCTR: HPCDIR (Bitfield-Mask: 0x01) */ -#define USIC_CH_SCTR_DOCFG_Pos \ - (6UL) /*!< USIC_CH SCTR: DOCFG (Bit 6) */ -#define USIC_CH_SCTR_DOCFG_Msk \ - (0xc0UL) /*!< USIC_CH SCTR: DOCFG (Bitfield-Mask: 0x03) */ -#define USIC_CH_SCTR_TRM_Pos \ - (8UL) /*!< USIC_CH SCTR: TRM (Bit 8) */ -#define USIC_CH_SCTR_TRM_Msk \ - (0x300UL) /*!< USIC_CH SCTR: TRM (Bitfield-Mask: 0x03) */ -#define USIC_CH_SCTR_FLE_Pos \ - (16UL) /*!< USIC_CH SCTR: FLE (Bit 16) */ -#define USIC_CH_SCTR_FLE_Msk \ - (0x3f0000UL) /*!< USIC_CH SCTR: FLE (Bitfield-Mask: 0x3f) */ -#define USIC_CH_SCTR_WLE_Pos \ - (24UL) /*!< USIC_CH SCTR: WLE (Bit 24) */ -#define USIC_CH_SCTR_WLE_Msk \ - (0xf000000UL) /*!< USIC_CH SCTR: WLE (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- USIC_CH_TCSR -------------------------------- */ -#define USIC_CH_TCSR_WLEMD_Pos \ - (0UL) /*!< USIC_CH TCSR: WLEMD (Bit 0) */ -#define USIC_CH_TCSR_WLEMD_Msk \ - (0x1UL) /*!< USIC_CH TCSR: WLEMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_SELMD_Pos \ - (1UL) /*!< USIC_CH TCSR: SELMD (Bit 1) */ -#define USIC_CH_TCSR_SELMD_Msk \ - (0x2UL) /*!< USIC_CH TCSR: SELMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_FLEMD_Pos \ - (2UL) /*!< USIC_CH TCSR: FLEMD (Bit 2) */ -#define USIC_CH_TCSR_FLEMD_Msk \ - (0x4UL) /*!< USIC_CH TCSR: FLEMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_WAMD_Pos \ - (3UL) /*!< USIC_CH TCSR: WAMD (Bit 3) */ -#define USIC_CH_TCSR_WAMD_Msk \ - (0x8UL) /*!< USIC_CH TCSR: WAMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_HPCMD_Pos \ - (4UL) /*!< USIC_CH TCSR: HPCMD (Bit 4) */ -#define USIC_CH_TCSR_HPCMD_Msk \ - (0x10UL) /*!< USIC_CH TCSR: HPCMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_SOF_Pos \ - (5UL) /*!< USIC_CH TCSR: SOF (Bit 5) */ -#define USIC_CH_TCSR_SOF_Msk \ - (0x20UL) /*!< USIC_CH TCSR: SOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_EOF_Pos \ - (6UL) /*!< USIC_CH TCSR: EOF (Bit 6) */ -#define USIC_CH_TCSR_EOF_Msk \ - (0x40UL) /*!< USIC_CH TCSR: EOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TDV_Pos \ - (7UL) /*!< USIC_CH TCSR: TDV (Bit 7) */ -#define USIC_CH_TCSR_TDV_Msk \ - (0x80UL) /*!< USIC_CH TCSR: TDV (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TDSSM_Pos \ - (8UL) /*!< USIC_CH TCSR: TDSSM (Bit 8) */ -#define USIC_CH_TCSR_TDSSM_Msk \ - (0x100UL) /*!< USIC_CH TCSR: TDSSM (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TDEN_Pos \ - (10UL) /*!< USIC_CH TCSR: TDEN (Bit 10) */ -#define USIC_CH_TCSR_TDEN_Msk \ - (0xc00UL) /*!< USIC_CH TCSR: TDEN (Bitfield-Mask: 0x03) */ -#define USIC_CH_TCSR_TDVTR_Pos \ - (12UL) /*!< USIC_CH TCSR: TDVTR (Bit 12) */ -#define USIC_CH_TCSR_TDVTR_Msk \ - (0x1000UL) /*!< USIC_CH TCSR: TDVTR (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_WA_Pos \ - (13UL) /*!< USIC_CH TCSR: WA (Bit 13) */ -#define USIC_CH_TCSR_WA_Msk \ - (0x2000UL) /*!< USIC_CH TCSR: WA (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TSOF_Pos \ - (24UL) /*!< USIC_CH TCSR: TSOF (Bit 24) */ -#define USIC_CH_TCSR_TSOF_Msk \ - (0x1000000UL) /*!< USIC_CH TCSR: TSOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TV_Pos \ - (26UL) /*!< USIC_CH TCSR: TV (Bit 26) */ -#define USIC_CH_TCSR_TV_Msk \ - (0x4000000UL) /*!< USIC_CH TCSR: TV (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TVC_Pos \ - (27UL) /*!< USIC_CH TCSR: TVC (Bit 27) */ -#define USIC_CH_TCSR_TVC_Msk \ - (0x8000000UL) /*!< USIC_CH TCSR: TVC (Bitfield-Mask: 0x01) */ -#define USIC_CH_TCSR_TE_Pos \ - (28UL) /*!< USIC_CH TCSR: TE (Bit 28) */ -#define USIC_CH_TCSR_TE_Msk \ - (0x10000000UL) /*!< USIC_CH TCSR: TE (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USIC_CH_PCR -------------------------------- */ -#define USIC_CH_PCR_CTR0_Pos \ - (0UL) /*!< USIC_CH PCR: CTR0 (Bit 0) */ -#define USIC_CH_PCR_CTR0_Msk \ - (0x1UL) /*!< USIC_CH PCR: CTR0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR1_Pos \ - (1UL) /*!< USIC_CH PCR: CTR1 (Bit 1) */ -#define USIC_CH_PCR_CTR1_Msk \ - (0x2UL) /*!< USIC_CH PCR: CTR1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR2_Pos \ - (2UL) /*!< USIC_CH PCR: CTR2 (Bit 2) */ -#define USIC_CH_PCR_CTR2_Msk \ - (0x4UL) /*!< USIC_CH PCR: CTR2 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR3_Pos \ - (3UL) /*!< USIC_CH PCR: CTR3 (Bit 3) */ -#define USIC_CH_PCR_CTR3_Msk \ - (0x8UL) /*!< USIC_CH PCR: CTR3 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR4_Pos \ - (4UL) /*!< USIC_CH PCR: CTR4 (Bit 4) */ -#define USIC_CH_PCR_CTR4_Msk \ - (0x10UL) /*!< USIC_CH PCR: CTR4 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR5_Pos \ - (5UL) /*!< USIC_CH PCR: CTR5 (Bit 5) */ -#define USIC_CH_PCR_CTR5_Msk \ - (0x20UL) /*!< USIC_CH PCR: CTR5 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR6_Pos \ - (6UL) /*!< USIC_CH PCR: CTR6 (Bit 6) */ -#define USIC_CH_PCR_CTR6_Msk \ - (0x40UL) /*!< USIC_CH PCR: CTR6 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR7_Pos \ - (7UL) /*!< USIC_CH PCR: CTR7 (Bit 7) */ -#define USIC_CH_PCR_CTR7_Msk \ - (0x80UL) /*!< USIC_CH PCR: CTR7 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR8_Pos \ - (8UL) /*!< USIC_CH PCR: CTR8 (Bit 8) */ -#define USIC_CH_PCR_CTR8_Msk \ - (0x100UL) /*!< USIC_CH PCR: CTR8 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR9_Pos \ - (9UL) /*!< USIC_CH PCR: CTR9 (Bit 9) */ -#define USIC_CH_PCR_CTR9_Msk \ - (0x200UL) /*!< USIC_CH PCR: CTR9 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR10_Pos \ - (10UL) /*!< USIC_CH PCR: CTR10 (Bit 10) */ -#define USIC_CH_PCR_CTR10_Msk \ - (0x400UL) /*!< USIC_CH PCR: CTR10 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR11_Pos \ - (11UL) /*!< USIC_CH PCR: CTR11 (Bit 11) */ -#define USIC_CH_PCR_CTR11_Msk \ - (0x800UL) /*!< USIC_CH PCR: CTR11 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR12_Pos \ - (12UL) /*!< USIC_CH PCR: CTR12 (Bit 12) */ -#define USIC_CH_PCR_CTR12_Msk \ - (0x1000UL) /*!< USIC_CH PCR: CTR12 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR13_Pos \ - (13UL) /*!< USIC_CH PCR: CTR13 (Bit 13) */ -#define USIC_CH_PCR_CTR13_Msk \ - (0x2000UL) /*!< USIC_CH PCR: CTR13 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR14_Pos \ - (14UL) /*!< USIC_CH PCR: CTR14 (Bit 14) */ -#define USIC_CH_PCR_CTR14_Msk \ - (0x4000UL) /*!< USIC_CH PCR: CTR14 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR15_Pos \ - (15UL) /*!< USIC_CH PCR: CTR15 (Bit 15) */ -#define USIC_CH_PCR_CTR15_Msk \ - (0x8000UL) /*!< USIC_CH PCR: CTR15 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR16_Pos \ - (16UL) /*!< USIC_CH PCR: CTR16 (Bit 16) */ -#define USIC_CH_PCR_CTR16_Msk \ - (0x10000UL) /*!< USIC_CH PCR: CTR16 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR17_Pos \ - (17UL) /*!< USIC_CH PCR: CTR17 (Bit 17) */ -#define USIC_CH_PCR_CTR17_Msk \ - (0x20000UL) /*!< USIC_CH PCR: CTR17 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR18_Pos \ - (18UL) /*!< USIC_CH PCR: CTR18 (Bit 18) */ -#define USIC_CH_PCR_CTR18_Msk \ - (0x40000UL) /*!< USIC_CH PCR: CTR18 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR19_Pos \ - (19UL) /*!< USIC_CH PCR: CTR19 (Bit 19) */ -#define USIC_CH_PCR_CTR19_Msk \ - (0x80000UL) /*!< USIC_CH PCR: CTR19 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR20_Pos \ - (20UL) /*!< USIC_CH PCR: CTR20 (Bit 20) */ -#define USIC_CH_PCR_CTR20_Msk \ - (0x100000UL) /*!< USIC_CH PCR: CTR20 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR21_Pos \ - (21UL) /*!< USIC_CH PCR: CTR21 (Bit 21) */ -#define USIC_CH_PCR_CTR21_Msk \ - (0x200000UL) /*!< USIC_CH PCR: CTR21 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR22_Pos \ - (22UL) /*!< USIC_CH PCR: CTR22 (Bit 22) */ -#define USIC_CH_PCR_CTR22_Msk \ - (0x400000UL) /*!< USIC_CH PCR: CTR22 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR23_Pos \ - (23UL) /*!< USIC_CH PCR: CTR23 (Bit 23) */ -#define USIC_CH_PCR_CTR23_Msk \ - (0x800000UL) /*!< USIC_CH PCR: CTR23 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR24_Pos \ - (24UL) /*!< USIC_CH PCR: CTR24 (Bit 24) */ -#define USIC_CH_PCR_CTR24_Msk \ - (0x1000000UL) /*!< USIC_CH PCR: CTR24 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR25_Pos \ - (25UL) /*!< USIC_CH PCR: CTR25 (Bit 25) */ -#define USIC_CH_PCR_CTR25_Msk \ - (0x2000000UL) /*!< USIC_CH PCR: CTR25 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR26_Pos \ - (26UL) /*!< USIC_CH PCR: CTR26 (Bit 26) */ -#define USIC_CH_PCR_CTR26_Msk \ - (0x4000000UL) /*!< USIC_CH PCR: CTR26 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR27_Pos \ - (27UL) /*!< USIC_CH PCR: CTR27 (Bit 27) */ -#define USIC_CH_PCR_CTR27_Msk \ - (0x8000000UL) /*!< USIC_CH PCR: CTR27 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR28_Pos \ - (28UL) /*!< USIC_CH PCR: CTR28 (Bit 28) */ -#define USIC_CH_PCR_CTR28_Msk \ - (0x10000000UL) /*!< USIC_CH PCR: CTR28 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR29_Pos \ - (29UL) /*!< USIC_CH PCR: CTR29 (Bit 29) */ -#define USIC_CH_PCR_CTR29_Msk \ - (0x20000000UL) /*!< USIC_CH PCR: CTR29 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR30_Pos \ - (30UL) /*!< USIC_CH PCR: CTR30 (Bit 30) */ -#define USIC_CH_PCR_CTR30_Msk \ - (0x40000000UL) /*!< USIC_CH PCR: CTR30 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_CTR31_Pos \ - (31UL) /*!< USIC_CH PCR: CTR31 (Bit 31) */ -#define USIC_CH_PCR_CTR31_Msk \ - (0x80000000UL) /*!< USIC_CH PCR: CTR31 (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PCR_ASCMode ---------------------------- */ -#define USIC_CH_PCR_ASCMode_SMD_Pos \ - (0UL) /*!< USIC_CH PCR_ASCMode: SMD (Bit 0) */ -#define USIC_CH_PCR_ASCMode_SMD_Msk \ - (0x1UL) /*!< USIC_CH PCR_ASCMode: SMD (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_STPB_Pos \ - (1UL) /*!< USIC_CH PCR_ASCMode: STPB (Bit 1) */ -#define USIC_CH_PCR_ASCMode_STPB_Msk \ - (0x2UL) /*!< USIC_CH PCR_ASCMode: STPB (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_IDM_Pos \ - (2UL) /*!< USIC_CH PCR_ASCMode: IDM (Bit 2) */ -#define USIC_CH_PCR_ASCMode_IDM_Msk \ - (0x4UL) /*!< USIC_CH PCR_ASCMode: IDM (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_SBIEN_Pos \ - (3UL) /*!< USIC_CH PCR_ASCMode: SBIEN (Bit 3) */ -#define USIC_CH_PCR_ASCMode_SBIEN_Msk \ - (0x8UL) /*!< USIC_CH PCR_ASCMode: SBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_CDEN_Pos \ - (4UL) /*!< USIC_CH PCR_ASCMode: CDEN (Bit 4) */ -#define USIC_CH_PCR_ASCMode_CDEN_Msk \ - (0x10UL) /*!< USIC_CH PCR_ASCMode: CDEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_RNIEN_Pos \ - (5UL) /*!< USIC_CH PCR_ASCMode: RNIEN (Bit 5) */ -#define USIC_CH_PCR_ASCMode_RNIEN_Msk \ - (0x20UL) /*!< USIC_CH PCR_ASCMode: RNIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_FEIEN_Pos \ - (6UL) /*!< USIC_CH PCR_ASCMode: FEIEN (Bit 6) */ -#define USIC_CH_PCR_ASCMode_FEIEN_Msk \ - (0x40UL) /*!< USIC_CH PCR_ASCMode: FEIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_FFIEN_Pos \ - (7UL) /*!< USIC_CH PCR_ASCMode: FFIEN (Bit 7) */ -#define USIC_CH_PCR_ASCMode_FFIEN_Msk \ - (0x80UL) /*!< USIC_CH PCR_ASCMode: FFIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_SP_Pos \ - (8UL) /*!< USIC_CH PCR_ASCMode: SP (Bit 8) */ -#define USIC_CH_PCR_ASCMode_SP_Msk \ - (0x1f00UL) /*!< USIC_CH PCR_ASCMode: SP (Bitfield-Mask: 0x1f) */ -#define USIC_CH_PCR_ASCMode_PL_Pos \ - (13UL) /*!< USIC_CH PCR_ASCMode: PL (Bit 13) */ -#define USIC_CH_PCR_ASCMode_PL_Msk \ - (0xe000UL) /*!< USIC_CH PCR_ASCMode: PL (Bitfield-Mask: 0x07) */ -#define USIC_CH_PCR_ASCMode_RSTEN_Pos \ - (16UL) /*!< USIC_CH PCR_ASCMode: RSTEN (Bit 16) */ -#define USIC_CH_PCR_ASCMode_RSTEN_Msk \ - (0x10000UL) /*!< USIC_CH PCR_ASCMode: RSTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_TSTEN_Pos \ - (17UL) /*!< USIC_CH PCR_ASCMode: TSTEN (Bit 17) */ -#define USIC_CH_PCR_ASCMode_TSTEN_Msk \ - (0x20000UL) /*!< USIC_CH PCR_ASCMode: TSTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_ASCMode_MCLK_Pos \ - (31UL) /*!< USIC_CH PCR_ASCMode: MCLK (Bit 31) */ -#define USIC_CH_PCR_ASCMode_MCLK_Msk \ - (0x80000000UL) /*!< USIC_CH PCR_ASCMode: MCLK (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PCR_SSCMode ---------------------------- */ -#define USIC_CH_PCR_SSCMode_MSLSEN_Pos \ - (0UL) /*!< USIC_CH PCR_SSCMode: MSLSEN (Bit 0) */ -#define USIC_CH_PCR_SSCMode_MSLSEN_Msk \ - (0x1UL) /*!< USIC_CH PCR_SSCMode: MSLSEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_SELCTR_Pos \ - (1UL) /*!< USIC_CH PCR_SSCMode: SELCTR (Bit 1) */ -#define USIC_CH_PCR_SSCMode_SELCTR_Msk \ - (0x2UL) /*!< USIC_CH PCR_SSCMode: SELCTR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_SELINV_Pos \ - (2UL) /*!< USIC_CH PCR_SSCMode: SELINV (Bit 2) */ -#define USIC_CH_PCR_SSCMode_SELINV_Msk \ - (0x4UL) /*!< USIC_CH PCR_SSCMode: SELINV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_FEM_Pos \ - (3UL) /*!< USIC_CH PCR_SSCMode: FEM (Bit 3) */ -#define USIC_CH_PCR_SSCMode_FEM_Msk \ - (0x8UL) /*!< USIC_CH PCR_SSCMode: FEM (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_CTQSEL1_Pos \ - (4UL) /*!< USIC_CH PCR_SSCMode: CTQSEL1 (Bit 4) */ -#define USIC_CH_PCR_SSCMode_CTQSEL1_Msk \ - (0x30UL) /*!< USIC_CH PCR_SSCMode: CTQSEL1 (Bitfield-Mask: 0x03) */ -#define USIC_CH_PCR_SSCMode_PCTQ1_Pos \ - (6UL) /*!< USIC_CH PCR_SSCMode: PCTQ1 (Bit 6) */ -#define USIC_CH_PCR_SSCMode_PCTQ1_Msk \ - (0xc0UL) /*!< USIC_CH PCR_SSCMode: PCTQ1 (Bitfield-Mask: 0x03) */ -#define USIC_CH_PCR_SSCMode_DCTQ1_Pos \ - (8UL) /*!< USIC_CH PCR_SSCMode: DCTQ1 (Bit 8) */ -#define USIC_CH_PCR_SSCMode_DCTQ1_Msk \ - (0x1f00UL) /*!< USIC_CH PCR_SSCMode: DCTQ1 (Bitfield-Mask: 0x1f) */ -#define USIC_CH_PCR_SSCMode_PARIEN_Pos \ - (13UL) /*!< USIC_CH PCR_SSCMode: PARIEN (Bit 13) */ -#define USIC_CH_PCR_SSCMode_PARIEN_Msk \ - (0x2000UL) /*!< USIC_CH PCR_SSCMode: PARIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_MSLSIEN_Pos \ - (14UL) /*!< USIC_CH PCR_SSCMode: MSLSIEN (Bit 14) */ -#define USIC_CH_PCR_SSCMode_MSLSIEN_Msk \ - (0x4000UL) /*!< USIC_CH PCR_SSCMode: MSLSIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_DX2TIEN_Pos \ - (15UL) /*!< USIC_CH PCR_SSCMode: DX2TIEN (Bit 15) */ -#define USIC_CH_PCR_SSCMode_DX2TIEN_Msk \ - (0x8000UL) /*!< USIC_CH PCR_SSCMode: DX2TIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_SELO_Pos \ - (16UL) /*!< USIC_CH PCR_SSCMode: SELO (Bit 16) */ -#define USIC_CH_PCR_SSCMode_SELO_Msk \ - (0xff0000UL) /*!< USIC_CH PCR_SSCMode: SELO (Bitfield-Mask: 0xff) */ -#define USIC_CH_PCR_SSCMode_TIWEN_Pos \ - (24UL) /*!< USIC_CH PCR_SSCMode: TIWEN (Bit 24) */ -#define USIC_CH_PCR_SSCMode_TIWEN_Msk \ - (0x1000000UL) /*!< USIC_CH PCR_SSCMode: TIWEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_SLPHSEL_Pos \ - (25UL) /*!< USIC_CH PCR_SSCMode: SLPHSEL (Bit 25) */ -#define USIC_CH_PCR_SSCMode_SLPHSEL_Msk \ - (0x2000000UL) /*!< USIC_CH PCR_SSCMode: SLPHSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_SSCMode_MCLK_Pos \ - (31UL) /*!< USIC_CH PCR_SSCMode: MCLK (Bit 31) */ -#define USIC_CH_PCR_SSCMode_MCLK_Msk \ - (0x80000000UL) /*!< USIC_CH PCR_SSCMode: MCLK (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PCR_IICMode ---------------------------- */ -#define USIC_CH_PCR_IICMode_SLAD_Pos \ - (0UL) /*!< USIC_CH PCR_IICMode: SLAD (Bit 0) */ -#define USIC_CH_PCR_IICMode_SLAD_Msk \ - (0xffffUL) /*!< USIC_CH PCR_IICMode: SLAD (Bitfield-Mask: 0xffff) */ -#define USIC_CH_PCR_IICMode_ACK00_Pos \ - (16UL) /*!< USIC_CH PCR_IICMode: ACK00 (Bit 16) */ -#define USIC_CH_PCR_IICMode_ACK00_Msk \ - (0x10000UL) /*!< USIC_CH PCR_IICMode: ACK00 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_STIM_Pos \ - (17UL) /*!< USIC_CH PCR_IICMode: STIM (Bit 17) */ -#define USIC_CH_PCR_IICMode_STIM_Msk \ - (0x20000UL) /*!< USIC_CH PCR_IICMode: STIM (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_SCRIEN_Pos \ - (18UL) /*!< USIC_CH PCR_IICMode: SCRIEN (Bit 18) */ -#define USIC_CH_PCR_IICMode_SCRIEN_Msk \ - (0x40000UL) /*!< USIC_CH PCR_IICMode: SCRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_RSCRIEN_Pos \ - (19UL) /*!< USIC_CH PCR_IICMode: RSCRIEN (Bit 19) */ -#define USIC_CH_PCR_IICMode_RSCRIEN_Msk \ - (0x80000UL) /*!< USIC_CH PCR_IICMode: RSCRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_PCRIEN_Pos \ - (20UL) /*!< USIC_CH PCR_IICMode: PCRIEN (Bit 20) */ -#define USIC_CH_PCR_IICMode_PCRIEN_Msk \ - (0x100000UL) /*!< USIC_CH PCR_IICMode: PCRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_NACKIEN_Pos \ - (21UL) /*!< USIC_CH PCR_IICMode: NACKIEN (Bit 21) */ -#define USIC_CH_PCR_IICMode_NACKIEN_Msk \ - (0x200000UL) /*!< USIC_CH PCR_IICMode: NACKIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_ARLIEN_Pos \ - (22UL) /*!< USIC_CH PCR_IICMode: ARLIEN (Bit 22) */ -#define USIC_CH_PCR_IICMode_ARLIEN_Msk \ - (0x400000UL) /*!< USIC_CH PCR_IICMode: ARLIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_SRRIEN_Pos \ - (23UL) /*!< USIC_CH PCR_IICMode: SRRIEN (Bit 23) */ -#define USIC_CH_PCR_IICMode_SRRIEN_Msk \ - (0x800000UL) /*!< USIC_CH PCR_IICMode: SRRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_ERRIEN_Pos \ - (24UL) /*!< USIC_CH PCR_IICMode: ERRIEN (Bit 24) */ -#define USIC_CH_PCR_IICMode_ERRIEN_Msk \ - (0x1000000UL) /*!< USIC_CH PCR_IICMode: ERRIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_SACKDIS_Pos \ - (25UL) /*!< USIC_CH PCR_IICMode: SACKDIS (Bit 25) */ -#define USIC_CH_PCR_IICMode_SACKDIS_Msk \ - (0x2000000UL) /*!< USIC_CH PCR_IICMode: SACKDIS (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_HDEL_Pos \ - (26UL) /*!< USIC_CH PCR_IICMode: HDEL (Bit 26) */ -#define USIC_CH_PCR_IICMode_HDEL_Msk \ - (0x3c000000UL) /*!< USIC_CH PCR_IICMode: HDEL (Bitfield-Mask: 0x0f) */ -#define USIC_CH_PCR_IICMode_ACKIEN_Pos \ - (30UL) /*!< USIC_CH PCR_IICMode: ACKIEN (Bit 30) */ -#define USIC_CH_PCR_IICMode_ACKIEN_Msk \ - (0x40000000UL) /*!< USIC_CH PCR_IICMode: ACKIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IICMode_MCLK_Pos \ - (31UL) /*!< USIC_CH PCR_IICMode: MCLK (Bit 31) */ -#define USIC_CH_PCR_IICMode_MCLK_Msk \ - (0x80000000UL) /*!< USIC_CH PCR_IICMode: MCLK (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PCR_IISMode ---------------------------- */ -#define USIC_CH_PCR_IISMode_WAGEN_Pos \ - (0UL) /*!< USIC_CH PCR_IISMode: WAGEN (Bit 0) */ -#define USIC_CH_PCR_IISMode_WAGEN_Msk \ - (0x1UL) /*!< USIC_CH PCR_IISMode: WAGEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_DTEN_Pos \ - (1UL) /*!< USIC_CH PCR_IISMode: DTEN (Bit 1) */ -#define USIC_CH_PCR_IISMode_DTEN_Msk \ - (0x2UL) /*!< USIC_CH PCR_IISMode: DTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_SELINV_Pos \ - (2UL) /*!< USIC_CH PCR_IISMode: SELINV (Bit 2) */ -#define USIC_CH_PCR_IISMode_SELINV_Msk \ - (0x4UL) /*!< USIC_CH PCR_IISMode: SELINV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_WAFEIEN_Pos \ - (4UL) /*!< USIC_CH PCR_IISMode: WAFEIEN (Bit 4) */ -#define USIC_CH_PCR_IISMode_WAFEIEN_Msk \ - (0x10UL) /*!< USIC_CH PCR_IISMode: WAFEIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_WAREIEN_Pos \ - (5UL) /*!< USIC_CH PCR_IISMode: WAREIEN (Bit 5) */ -#define USIC_CH_PCR_IISMode_WAREIEN_Msk \ - (0x20UL) /*!< USIC_CH PCR_IISMode: WAREIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_ENDIEN_Pos \ - (6UL) /*!< USIC_CH PCR_IISMode: ENDIEN (Bit 6) */ -#define USIC_CH_PCR_IISMode_ENDIEN_Msk \ - (0x40UL) /*!< USIC_CH PCR_IISMode: ENDIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_DX2TIEN_Pos \ - (15UL) /*!< USIC_CH PCR_IISMode: DX2TIEN (Bit 15) */ -#define USIC_CH_PCR_IISMode_DX2TIEN_Msk \ - (0x8000UL) /*!< USIC_CH PCR_IISMode: DX2TIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_PCR_IISMode_TDEL_Pos \ - (16UL) /*!< USIC_CH PCR_IISMode: TDEL (Bit 16) */ -#define USIC_CH_PCR_IISMode_TDEL_Msk \ - (0x3f0000UL) /*!< USIC_CH PCR_IISMode: TDEL (Bitfield-Mask: 0x3f) */ -#define USIC_CH_PCR_IISMode_MCLK_Pos \ - (31UL) /*!< USIC_CH PCR_IISMode: MCLK (Bit 31) */ -#define USIC_CH_PCR_IISMode_MCLK_Msk \ - (0x80000000UL) /*!< USIC_CH PCR_IISMode: MCLK (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USIC_CH_CCR -------------------------------- */ -#define USIC_CH_CCR_MODE_Pos \ - (0UL) /*!< USIC_CH CCR: MODE (Bit 0) */ -#define USIC_CH_CCR_MODE_Msk \ - (0xfUL) /*!< USIC_CH CCR: MODE (Bitfield-Mask: 0x0f) */ -#define USIC_CH_CCR_HPCEN_Pos \ - (6UL) /*!< USIC_CH CCR: HPCEN (Bit 6) */ -#define USIC_CH_CCR_HPCEN_Msk \ - (0xc0UL) /*!< USIC_CH CCR: HPCEN (Bitfield-Mask: 0x03) */ -#define USIC_CH_CCR_PM_Pos (8UL) /*!< USIC_CH CCR: PM (Bit 8) */ -#define USIC_CH_CCR_PM_Msk \ - (0x300UL) /*!< USIC_CH CCR: PM (Bitfield-Mask: 0x03) */ -#define USIC_CH_CCR_RSIEN_Pos \ - (10UL) /*!< USIC_CH CCR: RSIEN (Bit 10) */ -#define USIC_CH_CCR_RSIEN_Msk \ - (0x400UL) /*!< USIC_CH CCR: RSIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_DLIEN_Pos \ - (11UL) /*!< USIC_CH CCR: DLIEN (Bit 11) */ -#define USIC_CH_CCR_DLIEN_Msk \ - (0x800UL) /*!< USIC_CH CCR: DLIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_TSIEN_Pos \ - (12UL) /*!< USIC_CH CCR: TSIEN (Bit 12) */ -#define USIC_CH_CCR_TSIEN_Msk \ - (0x1000UL) /*!< USIC_CH CCR: TSIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_TBIEN_Pos \ - (13UL) /*!< USIC_CH CCR: TBIEN (Bit 13) */ -#define USIC_CH_CCR_TBIEN_Msk \ - (0x2000UL) /*!< USIC_CH CCR: TBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_RIEN_Pos \ - (14UL) /*!< USIC_CH CCR: RIEN (Bit 14) */ -#define USIC_CH_CCR_RIEN_Msk \ - (0x4000UL) /*!< USIC_CH CCR: RIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_AIEN_Pos \ - (15UL) /*!< USIC_CH CCR: AIEN (Bit 15) */ -#define USIC_CH_CCR_AIEN_Msk \ - (0x8000UL) /*!< USIC_CH CCR: AIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_CCR_BRGIEN_Pos \ - (16UL) /*!< USIC_CH CCR: BRGIEN (Bit 16) */ -#define USIC_CH_CCR_BRGIEN_Msk \ - (0x10000UL) /*!< USIC_CH CCR: BRGIEN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_CMTR -------------------------------- */ -#define USIC_CH_CMTR_CTV_Pos \ - (0UL) /*!< USIC_CH CMTR: CTV (Bit 0) */ -#define USIC_CH_CMTR_CTV_Msk \ - (0x3ffUL) /*!< USIC_CH CMTR: CTV (Bitfield-Mask: 0x3ff) */ - -/* --------------------------------- USIC_CH_PSR -------------------------------- */ -#define USIC_CH_PSR_ST0_Pos \ - (0UL) /*!< USIC_CH PSR: ST0 (Bit 0) */ -#define USIC_CH_PSR_ST0_Msk \ - (0x1UL) /*!< USIC_CH PSR: ST0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST1_Pos \ - (1UL) /*!< USIC_CH PSR: ST1 (Bit 1) */ -#define USIC_CH_PSR_ST1_Msk \ - (0x2UL) /*!< USIC_CH PSR: ST1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST2_Pos \ - (2UL) /*!< USIC_CH PSR: ST2 (Bit 2) */ -#define USIC_CH_PSR_ST2_Msk \ - (0x4UL) /*!< USIC_CH PSR: ST2 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST3_Pos \ - (3UL) /*!< USIC_CH PSR: ST3 (Bit 3) */ -#define USIC_CH_PSR_ST3_Msk \ - (0x8UL) /*!< USIC_CH PSR: ST3 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST4_Pos \ - (4UL) /*!< USIC_CH PSR: ST4 (Bit 4) */ -#define USIC_CH_PSR_ST4_Msk \ - (0x10UL) /*!< USIC_CH PSR: ST4 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST5_Pos \ - (5UL) /*!< USIC_CH PSR: ST5 (Bit 5) */ -#define USIC_CH_PSR_ST5_Msk \ - (0x20UL) /*!< USIC_CH PSR: ST5 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST6_Pos \ - (6UL) /*!< USIC_CH PSR: ST6 (Bit 6) */ -#define USIC_CH_PSR_ST6_Msk \ - (0x40UL) /*!< USIC_CH PSR: ST6 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST7_Pos \ - (7UL) /*!< USIC_CH PSR: ST7 (Bit 7) */ -#define USIC_CH_PSR_ST7_Msk \ - (0x80UL) /*!< USIC_CH PSR: ST7 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST8_Pos \ - (8UL) /*!< USIC_CH PSR: ST8 (Bit 8) */ -#define USIC_CH_PSR_ST8_Msk \ - (0x100UL) /*!< USIC_CH PSR: ST8 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ST9_Pos \ - (9UL) /*!< USIC_CH PSR: ST9 (Bit 9) */ -#define USIC_CH_PSR_ST9_Msk \ - (0x200UL) /*!< USIC_CH PSR: ST9 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR: RSIF (Bit 10) */ -#define USIC_CH_PSR_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR: DLIF (Bit 11) */ -#define USIC_CH_PSR_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR: TSIF (Bit 12) */ -#define USIC_CH_PSR_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR: TBIF (Bit 13) */ -#define USIC_CH_PSR_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_RIF_Pos \ - (14UL) /*!< USIC_CH PSR: RIF (Bit 14) */ -#define USIC_CH_PSR_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_AIF_Pos \ - (15UL) /*!< USIC_CH PSR: AIF (Bit 15) */ -#define USIC_CH_PSR_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR: BRGIF (Bit 16) */ -#define USIC_CH_PSR_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR: BRGIF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PSR_ASCMode ---------------------------- */ -#define USIC_CH_PSR_ASCMode_TXIDLE_Pos \ - (0UL) /*!< USIC_CH PSR_ASCMode: TXIDLE (Bit 0) */ -#define USIC_CH_PSR_ASCMode_TXIDLE_Msk \ - (0x1UL) /*!< USIC_CH PSR_ASCMode: TXIDLE (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RXIDLE_Pos \ - (1UL) /*!< USIC_CH PSR_ASCMode: RXIDLE (Bit 1) */ -#define USIC_CH_PSR_ASCMode_RXIDLE_Msk \ - (0x2UL) /*!< USIC_CH PSR_ASCMode: RXIDLE (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_SBD_Pos \ - (2UL) /*!< USIC_CH PSR_ASCMode: SBD (Bit 2) */ -#define USIC_CH_PSR_ASCMode_SBD_Msk \ - (0x4UL) /*!< USIC_CH PSR_ASCMode: SBD (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_COL_Pos \ - (3UL) /*!< USIC_CH PSR_ASCMode: COL (Bit 3) */ -#define USIC_CH_PSR_ASCMode_COL_Msk \ - (0x8UL) /*!< USIC_CH PSR_ASCMode: COL (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RNS_Pos \ - (4UL) /*!< USIC_CH PSR_ASCMode: RNS (Bit 4) */ -#define USIC_CH_PSR_ASCMode_RNS_Msk \ - (0x10UL) /*!< USIC_CH PSR_ASCMode: RNS (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_FER0_Pos \ - (5UL) /*!< USIC_CH PSR_ASCMode: FER0 (Bit 5) */ -#define USIC_CH_PSR_ASCMode_FER0_Msk \ - (0x20UL) /*!< USIC_CH PSR_ASCMode: FER0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_FER1_Pos \ - (6UL) /*!< USIC_CH PSR_ASCMode: FER1 (Bit 6) */ -#define USIC_CH_PSR_ASCMode_FER1_Msk \ - (0x40UL) /*!< USIC_CH PSR_ASCMode: FER1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RFF_Pos \ - (7UL) /*!< USIC_CH PSR_ASCMode: RFF (Bit 7) */ -#define USIC_CH_PSR_ASCMode_RFF_Msk \ - (0x80UL) /*!< USIC_CH PSR_ASCMode: RFF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_TFF_Pos \ - (8UL) /*!< USIC_CH PSR_ASCMode: TFF (Bit 8) */ -#define USIC_CH_PSR_ASCMode_TFF_Msk \ - (0x100UL) /*!< USIC_CH PSR_ASCMode: TFF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_BUSY_Pos \ - (9UL) /*!< USIC_CH PSR_ASCMode: BUSY (Bit 9) */ -#define USIC_CH_PSR_ASCMode_BUSY_Msk \ - (0x200UL) /*!< USIC_CH PSR_ASCMode: BUSY (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR_ASCMode: RSIF (Bit 10) */ -#define USIC_CH_PSR_ASCMode_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR_ASCMode: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR_ASCMode: DLIF (Bit 11) */ -#define USIC_CH_PSR_ASCMode_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR_ASCMode: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR_ASCMode: TSIF (Bit 12) */ -#define USIC_CH_PSR_ASCMode_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR_ASCMode: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR_ASCMode: TBIF (Bit 13) */ -#define USIC_CH_PSR_ASCMode_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR_ASCMode: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_RIF_Pos \ - (14UL) /*!< USIC_CH PSR_ASCMode: RIF (Bit 14) */ -#define USIC_CH_PSR_ASCMode_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR_ASCMode: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_AIF_Pos \ - (15UL) /*!< USIC_CH PSR_ASCMode: AIF (Bit 15) */ -#define USIC_CH_PSR_ASCMode_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR_ASCMode: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_ASCMode_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR_ASCMode: BRGIF (Bit 16) */ -#define USIC_CH_PSR_ASCMode_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR_ASCMode: BRGIF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PSR_SSCMode ---------------------------- */ -#define USIC_CH_PSR_SSCMode_MSLS_Pos \ - (0UL) /*!< USIC_CH PSR_SSCMode: MSLS (Bit 0) */ -#define USIC_CH_PSR_SSCMode_MSLS_Msk \ - (0x1UL) /*!< USIC_CH PSR_SSCMode: MSLS (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_DX2S_Pos \ - (1UL) /*!< USIC_CH PSR_SSCMode: DX2S (Bit 1) */ -#define USIC_CH_PSR_SSCMode_DX2S_Msk \ - (0x2UL) /*!< USIC_CH PSR_SSCMode: DX2S (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_MSLSEV_Pos \ - (2UL) /*!< USIC_CH PSR_SSCMode: MSLSEV (Bit 2) */ -#define USIC_CH_PSR_SSCMode_MSLSEV_Msk \ - (0x4UL) /*!< USIC_CH PSR_SSCMode: MSLSEV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_DX2TEV_Pos \ - (3UL) /*!< USIC_CH PSR_SSCMode: DX2TEV (Bit 3) */ -#define USIC_CH_PSR_SSCMode_DX2TEV_Msk \ - (0x8UL) /*!< USIC_CH PSR_SSCMode: DX2TEV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_PARERR_Pos \ - (4UL) /*!< USIC_CH PSR_SSCMode: PARERR (Bit 4) */ -#define USIC_CH_PSR_SSCMode_PARERR_Msk \ - (0x10UL) /*!< USIC_CH PSR_SSCMode: PARERR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR_SSCMode: RSIF (Bit 10) */ -#define USIC_CH_PSR_SSCMode_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR_SSCMode: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR_SSCMode: DLIF (Bit 11) */ -#define USIC_CH_PSR_SSCMode_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR_SSCMode: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR_SSCMode: TSIF (Bit 12) */ -#define USIC_CH_PSR_SSCMode_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR_SSCMode: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR_SSCMode: TBIF (Bit 13) */ -#define USIC_CH_PSR_SSCMode_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR_SSCMode: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_RIF_Pos \ - (14UL) /*!< USIC_CH PSR_SSCMode: RIF (Bit 14) */ -#define USIC_CH_PSR_SSCMode_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR_SSCMode: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_AIF_Pos \ - (15UL) /*!< USIC_CH PSR_SSCMode: AIF (Bit 15) */ -#define USIC_CH_PSR_SSCMode_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR_SSCMode: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_SSCMode_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR_SSCMode: BRGIF (Bit 16) */ -#define USIC_CH_PSR_SSCMode_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR_SSCMode: BRGIF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PSR_IICMode ---------------------------- */ -#define USIC_CH_PSR_IICMode_SLSEL_Pos \ - (0UL) /*!< USIC_CH PSR_IICMode: SLSEL (Bit 0) */ -#define USIC_CH_PSR_IICMode_SLSEL_Msk \ - (0x1UL) /*!< USIC_CH PSR_IICMode: SLSEL (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_WTDF_Pos \ - (1UL) /*!< USIC_CH PSR_IICMode: WTDF (Bit 1) */ -#define USIC_CH_PSR_IICMode_WTDF_Msk \ - (0x2UL) /*!< USIC_CH PSR_IICMode: WTDF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_SCR_Pos \ - (2UL) /*!< USIC_CH PSR_IICMode: SCR (Bit 2) */ -#define USIC_CH_PSR_IICMode_SCR_Msk \ - (0x4UL) /*!< USIC_CH PSR_IICMode: SCR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_RSCR_Pos \ - (3UL) /*!< USIC_CH PSR_IICMode: RSCR (Bit 3) */ -#define USIC_CH_PSR_IICMode_RSCR_Msk \ - (0x8UL) /*!< USIC_CH PSR_IICMode: RSCR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_PCR_Pos \ - (4UL) /*!< USIC_CH PSR_IICMode: PCR (Bit 4) */ -#define USIC_CH_PSR_IICMode_PCR_Msk \ - (0x10UL) /*!< USIC_CH PSR_IICMode: PCR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_NACK_Pos \ - (5UL) /*!< USIC_CH PSR_IICMode: NACK (Bit 5) */ -#define USIC_CH_PSR_IICMode_NACK_Msk \ - (0x20UL) /*!< USIC_CH PSR_IICMode: NACK (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_ARL_Pos \ - (6UL) /*!< USIC_CH PSR_IICMode: ARL (Bit 6) */ -#define USIC_CH_PSR_IICMode_ARL_Msk \ - (0x40UL) /*!< USIC_CH PSR_IICMode: ARL (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_SRR_Pos \ - (7UL) /*!< USIC_CH PSR_IICMode: SRR (Bit 7) */ -#define USIC_CH_PSR_IICMode_SRR_Msk \ - (0x80UL) /*!< USIC_CH PSR_IICMode: SRR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_ERR_Pos \ - (8UL) /*!< USIC_CH PSR_IICMode: ERR (Bit 8) */ -#define USIC_CH_PSR_IICMode_ERR_Msk \ - (0x100UL) /*!< USIC_CH PSR_IICMode: ERR (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_ACK_Pos \ - (9UL) /*!< USIC_CH PSR_IICMode: ACK (Bit 9) */ -#define USIC_CH_PSR_IICMode_ACK_Msk \ - (0x200UL) /*!< USIC_CH PSR_IICMode: ACK (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR_IICMode: RSIF (Bit 10) */ -#define USIC_CH_PSR_IICMode_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR_IICMode: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR_IICMode: DLIF (Bit 11) */ -#define USIC_CH_PSR_IICMode_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR_IICMode: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR_IICMode: TSIF (Bit 12) */ -#define USIC_CH_PSR_IICMode_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR_IICMode: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR_IICMode: TBIF (Bit 13) */ -#define USIC_CH_PSR_IICMode_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR_IICMode: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_RIF_Pos \ - (14UL) /*!< USIC_CH PSR_IICMode: RIF (Bit 14) */ -#define USIC_CH_PSR_IICMode_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR_IICMode: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_AIF_Pos \ - (15UL) /*!< USIC_CH PSR_IICMode: AIF (Bit 15) */ -#define USIC_CH_PSR_IICMode_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR_IICMode: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IICMode_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR_IICMode: BRGIF (Bit 16) */ -#define USIC_CH_PSR_IICMode_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR_IICMode: BRGIF (Bitfield-Mask: 0x01) */ - -/* ----------------------------- USIC_CH_PSR_IISMode ---------------------------- */ -#define USIC_CH_PSR_IISMode_WA_Pos \ - (0UL) /*!< USIC_CH PSR_IISMode: WA (Bit 0) */ -#define USIC_CH_PSR_IISMode_WA_Msk \ - (0x1UL) /*!< USIC_CH PSR_IISMode: WA (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_DX2S_Pos \ - (1UL) /*!< USIC_CH PSR_IISMode: DX2S (Bit 1) */ -#define USIC_CH_PSR_IISMode_DX2S_Msk \ - (0x2UL) /*!< USIC_CH PSR_IISMode: DX2S (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_DX2TEV_Pos \ - (3UL) /*!< USIC_CH PSR_IISMode: DX2TEV (Bit 3) */ -#define USIC_CH_PSR_IISMode_DX2TEV_Msk \ - (0x8UL) /*!< USIC_CH PSR_IISMode: DX2TEV (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_WAFE_Pos \ - (4UL) /*!< USIC_CH PSR_IISMode: WAFE (Bit 4) */ -#define USIC_CH_PSR_IISMode_WAFE_Msk \ - (0x10UL) /*!< USIC_CH PSR_IISMode: WAFE (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_WARE_Pos \ - (5UL) /*!< USIC_CH PSR_IISMode: WARE (Bit 5) */ -#define USIC_CH_PSR_IISMode_WARE_Msk \ - (0x20UL) /*!< USIC_CH PSR_IISMode: WARE (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_END_Pos \ - (6UL) /*!< USIC_CH PSR_IISMode: END (Bit 6) */ -#define USIC_CH_PSR_IISMode_END_Msk \ - (0x40UL) /*!< USIC_CH PSR_IISMode: END (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_RSIF_Pos \ - (10UL) /*!< USIC_CH PSR_IISMode: RSIF (Bit 10) */ -#define USIC_CH_PSR_IISMode_RSIF_Msk \ - (0x400UL) /*!< USIC_CH PSR_IISMode: RSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_DLIF_Pos \ - (11UL) /*!< USIC_CH PSR_IISMode: DLIF (Bit 11) */ -#define USIC_CH_PSR_IISMode_DLIF_Msk \ - (0x800UL) /*!< USIC_CH PSR_IISMode: DLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_TSIF_Pos \ - (12UL) /*!< USIC_CH PSR_IISMode: TSIF (Bit 12) */ -#define USIC_CH_PSR_IISMode_TSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSR_IISMode: TSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_TBIF_Pos \ - (13UL) /*!< USIC_CH PSR_IISMode: TBIF (Bit 13) */ -#define USIC_CH_PSR_IISMode_TBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSR_IISMode: TBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_RIF_Pos \ - (14UL) /*!< USIC_CH PSR_IISMode: RIF (Bit 14) */ -#define USIC_CH_PSR_IISMode_RIF_Msk \ - (0x4000UL) /*!< USIC_CH PSR_IISMode: RIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_AIF_Pos \ - (15UL) /*!< USIC_CH PSR_IISMode: AIF (Bit 15) */ -#define USIC_CH_PSR_IISMode_AIF_Msk \ - (0x8000UL) /*!< USIC_CH PSR_IISMode: AIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSR_IISMode_BRGIF_Pos \ - (16UL) /*!< USIC_CH PSR_IISMode: BRGIF (Bit 16) */ -#define USIC_CH_PSR_IISMode_BRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSR_IISMode: BRGIF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_PSCR -------------------------------- */ -#define USIC_CH_PSCR_CST0_Pos \ - (0UL) /*!< USIC_CH PSCR: CST0 (Bit 0) */ -#define USIC_CH_PSCR_CST0_Msk \ - (0x1UL) /*!< USIC_CH PSCR: CST0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST1_Pos \ - (1UL) /*!< USIC_CH PSCR: CST1 (Bit 1) */ -#define USIC_CH_PSCR_CST1_Msk \ - (0x2UL) /*!< USIC_CH PSCR: CST1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST2_Pos \ - (2UL) /*!< USIC_CH PSCR: CST2 (Bit 2) */ -#define USIC_CH_PSCR_CST2_Msk \ - (0x4UL) /*!< USIC_CH PSCR: CST2 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST3_Pos \ - (3UL) /*!< USIC_CH PSCR: CST3 (Bit 3) */ -#define USIC_CH_PSCR_CST3_Msk \ - (0x8UL) /*!< USIC_CH PSCR: CST3 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST4_Pos \ - (4UL) /*!< USIC_CH PSCR: CST4 (Bit 4) */ -#define USIC_CH_PSCR_CST4_Msk \ - (0x10UL) /*!< USIC_CH PSCR: CST4 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST5_Pos \ - (5UL) /*!< USIC_CH PSCR: CST5 (Bit 5) */ -#define USIC_CH_PSCR_CST5_Msk \ - (0x20UL) /*!< USIC_CH PSCR: CST5 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST6_Pos \ - (6UL) /*!< USIC_CH PSCR: CST6 (Bit 6) */ -#define USIC_CH_PSCR_CST6_Msk \ - (0x40UL) /*!< USIC_CH PSCR: CST6 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST7_Pos \ - (7UL) /*!< USIC_CH PSCR: CST7 (Bit 7) */ -#define USIC_CH_PSCR_CST7_Msk \ - (0x80UL) /*!< USIC_CH PSCR: CST7 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST8_Pos \ - (8UL) /*!< USIC_CH PSCR: CST8 (Bit 8) */ -#define USIC_CH_PSCR_CST8_Msk \ - (0x100UL) /*!< USIC_CH PSCR: CST8 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CST9_Pos \ - (9UL) /*!< USIC_CH PSCR: CST9 (Bit 9) */ -#define USIC_CH_PSCR_CST9_Msk \ - (0x200UL) /*!< USIC_CH PSCR: CST9 (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CRSIF_Pos \ - (10UL) /*!< USIC_CH PSCR: CRSIF (Bit 10) */ -#define USIC_CH_PSCR_CRSIF_Msk \ - (0x400UL) /*!< USIC_CH PSCR: CRSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CDLIF_Pos \ - (11UL) /*!< USIC_CH PSCR: CDLIF (Bit 11) */ -#define USIC_CH_PSCR_CDLIF_Msk \ - (0x800UL) /*!< USIC_CH PSCR: CDLIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CTSIF_Pos \ - (12UL) /*!< USIC_CH PSCR: CTSIF (Bit 12) */ -#define USIC_CH_PSCR_CTSIF_Msk \ - (0x1000UL) /*!< USIC_CH PSCR: CTSIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CTBIF_Pos \ - (13UL) /*!< USIC_CH PSCR: CTBIF (Bit 13) */ -#define USIC_CH_PSCR_CTBIF_Msk \ - (0x2000UL) /*!< USIC_CH PSCR: CTBIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CRIF_Pos \ - (14UL) /*!< USIC_CH PSCR: CRIF (Bit 14) */ -#define USIC_CH_PSCR_CRIF_Msk \ - (0x4000UL) /*!< USIC_CH PSCR: CRIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CAIF_Pos \ - (15UL) /*!< USIC_CH PSCR: CAIF (Bit 15) */ -#define USIC_CH_PSCR_CAIF_Msk \ - (0x8000UL) /*!< USIC_CH PSCR: CAIF (Bitfield-Mask: 0x01) */ -#define USIC_CH_PSCR_CBRGIF_Pos \ - (16UL) /*!< USIC_CH PSCR: CBRGIF (Bit 16) */ -#define USIC_CH_PSCR_CBRGIF_Msk \ - (0x10000UL) /*!< USIC_CH PSCR: CBRGIF (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USIC_CH_RBUFSR ------------------------------- */ -#define USIC_CH_RBUFSR_WLEN_Pos \ - (0UL) /*!< USIC_CH RBUFSR: WLEN (Bit 0) */ -#define USIC_CH_RBUFSR_WLEN_Msk \ - (0xfUL) /*!< USIC_CH RBUFSR: WLEN (Bitfield-Mask: 0x0f) */ -#define USIC_CH_RBUFSR_SOF_Pos \ - (6UL) /*!< USIC_CH RBUFSR: SOF (Bit 6) */ -#define USIC_CH_RBUFSR_SOF_Msk \ - (0x40UL) /*!< USIC_CH RBUFSR: SOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_PAR_Pos \ - (8UL) /*!< USIC_CH RBUFSR: PAR (Bit 8) */ -#define USIC_CH_RBUFSR_PAR_Msk \ - (0x100UL) /*!< USIC_CH RBUFSR: PAR (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_PERR_Pos \ - (9UL) /*!< USIC_CH RBUFSR: PERR (Bit 9) */ -#define USIC_CH_RBUFSR_PERR_Msk \ - (0x200UL) /*!< USIC_CH RBUFSR: PERR (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_RDV0_Pos \ - (13UL) /*!< USIC_CH RBUFSR: RDV0 (Bit 13) */ -#define USIC_CH_RBUFSR_RDV0_Msk \ - (0x2000UL) /*!< USIC_CH RBUFSR: RDV0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_RDV1_Pos \ - (14UL) /*!< USIC_CH RBUFSR: RDV1 (Bit 14) */ -#define USIC_CH_RBUFSR_RDV1_Msk \ - (0x4000UL) /*!< USIC_CH RBUFSR: RDV1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUFSR_DS_Pos \ - (15UL) /*!< USIC_CH RBUFSR: DS (Bit 15) */ -#define USIC_CH_RBUFSR_DS_Msk \ - (0x8000UL) /*!< USIC_CH RBUFSR: DS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_RBUF -------------------------------- */ -#define USIC_CH_RBUF_DSR_Pos \ - (0UL) /*!< USIC_CH RBUF: DSR (Bit 0) */ -#define USIC_CH_RBUF_DSR_Msk \ - (0xffffUL) /*!< USIC_CH RBUF: DSR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USIC_CH_RBUFD ------------------------------- */ -#define USIC_CH_RBUFD_DSR_Pos \ - (0UL) /*!< USIC_CH RBUFD: DSR (Bit 0) */ -#define USIC_CH_RBUFD_DSR_Msk \ - (0xffffUL) /*!< USIC_CH RBUFD: DSR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USIC_CH_RBUF0 ------------------------------- */ -#define USIC_CH_RBUF0_DSR0_Pos \ - (0UL) /*!< USIC_CH RBUF0: DSR0 (Bit 0) */ -#define USIC_CH_RBUF0_DSR0_Msk \ - (0xffffUL) /*!< USIC_CH RBUF0: DSR0 (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USIC_CH_RBUF1 ------------------------------- */ -#define USIC_CH_RBUF1_DSR1_Pos \ - (0UL) /*!< USIC_CH RBUF1: DSR1 (Bit 0) */ -#define USIC_CH_RBUF1_DSR1_Msk \ - (0xffffUL) /*!< USIC_CH RBUF1: DSR1 (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ USIC_CH_RBUF01SR ------------------------------ */ -#define USIC_CH_RBUF01SR_WLEN0_Pos \ - (0UL) /*!< USIC_CH RBUF01SR: WLEN0 (Bit 0) */ -#define USIC_CH_RBUF01SR_WLEN0_Msk \ - (0xfUL) /*!< USIC_CH RBUF01SR: WLEN0 (Bitfield-Mask: 0x0f) */ -#define USIC_CH_RBUF01SR_SOF0_Pos \ - (6UL) /*!< USIC_CH RBUF01SR: SOF0 (Bit 6) */ -#define USIC_CH_RBUF01SR_SOF0_Msk \ - (0x40UL) /*!< USIC_CH RBUF01SR: SOF0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_PAR0_Pos \ - (8UL) /*!< USIC_CH RBUF01SR: PAR0 (Bit 8) */ -#define USIC_CH_RBUF01SR_PAR0_Msk \ - (0x100UL) /*!< USIC_CH RBUF01SR: PAR0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_PERR0_Pos \ - (9UL) /*!< USIC_CH RBUF01SR: PERR0 (Bit 9) */ -#define USIC_CH_RBUF01SR_PERR0_Msk \ - (0x200UL) /*!< USIC_CH RBUF01SR: PERR0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_RDV00_Pos \ - (13UL) /*!< USIC_CH RBUF01SR: RDV00 (Bit 13) */ -#define USIC_CH_RBUF01SR_RDV00_Msk \ - (0x2000UL) /*!< USIC_CH RBUF01SR: RDV00 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_RDV01_Pos \ - (14UL) /*!< USIC_CH RBUF01SR: RDV01 (Bit 14) */ -#define USIC_CH_RBUF01SR_RDV01_Msk \ - (0x4000UL) /*!< USIC_CH RBUF01SR: RDV01 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_DS0_Pos \ - (15UL) /*!< USIC_CH RBUF01SR: DS0 (Bit 15) */ -#define USIC_CH_RBUF01SR_DS0_Msk \ - (0x8000UL) /*!< USIC_CH RBUF01SR: DS0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_WLEN1_Pos \ - (16UL) /*!< USIC_CH RBUF01SR: WLEN1 (Bit 16) */ -#define USIC_CH_RBUF01SR_WLEN1_Msk \ - (0xf0000UL) /*!< USIC_CH RBUF01SR: WLEN1 (Bitfield-Mask: 0x0f) */ -#define USIC_CH_RBUF01SR_SOF1_Pos \ - (22UL) /*!< USIC_CH RBUF01SR: SOF1 (Bit 22) */ -#define USIC_CH_RBUF01SR_SOF1_Msk \ - (0x400000UL) /*!< USIC_CH RBUF01SR: SOF1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_PAR1_Pos \ - (24UL) /*!< USIC_CH RBUF01SR: PAR1 (Bit 24) */ -#define USIC_CH_RBUF01SR_PAR1_Msk \ - (0x1000000UL) /*!< USIC_CH RBUF01SR: PAR1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_PERR1_Pos \ - (25UL) /*!< USIC_CH RBUF01SR: PERR1 (Bit 25) */ -#define USIC_CH_RBUF01SR_PERR1_Msk \ - (0x2000000UL) /*!< USIC_CH RBUF01SR: PERR1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_RDV10_Pos \ - (29UL) /*!< USIC_CH RBUF01SR: RDV10 (Bit 29) */ -#define USIC_CH_RBUF01SR_RDV10_Msk \ - (0x20000000UL) /*!< USIC_CH RBUF01SR: RDV10 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_RDV11_Pos \ - (30UL) /*!< USIC_CH RBUF01SR: RDV11 (Bit 30) */ -#define USIC_CH_RBUF01SR_RDV11_Msk \ - (0x40000000UL) /*!< USIC_CH RBUF01SR: RDV11 (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBUF01SR_DS1_Pos \ - (31UL) /*!< USIC_CH RBUF01SR: DS1 (Bit 31) */ -#define USIC_CH_RBUF01SR_DS1_Msk \ - (0x80000000UL) /*!< USIC_CH RBUF01SR: DS1 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- USIC_CH_FMR -------------------------------- */ -#define USIC_CH_FMR_MTDV_Pos \ - (0UL) /*!< USIC_CH FMR: MTDV (Bit 0) */ -#define USIC_CH_FMR_MTDV_Msk \ - (0x3UL) /*!< USIC_CH FMR: MTDV (Bitfield-Mask: 0x03) */ -#define USIC_CH_FMR_ATVC_Pos \ - (4UL) /*!< USIC_CH FMR: ATVC (Bit 4) */ -#define USIC_CH_FMR_ATVC_Msk \ - (0x10UL) /*!< USIC_CH FMR: ATVC (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_CRDV0_Pos \ - (14UL) /*!< USIC_CH FMR: CRDV0 (Bit 14) */ -#define USIC_CH_FMR_CRDV0_Msk \ - (0x4000UL) /*!< USIC_CH FMR: CRDV0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_CRDV1_Pos \ - (15UL) /*!< USIC_CH FMR: CRDV1 (Bit 15) */ -#define USIC_CH_FMR_CRDV1_Msk \ - (0x8000UL) /*!< USIC_CH FMR: CRDV1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO0_Pos \ - (16UL) /*!< USIC_CH FMR: SIO0 (Bit 16) */ -#define USIC_CH_FMR_SIO0_Msk \ - (0x10000UL) /*!< USIC_CH FMR: SIO0 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO1_Pos \ - (17UL) /*!< USIC_CH FMR: SIO1 (Bit 17) */ -#define USIC_CH_FMR_SIO1_Msk \ - (0x20000UL) /*!< USIC_CH FMR: SIO1 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO2_Pos \ - (18UL) /*!< USIC_CH FMR: SIO2 (Bit 18) */ -#define USIC_CH_FMR_SIO2_Msk \ - (0x40000UL) /*!< USIC_CH FMR: SIO2 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO3_Pos \ - (19UL) /*!< USIC_CH FMR: SIO3 (Bit 19) */ -#define USIC_CH_FMR_SIO3_Msk \ - (0x80000UL) /*!< USIC_CH FMR: SIO3 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO4_Pos \ - (20UL) /*!< USIC_CH FMR: SIO4 (Bit 20) */ -#define USIC_CH_FMR_SIO4_Msk \ - (0x100000UL) /*!< USIC_CH FMR: SIO4 (Bitfield-Mask: 0x01) */ -#define USIC_CH_FMR_SIO5_Pos \ - (21UL) /*!< USIC_CH FMR: SIO5 (Bit 21) */ -#define USIC_CH_FMR_SIO5_Msk \ - (0x200000UL) /*!< USIC_CH FMR: SIO5 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_TBUF -------------------------------- */ -#define USIC_CH_TBUF_TDATA_Pos \ - (0UL) /*!< USIC_CH TBUF: TDATA (Bit 0) */ -#define USIC_CH_TBUF_TDATA_Msk \ - (0xffffUL) /*!< USIC_CH TBUF: TDATA (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- USIC_CH_BYP -------------------------------- */ -#define USIC_CH_BYP_BDATA_Pos \ - (0UL) /*!< USIC_CH BYP: BDATA (Bit 0) */ -#define USIC_CH_BYP_BDATA_Msk \ - (0xffffUL) /*!< USIC_CH BYP: BDATA (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- USIC_CH_BYPCR ------------------------------- */ -#define USIC_CH_BYPCR_BWLE_Pos \ - (0UL) /*!< USIC_CH BYPCR: BWLE (Bit 0) */ -#define USIC_CH_BYPCR_BWLE_Msk \ - (0xfUL) /*!< USIC_CH BYPCR: BWLE (Bitfield-Mask: 0x0f) */ -#define USIC_CH_BYPCR_BDSSM_Pos \ - (8UL) /*!< USIC_CH BYPCR: BDSSM (Bit 8) */ -#define USIC_CH_BYPCR_BDSSM_Msk \ - (0x100UL) /*!< USIC_CH BYPCR: BDSSM (Bitfield-Mask: 0x01) */ -#define USIC_CH_BYPCR_BDEN_Pos \ - (10UL) /*!< USIC_CH BYPCR: BDEN (Bit 10) */ -#define USIC_CH_BYPCR_BDEN_Msk \ - (0xc00UL) /*!< USIC_CH BYPCR: BDEN (Bitfield-Mask: 0x03) */ -#define USIC_CH_BYPCR_BDVTR_Pos \ - (12UL) /*!< USIC_CH BYPCR: BDVTR (Bit 12) */ -#define USIC_CH_BYPCR_BDVTR_Msk \ - (0x1000UL) /*!< USIC_CH BYPCR: BDVTR (Bitfield-Mask: 0x01) */ -#define USIC_CH_BYPCR_BPRIO_Pos \ - (13UL) /*!< USIC_CH BYPCR: BPRIO (Bit 13) */ -#define USIC_CH_BYPCR_BPRIO_Msk \ - (0x2000UL) /*!< USIC_CH BYPCR: BPRIO (Bitfield-Mask: 0x01) */ -#define USIC_CH_BYPCR_BDV_Pos \ - (15UL) /*!< USIC_CH BYPCR: BDV (Bit 15) */ -#define USIC_CH_BYPCR_BDV_Msk \ - (0x8000UL) /*!< USIC_CH BYPCR: BDV (Bitfield-Mask: 0x01) */ -#define USIC_CH_BYPCR_BSELO_Pos \ - (16UL) /*!< USIC_CH BYPCR: BSELO (Bit 16) */ -#define USIC_CH_BYPCR_BSELO_Msk \ - (0x1f0000UL) /*!< USIC_CH BYPCR: BSELO (Bitfield-Mask: 0x1f) */ -#define USIC_CH_BYPCR_BHPC_Pos \ - (21UL) /*!< USIC_CH BYPCR: BHPC (Bit 21) */ -#define USIC_CH_BYPCR_BHPC_Msk \ - (0xe00000UL) /*!< USIC_CH BYPCR: BHPC (Bitfield-Mask: 0x07) */ - -/* -------------------------------- USIC_CH_TBCTR ------------------------------- */ -#define USIC_CH_TBCTR_DPTR_Pos \ - (0UL) /*!< USIC_CH TBCTR: DPTR (Bit 0) */ -#define USIC_CH_TBCTR_DPTR_Msk \ - (0x3fUL) /*!< USIC_CH TBCTR: DPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TBCTR_LIMIT_Pos \ - (8UL) /*!< USIC_CH TBCTR: LIMIT (Bit 8) */ -#define USIC_CH_TBCTR_LIMIT_Msk \ - (0x3f00UL) /*!< USIC_CH TBCTR: LIMIT (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TBCTR_STBTM_Pos \ - (14UL) /*!< USIC_CH TBCTR: STBTM (Bit 14) */ -#define USIC_CH_TBCTR_STBTM_Msk \ - (0x4000UL) /*!< USIC_CH TBCTR: STBTM (Bitfield-Mask: 0x01) */ -#define USIC_CH_TBCTR_STBTEN_Pos \ - (15UL) /*!< USIC_CH TBCTR: STBTEN (Bit 15) */ -#define USIC_CH_TBCTR_STBTEN_Msk \ - (0x8000UL) /*!< USIC_CH TBCTR: STBTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_TBCTR_STBINP_Pos \ - (16UL) /*!< USIC_CH TBCTR: STBINP (Bit 16) */ -#define USIC_CH_TBCTR_STBINP_Msk \ - (0x70000UL) /*!< USIC_CH TBCTR: STBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_TBCTR_ATBINP_Pos \ - (19UL) /*!< USIC_CH TBCTR: ATBINP (Bit 19) */ -#define USIC_CH_TBCTR_ATBINP_Msk \ - (0x380000UL) /*!< USIC_CH TBCTR: ATBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_TBCTR_SIZE_Pos \ - (24UL) /*!< USIC_CH TBCTR: SIZE (Bit 24) */ -#define USIC_CH_TBCTR_SIZE_Msk \ - (0x7000000UL) /*!< USIC_CH TBCTR: SIZE (Bitfield-Mask: 0x07) */ -#define USIC_CH_TBCTR_LOF_Pos \ - (28UL) /*!< USIC_CH TBCTR: LOF (Bit 28) */ -#define USIC_CH_TBCTR_LOF_Msk \ - (0x10000000UL) /*!< USIC_CH TBCTR: LOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_TBCTR_STBIEN_Pos \ - (30UL) /*!< USIC_CH TBCTR: STBIEN (Bit 30) */ -#define USIC_CH_TBCTR_STBIEN_Msk \ - (0x40000000UL) /*!< USIC_CH TBCTR: STBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_TBCTR_TBERIEN_Pos \ - (31UL) /*!< USIC_CH TBCTR: TBERIEN (Bit 31) */ -#define USIC_CH_TBCTR_TBERIEN_Msk \ - (0x80000000UL) /*!< USIC_CH TBCTR: TBERIEN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_RBCTR ------------------------------- */ -#define USIC_CH_RBCTR_DPTR_Pos \ - (0UL) /*!< USIC_CH RBCTR: DPTR (Bit 0) */ -#define USIC_CH_RBCTR_DPTR_Msk \ - (0x3fUL) /*!< USIC_CH RBCTR: DPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_RBCTR_LIMIT_Pos \ - (8UL) /*!< USIC_CH RBCTR: LIMIT (Bit 8) */ -#define USIC_CH_RBCTR_LIMIT_Msk \ - (0x3f00UL) /*!< USIC_CH RBCTR: LIMIT (Bitfield-Mask: 0x3f) */ -#define USIC_CH_RBCTR_SRBTM_Pos \ - (14UL) /*!< USIC_CH RBCTR: SRBTM (Bit 14) */ -#define USIC_CH_RBCTR_SRBTM_Msk \ - (0x4000UL) /*!< USIC_CH RBCTR: SRBTM (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_SRBTEN_Pos \ - (15UL) /*!< USIC_CH RBCTR: SRBTEN (Bit 15) */ -#define USIC_CH_RBCTR_SRBTEN_Msk \ - (0x8000UL) /*!< USIC_CH RBCTR: SRBTEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_SRBINP_Pos \ - (16UL) /*!< USIC_CH RBCTR: SRBINP (Bit 16) */ -#define USIC_CH_RBCTR_SRBINP_Msk \ - (0x70000UL) /*!< USIC_CH RBCTR: SRBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_RBCTR_ARBINP_Pos \ - (19UL) /*!< USIC_CH RBCTR: ARBINP (Bit 19) */ -#define USIC_CH_RBCTR_ARBINP_Msk \ - (0x380000UL) /*!< USIC_CH RBCTR: ARBINP (Bitfield-Mask: 0x07) */ -#define USIC_CH_RBCTR_RCIM_Pos \ - (22UL) /*!< USIC_CH RBCTR: RCIM (Bit 22) */ -#define USIC_CH_RBCTR_RCIM_Msk \ - (0xc00000UL) /*!< USIC_CH RBCTR: RCIM (Bitfield-Mask: 0x03) */ -#define USIC_CH_RBCTR_SIZE_Pos \ - (24UL) /*!< USIC_CH RBCTR: SIZE (Bit 24) */ -#define USIC_CH_RBCTR_SIZE_Msk \ - (0x7000000UL) /*!< USIC_CH RBCTR: SIZE (Bitfield-Mask: 0x07) */ -#define USIC_CH_RBCTR_RNM_Pos \ - (27UL) /*!< USIC_CH RBCTR: RNM (Bit 27) */ -#define USIC_CH_RBCTR_RNM_Msk \ - (0x8000000UL) /*!< USIC_CH RBCTR: RNM (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_LOF_Pos \ - (28UL) /*!< USIC_CH RBCTR: LOF (Bit 28) */ -#define USIC_CH_RBCTR_LOF_Msk \ - (0x10000000UL) /*!< USIC_CH RBCTR: LOF (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_ARBIEN_Pos \ - (29UL) /*!< USIC_CH RBCTR: ARBIEN (Bit 29) */ -#define USIC_CH_RBCTR_ARBIEN_Msk \ - (0x20000000UL) /*!< USIC_CH RBCTR: ARBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_SRBIEN_Pos \ - (30UL) /*!< USIC_CH RBCTR: SRBIEN (Bit 30) */ -#define USIC_CH_RBCTR_SRBIEN_Msk \ - (0x40000000UL) /*!< USIC_CH RBCTR: SRBIEN (Bitfield-Mask: 0x01) */ -#define USIC_CH_RBCTR_RBERIEN_Pos \ - (31UL) /*!< USIC_CH RBCTR: RBERIEN (Bit 31) */ -#define USIC_CH_RBCTR_RBERIEN_Msk \ - (0x80000000UL) /*!< USIC_CH RBCTR: RBERIEN (Bitfield-Mask: 0x01) */ - -/* ------------------------------- USIC_CH_TRBPTR ------------------------------- */ -#define USIC_CH_TRBPTR_TDIPTR_Pos \ - (0UL) /*!< USIC_CH TRBPTR: TDIPTR (Bit 0) */ -#define USIC_CH_TRBPTR_TDIPTR_Msk \ - (0x3fUL) /*!< USIC_CH TRBPTR: TDIPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TRBPTR_TDOPTR_Pos \ - (8UL) /*!< USIC_CH TRBPTR: TDOPTR (Bit 8) */ -#define USIC_CH_TRBPTR_TDOPTR_Msk \ - (0x3f00UL) /*!< USIC_CH TRBPTR: TDOPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TRBPTR_RDIPTR_Pos \ - (16UL) /*!< USIC_CH TRBPTR: RDIPTR (Bit 16) */ -#define USIC_CH_TRBPTR_RDIPTR_Msk \ - (0x3f0000UL) /*!< USIC_CH TRBPTR: RDIPTR (Bitfield-Mask: 0x3f) */ -#define USIC_CH_TRBPTR_RDOPTR_Pos \ - (24UL) /*!< USIC_CH TRBPTR: RDOPTR (Bit 24) */ -#define USIC_CH_TRBPTR_RDOPTR_Msk \ - (0x3f000000UL) /*!< USIC_CH TRBPTR: RDOPTR (Bitfield-Mask: 0x3f) */ - -/* -------------------------------- USIC_CH_TRBSR ------------------------------- */ -#define USIC_CH_TRBSR_SRBI_Pos \ - (0UL) /*!< USIC_CH TRBSR: SRBI (Bit 0) */ -#define USIC_CH_TRBSR_SRBI_Msk \ - (0x1UL) /*!< USIC_CH TRBSR: SRBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_RBERI_Pos \ - (1UL) /*!< USIC_CH TRBSR: RBERI (Bit 1) */ -#define USIC_CH_TRBSR_RBERI_Msk \ - (0x2UL) /*!< USIC_CH TRBSR: RBERI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_ARBI_Pos \ - (2UL) /*!< USIC_CH TRBSR: ARBI (Bit 2) */ -#define USIC_CH_TRBSR_ARBI_Msk \ - (0x4UL) /*!< USIC_CH TRBSR: ARBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_REMPTY_Pos \ - (3UL) /*!< USIC_CH TRBSR: REMPTY (Bit 3) */ -#define USIC_CH_TRBSR_REMPTY_Msk \ - (0x8UL) /*!< USIC_CH TRBSR: REMPTY (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_RFULL_Pos \ - (4UL) /*!< USIC_CH TRBSR: RFULL (Bit 4) */ -#define USIC_CH_TRBSR_RFULL_Msk \ - (0x10UL) /*!< USIC_CH TRBSR: RFULL (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_RBUS_Pos \ - (5UL) /*!< USIC_CH TRBSR: RBUS (Bit 5) */ -#define USIC_CH_TRBSR_RBUS_Msk \ - (0x20UL) /*!< USIC_CH TRBSR: RBUS (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_SRBT_Pos \ - (6UL) /*!< USIC_CH TRBSR: SRBT (Bit 6) */ -#define USIC_CH_TRBSR_SRBT_Msk \ - (0x40UL) /*!< USIC_CH TRBSR: SRBT (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_STBI_Pos \ - (8UL) /*!< USIC_CH TRBSR: STBI (Bit 8) */ -#define USIC_CH_TRBSR_STBI_Msk \ - (0x100UL) /*!< USIC_CH TRBSR: STBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_TBERI_Pos \ - (9UL) /*!< USIC_CH TRBSR: TBERI (Bit 9) */ -#define USIC_CH_TRBSR_TBERI_Msk \ - (0x200UL) /*!< USIC_CH TRBSR: TBERI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_TEMPTY_Pos \ - (11UL) /*!< USIC_CH TRBSR: TEMPTY (Bit 11) */ -#define USIC_CH_TRBSR_TEMPTY_Msk \ - (0x800UL) /*!< USIC_CH TRBSR: TEMPTY (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_TFULL_Pos \ - (12UL) /*!< USIC_CH TRBSR: TFULL (Bit 12) */ -#define USIC_CH_TRBSR_TFULL_Msk \ - (0x1000UL) /*!< USIC_CH TRBSR: TFULL (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_TBUS_Pos \ - (13UL) /*!< USIC_CH TRBSR: TBUS (Bit 13) */ -#define USIC_CH_TRBSR_TBUS_Msk \ - (0x2000UL) /*!< USIC_CH TRBSR: TBUS (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_STBT_Pos \ - (14UL) /*!< USIC_CH TRBSR: STBT (Bit 14) */ -#define USIC_CH_TRBSR_STBT_Msk \ - (0x4000UL) /*!< USIC_CH TRBSR: STBT (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSR_RBFLVL_Pos \ - (16UL) /*!< USIC_CH TRBSR: RBFLVL (Bit 16) */ -#define USIC_CH_TRBSR_RBFLVL_Msk \ - (0x7f0000UL) /*!< USIC_CH TRBSR: RBFLVL (Bitfield-Mask: 0x7f) */ -#define USIC_CH_TRBSR_TBFLVL_Pos \ - (24UL) /*!< USIC_CH TRBSR: TBFLVL (Bit 24) */ -#define USIC_CH_TRBSR_TBFLVL_Msk \ - (0x7f000000UL) /*!< USIC_CH TRBSR: TBFLVL (Bitfield-Mask: 0x7f) */ - -/* ------------------------------- USIC_CH_TRBSCR ------------------------------- */ -#define USIC_CH_TRBSCR_CSRBI_Pos \ - (0UL) /*!< USIC_CH TRBSCR: CSRBI (Bit 0) */ -#define USIC_CH_TRBSCR_CSRBI_Msk \ - (0x1UL) /*!< USIC_CH TRBSCR: CSRBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CRBERI_Pos \ - (1UL) /*!< USIC_CH TRBSCR: CRBERI (Bit 1) */ -#define USIC_CH_TRBSCR_CRBERI_Msk \ - (0x2UL) /*!< USIC_CH TRBSCR: CRBERI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CARBI_Pos \ - (2UL) /*!< USIC_CH TRBSCR: CARBI (Bit 2) */ -#define USIC_CH_TRBSCR_CARBI_Msk \ - (0x4UL) /*!< USIC_CH TRBSCR: CARBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CSTBI_Pos \ - (8UL) /*!< USIC_CH TRBSCR: CSTBI (Bit 8) */ -#define USIC_CH_TRBSCR_CSTBI_Msk \ - (0x100UL) /*!< USIC_CH TRBSCR: CSTBI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CTBERI_Pos \ - (9UL) /*!< USIC_CH TRBSCR: CTBERI (Bit 9) */ -#define USIC_CH_TRBSCR_CTBERI_Msk \ - (0x200UL) /*!< USIC_CH TRBSCR: CTBERI (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_CBDV_Pos \ - (10UL) /*!< USIC_CH TRBSCR: CBDV (Bit 10) */ -#define USIC_CH_TRBSCR_CBDV_Msk \ - (0x400UL) /*!< USIC_CH TRBSCR: CBDV (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_FLUSHRB_Pos \ - (14UL) /*!< USIC_CH TRBSCR: FLUSHRB (Bit 14) */ -#define USIC_CH_TRBSCR_FLUSHRB_Msk \ - (0x4000UL) /*!< USIC_CH TRBSCR: FLUSHRB (Bitfield-Mask: 0x01) */ -#define USIC_CH_TRBSCR_FLUSHTB_Pos \ - (15UL) /*!< USIC_CH TRBSCR: FLUSHTB (Bit 15) */ -#define USIC_CH_TRBSCR_FLUSHTB_Msk \ - (0x8000UL) /*!< USIC_CH TRBSCR: FLUSHTB (Bitfield-Mask: 0x01) */ - -/* -------------------------------- USIC_CH_OUTR -------------------------------- */ -#define USIC_CH_OUTR_DSR_Pos \ - (0UL) /*!< USIC_CH OUTR: DSR (Bit 0) */ -#define USIC_CH_OUTR_DSR_Msk \ - (0xffffUL) /*!< USIC_CH OUTR: DSR (Bitfield-Mask: 0xffff) */ -#define USIC_CH_OUTR_RCI_Pos \ - (16UL) /*!< USIC_CH OUTR: RCI (Bit 16) */ -#define USIC_CH_OUTR_RCI_Msk \ - (0x1f0000UL) /*!< USIC_CH OUTR: RCI (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- USIC_CH_OUTDR ------------------------------- */ -#define USIC_CH_OUTDR_DSR_Pos \ - (0UL) /*!< USIC_CH OUTDR: DSR (Bit 0) */ -#define USIC_CH_OUTDR_DSR_Msk \ - (0xffffUL) /*!< USIC_CH OUTDR: DSR (Bitfield-Mask: 0xffff) */ -#define USIC_CH_OUTDR_RCI_Pos \ - (16UL) /*!< USIC_CH OUTDR: RCI (Bit 16) */ -#define USIC_CH_OUTDR_RCI_Msk \ - (0x1f0000UL) /*!< USIC_CH OUTDR: RCI (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- USIC_CH_IN --------------------------------- */ -#define USIC_CH_IN_TDATA_Pos \ - (0UL) /*!< USIC_CH IN: TDATA (Bit 0) */ -#define USIC_CH_IN_TDATA_Msk \ - (0xffffUL) /*!< USIC_CH IN: TDATA (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ struct 'CAN' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- CAN_CLC ---------------------------------- */ -#define CAN_CLC_DISR_Pos (0UL) /*!< CAN CLC: DISR (Bit 0) */ -#define CAN_CLC_DISR_Msk (0x1UL) /*!< CAN CLC: DISR (Bitfield-Mask: 0x01) */ -#define CAN_CLC_DISS_Pos (1UL) /*!< CAN CLC: DISS (Bit 1) */ -#define CAN_CLC_DISS_Msk (0x2UL) /*!< CAN CLC: DISS (Bitfield-Mask: 0x01) */ -#define CAN_CLC_EDIS_Pos (3UL) /*!< CAN CLC: EDIS (Bit 3) */ -#define CAN_CLC_EDIS_Msk (0x8UL) /*!< CAN CLC: EDIS (Bitfield-Mask: 0x01) */ -#define CAN_CLC_SBWE_Pos (4UL) /*!< CAN CLC: SBWE (Bit 4) */ -#define CAN_CLC_SBWE_Msk \ - (0x10UL) /*!< CAN CLC: SBWE (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- CAN_ID ----------------------------------- */ -#define CAN_ID_MOD_REV_Pos (0UL) /*!< CAN ID: MOD_REV (Bit 0) */ -#define CAN_ID_MOD_REV_Msk \ - (0xffUL) /*!< CAN ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define CAN_ID_MOD_TYPE_Pos \ - (8UL) /*!< CAN ID: MOD_TYPE (Bit 8) */ -#define CAN_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< CAN ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define CAN_ID_MOD_NUMBER_Pos \ - (16UL) /*!< CAN ID: MOD_NUMBER (Bit 16) */ -#define CAN_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< CAN ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- CAN_FDR ---------------------------------- */ -#define CAN_FDR_STEP_Pos (0UL) /*!< CAN FDR: STEP (Bit 0) */ -#define CAN_FDR_STEP_Msk \ - (0x3ffUL) /*!< CAN FDR: STEP (Bitfield-Mask: 0x3ff) */ -#define CAN_FDR_SM_Pos (11UL) /*!< CAN FDR: SM (Bit 11) */ -#define CAN_FDR_SM_Msk (0x800UL) /*!< CAN FDR: SM (Bitfield-Mask: 0x01) */ -#define CAN_FDR_SC_Pos (12UL) /*!< CAN FDR: SC (Bit 12) */ -#define CAN_FDR_SC_Msk \ - (0x3000UL) /*!< CAN FDR: SC (Bitfield-Mask: 0x03) */ -#define CAN_FDR_DM_Pos (14UL) /*!< CAN FDR: DM (Bit 14) */ -#define CAN_FDR_DM_Msk \ - (0xc000UL) /*!< CAN FDR: DM (Bitfield-Mask: 0x03) */ -#define CAN_FDR_RESULT_Pos \ - (16UL) /*!< CAN FDR: RESULT (Bit 16) */ -#define CAN_FDR_RESULT_Msk \ - (0x3ff0000UL) /*!< CAN FDR: RESULT (Bitfield-Mask: 0x3ff) */ -#define CAN_FDR_SUSACK_Pos \ - (28UL) /*!< CAN FDR: SUSACK (Bit 28) */ -#define CAN_FDR_SUSACK_Msk \ - (0x10000000UL) /*!< CAN FDR: SUSACK (Bitfield-Mask: 0x01) */ -#define CAN_FDR_SUSREQ_Pos \ - (29UL) /*!< CAN FDR: SUSREQ (Bit 29) */ -#define CAN_FDR_SUSREQ_Msk \ - (0x20000000UL) /*!< CAN FDR: SUSREQ (Bitfield-Mask: 0x01) */ -#define CAN_FDR_ENHW_Pos (30UL) /*!< CAN FDR: ENHW (Bit 30) */ -#define CAN_FDR_ENHW_Msk \ - (0x40000000UL) /*!< CAN FDR: ENHW (Bitfield-Mask: 0x01) */ -#define CAN_FDR_DISCLK_Pos \ - (31UL) /*!< CAN FDR: DISCLK (Bit 31) */ -#define CAN_FDR_DISCLK_Msk \ - (0x80000000UL) /*!< CAN FDR: DISCLK (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CAN_LIST ---------------------------------- */ -#define CAN_LIST_BEGIN_Pos (0UL) /*!< CAN LIST: BEGIN (Bit 0) */ -#define CAN_LIST_BEGIN_Msk \ - (0xffUL) /*!< CAN LIST: BEGIN (Bitfield-Mask: 0xff) */ -#define CAN_LIST_END_Pos (8UL) /*!< CAN LIST: END (Bit 8) */ -#define CAN_LIST_END_Msk \ - (0xff00UL) /*!< CAN LIST: END (Bitfield-Mask: 0xff) */ -#define CAN_LIST_SIZE_Pos (16UL) /*!< CAN LIST: SIZE (Bit 16) */ -#define CAN_LIST_SIZE_Msk \ - (0xff0000UL) /*!< CAN LIST: SIZE (Bitfield-Mask: 0xff) */ -#define CAN_LIST_EMPTY_Pos \ - (24UL) /*!< CAN LIST: EMPTY (Bit 24) */ -#define CAN_LIST_EMPTY_Msk \ - (0x1000000UL) /*!< CAN LIST: EMPTY (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CAN_MSPND --------------------------------- */ -#define CAN_MSPND_PND_Pos (0UL) /*!< CAN MSPND: PND (Bit 0) */ -#define CAN_MSPND_PND_Msk \ - (0xffffffffUL) /*!< CAN MSPND: PND (Bitfield-Mask: 0xffffffff) */ - -/* ---------------------------------- CAN_MSID ---------------------------------- */ -#define CAN_MSID_INDEX_Pos (0UL) /*!< CAN MSID: INDEX (Bit 0) */ -#define CAN_MSID_INDEX_Msk \ - (0x3fUL) /*!< CAN MSID: INDEX (Bitfield-Mask: 0x3f) */ - -/* --------------------------------- CAN_MSIMASK -------------------------------- */ -#define CAN_MSIMASK_IM_Pos (0UL) /*!< CAN MSIMASK: IM (Bit 0) */ -#define CAN_MSIMASK_IM_Msk \ - (0xffffffffUL) /*!< CAN MSIMASK: IM (Bitfield-Mask: 0xffffffff) */ - -/* --------------------------------- CAN_PANCTR --------------------------------- */ -#define CAN_PANCTR_PANCMD_Pos \ - (0UL) /*!< CAN PANCTR: PANCMD (Bit 0) */ -#define CAN_PANCTR_PANCMD_Msk \ - (0xffUL) /*!< CAN PANCTR: PANCMD (Bitfield-Mask: 0xff) */ -#define CAN_PANCTR_BUSY_Pos \ - (8UL) /*!< CAN PANCTR: BUSY (Bit 8) */ -#define CAN_PANCTR_BUSY_Msk \ - (0x100UL) /*!< CAN PANCTR: BUSY (Bitfield-Mask: 0x01) */ -#define CAN_PANCTR_RBUSY_Pos \ - (9UL) /*!< CAN PANCTR: RBUSY (Bit 9) */ -#define CAN_PANCTR_RBUSY_Msk \ - (0x200UL) /*!< CAN PANCTR: RBUSY (Bitfield-Mask: 0x01) */ -#define CAN_PANCTR_PANAR1_Pos \ - (16UL) /*!< CAN PANCTR: PANAR1 (Bit 16) */ -#define CAN_PANCTR_PANAR1_Msk \ - (0xff0000UL) /*!< CAN PANCTR: PANAR1 (Bitfield-Mask: 0xff) */ -#define CAN_PANCTR_PANAR2_Pos \ - (24UL) /*!< CAN PANCTR: PANAR2 (Bit 24) */ -#define CAN_PANCTR_PANAR2_Msk \ - (0xff000000UL) /*!< CAN PANCTR: PANAR2 (Bitfield-Mask: 0xff) */ - -/* ----------------------------------- CAN_MCR ---------------------------------- */ -#define CAN_MCR_MPSEL_Pos (12UL) /*!< CAN MCR: MPSEL (Bit 12) */ -#define CAN_MCR_MPSEL_Msk \ - (0xf000UL) /*!< CAN MCR: MPSEL (Bitfield-Mask: 0x0f) */ - -/* ---------------------------------- CAN_MITR ---------------------------------- */ -#define CAN_MITR_IT_Pos (0UL) /*!< CAN MITR: IT (Bit 0) */ -#define CAN_MITR_IT_Msk (0xffUL) /*!< CAN MITR: IT (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ Group 'CAN_NODE' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- CAN_NODE_NCR -------------------------------- */ -#define CAN_NODE_NCR_INIT_Pos \ - (0UL) /*!< CAN_NODE NCR: INIT (Bit 0) */ -#define CAN_NODE_NCR_INIT_Msk \ - (0x1UL) /*!< CAN_NODE NCR: INIT (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_TRIE_Pos \ - (1UL) /*!< CAN_NODE NCR: TRIE (Bit 1) */ -#define CAN_NODE_NCR_TRIE_Msk \ - (0x2UL) /*!< CAN_NODE NCR: TRIE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_LECIE_Pos \ - (2UL) /*!< CAN_NODE NCR: LECIE (Bit 2) */ -#define CAN_NODE_NCR_LECIE_Msk \ - (0x4UL) /*!< CAN_NODE NCR: LECIE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_ALIE_Pos \ - (3UL) /*!< CAN_NODE NCR: ALIE (Bit 3) */ -#define CAN_NODE_NCR_ALIE_Msk \ - (0x8UL) /*!< CAN_NODE NCR: ALIE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_CANDIS_Pos \ - (4UL) /*!< CAN_NODE NCR: CANDIS (Bit 4) */ -#define CAN_NODE_NCR_CANDIS_Msk \ - (0x10UL) /*!< CAN_NODE NCR: CANDIS (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_CCE_Pos \ - (6UL) /*!< CAN_NODE NCR: CCE (Bit 6) */ -#define CAN_NODE_NCR_CCE_Msk \ - (0x40UL) /*!< CAN_NODE NCR: CCE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_CALM_Pos \ - (7UL) /*!< CAN_NODE NCR: CALM (Bit 7) */ -#define CAN_NODE_NCR_CALM_Msk \ - (0x80UL) /*!< CAN_NODE NCR: CALM (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NCR_SUSEN_Pos \ - (8UL) /*!< CAN_NODE NCR: SUSEN (Bit 8) */ -#define CAN_NODE_NCR_SUSEN_Msk \ - (0x100UL) /*!< CAN_NODE NCR: SUSEN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_NODE_NSR -------------------------------- */ -#define CAN_NODE_NSR_LEC_Pos \ - (0UL) /*!< CAN_NODE NSR: LEC (Bit 0) */ -#define CAN_NODE_NSR_LEC_Msk \ - (0x7UL) /*!< CAN_NODE NSR: LEC (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NSR_TXOK_Pos \ - (3UL) /*!< CAN_NODE NSR: TXOK (Bit 3) */ -#define CAN_NODE_NSR_TXOK_Msk \ - (0x8UL) /*!< CAN_NODE NSR: TXOK (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_RXOK_Pos \ - (4UL) /*!< CAN_NODE NSR: RXOK (Bit 4) */ -#define CAN_NODE_NSR_RXOK_Msk \ - (0x10UL) /*!< CAN_NODE NSR: RXOK (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_ALERT_Pos \ - (5UL) /*!< CAN_NODE NSR: ALERT (Bit 5) */ -#define CAN_NODE_NSR_ALERT_Msk \ - (0x20UL) /*!< CAN_NODE NSR: ALERT (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_EWRN_Pos \ - (6UL) /*!< CAN_NODE NSR: EWRN (Bit 6) */ -#define CAN_NODE_NSR_EWRN_Msk \ - (0x40UL) /*!< CAN_NODE NSR: EWRN (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_BOFF_Pos \ - (7UL) /*!< CAN_NODE NSR: BOFF (Bit 7) */ -#define CAN_NODE_NSR_BOFF_Msk \ - (0x80UL) /*!< CAN_NODE NSR: BOFF (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_LLE_Pos \ - (8UL) /*!< CAN_NODE NSR: LLE (Bit 8) */ -#define CAN_NODE_NSR_LLE_Msk \ - (0x100UL) /*!< CAN_NODE NSR: LLE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_LOE_Pos \ - (9UL) /*!< CAN_NODE NSR: LOE (Bit 9) */ -#define CAN_NODE_NSR_LOE_Msk \ - (0x200UL) /*!< CAN_NODE NSR: LOE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NSR_SUSACK_Pos \ - (10UL) /*!< CAN_NODE NSR: SUSACK (Bit 10) */ -#define CAN_NODE_NSR_SUSACK_Msk \ - (0x400UL) /*!< CAN_NODE NSR: SUSACK (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_NODE_NIPR ------------------------------- */ -#define CAN_NODE_NIPR_ALINP_Pos \ - (0UL) /*!< CAN_NODE NIPR: ALINP (Bit 0) */ -#define CAN_NODE_NIPR_ALINP_Msk \ - (0x7UL) /*!< CAN_NODE NIPR: ALINP (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NIPR_LECINP_Pos \ - (4UL) /*!< CAN_NODE NIPR: LECINP (Bit 4) */ -#define CAN_NODE_NIPR_LECINP_Msk \ - (0x70UL) /*!< CAN_NODE NIPR: LECINP (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NIPR_TRINP_Pos \ - (8UL) /*!< CAN_NODE NIPR: TRINP (Bit 8) */ -#define CAN_NODE_NIPR_TRINP_Msk \ - (0x700UL) /*!< CAN_NODE NIPR: TRINP (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NIPR_CFCINP_Pos \ - (12UL) /*!< CAN_NODE NIPR: CFCINP (Bit 12) */ -#define CAN_NODE_NIPR_CFCINP_Msk \ - (0x7000UL) /*!< CAN_NODE NIPR: CFCINP (Bitfield-Mask: 0x07) */ - -/* -------------------------------- CAN_NODE_NPCR ------------------------------- */ -#define CAN_NODE_NPCR_RXSEL_Pos \ - (0UL) /*!< CAN_NODE NPCR: RXSEL (Bit 0) */ -#define CAN_NODE_NPCR_RXSEL_Msk \ - (0x7UL) /*!< CAN_NODE NPCR: RXSEL (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NPCR_LBM_Pos \ - (8UL) /*!< CAN_NODE NPCR: LBM (Bit 8) */ -#define CAN_NODE_NPCR_LBM_Msk \ - (0x100UL) /*!< CAN_NODE NPCR: LBM (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_NODE_NBTR ------------------------------- */ -#define CAN_NODE_NBTR_BRP_Pos \ - (0UL) /*!< CAN_NODE NBTR: BRP (Bit 0) */ -#define CAN_NODE_NBTR_BRP_Msk \ - (0x3fUL) /*!< CAN_NODE NBTR: BRP (Bitfield-Mask: 0x3f) */ -#define CAN_NODE_NBTR_SJW_Pos \ - (6UL) /*!< CAN_NODE NBTR: SJW (Bit 6) */ -#define CAN_NODE_NBTR_SJW_Msk \ - (0xc0UL) /*!< CAN_NODE NBTR: SJW (Bitfield-Mask: 0x03) */ -#define CAN_NODE_NBTR_TSEG1_Pos \ - (8UL) /*!< CAN_NODE NBTR: TSEG1 (Bit 8) */ -#define CAN_NODE_NBTR_TSEG1_Msk \ - (0xf00UL) /*!< CAN_NODE NBTR: TSEG1 (Bitfield-Mask: 0x0f) */ -#define CAN_NODE_NBTR_TSEG2_Pos \ - (12UL) /*!< CAN_NODE NBTR: TSEG2 (Bit 12) */ -#define CAN_NODE_NBTR_TSEG2_Msk \ - (0x7000UL) /*!< CAN_NODE NBTR: TSEG2 (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NBTR_DIV8_Pos \ - (15UL) /*!< CAN_NODE NBTR: DIV8 (Bit 15) */ -#define CAN_NODE_NBTR_DIV8_Msk \ - (0x8000UL) /*!< CAN_NODE NBTR: DIV8 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CAN_NODE_NECNT ------------------------------- */ -#define CAN_NODE_NECNT_REC_Pos \ - (0UL) /*!< CAN_NODE NECNT: REC (Bit 0) */ -#define CAN_NODE_NECNT_REC_Msk \ - (0xffUL) /*!< CAN_NODE NECNT: REC (Bitfield-Mask: 0xff) */ -#define CAN_NODE_NECNT_TEC_Pos \ - (8UL) /*!< CAN_NODE NECNT: TEC (Bit 8) */ -#define CAN_NODE_NECNT_TEC_Msk \ - (0xff00UL) /*!< CAN_NODE NECNT: TEC (Bitfield-Mask: 0xff) */ -#define CAN_NODE_NECNT_EWRNLVL_Pos \ - (16UL) /*!< CAN_NODE NECNT: EWRNLVL (Bit 16) */ -#define CAN_NODE_NECNT_EWRNLVL_Msk \ - (0xff0000UL) /*!< CAN_NODE NECNT: EWRNLVL (Bitfield-Mask: 0xff) */ -#define CAN_NODE_NECNT_LETD_Pos \ - (24UL) /*!< CAN_NODE NECNT: LETD (Bit 24) */ -#define CAN_NODE_NECNT_LETD_Msk \ - (0x1000000UL) /*!< CAN_NODE NECNT: LETD (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NECNT_LEINC_Pos \ - (25UL) /*!< CAN_NODE NECNT: LEINC (Bit 25) */ -#define CAN_NODE_NECNT_LEINC_Msk \ - (0x2000000UL) /*!< CAN_NODE NECNT: LEINC (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_NODE_NFCR ------------------------------- */ -#define CAN_NODE_NFCR_CFC_Pos \ - (0UL) /*!< CAN_NODE NFCR: CFC (Bit 0) */ -#define CAN_NODE_NFCR_CFC_Msk \ - (0xffffUL) /*!< CAN_NODE NFCR: CFC (Bitfield-Mask: 0xffff) */ -#define CAN_NODE_NFCR_CFSEL_Pos \ - (16UL) /*!< CAN_NODE NFCR: CFSEL (Bit 16) */ -#define CAN_NODE_NFCR_CFSEL_Msk \ - (0x70000UL) /*!< CAN_NODE NFCR: CFSEL (Bitfield-Mask: 0x07) */ -#define CAN_NODE_NFCR_CFMOD_Pos \ - (19UL) /*!< CAN_NODE NFCR: CFMOD (Bit 19) */ -#define CAN_NODE_NFCR_CFMOD_Msk \ - (0x180000UL) /*!< CAN_NODE NFCR: CFMOD (Bitfield-Mask: 0x03) */ -#define CAN_NODE_NFCR_CFCIE_Pos \ - (22UL) /*!< CAN_NODE NFCR: CFCIE (Bit 22) */ -#define CAN_NODE_NFCR_CFCIE_Msk \ - (0x400000UL) /*!< CAN_NODE NFCR: CFCIE (Bitfield-Mask: 0x01) */ -#define CAN_NODE_NFCR_CFCOV_Pos \ - (23UL) /*!< CAN_NODE NFCR: CFCOV (Bit 23) */ -#define CAN_NODE_NFCR_CFCOV_Msk \ - (0x800000UL) /*!< CAN_NODE NFCR: CFCOV (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'CAN_MO' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- CAN_MO_MOFCR -------------------------------- */ -#define CAN_MO_MOFCR_MMC_Pos \ - (0UL) /*!< CAN_MO MOFCR: MMC (Bit 0) */ -#define CAN_MO_MOFCR_MMC_Msk \ - (0xfUL) /*!< CAN_MO MOFCR: MMC (Bitfield-Mask: 0x0f) */ -#define CAN_MO_MOFCR_GDFS_Pos \ - (8UL) /*!< CAN_MO MOFCR: GDFS (Bit 8) */ -#define CAN_MO_MOFCR_GDFS_Msk \ - (0x100UL) /*!< CAN_MO MOFCR: GDFS (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_IDC_Pos \ - (9UL) /*!< CAN_MO MOFCR: IDC (Bit 9) */ -#define CAN_MO_MOFCR_IDC_Msk \ - (0x200UL) /*!< CAN_MO MOFCR: IDC (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_DLCC_Pos \ - (10UL) /*!< CAN_MO MOFCR: DLCC (Bit 10) */ -#define CAN_MO_MOFCR_DLCC_Msk \ - (0x400UL) /*!< CAN_MO MOFCR: DLCC (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_DATC_Pos \ - (11UL) /*!< CAN_MO MOFCR: DATC (Bit 11) */ -#define CAN_MO_MOFCR_DATC_Msk \ - (0x800UL) /*!< CAN_MO MOFCR: DATC (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_RXIE_Pos \ - (16UL) /*!< CAN_MO MOFCR: RXIE (Bit 16) */ -#define CAN_MO_MOFCR_RXIE_Msk \ - (0x10000UL) /*!< CAN_MO MOFCR: RXIE (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_TXIE_Pos \ - (17UL) /*!< CAN_MO MOFCR: TXIE (Bit 17) */ -#define CAN_MO_MOFCR_TXIE_Msk \ - (0x20000UL) /*!< CAN_MO MOFCR: TXIE (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_OVIE_Pos \ - (18UL) /*!< CAN_MO MOFCR: OVIE (Bit 18) */ -#define CAN_MO_MOFCR_OVIE_Msk \ - (0x40000UL) /*!< CAN_MO MOFCR: OVIE (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_FRREN_Pos \ - (20UL) /*!< CAN_MO MOFCR: FRREN (Bit 20) */ -#define CAN_MO_MOFCR_FRREN_Msk \ - (0x100000UL) /*!< CAN_MO MOFCR: FRREN (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_RMM_Pos \ - (21UL) /*!< CAN_MO MOFCR: RMM (Bit 21) */ -#define CAN_MO_MOFCR_RMM_Msk \ - (0x200000UL) /*!< CAN_MO MOFCR: RMM (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_SDT_Pos \ - (22UL) /*!< CAN_MO MOFCR: SDT (Bit 22) */ -#define CAN_MO_MOFCR_SDT_Msk \ - (0x400000UL) /*!< CAN_MO MOFCR: SDT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_STT_Pos \ - (23UL) /*!< CAN_MO MOFCR: STT (Bit 23) */ -#define CAN_MO_MOFCR_STT_Msk \ - (0x800000UL) /*!< CAN_MO MOFCR: STT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOFCR_DLC_Pos \ - (24UL) /*!< CAN_MO MOFCR: DLC (Bit 24) */ -#define CAN_MO_MOFCR_DLC_Msk \ - (0xf000000UL) /*!< CAN_MO MOFCR: DLC (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CAN_MO_MOFGPR ------------------------------- */ -#define CAN_MO_MOFGPR_BOT_Pos \ - (0UL) /*!< CAN_MO MOFGPR: BOT (Bit 0) */ -#define CAN_MO_MOFGPR_BOT_Msk \ - (0xffUL) /*!< CAN_MO MOFGPR: BOT (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOFGPR_TOP_Pos \ - (8UL) /*!< CAN_MO MOFGPR: TOP (Bit 8) */ -#define CAN_MO_MOFGPR_TOP_Msk \ - (0xff00UL) /*!< CAN_MO MOFGPR: TOP (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOFGPR_CUR_Pos \ - (16UL) /*!< CAN_MO MOFGPR: CUR (Bit 16) */ -#define CAN_MO_MOFGPR_CUR_Msk \ - (0xff0000UL) /*!< CAN_MO MOFGPR: CUR (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOFGPR_SEL_Pos \ - (24UL) /*!< CAN_MO MOFGPR: SEL (Bit 24) */ -#define CAN_MO_MOFGPR_SEL_Msk \ - (0xff000000UL) /*!< CAN_MO MOFGPR: SEL (Bitfield-Mask: 0xff) */ - -/* -------------------------------- CAN_MO_MOIPR -------------------------------- */ -#define CAN_MO_MOIPR_RXINP_Pos \ - (0UL) /*!< CAN_MO MOIPR: RXINP (Bit 0) */ -#define CAN_MO_MOIPR_RXINP_Msk \ - (0x7UL) /*!< CAN_MO MOIPR: RXINP (Bitfield-Mask: 0x07) */ -#define CAN_MO_MOIPR_TXINP_Pos \ - (4UL) /*!< CAN_MO MOIPR: TXINP (Bit 4) */ -#define CAN_MO_MOIPR_TXINP_Msk \ - (0x70UL) /*!< CAN_MO MOIPR: TXINP (Bitfield-Mask: 0x07) */ -#define CAN_MO_MOIPR_MPN_Pos \ - (8UL) /*!< CAN_MO MOIPR: MPN (Bit 8) */ -#define CAN_MO_MOIPR_MPN_Msk \ - (0xff00UL) /*!< CAN_MO MOIPR: MPN (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOIPR_CFCVAL_Pos \ - (16UL) /*!< CAN_MO MOIPR: CFCVAL (Bit 16) */ -#define CAN_MO_MOIPR_CFCVAL_Msk \ - (0xffff0000UL) /*!< CAN_MO MOIPR: CFCVAL (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CAN_MO_MOAMR -------------------------------- */ -#define CAN_MO_MOAMR_AM_Pos \ - (0UL) /*!< CAN_MO MOAMR: AM (Bit 0) */ -#define CAN_MO_MOAMR_AM_Msk \ - (0x1fffffffUL) /*!< CAN_MO MOAMR: AM (Bitfield-Mask: 0x1fffffff) */ -#define CAN_MO_MOAMR_MIDE_Pos \ - (29UL) /*!< CAN_MO MOAMR: MIDE (Bit 29) */ -#define CAN_MO_MOAMR_MIDE_Msk \ - (0x20000000UL) /*!< CAN_MO MOAMR: MIDE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CAN_MO_MODATAL ------------------------------- */ -#define CAN_MO_MODATAL_DB0_Pos \ - (0UL) /*!< CAN_MO MODATAL: DB0 (Bit 0) */ -#define CAN_MO_MODATAL_DB0_Msk \ - (0xffUL) /*!< CAN_MO MODATAL: DB0 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAL_DB1_Pos \ - (8UL) /*!< CAN_MO MODATAL: DB1 (Bit 8) */ -#define CAN_MO_MODATAL_DB1_Msk \ - (0xff00UL) /*!< CAN_MO MODATAL: DB1 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAL_DB2_Pos \ - (16UL) /*!< CAN_MO MODATAL: DB2 (Bit 16) */ -#define CAN_MO_MODATAL_DB2_Msk \ - (0xff0000UL) /*!< CAN_MO MODATAL: DB2 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAL_DB3_Pos \ - (24UL) /*!< CAN_MO MODATAL: DB3 (Bit 24) */ -#define CAN_MO_MODATAL_DB3_Msk \ - (0xff000000UL) /*!< CAN_MO MODATAL: DB3 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- CAN_MO_MODATAH ------------------------------- */ -#define CAN_MO_MODATAH_DB4_Pos \ - (0UL) /*!< CAN_MO MODATAH: DB4 (Bit 0) */ -#define CAN_MO_MODATAH_DB4_Msk \ - (0xffUL) /*!< CAN_MO MODATAH: DB4 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAH_DB5_Pos \ - (8UL) /*!< CAN_MO MODATAH: DB5 (Bit 8) */ -#define CAN_MO_MODATAH_DB5_Msk \ - (0xff00UL) /*!< CAN_MO MODATAH: DB5 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAH_DB6_Pos \ - (16UL) /*!< CAN_MO MODATAH: DB6 (Bit 16) */ -#define CAN_MO_MODATAH_DB6_Msk \ - (0xff0000UL) /*!< CAN_MO MODATAH: DB6 (Bitfield-Mask: 0xff) */ -#define CAN_MO_MODATAH_DB7_Pos \ - (24UL) /*!< CAN_MO MODATAH: DB7 (Bit 24) */ -#define CAN_MO_MODATAH_DB7_Msk \ - (0xff000000UL) /*!< CAN_MO MODATAH: DB7 (Bitfield-Mask: 0xff) */ - -/* --------------------------------- CAN_MO_MOAR -------------------------------- */ -#define CAN_MO_MOAR_ID_Pos (0UL) /*!< CAN_MO MOAR: ID (Bit 0) */ -#define CAN_MO_MOAR_ID_Msk \ - (0x1fffffffUL) /*!< CAN_MO MOAR: ID (Bitfield-Mask: 0x1fffffff) */ -#define CAN_MO_MOAR_IDE_Pos \ - (29UL) /*!< CAN_MO MOAR: IDE (Bit 29) */ -#define CAN_MO_MOAR_IDE_Msk \ - (0x20000000UL) /*!< CAN_MO MOAR: IDE (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOAR_PRI_Pos \ - (30UL) /*!< CAN_MO MOAR: PRI (Bit 30) */ -#define CAN_MO_MOAR_PRI_Msk \ - (0xc0000000UL) /*!< CAN_MO MOAR: PRI (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CAN_MO_MOCTR -------------------------------- */ -#define CAN_MO_MOCTR_RESRXPND_Pos \ - (0UL) /*!< CAN_MO MOCTR: RESRXPND (Bit 0) */ -#define CAN_MO_MOCTR_RESRXPND_Msk \ - (0x1UL) /*!< CAN_MO MOCTR: RESRXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESTXPND_Pos \ - (1UL) /*!< CAN_MO MOCTR: RESTXPND (Bit 1) */ -#define CAN_MO_MOCTR_RESTXPND_Msk \ - (0x2UL) /*!< CAN_MO MOCTR: RESTXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESRXUPD_Pos \ - (2UL) /*!< CAN_MO MOCTR: RESRXUPD (Bit 2) */ -#define CAN_MO_MOCTR_RESRXUPD_Msk \ - (0x4UL) /*!< CAN_MO MOCTR: RESRXUPD (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESNEWDAT_Pos \ - (3UL) /*!< CAN_MO MOCTR: RESNEWDAT (Bit 3) */ -#define CAN_MO_MOCTR_RESNEWDAT_Msk \ - (0x8UL) /*!< CAN_MO MOCTR: RESNEWDAT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESMSGLST_Pos \ - (4UL) /*!< CAN_MO MOCTR: RESMSGLST (Bit 4) */ -#define CAN_MO_MOCTR_RESMSGLST_Msk \ - (0x10UL) /*!< CAN_MO MOCTR: RESMSGLST (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESMSGVAL_Pos \ - (5UL) /*!< CAN_MO MOCTR: RESMSGVAL (Bit 5) */ -#define CAN_MO_MOCTR_RESMSGVAL_Msk \ - (0x20UL) /*!< CAN_MO MOCTR: RESMSGVAL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESRTSEL_Pos \ - (6UL) /*!< CAN_MO MOCTR: RESRTSEL (Bit 6) */ -#define CAN_MO_MOCTR_RESRTSEL_Msk \ - (0x40UL) /*!< CAN_MO MOCTR: RESRTSEL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESRXEN_Pos \ - (7UL) /*!< CAN_MO MOCTR: RESRXEN (Bit 7) */ -#define CAN_MO_MOCTR_RESRXEN_Msk \ - (0x80UL) /*!< CAN_MO MOCTR: RESRXEN (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESTXRQ_Pos \ - (8UL) /*!< CAN_MO MOCTR: RESTXRQ (Bit 8) */ -#define CAN_MO_MOCTR_RESTXRQ_Msk \ - (0x100UL) /*!< CAN_MO MOCTR: RESTXRQ (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESTXEN0_Pos \ - (9UL) /*!< CAN_MO MOCTR: RESTXEN0 (Bit 9) */ -#define CAN_MO_MOCTR_RESTXEN0_Msk \ - (0x200UL) /*!< CAN_MO MOCTR: RESTXEN0 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESTXEN1_Pos \ - (10UL) /*!< CAN_MO MOCTR: RESTXEN1 (Bit 10) */ -#define CAN_MO_MOCTR_RESTXEN1_Msk \ - (0x400UL) /*!< CAN_MO MOCTR: RESTXEN1 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_RESDIR_Pos \ - (11UL) /*!< CAN_MO MOCTR: RESDIR (Bit 11) */ -#define CAN_MO_MOCTR_RESDIR_Msk \ - (0x800UL) /*!< CAN_MO MOCTR: RESDIR (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETRXPND_Pos \ - (16UL) /*!< CAN_MO MOCTR: SETRXPND (Bit 16) */ -#define CAN_MO_MOCTR_SETRXPND_Msk \ - (0x10000UL) /*!< CAN_MO MOCTR: SETRXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETTXPND_Pos \ - (17UL) /*!< CAN_MO MOCTR: SETTXPND (Bit 17) */ -#define CAN_MO_MOCTR_SETTXPND_Msk \ - (0x20000UL) /*!< CAN_MO MOCTR: SETTXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETRXUPD_Pos \ - (18UL) /*!< CAN_MO MOCTR: SETRXUPD (Bit 18) */ -#define CAN_MO_MOCTR_SETRXUPD_Msk \ - (0x40000UL) /*!< CAN_MO MOCTR: SETRXUPD (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETNEWDAT_Pos \ - (19UL) /*!< CAN_MO MOCTR: SETNEWDAT (Bit 19) */ -#define CAN_MO_MOCTR_SETNEWDAT_Msk \ - (0x80000UL) /*!< CAN_MO MOCTR: SETNEWDAT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETMSGLST_Pos \ - (20UL) /*!< CAN_MO MOCTR: SETMSGLST (Bit 20) */ -#define CAN_MO_MOCTR_SETMSGLST_Msk \ - (0x100000UL) /*!< CAN_MO MOCTR: SETMSGLST (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETMSGVAL_Pos \ - (21UL) /*!< CAN_MO MOCTR: SETMSGVAL (Bit 21) */ -#define CAN_MO_MOCTR_SETMSGVAL_Msk \ - (0x200000UL) /*!< CAN_MO MOCTR: SETMSGVAL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETRTSEL_Pos \ - (22UL) /*!< CAN_MO MOCTR: SETRTSEL (Bit 22) */ -#define CAN_MO_MOCTR_SETRTSEL_Msk \ - (0x400000UL) /*!< CAN_MO MOCTR: SETRTSEL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETRXEN_Pos \ - (23UL) /*!< CAN_MO MOCTR: SETRXEN (Bit 23) */ -#define CAN_MO_MOCTR_SETRXEN_Msk \ - (0x800000UL) /*!< CAN_MO MOCTR: SETRXEN (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETTXRQ_Pos \ - (24UL) /*!< CAN_MO MOCTR: SETTXRQ (Bit 24) */ -#define CAN_MO_MOCTR_SETTXRQ_Msk \ - (0x1000000UL) /*!< CAN_MO MOCTR: SETTXRQ (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETTXEN0_Pos \ - (25UL) /*!< CAN_MO MOCTR: SETTXEN0 (Bit 25) */ -#define CAN_MO_MOCTR_SETTXEN0_Msk \ - (0x2000000UL) /*!< CAN_MO MOCTR: SETTXEN0 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETTXEN1_Pos \ - (26UL) /*!< CAN_MO MOCTR: SETTXEN1 (Bit 26) */ -#define CAN_MO_MOCTR_SETTXEN1_Msk \ - (0x4000000UL) /*!< CAN_MO MOCTR: SETTXEN1 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOCTR_SETDIR_Pos \ - (27UL) /*!< CAN_MO MOCTR: SETDIR (Bit 27) */ -#define CAN_MO_MOCTR_SETDIR_Msk \ - (0x8000000UL) /*!< CAN_MO MOCTR: SETDIR (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CAN_MO_MOSTAT ------------------------------- */ -#define CAN_MO_MOSTAT_RXPND_Pos \ - (0UL) /*!< CAN_MO MOSTAT: RXPND (Bit 0) */ -#define CAN_MO_MOSTAT_RXPND_Msk \ - (0x1UL) /*!< CAN_MO MOSTAT: RXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_TXPND_Pos \ - (1UL) /*!< CAN_MO MOSTAT: TXPND (Bit 1) */ -#define CAN_MO_MOSTAT_TXPND_Msk \ - (0x2UL) /*!< CAN_MO MOSTAT: TXPND (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_RXUPD_Pos \ - (2UL) /*!< CAN_MO MOSTAT: RXUPD (Bit 2) */ -#define CAN_MO_MOSTAT_RXUPD_Msk \ - (0x4UL) /*!< CAN_MO MOSTAT: RXUPD (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_NEWDAT_Pos \ - (3UL) /*!< CAN_MO MOSTAT: NEWDAT (Bit 3) */ -#define CAN_MO_MOSTAT_NEWDAT_Msk \ - (0x8UL) /*!< CAN_MO MOSTAT: NEWDAT (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_MSGLST_Pos \ - (4UL) /*!< CAN_MO MOSTAT: MSGLST (Bit 4) */ -#define CAN_MO_MOSTAT_MSGLST_Msk \ - (0x10UL) /*!< CAN_MO MOSTAT: MSGLST (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_MSGVAL_Pos \ - (5UL) /*!< CAN_MO MOSTAT: MSGVAL (Bit 5) */ -#define CAN_MO_MOSTAT_MSGVAL_Msk \ - (0x20UL) /*!< CAN_MO MOSTAT: MSGVAL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_RTSEL_Pos \ - (6UL) /*!< CAN_MO MOSTAT: RTSEL (Bit 6) */ -#define CAN_MO_MOSTAT_RTSEL_Msk \ - (0x40UL) /*!< CAN_MO MOSTAT: RTSEL (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_RXEN_Pos \ - (7UL) /*!< CAN_MO MOSTAT: RXEN (Bit 7) */ -#define CAN_MO_MOSTAT_RXEN_Msk \ - (0x80UL) /*!< CAN_MO MOSTAT: RXEN (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_TXRQ_Pos \ - (8UL) /*!< CAN_MO MOSTAT: TXRQ (Bit 8) */ -#define CAN_MO_MOSTAT_TXRQ_Msk \ - (0x100UL) /*!< CAN_MO MOSTAT: TXRQ (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_TXEN0_Pos \ - (9UL) /*!< CAN_MO MOSTAT: TXEN0 (Bit 9) */ -#define CAN_MO_MOSTAT_TXEN0_Msk \ - (0x200UL) /*!< CAN_MO MOSTAT: TXEN0 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_TXEN1_Pos \ - (10UL) /*!< CAN_MO MOSTAT: TXEN1 (Bit 10) */ -#define CAN_MO_MOSTAT_TXEN1_Msk \ - (0x400UL) /*!< CAN_MO MOSTAT: TXEN1 (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_DIR_Pos \ - (11UL) /*!< CAN_MO MOSTAT: DIR (Bit 11) */ -#define CAN_MO_MOSTAT_DIR_Msk \ - (0x800UL) /*!< CAN_MO MOSTAT: DIR (Bitfield-Mask: 0x01) */ -#define CAN_MO_MOSTAT_LIST_Pos \ - (12UL) /*!< CAN_MO MOSTAT: LIST (Bit 12) */ -#define CAN_MO_MOSTAT_LIST_Msk \ - (0xf000UL) /*!< CAN_MO MOSTAT: LIST (Bitfield-Mask: 0x0f) */ -#define CAN_MO_MOSTAT_PPREV_Pos \ - (16UL) /*!< CAN_MO MOSTAT: PPREV (Bit 16) */ -#define CAN_MO_MOSTAT_PPREV_Msk \ - (0xff0000UL) /*!< CAN_MO MOSTAT: PPREV (Bitfield-Mask: 0xff) */ -#define CAN_MO_MOSTAT_PNEXT_Pos \ - (24UL) /*!< CAN_MO MOSTAT: PNEXT (Bit 24) */ -#define CAN_MO_MOSTAT_PNEXT_Msk \ - (0xff000000UL) /*!< CAN_MO MOSTAT: PNEXT (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'VADC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- VADC_CLC ---------------------------------- */ -#define VADC_CLC_DISR_Pos (0UL) /*!< VADC CLC: DISR (Bit 0) */ -#define VADC_CLC_DISR_Msk \ - (0x1UL) /*!< VADC CLC: DISR (Bitfield-Mask: 0x01) */ -#define VADC_CLC_DISS_Pos (1UL) /*!< VADC CLC: DISS (Bit 1) */ -#define VADC_CLC_DISS_Msk \ - (0x2UL) /*!< VADC CLC: DISS (Bitfield-Mask: 0x01) */ -#define VADC_CLC_EDIS_Pos (3UL) /*!< VADC CLC: EDIS (Bit 3) */ -#define VADC_CLC_EDIS_Msk \ - (0x8UL) /*!< VADC CLC: EDIS (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- VADC_ID ---------------------------------- */ -#define VADC_ID_MOD_REV_Pos \ - (0UL) /*!< VADC ID: MOD_REV (Bit 0) */ -#define VADC_ID_MOD_REV_Msk \ - (0xffUL) /*!< VADC ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define VADC_ID_MOD_TYPE_Pos \ - (8UL) /*!< VADC ID: MOD_TYPE (Bit 8) */ -#define VADC_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< VADC ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define VADC_ID_MOD_NUMBER_Pos \ - (16UL) /*!< VADC ID: MOD_NUMBER (Bit 16) */ -#define VADC_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< VADC ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ---------------------------------- VADC_OCS ---------------------------------- */ -#define VADC_OCS_TGS_Pos (0UL) /*!< VADC OCS: TGS (Bit 0) */ -#define VADC_OCS_TGS_Msk (0x3UL) /*!< VADC OCS: TGS (Bitfield-Mask: 0x03) */ -#define VADC_OCS_TGB_Pos (2UL) /*!< VADC OCS: TGB (Bit 2) */ -#define VADC_OCS_TGB_Msk (0x4UL) /*!< VADC OCS: TGB (Bitfield-Mask: 0x01) */ -#define VADC_OCS_TG_P_Pos (3UL) /*!< VADC OCS: TG_P (Bit 3) */ -#define VADC_OCS_TG_P_Msk \ - (0x8UL) /*!< VADC OCS: TG_P (Bitfield-Mask: 0x01) */ -#define VADC_OCS_SUS_Pos (24UL) /*!< VADC OCS: SUS (Bit 24) */ -#define VADC_OCS_SUS_Msk \ - (0xf000000UL) /*!< VADC OCS: SUS (Bitfield-Mask: 0x0f) */ -#define VADC_OCS_SUS_P_Pos \ - (28UL) /*!< VADC OCS: SUS_P (Bit 28) */ -#define VADC_OCS_SUS_P_Msk \ - (0x10000000UL) /*!< VADC OCS: SUS_P (Bitfield-Mask: 0x01) */ -#define VADC_OCS_SUSSTA_Pos \ - (29UL) /*!< VADC OCS: SUSSTA (Bit 29) */ -#define VADC_OCS_SUSSTA_Msk \ - (0x20000000UL) /*!< VADC OCS: SUSSTA (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBCFG -------------------------------- */ -#define VADC_GLOBCFG_DIVA_Pos \ - (0UL) /*!< VADC GLOBCFG: DIVA (Bit 0) */ -#define VADC_GLOBCFG_DIVA_Msk \ - (0x1fUL) /*!< VADC GLOBCFG: DIVA (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBCFG_DCMSB_Pos \ - (7UL) /*!< VADC GLOBCFG: DCMSB (Bit 7) */ -#define VADC_GLOBCFG_DCMSB_Msk \ - (0x80UL) /*!< VADC GLOBCFG: DCMSB (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DIVD_Pos \ - (8UL) /*!< VADC GLOBCFG: DIVD (Bit 8) */ -#define VADC_GLOBCFG_DIVD_Msk \ - (0x300UL) /*!< VADC GLOBCFG: DIVD (Bitfield-Mask: 0x03) */ -#define VADC_GLOBCFG_DIVWC_Pos \ - (15UL) /*!< VADC GLOBCFG: DIVWC (Bit 15) */ -#define VADC_GLOBCFG_DIVWC_Msk \ - (0x8000UL) /*!< VADC GLOBCFG: DIVWC (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DPCAL0_Pos \ - (16UL) /*!< VADC GLOBCFG: DPCAL0 (Bit 16) */ -#define VADC_GLOBCFG_DPCAL0_Msk \ - (0x10000UL) /*!< VADC GLOBCFG: DPCAL0 (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DPCAL1_Pos \ - (17UL) /*!< VADC GLOBCFG: DPCAL1 (Bit 17) */ -#define VADC_GLOBCFG_DPCAL1_Msk \ - (0x20000UL) /*!< VADC GLOBCFG: DPCAL1 (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DPCAL2_Pos \ - (18UL) /*!< VADC GLOBCFG: DPCAL2 (Bit 18) */ -#define VADC_GLOBCFG_DPCAL2_Msk \ - (0x40000UL) /*!< VADC GLOBCFG: DPCAL2 (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_DPCAL3_Pos \ - (19UL) /*!< VADC GLOBCFG: DPCAL3 (Bit 19) */ -#define VADC_GLOBCFG_DPCAL3_Msk \ - (0x80000UL) /*!< VADC GLOBCFG: DPCAL3 (Bitfield-Mask: 0x01) */ -#define VADC_GLOBCFG_SUCAL_Pos \ - (31UL) /*!< VADC GLOBCFG: SUCAL (Bit 31) */ -#define VADC_GLOBCFG_SUCAL_Msk \ - (0x80000000UL) /*!< VADC GLOBCFG: SUCAL (Bitfield-Mask: 0x01) */ - -/* ------------------------------- VADC_GLOBICLASS ------------------------------ */ -#define VADC_GLOBICLASS_STCS_Pos \ - (0UL) /*!< VADC GLOBICLASS: STCS (Bit 0) */ -#define VADC_GLOBICLASS_STCS_Msk \ - (0x1fUL) /*!< VADC GLOBICLASS: STCS (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBICLASS_CMS_Pos \ - (8UL) /*!< VADC GLOBICLASS: CMS (Bit 8) */ -#define VADC_GLOBICLASS_CMS_Msk \ - (0x700UL) /*!< VADC GLOBICLASS: CMS (Bitfield-Mask: 0x07) */ -#define VADC_GLOBICLASS_STCE_Pos \ - (16UL) /*!< VADC GLOBICLASS: STCE (Bit 16) */ -#define VADC_GLOBICLASS_STCE_Msk \ - (0x1f0000UL) /*!< VADC GLOBICLASS: STCE (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBICLASS_CME_Pos \ - (24UL) /*!< VADC GLOBICLASS: CME (Bit 24) */ -#define VADC_GLOBICLASS_CME_Msk \ - (0x7000000UL) /*!< VADC GLOBICLASS: CME (Bitfield-Mask: 0x07) */ - -/* ------------------------------- VADC_GLOBBOUND ------------------------------- */ -#define VADC_GLOBBOUND_BOUNDARY0_Pos \ - (0UL) /*!< VADC GLOBBOUND: BOUNDARY0 (Bit 0) */ -#define VADC_GLOBBOUND_BOUNDARY0_Msk \ - (0xfffUL) /*!< VADC GLOBBOUND: BOUNDARY0 (Bitfield-Mask: 0xfff) */ -#define VADC_GLOBBOUND_BOUNDARY1_Pos \ - (16UL) /*!< VADC GLOBBOUND: BOUNDARY1 (Bit 16) */ -#define VADC_GLOBBOUND_BOUNDARY1_Msk \ - (0xfff0000UL) /*!< VADC GLOBBOUND: BOUNDARY1 (Bitfield-Mask: 0xfff) */ - -/* ------------------------------- VADC_GLOBEFLAG ------------------------------- */ -#define VADC_GLOBEFLAG_SEVGLB_Pos \ - (0UL) /*!< VADC GLOBEFLAG: SEVGLB (Bit 0) */ -#define VADC_GLOBEFLAG_SEVGLB_Msk \ - (0x1UL) /*!< VADC GLOBEFLAG: SEVGLB (Bitfield-Mask: 0x01) */ -#define VADC_GLOBEFLAG_REVGLB_Pos \ - (8UL) /*!< VADC GLOBEFLAG: REVGLB (Bit 8) */ -#define VADC_GLOBEFLAG_REVGLB_Msk \ - (0x100UL) /*!< VADC GLOBEFLAG: REVGLB (Bitfield-Mask: 0x01) */ -#define VADC_GLOBEFLAG_SEVGLBCLR_Pos \ - (16UL) /*!< VADC GLOBEFLAG: SEVGLBCLR (Bit 16) */ -#define VADC_GLOBEFLAG_SEVGLBCLR_Msk \ - (0x10000UL) /*!< VADC GLOBEFLAG: SEVGLBCLR (Bitfield-Mask: 0x01) */ -#define VADC_GLOBEFLAG_REVGLBCLR_Pos \ - (24UL) /*!< VADC GLOBEFLAG: REVGLBCLR (Bit 24) */ -#define VADC_GLOBEFLAG_REVGLBCLR_Msk \ - (0x1000000UL) /*!< VADC GLOBEFLAG: REVGLBCLR (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBEVNP ------------------------------- */ -#define VADC_GLOBEVNP_SEV0NP_Pos \ - (0UL) /*!< VADC GLOBEVNP: SEV0NP (Bit 0) */ -#define VADC_GLOBEVNP_SEV0NP_Msk \ - (0xfUL) /*!< VADC GLOBEVNP: SEV0NP (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBEVNP_REV0NP_Pos \ - (16UL) /*!< VADC GLOBEVNP: REV0NP (Bit 16) */ -#define VADC_GLOBEVNP_REV0NP_Msk \ - (0xf0000UL) /*!< VADC GLOBEVNP: REV0NP (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- VADC_GLOBTF -------------------------------- */ -#define VADC_GLOBTF_CDGR_Pos \ - (4UL) /*!< VADC GLOBTF: CDGR (Bit 4) */ -#define VADC_GLOBTF_CDGR_Msk \ - (0xf0UL) /*!< VADC GLOBTF: CDGR (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBTF_CDEN_Pos \ - (8UL) /*!< VADC GLOBTF: CDEN (Bit 8) */ -#define VADC_GLOBTF_CDEN_Msk \ - (0x100UL) /*!< VADC GLOBTF: CDEN (Bitfield-Mask: 0x01) */ -#define VADC_GLOBTF_CDSEL_Pos \ - (9UL) /*!< VADC GLOBTF: CDSEL (Bit 9) */ -#define VADC_GLOBTF_CDSEL_Msk \ - (0x600UL) /*!< VADC GLOBTF: CDSEL (Bitfield-Mask: 0x03) */ -#define VADC_GLOBTF_CDWC_Pos \ - (15UL) /*!< VADC GLOBTF: CDWC (Bit 15) */ -#define VADC_GLOBTF_CDWC_Msk \ - (0x8000UL) /*!< VADC GLOBTF: CDWC (Bitfield-Mask: 0x01) */ -#define VADC_GLOBTF_PDD_Pos \ - (16UL) /*!< VADC GLOBTF: PDD (Bit 16) */ -#define VADC_GLOBTF_PDD_Msk \ - (0x10000UL) /*!< VADC GLOBTF: PDD (Bitfield-Mask: 0x01) */ -#define VADC_GLOBTF_MDWC_Pos \ - (23UL) /*!< VADC GLOBTF: MDWC (Bit 23) */ -#define VADC_GLOBTF_MDWC_Msk \ - (0x800000UL) /*!< VADC GLOBTF: MDWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_BRSSEL -------------------------------- */ -#define VADC_BRSSEL_CHSELG0_Pos \ - (0UL) /*!< VADC BRSSEL: CHSELG0 (Bit 0) */ -#define VADC_BRSSEL_CHSELG0_Msk \ - (0x1UL) /*!< VADC BRSSEL: CHSELG0 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG1_Pos \ - (1UL) /*!< VADC BRSSEL: CHSELG1 (Bit 1) */ -#define VADC_BRSSEL_CHSELG1_Msk \ - (0x2UL) /*!< VADC BRSSEL: CHSELG1 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG2_Pos \ - (2UL) /*!< VADC BRSSEL: CHSELG2 (Bit 2) */ -#define VADC_BRSSEL_CHSELG2_Msk \ - (0x4UL) /*!< VADC BRSSEL: CHSELG2 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG3_Pos \ - (3UL) /*!< VADC BRSSEL: CHSELG3 (Bit 3) */ -#define VADC_BRSSEL_CHSELG3_Msk \ - (0x8UL) /*!< VADC BRSSEL: CHSELG3 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG4_Pos \ - (4UL) /*!< VADC BRSSEL: CHSELG4 (Bit 4) */ -#define VADC_BRSSEL_CHSELG4_Msk \ - (0x10UL) /*!< VADC BRSSEL: CHSELG4 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG5_Pos \ - (5UL) /*!< VADC BRSSEL: CHSELG5 (Bit 5) */ -#define VADC_BRSSEL_CHSELG5_Msk \ - (0x20UL) /*!< VADC BRSSEL: CHSELG5 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG6_Pos \ - (6UL) /*!< VADC BRSSEL: CHSELG6 (Bit 6) */ -#define VADC_BRSSEL_CHSELG6_Msk \ - (0x40UL) /*!< VADC BRSSEL: CHSELG6 (Bitfield-Mask: 0x01) */ -#define VADC_BRSSEL_CHSELG7_Pos \ - (7UL) /*!< VADC BRSSEL: CHSELG7 (Bit 7) */ -#define VADC_BRSSEL_CHSELG7_Msk \ - (0x80UL) /*!< VADC BRSSEL: CHSELG7 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_BRSPND -------------------------------- */ -#define VADC_BRSPND_CHPNDG0_Pos \ - (0UL) /*!< VADC BRSPND: CHPNDG0 (Bit 0) */ -#define VADC_BRSPND_CHPNDG0_Msk \ - (0x1UL) /*!< VADC BRSPND: CHPNDG0 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG1_Pos \ - (1UL) /*!< VADC BRSPND: CHPNDG1 (Bit 1) */ -#define VADC_BRSPND_CHPNDG1_Msk \ - (0x2UL) /*!< VADC BRSPND: CHPNDG1 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG2_Pos \ - (2UL) /*!< VADC BRSPND: CHPNDG2 (Bit 2) */ -#define VADC_BRSPND_CHPNDG2_Msk \ - (0x4UL) /*!< VADC BRSPND: CHPNDG2 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG3_Pos \ - (3UL) /*!< VADC BRSPND: CHPNDG3 (Bit 3) */ -#define VADC_BRSPND_CHPNDG3_Msk \ - (0x8UL) /*!< VADC BRSPND: CHPNDG3 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG4_Pos \ - (4UL) /*!< VADC BRSPND: CHPNDG4 (Bit 4) */ -#define VADC_BRSPND_CHPNDG4_Msk \ - (0x10UL) /*!< VADC BRSPND: CHPNDG4 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG5_Pos \ - (5UL) /*!< VADC BRSPND: CHPNDG5 (Bit 5) */ -#define VADC_BRSPND_CHPNDG5_Msk \ - (0x20UL) /*!< VADC BRSPND: CHPNDG5 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG6_Pos \ - (6UL) /*!< VADC BRSPND: CHPNDG6 (Bit 6) */ -#define VADC_BRSPND_CHPNDG6_Msk \ - (0x40UL) /*!< VADC BRSPND: CHPNDG6 (Bitfield-Mask: 0x01) */ -#define VADC_BRSPND_CHPNDG7_Pos \ - (7UL) /*!< VADC BRSPND: CHPNDG7 (Bit 7) */ -#define VADC_BRSPND_CHPNDG7_Msk \ - (0x80UL) /*!< VADC BRSPND: CHPNDG7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_BRSCTRL -------------------------------- */ -#define VADC_BRSCTRL_SRCRESREG_Pos \ - (0UL) /*!< VADC BRSCTRL: SRCRESREG (Bit 0) */ -#define VADC_BRSCTRL_SRCRESREG_Msk \ - (0xfUL) /*!< VADC BRSCTRL: SRCRESREG (Bitfield-Mask: 0x0f) */ -#define VADC_BRSCTRL_XTSEL_Pos \ - (8UL) /*!< VADC BRSCTRL: XTSEL (Bit 8) */ -#define VADC_BRSCTRL_XTSEL_Msk \ - (0xf00UL) /*!< VADC BRSCTRL: XTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_BRSCTRL_XTLVL_Pos \ - (12UL) /*!< VADC BRSCTRL: XTLVL (Bit 12) */ -#define VADC_BRSCTRL_XTLVL_Msk \ - (0x1000UL) /*!< VADC BRSCTRL: XTLVL (Bitfield-Mask: 0x01) */ -#define VADC_BRSCTRL_XTMODE_Pos \ - (13UL) /*!< VADC BRSCTRL: XTMODE (Bit 13) */ -#define VADC_BRSCTRL_XTMODE_Msk \ - (0x6000UL) /*!< VADC BRSCTRL: XTMODE (Bitfield-Mask: 0x03) */ -#define VADC_BRSCTRL_XTWC_Pos \ - (15UL) /*!< VADC BRSCTRL: XTWC (Bit 15) */ -#define VADC_BRSCTRL_XTWC_Msk \ - (0x8000UL) /*!< VADC BRSCTRL: XTWC (Bitfield-Mask: 0x01) */ -#define VADC_BRSCTRL_GTSEL_Pos \ - (16UL) /*!< VADC BRSCTRL: GTSEL (Bit 16) */ -#define VADC_BRSCTRL_GTSEL_Msk \ - (0xf0000UL) /*!< VADC BRSCTRL: GTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_BRSCTRL_GTLVL_Pos \ - (20UL) /*!< VADC BRSCTRL: GTLVL (Bit 20) */ -#define VADC_BRSCTRL_GTLVL_Msk \ - (0x100000UL) /*!< VADC BRSCTRL: GTLVL (Bitfield-Mask: 0x01) */ -#define VADC_BRSCTRL_GTWC_Pos \ - (23UL) /*!< VADC BRSCTRL: GTWC (Bit 23) */ -#define VADC_BRSCTRL_GTWC_Msk \ - (0x800000UL) /*!< VADC BRSCTRL: GTWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_BRSMR --------------------------------- */ -#define VADC_BRSMR_ENGT_Pos \ - (0UL) /*!< VADC BRSMR: ENGT (Bit 0) */ -#define VADC_BRSMR_ENGT_Msk \ - (0x3UL) /*!< VADC BRSMR: ENGT (Bitfield-Mask: 0x03) */ -#define VADC_BRSMR_ENTR_Pos \ - (2UL) /*!< VADC BRSMR: ENTR (Bit 2) */ -#define VADC_BRSMR_ENTR_Msk \ - (0x4UL) /*!< VADC BRSMR: ENTR (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_ENSI_Pos \ - (3UL) /*!< VADC BRSMR: ENSI (Bit 3) */ -#define VADC_BRSMR_ENSI_Msk \ - (0x8UL) /*!< VADC BRSMR: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_SCAN_Pos \ - (4UL) /*!< VADC BRSMR: SCAN (Bit 4) */ -#define VADC_BRSMR_SCAN_Msk \ - (0x10UL) /*!< VADC BRSMR: SCAN (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_LDM_Pos (5UL) /*!< VADC BRSMR: LDM (Bit 5) */ -#define VADC_BRSMR_LDM_Msk \ - (0x20UL) /*!< VADC BRSMR: LDM (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_REQGT_Pos \ - (7UL) /*!< VADC BRSMR: REQGT (Bit 7) */ -#define VADC_BRSMR_REQGT_Msk \ - (0x80UL) /*!< VADC BRSMR: REQGT (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_CLRPND_Pos \ - (8UL) /*!< VADC BRSMR: CLRPND (Bit 8) */ -#define VADC_BRSMR_CLRPND_Msk \ - (0x100UL) /*!< VADC BRSMR: CLRPND (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_LDEV_Pos \ - (9UL) /*!< VADC BRSMR: LDEV (Bit 9) */ -#define VADC_BRSMR_LDEV_Msk \ - (0x200UL) /*!< VADC BRSMR: LDEV (Bitfield-Mask: 0x01) */ -#define VADC_BRSMR_RPTDIS_Pos \ - (16UL) /*!< VADC BRSMR: RPTDIS (Bit 16) */ -#define VADC_BRSMR_RPTDIS_Msk \ - (0x10000UL) /*!< VADC BRSMR: RPTDIS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBRCR -------------------------------- */ -#define VADC_GLOBRCR_DRCTR_Pos \ - (16UL) /*!< VADC GLOBRCR: DRCTR (Bit 16) */ -#define VADC_GLOBRCR_DRCTR_Msk \ - (0xf0000UL) /*!< VADC GLOBRCR: DRCTR (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBRCR_WFR_Pos \ - (24UL) /*!< VADC GLOBRCR: WFR (Bit 24) */ -#define VADC_GLOBRCR_WFR_Msk \ - (0x1000000UL) /*!< VADC GLOBRCR: WFR (Bitfield-Mask: 0x01) */ -#define VADC_GLOBRCR_SRGEN_Pos \ - (31UL) /*!< VADC GLOBRCR: SRGEN (Bit 31) */ -#define VADC_GLOBRCR_SRGEN_Msk \ - (0x80000000UL) /*!< VADC GLOBRCR: SRGEN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBRES -------------------------------- */ -#define VADC_GLOBRES_RESULT_Pos \ - (0UL) /*!< VADC GLOBRES: RESULT (Bit 0) */ -#define VADC_GLOBRES_RESULT_Msk \ - (0xffffUL) /*!< VADC GLOBRES: RESULT (Bitfield-Mask: 0xffff) */ -#define VADC_GLOBRES_GNR_Pos \ - (16UL) /*!< VADC GLOBRES: GNR (Bit 16) */ -#define VADC_GLOBRES_GNR_Msk \ - (0xf0000UL) /*!< VADC GLOBRES: GNR (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBRES_CHNR_Pos \ - (20UL) /*!< VADC GLOBRES: CHNR (Bit 20) */ -#define VADC_GLOBRES_CHNR_Msk \ - (0x1f00000UL) /*!< VADC GLOBRES: CHNR (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBRES_EMUX_Pos \ - (25UL) /*!< VADC GLOBRES: EMUX (Bit 25) */ -#define VADC_GLOBRES_EMUX_Msk \ - (0xe000000UL) /*!< VADC GLOBRES: EMUX (Bitfield-Mask: 0x07) */ -#define VADC_GLOBRES_CRS_Pos \ - (28UL) /*!< VADC GLOBRES: CRS (Bit 28) */ -#define VADC_GLOBRES_CRS_Msk \ - (0x30000000UL) /*!< VADC GLOBRES: CRS (Bitfield-Mask: 0x03) */ -#define VADC_GLOBRES_FCR_Pos \ - (30UL) /*!< VADC GLOBRES: FCR (Bit 30) */ -#define VADC_GLOBRES_FCR_Msk \ - (0x40000000UL) /*!< VADC GLOBRES: FCR (Bitfield-Mask: 0x01) */ -#define VADC_GLOBRES_VF_Pos \ - (31UL) /*!< VADC GLOBRES: VF (Bit 31) */ -#define VADC_GLOBRES_VF_Msk \ - (0x80000000UL) /*!< VADC GLOBRES: VF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_GLOBRESD ------------------------------- */ -#define VADC_GLOBRESD_RESULT_Pos \ - (0UL) /*!< VADC GLOBRESD: RESULT (Bit 0) */ -#define VADC_GLOBRESD_RESULT_Msk \ - (0xffffUL) /*!< VADC GLOBRESD: RESULT (Bitfield-Mask: 0xffff) */ -#define VADC_GLOBRESD_GNR_Pos \ - (16UL) /*!< VADC GLOBRESD: GNR (Bit 16) */ -#define VADC_GLOBRESD_GNR_Msk \ - (0xf0000UL) /*!< VADC GLOBRESD: GNR (Bitfield-Mask: 0x0f) */ -#define VADC_GLOBRESD_CHNR_Pos \ - (20UL) /*!< VADC GLOBRESD: CHNR (Bit 20) */ -#define VADC_GLOBRESD_CHNR_Msk \ - (0x1f00000UL) /*!< VADC GLOBRESD: CHNR (Bitfield-Mask: 0x1f) */ -#define VADC_GLOBRESD_EMUX_Pos \ - (25UL) /*!< VADC GLOBRESD: EMUX (Bit 25) */ -#define VADC_GLOBRESD_EMUX_Msk \ - (0xe000000UL) /*!< VADC GLOBRESD: EMUX (Bitfield-Mask: 0x07) */ -#define VADC_GLOBRESD_CRS_Pos \ - (28UL) /*!< VADC GLOBRESD: CRS (Bit 28) */ -#define VADC_GLOBRESD_CRS_Msk \ - (0x30000000UL) /*!< VADC GLOBRESD: CRS (Bitfield-Mask: 0x03) */ -#define VADC_GLOBRESD_FCR_Pos \ - (30UL) /*!< VADC GLOBRESD: FCR (Bit 30) */ -#define VADC_GLOBRESD_FCR_Msk \ - (0x40000000UL) /*!< VADC GLOBRESD: FCR (Bitfield-Mask: 0x01) */ -#define VADC_GLOBRESD_VF_Pos \ - (31UL) /*!< VADC GLOBRESD: VF (Bit 31) */ -#define VADC_GLOBRESD_VF_Msk \ - (0x80000000UL) /*!< VADC GLOBRESD: VF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_EMUXSEL -------------------------------- */ -#define VADC_EMUXSEL_EMUXGRP0_Pos \ - (0UL) /*!< VADC EMUXSEL: EMUXGRP0 (Bit 0) */ -#define VADC_EMUXSEL_EMUXGRP0_Msk \ - (0xfUL) /*!< VADC EMUXSEL: EMUXGRP0 (Bitfield-Mask: 0x0f) */ -#define VADC_EMUXSEL_EMUXGRP1_Pos \ - (4UL) /*!< VADC EMUXSEL: EMUXGRP1 (Bit 4) */ -#define VADC_EMUXSEL_EMUXGRP1_Msk \ - (0xf0UL) /*!< VADC EMUXSEL: EMUXGRP1 (Bitfield-Mask: 0x0f) */ - -/* ================================================================================ */ -/* ================ Group 'VADC_G' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- VADC_G_ARBCFG ------------------------------- */ -#define VADC_G_ARBCFG_ANONC_Pos \ - (0UL) /*!< VADC_G ARBCFG: ANONC (Bit 0) */ -#define VADC_G_ARBCFG_ANONC_Msk \ - (0x3UL) /*!< VADC_G ARBCFG: ANONC (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBCFG_ARBRND_Pos \ - (4UL) /*!< VADC_G ARBCFG: ARBRND (Bit 4) */ -#define VADC_G_ARBCFG_ARBRND_Msk \ - (0x30UL) /*!< VADC_G ARBCFG: ARBRND (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBCFG_ARBM_Pos \ - (7UL) /*!< VADC_G ARBCFG: ARBM (Bit 7) */ -#define VADC_G_ARBCFG_ARBM_Msk \ - (0x80UL) /*!< VADC_G ARBCFG: ARBM (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBCFG_ANONS_Pos \ - (16UL) /*!< VADC_G ARBCFG: ANONS (Bit 16) */ -#define VADC_G_ARBCFG_ANONS_Msk \ - (0x30000UL) /*!< VADC_G ARBCFG: ANONS (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBCFG_CAL_Pos \ - (28UL) /*!< VADC_G ARBCFG: CAL (Bit 28) */ -#define VADC_G_ARBCFG_CAL_Msk \ - (0x10000000UL) /*!< VADC_G ARBCFG: CAL (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBCFG_BUSY_Pos \ - (30UL) /*!< VADC_G ARBCFG: BUSY (Bit 30) */ -#define VADC_G_ARBCFG_BUSY_Msk \ - (0x40000000UL) /*!< VADC_G ARBCFG: BUSY (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBCFG_SAMPLE_Pos \ - (31UL) /*!< VADC_G ARBCFG: SAMPLE (Bit 31) */ -#define VADC_G_ARBCFG_SAMPLE_Msk \ - (0x80000000UL) /*!< VADC_G ARBCFG: SAMPLE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ARBPR -------------------------------- */ -#define VADC_G_ARBPR_PRIO0_Pos \ - (0UL) /*!< VADC_G ARBPR: PRIO0 (Bit 0) */ -#define VADC_G_ARBPR_PRIO0_Msk \ - (0x3UL) /*!< VADC_G ARBPR: PRIO0 (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBPR_CSM0_Pos \ - (3UL) /*!< VADC_G ARBPR: CSM0 (Bit 3) */ -#define VADC_G_ARBPR_CSM0_Msk \ - (0x8UL) /*!< VADC_G ARBPR: CSM0 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_PRIO1_Pos \ - (4UL) /*!< VADC_G ARBPR: PRIO1 (Bit 4) */ -#define VADC_G_ARBPR_PRIO1_Msk \ - (0x30UL) /*!< VADC_G ARBPR: PRIO1 (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBPR_CSM1_Pos \ - (7UL) /*!< VADC_G ARBPR: CSM1 (Bit 7) */ -#define VADC_G_ARBPR_CSM1_Msk \ - (0x80UL) /*!< VADC_G ARBPR: CSM1 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_PRIO2_Pos \ - (8UL) /*!< VADC_G ARBPR: PRIO2 (Bit 8) */ -#define VADC_G_ARBPR_PRIO2_Msk \ - (0x300UL) /*!< VADC_G ARBPR: PRIO2 (Bitfield-Mask: 0x03) */ -#define VADC_G_ARBPR_CSM2_Pos \ - (11UL) /*!< VADC_G ARBPR: CSM2 (Bit 11) */ -#define VADC_G_ARBPR_CSM2_Msk \ - (0x800UL) /*!< VADC_G ARBPR: CSM2 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_ASEN0_Pos \ - (24UL) /*!< VADC_G ARBPR: ASEN0 (Bit 24) */ -#define VADC_G_ARBPR_ASEN0_Msk \ - (0x1000000UL) /*!< VADC_G ARBPR: ASEN0 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_ASEN1_Pos \ - (25UL) /*!< VADC_G ARBPR: ASEN1 (Bit 25) */ -#define VADC_G_ARBPR_ASEN1_Msk \ - (0x2000000UL) /*!< VADC_G ARBPR: ASEN1 (Bitfield-Mask: 0x01) */ -#define VADC_G_ARBPR_ASEN2_Pos \ - (26UL) /*!< VADC_G ARBPR: ASEN2 (Bit 26) */ -#define VADC_G_ARBPR_ASEN2_Msk \ - (0x4000000UL) /*!< VADC_G ARBPR: ASEN2 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CHASS -------------------------------- */ -#define VADC_G_CHASS_ASSCH0_Pos \ - (0UL) /*!< VADC_G CHASS: ASSCH0 (Bit 0) */ -#define VADC_G_CHASS_ASSCH0_Msk \ - (0x1UL) /*!< VADC_G CHASS: ASSCH0 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH1_Pos \ - (1UL) /*!< VADC_G CHASS: ASSCH1 (Bit 1) */ -#define VADC_G_CHASS_ASSCH1_Msk \ - (0x2UL) /*!< VADC_G CHASS: ASSCH1 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH2_Pos \ - (2UL) /*!< VADC_G CHASS: ASSCH2 (Bit 2) */ -#define VADC_G_CHASS_ASSCH2_Msk \ - (0x4UL) /*!< VADC_G CHASS: ASSCH2 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH3_Pos \ - (3UL) /*!< VADC_G CHASS: ASSCH3 (Bit 3) */ -#define VADC_G_CHASS_ASSCH3_Msk \ - (0x8UL) /*!< VADC_G CHASS: ASSCH3 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH4_Pos \ - (4UL) /*!< VADC_G CHASS: ASSCH4 (Bit 4) */ -#define VADC_G_CHASS_ASSCH4_Msk \ - (0x10UL) /*!< VADC_G CHASS: ASSCH4 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH5_Pos \ - (5UL) /*!< VADC_G CHASS: ASSCH5 (Bit 5) */ -#define VADC_G_CHASS_ASSCH5_Msk \ - (0x20UL) /*!< VADC_G CHASS: ASSCH5 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH6_Pos \ - (6UL) /*!< VADC_G CHASS: ASSCH6 (Bit 6) */ -#define VADC_G_CHASS_ASSCH6_Msk \ - (0x40UL) /*!< VADC_G CHASS: ASSCH6 (Bitfield-Mask: 0x01) */ -#define VADC_G_CHASS_ASSCH7_Pos \ - (7UL) /*!< VADC_G CHASS: ASSCH7 (Bit 7) */ -#define VADC_G_CHASS_ASSCH7_Msk \ - (0x80UL) /*!< VADC_G CHASS: ASSCH7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ICLASS ------------------------------- */ -#define VADC_G_ICLASS_STCS_Pos \ - (0UL) /*!< VADC_G ICLASS: STCS (Bit 0) */ -#define VADC_G_ICLASS_STCS_Msk \ - (0x1fUL) /*!< VADC_G ICLASS: STCS (Bitfield-Mask: 0x1f) */ -#define VADC_G_ICLASS_CMS_Pos \ - (8UL) /*!< VADC_G ICLASS: CMS (Bit 8) */ -#define VADC_G_ICLASS_CMS_Msk \ - (0x700UL) /*!< VADC_G ICLASS: CMS (Bitfield-Mask: 0x07) */ -#define VADC_G_ICLASS_STCE_Pos \ - (16UL) /*!< VADC_G ICLASS: STCE (Bit 16) */ -#define VADC_G_ICLASS_STCE_Msk \ - (0x1f0000UL) /*!< VADC_G ICLASS: STCE (Bitfield-Mask: 0x1f) */ -#define VADC_G_ICLASS_CME_Pos \ - (24UL) /*!< VADC_G ICLASS: CME (Bit 24) */ -#define VADC_G_ICLASS_CME_Msk \ - (0x7000000UL) /*!< VADC_G ICLASS: CME (Bitfield-Mask: 0x07) */ - -/* -------------------------------- VADC_G_ALIAS -------------------------------- */ -#define VADC_G_ALIAS_ALIAS0_Pos \ - (0UL) /*!< VADC_G ALIAS: ALIAS0 (Bit 0) */ -#define VADC_G_ALIAS_ALIAS0_Msk \ - (0x1fUL) /*!< VADC_G ALIAS: ALIAS0 (Bitfield-Mask: 0x1f) */ -#define VADC_G_ALIAS_ALIAS1_Pos \ - (8UL) /*!< VADC_G ALIAS: ALIAS1 (Bit 8) */ -#define VADC_G_ALIAS_ALIAS1_Msk \ - (0x1f00UL) /*!< VADC_G ALIAS: ALIAS1 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- VADC_G_BOUND -------------------------------- */ -#define VADC_G_BOUND_BOUNDARY0_Pos \ - (0UL) /*!< VADC_G BOUND: BOUNDARY0 (Bit 0) */ -#define VADC_G_BOUND_BOUNDARY0_Msk \ - (0xfffUL) /*!< VADC_G BOUND: BOUNDARY0 (Bitfield-Mask: 0xfff) */ -#define VADC_G_BOUND_BOUNDARY1_Pos \ - (16UL) /*!< VADC_G BOUND: BOUNDARY1 (Bit 16) */ -#define VADC_G_BOUND_BOUNDARY1_Msk \ - (0xfff0000UL) /*!< VADC_G BOUND: BOUNDARY1 (Bitfield-Mask: 0xfff) */ - -/* -------------------------------- VADC_G_SYNCTR ------------------------------- */ -#define VADC_G_SYNCTR_STSEL_Pos \ - (0UL) /*!< VADC_G SYNCTR: STSEL (Bit 0) */ -#define VADC_G_SYNCTR_STSEL_Msk \ - (0x3UL) /*!< VADC_G SYNCTR: STSEL (Bitfield-Mask: 0x03) */ -#define VADC_G_SYNCTR_EVALR1_Pos \ - (4UL) /*!< VADC_G SYNCTR: EVALR1 (Bit 4) */ -#define VADC_G_SYNCTR_EVALR1_Msk \ - (0x10UL) /*!< VADC_G SYNCTR: EVALR1 (Bitfield-Mask: 0x01) */ -#define VADC_G_SYNCTR_EVALR2_Pos \ - (5UL) /*!< VADC_G SYNCTR: EVALR2 (Bit 5) */ -#define VADC_G_SYNCTR_EVALR2_Msk \ - (0x20UL) /*!< VADC_G SYNCTR: EVALR2 (Bitfield-Mask: 0x01) */ -#define VADC_G_SYNCTR_EVALR3_Pos \ - (6UL) /*!< VADC_G SYNCTR: EVALR3 (Bit 6) */ -#define VADC_G_SYNCTR_EVALR3_Msk \ - (0x40UL) /*!< VADC_G SYNCTR: EVALR3 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_BFL --------------------------------- */ -#define VADC_G_BFL_BFL0_Pos \ - (0UL) /*!< VADC_G BFL: BFL0 (Bit 0) */ -#define VADC_G_BFL_BFL0_Msk \ - (0x1UL) /*!< VADC_G BFL: BFL0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFL1_Pos \ - (1UL) /*!< VADC_G BFL: BFL1 (Bit 1) */ -#define VADC_G_BFL_BFL1_Msk \ - (0x2UL) /*!< VADC_G BFL: BFL1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFL2_Pos \ - (2UL) /*!< VADC_G BFL: BFL2 (Bit 2) */ -#define VADC_G_BFL_BFL2_Msk \ - (0x4UL) /*!< VADC_G BFL: BFL2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFL3_Pos \ - (3UL) /*!< VADC_G BFL: BFL3 (Bit 3) */ -#define VADC_G_BFL_BFL3_Msk \ - (0x8UL) /*!< VADC_G BFL: BFL3 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFA0_Pos \ - (8UL) /*!< VADC_G BFL: BFA0 (Bit 8) */ -#define VADC_G_BFL_BFA0_Msk \ - (0x100UL) /*!< VADC_G BFL: BFA0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFA1_Pos \ - (9UL) /*!< VADC_G BFL: BFA1 (Bit 9) */ -#define VADC_G_BFL_BFA1_Msk \ - (0x200UL) /*!< VADC_G BFL: BFA1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFA2_Pos \ - (10UL) /*!< VADC_G BFL: BFA2 (Bit 10) */ -#define VADC_G_BFL_BFA2_Msk \ - (0x400UL) /*!< VADC_G BFL: BFA2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFA3_Pos \ - (11UL) /*!< VADC_G BFL: BFA3 (Bit 11) */ -#define VADC_G_BFL_BFA3_Msk \ - (0x800UL) /*!< VADC_G BFL: BFA3 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFI0_Pos \ - (16UL) /*!< VADC_G BFL: BFI0 (Bit 16) */ -#define VADC_G_BFL_BFI0_Msk \ - (0x10000UL) /*!< VADC_G BFL: BFI0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFI1_Pos \ - (17UL) /*!< VADC_G BFL: BFI1 (Bit 17) */ -#define VADC_G_BFL_BFI1_Msk \ - (0x20000UL) /*!< VADC_G BFL: BFI1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFI2_Pos \ - (18UL) /*!< VADC_G BFL: BFI2 (Bit 18) */ -#define VADC_G_BFL_BFI2_Msk \ - (0x40000UL) /*!< VADC_G BFL: BFI2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFL_BFI3_Pos \ - (19UL) /*!< VADC_G BFL: BFI3 (Bit 19) */ -#define VADC_G_BFL_BFI3_Msk \ - (0x80000UL) /*!< VADC_G BFL: BFI3 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_BFLS -------------------------------- */ -#define VADC_G_BFLS_BFC0_Pos \ - (0UL) /*!< VADC_G BFLS: BFC0 (Bit 0) */ -#define VADC_G_BFLS_BFC0_Msk \ - (0x1UL) /*!< VADC_G BFLS: BFC0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFC1_Pos \ - (1UL) /*!< VADC_G BFLS: BFC1 (Bit 1) */ -#define VADC_G_BFLS_BFC1_Msk \ - (0x2UL) /*!< VADC_G BFLS: BFC1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFC2_Pos \ - (2UL) /*!< VADC_G BFLS: BFC2 (Bit 2) */ -#define VADC_G_BFLS_BFC2_Msk \ - (0x4UL) /*!< VADC_G BFLS: BFC2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFC3_Pos \ - (3UL) /*!< VADC_G BFLS: BFC3 (Bit 3) */ -#define VADC_G_BFLS_BFC3_Msk \ - (0x8UL) /*!< VADC_G BFLS: BFC3 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFS0_Pos \ - (16UL) /*!< VADC_G BFLS: BFS0 (Bit 16) */ -#define VADC_G_BFLS_BFS0_Msk \ - (0x10000UL) /*!< VADC_G BFLS: BFS0 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFS1_Pos \ - (17UL) /*!< VADC_G BFLS: BFS1 (Bit 17) */ -#define VADC_G_BFLS_BFS1_Msk \ - (0x20000UL) /*!< VADC_G BFLS: BFS1 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFS2_Pos \ - (18UL) /*!< VADC_G BFLS: BFS2 (Bit 18) */ -#define VADC_G_BFLS_BFS2_Msk \ - (0x40000UL) /*!< VADC_G BFLS: BFS2 (Bitfield-Mask: 0x01) */ -#define VADC_G_BFLS_BFS3_Pos \ - (19UL) /*!< VADC_G BFLS: BFS3 (Bit 19) */ -#define VADC_G_BFLS_BFS3_Msk \ - (0x80000UL) /*!< VADC_G BFLS: BFS3 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_BFLC -------------------------------- */ -#define VADC_G_BFLC_BFM0_Pos \ - (0UL) /*!< VADC_G BFLC: BFM0 (Bit 0) */ -#define VADC_G_BFLC_BFM0_Msk \ - (0xfUL) /*!< VADC_G BFLC: BFM0 (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLC_BFM1_Pos \ - (4UL) /*!< VADC_G BFLC: BFM1 (Bit 4) */ -#define VADC_G_BFLC_BFM1_Msk \ - (0xf0UL) /*!< VADC_G BFLC: BFM1 (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLC_BFM2_Pos \ - (8UL) /*!< VADC_G BFLC: BFM2 (Bit 8) */ -#define VADC_G_BFLC_BFM2_Msk \ - (0xf00UL) /*!< VADC_G BFLC: BFM2 (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLC_BFM3_Pos \ - (12UL) /*!< VADC_G BFLC: BFM3 (Bit 12) */ -#define VADC_G_BFLC_BFM3_Msk \ - (0xf000UL) /*!< VADC_G BFLC: BFM3 (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_BFLNP -------------------------------- */ -#define VADC_G_BFLNP_BFL0NP_Pos \ - (0UL) /*!< VADC_G BFLNP: BFL0NP (Bit 0) */ -#define VADC_G_BFLNP_BFL0NP_Msk \ - (0xfUL) /*!< VADC_G BFLNP: BFL0NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLNP_BFL1NP_Pos \ - (4UL) /*!< VADC_G BFLNP: BFL1NP (Bit 4) */ -#define VADC_G_BFLNP_BFL1NP_Msk \ - (0xf0UL) /*!< VADC_G BFLNP: BFL1NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLNP_BFL2NP_Pos \ - (8UL) /*!< VADC_G BFLNP: BFL2NP (Bit 8) */ -#define VADC_G_BFLNP_BFL2NP_Msk \ - (0xf00UL) /*!< VADC_G BFLNP: BFL2NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_BFLNP_BFL3NP_Pos \ - (12UL) /*!< VADC_G BFLNP: BFL3NP (Bit 12) */ -#define VADC_G_BFLNP_BFL3NP_Msk \ - (0xf000UL) /*!< VADC_G BFLNP: BFL3NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_QCTRL0 ------------------------------- */ -#define VADC_G_QCTRL0_SRCRESREG_Pos \ - (0UL) /*!< VADC_G QCTRL0: SRCRESREG (Bit 0) */ -#define VADC_G_QCTRL0_SRCRESREG_Msk \ - (0xfUL) /*!< VADC_G QCTRL0: SRCRESREG (Bitfield-Mask: 0x0f) */ -#define VADC_G_QCTRL0_XTSEL_Pos \ - (8UL) /*!< VADC_G QCTRL0: XTSEL (Bit 8) */ -#define VADC_G_QCTRL0_XTSEL_Msk \ - (0xf00UL) /*!< VADC_G QCTRL0: XTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_G_QCTRL0_XTLVL_Pos \ - (12UL) /*!< VADC_G QCTRL0: XTLVL (Bit 12) */ -#define VADC_G_QCTRL0_XTLVL_Msk \ - (0x1000UL) /*!< VADC_G QCTRL0: XTLVL (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_XTMODE_Pos \ - (13UL) /*!< VADC_G QCTRL0: XTMODE (Bit 13) */ -#define VADC_G_QCTRL0_XTMODE_Msk \ - (0x6000UL) /*!< VADC_G QCTRL0: XTMODE (Bitfield-Mask: 0x03) */ -#define VADC_G_QCTRL0_XTWC_Pos \ - (15UL) /*!< VADC_G QCTRL0: XTWC (Bit 15) */ -#define VADC_G_QCTRL0_XTWC_Msk \ - (0x8000UL) /*!< VADC_G QCTRL0: XTWC (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_GTSEL_Pos \ - (16UL) /*!< VADC_G QCTRL0: GTSEL (Bit 16) */ -#define VADC_G_QCTRL0_GTSEL_Msk \ - (0xf0000UL) /*!< VADC_G QCTRL0: GTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_G_QCTRL0_GTLVL_Pos \ - (20UL) /*!< VADC_G QCTRL0: GTLVL (Bit 20) */ -#define VADC_G_QCTRL0_GTLVL_Msk \ - (0x100000UL) /*!< VADC_G QCTRL0: GTLVL (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_GTWC_Pos \ - (23UL) /*!< VADC_G QCTRL0: GTWC (Bit 23) */ -#define VADC_G_QCTRL0_GTWC_Msk \ - (0x800000UL) /*!< VADC_G QCTRL0: GTWC (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_TMEN_Pos \ - (28UL) /*!< VADC_G QCTRL0: TMEN (Bit 28) */ -#define VADC_G_QCTRL0_TMEN_Msk \ - (0x10000000UL) /*!< VADC_G QCTRL0: TMEN (Bitfield-Mask: 0x01) */ -#define VADC_G_QCTRL0_TMWC_Pos \ - (31UL) /*!< VADC_G QCTRL0: TMWC (Bit 31) */ -#define VADC_G_QCTRL0_TMWC_Msk \ - (0x80000000UL) /*!< VADC_G QCTRL0: TMWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_QMR0 -------------------------------- */ -#define VADC_G_QMR0_ENGT_Pos \ - (0UL) /*!< VADC_G QMR0: ENGT (Bit 0) */ -#define VADC_G_QMR0_ENGT_Msk \ - (0x3UL) /*!< VADC_G QMR0: ENGT (Bitfield-Mask: 0x03) */ -#define VADC_G_QMR0_ENTR_Pos \ - (2UL) /*!< VADC_G QMR0: ENTR (Bit 2) */ -#define VADC_G_QMR0_ENTR_Msk \ - (0x4UL) /*!< VADC_G QMR0: ENTR (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_CLRV_Pos \ - (8UL) /*!< VADC_G QMR0: CLRV (Bit 8) */ -#define VADC_G_QMR0_CLRV_Msk \ - (0x100UL) /*!< VADC_G QMR0: CLRV (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_TREV_Pos \ - (9UL) /*!< VADC_G QMR0: TREV (Bit 9) */ -#define VADC_G_QMR0_TREV_Msk \ - (0x200UL) /*!< VADC_G QMR0: TREV (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_FLUSH_Pos \ - (10UL) /*!< VADC_G QMR0: FLUSH (Bit 10) */ -#define VADC_G_QMR0_FLUSH_Msk \ - (0x400UL) /*!< VADC_G QMR0: FLUSH (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_CEV_Pos \ - (11UL) /*!< VADC_G QMR0: CEV (Bit 11) */ -#define VADC_G_QMR0_CEV_Msk \ - (0x800UL) /*!< VADC_G QMR0: CEV (Bitfield-Mask: 0x01) */ -#define VADC_G_QMR0_RPTDIS_Pos \ - (16UL) /*!< VADC_G QMR0: RPTDIS (Bit 16) */ -#define VADC_G_QMR0_RPTDIS_Msk \ - (0x10000UL) /*!< VADC_G QMR0: RPTDIS (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_QSR0 -------------------------------- */ -#define VADC_G_QSR0_FILL_Pos \ - (0UL) /*!< VADC_G QSR0: FILL (Bit 0) */ -#define VADC_G_QSR0_FILL_Msk \ - (0xfUL) /*!< VADC_G QSR0: FILL (Bitfield-Mask: 0x0f) */ -#define VADC_G_QSR0_EMPTY_Pos \ - (5UL) /*!< VADC_G QSR0: EMPTY (Bit 5) */ -#define VADC_G_QSR0_EMPTY_Msk \ - (0x20UL) /*!< VADC_G QSR0: EMPTY (Bitfield-Mask: 0x01) */ -#define VADC_G_QSR0_REQGT_Pos \ - (7UL) /*!< VADC_G QSR0: REQGT (Bit 7) */ -#define VADC_G_QSR0_REQGT_Msk \ - (0x80UL) /*!< VADC_G QSR0: REQGT (Bitfield-Mask: 0x01) */ -#define VADC_G_QSR0_EV_Pos (8UL) /*!< VADC_G QSR0: EV (Bit 8) */ -#define VADC_G_QSR0_EV_Msk \ - (0x100UL) /*!< VADC_G QSR0: EV (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_Q0R0 -------------------------------- */ -#define VADC_G_Q0R0_REQCHNR_Pos \ - (0UL) /*!< VADC_G Q0R0: REQCHNR (Bit 0) */ -#define VADC_G_Q0R0_REQCHNR_Msk \ - (0x1fUL) /*!< VADC_G Q0R0: REQCHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_Q0R0_RF_Pos (5UL) /*!< VADC_G Q0R0: RF (Bit 5) */ -#define VADC_G_Q0R0_RF_Msk \ - (0x20UL) /*!< VADC_G Q0R0: RF (Bitfield-Mask: 0x01) */ -#define VADC_G_Q0R0_ENSI_Pos \ - (6UL) /*!< VADC_G Q0R0: ENSI (Bit 6) */ -#define VADC_G_Q0R0_ENSI_Msk \ - (0x40UL) /*!< VADC_G Q0R0: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_G_Q0R0_EXTR_Pos \ - (7UL) /*!< VADC_G Q0R0: EXTR (Bit 7) */ -#define VADC_G_Q0R0_EXTR_Msk \ - (0x80UL) /*!< VADC_G Q0R0: EXTR (Bitfield-Mask: 0x01) */ -#define VADC_G_Q0R0_V_Pos (8UL) /*!< VADC_G Q0R0: V (Bit 8) */ -#define VADC_G_Q0R0_V_Msk \ - (0x100UL) /*!< VADC_G Q0R0: V (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_QINR0 -------------------------------- */ -#define VADC_G_QINR0_REQCHNR_Pos \ - (0UL) /*!< VADC_G QINR0: REQCHNR (Bit 0) */ -#define VADC_G_QINR0_REQCHNR_Msk \ - (0x1fUL) /*!< VADC_G QINR0: REQCHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_QINR0_RF_Pos \ - (5UL) /*!< VADC_G QINR0: RF (Bit 5) */ -#define VADC_G_QINR0_RF_Msk \ - (0x20UL) /*!< VADC_G QINR0: RF (Bitfield-Mask: 0x01) */ -#define VADC_G_QINR0_ENSI_Pos \ - (6UL) /*!< VADC_G QINR0: ENSI (Bit 6) */ -#define VADC_G_QINR0_ENSI_Msk \ - (0x40UL) /*!< VADC_G QINR0: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_G_QINR0_EXTR_Pos \ - (7UL) /*!< VADC_G QINR0: EXTR (Bit 7) */ -#define VADC_G_QINR0_EXTR_Msk \ - (0x80UL) /*!< VADC_G QINR0: EXTR (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_QBUR0 -------------------------------- */ -#define VADC_G_QBUR0_REQCHNR_Pos \ - (0UL) /*!< VADC_G QBUR0: REQCHNR (Bit 0) */ -#define VADC_G_QBUR0_REQCHNR_Msk \ - (0x1fUL) /*!< VADC_G QBUR0: REQCHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_QBUR0_RF_Pos \ - (5UL) /*!< VADC_G QBUR0: RF (Bit 5) */ -#define VADC_G_QBUR0_RF_Msk \ - (0x20UL) /*!< VADC_G QBUR0: RF (Bitfield-Mask: 0x01) */ -#define VADC_G_QBUR0_ENSI_Pos \ - (6UL) /*!< VADC_G QBUR0: ENSI (Bit 6) */ -#define VADC_G_QBUR0_ENSI_Msk \ - (0x40UL) /*!< VADC_G QBUR0: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_G_QBUR0_EXTR_Pos \ - (7UL) /*!< VADC_G QBUR0: EXTR (Bit 7) */ -#define VADC_G_QBUR0_EXTR_Msk \ - (0x80UL) /*!< VADC_G QBUR0: EXTR (Bitfield-Mask: 0x01) */ -#define VADC_G_QBUR0_V_Pos (8UL) /*!< VADC_G QBUR0: V (Bit 8) */ -#define VADC_G_QBUR0_V_Msk \ - (0x100UL) /*!< VADC_G QBUR0: V (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ASCTRL ------------------------------- */ -#define VADC_G_ASCTRL_SRCRESREG_Pos \ - (0UL) /*!< VADC_G ASCTRL: SRCRESREG (Bit 0) */ -#define VADC_G_ASCTRL_SRCRESREG_Msk \ - (0xfUL) /*!< VADC_G ASCTRL: SRCRESREG (Bitfield-Mask: 0x0f) */ -#define VADC_G_ASCTRL_XTSEL_Pos \ - (8UL) /*!< VADC_G ASCTRL: XTSEL (Bit 8) */ -#define VADC_G_ASCTRL_XTSEL_Msk \ - (0xf00UL) /*!< VADC_G ASCTRL: XTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_G_ASCTRL_XTLVL_Pos \ - (12UL) /*!< VADC_G ASCTRL: XTLVL (Bit 12) */ -#define VADC_G_ASCTRL_XTLVL_Msk \ - (0x1000UL) /*!< VADC_G ASCTRL: XTLVL (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_XTMODE_Pos \ - (13UL) /*!< VADC_G ASCTRL: XTMODE (Bit 13) */ -#define VADC_G_ASCTRL_XTMODE_Msk \ - (0x6000UL) /*!< VADC_G ASCTRL: XTMODE (Bitfield-Mask: 0x03) */ -#define VADC_G_ASCTRL_XTWC_Pos \ - (15UL) /*!< VADC_G ASCTRL: XTWC (Bit 15) */ -#define VADC_G_ASCTRL_XTWC_Msk \ - (0x8000UL) /*!< VADC_G ASCTRL: XTWC (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_GTSEL_Pos \ - (16UL) /*!< VADC_G ASCTRL: GTSEL (Bit 16) */ -#define VADC_G_ASCTRL_GTSEL_Msk \ - (0xf0000UL) /*!< VADC_G ASCTRL: GTSEL (Bitfield-Mask: 0x0f) */ -#define VADC_G_ASCTRL_GTLVL_Pos \ - (20UL) /*!< VADC_G ASCTRL: GTLVL (Bit 20) */ -#define VADC_G_ASCTRL_GTLVL_Msk \ - (0x100000UL) /*!< VADC_G ASCTRL: GTLVL (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_GTWC_Pos \ - (23UL) /*!< VADC_G ASCTRL: GTWC (Bit 23) */ -#define VADC_G_ASCTRL_GTWC_Msk \ - (0x800000UL) /*!< VADC_G ASCTRL: GTWC (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_TMEN_Pos \ - (28UL) /*!< VADC_G ASCTRL: TMEN (Bit 28) */ -#define VADC_G_ASCTRL_TMEN_Msk \ - (0x10000000UL) /*!< VADC_G ASCTRL: TMEN (Bitfield-Mask: 0x01) */ -#define VADC_G_ASCTRL_TMWC_Pos \ - (31UL) /*!< VADC_G ASCTRL: TMWC (Bit 31) */ -#define VADC_G_ASCTRL_TMWC_Msk \ - (0x80000000UL) /*!< VADC_G ASCTRL: TMWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_ASMR -------------------------------- */ -#define VADC_G_ASMR_ENGT_Pos \ - (0UL) /*!< VADC_G ASMR: ENGT (Bit 0) */ -#define VADC_G_ASMR_ENGT_Msk \ - (0x3UL) /*!< VADC_G ASMR: ENGT (Bitfield-Mask: 0x03) */ -#define VADC_G_ASMR_ENTR_Pos \ - (2UL) /*!< VADC_G ASMR: ENTR (Bit 2) */ -#define VADC_G_ASMR_ENTR_Msk \ - (0x4UL) /*!< VADC_G ASMR: ENTR (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_ENSI_Pos \ - (3UL) /*!< VADC_G ASMR: ENSI (Bit 3) */ -#define VADC_G_ASMR_ENSI_Msk \ - (0x8UL) /*!< VADC_G ASMR: ENSI (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_SCAN_Pos \ - (4UL) /*!< VADC_G ASMR: SCAN (Bit 4) */ -#define VADC_G_ASMR_SCAN_Msk \ - (0x10UL) /*!< VADC_G ASMR: SCAN (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_LDM_Pos \ - (5UL) /*!< VADC_G ASMR: LDM (Bit 5) */ -#define VADC_G_ASMR_LDM_Msk \ - (0x20UL) /*!< VADC_G ASMR: LDM (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_REQGT_Pos \ - (7UL) /*!< VADC_G ASMR: REQGT (Bit 7) */ -#define VADC_G_ASMR_REQGT_Msk \ - (0x80UL) /*!< VADC_G ASMR: REQGT (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_CLRPND_Pos \ - (8UL) /*!< VADC_G ASMR: CLRPND (Bit 8) */ -#define VADC_G_ASMR_CLRPND_Msk \ - (0x100UL) /*!< VADC_G ASMR: CLRPND (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_LDEV_Pos \ - (9UL) /*!< VADC_G ASMR: LDEV (Bit 9) */ -#define VADC_G_ASMR_LDEV_Msk \ - (0x200UL) /*!< VADC_G ASMR: LDEV (Bitfield-Mask: 0x01) */ -#define VADC_G_ASMR_RPTDIS_Pos \ - (16UL) /*!< VADC_G ASMR: RPTDIS (Bit 16) */ -#define VADC_G_ASMR_RPTDIS_Msk \ - (0x10000UL) /*!< VADC_G ASMR: RPTDIS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ASSEL -------------------------------- */ -#define VADC_G_ASSEL_CHSEL0_Pos \ - (0UL) /*!< VADC_G ASSEL: CHSEL0 (Bit 0) */ -#define VADC_G_ASSEL_CHSEL0_Msk \ - (0x1UL) /*!< VADC_G ASSEL: CHSEL0 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL1_Pos \ - (1UL) /*!< VADC_G ASSEL: CHSEL1 (Bit 1) */ -#define VADC_G_ASSEL_CHSEL1_Msk \ - (0x2UL) /*!< VADC_G ASSEL: CHSEL1 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL2_Pos \ - (2UL) /*!< VADC_G ASSEL: CHSEL2 (Bit 2) */ -#define VADC_G_ASSEL_CHSEL2_Msk \ - (0x4UL) /*!< VADC_G ASSEL: CHSEL2 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL3_Pos \ - (3UL) /*!< VADC_G ASSEL: CHSEL3 (Bit 3) */ -#define VADC_G_ASSEL_CHSEL3_Msk \ - (0x8UL) /*!< VADC_G ASSEL: CHSEL3 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL4_Pos \ - (4UL) /*!< VADC_G ASSEL: CHSEL4 (Bit 4) */ -#define VADC_G_ASSEL_CHSEL4_Msk \ - (0x10UL) /*!< VADC_G ASSEL: CHSEL4 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL5_Pos \ - (5UL) /*!< VADC_G ASSEL: CHSEL5 (Bit 5) */ -#define VADC_G_ASSEL_CHSEL5_Msk \ - (0x20UL) /*!< VADC_G ASSEL: CHSEL5 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL6_Pos \ - (6UL) /*!< VADC_G ASSEL: CHSEL6 (Bit 6) */ -#define VADC_G_ASSEL_CHSEL6_Msk \ - (0x40UL) /*!< VADC_G ASSEL: CHSEL6 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASSEL_CHSEL7_Pos \ - (7UL) /*!< VADC_G ASSEL: CHSEL7 (Bit 7) */ -#define VADC_G_ASSEL_CHSEL7_Msk \ - (0x80UL) /*!< VADC_G ASSEL: CHSEL7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_ASPND -------------------------------- */ -#define VADC_G_ASPND_CHPND0_Pos \ - (0UL) /*!< VADC_G ASPND: CHPND0 (Bit 0) */ -#define VADC_G_ASPND_CHPND0_Msk \ - (0x1UL) /*!< VADC_G ASPND: CHPND0 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND1_Pos \ - (1UL) /*!< VADC_G ASPND: CHPND1 (Bit 1) */ -#define VADC_G_ASPND_CHPND1_Msk \ - (0x2UL) /*!< VADC_G ASPND: CHPND1 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND2_Pos \ - (2UL) /*!< VADC_G ASPND: CHPND2 (Bit 2) */ -#define VADC_G_ASPND_CHPND2_Msk \ - (0x4UL) /*!< VADC_G ASPND: CHPND2 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND3_Pos \ - (3UL) /*!< VADC_G ASPND: CHPND3 (Bit 3) */ -#define VADC_G_ASPND_CHPND3_Msk \ - (0x8UL) /*!< VADC_G ASPND: CHPND3 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND4_Pos \ - (4UL) /*!< VADC_G ASPND: CHPND4 (Bit 4) */ -#define VADC_G_ASPND_CHPND4_Msk \ - (0x10UL) /*!< VADC_G ASPND: CHPND4 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND5_Pos \ - (5UL) /*!< VADC_G ASPND: CHPND5 (Bit 5) */ -#define VADC_G_ASPND_CHPND5_Msk \ - (0x20UL) /*!< VADC_G ASPND: CHPND5 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND6_Pos \ - (6UL) /*!< VADC_G ASPND: CHPND6 (Bit 6) */ -#define VADC_G_ASPND_CHPND6_Msk \ - (0x40UL) /*!< VADC_G ASPND: CHPND6 (Bitfield-Mask: 0x01) */ -#define VADC_G_ASPND_CHPND7_Pos \ - (7UL) /*!< VADC_G ASPND: CHPND7 (Bit 7) */ -#define VADC_G_ASPND_CHPND7_Msk \ - (0x80UL) /*!< VADC_G ASPND: CHPND7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CEFLAG ------------------------------- */ -#define VADC_G_CEFLAG_CEV0_Pos \ - (0UL) /*!< VADC_G CEFLAG: CEV0 (Bit 0) */ -#define VADC_G_CEFLAG_CEV0_Msk \ - (0x1UL) /*!< VADC_G CEFLAG: CEV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV1_Pos \ - (1UL) /*!< VADC_G CEFLAG: CEV1 (Bit 1) */ -#define VADC_G_CEFLAG_CEV1_Msk \ - (0x2UL) /*!< VADC_G CEFLAG: CEV1 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV2_Pos \ - (2UL) /*!< VADC_G CEFLAG: CEV2 (Bit 2) */ -#define VADC_G_CEFLAG_CEV2_Msk \ - (0x4UL) /*!< VADC_G CEFLAG: CEV2 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV3_Pos \ - (3UL) /*!< VADC_G CEFLAG: CEV3 (Bit 3) */ -#define VADC_G_CEFLAG_CEV3_Msk \ - (0x8UL) /*!< VADC_G CEFLAG: CEV3 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV4_Pos \ - (4UL) /*!< VADC_G CEFLAG: CEV4 (Bit 4) */ -#define VADC_G_CEFLAG_CEV4_Msk \ - (0x10UL) /*!< VADC_G CEFLAG: CEV4 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV5_Pos \ - (5UL) /*!< VADC_G CEFLAG: CEV5 (Bit 5) */ -#define VADC_G_CEFLAG_CEV5_Msk \ - (0x20UL) /*!< VADC_G CEFLAG: CEV5 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV6_Pos \ - (6UL) /*!< VADC_G CEFLAG: CEV6 (Bit 6) */ -#define VADC_G_CEFLAG_CEV6_Msk \ - (0x40UL) /*!< VADC_G CEFLAG: CEV6 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFLAG_CEV7_Pos \ - (7UL) /*!< VADC_G CEFLAG: CEV7 (Bit 7) */ -#define VADC_G_CEFLAG_CEV7_Msk \ - (0x80UL) /*!< VADC_G CEFLAG: CEV7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_REFLAG ------------------------------- */ -#define VADC_G_REFLAG_REV0_Pos \ - (0UL) /*!< VADC_G REFLAG: REV0 (Bit 0) */ -#define VADC_G_REFLAG_REV0_Msk \ - (0x1UL) /*!< VADC_G REFLAG: REV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV1_Pos \ - (1UL) /*!< VADC_G REFLAG: REV1 (Bit 1) */ -#define VADC_G_REFLAG_REV1_Msk \ - (0x2UL) /*!< VADC_G REFLAG: REV1 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV2_Pos \ - (2UL) /*!< VADC_G REFLAG: REV2 (Bit 2) */ -#define VADC_G_REFLAG_REV2_Msk \ - (0x4UL) /*!< VADC_G REFLAG: REV2 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV3_Pos \ - (3UL) /*!< VADC_G REFLAG: REV3 (Bit 3) */ -#define VADC_G_REFLAG_REV3_Msk \ - (0x8UL) /*!< VADC_G REFLAG: REV3 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV4_Pos \ - (4UL) /*!< VADC_G REFLAG: REV4 (Bit 4) */ -#define VADC_G_REFLAG_REV4_Msk \ - (0x10UL) /*!< VADC_G REFLAG: REV4 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV5_Pos \ - (5UL) /*!< VADC_G REFLAG: REV5 (Bit 5) */ -#define VADC_G_REFLAG_REV5_Msk \ - (0x20UL) /*!< VADC_G REFLAG: REV5 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV6_Pos \ - (6UL) /*!< VADC_G REFLAG: REV6 (Bit 6) */ -#define VADC_G_REFLAG_REV6_Msk \ - (0x40UL) /*!< VADC_G REFLAG: REV6 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV7_Pos \ - (7UL) /*!< VADC_G REFLAG: REV7 (Bit 7) */ -#define VADC_G_REFLAG_REV7_Msk \ - (0x80UL) /*!< VADC_G REFLAG: REV7 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV8_Pos \ - (8UL) /*!< VADC_G REFLAG: REV8 (Bit 8) */ -#define VADC_G_REFLAG_REV8_Msk \ - (0x100UL) /*!< VADC_G REFLAG: REV8 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV9_Pos \ - (9UL) /*!< VADC_G REFLAG: REV9 (Bit 9) */ -#define VADC_G_REFLAG_REV9_Msk \ - (0x200UL) /*!< VADC_G REFLAG: REV9 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV10_Pos \ - (10UL) /*!< VADC_G REFLAG: REV10 (Bit 10) */ -#define VADC_G_REFLAG_REV10_Msk \ - (0x400UL) /*!< VADC_G REFLAG: REV10 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV11_Pos \ - (11UL) /*!< VADC_G REFLAG: REV11 (Bit 11) */ -#define VADC_G_REFLAG_REV11_Msk \ - (0x800UL) /*!< VADC_G REFLAG: REV11 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV12_Pos \ - (12UL) /*!< VADC_G REFLAG: REV12 (Bit 12) */ -#define VADC_G_REFLAG_REV12_Msk \ - (0x1000UL) /*!< VADC_G REFLAG: REV12 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV13_Pos \ - (13UL) /*!< VADC_G REFLAG: REV13 (Bit 13) */ -#define VADC_G_REFLAG_REV13_Msk \ - (0x2000UL) /*!< VADC_G REFLAG: REV13 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV14_Pos \ - (14UL) /*!< VADC_G REFLAG: REV14 (Bit 14) */ -#define VADC_G_REFLAG_REV14_Msk \ - (0x4000UL) /*!< VADC_G REFLAG: REV14 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFLAG_REV15_Pos \ - (15UL) /*!< VADC_G REFLAG: REV15 (Bit 15) */ -#define VADC_G_REFLAG_REV15_Msk \ - (0x8000UL) /*!< VADC_G REFLAG: REV15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_SEFLAG ------------------------------- */ -#define VADC_G_SEFLAG_SEV0_Pos \ - (0UL) /*!< VADC_G SEFLAG: SEV0 (Bit 0) */ -#define VADC_G_SEFLAG_SEV0_Msk \ - (0x1UL) /*!< VADC_G SEFLAG: SEV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_SEFLAG_SEV1_Pos \ - (1UL) /*!< VADC_G SEFLAG: SEV1 (Bit 1) */ -#define VADC_G_SEFLAG_SEV1_Msk \ - (0x2UL) /*!< VADC_G SEFLAG: SEV1 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CEFCLR ------------------------------- */ -#define VADC_G_CEFCLR_CEV0_Pos \ - (0UL) /*!< VADC_G CEFCLR: CEV0 (Bit 0) */ -#define VADC_G_CEFCLR_CEV0_Msk \ - (0x1UL) /*!< VADC_G CEFCLR: CEV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV1_Pos \ - (1UL) /*!< VADC_G CEFCLR: CEV1 (Bit 1) */ -#define VADC_G_CEFCLR_CEV1_Msk \ - (0x2UL) /*!< VADC_G CEFCLR: CEV1 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV2_Pos \ - (2UL) /*!< VADC_G CEFCLR: CEV2 (Bit 2) */ -#define VADC_G_CEFCLR_CEV2_Msk \ - (0x4UL) /*!< VADC_G CEFCLR: CEV2 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV3_Pos \ - (3UL) /*!< VADC_G CEFCLR: CEV3 (Bit 3) */ -#define VADC_G_CEFCLR_CEV3_Msk \ - (0x8UL) /*!< VADC_G CEFCLR: CEV3 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV4_Pos \ - (4UL) /*!< VADC_G CEFCLR: CEV4 (Bit 4) */ -#define VADC_G_CEFCLR_CEV4_Msk \ - (0x10UL) /*!< VADC_G CEFCLR: CEV4 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV5_Pos \ - (5UL) /*!< VADC_G CEFCLR: CEV5 (Bit 5) */ -#define VADC_G_CEFCLR_CEV5_Msk \ - (0x20UL) /*!< VADC_G CEFCLR: CEV5 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV6_Pos \ - (6UL) /*!< VADC_G CEFCLR: CEV6 (Bit 6) */ -#define VADC_G_CEFCLR_CEV6_Msk \ - (0x40UL) /*!< VADC_G CEFCLR: CEV6 (Bitfield-Mask: 0x01) */ -#define VADC_G_CEFCLR_CEV7_Pos \ - (7UL) /*!< VADC_G CEFCLR: CEV7 (Bit 7) */ -#define VADC_G_CEFCLR_CEV7_Msk \ - (0x80UL) /*!< VADC_G CEFCLR: CEV7 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_REFCLR ------------------------------- */ -#define VADC_G_REFCLR_REV0_Pos \ - (0UL) /*!< VADC_G REFCLR: REV0 (Bit 0) */ -#define VADC_G_REFCLR_REV0_Msk \ - (0x1UL) /*!< VADC_G REFCLR: REV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV1_Pos \ - (1UL) /*!< VADC_G REFCLR: REV1 (Bit 1) */ -#define VADC_G_REFCLR_REV1_Msk \ - (0x2UL) /*!< VADC_G REFCLR: REV1 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV2_Pos \ - (2UL) /*!< VADC_G REFCLR: REV2 (Bit 2) */ -#define VADC_G_REFCLR_REV2_Msk \ - (0x4UL) /*!< VADC_G REFCLR: REV2 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV3_Pos \ - (3UL) /*!< VADC_G REFCLR: REV3 (Bit 3) */ -#define VADC_G_REFCLR_REV3_Msk \ - (0x8UL) /*!< VADC_G REFCLR: REV3 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV4_Pos \ - (4UL) /*!< VADC_G REFCLR: REV4 (Bit 4) */ -#define VADC_G_REFCLR_REV4_Msk \ - (0x10UL) /*!< VADC_G REFCLR: REV4 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV5_Pos \ - (5UL) /*!< VADC_G REFCLR: REV5 (Bit 5) */ -#define VADC_G_REFCLR_REV5_Msk \ - (0x20UL) /*!< VADC_G REFCLR: REV5 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV6_Pos \ - (6UL) /*!< VADC_G REFCLR: REV6 (Bit 6) */ -#define VADC_G_REFCLR_REV6_Msk \ - (0x40UL) /*!< VADC_G REFCLR: REV6 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV7_Pos \ - (7UL) /*!< VADC_G REFCLR: REV7 (Bit 7) */ -#define VADC_G_REFCLR_REV7_Msk \ - (0x80UL) /*!< VADC_G REFCLR: REV7 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV8_Pos \ - (8UL) /*!< VADC_G REFCLR: REV8 (Bit 8) */ -#define VADC_G_REFCLR_REV8_Msk \ - (0x100UL) /*!< VADC_G REFCLR: REV8 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV9_Pos \ - (9UL) /*!< VADC_G REFCLR: REV9 (Bit 9) */ -#define VADC_G_REFCLR_REV9_Msk \ - (0x200UL) /*!< VADC_G REFCLR: REV9 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV10_Pos \ - (10UL) /*!< VADC_G REFCLR: REV10 (Bit 10) */ -#define VADC_G_REFCLR_REV10_Msk \ - (0x400UL) /*!< VADC_G REFCLR: REV10 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV11_Pos \ - (11UL) /*!< VADC_G REFCLR: REV11 (Bit 11) */ -#define VADC_G_REFCLR_REV11_Msk \ - (0x800UL) /*!< VADC_G REFCLR: REV11 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV12_Pos \ - (12UL) /*!< VADC_G REFCLR: REV12 (Bit 12) */ -#define VADC_G_REFCLR_REV12_Msk \ - (0x1000UL) /*!< VADC_G REFCLR: REV12 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV13_Pos \ - (13UL) /*!< VADC_G REFCLR: REV13 (Bit 13) */ -#define VADC_G_REFCLR_REV13_Msk \ - (0x2000UL) /*!< VADC_G REFCLR: REV13 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV14_Pos \ - (14UL) /*!< VADC_G REFCLR: REV14 (Bit 14) */ -#define VADC_G_REFCLR_REV14_Msk \ - (0x4000UL) /*!< VADC_G REFCLR: REV14 (Bitfield-Mask: 0x01) */ -#define VADC_G_REFCLR_REV15_Pos \ - (15UL) /*!< VADC_G REFCLR: REV15 (Bit 15) */ -#define VADC_G_REFCLR_REV15_Msk \ - (0x8000UL) /*!< VADC_G REFCLR: REV15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_SEFCLR ------------------------------- */ -#define VADC_G_SEFCLR_SEV0_Pos \ - (0UL) /*!< VADC_G SEFCLR: SEV0 (Bit 0) */ -#define VADC_G_SEFCLR_SEV0_Msk \ - (0x1UL) /*!< VADC_G SEFCLR: SEV0 (Bitfield-Mask: 0x01) */ -#define VADC_G_SEFCLR_SEV1_Pos \ - (1UL) /*!< VADC_G SEFCLR: SEV1 (Bit 1) */ -#define VADC_G_SEFCLR_SEV1_Msk \ - (0x2UL) /*!< VADC_G SEFCLR: SEV1 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CEVNP0 ------------------------------- */ -#define VADC_G_CEVNP0_CEV0NP_Pos \ - (0UL) /*!< VADC_G CEVNP0: CEV0NP (Bit 0) */ -#define VADC_G_CEVNP0_CEV0NP_Msk \ - (0xfUL) /*!< VADC_G CEVNP0: CEV0NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV1NP_Pos \ - (4UL) /*!< VADC_G CEVNP0: CEV1NP (Bit 4) */ -#define VADC_G_CEVNP0_CEV1NP_Msk \ - (0xf0UL) /*!< VADC_G CEVNP0: CEV1NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV2NP_Pos \ - (8UL) /*!< VADC_G CEVNP0: CEV2NP (Bit 8) */ -#define VADC_G_CEVNP0_CEV2NP_Msk \ - (0xf00UL) /*!< VADC_G CEVNP0: CEV2NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV3NP_Pos \ - (12UL) /*!< VADC_G CEVNP0: CEV3NP (Bit 12) */ -#define VADC_G_CEVNP0_CEV3NP_Msk \ - (0xf000UL) /*!< VADC_G CEVNP0: CEV3NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV4NP_Pos \ - (16UL) /*!< VADC_G CEVNP0: CEV4NP (Bit 16) */ -#define VADC_G_CEVNP0_CEV4NP_Msk \ - (0xf0000UL) /*!< VADC_G CEVNP0: CEV4NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV5NP_Pos \ - (20UL) /*!< VADC_G CEVNP0: CEV5NP (Bit 20) */ -#define VADC_G_CEVNP0_CEV5NP_Msk \ - (0xf00000UL) /*!< VADC_G CEVNP0: CEV5NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV6NP_Pos \ - (24UL) /*!< VADC_G CEVNP0: CEV6NP (Bit 24) */ -#define VADC_G_CEVNP0_CEV6NP_Msk \ - (0xf000000UL) /*!< VADC_G CEVNP0: CEV6NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_CEVNP0_CEV7NP_Pos \ - (28UL) /*!< VADC_G CEVNP0: CEV7NP (Bit 28) */ -#define VADC_G_CEVNP0_CEV7NP_Msk \ - (0xf0000000UL) /*!< VADC_G CEVNP0: CEV7NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_REVNP0 ------------------------------- */ -#define VADC_G_REVNP0_REV0NP_Pos \ - (0UL) /*!< VADC_G REVNP0: REV0NP (Bit 0) */ -#define VADC_G_REVNP0_REV0NP_Msk \ - (0xfUL) /*!< VADC_G REVNP0: REV0NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV1NP_Pos \ - (4UL) /*!< VADC_G REVNP0: REV1NP (Bit 4) */ -#define VADC_G_REVNP0_REV1NP_Msk \ - (0xf0UL) /*!< VADC_G REVNP0: REV1NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV2NP_Pos \ - (8UL) /*!< VADC_G REVNP0: REV2NP (Bit 8) */ -#define VADC_G_REVNP0_REV2NP_Msk \ - (0xf00UL) /*!< VADC_G REVNP0: REV2NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV3NP_Pos \ - (12UL) /*!< VADC_G REVNP0: REV3NP (Bit 12) */ -#define VADC_G_REVNP0_REV3NP_Msk \ - (0xf000UL) /*!< VADC_G REVNP0: REV3NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV4NP_Pos \ - (16UL) /*!< VADC_G REVNP0: REV4NP (Bit 16) */ -#define VADC_G_REVNP0_REV4NP_Msk \ - (0xf0000UL) /*!< VADC_G REVNP0: REV4NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV5NP_Pos \ - (20UL) /*!< VADC_G REVNP0: REV5NP (Bit 20) */ -#define VADC_G_REVNP0_REV5NP_Msk \ - (0xf00000UL) /*!< VADC_G REVNP0: REV5NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV6NP_Pos \ - (24UL) /*!< VADC_G REVNP0: REV6NP (Bit 24) */ -#define VADC_G_REVNP0_REV6NP_Msk \ - (0xf000000UL) /*!< VADC_G REVNP0: REV6NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP0_REV7NP_Pos \ - (28UL) /*!< VADC_G REVNP0: REV7NP (Bit 28) */ -#define VADC_G_REVNP0_REV7NP_Msk \ - (0xf0000000UL) /*!< VADC_G REVNP0: REV7NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_REVNP1 ------------------------------- */ -#define VADC_G_REVNP1_REV8NP_Pos \ - (0UL) /*!< VADC_G REVNP1: REV8NP (Bit 0) */ -#define VADC_G_REVNP1_REV8NP_Msk \ - (0xfUL) /*!< VADC_G REVNP1: REV8NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV9NP_Pos \ - (4UL) /*!< VADC_G REVNP1: REV9NP (Bit 4) */ -#define VADC_G_REVNP1_REV9NP_Msk \ - (0xf0UL) /*!< VADC_G REVNP1: REV9NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV10NP_Pos \ - (8UL) /*!< VADC_G REVNP1: REV10NP (Bit 8) */ -#define VADC_G_REVNP1_REV10NP_Msk \ - (0xf00UL) /*!< VADC_G REVNP1: REV10NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV11NP_Pos \ - (12UL) /*!< VADC_G REVNP1: REV11NP (Bit 12) */ -#define VADC_G_REVNP1_REV11NP_Msk \ - (0xf000UL) /*!< VADC_G REVNP1: REV11NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV12NP_Pos \ - (16UL) /*!< VADC_G REVNP1: REV12NP (Bit 16) */ -#define VADC_G_REVNP1_REV12NP_Msk \ - (0xf0000UL) /*!< VADC_G REVNP1: REV12NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV13NP_Pos \ - (20UL) /*!< VADC_G REVNP1: REV13NP (Bit 20) */ -#define VADC_G_REVNP1_REV13NP_Msk \ - (0xf00000UL) /*!< VADC_G REVNP1: REV13NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV14NP_Pos \ - (24UL) /*!< VADC_G REVNP1: REV14NP (Bit 24) */ -#define VADC_G_REVNP1_REV14NP_Msk \ - (0xf000000UL) /*!< VADC_G REVNP1: REV14NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_REVNP1_REV15NP_Pos \ - (28UL) /*!< VADC_G REVNP1: REV15NP (Bit 28) */ -#define VADC_G_REVNP1_REV15NP_Msk \ - (0xf0000000UL) /*!< VADC_G REVNP1: REV15NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_SEVNP -------------------------------- */ -#define VADC_G_SEVNP_SEV0NP_Pos \ - (0UL) /*!< VADC_G SEVNP: SEV0NP (Bit 0) */ -#define VADC_G_SEVNP_SEV0NP_Msk \ - (0xfUL) /*!< VADC_G SEVNP: SEV0NP (Bitfield-Mask: 0x0f) */ -#define VADC_G_SEVNP_SEV1NP_Pos \ - (4UL) /*!< VADC_G SEVNP: SEV1NP (Bit 4) */ -#define VADC_G_SEVNP_SEV1NP_Msk \ - (0xf0UL) /*!< VADC_G SEVNP: SEV1NP (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- VADC_G_SRACT -------------------------------- */ -#define VADC_G_SRACT_AGSR0_Pos \ - (0UL) /*!< VADC_G SRACT: AGSR0 (Bit 0) */ -#define VADC_G_SRACT_AGSR0_Msk \ - (0x1UL) /*!< VADC_G SRACT: AGSR0 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_AGSR1_Pos \ - (1UL) /*!< VADC_G SRACT: AGSR1 (Bit 1) */ -#define VADC_G_SRACT_AGSR1_Msk \ - (0x2UL) /*!< VADC_G SRACT: AGSR1 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_AGSR2_Pos \ - (2UL) /*!< VADC_G SRACT: AGSR2 (Bit 2) */ -#define VADC_G_SRACT_AGSR2_Msk \ - (0x4UL) /*!< VADC_G SRACT: AGSR2 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_AGSR3_Pos \ - (3UL) /*!< VADC_G SRACT: AGSR3 (Bit 3) */ -#define VADC_G_SRACT_AGSR3_Msk \ - (0x8UL) /*!< VADC_G SRACT: AGSR3 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_ASSR0_Pos \ - (8UL) /*!< VADC_G SRACT: ASSR0 (Bit 8) */ -#define VADC_G_SRACT_ASSR0_Msk \ - (0x100UL) /*!< VADC_G SRACT: ASSR0 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_ASSR1_Pos \ - (9UL) /*!< VADC_G SRACT: ASSR1 (Bit 9) */ -#define VADC_G_SRACT_ASSR1_Msk \ - (0x200UL) /*!< VADC_G SRACT: ASSR1 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_ASSR2_Pos \ - (10UL) /*!< VADC_G SRACT: ASSR2 (Bit 10) */ -#define VADC_G_SRACT_ASSR2_Msk \ - (0x400UL) /*!< VADC_G SRACT: ASSR2 (Bitfield-Mask: 0x01) */ -#define VADC_G_SRACT_ASSR3_Pos \ - (11UL) /*!< VADC_G SRACT: ASSR3 (Bit 11) */ -#define VADC_G_SRACT_ASSR3_Msk \ - (0x800UL) /*!< VADC_G SRACT: ASSR3 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- VADC_G_EMUXCTR ------------------------------- */ -#define VADC_G_EMUXCTR_EMUXSET_Pos \ - (0UL) /*!< VADC_G EMUXCTR: EMUXSET (Bit 0) */ -#define VADC_G_EMUXCTR_EMUXSET_Msk \ - (0x7UL) /*!< VADC_G EMUXCTR: EMUXSET (Bitfield-Mask: 0x07) */ -#define VADC_G_EMUXCTR_EMUXACT_Pos \ - (8UL) /*!< VADC_G EMUXCTR: EMUXACT (Bit 8) */ -#define VADC_G_EMUXCTR_EMUXACT_Msk \ - (0x700UL) /*!< VADC_G EMUXCTR: EMUXACT (Bitfield-Mask: 0x07) */ -#define VADC_G_EMUXCTR_EMUXCH_Pos \ - (16UL) /*!< VADC_G EMUXCTR: EMUXCH (Bit 16) */ -#define VADC_G_EMUXCTR_EMUXCH_Msk \ - (0x3ff0000UL) /*!< VADC_G EMUXCTR: EMUXCH (Bitfield-Mask: 0x3ff) */ -#define VADC_G_EMUXCTR_EMUXMODE_Pos \ - (26UL) /*!< VADC_G EMUXCTR: EMUXMODE (Bit 26) */ -#define VADC_G_EMUXCTR_EMUXMODE_Msk \ - (0xc000000UL) /*!< VADC_G EMUXCTR: EMUXMODE (Bitfield-Mask: 0x03) */ -#define VADC_G_EMUXCTR_EMXCOD_Pos \ - (28UL) /*!< VADC_G EMUXCTR: EMXCOD (Bit 28) */ -#define VADC_G_EMUXCTR_EMXCOD_Msk \ - (0x10000000UL) /*!< VADC_G EMUXCTR: EMXCOD (Bitfield-Mask: 0x01) */ -#define VADC_G_EMUXCTR_EMXST_Pos \ - (29UL) /*!< VADC_G EMUXCTR: EMXST (Bit 29) */ -#define VADC_G_EMUXCTR_EMXST_Msk \ - (0x20000000UL) /*!< VADC_G EMUXCTR: EMXST (Bitfield-Mask: 0x01) */ -#define VADC_G_EMUXCTR_EMXCSS_Pos \ - (30UL) /*!< VADC_G EMUXCTR: EMXCSS (Bit 30) */ -#define VADC_G_EMUXCTR_EMXCSS_Msk \ - (0x40000000UL) /*!< VADC_G EMUXCTR: EMXCSS (Bitfield-Mask: 0x01) */ -#define VADC_G_EMUXCTR_EMXWC_Pos \ - (31UL) /*!< VADC_G EMUXCTR: EMXWC (Bit 31) */ -#define VADC_G_EMUXCTR_EMXWC_Msk \ - (0x80000000UL) /*!< VADC_G EMUXCTR: EMXWC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_VFR --------------------------------- */ -#define VADC_G_VFR_VF0_Pos (0UL) /*!< VADC_G VFR: VF0 (Bit 0) */ -#define VADC_G_VFR_VF0_Msk \ - (0x1UL) /*!< VADC_G VFR: VF0 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF1_Pos (1UL) /*!< VADC_G VFR: VF1 (Bit 1) */ -#define VADC_G_VFR_VF1_Msk \ - (0x2UL) /*!< VADC_G VFR: VF1 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF2_Pos (2UL) /*!< VADC_G VFR: VF2 (Bit 2) */ -#define VADC_G_VFR_VF2_Msk \ - (0x4UL) /*!< VADC_G VFR: VF2 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF3_Pos (3UL) /*!< VADC_G VFR: VF3 (Bit 3) */ -#define VADC_G_VFR_VF3_Msk \ - (0x8UL) /*!< VADC_G VFR: VF3 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF4_Pos (4UL) /*!< VADC_G VFR: VF4 (Bit 4) */ -#define VADC_G_VFR_VF4_Msk \ - (0x10UL) /*!< VADC_G VFR: VF4 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF5_Pos (5UL) /*!< VADC_G VFR: VF5 (Bit 5) */ -#define VADC_G_VFR_VF5_Msk \ - (0x20UL) /*!< VADC_G VFR: VF5 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF6_Pos (6UL) /*!< VADC_G VFR: VF6 (Bit 6) */ -#define VADC_G_VFR_VF6_Msk \ - (0x40UL) /*!< VADC_G VFR: VF6 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF7_Pos (7UL) /*!< VADC_G VFR: VF7 (Bit 7) */ -#define VADC_G_VFR_VF7_Msk \ - (0x80UL) /*!< VADC_G VFR: VF7 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF8_Pos (8UL) /*!< VADC_G VFR: VF8 (Bit 8) */ -#define VADC_G_VFR_VF8_Msk \ - (0x100UL) /*!< VADC_G VFR: VF8 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF9_Pos (9UL) /*!< VADC_G VFR: VF9 (Bit 9) */ -#define VADC_G_VFR_VF9_Msk \ - (0x200UL) /*!< VADC_G VFR: VF9 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF10_Pos \ - (10UL) /*!< VADC_G VFR: VF10 (Bit 10) */ -#define VADC_G_VFR_VF10_Msk \ - (0x400UL) /*!< VADC_G VFR: VF10 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF11_Pos \ - (11UL) /*!< VADC_G VFR: VF11 (Bit 11) */ -#define VADC_G_VFR_VF11_Msk \ - (0x800UL) /*!< VADC_G VFR: VF11 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF12_Pos \ - (12UL) /*!< VADC_G VFR: VF12 (Bit 12) */ -#define VADC_G_VFR_VF12_Msk \ - (0x1000UL) /*!< VADC_G VFR: VF12 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF13_Pos \ - (13UL) /*!< VADC_G VFR: VF13 (Bit 13) */ -#define VADC_G_VFR_VF13_Msk \ - (0x2000UL) /*!< VADC_G VFR: VF13 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF14_Pos \ - (14UL) /*!< VADC_G VFR: VF14 (Bit 14) */ -#define VADC_G_VFR_VF14_Msk \ - (0x4000UL) /*!< VADC_G VFR: VF14 (Bitfield-Mask: 0x01) */ -#define VADC_G_VFR_VF15_Pos \ - (15UL) /*!< VADC_G VFR: VF15 (Bit 15) */ -#define VADC_G_VFR_VF15_Msk \ - (0x8000UL) /*!< VADC_G VFR: VF15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- VADC_G_CHCTR -------------------------------- */ -#define VADC_G_CHCTR_ICLSEL_Pos \ - (0UL) /*!< VADC_G CHCTR: ICLSEL (Bit 0) */ -#define VADC_G_CHCTR_ICLSEL_Msk \ - (0x3UL) /*!< VADC_G CHCTR: ICLSEL (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_BNDSELL_Pos \ - (4UL) /*!< VADC_G CHCTR: BNDSELL (Bit 4) */ -#define VADC_G_CHCTR_BNDSELL_Msk \ - (0x30UL) /*!< VADC_G CHCTR: BNDSELL (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_BNDSELU_Pos \ - (6UL) /*!< VADC_G CHCTR: BNDSELU (Bit 6) */ -#define VADC_G_CHCTR_BNDSELU_Msk \ - (0xc0UL) /*!< VADC_G CHCTR: BNDSELU (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_CHEVMODE_Pos \ - (8UL) /*!< VADC_G CHCTR: CHEVMODE (Bit 8) */ -#define VADC_G_CHCTR_CHEVMODE_Msk \ - (0x300UL) /*!< VADC_G CHCTR: CHEVMODE (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_SYNC_Pos \ - (10UL) /*!< VADC_G CHCTR: SYNC (Bit 10) */ -#define VADC_G_CHCTR_SYNC_Msk \ - (0x400UL) /*!< VADC_G CHCTR: SYNC (Bitfield-Mask: 0x01) */ -#define VADC_G_CHCTR_REFSEL_Pos \ - (11UL) /*!< VADC_G CHCTR: REFSEL (Bit 11) */ -#define VADC_G_CHCTR_REFSEL_Msk \ - (0x800UL) /*!< VADC_G CHCTR: REFSEL (Bitfield-Mask: 0x01) */ -#define VADC_G_CHCTR_RESREG_Pos \ - (16UL) /*!< VADC_G CHCTR: RESREG (Bit 16) */ -#define VADC_G_CHCTR_RESREG_Msk \ - (0xf0000UL) /*!< VADC_G CHCTR: RESREG (Bitfield-Mask: 0x0f) */ -#define VADC_G_CHCTR_RESTBS_Pos \ - (20UL) /*!< VADC_G CHCTR: RESTBS (Bit 20) */ -#define VADC_G_CHCTR_RESTBS_Msk \ - (0x100000UL) /*!< VADC_G CHCTR: RESTBS (Bitfield-Mask: 0x01) */ -#define VADC_G_CHCTR_RESPOS_Pos \ - (21UL) /*!< VADC_G CHCTR: RESPOS (Bit 21) */ -#define VADC_G_CHCTR_RESPOS_Msk \ - (0x200000UL) /*!< VADC_G CHCTR: RESPOS (Bitfield-Mask: 0x01) */ -#define VADC_G_CHCTR_BWDCH_Pos \ - (28UL) /*!< VADC_G CHCTR: BWDCH (Bit 28) */ -#define VADC_G_CHCTR_BWDCH_Msk \ - (0x30000000UL) /*!< VADC_G CHCTR: BWDCH (Bitfield-Mask: 0x03) */ -#define VADC_G_CHCTR_BWDEN_Pos \ - (30UL) /*!< VADC_G CHCTR: BWDEN (Bit 30) */ -#define VADC_G_CHCTR_BWDEN_Msk \ - (0x40000000UL) /*!< VADC_G CHCTR: BWDEN (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_RCR --------------------------------- */ -#define VADC_G_RCR_DRCTR_Pos \ - (16UL) /*!< VADC_G RCR: DRCTR (Bit 16) */ -#define VADC_G_RCR_DRCTR_Msk \ - (0xf0000UL) /*!< VADC_G RCR: DRCTR (Bitfield-Mask: 0x0f) */ -#define VADC_G_RCR_DMM_Pos \ - (20UL) /*!< VADC_G RCR: DMM (Bit 20) */ -#define VADC_G_RCR_DMM_Msk \ - (0x300000UL) /*!< VADC_G RCR: DMM (Bitfield-Mask: 0x03) */ -#define VADC_G_RCR_WFR_Pos \ - (24UL) /*!< VADC_G RCR: WFR (Bit 24) */ -#define VADC_G_RCR_WFR_Msk \ - (0x1000000UL) /*!< VADC_G RCR: WFR (Bitfield-Mask: 0x01) */ -#define VADC_G_RCR_FEN_Pos \ - (25UL) /*!< VADC_G RCR: FEN (Bit 25) */ -#define VADC_G_RCR_FEN_Msk \ - (0x6000000UL) /*!< VADC_G RCR: FEN (Bitfield-Mask: 0x03) */ -#define VADC_G_RCR_SRGEN_Pos \ - (31UL) /*!< VADC_G RCR: SRGEN (Bit 31) */ -#define VADC_G_RCR_SRGEN_Msk \ - (0x80000000UL) /*!< VADC_G RCR: SRGEN (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_RES --------------------------------- */ -#define VADC_G_RES_RESULT_Pos \ - (0UL) /*!< VADC_G RES: RESULT (Bit 0) */ -#define VADC_G_RES_RESULT_Msk \ - (0xffffUL) /*!< VADC_G RES: RESULT (Bitfield-Mask: 0xffff) */ -#define VADC_G_RES_DRC_Pos \ - (16UL) /*!< VADC_G RES: DRC (Bit 16) */ -#define VADC_G_RES_DRC_Msk \ - (0xf0000UL) /*!< VADC_G RES: DRC (Bitfield-Mask: 0x0f) */ -#define VADC_G_RES_CHNR_Pos \ - (20UL) /*!< VADC_G RES: CHNR (Bit 20) */ -#define VADC_G_RES_CHNR_Msk \ - (0x1f00000UL) /*!< VADC_G RES: CHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_RES_EMUX_Pos \ - (25UL) /*!< VADC_G RES: EMUX (Bit 25) */ -#define VADC_G_RES_EMUX_Msk \ - (0xe000000UL) /*!< VADC_G RES: EMUX (Bitfield-Mask: 0x07) */ -#define VADC_G_RES_CRS_Pos \ - (28UL) /*!< VADC_G RES: CRS (Bit 28) */ -#define VADC_G_RES_CRS_Msk \ - (0x30000000UL) /*!< VADC_G RES: CRS (Bitfield-Mask: 0x03) */ -#define VADC_G_RES_FCR_Pos \ - (30UL) /*!< VADC_G RES: FCR (Bit 30) */ -#define VADC_G_RES_FCR_Msk \ - (0x40000000UL) /*!< VADC_G RES: FCR (Bitfield-Mask: 0x01) */ -#define VADC_G_RES_VF_Pos (31UL) /*!< VADC_G RES: VF (Bit 31) */ -#define VADC_G_RES_VF_Msk \ - (0x80000000UL) /*!< VADC_G RES: VF (Bitfield-Mask: 0x01) */ - -/* --------------------------------- VADC_G_RESD -------------------------------- */ -#define VADC_G_RESD_RESULT_Pos \ - (0UL) /*!< VADC_G RESD: RESULT (Bit 0) */ -#define VADC_G_RESD_RESULT_Msk \ - (0xffffUL) /*!< VADC_G RESD: RESULT (Bitfield-Mask: 0xffff) */ -#define VADC_G_RESD_DRC_Pos \ - (16UL) /*!< VADC_G RESD: DRC (Bit 16) */ -#define VADC_G_RESD_DRC_Msk \ - (0xf0000UL) /*!< VADC_G RESD: DRC (Bitfield-Mask: 0x0f) */ -#define VADC_G_RESD_CHNR_Pos \ - (20UL) /*!< VADC_G RESD: CHNR (Bit 20) */ -#define VADC_G_RESD_CHNR_Msk \ - (0x1f00000UL) /*!< VADC_G RESD: CHNR (Bitfield-Mask: 0x1f) */ -#define VADC_G_RESD_EMUX_Pos \ - (25UL) /*!< VADC_G RESD: EMUX (Bit 25) */ -#define VADC_G_RESD_EMUX_Msk \ - (0xe000000UL) /*!< VADC_G RESD: EMUX (Bitfield-Mask: 0x07) */ -#define VADC_G_RESD_CRS_Pos \ - (28UL) /*!< VADC_G RESD: CRS (Bit 28) */ -#define VADC_G_RESD_CRS_Msk \ - (0x30000000UL) /*!< VADC_G RESD: CRS (Bitfield-Mask: 0x03) */ -#define VADC_G_RESD_FCR_Pos \ - (30UL) /*!< VADC_G RESD: FCR (Bit 30) */ -#define VADC_G_RESD_FCR_Msk \ - (0x40000000UL) /*!< VADC_G RESD: FCR (Bitfield-Mask: 0x01) */ -#define VADC_G_RESD_VF_Pos \ - (31UL) /*!< VADC_G RESD: VF (Bit 31) */ -#define VADC_G_RESD_VF_Msk \ - (0x80000000UL) /*!< VADC_G RESD: VF (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'DSD' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- DSD_CLC ---------------------------------- */ -#define DSD_CLC_DISR_Pos (0UL) /*!< DSD CLC: DISR (Bit 0) */ -#define DSD_CLC_DISR_Msk (0x1UL) /*!< DSD CLC: DISR (Bitfield-Mask: 0x01) */ -#define DSD_CLC_DISS_Pos (1UL) /*!< DSD CLC: DISS (Bit 1) */ -#define DSD_CLC_DISS_Msk (0x2UL) /*!< DSD CLC: DISS (Bitfield-Mask: 0x01) */ -#define DSD_CLC_EDIS_Pos (3UL) /*!< DSD CLC: EDIS (Bit 3) */ -#define DSD_CLC_EDIS_Msk (0x8UL) /*!< DSD CLC: EDIS (Bitfield-Mask: 0x01) */ - -/* ----------------------------------- DSD_ID ----------------------------------- */ -#define DSD_ID_MOD_REV_Pos (0UL) /*!< DSD ID: MOD_REV (Bit 0) */ -#define DSD_ID_MOD_REV_Msk \ - (0xffUL) /*!< DSD ID: MOD_REV (Bitfield-Mask: 0xff) */ -#define DSD_ID_MOD_TYPE_Pos \ - (8UL) /*!< DSD ID: MOD_TYPE (Bit 8) */ -#define DSD_ID_MOD_TYPE_Msk \ - (0xff00UL) /*!< DSD ID: MOD_TYPE (Bitfield-Mask: 0xff) */ -#define DSD_ID_MOD_NUMBER_Pos \ - (16UL) /*!< DSD ID: MOD_NUMBER (Bit 16) */ -#define DSD_ID_MOD_NUMBER_Msk \ - (0xffff0000UL) /*!< DSD ID: MOD_NUMBER (Bitfield-Mask: 0xffff) */ - -/* ----------------------------------- DSD_OCS ---------------------------------- */ -#define DSD_OCS_SUS_Pos (24UL) /*!< DSD OCS: SUS (Bit 24) */ -#define DSD_OCS_SUS_Msk \ - (0xf000000UL) /*!< DSD OCS: SUS (Bitfield-Mask: 0x0f) */ -#define DSD_OCS_SUS_P_Pos (28UL) /*!< DSD OCS: SUS_P (Bit 28) */ -#define DSD_OCS_SUS_P_Msk \ - (0x10000000UL) /*!< DSD OCS: SUS_P (Bitfield-Mask: 0x01) */ -#define DSD_OCS_SUSSTA_Pos \ - (29UL) /*!< DSD OCS: SUSSTA (Bit 29) */ -#define DSD_OCS_SUSSTA_Msk \ - (0x20000000UL) /*!< DSD OCS: SUSSTA (Bitfield-Mask: 0x01) */ - -/* --------------------------------- DSD_GLOBCFG -------------------------------- */ -#define DSD_GLOBCFG_MCSEL_Pos \ - (0UL) /*!< DSD GLOBCFG: MCSEL (Bit 0) */ -#define DSD_GLOBCFG_MCSEL_Msk \ - (0x7UL) /*!< DSD GLOBCFG: MCSEL (Bitfield-Mask: 0x07) */ - -/* --------------------------------- DSD_GLOBRC --------------------------------- */ -#define DSD_GLOBRC_CH0RUN_Pos \ - (0UL) /*!< DSD GLOBRC: CH0RUN (Bit 0) */ -#define DSD_GLOBRC_CH0RUN_Msk \ - (0x1UL) /*!< DSD GLOBRC: CH0RUN (Bitfield-Mask: 0x01) */ -#define DSD_GLOBRC_CH1RUN_Pos \ - (1UL) /*!< DSD GLOBRC: CH1RUN (Bit 1) */ -#define DSD_GLOBRC_CH1RUN_Msk \ - (0x2UL) /*!< DSD GLOBRC: CH1RUN (Bitfield-Mask: 0x01) */ -#define DSD_GLOBRC_CH2RUN_Pos \ - (2UL) /*!< DSD GLOBRC: CH2RUN (Bit 2) */ -#define DSD_GLOBRC_CH2RUN_Msk \ - (0x4UL) /*!< DSD GLOBRC: CH2RUN (Bitfield-Mask: 0x01) */ -#define DSD_GLOBRC_CH3RUN_Pos \ - (3UL) /*!< DSD GLOBRC: CH3RUN (Bit 3) */ -#define DSD_GLOBRC_CH3RUN_Msk \ - (0x8UL) /*!< DSD GLOBRC: CH3RUN (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- DSD_CGCFG --------------------------------- */ -#define DSD_CGCFG_CGMOD_Pos \ - (0UL) /*!< DSD CGCFG: CGMOD (Bit 0) */ -#define DSD_CGCFG_CGMOD_Msk \ - (0x3UL) /*!< DSD CGCFG: CGMOD (Bitfield-Mask: 0x03) */ -#define DSD_CGCFG_BREV_Pos (2UL) /*!< DSD CGCFG: BREV (Bit 2) */ -#define DSD_CGCFG_BREV_Msk \ - (0x4UL) /*!< DSD CGCFG: BREV (Bitfield-Mask: 0x01) */ -#define DSD_CGCFG_SIGPOL_Pos \ - (3UL) /*!< DSD CGCFG: SIGPOL (Bit 3) */ -#define DSD_CGCFG_SIGPOL_Msk \ - (0x8UL) /*!< DSD CGCFG: SIGPOL (Bitfield-Mask: 0x01) */ -#define DSD_CGCFG_DIVCG_Pos \ - (4UL) /*!< DSD CGCFG: DIVCG (Bit 4) */ -#define DSD_CGCFG_DIVCG_Msk \ - (0xf0UL) /*!< DSD CGCFG: DIVCG (Bitfield-Mask: 0x0f) */ -#define DSD_CGCFG_RUN_Pos (15UL) /*!< DSD CGCFG: RUN (Bit 15) */ -#define DSD_CGCFG_RUN_Msk \ - (0x8000UL) /*!< DSD CGCFG: RUN (Bitfield-Mask: 0x01) */ -#define DSD_CGCFG_BITCOUNT_Pos \ - (16UL) /*!< DSD CGCFG: BITCOUNT (Bit 16) */ -#define DSD_CGCFG_BITCOUNT_Msk \ - (0x1f0000UL) /*!< DSD CGCFG: BITCOUNT (Bitfield-Mask: 0x1f) */ -#define DSD_CGCFG_STEPCOUNT_Pos \ - (24UL) /*!< DSD CGCFG: STEPCOUNT (Bit 24) */ -#define DSD_CGCFG_STEPCOUNT_Msk \ - (0xf000000UL) /*!< DSD CGCFG: STEPCOUNT (Bitfield-Mask: 0x0f) */ -#define DSD_CGCFG_STEPS_Pos \ - (28UL) /*!< DSD CGCFG: STEPS (Bit 28) */ -#define DSD_CGCFG_STEPS_Msk \ - (0x10000000UL) /*!< DSD CGCFG: STEPS (Bitfield-Mask: 0x01) */ -#define DSD_CGCFG_STEPD_Pos \ - (29UL) /*!< DSD CGCFG: STEPD (Bit 29) */ -#define DSD_CGCFG_STEPD_Msk \ - (0x20000000UL) /*!< DSD CGCFG: STEPD (Bitfield-Mask: 0x01) */ -#define DSD_CGCFG_SGNCG_Pos \ - (30UL) /*!< DSD CGCFG: SGNCG (Bit 30) */ -#define DSD_CGCFG_SGNCG_Msk \ - (0x40000000UL) /*!< DSD CGCFG: SGNCG (Bitfield-Mask: 0x01) */ - -/* --------------------------------- DSD_EVFLAG --------------------------------- */ -#define DSD_EVFLAG_RESEV0_Pos \ - (0UL) /*!< DSD EVFLAG: RESEV0 (Bit 0) */ -#define DSD_EVFLAG_RESEV0_Msk \ - (0x1UL) /*!< DSD EVFLAG: RESEV0 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_RESEV1_Pos \ - (1UL) /*!< DSD EVFLAG: RESEV1 (Bit 1) */ -#define DSD_EVFLAG_RESEV1_Msk \ - (0x2UL) /*!< DSD EVFLAG: RESEV1 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_RESEV2_Pos \ - (2UL) /*!< DSD EVFLAG: RESEV2 (Bit 2) */ -#define DSD_EVFLAG_RESEV2_Msk \ - (0x4UL) /*!< DSD EVFLAG: RESEV2 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_RESEV3_Pos \ - (3UL) /*!< DSD EVFLAG: RESEV3 (Bit 3) */ -#define DSD_EVFLAG_RESEV3_Msk \ - (0x8UL) /*!< DSD EVFLAG: RESEV3 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV0_Pos \ - (16UL) /*!< DSD EVFLAG: ALEV0 (Bit 16) */ -#define DSD_EVFLAG_ALEV0_Msk \ - (0x10000UL) /*!< DSD EVFLAG: ALEV0 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV1_Pos \ - (17UL) /*!< DSD EVFLAG: ALEV1 (Bit 17) */ -#define DSD_EVFLAG_ALEV1_Msk \ - (0x20000UL) /*!< DSD EVFLAG: ALEV1 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV2_Pos \ - (18UL) /*!< DSD EVFLAG: ALEV2 (Bit 18) */ -#define DSD_EVFLAG_ALEV2_Msk \ - (0x40000UL) /*!< DSD EVFLAG: ALEV2 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV3_Pos \ - (19UL) /*!< DSD EVFLAG: ALEV3 (Bit 19) */ -#define DSD_EVFLAG_ALEV3_Msk \ - (0x80000UL) /*!< DSD EVFLAG: ALEV3 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV4_Pos \ - (20UL) /*!< DSD EVFLAG: ALEV4 (Bit 20) */ -#define DSD_EVFLAG_ALEV4_Msk \ - (0x100000UL) /*!< DSD EVFLAG: ALEV4 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV5_Pos \ - (21UL) /*!< DSD EVFLAG: ALEV5 (Bit 21) */ -#define DSD_EVFLAG_ALEV5_Msk \ - (0x200000UL) /*!< DSD EVFLAG: ALEV5 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV6_Pos \ - (22UL) /*!< DSD EVFLAG: ALEV6 (Bit 22) */ -#define DSD_EVFLAG_ALEV6_Msk \ - (0x400000UL) /*!< DSD EVFLAG: ALEV6 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV7_Pos \ - (23UL) /*!< DSD EVFLAG: ALEV7 (Bit 23) */ -#define DSD_EVFLAG_ALEV7_Msk \ - (0x800000UL) /*!< DSD EVFLAG: ALEV7 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV8_Pos \ - (24UL) /*!< DSD EVFLAG: ALEV8 (Bit 24) */ -#define DSD_EVFLAG_ALEV8_Msk \ - (0x1000000UL) /*!< DSD EVFLAG: ALEV8 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAG_ALEV9_Pos \ - (25UL) /*!< DSD EVFLAG: ALEV9 (Bit 25) */ -#define DSD_EVFLAG_ALEV9_Msk \ - (0x2000000UL) /*!< DSD EVFLAG: ALEV9 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- DSD_EVFLAGCLR ------------------------------- */ -#define DSD_EVFLAGCLR_RESEC0_Pos \ - (0UL) /*!< DSD EVFLAGCLR: RESEC0 (Bit 0) */ -#define DSD_EVFLAGCLR_RESEC0_Msk \ - (0x1UL) /*!< DSD EVFLAGCLR: RESEC0 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAGCLR_RESEC1_Pos \ - (1UL) /*!< DSD EVFLAGCLR: RESEC1 (Bit 1) */ -#define DSD_EVFLAGCLR_RESEC1_Msk \ - (0x2UL) /*!< DSD EVFLAGCLR: RESEC1 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAGCLR_RESEC2_Pos \ - (2UL) /*!< DSD EVFLAGCLR: RESEC2 (Bit 2) */ -#define DSD_EVFLAGCLR_RESEC2_Msk \ - (0x4UL) /*!< DSD EVFLAGCLR: RESEC2 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAGCLR_RESEC3_Pos \ - (3UL) /*!< DSD EVFLAGCLR: RESEC3 (Bit 3) */ -#define DSD_EVFLAGCLR_RESEC3_Msk \ - (0x8UL) /*!< DSD EVFLAGCLR: RESEC3 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAGCLR_ALEC0_Pos \ - (16UL) /*!< DSD EVFLAGCLR: ALEC0 (Bit 16) */ -#define DSD_EVFLAGCLR_ALEC0_Msk \ - (0x10000UL) /*!< DSD EVFLAGCLR: ALEC0 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAGCLR_ALEC1_Pos \ - (17UL) /*!< DSD EVFLAGCLR: ALEC1 (Bit 17) */ -#define DSD_EVFLAGCLR_ALEC1_Msk \ - (0x20000UL) /*!< DSD EVFLAGCLR: ALEC1 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAGCLR_ALEC2_Pos \ - (18UL) /*!< DSD EVFLAGCLR: ALEC2 (Bit 18) */ -#define DSD_EVFLAGCLR_ALEC2_Msk \ - (0x40000UL) /*!< DSD EVFLAGCLR: ALEC2 (Bitfield-Mask: 0x01) */ -#define DSD_EVFLAGCLR_ALEC3_Pos \ - (19UL) /*!< DSD EVFLAGCLR: ALEC3 (Bit 19) */ -#define DSD_EVFLAGCLR_ALEC3_Msk \ - (0x80000UL) /*!< DSD EVFLAGCLR: ALEC3 (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'DSD_CH' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- DSD_CH_MODCFG ------------------------------- */ -#define DSD_CH_MODCFG_DIVM_Pos \ - (16UL) /*!< DSD_CH MODCFG: DIVM (Bit 16) */ -#define DSD_CH_MODCFG_DIVM_Msk \ - (0xf0000UL) /*!< DSD_CH MODCFG: DIVM (Bitfield-Mask: 0x0f) */ -#define DSD_CH_MODCFG_DWC_Pos \ - (23UL) /*!< DSD_CH MODCFG: DWC (Bit 23) */ -#define DSD_CH_MODCFG_DWC_Msk \ - (0x800000UL) /*!< DSD_CH MODCFG: DWC (Bitfield-Mask: 0x01) */ - -/* -------------------------------- DSD_CH_DICFG -------------------------------- */ -#define DSD_CH_DICFG_DSRC_Pos \ - (0UL) /*!< DSD_CH DICFG: DSRC (Bit 0) */ -#define DSD_CH_DICFG_DSRC_Msk \ - (0xfUL) /*!< DSD_CH DICFG: DSRC (Bitfield-Mask: 0x0f) */ -#define DSD_CH_DICFG_DSWC_Pos \ - (7UL) /*!< DSD_CH DICFG: DSWC (Bit 7) */ -#define DSD_CH_DICFG_DSWC_Msk \ - (0x80UL) /*!< DSD_CH DICFG: DSWC (Bitfield-Mask: 0x01) */ -#define DSD_CH_DICFG_ITRMODE_Pos \ - (8UL) /*!< DSD_CH DICFG: ITRMODE (Bit 8) */ -#define DSD_CH_DICFG_ITRMODE_Msk \ - (0x300UL) /*!< DSD_CH DICFG: ITRMODE (Bitfield-Mask: 0x03) */ -#define DSD_CH_DICFG_TSTRMODE_Pos \ - (10UL) /*!< DSD_CH DICFG: TSTRMODE (Bit 10) */ -#define DSD_CH_DICFG_TSTRMODE_Msk \ - (0xc00UL) /*!< DSD_CH DICFG: TSTRMODE (Bitfield-Mask: 0x03) */ -#define DSD_CH_DICFG_TRSEL_Pos \ - (12UL) /*!< DSD_CH DICFG: TRSEL (Bit 12) */ -#define DSD_CH_DICFG_TRSEL_Msk \ - (0x7000UL) /*!< DSD_CH DICFG: TRSEL (Bitfield-Mask: 0x07) */ -#define DSD_CH_DICFG_TRWC_Pos \ - (15UL) /*!< DSD_CH DICFG: TRWC (Bit 15) */ -#define DSD_CH_DICFG_TRWC_Msk \ - (0x8000UL) /*!< DSD_CH DICFG: TRWC (Bitfield-Mask: 0x01) */ -#define DSD_CH_DICFG_CSRC_Pos \ - (16UL) /*!< DSD_CH DICFG: CSRC (Bit 16) */ -#define DSD_CH_DICFG_CSRC_Msk \ - (0xf0000UL) /*!< DSD_CH DICFG: CSRC (Bitfield-Mask: 0x0f) */ -#define DSD_CH_DICFG_STROBE_Pos \ - (20UL) /*!< DSD_CH DICFG: STROBE (Bit 20) */ -#define DSD_CH_DICFG_STROBE_Msk \ - (0xf00000UL) /*!< DSD_CH DICFG: STROBE (Bitfield-Mask: 0x0f) */ -#define DSD_CH_DICFG_SCWC_Pos \ - (31UL) /*!< DSD_CH DICFG: SCWC (Bit 31) */ -#define DSD_CH_DICFG_SCWC_Msk \ - (0x80000000UL) /*!< DSD_CH DICFG: SCWC (Bitfield-Mask: 0x01) */ - -/* -------------------------------- DSD_CH_FCFGC -------------------------------- */ -#define DSD_CH_FCFGC_CFMDF_Pos \ - (0UL) /*!< DSD_CH FCFGC: CFMDF (Bit 0) */ -#define DSD_CH_FCFGC_CFMDF_Msk \ - (0xffUL) /*!< DSD_CH FCFGC: CFMDF (Bitfield-Mask: 0xff) */ -#define DSD_CH_FCFGC_CFMC_Pos \ - (8UL) /*!< DSD_CH FCFGC: CFMC (Bit 8) */ -#define DSD_CH_FCFGC_CFMC_Msk \ - (0x300UL) /*!< DSD_CH FCFGC: CFMC (Bitfield-Mask: 0x03) */ -#define DSD_CH_FCFGC_CFEN_Pos \ - (10UL) /*!< DSD_CH FCFGC: CFEN (Bit 10) */ -#define DSD_CH_FCFGC_CFEN_Msk \ - (0x400UL) /*!< DSD_CH FCFGC: CFEN (Bitfield-Mask: 0x01) */ -#define DSD_CH_FCFGC_SRGM_Pos \ - (14UL) /*!< DSD_CH FCFGC: SRGM (Bit 14) */ -#define DSD_CH_FCFGC_SRGM_Msk \ - (0xc000UL) /*!< DSD_CH FCFGC: SRGM (Bitfield-Mask: 0x03) */ -#define DSD_CH_FCFGC_CFMSV_Pos \ - (16UL) /*!< DSD_CH FCFGC: CFMSV (Bit 16) */ -#define DSD_CH_FCFGC_CFMSV_Msk \ - (0xff0000UL) /*!< DSD_CH FCFGC: CFMSV (Bitfield-Mask: 0xff) */ -#define DSD_CH_FCFGC_CFMDCNT_Pos \ - (24UL) /*!< DSD_CH FCFGC: CFMDCNT (Bit 24) */ -#define DSD_CH_FCFGC_CFMDCNT_Msk \ - (0xff000000UL) /*!< DSD_CH FCFGC: CFMDCNT (Bitfield-Mask: 0xff) */ - -/* -------------------------------- DSD_CH_FCFGA -------------------------------- */ -#define DSD_CH_FCFGA_CFADF_Pos \ - (0UL) /*!< DSD_CH FCFGA: CFADF (Bit 0) */ -#define DSD_CH_FCFGA_CFADF_Msk \ - (0xffUL) /*!< DSD_CH FCFGA: CFADF (Bitfield-Mask: 0xff) */ -#define DSD_CH_FCFGA_CFAC_Pos \ - (8UL) /*!< DSD_CH FCFGA: CFAC (Bit 8) */ -#define DSD_CH_FCFGA_CFAC_Msk \ - (0x300UL) /*!< DSD_CH FCFGA: CFAC (Bitfield-Mask: 0x03) */ -#define DSD_CH_FCFGA_SRGA_Pos \ - (10UL) /*!< DSD_CH FCFGA: SRGA (Bit 10) */ -#define DSD_CH_FCFGA_SRGA_Msk \ - (0xc00UL) /*!< DSD_CH FCFGA: SRGA (Bitfield-Mask: 0x03) */ -#define DSD_CH_FCFGA_ESEL_Pos \ - (12UL) /*!< DSD_CH FCFGA: ESEL (Bit 12) */ -#define DSD_CH_FCFGA_ESEL_Msk \ - (0x3000UL) /*!< DSD_CH FCFGA: ESEL (Bitfield-Mask: 0x03) */ -#define DSD_CH_FCFGA_EGT_Pos \ - (14UL) /*!< DSD_CH FCFGA: EGT (Bit 14) */ -#define DSD_CH_FCFGA_EGT_Msk \ - (0x4000UL) /*!< DSD_CH FCFGA: EGT (Bitfield-Mask: 0x01) */ -#define DSD_CH_FCFGA_CFADCNT_Pos \ - (24UL) /*!< DSD_CH FCFGA: CFADCNT (Bit 24) */ -#define DSD_CH_FCFGA_CFADCNT_Msk \ - (0xff000000UL) /*!< DSD_CH FCFGA: CFADCNT (Bitfield-Mask: 0xff) */ - -/* -------------------------------- DSD_CH_IWCTR -------------------------------- */ -#define DSD_CH_IWCTR_NVALCNT_Pos \ - (0UL) /*!< DSD_CH IWCTR: NVALCNT (Bit 0) */ -#define DSD_CH_IWCTR_NVALCNT_Msk \ - (0x3fUL) /*!< DSD_CH IWCTR: NVALCNT (Bitfield-Mask: 0x3f) */ -#define DSD_CH_IWCTR_INTEN_Pos \ - (7UL) /*!< DSD_CH IWCTR: INTEN (Bit 7) */ -#define DSD_CH_IWCTR_INTEN_Msk \ - (0x80UL) /*!< DSD_CH IWCTR: INTEN (Bitfield-Mask: 0x01) */ -#define DSD_CH_IWCTR_REPCNT_Pos \ - (8UL) /*!< DSD_CH IWCTR: REPCNT (Bit 8) */ -#define DSD_CH_IWCTR_REPCNT_Msk \ - (0xf00UL) /*!< DSD_CH IWCTR: REPCNT (Bitfield-Mask: 0x0f) */ -#define DSD_CH_IWCTR_REPVAL_Pos \ - (12UL) /*!< DSD_CH IWCTR: REPVAL (Bit 12) */ -#define DSD_CH_IWCTR_REPVAL_Msk \ - (0xf000UL) /*!< DSD_CH IWCTR: REPVAL (Bitfield-Mask: 0x0f) */ -#define DSD_CH_IWCTR_NVALDIS_Pos \ - (16UL) /*!< DSD_CH IWCTR: NVALDIS (Bit 16) */ -#define DSD_CH_IWCTR_NVALDIS_Msk \ - (0x3f0000UL) /*!< DSD_CH IWCTR: NVALDIS (Bitfield-Mask: 0x3f) */ -#define DSD_CH_IWCTR_IWS_Pos \ - (23UL) /*!< DSD_CH IWCTR: IWS (Bit 23) */ -#define DSD_CH_IWCTR_IWS_Msk \ - (0x800000UL) /*!< DSD_CH IWCTR: IWS (Bitfield-Mask: 0x01) */ -#define DSD_CH_IWCTR_NVALINT_Pos \ - (24UL) /*!< DSD_CH IWCTR: NVALINT (Bit 24) */ -#define DSD_CH_IWCTR_NVALINT_Msk \ - (0x3f000000UL) /*!< DSD_CH IWCTR: NVALINT (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- DSD_CH_BOUNDSEL ------------------------------ */ -#define DSD_CH_BOUNDSEL_BOUNDARYL_Pos \ - (0UL) /*!< DSD_CH BOUNDSEL: BOUNDARYL (Bit 0) */ -#define DSD_CH_BOUNDSEL_BOUNDARYL_Msk \ - (0xffffUL) /*!< DSD_CH BOUNDSEL: BOUNDARYL (Bitfield-Mask: 0xffff) */ -#define DSD_CH_BOUNDSEL_BOUNDARYU_Pos \ - (16UL) /*!< DSD_CH BOUNDSEL: BOUNDARYU (Bit 16) */ -#define DSD_CH_BOUNDSEL_BOUNDARYU_Msk \ - (0xffff0000UL) /*!< DSD_CH BOUNDSEL: BOUNDARYU (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- DSD_CH_RESM -------------------------------- */ -#define DSD_CH_RESM_RESULT_Pos \ - (0UL) /*!< DSD_CH RESM: RESULT (Bit 0) */ -#define DSD_CH_RESM_RESULT_Msk \ - (0xffffUL) /*!< DSD_CH RESM: RESULT (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- DSD_CH_OFFM -------------------------------- */ -#define DSD_CH_OFFM_OFFSET_Pos \ - (0UL) /*!< DSD_CH OFFM: OFFSET (Bit 0) */ -#define DSD_CH_OFFM_OFFSET_Msk \ - (0xffffUL) /*!< DSD_CH OFFM: OFFSET (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- DSD_CH_RESA -------------------------------- */ -#define DSD_CH_RESA_RESULT_Pos \ - (0UL) /*!< DSD_CH RESA: RESULT (Bit 0) */ -#define DSD_CH_RESA_RESULT_Msk \ - (0xffffUL) /*!< DSD_CH RESA: RESULT (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- DSD_CH_TSTMP -------------------------------- */ -#define DSD_CH_TSTMP_RESULT_Pos \ - (0UL) /*!< DSD_CH TSTMP: RESULT (Bit 0) */ -#define DSD_CH_TSTMP_RESULT_Msk \ - (0xffffUL) /*!< DSD_CH TSTMP: RESULT (Bitfield-Mask: 0xffff) */ -#define DSD_CH_TSTMP_CFMDCNT_Pos \ - (16UL) /*!< DSD_CH TSTMP: CFMDCNT (Bit 16) */ -#define DSD_CH_TSTMP_CFMDCNT_Msk \ - (0xff0000UL) /*!< DSD_CH TSTMP: CFMDCNT (Bitfield-Mask: 0xff) */ -#define DSD_CH_TSTMP_NVALCNT_Pos \ - (24UL) /*!< DSD_CH TSTMP: NVALCNT (Bit 24) */ -#define DSD_CH_TSTMP_NVALCNT_Msk \ - (0x3f000000UL) /*!< DSD_CH TSTMP: NVALCNT (Bitfield-Mask: 0x3f) */ - -/* -------------------------------- DSD_CH_CGSYNC ------------------------------- */ -#define DSD_CH_CGSYNC_SDCOUNT_Pos \ - (0UL) /*!< DSD_CH CGSYNC: SDCOUNT (Bit 0) */ -#define DSD_CH_CGSYNC_SDCOUNT_Msk \ - (0xffUL) /*!< DSD_CH CGSYNC: SDCOUNT (Bitfield-Mask: 0xff) */ -#define DSD_CH_CGSYNC_SDCAP_Pos \ - (8UL) /*!< DSD_CH CGSYNC: SDCAP (Bit 8) */ -#define DSD_CH_CGSYNC_SDCAP_Msk \ - (0xff00UL) /*!< DSD_CH CGSYNC: SDCAP (Bitfield-Mask: 0xff) */ -#define DSD_CH_CGSYNC_SDPOS_Pos \ - (16UL) /*!< DSD_CH CGSYNC: SDPOS (Bit 16) */ -#define DSD_CH_CGSYNC_SDPOS_Msk \ - (0xff0000UL) /*!< DSD_CH CGSYNC: SDPOS (Bitfield-Mask: 0xff) */ -#define DSD_CH_CGSYNC_SDNEG_Pos \ - (24UL) /*!< DSD_CH CGSYNC: SDNEG (Bit 24) */ -#define DSD_CH_CGSYNC_SDNEG_Msk \ - (0xff000000UL) /*!< DSD_CH CGSYNC: SDNEG (Bitfield-Mask: 0xff) */ - -/* ------------------------------- DSD_CH_RECTCFG ------------------------------- */ -#define DSD_CH_RECTCFG_RFEN_Pos \ - (0UL) /*!< DSD_CH RECTCFG: RFEN (Bit 0) */ -#define DSD_CH_RECTCFG_RFEN_Msk \ - (0x1UL) /*!< DSD_CH RECTCFG: RFEN (Bitfield-Mask: 0x01) */ -#define DSD_CH_RECTCFG_SSRC_Pos \ - (4UL) /*!< DSD_CH RECTCFG: SSRC (Bit 4) */ -#define DSD_CH_RECTCFG_SSRC_Msk \ - (0x30UL) /*!< DSD_CH RECTCFG: SSRC (Bitfield-Mask: 0x03) */ -#define DSD_CH_RECTCFG_SDVAL_Pos \ - (15UL) /*!< DSD_CH RECTCFG: SDVAL (Bit 15) */ -#define DSD_CH_RECTCFG_SDVAL_Msk \ - (0x8000UL) /*!< DSD_CH RECTCFG: SDVAL (Bitfield-Mask: 0x01) */ -#define DSD_CH_RECTCFG_SGNCS_Pos \ - (30UL) /*!< DSD_CH RECTCFG: SGNCS (Bit 30) */ -#define DSD_CH_RECTCFG_SGNCS_Msk \ - (0x40000000UL) /*!< DSD_CH RECTCFG: SGNCS (Bitfield-Mask: 0x01) */ -#define DSD_CH_RECTCFG_SGND_Pos \ - (31UL) /*!< DSD_CH RECTCFG: SGND (Bit 31) */ -#define DSD_CH_RECTCFG_SGND_Msk \ - (0x80000000UL) /*!< DSD_CH RECTCFG: SGND (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'DAC' Position & Mask ================ */ -/* ================================================================================ */ - -/* ----------------------------------- DAC_ID ----------------------------------- */ -#define DAC_ID_MODR_Pos (0UL) /*!< DAC ID: MODR (Bit 0) */ -#define DAC_ID_MODR_Msk (0xffUL) /*!< DAC ID: MODR (Bitfield-Mask: 0xff) */ -#define DAC_ID_MODT_Pos (8UL) /*!< DAC ID: MODT (Bit 8) */ -#define DAC_ID_MODT_Msk \ - (0xff00UL) /*!< DAC ID: MODT (Bitfield-Mask: 0xff) */ -#define DAC_ID_MODN_Pos (16UL) /*!< DAC ID: MODN (Bit 16) */ -#define DAC_ID_MODN_Msk \ - (0xffff0000UL) /*!< DAC ID: MODN (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- DAC_DAC0CFG0 -------------------------------- */ -#define DAC_DAC0CFG0_FREQ_Pos \ - (0UL) /*!< DAC DAC0CFG0: FREQ (Bit 0) */ -#define DAC_DAC0CFG0_FREQ_Msk \ - (0xfffffUL) /*!< DAC DAC0CFG0: FREQ (Bitfield-Mask: 0xfffff) */ -#define DAC_DAC0CFG0_MODE_Pos \ - (20UL) /*!< DAC DAC0CFG0: MODE (Bit 20) */ -#define DAC_DAC0CFG0_MODE_Msk \ - (0x700000UL) /*!< DAC DAC0CFG0: MODE (Bitfield-Mask: 0x07) */ -#define DAC_DAC0CFG0_SIGN_Pos \ - (23UL) /*!< DAC DAC0CFG0: SIGN (Bit 23) */ -#define DAC_DAC0CFG0_SIGN_Msk \ - (0x800000UL) /*!< DAC DAC0CFG0: SIGN (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_FIFOIND_Pos \ - (24UL) /*!< DAC DAC0CFG0: FIFOIND (Bit 24) */ -#define DAC_DAC0CFG0_FIFOIND_Msk \ - (0x3000000UL) /*!< DAC DAC0CFG0: FIFOIND (Bitfield-Mask: 0x03) */ -#define DAC_DAC0CFG0_FIFOEMP_Pos \ - (26UL) /*!< DAC DAC0CFG0: FIFOEMP (Bit 26) */ -#define DAC_DAC0CFG0_FIFOEMP_Msk \ - (0x4000000UL) /*!< DAC DAC0CFG0: FIFOEMP (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_FIFOFUL_Pos \ - (27UL) /*!< DAC DAC0CFG0: FIFOFUL (Bit 27) */ -#define DAC_DAC0CFG0_FIFOFUL_Msk \ - (0x8000000UL) /*!< DAC DAC0CFG0: FIFOFUL (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_NEGATE_Pos \ - (28UL) /*!< DAC DAC0CFG0: NEGATE (Bit 28) */ -#define DAC_DAC0CFG0_NEGATE_Msk \ - (0x10000000UL) /*!< DAC DAC0CFG0: NEGATE (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_SIGNEN_Pos \ - (29UL) /*!< DAC DAC0CFG0: SIGNEN (Bit 29) */ -#define DAC_DAC0CFG0_SIGNEN_Msk \ - (0x20000000UL) /*!< DAC DAC0CFG0: SIGNEN (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_SREN_Pos \ - (30UL) /*!< DAC DAC0CFG0: SREN (Bit 30) */ -#define DAC_DAC0CFG0_SREN_Msk \ - (0x40000000UL) /*!< DAC DAC0CFG0: SREN (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG0_RUN_Pos \ - (31UL) /*!< DAC DAC0CFG0: RUN (Bit 31) */ -#define DAC_DAC0CFG0_RUN_Msk \ - (0x80000000UL) /*!< DAC DAC0CFG0: RUN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- DAC_DAC0CFG1 -------------------------------- */ -#define DAC_DAC0CFG1_SCALE_Pos \ - (0UL) /*!< DAC DAC0CFG1: SCALE (Bit 0) */ -#define DAC_DAC0CFG1_SCALE_Msk \ - (0x7UL) /*!< DAC DAC0CFG1: SCALE (Bitfield-Mask: 0x07) */ -#define DAC_DAC0CFG1_MULDIV_Pos \ - (3UL) /*!< DAC DAC0CFG1: MULDIV (Bit 3) */ -#define DAC_DAC0CFG1_MULDIV_Msk \ - (0x8UL) /*!< DAC DAC0CFG1: MULDIV (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG1_OFFS_Pos \ - (4UL) /*!< DAC DAC0CFG1: OFFS (Bit 4) */ -#define DAC_DAC0CFG1_OFFS_Msk \ - (0xff0UL) /*!< DAC DAC0CFG1: OFFS (Bitfield-Mask: 0xff) */ -#define DAC_DAC0CFG1_TRIGSEL_Pos \ - (12UL) /*!< DAC DAC0CFG1: TRIGSEL (Bit 12) */ -#define DAC_DAC0CFG1_TRIGSEL_Msk \ - (0x7000UL) /*!< DAC DAC0CFG1: TRIGSEL (Bitfield-Mask: 0x07) */ -#define DAC_DAC0CFG1_DATMOD_Pos \ - (15UL) /*!< DAC DAC0CFG1: DATMOD (Bit 15) */ -#define DAC_DAC0CFG1_DATMOD_Msk \ - (0x8000UL) /*!< DAC DAC0CFG1: DATMOD (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG1_SWTRIG_Pos \ - (16UL) /*!< DAC DAC0CFG1: SWTRIG (Bit 16) */ -#define DAC_DAC0CFG1_SWTRIG_Msk \ - (0x10000UL) /*!< DAC DAC0CFG1: SWTRIG (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG1_TRIGMOD_Pos \ - (17UL) /*!< DAC DAC0CFG1: TRIGMOD (Bit 17) */ -#define DAC_DAC0CFG1_TRIGMOD_Msk \ - (0x60000UL) /*!< DAC DAC0CFG1: TRIGMOD (Bitfield-Mask: 0x03) */ -#define DAC_DAC0CFG1_ANACFG_Pos \ - (19UL) /*!< DAC DAC0CFG1: ANACFG (Bit 19) */ -#define DAC_DAC0CFG1_ANACFG_Msk \ - (0xf80000UL) /*!< DAC DAC0CFG1: ANACFG (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0CFG1_ANAEN_Pos \ - (24UL) /*!< DAC DAC0CFG1: ANAEN (Bit 24) */ -#define DAC_DAC0CFG1_ANAEN_Msk \ - (0x1000000UL) /*!< DAC DAC0CFG1: ANAEN (Bitfield-Mask: 0x01) */ -#define DAC_DAC0CFG1_REFCFGL_Pos \ - (28UL) /*!< DAC DAC0CFG1: REFCFGL (Bit 28) */ -#define DAC_DAC0CFG1_REFCFGL_Msk \ - (0xf0000000UL) /*!< DAC DAC0CFG1: REFCFGL (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- DAC_DAC1CFG0 -------------------------------- */ -#define DAC_DAC1CFG0_FREQ_Pos \ - (0UL) /*!< DAC DAC1CFG0: FREQ (Bit 0) */ -#define DAC_DAC1CFG0_FREQ_Msk \ - (0xfffffUL) /*!< DAC DAC1CFG0: FREQ (Bitfield-Mask: 0xfffff) */ -#define DAC_DAC1CFG0_MODE_Pos \ - (20UL) /*!< DAC DAC1CFG0: MODE (Bit 20) */ -#define DAC_DAC1CFG0_MODE_Msk \ - (0x700000UL) /*!< DAC DAC1CFG0: MODE (Bitfield-Mask: 0x07) */ -#define DAC_DAC1CFG0_SIGN_Pos \ - (23UL) /*!< DAC DAC1CFG0: SIGN (Bit 23) */ -#define DAC_DAC1CFG0_SIGN_Msk \ - (0x800000UL) /*!< DAC DAC1CFG0: SIGN (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_FIFOIND_Pos \ - (24UL) /*!< DAC DAC1CFG0: FIFOIND (Bit 24) */ -#define DAC_DAC1CFG0_FIFOIND_Msk \ - (0x3000000UL) /*!< DAC DAC1CFG0: FIFOIND (Bitfield-Mask: 0x03) */ -#define DAC_DAC1CFG0_FIFOEMP_Pos \ - (26UL) /*!< DAC DAC1CFG0: FIFOEMP (Bit 26) */ -#define DAC_DAC1CFG0_FIFOEMP_Msk \ - (0x4000000UL) /*!< DAC DAC1CFG0: FIFOEMP (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_FIFOFUL_Pos \ - (27UL) /*!< DAC DAC1CFG0: FIFOFUL (Bit 27) */ -#define DAC_DAC1CFG0_FIFOFUL_Msk \ - (0x8000000UL) /*!< DAC DAC1CFG0: FIFOFUL (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_NEGATE_Pos \ - (28UL) /*!< DAC DAC1CFG0: NEGATE (Bit 28) */ -#define DAC_DAC1CFG0_NEGATE_Msk \ - (0x10000000UL) /*!< DAC DAC1CFG0: NEGATE (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_SIGNEN_Pos \ - (29UL) /*!< DAC DAC1CFG0: SIGNEN (Bit 29) */ -#define DAC_DAC1CFG0_SIGNEN_Msk \ - (0x20000000UL) /*!< DAC DAC1CFG0: SIGNEN (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_SREN_Pos \ - (30UL) /*!< DAC DAC1CFG0: SREN (Bit 30) */ -#define DAC_DAC1CFG0_SREN_Msk \ - (0x40000000UL) /*!< DAC DAC1CFG0: SREN (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG0_RUN_Pos \ - (31UL) /*!< DAC DAC1CFG0: RUN (Bit 31) */ -#define DAC_DAC1CFG0_RUN_Msk \ - (0x80000000UL) /*!< DAC DAC1CFG0: RUN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- DAC_DAC1CFG1 -------------------------------- */ -#define DAC_DAC1CFG1_SCALE_Pos \ - (0UL) /*!< DAC DAC1CFG1: SCALE (Bit 0) */ -#define DAC_DAC1CFG1_SCALE_Msk \ - (0x7UL) /*!< DAC DAC1CFG1: SCALE (Bitfield-Mask: 0x07) */ -#define DAC_DAC1CFG1_MULDIV_Pos \ - (3UL) /*!< DAC DAC1CFG1: MULDIV (Bit 3) */ -#define DAC_DAC1CFG1_MULDIV_Msk \ - (0x8UL) /*!< DAC DAC1CFG1: MULDIV (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG1_OFFS_Pos \ - (4UL) /*!< DAC DAC1CFG1: OFFS (Bit 4) */ -#define DAC_DAC1CFG1_OFFS_Msk \ - (0xff0UL) /*!< DAC DAC1CFG1: OFFS (Bitfield-Mask: 0xff) */ -#define DAC_DAC1CFG1_TRIGSEL_Pos \ - (12UL) /*!< DAC DAC1CFG1: TRIGSEL (Bit 12) */ -#define DAC_DAC1CFG1_TRIGSEL_Msk \ - (0x7000UL) /*!< DAC DAC1CFG1: TRIGSEL (Bitfield-Mask: 0x07) */ -#define DAC_DAC1CFG1_SWTRIG_Pos \ - (16UL) /*!< DAC DAC1CFG1: SWTRIG (Bit 16) */ -#define DAC_DAC1CFG1_SWTRIG_Msk \ - (0x10000UL) /*!< DAC DAC1CFG1: SWTRIG (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG1_TRIGMOD_Pos \ - (17UL) /*!< DAC DAC1CFG1: TRIGMOD (Bit 17) */ -#define DAC_DAC1CFG1_TRIGMOD_Msk \ - (0x60000UL) /*!< DAC DAC1CFG1: TRIGMOD (Bitfield-Mask: 0x03) */ -#define DAC_DAC1CFG1_ANACFG_Pos \ - (19UL) /*!< DAC DAC1CFG1: ANACFG (Bit 19) */ -#define DAC_DAC1CFG1_ANACFG_Msk \ - (0xf80000UL) /*!< DAC DAC1CFG1: ANACFG (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1CFG1_ANAEN_Pos \ - (24UL) /*!< DAC DAC1CFG1: ANAEN (Bit 24) */ -#define DAC_DAC1CFG1_ANAEN_Msk \ - (0x1000000UL) /*!< DAC DAC1CFG1: ANAEN (Bitfield-Mask: 0x01) */ -#define DAC_DAC1CFG1_REFCFGH_Pos \ - (28UL) /*!< DAC DAC1CFG1: REFCFGH (Bit 28) */ -#define DAC_DAC1CFG1_REFCFGH_Msk \ - (0xf0000000UL) /*!< DAC DAC1CFG1: REFCFGH (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- DAC_DAC0DATA -------------------------------- */ -#define DAC_DAC0DATA_DATA0_Pos \ - (0UL) /*!< DAC DAC0DATA: DATA0 (Bit 0) */ -#define DAC_DAC0DATA_DATA0_Msk \ - (0xfffUL) /*!< DAC DAC0DATA: DATA0 (Bitfield-Mask: 0xfff) */ - -/* -------------------------------- DAC_DAC1DATA -------------------------------- */ -#define DAC_DAC1DATA_DATA1_Pos \ - (0UL) /*!< DAC DAC1DATA: DATA1 (Bit 0) */ -#define DAC_DAC1DATA_DATA1_Msk \ - (0xfffUL) /*!< DAC DAC1DATA: DATA1 (Bitfield-Mask: 0xfff) */ - -/* -------------------------------- DAC_DAC01DATA ------------------------------- */ -#define DAC_DAC01DATA_DATA0_Pos \ - (0UL) /*!< DAC DAC01DATA: DATA0 (Bit 0) */ -#define DAC_DAC01DATA_DATA0_Msk \ - (0xfffUL) /*!< DAC DAC01DATA: DATA0 (Bitfield-Mask: 0xfff) */ -#define DAC_DAC01DATA_DATA1_Pos \ - (16UL) /*!< DAC DAC01DATA: DATA1 (Bit 16) */ -#define DAC_DAC01DATA_DATA1_Msk \ - (0xfff0000UL) /*!< DAC DAC01DATA: DATA1 (Bitfield-Mask: 0xfff) */ - -/* -------------------------------- DAC_DAC0PATL -------------------------------- */ -#define DAC_DAC0PATL_PAT0_Pos \ - (0UL) /*!< DAC DAC0PATL: PAT0 (Bit 0) */ -#define DAC_DAC0PATL_PAT0_Msk \ - (0x1fUL) /*!< DAC DAC0PATL: PAT0 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT1_Pos \ - (5UL) /*!< DAC DAC0PATL: PAT1 (Bit 5) */ -#define DAC_DAC0PATL_PAT1_Msk \ - (0x3e0UL) /*!< DAC DAC0PATL: PAT1 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT2_Pos \ - (10UL) /*!< DAC DAC0PATL: PAT2 (Bit 10) */ -#define DAC_DAC0PATL_PAT2_Msk \ - (0x7c00UL) /*!< DAC DAC0PATL: PAT2 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT3_Pos \ - (15UL) /*!< DAC DAC0PATL: PAT3 (Bit 15) */ -#define DAC_DAC0PATL_PAT3_Msk \ - (0xf8000UL) /*!< DAC DAC0PATL: PAT3 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT4_Pos \ - (20UL) /*!< DAC DAC0PATL: PAT4 (Bit 20) */ -#define DAC_DAC0PATL_PAT4_Msk \ - (0x1f00000UL) /*!< DAC DAC0PATL: PAT4 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATL_PAT5_Pos \ - (25UL) /*!< DAC DAC0PATL: PAT5 (Bit 25) */ -#define DAC_DAC0PATL_PAT5_Msk \ - (0x3e000000UL) /*!< DAC DAC0PATL: PAT5 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- DAC_DAC0PATH -------------------------------- */ -#define DAC_DAC0PATH_PAT6_Pos \ - (0UL) /*!< DAC DAC0PATH: PAT6 (Bit 0) */ -#define DAC_DAC0PATH_PAT6_Msk \ - (0x1fUL) /*!< DAC DAC0PATH: PAT6 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATH_PAT7_Pos \ - (5UL) /*!< DAC DAC0PATH: PAT7 (Bit 5) */ -#define DAC_DAC0PATH_PAT7_Msk \ - (0x3e0UL) /*!< DAC DAC0PATH: PAT7 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC0PATH_PAT8_Pos \ - (10UL) /*!< DAC DAC0PATH: PAT8 (Bit 10) */ -#define DAC_DAC0PATH_PAT8_Msk \ - (0x7c00UL) /*!< DAC DAC0PATH: PAT8 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- DAC_DAC1PATL -------------------------------- */ -#define DAC_DAC1PATL_PAT0_Pos \ - (0UL) /*!< DAC DAC1PATL: PAT0 (Bit 0) */ -#define DAC_DAC1PATL_PAT0_Msk \ - (0x1fUL) /*!< DAC DAC1PATL: PAT0 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT1_Pos \ - (5UL) /*!< DAC DAC1PATL: PAT1 (Bit 5) */ -#define DAC_DAC1PATL_PAT1_Msk \ - (0x3e0UL) /*!< DAC DAC1PATL: PAT1 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT2_Pos \ - (10UL) /*!< DAC DAC1PATL: PAT2 (Bit 10) */ -#define DAC_DAC1PATL_PAT2_Msk \ - (0x7c00UL) /*!< DAC DAC1PATL: PAT2 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT3_Pos \ - (15UL) /*!< DAC DAC1PATL: PAT3 (Bit 15) */ -#define DAC_DAC1PATL_PAT3_Msk \ - (0xf8000UL) /*!< DAC DAC1PATL: PAT3 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT4_Pos \ - (20UL) /*!< DAC DAC1PATL: PAT4 (Bit 20) */ -#define DAC_DAC1PATL_PAT4_Msk \ - (0x1f00000UL) /*!< DAC DAC1PATL: PAT4 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATL_PAT5_Pos \ - (25UL) /*!< DAC DAC1PATL: PAT5 (Bit 25) */ -#define DAC_DAC1PATL_PAT5_Msk \ - (0x3e000000UL) /*!< DAC DAC1PATL: PAT5 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- DAC_DAC1PATH -------------------------------- */ -#define DAC_DAC1PATH_PAT6_Pos \ - (0UL) /*!< DAC DAC1PATH: PAT6 (Bit 0) */ -#define DAC_DAC1PATH_PAT6_Msk \ - (0x1fUL) /*!< DAC DAC1PATH: PAT6 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATH_PAT7_Pos \ - (5UL) /*!< DAC DAC1PATH: PAT7 (Bit 5) */ -#define DAC_DAC1PATH_PAT7_Msk \ - (0x3e0UL) /*!< DAC DAC1PATH: PAT7 (Bitfield-Mask: 0x1f) */ -#define DAC_DAC1PATH_PAT8_Pos \ - (10UL) /*!< DAC DAC1PATH: PAT8 (Bit 10) */ -#define DAC_DAC1PATH_PAT8_Msk \ - (0x7c00UL) /*!< DAC DAC1PATH: PAT8 (Bitfield-Mask: 0x1f) */ - -/* ================================================================================ */ -/* ================ Group 'CCU4' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- CCU4_GCTRL --------------------------------- */ -#define CCU4_GCTRL_PRBC_Pos \ - (0UL) /*!< CCU4 GCTRL: PRBC (Bit 0) */ -#define CCU4_GCTRL_PRBC_Msk \ - (0x7UL) /*!< CCU4 GCTRL: PRBC (Bitfield-Mask: 0x07) */ -#define CCU4_GCTRL_PCIS_Pos \ - (4UL) /*!< CCU4 GCTRL: PCIS (Bit 4) */ -#define CCU4_GCTRL_PCIS_Msk \ - (0x30UL) /*!< CCU4 GCTRL: PCIS (Bitfield-Mask: 0x03) */ -#define CCU4_GCTRL_SUSCFG_Pos \ - (8UL) /*!< CCU4 GCTRL: SUSCFG (Bit 8) */ -#define CCU4_GCTRL_SUSCFG_Msk \ - (0x300UL) /*!< CCU4 GCTRL: SUSCFG (Bitfield-Mask: 0x03) */ -#define CCU4_GCTRL_MSE0_Pos \ - (10UL) /*!< CCU4 GCTRL: MSE0 (Bit 10) */ -#define CCU4_GCTRL_MSE0_Msk \ - (0x400UL) /*!< CCU4 GCTRL: MSE0 (Bitfield-Mask: 0x01) */ -#define CCU4_GCTRL_MSE1_Pos \ - (11UL) /*!< CCU4 GCTRL: MSE1 (Bit 11) */ -#define CCU4_GCTRL_MSE1_Msk \ - (0x800UL) /*!< CCU4 GCTRL: MSE1 (Bitfield-Mask: 0x01) */ -#define CCU4_GCTRL_MSE2_Pos \ - (12UL) /*!< CCU4 GCTRL: MSE2 (Bit 12) */ -#define CCU4_GCTRL_MSE2_Msk \ - (0x1000UL) /*!< CCU4 GCTRL: MSE2 (Bitfield-Mask: 0x01) */ -#define CCU4_GCTRL_MSE3_Pos \ - (13UL) /*!< CCU4 GCTRL: MSE3 (Bit 13) */ -#define CCU4_GCTRL_MSE3_Msk \ - (0x2000UL) /*!< CCU4 GCTRL: MSE3 (Bitfield-Mask: 0x01) */ -#define CCU4_GCTRL_MSDE_Pos \ - (14UL) /*!< CCU4 GCTRL: MSDE (Bit 14) */ -#define CCU4_GCTRL_MSDE_Msk \ - (0xc000UL) /*!< CCU4 GCTRL: MSDE (Bitfield-Mask: 0x03) */ - -/* --------------------------------- CCU4_GSTAT --------------------------------- */ -#define CCU4_GSTAT_S0I_Pos (0UL) /*!< CCU4 GSTAT: S0I (Bit 0) */ -#define CCU4_GSTAT_S0I_Msk \ - (0x1UL) /*!< CCU4 GSTAT: S0I (Bitfield-Mask: 0x01) */ -#define CCU4_GSTAT_S1I_Pos (1UL) /*!< CCU4 GSTAT: S1I (Bit 1) */ -#define CCU4_GSTAT_S1I_Msk \ - (0x2UL) /*!< CCU4 GSTAT: S1I (Bitfield-Mask: 0x01) */ -#define CCU4_GSTAT_S2I_Pos (2UL) /*!< CCU4 GSTAT: S2I (Bit 2) */ -#define CCU4_GSTAT_S2I_Msk \ - (0x4UL) /*!< CCU4 GSTAT: S2I (Bitfield-Mask: 0x01) */ -#define CCU4_GSTAT_S3I_Pos (3UL) /*!< CCU4 GSTAT: S3I (Bit 3) */ -#define CCU4_GSTAT_S3I_Msk \ - (0x8UL) /*!< CCU4 GSTAT: S3I (Bitfield-Mask: 0x01) */ -#define CCU4_GSTAT_PRB_Pos (8UL) /*!< CCU4 GSTAT: PRB (Bit 8) */ -#define CCU4_GSTAT_PRB_Msk \ - (0x100UL) /*!< CCU4 GSTAT: PRB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU4_GIDLS --------------------------------- */ -#define CCU4_GIDLS_SS0I_Pos \ - (0UL) /*!< CCU4 GIDLS: SS0I (Bit 0) */ -#define CCU4_GIDLS_SS0I_Msk \ - (0x1UL) /*!< CCU4 GIDLS: SS0I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_SS1I_Pos \ - (1UL) /*!< CCU4 GIDLS: SS1I (Bit 1) */ -#define CCU4_GIDLS_SS1I_Msk \ - (0x2UL) /*!< CCU4 GIDLS: SS1I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_SS2I_Pos \ - (2UL) /*!< CCU4 GIDLS: SS2I (Bit 2) */ -#define CCU4_GIDLS_SS2I_Msk \ - (0x4UL) /*!< CCU4 GIDLS: SS2I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_SS3I_Pos \ - (3UL) /*!< CCU4 GIDLS: SS3I (Bit 3) */ -#define CCU4_GIDLS_SS3I_Msk \ - (0x8UL) /*!< CCU4 GIDLS: SS3I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_CPRB_Pos \ - (8UL) /*!< CCU4 GIDLS: CPRB (Bit 8) */ -#define CCU4_GIDLS_CPRB_Msk \ - (0x100UL) /*!< CCU4 GIDLS: CPRB (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLS_PSIC_Pos \ - (9UL) /*!< CCU4 GIDLS: PSIC (Bit 9) */ -#define CCU4_GIDLS_PSIC_Msk \ - (0x200UL) /*!< CCU4 GIDLS: PSIC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU4_GIDLC --------------------------------- */ -#define CCU4_GIDLC_CS0I_Pos \ - (0UL) /*!< CCU4 GIDLC: CS0I (Bit 0) */ -#define CCU4_GIDLC_CS0I_Msk \ - (0x1UL) /*!< CCU4 GIDLC: CS0I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLC_CS1I_Pos \ - (1UL) /*!< CCU4 GIDLC: CS1I (Bit 1) */ -#define CCU4_GIDLC_CS1I_Msk \ - (0x2UL) /*!< CCU4 GIDLC: CS1I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLC_CS2I_Pos \ - (2UL) /*!< CCU4 GIDLC: CS2I (Bit 2) */ -#define CCU4_GIDLC_CS2I_Msk \ - (0x4UL) /*!< CCU4 GIDLC: CS2I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLC_CS3I_Pos \ - (3UL) /*!< CCU4 GIDLC: CS3I (Bit 3) */ -#define CCU4_GIDLC_CS3I_Msk \ - (0x8UL) /*!< CCU4 GIDLC: CS3I (Bitfield-Mask: 0x01) */ -#define CCU4_GIDLC_SPRB_Pos \ - (8UL) /*!< CCU4 GIDLC: SPRB (Bit 8) */ -#define CCU4_GIDLC_SPRB_Msk \ - (0x100UL) /*!< CCU4 GIDLC: SPRB (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_GCSS --------------------------------- */ -#define CCU4_GCSS_S0SE_Pos (0UL) /*!< CCU4 GCSS: S0SE (Bit 0) */ -#define CCU4_GCSS_S0SE_Msk \ - (0x1UL) /*!< CCU4 GCSS: S0SE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S0DSE_Pos \ - (1UL) /*!< CCU4 GCSS: S0DSE (Bit 1) */ -#define CCU4_GCSS_S0DSE_Msk \ - (0x2UL) /*!< CCU4 GCSS: S0DSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S0PSE_Pos \ - (2UL) /*!< CCU4 GCSS: S0PSE (Bit 2) */ -#define CCU4_GCSS_S0PSE_Msk \ - (0x4UL) /*!< CCU4 GCSS: S0PSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S1SE_Pos (4UL) /*!< CCU4 GCSS: S1SE (Bit 4) */ -#define CCU4_GCSS_S1SE_Msk \ - (0x10UL) /*!< CCU4 GCSS: S1SE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S1DSE_Pos \ - (5UL) /*!< CCU4 GCSS: S1DSE (Bit 5) */ -#define CCU4_GCSS_S1DSE_Msk \ - (0x20UL) /*!< CCU4 GCSS: S1DSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S1PSE_Pos \ - (6UL) /*!< CCU4 GCSS: S1PSE (Bit 6) */ -#define CCU4_GCSS_S1PSE_Msk \ - (0x40UL) /*!< CCU4 GCSS: S1PSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S2SE_Pos (8UL) /*!< CCU4 GCSS: S2SE (Bit 8) */ -#define CCU4_GCSS_S2SE_Msk \ - (0x100UL) /*!< CCU4 GCSS: S2SE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S2DSE_Pos \ - (9UL) /*!< CCU4 GCSS: S2DSE (Bit 9) */ -#define CCU4_GCSS_S2DSE_Msk \ - (0x200UL) /*!< CCU4 GCSS: S2DSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S2PSE_Pos \ - (10UL) /*!< CCU4 GCSS: S2PSE (Bit 10) */ -#define CCU4_GCSS_S2PSE_Msk \ - (0x400UL) /*!< CCU4 GCSS: S2PSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S3SE_Pos \ - (12UL) /*!< CCU4 GCSS: S3SE (Bit 12) */ -#define CCU4_GCSS_S3SE_Msk \ - (0x1000UL) /*!< CCU4 GCSS: S3SE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S3DSE_Pos \ - (13UL) /*!< CCU4 GCSS: S3DSE (Bit 13) */ -#define CCU4_GCSS_S3DSE_Msk \ - (0x2000UL) /*!< CCU4 GCSS: S3DSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S3PSE_Pos \ - (14UL) /*!< CCU4 GCSS: S3PSE (Bit 14) */ -#define CCU4_GCSS_S3PSE_Msk \ - (0x4000UL) /*!< CCU4 GCSS: S3PSE (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S0STS_Pos \ - (16UL) /*!< CCU4 GCSS: S0STS (Bit 16) */ -#define CCU4_GCSS_S0STS_Msk \ - (0x10000UL) /*!< CCU4 GCSS: S0STS (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S1STS_Pos \ - (17UL) /*!< CCU4 GCSS: S1STS (Bit 17) */ -#define CCU4_GCSS_S1STS_Msk \ - (0x20000UL) /*!< CCU4 GCSS: S1STS (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S2STS_Pos \ - (18UL) /*!< CCU4 GCSS: S2STS (Bit 18) */ -#define CCU4_GCSS_S2STS_Msk \ - (0x40000UL) /*!< CCU4 GCSS: S2STS (Bitfield-Mask: 0x01) */ -#define CCU4_GCSS_S3STS_Pos \ - (19UL) /*!< CCU4 GCSS: S3STS (Bit 19) */ -#define CCU4_GCSS_S3STS_Msk \ - (0x80000UL) /*!< CCU4 GCSS: S3STS (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_GCSC --------------------------------- */ -#define CCU4_GCSC_S0SC_Pos (0UL) /*!< CCU4 GCSC: S0SC (Bit 0) */ -#define CCU4_GCSC_S0SC_Msk \ - (0x1UL) /*!< CCU4 GCSC: S0SC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S0DSC_Pos \ - (1UL) /*!< CCU4 GCSC: S0DSC (Bit 1) */ -#define CCU4_GCSC_S0DSC_Msk \ - (0x2UL) /*!< CCU4 GCSC: S0DSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S0PSC_Pos \ - (2UL) /*!< CCU4 GCSC: S0PSC (Bit 2) */ -#define CCU4_GCSC_S0PSC_Msk \ - (0x4UL) /*!< CCU4 GCSC: S0PSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S1SC_Pos (4UL) /*!< CCU4 GCSC: S1SC (Bit 4) */ -#define CCU4_GCSC_S1SC_Msk \ - (0x10UL) /*!< CCU4 GCSC: S1SC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S1DSC_Pos \ - (5UL) /*!< CCU4 GCSC: S1DSC (Bit 5) */ -#define CCU4_GCSC_S1DSC_Msk \ - (0x20UL) /*!< CCU4 GCSC: S1DSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S1PSC_Pos \ - (6UL) /*!< CCU4 GCSC: S1PSC (Bit 6) */ -#define CCU4_GCSC_S1PSC_Msk \ - (0x40UL) /*!< CCU4 GCSC: S1PSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S2SC_Pos (8UL) /*!< CCU4 GCSC: S2SC (Bit 8) */ -#define CCU4_GCSC_S2SC_Msk \ - (0x100UL) /*!< CCU4 GCSC: S2SC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S2DSC_Pos \ - (9UL) /*!< CCU4 GCSC: S2DSC (Bit 9) */ -#define CCU4_GCSC_S2DSC_Msk \ - (0x200UL) /*!< CCU4 GCSC: S2DSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S2PSC_Pos \ - (10UL) /*!< CCU4 GCSC: S2PSC (Bit 10) */ -#define CCU4_GCSC_S2PSC_Msk \ - (0x400UL) /*!< CCU4 GCSC: S2PSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S3SC_Pos \ - (12UL) /*!< CCU4 GCSC: S3SC (Bit 12) */ -#define CCU4_GCSC_S3SC_Msk \ - (0x1000UL) /*!< CCU4 GCSC: S3SC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S3DSC_Pos \ - (13UL) /*!< CCU4 GCSC: S3DSC (Bit 13) */ -#define CCU4_GCSC_S3DSC_Msk \ - (0x2000UL) /*!< CCU4 GCSC: S3DSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S3PSC_Pos \ - (14UL) /*!< CCU4 GCSC: S3PSC (Bit 14) */ -#define CCU4_GCSC_S3PSC_Msk \ - (0x4000UL) /*!< CCU4 GCSC: S3PSC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S0STC_Pos \ - (16UL) /*!< CCU4 GCSC: S0STC (Bit 16) */ -#define CCU4_GCSC_S0STC_Msk \ - (0x10000UL) /*!< CCU4 GCSC: S0STC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S1STC_Pos \ - (17UL) /*!< CCU4 GCSC: S1STC (Bit 17) */ -#define CCU4_GCSC_S1STC_Msk \ - (0x20000UL) /*!< CCU4 GCSC: S1STC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S2STC_Pos \ - (18UL) /*!< CCU4 GCSC: S2STC (Bit 18) */ -#define CCU4_GCSC_S2STC_Msk \ - (0x40000UL) /*!< CCU4 GCSC: S2STC (Bitfield-Mask: 0x01) */ -#define CCU4_GCSC_S3STC_Pos \ - (19UL) /*!< CCU4 GCSC: S3STC (Bit 19) */ -#define CCU4_GCSC_S3STC_Msk \ - (0x80000UL) /*!< CCU4 GCSC: S3STC (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_GCST --------------------------------- */ -#define CCU4_GCST_S0SS_Pos (0UL) /*!< CCU4 GCST: S0SS (Bit 0) */ -#define CCU4_GCST_S0SS_Msk \ - (0x1UL) /*!< CCU4 GCST: S0SS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S0DSS_Pos \ - (1UL) /*!< CCU4 GCST: S0DSS (Bit 1) */ -#define CCU4_GCST_S0DSS_Msk \ - (0x2UL) /*!< CCU4 GCST: S0DSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S0PSS_Pos \ - (2UL) /*!< CCU4 GCST: S0PSS (Bit 2) */ -#define CCU4_GCST_S0PSS_Msk \ - (0x4UL) /*!< CCU4 GCST: S0PSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S1SS_Pos (4UL) /*!< CCU4 GCST: S1SS (Bit 4) */ -#define CCU4_GCST_S1SS_Msk \ - (0x10UL) /*!< CCU4 GCST: S1SS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S1DSS_Pos \ - (5UL) /*!< CCU4 GCST: S1DSS (Bit 5) */ -#define CCU4_GCST_S1DSS_Msk \ - (0x20UL) /*!< CCU4 GCST: S1DSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S1PSS_Pos \ - (6UL) /*!< CCU4 GCST: S1PSS (Bit 6) */ -#define CCU4_GCST_S1PSS_Msk \ - (0x40UL) /*!< CCU4 GCST: S1PSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S2SS_Pos (8UL) /*!< CCU4 GCST: S2SS (Bit 8) */ -#define CCU4_GCST_S2SS_Msk \ - (0x100UL) /*!< CCU4 GCST: S2SS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S2DSS_Pos \ - (9UL) /*!< CCU4 GCST: S2DSS (Bit 9) */ -#define CCU4_GCST_S2DSS_Msk \ - (0x200UL) /*!< CCU4 GCST: S2DSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S2PSS_Pos \ - (10UL) /*!< CCU4 GCST: S2PSS (Bit 10) */ -#define CCU4_GCST_S2PSS_Msk \ - (0x400UL) /*!< CCU4 GCST: S2PSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S3SS_Pos \ - (12UL) /*!< CCU4 GCST: S3SS (Bit 12) */ -#define CCU4_GCST_S3SS_Msk \ - (0x1000UL) /*!< CCU4 GCST: S3SS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S3DSS_Pos \ - (13UL) /*!< CCU4 GCST: S3DSS (Bit 13) */ -#define CCU4_GCST_S3DSS_Msk \ - (0x2000UL) /*!< CCU4 GCST: S3DSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_S3PSS_Pos \ - (14UL) /*!< CCU4 GCST: S3PSS (Bit 14) */ -#define CCU4_GCST_S3PSS_Msk \ - (0x4000UL) /*!< CCU4 GCST: S3PSS (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_CC40ST_Pos \ - (16UL) /*!< CCU4 GCST: CC40ST (Bit 16) */ -#define CCU4_GCST_CC40ST_Msk \ - (0x10000UL) /*!< CCU4 GCST: CC40ST (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_CC41ST_Pos \ - (17UL) /*!< CCU4 GCST: CC41ST (Bit 17) */ -#define CCU4_GCST_CC41ST_Msk \ - (0x20000UL) /*!< CCU4 GCST: CC41ST (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_CC42ST_Pos \ - (18UL) /*!< CCU4 GCST: CC42ST (Bit 18) */ -#define CCU4_GCST_CC42ST_Msk \ - (0x40000UL) /*!< CCU4 GCST: CC42ST (Bitfield-Mask: 0x01) */ -#define CCU4_GCST_CC43ST_Pos \ - (19UL) /*!< CCU4 GCST: CC43ST (Bit 19) */ -#define CCU4_GCST_CC43ST_Msk \ - (0x80000UL) /*!< CCU4 GCST: CC43ST (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_ECRD --------------------------------- */ -#define CCU4_ECRD_CAPV_Pos (0UL) /*!< CCU4 ECRD: CAPV (Bit 0) */ -#define CCU4_ECRD_CAPV_Msk \ - (0xffffUL) /*!< CCU4 ECRD: CAPV (Bitfield-Mask: 0xffff) */ -#define CCU4_ECRD_FPCV_Pos \ - (16UL) /*!< CCU4 ECRD: FPCV (Bit 16) */ -#define CCU4_ECRD_FPCV_Msk \ - (0xf0000UL) /*!< CCU4 ECRD: FPCV (Bitfield-Mask: 0x0f) */ -#define CCU4_ECRD_SPTR_Pos \ - (20UL) /*!< CCU4 ECRD: SPTR (Bit 20) */ -#define CCU4_ECRD_SPTR_Msk \ - (0x300000UL) /*!< CCU4 ECRD: SPTR (Bitfield-Mask: 0x03) */ -#define CCU4_ECRD_VPTR_Pos \ - (22UL) /*!< CCU4 ECRD: VPTR (Bit 22) */ -#define CCU4_ECRD_VPTR_Msk \ - (0xc00000UL) /*!< CCU4 ECRD: VPTR (Bitfield-Mask: 0x03) */ -#define CCU4_ECRD_FFL_Pos (24UL) /*!< CCU4 ECRD: FFL (Bit 24) */ -#define CCU4_ECRD_FFL_Msk \ - (0x1000000UL) /*!< CCU4 ECRD: FFL (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU4_MIDR --------------------------------- */ -#define CCU4_MIDR_MODR_Pos (0UL) /*!< CCU4 MIDR: MODR (Bit 0) */ -#define CCU4_MIDR_MODR_Msk \ - (0xffUL) /*!< CCU4 MIDR: MODR (Bitfield-Mask: 0xff) */ -#define CCU4_MIDR_MODT_Pos (8UL) /*!< CCU4 MIDR: MODT (Bit 8) */ -#define CCU4_MIDR_MODT_Msk \ - (0xff00UL) /*!< CCU4 MIDR: MODT (Bitfield-Mask: 0xff) */ -#define CCU4_MIDR_MODN_Pos \ - (16UL) /*!< CCU4 MIDR: MODN (Bit 16) */ -#define CCU4_MIDR_MODN_Msk \ - (0xffff0000UL) /*!< CCU4 MIDR: MODN (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ Group 'CCU4_CC4' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- CCU4_CC4_INS -------------------------------- */ -#define CCU4_CC4_INS_EV0IS_Pos \ - (0UL) /*!< CCU4_CC4 INS: EV0IS (Bit 0) */ -#define CCU4_CC4_INS_EV0IS_Msk \ - (0xfUL) /*!< CCU4_CC4 INS: EV0IS (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_INS_EV1IS_Pos \ - (4UL) /*!< CCU4_CC4 INS: EV1IS (Bit 4) */ -#define CCU4_CC4_INS_EV1IS_Msk \ - (0xf0UL) /*!< CCU4_CC4 INS: EV1IS (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_INS_EV2IS_Pos \ - (8UL) /*!< CCU4_CC4 INS: EV2IS (Bit 8) */ -#define CCU4_CC4_INS_EV2IS_Msk \ - (0xf00UL) /*!< CCU4_CC4 INS: EV2IS (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_INS_EV0EM_Pos \ - (16UL) /*!< CCU4_CC4 INS: EV0EM (Bit 16) */ -#define CCU4_CC4_INS_EV0EM_Msk \ - (0x30000UL) /*!< CCU4_CC4 INS: EV0EM (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_EV1EM_Pos \ - (18UL) /*!< CCU4_CC4 INS: EV1EM (Bit 18) */ -#define CCU4_CC4_INS_EV1EM_Msk \ - (0xc0000UL) /*!< CCU4_CC4 INS: EV1EM (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_EV2EM_Pos \ - (20UL) /*!< CCU4_CC4 INS: EV2EM (Bit 20) */ -#define CCU4_CC4_INS_EV2EM_Msk \ - (0x300000UL) /*!< CCU4_CC4 INS: EV2EM (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_EV0LM_Pos \ - (22UL) /*!< CCU4_CC4 INS: EV0LM (Bit 22) */ -#define CCU4_CC4_INS_EV0LM_Msk \ - (0x400000UL) /*!< CCU4_CC4 INS: EV0LM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INS_EV1LM_Pos \ - (23UL) /*!< CCU4_CC4 INS: EV1LM (Bit 23) */ -#define CCU4_CC4_INS_EV1LM_Msk \ - (0x800000UL) /*!< CCU4_CC4 INS: EV1LM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INS_EV2LM_Pos \ - (24UL) /*!< CCU4_CC4 INS: EV2LM (Bit 24) */ -#define CCU4_CC4_INS_EV2LM_Msk \ - (0x1000000UL) /*!< CCU4_CC4 INS: EV2LM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INS_LPF0M_Pos \ - (25UL) /*!< CCU4_CC4 INS: LPF0M (Bit 25) */ -#define CCU4_CC4_INS_LPF0M_Msk \ - (0x6000000UL) /*!< CCU4_CC4 INS: LPF0M (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_LPF1M_Pos \ - (27UL) /*!< CCU4_CC4 INS: LPF1M (Bit 27) */ -#define CCU4_CC4_INS_LPF1M_Msk \ - (0x18000000UL) /*!< CCU4_CC4 INS: LPF1M (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_INS_LPF2M_Pos \ - (29UL) /*!< CCU4_CC4 INS: LPF2M (Bit 29) */ -#define CCU4_CC4_INS_LPF2M_Msk \ - (0x60000000UL) /*!< CCU4_CC4 INS: LPF2M (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU4_CC4_CMC -------------------------------- */ -#define CCU4_CC4_CMC_STRTS_Pos \ - (0UL) /*!< CCU4_CC4 CMC: STRTS (Bit 0) */ -#define CCU4_CC4_CMC_STRTS_Msk \ - (0x3UL) /*!< CCU4_CC4 CMC: STRTS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_ENDS_Pos \ - (2UL) /*!< CCU4_CC4 CMC: ENDS (Bit 2) */ -#define CCU4_CC4_CMC_ENDS_Msk \ - (0xcUL) /*!< CCU4_CC4 CMC: ENDS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_CAP0S_Pos \ - (4UL) /*!< CCU4_CC4 CMC: CAP0S (Bit 4) */ -#define CCU4_CC4_CMC_CAP0S_Msk \ - (0x30UL) /*!< CCU4_CC4 CMC: CAP0S (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_CAP1S_Pos \ - (6UL) /*!< CCU4_CC4 CMC: CAP1S (Bit 6) */ -#define CCU4_CC4_CMC_CAP1S_Msk \ - (0xc0UL) /*!< CCU4_CC4 CMC: CAP1S (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_GATES_Pos \ - (8UL) /*!< CCU4_CC4 CMC: GATES (Bit 8) */ -#define CCU4_CC4_CMC_GATES_Msk \ - (0x300UL) /*!< CCU4_CC4 CMC: GATES (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_UDS_Pos \ - (10UL) /*!< CCU4_CC4 CMC: UDS (Bit 10) */ -#define CCU4_CC4_CMC_UDS_Msk \ - (0xc00UL) /*!< CCU4_CC4 CMC: UDS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_LDS_Pos \ - (12UL) /*!< CCU4_CC4 CMC: LDS (Bit 12) */ -#define CCU4_CC4_CMC_LDS_Msk \ - (0x3000UL) /*!< CCU4_CC4 CMC: LDS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_CNTS_Pos \ - (14UL) /*!< CCU4_CC4 CMC: CNTS (Bit 14) */ -#define CCU4_CC4_CMC_CNTS_Msk \ - (0xc000UL) /*!< CCU4_CC4 CMC: CNTS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_OFS_Pos \ - (16UL) /*!< CCU4_CC4 CMC: OFS (Bit 16) */ -#define CCU4_CC4_CMC_OFS_Msk \ - (0x10000UL) /*!< CCU4_CC4 CMC: OFS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_CMC_TS_Pos \ - (17UL) /*!< CCU4_CC4 CMC: TS (Bit 17) */ -#define CCU4_CC4_CMC_TS_Msk \ - (0x20000UL) /*!< CCU4_CC4 CMC: TS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_CMC_MOS_Pos \ - (18UL) /*!< CCU4_CC4 CMC: MOS (Bit 18) */ -#define CCU4_CC4_CMC_MOS_Msk \ - (0xc0000UL) /*!< CCU4_CC4 CMC: MOS (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_CMC_TCE_Pos \ - (20UL) /*!< CCU4_CC4 CMC: TCE (Bit 20) */ -#define CCU4_CC4_CMC_TCE_Msk \ - (0x100000UL) /*!< CCU4_CC4 CMC: TCE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_TCST ------------------------------- */ -#define CCU4_CC4_TCST_TRB_Pos \ - (0UL) /*!< CCU4_CC4 TCST: TRB (Bit 0) */ -#define CCU4_CC4_TCST_TRB_Msk \ - (0x1UL) /*!< CCU4_CC4 TCST: TRB (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TCST_CDIR_Pos \ - (1UL) /*!< CCU4_CC4 TCST: CDIR (Bit 1) */ -#define CCU4_CC4_TCST_CDIR_Msk \ - (0x2UL) /*!< CCU4_CC4 TCST: CDIR (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CCU4_CC4_TCSET ------------------------------- */ -#define CCU4_CC4_TCSET_TRBS_Pos \ - (0UL) /*!< CCU4_CC4 TCSET: TRBS (Bit 0) */ -#define CCU4_CC4_TCSET_TRBS_Msk \ - (0x1UL) /*!< CCU4_CC4 TCSET: TRBS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CCU4_CC4_TCCLR ------------------------------- */ -#define CCU4_CC4_TCCLR_TRBC_Pos \ - (0UL) /*!< CCU4_CC4 TCCLR: TRBC (Bit 0) */ -#define CCU4_CC4_TCCLR_TRBC_Msk \ - (0x1UL) /*!< CCU4_CC4 TCCLR: TRBC (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TCCLR_TCC_Pos \ - (1UL) /*!< CCU4_CC4 TCCLR: TCC (Bit 1) */ -#define CCU4_CC4_TCCLR_TCC_Msk \ - (0x2UL) /*!< CCU4_CC4 TCCLR: TCC (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TCCLR_DITC_Pos \ - (2UL) /*!< CCU4_CC4 TCCLR: DITC (Bit 2) */ -#define CCU4_CC4_TCCLR_DITC_Msk \ - (0x4UL) /*!< CCU4_CC4 TCCLR: DITC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU4_CC4_TC -------------------------------- */ -#define CCU4_CC4_TC_TCM_Pos \ - (0UL) /*!< CCU4_CC4 TC: TCM (Bit 0) */ -#define CCU4_CC4_TC_TCM_Msk \ - (0x1UL) /*!< CCU4_CC4 TC: TCM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_TSSM_Pos \ - (1UL) /*!< CCU4_CC4 TC: TSSM (Bit 1) */ -#define CCU4_CC4_TC_TSSM_Msk \ - (0x2UL) /*!< CCU4_CC4 TC: TSSM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_CLST_Pos \ - (2UL) /*!< CCU4_CC4 TC: CLST (Bit 2) */ -#define CCU4_CC4_TC_CLST_Msk \ - (0x4UL) /*!< CCU4_CC4 TC: CLST (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_CMOD_Pos \ - (3UL) /*!< CCU4_CC4 TC: CMOD (Bit 3) */ -#define CCU4_CC4_TC_CMOD_Msk \ - (0x8UL) /*!< CCU4_CC4 TC: CMOD (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_ECM_Pos \ - (4UL) /*!< CCU4_CC4 TC: ECM (Bit 4) */ -#define CCU4_CC4_TC_ECM_Msk \ - (0x10UL) /*!< CCU4_CC4 TC: ECM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_CAPC_Pos \ - (5UL) /*!< CCU4_CC4 TC: CAPC (Bit 5) */ -#define CCU4_CC4_TC_CAPC_Msk \ - (0x60UL) /*!< CCU4_CC4 TC: CAPC (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_TC_ENDM_Pos \ - (8UL) /*!< CCU4_CC4 TC: ENDM (Bit 8) */ -#define CCU4_CC4_TC_ENDM_Msk \ - (0x300UL) /*!< CCU4_CC4 TC: ENDM (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_TC_STRM_Pos \ - (10UL) /*!< CCU4_CC4 TC: STRM (Bit 10) */ -#define CCU4_CC4_TC_STRM_Msk \ - (0x400UL) /*!< CCU4_CC4 TC: STRM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_SCE_Pos \ - (11UL) /*!< CCU4_CC4 TC: SCE (Bit 11) */ -#define CCU4_CC4_TC_SCE_Msk \ - (0x800UL) /*!< CCU4_CC4 TC: SCE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_CCS_Pos \ - (12UL) /*!< CCU4_CC4 TC: CCS (Bit 12) */ -#define CCU4_CC4_TC_CCS_Msk \ - (0x1000UL) /*!< CCU4_CC4 TC: CCS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_DITHE_Pos \ - (13UL) /*!< CCU4_CC4 TC: DITHE (Bit 13) */ -#define CCU4_CC4_TC_DITHE_Msk \ - (0x6000UL) /*!< CCU4_CC4 TC: DITHE (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_TC_DIM_Pos \ - (15UL) /*!< CCU4_CC4 TC: DIM (Bit 15) */ -#define CCU4_CC4_TC_DIM_Msk \ - (0x8000UL) /*!< CCU4_CC4 TC: DIM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_FPE_Pos \ - (16UL) /*!< CCU4_CC4 TC: FPE (Bit 16) */ -#define CCU4_CC4_TC_FPE_Msk \ - (0x10000UL) /*!< CCU4_CC4 TC: FPE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_TRAPE_Pos \ - (17UL) /*!< CCU4_CC4 TC: TRAPE (Bit 17) */ -#define CCU4_CC4_TC_TRAPE_Msk \ - (0x20000UL) /*!< CCU4_CC4 TC: TRAPE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_TRPSE_Pos \ - (21UL) /*!< CCU4_CC4 TC: TRPSE (Bit 21) */ -#define CCU4_CC4_TC_TRPSE_Msk \ - (0x200000UL) /*!< CCU4_CC4 TC: TRPSE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_TRPSW_Pos \ - (22UL) /*!< CCU4_CC4 TC: TRPSW (Bit 22) */ -#define CCU4_CC4_TC_TRPSW_Msk \ - (0x400000UL) /*!< CCU4_CC4 TC: TRPSW (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_EMS_Pos \ - (23UL) /*!< CCU4_CC4 TC: EMS (Bit 23) */ -#define CCU4_CC4_TC_EMS_Msk \ - (0x800000UL) /*!< CCU4_CC4 TC: EMS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_EMT_Pos \ - (24UL) /*!< CCU4_CC4 TC: EMT (Bit 24) */ -#define CCU4_CC4_TC_EMT_Msk \ - (0x1000000UL) /*!< CCU4_CC4 TC: EMT (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_TC_MCME_Pos \ - (25UL) /*!< CCU4_CC4 TC: MCME (Bit 25) */ -#define CCU4_CC4_TC_MCME_Msk \ - (0x2000000UL) /*!< CCU4_CC4 TC: MCME (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_PSL -------------------------------- */ -#define CCU4_CC4_PSL_PSL_Pos \ - (0UL) /*!< CCU4_CC4 PSL: PSL (Bit 0) */ -#define CCU4_CC4_PSL_PSL_Msk \ - (0x1UL) /*!< CCU4_CC4 PSL: PSL (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_DIT -------------------------------- */ -#define CCU4_CC4_DIT_DCV_Pos \ - (0UL) /*!< CCU4_CC4 DIT: DCV (Bit 0) */ -#define CCU4_CC4_DIT_DCV_Msk \ - (0xfUL) /*!< CCU4_CC4 DIT: DCV (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_DIT_DCNT_Pos \ - (8UL) /*!< CCU4_CC4 DIT: DCNT (Bit 8) */ -#define CCU4_CC4_DIT_DCNT_Msk \ - (0xf00UL) /*!< CCU4_CC4 DIT: DCNT (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU4_CC4_DITS ------------------------------- */ -#define CCU4_CC4_DITS_DCVS_Pos \ - (0UL) /*!< CCU4_CC4 DITS: DCVS (Bit 0) */ -#define CCU4_CC4_DITS_DCVS_Msk \ - (0xfUL) /*!< CCU4_CC4 DITS: DCVS (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU4_CC4_PSC -------------------------------- */ -#define CCU4_CC4_PSC_PSIV_Pos \ - (0UL) /*!< CCU4_CC4 PSC: PSIV (Bit 0) */ -#define CCU4_CC4_PSC_PSIV_Msk \ - (0xfUL) /*!< CCU4_CC4 PSC: PSIV (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU4_CC4_FPC -------------------------------- */ -#define CCU4_CC4_FPC_PCMP_Pos \ - (0UL) /*!< CCU4_CC4 FPC: PCMP (Bit 0) */ -#define CCU4_CC4_FPC_PCMP_Msk \ - (0xfUL) /*!< CCU4_CC4 FPC: PCMP (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_FPC_PVAL_Pos \ - (8UL) /*!< CCU4_CC4 FPC: PVAL (Bit 8) */ -#define CCU4_CC4_FPC_PVAL_Msk \ - (0xf00UL) /*!< CCU4_CC4 FPC: PVAL (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU4_CC4_FPCS ------------------------------- */ -#define CCU4_CC4_FPCS_PCMP_Pos \ - (0UL) /*!< CCU4_CC4 FPCS: PCMP (Bit 0) */ -#define CCU4_CC4_FPCS_PCMP_Msk \ - (0xfUL) /*!< CCU4_CC4 FPCS: PCMP (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- CCU4_CC4_PR -------------------------------- */ -#define CCU4_CC4_PR_PR_Pos (0UL) /*!< CCU4_CC4 PR: PR (Bit 0) */ -#define CCU4_CC4_PR_PR_Msk \ - (0xffffUL) /*!< CCU4_CC4 PR: PR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU4_CC4_PRS -------------------------------- */ -#define CCU4_CC4_PRS_PRS_Pos \ - (0UL) /*!< CCU4_CC4 PRS: PRS (Bit 0) */ -#define CCU4_CC4_PRS_PRS_Msk \ - (0xffffUL) /*!< CCU4_CC4 PRS: PRS (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- CCU4_CC4_CR -------------------------------- */ -#define CCU4_CC4_CR_CR_Pos (0UL) /*!< CCU4_CC4 CR: CR (Bit 0) */ -#define CCU4_CC4_CR_CR_Msk \ - (0xffffUL) /*!< CCU4_CC4 CR: CR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU4_CC4_CRS -------------------------------- */ -#define CCU4_CC4_CRS_CRS_Pos \ - (0UL) /*!< CCU4_CC4 CRS: CRS (Bit 0) */ -#define CCU4_CC4_CRS_CRS_Msk \ - (0xffffUL) /*!< CCU4_CC4 CRS: CRS (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- CCU4_CC4_TIMER ------------------------------- */ -#define CCU4_CC4_TIMER_TVAL_Pos \ - (0UL) /*!< CCU4_CC4 TIMER: TVAL (Bit 0) */ -#define CCU4_CC4_TIMER_TVAL_Msk \ - (0xffffUL) /*!< CCU4_CC4 TIMER: TVAL (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- CCU4_CC4_CV -------------------------------- */ -#define CCU4_CC4_CV_CAPTV_Pos \ - (0UL) /*!< CCU4_CC4 CV: CAPTV (Bit 0) */ -#define CCU4_CC4_CV_CAPTV_Msk \ - (0xffffUL) /*!< CCU4_CC4 CV: CAPTV (Bitfield-Mask: 0xffff) */ -#define CCU4_CC4_CV_FPCV_Pos \ - (16UL) /*!< CCU4_CC4 CV: FPCV (Bit 16) */ -#define CCU4_CC4_CV_FPCV_Msk \ - (0xf0000UL) /*!< CCU4_CC4 CV: FPCV (Bitfield-Mask: 0x0f) */ -#define CCU4_CC4_CV_FFL_Pos \ - (20UL) /*!< CCU4_CC4 CV: FFL (Bit 20) */ -#define CCU4_CC4_CV_FFL_Msk \ - (0x100000UL) /*!< CCU4_CC4 CV: FFL (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_INTS ------------------------------- */ -#define CCU4_CC4_INTS_PMUS_Pos \ - (0UL) /*!< CCU4_CC4 INTS: PMUS (Bit 0) */ -#define CCU4_CC4_INTS_PMUS_Msk \ - (0x1UL) /*!< CCU4_CC4 INTS: PMUS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_OMDS_Pos \ - (1UL) /*!< CCU4_CC4 INTS: OMDS (Bit 1) */ -#define CCU4_CC4_INTS_OMDS_Msk \ - (0x2UL) /*!< CCU4_CC4 INTS: OMDS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_CMUS_Pos \ - (2UL) /*!< CCU4_CC4 INTS: CMUS (Bit 2) */ -#define CCU4_CC4_INTS_CMUS_Msk \ - (0x4UL) /*!< CCU4_CC4 INTS: CMUS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_CMDS_Pos \ - (3UL) /*!< CCU4_CC4 INTS: CMDS (Bit 3) */ -#define CCU4_CC4_INTS_CMDS_Msk \ - (0x8UL) /*!< CCU4_CC4 INTS: CMDS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_E0AS_Pos \ - (8UL) /*!< CCU4_CC4 INTS: E0AS (Bit 8) */ -#define CCU4_CC4_INTS_E0AS_Msk \ - (0x100UL) /*!< CCU4_CC4 INTS: E0AS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_E1AS_Pos \ - (9UL) /*!< CCU4_CC4 INTS: E1AS (Bit 9) */ -#define CCU4_CC4_INTS_E1AS_Msk \ - (0x200UL) /*!< CCU4_CC4 INTS: E1AS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_E2AS_Pos \ - (10UL) /*!< CCU4_CC4 INTS: E2AS (Bit 10) */ -#define CCU4_CC4_INTS_E2AS_Msk \ - (0x400UL) /*!< CCU4_CC4 INTS: E2AS (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTS_TRPF_Pos \ - (11UL) /*!< CCU4_CC4 INTS: TRPF (Bit 11) */ -#define CCU4_CC4_INTS_TRPF_Msk \ - (0x800UL) /*!< CCU4_CC4 INTS: TRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_INTE ------------------------------- */ -#define CCU4_CC4_INTE_PME_Pos \ - (0UL) /*!< CCU4_CC4 INTE: PME (Bit 0) */ -#define CCU4_CC4_INTE_PME_Msk \ - (0x1UL) /*!< CCU4_CC4 INTE: PME (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_OME_Pos \ - (1UL) /*!< CCU4_CC4 INTE: OME (Bit 1) */ -#define CCU4_CC4_INTE_OME_Msk \ - (0x2UL) /*!< CCU4_CC4 INTE: OME (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_CMUE_Pos \ - (2UL) /*!< CCU4_CC4 INTE: CMUE (Bit 2) */ -#define CCU4_CC4_INTE_CMUE_Msk \ - (0x4UL) /*!< CCU4_CC4 INTE: CMUE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_CMDE_Pos \ - (3UL) /*!< CCU4_CC4 INTE: CMDE (Bit 3) */ -#define CCU4_CC4_INTE_CMDE_Msk \ - (0x8UL) /*!< CCU4_CC4 INTE: CMDE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_E0AE_Pos \ - (8UL) /*!< CCU4_CC4 INTE: E0AE (Bit 8) */ -#define CCU4_CC4_INTE_E0AE_Msk \ - (0x100UL) /*!< CCU4_CC4 INTE: E0AE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_E1AE_Pos \ - (9UL) /*!< CCU4_CC4 INTE: E1AE (Bit 9) */ -#define CCU4_CC4_INTE_E1AE_Msk \ - (0x200UL) /*!< CCU4_CC4 INTE: E1AE (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_INTE_E2AE_Pos \ - (10UL) /*!< CCU4_CC4 INTE: E2AE (Bit 10) */ -#define CCU4_CC4_INTE_E2AE_Msk \ - (0x400UL) /*!< CCU4_CC4 INTE: E2AE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_SRS -------------------------------- */ -#define CCU4_CC4_SRS_POSR_Pos \ - (0UL) /*!< CCU4_CC4 SRS: POSR (Bit 0) */ -#define CCU4_CC4_SRS_POSR_Msk \ - (0x3UL) /*!< CCU4_CC4 SRS: POSR (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_SRS_CMSR_Pos \ - (2UL) /*!< CCU4_CC4 SRS: CMSR (Bit 2) */ -#define CCU4_CC4_SRS_CMSR_Msk \ - (0xcUL) /*!< CCU4_CC4 SRS: CMSR (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_SRS_E0SR_Pos \ - (8UL) /*!< CCU4_CC4 SRS: E0SR (Bit 8) */ -#define CCU4_CC4_SRS_E0SR_Msk \ - (0x300UL) /*!< CCU4_CC4 SRS: E0SR (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_SRS_E1SR_Pos \ - (10UL) /*!< CCU4_CC4 SRS: E1SR (Bit 10) */ -#define CCU4_CC4_SRS_E1SR_Msk \ - (0xc00UL) /*!< CCU4_CC4 SRS: E1SR (Bitfield-Mask: 0x03) */ -#define CCU4_CC4_SRS_E2SR_Pos \ - (12UL) /*!< CCU4_CC4 SRS: E2SR (Bit 12) */ -#define CCU4_CC4_SRS_E2SR_Msk \ - (0x3000UL) /*!< CCU4_CC4 SRS: E2SR (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU4_CC4_SWS -------------------------------- */ -#define CCU4_CC4_SWS_SPM_Pos \ - (0UL) /*!< CCU4_CC4 SWS: SPM (Bit 0) */ -#define CCU4_CC4_SWS_SPM_Msk \ - (0x1UL) /*!< CCU4_CC4 SWS: SPM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SOM_Pos \ - (1UL) /*!< CCU4_CC4 SWS: SOM (Bit 1) */ -#define CCU4_CC4_SWS_SOM_Msk \ - (0x2UL) /*!< CCU4_CC4 SWS: SOM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SCMU_Pos \ - (2UL) /*!< CCU4_CC4 SWS: SCMU (Bit 2) */ -#define CCU4_CC4_SWS_SCMU_Msk \ - (0x4UL) /*!< CCU4_CC4 SWS: SCMU (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SCMD_Pos \ - (3UL) /*!< CCU4_CC4 SWS: SCMD (Bit 3) */ -#define CCU4_CC4_SWS_SCMD_Msk \ - (0x8UL) /*!< CCU4_CC4 SWS: SCMD (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SE0A_Pos \ - (8UL) /*!< CCU4_CC4 SWS: SE0A (Bit 8) */ -#define CCU4_CC4_SWS_SE0A_Msk \ - (0x100UL) /*!< CCU4_CC4 SWS: SE0A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SE1A_Pos \ - (9UL) /*!< CCU4_CC4 SWS: SE1A (Bit 9) */ -#define CCU4_CC4_SWS_SE1A_Msk \ - (0x200UL) /*!< CCU4_CC4 SWS: SE1A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_SE2A_Pos \ - (10UL) /*!< CCU4_CC4 SWS: SE2A (Bit 10) */ -#define CCU4_CC4_SWS_SE2A_Msk \ - (0x400UL) /*!< CCU4_CC4 SWS: SE2A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWS_STRPF_Pos \ - (11UL) /*!< CCU4_CC4 SWS: STRPF (Bit 11) */ -#define CCU4_CC4_SWS_STRPF_Msk \ - (0x800UL) /*!< CCU4_CC4 SWS: STRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU4_CC4_SWR -------------------------------- */ -#define CCU4_CC4_SWR_RPM_Pos \ - (0UL) /*!< CCU4_CC4 SWR: RPM (Bit 0) */ -#define CCU4_CC4_SWR_RPM_Msk \ - (0x1UL) /*!< CCU4_CC4 SWR: RPM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_ROM_Pos \ - (1UL) /*!< CCU4_CC4 SWR: ROM (Bit 1) */ -#define CCU4_CC4_SWR_ROM_Msk \ - (0x2UL) /*!< CCU4_CC4 SWR: ROM (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RCMU_Pos \ - (2UL) /*!< CCU4_CC4 SWR: RCMU (Bit 2) */ -#define CCU4_CC4_SWR_RCMU_Msk \ - (0x4UL) /*!< CCU4_CC4 SWR: RCMU (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RCMD_Pos \ - (3UL) /*!< CCU4_CC4 SWR: RCMD (Bit 3) */ -#define CCU4_CC4_SWR_RCMD_Msk \ - (0x8UL) /*!< CCU4_CC4 SWR: RCMD (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RE0A_Pos \ - (8UL) /*!< CCU4_CC4 SWR: RE0A (Bit 8) */ -#define CCU4_CC4_SWR_RE0A_Msk \ - (0x100UL) /*!< CCU4_CC4 SWR: RE0A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RE1A_Pos \ - (9UL) /*!< CCU4_CC4 SWR: RE1A (Bit 9) */ -#define CCU4_CC4_SWR_RE1A_Msk \ - (0x200UL) /*!< CCU4_CC4 SWR: RE1A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RE2A_Pos \ - (10UL) /*!< CCU4_CC4 SWR: RE2A (Bit 10) */ -#define CCU4_CC4_SWR_RE2A_Msk \ - (0x400UL) /*!< CCU4_CC4 SWR: RE2A (Bitfield-Mask: 0x01) */ -#define CCU4_CC4_SWR_RTRPF_Pos \ - (11UL) /*!< CCU4_CC4 SWR: RTRPF (Bit 11) */ -#define CCU4_CC4_SWR_RTRPF_Msk \ - (0x800UL) /*!< CCU4_CC4 SWR: RTRPF (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'CCU8' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- CCU8_GCTRL --------------------------------- */ -#define CCU8_GCTRL_PRBC_Pos \ - (0UL) /*!< CCU8 GCTRL: PRBC (Bit 0) */ -#define CCU8_GCTRL_PRBC_Msk \ - (0x7UL) /*!< CCU8 GCTRL: PRBC (Bitfield-Mask: 0x07) */ -#define CCU8_GCTRL_PCIS_Pos \ - (4UL) /*!< CCU8 GCTRL: PCIS (Bit 4) */ -#define CCU8_GCTRL_PCIS_Msk \ - (0x30UL) /*!< CCU8 GCTRL: PCIS (Bitfield-Mask: 0x03) */ -#define CCU8_GCTRL_SUSCFG_Pos \ - (8UL) /*!< CCU8 GCTRL: SUSCFG (Bit 8) */ -#define CCU8_GCTRL_SUSCFG_Msk \ - (0x300UL) /*!< CCU8 GCTRL: SUSCFG (Bitfield-Mask: 0x03) */ -#define CCU8_GCTRL_MSE0_Pos \ - (10UL) /*!< CCU8 GCTRL: MSE0 (Bit 10) */ -#define CCU8_GCTRL_MSE0_Msk \ - (0x400UL) /*!< CCU8 GCTRL: MSE0 (Bitfield-Mask: 0x01) */ -#define CCU8_GCTRL_MSE1_Pos \ - (11UL) /*!< CCU8 GCTRL: MSE1 (Bit 11) */ -#define CCU8_GCTRL_MSE1_Msk \ - (0x800UL) /*!< CCU8 GCTRL: MSE1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCTRL_MSE2_Pos \ - (12UL) /*!< CCU8 GCTRL: MSE2 (Bit 12) */ -#define CCU8_GCTRL_MSE2_Msk \ - (0x1000UL) /*!< CCU8 GCTRL: MSE2 (Bitfield-Mask: 0x01) */ -#define CCU8_GCTRL_MSE3_Pos \ - (13UL) /*!< CCU8 GCTRL: MSE3 (Bit 13) */ -#define CCU8_GCTRL_MSE3_Msk \ - (0x2000UL) /*!< CCU8 GCTRL: MSE3 (Bitfield-Mask: 0x01) */ -#define CCU8_GCTRL_MSDE_Pos \ - (14UL) /*!< CCU8 GCTRL: MSDE (Bit 14) */ -#define CCU8_GCTRL_MSDE_Msk \ - (0xc000UL) /*!< CCU8 GCTRL: MSDE (Bitfield-Mask: 0x03) */ - -/* --------------------------------- CCU8_GSTAT --------------------------------- */ -#define CCU8_GSTAT_S0I_Pos (0UL) /*!< CCU8 GSTAT: S0I (Bit 0) */ -#define CCU8_GSTAT_S0I_Msk \ - (0x1UL) /*!< CCU8 GSTAT: S0I (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_S1I_Pos (1UL) /*!< CCU8 GSTAT: S1I (Bit 1) */ -#define CCU8_GSTAT_S1I_Msk \ - (0x2UL) /*!< CCU8 GSTAT: S1I (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_S2I_Pos (2UL) /*!< CCU8 GSTAT: S2I (Bit 2) */ -#define CCU8_GSTAT_S2I_Msk \ - (0x4UL) /*!< CCU8 GSTAT: S2I (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_S3I_Pos (3UL) /*!< CCU8 GSTAT: S3I (Bit 3) */ -#define CCU8_GSTAT_S3I_Msk \ - (0x8UL) /*!< CCU8 GSTAT: S3I (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_PRB_Pos (8UL) /*!< CCU8 GSTAT: PRB (Bit 8) */ -#define CCU8_GSTAT_PRB_Msk \ - (0x100UL) /*!< CCU8 GSTAT: PRB (Bitfield-Mask: 0x01) */ -#define CCU8_GSTAT_PCRB_Pos \ - (10UL) /*!< CCU8 GSTAT: PCRB (Bit 10) */ -#define CCU8_GSTAT_PCRB_Msk \ - (0x400UL) /*!< CCU8 GSTAT: PCRB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU8_GIDLS --------------------------------- */ -#define CCU8_GIDLS_SS0I_Pos \ - (0UL) /*!< CCU8 GIDLS: SS0I (Bit 0) */ -#define CCU8_GIDLS_SS0I_Msk \ - (0x1UL) /*!< CCU8 GIDLS: SS0I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_SS1I_Pos \ - (1UL) /*!< CCU8 GIDLS: SS1I (Bit 1) */ -#define CCU8_GIDLS_SS1I_Msk \ - (0x2UL) /*!< CCU8 GIDLS: SS1I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_SS2I_Pos \ - (2UL) /*!< CCU8 GIDLS: SS2I (Bit 2) */ -#define CCU8_GIDLS_SS2I_Msk \ - (0x4UL) /*!< CCU8 GIDLS: SS2I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_SS3I_Pos \ - (3UL) /*!< CCU8 GIDLS: SS3I (Bit 3) */ -#define CCU8_GIDLS_SS3I_Msk \ - (0x8UL) /*!< CCU8 GIDLS: SS3I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_CPRB_Pos \ - (8UL) /*!< CCU8 GIDLS: CPRB (Bit 8) */ -#define CCU8_GIDLS_CPRB_Msk \ - (0x100UL) /*!< CCU8 GIDLS: CPRB (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_PSIC_Pos \ - (9UL) /*!< CCU8 GIDLS: PSIC (Bit 9) */ -#define CCU8_GIDLS_PSIC_Msk \ - (0x200UL) /*!< CCU8 GIDLS: PSIC (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLS_CPCH_Pos \ - (10UL) /*!< CCU8 GIDLS: CPCH (Bit 10) */ -#define CCU8_GIDLS_CPCH_Msk \ - (0x400UL) /*!< CCU8 GIDLS: CPCH (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU8_GIDLC --------------------------------- */ -#define CCU8_GIDLC_CS0I_Pos \ - (0UL) /*!< CCU8 GIDLC: CS0I (Bit 0) */ -#define CCU8_GIDLC_CS0I_Msk \ - (0x1UL) /*!< CCU8 GIDLC: CS0I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_CS1I_Pos \ - (1UL) /*!< CCU8 GIDLC: CS1I (Bit 1) */ -#define CCU8_GIDLC_CS1I_Msk \ - (0x2UL) /*!< CCU8 GIDLC: CS1I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_CS2I_Pos \ - (2UL) /*!< CCU8 GIDLC: CS2I (Bit 2) */ -#define CCU8_GIDLC_CS2I_Msk \ - (0x4UL) /*!< CCU8 GIDLC: CS2I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_CS3I_Pos \ - (3UL) /*!< CCU8 GIDLC: CS3I (Bit 3) */ -#define CCU8_GIDLC_CS3I_Msk \ - (0x8UL) /*!< CCU8 GIDLC: CS3I (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_SPRB_Pos \ - (8UL) /*!< CCU8 GIDLC: SPRB (Bit 8) */ -#define CCU8_GIDLC_SPRB_Msk \ - (0x100UL) /*!< CCU8 GIDLC: SPRB (Bitfield-Mask: 0x01) */ -#define CCU8_GIDLC_SPCH_Pos \ - (10UL) /*!< CCU8 GIDLC: SPCH (Bit 10) */ -#define CCU8_GIDLC_SPCH_Msk \ - (0x400UL) /*!< CCU8 GIDLC: SPCH (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU8_GCSS --------------------------------- */ -#define CCU8_GCSS_S0SE_Pos (0UL) /*!< CCU8 GCSS: S0SE (Bit 0) */ -#define CCU8_GCSS_S0SE_Msk \ - (0x1UL) /*!< CCU8 GCSS: S0SE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S0DSE_Pos \ - (1UL) /*!< CCU8 GCSS: S0DSE (Bit 1) */ -#define CCU8_GCSS_S0DSE_Msk \ - (0x2UL) /*!< CCU8 GCSS: S0DSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S0PSE_Pos \ - (2UL) /*!< CCU8 GCSS: S0PSE (Bit 2) */ -#define CCU8_GCSS_S0PSE_Msk \ - (0x4UL) /*!< CCU8 GCSS: S0PSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1SE_Pos (4UL) /*!< CCU8 GCSS: S1SE (Bit 4) */ -#define CCU8_GCSS_S1SE_Msk \ - (0x10UL) /*!< CCU8 GCSS: S1SE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1DSE_Pos \ - (5UL) /*!< CCU8 GCSS: S1DSE (Bit 5) */ -#define CCU8_GCSS_S1DSE_Msk \ - (0x20UL) /*!< CCU8 GCSS: S1DSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1PSE_Pos \ - (6UL) /*!< CCU8 GCSS: S1PSE (Bit 6) */ -#define CCU8_GCSS_S1PSE_Msk \ - (0x40UL) /*!< CCU8 GCSS: S1PSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2SE_Pos (8UL) /*!< CCU8 GCSS: S2SE (Bit 8) */ -#define CCU8_GCSS_S2SE_Msk \ - (0x100UL) /*!< CCU8 GCSS: S2SE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2DSE_Pos \ - (9UL) /*!< CCU8 GCSS: S2DSE (Bit 9) */ -#define CCU8_GCSS_S2DSE_Msk \ - (0x200UL) /*!< CCU8 GCSS: S2DSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2PSE_Pos \ - (10UL) /*!< CCU8 GCSS: S2PSE (Bit 10) */ -#define CCU8_GCSS_S2PSE_Msk \ - (0x400UL) /*!< CCU8 GCSS: S2PSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3SE_Pos \ - (12UL) /*!< CCU8 GCSS: S3SE (Bit 12) */ -#define CCU8_GCSS_S3SE_Msk \ - (0x1000UL) /*!< CCU8 GCSS: S3SE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3DSE_Pos \ - (13UL) /*!< CCU8 GCSS: S3DSE (Bit 13) */ -#define CCU8_GCSS_S3DSE_Msk \ - (0x2000UL) /*!< CCU8 GCSS: S3DSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3PSE_Pos \ - (14UL) /*!< CCU8 GCSS: S3PSE (Bit 14) */ -#define CCU8_GCSS_S3PSE_Msk \ - (0x4000UL) /*!< CCU8 GCSS: S3PSE (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S0ST1S_Pos \ - (16UL) /*!< CCU8 GCSS: S0ST1S (Bit 16) */ -#define CCU8_GCSS_S0ST1S_Msk \ - (0x10000UL) /*!< CCU8 GCSS: S0ST1S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1ST1S_Pos \ - (17UL) /*!< CCU8 GCSS: S1ST1S (Bit 17) */ -#define CCU8_GCSS_S1ST1S_Msk \ - (0x20000UL) /*!< CCU8 GCSS: S1ST1S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2ST1S_Pos \ - (18UL) /*!< CCU8 GCSS: S2ST1S (Bit 18) */ -#define CCU8_GCSS_S2ST1S_Msk \ - (0x40000UL) /*!< CCU8 GCSS: S2ST1S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3ST1S_Pos \ - (19UL) /*!< CCU8 GCSS: S3ST1S (Bit 19) */ -#define CCU8_GCSS_S3ST1S_Msk \ - (0x80000UL) /*!< CCU8 GCSS: S3ST1S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S0ST2S_Pos \ - (20UL) /*!< CCU8 GCSS: S0ST2S (Bit 20) */ -#define CCU8_GCSS_S0ST2S_Msk \ - (0x100000UL) /*!< CCU8 GCSS: S0ST2S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S1ST2S_Pos \ - (21UL) /*!< CCU8 GCSS: S1ST2S (Bit 21) */ -#define CCU8_GCSS_S1ST2S_Msk \ - (0x200000UL) /*!< CCU8 GCSS: S1ST2S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S2ST2S_Pos \ - (22UL) /*!< CCU8 GCSS: S2ST2S (Bit 22) */ -#define CCU8_GCSS_S2ST2S_Msk \ - (0x400000UL) /*!< CCU8 GCSS: S2ST2S (Bitfield-Mask: 0x01) */ -#define CCU8_GCSS_S3ST2S_Pos \ - (23UL) /*!< CCU8 GCSS: S3ST2S (Bit 23) */ -#define CCU8_GCSS_S3ST2S_Msk \ - (0x800000UL) /*!< CCU8 GCSS: S3ST2S (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU8_GCSC --------------------------------- */ -#define CCU8_GCSC_S0SC_Pos (0UL) /*!< CCU8 GCSC: S0SC (Bit 0) */ -#define CCU8_GCSC_S0SC_Msk \ - (0x1UL) /*!< CCU8 GCSC: S0SC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S0DSC_Pos \ - (1UL) /*!< CCU8 GCSC: S0DSC (Bit 1) */ -#define CCU8_GCSC_S0DSC_Msk \ - (0x2UL) /*!< CCU8 GCSC: S0DSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S0PSC_Pos \ - (2UL) /*!< CCU8 GCSC: S0PSC (Bit 2) */ -#define CCU8_GCSC_S0PSC_Msk \ - (0x4UL) /*!< CCU8 GCSC: S0PSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1SC_Pos (4UL) /*!< CCU8 GCSC: S1SC (Bit 4) */ -#define CCU8_GCSC_S1SC_Msk \ - (0x10UL) /*!< CCU8 GCSC: S1SC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1DSC_Pos \ - (5UL) /*!< CCU8 GCSC: S1DSC (Bit 5) */ -#define CCU8_GCSC_S1DSC_Msk \ - (0x20UL) /*!< CCU8 GCSC: S1DSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1PSC_Pos \ - (6UL) /*!< CCU8 GCSC: S1PSC (Bit 6) */ -#define CCU8_GCSC_S1PSC_Msk \ - (0x40UL) /*!< CCU8 GCSC: S1PSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2SC_Pos (8UL) /*!< CCU8 GCSC: S2SC (Bit 8) */ -#define CCU8_GCSC_S2SC_Msk \ - (0x100UL) /*!< CCU8 GCSC: S2SC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2DSC_Pos \ - (9UL) /*!< CCU8 GCSC: S2DSC (Bit 9) */ -#define CCU8_GCSC_S2DSC_Msk \ - (0x200UL) /*!< CCU8 GCSC: S2DSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2PSC_Pos \ - (10UL) /*!< CCU8 GCSC: S2PSC (Bit 10) */ -#define CCU8_GCSC_S2PSC_Msk \ - (0x400UL) /*!< CCU8 GCSC: S2PSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3SC_Pos \ - (12UL) /*!< CCU8 GCSC: S3SC (Bit 12) */ -#define CCU8_GCSC_S3SC_Msk \ - (0x1000UL) /*!< CCU8 GCSC: S3SC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3DSC_Pos \ - (13UL) /*!< CCU8 GCSC: S3DSC (Bit 13) */ -#define CCU8_GCSC_S3DSC_Msk \ - (0x2000UL) /*!< CCU8 GCSC: S3DSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3PSC_Pos \ - (14UL) /*!< CCU8 GCSC: S3PSC (Bit 14) */ -#define CCU8_GCSC_S3PSC_Msk \ - (0x4000UL) /*!< CCU8 GCSC: S3PSC (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S0ST1C_Pos \ - (16UL) /*!< CCU8 GCSC: S0ST1C (Bit 16) */ -#define CCU8_GCSC_S0ST1C_Msk \ - (0x10000UL) /*!< CCU8 GCSC: S0ST1C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1ST1C_Pos \ - (17UL) /*!< CCU8 GCSC: S1ST1C (Bit 17) */ -#define CCU8_GCSC_S1ST1C_Msk \ - (0x20000UL) /*!< CCU8 GCSC: S1ST1C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2ST1C_Pos \ - (18UL) /*!< CCU8 GCSC: S2ST1C (Bit 18) */ -#define CCU8_GCSC_S2ST1C_Msk \ - (0x40000UL) /*!< CCU8 GCSC: S2ST1C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3ST1C_Pos \ - (19UL) /*!< CCU8 GCSC: S3ST1C (Bit 19) */ -#define CCU8_GCSC_S3ST1C_Msk \ - (0x80000UL) /*!< CCU8 GCSC: S3ST1C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S0ST2C_Pos \ - (20UL) /*!< CCU8 GCSC: S0ST2C (Bit 20) */ -#define CCU8_GCSC_S0ST2C_Msk \ - (0x100000UL) /*!< CCU8 GCSC: S0ST2C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S1ST2C_Pos \ - (21UL) /*!< CCU8 GCSC: S1ST2C (Bit 21) */ -#define CCU8_GCSC_S1ST2C_Msk \ - (0x200000UL) /*!< CCU8 GCSC: S1ST2C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S2ST2C_Pos \ - (22UL) /*!< CCU8 GCSC: S2ST2C (Bit 22) */ -#define CCU8_GCSC_S2ST2C_Msk \ - (0x400000UL) /*!< CCU8 GCSC: S2ST2C (Bitfield-Mask: 0x01) */ -#define CCU8_GCSC_S3ST2C_Pos \ - (23UL) /*!< CCU8 GCSC: S3ST2C (Bit 23) */ -#define CCU8_GCSC_S3ST2C_Msk \ - (0x800000UL) /*!< CCU8 GCSC: S3ST2C (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU8_GCST --------------------------------- */ -#define CCU8_GCST_S0SS_Pos (0UL) /*!< CCU8 GCST: S0SS (Bit 0) */ -#define CCU8_GCST_S0SS_Msk \ - (0x1UL) /*!< CCU8 GCST: S0SS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S0DSS_Pos \ - (1UL) /*!< CCU8 GCST: S0DSS (Bit 1) */ -#define CCU8_GCST_S0DSS_Msk \ - (0x2UL) /*!< CCU8 GCST: S0DSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S0PSS_Pos \ - (2UL) /*!< CCU8 GCST: S0PSS (Bit 2) */ -#define CCU8_GCST_S0PSS_Msk \ - (0x4UL) /*!< CCU8 GCST: S0PSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S1SS_Pos (4UL) /*!< CCU8 GCST: S1SS (Bit 4) */ -#define CCU8_GCST_S1SS_Msk \ - (0x10UL) /*!< CCU8 GCST: S1SS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S1DSS_Pos \ - (5UL) /*!< CCU8 GCST: S1DSS (Bit 5) */ -#define CCU8_GCST_S1DSS_Msk \ - (0x20UL) /*!< CCU8 GCST: S1DSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S1PSS_Pos \ - (6UL) /*!< CCU8 GCST: S1PSS (Bit 6) */ -#define CCU8_GCST_S1PSS_Msk \ - (0x40UL) /*!< CCU8 GCST: S1PSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S2SS_Pos (8UL) /*!< CCU8 GCST: S2SS (Bit 8) */ -#define CCU8_GCST_S2SS_Msk \ - (0x100UL) /*!< CCU8 GCST: S2SS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S2DSS_Pos \ - (9UL) /*!< CCU8 GCST: S2DSS (Bit 9) */ -#define CCU8_GCST_S2DSS_Msk \ - (0x200UL) /*!< CCU8 GCST: S2DSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S2PSS_Pos \ - (10UL) /*!< CCU8 GCST: S2PSS (Bit 10) */ -#define CCU8_GCST_S2PSS_Msk \ - (0x400UL) /*!< CCU8 GCST: S2PSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S3SS_Pos \ - (12UL) /*!< CCU8 GCST: S3SS (Bit 12) */ -#define CCU8_GCST_S3SS_Msk \ - (0x1000UL) /*!< CCU8 GCST: S3SS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S3DSS_Pos \ - (13UL) /*!< CCU8 GCST: S3DSS (Bit 13) */ -#define CCU8_GCST_S3DSS_Msk \ - (0x2000UL) /*!< CCU8 GCST: S3DSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_S3PSS_Pos \ - (14UL) /*!< CCU8 GCST: S3PSS (Bit 14) */ -#define CCU8_GCST_S3PSS_Msk \ - (0x4000UL) /*!< CCU8 GCST: S3PSS (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC80ST1_Pos \ - (16UL) /*!< CCU8 GCST: CC80ST1 (Bit 16) */ -#define CCU8_GCST_CC80ST1_Msk \ - (0x10000UL) /*!< CCU8 GCST: CC80ST1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC81ST1_Pos \ - (17UL) /*!< CCU8 GCST: CC81ST1 (Bit 17) */ -#define CCU8_GCST_CC81ST1_Msk \ - (0x20000UL) /*!< CCU8 GCST: CC81ST1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC82ST1_Pos \ - (18UL) /*!< CCU8 GCST: CC82ST1 (Bit 18) */ -#define CCU8_GCST_CC82ST1_Msk \ - (0x40000UL) /*!< CCU8 GCST: CC82ST1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC83ST1_Pos \ - (19UL) /*!< CCU8 GCST: CC83ST1 (Bit 19) */ -#define CCU8_GCST_CC83ST1_Msk \ - (0x80000UL) /*!< CCU8 GCST: CC83ST1 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC80ST2_Pos \ - (20UL) /*!< CCU8 GCST: CC80ST2 (Bit 20) */ -#define CCU8_GCST_CC80ST2_Msk \ - (0x100000UL) /*!< CCU8 GCST: CC80ST2 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC81ST2_Pos \ - (21UL) /*!< CCU8 GCST: CC81ST2 (Bit 21) */ -#define CCU8_GCST_CC81ST2_Msk \ - (0x200000UL) /*!< CCU8 GCST: CC81ST2 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC82ST2_Pos \ - (22UL) /*!< CCU8 GCST: CC82ST2 (Bit 22) */ -#define CCU8_GCST_CC82ST2_Msk \ - (0x400000UL) /*!< CCU8 GCST: CC82ST2 (Bitfield-Mask: 0x01) */ -#define CCU8_GCST_CC83ST2_Pos \ - (23UL) /*!< CCU8 GCST: CC83ST2 (Bit 23) */ -#define CCU8_GCST_CC83ST2_Msk \ - (0x800000UL) /*!< CCU8 GCST: CC83ST2 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU8_GPCHK --------------------------------- */ -#define CCU8_GPCHK_PASE_Pos \ - (0UL) /*!< CCU8 GPCHK: PASE (Bit 0) */ -#define CCU8_GPCHK_PASE_Msk \ - (0x1UL) /*!< CCU8 GPCHK: PASE (Bitfield-Mask: 0x01) */ -#define CCU8_GPCHK_PACS_Pos \ - (1UL) /*!< CCU8 GPCHK: PACS (Bit 1) */ -#define CCU8_GPCHK_PACS_Msk \ - (0x6UL) /*!< CCU8 GPCHK: PACS (Bitfield-Mask: 0x03) */ -#define CCU8_GPCHK_PISEL_Pos \ - (3UL) /*!< CCU8 GPCHK: PISEL (Bit 3) */ -#define CCU8_GPCHK_PISEL_Msk \ - (0x18UL) /*!< CCU8 GPCHK: PISEL (Bitfield-Mask: 0x03) */ -#define CCU8_GPCHK_PCDS_Pos \ - (5UL) /*!< CCU8 GPCHK: PCDS (Bit 5) */ -#define CCU8_GPCHK_PCDS_Msk \ - (0x60UL) /*!< CCU8 GPCHK: PCDS (Bitfield-Mask: 0x03) */ -#define CCU8_GPCHK_PCTS_Pos \ - (7UL) /*!< CCU8 GPCHK: PCTS (Bit 7) */ -#define CCU8_GPCHK_PCTS_Msk \ - (0x80UL) /*!< CCU8 GPCHK: PCTS (Bitfield-Mask: 0x01) */ -#define CCU8_GPCHK_PCST_Pos \ - (15UL) /*!< CCU8 GPCHK: PCST (Bit 15) */ -#define CCU8_GPCHK_PCST_Msk \ - (0x8000UL) /*!< CCU8 GPCHK: PCST (Bitfield-Mask: 0x01) */ -#define CCU8_GPCHK_PCSEL0_Pos \ - (16UL) /*!< CCU8 GPCHK: PCSEL0 (Bit 16) */ -#define CCU8_GPCHK_PCSEL0_Msk \ - (0xf0000UL) /*!< CCU8 GPCHK: PCSEL0 (Bitfield-Mask: 0x0f) */ -#define CCU8_GPCHK_PCSEL1_Pos \ - (20UL) /*!< CCU8 GPCHK: PCSEL1 (Bit 20) */ -#define CCU8_GPCHK_PCSEL1_Msk \ - (0xf00000UL) /*!< CCU8 GPCHK: PCSEL1 (Bitfield-Mask: 0x0f) */ -#define CCU8_GPCHK_PCSEL2_Pos \ - (24UL) /*!< CCU8 GPCHK: PCSEL2 (Bit 24) */ -#define CCU8_GPCHK_PCSEL2_Msk \ - (0xf000000UL) /*!< CCU8 GPCHK: PCSEL2 (Bitfield-Mask: 0x0f) */ -#define CCU8_GPCHK_PCSEL3_Pos \ - (28UL) /*!< CCU8 GPCHK: PCSEL3 (Bit 28) */ -#define CCU8_GPCHK_PCSEL3_Msk \ - (0xf0000000UL) /*!< CCU8 GPCHK: PCSEL3 (Bitfield-Mask: 0x0f) */ - -/* ---------------------------------- CCU8_ECRD --------------------------------- */ -#define CCU8_ECRD_CAPV_Pos (0UL) /*!< CCU8 ECRD: CAPV (Bit 0) */ -#define CCU8_ECRD_CAPV_Msk \ - (0xffffUL) /*!< CCU8 ECRD: CAPV (Bitfield-Mask: 0xffff) */ -#define CCU8_ECRD_FPCV_Pos \ - (16UL) /*!< CCU8 ECRD: FPCV (Bit 16) */ -#define CCU8_ECRD_FPCV_Msk \ - (0xf0000UL) /*!< CCU8 ECRD: FPCV (Bitfield-Mask: 0x0f) */ -#define CCU8_ECRD_SPTR_Pos \ - (20UL) /*!< CCU8 ECRD: SPTR (Bit 20) */ -#define CCU8_ECRD_SPTR_Msk \ - (0x300000UL) /*!< CCU8 ECRD: SPTR (Bitfield-Mask: 0x03) */ -#define CCU8_ECRD_VPTR_Pos \ - (22UL) /*!< CCU8 ECRD: VPTR (Bit 22) */ -#define CCU8_ECRD_VPTR_Msk \ - (0xc00000UL) /*!< CCU8 ECRD: VPTR (Bitfield-Mask: 0x03) */ -#define CCU8_ECRD_FFL_Pos (24UL) /*!< CCU8 ECRD: FFL (Bit 24) */ -#define CCU8_ECRD_FFL_Msk \ - (0x1000000UL) /*!< CCU8 ECRD: FFL (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- CCU8_MIDR --------------------------------- */ -#define CCU8_MIDR_MODR_Pos (0UL) /*!< CCU8 MIDR: MODR (Bit 0) */ -#define CCU8_MIDR_MODR_Msk \ - (0xffUL) /*!< CCU8 MIDR: MODR (Bitfield-Mask: 0xff) */ -#define CCU8_MIDR_MODT_Pos (8UL) /*!< CCU8 MIDR: MODT (Bit 8) */ -#define CCU8_MIDR_MODT_Msk \ - (0xff00UL) /*!< CCU8 MIDR: MODT (Bitfield-Mask: 0xff) */ -#define CCU8_MIDR_MODN_Pos \ - (16UL) /*!< CCU8 MIDR: MODN (Bit 16) */ -#define CCU8_MIDR_MODN_Msk \ - (0xffff0000UL) /*!< CCU8 MIDR: MODN (Bitfield-Mask: 0xffff) */ - -/* ================================================================================ */ -/* ================ Group 'CCU8_CC8' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- CCU8_CC8_INS -------------------------------- */ -#define CCU8_CC8_INS_EV0IS_Pos \ - (0UL) /*!< CCU8_CC8 INS: EV0IS (Bit 0) */ -#define CCU8_CC8_INS_EV0IS_Msk \ - (0xfUL) /*!< CCU8_CC8 INS: EV0IS (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_INS_EV1IS_Pos \ - (4UL) /*!< CCU8_CC8 INS: EV1IS (Bit 4) */ -#define CCU8_CC8_INS_EV1IS_Msk \ - (0xf0UL) /*!< CCU8_CC8 INS: EV1IS (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_INS_EV2IS_Pos \ - (8UL) /*!< CCU8_CC8 INS: EV2IS (Bit 8) */ -#define CCU8_CC8_INS_EV2IS_Msk \ - (0xf00UL) /*!< CCU8_CC8 INS: EV2IS (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_INS_EV0EM_Pos \ - (16UL) /*!< CCU8_CC8 INS: EV0EM (Bit 16) */ -#define CCU8_CC8_INS_EV0EM_Msk \ - (0x30000UL) /*!< CCU8_CC8 INS: EV0EM (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_EV1EM_Pos \ - (18UL) /*!< CCU8_CC8 INS: EV1EM (Bit 18) */ -#define CCU8_CC8_INS_EV1EM_Msk \ - (0xc0000UL) /*!< CCU8_CC8 INS: EV1EM (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_EV2EM_Pos \ - (20UL) /*!< CCU8_CC8 INS: EV2EM (Bit 20) */ -#define CCU8_CC8_INS_EV2EM_Msk \ - (0x300000UL) /*!< CCU8_CC8 INS: EV2EM (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_EV0LM_Pos \ - (22UL) /*!< CCU8_CC8 INS: EV0LM (Bit 22) */ -#define CCU8_CC8_INS_EV0LM_Msk \ - (0x400000UL) /*!< CCU8_CC8 INS: EV0LM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INS_EV1LM_Pos \ - (23UL) /*!< CCU8_CC8 INS: EV1LM (Bit 23) */ -#define CCU8_CC8_INS_EV1LM_Msk \ - (0x800000UL) /*!< CCU8_CC8 INS: EV1LM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INS_EV2LM_Pos \ - (24UL) /*!< CCU8_CC8 INS: EV2LM (Bit 24) */ -#define CCU8_CC8_INS_EV2LM_Msk \ - (0x1000000UL) /*!< CCU8_CC8 INS: EV2LM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INS_LPF0M_Pos \ - (25UL) /*!< CCU8_CC8 INS: LPF0M (Bit 25) */ -#define CCU8_CC8_INS_LPF0M_Msk \ - (0x6000000UL) /*!< CCU8_CC8 INS: LPF0M (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_LPF1M_Pos \ - (27UL) /*!< CCU8_CC8 INS: LPF1M (Bit 27) */ -#define CCU8_CC8_INS_LPF1M_Msk \ - (0x18000000UL) /*!< CCU8_CC8 INS: LPF1M (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_INS_LPF2M_Pos \ - (29UL) /*!< CCU8_CC8 INS: LPF2M (Bit 29) */ -#define CCU8_CC8_INS_LPF2M_Msk \ - (0x60000000UL) /*!< CCU8_CC8 INS: LPF2M (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU8_CC8_CMC -------------------------------- */ -#define CCU8_CC8_CMC_STRTS_Pos \ - (0UL) /*!< CCU8_CC8 CMC: STRTS (Bit 0) */ -#define CCU8_CC8_CMC_STRTS_Msk \ - (0x3UL) /*!< CCU8_CC8 CMC: STRTS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_ENDS_Pos \ - (2UL) /*!< CCU8_CC8 CMC: ENDS (Bit 2) */ -#define CCU8_CC8_CMC_ENDS_Msk \ - (0xcUL) /*!< CCU8_CC8 CMC: ENDS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_CAP0S_Pos \ - (4UL) /*!< CCU8_CC8 CMC: CAP0S (Bit 4) */ -#define CCU8_CC8_CMC_CAP0S_Msk \ - (0x30UL) /*!< CCU8_CC8 CMC: CAP0S (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_CAP1S_Pos \ - (6UL) /*!< CCU8_CC8 CMC: CAP1S (Bit 6) */ -#define CCU8_CC8_CMC_CAP1S_Msk \ - (0xc0UL) /*!< CCU8_CC8 CMC: CAP1S (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_GATES_Pos \ - (8UL) /*!< CCU8_CC8 CMC: GATES (Bit 8) */ -#define CCU8_CC8_CMC_GATES_Msk \ - (0x300UL) /*!< CCU8_CC8 CMC: GATES (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_UDS_Pos \ - (10UL) /*!< CCU8_CC8 CMC: UDS (Bit 10) */ -#define CCU8_CC8_CMC_UDS_Msk \ - (0xc00UL) /*!< CCU8_CC8 CMC: UDS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_LDS_Pos \ - (12UL) /*!< CCU8_CC8 CMC: LDS (Bit 12) */ -#define CCU8_CC8_CMC_LDS_Msk \ - (0x3000UL) /*!< CCU8_CC8 CMC: LDS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_CNTS_Pos \ - (14UL) /*!< CCU8_CC8 CMC: CNTS (Bit 14) */ -#define CCU8_CC8_CMC_CNTS_Msk \ - (0xc000UL) /*!< CCU8_CC8 CMC: CNTS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_OFS_Pos \ - (16UL) /*!< CCU8_CC8 CMC: OFS (Bit 16) */ -#define CCU8_CC8_CMC_OFS_Msk \ - (0x10000UL) /*!< CCU8_CC8 CMC: OFS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CMC_TS_Pos \ - (17UL) /*!< CCU8_CC8 CMC: TS (Bit 17) */ -#define CCU8_CC8_CMC_TS_Msk \ - (0x20000UL) /*!< CCU8_CC8 CMC: TS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CMC_MOS_Pos \ - (18UL) /*!< CCU8_CC8 CMC: MOS (Bit 18) */ -#define CCU8_CC8_CMC_MOS_Msk \ - (0xc0000UL) /*!< CCU8_CC8 CMC: MOS (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_CMC_TCE_Pos \ - (20UL) /*!< CCU8_CC8 CMC: TCE (Bit 20) */ -#define CCU8_CC8_CMC_TCE_Msk \ - (0x100000UL) /*!< CCU8_CC8 CMC: TCE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_TCST ------------------------------- */ -#define CCU8_CC8_TCST_TRB_Pos \ - (0UL) /*!< CCU8_CC8 TCST: TRB (Bit 0) */ -#define CCU8_CC8_TCST_TRB_Msk \ - (0x1UL) /*!< CCU8_CC8 TCST: TRB (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCST_CDIR_Pos \ - (1UL) /*!< CCU8_CC8 TCST: CDIR (Bit 1) */ -#define CCU8_CC8_TCST_CDIR_Msk \ - (0x2UL) /*!< CCU8_CC8 TCST: CDIR (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCST_DTR1_Pos \ - (3UL) /*!< CCU8_CC8 TCST: DTR1 (Bit 3) */ -#define CCU8_CC8_TCST_DTR1_Msk \ - (0x8UL) /*!< CCU8_CC8 TCST: DTR1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCST_DTR2_Pos \ - (4UL) /*!< CCU8_CC8 TCST: DTR2 (Bit 4) */ -#define CCU8_CC8_TCST_DTR2_Msk \ - (0x10UL) /*!< CCU8_CC8 TCST: DTR2 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CCU8_CC8_TCSET ------------------------------- */ -#define CCU8_CC8_TCSET_TRBS_Pos \ - (0UL) /*!< CCU8_CC8 TCSET: TRBS (Bit 0) */ -#define CCU8_CC8_TCSET_TRBS_Msk \ - (0x1UL) /*!< CCU8_CC8 TCSET: TRBS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- CCU8_CC8_TCCLR ------------------------------- */ -#define CCU8_CC8_TCCLR_TRBC_Pos \ - (0UL) /*!< CCU8_CC8 TCCLR: TRBC (Bit 0) */ -#define CCU8_CC8_TCCLR_TRBC_Msk \ - (0x1UL) /*!< CCU8_CC8 TCCLR: TRBC (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCCLR_TCC_Pos \ - (1UL) /*!< CCU8_CC8 TCCLR: TCC (Bit 1) */ -#define CCU8_CC8_TCCLR_TCC_Msk \ - (0x2UL) /*!< CCU8_CC8 TCCLR: TCC (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCCLR_DITC_Pos \ - (2UL) /*!< CCU8_CC8 TCCLR: DITC (Bit 2) */ -#define CCU8_CC8_TCCLR_DITC_Msk \ - (0x4UL) /*!< CCU8_CC8 TCCLR: DITC (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCCLR_DTC1C_Pos \ - (3UL) /*!< CCU8_CC8 TCCLR: DTC1C (Bit 3) */ -#define CCU8_CC8_TCCLR_DTC1C_Msk \ - (0x8UL) /*!< CCU8_CC8 TCCLR: DTC1C (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TCCLR_DTC2C_Pos \ - (4UL) /*!< CCU8_CC8 TCCLR: DTC2C (Bit 4) */ -#define CCU8_CC8_TCCLR_DTC2C_Msk \ - (0x10UL) /*!< CCU8_CC8 TCCLR: DTC2C (Bitfield-Mask: 0x01) */ - -/* --------------------------------- CCU8_CC8_TC -------------------------------- */ -#define CCU8_CC8_TC_TCM_Pos \ - (0UL) /*!< CCU8_CC8 TC: TCM (Bit 0) */ -#define CCU8_CC8_TC_TCM_Msk \ - (0x1UL) /*!< CCU8_CC8 TC: TCM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TSSM_Pos \ - (1UL) /*!< CCU8_CC8 TC: TSSM (Bit 1) */ -#define CCU8_CC8_TC_TSSM_Msk \ - (0x2UL) /*!< CCU8_CC8 TC: TSSM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_CLST_Pos \ - (2UL) /*!< CCU8_CC8 TC: CLST (Bit 2) */ -#define CCU8_CC8_TC_CLST_Msk \ - (0x4UL) /*!< CCU8_CC8 TC: CLST (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_CMOD_Pos \ - (3UL) /*!< CCU8_CC8 TC: CMOD (Bit 3) */ -#define CCU8_CC8_TC_CMOD_Msk \ - (0x8UL) /*!< CCU8_CC8 TC: CMOD (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_ECM_Pos \ - (4UL) /*!< CCU8_CC8 TC: ECM (Bit 4) */ -#define CCU8_CC8_TC_ECM_Msk \ - (0x10UL) /*!< CCU8_CC8 TC: ECM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_CAPC_Pos \ - (5UL) /*!< CCU8_CC8 TC: CAPC (Bit 5) */ -#define CCU8_CC8_TC_CAPC_Msk \ - (0x60UL) /*!< CCU8_CC8 TC: CAPC (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_TC_TLS_Pos \ - (7UL) /*!< CCU8_CC8 TC: TLS (Bit 7) */ -#define CCU8_CC8_TC_TLS_Msk \ - (0x80UL) /*!< CCU8_CC8 TC: TLS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_ENDM_Pos \ - (8UL) /*!< CCU8_CC8 TC: ENDM (Bit 8) */ -#define CCU8_CC8_TC_ENDM_Msk \ - (0x300UL) /*!< CCU8_CC8 TC: ENDM (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_TC_STRM_Pos \ - (10UL) /*!< CCU8_CC8 TC: STRM (Bit 10) */ -#define CCU8_CC8_TC_STRM_Msk \ - (0x400UL) /*!< CCU8_CC8 TC: STRM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_SCE_Pos \ - (11UL) /*!< CCU8_CC8 TC: SCE (Bit 11) */ -#define CCU8_CC8_TC_SCE_Msk \ - (0x800UL) /*!< CCU8_CC8 TC: SCE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_CCS_Pos \ - (12UL) /*!< CCU8_CC8 TC: CCS (Bit 12) */ -#define CCU8_CC8_TC_CCS_Msk \ - (0x1000UL) /*!< CCU8_CC8 TC: CCS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_DITHE_Pos \ - (13UL) /*!< CCU8_CC8 TC: DITHE (Bit 13) */ -#define CCU8_CC8_TC_DITHE_Msk \ - (0x6000UL) /*!< CCU8_CC8 TC: DITHE (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_TC_DIM_Pos \ - (15UL) /*!< CCU8_CC8 TC: DIM (Bit 15) */ -#define CCU8_CC8_TC_DIM_Msk \ - (0x8000UL) /*!< CCU8_CC8 TC: DIM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_FPE_Pos \ - (16UL) /*!< CCU8_CC8 TC: FPE (Bit 16) */ -#define CCU8_CC8_TC_FPE_Msk \ - (0x10000UL) /*!< CCU8_CC8 TC: FPE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRAPE0_Pos \ - (17UL) /*!< CCU8_CC8 TC: TRAPE0 (Bit 17) */ -#define CCU8_CC8_TC_TRAPE0_Msk \ - (0x20000UL) /*!< CCU8_CC8 TC: TRAPE0 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRAPE1_Pos \ - (18UL) /*!< CCU8_CC8 TC: TRAPE1 (Bit 18) */ -#define CCU8_CC8_TC_TRAPE1_Msk \ - (0x40000UL) /*!< CCU8_CC8 TC: TRAPE1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRAPE2_Pos \ - (19UL) /*!< CCU8_CC8 TC: TRAPE2 (Bit 19) */ -#define CCU8_CC8_TC_TRAPE2_Msk \ - (0x80000UL) /*!< CCU8_CC8 TC: TRAPE2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRAPE3_Pos \ - (20UL) /*!< CCU8_CC8 TC: TRAPE3 (Bit 20) */ -#define CCU8_CC8_TC_TRAPE3_Msk \ - (0x100000UL) /*!< CCU8_CC8 TC: TRAPE3 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRPSE_Pos \ - (21UL) /*!< CCU8_CC8 TC: TRPSE (Bit 21) */ -#define CCU8_CC8_TC_TRPSE_Msk \ - (0x200000UL) /*!< CCU8_CC8 TC: TRPSE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_TRPSW_Pos \ - (22UL) /*!< CCU8_CC8 TC: TRPSW (Bit 22) */ -#define CCU8_CC8_TC_TRPSW_Msk \ - (0x400000UL) /*!< CCU8_CC8 TC: TRPSW (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_EMS_Pos \ - (23UL) /*!< CCU8_CC8 TC: EMS (Bit 23) */ -#define CCU8_CC8_TC_EMS_Msk \ - (0x800000UL) /*!< CCU8_CC8 TC: EMS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_EMT_Pos \ - (24UL) /*!< CCU8_CC8 TC: EMT (Bit 24) */ -#define CCU8_CC8_TC_EMT_Msk \ - (0x1000000UL) /*!< CCU8_CC8 TC: EMT (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_MCME1_Pos \ - (25UL) /*!< CCU8_CC8 TC: MCME1 (Bit 25) */ -#define CCU8_CC8_TC_MCME1_Msk \ - (0x2000000UL) /*!< CCU8_CC8 TC: MCME1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_MCME2_Pos \ - (26UL) /*!< CCU8_CC8 TC: MCME2 (Bit 26) */ -#define CCU8_CC8_TC_MCME2_Msk \ - (0x4000000UL) /*!< CCU8_CC8 TC: MCME2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_TC_EME_Pos \ - (27UL) /*!< CCU8_CC8 TC: EME (Bit 27) */ -#define CCU8_CC8_TC_EME_Msk \ - (0x18000000UL) /*!< CCU8_CC8 TC: EME (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_TC_STOS_Pos \ - (29UL) /*!< CCU8_CC8 TC: STOS (Bit 29) */ -#define CCU8_CC8_TC_STOS_Msk \ - (0x60000000UL) /*!< CCU8_CC8 TC: STOS (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU8_CC8_PSL -------------------------------- */ -#define CCU8_CC8_PSL_PSL11_Pos \ - (0UL) /*!< CCU8_CC8 PSL: PSL11 (Bit 0) */ -#define CCU8_CC8_PSL_PSL11_Msk \ - (0x1UL) /*!< CCU8_CC8 PSL: PSL11 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_PSL_PSL12_Pos \ - (1UL) /*!< CCU8_CC8 PSL: PSL12 (Bit 1) */ -#define CCU8_CC8_PSL_PSL12_Msk \ - (0x2UL) /*!< CCU8_CC8 PSL: PSL12 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_PSL_PSL21_Pos \ - (2UL) /*!< CCU8_CC8 PSL: PSL21 (Bit 2) */ -#define CCU8_CC8_PSL_PSL21_Msk \ - (0x4UL) /*!< CCU8_CC8 PSL: PSL21 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_PSL_PSL22_Pos \ - (3UL) /*!< CCU8_CC8 PSL: PSL22 (Bit 3) */ -#define CCU8_CC8_PSL_PSL22_Msk \ - (0x8UL) /*!< CCU8_CC8 PSL: PSL22 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_DIT -------------------------------- */ -#define CCU8_CC8_DIT_DCV_Pos \ - (0UL) /*!< CCU8_CC8 DIT: DCV (Bit 0) */ -#define CCU8_CC8_DIT_DCV_Msk \ - (0xfUL) /*!< CCU8_CC8 DIT: DCV (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_DIT_DCNT_Pos \ - (8UL) /*!< CCU8_CC8 DIT: DCNT (Bit 8) */ -#define CCU8_CC8_DIT_DCNT_Msk \ - (0xf00UL) /*!< CCU8_CC8 DIT: DCNT (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU8_CC8_DITS ------------------------------- */ -#define CCU8_CC8_DITS_DCVS_Pos \ - (0UL) /*!< CCU8_CC8 DITS: DCVS (Bit 0) */ -#define CCU8_CC8_DITS_DCVS_Msk \ - (0xfUL) /*!< CCU8_CC8 DITS: DCVS (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU8_CC8_PSC -------------------------------- */ -#define CCU8_CC8_PSC_PSIV_Pos \ - (0UL) /*!< CCU8_CC8 PSC: PSIV (Bit 0) */ -#define CCU8_CC8_PSC_PSIV_Msk \ - (0xfUL) /*!< CCU8_CC8 PSC: PSIV (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU8_CC8_FPC -------------------------------- */ -#define CCU8_CC8_FPC_PCMP_Pos \ - (0UL) /*!< CCU8_CC8 FPC: PCMP (Bit 0) */ -#define CCU8_CC8_FPC_PCMP_Msk \ - (0xfUL) /*!< CCU8_CC8 FPC: PCMP (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_FPC_PVAL_Pos \ - (8UL) /*!< CCU8_CC8 FPC: PVAL (Bit 8) */ -#define CCU8_CC8_FPC_PVAL_Msk \ - (0xf00UL) /*!< CCU8_CC8 FPC: PVAL (Bitfield-Mask: 0x0f) */ - -/* -------------------------------- CCU8_CC8_FPCS ------------------------------- */ -#define CCU8_CC8_FPCS_PCMP_Pos \ - (0UL) /*!< CCU8_CC8 FPCS: PCMP (Bit 0) */ -#define CCU8_CC8_FPCS_PCMP_Msk \ - (0xfUL) /*!< CCU8_CC8 FPCS: PCMP (Bitfield-Mask: 0x0f) */ - -/* --------------------------------- CCU8_CC8_PR -------------------------------- */ -#define CCU8_CC8_PR_PR_Pos (0UL) /*!< CCU8_CC8 PR: PR (Bit 0) */ -#define CCU8_CC8_PR_PR_Msk \ - (0xffffUL) /*!< CCU8_CC8 PR: PR (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_PRS -------------------------------- */ -#define CCU8_CC8_PRS_PRS_Pos \ - (0UL) /*!< CCU8_CC8 PRS: PRS (Bit 0) */ -#define CCU8_CC8_PRS_PRS_Msk \ - (0xffffUL) /*!< CCU8_CC8 PRS: PRS (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CR1 -------------------------------- */ -#define CCU8_CC8_CR1_CR1_Pos \ - (0UL) /*!< CCU8_CC8 CR1: CR1 (Bit 0) */ -#define CCU8_CC8_CR1_CR1_Msk \ - (0xffffUL) /*!< CCU8_CC8 CR1: CR1 (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CR1S ------------------------------- */ -#define CCU8_CC8_CR1S_CR1S_Pos \ - (0UL) /*!< CCU8_CC8 CR1S: CR1S (Bit 0) */ -#define CCU8_CC8_CR1S_CR1S_Msk \ - (0xffffUL) /*!< CCU8_CC8 CR1S: CR1S (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CR2 -------------------------------- */ -#define CCU8_CC8_CR2_CR2_Pos \ - (0UL) /*!< CCU8_CC8 CR2: CR2 (Bit 0) */ -#define CCU8_CC8_CR2_CR2_Msk \ - (0xffffUL) /*!< CCU8_CC8 CR2: CR2 (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CR2S ------------------------------- */ -#define CCU8_CC8_CR2S_CR2S_Pos \ - (0UL) /*!< CCU8_CC8 CR2S: CR2S (Bit 0) */ -#define CCU8_CC8_CR2S_CR2S_Msk \ - (0xffffUL) /*!< CCU8_CC8 CR2S: CR2S (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- CCU8_CC8_CHC -------------------------------- */ -#define CCU8_CC8_CHC_ASE_Pos \ - (0UL) /*!< CCU8_CC8 CHC: ASE (Bit 0) */ -#define CCU8_CC8_CHC_ASE_Msk \ - (0x1UL) /*!< CCU8_CC8 CHC: ASE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CHC_OCS1_Pos \ - (1UL) /*!< CCU8_CC8 CHC: OCS1 (Bit 1) */ -#define CCU8_CC8_CHC_OCS1_Msk \ - (0x2UL) /*!< CCU8_CC8 CHC: OCS1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CHC_OCS2_Pos \ - (2UL) /*!< CCU8_CC8 CHC: OCS2 (Bit 2) */ -#define CCU8_CC8_CHC_OCS2_Msk \ - (0x4UL) /*!< CCU8_CC8 CHC: OCS2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CHC_OCS3_Pos \ - (3UL) /*!< CCU8_CC8 CHC: OCS3 (Bit 3) */ -#define CCU8_CC8_CHC_OCS3_Msk \ - (0x8UL) /*!< CCU8_CC8 CHC: OCS3 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_CHC_OCS4_Pos \ - (4UL) /*!< CCU8_CC8 CHC: OCS4 (Bit 4) */ -#define CCU8_CC8_CHC_OCS4_Msk \ - (0x10UL) /*!< CCU8_CC8 CHC: OCS4 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_DTC -------------------------------- */ -#define CCU8_CC8_DTC_DTE1_Pos \ - (0UL) /*!< CCU8_CC8 DTC: DTE1 (Bit 0) */ -#define CCU8_CC8_DTC_DTE1_Msk \ - (0x1UL) /*!< CCU8_CC8 DTC: DTE1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DTE2_Pos \ - (1UL) /*!< CCU8_CC8 DTC: DTE2 (Bit 1) */ -#define CCU8_CC8_DTC_DTE2_Msk \ - (0x2UL) /*!< CCU8_CC8 DTC: DTE2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DCEN1_Pos \ - (2UL) /*!< CCU8_CC8 DTC: DCEN1 (Bit 2) */ -#define CCU8_CC8_DTC_DCEN1_Msk \ - (0x4UL) /*!< CCU8_CC8 DTC: DCEN1 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DCEN2_Pos \ - (3UL) /*!< CCU8_CC8 DTC: DCEN2 (Bit 3) */ -#define CCU8_CC8_DTC_DCEN2_Msk \ - (0x8UL) /*!< CCU8_CC8 DTC: DCEN2 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DCEN3_Pos \ - (4UL) /*!< CCU8_CC8 DTC: DCEN3 (Bit 4) */ -#define CCU8_CC8_DTC_DCEN3_Msk \ - (0x10UL) /*!< CCU8_CC8 DTC: DCEN3 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DCEN4_Pos \ - (5UL) /*!< CCU8_CC8 DTC: DCEN4 (Bit 5) */ -#define CCU8_CC8_DTC_DCEN4_Msk \ - (0x20UL) /*!< CCU8_CC8 DTC: DCEN4 (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_DTC_DTCC_Pos \ - (6UL) /*!< CCU8_CC8 DTC: DTCC (Bit 6) */ -#define CCU8_CC8_DTC_DTCC_Msk \ - (0xc0UL) /*!< CCU8_CC8 DTC: DTCC (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU8_CC8_DC1R ------------------------------- */ -#define CCU8_CC8_DC1R_DT1R_Pos \ - (0UL) /*!< CCU8_CC8 DC1R: DT1R (Bit 0) */ -#define CCU8_CC8_DC1R_DT1R_Msk \ - (0xffUL) /*!< CCU8_CC8 DC1R: DT1R (Bitfield-Mask: 0xff) */ -#define CCU8_CC8_DC1R_DT1F_Pos \ - (8UL) /*!< CCU8_CC8 DC1R: DT1F (Bit 8) */ -#define CCU8_CC8_DC1R_DT1F_Msk \ - (0xff00UL) /*!< CCU8_CC8 DC1R: DT1F (Bitfield-Mask: 0xff) */ - -/* -------------------------------- CCU8_CC8_DC2R ------------------------------- */ -#define CCU8_CC8_DC2R_DT2R_Pos \ - (0UL) /*!< CCU8_CC8 DC2R: DT2R (Bit 0) */ -#define CCU8_CC8_DC2R_DT2R_Msk \ - (0xffUL) /*!< CCU8_CC8 DC2R: DT2R (Bitfield-Mask: 0xff) */ -#define CCU8_CC8_DC2R_DT2F_Pos \ - (8UL) /*!< CCU8_CC8 DC2R: DT2F (Bit 8) */ -#define CCU8_CC8_DC2R_DT2F_Msk \ - (0xff00UL) /*!< CCU8_CC8 DC2R: DT2F (Bitfield-Mask: 0xff) */ - -/* ------------------------------- CCU8_CC8_TIMER ------------------------------- */ -#define CCU8_CC8_TIMER_TVAL_Pos \ - (0UL) /*!< CCU8_CC8 TIMER: TVAL (Bit 0) */ -#define CCU8_CC8_TIMER_TVAL_Msk \ - (0xffffUL) /*!< CCU8_CC8 TIMER: TVAL (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- CCU8_CC8_CV -------------------------------- */ -#define CCU8_CC8_CV_CAPTV_Pos \ - (0UL) /*!< CCU8_CC8 CV: CAPTV (Bit 0) */ -#define CCU8_CC8_CV_CAPTV_Msk \ - (0xffffUL) /*!< CCU8_CC8 CV: CAPTV (Bitfield-Mask: 0xffff) */ -#define CCU8_CC8_CV_FPCV_Pos \ - (16UL) /*!< CCU8_CC8 CV: FPCV (Bit 16) */ -#define CCU8_CC8_CV_FPCV_Msk \ - (0xf0000UL) /*!< CCU8_CC8 CV: FPCV (Bitfield-Mask: 0x0f) */ -#define CCU8_CC8_CV_FFL_Pos \ - (20UL) /*!< CCU8_CC8 CV: FFL (Bit 20) */ -#define CCU8_CC8_CV_FFL_Msk \ - (0x100000UL) /*!< CCU8_CC8 CV: FFL (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_INTS ------------------------------- */ -#define CCU8_CC8_INTS_PMUS_Pos \ - (0UL) /*!< CCU8_CC8 INTS: PMUS (Bit 0) */ -#define CCU8_CC8_INTS_PMUS_Msk \ - (0x1UL) /*!< CCU8_CC8 INTS: PMUS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_OMDS_Pos \ - (1UL) /*!< CCU8_CC8 INTS: OMDS (Bit 1) */ -#define CCU8_CC8_INTS_OMDS_Msk \ - (0x2UL) /*!< CCU8_CC8 INTS: OMDS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_CMU1S_Pos \ - (2UL) /*!< CCU8_CC8 INTS: CMU1S (Bit 2) */ -#define CCU8_CC8_INTS_CMU1S_Msk \ - (0x4UL) /*!< CCU8_CC8 INTS: CMU1S (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_CMD1S_Pos \ - (3UL) /*!< CCU8_CC8 INTS: CMD1S (Bit 3) */ -#define CCU8_CC8_INTS_CMD1S_Msk \ - (0x8UL) /*!< CCU8_CC8 INTS: CMD1S (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_CMU2S_Pos \ - (4UL) /*!< CCU8_CC8 INTS: CMU2S (Bit 4) */ -#define CCU8_CC8_INTS_CMU2S_Msk \ - (0x10UL) /*!< CCU8_CC8 INTS: CMU2S (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_CMD2S_Pos \ - (5UL) /*!< CCU8_CC8 INTS: CMD2S (Bit 5) */ -#define CCU8_CC8_INTS_CMD2S_Msk \ - (0x20UL) /*!< CCU8_CC8 INTS: CMD2S (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_E0AS_Pos \ - (8UL) /*!< CCU8_CC8 INTS: E0AS (Bit 8) */ -#define CCU8_CC8_INTS_E0AS_Msk \ - (0x100UL) /*!< CCU8_CC8 INTS: E0AS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_E1AS_Pos \ - (9UL) /*!< CCU8_CC8 INTS: E1AS (Bit 9) */ -#define CCU8_CC8_INTS_E1AS_Msk \ - (0x200UL) /*!< CCU8_CC8 INTS: E1AS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_E2AS_Pos \ - (10UL) /*!< CCU8_CC8 INTS: E2AS (Bit 10) */ -#define CCU8_CC8_INTS_E2AS_Msk \ - (0x400UL) /*!< CCU8_CC8 INTS: E2AS (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTS_TRPF_Pos \ - (11UL) /*!< CCU8_CC8 INTS: TRPF (Bit 11) */ -#define CCU8_CC8_INTS_TRPF_Msk \ - (0x800UL) /*!< CCU8_CC8 INTS: TRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_INTE ------------------------------- */ -#define CCU8_CC8_INTE_PME_Pos \ - (0UL) /*!< CCU8_CC8 INTE: PME (Bit 0) */ -#define CCU8_CC8_INTE_PME_Msk \ - (0x1UL) /*!< CCU8_CC8 INTE: PME (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_OME_Pos \ - (1UL) /*!< CCU8_CC8 INTE: OME (Bit 1) */ -#define CCU8_CC8_INTE_OME_Msk \ - (0x2UL) /*!< CCU8_CC8 INTE: OME (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_CMU1E_Pos \ - (2UL) /*!< CCU8_CC8 INTE: CMU1E (Bit 2) */ -#define CCU8_CC8_INTE_CMU1E_Msk \ - (0x4UL) /*!< CCU8_CC8 INTE: CMU1E (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_CMD1E_Pos \ - (3UL) /*!< CCU8_CC8 INTE: CMD1E (Bit 3) */ -#define CCU8_CC8_INTE_CMD1E_Msk \ - (0x8UL) /*!< CCU8_CC8 INTE: CMD1E (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_CMU2E_Pos \ - (4UL) /*!< CCU8_CC8 INTE: CMU2E (Bit 4) */ -#define CCU8_CC8_INTE_CMU2E_Msk \ - (0x10UL) /*!< CCU8_CC8 INTE: CMU2E (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_CMD2E_Pos \ - (5UL) /*!< CCU8_CC8 INTE: CMD2E (Bit 5) */ -#define CCU8_CC8_INTE_CMD2E_Msk \ - (0x20UL) /*!< CCU8_CC8 INTE: CMD2E (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_E0AE_Pos \ - (8UL) /*!< CCU8_CC8 INTE: E0AE (Bit 8) */ -#define CCU8_CC8_INTE_E0AE_Msk \ - (0x100UL) /*!< CCU8_CC8 INTE: E0AE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_E1AE_Pos \ - (9UL) /*!< CCU8_CC8 INTE: E1AE (Bit 9) */ -#define CCU8_CC8_INTE_E1AE_Msk \ - (0x200UL) /*!< CCU8_CC8 INTE: E1AE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_INTE_E2AE_Pos \ - (10UL) /*!< CCU8_CC8 INTE: E2AE (Bit 10) */ -#define CCU8_CC8_INTE_E2AE_Msk \ - (0x400UL) /*!< CCU8_CC8 INTE: E2AE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_SRS -------------------------------- */ -#define CCU8_CC8_SRS_POSR_Pos \ - (0UL) /*!< CCU8_CC8 SRS: POSR (Bit 0) */ -#define CCU8_CC8_SRS_POSR_Msk \ - (0x3UL) /*!< CCU8_CC8 SRS: POSR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_CM1SR_Pos \ - (2UL) /*!< CCU8_CC8 SRS: CM1SR (Bit 2) */ -#define CCU8_CC8_SRS_CM1SR_Msk \ - (0xcUL) /*!< CCU8_CC8 SRS: CM1SR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_CM2SR_Pos \ - (4UL) /*!< CCU8_CC8 SRS: CM2SR (Bit 4) */ -#define CCU8_CC8_SRS_CM2SR_Msk \ - (0x30UL) /*!< CCU8_CC8 SRS: CM2SR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_E0SR_Pos \ - (8UL) /*!< CCU8_CC8 SRS: E0SR (Bit 8) */ -#define CCU8_CC8_SRS_E0SR_Msk \ - (0x300UL) /*!< CCU8_CC8 SRS: E0SR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_E1SR_Pos \ - (10UL) /*!< CCU8_CC8 SRS: E1SR (Bit 10) */ -#define CCU8_CC8_SRS_E1SR_Msk \ - (0xc00UL) /*!< CCU8_CC8 SRS: E1SR (Bitfield-Mask: 0x03) */ -#define CCU8_CC8_SRS_E2SR_Pos \ - (12UL) /*!< CCU8_CC8 SRS: E2SR (Bit 12) */ -#define CCU8_CC8_SRS_E2SR_Msk \ - (0x3000UL) /*!< CCU8_CC8 SRS: E2SR (Bitfield-Mask: 0x03) */ - -/* -------------------------------- CCU8_CC8_SWS -------------------------------- */ -#define CCU8_CC8_SWS_SPM_Pos \ - (0UL) /*!< CCU8_CC8 SWS: SPM (Bit 0) */ -#define CCU8_CC8_SWS_SPM_Msk \ - (0x1UL) /*!< CCU8_CC8 SWS: SPM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SOM_Pos \ - (1UL) /*!< CCU8_CC8 SWS: SOM (Bit 1) */ -#define CCU8_CC8_SWS_SOM_Msk \ - (0x2UL) /*!< CCU8_CC8 SWS: SOM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SCM1U_Pos \ - (2UL) /*!< CCU8_CC8 SWS: SCM1U (Bit 2) */ -#define CCU8_CC8_SWS_SCM1U_Msk \ - (0x4UL) /*!< CCU8_CC8 SWS: SCM1U (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SCM1D_Pos \ - (3UL) /*!< CCU8_CC8 SWS: SCM1D (Bit 3) */ -#define CCU8_CC8_SWS_SCM1D_Msk \ - (0x8UL) /*!< CCU8_CC8 SWS: SCM1D (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SCM2U_Pos \ - (4UL) /*!< CCU8_CC8 SWS: SCM2U (Bit 4) */ -#define CCU8_CC8_SWS_SCM2U_Msk \ - (0x10UL) /*!< CCU8_CC8 SWS: SCM2U (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SCM2D_Pos \ - (5UL) /*!< CCU8_CC8 SWS: SCM2D (Bit 5) */ -#define CCU8_CC8_SWS_SCM2D_Msk \ - (0x20UL) /*!< CCU8_CC8 SWS: SCM2D (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SE0A_Pos \ - (8UL) /*!< CCU8_CC8 SWS: SE0A (Bit 8) */ -#define CCU8_CC8_SWS_SE0A_Msk \ - (0x100UL) /*!< CCU8_CC8 SWS: SE0A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SE1A_Pos \ - (9UL) /*!< CCU8_CC8 SWS: SE1A (Bit 9) */ -#define CCU8_CC8_SWS_SE1A_Msk \ - (0x200UL) /*!< CCU8_CC8 SWS: SE1A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_SE2A_Pos \ - (10UL) /*!< CCU8_CC8 SWS: SE2A (Bit 10) */ -#define CCU8_CC8_SWS_SE2A_Msk \ - (0x400UL) /*!< CCU8_CC8 SWS: SE2A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWS_STRPF_Pos \ - (11UL) /*!< CCU8_CC8 SWS: STRPF (Bit 11) */ -#define CCU8_CC8_SWS_STRPF_Msk \ - (0x800UL) /*!< CCU8_CC8 SWS: STRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_SWR -------------------------------- */ -#define CCU8_CC8_SWR_RPM_Pos \ - (0UL) /*!< CCU8_CC8 SWR: RPM (Bit 0) */ -#define CCU8_CC8_SWR_RPM_Msk \ - (0x1UL) /*!< CCU8_CC8 SWR: RPM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_ROM_Pos \ - (1UL) /*!< CCU8_CC8 SWR: ROM (Bit 1) */ -#define CCU8_CC8_SWR_ROM_Msk \ - (0x2UL) /*!< CCU8_CC8 SWR: ROM (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RCM1U_Pos \ - (2UL) /*!< CCU8_CC8 SWR: RCM1U (Bit 2) */ -#define CCU8_CC8_SWR_RCM1U_Msk \ - (0x4UL) /*!< CCU8_CC8 SWR: RCM1U (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RCM1D_Pos \ - (3UL) /*!< CCU8_CC8 SWR: RCM1D (Bit 3) */ -#define CCU8_CC8_SWR_RCM1D_Msk \ - (0x8UL) /*!< CCU8_CC8 SWR: RCM1D (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RCM2U_Pos \ - (4UL) /*!< CCU8_CC8 SWR: RCM2U (Bit 4) */ -#define CCU8_CC8_SWR_RCM2U_Msk \ - (0x10UL) /*!< CCU8_CC8 SWR: RCM2U (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RCM2D_Pos \ - (5UL) /*!< CCU8_CC8 SWR: RCM2D (Bit 5) */ -#define CCU8_CC8_SWR_RCM2D_Msk \ - (0x20UL) /*!< CCU8_CC8 SWR: RCM2D (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RE0A_Pos \ - (8UL) /*!< CCU8_CC8 SWR: RE0A (Bit 8) */ -#define CCU8_CC8_SWR_RE0A_Msk \ - (0x100UL) /*!< CCU8_CC8 SWR: RE0A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RE1A_Pos \ - (9UL) /*!< CCU8_CC8 SWR: RE1A (Bit 9) */ -#define CCU8_CC8_SWR_RE1A_Msk \ - (0x200UL) /*!< CCU8_CC8 SWR: RE1A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RE2A_Pos \ - (10UL) /*!< CCU8_CC8 SWR: RE2A (Bit 10) */ -#define CCU8_CC8_SWR_RE2A_Msk \ - (0x400UL) /*!< CCU8_CC8 SWR: RE2A (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_SWR_RTRPF_Pos \ - (11UL) /*!< CCU8_CC8 SWR: RTRPF (Bit 11) */ -#define CCU8_CC8_SWR_RTRPF_Msk \ - (0x800UL) /*!< CCU8_CC8 SWR: RTRPF (Bitfield-Mask: 0x01) */ - -/* -------------------------------- CCU8_CC8_STC -------------------------------- */ -#define CCU8_CC8_STC_CSE_Pos \ - (0UL) /*!< CCU8_CC8 STC: CSE (Bit 0) */ -#define CCU8_CC8_STC_CSE_Msk \ - (0x1UL) /*!< CCU8_CC8 STC: CSE (Bitfield-Mask: 0x01) */ -#define CCU8_CC8_STC_STM_Pos \ - (1UL) /*!< CCU8_CC8 STC: STM (Bit 1) */ -#define CCU8_CC8_STC_STM_Msk \ - (0x6UL) /*!< CCU8_CC8 STC: STM (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- HRPWM0_HRBSC -------------------------------- */ -#define HRPWM0_HRBSC_SUSCFG_Pos \ - (0UL) /*!< HRPWM0 HRBSC: SUSCFG (Bit 0) */ -#define HRPWM0_HRBSC_SUSCFG_Msk \ - (0x7UL) /*!< HRPWM0 HRBSC: SUSCFG (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRBSC_HRBE_Pos \ - (8UL) /*!< HRPWM0 HRBSC: HRBE (Bit 8) */ -#define HRPWM0_HRBSC_HRBE_Msk \ - (0x100UL) /*!< HRPWM0 HRBSC: HRBE (Bitfield-Mask: 0x01) */ - -/* --------------------------------- HRPWM0_MIDR -------------------------------- */ -#define HRPWM0_MIDR_MODR_Pos \ - (0UL) /*!< HRPWM0 MIDR: MODR (Bit 0) */ -#define HRPWM0_MIDR_MODR_Msk \ - (0xffUL) /*!< HRPWM0 MIDR: MODR (Bitfield-Mask: 0xff) */ -#define HRPWM0_MIDR_MODT_Pos \ - (8UL) /*!< HRPWM0 MIDR: MODT (Bit 8) */ -#define HRPWM0_MIDR_MODT_Msk \ - (0xff00UL) /*!< HRPWM0 MIDR: MODT (Bitfield-Mask: 0xff) */ -#define HRPWM0_MIDR_MODN_Pos \ - (16UL) /*!< HRPWM0 MIDR: MODN (Bit 16) */ -#define HRPWM0_MIDR_MODN_Msk \ - (0xffff0000UL) /*!< HRPWM0 MIDR: MODN (Bitfield-Mask: 0xffff) */ - -/* -------------------------------- HRPWM0_GLBANA ------------------------------- */ -#define HRPWM0_GLBANA_SLDLY_Pos \ - (0UL) /*!< HRPWM0 GLBANA: SLDLY (Bit 0) */ -#define HRPWM0_GLBANA_SLDLY_Msk \ - (0x3UL) /*!< HRPWM0 GLBANA: SLDLY (Bitfield-Mask: 0x03) */ -#define HRPWM0_GLBANA_FUP_Pos \ - (2UL) /*!< HRPWM0 GLBANA: FUP (Bit 2) */ -#define HRPWM0_GLBANA_FUP_Msk \ - (0x4UL) /*!< HRPWM0 GLBANA: FUP (Bitfield-Mask: 0x01) */ -#define HRPWM0_GLBANA_FDN_Pos \ - (3UL) /*!< HRPWM0 GLBANA: FDN (Bit 3) */ -#define HRPWM0_GLBANA_FDN_Msk \ - (0x8UL) /*!< HRPWM0 GLBANA: FDN (Bitfield-Mask: 0x01) */ -#define HRPWM0_GLBANA_SLCP_Pos \ - (6UL) /*!< HRPWM0 GLBANA: SLCP (Bit 6) */ -#define HRPWM0_GLBANA_SLCP_Msk \ - (0x1c0UL) /*!< HRPWM0 GLBANA: SLCP (Bitfield-Mask: 0x07) */ -#define HRPWM0_GLBANA_SLIBLDO_Pos \ - (9UL) /*!< HRPWM0 GLBANA: SLIBLDO (Bit 9) */ -#define HRPWM0_GLBANA_SLIBLDO_Msk \ - (0x600UL) /*!< HRPWM0 GLBANA: SLIBLDO (Bitfield-Mask: 0x03) */ -#define HRPWM0_GLBANA_SLIBLF_Pos \ - (11UL) /*!< HRPWM0 GLBANA: SLIBLF (Bit 11) */ -#define HRPWM0_GLBANA_SLIBLF_Msk \ - (0x1800UL) /*!< HRPWM0 GLBANA: SLIBLF (Bitfield-Mask: 0x03) */ -#define HRPWM0_GLBANA_SLVREF_Pos \ - (13UL) /*!< HRPWM0 GLBANA: SLVREF (Bit 13) */ -#define HRPWM0_GLBANA_SLVREF_Msk \ - (0xe000UL) /*!< HRPWM0 GLBANA: SLVREF (Bitfield-Mask: 0x07) */ -#define HRPWM0_GLBANA_TRIBIAS_Pos \ - (16UL) /*!< HRPWM0 GLBANA: TRIBIAS (Bit 16) */ -#define HRPWM0_GLBANA_TRIBIAS_Msk \ - (0x30000UL) /*!< HRPWM0 GLBANA: TRIBIAS (Bitfield-Mask: 0x03) */ -#define HRPWM0_GLBANA_GHREN_Pos \ - (18UL) /*!< HRPWM0 GLBANA: GHREN (Bit 18) */ -#define HRPWM0_GLBANA_GHREN_Msk \ - (0x40000UL) /*!< HRPWM0 GLBANA: GHREN (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGCFG ------------------------------- */ -#define HRPWM0_CSGCFG_C0PM_Pos \ - (0UL) /*!< HRPWM0 CSGCFG: C0PM (Bit 0) */ -#define HRPWM0_CSGCFG_C0PM_Msk \ - (0x3UL) /*!< HRPWM0 CSGCFG: C0PM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSGCFG_C1PM_Pos \ - (2UL) /*!< HRPWM0 CSGCFG: C1PM (Bit 2) */ -#define HRPWM0_CSGCFG_C1PM_Msk \ - (0xcUL) /*!< HRPWM0 CSGCFG: C1PM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSGCFG_C2PM_Pos \ - (4UL) /*!< HRPWM0 CSGCFG: C2PM (Bit 4) */ -#define HRPWM0_CSGCFG_C2PM_Msk \ - (0x30UL) /*!< HRPWM0 CSGCFG: C2PM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSGCFG_C0CD_Pos \ - (16UL) /*!< HRPWM0 CSGCFG: C0CD (Bit 16) */ -#define HRPWM0_CSGCFG_C0CD_Msk \ - (0x10000UL) /*!< HRPWM0 CSGCFG: C0CD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCFG_C1CD_Pos \ - (17UL) /*!< HRPWM0 CSGCFG: C1CD (Bit 17) */ -#define HRPWM0_CSGCFG_C1CD_Msk \ - (0x20000UL) /*!< HRPWM0 CSGCFG: C1CD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCFG_C2CD_Pos \ - (18UL) /*!< HRPWM0 CSGCFG: C2CD (Bit 18) */ -#define HRPWM0_CSGCFG_C2CD_Msk \ - (0x40000UL) /*!< HRPWM0 CSGCFG: C2CD (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSGSETG ------------------------------- */ -#define HRPWM0_CSGSETG_SD0R_Pos \ - (0UL) /*!< HRPWM0 CSGSETG: SD0R (Bit 0) */ -#define HRPWM0_CSGSETG_SD0R_Msk \ - (0x1UL) /*!< HRPWM0 CSGSETG: SD0R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC0R_Pos \ - (1UL) /*!< HRPWM0 CSGSETG: SC0R (Bit 1) */ -#define HRPWM0_CSGSETG_SC0R_Msk \ - (0x2UL) /*!< HRPWM0 CSGSETG: SC0R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC0P_Pos \ - (2UL) /*!< HRPWM0 CSGSETG: SC0P (Bit 2) */ -#define HRPWM0_CSGSETG_SC0P_Msk \ - (0x4UL) /*!< HRPWM0 CSGSETG: SC0P (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SD1R_Pos \ - (4UL) /*!< HRPWM0 CSGSETG: SD1R (Bit 4) */ -#define HRPWM0_CSGSETG_SD1R_Msk \ - (0x10UL) /*!< HRPWM0 CSGSETG: SD1R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC1R_Pos \ - (5UL) /*!< HRPWM0 CSGSETG: SC1R (Bit 5) */ -#define HRPWM0_CSGSETG_SC1R_Msk \ - (0x20UL) /*!< HRPWM0 CSGSETG: SC1R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC1P_Pos \ - (6UL) /*!< HRPWM0 CSGSETG: SC1P (Bit 6) */ -#define HRPWM0_CSGSETG_SC1P_Msk \ - (0x40UL) /*!< HRPWM0 CSGSETG: SC1P (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SD2R_Pos \ - (8UL) /*!< HRPWM0 CSGSETG: SD2R (Bit 8) */ -#define HRPWM0_CSGSETG_SD2R_Msk \ - (0x100UL) /*!< HRPWM0 CSGSETG: SD2R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC2R_Pos \ - (9UL) /*!< HRPWM0 CSGSETG: SC2R (Bit 9) */ -#define HRPWM0_CSGSETG_SC2R_Msk \ - (0x200UL) /*!< HRPWM0 CSGSETG: SC2R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSETG_SC2P_Pos \ - (10UL) /*!< HRPWM0 CSGSETG: SC2P (Bit 10) */ -#define HRPWM0_CSGSETG_SC2P_Msk \ - (0x400UL) /*!< HRPWM0 CSGSETG: SC2P (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSGCLRG ------------------------------- */ -#define HRPWM0_CSGCLRG_CD0R_Pos \ - (0UL) /*!< HRPWM0 CSGCLRG: CD0R (Bit 0) */ -#define HRPWM0_CSGCLRG_CD0R_Msk \ - (0x1UL) /*!< HRPWM0 CSGCLRG: CD0R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC0R_Pos \ - (1UL) /*!< HRPWM0 CSGCLRG: CC0R (Bit 1) */ -#define HRPWM0_CSGCLRG_CC0R_Msk \ - (0x2UL) /*!< HRPWM0 CSGCLRG: CC0R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC0P_Pos \ - (2UL) /*!< HRPWM0 CSGCLRG: CC0P (Bit 2) */ -#define HRPWM0_CSGCLRG_CC0P_Msk \ - (0x4UL) /*!< HRPWM0 CSGCLRG: CC0P (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CD1R_Pos \ - (4UL) /*!< HRPWM0 CSGCLRG: CD1R (Bit 4) */ -#define HRPWM0_CSGCLRG_CD1R_Msk \ - (0x10UL) /*!< HRPWM0 CSGCLRG: CD1R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC1R_Pos \ - (5UL) /*!< HRPWM0 CSGCLRG: CC1R (Bit 5) */ -#define HRPWM0_CSGCLRG_CC1R_Msk \ - (0x20UL) /*!< HRPWM0 CSGCLRG: CC1R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC1P_Pos \ - (6UL) /*!< HRPWM0 CSGCLRG: CC1P (Bit 6) */ -#define HRPWM0_CSGCLRG_CC1P_Msk \ - (0x40UL) /*!< HRPWM0 CSGCLRG: CC1P (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CD2R_Pos \ - (8UL) /*!< HRPWM0 CSGCLRG: CD2R (Bit 8) */ -#define HRPWM0_CSGCLRG_CD2R_Msk \ - (0x100UL) /*!< HRPWM0 CSGCLRG: CD2R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC2R_Pos \ - (9UL) /*!< HRPWM0 CSGCLRG: CC2R (Bit 9) */ -#define HRPWM0_CSGCLRG_CC2R_Msk \ - (0x200UL) /*!< HRPWM0 CSGCLRG: CC2R (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGCLRG_CC2P_Pos \ - (10UL) /*!< HRPWM0 CSGCLRG: CC2P (Bit 10) */ -#define HRPWM0_CSGCLRG_CC2P_Msk \ - (0x400UL) /*!< HRPWM0 CSGCLRG: CC2P (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSGSTATG ------------------------------ */ -#define HRPWM0_CSGSTATG_D0RB_Pos \ - (0UL) /*!< HRPWM0 CSGSTATG: D0RB (Bit 0) */ -#define HRPWM0_CSGSTATG_D0RB_Msk \ - (0x1UL) /*!< HRPWM0 CSGSTATG: D0RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_C0RB_Pos \ - (1UL) /*!< HRPWM0 CSGSTATG: C0RB (Bit 1) */ -#define HRPWM0_CSGSTATG_C0RB_Msk \ - (0x2UL) /*!< HRPWM0 CSGSTATG: C0RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_PSLS0_Pos \ - (2UL) /*!< HRPWM0 CSGSTATG: PSLS0 (Bit 2) */ -#define HRPWM0_CSGSTATG_PSLS0_Msk \ - (0x4UL) /*!< HRPWM0 CSGSTATG: PSLS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_D1RB_Pos \ - (4UL) /*!< HRPWM0 CSGSTATG: D1RB (Bit 4) */ -#define HRPWM0_CSGSTATG_D1RB_Msk \ - (0x10UL) /*!< HRPWM0 CSGSTATG: D1RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_C1RB_Pos \ - (5UL) /*!< HRPWM0 CSGSTATG: C1RB (Bit 5) */ -#define HRPWM0_CSGSTATG_C1RB_Msk \ - (0x20UL) /*!< HRPWM0 CSGSTATG: C1RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_PSLS1_Pos \ - (6UL) /*!< HRPWM0 CSGSTATG: PSLS1 (Bit 6) */ -#define HRPWM0_CSGSTATG_PSLS1_Msk \ - (0x40UL) /*!< HRPWM0 CSGSTATG: PSLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_D2RB_Pos \ - (8UL) /*!< HRPWM0 CSGSTATG: D2RB (Bit 8) */ -#define HRPWM0_CSGSTATG_D2RB_Msk \ - (0x100UL) /*!< HRPWM0 CSGSTATG: D2RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_C2RB_Pos \ - (9UL) /*!< HRPWM0 CSGSTATG: C2RB (Bit 9) */ -#define HRPWM0_CSGSTATG_C2RB_Msk \ - (0x200UL) /*!< HRPWM0 CSGSTATG: C2RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGSTATG_PSLS2_Pos \ - (10UL) /*!< HRPWM0 CSGSTATG: PSLS2 (Bit 10) */ -#define HRPWM0_CSGSTATG_PSLS2_Msk \ - (0x400UL) /*!< HRPWM0 CSGSTATG: PSLS2 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGFCG ------------------------------- */ -#define HRPWM0_CSGFCG_S0STR_Pos \ - (0UL) /*!< HRPWM0 CSGFCG: S0STR (Bit 0) */ -#define HRPWM0_CSGFCG_S0STR_Msk \ - (0x1UL) /*!< HRPWM0 CSGFCG: S0STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S0STP_Pos \ - (1UL) /*!< HRPWM0 CSGFCG: S0STP (Bit 1) */ -#define HRPWM0_CSGFCG_S0STP_Msk \ - (0x2UL) /*!< HRPWM0 CSGFCG: S0STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS0STR_Pos \ - (2UL) /*!< HRPWM0 CSGFCG: PS0STR (Bit 2) */ -#define HRPWM0_CSGFCG_PS0STR_Msk \ - (0x4UL) /*!< HRPWM0 CSGFCG: PS0STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS0STP_Pos \ - (3UL) /*!< HRPWM0 CSGFCG: PS0STP (Bit 3) */ -#define HRPWM0_CSGFCG_PS0STP_Msk \ - (0x8UL) /*!< HRPWM0 CSGFCG: PS0STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS0CLR_Pos \ - (4UL) /*!< HRPWM0 CSGFCG: PS0CLR (Bit 4) */ -#define HRPWM0_CSGFCG_PS0CLR_Msk \ - (0x10UL) /*!< HRPWM0 CSGFCG: PS0CLR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S1STR_Pos \ - (8UL) /*!< HRPWM0 CSGFCG: S1STR (Bit 8) */ -#define HRPWM0_CSGFCG_S1STR_Msk \ - (0x100UL) /*!< HRPWM0 CSGFCG: S1STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S1STP_Pos \ - (9UL) /*!< HRPWM0 CSGFCG: S1STP (Bit 9) */ -#define HRPWM0_CSGFCG_S1STP_Msk \ - (0x200UL) /*!< HRPWM0 CSGFCG: S1STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS1STR_Pos \ - (10UL) /*!< HRPWM0 CSGFCG: PS1STR (Bit 10) */ -#define HRPWM0_CSGFCG_PS1STR_Msk \ - (0x400UL) /*!< HRPWM0 CSGFCG: PS1STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS1STP_Pos \ - (11UL) /*!< HRPWM0 CSGFCG: PS1STP (Bit 11) */ -#define HRPWM0_CSGFCG_PS1STP_Msk \ - (0x800UL) /*!< HRPWM0 CSGFCG: PS1STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS1CLR_Pos \ - (12UL) /*!< HRPWM0 CSGFCG: PS1CLR (Bit 12) */ -#define HRPWM0_CSGFCG_PS1CLR_Msk \ - (0x1000UL) /*!< HRPWM0 CSGFCG: PS1CLR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S2STR_Pos \ - (16UL) /*!< HRPWM0 CSGFCG: S2STR (Bit 16) */ -#define HRPWM0_CSGFCG_S2STR_Msk \ - (0x10000UL) /*!< HRPWM0 CSGFCG: S2STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_S2STP_Pos \ - (17UL) /*!< HRPWM0 CSGFCG: S2STP (Bit 17) */ -#define HRPWM0_CSGFCG_S2STP_Msk \ - (0x20000UL) /*!< HRPWM0 CSGFCG: S2STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS2STR_Pos \ - (18UL) /*!< HRPWM0 CSGFCG: PS2STR (Bit 18) */ -#define HRPWM0_CSGFCG_PS2STR_Msk \ - (0x40000UL) /*!< HRPWM0 CSGFCG: PS2STR (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS2STP_Pos \ - (19UL) /*!< HRPWM0 CSGFCG: PS2STP (Bit 19) */ -#define HRPWM0_CSGFCG_PS2STP_Msk \ - (0x80000UL) /*!< HRPWM0 CSGFCG: PS2STP (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFCG_PS2CLR_Pos \ - (20UL) /*!< HRPWM0 CSGFCG: PS2CLR (Bit 20) */ -#define HRPWM0_CSGFCG_PS2CLR_Msk \ - (0x100000UL) /*!< HRPWM0 CSGFCG: PS2CLR (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGFSG ------------------------------- */ -#define HRPWM0_CSGFSG_S0RB_Pos \ - (0UL) /*!< HRPWM0 CSGFSG: S0RB (Bit 0) */ -#define HRPWM0_CSGFSG_S0RB_Msk \ - (0x1UL) /*!< HRPWM0 CSGFSG: S0RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_P0RB_Pos \ - (1UL) /*!< HRPWM0 CSGFSG: P0RB (Bit 1) */ -#define HRPWM0_CSGFSG_P0RB_Msk \ - (0x2UL) /*!< HRPWM0 CSGFSG: P0RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_S1RB_Pos \ - (8UL) /*!< HRPWM0 CSGFSG: S1RB (Bit 8) */ -#define HRPWM0_CSGFSG_S1RB_Msk \ - (0x100UL) /*!< HRPWM0 CSGFSG: S1RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_P1RB_Pos \ - (9UL) /*!< HRPWM0 CSGFSG: P1RB (Bit 9) */ -#define HRPWM0_CSGFSG_P1RB_Msk \ - (0x200UL) /*!< HRPWM0 CSGFSG: P1RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_S2RB_Pos \ - (16UL) /*!< HRPWM0 CSGFSG: S2RB (Bit 16) */ -#define HRPWM0_CSGFSG_S2RB_Msk \ - (0x10000UL) /*!< HRPWM0 CSGFSG: S2RB (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGFSG_P2RB_Pos \ - (17UL) /*!< HRPWM0 CSGFSG: P2RB (Bit 17) */ -#define HRPWM0_CSGFSG_P2RB_Msk \ - (0x20000UL) /*!< HRPWM0 CSGFSG: P2RB (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGTRG ------------------------------- */ -#define HRPWM0_CSGTRG_D0SES_Pos \ - (0UL) /*!< HRPWM0 CSGTRG: D0SES (Bit 0) */ -#define HRPWM0_CSGTRG_D0SES_Msk \ - (0x1UL) /*!< HRPWM0 CSGTRG: D0SES (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D0SVS_Pos \ - (1UL) /*!< HRPWM0 CSGTRG: D0SVS (Bit 1) */ -#define HRPWM0_CSGTRG_D0SVS_Msk \ - (0x2UL) /*!< HRPWM0 CSGTRG: D0SVS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D1SES_Pos \ - (4UL) /*!< HRPWM0 CSGTRG: D1SES (Bit 4) */ -#define HRPWM0_CSGTRG_D1SES_Msk \ - (0x10UL) /*!< HRPWM0 CSGTRG: D1SES (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D1SVS_Pos \ - (5UL) /*!< HRPWM0 CSGTRG: D1SVS (Bit 5) */ -#define HRPWM0_CSGTRG_D1SVS_Msk \ - (0x20UL) /*!< HRPWM0 CSGTRG: D1SVS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D2SES_Pos \ - (8UL) /*!< HRPWM0 CSGTRG: D2SES (Bit 8) */ -#define HRPWM0_CSGTRG_D2SES_Msk \ - (0x100UL) /*!< HRPWM0 CSGTRG: D2SES (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRG_D2SVS_Pos \ - (9UL) /*!< HRPWM0 CSGTRG: D2SVS (Bit 9) */ -#define HRPWM0_CSGTRG_D2SVS_Msk \ - (0x200UL) /*!< HRPWM0 CSGTRG: D2SVS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_CSGTRC ------------------------------- */ -#define HRPWM0_CSGTRC_D0SEC_Pos \ - (0UL) /*!< HRPWM0 CSGTRC: D0SEC (Bit 0) */ -#define HRPWM0_CSGTRC_D0SEC_Msk \ - (0x1UL) /*!< HRPWM0 CSGTRC: D0SEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRC_D1SEC_Pos \ - (4UL) /*!< HRPWM0 CSGTRC: D1SEC (Bit 4) */ -#define HRPWM0_CSGTRC_D1SEC_Msk \ - (0x10UL) /*!< HRPWM0 CSGTRC: D1SEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRC_D2SEC_Pos \ - (8UL) /*!< HRPWM0 CSGTRC: D2SEC (Bit 8) */ -#define HRPWM0_CSGTRC_D2SEC_Msk \ - (0x100UL) /*!< HRPWM0 CSGTRC: D2SEC (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSGTRSG ------------------------------- */ -#define HRPWM0_CSGTRSG_D0STE_Pos \ - (0UL) /*!< HRPWM0 CSGTRSG: D0STE (Bit 0) */ -#define HRPWM0_CSGTRSG_D0STE_Msk \ - (0x1UL) /*!< HRPWM0 CSGTRSG: D0STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_SW0ST_Pos \ - (1UL) /*!< HRPWM0 CSGTRSG: SW0ST (Bit 1) */ -#define HRPWM0_CSGTRSG_SW0ST_Msk \ - (0x2UL) /*!< HRPWM0 CSGTRSG: SW0ST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_D1STE_Pos \ - (4UL) /*!< HRPWM0 CSGTRSG: D1STE (Bit 4) */ -#define HRPWM0_CSGTRSG_D1STE_Msk \ - (0x10UL) /*!< HRPWM0 CSGTRSG: D1STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_SW1ST_Pos \ - (5UL) /*!< HRPWM0 CSGTRSG: SW1ST (Bit 5) */ -#define HRPWM0_CSGTRSG_SW1ST_Msk \ - (0x20UL) /*!< HRPWM0 CSGTRSG: SW1ST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_D2STE_Pos \ - (8UL) /*!< HRPWM0 CSGTRSG: D2STE (Bit 8) */ -#define HRPWM0_CSGTRSG_D2STE_Msk \ - (0x100UL) /*!< HRPWM0 CSGTRSG: D2STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSGTRSG_SW2ST_Pos \ - (9UL) /*!< HRPWM0 CSGTRSG: SW2ST (Bit 9) */ -#define HRPWM0_CSGTRSG_SW2ST_Msk \ - (0x200UL) /*!< HRPWM0 CSGTRSG: SW2ST (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_HRCCFG ------------------------------- */ -#define HRPWM0_HRCCFG_HRCPM_Pos \ - (0UL) /*!< HRPWM0 HRCCFG: HRCPM (Bit 0) */ -#define HRPWM0_HRCCFG_HRCPM_Msk \ - (0x1UL) /*!< HRPWM0 HRCCFG: HRCPM (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_HRC0E_Pos \ - (4UL) /*!< HRPWM0 HRCCFG: HRC0E (Bit 4) */ -#define HRPWM0_HRCCFG_HRC0E_Msk \ - (0x10UL) /*!< HRPWM0 HRCCFG: HRC0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_HRC1E_Pos \ - (5UL) /*!< HRPWM0 HRCCFG: HRC1E (Bit 5) */ -#define HRPWM0_HRCCFG_HRC1E_Msk \ - (0x20UL) /*!< HRPWM0 HRCCFG: HRC1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_HRC2E_Pos \ - (6UL) /*!< HRPWM0 HRCCFG: HRC2E (Bit 6) */ -#define HRPWM0_HRCCFG_HRC2E_Msk \ - (0x40UL) /*!< HRPWM0 HRCCFG: HRC2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_HRC3E_Pos \ - (7UL) /*!< HRPWM0 HRCCFG: HRC3E (Bit 7) */ -#define HRPWM0_HRCCFG_HRC3E_Msk \ - (0x80UL) /*!< HRPWM0 HRCCFG: HRC3E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_CLKC_Pos \ - (16UL) /*!< HRPWM0 HRCCFG: CLKC (Bit 16) */ -#define HRPWM0_HRCCFG_CLKC_Msk \ - (0x70000UL) /*!< HRPWM0 HRCCFG: CLKC (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRCCFG_LRC0E_Pos \ - (20UL) /*!< HRPWM0 HRCCFG: LRC0E (Bit 20) */ -#define HRPWM0_HRCCFG_LRC0E_Msk \ - (0x100000UL) /*!< HRPWM0 HRCCFG: LRC0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_LRC1E_Pos \ - (21UL) /*!< HRPWM0 HRCCFG: LRC1E (Bit 21) */ -#define HRPWM0_HRCCFG_LRC1E_Msk \ - (0x200000UL) /*!< HRPWM0 HRCCFG: LRC1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_LRC2E_Pos \ - (22UL) /*!< HRPWM0 HRCCFG: LRC2E (Bit 22) */ -#define HRPWM0_HRCCFG_LRC2E_Msk \ - (0x400000UL) /*!< HRPWM0 HRCCFG: LRC2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCFG_LRC3E_Pos \ - (23UL) /*!< HRPWM0 HRCCFG: LRC3E (Bit 23) */ -#define HRPWM0_HRCCFG_LRC3E_Msk \ - (0x800000UL) /*!< HRPWM0 HRCCFG: LRC3E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRCSTRG ------------------------------- */ -#define HRPWM0_HRCSTRG_H0ES_Pos \ - (0UL) /*!< HRPWM0 HRCSTRG: H0ES (Bit 0) */ -#define HRPWM0_HRCSTRG_H0ES_Msk \ - (0x1UL) /*!< HRPWM0 HRCSTRG: H0ES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H0DES_Pos \ - (1UL) /*!< HRPWM0 HRCSTRG: H0DES (Bit 1) */ -#define HRPWM0_HRCSTRG_H0DES_Msk \ - (0x2UL) /*!< HRPWM0 HRCSTRG: H0DES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H1ES_Pos \ - (4UL) /*!< HRPWM0 HRCSTRG: H1ES (Bit 4) */ -#define HRPWM0_HRCSTRG_H1ES_Msk \ - (0x10UL) /*!< HRPWM0 HRCSTRG: H1ES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H1DES_Pos \ - (5UL) /*!< HRPWM0 HRCSTRG: H1DES (Bit 5) */ -#define HRPWM0_HRCSTRG_H1DES_Msk \ - (0x20UL) /*!< HRPWM0 HRCSTRG: H1DES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H2ES_Pos \ - (8UL) /*!< HRPWM0 HRCSTRG: H2ES (Bit 8) */ -#define HRPWM0_HRCSTRG_H2ES_Msk \ - (0x100UL) /*!< HRPWM0 HRCSTRG: H2ES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H2DES_Pos \ - (9UL) /*!< HRPWM0 HRCSTRG: H2DES (Bit 9) */ -#define HRPWM0_HRCSTRG_H2DES_Msk \ - (0x200UL) /*!< HRPWM0 HRCSTRG: H2DES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H3ES_Pos \ - (12UL) /*!< HRPWM0 HRCSTRG: H3ES (Bit 12) */ -#define HRPWM0_HRCSTRG_H3ES_Msk \ - (0x1000UL) /*!< HRPWM0 HRCSTRG: H3ES (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTRG_H3DES_Pos \ - (13UL) /*!< HRPWM0 HRCSTRG: H3DES (Bit 13) */ -#define HRPWM0_HRCSTRG_H3DES_Msk \ - (0x2000UL) /*!< HRPWM0 HRCSTRG: H3DES (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRCCTRG ------------------------------- */ -#define HRPWM0_HRCCTRG_H0EC_Pos \ - (0UL) /*!< HRPWM0 HRCCTRG: H0EC (Bit 0) */ -#define HRPWM0_HRCCTRG_H0EC_Msk \ - (0x1UL) /*!< HRPWM0 HRCCTRG: H0EC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H0DEC_Pos \ - (1UL) /*!< HRPWM0 HRCCTRG: H0DEC (Bit 1) */ -#define HRPWM0_HRCCTRG_H0DEC_Msk \ - (0x2UL) /*!< HRPWM0 HRCCTRG: H0DEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H1EC_Pos \ - (4UL) /*!< HRPWM0 HRCCTRG: H1EC (Bit 4) */ -#define HRPWM0_HRCCTRG_H1EC_Msk \ - (0x10UL) /*!< HRPWM0 HRCCTRG: H1EC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H1DEC_Pos \ - (5UL) /*!< HRPWM0 HRCCTRG: H1DEC (Bit 5) */ -#define HRPWM0_HRCCTRG_H1DEC_Msk \ - (0x20UL) /*!< HRPWM0 HRCCTRG: H1DEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H2CEC_Pos \ - (8UL) /*!< HRPWM0 HRCCTRG: H2CEC (Bit 8) */ -#define HRPWM0_HRCCTRG_H2CEC_Msk \ - (0x100UL) /*!< HRPWM0 HRCCTRG: H2CEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H2DEC_Pos \ - (9UL) /*!< HRPWM0 HRCCTRG: H2DEC (Bit 9) */ -#define HRPWM0_HRCCTRG_H2DEC_Msk \ - (0x200UL) /*!< HRPWM0 HRCCTRG: H2DEC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H3EC_Pos \ - (12UL) /*!< HRPWM0 HRCCTRG: H3EC (Bit 12) */ -#define HRPWM0_HRCCTRG_H3EC_Msk \ - (0x1000UL) /*!< HRPWM0 HRCCTRG: H3EC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCCTRG_H3DEC_Pos \ - (13UL) /*!< HRPWM0 HRCCTRG: H3DEC (Bit 13) */ -#define HRPWM0_HRCCTRG_H3DEC_Msk \ - (0x2000UL) /*!< HRPWM0 HRCCTRG: H3DEC (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRCSTSG ------------------------------- */ -#define HRPWM0_HRCSTSG_H0STE_Pos \ - (0UL) /*!< HRPWM0 HRCSTSG: H0STE (Bit 0) */ -#define HRPWM0_HRCSTSG_H0STE_Msk \ - (0x1UL) /*!< HRPWM0 HRCSTSG: H0STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H0DSTE_Pos \ - (1UL) /*!< HRPWM0 HRCSTSG: H0DSTE (Bit 1) */ -#define HRPWM0_HRCSTSG_H0DSTE_Msk \ - (0x2UL) /*!< HRPWM0 HRCSTSG: H0DSTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H1STE_Pos \ - (4UL) /*!< HRPWM0 HRCSTSG: H1STE (Bit 4) */ -#define HRPWM0_HRCSTSG_H1STE_Msk \ - (0x10UL) /*!< HRPWM0 HRCSTSG: H1STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H1DSTE_Pos \ - (5UL) /*!< HRPWM0 HRCSTSG: H1DSTE (Bit 5) */ -#define HRPWM0_HRCSTSG_H1DSTE_Msk \ - (0x20UL) /*!< HRPWM0 HRCSTSG: H1DSTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H2STE_Pos \ - (8UL) /*!< HRPWM0 HRCSTSG: H2STE (Bit 8) */ -#define HRPWM0_HRCSTSG_H2STE_Msk \ - (0x100UL) /*!< HRPWM0 HRCSTSG: H2STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H2DSTE_Pos \ - (9UL) /*!< HRPWM0 HRCSTSG: H2DSTE (Bit 9) */ -#define HRPWM0_HRCSTSG_H2DSTE_Msk \ - (0x200UL) /*!< HRPWM0 HRCSTSG: H2DSTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H3STE_Pos \ - (12UL) /*!< HRPWM0 HRCSTSG: H3STE (Bit 12) */ -#define HRPWM0_HRCSTSG_H3STE_Msk \ - (0x1000UL) /*!< HRPWM0 HRCSTSG: H3STE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRCSTSG_H3DSTE_Pos \ - (13UL) /*!< HRPWM0 HRCSTSG: H3DSTE (Bit 13) */ -#define HRPWM0_HRCSTSG_H3DSTE_Msk \ - (0x2000UL) /*!< HRPWM0 HRCSTSG: H3DSTE (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_HRGHRS ------------------------------- */ -#define HRPWM0_HRGHRS_HRGR_Pos \ - (0UL) /*!< HRPWM0 HRGHRS: HRGR (Bit 0) */ -#define HRPWM0_HRGHRS_HRGR_Msk \ - (0x1UL) /*!< HRPWM0 HRGHRS: HRGR (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'HRPWM0_CSG' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_CSG_DCI ------------------------------- */ -#define HRPWM0_CSG_DCI_SVIS_Pos \ - (0UL) /*!< HRPWM0_CSG DCI: SVIS (Bit 0) */ -#define HRPWM0_CSG_DCI_SVIS_Msk \ - (0xfUL) /*!< HRPWM0_CSG DCI: SVIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_STRIS_Pos \ - (4UL) /*!< HRPWM0_CSG DCI: STRIS (Bit 4) */ -#define HRPWM0_CSG_DCI_STRIS_Msk \ - (0xf0UL) /*!< HRPWM0_CSG DCI: STRIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_STPIS_Pos \ - (8UL) /*!< HRPWM0_CSG DCI: STPIS (Bit 8) */ -#define HRPWM0_CSG_DCI_STPIS_Msk \ - (0xf00UL) /*!< HRPWM0_CSG DCI: STPIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_TRGIS_Pos \ - (12UL) /*!< HRPWM0_CSG DCI: TRGIS (Bit 12) */ -#define HRPWM0_CSG_DCI_TRGIS_Msk \ - (0xf000UL) /*!< HRPWM0_CSG DCI: TRGIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_STIS_Pos \ - (16UL) /*!< HRPWM0_CSG DCI: STIS (Bit 16) */ -#define HRPWM0_CSG_DCI_STIS_Msk \ - (0xf0000UL) /*!< HRPWM0_CSG DCI: STIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_DCI_SCS_Pos \ - (20UL) /*!< HRPWM0_CSG DCI: SCS (Bit 20) */ -#define HRPWM0_CSG_DCI_SCS_Msk \ - (0x300000UL) /*!< HRPWM0_CSG DCI: SCS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG_IES ------------------------------- */ -#define HRPWM0_CSG_IES_SVLS_Pos \ - (0UL) /*!< HRPWM0_CSG IES: SVLS (Bit 0) */ -#define HRPWM0_CSG_IES_SVLS_Msk \ - (0x3UL) /*!< HRPWM0_CSG IES: SVLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_IES_STRES_Pos \ - (2UL) /*!< HRPWM0_CSG IES: STRES (Bit 2) */ -#define HRPWM0_CSG_IES_STRES_Msk \ - (0xcUL) /*!< HRPWM0_CSG IES: STRES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_IES_STPES_Pos \ - (4UL) /*!< HRPWM0_CSG IES: STPES (Bit 4) */ -#define HRPWM0_CSG_IES_STPES_Msk \ - (0x30UL) /*!< HRPWM0_CSG IES: STPES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_IES_TRGES_Pos \ - (6UL) /*!< HRPWM0_CSG IES: TRGES (Bit 6) */ -#define HRPWM0_CSG_IES_TRGES_Msk \ - (0xc0UL) /*!< HRPWM0_CSG IES: TRGES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_IES_STES_Pos \ - (8UL) /*!< HRPWM0_CSG IES: STES (Bit 8) */ -#define HRPWM0_CSG_IES_STES_Msk \ - (0x300UL) /*!< HRPWM0_CSG IES: STES (Bitfield-Mask: 0x03) */ - -/* -------------------------------- HRPWM0_CSG_SC ------------------------------- */ -#define HRPWM0_CSG_SC_PSRM_Pos \ - (0UL) /*!< HRPWM0_CSG SC: PSRM (Bit 0) */ -#define HRPWM0_CSG_SC_PSRM_Msk \ - (0x3UL) /*!< HRPWM0_CSG SC: PSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_PSTM_Pos \ - (2UL) /*!< HRPWM0_CSG SC: PSTM (Bit 2) */ -#define HRPWM0_CSG_SC_PSTM_Msk \ - (0xcUL) /*!< HRPWM0_CSG SC: PSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_FPD_Pos \ - (4UL) /*!< HRPWM0_CSG SC: FPD (Bit 4) */ -#define HRPWM0_CSG_SC_FPD_Msk \ - (0x10UL) /*!< HRPWM0_CSG SC: FPD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SC_PSV_Pos \ - (5UL) /*!< HRPWM0_CSG SC: PSV (Bit 5) */ -#define HRPWM0_CSG_SC_PSV_Msk \ - (0x60UL) /*!< HRPWM0_CSG SC: PSV (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SCM_Pos \ - (8UL) /*!< HRPWM0_CSG SC: SCM (Bit 8) */ -#define HRPWM0_CSG_SC_SCM_Msk \ - (0x300UL) /*!< HRPWM0_CSG SC: SCM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SSRM_Pos \ - (10UL) /*!< HRPWM0_CSG SC: SSRM (Bit 10) */ -#define HRPWM0_CSG_SC_SSRM_Msk \ - (0xc00UL) /*!< HRPWM0_CSG SC: SSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SSTM_Pos \ - (12UL) /*!< HRPWM0_CSG SC: SSTM (Bit 12) */ -#define HRPWM0_CSG_SC_SSTM_Msk \ - (0x3000UL) /*!< HRPWM0_CSG SC: SSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SVSC_Pos \ - (14UL) /*!< HRPWM0_CSG SC: SVSC (Bit 14) */ -#define HRPWM0_CSG_SC_SVSC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG SC: SVSC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_SWSM_Pos \ - (16UL) /*!< HRPWM0_CSG SC: SWSM (Bit 16) */ -#define HRPWM0_CSG_SC_SWSM_Msk \ - (0x30000UL) /*!< HRPWM0_CSG SC: SWSM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_GCFG_Pos \ - (18UL) /*!< HRPWM0_CSG SC: GCFG (Bit 18) */ -#define HRPWM0_CSG_SC_GCFG_Msk \ - (0xc0000UL) /*!< HRPWM0_CSG SC: GCFG (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SC_IST_Pos \ - (20UL) /*!< HRPWM0_CSG SC: IST (Bit 20) */ -#define HRPWM0_CSG_SC_IST_Msk \ - (0x100000UL) /*!< HRPWM0_CSG SC: IST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SC_PSE_Pos \ - (21UL) /*!< HRPWM0_CSG SC: PSE (Bit 21) */ -#define HRPWM0_CSG_SC_PSE_Msk \ - (0x200000UL) /*!< HRPWM0_CSG SC: PSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SC_PSWM_Pos \ - (24UL) /*!< HRPWM0_CSG SC: PSWM (Bit 24) */ -#define HRPWM0_CSG_SC_PSWM_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG SC: PSWM (Bitfield-Mask: 0x03) */ - -/* -------------------------------- HRPWM0_CSG_PC ------------------------------- */ -#define HRPWM0_CSG_PC_PSWV_Pos \ - (0UL) /*!< HRPWM0_CSG PC: PSWV (Bit 0) */ -#define HRPWM0_CSG_PC_PSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG PC: PSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- HRPWM0_CSG_DSV1 ------------------------------ */ -#define HRPWM0_CSG_DSV1_DSV1_Pos \ - (0UL) /*!< HRPWM0_CSG DSV1: DSV1 (Bit 0) */ -#define HRPWM0_CSG_DSV1_DSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG DSV1: DSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG_DSV2 ------------------------------ */ -#define HRPWM0_CSG_DSV2_DSV2_Pos \ - (0UL) /*!< HRPWM0_CSG DSV2: DSV2 (Bit 0) */ -#define HRPWM0_CSG_DSV2_DSV2_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG DSV2: DSV2 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG_SDSV1 ------------------------------ */ -#define HRPWM0_CSG_SDSV1_SDSV1_Pos \ - (0UL) /*!< HRPWM0_CSG SDSV1: SDSV1 (Bit 0) */ -#define HRPWM0_CSG_SDSV1_SDSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG SDSV1: SDSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG_SPC ------------------------------- */ -#define HRPWM0_CSG_SPC_SPSWV_Pos \ - (0UL) /*!< HRPWM0_CSG SPC: SPSWV (Bit 0) */ -#define HRPWM0_CSG_SPC_SPSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG SPC: SPSWV (Bitfield-Mask: 0x3f) */ - -/* -------------------------------- HRPWM0_CSG_CC ------------------------------- */ -#define HRPWM0_CSG_CC_IBS_Pos \ - (0UL) /*!< HRPWM0_CSG CC: IBS (Bit 0) */ -#define HRPWM0_CSG_CC_IBS_Msk \ - (0xfUL) /*!< HRPWM0_CSG CC: IBS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_CC_IMCS_Pos \ - (8UL) /*!< HRPWM0_CSG CC: IMCS (Bit 8) */ -#define HRPWM0_CSG_CC_IMCS_Msk \ - (0x100UL) /*!< HRPWM0_CSG CC: IMCS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_IMCC_Pos \ - (9UL) /*!< HRPWM0_CSG CC: IMCC (Bit 9) */ -#define HRPWM0_CSG_CC_IMCC_Msk \ - (0x600UL) /*!< HRPWM0_CSG CC: IMCC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_CC_ESE_Pos \ - (11UL) /*!< HRPWM0_CSG CC: ESE (Bit 11) */ -#define HRPWM0_CSG_CC_ESE_Msk \ - (0x800UL) /*!< HRPWM0_CSG CC: ESE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_OIE_Pos \ - (12UL) /*!< HRPWM0_CSG CC: OIE (Bit 12) */ -#define HRPWM0_CSG_CC_OIE_Msk \ - (0x1000UL) /*!< HRPWM0_CSG CC: OIE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_OSE_Pos \ - (13UL) /*!< HRPWM0_CSG CC: OSE (Bit 13) */ -#define HRPWM0_CSG_CC_OSE_Msk \ - (0x2000UL) /*!< HRPWM0_CSG CC: OSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_BLMC_Pos \ - (14UL) /*!< HRPWM0_CSG CC: BLMC (Bit 14) */ -#define HRPWM0_CSG_CC_BLMC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG CC: BLMC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_CC_EBE_Pos \ - (16UL) /*!< HRPWM0_CSG CC: EBE (Bit 16) */ -#define HRPWM0_CSG_CC_EBE_Msk \ - (0x10000UL) /*!< HRPWM0_CSG CC: EBE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_COFE_Pos \ - (17UL) /*!< HRPWM0_CSG CC: COFE (Bit 17) */ -#define HRPWM0_CSG_CC_COFE_Msk \ - (0x20000UL) /*!< HRPWM0_CSG CC: COFE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_CC_COFM_Pos \ - (18UL) /*!< HRPWM0_CSG CC: COFM (Bit 18) */ -#define HRPWM0_CSG_CC_COFM_Msk \ - (0x3c0000UL) /*!< HRPWM0_CSG CC: COFM (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_CC_COFC_Pos \ - (24UL) /*!< HRPWM0_CSG CC: COFC (Bit 24) */ -#define HRPWM0_CSG_CC_COFC_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG CC: COFC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG_PLC ------------------------------- */ -#define HRPWM0_CSG_PLC_IPLS_Pos \ - (0UL) /*!< HRPWM0_CSG PLC: IPLS (Bit 0) */ -#define HRPWM0_CSG_PLC_IPLS_Msk \ - (0xfUL) /*!< HRPWM0_CSG PLC: IPLS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG_PLC_PLCL_Pos \ - (8UL) /*!< HRPWM0_CSG PLC: PLCL (Bit 8) */ -#define HRPWM0_CSG_PLC_PLCL_Msk \ - (0x300UL) /*!< HRPWM0_CSG PLC: PLCL (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_PLC_PSL_Pos \ - (10UL) /*!< HRPWM0_CSG PLC: PSL (Bit 10) */ -#define HRPWM0_CSG_PLC_PSL_Msk \ - (0x400UL) /*!< HRPWM0_CSG PLC: PSL (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_PLC_PLSW_Pos \ - (11UL) /*!< HRPWM0_CSG PLC: PLSW (Bit 11) */ -#define HRPWM0_CSG_PLC_PLSW_Msk \ - (0x800UL) /*!< HRPWM0_CSG PLC: PLSW (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_PLC_PLEC_Pos \ - (12UL) /*!< HRPWM0_CSG PLC: PLEC (Bit 12) */ -#define HRPWM0_CSG_PLC_PLEC_Msk \ - (0x3000UL) /*!< HRPWM0_CSG PLC: PLEC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_PLC_PLXC_Pos \ - (14UL) /*!< HRPWM0_CSG PLC: PLXC (Bit 14) */ -#define HRPWM0_CSG_PLC_PLXC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG PLC: PLXC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG_BLV ------------------------------- */ -#define HRPWM0_CSG_BLV_BLV_Pos \ - (0UL) /*!< HRPWM0_CSG BLV: BLV (Bit 0) */ -#define HRPWM0_CSG_BLV_BLV_Msk \ - (0xffUL) /*!< HRPWM0_CSG BLV: BLV (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_CSG_SRE ------------------------------- */ -#define HRPWM0_CSG_SRE_VLS1E_Pos \ - (0UL) /*!< HRPWM0_CSG SRE: VLS1E (Bit 0) */ -#define HRPWM0_CSG_SRE_VLS1E_Msk \ - (0x1UL) /*!< HRPWM0_CSG SRE: VLS1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_VLS2E_Pos \ - (1UL) /*!< HRPWM0_CSG SRE: VLS2E (Bit 1) */ -#define HRPWM0_CSG_SRE_VLS2E_Msk \ - (0x2UL) /*!< HRPWM0_CSG SRE: VLS2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_TRGSE_Pos \ - (2UL) /*!< HRPWM0_CSG SRE: TRGSE (Bit 2) */ -#define HRPWM0_CSG_SRE_TRGSE_Msk \ - (0x4UL) /*!< HRPWM0_CSG SRE: TRGSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_STRSE_Pos \ - (3UL) /*!< HRPWM0_CSG SRE: STRSE (Bit 3) */ -#define HRPWM0_CSG_SRE_STRSE_Msk \ - (0x8UL) /*!< HRPWM0_CSG SRE: STRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_STPSE_Pos \ - (4UL) /*!< HRPWM0_CSG SRE: STPSE (Bit 4) */ -#define HRPWM0_CSG_SRE_STPSE_Msk \ - (0x10UL) /*!< HRPWM0_CSG SRE: STPSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_STDE_Pos \ - (5UL) /*!< HRPWM0_CSG SRE: STDE (Bit 5) */ -#define HRPWM0_CSG_SRE_STDE_Msk \ - (0x20UL) /*!< HRPWM0_CSG SRE: STDE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_CRSE_Pos \ - (6UL) /*!< HRPWM0_CSG SRE: CRSE (Bit 6) */ -#define HRPWM0_CSG_SRE_CRSE_Msk \ - (0x40UL) /*!< HRPWM0_CSG SRE: CRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_CFSE_Pos \ - (7UL) /*!< HRPWM0_CSG SRE: CFSE (Bit 7) */ -#define HRPWM0_CSG_SRE_CFSE_Msk \ - (0x80UL) /*!< HRPWM0_CSG SRE: CFSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SRE_CSEE_Pos \ - (8UL) /*!< HRPWM0_CSG SRE: CSEE (Bit 8) */ -#define HRPWM0_CSG_SRE_CSEE_Msk \ - (0x100UL) /*!< HRPWM0_CSG SRE: CSEE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG_SRS ------------------------------- */ -#define HRPWM0_CSG_SRS_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG SRS: VLS1S (Bit 0) */ -#define HRPWM0_CSG_SRS_VLS1S_Msk \ - (0x3UL) /*!< HRPWM0_CSG SRS: VLS1S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_VLS2S_Pos \ - (2UL) /*!< HRPWM0_CSG SRS: VLS2S (Bit 2) */ -#define HRPWM0_CSG_SRS_VLS2S_Msk \ - (0xcUL) /*!< HRPWM0_CSG SRS: VLS2S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_TRLS_Pos \ - (4UL) /*!< HRPWM0_CSG SRS: TRLS (Bit 4) */ -#define HRPWM0_CSG_SRS_TRLS_Msk \ - (0x30UL) /*!< HRPWM0_CSG SRS: TRLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_SSLS_Pos \ - (6UL) /*!< HRPWM0_CSG SRS: SSLS (Bit 6) */ -#define HRPWM0_CSG_SRS_SSLS_Msk \ - (0xc0UL) /*!< HRPWM0_CSG SRS: SSLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_STLS_Pos \ - (8UL) /*!< HRPWM0_CSG SRS: STLS (Bit 8) */ -#define HRPWM0_CSG_SRS_STLS_Msk \ - (0x300UL) /*!< HRPWM0_CSG SRS: STLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_CRFLS_Pos \ - (10UL) /*!< HRPWM0_CSG SRS: CRFLS (Bit 10) */ -#define HRPWM0_CSG_SRS_CRFLS_Msk \ - (0xc00UL) /*!< HRPWM0_CSG SRS: CRFLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG_SRS_CSLS_Pos \ - (12UL) /*!< HRPWM0_CSG SRS: CSLS (Bit 12) */ -#define HRPWM0_CSG_SRS_CSLS_Msk \ - (0x3000UL) /*!< HRPWM0_CSG SRS: CSLS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG_SWS ------------------------------- */ -#define HRPWM0_CSG_SWS_SVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG SWS: SVLS1 (Bit 0) */ -#define HRPWM0_CSG_SWS_SVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG SWS: SVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG SWS: SVLS2 (Bit 1) */ -#define HRPWM0_CSG_SWS_SVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG SWS: SVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_STRGS_Pos \ - (2UL) /*!< HRPWM0_CSG SWS: STRGS (Bit 2) */ -#define HRPWM0_CSG_SWS_STRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG SWS: STRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG SWS: SSTRS (Bit 3) */ -#define HRPWM0_CSG_SWS_SSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG SWS: SSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG SWS: SSTPS (Bit 4) */ -#define HRPWM0_CSG_SWS_SSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG SWS: SSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SSTD_Pos \ - (5UL) /*!< HRPWM0_CSG SWS: SSTD (Bit 5) */ -#define HRPWM0_CSG_SWS_SSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG SWS: SSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SCRS_Pos \ - (6UL) /*!< HRPWM0_CSG SWS: SCRS (Bit 6) */ -#define HRPWM0_CSG_SWS_SCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG SWS: SCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SCFS_Pos \ - (7UL) /*!< HRPWM0_CSG SWS: SCFS (Bit 7) */ -#define HRPWM0_CSG_SWS_SCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG SWS: SCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWS_SCSS_Pos \ - (8UL) /*!< HRPWM0_CSG SWS: SCSS (Bit 8) */ -#define HRPWM0_CSG_SWS_SCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG SWS: SCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG_SWC ------------------------------- */ -#define HRPWM0_CSG_SWC_CVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG SWC: CVLS1 (Bit 0) */ -#define HRPWM0_CSG_SWC_CVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG SWC: CVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG SWC: CVLS2 (Bit 1) */ -#define HRPWM0_CSG_SWC_CVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG SWC: CVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CTRGS_Pos \ - (2UL) /*!< HRPWM0_CSG SWC: CTRGS (Bit 2) */ -#define HRPWM0_CSG_SWC_CTRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG SWC: CTRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG SWC: CSTRS (Bit 3) */ -#define HRPWM0_CSG_SWC_CSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG SWC: CSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG SWC: CSTPS (Bit 4) */ -#define HRPWM0_CSG_SWC_CSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG SWC: CSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CSTD_Pos \ - (5UL) /*!< HRPWM0_CSG SWC: CSTD (Bit 5) */ -#define HRPWM0_CSG_SWC_CSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG SWC: CSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CCRS_Pos \ - (6UL) /*!< HRPWM0_CSG SWC: CCRS (Bit 6) */ -#define HRPWM0_CSG_SWC_CCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG SWC: CCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CCFS_Pos \ - (7UL) /*!< HRPWM0_CSG SWC: CCFS (Bit 7) */ -#define HRPWM0_CSG_SWC_CCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG SWC: CCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_SWC_CCSS_Pos \ - (8UL) /*!< HRPWM0_CSG SWC: CCSS (Bit 8) */ -#define HRPWM0_CSG_SWC_CCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG SWC: CCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_CSG_ISTAT ------------------------------ */ -#define HRPWM0_CSG_ISTAT_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG ISTAT: VLS1S (Bit 0) */ -#define HRPWM0_CSG_ISTAT_VLS1S_Msk \ - (0x1UL) /*!< HRPWM0_CSG ISTAT: VLS1S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_VLS2S_Pos \ - (1UL) /*!< HRPWM0_CSG ISTAT: VLS2S (Bit 1) */ -#define HRPWM0_CSG_ISTAT_VLS2S_Msk \ - (0x2UL) /*!< HRPWM0_CSG ISTAT: VLS2S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_TRGSS_Pos \ - (2UL) /*!< HRPWM0_CSG ISTAT: TRGSS (Bit 2) */ -#define HRPWM0_CSG_ISTAT_TRGSS_Msk \ - (0x4UL) /*!< HRPWM0_CSG ISTAT: TRGSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_STRSS_Pos \ - (3UL) /*!< HRPWM0_CSG ISTAT: STRSS (Bit 3) */ -#define HRPWM0_CSG_ISTAT_STRSS_Msk \ - (0x8UL) /*!< HRPWM0_CSG ISTAT: STRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_STPSS_Pos \ - (4UL) /*!< HRPWM0_CSG ISTAT: STPSS (Bit 4) */ -#define HRPWM0_CSG_ISTAT_STPSS_Msk \ - (0x10UL) /*!< HRPWM0_CSG ISTAT: STPSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_STDS_Pos \ - (5UL) /*!< HRPWM0_CSG ISTAT: STDS (Bit 5) */ -#define HRPWM0_CSG_ISTAT_STDS_Msk \ - (0x20UL) /*!< HRPWM0_CSG ISTAT: STDS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_CRSS_Pos \ - (6UL) /*!< HRPWM0_CSG ISTAT: CRSS (Bit 6) */ -#define HRPWM0_CSG_ISTAT_CRSS_Msk \ - (0x40UL) /*!< HRPWM0_CSG ISTAT: CRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_CFSS_Pos \ - (7UL) /*!< HRPWM0_CSG ISTAT: CFSS (Bit 7) */ -#define HRPWM0_CSG_ISTAT_CFSS_Msk \ - (0x80UL) /*!< HRPWM0_CSG ISTAT: CFSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG_ISTAT_CSES_Pos \ - (8UL) /*!< HRPWM0_CSG ISTAT: CSES (Bit 8) */ -#define HRPWM0_CSG_ISTAT_CSES_Msk \ - (0x100UL) /*!< HRPWM0_CSG ISTAT: CSES (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_CSG0' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_CSG0_DCI ------------------------------ */ -#define HRPWM0_CSG0_DCI_SVIS_Pos \ - (0UL) /*!< HRPWM0_CSG0 DCI: SVIS (Bit 0) */ -#define HRPWM0_CSG0_DCI_SVIS_Msk \ - (0xfUL) /*!< HRPWM0_CSG0 DCI: SVIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_STRIS_Pos \ - (4UL) /*!< HRPWM0_CSG0 DCI: STRIS (Bit 4) */ -#define HRPWM0_CSG0_DCI_STRIS_Msk \ - (0xf0UL) /*!< HRPWM0_CSG0 DCI: STRIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_STPIS_Pos \ - (8UL) /*!< HRPWM0_CSG0 DCI: STPIS (Bit 8) */ -#define HRPWM0_CSG0_DCI_STPIS_Msk \ - (0xf00UL) /*!< HRPWM0_CSG0 DCI: STPIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_TRGIS_Pos \ - (12UL) /*!< HRPWM0_CSG0 DCI: TRGIS (Bit 12) */ -#define HRPWM0_CSG0_DCI_TRGIS_Msk \ - (0xf000UL) /*!< HRPWM0_CSG0 DCI: TRGIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_STIS_Pos \ - (16UL) /*!< HRPWM0_CSG0 DCI: STIS (Bit 16) */ -#define HRPWM0_CSG0_DCI_STIS_Msk \ - (0xf0000UL) /*!< HRPWM0_CSG0 DCI: STIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_DCI_SCS_Pos \ - (20UL) /*!< HRPWM0_CSG0 DCI: SCS (Bit 20) */ -#define HRPWM0_CSG0_DCI_SCS_Msk \ - (0x300000UL) /*!< HRPWM0_CSG0 DCI: SCS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_IES ------------------------------ */ -#define HRPWM0_CSG0_IES_SVLS_Pos \ - (0UL) /*!< HRPWM0_CSG0 IES: SVLS (Bit 0) */ -#define HRPWM0_CSG0_IES_SVLS_Msk \ - (0x3UL) /*!< HRPWM0_CSG0 IES: SVLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_IES_STRES_Pos \ - (2UL) /*!< HRPWM0_CSG0 IES: STRES (Bit 2) */ -#define HRPWM0_CSG0_IES_STRES_Msk \ - (0xcUL) /*!< HRPWM0_CSG0 IES: STRES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_IES_STPES_Pos \ - (4UL) /*!< HRPWM0_CSG0 IES: STPES (Bit 4) */ -#define HRPWM0_CSG0_IES_STPES_Msk \ - (0x30UL) /*!< HRPWM0_CSG0 IES: STPES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_IES_TRGES_Pos \ - (6UL) /*!< HRPWM0_CSG0 IES: TRGES (Bit 6) */ -#define HRPWM0_CSG0_IES_TRGES_Msk \ - (0xc0UL) /*!< HRPWM0_CSG0 IES: TRGES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_IES_STES_Pos \ - (8UL) /*!< HRPWM0_CSG0 IES: STES (Bit 8) */ -#define HRPWM0_CSG0_IES_STES_Msk \ - (0x300UL) /*!< HRPWM0_CSG0 IES: STES (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_SC ------------------------------- */ -#define HRPWM0_CSG0_SC_PSRM_Pos \ - (0UL) /*!< HRPWM0_CSG0 SC: PSRM (Bit 0) */ -#define HRPWM0_CSG0_SC_PSRM_Msk \ - (0x3UL) /*!< HRPWM0_CSG0 SC: PSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_PSTM_Pos \ - (2UL) /*!< HRPWM0_CSG0 SC: PSTM (Bit 2) */ -#define HRPWM0_CSG0_SC_PSTM_Msk \ - (0xcUL) /*!< HRPWM0_CSG0 SC: PSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_FPD_Pos \ - (4UL) /*!< HRPWM0_CSG0 SC: FPD (Bit 4) */ -#define HRPWM0_CSG0_SC_FPD_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 SC: FPD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SC_PSV_Pos \ - (5UL) /*!< HRPWM0_CSG0 SC: PSV (Bit 5) */ -#define HRPWM0_CSG0_SC_PSV_Msk \ - (0x60UL) /*!< HRPWM0_CSG0 SC: PSV (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SCM_Pos \ - (8UL) /*!< HRPWM0_CSG0 SC: SCM (Bit 8) */ -#define HRPWM0_CSG0_SC_SCM_Msk \ - (0x300UL) /*!< HRPWM0_CSG0 SC: SCM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SSRM_Pos \ - (10UL) /*!< HRPWM0_CSG0 SC: SSRM (Bit 10) */ -#define HRPWM0_CSG0_SC_SSRM_Msk \ - (0xc00UL) /*!< HRPWM0_CSG0 SC: SSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SSTM_Pos \ - (12UL) /*!< HRPWM0_CSG0 SC: SSTM (Bit 12) */ -#define HRPWM0_CSG0_SC_SSTM_Msk \ - (0x3000UL) /*!< HRPWM0_CSG0 SC: SSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SVSC_Pos \ - (14UL) /*!< HRPWM0_CSG0 SC: SVSC (Bit 14) */ -#define HRPWM0_CSG0_SC_SVSC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG0 SC: SVSC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_SWSM_Pos \ - (16UL) /*!< HRPWM0_CSG0 SC: SWSM (Bit 16) */ -#define HRPWM0_CSG0_SC_SWSM_Msk \ - (0x30000UL) /*!< HRPWM0_CSG0 SC: SWSM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_GCFG_Pos \ - (18UL) /*!< HRPWM0_CSG0 SC: GCFG (Bit 18) */ -#define HRPWM0_CSG0_SC_GCFG_Msk \ - (0xc0000UL) /*!< HRPWM0_CSG0 SC: GCFG (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SC_IST_Pos \ - (20UL) /*!< HRPWM0_CSG0 SC: IST (Bit 20) */ -#define HRPWM0_CSG0_SC_IST_Msk \ - (0x100000UL) /*!< HRPWM0_CSG0 SC: IST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SC_PSE_Pos \ - (21UL) /*!< HRPWM0_CSG0 SC: PSE (Bit 21) */ -#define HRPWM0_CSG0_SC_PSE_Msk \ - (0x200000UL) /*!< HRPWM0_CSG0 SC: PSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SC_PSWM_Pos \ - (24UL) /*!< HRPWM0_CSG0 SC: PSWM (Bit 24) */ -#define HRPWM0_CSG0_SC_PSWM_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG0 SC: PSWM (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_PC ------------------------------- */ -#define HRPWM0_CSG0_PC_PSWV_Pos \ - (0UL) /*!< HRPWM0_CSG0 PC: PSWV (Bit 0) */ -#define HRPWM0_CSG0_PC_PSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG0 PC: PSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------ HRPWM0_CSG0_DSV1 ------------------------------ */ -#define HRPWM0_CSG0_DSV1_DSV1_Pos \ - (0UL) /*!< HRPWM0_CSG0 DSV1: DSV1 (Bit 0) */ -#define HRPWM0_CSG0_DSV1_DSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG0 DSV1: DSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG0_DSV2 ------------------------------ */ -#define HRPWM0_CSG0_DSV2_DSV2_Pos \ - (0UL) /*!< HRPWM0_CSG0 DSV2: DSV2 (Bit 0) */ -#define HRPWM0_CSG0_DSV2_DSV2_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG0 DSV2: DSV2 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG0_SDSV1 ----------------------------- */ -#define HRPWM0_CSG0_SDSV1_SDSV1_Pos \ - (0UL) /*!< HRPWM0_CSG0 SDSV1: SDSV1 (Bit 0) */ -#define HRPWM0_CSG0_SDSV1_SDSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG0 SDSV1: SDSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG0_SPC ------------------------------ */ -#define HRPWM0_CSG0_SPC_SPSWV_Pos \ - (0UL) /*!< HRPWM0_CSG0 SPC: SPSWV (Bit 0) */ -#define HRPWM0_CSG0_SPC_SPSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG0 SPC: SPSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- HRPWM0_CSG0_CC ------------------------------- */ -#define HRPWM0_CSG0_CC_IBS_Pos \ - (0UL) /*!< HRPWM0_CSG0 CC: IBS (Bit 0) */ -#define HRPWM0_CSG0_CC_IBS_Msk \ - (0xfUL) /*!< HRPWM0_CSG0 CC: IBS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_CC_IMCS_Pos \ - (8UL) /*!< HRPWM0_CSG0 CC: IMCS (Bit 8) */ -#define HRPWM0_CSG0_CC_IMCS_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 CC: IMCS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_IMCC_Pos \ - (9UL) /*!< HRPWM0_CSG0 CC: IMCC (Bit 9) */ -#define HRPWM0_CSG0_CC_IMCC_Msk \ - (0x600UL) /*!< HRPWM0_CSG0 CC: IMCC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_CC_ESE_Pos \ - (11UL) /*!< HRPWM0_CSG0 CC: ESE (Bit 11) */ -#define HRPWM0_CSG0_CC_ESE_Msk \ - (0x800UL) /*!< HRPWM0_CSG0 CC: ESE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_OIE_Pos \ - (12UL) /*!< HRPWM0_CSG0 CC: OIE (Bit 12) */ -#define HRPWM0_CSG0_CC_OIE_Msk \ - (0x1000UL) /*!< HRPWM0_CSG0 CC: OIE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_OSE_Pos \ - (13UL) /*!< HRPWM0_CSG0 CC: OSE (Bit 13) */ -#define HRPWM0_CSG0_CC_OSE_Msk \ - (0x2000UL) /*!< HRPWM0_CSG0 CC: OSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_BLMC_Pos \ - (14UL) /*!< HRPWM0_CSG0 CC: BLMC (Bit 14) */ -#define HRPWM0_CSG0_CC_BLMC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG0 CC: BLMC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_CC_EBE_Pos \ - (16UL) /*!< HRPWM0_CSG0 CC: EBE (Bit 16) */ -#define HRPWM0_CSG0_CC_EBE_Msk \ - (0x10000UL) /*!< HRPWM0_CSG0 CC: EBE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_COFE_Pos \ - (17UL) /*!< HRPWM0_CSG0 CC: COFE (Bit 17) */ -#define HRPWM0_CSG0_CC_COFE_Msk \ - (0x20000UL) /*!< HRPWM0_CSG0 CC: COFE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_CC_COFM_Pos \ - (18UL) /*!< HRPWM0_CSG0 CC: COFM (Bit 18) */ -#define HRPWM0_CSG0_CC_COFM_Msk \ - (0x3c0000UL) /*!< HRPWM0_CSG0 CC: COFM (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_CC_COFC_Pos \ - (24UL) /*!< HRPWM0_CSG0 CC: COFC (Bit 24) */ -#define HRPWM0_CSG0_CC_COFC_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG0 CC: COFC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_PLC ------------------------------ */ -#define HRPWM0_CSG0_PLC_IPLS_Pos \ - (0UL) /*!< HRPWM0_CSG0 PLC: IPLS (Bit 0) */ -#define HRPWM0_CSG0_PLC_IPLS_Msk \ - (0xfUL) /*!< HRPWM0_CSG0 PLC: IPLS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG0_PLC_PLCL_Pos \ - (8UL) /*!< HRPWM0_CSG0 PLC: PLCL (Bit 8) */ -#define HRPWM0_CSG0_PLC_PLCL_Msk \ - (0x300UL) /*!< HRPWM0_CSG0 PLC: PLCL (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_PLC_PSL_Pos \ - (10UL) /*!< HRPWM0_CSG0 PLC: PSL (Bit 10) */ -#define HRPWM0_CSG0_PLC_PSL_Msk \ - (0x400UL) /*!< HRPWM0_CSG0 PLC: PSL (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_PLC_PLSW_Pos \ - (11UL) /*!< HRPWM0_CSG0 PLC: PLSW (Bit 11) */ -#define HRPWM0_CSG0_PLC_PLSW_Msk \ - (0x800UL) /*!< HRPWM0_CSG0 PLC: PLSW (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_PLC_PLEC_Pos \ - (12UL) /*!< HRPWM0_CSG0 PLC: PLEC (Bit 12) */ -#define HRPWM0_CSG0_PLC_PLEC_Msk \ - (0x3000UL) /*!< HRPWM0_CSG0 PLC: PLEC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_PLC_PLXC_Pos \ - (14UL) /*!< HRPWM0_CSG0 PLC: PLXC (Bit 14) */ -#define HRPWM0_CSG0_PLC_PLXC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG0 PLC: PLXC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_BLV ------------------------------ */ -#define HRPWM0_CSG0_BLV_BLV_Pos \ - (0UL) /*!< HRPWM0_CSG0 BLV: BLV (Bit 0) */ -#define HRPWM0_CSG0_BLV_BLV_Msk \ - (0xffUL) /*!< HRPWM0_CSG0 BLV: BLV (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_CSG0_SRE ------------------------------ */ -#define HRPWM0_CSG0_SRE_VLS1E_Pos \ - (0UL) /*!< HRPWM0_CSG0 SRE: VLS1E (Bit 0) */ -#define HRPWM0_CSG0_SRE_VLS1E_Msk \ - (0x1UL) /*!< HRPWM0_CSG0 SRE: VLS1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_VLS2E_Pos \ - (1UL) /*!< HRPWM0_CSG0 SRE: VLS2E (Bit 1) */ -#define HRPWM0_CSG0_SRE_VLS2E_Msk \ - (0x2UL) /*!< HRPWM0_CSG0 SRE: VLS2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_TRGSE_Pos \ - (2UL) /*!< HRPWM0_CSG0 SRE: TRGSE (Bit 2) */ -#define HRPWM0_CSG0_SRE_TRGSE_Msk \ - (0x4UL) /*!< HRPWM0_CSG0 SRE: TRGSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_STRSE_Pos \ - (3UL) /*!< HRPWM0_CSG0 SRE: STRSE (Bit 3) */ -#define HRPWM0_CSG0_SRE_STRSE_Msk \ - (0x8UL) /*!< HRPWM0_CSG0 SRE: STRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_STPSE_Pos \ - (4UL) /*!< HRPWM0_CSG0 SRE: STPSE (Bit 4) */ -#define HRPWM0_CSG0_SRE_STPSE_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 SRE: STPSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_STDE_Pos \ - (5UL) /*!< HRPWM0_CSG0 SRE: STDE (Bit 5) */ -#define HRPWM0_CSG0_SRE_STDE_Msk \ - (0x20UL) /*!< HRPWM0_CSG0 SRE: STDE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_CRSE_Pos \ - (6UL) /*!< HRPWM0_CSG0 SRE: CRSE (Bit 6) */ -#define HRPWM0_CSG0_SRE_CRSE_Msk \ - (0x40UL) /*!< HRPWM0_CSG0 SRE: CRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_CFSE_Pos \ - (7UL) /*!< HRPWM0_CSG0 SRE: CFSE (Bit 7) */ -#define HRPWM0_CSG0_SRE_CFSE_Msk \ - (0x80UL) /*!< HRPWM0_CSG0 SRE: CFSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SRE_CSEE_Pos \ - (8UL) /*!< HRPWM0_CSG0 SRE: CSEE (Bit 8) */ -#define HRPWM0_CSG0_SRE_CSEE_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 SRE: CSEE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG0_SRS ------------------------------ */ -#define HRPWM0_CSG0_SRS_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG0 SRS: VLS1S (Bit 0) */ -#define HRPWM0_CSG0_SRS_VLS1S_Msk \ - (0x3UL) /*!< HRPWM0_CSG0 SRS: VLS1S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_VLS2S_Pos \ - (2UL) /*!< HRPWM0_CSG0 SRS: VLS2S (Bit 2) */ -#define HRPWM0_CSG0_SRS_VLS2S_Msk \ - (0xcUL) /*!< HRPWM0_CSG0 SRS: VLS2S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_TRLS_Pos \ - (4UL) /*!< HRPWM0_CSG0 SRS: TRLS (Bit 4) */ -#define HRPWM0_CSG0_SRS_TRLS_Msk \ - (0x30UL) /*!< HRPWM0_CSG0 SRS: TRLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_SSLS_Pos \ - (6UL) /*!< HRPWM0_CSG0 SRS: SSLS (Bit 6) */ -#define HRPWM0_CSG0_SRS_SSLS_Msk \ - (0xc0UL) /*!< HRPWM0_CSG0 SRS: SSLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_STLS_Pos \ - (8UL) /*!< HRPWM0_CSG0 SRS: STLS (Bit 8) */ -#define HRPWM0_CSG0_SRS_STLS_Msk \ - (0x300UL) /*!< HRPWM0_CSG0 SRS: STLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_CRFLS_Pos \ - (10UL) /*!< HRPWM0_CSG0 SRS: CRFLS (Bit 10) */ -#define HRPWM0_CSG0_SRS_CRFLS_Msk \ - (0xc00UL) /*!< HRPWM0_CSG0 SRS: CRFLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG0_SRS_CSLS_Pos \ - (12UL) /*!< HRPWM0_CSG0 SRS: CSLS (Bit 12) */ -#define HRPWM0_CSG0_SRS_CSLS_Msk \ - (0x3000UL) /*!< HRPWM0_CSG0 SRS: CSLS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG0_SWS ------------------------------ */ -#define HRPWM0_CSG0_SWS_SVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG0 SWS: SVLS1 (Bit 0) */ -#define HRPWM0_CSG0_SWS_SVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG0 SWS: SVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG0 SWS: SVLS2 (Bit 1) */ -#define HRPWM0_CSG0_SWS_SVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG0 SWS: SVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_STRGS_Pos \ - (2UL) /*!< HRPWM0_CSG0 SWS: STRGS (Bit 2) */ -#define HRPWM0_CSG0_SWS_STRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG0 SWS: STRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG0 SWS: SSTRS (Bit 3) */ -#define HRPWM0_CSG0_SWS_SSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG0 SWS: SSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG0 SWS: SSTPS (Bit 4) */ -#define HRPWM0_CSG0_SWS_SSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 SWS: SSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SSTD_Pos \ - (5UL) /*!< HRPWM0_CSG0 SWS: SSTD (Bit 5) */ -#define HRPWM0_CSG0_SWS_SSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG0 SWS: SSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SCRS_Pos \ - (6UL) /*!< HRPWM0_CSG0 SWS: SCRS (Bit 6) */ -#define HRPWM0_CSG0_SWS_SCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG0 SWS: SCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SCFS_Pos \ - (7UL) /*!< HRPWM0_CSG0 SWS: SCFS (Bit 7) */ -#define HRPWM0_CSG0_SWS_SCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG0 SWS: SCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWS_SCSS_Pos \ - (8UL) /*!< HRPWM0_CSG0 SWS: SCSS (Bit 8) */ -#define HRPWM0_CSG0_SWS_SCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 SWS: SCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG0_SWC ------------------------------ */ -#define HRPWM0_CSG0_SWC_CVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG0 SWC: CVLS1 (Bit 0) */ -#define HRPWM0_CSG0_SWC_CVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG0 SWC: CVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG0 SWC: CVLS2 (Bit 1) */ -#define HRPWM0_CSG0_SWC_CVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG0 SWC: CVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CTRGS_Pos \ - (2UL) /*!< HRPWM0_CSG0 SWC: CTRGS (Bit 2) */ -#define HRPWM0_CSG0_SWC_CTRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG0 SWC: CTRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG0 SWC: CSTRS (Bit 3) */ -#define HRPWM0_CSG0_SWC_CSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG0 SWC: CSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG0 SWC: CSTPS (Bit 4) */ -#define HRPWM0_CSG0_SWC_CSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 SWC: CSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CSTD_Pos \ - (5UL) /*!< HRPWM0_CSG0 SWC: CSTD (Bit 5) */ -#define HRPWM0_CSG0_SWC_CSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG0 SWC: CSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CCRS_Pos \ - (6UL) /*!< HRPWM0_CSG0 SWC: CCRS (Bit 6) */ -#define HRPWM0_CSG0_SWC_CCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG0 SWC: CCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CCFS_Pos \ - (7UL) /*!< HRPWM0_CSG0 SWC: CCFS (Bit 7) */ -#define HRPWM0_CSG0_SWC_CCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG0 SWC: CCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_SWC_CCSS_Pos \ - (8UL) /*!< HRPWM0_CSG0 SWC: CCSS (Bit 8) */ -#define HRPWM0_CSG0_SWC_CCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 SWC: CCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_CSG0_ISTAT ----------------------------- */ -#define HRPWM0_CSG0_ISTAT_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG0 ISTAT: VLS1S (Bit 0) */ -#define HRPWM0_CSG0_ISTAT_VLS1S_Msk \ - (0x1UL) /*!< HRPWM0_CSG0 ISTAT: VLS1S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_VLS2S_Pos \ - (1UL) /*!< HRPWM0_CSG0 ISTAT: VLS2S (Bit 1) */ -#define HRPWM0_CSG0_ISTAT_VLS2S_Msk \ - (0x2UL) /*!< HRPWM0_CSG0 ISTAT: VLS2S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_TRGSS_Pos \ - (2UL) /*!< HRPWM0_CSG0 ISTAT: TRGSS (Bit 2) */ -#define HRPWM0_CSG0_ISTAT_TRGSS_Msk \ - (0x4UL) /*!< HRPWM0_CSG0 ISTAT: TRGSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_STRSS_Pos \ - (3UL) /*!< HRPWM0_CSG0 ISTAT: STRSS (Bit 3) */ -#define HRPWM0_CSG0_ISTAT_STRSS_Msk \ - (0x8UL) /*!< HRPWM0_CSG0 ISTAT: STRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_STPSS_Pos \ - (4UL) /*!< HRPWM0_CSG0 ISTAT: STPSS (Bit 4) */ -#define HRPWM0_CSG0_ISTAT_STPSS_Msk \ - (0x10UL) /*!< HRPWM0_CSG0 ISTAT: STPSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_STDS_Pos \ - (5UL) /*!< HRPWM0_CSG0 ISTAT: STDS (Bit 5) */ -#define HRPWM0_CSG0_ISTAT_STDS_Msk \ - (0x20UL) /*!< HRPWM0_CSG0 ISTAT: STDS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_CRSS_Pos \ - (6UL) /*!< HRPWM0_CSG0 ISTAT: CRSS (Bit 6) */ -#define HRPWM0_CSG0_ISTAT_CRSS_Msk \ - (0x40UL) /*!< HRPWM0_CSG0 ISTAT: CRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_CFSS_Pos \ - (7UL) /*!< HRPWM0_CSG0 ISTAT: CFSS (Bit 7) */ -#define HRPWM0_CSG0_ISTAT_CFSS_Msk \ - (0x80UL) /*!< HRPWM0_CSG0 ISTAT: CFSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG0_ISTAT_CSES_Pos \ - (8UL) /*!< HRPWM0_CSG0 ISTAT: CSES (Bit 8) */ -#define HRPWM0_CSG0_ISTAT_CSES_Msk \ - (0x100UL) /*!< HRPWM0_CSG0 ISTAT: CSES (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_CSG1' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_CSG1_DCI ------------------------------ */ -#define HRPWM0_CSG1_DCI_SVIS_Pos \ - (0UL) /*!< HRPWM0_CSG1 DCI: SVIS (Bit 0) */ -#define HRPWM0_CSG1_DCI_SVIS_Msk \ - (0xfUL) /*!< HRPWM0_CSG1 DCI: SVIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_STRIS_Pos \ - (4UL) /*!< HRPWM0_CSG1 DCI: STRIS (Bit 4) */ -#define HRPWM0_CSG1_DCI_STRIS_Msk \ - (0xf0UL) /*!< HRPWM0_CSG1 DCI: STRIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_STPIS_Pos \ - (8UL) /*!< HRPWM0_CSG1 DCI: STPIS (Bit 8) */ -#define HRPWM0_CSG1_DCI_STPIS_Msk \ - (0xf00UL) /*!< HRPWM0_CSG1 DCI: STPIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_TRGIS_Pos \ - (12UL) /*!< HRPWM0_CSG1 DCI: TRGIS (Bit 12) */ -#define HRPWM0_CSG1_DCI_TRGIS_Msk \ - (0xf000UL) /*!< HRPWM0_CSG1 DCI: TRGIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_STIS_Pos \ - (16UL) /*!< HRPWM0_CSG1 DCI: STIS (Bit 16) */ -#define HRPWM0_CSG1_DCI_STIS_Msk \ - (0xf0000UL) /*!< HRPWM0_CSG1 DCI: STIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_DCI_SCS_Pos \ - (20UL) /*!< HRPWM0_CSG1 DCI: SCS (Bit 20) */ -#define HRPWM0_CSG1_DCI_SCS_Msk \ - (0x300000UL) /*!< HRPWM0_CSG1 DCI: SCS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_IES ------------------------------ */ -#define HRPWM0_CSG1_IES_SVLS_Pos \ - (0UL) /*!< HRPWM0_CSG1 IES: SVLS (Bit 0) */ -#define HRPWM0_CSG1_IES_SVLS_Msk \ - (0x3UL) /*!< HRPWM0_CSG1 IES: SVLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_IES_STRES_Pos \ - (2UL) /*!< HRPWM0_CSG1 IES: STRES (Bit 2) */ -#define HRPWM0_CSG1_IES_STRES_Msk \ - (0xcUL) /*!< HRPWM0_CSG1 IES: STRES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_IES_STPES_Pos \ - (4UL) /*!< HRPWM0_CSG1 IES: STPES (Bit 4) */ -#define HRPWM0_CSG1_IES_STPES_Msk \ - (0x30UL) /*!< HRPWM0_CSG1 IES: STPES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_IES_TRGES_Pos \ - (6UL) /*!< HRPWM0_CSG1 IES: TRGES (Bit 6) */ -#define HRPWM0_CSG1_IES_TRGES_Msk \ - (0xc0UL) /*!< HRPWM0_CSG1 IES: TRGES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_IES_STES_Pos \ - (8UL) /*!< HRPWM0_CSG1 IES: STES (Bit 8) */ -#define HRPWM0_CSG1_IES_STES_Msk \ - (0x300UL) /*!< HRPWM0_CSG1 IES: STES (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_SC ------------------------------- */ -#define HRPWM0_CSG1_SC_PSRM_Pos \ - (0UL) /*!< HRPWM0_CSG1 SC: PSRM (Bit 0) */ -#define HRPWM0_CSG1_SC_PSRM_Msk \ - (0x3UL) /*!< HRPWM0_CSG1 SC: PSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_PSTM_Pos \ - (2UL) /*!< HRPWM0_CSG1 SC: PSTM (Bit 2) */ -#define HRPWM0_CSG1_SC_PSTM_Msk \ - (0xcUL) /*!< HRPWM0_CSG1 SC: PSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_FPD_Pos \ - (4UL) /*!< HRPWM0_CSG1 SC: FPD (Bit 4) */ -#define HRPWM0_CSG1_SC_FPD_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 SC: FPD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SC_PSV_Pos \ - (5UL) /*!< HRPWM0_CSG1 SC: PSV (Bit 5) */ -#define HRPWM0_CSG1_SC_PSV_Msk \ - (0x60UL) /*!< HRPWM0_CSG1 SC: PSV (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SCM_Pos \ - (8UL) /*!< HRPWM0_CSG1 SC: SCM (Bit 8) */ -#define HRPWM0_CSG1_SC_SCM_Msk \ - (0x300UL) /*!< HRPWM0_CSG1 SC: SCM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SSRM_Pos \ - (10UL) /*!< HRPWM0_CSG1 SC: SSRM (Bit 10) */ -#define HRPWM0_CSG1_SC_SSRM_Msk \ - (0xc00UL) /*!< HRPWM0_CSG1 SC: SSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SSTM_Pos \ - (12UL) /*!< HRPWM0_CSG1 SC: SSTM (Bit 12) */ -#define HRPWM0_CSG1_SC_SSTM_Msk \ - (0x3000UL) /*!< HRPWM0_CSG1 SC: SSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SVSC_Pos \ - (14UL) /*!< HRPWM0_CSG1 SC: SVSC (Bit 14) */ -#define HRPWM0_CSG1_SC_SVSC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG1 SC: SVSC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_SWSM_Pos \ - (16UL) /*!< HRPWM0_CSG1 SC: SWSM (Bit 16) */ -#define HRPWM0_CSG1_SC_SWSM_Msk \ - (0x30000UL) /*!< HRPWM0_CSG1 SC: SWSM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_GCFG_Pos \ - (18UL) /*!< HRPWM0_CSG1 SC: GCFG (Bit 18) */ -#define HRPWM0_CSG1_SC_GCFG_Msk \ - (0xc0000UL) /*!< HRPWM0_CSG1 SC: GCFG (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SC_IST_Pos \ - (20UL) /*!< HRPWM0_CSG1 SC: IST (Bit 20) */ -#define HRPWM0_CSG1_SC_IST_Msk \ - (0x100000UL) /*!< HRPWM0_CSG1 SC: IST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SC_PSE_Pos \ - (21UL) /*!< HRPWM0_CSG1 SC: PSE (Bit 21) */ -#define HRPWM0_CSG1_SC_PSE_Msk \ - (0x200000UL) /*!< HRPWM0_CSG1 SC: PSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SC_PSWM_Pos \ - (24UL) /*!< HRPWM0_CSG1 SC: PSWM (Bit 24) */ -#define HRPWM0_CSG1_SC_PSWM_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG1 SC: PSWM (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_PC ------------------------------- */ -#define HRPWM0_CSG1_PC_PSWV_Pos \ - (0UL) /*!< HRPWM0_CSG1 PC: PSWV (Bit 0) */ -#define HRPWM0_CSG1_PC_PSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG1 PC: PSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------ HRPWM0_CSG1_DSV1 ------------------------------ */ -#define HRPWM0_CSG1_DSV1_DSV1_Pos \ - (0UL) /*!< HRPWM0_CSG1 DSV1: DSV1 (Bit 0) */ -#define HRPWM0_CSG1_DSV1_DSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG1 DSV1: DSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG1_DSV2 ------------------------------ */ -#define HRPWM0_CSG1_DSV2_DSV2_Pos \ - (0UL) /*!< HRPWM0_CSG1 DSV2: DSV2 (Bit 0) */ -#define HRPWM0_CSG1_DSV2_DSV2_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG1 DSV2: DSV2 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG1_SDSV1 ----------------------------- */ -#define HRPWM0_CSG1_SDSV1_SDSV1_Pos \ - (0UL) /*!< HRPWM0_CSG1 SDSV1: SDSV1 (Bit 0) */ -#define HRPWM0_CSG1_SDSV1_SDSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG1 SDSV1: SDSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG1_SPC ------------------------------ */ -#define HRPWM0_CSG1_SPC_SPSWV_Pos \ - (0UL) /*!< HRPWM0_CSG1 SPC: SPSWV (Bit 0) */ -#define HRPWM0_CSG1_SPC_SPSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG1 SPC: SPSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- HRPWM0_CSG1_CC ------------------------------- */ -#define HRPWM0_CSG1_CC_IBS_Pos \ - (0UL) /*!< HRPWM0_CSG1 CC: IBS (Bit 0) */ -#define HRPWM0_CSG1_CC_IBS_Msk \ - (0xfUL) /*!< HRPWM0_CSG1 CC: IBS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_CC_IMCS_Pos \ - (8UL) /*!< HRPWM0_CSG1 CC: IMCS (Bit 8) */ -#define HRPWM0_CSG1_CC_IMCS_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 CC: IMCS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_IMCC_Pos \ - (9UL) /*!< HRPWM0_CSG1 CC: IMCC (Bit 9) */ -#define HRPWM0_CSG1_CC_IMCC_Msk \ - (0x600UL) /*!< HRPWM0_CSG1 CC: IMCC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_CC_ESE_Pos \ - (11UL) /*!< HRPWM0_CSG1 CC: ESE (Bit 11) */ -#define HRPWM0_CSG1_CC_ESE_Msk \ - (0x800UL) /*!< HRPWM0_CSG1 CC: ESE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_OIE_Pos \ - (12UL) /*!< HRPWM0_CSG1 CC: OIE (Bit 12) */ -#define HRPWM0_CSG1_CC_OIE_Msk \ - (0x1000UL) /*!< HRPWM0_CSG1 CC: OIE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_OSE_Pos \ - (13UL) /*!< HRPWM0_CSG1 CC: OSE (Bit 13) */ -#define HRPWM0_CSG1_CC_OSE_Msk \ - (0x2000UL) /*!< HRPWM0_CSG1 CC: OSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_BLMC_Pos \ - (14UL) /*!< HRPWM0_CSG1 CC: BLMC (Bit 14) */ -#define HRPWM0_CSG1_CC_BLMC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG1 CC: BLMC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_CC_EBE_Pos \ - (16UL) /*!< HRPWM0_CSG1 CC: EBE (Bit 16) */ -#define HRPWM0_CSG1_CC_EBE_Msk \ - (0x10000UL) /*!< HRPWM0_CSG1 CC: EBE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_COFE_Pos \ - (17UL) /*!< HRPWM0_CSG1 CC: COFE (Bit 17) */ -#define HRPWM0_CSG1_CC_COFE_Msk \ - (0x20000UL) /*!< HRPWM0_CSG1 CC: COFE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_CC_COFM_Pos \ - (18UL) /*!< HRPWM0_CSG1 CC: COFM (Bit 18) */ -#define HRPWM0_CSG1_CC_COFM_Msk \ - (0x3c0000UL) /*!< HRPWM0_CSG1 CC: COFM (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_CC_COFC_Pos \ - (24UL) /*!< HRPWM0_CSG1 CC: COFC (Bit 24) */ -#define HRPWM0_CSG1_CC_COFC_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG1 CC: COFC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_PLC ------------------------------ */ -#define HRPWM0_CSG1_PLC_IPLS_Pos \ - (0UL) /*!< HRPWM0_CSG1 PLC: IPLS (Bit 0) */ -#define HRPWM0_CSG1_PLC_IPLS_Msk \ - (0xfUL) /*!< HRPWM0_CSG1 PLC: IPLS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG1_PLC_PLCL_Pos \ - (8UL) /*!< HRPWM0_CSG1 PLC: PLCL (Bit 8) */ -#define HRPWM0_CSG1_PLC_PLCL_Msk \ - (0x300UL) /*!< HRPWM0_CSG1 PLC: PLCL (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_PLC_PSL_Pos \ - (10UL) /*!< HRPWM0_CSG1 PLC: PSL (Bit 10) */ -#define HRPWM0_CSG1_PLC_PSL_Msk \ - (0x400UL) /*!< HRPWM0_CSG1 PLC: PSL (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_PLC_PLSW_Pos \ - (11UL) /*!< HRPWM0_CSG1 PLC: PLSW (Bit 11) */ -#define HRPWM0_CSG1_PLC_PLSW_Msk \ - (0x800UL) /*!< HRPWM0_CSG1 PLC: PLSW (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_PLC_PLEC_Pos \ - (12UL) /*!< HRPWM0_CSG1 PLC: PLEC (Bit 12) */ -#define HRPWM0_CSG1_PLC_PLEC_Msk \ - (0x3000UL) /*!< HRPWM0_CSG1 PLC: PLEC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_PLC_PLXC_Pos \ - (14UL) /*!< HRPWM0_CSG1 PLC: PLXC (Bit 14) */ -#define HRPWM0_CSG1_PLC_PLXC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG1 PLC: PLXC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_BLV ------------------------------ */ -#define HRPWM0_CSG1_BLV_BLV_Pos \ - (0UL) /*!< HRPWM0_CSG1 BLV: BLV (Bit 0) */ -#define HRPWM0_CSG1_BLV_BLV_Msk \ - (0xffUL) /*!< HRPWM0_CSG1 BLV: BLV (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_CSG1_SRE ------------------------------ */ -#define HRPWM0_CSG1_SRE_VLS1E_Pos \ - (0UL) /*!< HRPWM0_CSG1 SRE: VLS1E (Bit 0) */ -#define HRPWM0_CSG1_SRE_VLS1E_Msk \ - (0x1UL) /*!< HRPWM0_CSG1 SRE: VLS1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_VLS2E_Pos \ - (1UL) /*!< HRPWM0_CSG1 SRE: VLS2E (Bit 1) */ -#define HRPWM0_CSG1_SRE_VLS2E_Msk \ - (0x2UL) /*!< HRPWM0_CSG1 SRE: VLS2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_TRGSE_Pos \ - (2UL) /*!< HRPWM0_CSG1 SRE: TRGSE (Bit 2) */ -#define HRPWM0_CSG1_SRE_TRGSE_Msk \ - (0x4UL) /*!< HRPWM0_CSG1 SRE: TRGSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_STRSE_Pos \ - (3UL) /*!< HRPWM0_CSG1 SRE: STRSE (Bit 3) */ -#define HRPWM0_CSG1_SRE_STRSE_Msk \ - (0x8UL) /*!< HRPWM0_CSG1 SRE: STRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_STPSE_Pos \ - (4UL) /*!< HRPWM0_CSG1 SRE: STPSE (Bit 4) */ -#define HRPWM0_CSG1_SRE_STPSE_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 SRE: STPSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_STDE_Pos \ - (5UL) /*!< HRPWM0_CSG1 SRE: STDE (Bit 5) */ -#define HRPWM0_CSG1_SRE_STDE_Msk \ - (0x20UL) /*!< HRPWM0_CSG1 SRE: STDE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_CRSE_Pos \ - (6UL) /*!< HRPWM0_CSG1 SRE: CRSE (Bit 6) */ -#define HRPWM0_CSG1_SRE_CRSE_Msk \ - (0x40UL) /*!< HRPWM0_CSG1 SRE: CRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_CFSE_Pos \ - (7UL) /*!< HRPWM0_CSG1 SRE: CFSE (Bit 7) */ -#define HRPWM0_CSG1_SRE_CFSE_Msk \ - (0x80UL) /*!< HRPWM0_CSG1 SRE: CFSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SRE_CSEE_Pos \ - (8UL) /*!< HRPWM0_CSG1 SRE: CSEE (Bit 8) */ -#define HRPWM0_CSG1_SRE_CSEE_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 SRE: CSEE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG1_SRS ------------------------------ */ -#define HRPWM0_CSG1_SRS_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG1 SRS: VLS1S (Bit 0) */ -#define HRPWM0_CSG1_SRS_VLS1S_Msk \ - (0x3UL) /*!< HRPWM0_CSG1 SRS: VLS1S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_VLS2S_Pos \ - (2UL) /*!< HRPWM0_CSG1 SRS: VLS2S (Bit 2) */ -#define HRPWM0_CSG1_SRS_VLS2S_Msk \ - (0xcUL) /*!< HRPWM0_CSG1 SRS: VLS2S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_TRLS_Pos \ - (4UL) /*!< HRPWM0_CSG1 SRS: TRLS (Bit 4) */ -#define HRPWM0_CSG1_SRS_TRLS_Msk \ - (0x30UL) /*!< HRPWM0_CSG1 SRS: TRLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_SSLS_Pos \ - (6UL) /*!< HRPWM0_CSG1 SRS: SSLS (Bit 6) */ -#define HRPWM0_CSG1_SRS_SSLS_Msk \ - (0xc0UL) /*!< HRPWM0_CSG1 SRS: SSLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_STLS_Pos \ - (8UL) /*!< HRPWM0_CSG1 SRS: STLS (Bit 8) */ -#define HRPWM0_CSG1_SRS_STLS_Msk \ - (0x300UL) /*!< HRPWM0_CSG1 SRS: STLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_CRFLS_Pos \ - (10UL) /*!< HRPWM0_CSG1 SRS: CRFLS (Bit 10) */ -#define HRPWM0_CSG1_SRS_CRFLS_Msk \ - (0xc00UL) /*!< HRPWM0_CSG1 SRS: CRFLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG1_SRS_CSLS_Pos \ - (12UL) /*!< HRPWM0_CSG1 SRS: CSLS (Bit 12) */ -#define HRPWM0_CSG1_SRS_CSLS_Msk \ - (0x3000UL) /*!< HRPWM0_CSG1 SRS: CSLS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG1_SWS ------------------------------ */ -#define HRPWM0_CSG1_SWS_SVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG1 SWS: SVLS1 (Bit 0) */ -#define HRPWM0_CSG1_SWS_SVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG1 SWS: SVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG1 SWS: SVLS2 (Bit 1) */ -#define HRPWM0_CSG1_SWS_SVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG1 SWS: SVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_STRGS_Pos \ - (2UL) /*!< HRPWM0_CSG1 SWS: STRGS (Bit 2) */ -#define HRPWM0_CSG1_SWS_STRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG1 SWS: STRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG1 SWS: SSTRS (Bit 3) */ -#define HRPWM0_CSG1_SWS_SSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG1 SWS: SSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG1 SWS: SSTPS (Bit 4) */ -#define HRPWM0_CSG1_SWS_SSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 SWS: SSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SSTD_Pos \ - (5UL) /*!< HRPWM0_CSG1 SWS: SSTD (Bit 5) */ -#define HRPWM0_CSG1_SWS_SSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG1 SWS: SSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SCRS_Pos \ - (6UL) /*!< HRPWM0_CSG1 SWS: SCRS (Bit 6) */ -#define HRPWM0_CSG1_SWS_SCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG1 SWS: SCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SCFS_Pos \ - (7UL) /*!< HRPWM0_CSG1 SWS: SCFS (Bit 7) */ -#define HRPWM0_CSG1_SWS_SCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG1 SWS: SCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWS_SCSS_Pos \ - (8UL) /*!< HRPWM0_CSG1 SWS: SCSS (Bit 8) */ -#define HRPWM0_CSG1_SWS_SCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 SWS: SCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG1_SWC ------------------------------ */ -#define HRPWM0_CSG1_SWC_CVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG1 SWC: CVLS1 (Bit 0) */ -#define HRPWM0_CSG1_SWC_CVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG1 SWC: CVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG1 SWC: CVLS2 (Bit 1) */ -#define HRPWM0_CSG1_SWC_CVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG1 SWC: CVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CTRGS_Pos \ - (2UL) /*!< HRPWM0_CSG1 SWC: CTRGS (Bit 2) */ -#define HRPWM0_CSG1_SWC_CTRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG1 SWC: CTRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG1 SWC: CSTRS (Bit 3) */ -#define HRPWM0_CSG1_SWC_CSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG1 SWC: CSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG1 SWC: CSTPS (Bit 4) */ -#define HRPWM0_CSG1_SWC_CSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 SWC: CSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CSTD_Pos \ - (5UL) /*!< HRPWM0_CSG1 SWC: CSTD (Bit 5) */ -#define HRPWM0_CSG1_SWC_CSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG1 SWC: CSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CCRS_Pos \ - (6UL) /*!< HRPWM0_CSG1 SWC: CCRS (Bit 6) */ -#define HRPWM0_CSG1_SWC_CCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG1 SWC: CCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CCFS_Pos \ - (7UL) /*!< HRPWM0_CSG1 SWC: CCFS (Bit 7) */ -#define HRPWM0_CSG1_SWC_CCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG1 SWC: CCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_SWC_CCSS_Pos \ - (8UL) /*!< HRPWM0_CSG1 SWC: CCSS (Bit 8) */ -#define HRPWM0_CSG1_SWC_CCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 SWC: CCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_CSG1_ISTAT ----------------------------- */ -#define HRPWM0_CSG1_ISTAT_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG1 ISTAT: VLS1S (Bit 0) */ -#define HRPWM0_CSG1_ISTAT_VLS1S_Msk \ - (0x1UL) /*!< HRPWM0_CSG1 ISTAT: VLS1S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_VLS2S_Pos \ - (1UL) /*!< HRPWM0_CSG1 ISTAT: VLS2S (Bit 1) */ -#define HRPWM0_CSG1_ISTAT_VLS2S_Msk \ - (0x2UL) /*!< HRPWM0_CSG1 ISTAT: VLS2S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_TRGSS_Pos \ - (2UL) /*!< HRPWM0_CSG1 ISTAT: TRGSS (Bit 2) */ -#define HRPWM0_CSG1_ISTAT_TRGSS_Msk \ - (0x4UL) /*!< HRPWM0_CSG1 ISTAT: TRGSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_STRSS_Pos \ - (3UL) /*!< HRPWM0_CSG1 ISTAT: STRSS (Bit 3) */ -#define HRPWM0_CSG1_ISTAT_STRSS_Msk \ - (0x8UL) /*!< HRPWM0_CSG1 ISTAT: STRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_STPSS_Pos \ - (4UL) /*!< HRPWM0_CSG1 ISTAT: STPSS (Bit 4) */ -#define HRPWM0_CSG1_ISTAT_STPSS_Msk \ - (0x10UL) /*!< HRPWM0_CSG1 ISTAT: STPSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_STDS_Pos \ - (5UL) /*!< HRPWM0_CSG1 ISTAT: STDS (Bit 5) */ -#define HRPWM0_CSG1_ISTAT_STDS_Msk \ - (0x20UL) /*!< HRPWM0_CSG1 ISTAT: STDS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_CRSS_Pos \ - (6UL) /*!< HRPWM0_CSG1 ISTAT: CRSS (Bit 6) */ -#define HRPWM0_CSG1_ISTAT_CRSS_Msk \ - (0x40UL) /*!< HRPWM0_CSG1 ISTAT: CRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_CFSS_Pos \ - (7UL) /*!< HRPWM0_CSG1 ISTAT: CFSS (Bit 7) */ -#define HRPWM0_CSG1_ISTAT_CFSS_Msk \ - (0x80UL) /*!< HRPWM0_CSG1 ISTAT: CFSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG1_ISTAT_CSES_Pos \ - (8UL) /*!< HRPWM0_CSG1 ISTAT: CSES (Bit 8) */ -#define HRPWM0_CSG1_ISTAT_CSES_Msk \ - (0x100UL) /*!< HRPWM0_CSG1 ISTAT: CSES (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_CSG2' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_CSG2_DCI ------------------------------ */ -#define HRPWM0_CSG2_DCI_SVIS_Pos \ - (0UL) /*!< HRPWM0_CSG2 DCI: SVIS (Bit 0) */ -#define HRPWM0_CSG2_DCI_SVIS_Msk \ - (0xfUL) /*!< HRPWM0_CSG2 DCI: SVIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_STRIS_Pos \ - (4UL) /*!< HRPWM0_CSG2 DCI: STRIS (Bit 4) */ -#define HRPWM0_CSG2_DCI_STRIS_Msk \ - (0xf0UL) /*!< HRPWM0_CSG2 DCI: STRIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_STPIS_Pos \ - (8UL) /*!< HRPWM0_CSG2 DCI: STPIS (Bit 8) */ -#define HRPWM0_CSG2_DCI_STPIS_Msk \ - (0xf00UL) /*!< HRPWM0_CSG2 DCI: STPIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_TRGIS_Pos \ - (12UL) /*!< HRPWM0_CSG2 DCI: TRGIS (Bit 12) */ -#define HRPWM0_CSG2_DCI_TRGIS_Msk \ - (0xf000UL) /*!< HRPWM0_CSG2 DCI: TRGIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_STIS_Pos \ - (16UL) /*!< HRPWM0_CSG2 DCI: STIS (Bit 16) */ -#define HRPWM0_CSG2_DCI_STIS_Msk \ - (0xf0000UL) /*!< HRPWM0_CSG2 DCI: STIS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_DCI_SCS_Pos \ - (20UL) /*!< HRPWM0_CSG2 DCI: SCS (Bit 20) */ -#define HRPWM0_CSG2_DCI_SCS_Msk \ - (0x300000UL) /*!< HRPWM0_CSG2 DCI: SCS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_IES ------------------------------ */ -#define HRPWM0_CSG2_IES_SVLS_Pos \ - (0UL) /*!< HRPWM0_CSG2 IES: SVLS (Bit 0) */ -#define HRPWM0_CSG2_IES_SVLS_Msk \ - (0x3UL) /*!< HRPWM0_CSG2 IES: SVLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_IES_STRES_Pos \ - (2UL) /*!< HRPWM0_CSG2 IES: STRES (Bit 2) */ -#define HRPWM0_CSG2_IES_STRES_Msk \ - (0xcUL) /*!< HRPWM0_CSG2 IES: STRES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_IES_STPES_Pos \ - (4UL) /*!< HRPWM0_CSG2 IES: STPES (Bit 4) */ -#define HRPWM0_CSG2_IES_STPES_Msk \ - (0x30UL) /*!< HRPWM0_CSG2 IES: STPES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_IES_TRGES_Pos \ - (6UL) /*!< HRPWM0_CSG2 IES: TRGES (Bit 6) */ -#define HRPWM0_CSG2_IES_TRGES_Msk \ - (0xc0UL) /*!< HRPWM0_CSG2 IES: TRGES (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_IES_STES_Pos \ - (8UL) /*!< HRPWM0_CSG2 IES: STES (Bit 8) */ -#define HRPWM0_CSG2_IES_STES_Msk \ - (0x300UL) /*!< HRPWM0_CSG2 IES: STES (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_SC ------------------------------- */ -#define HRPWM0_CSG2_SC_PSRM_Pos \ - (0UL) /*!< HRPWM0_CSG2 SC: PSRM (Bit 0) */ -#define HRPWM0_CSG2_SC_PSRM_Msk \ - (0x3UL) /*!< HRPWM0_CSG2 SC: PSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_PSTM_Pos \ - (2UL) /*!< HRPWM0_CSG2 SC: PSTM (Bit 2) */ -#define HRPWM0_CSG2_SC_PSTM_Msk \ - (0xcUL) /*!< HRPWM0_CSG2 SC: PSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_FPD_Pos \ - (4UL) /*!< HRPWM0_CSG2 SC: FPD (Bit 4) */ -#define HRPWM0_CSG2_SC_FPD_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 SC: FPD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SC_PSV_Pos \ - (5UL) /*!< HRPWM0_CSG2 SC: PSV (Bit 5) */ -#define HRPWM0_CSG2_SC_PSV_Msk \ - (0x60UL) /*!< HRPWM0_CSG2 SC: PSV (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SCM_Pos \ - (8UL) /*!< HRPWM0_CSG2 SC: SCM (Bit 8) */ -#define HRPWM0_CSG2_SC_SCM_Msk \ - (0x300UL) /*!< HRPWM0_CSG2 SC: SCM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SSRM_Pos \ - (10UL) /*!< HRPWM0_CSG2 SC: SSRM (Bit 10) */ -#define HRPWM0_CSG2_SC_SSRM_Msk \ - (0xc00UL) /*!< HRPWM0_CSG2 SC: SSRM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SSTM_Pos \ - (12UL) /*!< HRPWM0_CSG2 SC: SSTM (Bit 12) */ -#define HRPWM0_CSG2_SC_SSTM_Msk \ - (0x3000UL) /*!< HRPWM0_CSG2 SC: SSTM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SVSC_Pos \ - (14UL) /*!< HRPWM0_CSG2 SC: SVSC (Bit 14) */ -#define HRPWM0_CSG2_SC_SVSC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG2 SC: SVSC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_SWSM_Pos \ - (16UL) /*!< HRPWM0_CSG2 SC: SWSM (Bit 16) */ -#define HRPWM0_CSG2_SC_SWSM_Msk \ - (0x30000UL) /*!< HRPWM0_CSG2 SC: SWSM (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_GCFG_Pos \ - (18UL) /*!< HRPWM0_CSG2 SC: GCFG (Bit 18) */ -#define HRPWM0_CSG2_SC_GCFG_Msk \ - (0xc0000UL) /*!< HRPWM0_CSG2 SC: GCFG (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SC_IST_Pos \ - (20UL) /*!< HRPWM0_CSG2 SC: IST (Bit 20) */ -#define HRPWM0_CSG2_SC_IST_Msk \ - (0x100000UL) /*!< HRPWM0_CSG2 SC: IST (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SC_PSE_Pos \ - (21UL) /*!< HRPWM0_CSG2 SC: PSE (Bit 21) */ -#define HRPWM0_CSG2_SC_PSE_Msk \ - (0x200000UL) /*!< HRPWM0_CSG2 SC: PSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SC_PSWM_Pos \ - (24UL) /*!< HRPWM0_CSG2 SC: PSWM (Bit 24) */ -#define HRPWM0_CSG2_SC_PSWM_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG2 SC: PSWM (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_PC ------------------------------- */ -#define HRPWM0_CSG2_PC_PSWV_Pos \ - (0UL) /*!< HRPWM0_CSG2 PC: PSWV (Bit 0) */ -#define HRPWM0_CSG2_PC_PSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG2 PC: PSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------ HRPWM0_CSG2_DSV1 ------------------------------ */ -#define HRPWM0_CSG2_DSV1_DSV1_Pos \ - (0UL) /*!< HRPWM0_CSG2 DSV1: DSV1 (Bit 0) */ -#define HRPWM0_CSG2_DSV1_DSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG2 DSV1: DSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG2_DSV2 ------------------------------ */ -#define HRPWM0_CSG2_DSV2_DSV2_Pos \ - (0UL) /*!< HRPWM0_CSG2 DSV2: DSV2 (Bit 0) */ -#define HRPWM0_CSG2_DSV2_DSV2_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG2 DSV2: DSV2 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------ HRPWM0_CSG2_SDSV1 ----------------------------- */ -#define HRPWM0_CSG2_SDSV1_SDSV1_Pos \ - (0UL) /*!< HRPWM0_CSG2 SDSV1: SDSV1 (Bit 0) */ -#define HRPWM0_CSG2_SDSV1_SDSV1_Msk \ - (0x3ffUL) /*!< HRPWM0_CSG2 SDSV1: SDSV1 (Bitfield-Mask: 0x3ff) */ - -/* ------------------------------- HRPWM0_CSG2_SPC ------------------------------ */ -#define HRPWM0_CSG2_SPC_SPSWV_Pos \ - (0UL) /*!< HRPWM0_CSG2 SPC: SPSWV (Bit 0) */ -#define HRPWM0_CSG2_SPC_SPSWV_Msk \ - (0x3fUL) /*!< HRPWM0_CSG2 SPC: SPSWV (Bitfield-Mask: 0x3f) */ - -/* ------------------------------- HRPWM0_CSG2_CC ------------------------------- */ -#define HRPWM0_CSG2_CC_IBS_Pos \ - (0UL) /*!< HRPWM0_CSG2 CC: IBS (Bit 0) */ -#define HRPWM0_CSG2_CC_IBS_Msk \ - (0xfUL) /*!< HRPWM0_CSG2 CC: IBS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_CC_IMCS_Pos \ - (8UL) /*!< HRPWM0_CSG2 CC: IMCS (Bit 8) */ -#define HRPWM0_CSG2_CC_IMCS_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 CC: IMCS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_IMCC_Pos \ - (9UL) /*!< HRPWM0_CSG2 CC: IMCC (Bit 9) */ -#define HRPWM0_CSG2_CC_IMCC_Msk \ - (0x600UL) /*!< HRPWM0_CSG2 CC: IMCC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_CC_ESE_Pos \ - (11UL) /*!< HRPWM0_CSG2 CC: ESE (Bit 11) */ -#define HRPWM0_CSG2_CC_ESE_Msk \ - (0x800UL) /*!< HRPWM0_CSG2 CC: ESE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_OIE_Pos \ - (12UL) /*!< HRPWM0_CSG2 CC: OIE (Bit 12) */ -#define HRPWM0_CSG2_CC_OIE_Msk \ - (0x1000UL) /*!< HRPWM0_CSG2 CC: OIE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_OSE_Pos \ - (13UL) /*!< HRPWM0_CSG2 CC: OSE (Bit 13) */ -#define HRPWM0_CSG2_CC_OSE_Msk \ - (0x2000UL) /*!< HRPWM0_CSG2 CC: OSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_BLMC_Pos \ - (14UL) /*!< HRPWM0_CSG2 CC: BLMC (Bit 14) */ -#define HRPWM0_CSG2_CC_BLMC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG2 CC: BLMC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_CC_EBE_Pos \ - (16UL) /*!< HRPWM0_CSG2 CC: EBE (Bit 16) */ -#define HRPWM0_CSG2_CC_EBE_Msk \ - (0x10000UL) /*!< HRPWM0_CSG2 CC: EBE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_COFE_Pos \ - (17UL) /*!< HRPWM0_CSG2 CC: COFE (Bit 17) */ -#define HRPWM0_CSG2_CC_COFE_Msk \ - (0x20000UL) /*!< HRPWM0_CSG2 CC: COFE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_CC_COFM_Pos \ - (18UL) /*!< HRPWM0_CSG2 CC: COFM (Bit 18) */ -#define HRPWM0_CSG2_CC_COFM_Msk \ - (0x3c0000UL) /*!< HRPWM0_CSG2 CC: COFM (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_CC_COFC_Pos \ - (24UL) /*!< HRPWM0_CSG2 CC: COFC (Bit 24) */ -#define HRPWM0_CSG2_CC_COFC_Msk \ - (0x3000000UL) /*!< HRPWM0_CSG2 CC: COFC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_PLC ------------------------------ */ -#define HRPWM0_CSG2_PLC_IPLS_Pos \ - (0UL) /*!< HRPWM0_CSG2 PLC: IPLS (Bit 0) */ -#define HRPWM0_CSG2_PLC_IPLS_Msk \ - (0xfUL) /*!< HRPWM0_CSG2 PLC: IPLS (Bitfield-Mask: 0x0f) */ -#define HRPWM0_CSG2_PLC_PLCL_Pos \ - (8UL) /*!< HRPWM0_CSG2 PLC: PLCL (Bit 8) */ -#define HRPWM0_CSG2_PLC_PLCL_Msk \ - (0x300UL) /*!< HRPWM0_CSG2 PLC: PLCL (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_PLC_PSL_Pos \ - (10UL) /*!< HRPWM0_CSG2 PLC: PSL (Bit 10) */ -#define HRPWM0_CSG2_PLC_PSL_Msk \ - (0x400UL) /*!< HRPWM0_CSG2 PLC: PSL (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_PLC_PLSW_Pos \ - (11UL) /*!< HRPWM0_CSG2 PLC: PLSW (Bit 11) */ -#define HRPWM0_CSG2_PLC_PLSW_Msk \ - (0x800UL) /*!< HRPWM0_CSG2 PLC: PLSW (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_PLC_PLEC_Pos \ - (12UL) /*!< HRPWM0_CSG2 PLC: PLEC (Bit 12) */ -#define HRPWM0_CSG2_PLC_PLEC_Msk \ - (0x3000UL) /*!< HRPWM0_CSG2 PLC: PLEC (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_PLC_PLXC_Pos \ - (14UL) /*!< HRPWM0_CSG2 PLC: PLXC (Bit 14) */ -#define HRPWM0_CSG2_PLC_PLXC_Msk \ - (0xc000UL) /*!< HRPWM0_CSG2 PLC: PLXC (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_BLV ------------------------------ */ -#define HRPWM0_CSG2_BLV_BLV_Pos \ - (0UL) /*!< HRPWM0_CSG2 BLV: BLV (Bit 0) */ -#define HRPWM0_CSG2_BLV_BLV_Msk \ - (0xffUL) /*!< HRPWM0_CSG2 BLV: BLV (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_CSG2_SRE ------------------------------ */ -#define HRPWM0_CSG2_SRE_VLS1E_Pos \ - (0UL) /*!< HRPWM0_CSG2 SRE: VLS1E (Bit 0) */ -#define HRPWM0_CSG2_SRE_VLS1E_Msk \ - (0x1UL) /*!< HRPWM0_CSG2 SRE: VLS1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_VLS2E_Pos \ - (1UL) /*!< HRPWM0_CSG2 SRE: VLS2E (Bit 1) */ -#define HRPWM0_CSG2_SRE_VLS2E_Msk \ - (0x2UL) /*!< HRPWM0_CSG2 SRE: VLS2E (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_TRGSE_Pos \ - (2UL) /*!< HRPWM0_CSG2 SRE: TRGSE (Bit 2) */ -#define HRPWM0_CSG2_SRE_TRGSE_Msk \ - (0x4UL) /*!< HRPWM0_CSG2 SRE: TRGSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_STRSE_Pos \ - (3UL) /*!< HRPWM0_CSG2 SRE: STRSE (Bit 3) */ -#define HRPWM0_CSG2_SRE_STRSE_Msk \ - (0x8UL) /*!< HRPWM0_CSG2 SRE: STRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_STPSE_Pos \ - (4UL) /*!< HRPWM0_CSG2 SRE: STPSE (Bit 4) */ -#define HRPWM0_CSG2_SRE_STPSE_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 SRE: STPSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_STDE_Pos \ - (5UL) /*!< HRPWM0_CSG2 SRE: STDE (Bit 5) */ -#define HRPWM0_CSG2_SRE_STDE_Msk \ - (0x20UL) /*!< HRPWM0_CSG2 SRE: STDE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_CRSE_Pos \ - (6UL) /*!< HRPWM0_CSG2 SRE: CRSE (Bit 6) */ -#define HRPWM0_CSG2_SRE_CRSE_Msk \ - (0x40UL) /*!< HRPWM0_CSG2 SRE: CRSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_CFSE_Pos \ - (7UL) /*!< HRPWM0_CSG2 SRE: CFSE (Bit 7) */ -#define HRPWM0_CSG2_SRE_CFSE_Msk \ - (0x80UL) /*!< HRPWM0_CSG2 SRE: CFSE (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SRE_CSEE_Pos \ - (8UL) /*!< HRPWM0_CSG2 SRE: CSEE (Bit 8) */ -#define HRPWM0_CSG2_SRE_CSEE_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 SRE: CSEE (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG2_SRS ------------------------------ */ -#define HRPWM0_CSG2_SRS_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG2 SRS: VLS1S (Bit 0) */ -#define HRPWM0_CSG2_SRS_VLS1S_Msk \ - (0x3UL) /*!< HRPWM0_CSG2 SRS: VLS1S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_VLS2S_Pos \ - (2UL) /*!< HRPWM0_CSG2 SRS: VLS2S (Bit 2) */ -#define HRPWM0_CSG2_SRS_VLS2S_Msk \ - (0xcUL) /*!< HRPWM0_CSG2 SRS: VLS2S (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_TRLS_Pos \ - (4UL) /*!< HRPWM0_CSG2 SRS: TRLS (Bit 4) */ -#define HRPWM0_CSG2_SRS_TRLS_Msk \ - (0x30UL) /*!< HRPWM0_CSG2 SRS: TRLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_SSLS_Pos \ - (6UL) /*!< HRPWM0_CSG2 SRS: SSLS (Bit 6) */ -#define HRPWM0_CSG2_SRS_SSLS_Msk \ - (0xc0UL) /*!< HRPWM0_CSG2 SRS: SSLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_STLS_Pos \ - (8UL) /*!< HRPWM0_CSG2 SRS: STLS (Bit 8) */ -#define HRPWM0_CSG2_SRS_STLS_Msk \ - (0x300UL) /*!< HRPWM0_CSG2 SRS: STLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_CRFLS_Pos \ - (10UL) /*!< HRPWM0_CSG2 SRS: CRFLS (Bit 10) */ -#define HRPWM0_CSG2_SRS_CRFLS_Msk \ - (0xc00UL) /*!< HRPWM0_CSG2 SRS: CRFLS (Bitfield-Mask: 0x03) */ -#define HRPWM0_CSG2_SRS_CSLS_Pos \ - (12UL) /*!< HRPWM0_CSG2 SRS: CSLS (Bit 12) */ -#define HRPWM0_CSG2_SRS_CSLS_Msk \ - (0x3000UL) /*!< HRPWM0_CSG2 SRS: CSLS (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_CSG2_SWS ------------------------------ */ -#define HRPWM0_CSG2_SWS_SVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG2 SWS: SVLS1 (Bit 0) */ -#define HRPWM0_CSG2_SWS_SVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG2 SWS: SVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG2 SWS: SVLS2 (Bit 1) */ -#define HRPWM0_CSG2_SWS_SVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG2 SWS: SVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_STRGS_Pos \ - (2UL) /*!< HRPWM0_CSG2 SWS: STRGS (Bit 2) */ -#define HRPWM0_CSG2_SWS_STRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG2 SWS: STRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG2 SWS: SSTRS (Bit 3) */ -#define HRPWM0_CSG2_SWS_SSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG2 SWS: SSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG2 SWS: SSTPS (Bit 4) */ -#define HRPWM0_CSG2_SWS_SSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 SWS: SSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SSTD_Pos \ - (5UL) /*!< HRPWM0_CSG2 SWS: SSTD (Bit 5) */ -#define HRPWM0_CSG2_SWS_SSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG2 SWS: SSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SCRS_Pos \ - (6UL) /*!< HRPWM0_CSG2 SWS: SCRS (Bit 6) */ -#define HRPWM0_CSG2_SWS_SCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG2 SWS: SCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SCFS_Pos \ - (7UL) /*!< HRPWM0_CSG2 SWS: SCFS (Bit 7) */ -#define HRPWM0_CSG2_SWS_SCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG2 SWS: SCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWS_SCSS_Pos \ - (8UL) /*!< HRPWM0_CSG2 SWS: SCSS (Bit 8) */ -#define HRPWM0_CSG2_SWS_SCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 SWS: SCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_CSG2_SWC ------------------------------ */ -#define HRPWM0_CSG2_SWC_CVLS1_Pos \ - (0UL) /*!< HRPWM0_CSG2 SWC: CVLS1 (Bit 0) */ -#define HRPWM0_CSG2_SWC_CVLS1_Msk \ - (0x1UL) /*!< HRPWM0_CSG2 SWC: CVLS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CVLS2_Pos \ - (1UL) /*!< HRPWM0_CSG2 SWC: CVLS2 (Bit 1) */ -#define HRPWM0_CSG2_SWC_CVLS2_Msk \ - (0x2UL) /*!< HRPWM0_CSG2 SWC: CVLS2 (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CTRGS_Pos \ - (2UL) /*!< HRPWM0_CSG2 SWC: CTRGS (Bit 2) */ -#define HRPWM0_CSG2_SWC_CTRGS_Msk \ - (0x4UL) /*!< HRPWM0_CSG2 SWC: CTRGS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CSTRS_Pos \ - (3UL) /*!< HRPWM0_CSG2 SWC: CSTRS (Bit 3) */ -#define HRPWM0_CSG2_SWC_CSTRS_Msk \ - (0x8UL) /*!< HRPWM0_CSG2 SWC: CSTRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CSTPS_Pos \ - (4UL) /*!< HRPWM0_CSG2 SWC: CSTPS (Bit 4) */ -#define HRPWM0_CSG2_SWC_CSTPS_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 SWC: CSTPS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CSTD_Pos \ - (5UL) /*!< HRPWM0_CSG2 SWC: CSTD (Bit 5) */ -#define HRPWM0_CSG2_SWC_CSTD_Msk \ - (0x20UL) /*!< HRPWM0_CSG2 SWC: CSTD (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CCRS_Pos \ - (6UL) /*!< HRPWM0_CSG2 SWC: CCRS (Bit 6) */ -#define HRPWM0_CSG2_SWC_CCRS_Msk \ - (0x40UL) /*!< HRPWM0_CSG2 SWC: CCRS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CCFS_Pos \ - (7UL) /*!< HRPWM0_CSG2 SWC: CCFS (Bit 7) */ -#define HRPWM0_CSG2_SWC_CCFS_Msk \ - (0x80UL) /*!< HRPWM0_CSG2 SWC: CCFS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_SWC_CCSS_Pos \ - (8UL) /*!< HRPWM0_CSG2 SWC: CCSS (Bit 8) */ -#define HRPWM0_CSG2_SWC_CCSS_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 SWC: CCSS (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_CSG2_ISTAT ----------------------------- */ -#define HRPWM0_CSG2_ISTAT_VLS1S_Pos \ - (0UL) /*!< HRPWM0_CSG2 ISTAT: VLS1S (Bit 0) */ -#define HRPWM0_CSG2_ISTAT_VLS1S_Msk \ - (0x1UL) /*!< HRPWM0_CSG2 ISTAT: VLS1S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_VLS2S_Pos \ - (1UL) /*!< HRPWM0_CSG2 ISTAT: VLS2S (Bit 1) */ -#define HRPWM0_CSG2_ISTAT_VLS2S_Msk \ - (0x2UL) /*!< HRPWM0_CSG2 ISTAT: VLS2S (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_TRGSS_Pos \ - (2UL) /*!< HRPWM0_CSG2 ISTAT: TRGSS (Bit 2) */ -#define HRPWM0_CSG2_ISTAT_TRGSS_Msk \ - (0x4UL) /*!< HRPWM0_CSG2 ISTAT: TRGSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_STRSS_Pos \ - (3UL) /*!< HRPWM0_CSG2 ISTAT: STRSS (Bit 3) */ -#define HRPWM0_CSG2_ISTAT_STRSS_Msk \ - (0x8UL) /*!< HRPWM0_CSG2 ISTAT: STRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_STPSS_Pos \ - (4UL) /*!< HRPWM0_CSG2 ISTAT: STPSS (Bit 4) */ -#define HRPWM0_CSG2_ISTAT_STPSS_Msk \ - (0x10UL) /*!< HRPWM0_CSG2 ISTAT: STPSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_STDS_Pos \ - (5UL) /*!< HRPWM0_CSG2 ISTAT: STDS (Bit 5) */ -#define HRPWM0_CSG2_ISTAT_STDS_Msk \ - (0x20UL) /*!< HRPWM0_CSG2 ISTAT: STDS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_CRSS_Pos \ - (6UL) /*!< HRPWM0_CSG2 ISTAT: CRSS (Bit 6) */ -#define HRPWM0_CSG2_ISTAT_CRSS_Msk \ - (0x40UL) /*!< HRPWM0_CSG2 ISTAT: CRSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_CFSS_Pos \ - (7UL) /*!< HRPWM0_CSG2 ISTAT: CFSS (Bit 7) */ -#define HRPWM0_CSG2_ISTAT_CFSS_Msk \ - (0x80UL) /*!< HRPWM0_CSG2 ISTAT: CFSS (Bitfield-Mask: 0x01) */ -#define HRPWM0_CSG2_ISTAT_CSES_Pos \ - (8UL) /*!< HRPWM0_CSG2 ISTAT: CSES (Bit 8) */ -#define HRPWM0_CSG2_ISTAT_CSES_Msk \ - (0x100UL) /*!< HRPWM0_CSG2 ISTAT: CSES (Bitfield-Mask: 0x01) */ - -/* ================================================================================ */ -/* ================ Group 'HRPWM0_HRC' Position & Mask ================ */ -/* ================================================================================ */ - -/* -------------------------------- HRPWM0_HRC_GC ------------------------------- */ -#define HRPWM0_HRC_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC GC: DTE (Bit 8) */ -#define HRPWM0_HRC_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC GC: TR0E (Bit 9) */ -#define HRPWM0_HRC_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC GC: TR1E (Bit 10) */ -#define HRPWM0_HRC_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC GC: STC (Bit 11) */ -#define HRPWM0_HRC_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC GC: DSTC (Bit 12) */ -#define HRPWM0_HRC_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC GC: DTUS (Bit 16) */ -#define HRPWM0_HRC_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC GC: DTUS (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_HRC_PL ------------------------------- */ -#define HRPWM0_HRC_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC_GSEL ------------------------------ */ -#define HRPWM0_HRC_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------- HRPWM0_HRC_TSEL ------------------------------ */ -#define HRPWM0_HRC_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* -------------------------------- HRPWM0_HRC_SC ------------------------------- */ -#define HRPWM0_HRC_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC SC: ST (Bit 0) */ -#define HRPWM0_HRC_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC_DCR ------------------------------- */ -#define HRPWM0_HRC_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC_DCF ------------------------------- */ -#define HRPWM0_HRC_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC_CR1 ------------------------------- */ -#define HRPWM0_HRC_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC_CR2 ------------------------------- */ -#define HRPWM0_HRC_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC_SSC ------------------------------- */ -#define HRPWM0_HRC_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC SSC: SST (Bit 0) */ -#define HRPWM0_HRC_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC_SDCR ------------------------------ */ -#define HRPWM0_HRC_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC_SDCF ------------------------------ */ -#define HRPWM0_HRC_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC_SCR1 ------------------------------ */ -#define HRPWM0_HRC_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC_SCR2 ------------------------------ */ -#define HRPWM0_HRC_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_HRC0' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_HRC0_GC ------------------------------- */ -#define HRPWM0_HRC0_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC0 GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC0_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC0 GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC0 GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC0_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC0 GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC0 GC: DTE (Bit 8) */ -#define HRPWM0_HRC0_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC0 GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC0 GC: TR0E (Bit 9) */ -#define HRPWM0_HRC0_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC0 GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC0 GC: TR1E (Bit 10) */ -#define HRPWM0_HRC0_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC0 GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC0 GC: STC (Bit 11) */ -#define HRPWM0_HRC0_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC0 GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC0 GC: DSTC (Bit 12) */ -#define HRPWM0_HRC0_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC0 GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC0 GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC0_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC0 GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC0 GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC0_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC0 GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC0 GC: DTUS (Bit 16) */ -#define HRPWM0_HRC0_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC0 GC: DTUS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC0_PL ------------------------------- */ -#define HRPWM0_HRC0_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC0 PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC0_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC0 PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC0 PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC0_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC0 PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC0_GSEL ------------------------------ */ -#define HRPWM0_HRC0_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC0 GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC0_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC0 GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC0 GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC0_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC0 GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC0 GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC0_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC0 GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC0 GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC0_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC0 GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC0 GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC0_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC0 GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC0 GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC0_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC0 GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC0 GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC0_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC0 GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC0 GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC0_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC0 GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC0 GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC0_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC0 GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC0 GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC0_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC0 GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC0 GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC0_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC0 GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC0_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC0 GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC0_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC0 GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------ HRPWM0_HRC0_TSEL ------------------------------ */ -#define HRPWM0_HRC0_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC0 TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC0_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC0 TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC0 TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC0_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC0 TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC0_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC0 TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC0_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC0 TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC0_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC0 TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC0_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC0 TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC0_SC ------------------------------- */ -#define HRPWM0_HRC0_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC0 SC: ST (Bit 0) */ -#define HRPWM0_HRC0_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC0 SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC0_DCR ------------------------------ */ -#define HRPWM0_HRC0_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC0 DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC0_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC0 DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC0_DCF ------------------------------ */ -#define HRPWM0_HRC0_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC0 DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC0_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC0 DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC0_CR1 ------------------------------ */ -#define HRPWM0_HRC0_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC0 CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC0_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC0 CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC0_CR2 ------------------------------ */ -#define HRPWM0_HRC0_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC0 CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC0_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC0 CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC0_SSC ------------------------------ */ -#define HRPWM0_HRC0_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC0 SSC: SST (Bit 0) */ -#define HRPWM0_HRC0_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC0 SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC0_SDCR ------------------------------ */ -#define HRPWM0_HRC0_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC0 SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC0_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC0 SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC0_SDCF ------------------------------ */ -#define HRPWM0_HRC0_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC0 SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC0_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC0 SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC0_SCR1 ------------------------------ */ -#define HRPWM0_HRC0_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC0 SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC0_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC0 SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------ HRPWM0_HRC0_SCR2 ------------------------------ */ -#define HRPWM0_HRC0_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC0 SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC0_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC0 SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_HRC1' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_HRC1_GC ------------------------------- */ -#define HRPWM0_HRC1_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC1 GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC1_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC1 GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC1 GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC1_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC1 GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC1 GC: DTE (Bit 8) */ -#define HRPWM0_HRC1_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC1 GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC1 GC: TR0E (Bit 9) */ -#define HRPWM0_HRC1_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC1 GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC1 GC: TR1E (Bit 10) */ -#define HRPWM0_HRC1_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC1 GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC1 GC: STC (Bit 11) */ -#define HRPWM0_HRC1_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC1 GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC1 GC: DSTC (Bit 12) */ -#define HRPWM0_HRC1_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC1 GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC1 GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC1_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC1 GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC1 GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC1_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC1 GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC1 GC: DTUS (Bit 16) */ -#define HRPWM0_HRC1_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC1 GC: DTUS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC1_PL ------------------------------- */ -#define HRPWM0_HRC1_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC1 PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC1_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC1 PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC1 PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC1_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC1 PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC1_GSEL ------------------------------ */ -#define HRPWM0_HRC1_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC1 GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC1_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC1 GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC1 GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC1_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC1 GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC1 GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC1_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC1 GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC1 GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC1_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC1 GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC1 GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC1_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC1 GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC1 GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC1_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC1 GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC1 GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC1_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC1 GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC1 GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC1_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC1 GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC1 GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC1_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC1 GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC1 GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC1_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC1 GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC1 GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC1_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC1 GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC1_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC1 GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC1_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC1 GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------ HRPWM0_HRC1_TSEL ------------------------------ */ -#define HRPWM0_HRC1_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC1 TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC1_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC1 TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC1 TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC1_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC1 TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC1_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC1 TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC1_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC1 TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC1_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC1 TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC1_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC1 TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC1_SC ------------------------------- */ -#define HRPWM0_HRC1_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC1 SC: ST (Bit 0) */ -#define HRPWM0_HRC1_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC1 SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC1_DCR ------------------------------ */ -#define HRPWM0_HRC1_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC1 DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC1_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC1 DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC1_DCF ------------------------------ */ -#define HRPWM0_HRC1_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC1 DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC1_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC1 DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC1_CR1 ------------------------------ */ -#define HRPWM0_HRC1_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC1 CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC1_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC1 CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC1_CR2 ------------------------------ */ -#define HRPWM0_HRC1_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC1 CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC1_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC1 CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC1_SSC ------------------------------ */ -#define HRPWM0_HRC1_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC1 SSC: SST (Bit 0) */ -#define HRPWM0_HRC1_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC1 SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC1_SDCR ------------------------------ */ -#define HRPWM0_HRC1_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC1 SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC1_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC1 SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC1_SDCF ------------------------------ */ -#define HRPWM0_HRC1_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC1 SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC1_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC1 SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC1_SCR1 ------------------------------ */ -#define HRPWM0_HRC1_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC1 SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC1_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC1 SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------ HRPWM0_HRC1_SCR2 ------------------------------ */ -#define HRPWM0_HRC1_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC1 SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC1_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC1 SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_HRC2' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_HRC2_GC ------------------------------- */ -#define HRPWM0_HRC2_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC2 GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC2_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC2 GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC2 GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC2_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC2 GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC2 GC: DTE (Bit 8) */ -#define HRPWM0_HRC2_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC2 GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC2 GC: TR0E (Bit 9) */ -#define HRPWM0_HRC2_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC2 GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC2 GC: TR1E (Bit 10) */ -#define HRPWM0_HRC2_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC2 GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC2 GC: STC (Bit 11) */ -#define HRPWM0_HRC2_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC2 GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC2 GC: DSTC (Bit 12) */ -#define HRPWM0_HRC2_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC2 GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC2 GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC2_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC2 GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC2 GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC2_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC2 GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC2 GC: DTUS (Bit 16) */ -#define HRPWM0_HRC2_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC2 GC: DTUS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC2_PL ------------------------------- */ -#define HRPWM0_HRC2_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC2 PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC2_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC2 PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC2 PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC2_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC2 PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC2_GSEL ------------------------------ */ -#define HRPWM0_HRC2_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC2 GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC2_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC2 GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC2 GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC2_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC2 GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC2 GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC2_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC2 GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC2 GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC2_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC2 GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC2 GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC2_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC2 GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC2 GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC2_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC2 GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC2 GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC2_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC2 GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC2 GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC2_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC2 GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC2 GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC2_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC2 GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC2 GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC2_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC2 GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC2 GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC2_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC2 GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC2_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC2 GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC2_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC2 GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------ HRPWM0_HRC2_TSEL ------------------------------ */ -#define HRPWM0_HRC2_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC2 TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC2_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC2 TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC2 TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC2_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC2 TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC2_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC2 TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC2_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC2 TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC2_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC2 TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC2_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC2 TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC2_SC ------------------------------- */ -#define HRPWM0_HRC2_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC2 SC: ST (Bit 0) */ -#define HRPWM0_HRC2_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC2 SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC2_DCR ------------------------------ */ -#define HRPWM0_HRC2_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC2 DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC2_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC2 DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC2_DCF ------------------------------ */ -#define HRPWM0_HRC2_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC2 DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC2_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC2 DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC2_CR1 ------------------------------ */ -#define HRPWM0_HRC2_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC2 CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC2_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC2 CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC2_CR2 ------------------------------ */ -#define HRPWM0_HRC2_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC2 CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC2_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC2 CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC2_SSC ------------------------------ */ -#define HRPWM0_HRC2_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC2 SSC: SST (Bit 0) */ -#define HRPWM0_HRC2_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC2 SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC2_SDCR ------------------------------ */ -#define HRPWM0_HRC2_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC2 SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC2_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC2 SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC2_SDCF ------------------------------ */ -#define HRPWM0_HRC2_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC2 SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC2_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC2 SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC2_SCR1 ------------------------------ */ -#define HRPWM0_HRC2_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC2 SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC2_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC2 SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------ HRPWM0_HRC2_SCR2 ------------------------------ */ -#define HRPWM0_HRC2_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC2 SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC2_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC2 SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ struct 'HRPWM0_HRC3' Position & Mask ================ */ -/* ================================================================================ */ - -/* ------------------------------- HRPWM0_HRC3_GC ------------------------------- */ -#define HRPWM0_HRC3_GC_HRM0_Pos \ - (0UL) /*!< HRPWM0_HRC3 GC: HRM0 (Bit 0) */ -#define HRPWM0_HRC3_GC_HRM0_Msk \ - (0x3UL) /*!< HRPWM0_HRC3 GC: HRM0 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GC_HRM1_Pos \ - (2UL) /*!< HRPWM0_HRC3 GC: HRM1 (Bit 2) */ -#define HRPWM0_HRC3_GC_HRM1_Msk \ - (0xcUL) /*!< HRPWM0_HRC3 GC: HRM1 (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GC_DTE_Pos \ - (8UL) /*!< HRPWM0_HRC3 GC: DTE (Bit 8) */ -#define HRPWM0_HRC3_GC_DTE_Msk \ - (0x100UL) /*!< HRPWM0_HRC3 GC: DTE (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_TR0E_Pos \ - (9UL) /*!< HRPWM0_HRC3 GC: TR0E (Bit 9) */ -#define HRPWM0_HRC3_GC_TR0E_Msk \ - (0x200UL) /*!< HRPWM0_HRC3 GC: TR0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_TR1E_Pos \ - (10UL) /*!< HRPWM0_HRC3 GC: TR1E (Bit 10) */ -#define HRPWM0_HRC3_GC_TR1E_Msk \ - (0x400UL) /*!< HRPWM0_HRC3 GC: TR1E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_STC_Pos \ - (11UL) /*!< HRPWM0_HRC3 GC: STC (Bit 11) */ -#define HRPWM0_HRC3_GC_STC_Msk \ - (0x800UL) /*!< HRPWM0_HRC3 GC: STC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_DSTC_Pos \ - (12UL) /*!< HRPWM0_HRC3 GC: DSTC (Bit 12) */ -#define HRPWM0_HRC3_GC_DSTC_Msk \ - (0x1000UL) /*!< HRPWM0_HRC3 GC: DSTC (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_OCS0_Pos \ - (13UL) /*!< HRPWM0_HRC3 GC: OCS0 (Bit 13) */ -#define HRPWM0_HRC3_GC_OCS0_Msk \ - (0x2000UL) /*!< HRPWM0_HRC3 GC: OCS0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_OCS1_Pos \ - (14UL) /*!< HRPWM0_HRC3 GC: OCS1 (Bit 14) */ -#define HRPWM0_HRC3_GC_OCS1_Msk \ - (0x4000UL) /*!< HRPWM0_HRC3 GC: OCS1 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_GC_DTUS_Pos \ - (16UL) /*!< HRPWM0_HRC3 GC: DTUS (Bit 16) */ -#define HRPWM0_HRC3_GC_DTUS_Msk \ - (0x10000UL) /*!< HRPWM0_HRC3 GC: DTUS (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC3_PL ------------------------------- */ -#define HRPWM0_HRC3_PL_PSL0_Pos \ - (0UL) /*!< HRPWM0_HRC3 PL: PSL0 (Bit 0) */ -#define HRPWM0_HRC3_PL_PSL0_Msk \ - (0x1UL) /*!< HRPWM0_HRC3 PL: PSL0 (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_PL_PSL1_Pos \ - (1UL) /*!< HRPWM0_HRC3 PL: PSL1 (Bit 1) */ -#define HRPWM0_HRC3_PL_PSL1_Msk \ - (0x2UL) /*!< HRPWM0_HRC3 PL: PSL1 (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC3_GSEL ------------------------------ */ -#define HRPWM0_HRC3_GSEL_C0SS_Pos \ - (0UL) /*!< HRPWM0_HRC3 GSEL: C0SS (Bit 0) */ -#define HRPWM0_HRC3_GSEL_C0SS_Msk \ - (0x7UL) /*!< HRPWM0_HRC3 GSEL: C0SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_GSEL_C0CS_Pos \ - (3UL) /*!< HRPWM0_HRC3 GSEL: C0CS (Bit 3) */ -#define HRPWM0_HRC3_GSEL_C0CS_Msk \ - (0x38UL) /*!< HRPWM0_HRC3 GSEL: C0CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_GSEL_S0M_Pos \ - (6UL) /*!< HRPWM0_HRC3 GSEL: S0M (Bit 6) */ -#define HRPWM0_HRC3_GSEL_S0M_Msk \ - (0xc0UL) /*!< HRPWM0_HRC3 GSEL: S0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C0M_Pos \ - (8UL) /*!< HRPWM0_HRC3 GSEL: C0M (Bit 8) */ -#define HRPWM0_HRC3_GSEL_C0M_Msk \ - (0x300UL) /*!< HRPWM0_HRC3 GSEL: C0M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_S0ES_Pos \ - (10UL) /*!< HRPWM0_HRC3 GSEL: S0ES (Bit 10) */ -#define HRPWM0_HRC3_GSEL_S0ES_Msk \ - (0xc00UL) /*!< HRPWM0_HRC3 GSEL: S0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C0ES_Pos \ - (12UL) /*!< HRPWM0_HRC3 GSEL: C0ES (Bit 12) */ -#define HRPWM0_HRC3_GSEL_C0ES_Msk \ - (0x3000UL) /*!< HRPWM0_HRC3 GSEL: C0ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C1SS_Pos \ - (16UL) /*!< HRPWM0_HRC3 GSEL: C1SS (Bit 16) */ -#define HRPWM0_HRC3_GSEL_C1SS_Msk \ - (0x70000UL) /*!< HRPWM0_HRC3 GSEL: C1SS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_GSEL_C1CS_Pos \ - (19UL) /*!< HRPWM0_HRC3 GSEL: C1CS (Bit 19) */ -#define HRPWM0_HRC3_GSEL_C1CS_Msk \ - (0x380000UL) /*!< HRPWM0_HRC3 GSEL: C1CS (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_GSEL_S1M_Pos \ - (22UL) /*!< HRPWM0_HRC3 GSEL: S1M (Bit 22) */ -#define HRPWM0_HRC3_GSEL_S1M_Msk \ - (0xc00000UL) /*!< HRPWM0_HRC3 GSEL: S1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C1M_Pos \ - (24UL) /*!< HRPWM0_HRC3 GSEL: C1M (Bit 24) */ -#define HRPWM0_HRC3_GSEL_C1M_Msk \ - (0x3000000UL) /*!< HRPWM0_HRC3 GSEL: C1M (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_S1ES_Pos \ - (26UL) /*!< HRPWM0_HRC3 GSEL: S1ES (Bit 26) */ -#define HRPWM0_HRC3_GSEL_S1ES_Msk \ - (0xc000000UL) /*!< HRPWM0_HRC3 GSEL: S1ES (Bitfield-Mask: 0x03) */ -#define HRPWM0_HRC3_GSEL_C1ES_Pos \ - (28UL) /*!< HRPWM0_HRC3 GSEL: C1ES (Bit 28) */ -#define HRPWM0_HRC3_GSEL_C1ES_Msk \ - (0x30000000UL) /*!< HRPWM0_HRC3 GSEL: C1ES (Bitfield-Mask: 0x03) */ - -/* ------------------------------ HRPWM0_HRC3_TSEL ------------------------------ */ -#define HRPWM0_HRC3_TSEL_TSEL0_Pos \ - (0UL) /*!< HRPWM0_HRC3 TSEL: TSEL0 (Bit 0) */ -#define HRPWM0_HRC3_TSEL_TSEL0_Msk \ - (0x7UL) /*!< HRPWM0_HRC3 TSEL: TSEL0 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_TSEL_TSEL1_Pos \ - (3UL) /*!< HRPWM0_HRC3 TSEL: TSEL1 (Bit 3) */ -#define HRPWM0_HRC3_TSEL_TSEL1_Msk \ - (0x38UL) /*!< HRPWM0_HRC3 TSEL: TSEL1 (Bitfield-Mask: 0x07) */ -#define HRPWM0_HRC3_TSEL_TS0E_Pos \ - (16UL) /*!< HRPWM0_HRC3 TSEL: TS0E (Bit 16) */ -#define HRPWM0_HRC3_TSEL_TS0E_Msk \ - (0x10000UL) /*!< HRPWM0_HRC3 TSEL: TS0E (Bitfield-Mask: 0x01) */ -#define HRPWM0_HRC3_TSEL_TS1E_Pos \ - (17UL) /*!< HRPWM0_HRC3 TSEL: TS1E (Bit 17) */ -#define HRPWM0_HRC3_TSEL_TS1E_Msk \ - (0x20000UL) /*!< HRPWM0_HRC3 TSEL: TS1E (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC3_SC ------------------------------- */ -#define HRPWM0_HRC3_SC_ST_Pos \ - (0UL) /*!< HRPWM0_HRC3 SC: ST (Bit 0) */ -#define HRPWM0_HRC3_SC_ST_Msk \ - (0x1UL) /*!< HRPWM0_HRC3 SC: ST (Bitfield-Mask: 0x01) */ - -/* ------------------------------- HRPWM0_HRC3_DCR ------------------------------ */ -#define HRPWM0_HRC3_DCR_DTRV_Pos \ - (0UL) /*!< HRPWM0_HRC3 DCR: DTRV (Bit 0) */ -#define HRPWM0_HRC3_DCR_DTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC3 DCR: DTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC3_DCF ------------------------------ */ -#define HRPWM0_HRC3_DCF_DTFV_Pos \ - (0UL) /*!< HRPWM0_HRC3 DCF: DTFV (Bit 0) */ -#define HRPWM0_HRC3_DCF_DTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC3 DCF: DTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------- HRPWM0_HRC3_CR1 ------------------------------ */ -#define HRPWM0_HRC3_CR1_CR1_Pos \ - (0UL) /*!< HRPWM0_HRC3 CR1: CR1 (Bit 0) */ -#define HRPWM0_HRC3_CR1_CR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC3 CR1: CR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC3_CR2 ------------------------------ */ -#define HRPWM0_HRC3_CR2_CR2_Pos \ - (0UL) /*!< HRPWM0_HRC3 CR2: CR2 (Bit 0) */ -#define HRPWM0_HRC3_CR2_CR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC3 CR2: CR2 (Bitfield-Mask: 0xff) */ - -/* ------------------------------- HRPWM0_HRC3_SSC ------------------------------ */ -#define HRPWM0_HRC3_SSC_SST_Pos \ - (0UL) /*!< HRPWM0_HRC3 SSC: SST (Bit 0) */ -#define HRPWM0_HRC3_SSC_SST_Msk \ - (0x1UL) /*!< HRPWM0_HRC3 SSC: SST (Bitfield-Mask: 0x01) */ - -/* ------------------------------ HRPWM0_HRC3_SDCR ------------------------------ */ -#define HRPWM0_HRC3_SDCR_SDTRV_Pos \ - (0UL) /*!< HRPWM0_HRC3 SDCR: SDTRV (Bit 0) */ -#define HRPWM0_HRC3_SDCR_SDTRV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC3 SDCR: SDTRV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC3_SDCF ------------------------------ */ -#define HRPWM0_HRC3_SDCF_SDTFV_Pos \ - (0UL) /*!< HRPWM0_HRC3 SDCF: SDTFV (Bit 0) */ -#define HRPWM0_HRC3_SDCF_SDTFV_Msk \ - (0xffffUL) /*!< HRPWM0_HRC3 SDCF: SDTFV (Bitfield-Mask: 0xffff) */ - -/* ------------------------------ HRPWM0_HRC3_SCR1 ------------------------------ */ -#define HRPWM0_HRC3_SCR1_SCR1_Pos \ - (0UL) /*!< HRPWM0_HRC3 SCR1: SCR1 (Bit 0) */ -#define HRPWM0_HRC3_SCR1_SCR1_Msk \ - (0xffUL) /*!< HRPWM0_HRC3 SCR1: SCR1 (Bitfield-Mask: 0xff) */ - -/* ------------------------------ HRPWM0_HRC3_SCR2 ------------------------------ */ -#define HRPWM0_HRC3_SCR2_SCR2_Pos \ - (0UL) /*!< HRPWM0_HRC3 SCR2: SCR2 (Bit 0) */ -#define HRPWM0_HRC3_SCR2_SCR2_Msk \ - (0xffUL) /*!< HRPWM0_HRC3 SCR2: SCR2 (Bitfield-Mask: 0xff) */ - -/* ================================================================================ */ -/* ================ Group 'POSIF' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- POSIF_PCONF -------------------------------- */ -#define POSIF_PCONF_FSEL_Pos \ - (0UL) /*!< POSIF PCONF: FSEL (Bit 0) */ -#define POSIF_PCONF_FSEL_Msk \ - (0x3UL) /*!< POSIF PCONF: FSEL (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_QDCM_Pos \ - (2UL) /*!< POSIF PCONF: QDCM (Bit 2) */ -#define POSIF_PCONF_QDCM_Msk \ - (0x4UL) /*!< POSIF PCONF: QDCM (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_HIDG_Pos \ - (4UL) /*!< POSIF PCONF: HIDG (Bit 4) */ -#define POSIF_PCONF_HIDG_Msk \ - (0x10UL) /*!< POSIF PCONF: HIDG (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_MCUE_Pos \ - (5UL) /*!< POSIF PCONF: MCUE (Bit 5) */ -#define POSIF_PCONF_MCUE_Msk \ - (0x20UL) /*!< POSIF PCONF: MCUE (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_INSEL0_Pos \ - (8UL) /*!< POSIF PCONF: INSEL0 (Bit 8) */ -#define POSIF_PCONF_INSEL0_Msk \ - (0x300UL) /*!< POSIF PCONF: INSEL0 (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_INSEL1_Pos \ - (10UL) /*!< POSIF PCONF: INSEL1 (Bit 10) */ -#define POSIF_PCONF_INSEL1_Msk \ - (0xc00UL) /*!< POSIF PCONF: INSEL1 (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_INSEL2_Pos \ - (12UL) /*!< POSIF PCONF: INSEL2 (Bit 12) */ -#define POSIF_PCONF_INSEL2_Msk \ - (0x3000UL) /*!< POSIF PCONF: INSEL2 (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_DSEL_Pos \ - (16UL) /*!< POSIF PCONF: DSEL (Bit 16) */ -#define POSIF_PCONF_DSEL_Msk \ - (0x10000UL) /*!< POSIF PCONF: DSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_SPES_Pos \ - (17UL) /*!< POSIF PCONF: SPES (Bit 17) */ -#define POSIF_PCONF_SPES_Msk \ - (0x20000UL) /*!< POSIF PCONF: SPES (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_MSETS_Pos \ - (18UL) /*!< POSIF PCONF: MSETS (Bit 18) */ -#define POSIF_PCONF_MSETS_Msk \ - (0x1c0000UL) /*!< POSIF PCONF: MSETS (Bitfield-Mask: 0x07) */ -#define POSIF_PCONF_MSES_Pos \ - (21UL) /*!< POSIF PCONF: MSES (Bit 21) */ -#define POSIF_PCONF_MSES_Msk \ - (0x200000UL) /*!< POSIF PCONF: MSES (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_MSYNS_Pos \ - (22UL) /*!< POSIF PCONF: MSYNS (Bit 22) */ -#define POSIF_PCONF_MSYNS_Msk \ - (0xc00000UL) /*!< POSIF PCONF: MSYNS (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_EWIS_Pos \ - (24UL) /*!< POSIF PCONF: EWIS (Bit 24) */ -#define POSIF_PCONF_EWIS_Msk \ - (0x3000000UL) /*!< POSIF PCONF: EWIS (Bitfield-Mask: 0x03) */ -#define POSIF_PCONF_EWIE_Pos \ - (26UL) /*!< POSIF PCONF: EWIE (Bit 26) */ -#define POSIF_PCONF_EWIE_Msk \ - (0x4000000UL) /*!< POSIF PCONF: EWIE (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_EWIL_Pos \ - (27UL) /*!< POSIF PCONF: EWIL (Bit 27) */ -#define POSIF_PCONF_EWIL_Msk \ - (0x8000000UL) /*!< POSIF PCONF: EWIL (Bitfield-Mask: 0x01) */ -#define POSIF_PCONF_LPC_Pos \ - (28UL) /*!< POSIF PCONF: LPC (Bit 28) */ -#define POSIF_PCONF_LPC_Msk \ - (0x70000000UL) /*!< POSIF PCONF: LPC (Bitfield-Mask: 0x07) */ - -/* --------------------------------- POSIF_PSUS --------------------------------- */ -#define POSIF_PSUS_QSUS_Pos \ - (0UL) /*!< POSIF PSUS: QSUS (Bit 0) */ -#define POSIF_PSUS_QSUS_Msk \ - (0x3UL) /*!< POSIF PSUS: QSUS (Bitfield-Mask: 0x03) */ -#define POSIF_PSUS_MSUS_Pos \ - (2UL) /*!< POSIF PSUS: MSUS (Bit 2) */ -#define POSIF_PSUS_MSUS_Msk \ - (0xcUL) /*!< POSIF PSUS: MSUS (Bitfield-Mask: 0x03) */ - -/* --------------------------------- POSIF_PRUNS -------------------------------- */ -#define POSIF_PRUNS_SRB_Pos \ - (0UL) /*!< POSIF PRUNS: SRB (Bit 0) */ -#define POSIF_PRUNS_SRB_Msk \ - (0x1UL) /*!< POSIF PRUNS: SRB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PRUNC -------------------------------- */ -#define POSIF_PRUNC_CRB_Pos \ - (0UL) /*!< POSIF PRUNC: CRB (Bit 0) */ -#define POSIF_PRUNC_CRB_Msk \ - (0x1UL) /*!< POSIF PRUNC: CRB (Bitfield-Mask: 0x01) */ -#define POSIF_PRUNC_CSM_Pos \ - (1UL) /*!< POSIF PRUNC: CSM (Bit 1) */ -#define POSIF_PRUNC_CSM_Msk \ - (0x2UL) /*!< POSIF PRUNC: CSM (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PRUN --------------------------------- */ -#define POSIF_PRUN_RB_Pos (0UL) /*!< POSIF PRUN: RB (Bit 0) */ -#define POSIF_PRUN_RB_Msk \ - (0x1UL) /*!< POSIF PRUN: RB (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_MIDR --------------------------------- */ -#define POSIF_MIDR_MODR_Pos \ - (0UL) /*!< POSIF MIDR: MODR (Bit 0) */ -#define POSIF_MIDR_MODR_Msk \ - (0xffUL) /*!< POSIF MIDR: MODR (Bitfield-Mask: 0xff) */ -#define POSIF_MIDR_MODT_Pos \ - (8UL) /*!< POSIF MIDR: MODT (Bit 8) */ -#define POSIF_MIDR_MODT_Msk \ - (0xff00UL) /*!< POSIF MIDR: MODT (Bitfield-Mask: 0xff) */ -#define POSIF_MIDR_MODN_Pos \ - (16UL) /*!< POSIF MIDR: MODN (Bit 16) */ -#define POSIF_MIDR_MODN_Msk \ - (0xffff0000UL) /*!< POSIF MIDR: MODN (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- POSIF_HALP --------------------------------- */ -#define POSIF_HALP_HCP_Pos (0UL) /*!< POSIF HALP: HCP (Bit 0) */ -#define POSIF_HALP_HCP_Msk \ - (0x7UL) /*!< POSIF HALP: HCP (Bitfield-Mask: 0x07) */ -#define POSIF_HALP_HEP_Pos (3UL) /*!< POSIF HALP: HEP (Bit 3) */ -#define POSIF_HALP_HEP_Msk \ - (0x38UL) /*!< POSIF HALP: HEP (Bitfield-Mask: 0x07) */ - -/* --------------------------------- POSIF_HALPS -------------------------------- */ -#define POSIF_HALPS_HCPS_Pos \ - (0UL) /*!< POSIF HALPS: HCPS (Bit 0) */ -#define POSIF_HALPS_HCPS_Msk \ - (0x7UL) /*!< POSIF HALPS: HCPS (Bitfield-Mask: 0x07) */ -#define POSIF_HALPS_HEPS_Pos \ - (3UL) /*!< POSIF HALPS: HEPS (Bit 3) */ -#define POSIF_HALPS_HEPS_Msk \ - (0x38UL) /*!< POSIF HALPS: HEPS (Bitfield-Mask: 0x07) */ - -/* ---------------------------------- POSIF_MCM --------------------------------- */ -#define POSIF_MCM_MCMP_Pos (0UL) /*!< POSIF MCM: MCMP (Bit 0) */ -#define POSIF_MCM_MCMP_Msk \ - (0xffffUL) /*!< POSIF MCM: MCMP (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- POSIF_MCSM --------------------------------- */ -#define POSIF_MCSM_MCMPS_Pos \ - (0UL) /*!< POSIF MCSM: MCMPS (Bit 0) */ -#define POSIF_MCSM_MCMPS_Msk \ - (0xffffUL) /*!< POSIF MCSM: MCMPS (Bitfield-Mask: 0xffff) */ - -/* --------------------------------- POSIF_MCMS --------------------------------- */ -#define POSIF_MCMS_MNPS_Pos \ - (0UL) /*!< POSIF MCMS: MNPS (Bit 0) */ -#define POSIF_MCMS_MNPS_Msk \ - (0x1UL) /*!< POSIF MCMS: MNPS (Bitfield-Mask: 0x01) */ -#define POSIF_MCMS_STHR_Pos \ - (1UL) /*!< POSIF MCMS: STHR (Bit 1) */ -#define POSIF_MCMS_STHR_Msk \ - (0x2UL) /*!< POSIF MCMS: STHR (Bitfield-Mask: 0x01) */ -#define POSIF_MCMS_STMR_Pos \ - (2UL) /*!< POSIF MCMS: STMR (Bit 2) */ -#define POSIF_MCMS_STMR_Msk \ - (0x4UL) /*!< POSIF MCMS: STMR (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_MCMC --------------------------------- */ -#define POSIF_MCMC_MNPC_Pos \ - (0UL) /*!< POSIF MCMC: MNPC (Bit 0) */ -#define POSIF_MCMC_MNPC_Msk \ - (0x1UL) /*!< POSIF MCMC: MNPC (Bitfield-Mask: 0x01) */ -#define POSIF_MCMC_MPC_Pos (1UL) /*!< POSIF MCMC: MPC (Bit 1) */ -#define POSIF_MCMC_MPC_Msk \ - (0x2UL) /*!< POSIF MCMC: MPC (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_MCMF --------------------------------- */ -#define POSIF_MCMF_MSS_Pos (0UL) /*!< POSIF MCMF: MSS (Bit 0) */ -#define POSIF_MCMF_MSS_Msk \ - (0x1UL) /*!< POSIF MCMF: MSS (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- POSIF_QDC --------------------------------- */ -#define POSIF_QDC_PALS_Pos (0UL) /*!< POSIF QDC: PALS (Bit 0) */ -#define POSIF_QDC_PALS_Msk \ - (0x1UL) /*!< POSIF QDC: PALS (Bitfield-Mask: 0x01) */ -#define POSIF_QDC_PBLS_Pos (1UL) /*!< POSIF QDC: PBLS (Bit 1) */ -#define POSIF_QDC_PBLS_Msk \ - (0x2UL) /*!< POSIF QDC: PBLS (Bitfield-Mask: 0x01) */ -#define POSIF_QDC_PHS_Pos (2UL) /*!< POSIF QDC: PHS (Bit 2) */ -#define POSIF_QDC_PHS_Msk \ - (0x4UL) /*!< POSIF QDC: PHS (Bitfield-Mask: 0x01) */ -#define POSIF_QDC_ICM_Pos (4UL) /*!< POSIF QDC: ICM (Bit 4) */ -#define POSIF_QDC_ICM_Msk \ - (0x30UL) /*!< POSIF QDC: ICM (Bitfield-Mask: 0x03) */ -#define POSIF_QDC_DVAL_Pos (8UL) /*!< POSIF QDC: DVAL (Bit 8) */ -#define POSIF_QDC_DVAL_Msk \ - (0x100UL) /*!< POSIF QDC: DVAL (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PFLG --------------------------------- */ -#define POSIF_PFLG_CHES_Pos \ - (0UL) /*!< POSIF PFLG: CHES (Bit 0) */ -#define POSIF_PFLG_CHES_Msk \ - (0x1UL) /*!< POSIF PFLG: CHES (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_WHES_Pos \ - (1UL) /*!< POSIF PFLG: WHES (Bit 1) */ -#define POSIF_PFLG_WHES_Msk \ - (0x2UL) /*!< POSIF PFLG: WHES (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_HIES_Pos \ - (2UL) /*!< POSIF PFLG: HIES (Bit 2) */ -#define POSIF_PFLG_HIES_Msk \ - (0x4UL) /*!< POSIF PFLG: HIES (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_MSTS_Pos \ - (4UL) /*!< POSIF PFLG: MSTS (Bit 4) */ -#define POSIF_PFLG_MSTS_Msk \ - (0x10UL) /*!< POSIF PFLG: MSTS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_INDXS_Pos \ - (8UL) /*!< POSIF PFLG: INDXS (Bit 8) */ -#define POSIF_PFLG_INDXS_Msk \ - (0x100UL) /*!< POSIF PFLG: INDXS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_ERRS_Pos \ - (9UL) /*!< POSIF PFLG: ERRS (Bit 9) */ -#define POSIF_PFLG_ERRS_Msk \ - (0x200UL) /*!< POSIF PFLG: ERRS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_CNTS_Pos \ - (10UL) /*!< POSIF PFLG: CNTS (Bit 10) */ -#define POSIF_PFLG_CNTS_Msk \ - (0x400UL) /*!< POSIF PFLG: CNTS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_DIRS_Pos \ - (11UL) /*!< POSIF PFLG: DIRS (Bit 11) */ -#define POSIF_PFLG_DIRS_Msk \ - (0x800UL) /*!< POSIF PFLG: DIRS (Bitfield-Mask: 0x01) */ -#define POSIF_PFLG_PCLKS_Pos \ - (12UL) /*!< POSIF PFLG: PCLKS (Bit 12) */ -#define POSIF_PFLG_PCLKS_Msk \ - (0x1000UL) /*!< POSIF PFLG: PCLKS (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PFLGE -------------------------------- */ -#define POSIF_PFLGE_ECHE_Pos \ - (0UL) /*!< POSIF PFLGE: ECHE (Bit 0) */ -#define POSIF_PFLGE_ECHE_Msk \ - (0x1UL) /*!< POSIF PFLGE: ECHE (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EWHE_Pos \ - (1UL) /*!< POSIF PFLGE: EWHE (Bit 1) */ -#define POSIF_PFLGE_EWHE_Msk \ - (0x2UL) /*!< POSIF PFLGE: EWHE (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EHIE_Pos \ - (2UL) /*!< POSIF PFLGE: EHIE (Bit 2) */ -#define POSIF_PFLGE_EHIE_Msk \ - (0x4UL) /*!< POSIF PFLGE: EHIE (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EMST_Pos \ - (4UL) /*!< POSIF PFLGE: EMST (Bit 4) */ -#define POSIF_PFLGE_EMST_Msk \ - (0x10UL) /*!< POSIF PFLGE: EMST (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EINDX_Pos \ - (8UL) /*!< POSIF PFLGE: EINDX (Bit 8) */ -#define POSIF_PFLGE_EINDX_Msk \ - (0x100UL) /*!< POSIF PFLGE: EINDX (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EERR_Pos \ - (9UL) /*!< POSIF PFLGE: EERR (Bit 9) */ -#define POSIF_PFLGE_EERR_Msk \ - (0x200UL) /*!< POSIF PFLGE: EERR (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_ECNT_Pos \ - (10UL) /*!< POSIF PFLGE: ECNT (Bit 10) */ -#define POSIF_PFLGE_ECNT_Msk \ - (0x400UL) /*!< POSIF PFLGE: ECNT (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EDIR_Pos \ - (11UL) /*!< POSIF PFLGE: EDIR (Bit 11) */ -#define POSIF_PFLGE_EDIR_Msk \ - (0x800UL) /*!< POSIF PFLGE: EDIR (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_EPCLK_Pos \ - (12UL) /*!< POSIF PFLGE: EPCLK (Bit 12) */ -#define POSIF_PFLGE_EPCLK_Msk \ - (0x1000UL) /*!< POSIF PFLGE: EPCLK (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_CHESEL_Pos \ - (16UL) /*!< POSIF PFLGE: CHESEL (Bit 16) */ -#define POSIF_PFLGE_CHESEL_Msk \ - (0x10000UL) /*!< POSIF PFLGE: CHESEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_WHESEL_Pos \ - (17UL) /*!< POSIF PFLGE: WHESEL (Bit 17) */ -#define POSIF_PFLGE_WHESEL_Msk \ - (0x20000UL) /*!< POSIF PFLGE: WHESEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_HIESEL_Pos \ - (18UL) /*!< POSIF PFLGE: HIESEL (Bit 18) */ -#define POSIF_PFLGE_HIESEL_Msk \ - (0x40000UL) /*!< POSIF PFLGE: HIESEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_MSTSEL_Pos \ - (20UL) /*!< POSIF PFLGE: MSTSEL (Bit 20) */ -#define POSIF_PFLGE_MSTSEL_Msk \ - (0x100000UL) /*!< POSIF PFLGE: MSTSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_INDSEL_Pos \ - (24UL) /*!< POSIF PFLGE: INDSEL (Bit 24) */ -#define POSIF_PFLGE_INDSEL_Msk \ - (0x1000000UL) /*!< POSIF PFLGE: INDSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_ERRSEL_Pos \ - (25UL) /*!< POSIF PFLGE: ERRSEL (Bit 25) */ -#define POSIF_PFLGE_ERRSEL_Msk \ - (0x2000000UL) /*!< POSIF PFLGE: ERRSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_CNTSEL_Pos \ - (26UL) /*!< POSIF PFLGE: CNTSEL (Bit 26) */ -#define POSIF_PFLGE_CNTSEL_Msk \ - (0x4000000UL) /*!< POSIF PFLGE: CNTSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_DIRSEL_Pos \ - (27UL) /*!< POSIF PFLGE: DIRSEL (Bit 27) */ -#define POSIF_PFLGE_DIRSEL_Msk \ - (0x8000000UL) /*!< POSIF PFLGE: DIRSEL (Bitfield-Mask: 0x01) */ -#define POSIF_PFLGE_PCLSEL_Pos \ - (28UL) /*!< POSIF PFLGE: PCLSEL (Bit 28) */ -#define POSIF_PFLGE_PCLSEL_Msk \ - (0x10000000UL) /*!< POSIF PFLGE: PCLSEL (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_SPFLG -------------------------------- */ -#define POSIF_SPFLG_SCHE_Pos \ - (0UL) /*!< POSIF SPFLG: SCHE (Bit 0) */ -#define POSIF_SPFLG_SCHE_Msk \ - (0x1UL) /*!< POSIF SPFLG: SCHE (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SWHE_Pos \ - (1UL) /*!< POSIF SPFLG: SWHE (Bit 1) */ -#define POSIF_SPFLG_SWHE_Msk \ - (0x2UL) /*!< POSIF SPFLG: SWHE (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SHIE_Pos \ - (2UL) /*!< POSIF SPFLG: SHIE (Bit 2) */ -#define POSIF_SPFLG_SHIE_Msk \ - (0x4UL) /*!< POSIF SPFLG: SHIE (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SMST_Pos \ - (4UL) /*!< POSIF SPFLG: SMST (Bit 4) */ -#define POSIF_SPFLG_SMST_Msk \ - (0x10UL) /*!< POSIF SPFLG: SMST (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SINDX_Pos \ - (8UL) /*!< POSIF SPFLG: SINDX (Bit 8) */ -#define POSIF_SPFLG_SINDX_Msk \ - (0x100UL) /*!< POSIF SPFLG: SINDX (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SERR_Pos \ - (9UL) /*!< POSIF SPFLG: SERR (Bit 9) */ -#define POSIF_SPFLG_SERR_Msk \ - (0x200UL) /*!< POSIF SPFLG: SERR (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SCNT_Pos \ - (10UL) /*!< POSIF SPFLG: SCNT (Bit 10) */ -#define POSIF_SPFLG_SCNT_Msk \ - (0x400UL) /*!< POSIF SPFLG: SCNT (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SDIR_Pos \ - (11UL) /*!< POSIF SPFLG: SDIR (Bit 11) */ -#define POSIF_SPFLG_SDIR_Msk \ - (0x800UL) /*!< POSIF SPFLG: SDIR (Bitfield-Mask: 0x01) */ -#define POSIF_SPFLG_SPCLK_Pos \ - (12UL) /*!< POSIF SPFLG: SPCLK (Bit 12) */ -#define POSIF_SPFLG_SPCLK_Msk \ - (0x1000UL) /*!< POSIF SPFLG: SPCLK (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_RPFLG -------------------------------- */ -#define POSIF_RPFLG_RCHE_Pos \ - (0UL) /*!< POSIF RPFLG: RCHE (Bit 0) */ -#define POSIF_RPFLG_RCHE_Msk \ - (0x1UL) /*!< POSIF RPFLG: RCHE (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RWHE_Pos \ - (1UL) /*!< POSIF RPFLG: RWHE (Bit 1) */ -#define POSIF_RPFLG_RWHE_Msk \ - (0x2UL) /*!< POSIF RPFLG: RWHE (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RHIE_Pos \ - (2UL) /*!< POSIF RPFLG: RHIE (Bit 2) */ -#define POSIF_RPFLG_RHIE_Msk \ - (0x4UL) /*!< POSIF RPFLG: RHIE (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RMST_Pos \ - (4UL) /*!< POSIF RPFLG: RMST (Bit 4) */ -#define POSIF_RPFLG_RMST_Msk \ - (0x10UL) /*!< POSIF RPFLG: RMST (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RINDX_Pos \ - (8UL) /*!< POSIF RPFLG: RINDX (Bit 8) */ -#define POSIF_RPFLG_RINDX_Msk \ - (0x100UL) /*!< POSIF RPFLG: RINDX (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RERR_Pos \ - (9UL) /*!< POSIF RPFLG: RERR (Bit 9) */ -#define POSIF_RPFLG_RERR_Msk \ - (0x200UL) /*!< POSIF RPFLG: RERR (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RCNT_Pos \ - (10UL) /*!< POSIF RPFLG: RCNT (Bit 10) */ -#define POSIF_RPFLG_RCNT_Msk \ - (0x400UL) /*!< POSIF RPFLG: RCNT (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RDIR_Pos \ - (11UL) /*!< POSIF RPFLG: RDIR (Bit 11) */ -#define POSIF_RPFLG_RDIR_Msk \ - (0x800UL) /*!< POSIF RPFLG: RDIR (Bitfield-Mask: 0x01) */ -#define POSIF_RPFLG_RPCLK_Pos \ - (12UL) /*!< POSIF RPFLG: RPCLK (Bit 12) */ -#define POSIF_RPFLG_RPCLK_Msk \ - (0x1000UL) /*!< POSIF RPFLG: RPCLK (Bitfield-Mask: 0x01) */ - -/* --------------------------------- POSIF_PDBG --------------------------------- */ -#define POSIF_PDBG_QCSV_Pos \ - (0UL) /*!< POSIF PDBG: QCSV (Bit 0) */ -#define POSIF_PDBG_QCSV_Msk \ - (0x3UL) /*!< POSIF PDBG: QCSV (Bitfield-Mask: 0x03) */ -#define POSIF_PDBG_QPSV_Pos \ - (2UL) /*!< POSIF PDBG: QPSV (Bit 2) */ -#define POSIF_PDBG_QPSV_Msk \ - (0xcUL) /*!< POSIF PDBG: QPSV (Bitfield-Mask: 0x03) */ -#define POSIF_PDBG_IVAL_Pos \ - (4UL) /*!< POSIF PDBG: IVAL (Bit 4) */ -#define POSIF_PDBG_IVAL_Msk \ - (0x10UL) /*!< POSIF PDBG: IVAL (Bitfield-Mask: 0x01) */ -#define POSIF_PDBG_HSP_Pos (5UL) /*!< POSIF PDBG: HSP (Bit 5) */ -#define POSIF_PDBG_HSP_Msk \ - (0xe0UL) /*!< POSIF PDBG: HSP (Bitfield-Mask: 0x07) */ -#define POSIF_PDBG_LPP0_Pos \ - (8UL) /*!< POSIF PDBG: LPP0 (Bit 8) */ -#define POSIF_PDBG_LPP0_Msk \ - (0x3f00UL) /*!< POSIF PDBG: LPP0 (Bitfield-Mask: 0x3f) */ -#define POSIF_PDBG_LPP1_Pos \ - (16UL) /*!< POSIF PDBG: LPP1 (Bit 16) */ -#define POSIF_PDBG_LPP1_Msk \ - (0x3f0000UL) /*!< POSIF PDBG: LPP1 (Bitfield-Mask: 0x3f) */ -#define POSIF_PDBG_LPP2_Pos \ - (22UL) /*!< POSIF PDBG: LPP2 (Bit 22) */ -#define POSIF_PDBG_LPP2_Msk \ - (0xfc00000UL) /*!< POSIF PDBG: LPP2 (Bitfield-Mask: 0x3f) */ - -/* ================================================================================ */ -/* ================ struct 'PORT0' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT0_OUT --------------------------------- */ -#define PORT0_OUT_P0_Pos (0UL) /*!< PORT0 OUT: P0 (Bit 0) */ -#define PORT0_OUT_P0_Msk (0x1UL) /*!< PORT0 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P1_Pos (1UL) /*!< PORT0 OUT: P1 (Bit 1) */ -#define PORT0_OUT_P1_Msk (0x2UL) /*!< PORT0 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P2_Pos (2UL) /*!< PORT0 OUT: P2 (Bit 2) */ -#define PORT0_OUT_P2_Msk (0x4UL) /*!< PORT0 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P3_Pos (3UL) /*!< PORT0 OUT: P3 (Bit 3) */ -#define PORT0_OUT_P3_Msk (0x8UL) /*!< PORT0 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P4_Pos (4UL) /*!< PORT0 OUT: P4 (Bit 4) */ -#define PORT0_OUT_P4_Msk \ - (0x10UL) /*!< PORT0 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P5_Pos (5UL) /*!< PORT0 OUT: P5 (Bit 5) */ -#define PORT0_OUT_P5_Msk \ - (0x20UL) /*!< PORT0 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P6_Pos (6UL) /*!< PORT0 OUT: P6 (Bit 6) */ -#define PORT0_OUT_P6_Msk \ - (0x40UL) /*!< PORT0 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P7_Pos (7UL) /*!< PORT0 OUT: P7 (Bit 7) */ -#define PORT0_OUT_P7_Msk \ - (0x80UL) /*!< PORT0 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P8_Pos (8UL) /*!< PORT0 OUT: P8 (Bit 8) */ -#define PORT0_OUT_P8_Msk \ - (0x100UL) /*!< PORT0 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P9_Pos (9UL) /*!< PORT0 OUT: P9 (Bit 9) */ -#define PORT0_OUT_P9_Msk \ - (0x200UL) /*!< PORT0 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P10_Pos (10UL) /*!< PORT0 OUT: P10 (Bit 10) */ -#define PORT0_OUT_P10_Msk \ - (0x400UL) /*!< PORT0 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P11_Pos (11UL) /*!< PORT0 OUT: P11 (Bit 11) */ -#define PORT0_OUT_P11_Msk \ - (0x800UL) /*!< PORT0 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P12_Pos (12UL) /*!< PORT0 OUT: P12 (Bit 12) */ -#define PORT0_OUT_P12_Msk \ - (0x1000UL) /*!< PORT0 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P13_Pos (13UL) /*!< PORT0 OUT: P13 (Bit 13) */ -#define PORT0_OUT_P13_Msk \ - (0x2000UL) /*!< PORT0 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P14_Pos (14UL) /*!< PORT0 OUT: P14 (Bit 14) */ -#define PORT0_OUT_P14_Msk \ - (0x4000UL) /*!< PORT0 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT0_OUT_P15_Pos (15UL) /*!< PORT0 OUT: P15 (Bit 15) */ -#define PORT0_OUT_P15_Msk \ - (0x8000UL) /*!< PORT0 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT0_OMR --------------------------------- */ -#define PORT0_OMR_PS0_Pos (0UL) /*!< PORT0 OMR: PS0 (Bit 0) */ -#define PORT0_OMR_PS0_Msk \ - (0x1UL) /*!< PORT0 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS1_Pos (1UL) /*!< PORT0 OMR: PS1 (Bit 1) */ -#define PORT0_OMR_PS1_Msk \ - (0x2UL) /*!< PORT0 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS2_Pos (2UL) /*!< PORT0 OMR: PS2 (Bit 2) */ -#define PORT0_OMR_PS2_Msk \ - (0x4UL) /*!< PORT0 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS3_Pos (3UL) /*!< PORT0 OMR: PS3 (Bit 3) */ -#define PORT0_OMR_PS3_Msk \ - (0x8UL) /*!< PORT0 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS4_Pos (4UL) /*!< PORT0 OMR: PS4 (Bit 4) */ -#define PORT0_OMR_PS4_Msk \ - (0x10UL) /*!< PORT0 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS5_Pos (5UL) /*!< PORT0 OMR: PS5 (Bit 5) */ -#define PORT0_OMR_PS5_Msk \ - (0x20UL) /*!< PORT0 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS6_Pos (6UL) /*!< PORT0 OMR: PS6 (Bit 6) */ -#define PORT0_OMR_PS6_Msk \ - (0x40UL) /*!< PORT0 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS7_Pos (7UL) /*!< PORT0 OMR: PS7 (Bit 7) */ -#define PORT0_OMR_PS7_Msk \ - (0x80UL) /*!< PORT0 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS8_Pos (8UL) /*!< PORT0 OMR: PS8 (Bit 8) */ -#define PORT0_OMR_PS8_Msk \ - (0x100UL) /*!< PORT0 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS9_Pos (9UL) /*!< PORT0 OMR: PS9 (Bit 9) */ -#define PORT0_OMR_PS9_Msk \ - (0x200UL) /*!< PORT0 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS10_Pos \ - (10UL) /*!< PORT0 OMR: PS10 (Bit 10) */ -#define PORT0_OMR_PS10_Msk \ - (0x400UL) /*!< PORT0 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS11_Pos \ - (11UL) /*!< PORT0 OMR: PS11 (Bit 11) */ -#define PORT0_OMR_PS11_Msk \ - (0x800UL) /*!< PORT0 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS12_Pos \ - (12UL) /*!< PORT0 OMR: PS12 (Bit 12) */ -#define PORT0_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT0 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS13_Pos \ - (13UL) /*!< PORT0 OMR: PS13 (Bit 13) */ -#define PORT0_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT0 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS14_Pos \ - (14UL) /*!< PORT0 OMR: PS14 (Bit 14) */ -#define PORT0_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT0 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PS15_Pos \ - (15UL) /*!< PORT0 OMR: PS15 (Bit 15) */ -#define PORT0_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT0 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR0_Pos (16UL) /*!< PORT0 OMR: PR0 (Bit 16) */ -#define PORT0_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT0 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR1_Pos (17UL) /*!< PORT0 OMR: PR1 (Bit 17) */ -#define PORT0_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT0 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR2_Pos (18UL) /*!< PORT0 OMR: PR2 (Bit 18) */ -#define PORT0_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT0 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR3_Pos (19UL) /*!< PORT0 OMR: PR3 (Bit 19) */ -#define PORT0_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT0 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR4_Pos (20UL) /*!< PORT0 OMR: PR4 (Bit 20) */ -#define PORT0_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT0 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR5_Pos (21UL) /*!< PORT0 OMR: PR5 (Bit 21) */ -#define PORT0_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT0 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR6_Pos (22UL) /*!< PORT0 OMR: PR6 (Bit 22) */ -#define PORT0_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT0 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR7_Pos (23UL) /*!< PORT0 OMR: PR7 (Bit 23) */ -#define PORT0_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT0 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR8_Pos (24UL) /*!< PORT0 OMR: PR8 (Bit 24) */ -#define PORT0_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT0 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR9_Pos (25UL) /*!< PORT0 OMR: PR9 (Bit 25) */ -#define PORT0_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT0 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR10_Pos \ - (26UL) /*!< PORT0 OMR: PR10 (Bit 26) */ -#define PORT0_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT0 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR11_Pos \ - (27UL) /*!< PORT0 OMR: PR11 (Bit 27) */ -#define PORT0_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT0 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR12_Pos \ - (28UL) /*!< PORT0 OMR: PR12 (Bit 28) */ -#define PORT0_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT0 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR13_Pos \ - (29UL) /*!< PORT0 OMR: PR13 (Bit 29) */ -#define PORT0_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT0 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR14_Pos \ - (30UL) /*!< PORT0 OMR: PR14 (Bit 30) */ -#define PORT0_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT0 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT0_OMR_PR15_Pos \ - (31UL) /*!< PORT0 OMR: PR15 (Bit 31) */ -#define PORT0_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT0 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT0_IOCR0 -------------------------------- */ -#define PORT0_IOCR0_PC0_Pos \ - (3UL) /*!< PORT0 IOCR0: PC0 (Bit 3) */ -#define PORT0_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT0 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR0_PC1_Pos \ - (11UL) /*!< PORT0 IOCR0: PC1 (Bit 11) */ -#define PORT0_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT0 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR0_PC2_Pos \ - (19UL) /*!< PORT0 IOCR0: PC2 (Bit 19) */ -#define PORT0_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT0 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR0_PC3_Pos \ - (27UL) /*!< PORT0 IOCR0: PC3 (Bit 27) */ -#define PORT0_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT0 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT0_IOCR4 -------------------------------- */ -#define PORT0_IOCR4_PC4_Pos \ - (3UL) /*!< PORT0 IOCR4: PC4 (Bit 3) */ -#define PORT0_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT0 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR4_PC5_Pos \ - (11UL) /*!< PORT0 IOCR4: PC5 (Bit 11) */ -#define PORT0_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT0 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR4_PC6_Pos \ - (19UL) /*!< PORT0 IOCR4: PC6 (Bit 19) */ -#define PORT0_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT0 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR4_PC7_Pos \ - (27UL) /*!< PORT0 IOCR4: PC7 (Bit 27) */ -#define PORT0_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT0 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT0_IOCR8 -------------------------------- */ -#define PORT0_IOCR8_PC8_Pos \ - (3UL) /*!< PORT0 IOCR8: PC8 (Bit 3) */ -#define PORT0_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT0 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR8_PC9_Pos \ - (11UL) /*!< PORT0 IOCR8: PC9 (Bit 11) */ -#define PORT0_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT0 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR8_PC10_Pos \ - (19UL) /*!< PORT0 IOCR8: PC10 (Bit 19) */ -#define PORT0_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT0 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR8_PC11_Pos \ - (27UL) /*!< PORT0 IOCR8: PC11 (Bit 27) */ -#define PORT0_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT0 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT0_IOCR12 -------------------------------- */ -#define PORT0_IOCR12_PC12_Pos \ - (3UL) /*!< PORT0 IOCR12: PC12 (Bit 3) */ -#define PORT0_IOCR12_PC12_Msk \ - (0xf8UL) /*!< PORT0 IOCR12: PC12 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR12_PC13_Pos \ - (11UL) /*!< PORT0 IOCR12: PC13 (Bit 11) */ -#define PORT0_IOCR12_PC13_Msk \ - (0xf800UL) /*!< PORT0 IOCR12: PC13 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR12_PC14_Pos \ - (19UL) /*!< PORT0 IOCR12: PC14 (Bit 19) */ -#define PORT0_IOCR12_PC14_Msk \ - (0xf80000UL) /*!< PORT0 IOCR12: PC14 (Bitfield-Mask: 0x1f) */ -#define PORT0_IOCR12_PC15_Pos \ - (27UL) /*!< PORT0 IOCR12: PC15 (Bit 27) */ -#define PORT0_IOCR12_PC15_Msk \ - (0xf8000000UL) /*!< PORT0 IOCR12: PC15 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT0_IN ---------------------------------- */ -#define PORT0_IN_P0_Pos (0UL) /*!< PORT0 IN: P0 (Bit 0) */ -#define PORT0_IN_P0_Msk (0x1UL) /*!< PORT0 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P1_Pos (1UL) /*!< PORT0 IN: P1 (Bit 1) */ -#define PORT0_IN_P1_Msk (0x2UL) /*!< PORT0 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P2_Pos (2UL) /*!< PORT0 IN: P2 (Bit 2) */ -#define PORT0_IN_P2_Msk (0x4UL) /*!< PORT0 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P3_Pos (3UL) /*!< PORT0 IN: P3 (Bit 3) */ -#define PORT0_IN_P3_Msk (0x8UL) /*!< PORT0 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P4_Pos (4UL) /*!< PORT0 IN: P4 (Bit 4) */ -#define PORT0_IN_P4_Msk (0x10UL) /*!< PORT0 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P5_Pos (5UL) /*!< PORT0 IN: P5 (Bit 5) */ -#define PORT0_IN_P5_Msk (0x20UL) /*!< PORT0 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P6_Pos (6UL) /*!< PORT0 IN: P6 (Bit 6) */ -#define PORT0_IN_P6_Msk (0x40UL) /*!< PORT0 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P7_Pos (7UL) /*!< PORT0 IN: P7 (Bit 7) */ -#define PORT0_IN_P7_Msk (0x80UL) /*!< PORT0 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P8_Pos (8UL) /*!< PORT0 IN: P8 (Bit 8) */ -#define PORT0_IN_P8_Msk \ - (0x100UL) /*!< PORT0 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P9_Pos (9UL) /*!< PORT0 IN: P9 (Bit 9) */ -#define PORT0_IN_P9_Msk \ - (0x200UL) /*!< PORT0 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P10_Pos (10UL) /*!< PORT0 IN: P10 (Bit 10) */ -#define PORT0_IN_P10_Msk \ - (0x400UL) /*!< PORT0 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P11_Pos (11UL) /*!< PORT0 IN: P11 (Bit 11) */ -#define PORT0_IN_P11_Msk \ - (0x800UL) /*!< PORT0 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P12_Pos (12UL) /*!< PORT0 IN: P12 (Bit 12) */ -#define PORT0_IN_P12_Msk \ - (0x1000UL) /*!< PORT0 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P13_Pos (13UL) /*!< PORT0 IN: P13 (Bit 13) */ -#define PORT0_IN_P13_Msk \ - (0x2000UL) /*!< PORT0 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P14_Pos (14UL) /*!< PORT0 IN: P14 (Bit 14) */ -#define PORT0_IN_P14_Msk \ - (0x4000UL) /*!< PORT0 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT0_IN_P15_Pos (15UL) /*!< PORT0 IN: P15 (Bit 15) */ -#define PORT0_IN_P15_Msk \ - (0x8000UL) /*!< PORT0 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT0_PDR0 --------------------------------- */ -#define PORT0_PDR0_PD0_Pos (0UL) /*!< PORT0 PDR0: PD0 (Bit 0) */ -#define PORT0_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT0 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD1_Pos (4UL) /*!< PORT0 PDR0: PD1 (Bit 4) */ -#define PORT0_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT0 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD2_Pos (8UL) /*!< PORT0 PDR0: PD2 (Bit 8) */ -#define PORT0_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT0 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD3_Pos \ - (12UL) /*!< PORT0 PDR0: PD3 (Bit 12) */ -#define PORT0_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT0 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD4_Pos \ - (16UL) /*!< PORT0 PDR0: PD4 (Bit 16) */ -#define PORT0_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT0 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD5_Pos \ - (20UL) /*!< PORT0 PDR0: PD5 (Bit 20) */ -#define PORT0_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT0 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD6_Pos \ - (24UL) /*!< PORT0 PDR0: PD6 (Bit 24) */ -#define PORT0_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT0 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR0_PD7_Pos \ - (28UL) /*!< PORT0 PDR0: PD7 (Bit 28) */ -#define PORT0_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT0 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT0_PDR1 --------------------------------- */ -#define PORT0_PDR1_PD8_Pos (0UL) /*!< PORT0 PDR1: PD8 (Bit 0) */ -#define PORT0_PDR1_PD8_Msk \ - (0x7UL) /*!< PORT0 PDR1: PD8 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD9_Pos (4UL) /*!< PORT0 PDR1: PD9 (Bit 4) */ -#define PORT0_PDR1_PD9_Msk \ - (0x70UL) /*!< PORT0 PDR1: PD9 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD10_Pos \ - (8UL) /*!< PORT0 PDR1: PD10 (Bit 8) */ -#define PORT0_PDR1_PD10_Msk \ - (0x700UL) /*!< PORT0 PDR1: PD10 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD11_Pos \ - (12UL) /*!< PORT0 PDR1: PD11 (Bit 12) */ -#define PORT0_PDR1_PD11_Msk \ - (0x7000UL) /*!< PORT0 PDR1: PD11 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD12_Pos \ - (16UL) /*!< PORT0 PDR1: PD12 (Bit 16) */ -#define PORT0_PDR1_PD12_Msk \ - (0x70000UL) /*!< PORT0 PDR1: PD12 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD13_Pos \ - (20UL) /*!< PORT0 PDR1: PD13 (Bit 20) */ -#define PORT0_PDR1_PD13_Msk \ - (0x700000UL) /*!< PORT0 PDR1: PD13 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD14_Pos \ - (24UL) /*!< PORT0 PDR1: PD14 (Bit 24) */ -#define PORT0_PDR1_PD14_Msk \ - (0x7000000UL) /*!< PORT0 PDR1: PD14 (Bitfield-Mask: 0x07) */ -#define PORT0_PDR1_PD15_Pos \ - (28UL) /*!< PORT0 PDR1: PD15 (Bit 28) */ -#define PORT0_PDR1_PD15_Msk \ - (0x70000000UL) /*!< PORT0 PDR1: PD15 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT0_PDISC -------------------------------- */ -#define PORT0_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT0 PDISC: PDIS0 (Bit 0) */ -#define PORT0_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT0 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT0 PDISC: PDIS1 (Bit 1) */ -#define PORT0_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT0 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT0 PDISC: PDIS2 (Bit 2) */ -#define PORT0_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT0 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT0 PDISC: PDIS3 (Bit 3) */ -#define PORT0_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT0 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT0 PDISC: PDIS4 (Bit 4) */ -#define PORT0_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT0 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT0 PDISC: PDIS5 (Bit 5) */ -#define PORT0_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT0 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT0 PDISC: PDIS6 (Bit 6) */ -#define PORT0_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT0 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT0 PDISC: PDIS7 (Bit 7) */ -#define PORT0_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT0 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT0 PDISC: PDIS8 (Bit 8) */ -#define PORT0_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT0 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT0 PDISC: PDIS9 (Bit 9) */ -#define PORT0_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT0 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT0 PDISC: PDIS10 (Bit 10) */ -#define PORT0_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT0 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT0 PDISC: PDIS11 (Bit 11) */ -#define PORT0_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT0 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT0 PDISC: PDIS12 (Bit 12) */ -#define PORT0_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT0 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT0 PDISC: PDIS13 (Bit 13) */ -#define PORT0_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT0 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT0 PDISC: PDIS14 (Bit 14) */ -#define PORT0_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT0 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT0_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT0 PDISC: PDIS15 (Bit 15) */ -#define PORT0_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT0 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT0_PPS --------------------------------- */ -#define PORT0_PPS_PPS0_Pos (0UL) /*!< PORT0 PPS: PPS0 (Bit 0) */ -#define PORT0_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT0 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS1_Pos (1UL) /*!< PORT0 PPS: PPS1 (Bit 1) */ -#define PORT0_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT0 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS2_Pos (2UL) /*!< PORT0 PPS: PPS2 (Bit 2) */ -#define PORT0_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT0 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS3_Pos (3UL) /*!< PORT0 PPS: PPS3 (Bit 3) */ -#define PORT0_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT0 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS4_Pos (4UL) /*!< PORT0 PPS: PPS4 (Bit 4) */ -#define PORT0_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT0 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS5_Pos (5UL) /*!< PORT0 PPS: PPS5 (Bit 5) */ -#define PORT0_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT0 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS6_Pos (6UL) /*!< PORT0 PPS: PPS6 (Bit 6) */ -#define PORT0_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT0 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS7_Pos (7UL) /*!< PORT0 PPS: PPS7 (Bit 7) */ -#define PORT0_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT0 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS8_Pos (8UL) /*!< PORT0 PPS: PPS8 (Bit 8) */ -#define PORT0_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT0 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS9_Pos (9UL) /*!< PORT0 PPS: PPS9 (Bit 9) */ -#define PORT0_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT0 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS10_Pos \ - (10UL) /*!< PORT0 PPS: PPS10 (Bit 10) */ -#define PORT0_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT0 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS11_Pos \ - (11UL) /*!< PORT0 PPS: PPS11 (Bit 11) */ -#define PORT0_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT0 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS12_Pos \ - (12UL) /*!< PORT0 PPS: PPS12 (Bit 12) */ -#define PORT0_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT0 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS13_Pos \ - (13UL) /*!< PORT0 PPS: PPS13 (Bit 13) */ -#define PORT0_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT0 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS14_Pos \ - (14UL) /*!< PORT0 PPS: PPS14 (Bit 14) */ -#define PORT0_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT0 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT0_PPS_PPS15_Pos \ - (15UL) /*!< PORT0 PPS: PPS15 (Bit 15) */ -#define PORT0_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT0 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT0_HWSEL -------------------------------- */ -#define PORT0_HWSEL_HW0_Pos \ - (0UL) /*!< PORT0 HWSEL: HW0 (Bit 0) */ -#define PORT0_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT0 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW1_Pos \ - (2UL) /*!< PORT0 HWSEL: HW1 (Bit 2) */ -#define PORT0_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT0 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW2_Pos \ - (4UL) /*!< PORT0 HWSEL: HW2 (Bit 4) */ -#define PORT0_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT0 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW3_Pos \ - (6UL) /*!< PORT0 HWSEL: HW3 (Bit 6) */ -#define PORT0_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT0 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW4_Pos \ - (8UL) /*!< PORT0 HWSEL: HW4 (Bit 8) */ -#define PORT0_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT0 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW5_Pos \ - (10UL) /*!< PORT0 HWSEL: HW5 (Bit 10) */ -#define PORT0_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT0 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW6_Pos \ - (12UL) /*!< PORT0 HWSEL: HW6 (Bit 12) */ -#define PORT0_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT0 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW7_Pos \ - (14UL) /*!< PORT0 HWSEL: HW7 (Bit 14) */ -#define PORT0_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT0 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW8_Pos \ - (16UL) /*!< PORT0 HWSEL: HW8 (Bit 16) */ -#define PORT0_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT0 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW9_Pos \ - (18UL) /*!< PORT0 HWSEL: HW9 (Bit 18) */ -#define PORT0_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT0 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW10_Pos \ - (20UL) /*!< PORT0 HWSEL: HW10 (Bit 20) */ -#define PORT0_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT0 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW11_Pos \ - (22UL) /*!< PORT0 HWSEL: HW11 (Bit 22) */ -#define PORT0_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT0 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW12_Pos \ - (24UL) /*!< PORT0 HWSEL: HW12 (Bit 24) */ -#define PORT0_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT0 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW13_Pos \ - (26UL) /*!< PORT0 HWSEL: HW13 (Bit 26) */ -#define PORT0_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT0 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW14_Pos \ - (28UL) /*!< PORT0 HWSEL: HW14 (Bit 28) */ -#define PORT0_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT0 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT0_HWSEL_HW15_Pos \ - (30UL) /*!< PORT0 HWSEL: HW15 (Bit 30) */ -#define PORT0_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT0 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT1' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT1_OUT --------------------------------- */ -#define PORT1_OUT_P0_Pos (0UL) /*!< PORT1 OUT: P0 (Bit 0) */ -#define PORT1_OUT_P0_Msk (0x1UL) /*!< PORT1 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P1_Pos (1UL) /*!< PORT1 OUT: P1 (Bit 1) */ -#define PORT1_OUT_P1_Msk (0x2UL) /*!< PORT1 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P2_Pos (2UL) /*!< PORT1 OUT: P2 (Bit 2) */ -#define PORT1_OUT_P2_Msk (0x4UL) /*!< PORT1 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P3_Pos (3UL) /*!< PORT1 OUT: P3 (Bit 3) */ -#define PORT1_OUT_P3_Msk (0x8UL) /*!< PORT1 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P4_Pos (4UL) /*!< PORT1 OUT: P4 (Bit 4) */ -#define PORT1_OUT_P4_Msk \ - (0x10UL) /*!< PORT1 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P5_Pos (5UL) /*!< PORT1 OUT: P5 (Bit 5) */ -#define PORT1_OUT_P5_Msk \ - (0x20UL) /*!< PORT1 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P6_Pos (6UL) /*!< PORT1 OUT: P6 (Bit 6) */ -#define PORT1_OUT_P6_Msk \ - (0x40UL) /*!< PORT1 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P7_Pos (7UL) /*!< PORT1 OUT: P7 (Bit 7) */ -#define PORT1_OUT_P7_Msk \ - (0x80UL) /*!< PORT1 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P8_Pos (8UL) /*!< PORT1 OUT: P8 (Bit 8) */ -#define PORT1_OUT_P8_Msk \ - (0x100UL) /*!< PORT1 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P9_Pos (9UL) /*!< PORT1 OUT: P9 (Bit 9) */ -#define PORT1_OUT_P9_Msk \ - (0x200UL) /*!< PORT1 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P10_Pos (10UL) /*!< PORT1 OUT: P10 (Bit 10) */ -#define PORT1_OUT_P10_Msk \ - (0x400UL) /*!< PORT1 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P11_Pos (11UL) /*!< PORT1 OUT: P11 (Bit 11) */ -#define PORT1_OUT_P11_Msk \ - (0x800UL) /*!< PORT1 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P12_Pos (12UL) /*!< PORT1 OUT: P12 (Bit 12) */ -#define PORT1_OUT_P12_Msk \ - (0x1000UL) /*!< PORT1 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P13_Pos (13UL) /*!< PORT1 OUT: P13 (Bit 13) */ -#define PORT1_OUT_P13_Msk \ - (0x2000UL) /*!< PORT1 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P14_Pos (14UL) /*!< PORT1 OUT: P14 (Bit 14) */ -#define PORT1_OUT_P14_Msk \ - (0x4000UL) /*!< PORT1 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT1_OUT_P15_Pos (15UL) /*!< PORT1 OUT: P15 (Bit 15) */ -#define PORT1_OUT_P15_Msk \ - (0x8000UL) /*!< PORT1 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT1_OMR --------------------------------- */ -#define PORT1_OMR_PS0_Pos (0UL) /*!< PORT1 OMR: PS0 (Bit 0) */ -#define PORT1_OMR_PS0_Msk \ - (0x1UL) /*!< PORT1 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS1_Pos (1UL) /*!< PORT1 OMR: PS1 (Bit 1) */ -#define PORT1_OMR_PS1_Msk \ - (0x2UL) /*!< PORT1 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS2_Pos (2UL) /*!< PORT1 OMR: PS2 (Bit 2) */ -#define PORT1_OMR_PS2_Msk \ - (0x4UL) /*!< PORT1 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS3_Pos (3UL) /*!< PORT1 OMR: PS3 (Bit 3) */ -#define PORT1_OMR_PS3_Msk \ - (0x8UL) /*!< PORT1 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS4_Pos (4UL) /*!< PORT1 OMR: PS4 (Bit 4) */ -#define PORT1_OMR_PS4_Msk \ - (0x10UL) /*!< PORT1 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS5_Pos (5UL) /*!< PORT1 OMR: PS5 (Bit 5) */ -#define PORT1_OMR_PS5_Msk \ - (0x20UL) /*!< PORT1 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS6_Pos (6UL) /*!< PORT1 OMR: PS6 (Bit 6) */ -#define PORT1_OMR_PS6_Msk \ - (0x40UL) /*!< PORT1 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS7_Pos (7UL) /*!< PORT1 OMR: PS7 (Bit 7) */ -#define PORT1_OMR_PS7_Msk \ - (0x80UL) /*!< PORT1 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS8_Pos (8UL) /*!< PORT1 OMR: PS8 (Bit 8) */ -#define PORT1_OMR_PS8_Msk \ - (0x100UL) /*!< PORT1 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS9_Pos (9UL) /*!< PORT1 OMR: PS9 (Bit 9) */ -#define PORT1_OMR_PS9_Msk \ - (0x200UL) /*!< PORT1 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS10_Pos \ - (10UL) /*!< PORT1 OMR: PS10 (Bit 10) */ -#define PORT1_OMR_PS10_Msk \ - (0x400UL) /*!< PORT1 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS11_Pos \ - (11UL) /*!< PORT1 OMR: PS11 (Bit 11) */ -#define PORT1_OMR_PS11_Msk \ - (0x800UL) /*!< PORT1 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS12_Pos \ - (12UL) /*!< PORT1 OMR: PS12 (Bit 12) */ -#define PORT1_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT1 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS13_Pos \ - (13UL) /*!< PORT1 OMR: PS13 (Bit 13) */ -#define PORT1_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT1 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS14_Pos \ - (14UL) /*!< PORT1 OMR: PS14 (Bit 14) */ -#define PORT1_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT1 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PS15_Pos \ - (15UL) /*!< PORT1 OMR: PS15 (Bit 15) */ -#define PORT1_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT1 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR0_Pos (16UL) /*!< PORT1 OMR: PR0 (Bit 16) */ -#define PORT1_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT1 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR1_Pos (17UL) /*!< PORT1 OMR: PR1 (Bit 17) */ -#define PORT1_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT1 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR2_Pos (18UL) /*!< PORT1 OMR: PR2 (Bit 18) */ -#define PORT1_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT1 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR3_Pos (19UL) /*!< PORT1 OMR: PR3 (Bit 19) */ -#define PORT1_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT1 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR4_Pos (20UL) /*!< PORT1 OMR: PR4 (Bit 20) */ -#define PORT1_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT1 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR5_Pos (21UL) /*!< PORT1 OMR: PR5 (Bit 21) */ -#define PORT1_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT1 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR6_Pos (22UL) /*!< PORT1 OMR: PR6 (Bit 22) */ -#define PORT1_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT1 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR7_Pos (23UL) /*!< PORT1 OMR: PR7 (Bit 23) */ -#define PORT1_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT1 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR8_Pos (24UL) /*!< PORT1 OMR: PR8 (Bit 24) */ -#define PORT1_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT1 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR9_Pos (25UL) /*!< PORT1 OMR: PR9 (Bit 25) */ -#define PORT1_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT1 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR10_Pos \ - (26UL) /*!< PORT1 OMR: PR10 (Bit 26) */ -#define PORT1_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT1 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR11_Pos \ - (27UL) /*!< PORT1 OMR: PR11 (Bit 27) */ -#define PORT1_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT1 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR12_Pos \ - (28UL) /*!< PORT1 OMR: PR12 (Bit 28) */ -#define PORT1_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT1 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR13_Pos \ - (29UL) /*!< PORT1 OMR: PR13 (Bit 29) */ -#define PORT1_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT1 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR14_Pos \ - (30UL) /*!< PORT1 OMR: PR14 (Bit 30) */ -#define PORT1_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT1 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT1_OMR_PR15_Pos \ - (31UL) /*!< PORT1 OMR: PR15 (Bit 31) */ -#define PORT1_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT1 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT1_IOCR0 -------------------------------- */ -#define PORT1_IOCR0_PC0_Pos \ - (3UL) /*!< PORT1 IOCR0: PC0 (Bit 3) */ -#define PORT1_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT1 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR0_PC1_Pos \ - (11UL) /*!< PORT1 IOCR0: PC1 (Bit 11) */ -#define PORT1_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT1 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR0_PC2_Pos \ - (19UL) /*!< PORT1 IOCR0: PC2 (Bit 19) */ -#define PORT1_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT1 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR0_PC3_Pos \ - (27UL) /*!< PORT1 IOCR0: PC3 (Bit 27) */ -#define PORT1_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT1 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT1_IOCR4 -------------------------------- */ -#define PORT1_IOCR4_PC4_Pos \ - (3UL) /*!< PORT1 IOCR4: PC4 (Bit 3) */ -#define PORT1_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT1 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR4_PC5_Pos \ - (11UL) /*!< PORT1 IOCR4: PC5 (Bit 11) */ -#define PORT1_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT1 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR4_PC6_Pos \ - (19UL) /*!< PORT1 IOCR4: PC6 (Bit 19) */ -#define PORT1_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT1 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR4_PC7_Pos \ - (27UL) /*!< PORT1 IOCR4: PC7 (Bit 27) */ -#define PORT1_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT1 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT1_IOCR8 -------------------------------- */ -#define PORT1_IOCR8_PC8_Pos \ - (3UL) /*!< PORT1 IOCR8: PC8 (Bit 3) */ -#define PORT1_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT1 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR8_PC9_Pos \ - (11UL) /*!< PORT1 IOCR8: PC9 (Bit 11) */ -#define PORT1_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT1 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR8_PC10_Pos \ - (19UL) /*!< PORT1 IOCR8: PC10 (Bit 19) */ -#define PORT1_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT1 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR8_PC11_Pos \ - (27UL) /*!< PORT1 IOCR8: PC11 (Bit 27) */ -#define PORT1_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT1 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT1_IOCR12 -------------------------------- */ -#define PORT1_IOCR12_PC12_Pos \ - (3UL) /*!< PORT1 IOCR12: PC12 (Bit 3) */ -#define PORT1_IOCR12_PC12_Msk \ - (0xf8UL) /*!< PORT1 IOCR12: PC12 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR12_PC13_Pos \ - (11UL) /*!< PORT1 IOCR12: PC13 (Bit 11) */ -#define PORT1_IOCR12_PC13_Msk \ - (0xf800UL) /*!< PORT1 IOCR12: PC13 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR12_PC14_Pos \ - (19UL) /*!< PORT1 IOCR12: PC14 (Bit 19) */ -#define PORT1_IOCR12_PC14_Msk \ - (0xf80000UL) /*!< PORT1 IOCR12: PC14 (Bitfield-Mask: 0x1f) */ -#define PORT1_IOCR12_PC15_Pos \ - (27UL) /*!< PORT1 IOCR12: PC15 (Bit 27) */ -#define PORT1_IOCR12_PC15_Msk \ - (0xf8000000UL) /*!< PORT1 IOCR12: PC15 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT1_IN ---------------------------------- */ -#define PORT1_IN_P0_Pos (0UL) /*!< PORT1 IN: P0 (Bit 0) */ -#define PORT1_IN_P0_Msk (0x1UL) /*!< PORT1 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P1_Pos (1UL) /*!< PORT1 IN: P1 (Bit 1) */ -#define PORT1_IN_P1_Msk (0x2UL) /*!< PORT1 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P2_Pos (2UL) /*!< PORT1 IN: P2 (Bit 2) */ -#define PORT1_IN_P2_Msk (0x4UL) /*!< PORT1 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P3_Pos (3UL) /*!< PORT1 IN: P3 (Bit 3) */ -#define PORT1_IN_P3_Msk (0x8UL) /*!< PORT1 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P4_Pos (4UL) /*!< PORT1 IN: P4 (Bit 4) */ -#define PORT1_IN_P4_Msk (0x10UL) /*!< PORT1 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P5_Pos (5UL) /*!< PORT1 IN: P5 (Bit 5) */ -#define PORT1_IN_P5_Msk (0x20UL) /*!< PORT1 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P6_Pos (6UL) /*!< PORT1 IN: P6 (Bit 6) */ -#define PORT1_IN_P6_Msk (0x40UL) /*!< PORT1 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P7_Pos (7UL) /*!< PORT1 IN: P7 (Bit 7) */ -#define PORT1_IN_P7_Msk (0x80UL) /*!< PORT1 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P8_Pos (8UL) /*!< PORT1 IN: P8 (Bit 8) */ -#define PORT1_IN_P8_Msk \ - (0x100UL) /*!< PORT1 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P9_Pos (9UL) /*!< PORT1 IN: P9 (Bit 9) */ -#define PORT1_IN_P9_Msk \ - (0x200UL) /*!< PORT1 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P10_Pos (10UL) /*!< PORT1 IN: P10 (Bit 10) */ -#define PORT1_IN_P10_Msk \ - (0x400UL) /*!< PORT1 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P11_Pos (11UL) /*!< PORT1 IN: P11 (Bit 11) */ -#define PORT1_IN_P11_Msk \ - (0x800UL) /*!< PORT1 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P12_Pos (12UL) /*!< PORT1 IN: P12 (Bit 12) */ -#define PORT1_IN_P12_Msk \ - (0x1000UL) /*!< PORT1 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P13_Pos (13UL) /*!< PORT1 IN: P13 (Bit 13) */ -#define PORT1_IN_P13_Msk \ - (0x2000UL) /*!< PORT1 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P14_Pos (14UL) /*!< PORT1 IN: P14 (Bit 14) */ -#define PORT1_IN_P14_Msk \ - (0x4000UL) /*!< PORT1 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT1_IN_P15_Pos (15UL) /*!< PORT1 IN: P15 (Bit 15) */ -#define PORT1_IN_P15_Msk \ - (0x8000UL) /*!< PORT1 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT1_PDR0 --------------------------------- */ -#define PORT1_PDR0_PD0_Pos (0UL) /*!< PORT1 PDR0: PD0 (Bit 0) */ -#define PORT1_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT1 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD1_Pos (4UL) /*!< PORT1 PDR0: PD1 (Bit 4) */ -#define PORT1_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT1 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD2_Pos (8UL) /*!< PORT1 PDR0: PD2 (Bit 8) */ -#define PORT1_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT1 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD3_Pos \ - (12UL) /*!< PORT1 PDR0: PD3 (Bit 12) */ -#define PORT1_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT1 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD4_Pos \ - (16UL) /*!< PORT1 PDR0: PD4 (Bit 16) */ -#define PORT1_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT1 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD5_Pos \ - (20UL) /*!< PORT1 PDR0: PD5 (Bit 20) */ -#define PORT1_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT1 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD6_Pos \ - (24UL) /*!< PORT1 PDR0: PD6 (Bit 24) */ -#define PORT1_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT1 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR0_PD7_Pos \ - (28UL) /*!< PORT1 PDR0: PD7 (Bit 28) */ -#define PORT1_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT1 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT1_PDR1 --------------------------------- */ -#define PORT1_PDR1_PD8_Pos (0UL) /*!< PORT1 PDR1: PD8 (Bit 0) */ -#define PORT1_PDR1_PD8_Msk \ - (0x7UL) /*!< PORT1 PDR1: PD8 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD9_Pos (4UL) /*!< PORT1 PDR1: PD9 (Bit 4) */ -#define PORT1_PDR1_PD9_Msk \ - (0x70UL) /*!< PORT1 PDR1: PD9 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD10_Pos \ - (8UL) /*!< PORT1 PDR1: PD10 (Bit 8) */ -#define PORT1_PDR1_PD10_Msk \ - (0x700UL) /*!< PORT1 PDR1: PD10 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD11_Pos \ - (12UL) /*!< PORT1 PDR1: PD11 (Bit 12) */ -#define PORT1_PDR1_PD11_Msk \ - (0x7000UL) /*!< PORT1 PDR1: PD11 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD12_Pos \ - (16UL) /*!< PORT1 PDR1: PD12 (Bit 16) */ -#define PORT1_PDR1_PD12_Msk \ - (0x70000UL) /*!< PORT1 PDR1: PD12 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD13_Pos \ - (20UL) /*!< PORT1 PDR1: PD13 (Bit 20) */ -#define PORT1_PDR1_PD13_Msk \ - (0x700000UL) /*!< PORT1 PDR1: PD13 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD14_Pos \ - (24UL) /*!< PORT1 PDR1: PD14 (Bit 24) */ -#define PORT1_PDR1_PD14_Msk \ - (0x7000000UL) /*!< PORT1 PDR1: PD14 (Bitfield-Mask: 0x07) */ -#define PORT1_PDR1_PD15_Pos \ - (28UL) /*!< PORT1 PDR1: PD15 (Bit 28) */ -#define PORT1_PDR1_PD15_Msk \ - (0x70000000UL) /*!< PORT1 PDR1: PD15 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT1_PDISC -------------------------------- */ -#define PORT1_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT1 PDISC: PDIS0 (Bit 0) */ -#define PORT1_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT1 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT1 PDISC: PDIS1 (Bit 1) */ -#define PORT1_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT1 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT1 PDISC: PDIS2 (Bit 2) */ -#define PORT1_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT1 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT1 PDISC: PDIS3 (Bit 3) */ -#define PORT1_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT1 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT1 PDISC: PDIS4 (Bit 4) */ -#define PORT1_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT1 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT1 PDISC: PDIS5 (Bit 5) */ -#define PORT1_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT1 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT1 PDISC: PDIS6 (Bit 6) */ -#define PORT1_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT1 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT1 PDISC: PDIS7 (Bit 7) */ -#define PORT1_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT1 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT1 PDISC: PDIS8 (Bit 8) */ -#define PORT1_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT1 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT1 PDISC: PDIS9 (Bit 9) */ -#define PORT1_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT1 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT1 PDISC: PDIS10 (Bit 10) */ -#define PORT1_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT1 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT1 PDISC: PDIS11 (Bit 11) */ -#define PORT1_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT1 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT1 PDISC: PDIS12 (Bit 12) */ -#define PORT1_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT1 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT1 PDISC: PDIS13 (Bit 13) */ -#define PORT1_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT1 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT1 PDISC: PDIS14 (Bit 14) */ -#define PORT1_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT1 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT1_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT1 PDISC: PDIS15 (Bit 15) */ -#define PORT1_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT1 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT1_PPS --------------------------------- */ -#define PORT1_PPS_PPS0_Pos (0UL) /*!< PORT1 PPS: PPS0 (Bit 0) */ -#define PORT1_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT1 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS1_Pos (1UL) /*!< PORT1 PPS: PPS1 (Bit 1) */ -#define PORT1_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT1 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS2_Pos (2UL) /*!< PORT1 PPS: PPS2 (Bit 2) */ -#define PORT1_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT1 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS3_Pos (3UL) /*!< PORT1 PPS: PPS3 (Bit 3) */ -#define PORT1_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT1 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS4_Pos (4UL) /*!< PORT1 PPS: PPS4 (Bit 4) */ -#define PORT1_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT1 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS5_Pos (5UL) /*!< PORT1 PPS: PPS5 (Bit 5) */ -#define PORT1_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT1 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS6_Pos (6UL) /*!< PORT1 PPS: PPS6 (Bit 6) */ -#define PORT1_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT1 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS7_Pos (7UL) /*!< PORT1 PPS: PPS7 (Bit 7) */ -#define PORT1_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT1 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS8_Pos (8UL) /*!< PORT1 PPS: PPS8 (Bit 8) */ -#define PORT1_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT1 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS9_Pos (9UL) /*!< PORT1 PPS: PPS9 (Bit 9) */ -#define PORT1_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT1 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS10_Pos \ - (10UL) /*!< PORT1 PPS: PPS10 (Bit 10) */ -#define PORT1_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT1 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS11_Pos \ - (11UL) /*!< PORT1 PPS: PPS11 (Bit 11) */ -#define PORT1_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT1 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS12_Pos \ - (12UL) /*!< PORT1 PPS: PPS12 (Bit 12) */ -#define PORT1_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT1 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS13_Pos \ - (13UL) /*!< PORT1 PPS: PPS13 (Bit 13) */ -#define PORT1_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT1 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS14_Pos \ - (14UL) /*!< PORT1 PPS: PPS14 (Bit 14) */ -#define PORT1_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT1 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT1_PPS_PPS15_Pos \ - (15UL) /*!< PORT1 PPS: PPS15 (Bit 15) */ -#define PORT1_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT1 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT1_HWSEL -------------------------------- */ -#define PORT1_HWSEL_HW0_Pos \ - (0UL) /*!< PORT1 HWSEL: HW0 (Bit 0) */ -#define PORT1_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT1 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW1_Pos \ - (2UL) /*!< PORT1 HWSEL: HW1 (Bit 2) */ -#define PORT1_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT1 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW2_Pos \ - (4UL) /*!< PORT1 HWSEL: HW2 (Bit 4) */ -#define PORT1_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT1 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW3_Pos \ - (6UL) /*!< PORT1 HWSEL: HW3 (Bit 6) */ -#define PORT1_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT1 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW4_Pos \ - (8UL) /*!< PORT1 HWSEL: HW4 (Bit 8) */ -#define PORT1_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT1 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW5_Pos \ - (10UL) /*!< PORT1 HWSEL: HW5 (Bit 10) */ -#define PORT1_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT1 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW6_Pos \ - (12UL) /*!< PORT1 HWSEL: HW6 (Bit 12) */ -#define PORT1_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT1 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW7_Pos \ - (14UL) /*!< PORT1 HWSEL: HW7 (Bit 14) */ -#define PORT1_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT1 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW8_Pos \ - (16UL) /*!< PORT1 HWSEL: HW8 (Bit 16) */ -#define PORT1_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT1 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW9_Pos \ - (18UL) /*!< PORT1 HWSEL: HW9 (Bit 18) */ -#define PORT1_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT1 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW10_Pos \ - (20UL) /*!< PORT1 HWSEL: HW10 (Bit 20) */ -#define PORT1_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT1 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW11_Pos \ - (22UL) /*!< PORT1 HWSEL: HW11 (Bit 22) */ -#define PORT1_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT1 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW12_Pos \ - (24UL) /*!< PORT1 HWSEL: HW12 (Bit 24) */ -#define PORT1_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT1 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW13_Pos \ - (26UL) /*!< PORT1 HWSEL: HW13 (Bit 26) */ -#define PORT1_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT1 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW14_Pos \ - (28UL) /*!< PORT1 HWSEL: HW14 (Bit 28) */ -#define PORT1_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT1 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT1_HWSEL_HW15_Pos \ - (30UL) /*!< PORT1 HWSEL: HW15 (Bit 30) */ -#define PORT1_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT1 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT2' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT2_OUT --------------------------------- */ -#define PORT2_OUT_P0_Pos (0UL) /*!< PORT2 OUT: P0 (Bit 0) */ -#define PORT2_OUT_P0_Msk (0x1UL) /*!< PORT2 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P1_Pos (1UL) /*!< PORT2 OUT: P1 (Bit 1) */ -#define PORT2_OUT_P1_Msk (0x2UL) /*!< PORT2 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P2_Pos (2UL) /*!< PORT2 OUT: P2 (Bit 2) */ -#define PORT2_OUT_P2_Msk (0x4UL) /*!< PORT2 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P3_Pos (3UL) /*!< PORT2 OUT: P3 (Bit 3) */ -#define PORT2_OUT_P3_Msk (0x8UL) /*!< PORT2 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P4_Pos (4UL) /*!< PORT2 OUT: P4 (Bit 4) */ -#define PORT2_OUT_P4_Msk \ - (0x10UL) /*!< PORT2 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P5_Pos (5UL) /*!< PORT2 OUT: P5 (Bit 5) */ -#define PORT2_OUT_P5_Msk \ - (0x20UL) /*!< PORT2 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P6_Pos (6UL) /*!< PORT2 OUT: P6 (Bit 6) */ -#define PORT2_OUT_P6_Msk \ - (0x40UL) /*!< PORT2 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P7_Pos (7UL) /*!< PORT2 OUT: P7 (Bit 7) */ -#define PORT2_OUT_P7_Msk \ - (0x80UL) /*!< PORT2 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P8_Pos (8UL) /*!< PORT2 OUT: P8 (Bit 8) */ -#define PORT2_OUT_P8_Msk \ - (0x100UL) /*!< PORT2 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P9_Pos (9UL) /*!< PORT2 OUT: P9 (Bit 9) */ -#define PORT2_OUT_P9_Msk \ - (0x200UL) /*!< PORT2 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P10_Pos (10UL) /*!< PORT2 OUT: P10 (Bit 10) */ -#define PORT2_OUT_P10_Msk \ - (0x400UL) /*!< PORT2 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P11_Pos (11UL) /*!< PORT2 OUT: P11 (Bit 11) */ -#define PORT2_OUT_P11_Msk \ - (0x800UL) /*!< PORT2 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P12_Pos (12UL) /*!< PORT2 OUT: P12 (Bit 12) */ -#define PORT2_OUT_P12_Msk \ - (0x1000UL) /*!< PORT2 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P13_Pos (13UL) /*!< PORT2 OUT: P13 (Bit 13) */ -#define PORT2_OUT_P13_Msk \ - (0x2000UL) /*!< PORT2 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P14_Pos (14UL) /*!< PORT2 OUT: P14 (Bit 14) */ -#define PORT2_OUT_P14_Msk \ - (0x4000UL) /*!< PORT2 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT2_OUT_P15_Pos (15UL) /*!< PORT2 OUT: P15 (Bit 15) */ -#define PORT2_OUT_P15_Msk \ - (0x8000UL) /*!< PORT2 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT2_OMR --------------------------------- */ -#define PORT2_OMR_PS0_Pos (0UL) /*!< PORT2 OMR: PS0 (Bit 0) */ -#define PORT2_OMR_PS0_Msk \ - (0x1UL) /*!< PORT2 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS1_Pos (1UL) /*!< PORT2 OMR: PS1 (Bit 1) */ -#define PORT2_OMR_PS1_Msk \ - (0x2UL) /*!< PORT2 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS2_Pos (2UL) /*!< PORT2 OMR: PS2 (Bit 2) */ -#define PORT2_OMR_PS2_Msk \ - (0x4UL) /*!< PORT2 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS3_Pos (3UL) /*!< PORT2 OMR: PS3 (Bit 3) */ -#define PORT2_OMR_PS3_Msk \ - (0x8UL) /*!< PORT2 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS4_Pos (4UL) /*!< PORT2 OMR: PS4 (Bit 4) */ -#define PORT2_OMR_PS4_Msk \ - (0x10UL) /*!< PORT2 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS5_Pos (5UL) /*!< PORT2 OMR: PS5 (Bit 5) */ -#define PORT2_OMR_PS5_Msk \ - (0x20UL) /*!< PORT2 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS6_Pos (6UL) /*!< PORT2 OMR: PS6 (Bit 6) */ -#define PORT2_OMR_PS6_Msk \ - (0x40UL) /*!< PORT2 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS7_Pos (7UL) /*!< PORT2 OMR: PS7 (Bit 7) */ -#define PORT2_OMR_PS7_Msk \ - (0x80UL) /*!< PORT2 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS8_Pos (8UL) /*!< PORT2 OMR: PS8 (Bit 8) */ -#define PORT2_OMR_PS8_Msk \ - (0x100UL) /*!< PORT2 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS9_Pos (9UL) /*!< PORT2 OMR: PS9 (Bit 9) */ -#define PORT2_OMR_PS9_Msk \ - (0x200UL) /*!< PORT2 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS10_Pos \ - (10UL) /*!< PORT2 OMR: PS10 (Bit 10) */ -#define PORT2_OMR_PS10_Msk \ - (0x400UL) /*!< PORT2 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS11_Pos \ - (11UL) /*!< PORT2 OMR: PS11 (Bit 11) */ -#define PORT2_OMR_PS11_Msk \ - (0x800UL) /*!< PORT2 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS12_Pos \ - (12UL) /*!< PORT2 OMR: PS12 (Bit 12) */ -#define PORT2_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT2 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS13_Pos \ - (13UL) /*!< PORT2 OMR: PS13 (Bit 13) */ -#define PORT2_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT2 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS14_Pos \ - (14UL) /*!< PORT2 OMR: PS14 (Bit 14) */ -#define PORT2_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT2 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PS15_Pos \ - (15UL) /*!< PORT2 OMR: PS15 (Bit 15) */ -#define PORT2_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT2 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR0_Pos (16UL) /*!< PORT2 OMR: PR0 (Bit 16) */ -#define PORT2_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT2 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR1_Pos (17UL) /*!< PORT2 OMR: PR1 (Bit 17) */ -#define PORT2_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT2 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR2_Pos (18UL) /*!< PORT2 OMR: PR2 (Bit 18) */ -#define PORT2_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT2 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR3_Pos (19UL) /*!< PORT2 OMR: PR3 (Bit 19) */ -#define PORT2_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT2 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR4_Pos (20UL) /*!< PORT2 OMR: PR4 (Bit 20) */ -#define PORT2_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT2 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR5_Pos (21UL) /*!< PORT2 OMR: PR5 (Bit 21) */ -#define PORT2_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT2 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR6_Pos (22UL) /*!< PORT2 OMR: PR6 (Bit 22) */ -#define PORT2_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT2 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR7_Pos (23UL) /*!< PORT2 OMR: PR7 (Bit 23) */ -#define PORT2_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT2 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR8_Pos (24UL) /*!< PORT2 OMR: PR8 (Bit 24) */ -#define PORT2_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT2 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR9_Pos (25UL) /*!< PORT2 OMR: PR9 (Bit 25) */ -#define PORT2_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT2 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR10_Pos \ - (26UL) /*!< PORT2 OMR: PR10 (Bit 26) */ -#define PORT2_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT2 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR11_Pos \ - (27UL) /*!< PORT2 OMR: PR11 (Bit 27) */ -#define PORT2_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT2 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR12_Pos \ - (28UL) /*!< PORT2 OMR: PR12 (Bit 28) */ -#define PORT2_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT2 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR13_Pos \ - (29UL) /*!< PORT2 OMR: PR13 (Bit 29) */ -#define PORT2_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT2 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR14_Pos \ - (30UL) /*!< PORT2 OMR: PR14 (Bit 30) */ -#define PORT2_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT2 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT2_OMR_PR15_Pos \ - (31UL) /*!< PORT2 OMR: PR15 (Bit 31) */ -#define PORT2_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT2 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT2_IOCR0 -------------------------------- */ -#define PORT2_IOCR0_PC0_Pos \ - (3UL) /*!< PORT2 IOCR0: PC0 (Bit 3) */ -#define PORT2_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT2 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR0_PC1_Pos \ - (11UL) /*!< PORT2 IOCR0: PC1 (Bit 11) */ -#define PORT2_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT2 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR0_PC2_Pos \ - (19UL) /*!< PORT2 IOCR0: PC2 (Bit 19) */ -#define PORT2_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT2 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR0_PC3_Pos \ - (27UL) /*!< PORT2 IOCR0: PC3 (Bit 27) */ -#define PORT2_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT2 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT2_IOCR4 -------------------------------- */ -#define PORT2_IOCR4_PC4_Pos \ - (3UL) /*!< PORT2 IOCR4: PC4 (Bit 3) */ -#define PORT2_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT2 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR4_PC5_Pos \ - (11UL) /*!< PORT2 IOCR4: PC5 (Bit 11) */ -#define PORT2_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT2 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR4_PC6_Pos \ - (19UL) /*!< PORT2 IOCR4: PC6 (Bit 19) */ -#define PORT2_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT2 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR4_PC7_Pos \ - (27UL) /*!< PORT2 IOCR4: PC7 (Bit 27) */ -#define PORT2_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT2 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT2_IOCR8 -------------------------------- */ -#define PORT2_IOCR8_PC8_Pos \ - (3UL) /*!< PORT2 IOCR8: PC8 (Bit 3) */ -#define PORT2_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT2 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR8_PC9_Pos \ - (11UL) /*!< PORT2 IOCR8: PC9 (Bit 11) */ -#define PORT2_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT2 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR8_PC10_Pos \ - (19UL) /*!< PORT2 IOCR8: PC10 (Bit 19) */ -#define PORT2_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT2 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR8_PC11_Pos \ - (27UL) /*!< PORT2 IOCR8: PC11 (Bit 27) */ -#define PORT2_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT2 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT2_IOCR12 -------------------------------- */ -#define PORT2_IOCR12_PC12_Pos \ - (3UL) /*!< PORT2 IOCR12: PC12 (Bit 3) */ -#define PORT2_IOCR12_PC12_Msk \ - (0xf8UL) /*!< PORT2 IOCR12: PC12 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR12_PC13_Pos \ - (11UL) /*!< PORT2 IOCR12: PC13 (Bit 11) */ -#define PORT2_IOCR12_PC13_Msk \ - (0xf800UL) /*!< PORT2 IOCR12: PC13 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR12_PC14_Pos \ - (19UL) /*!< PORT2 IOCR12: PC14 (Bit 19) */ -#define PORT2_IOCR12_PC14_Msk \ - (0xf80000UL) /*!< PORT2 IOCR12: PC14 (Bitfield-Mask: 0x1f) */ -#define PORT2_IOCR12_PC15_Pos \ - (27UL) /*!< PORT2 IOCR12: PC15 (Bit 27) */ -#define PORT2_IOCR12_PC15_Msk \ - (0xf8000000UL) /*!< PORT2 IOCR12: PC15 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT2_IN ---------------------------------- */ -#define PORT2_IN_P0_Pos (0UL) /*!< PORT2 IN: P0 (Bit 0) */ -#define PORT2_IN_P0_Msk (0x1UL) /*!< PORT2 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P1_Pos (1UL) /*!< PORT2 IN: P1 (Bit 1) */ -#define PORT2_IN_P1_Msk (0x2UL) /*!< PORT2 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P2_Pos (2UL) /*!< PORT2 IN: P2 (Bit 2) */ -#define PORT2_IN_P2_Msk (0x4UL) /*!< PORT2 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P3_Pos (3UL) /*!< PORT2 IN: P3 (Bit 3) */ -#define PORT2_IN_P3_Msk (0x8UL) /*!< PORT2 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P4_Pos (4UL) /*!< PORT2 IN: P4 (Bit 4) */ -#define PORT2_IN_P4_Msk (0x10UL) /*!< PORT2 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P5_Pos (5UL) /*!< PORT2 IN: P5 (Bit 5) */ -#define PORT2_IN_P5_Msk (0x20UL) /*!< PORT2 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P6_Pos (6UL) /*!< PORT2 IN: P6 (Bit 6) */ -#define PORT2_IN_P6_Msk (0x40UL) /*!< PORT2 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P7_Pos (7UL) /*!< PORT2 IN: P7 (Bit 7) */ -#define PORT2_IN_P7_Msk (0x80UL) /*!< PORT2 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P8_Pos (8UL) /*!< PORT2 IN: P8 (Bit 8) */ -#define PORT2_IN_P8_Msk \ - (0x100UL) /*!< PORT2 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P9_Pos (9UL) /*!< PORT2 IN: P9 (Bit 9) */ -#define PORT2_IN_P9_Msk \ - (0x200UL) /*!< PORT2 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P10_Pos (10UL) /*!< PORT2 IN: P10 (Bit 10) */ -#define PORT2_IN_P10_Msk \ - (0x400UL) /*!< PORT2 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P11_Pos (11UL) /*!< PORT2 IN: P11 (Bit 11) */ -#define PORT2_IN_P11_Msk \ - (0x800UL) /*!< PORT2 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P12_Pos (12UL) /*!< PORT2 IN: P12 (Bit 12) */ -#define PORT2_IN_P12_Msk \ - (0x1000UL) /*!< PORT2 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P13_Pos (13UL) /*!< PORT2 IN: P13 (Bit 13) */ -#define PORT2_IN_P13_Msk \ - (0x2000UL) /*!< PORT2 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P14_Pos (14UL) /*!< PORT2 IN: P14 (Bit 14) */ -#define PORT2_IN_P14_Msk \ - (0x4000UL) /*!< PORT2 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT2_IN_P15_Pos (15UL) /*!< PORT2 IN: P15 (Bit 15) */ -#define PORT2_IN_P15_Msk \ - (0x8000UL) /*!< PORT2 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT2_PDR0 --------------------------------- */ -#define PORT2_PDR0_PD0_Pos (0UL) /*!< PORT2 PDR0: PD0 (Bit 0) */ -#define PORT2_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT2 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD1_Pos (4UL) /*!< PORT2 PDR0: PD1 (Bit 4) */ -#define PORT2_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT2 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD2_Pos (8UL) /*!< PORT2 PDR0: PD2 (Bit 8) */ -#define PORT2_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT2 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD3_Pos \ - (12UL) /*!< PORT2 PDR0: PD3 (Bit 12) */ -#define PORT2_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT2 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD4_Pos \ - (16UL) /*!< PORT2 PDR0: PD4 (Bit 16) */ -#define PORT2_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT2 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD5_Pos \ - (20UL) /*!< PORT2 PDR0: PD5 (Bit 20) */ -#define PORT2_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT2 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD6_Pos \ - (24UL) /*!< PORT2 PDR0: PD6 (Bit 24) */ -#define PORT2_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT2 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR0_PD7_Pos \ - (28UL) /*!< PORT2 PDR0: PD7 (Bit 28) */ -#define PORT2_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT2 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT2_PDR1 --------------------------------- */ -#define PORT2_PDR1_PD8_Pos (0UL) /*!< PORT2 PDR1: PD8 (Bit 0) */ -#define PORT2_PDR1_PD8_Msk \ - (0x7UL) /*!< PORT2 PDR1: PD8 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD9_Pos (4UL) /*!< PORT2 PDR1: PD9 (Bit 4) */ -#define PORT2_PDR1_PD9_Msk \ - (0x70UL) /*!< PORT2 PDR1: PD9 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD10_Pos \ - (8UL) /*!< PORT2 PDR1: PD10 (Bit 8) */ -#define PORT2_PDR1_PD10_Msk \ - (0x700UL) /*!< PORT2 PDR1: PD10 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD11_Pos \ - (12UL) /*!< PORT2 PDR1: PD11 (Bit 12) */ -#define PORT2_PDR1_PD11_Msk \ - (0x7000UL) /*!< PORT2 PDR1: PD11 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD12_Pos \ - (16UL) /*!< PORT2 PDR1: PD12 (Bit 16) */ -#define PORT2_PDR1_PD12_Msk \ - (0x70000UL) /*!< PORT2 PDR1: PD12 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD13_Pos \ - (20UL) /*!< PORT2 PDR1: PD13 (Bit 20) */ -#define PORT2_PDR1_PD13_Msk \ - (0x700000UL) /*!< PORT2 PDR1: PD13 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD14_Pos \ - (24UL) /*!< PORT2 PDR1: PD14 (Bit 24) */ -#define PORT2_PDR1_PD14_Msk \ - (0x7000000UL) /*!< PORT2 PDR1: PD14 (Bitfield-Mask: 0x07) */ -#define PORT2_PDR1_PD15_Pos \ - (28UL) /*!< PORT2 PDR1: PD15 (Bit 28) */ -#define PORT2_PDR1_PD15_Msk \ - (0x70000000UL) /*!< PORT2 PDR1: PD15 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT2_PDISC -------------------------------- */ -#define PORT2_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT2 PDISC: PDIS0 (Bit 0) */ -#define PORT2_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT2 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT2 PDISC: PDIS1 (Bit 1) */ -#define PORT2_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT2 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT2 PDISC: PDIS2 (Bit 2) */ -#define PORT2_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT2 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT2 PDISC: PDIS3 (Bit 3) */ -#define PORT2_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT2 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT2 PDISC: PDIS4 (Bit 4) */ -#define PORT2_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT2 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT2 PDISC: PDIS5 (Bit 5) */ -#define PORT2_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT2 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT2 PDISC: PDIS6 (Bit 6) */ -#define PORT2_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT2 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT2 PDISC: PDIS7 (Bit 7) */ -#define PORT2_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT2 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT2 PDISC: PDIS8 (Bit 8) */ -#define PORT2_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT2 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT2 PDISC: PDIS9 (Bit 9) */ -#define PORT2_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT2 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT2 PDISC: PDIS10 (Bit 10) */ -#define PORT2_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT2 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT2 PDISC: PDIS11 (Bit 11) */ -#define PORT2_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT2 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT2 PDISC: PDIS12 (Bit 12) */ -#define PORT2_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT2 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT2 PDISC: PDIS13 (Bit 13) */ -#define PORT2_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT2 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT2 PDISC: PDIS14 (Bit 14) */ -#define PORT2_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT2 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT2_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT2 PDISC: PDIS15 (Bit 15) */ -#define PORT2_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT2 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT2_PPS --------------------------------- */ -#define PORT2_PPS_PPS0_Pos (0UL) /*!< PORT2 PPS: PPS0 (Bit 0) */ -#define PORT2_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT2 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS1_Pos (1UL) /*!< PORT2 PPS: PPS1 (Bit 1) */ -#define PORT2_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT2 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS2_Pos (2UL) /*!< PORT2 PPS: PPS2 (Bit 2) */ -#define PORT2_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT2 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS3_Pos (3UL) /*!< PORT2 PPS: PPS3 (Bit 3) */ -#define PORT2_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT2 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS4_Pos (4UL) /*!< PORT2 PPS: PPS4 (Bit 4) */ -#define PORT2_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT2 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS5_Pos (5UL) /*!< PORT2 PPS: PPS5 (Bit 5) */ -#define PORT2_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT2 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS6_Pos (6UL) /*!< PORT2 PPS: PPS6 (Bit 6) */ -#define PORT2_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT2 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS7_Pos (7UL) /*!< PORT2 PPS: PPS7 (Bit 7) */ -#define PORT2_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT2 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS8_Pos (8UL) /*!< PORT2 PPS: PPS8 (Bit 8) */ -#define PORT2_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT2 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS9_Pos (9UL) /*!< PORT2 PPS: PPS9 (Bit 9) */ -#define PORT2_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT2 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS10_Pos \ - (10UL) /*!< PORT2 PPS: PPS10 (Bit 10) */ -#define PORT2_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT2 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS11_Pos \ - (11UL) /*!< PORT2 PPS: PPS11 (Bit 11) */ -#define PORT2_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT2 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS12_Pos \ - (12UL) /*!< PORT2 PPS: PPS12 (Bit 12) */ -#define PORT2_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT2 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS13_Pos \ - (13UL) /*!< PORT2 PPS: PPS13 (Bit 13) */ -#define PORT2_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT2 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS14_Pos \ - (14UL) /*!< PORT2 PPS: PPS14 (Bit 14) */ -#define PORT2_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT2 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT2_PPS_PPS15_Pos \ - (15UL) /*!< PORT2 PPS: PPS15 (Bit 15) */ -#define PORT2_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT2 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT2_HWSEL -------------------------------- */ -#define PORT2_HWSEL_HW0_Pos \ - (0UL) /*!< PORT2 HWSEL: HW0 (Bit 0) */ -#define PORT2_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT2 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW1_Pos \ - (2UL) /*!< PORT2 HWSEL: HW1 (Bit 2) */ -#define PORT2_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT2 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW2_Pos \ - (4UL) /*!< PORT2 HWSEL: HW2 (Bit 4) */ -#define PORT2_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT2 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW3_Pos \ - (6UL) /*!< PORT2 HWSEL: HW3 (Bit 6) */ -#define PORT2_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT2 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW4_Pos \ - (8UL) /*!< PORT2 HWSEL: HW4 (Bit 8) */ -#define PORT2_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT2 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW5_Pos \ - (10UL) /*!< PORT2 HWSEL: HW5 (Bit 10) */ -#define PORT2_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT2 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW6_Pos \ - (12UL) /*!< PORT2 HWSEL: HW6 (Bit 12) */ -#define PORT2_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT2 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW7_Pos \ - (14UL) /*!< PORT2 HWSEL: HW7 (Bit 14) */ -#define PORT2_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT2 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW8_Pos \ - (16UL) /*!< PORT2 HWSEL: HW8 (Bit 16) */ -#define PORT2_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT2 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW9_Pos \ - (18UL) /*!< PORT2 HWSEL: HW9 (Bit 18) */ -#define PORT2_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT2 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW10_Pos \ - (20UL) /*!< PORT2 HWSEL: HW10 (Bit 20) */ -#define PORT2_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT2 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW11_Pos \ - (22UL) /*!< PORT2 HWSEL: HW11 (Bit 22) */ -#define PORT2_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT2 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW12_Pos \ - (24UL) /*!< PORT2 HWSEL: HW12 (Bit 24) */ -#define PORT2_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT2 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW13_Pos \ - (26UL) /*!< PORT2 HWSEL: HW13 (Bit 26) */ -#define PORT2_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT2 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW14_Pos \ - (28UL) /*!< PORT2 HWSEL: HW14 (Bit 28) */ -#define PORT2_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT2 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT2_HWSEL_HW15_Pos \ - (30UL) /*!< PORT2 HWSEL: HW15 (Bit 30) */ -#define PORT2_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT2 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT3' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT3_OUT --------------------------------- */ -#define PORT3_OUT_P0_Pos (0UL) /*!< PORT3 OUT: P0 (Bit 0) */ -#define PORT3_OUT_P0_Msk (0x1UL) /*!< PORT3 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P1_Pos (1UL) /*!< PORT3 OUT: P1 (Bit 1) */ -#define PORT3_OUT_P1_Msk (0x2UL) /*!< PORT3 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P2_Pos (2UL) /*!< PORT3 OUT: P2 (Bit 2) */ -#define PORT3_OUT_P2_Msk (0x4UL) /*!< PORT3 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P3_Pos (3UL) /*!< PORT3 OUT: P3 (Bit 3) */ -#define PORT3_OUT_P3_Msk (0x8UL) /*!< PORT3 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P4_Pos (4UL) /*!< PORT3 OUT: P4 (Bit 4) */ -#define PORT3_OUT_P4_Msk \ - (0x10UL) /*!< PORT3 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P5_Pos (5UL) /*!< PORT3 OUT: P5 (Bit 5) */ -#define PORT3_OUT_P5_Msk \ - (0x20UL) /*!< PORT3 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P6_Pos (6UL) /*!< PORT3 OUT: P6 (Bit 6) */ -#define PORT3_OUT_P6_Msk \ - (0x40UL) /*!< PORT3 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P7_Pos (7UL) /*!< PORT3 OUT: P7 (Bit 7) */ -#define PORT3_OUT_P7_Msk \ - (0x80UL) /*!< PORT3 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P8_Pos (8UL) /*!< PORT3 OUT: P8 (Bit 8) */ -#define PORT3_OUT_P8_Msk \ - (0x100UL) /*!< PORT3 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P9_Pos (9UL) /*!< PORT3 OUT: P9 (Bit 9) */ -#define PORT3_OUT_P9_Msk \ - (0x200UL) /*!< PORT3 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P10_Pos (10UL) /*!< PORT3 OUT: P10 (Bit 10) */ -#define PORT3_OUT_P10_Msk \ - (0x400UL) /*!< PORT3 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P11_Pos (11UL) /*!< PORT3 OUT: P11 (Bit 11) */ -#define PORT3_OUT_P11_Msk \ - (0x800UL) /*!< PORT3 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P12_Pos (12UL) /*!< PORT3 OUT: P12 (Bit 12) */ -#define PORT3_OUT_P12_Msk \ - (0x1000UL) /*!< PORT3 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P13_Pos (13UL) /*!< PORT3 OUT: P13 (Bit 13) */ -#define PORT3_OUT_P13_Msk \ - (0x2000UL) /*!< PORT3 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P14_Pos (14UL) /*!< PORT3 OUT: P14 (Bit 14) */ -#define PORT3_OUT_P14_Msk \ - (0x4000UL) /*!< PORT3 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT3_OUT_P15_Pos (15UL) /*!< PORT3 OUT: P15 (Bit 15) */ -#define PORT3_OUT_P15_Msk \ - (0x8000UL) /*!< PORT3 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT3_OMR --------------------------------- */ -#define PORT3_OMR_PS0_Pos (0UL) /*!< PORT3 OMR: PS0 (Bit 0) */ -#define PORT3_OMR_PS0_Msk \ - (0x1UL) /*!< PORT3 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS1_Pos (1UL) /*!< PORT3 OMR: PS1 (Bit 1) */ -#define PORT3_OMR_PS1_Msk \ - (0x2UL) /*!< PORT3 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS2_Pos (2UL) /*!< PORT3 OMR: PS2 (Bit 2) */ -#define PORT3_OMR_PS2_Msk \ - (0x4UL) /*!< PORT3 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS3_Pos (3UL) /*!< PORT3 OMR: PS3 (Bit 3) */ -#define PORT3_OMR_PS3_Msk \ - (0x8UL) /*!< PORT3 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS4_Pos (4UL) /*!< PORT3 OMR: PS4 (Bit 4) */ -#define PORT3_OMR_PS4_Msk \ - (0x10UL) /*!< PORT3 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS5_Pos (5UL) /*!< PORT3 OMR: PS5 (Bit 5) */ -#define PORT3_OMR_PS5_Msk \ - (0x20UL) /*!< PORT3 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS6_Pos (6UL) /*!< PORT3 OMR: PS6 (Bit 6) */ -#define PORT3_OMR_PS6_Msk \ - (0x40UL) /*!< PORT3 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS7_Pos (7UL) /*!< PORT3 OMR: PS7 (Bit 7) */ -#define PORT3_OMR_PS7_Msk \ - (0x80UL) /*!< PORT3 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS8_Pos (8UL) /*!< PORT3 OMR: PS8 (Bit 8) */ -#define PORT3_OMR_PS8_Msk \ - (0x100UL) /*!< PORT3 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS9_Pos (9UL) /*!< PORT3 OMR: PS9 (Bit 9) */ -#define PORT3_OMR_PS9_Msk \ - (0x200UL) /*!< PORT3 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS10_Pos \ - (10UL) /*!< PORT3 OMR: PS10 (Bit 10) */ -#define PORT3_OMR_PS10_Msk \ - (0x400UL) /*!< PORT3 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS11_Pos \ - (11UL) /*!< PORT3 OMR: PS11 (Bit 11) */ -#define PORT3_OMR_PS11_Msk \ - (0x800UL) /*!< PORT3 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS12_Pos \ - (12UL) /*!< PORT3 OMR: PS12 (Bit 12) */ -#define PORT3_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT3 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS13_Pos \ - (13UL) /*!< PORT3 OMR: PS13 (Bit 13) */ -#define PORT3_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT3 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS14_Pos \ - (14UL) /*!< PORT3 OMR: PS14 (Bit 14) */ -#define PORT3_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT3 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PS15_Pos \ - (15UL) /*!< PORT3 OMR: PS15 (Bit 15) */ -#define PORT3_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT3 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR0_Pos (16UL) /*!< PORT3 OMR: PR0 (Bit 16) */ -#define PORT3_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT3 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR1_Pos (17UL) /*!< PORT3 OMR: PR1 (Bit 17) */ -#define PORT3_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT3 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR2_Pos (18UL) /*!< PORT3 OMR: PR2 (Bit 18) */ -#define PORT3_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT3 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR3_Pos (19UL) /*!< PORT3 OMR: PR3 (Bit 19) */ -#define PORT3_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT3 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR4_Pos (20UL) /*!< PORT3 OMR: PR4 (Bit 20) */ -#define PORT3_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT3 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR5_Pos (21UL) /*!< PORT3 OMR: PR5 (Bit 21) */ -#define PORT3_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT3 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR6_Pos (22UL) /*!< PORT3 OMR: PR6 (Bit 22) */ -#define PORT3_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT3 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR7_Pos (23UL) /*!< PORT3 OMR: PR7 (Bit 23) */ -#define PORT3_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT3 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR8_Pos (24UL) /*!< PORT3 OMR: PR8 (Bit 24) */ -#define PORT3_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT3 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR9_Pos (25UL) /*!< PORT3 OMR: PR9 (Bit 25) */ -#define PORT3_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT3 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR10_Pos \ - (26UL) /*!< PORT3 OMR: PR10 (Bit 26) */ -#define PORT3_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT3 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR11_Pos \ - (27UL) /*!< PORT3 OMR: PR11 (Bit 27) */ -#define PORT3_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT3 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR12_Pos \ - (28UL) /*!< PORT3 OMR: PR12 (Bit 28) */ -#define PORT3_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT3 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR13_Pos \ - (29UL) /*!< PORT3 OMR: PR13 (Bit 29) */ -#define PORT3_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT3 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR14_Pos \ - (30UL) /*!< PORT3 OMR: PR14 (Bit 30) */ -#define PORT3_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT3 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT3_OMR_PR15_Pos \ - (31UL) /*!< PORT3 OMR: PR15 (Bit 31) */ -#define PORT3_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT3 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT3_IOCR0 -------------------------------- */ -#define PORT3_IOCR0_PC0_Pos \ - (3UL) /*!< PORT3 IOCR0: PC0 (Bit 3) */ -#define PORT3_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT3 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR0_PC1_Pos \ - (11UL) /*!< PORT3 IOCR0: PC1 (Bit 11) */ -#define PORT3_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT3 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR0_PC2_Pos \ - (19UL) /*!< PORT3 IOCR0: PC2 (Bit 19) */ -#define PORT3_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT3 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR0_PC3_Pos \ - (27UL) /*!< PORT3 IOCR0: PC3 (Bit 27) */ -#define PORT3_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT3 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT3_IOCR4 -------------------------------- */ -#define PORT3_IOCR4_PC4_Pos \ - (3UL) /*!< PORT3 IOCR4: PC4 (Bit 3) */ -#define PORT3_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT3 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR4_PC5_Pos \ - (11UL) /*!< PORT3 IOCR4: PC5 (Bit 11) */ -#define PORT3_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT3 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR4_PC6_Pos \ - (19UL) /*!< PORT3 IOCR4: PC6 (Bit 19) */ -#define PORT3_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT3 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT3_IOCR4_PC7_Pos \ - (27UL) /*!< PORT3 IOCR4: PC7 (Bit 27) */ -#define PORT3_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT3 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT3_IN ---------------------------------- */ -#define PORT3_IN_P0_Pos (0UL) /*!< PORT3 IN: P0 (Bit 0) */ -#define PORT3_IN_P0_Msk (0x1UL) /*!< PORT3 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P1_Pos (1UL) /*!< PORT3 IN: P1 (Bit 1) */ -#define PORT3_IN_P1_Msk (0x2UL) /*!< PORT3 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P2_Pos (2UL) /*!< PORT3 IN: P2 (Bit 2) */ -#define PORT3_IN_P2_Msk (0x4UL) /*!< PORT3 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P3_Pos (3UL) /*!< PORT3 IN: P3 (Bit 3) */ -#define PORT3_IN_P3_Msk (0x8UL) /*!< PORT3 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P4_Pos (4UL) /*!< PORT3 IN: P4 (Bit 4) */ -#define PORT3_IN_P4_Msk (0x10UL) /*!< PORT3 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P5_Pos (5UL) /*!< PORT3 IN: P5 (Bit 5) */ -#define PORT3_IN_P5_Msk (0x20UL) /*!< PORT3 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P6_Pos (6UL) /*!< PORT3 IN: P6 (Bit 6) */ -#define PORT3_IN_P6_Msk (0x40UL) /*!< PORT3 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P7_Pos (7UL) /*!< PORT3 IN: P7 (Bit 7) */ -#define PORT3_IN_P7_Msk (0x80UL) /*!< PORT3 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P8_Pos (8UL) /*!< PORT3 IN: P8 (Bit 8) */ -#define PORT3_IN_P8_Msk \ - (0x100UL) /*!< PORT3 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P9_Pos (9UL) /*!< PORT3 IN: P9 (Bit 9) */ -#define PORT3_IN_P9_Msk \ - (0x200UL) /*!< PORT3 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P10_Pos (10UL) /*!< PORT3 IN: P10 (Bit 10) */ -#define PORT3_IN_P10_Msk \ - (0x400UL) /*!< PORT3 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P11_Pos (11UL) /*!< PORT3 IN: P11 (Bit 11) */ -#define PORT3_IN_P11_Msk \ - (0x800UL) /*!< PORT3 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P12_Pos (12UL) /*!< PORT3 IN: P12 (Bit 12) */ -#define PORT3_IN_P12_Msk \ - (0x1000UL) /*!< PORT3 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P13_Pos (13UL) /*!< PORT3 IN: P13 (Bit 13) */ -#define PORT3_IN_P13_Msk \ - (0x2000UL) /*!< PORT3 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P14_Pos (14UL) /*!< PORT3 IN: P14 (Bit 14) */ -#define PORT3_IN_P14_Msk \ - (0x4000UL) /*!< PORT3 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT3_IN_P15_Pos (15UL) /*!< PORT3 IN: P15 (Bit 15) */ -#define PORT3_IN_P15_Msk \ - (0x8000UL) /*!< PORT3 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT3_PDR0 --------------------------------- */ -#define PORT3_PDR0_PD0_Pos (0UL) /*!< PORT3 PDR0: PD0 (Bit 0) */ -#define PORT3_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT3 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD1_Pos (4UL) /*!< PORT3 PDR0: PD1 (Bit 4) */ -#define PORT3_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT3 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD2_Pos (8UL) /*!< PORT3 PDR0: PD2 (Bit 8) */ -#define PORT3_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT3 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD3_Pos \ - (12UL) /*!< PORT3 PDR0: PD3 (Bit 12) */ -#define PORT3_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT3 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD4_Pos \ - (16UL) /*!< PORT3 PDR0: PD4 (Bit 16) */ -#define PORT3_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT3 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD5_Pos \ - (20UL) /*!< PORT3 PDR0: PD5 (Bit 20) */ -#define PORT3_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT3 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD6_Pos \ - (24UL) /*!< PORT3 PDR0: PD6 (Bit 24) */ -#define PORT3_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT3 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT3_PDR0_PD7_Pos \ - (28UL) /*!< PORT3 PDR0: PD7 (Bit 28) */ -#define PORT3_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT3 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT3_PDISC -------------------------------- */ -#define PORT3_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT3 PDISC: PDIS0 (Bit 0) */ -#define PORT3_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT3 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT3 PDISC: PDIS1 (Bit 1) */ -#define PORT3_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT3 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT3 PDISC: PDIS2 (Bit 2) */ -#define PORT3_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT3 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT3 PDISC: PDIS3 (Bit 3) */ -#define PORT3_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT3 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT3 PDISC: PDIS4 (Bit 4) */ -#define PORT3_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT3 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT3 PDISC: PDIS5 (Bit 5) */ -#define PORT3_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT3 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT3 PDISC: PDIS6 (Bit 6) */ -#define PORT3_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT3 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT3 PDISC: PDIS7 (Bit 7) */ -#define PORT3_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT3 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT3 PDISC: PDIS8 (Bit 8) */ -#define PORT3_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT3 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT3 PDISC: PDIS9 (Bit 9) */ -#define PORT3_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT3 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT3 PDISC: PDIS10 (Bit 10) */ -#define PORT3_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT3 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT3 PDISC: PDIS11 (Bit 11) */ -#define PORT3_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT3 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT3 PDISC: PDIS12 (Bit 12) */ -#define PORT3_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT3 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT3 PDISC: PDIS13 (Bit 13) */ -#define PORT3_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT3 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT3 PDISC: PDIS14 (Bit 14) */ -#define PORT3_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT3 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT3_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT3 PDISC: PDIS15 (Bit 15) */ -#define PORT3_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT3 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT3_PPS --------------------------------- */ -#define PORT3_PPS_PPS0_Pos (0UL) /*!< PORT3 PPS: PPS0 (Bit 0) */ -#define PORT3_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT3 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS1_Pos (1UL) /*!< PORT3 PPS: PPS1 (Bit 1) */ -#define PORT3_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT3 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS2_Pos (2UL) /*!< PORT3 PPS: PPS2 (Bit 2) */ -#define PORT3_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT3 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS3_Pos (3UL) /*!< PORT3 PPS: PPS3 (Bit 3) */ -#define PORT3_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT3 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS4_Pos (4UL) /*!< PORT3 PPS: PPS4 (Bit 4) */ -#define PORT3_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT3 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS5_Pos (5UL) /*!< PORT3 PPS: PPS5 (Bit 5) */ -#define PORT3_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT3 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS6_Pos (6UL) /*!< PORT3 PPS: PPS6 (Bit 6) */ -#define PORT3_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT3 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS7_Pos (7UL) /*!< PORT3 PPS: PPS7 (Bit 7) */ -#define PORT3_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT3 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS8_Pos (8UL) /*!< PORT3 PPS: PPS8 (Bit 8) */ -#define PORT3_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT3 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS9_Pos (9UL) /*!< PORT3 PPS: PPS9 (Bit 9) */ -#define PORT3_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT3 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS10_Pos \ - (10UL) /*!< PORT3 PPS: PPS10 (Bit 10) */ -#define PORT3_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT3 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS11_Pos \ - (11UL) /*!< PORT3 PPS: PPS11 (Bit 11) */ -#define PORT3_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT3 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS12_Pos \ - (12UL) /*!< PORT3 PPS: PPS12 (Bit 12) */ -#define PORT3_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT3 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS13_Pos \ - (13UL) /*!< PORT3 PPS: PPS13 (Bit 13) */ -#define PORT3_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT3 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS14_Pos \ - (14UL) /*!< PORT3 PPS: PPS14 (Bit 14) */ -#define PORT3_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT3 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT3_PPS_PPS15_Pos \ - (15UL) /*!< PORT3 PPS: PPS15 (Bit 15) */ -#define PORT3_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT3 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT3_HWSEL -------------------------------- */ -#define PORT3_HWSEL_HW0_Pos \ - (0UL) /*!< PORT3 HWSEL: HW0 (Bit 0) */ -#define PORT3_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT3 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW1_Pos \ - (2UL) /*!< PORT3 HWSEL: HW1 (Bit 2) */ -#define PORT3_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT3 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW2_Pos \ - (4UL) /*!< PORT3 HWSEL: HW2 (Bit 4) */ -#define PORT3_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT3 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW3_Pos \ - (6UL) /*!< PORT3 HWSEL: HW3 (Bit 6) */ -#define PORT3_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT3 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW4_Pos \ - (8UL) /*!< PORT3 HWSEL: HW4 (Bit 8) */ -#define PORT3_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT3 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW5_Pos \ - (10UL) /*!< PORT3 HWSEL: HW5 (Bit 10) */ -#define PORT3_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT3 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW6_Pos \ - (12UL) /*!< PORT3 HWSEL: HW6 (Bit 12) */ -#define PORT3_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT3 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW7_Pos \ - (14UL) /*!< PORT3 HWSEL: HW7 (Bit 14) */ -#define PORT3_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT3 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW8_Pos \ - (16UL) /*!< PORT3 HWSEL: HW8 (Bit 16) */ -#define PORT3_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT3 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW9_Pos \ - (18UL) /*!< PORT3 HWSEL: HW9 (Bit 18) */ -#define PORT3_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT3 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW10_Pos \ - (20UL) /*!< PORT3 HWSEL: HW10 (Bit 20) */ -#define PORT3_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT3 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW11_Pos \ - (22UL) /*!< PORT3 HWSEL: HW11 (Bit 22) */ -#define PORT3_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT3 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW12_Pos \ - (24UL) /*!< PORT3 HWSEL: HW12 (Bit 24) */ -#define PORT3_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT3 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW13_Pos \ - (26UL) /*!< PORT3 HWSEL: HW13 (Bit 26) */ -#define PORT3_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT3 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW14_Pos \ - (28UL) /*!< PORT3 HWSEL: HW14 (Bit 28) */ -#define PORT3_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT3 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT3_HWSEL_HW15_Pos \ - (30UL) /*!< PORT3 HWSEL: HW15 (Bit 30) */ -#define PORT3_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT3 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT4' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT4_OUT --------------------------------- */ -#define PORT4_OUT_P0_Pos (0UL) /*!< PORT4 OUT: P0 (Bit 0) */ -#define PORT4_OUT_P0_Msk (0x1UL) /*!< PORT4 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P1_Pos (1UL) /*!< PORT4 OUT: P1 (Bit 1) */ -#define PORT4_OUT_P1_Msk (0x2UL) /*!< PORT4 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P2_Pos (2UL) /*!< PORT4 OUT: P2 (Bit 2) */ -#define PORT4_OUT_P2_Msk (0x4UL) /*!< PORT4 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P3_Pos (3UL) /*!< PORT4 OUT: P3 (Bit 3) */ -#define PORT4_OUT_P3_Msk (0x8UL) /*!< PORT4 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P4_Pos (4UL) /*!< PORT4 OUT: P4 (Bit 4) */ -#define PORT4_OUT_P4_Msk \ - (0x10UL) /*!< PORT4 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P5_Pos (5UL) /*!< PORT4 OUT: P5 (Bit 5) */ -#define PORT4_OUT_P5_Msk \ - (0x20UL) /*!< PORT4 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P6_Pos (6UL) /*!< PORT4 OUT: P6 (Bit 6) */ -#define PORT4_OUT_P6_Msk \ - (0x40UL) /*!< PORT4 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P7_Pos (7UL) /*!< PORT4 OUT: P7 (Bit 7) */ -#define PORT4_OUT_P7_Msk \ - (0x80UL) /*!< PORT4 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P8_Pos (8UL) /*!< PORT4 OUT: P8 (Bit 8) */ -#define PORT4_OUT_P8_Msk \ - (0x100UL) /*!< PORT4 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P9_Pos (9UL) /*!< PORT4 OUT: P9 (Bit 9) */ -#define PORT4_OUT_P9_Msk \ - (0x200UL) /*!< PORT4 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P10_Pos (10UL) /*!< PORT4 OUT: P10 (Bit 10) */ -#define PORT4_OUT_P10_Msk \ - (0x400UL) /*!< PORT4 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P11_Pos (11UL) /*!< PORT4 OUT: P11 (Bit 11) */ -#define PORT4_OUT_P11_Msk \ - (0x800UL) /*!< PORT4 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P12_Pos (12UL) /*!< PORT4 OUT: P12 (Bit 12) */ -#define PORT4_OUT_P12_Msk \ - (0x1000UL) /*!< PORT4 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P13_Pos (13UL) /*!< PORT4 OUT: P13 (Bit 13) */ -#define PORT4_OUT_P13_Msk \ - (0x2000UL) /*!< PORT4 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P14_Pos (14UL) /*!< PORT4 OUT: P14 (Bit 14) */ -#define PORT4_OUT_P14_Msk \ - (0x4000UL) /*!< PORT4 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT4_OUT_P15_Pos (15UL) /*!< PORT4 OUT: P15 (Bit 15) */ -#define PORT4_OUT_P15_Msk \ - (0x8000UL) /*!< PORT4 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT4_OMR --------------------------------- */ -#define PORT4_OMR_PS0_Pos (0UL) /*!< PORT4 OMR: PS0 (Bit 0) */ -#define PORT4_OMR_PS0_Msk \ - (0x1UL) /*!< PORT4 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS1_Pos (1UL) /*!< PORT4 OMR: PS1 (Bit 1) */ -#define PORT4_OMR_PS1_Msk \ - (0x2UL) /*!< PORT4 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS2_Pos (2UL) /*!< PORT4 OMR: PS2 (Bit 2) */ -#define PORT4_OMR_PS2_Msk \ - (0x4UL) /*!< PORT4 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS3_Pos (3UL) /*!< PORT4 OMR: PS3 (Bit 3) */ -#define PORT4_OMR_PS3_Msk \ - (0x8UL) /*!< PORT4 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS4_Pos (4UL) /*!< PORT4 OMR: PS4 (Bit 4) */ -#define PORT4_OMR_PS4_Msk \ - (0x10UL) /*!< PORT4 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS5_Pos (5UL) /*!< PORT4 OMR: PS5 (Bit 5) */ -#define PORT4_OMR_PS5_Msk \ - (0x20UL) /*!< PORT4 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS6_Pos (6UL) /*!< PORT4 OMR: PS6 (Bit 6) */ -#define PORT4_OMR_PS6_Msk \ - (0x40UL) /*!< PORT4 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS7_Pos (7UL) /*!< PORT4 OMR: PS7 (Bit 7) */ -#define PORT4_OMR_PS7_Msk \ - (0x80UL) /*!< PORT4 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS8_Pos (8UL) /*!< PORT4 OMR: PS8 (Bit 8) */ -#define PORT4_OMR_PS8_Msk \ - (0x100UL) /*!< PORT4 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS9_Pos (9UL) /*!< PORT4 OMR: PS9 (Bit 9) */ -#define PORT4_OMR_PS9_Msk \ - (0x200UL) /*!< PORT4 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS10_Pos \ - (10UL) /*!< PORT4 OMR: PS10 (Bit 10) */ -#define PORT4_OMR_PS10_Msk \ - (0x400UL) /*!< PORT4 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS11_Pos \ - (11UL) /*!< PORT4 OMR: PS11 (Bit 11) */ -#define PORT4_OMR_PS11_Msk \ - (0x800UL) /*!< PORT4 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS12_Pos \ - (12UL) /*!< PORT4 OMR: PS12 (Bit 12) */ -#define PORT4_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT4 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS13_Pos \ - (13UL) /*!< PORT4 OMR: PS13 (Bit 13) */ -#define PORT4_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT4 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS14_Pos \ - (14UL) /*!< PORT4 OMR: PS14 (Bit 14) */ -#define PORT4_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT4 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PS15_Pos \ - (15UL) /*!< PORT4 OMR: PS15 (Bit 15) */ -#define PORT4_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT4 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR0_Pos (16UL) /*!< PORT4 OMR: PR0 (Bit 16) */ -#define PORT4_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT4 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR1_Pos (17UL) /*!< PORT4 OMR: PR1 (Bit 17) */ -#define PORT4_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT4 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR2_Pos (18UL) /*!< PORT4 OMR: PR2 (Bit 18) */ -#define PORT4_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT4 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR3_Pos (19UL) /*!< PORT4 OMR: PR3 (Bit 19) */ -#define PORT4_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT4 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR4_Pos (20UL) /*!< PORT4 OMR: PR4 (Bit 20) */ -#define PORT4_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT4 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR5_Pos (21UL) /*!< PORT4 OMR: PR5 (Bit 21) */ -#define PORT4_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT4 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR6_Pos (22UL) /*!< PORT4 OMR: PR6 (Bit 22) */ -#define PORT4_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT4 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR7_Pos (23UL) /*!< PORT4 OMR: PR7 (Bit 23) */ -#define PORT4_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT4 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR8_Pos (24UL) /*!< PORT4 OMR: PR8 (Bit 24) */ -#define PORT4_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT4 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR9_Pos (25UL) /*!< PORT4 OMR: PR9 (Bit 25) */ -#define PORT4_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT4 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR10_Pos \ - (26UL) /*!< PORT4 OMR: PR10 (Bit 26) */ -#define PORT4_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT4 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR11_Pos \ - (27UL) /*!< PORT4 OMR: PR11 (Bit 27) */ -#define PORT4_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT4 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR12_Pos \ - (28UL) /*!< PORT4 OMR: PR12 (Bit 28) */ -#define PORT4_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT4 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR13_Pos \ - (29UL) /*!< PORT4 OMR: PR13 (Bit 29) */ -#define PORT4_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT4 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR14_Pos \ - (30UL) /*!< PORT4 OMR: PR14 (Bit 30) */ -#define PORT4_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT4 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT4_OMR_PR15_Pos \ - (31UL) /*!< PORT4 OMR: PR15 (Bit 31) */ -#define PORT4_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT4 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT4_IOCR0 -------------------------------- */ -#define PORT4_IOCR0_PC0_Pos \ - (3UL) /*!< PORT4 IOCR0: PC0 (Bit 3) */ -#define PORT4_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT4 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT4_IOCR0_PC1_Pos \ - (11UL) /*!< PORT4 IOCR0: PC1 (Bit 11) */ -#define PORT4_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT4 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT4_IOCR0_PC2_Pos \ - (19UL) /*!< PORT4 IOCR0: PC2 (Bit 19) */ -#define PORT4_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT4 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT4_IOCR0_PC3_Pos \ - (27UL) /*!< PORT4 IOCR0: PC3 (Bit 27) */ -#define PORT4_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT4 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT4_IN ---------------------------------- */ -#define PORT4_IN_P0_Pos (0UL) /*!< PORT4 IN: P0 (Bit 0) */ -#define PORT4_IN_P0_Msk (0x1UL) /*!< PORT4 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P1_Pos (1UL) /*!< PORT4 IN: P1 (Bit 1) */ -#define PORT4_IN_P1_Msk (0x2UL) /*!< PORT4 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P2_Pos (2UL) /*!< PORT4 IN: P2 (Bit 2) */ -#define PORT4_IN_P2_Msk (0x4UL) /*!< PORT4 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P3_Pos (3UL) /*!< PORT4 IN: P3 (Bit 3) */ -#define PORT4_IN_P3_Msk (0x8UL) /*!< PORT4 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P4_Pos (4UL) /*!< PORT4 IN: P4 (Bit 4) */ -#define PORT4_IN_P4_Msk (0x10UL) /*!< PORT4 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P5_Pos (5UL) /*!< PORT4 IN: P5 (Bit 5) */ -#define PORT4_IN_P5_Msk (0x20UL) /*!< PORT4 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P6_Pos (6UL) /*!< PORT4 IN: P6 (Bit 6) */ -#define PORT4_IN_P6_Msk (0x40UL) /*!< PORT4 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P7_Pos (7UL) /*!< PORT4 IN: P7 (Bit 7) */ -#define PORT4_IN_P7_Msk (0x80UL) /*!< PORT4 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P8_Pos (8UL) /*!< PORT4 IN: P8 (Bit 8) */ -#define PORT4_IN_P8_Msk \ - (0x100UL) /*!< PORT4 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P9_Pos (9UL) /*!< PORT4 IN: P9 (Bit 9) */ -#define PORT4_IN_P9_Msk \ - (0x200UL) /*!< PORT4 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P10_Pos (10UL) /*!< PORT4 IN: P10 (Bit 10) */ -#define PORT4_IN_P10_Msk \ - (0x400UL) /*!< PORT4 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P11_Pos (11UL) /*!< PORT4 IN: P11 (Bit 11) */ -#define PORT4_IN_P11_Msk \ - (0x800UL) /*!< PORT4 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P12_Pos (12UL) /*!< PORT4 IN: P12 (Bit 12) */ -#define PORT4_IN_P12_Msk \ - (0x1000UL) /*!< PORT4 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P13_Pos (13UL) /*!< PORT4 IN: P13 (Bit 13) */ -#define PORT4_IN_P13_Msk \ - (0x2000UL) /*!< PORT4 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P14_Pos (14UL) /*!< PORT4 IN: P14 (Bit 14) */ -#define PORT4_IN_P14_Msk \ - (0x4000UL) /*!< PORT4 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT4_IN_P15_Pos (15UL) /*!< PORT4 IN: P15 (Bit 15) */ -#define PORT4_IN_P15_Msk \ - (0x8000UL) /*!< PORT4 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT4_PDR0 --------------------------------- */ -#define PORT4_PDR0_PD0_Pos (0UL) /*!< PORT4 PDR0: PD0 (Bit 0) */ -#define PORT4_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT4 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT4_PDR0_PD1_Pos (4UL) /*!< PORT4 PDR0: PD1 (Bit 4) */ -#define PORT4_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT4 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT4_PDR0_PD2_Pos (8UL) /*!< PORT4 PDR0: PD2 (Bit 8) */ -#define PORT4_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT4 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT4_PDR0_PD3_Pos \ - (12UL) /*!< PORT4 PDR0: PD3 (Bit 12) */ -#define PORT4_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT4 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT4_PDR0_PD4_Pos \ - (16UL) /*!< PORT4 PDR0: PD4 (Bit 16) */ -#define PORT4_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT4 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT4_PDR0_PD5_Pos \ - (20UL) /*!< PORT4 PDR0: PD5 (Bit 20) */ -#define PORT4_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT4 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT4_PDR0_PD6_Pos \ - (24UL) /*!< PORT4 PDR0: PD6 (Bit 24) */ -#define PORT4_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT4 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT4_PDR0_PD7_Pos \ - (28UL) /*!< PORT4 PDR0: PD7 (Bit 28) */ -#define PORT4_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT4 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT4_PDISC -------------------------------- */ -#define PORT4_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT4 PDISC: PDIS0 (Bit 0) */ -#define PORT4_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT4 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT4 PDISC: PDIS1 (Bit 1) */ -#define PORT4_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT4 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT4 PDISC: PDIS2 (Bit 2) */ -#define PORT4_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT4 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT4 PDISC: PDIS3 (Bit 3) */ -#define PORT4_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT4 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT4 PDISC: PDIS4 (Bit 4) */ -#define PORT4_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT4 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT4 PDISC: PDIS5 (Bit 5) */ -#define PORT4_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT4 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT4 PDISC: PDIS6 (Bit 6) */ -#define PORT4_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT4 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT4 PDISC: PDIS7 (Bit 7) */ -#define PORT4_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT4 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT4 PDISC: PDIS8 (Bit 8) */ -#define PORT4_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT4 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT4 PDISC: PDIS9 (Bit 9) */ -#define PORT4_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT4 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT4 PDISC: PDIS10 (Bit 10) */ -#define PORT4_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT4 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT4 PDISC: PDIS11 (Bit 11) */ -#define PORT4_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT4 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT4 PDISC: PDIS12 (Bit 12) */ -#define PORT4_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT4 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT4 PDISC: PDIS13 (Bit 13) */ -#define PORT4_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT4 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT4 PDISC: PDIS14 (Bit 14) */ -#define PORT4_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT4 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT4_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT4 PDISC: PDIS15 (Bit 15) */ -#define PORT4_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT4 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT4_PPS --------------------------------- */ -#define PORT4_PPS_PPS0_Pos (0UL) /*!< PORT4 PPS: PPS0 (Bit 0) */ -#define PORT4_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT4 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS1_Pos (1UL) /*!< PORT4 PPS: PPS1 (Bit 1) */ -#define PORT4_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT4 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS2_Pos (2UL) /*!< PORT4 PPS: PPS2 (Bit 2) */ -#define PORT4_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT4 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS3_Pos (3UL) /*!< PORT4 PPS: PPS3 (Bit 3) */ -#define PORT4_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT4 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS4_Pos (4UL) /*!< PORT4 PPS: PPS4 (Bit 4) */ -#define PORT4_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT4 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS5_Pos (5UL) /*!< PORT4 PPS: PPS5 (Bit 5) */ -#define PORT4_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT4 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS6_Pos (6UL) /*!< PORT4 PPS: PPS6 (Bit 6) */ -#define PORT4_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT4 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS7_Pos (7UL) /*!< PORT4 PPS: PPS7 (Bit 7) */ -#define PORT4_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT4 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS8_Pos (8UL) /*!< PORT4 PPS: PPS8 (Bit 8) */ -#define PORT4_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT4 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS9_Pos (9UL) /*!< PORT4 PPS: PPS9 (Bit 9) */ -#define PORT4_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT4 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS10_Pos \ - (10UL) /*!< PORT4 PPS: PPS10 (Bit 10) */ -#define PORT4_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT4 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS11_Pos \ - (11UL) /*!< PORT4 PPS: PPS11 (Bit 11) */ -#define PORT4_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT4 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS12_Pos \ - (12UL) /*!< PORT4 PPS: PPS12 (Bit 12) */ -#define PORT4_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT4 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS13_Pos \ - (13UL) /*!< PORT4 PPS: PPS13 (Bit 13) */ -#define PORT4_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT4 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS14_Pos \ - (14UL) /*!< PORT4 PPS: PPS14 (Bit 14) */ -#define PORT4_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT4 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT4_PPS_PPS15_Pos \ - (15UL) /*!< PORT4 PPS: PPS15 (Bit 15) */ -#define PORT4_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT4 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT4_HWSEL -------------------------------- */ -#define PORT4_HWSEL_HW0_Pos \ - (0UL) /*!< PORT4 HWSEL: HW0 (Bit 0) */ -#define PORT4_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT4 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW1_Pos \ - (2UL) /*!< PORT4 HWSEL: HW1 (Bit 2) */ -#define PORT4_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT4 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW2_Pos \ - (4UL) /*!< PORT4 HWSEL: HW2 (Bit 4) */ -#define PORT4_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT4 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW3_Pos \ - (6UL) /*!< PORT4 HWSEL: HW3 (Bit 6) */ -#define PORT4_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT4 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW4_Pos \ - (8UL) /*!< PORT4 HWSEL: HW4 (Bit 8) */ -#define PORT4_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT4 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW5_Pos \ - (10UL) /*!< PORT4 HWSEL: HW5 (Bit 10) */ -#define PORT4_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT4 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW6_Pos \ - (12UL) /*!< PORT4 HWSEL: HW6 (Bit 12) */ -#define PORT4_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT4 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW7_Pos \ - (14UL) /*!< PORT4 HWSEL: HW7 (Bit 14) */ -#define PORT4_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT4 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW8_Pos \ - (16UL) /*!< PORT4 HWSEL: HW8 (Bit 16) */ -#define PORT4_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT4 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW9_Pos \ - (18UL) /*!< PORT4 HWSEL: HW9 (Bit 18) */ -#define PORT4_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT4 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW10_Pos \ - (20UL) /*!< PORT4 HWSEL: HW10 (Bit 20) */ -#define PORT4_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT4 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW11_Pos \ - (22UL) /*!< PORT4 HWSEL: HW11 (Bit 22) */ -#define PORT4_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT4 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW12_Pos \ - (24UL) /*!< PORT4 HWSEL: HW12 (Bit 24) */ -#define PORT4_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT4 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW13_Pos \ - (26UL) /*!< PORT4 HWSEL: HW13 (Bit 26) */ -#define PORT4_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT4 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW14_Pos \ - (28UL) /*!< PORT4 HWSEL: HW14 (Bit 28) */ -#define PORT4_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT4 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT4_HWSEL_HW15_Pos \ - (30UL) /*!< PORT4 HWSEL: HW15 (Bit 30) */ -#define PORT4_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT4 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT5' Position & Mask ================ */ -/* ================================================================================ */ - -/* ---------------------------------- PORT5_OUT --------------------------------- */ -#define PORT5_OUT_P0_Pos (0UL) /*!< PORT5 OUT: P0 (Bit 0) */ -#define PORT5_OUT_P0_Msk (0x1UL) /*!< PORT5 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P1_Pos (1UL) /*!< PORT5 OUT: P1 (Bit 1) */ -#define PORT5_OUT_P1_Msk (0x2UL) /*!< PORT5 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P2_Pos (2UL) /*!< PORT5 OUT: P2 (Bit 2) */ -#define PORT5_OUT_P2_Msk (0x4UL) /*!< PORT5 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P3_Pos (3UL) /*!< PORT5 OUT: P3 (Bit 3) */ -#define PORT5_OUT_P3_Msk (0x8UL) /*!< PORT5 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P4_Pos (4UL) /*!< PORT5 OUT: P4 (Bit 4) */ -#define PORT5_OUT_P4_Msk \ - (0x10UL) /*!< PORT5 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P5_Pos (5UL) /*!< PORT5 OUT: P5 (Bit 5) */ -#define PORT5_OUT_P5_Msk \ - (0x20UL) /*!< PORT5 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P6_Pos (6UL) /*!< PORT5 OUT: P6 (Bit 6) */ -#define PORT5_OUT_P6_Msk \ - (0x40UL) /*!< PORT5 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P7_Pos (7UL) /*!< PORT5 OUT: P7 (Bit 7) */ -#define PORT5_OUT_P7_Msk \ - (0x80UL) /*!< PORT5 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P8_Pos (8UL) /*!< PORT5 OUT: P8 (Bit 8) */ -#define PORT5_OUT_P8_Msk \ - (0x100UL) /*!< PORT5 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P9_Pos (9UL) /*!< PORT5 OUT: P9 (Bit 9) */ -#define PORT5_OUT_P9_Msk \ - (0x200UL) /*!< PORT5 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P10_Pos (10UL) /*!< PORT5 OUT: P10 (Bit 10) */ -#define PORT5_OUT_P10_Msk \ - (0x400UL) /*!< PORT5 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P11_Pos (11UL) /*!< PORT5 OUT: P11 (Bit 11) */ -#define PORT5_OUT_P11_Msk \ - (0x800UL) /*!< PORT5 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P12_Pos (12UL) /*!< PORT5 OUT: P12 (Bit 12) */ -#define PORT5_OUT_P12_Msk \ - (0x1000UL) /*!< PORT5 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P13_Pos (13UL) /*!< PORT5 OUT: P13 (Bit 13) */ -#define PORT5_OUT_P13_Msk \ - (0x2000UL) /*!< PORT5 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P14_Pos (14UL) /*!< PORT5 OUT: P14 (Bit 14) */ -#define PORT5_OUT_P14_Msk \ - (0x4000UL) /*!< PORT5 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT5_OUT_P15_Pos (15UL) /*!< PORT5 OUT: P15 (Bit 15) */ -#define PORT5_OUT_P15_Msk \ - (0x8000UL) /*!< PORT5 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT5_OMR --------------------------------- */ -#define PORT5_OMR_PS0_Pos (0UL) /*!< PORT5 OMR: PS0 (Bit 0) */ -#define PORT5_OMR_PS0_Msk \ - (0x1UL) /*!< PORT5 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS1_Pos (1UL) /*!< PORT5 OMR: PS1 (Bit 1) */ -#define PORT5_OMR_PS1_Msk \ - (0x2UL) /*!< PORT5 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS2_Pos (2UL) /*!< PORT5 OMR: PS2 (Bit 2) */ -#define PORT5_OMR_PS2_Msk \ - (0x4UL) /*!< PORT5 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS3_Pos (3UL) /*!< PORT5 OMR: PS3 (Bit 3) */ -#define PORT5_OMR_PS3_Msk \ - (0x8UL) /*!< PORT5 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS4_Pos (4UL) /*!< PORT5 OMR: PS4 (Bit 4) */ -#define PORT5_OMR_PS4_Msk \ - (0x10UL) /*!< PORT5 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS5_Pos (5UL) /*!< PORT5 OMR: PS5 (Bit 5) */ -#define PORT5_OMR_PS5_Msk \ - (0x20UL) /*!< PORT5 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS6_Pos (6UL) /*!< PORT5 OMR: PS6 (Bit 6) */ -#define PORT5_OMR_PS6_Msk \ - (0x40UL) /*!< PORT5 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS7_Pos (7UL) /*!< PORT5 OMR: PS7 (Bit 7) */ -#define PORT5_OMR_PS7_Msk \ - (0x80UL) /*!< PORT5 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS8_Pos (8UL) /*!< PORT5 OMR: PS8 (Bit 8) */ -#define PORT5_OMR_PS8_Msk \ - (0x100UL) /*!< PORT5 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS9_Pos (9UL) /*!< PORT5 OMR: PS9 (Bit 9) */ -#define PORT5_OMR_PS9_Msk \ - (0x200UL) /*!< PORT5 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS10_Pos \ - (10UL) /*!< PORT5 OMR: PS10 (Bit 10) */ -#define PORT5_OMR_PS10_Msk \ - (0x400UL) /*!< PORT5 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS11_Pos \ - (11UL) /*!< PORT5 OMR: PS11 (Bit 11) */ -#define PORT5_OMR_PS11_Msk \ - (0x800UL) /*!< PORT5 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS12_Pos \ - (12UL) /*!< PORT5 OMR: PS12 (Bit 12) */ -#define PORT5_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT5 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS13_Pos \ - (13UL) /*!< PORT5 OMR: PS13 (Bit 13) */ -#define PORT5_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT5 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS14_Pos \ - (14UL) /*!< PORT5 OMR: PS14 (Bit 14) */ -#define PORT5_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT5 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PS15_Pos \ - (15UL) /*!< PORT5 OMR: PS15 (Bit 15) */ -#define PORT5_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT5 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR0_Pos (16UL) /*!< PORT5 OMR: PR0 (Bit 16) */ -#define PORT5_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT5 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR1_Pos (17UL) /*!< PORT5 OMR: PR1 (Bit 17) */ -#define PORT5_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT5 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR2_Pos (18UL) /*!< PORT5 OMR: PR2 (Bit 18) */ -#define PORT5_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT5 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR3_Pos (19UL) /*!< PORT5 OMR: PR3 (Bit 19) */ -#define PORT5_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT5 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR4_Pos (20UL) /*!< PORT5 OMR: PR4 (Bit 20) */ -#define PORT5_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT5 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR5_Pos (21UL) /*!< PORT5 OMR: PR5 (Bit 21) */ -#define PORT5_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT5 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR6_Pos (22UL) /*!< PORT5 OMR: PR6 (Bit 22) */ -#define PORT5_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT5 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR7_Pos (23UL) /*!< PORT5 OMR: PR7 (Bit 23) */ -#define PORT5_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT5 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR8_Pos (24UL) /*!< PORT5 OMR: PR8 (Bit 24) */ -#define PORT5_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT5 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR9_Pos (25UL) /*!< PORT5 OMR: PR9 (Bit 25) */ -#define PORT5_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT5 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR10_Pos \ - (26UL) /*!< PORT5 OMR: PR10 (Bit 26) */ -#define PORT5_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT5 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR11_Pos \ - (27UL) /*!< PORT5 OMR: PR11 (Bit 27) */ -#define PORT5_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT5 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR12_Pos \ - (28UL) /*!< PORT5 OMR: PR12 (Bit 28) */ -#define PORT5_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT5 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR13_Pos \ - (29UL) /*!< PORT5 OMR: PR13 (Bit 29) */ -#define PORT5_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT5 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR14_Pos \ - (30UL) /*!< PORT5 OMR: PR14 (Bit 30) */ -#define PORT5_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT5 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT5_OMR_PR15_Pos \ - (31UL) /*!< PORT5 OMR: PR15 (Bit 31) */ -#define PORT5_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT5 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT5_IOCR0 -------------------------------- */ -#define PORT5_IOCR0_PC0_Pos \ - (3UL) /*!< PORT5 IOCR0: PC0 (Bit 3) */ -#define PORT5_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT5 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT5_IOCR0_PC1_Pos \ - (11UL) /*!< PORT5 IOCR0: PC1 (Bit 11) */ -#define PORT5_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT5 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT5_IOCR0_PC2_Pos \ - (19UL) /*!< PORT5 IOCR0: PC2 (Bit 19) */ -#define PORT5_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT5 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT5_IOCR0_PC3_Pos \ - (27UL) /*!< PORT5 IOCR0: PC3 (Bit 27) */ -#define PORT5_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT5 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* --------------------------------- PORT5_IOCR4 -------------------------------- */ -#define PORT5_IOCR4_PC4_Pos \ - (3UL) /*!< PORT5 IOCR4: PC4 (Bit 3) */ -#define PORT5_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT5 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT5_IOCR4_PC5_Pos \ - (11UL) /*!< PORT5 IOCR4: PC5 (Bit 11) */ -#define PORT5_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT5 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT5_IOCR4_PC6_Pos \ - (19UL) /*!< PORT5 IOCR4: PC6 (Bit 19) */ -#define PORT5_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT5 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT5_IOCR4_PC7_Pos \ - (27UL) /*!< PORT5 IOCR4: PC7 (Bit 27) */ -#define PORT5_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT5 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT5_IN ---------------------------------- */ -#define PORT5_IN_P0_Pos (0UL) /*!< PORT5 IN: P0 (Bit 0) */ -#define PORT5_IN_P0_Msk (0x1UL) /*!< PORT5 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P1_Pos (1UL) /*!< PORT5 IN: P1 (Bit 1) */ -#define PORT5_IN_P1_Msk (0x2UL) /*!< PORT5 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P2_Pos (2UL) /*!< PORT5 IN: P2 (Bit 2) */ -#define PORT5_IN_P2_Msk (0x4UL) /*!< PORT5 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P3_Pos (3UL) /*!< PORT5 IN: P3 (Bit 3) */ -#define PORT5_IN_P3_Msk (0x8UL) /*!< PORT5 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P4_Pos (4UL) /*!< PORT5 IN: P4 (Bit 4) */ -#define PORT5_IN_P4_Msk (0x10UL) /*!< PORT5 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P5_Pos (5UL) /*!< PORT5 IN: P5 (Bit 5) */ -#define PORT5_IN_P5_Msk (0x20UL) /*!< PORT5 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P6_Pos (6UL) /*!< PORT5 IN: P6 (Bit 6) */ -#define PORT5_IN_P6_Msk (0x40UL) /*!< PORT5 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P7_Pos (7UL) /*!< PORT5 IN: P7 (Bit 7) */ -#define PORT5_IN_P7_Msk (0x80UL) /*!< PORT5 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P8_Pos (8UL) /*!< PORT5 IN: P8 (Bit 8) */ -#define PORT5_IN_P8_Msk \ - (0x100UL) /*!< PORT5 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P9_Pos (9UL) /*!< PORT5 IN: P9 (Bit 9) */ -#define PORT5_IN_P9_Msk \ - (0x200UL) /*!< PORT5 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P10_Pos (10UL) /*!< PORT5 IN: P10 (Bit 10) */ -#define PORT5_IN_P10_Msk \ - (0x400UL) /*!< PORT5 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P11_Pos (11UL) /*!< PORT5 IN: P11 (Bit 11) */ -#define PORT5_IN_P11_Msk \ - (0x800UL) /*!< PORT5 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P12_Pos (12UL) /*!< PORT5 IN: P12 (Bit 12) */ -#define PORT5_IN_P12_Msk \ - (0x1000UL) /*!< PORT5 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P13_Pos (13UL) /*!< PORT5 IN: P13 (Bit 13) */ -#define PORT5_IN_P13_Msk \ - (0x2000UL) /*!< PORT5 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P14_Pos (14UL) /*!< PORT5 IN: P14 (Bit 14) */ -#define PORT5_IN_P14_Msk \ - (0x4000UL) /*!< PORT5 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT5_IN_P15_Pos (15UL) /*!< PORT5 IN: P15 (Bit 15) */ -#define PORT5_IN_P15_Msk \ - (0x8000UL) /*!< PORT5 IN: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT5_PDR0 --------------------------------- */ -#define PORT5_PDR0_PD0_Pos (0UL) /*!< PORT5 PDR0: PD0 (Bit 0) */ -#define PORT5_PDR0_PD0_Msk \ - (0x7UL) /*!< PORT5 PDR0: PD0 (Bitfield-Mask: 0x07) */ -#define PORT5_PDR0_PD1_Pos (4UL) /*!< PORT5 PDR0: PD1 (Bit 4) */ -#define PORT5_PDR0_PD1_Msk \ - (0x70UL) /*!< PORT5 PDR0: PD1 (Bitfield-Mask: 0x07) */ -#define PORT5_PDR0_PD2_Pos (8UL) /*!< PORT5 PDR0: PD2 (Bit 8) */ -#define PORT5_PDR0_PD2_Msk \ - (0x700UL) /*!< PORT5 PDR0: PD2 (Bitfield-Mask: 0x07) */ -#define PORT5_PDR0_PD3_Pos \ - (12UL) /*!< PORT5 PDR0: PD3 (Bit 12) */ -#define PORT5_PDR0_PD3_Msk \ - (0x7000UL) /*!< PORT5 PDR0: PD3 (Bitfield-Mask: 0x07) */ -#define PORT5_PDR0_PD4_Pos \ - (16UL) /*!< PORT5 PDR0: PD4 (Bit 16) */ -#define PORT5_PDR0_PD4_Msk \ - (0x70000UL) /*!< PORT5 PDR0: PD4 (Bitfield-Mask: 0x07) */ -#define PORT5_PDR0_PD5_Pos \ - (20UL) /*!< PORT5 PDR0: PD5 (Bit 20) */ -#define PORT5_PDR0_PD5_Msk \ - (0x700000UL) /*!< PORT5 PDR0: PD5 (Bitfield-Mask: 0x07) */ -#define PORT5_PDR0_PD6_Pos \ - (24UL) /*!< PORT5 PDR0: PD6 (Bit 24) */ -#define PORT5_PDR0_PD6_Msk \ - (0x7000000UL) /*!< PORT5 PDR0: PD6 (Bitfield-Mask: 0x07) */ -#define PORT5_PDR0_PD7_Pos \ - (28UL) /*!< PORT5 PDR0: PD7 (Bit 28) */ -#define PORT5_PDR0_PD7_Msk \ - (0x70000000UL) /*!< PORT5 PDR0: PD7 (Bitfield-Mask: 0x07) */ - -/* --------------------------------- PORT5_PDISC -------------------------------- */ -#define PORT5_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT5 PDISC: PDIS0 (Bit 0) */ -#define PORT5_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT5 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT5 PDISC: PDIS1 (Bit 1) */ -#define PORT5_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT5 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT5 PDISC: PDIS2 (Bit 2) */ -#define PORT5_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT5 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT5 PDISC: PDIS3 (Bit 3) */ -#define PORT5_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT5 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT5 PDISC: PDIS4 (Bit 4) */ -#define PORT5_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT5 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT5 PDISC: PDIS5 (Bit 5) */ -#define PORT5_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT5 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT5 PDISC: PDIS6 (Bit 6) */ -#define PORT5_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT5 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT5 PDISC: PDIS7 (Bit 7) */ -#define PORT5_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT5 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT5 PDISC: PDIS8 (Bit 8) */ -#define PORT5_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT5 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT5 PDISC: PDIS9 (Bit 9) */ -#define PORT5_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT5 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT5 PDISC: PDIS10 (Bit 10) */ -#define PORT5_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT5 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT5 PDISC: PDIS11 (Bit 11) */ -#define PORT5_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT5 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT5 PDISC: PDIS12 (Bit 12) */ -#define PORT5_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT5 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT5 PDISC: PDIS13 (Bit 13) */ -#define PORT5_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT5 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT5 PDISC: PDIS14 (Bit 14) */ -#define PORT5_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT5 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT5_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT5 PDISC: PDIS15 (Bit 15) */ -#define PORT5_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT5 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* ---------------------------------- PORT5_PPS --------------------------------- */ -#define PORT5_PPS_PPS0_Pos (0UL) /*!< PORT5 PPS: PPS0 (Bit 0) */ -#define PORT5_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT5 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS1_Pos (1UL) /*!< PORT5 PPS: PPS1 (Bit 1) */ -#define PORT5_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT5 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS2_Pos (2UL) /*!< PORT5 PPS: PPS2 (Bit 2) */ -#define PORT5_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT5 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS3_Pos (3UL) /*!< PORT5 PPS: PPS3 (Bit 3) */ -#define PORT5_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT5 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS4_Pos (4UL) /*!< PORT5 PPS: PPS4 (Bit 4) */ -#define PORT5_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT5 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS5_Pos (5UL) /*!< PORT5 PPS: PPS5 (Bit 5) */ -#define PORT5_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT5 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS6_Pos (6UL) /*!< PORT5 PPS: PPS6 (Bit 6) */ -#define PORT5_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT5 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS7_Pos (7UL) /*!< PORT5 PPS: PPS7 (Bit 7) */ -#define PORT5_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT5 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS8_Pos (8UL) /*!< PORT5 PPS: PPS8 (Bit 8) */ -#define PORT5_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT5 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS9_Pos (9UL) /*!< PORT5 PPS: PPS9 (Bit 9) */ -#define PORT5_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT5 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS10_Pos \ - (10UL) /*!< PORT5 PPS: PPS10 (Bit 10) */ -#define PORT5_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT5 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS11_Pos \ - (11UL) /*!< PORT5 PPS: PPS11 (Bit 11) */ -#define PORT5_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT5 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS12_Pos \ - (12UL) /*!< PORT5 PPS: PPS12 (Bit 12) */ -#define PORT5_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT5 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS13_Pos \ - (13UL) /*!< PORT5 PPS: PPS13 (Bit 13) */ -#define PORT5_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT5 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS14_Pos \ - (14UL) /*!< PORT5 PPS: PPS14 (Bit 14) */ -#define PORT5_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT5 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT5_PPS_PPS15_Pos \ - (15UL) /*!< PORT5 PPS: PPS15 (Bit 15) */ -#define PORT5_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT5 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT5_HWSEL -------------------------------- */ -#define PORT5_HWSEL_HW0_Pos \ - (0UL) /*!< PORT5 HWSEL: HW0 (Bit 0) */ -#define PORT5_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT5 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW1_Pos \ - (2UL) /*!< PORT5 HWSEL: HW1 (Bit 2) */ -#define PORT5_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT5 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW2_Pos \ - (4UL) /*!< PORT5 HWSEL: HW2 (Bit 4) */ -#define PORT5_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT5 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW3_Pos \ - (6UL) /*!< PORT5 HWSEL: HW3 (Bit 6) */ -#define PORT5_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT5 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW4_Pos \ - (8UL) /*!< PORT5 HWSEL: HW4 (Bit 8) */ -#define PORT5_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT5 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW5_Pos \ - (10UL) /*!< PORT5 HWSEL: HW5 (Bit 10) */ -#define PORT5_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT5 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW6_Pos \ - (12UL) /*!< PORT5 HWSEL: HW6 (Bit 12) */ -#define PORT5_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT5 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW7_Pos \ - (14UL) /*!< PORT5 HWSEL: HW7 (Bit 14) */ -#define PORT5_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT5 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW8_Pos \ - (16UL) /*!< PORT5 HWSEL: HW8 (Bit 16) */ -#define PORT5_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT5 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW9_Pos \ - (18UL) /*!< PORT5 HWSEL: HW9 (Bit 18) */ -#define PORT5_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT5 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW10_Pos \ - (20UL) /*!< PORT5 HWSEL: HW10 (Bit 20) */ -#define PORT5_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT5 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW11_Pos \ - (22UL) /*!< PORT5 HWSEL: HW11 (Bit 22) */ -#define PORT5_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT5 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW12_Pos \ - (24UL) /*!< PORT5 HWSEL: HW12 (Bit 24) */ -#define PORT5_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT5 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW13_Pos \ - (26UL) /*!< PORT5 HWSEL: HW13 (Bit 26) */ -#define PORT5_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT5 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW14_Pos \ - (28UL) /*!< PORT5 HWSEL: HW14 (Bit 28) */ -#define PORT5_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT5 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT5_HWSEL_HW15_Pos \ - (30UL) /*!< PORT5 HWSEL: HW15 (Bit 30) */ -#define PORT5_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT5 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT14' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- PORT14_OUT --------------------------------- */ -#define PORT14_OUT_P0_Pos (0UL) /*!< PORT14 OUT: P0 (Bit 0) */ -#define PORT14_OUT_P0_Msk \ - (0x1UL) /*!< PORT14 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P1_Pos (1UL) /*!< PORT14 OUT: P1 (Bit 1) */ -#define PORT14_OUT_P1_Msk \ - (0x2UL) /*!< PORT14 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P2_Pos (2UL) /*!< PORT14 OUT: P2 (Bit 2) */ -#define PORT14_OUT_P2_Msk \ - (0x4UL) /*!< PORT14 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P3_Pos (3UL) /*!< PORT14 OUT: P3 (Bit 3) */ -#define PORT14_OUT_P3_Msk \ - (0x8UL) /*!< PORT14 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P4_Pos (4UL) /*!< PORT14 OUT: P4 (Bit 4) */ -#define PORT14_OUT_P4_Msk \ - (0x10UL) /*!< PORT14 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P5_Pos (5UL) /*!< PORT14 OUT: P5 (Bit 5) */ -#define PORT14_OUT_P5_Msk \ - (0x20UL) /*!< PORT14 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P6_Pos (6UL) /*!< PORT14 OUT: P6 (Bit 6) */ -#define PORT14_OUT_P6_Msk \ - (0x40UL) /*!< PORT14 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P7_Pos (7UL) /*!< PORT14 OUT: P7 (Bit 7) */ -#define PORT14_OUT_P7_Msk \ - (0x80UL) /*!< PORT14 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P8_Pos (8UL) /*!< PORT14 OUT: P8 (Bit 8) */ -#define PORT14_OUT_P8_Msk \ - (0x100UL) /*!< PORT14 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P9_Pos (9UL) /*!< PORT14 OUT: P9 (Bit 9) */ -#define PORT14_OUT_P9_Msk \ - (0x200UL) /*!< PORT14 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P10_Pos \ - (10UL) /*!< PORT14 OUT: P10 (Bit 10) */ -#define PORT14_OUT_P10_Msk \ - (0x400UL) /*!< PORT14 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P11_Pos \ - (11UL) /*!< PORT14 OUT: P11 (Bit 11) */ -#define PORT14_OUT_P11_Msk \ - (0x800UL) /*!< PORT14 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P12_Pos \ - (12UL) /*!< PORT14 OUT: P12 (Bit 12) */ -#define PORT14_OUT_P12_Msk \ - (0x1000UL) /*!< PORT14 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P13_Pos \ - (13UL) /*!< PORT14 OUT: P13 (Bit 13) */ -#define PORT14_OUT_P13_Msk \ - (0x2000UL) /*!< PORT14 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P14_Pos \ - (14UL) /*!< PORT14 OUT: P14 (Bit 14) */ -#define PORT14_OUT_P14_Msk \ - (0x4000UL) /*!< PORT14 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT14_OUT_P15_Pos \ - (15UL) /*!< PORT14 OUT: P15 (Bit 15) */ -#define PORT14_OUT_P15_Msk \ - (0x8000UL) /*!< PORT14 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT14_OMR --------------------------------- */ -#define PORT14_OMR_PS0_Pos (0UL) /*!< PORT14 OMR: PS0 (Bit 0) */ -#define PORT14_OMR_PS0_Msk \ - (0x1UL) /*!< PORT14 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS1_Pos (1UL) /*!< PORT14 OMR: PS1 (Bit 1) */ -#define PORT14_OMR_PS1_Msk \ - (0x2UL) /*!< PORT14 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS2_Pos (2UL) /*!< PORT14 OMR: PS2 (Bit 2) */ -#define PORT14_OMR_PS2_Msk \ - (0x4UL) /*!< PORT14 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS3_Pos (3UL) /*!< PORT14 OMR: PS3 (Bit 3) */ -#define PORT14_OMR_PS3_Msk \ - (0x8UL) /*!< PORT14 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS4_Pos (4UL) /*!< PORT14 OMR: PS4 (Bit 4) */ -#define PORT14_OMR_PS4_Msk \ - (0x10UL) /*!< PORT14 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS5_Pos (5UL) /*!< PORT14 OMR: PS5 (Bit 5) */ -#define PORT14_OMR_PS5_Msk \ - (0x20UL) /*!< PORT14 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS6_Pos (6UL) /*!< PORT14 OMR: PS6 (Bit 6) */ -#define PORT14_OMR_PS6_Msk \ - (0x40UL) /*!< PORT14 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS7_Pos (7UL) /*!< PORT14 OMR: PS7 (Bit 7) */ -#define PORT14_OMR_PS7_Msk \ - (0x80UL) /*!< PORT14 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS8_Pos (8UL) /*!< PORT14 OMR: PS8 (Bit 8) */ -#define PORT14_OMR_PS8_Msk \ - (0x100UL) /*!< PORT14 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS9_Pos (9UL) /*!< PORT14 OMR: PS9 (Bit 9) */ -#define PORT14_OMR_PS9_Msk \ - (0x200UL) /*!< PORT14 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS10_Pos \ - (10UL) /*!< PORT14 OMR: PS10 (Bit 10) */ -#define PORT14_OMR_PS10_Msk \ - (0x400UL) /*!< PORT14 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS11_Pos \ - (11UL) /*!< PORT14 OMR: PS11 (Bit 11) */ -#define PORT14_OMR_PS11_Msk \ - (0x800UL) /*!< PORT14 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS12_Pos \ - (12UL) /*!< PORT14 OMR: PS12 (Bit 12) */ -#define PORT14_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT14 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS13_Pos \ - (13UL) /*!< PORT14 OMR: PS13 (Bit 13) */ -#define PORT14_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT14 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS14_Pos \ - (14UL) /*!< PORT14 OMR: PS14 (Bit 14) */ -#define PORT14_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT14 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PS15_Pos \ - (15UL) /*!< PORT14 OMR: PS15 (Bit 15) */ -#define PORT14_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT14 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR0_Pos \ - (16UL) /*!< PORT14 OMR: PR0 (Bit 16) */ -#define PORT14_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT14 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR1_Pos \ - (17UL) /*!< PORT14 OMR: PR1 (Bit 17) */ -#define PORT14_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT14 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR2_Pos \ - (18UL) /*!< PORT14 OMR: PR2 (Bit 18) */ -#define PORT14_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT14 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR3_Pos \ - (19UL) /*!< PORT14 OMR: PR3 (Bit 19) */ -#define PORT14_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT14 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR4_Pos \ - (20UL) /*!< PORT14 OMR: PR4 (Bit 20) */ -#define PORT14_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT14 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR5_Pos \ - (21UL) /*!< PORT14 OMR: PR5 (Bit 21) */ -#define PORT14_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT14 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR6_Pos \ - (22UL) /*!< PORT14 OMR: PR6 (Bit 22) */ -#define PORT14_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT14 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR7_Pos \ - (23UL) /*!< PORT14 OMR: PR7 (Bit 23) */ -#define PORT14_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT14 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR8_Pos \ - (24UL) /*!< PORT14 OMR: PR8 (Bit 24) */ -#define PORT14_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT14 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR9_Pos \ - (25UL) /*!< PORT14 OMR: PR9 (Bit 25) */ -#define PORT14_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT14 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR10_Pos \ - (26UL) /*!< PORT14 OMR: PR10 (Bit 26) */ -#define PORT14_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT14 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR11_Pos \ - (27UL) /*!< PORT14 OMR: PR11 (Bit 27) */ -#define PORT14_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT14 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR12_Pos \ - (28UL) /*!< PORT14 OMR: PR12 (Bit 28) */ -#define PORT14_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT14 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR13_Pos \ - (29UL) /*!< PORT14 OMR: PR13 (Bit 29) */ -#define PORT14_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT14 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR14_Pos \ - (30UL) /*!< PORT14 OMR: PR14 (Bit 30) */ -#define PORT14_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT14 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT14_OMR_PR15_Pos \ - (31UL) /*!< PORT14 OMR: PR15 (Bit 31) */ -#define PORT14_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT14 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT14_IOCR0 -------------------------------- */ -#define PORT14_IOCR0_PC0_Pos \ - (3UL) /*!< PORT14 IOCR0: PC0 (Bit 3) */ -#define PORT14_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT14 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR0_PC1_Pos \ - (11UL) /*!< PORT14 IOCR0: PC1 (Bit 11) */ -#define PORT14_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT14 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR0_PC2_Pos \ - (19UL) /*!< PORT14 IOCR0: PC2 (Bit 19) */ -#define PORT14_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT14 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR0_PC3_Pos \ - (27UL) /*!< PORT14 IOCR0: PC3 (Bit 27) */ -#define PORT14_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT14 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT14_IOCR4 -------------------------------- */ -#define PORT14_IOCR4_PC4_Pos \ - (3UL) /*!< PORT14 IOCR4: PC4 (Bit 3) */ -#define PORT14_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT14 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR4_PC5_Pos \ - (11UL) /*!< PORT14 IOCR4: PC5 (Bit 11) */ -#define PORT14_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT14 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR4_PC6_Pos \ - (19UL) /*!< PORT14 IOCR4: PC6 (Bit 19) */ -#define PORT14_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT14 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR4_PC7_Pos \ - (27UL) /*!< PORT14 IOCR4: PC7 (Bit 27) */ -#define PORT14_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT14 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT14_IOCR8 -------------------------------- */ -#define PORT14_IOCR8_PC8_Pos \ - (3UL) /*!< PORT14 IOCR8: PC8 (Bit 3) */ -#define PORT14_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT14 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR8_PC9_Pos \ - (11UL) /*!< PORT14 IOCR8: PC9 (Bit 11) */ -#define PORT14_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT14 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR8_PC10_Pos \ - (19UL) /*!< PORT14 IOCR8: PC10 (Bit 19) */ -#define PORT14_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT14 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR8_PC11_Pos \ - (27UL) /*!< PORT14 IOCR8: PC11 (Bit 27) */ -#define PORT14_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT14 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT14_IOCR12 ------------------------------- */ -#define PORT14_IOCR12_PC12_Pos \ - (3UL) /*!< PORT14 IOCR12: PC12 (Bit 3) */ -#define PORT14_IOCR12_PC12_Msk \ - (0xf8UL) /*!< PORT14 IOCR12: PC12 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR12_PC13_Pos \ - (11UL) /*!< PORT14 IOCR12: PC13 (Bit 11) */ -#define PORT14_IOCR12_PC13_Msk \ - (0xf800UL) /*!< PORT14 IOCR12: PC13 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR12_PC14_Pos \ - (19UL) /*!< PORT14 IOCR12: PC14 (Bit 19) */ -#define PORT14_IOCR12_PC14_Msk \ - (0xf80000UL) /*!< PORT14 IOCR12: PC14 (Bitfield-Mask: 0x1f) */ -#define PORT14_IOCR12_PC15_Pos \ - (27UL) /*!< PORT14 IOCR12: PC15 (Bit 27) */ -#define PORT14_IOCR12_PC15_Msk \ - (0xf8000000UL) /*!< PORT14 IOCR12: PC15 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT14_IN --------------------------------- */ -#define PORT14_IN_P0_Pos (0UL) /*!< PORT14 IN: P0 (Bit 0) */ -#define PORT14_IN_P0_Msk (0x1UL) /*!< PORT14 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P1_Pos (1UL) /*!< PORT14 IN: P1 (Bit 1) */ -#define PORT14_IN_P1_Msk (0x2UL) /*!< PORT14 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P2_Pos (2UL) /*!< PORT14 IN: P2 (Bit 2) */ -#define PORT14_IN_P2_Msk (0x4UL) /*!< PORT14 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P3_Pos (3UL) /*!< PORT14 IN: P3 (Bit 3) */ -#define PORT14_IN_P3_Msk (0x8UL) /*!< PORT14 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P4_Pos (4UL) /*!< PORT14 IN: P4 (Bit 4) */ -#define PORT14_IN_P4_Msk \ - (0x10UL) /*!< PORT14 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P5_Pos (5UL) /*!< PORT14 IN: P5 (Bit 5) */ -#define PORT14_IN_P5_Msk \ - (0x20UL) /*!< PORT14 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P6_Pos (6UL) /*!< PORT14 IN: P6 (Bit 6) */ -#define PORT14_IN_P6_Msk \ - (0x40UL) /*!< PORT14 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P7_Pos (7UL) /*!< PORT14 IN: P7 (Bit 7) */ -#define PORT14_IN_P7_Msk \ - (0x80UL) /*!< PORT14 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P8_Pos (8UL) /*!< PORT14 IN: P8 (Bit 8) */ -#define PORT14_IN_P8_Msk \ - (0x100UL) /*!< PORT14 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P9_Pos (9UL) /*!< PORT14 IN: P9 (Bit 9) */ -#define PORT14_IN_P9_Msk \ - (0x200UL) /*!< PORT14 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P10_Pos (10UL) /*!< PORT14 IN: P10 (Bit 10) */ -#define PORT14_IN_P10_Msk \ - (0x400UL) /*!< PORT14 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P11_Pos (11UL) /*!< PORT14 IN: P11 (Bit 11) */ -#define PORT14_IN_P11_Msk \ - (0x800UL) /*!< PORT14 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P12_Pos (12UL) /*!< PORT14 IN: P12 (Bit 12) */ -#define PORT14_IN_P12_Msk \ - (0x1000UL) /*!< PORT14 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P13_Pos (13UL) /*!< PORT14 IN: P13 (Bit 13) */ -#define PORT14_IN_P13_Msk \ - (0x2000UL) /*!< PORT14 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P14_Pos (14UL) /*!< PORT14 IN: P14 (Bit 14) */ -#define PORT14_IN_P14_Msk \ - (0x4000UL) /*!< PORT14 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT14_IN_P15_Pos (15UL) /*!< PORT14 IN: P15 (Bit 15) */ -#define PORT14_IN_P15_Msk \ - (0x8000UL) /*!< PORT14 IN: P15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT14_PDISC -------------------------------- */ -#define PORT14_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT14 PDISC: PDIS0 (Bit 0) */ -#define PORT14_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT14 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT14 PDISC: PDIS1 (Bit 1) */ -#define PORT14_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT14 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT14 PDISC: PDIS2 (Bit 2) */ -#define PORT14_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT14 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT14 PDISC: PDIS3 (Bit 3) */ -#define PORT14_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT14 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT14 PDISC: PDIS4 (Bit 4) */ -#define PORT14_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT14 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT14 PDISC: PDIS5 (Bit 5) */ -#define PORT14_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT14 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT14 PDISC: PDIS6 (Bit 6) */ -#define PORT14_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT14 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT14 PDISC: PDIS7 (Bit 7) */ -#define PORT14_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT14 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT14 PDISC: PDIS8 (Bit 8) */ -#define PORT14_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT14 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT14 PDISC: PDIS9 (Bit 9) */ -#define PORT14_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT14 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT14 PDISC: PDIS10 (Bit 10) */ -#define PORT14_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT14 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT14 PDISC: PDIS11 (Bit 11) */ -#define PORT14_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT14 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT14 PDISC: PDIS12 (Bit 12) */ -#define PORT14_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT14 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT14 PDISC: PDIS13 (Bit 13) */ -#define PORT14_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT14 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT14 PDISC: PDIS14 (Bit 14) */ -#define PORT14_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT14 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT14_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT14 PDISC: PDIS15 (Bit 15) */ -#define PORT14_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT14 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT14_PPS --------------------------------- */ -#define PORT14_PPS_PPS0_Pos \ - (0UL) /*!< PORT14 PPS: PPS0 (Bit 0) */ -#define PORT14_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT14 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS1_Pos \ - (1UL) /*!< PORT14 PPS: PPS1 (Bit 1) */ -#define PORT14_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT14 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS2_Pos \ - (2UL) /*!< PORT14 PPS: PPS2 (Bit 2) */ -#define PORT14_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT14 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS3_Pos \ - (3UL) /*!< PORT14 PPS: PPS3 (Bit 3) */ -#define PORT14_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT14 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS4_Pos \ - (4UL) /*!< PORT14 PPS: PPS4 (Bit 4) */ -#define PORT14_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT14 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS5_Pos \ - (5UL) /*!< PORT14 PPS: PPS5 (Bit 5) */ -#define PORT14_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT14 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS6_Pos \ - (6UL) /*!< PORT14 PPS: PPS6 (Bit 6) */ -#define PORT14_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT14 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS7_Pos \ - (7UL) /*!< PORT14 PPS: PPS7 (Bit 7) */ -#define PORT14_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT14 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS8_Pos \ - (8UL) /*!< PORT14 PPS: PPS8 (Bit 8) */ -#define PORT14_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT14 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS9_Pos \ - (9UL) /*!< PORT14 PPS: PPS9 (Bit 9) */ -#define PORT14_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT14 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS10_Pos \ - (10UL) /*!< PORT14 PPS: PPS10 (Bit 10) */ -#define PORT14_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT14 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS11_Pos \ - (11UL) /*!< PORT14 PPS: PPS11 (Bit 11) */ -#define PORT14_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT14 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS12_Pos \ - (12UL) /*!< PORT14 PPS: PPS12 (Bit 12) */ -#define PORT14_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT14 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS13_Pos \ - (13UL) /*!< PORT14 PPS: PPS13 (Bit 13) */ -#define PORT14_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT14 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS14_Pos \ - (14UL) /*!< PORT14 PPS: PPS14 (Bit 14) */ -#define PORT14_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT14 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT14_PPS_PPS15_Pos \ - (15UL) /*!< PORT14 PPS: PPS15 (Bit 15) */ -#define PORT14_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT14 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT14_HWSEL -------------------------------- */ -#define PORT14_HWSEL_HW0_Pos \ - (0UL) /*!< PORT14 HWSEL: HW0 (Bit 0) */ -#define PORT14_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT14 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW1_Pos \ - (2UL) /*!< PORT14 HWSEL: HW1 (Bit 2) */ -#define PORT14_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT14 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW2_Pos \ - (4UL) /*!< PORT14 HWSEL: HW2 (Bit 4) */ -#define PORT14_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT14 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW3_Pos \ - (6UL) /*!< PORT14 HWSEL: HW3 (Bit 6) */ -#define PORT14_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT14 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW4_Pos \ - (8UL) /*!< PORT14 HWSEL: HW4 (Bit 8) */ -#define PORT14_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT14 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW5_Pos \ - (10UL) /*!< PORT14 HWSEL: HW5 (Bit 10) */ -#define PORT14_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT14 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW6_Pos \ - (12UL) /*!< PORT14 HWSEL: HW6 (Bit 12) */ -#define PORT14_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT14 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW7_Pos \ - (14UL) /*!< PORT14 HWSEL: HW7 (Bit 14) */ -#define PORT14_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT14 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW8_Pos \ - (16UL) /*!< PORT14 HWSEL: HW8 (Bit 16) */ -#define PORT14_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT14 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW9_Pos \ - (18UL) /*!< PORT14 HWSEL: HW9 (Bit 18) */ -#define PORT14_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT14 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW10_Pos \ - (20UL) /*!< PORT14 HWSEL: HW10 (Bit 20) */ -#define PORT14_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT14 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW11_Pos \ - (22UL) /*!< PORT14 HWSEL: HW11 (Bit 22) */ -#define PORT14_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT14 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW12_Pos \ - (24UL) /*!< PORT14 HWSEL: HW12 (Bit 24) */ -#define PORT14_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT14 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW13_Pos \ - (26UL) /*!< PORT14 HWSEL: HW13 (Bit 26) */ -#define PORT14_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT14 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW14_Pos \ - (28UL) /*!< PORT14 HWSEL: HW14 (Bit 28) */ -#define PORT14_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT14 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT14_HWSEL_HW15_Pos \ - (30UL) /*!< PORT14 HWSEL: HW15 (Bit 30) */ -#define PORT14_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT14 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ struct 'PORT15' Position & Mask ================ */ -/* ================================================================================ */ - -/* --------------------------------- PORT15_OUT --------------------------------- */ -#define PORT15_OUT_P0_Pos (0UL) /*!< PORT15 OUT: P0 (Bit 0) */ -#define PORT15_OUT_P0_Msk \ - (0x1UL) /*!< PORT15 OUT: P0 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P1_Pos (1UL) /*!< PORT15 OUT: P1 (Bit 1) */ -#define PORT15_OUT_P1_Msk \ - (0x2UL) /*!< PORT15 OUT: P1 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P2_Pos (2UL) /*!< PORT15 OUT: P2 (Bit 2) */ -#define PORT15_OUT_P2_Msk \ - (0x4UL) /*!< PORT15 OUT: P2 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P3_Pos (3UL) /*!< PORT15 OUT: P3 (Bit 3) */ -#define PORT15_OUT_P3_Msk \ - (0x8UL) /*!< PORT15 OUT: P3 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P4_Pos (4UL) /*!< PORT15 OUT: P4 (Bit 4) */ -#define PORT15_OUT_P4_Msk \ - (0x10UL) /*!< PORT15 OUT: P4 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P5_Pos (5UL) /*!< PORT15 OUT: P5 (Bit 5) */ -#define PORT15_OUT_P5_Msk \ - (0x20UL) /*!< PORT15 OUT: P5 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P6_Pos (6UL) /*!< PORT15 OUT: P6 (Bit 6) */ -#define PORT15_OUT_P6_Msk \ - (0x40UL) /*!< PORT15 OUT: P6 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P7_Pos (7UL) /*!< PORT15 OUT: P7 (Bit 7) */ -#define PORT15_OUT_P7_Msk \ - (0x80UL) /*!< PORT15 OUT: P7 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P8_Pos (8UL) /*!< PORT15 OUT: P8 (Bit 8) */ -#define PORT15_OUT_P8_Msk \ - (0x100UL) /*!< PORT15 OUT: P8 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P9_Pos (9UL) /*!< PORT15 OUT: P9 (Bit 9) */ -#define PORT15_OUT_P9_Msk \ - (0x200UL) /*!< PORT15 OUT: P9 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P10_Pos \ - (10UL) /*!< PORT15 OUT: P10 (Bit 10) */ -#define PORT15_OUT_P10_Msk \ - (0x400UL) /*!< PORT15 OUT: P10 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P11_Pos \ - (11UL) /*!< PORT15 OUT: P11 (Bit 11) */ -#define PORT15_OUT_P11_Msk \ - (0x800UL) /*!< PORT15 OUT: P11 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P12_Pos \ - (12UL) /*!< PORT15 OUT: P12 (Bit 12) */ -#define PORT15_OUT_P12_Msk \ - (0x1000UL) /*!< PORT15 OUT: P12 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P13_Pos \ - (13UL) /*!< PORT15 OUT: P13 (Bit 13) */ -#define PORT15_OUT_P13_Msk \ - (0x2000UL) /*!< PORT15 OUT: P13 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P14_Pos \ - (14UL) /*!< PORT15 OUT: P14 (Bit 14) */ -#define PORT15_OUT_P14_Msk \ - (0x4000UL) /*!< PORT15 OUT: P14 (Bitfield-Mask: 0x01) */ -#define PORT15_OUT_P15_Pos \ - (15UL) /*!< PORT15 OUT: P15 (Bit 15) */ -#define PORT15_OUT_P15_Msk \ - (0x8000UL) /*!< PORT15 OUT: P15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT15_OMR --------------------------------- */ -#define PORT15_OMR_PS0_Pos (0UL) /*!< PORT15 OMR: PS0 (Bit 0) */ -#define PORT15_OMR_PS0_Msk \ - (0x1UL) /*!< PORT15 OMR: PS0 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS1_Pos (1UL) /*!< PORT15 OMR: PS1 (Bit 1) */ -#define PORT15_OMR_PS1_Msk \ - (0x2UL) /*!< PORT15 OMR: PS1 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS2_Pos (2UL) /*!< PORT15 OMR: PS2 (Bit 2) */ -#define PORT15_OMR_PS2_Msk \ - (0x4UL) /*!< PORT15 OMR: PS2 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS3_Pos (3UL) /*!< PORT15 OMR: PS3 (Bit 3) */ -#define PORT15_OMR_PS3_Msk \ - (0x8UL) /*!< PORT15 OMR: PS3 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS4_Pos (4UL) /*!< PORT15 OMR: PS4 (Bit 4) */ -#define PORT15_OMR_PS4_Msk \ - (0x10UL) /*!< PORT15 OMR: PS4 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS5_Pos (5UL) /*!< PORT15 OMR: PS5 (Bit 5) */ -#define PORT15_OMR_PS5_Msk \ - (0x20UL) /*!< PORT15 OMR: PS5 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS6_Pos (6UL) /*!< PORT15 OMR: PS6 (Bit 6) */ -#define PORT15_OMR_PS6_Msk \ - (0x40UL) /*!< PORT15 OMR: PS6 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS7_Pos (7UL) /*!< PORT15 OMR: PS7 (Bit 7) */ -#define PORT15_OMR_PS7_Msk \ - (0x80UL) /*!< PORT15 OMR: PS7 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS8_Pos (8UL) /*!< PORT15 OMR: PS8 (Bit 8) */ -#define PORT15_OMR_PS8_Msk \ - (0x100UL) /*!< PORT15 OMR: PS8 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS9_Pos (9UL) /*!< PORT15 OMR: PS9 (Bit 9) */ -#define PORT15_OMR_PS9_Msk \ - (0x200UL) /*!< PORT15 OMR: PS9 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS10_Pos \ - (10UL) /*!< PORT15 OMR: PS10 (Bit 10) */ -#define PORT15_OMR_PS10_Msk \ - (0x400UL) /*!< PORT15 OMR: PS10 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS11_Pos \ - (11UL) /*!< PORT15 OMR: PS11 (Bit 11) */ -#define PORT15_OMR_PS11_Msk \ - (0x800UL) /*!< PORT15 OMR: PS11 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS12_Pos \ - (12UL) /*!< PORT15 OMR: PS12 (Bit 12) */ -#define PORT15_OMR_PS12_Msk \ - (0x1000UL) /*!< PORT15 OMR: PS12 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS13_Pos \ - (13UL) /*!< PORT15 OMR: PS13 (Bit 13) */ -#define PORT15_OMR_PS13_Msk \ - (0x2000UL) /*!< PORT15 OMR: PS13 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS14_Pos \ - (14UL) /*!< PORT15 OMR: PS14 (Bit 14) */ -#define PORT15_OMR_PS14_Msk \ - (0x4000UL) /*!< PORT15 OMR: PS14 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PS15_Pos \ - (15UL) /*!< PORT15 OMR: PS15 (Bit 15) */ -#define PORT15_OMR_PS15_Msk \ - (0x8000UL) /*!< PORT15 OMR: PS15 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR0_Pos \ - (16UL) /*!< PORT15 OMR: PR0 (Bit 16) */ -#define PORT15_OMR_PR0_Msk \ - (0x10000UL) /*!< PORT15 OMR: PR0 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR1_Pos \ - (17UL) /*!< PORT15 OMR: PR1 (Bit 17) */ -#define PORT15_OMR_PR1_Msk \ - (0x20000UL) /*!< PORT15 OMR: PR1 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR2_Pos \ - (18UL) /*!< PORT15 OMR: PR2 (Bit 18) */ -#define PORT15_OMR_PR2_Msk \ - (0x40000UL) /*!< PORT15 OMR: PR2 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR3_Pos \ - (19UL) /*!< PORT15 OMR: PR3 (Bit 19) */ -#define PORT15_OMR_PR3_Msk \ - (0x80000UL) /*!< PORT15 OMR: PR3 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR4_Pos \ - (20UL) /*!< PORT15 OMR: PR4 (Bit 20) */ -#define PORT15_OMR_PR4_Msk \ - (0x100000UL) /*!< PORT15 OMR: PR4 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR5_Pos \ - (21UL) /*!< PORT15 OMR: PR5 (Bit 21) */ -#define PORT15_OMR_PR5_Msk \ - (0x200000UL) /*!< PORT15 OMR: PR5 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR6_Pos \ - (22UL) /*!< PORT15 OMR: PR6 (Bit 22) */ -#define PORT15_OMR_PR6_Msk \ - (0x400000UL) /*!< PORT15 OMR: PR6 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR7_Pos \ - (23UL) /*!< PORT15 OMR: PR7 (Bit 23) */ -#define PORT15_OMR_PR7_Msk \ - (0x800000UL) /*!< PORT15 OMR: PR7 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR8_Pos \ - (24UL) /*!< PORT15 OMR: PR8 (Bit 24) */ -#define PORT15_OMR_PR8_Msk \ - (0x1000000UL) /*!< PORT15 OMR: PR8 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR9_Pos \ - (25UL) /*!< PORT15 OMR: PR9 (Bit 25) */ -#define PORT15_OMR_PR9_Msk \ - (0x2000000UL) /*!< PORT15 OMR: PR9 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR10_Pos \ - (26UL) /*!< PORT15 OMR: PR10 (Bit 26) */ -#define PORT15_OMR_PR10_Msk \ - (0x4000000UL) /*!< PORT15 OMR: PR10 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR11_Pos \ - (27UL) /*!< PORT15 OMR: PR11 (Bit 27) */ -#define PORT15_OMR_PR11_Msk \ - (0x8000000UL) /*!< PORT15 OMR: PR11 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR12_Pos \ - (28UL) /*!< PORT15 OMR: PR12 (Bit 28) */ -#define PORT15_OMR_PR12_Msk \ - (0x10000000UL) /*!< PORT15 OMR: PR12 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR13_Pos \ - (29UL) /*!< PORT15 OMR: PR13 (Bit 29) */ -#define PORT15_OMR_PR13_Msk \ - (0x20000000UL) /*!< PORT15 OMR: PR13 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR14_Pos \ - (30UL) /*!< PORT15 OMR: PR14 (Bit 30) */ -#define PORT15_OMR_PR14_Msk \ - (0x40000000UL) /*!< PORT15 OMR: PR14 (Bitfield-Mask: 0x01) */ -#define PORT15_OMR_PR15_Pos \ - (31UL) /*!< PORT15 OMR: PR15 (Bit 31) */ -#define PORT15_OMR_PR15_Msk \ - (0x80000000UL) /*!< PORT15 OMR: PR15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT15_IOCR0 -------------------------------- */ -#define PORT15_IOCR0_PC0_Pos \ - (3UL) /*!< PORT15 IOCR0: PC0 (Bit 3) */ -#define PORT15_IOCR0_PC0_Msk \ - (0xf8UL) /*!< PORT15 IOCR0: PC0 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR0_PC1_Pos \ - (11UL) /*!< PORT15 IOCR0: PC1 (Bit 11) */ -#define PORT15_IOCR0_PC1_Msk \ - (0xf800UL) /*!< PORT15 IOCR0: PC1 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR0_PC2_Pos \ - (19UL) /*!< PORT15 IOCR0: PC2 (Bit 19) */ -#define PORT15_IOCR0_PC2_Msk \ - (0xf80000UL) /*!< PORT15 IOCR0: PC2 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR0_PC3_Pos \ - (27UL) /*!< PORT15 IOCR0: PC3 (Bit 27) */ -#define PORT15_IOCR0_PC3_Msk \ - (0xf8000000UL) /*!< PORT15 IOCR0: PC3 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT15_IOCR4 -------------------------------- */ -#define PORT15_IOCR4_PC4_Pos \ - (3UL) /*!< PORT15 IOCR4: PC4 (Bit 3) */ -#define PORT15_IOCR4_PC4_Msk \ - (0xf8UL) /*!< PORT15 IOCR4: PC4 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR4_PC5_Pos \ - (11UL) /*!< PORT15 IOCR4: PC5 (Bit 11) */ -#define PORT15_IOCR4_PC5_Msk \ - (0xf800UL) /*!< PORT15 IOCR4: PC5 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR4_PC6_Pos \ - (19UL) /*!< PORT15 IOCR4: PC6 (Bit 19) */ -#define PORT15_IOCR4_PC6_Msk \ - (0xf80000UL) /*!< PORT15 IOCR4: PC6 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR4_PC7_Pos \ - (27UL) /*!< PORT15 IOCR4: PC7 (Bit 27) */ -#define PORT15_IOCR4_PC7_Msk \ - (0xf8000000UL) /*!< PORT15 IOCR4: PC7 (Bitfield-Mask: 0x1f) */ - -/* -------------------------------- PORT15_IOCR8 -------------------------------- */ -#define PORT15_IOCR8_PC8_Pos \ - (3UL) /*!< PORT15 IOCR8: PC8 (Bit 3) */ -#define PORT15_IOCR8_PC8_Msk \ - (0xf8UL) /*!< PORT15 IOCR8: PC8 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR8_PC9_Pos \ - (11UL) /*!< PORT15 IOCR8: PC9 (Bit 11) */ -#define PORT15_IOCR8_PC9_Msk \ - (0xf800UL) /*!< PORT15 IOCR8: PC9 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR8_PC10_Pos \ - (19UL) /*!< PORT15 IOCR8: PC10 (Bit 19) */ -#define PORT15_IOCR8_PC10_Msk \ - (0xf80000UL) /*!< PORT15 IOCR8: PC10 (Bitfield-Mask: 0x1f) */ -#define PORT15_IOCR8_PC11_Pos \ - (27UL) /*!< PORT15 IOCR8: PC11 (Bit 27) */ -#define PORT15_IOCR8_PC11_Msk \ - (0xf8000000UL) /*!< PORT15 IOCR8: PC11 (Bitfield-Mask: 0x1f) */ - -/* ---------------------------------- PORT15_IN --------------------------------- */ -#define PORT15_IN_P0_Pos (0UL) /*!< PORT15 IN: P0 (Bit 0) */ -#define PORT15_IN_P0_Msk (0x1UL) /*!< PORT15 IN: P0 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P1_Pos (1UL) /*!< PORT15 IN: P1 (Bit 1) */ -#define PORT15_IN_P1_Msk (0x2UL) /*!< PORT15 IN: P1 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P2_Pos (2UL) /*!< PORT15 IN: P2 (Bit 2) */ -#define PORT15_IN_P2_Msk (0x4UL) /*!< PORT15 IN: P2 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P3_Pos (3UL) /*!< PORT15 IN: P3 (Bit 3) */ -#define PORT15_IN_P3_Msk (0x8UL) /*!< PORT15 IN: P3 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P4_Pos (4UL) /*!< PORT15 IN: P4 (Bit 4) */ -#define PORT15_IN_P4_Msk \ - (0x10UL) /*!< PORT15 IN: P4 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P5_Pos (5UL) /*!< PORT15 IN: P5 (Bit 5) */ -#define PORT15_IN_P5_Msk \ - (0x20UL) /*!< PORT15 IN: P5 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P6_Pos (6UL) /*!< PORT15 IN: P6 (Bit 6) */ -#define PORT15_IN_P6_Msk \ - (0x40UL) /*!< PORT15 IN: P6 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P7_Pos (7UL) /*!< PORT15 IN: P7 (Bit 7) */ -#define PORT15_IN_P7_Msk \ - (0x80UL) /*!< PORT15 IN: P7 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P8_Pos (8UL) /*!< PORT15 IN: P8 (Bit 8) */ -#define PORT15_IN_P8_Msk \ - (0x100UL) /*!< PORT15 IN: P8 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P9_Pos (9UL) /*!< PORT15 IN: P9 (Bit 9) */ -#define PORT15_IN_P9_Msk \ - (0x200UL) /*!< PORT15 IN: P9 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P10_Pos (10UL) /*!< PORT15 IN: P10 (Bit 10) */ -#define PORT15_IN_P10_Msk \ - (0x400UL) /*!< PORT15 IN: P10 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P11_Pos (11UL) /*!< PORT15 IN: P11 (Bit 11) */ -#define PORT15_IN_P11_Msk \ - (0x800UL) /*!< PORT15 IN: P11 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P12_Pos (12UL) /*!< PORT15 IN: P12 (Bit 12) */ -#define PORT15_IN_P12_Msk \ - (0x1000UL) /*!< PORT15 IN: P12 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P13_Pos (13UL) /*!< PORT15 IN: P13 (Bit 13) */ -#define PORT15_IN_P13_Msk \ - (0x2000UL) /*!< PORT15 IN: P13 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P14_Pos (14UL) /*!< PORT15 IN: P14 (Bit 14) */ -#define PORT15_IN_P14_Msk \ - (0x4000UL) /*!< PORT15 IN: P14 (Bitfield-Mask: 0x01) */ -#define PORT15_IN_P15_Pos (15UL) /*!< PORT15 IN: P15 (Bit 15) */ -#define PORT15_IN_P15_Msk \ - (0x8000UL) /*!< PORT15 IN: P15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT15_PDISC -------------------------------- */ -#define PORT15_PDISC_PDIS0_Pos \ - (0UL) /*!< PORT15 PDISC: PDIS0 (Bit 0) */ -#define PORT15_PDISC_PDIS0_Msk \ - (0x1UL) /*!< PORT15 PDISC: PDIS0 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS1_Pos \ - (1UL) /*!< PORT15 PDISC: PDIS1 (Bit 1) */ -#define PORT15_PDISC_PDIS1_Msk \ - (0x2UL) /*!< PORT15 PDISC: PDIS1 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS2_Pos \ - (2UL) /*!< PORT15 PDISC: PDIS2 (Bit 2) */ -#define PORT15_PDISC_PDIS2_Msk \ - (0x4UL) /*!< PORT15 PDISC: PDIS2 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS3_Pos \ - (3UL) /*!< PORT15 PDISC: PDIS3 (Bit 3) */ -#define PORT15_PDISC_PDIS3_Msk \ - (0x8UL) /*!< PORT15 PDISC: PDIS3 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS4_Pos \ - (4UL) /*!< PORT15 PDISC: PDIS4 (Bit 4) */ -#define PORT15_PDISC_PDIS4_Msk \ - (0x10UL) /*!< PORT15 PDISC: PDIS4 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS5_Pos \ - (5UL) /*!< PORT15 PDISC: PDIS5 (Bit 5) */ -#define PORT15_PDISC_PDIS5_Msk \ - (0x20UL) /*!< PORT15 PDISC: PDIS5 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS6_Pos \ - (6UL) /*!< PORT15 PDISC: PDIS6 (Bit 6) */ -#define PORT15_PDISC_PDIS6_Msk \ - (0x40UL) /*!< PORT15 PDISC: PDIS6 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS7_Pos \ - (7UL) /*!< PORT15 PDISC: PDIS7 (Bit 7) */ -#define PORT15_PDISC_PDIS7_Msk \ - (0x80UL) /*!< PORT15 PDISC: PDIS7 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS8_Pos \ - (8UL) /*!< PORT15 PDISC: PDIS8 (Bit 8) */ -#define PORT15_PDISC_PDIS8_Msk \ - (0x100UL) /*!< PORT15 PDISC: PDIS8 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS9_Pos \ - (9UL) /*!< PORT15 PDISC: PDIS9 (Bit 9) */ -#define PORT15_PDISC_PDIS9_Msk \ - (0x200UL) /*!< PORT15 PDISC: PDIS9 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS10_Pos \ - (10UL) /*!< PORT15 PDISC: PDIS10 (Bit 10) */ -#define PORT15_PDISC_PDIS10_Msk \ - (0x400UL) /*!< PORT15 PDISC: PDIS10 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS11_Pos \ - (11UL) /*!< PORT15 PDISC: PDIS11 (Bit 11) */ -#define PORT15_PDISC_PDIS11_Msk \ - (0x800UL) /*!< PORT15 PDISC: PDIS11 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS12_Pos \ - (12UL) /*!< PORT15 PDISC: PDIS12 (Bit 12) */ -#define PORT15_PDISC_PDIS12_Msk \ - (0x1000UL) /*!< PORT15 PDISC: PDIS12 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS13_Pos \ - (13UL) /*!< PORT15 PDISC: PDIS13 (Bit 13) */ -#define PORT15_PDISC_PDIS13_Msk \ - (0x2000UL) /*!< PORT15 PDISC: PDIS13 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS14_Pos \ - (14UL) /*!< PORT15 PDISC: PDIS14 (Bit 14) */ -#define PORT15_PDISC_PDIS14_Msk \ - (0x4000UL) /*!< PORT15 PDISC: PDIS14 (Bitfield-Mask: 0x01) */ -#define PORT15_PDISC_PDIS15_Pos \ - (15UL) /*!< PORT15 PDISC: PDIS15 (Bit 15) */ -#define PORT15_PDISC_PDIS15_Msk \ - (0x8000UL) /*!< PORT15 PDISC: PDIS15 (Bitfield-Mask: 0x01) */ - -/* --------------------------------- PORT15_PPS --------------------------------- */ -#define PORT15_PPS_PPS0_Pos \ - (0UL) /*!< PORT15 PPS: PPS0 (Bit 0) */ -#define PORT15_PPS_PPS0_Msk \ - (0x1UL) /*!< PORT15 PPS: PPS0 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS1_Pos \ - (1UL) /*!< PORT15 PPS: PPS1 (Bit 1) */ -#define PORT15_PPS_PPS1_Msk \ - (0x2UL) /*!< PORT15 PPS: PPS1 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS2_Pos \ - (2UL) /*!< PORT15 PPS: PPS2 (Bit 2) */ -#define PORT15_PPS_PPS2_Msk \ - (0x4UL) /*!< PORT15 PPS: PPS2 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS3_Pos \ - (3UL) /*!< PORT15 PPS: PPS3 (Bit 3) */ -#define PORT15_PPS_PPS3_Msk \ - (0x8UL) /*!< PORT15 PPS: PPS3 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS4_Pos \ - (4UL) /*!< PORT15 PPS: PPS4 (Bit 4) */ -#define PORT15_PPS_PPS4_Msk \ - (0x10UL) /*!< PORT15 PPS: PPS4 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS5_Pos \ - (5UL) /*!< PORT15 PPS: PPS5 (Bit 5) */ -#define PORT15_PPS_PPS5_Msk \ - (0x20UL) /*!< PORT15 PPS: PPS5 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS6_Pos \ - (6UL) /*!< PORT15 PPS: PPS6 (Bit 6) */ -#define PORT15_PPS_PPS6_Msk \ - (0x40UL) /*!< PORT15 PPS: PPS6 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS7_Pos \ - (7UL) /*!< PORT15 PPS: PPS7 (Bit 7) */ -#define PORT15_PPS_PPS7_Msk \ - (0x80UL) /*!< PORT15 PPS: PPS7 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS8_Pos \ - (8UL) /*!< PORT15 PPS: PPS8 (Bit 8) */ -#define PORT15_PPS_PPS8_Msk \ - (0x100UL) /*!< PORT15 PPS: PPS8 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS9_Pos \ - (9UL) /*!< PORT15 PPS: PPS9 (Bit 9) */ -#define PORT15_PPS_PPS9_Msk \ - (0x200UL) /*!< PORT15 PPS: PPS9 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS10_Pos \ - (10UL) /*!< PORT15 PPS: PPS10 (Bit 10) */ -#define PORT15_PPS_PPS10_Msk \ - (0x400UL) /*!< PORT15 PPS: PPS10 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS11_Pos \ - (11UL) /*!< PORT15 PPS: PPS11 (Bit 11) */ -#define PORT15_PPS_PPS11_Msk \ - (0x800UL) /*!< PORT15 PPS: PPS11 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS12_Pos \ - (12UL) /*!< PORT15 PPS: PPS12 (Bit 12) */ -#define PORT15_PPS_PPS12_Msk \ - (0x1000UL) /*!< PORT15 PPS: PPS12 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS13_Pos \ - (13UL) /*!< PORT15 PPS: PPS13 (Bit 13) */ -#define PORT15_PPS_PPS13_Msk \ - (0x2000UL) /*!< PORT15 PPS: PPS13 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS14_Pos \ - (14UL) /*!< PORT15 PPS: PPS14 (Bit 14) */ -#define PORT15_PPS_PPS14_Msk \ - (0x4000UL) /*!< PORT15 PPS: PPS14 (Bitfield-Mask: 0x01) */ -#define PORT15_PPS_PPS15_Pos \ - (15UL) /*!< PORT15 PPS: PPS15 (Bit 15) */ -#define PORT15_PPS_PPS15_Msk \ - (0x8000UL) /*!< PORT15 PPS: PPS15 (Bitfield-Mask: 0x01) */ - -/* -------------------------------- PORT15_HWSEL -------------------------------- */ -#define PORT15_HWSEL_HW0_Pos \ - (0UL) /*!< PORT15 HWSEL: HW0 (Bit 0) */ -#define PORT15_HWSEL_HW0_Msk \ - (0x3UL) /*!< PORT15 HWSEL: HW0 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW1_Pos \ - (2UL) /*!< PORT15 HWSEL: HW1 (Bit 2) */ -#define PORT15_HWSEL_HW1_Msk \ - (0xcUL) /*!< PORT15 HWSEL: HW1 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW2_Pos \ - (4UL) /*!< PORT15 HWSEL: HW2 (Bit 4) */ -#define PORT15_HWSEL_HW2_Msk \ - (0x30UL) /*!< PORT15 HWSEL: HW2 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW3_Pos \ - (6UL) /*!< PORT15 HWSEL: HW3 (Bit 6) */ -#define PORT15_HWSEL_HW3_Msk \ - (0xc0UL) /*!< PORT15 HWSEL: HW3 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW4_Pos \ - (8UL) /*!< PORT15 HWSEL: HW4 (Bit 8) */ -#define PORT15_HWSEL_HW4_Msk \ - (0x300UL) /*!< PORT15 HWSEL: HW4 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW5_Pos \ - (10UL) /*!< PORT15 HWSEL: HW5 (Bit 10) */ -#define PORT15_HWSEL_HW5_Msk \ - (0xc00UL) /*!< PORT15 HWSEL: HW5 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW6_Pos \ - (12UL) /*!< PORT15 HWSEL: HW6 (Bit 12) */ -#define PORT15_HWSEL_HW6_Msk \ - (0x3000UL) /*!< PORT15 HWSEL: HW6 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW7_Pos \ - (14UL) /*!< PORT15 HWSEL: HW7 (Bit 14) */ -#define PORT15_HWSEL_HW7_Msk \ - (0xc000UL) /*!< PORT15 HWSEL: HW7 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW8_Pos \ - (16UL) /*!< PORT15 HWSEL: HW8 (Bit 16) */ -#define PORT15_HWSEL_HW8_Msk \ - (0x30000UL) /*!< PORT15 HWSEL: HW8 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW9_Pos \ - (18UL) /*!< PORT15 HWSEL: HW9 (Bit 18) */ -#define PORT15_HWSEL_HW9_Msk \ - (0xc0000UL) /*!< PORT15 HWSEL: HW9 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW10_Pos \ - (20UL) /*!< PORT15 HWSEL: HW10 (Bit 20) */ -#define PORT15_HWSEL_HW10_Msk \ - (0x300000UL) /*!< PORT15 HWSEL: HW10 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW11_Pos \ - (22UL) /*!< PORT15 HWSEL: HW11 (Bit 22) */ -#define PORT15_HWSEL_HW11_Msk \ - (0xc00000UL) /*!< PORT15 HWSEL: HW11 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW12_Pos \ - (24UL) /*!< PORT15 HWSEL: HW12 (Bit 24) */ -#define PORT15_HWSEL_HW12_Msk \ - (0x3000000UL) /*!< PORT15 HWSEL: HW12 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW13_Pos \ - (26UL) /*!< PORT15 HWSEL: HW13 (Bit 26) */ -#define PORT15_HWSEL_HW13_Msk \ - (0xc000000UL) /*!< PORT15 HWSEL: HW13 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW14_Pos \ - (28UL) /*!< PORT15 HWSEL: HW14 (Bit 28) */ -#define PORT15_HWSEL_HW14_Msk \ - (0x30000000UL) /*!< PORT15 HWSEL: HW14 (Bitfield-Mask: 0x03) */ -#define PORT15_HWSEL_HW15_Pos \ - (30UL) /*!< PORT15 HWSEL: HW15 (Bit 30) */ -#define PORT15_HWSEL_HW15_Msk \ - (0xc0000000UL) /*!< PORT15 HWSEL: HW15 (Bitfield-Mask: 0x03) */ - -/* ================================================================================ */ -/* ================ Peripheral memory map ================ */ -/* ================================================================================ */ - -#define PPB_BASE 0xE000E000UL -#define DLR_BASE 0x50004900UL -#define ERU0_BASE 0x50004800UL -#define ERU1_BASE 0x40044000UL -#define GPDMA0_BASE 0x500142C0UL -#define GPDMA0_CH0_BASE 0x50014000UL -#define GPDMA0_CH1_BASE 0x50014058UL -#define GPDMA0_CH2_BASE 0x500140B0UL -#define GPDMA0_CH3_BASE 0x50014108UL -#define GPDMA0_CH4_BASE 0x50014160UL -#define GPDMA0_CH5_BASE 0x500141B8UL -#define GPDMA0_CH6_BASE 0x50014210UL -#define GPDMA0_CH7_BASE 0x50014268UL -#define FCE_BASE 0x50020000UL -#define FCE_KE0_BASE 0x50020020UL -#define FCE_KE1_BASE 0x50020040UL -#define FCE_KE2_BASE 0x50020060UL -#define FCE_KE3_BASE 0x50020080UL -#define PBA0_BASE 0x40000000UL -#define PBA1_BASE 0x48000000UL -#define FLASH0_BASE 0x58001000UL -#define PREF_BASE 0x58004000UL -#define PMU0_BASE 0x58000508UL -#define WDT_BASE 0x50008000UL -#define RTC_BASE 0x50004A00UL -#define SCU_CLK_BASE 0x50004600UL -#define SCU_OSC_BASE 0x50004700UL -#define SCU_PLL_BASE 0x50004710UL -#define SCU_GENERAL_BASE 0x50004000UL -#define SCU_INTERRUPT_BASE 0x50004074UL -#define SCU_PARITY_BASE 0x5000413CUL -#define SCU_TRAP_BASE 0x50004160UL -#define SCU_HIBERNATE_BASE 0x50004300UL -#define SCU_POWER_BASE 0x50004200UL -#define SCU_RESET_BASE 0x50004400UL -#define LEDTS0_BASE 0x48010000UL -#define ETH0_CON_BASE 0x50004040UL -#define ETH0_BASE 0x5000C000UL -#define USB0_BASE 0x50040000UL -#define USB_EP_BASE 0x50040900UL -#define USB0_EP1_BASE 0x50040920UL -#define USB0_EP2_BASE 0x50040940UL -#define USB0_EP3_BASE 0x50040960UL -#define USB0_EP4_BASE 0x50040980UL -#define USB0_EP5_BASE 0x500409A0UL -#define USB0_EP6_BASE 0x500409C0UL -#define USB0_CH0_BASE 0x50040500UL -#define USB0_CH1_BASE 0x50040520UL -#define USB0_CH2_BASE 0x50040540UL -#define USB0_CH3_BASE 0x50040560UL -#define USB0_CH4_BASE 0x50040580UL -#define USB0_CH5_BASE 0x500405A0UL -#define USB0_CH6_BASE 0x500405C0UL -#define USB0_CH7_BASE 0x500405E0UL -#define USB0_CH8_BASE 0x50040600UL -#define USB0_CH9_BASE 0x50040620UL -#define USB0_CH10_BASE 0x50040640UL -#define USB0_CH11_BASE 0x50040660UL -#define USB0_CH12_BASE 0x50040680UL -#define USB0_CH13_BASE 0x500406A0UL -#define USIC0_BASE 0x40030008UL -#define USIC1_BASE 0x48020008UL -#define USIC0_CH0_BASE 0x40030000UL -#define USIC0_CH1_BASE 0x40030200UL -#define USIC1_CH0_BASE 0x48020000UL -#define USIC1_CH1_BASE 0x48020200UL -#define CAN_BASE 0x48014000UL -#define CAN_NODE0_BASE 0x48014200UL -#define CAN_NODE1_BASE 0x48014300UL -#define CAN_MO0_BASE 0x48015000UL -#define CAN_MO1_BASE 0x48015020UL -#define CAN_MO2_BASE 0x48015040UL -#define CAN_MO3_BASE 0x48015060UL -#define CAN_MO4_BASE 0x48015080UL -#define CAN_MO5_BASE 0x480150A0UL -#define CAN_MO6_BASE 0x480150C0UL -#define CAN_MO7_BASE 0x480150E0UL -#define CAN_MO8_BASE 0x48015100UL -#define CAN_MO9_BASE 0x48015120UL -#define CAN_MO10_BASE 0x48015140UL -#define CAN_MO11_BASE 0x48015160UL -#define CAN_MO12_BASE 0x48015180UL -#define CAN_MO13_BASE 0x480151A0UL -#define CAN_MO14_BASE 0x480151C0UL -#define CAN_MO15_BASE 0x480151E0UL -#define CAN_MO16_BASE 0x48015200UL -#define CAN_MO17_BASE 0x48015220UL -#define CAN_MO18_BASE 0x48015240UL -#define CAN_MO19_BASE 0x48015260UL -#define CAN_MO20_BASE 0x48015280UL -#define CAN_MO21_BASE 0x480152A0UL -#define CAN_MO22_BASE 0x480152C0UL -#define CAN_MO23_BASE 0x480152E0UL -#define CAN_MO24_BASE 0x48015300UL -#define CAN_MO25_BASE 0x48015320UL -#define CAN_MO26_BASE 0x48015340UL -#define CAN_MO27_BASE 0x48015360UL -#define CAN_MO28_BASE 0x48015380UL -#define CAN_MO29_BASE 0x480153A0UL -#define CAN_MO30_BASE 0x480153C0UL -#define CAN_MO31_BASE 0x480153E0UL -#define CAN_MO32_BASE 0x48015400UL -#define CAN_MO33_BASE 0x48015420UL -#define CAN_MO34_BASE 0x48015440UL -#define CAN_MO35_BASE 0x48015460UL -#define CAN_MO36_BASE 0x48015480UL -#define CAN_MO37_BASE 0x480154A0UL -#define CAN_MO38_BASE 0x480154C0UL -#define CAN_MO39_BASE 0x480154E0UL -#define CAN_MO40_BASE 0x48015500UL -#define CAN_MO41_BASE 0x48015520UL -#define CAN_MO42_BASE 0x48015540UL -#define CAN_MO43_BASE 0x48015560UL -#define CAN_MO44_BASE 0x48015580UL -#define CAN_MO45_BASE 0x480155A0UL -#define CAN_MO46_BASE 0x480155C0UL -#define CAN_MO47_BASE 0x480155E0UL -#define CAN_MO48_BASE 0x48015600UL -#define CAN_MO49_BASE 0x48015620UL -#define CAN_MO50_BASE 0x48015640UL -#define CAN_MO51_BASE 0x48015660UL -#define CAN_MO52_BASE 0x48015680UL -#define CAN_MO53_BASE 0x480156A0UL -#define CAN_MO54_BASE 0x480156C0UL -#define CAN_MO55_BASE 0x480156E0UL -#define CAN_MO56_BASE 0x48015700UL -#define CAN_MO57_BASE 0x48015720UL -#define CAN_MO58_BASE 0x48015740UL -#define CAN_MO59_BASE 0x48015760UL -#define CAN_MO60_BASE 0x48015780UL -#define CAN_MO61_BASE 0x480157A0UL -#define CAN_MO62_BASE 0x480157C0UL -#define CAN_MO63_BASE 0x480157E0UL -#define VADC_BASE 0x40004000UL -#define VADC_G0_BASE 0x40004400UL -#define VADC_G1_BASE 0x40004800UL -#define VADC_G2_BASE 0x40004C00UL -#define VADC_G3_BASE 0x40005000UL -#define DSD_BASE 0x40008000UL -#define DSD_CH0_BASE 0x40008100UL -#define DSD_CH1_BASE 0x40008200UL -#define DSD_CH2_BASE 0x40008300UL -#define DSD_CH3_BASE 0x40008400UL -#define DAC_BASE 0x48018000UL -#define CCU40_BASE 0x4000C000UL -#define CCU41_BASE 0x40010000UL -#define CCU42_BASE 0x40014000UL -#define CCU43_BASE 0x48004000UL -#define CCU40_CC40_BASE 0x4000C100UL -#define CCU40_CC41_BASE 0x4000C200UL -#define CCU40_CC42_BASE 0x4000C300UL -#define CCU40_CC43_BASE 0x4000C400UL -#define CCU41_CC40_BASE 0x40010100UL -#define CCU41_CC41_BASE 0x40010200UL -#define CCU41_CC42_BASE 0x40010300UL -#define CCU41_CC43_BASE 0x40010400UL -#define CCU42_CC40_BASE 0x40014100UL -#define CCU42_CC41_BASE 0x40014200UL -#define CCU42_CC42_BASE 0x40014300UL -#define CCU42_CC43_BASE 0x40014400UL -#define CCU43_CC40_BASE 0x48004100UL -#define CCU43_CC41_BASE 0x48004200UL -#define CCU43_CC42_BASE 0x48004300UL -#define CCU43_CC43_BASE 0x48004400UL -#define CCU80_BASE 0x40020000UL -#define CCU81_BASE 0x40024000UL -#define CCU80_CC80_BASE 0x40020100UL -#define CCU80_CC81_BASE 0x40020200UL -#define CCU80_CC82_BASE 0x40020300UL -#define CCU80_CC83_BASE 0x40020400UL -#define CCU81_CC80_BASE 0x40024100UL -#define CCU81_CC81_BASE 0x40024200UL -#define CCU81_CC82_BASE 0x40024300UL -#define CCU81_CC83_BASE 0x40024400UL -#define HRPWM0_BASE 0x40020900UL -#define HRPWM0_CSG0_BASE 0x40020A00UL -#define HRPWM0_CSG1_BASE 0x40020B00UL -#define HRPWM0_CSG2_BASE 0x40020C00UL -#define HRPWM0_HRC0_BASE 0x40021300UL -#define HRPWM0_HRC1_BASE 0x40021400UL -#define HRPWM0_HRC2_BASE 0x40021500UL -#define HRPWM0_HRC3_BASE 0x40021600UL -#define POSIF0_BASE 0x40028000UL -#define POSIF1_BASE 0x4002C000UL -#define PORT0_BASE 0x48028000UL -#define PORT1_BASE 0x48028100UL -#define PORT2_BASE 0x48028200UL -#define PORT3_BASE 0x48028300UL -#define PORT4_BASE 0x48028400UL -#define PORT5_BASE 0x48028500UL -#define PORT14_BASE 0x48028E00UL -#define PORT15_BASE 0x48028F00UL - -/* ================================================================================ */ -/* ================ Peripheral declaration ================ */ -/* ================================================================================ */ - -#define PPB ((PPB_Type *)PPB_BASE) -#define DLR ((DLR_GLOBAL_TypeDef *)DLR_BASE) -#define ERU0 ((ERU_GLOBAL_TypeDef *)ERU0_BASE) -#define ERU1 ((ERU_GLOBAL_TypeDef *)ERU1_BASE) -#define GPDMA0 ((GPDMA0_GLOBAL_TypeDef *)GPDMA0_BASE) -#define GPDMA0_CH0 ((GPDMA0_CH_TypeDef *)GPDMA0_CH0_BASE) -#define GPDMA0_CH1 ((GPDMA0_CH_TypeDef *)GPDMA0_CH1_BASE) -#define GPDMA0_CH2 ((GPDMA0_CH_TypeDef *)GPDMA0_CH2_BASE) -#define GPDMA0_CH3 ((GPDMA0_CH_TypeDef *)GPDMA0_CH3_BASE) -#define GPDMA0_CH4 ((GPDMA0_CH_TypeDef *)GPDMA0_CH4_BASE) -#define GPDMA0_CH5 ((GPDMA0_CH_TypeDef *)GPDMA0_CH5_BASE) -#define GPDMA0_CH6 ((GPDMA0_CH_TypeDef *)GPDMA0_CH6_BASE) -#define GPDMA0_CH7 ((GPDMA0_CH_TypeDef *)GPDMA0_CH7_BASE) -#define FCE ((FCE_GLOBAL_TypeDef *)FCE_BASE) -#define FCE_KE0 ((FCE_KE_TypeDef *)FCE_KE0_BASE) -#define FCE_KE1 ((FCE_KE_TypeDef *)FCE_KE1_BASE) -#define FCE_KE2 ((FCE_KE_TypeDef *)FCE_KE2_BASE) -#define FCE_KE3 ((FCE_KE_TypeDef *)FCE_KE3_BASE) -#define PBA0 ((PBA_GLOBAL_TypeDef *)PBA0_BASE) -#define PBA1 ((PBA_GLOBAL_TypeDef *)PBA1_BASE) -#define FLASH0 ((FLASH0_GLOBAL_TypeDef *)FLASH0_BASE) -#define PREF ((PREF_GLOBAL_TypeDef *)PREF_BASE) -#define PMU0 ((PMU0_GLOBAL_TypeDef *)PMU0_BASE) -#define WDT ((WDT_GLOBAL_TypeDef *)WDT_BASE) -#define RTC ((RTC_GLOBAL_TypeDef *)RTC_BASE) -#define SCU_CLK ((SCU_CLK_TypeDef *)SCU_CLK_BASE) -#define SCU_OSC ((SCU_OSC_TypeDef *)SCU_OSC_BASE) -#define SCU_PLL ((SCU_PLL_TypeDef *)SCU_PLL_BASE) -#define SCU_GENERAL ((SCU_GENERAL_TypeDef *)SCU_GENERAL_BASE) -#define SCU_INTERRUPT ((SCU_INTERRUPT_TypeDef *)SCU_INTERRUPT_BASE) -#define SCU_PARITY ((SCU_PARITY_TypeDef *)SCU_PARITY_BASE) -#define SCU_TRAP ((SCU_TRAP_TypeDef *)SCU_TRAP_BASE) -#define SCU_HIBERNATE ((SCU_HIBERNATE_TypeDef *)SCU_HIBERNATE_BASE) -#define SCU_POWER ((SCU_POWER_TypeDef *)SCU_POWER_BASE) -#define SCU_RESET ((SCU_RESET_TypeDef *)SCU_RESET_BASE) -#define LEDTS0 ((LEDTS0_GLOBAL_TypeDef *)LEDTS0_BASE) -#if UC_DEVICE == XMC4400 - #define ETH0_CON ((ETH0_CON_GLOBAL_TypeDef *)ETH0_CON_BASE) - #define ETH0 ((ETH_GLOBAL_TypeDef *)ETH0_BASE) -#endif -#define USB0 ((USB0_GLOBAL_TypeDef *)USB0_BASE) -#define USB0_EP0 ((USB0_EP0_TypeDef *)USB_EP_BASE) -#define USB0_EP1 ((USB0_EP_TypeDef *)USB0_EP1_BASE) -#define USB0_EP2 ((USB0_EP_TypeDef *)USB0_EP2_BASE) -#define USB0_EP3 ((USB0_EP_TypeDef *)USB0_EP3_BASE) -#define USB0_EP4 ((USB0_EP_TypeDef *)USB0_EP4_BASE) -#define USB0_EP5 ((USB0_EP_TypeDef *)USB0_EP5_BASE) -#define USB0_EP6 ((USB0_EP_TypeDef *)USB0_EP6_BASE) -#define USB0_CH0 ((USB0_CH_TypeDef *)USB0_CH0_BASE) -#define USB0_CH1 ((USB0_CH_TypeDef *)USB0_CH1_BASE) -#define USB0_CH2 ((USB0_CH_TypeDef *)USB0_CH2_BASE) -#define USB0_CH3 ((USB0_CH_TypeDef *)USB0_CH3_BASE) -#define USB0_CH4 ((USB0_CH_TypeDef *)USB0_CH4_BASE) -#define USB0_CH5 ((USB0_CH_TypeDef *)USB0_CH5_BASE) -#define USB0_CH6 ((USB0_CH_TypeDef *)USB0_CH6_BASE) -#define USB0_CH7 ((USB0_CH_TypeDef *)USB0_CH7_BASE) -#define USB0_CH8 ((USB0_CH_TypeDef *)USB0_CH8_BASE) -#define USB0_CH9 ((USB0_CH_TypeDef *)USB0_CH9_BASE) -#define USB0_CH10 ((USB0_CH_TypeDef *)USB0_CH10_BASE) -#define USB0_CH11 ((USB0_CH_TypeDef *)USB0_CH11_BASE) -#define USB0_CH12 ((USB0_CH_TypeDef *)USB0_CH12_BASE) -#define USB0_CH13 ((USB0_CH_TypeDef *)USB0_CH13_BASE) -#define USIC0 ((USIC_GLOBAL_TypeDef *)USIC0_BASE) -#define USIC1 ((USIC_GLOBAL_TypeDef *)USIC1_BASE) -#define USIC0_CH0 ((USIC_CH_TypeDef *)USIC0_CH0_BASE) -#define USIC0_CH1 ((USIC_CH_TypeDef *)USIC0_CH1_BASE) -#define USIC1_CH0 ((USIC_CH_TypeDef *)USIC1_CH0_BASE) -#define USIC1_CH1 ((USIC_CH_TypeDef *)USIC1_CH1_BASE) -#define CAN_xmc ((CAN_GLOBAL_TypeDef *)CAN_BASE) -#define CAN_NODE0 ((CAN_NODE_TypeDef *)CAN_NODE0_BASE) -#define CAN_NODE1 ((CAN_NODE_TypeDef *)CAN_NODE1_BASE) -#define CAN_MO0 ((CAN_MO_TypeDef *)CAN_MO0_BASE) -#define CAN_MO1 ((CAN_MO_TypeDef *)CAN_MO1_BASE) -#define CAN_MO2 ((CAN_MO_TypeDef *)CAN_MO2_BASE) -#define CAN_MO3 ((CAN_MO_TypeDef *)CAN_MO3_BASE) -#define CAN_MO4 ((CAN_MO_TypeDef *)CAN_MO4_BASE) -#define CAN_MO5 ((CAN_MO_TypeDef *)CAN_MO5_BASE) -#define CAN_MO6 ((CAN_MO_TypeDef *)CAN_MO6_BASE) -#define CAN_MO7 ((CAN_MO_TypeDef *)CAN_MO7_BASE) -#define CAN_MO8 ((CAN_MO_TypeDef *)CAN_MO8_BASE) -#define CAN_MO9 ((CAN_MO_TypeDef *)CAN_MO9_BASE) -#define CAN_MO10 ((CAN_MO_TypeDef *)CAN_MO10_BASE) -#define CAN_MO11 ((CAN_MO_TypeDef *)CAN_MO11_BASE) -#define CAN_MO12 ((CAN_MO_TypeDef *)CAN_MO12_BASE) -#define CAN_MO13 ((CAN_MO_TypeDef *)CAN_MO13_BASE) -#define CAN_MO14 ((CAN_MO_TypeDef *)CAN_MO14_BASE) -#define CAN_MO15 ((CAN_MO_TypeDef *)CAN_MO15_BASE) -#define CAN_MO16 ((CAN_MO_TypeDef *)CAN_MO16_BASE) -#define CAN_MO17 ((CAN_MO_TypeDef *)CAN_MO17_BASE) -#define CAN_MO18 ((CAN_MO_TypeDef *)CAN_MO18_BASE) -#define CAN_MO19 ((CAN_MO_TypeDef *)CAN_MO19_BASE) -#define CAN_MO20 ((CAN_MO_TypeDef *)CAN_MO20_BASE) -#define CAN_MO21 ((CAN_MO_TypeDef *)CAN_MO21_BASE) -#define CAN_MO22 ((CAN_MO_TypeDef *)CAN_MO22_BASE) -#define CAN_MO23 ((CAN_MO_TypeDef *)CAN_MO23_BASE) -#define CAN_MO24 ((CAN_MO_TypeDef *)CAN_MO24_BASE) -#define CAN_MO25 ((CAN_MO_TypeDef *)CAN_MO25_BASE) -#define CAN_MO26 ((CAN_MO_TypeDef *)CAN_MO26_BASE) -#define CAN_MO27 ((CAN_MO_TypeDef *)CAN_MO27_BASE) -#define CAN_MO28 ((CAN_MO_TypeDef *)CAN_MO28_BASE) -#define CAN_MO29 ((CAN_MO_TypeDef *)CAN_MO29_BASE) -#define CAN_MO30 ((CAN_MO_TypeDef *)CAN_MO30_BASE) -#define CAN_MO31 ((CAN_MO_TypeDef *)CAN_MO31_BASE) -#define CAN_MO32 ((CAN_MO_TypeDef *)CAN_MO32_BASE) -#define CAN_MO33 ((CAN_MO_TypeDef *)CAN_MO33_BASE) -#define CAN_MO34 ((CAN_MO_TypeDef *)CAN_MO34_BASE) -#define CAN_MO35 ((CAN_MO_TypeDef *)CAN_MO35_BASE) -#define CAN_MO36 ((CAN_MO_TypeDef *)CAN_MO36_BASE) -#define CAN_MO37 ((CAN_MO_TypeDef *)CAN_MO37_BASE) -#define CAN_MO38 ((CAN_MO_TypeDef *)CAN_MO38_BASE) -#define CAN_MO39 ((CAN_MO_TypeDef *)CAN_MO39_BASE) -#define CAN_MO40 ((CAN_MO_TypeDef *)CAN_MO40_BASE) -#define CAN_MO41 ((CAN_MO_TypeDef *)CAN_MO41_BASE) -#define CAN_MO42 ((CAN_MO_TypeDef *)CAN_MO42_BASE) -#define CAN_MO43 ((CAN_MO_TypeDef *)CAN_MO43_BASE) -#define CAN_MO44 ((CAN_MO_TypeDef *)CAN_MO44_BASE) -#define CAN_MO45 ((CAN_MO_TypeDef *)CAN_MO45_BASE) -#define CAN_MO46 ((CAN_MO_TypeDef *)CAN_MO46_BASE) -#define CAN_MO47 ((CAN_MO_TypeDef *)CAN_MO47_BASE) -#define CAN_MO48 ((CAN_MO_TypeDef *)CAN_MO48_BASE) -#define CAN_MO49 ((CAN_MO_TypeDef *)CAN_MO49_BASE) -#define CAN_MO50 ((CAN_MO_TypeDef *)CAN_MO50_BASE) -#define CAN_MO51 ((CAN_MO_TypeDef *)CAN_MO51_BASE) -#define CAN_MO52 ((CAN_MO_TypeDef *)CAN_MO52_BASE) -#define CAN_MO53 ((CAN_MO_TypeDef *)CAN_MO53_BASE) -#define CAN_MO54 ((CAN_MO_TypeDef *)CAN_MO54_BASE) -#define CAN_MO55 ((CAN_MO_TypeDef *)CAN_MO55_BASE) -#define CAN_MO56 ((CAN_MO_TypeDef *)CAN_MO56_BASE) -#define CAN_MO57 ((CAN_MO_TypeDef *)CAN_MO57_BASE) -#define CAN_MO58 ((CAN_MO_TypeDef *)CAN_MO58_BASE) -#define CAN_MO59 ((CAN_MO_TypeDef *)CAN_MO59_BASE) -#define CAN_MO60 ((CAN_MO_TypeDef *)CAN_MO60_BASE) -#define CAN_MO61 ((CAN_MO_TypeDef *)CAN_MO61_BASE) -#define CAN_MO62 ((CAN_MO_TypeDef *)CAN_MO62_BASE) -#define CAN_MO63 ((CAN_MO_TypeDef *)CAN_MO63_BASE) -#define VADC ((VADC_GLOBAL_TypeDef *)VADC_BASE) -#define VADC_G0 ((VADC_G_TypeDef *)VADC_G0_BASE) -#define VADC_G1 ((VADC_G_TypeDef *)VADC_G1_BASE) -#define VADC_G2 ((VADC_G_TypeDef *)VADC_G2_BASE) -#define VADC_G3 ((VADC_G_TypeDef *)VADC_G3_BASE) -#define DSD ((DSD_GLOBAL_TypeDef *)DSD_BASE) -#define DSD_CH0 ((DSD_CH_TypeDef *)DSD_CH0_BASE) -#define DSD_CH1 ((DSD_CH_TypeDef *)DSD_CH1_BASE) -#define DSD_CH2 ((DSD_CH_TypeDef *)DSD_CH2_BASE) -#define DSD_CH3 ((DSD_CH_TypeDef *)DSD_CH3_BASE) -#define DAC ((DAC_GLOBAL_TypeDef *)DAC_BASE) -#define CCU40 ((CCU4_GLOBAL_TypeDef *)CCU40_BASE) -#define CCU41 ((CCU4_GLOBAL_TypeDef *)CCU41_BASE) -#define CCU42 ((CCU4_GLOBAL_TypeDef *)CCU42_BASE) -#define CCU43 ((CCU4_GLOBAL_TypeDef *)CCU43_BASE) -#define CCU40_CC40 ((CCU4_CC4_TypeDef *)CCU40_CC40_BASE) -#define CCU40_CC41 ((CCU4_CC4_TypeDef *)CCU40_CC41_BASE) -#define CCU40_CC42 ((CCU4_CC4_TypeDef *)CCU40_CC42_BASE) -#define CCU40_CC43 ((CCU4_CC4_TypeDef *)CCU40_CC43_BASE) -#define CCU41_CC40 ((CCU4_CC4_TypeDef *)CCU41_CC40_BASE) -#define CCU41_CC41 ((CCU4_CC4_TypeDef *)CCU41_CC41_BASE) -#define CCU41_CC42 ((CCU4_CC4_TypeDef *)CCU41_CC42_BASE) -#define CCU41_CC43 ((CCU4_CC4_TypeDef *)CCU41_CC43_BASE) -#define CCU42_CC40 ((CCU4_CC4_TypeDef *)CCU42_CC40_BASE) -#define CCU42_CC41 ((CCU4_CC4_TypeDef *)CCU42_CC41_BASE) -#define CCU42_CC42 ((CCU4_CC4_TypeDef *)CCU42_CC42_BASE) -#define CCU42_CC43 ((CCU4_CC4_TypeDef *)CCU42_CC43_BASE) -#define CCU43_CC40 ((CCU4_CC4_TypeDef *)CCU43_CC40_BASE) -#define CCU43_CC41 ((CCU4_CC4_TypeDef *)CCU43_CC41_BASE) -#define CCU43_CC42 ((CCU4_CC4_TypeDef *)CCU43_CC42_BASE) -#define CCU43_CC43 ((CCU4_CC4_TypeDef *)CCU43_CC43_BASE) -#define CCU80 ((CCU8_GLOBAL_TypeDef *)CCU80_BASE) -#define CCU81 ((CCU8_GLOBAL_TypeDef *)CCU81_BASE) -#define CCU80_CC80 ((CCU8_CC8_TypeDef *)CCU80_CC80_BASE) -#define CCU80_CC81 ((CCU8_CC8_TypeDef *)CCU80_CC81_BASE) -#define CCU80_CC82 ((CCU8_CC8_TypeDef *)CCU80_CC82_BASE) -#define CCU80_CC83 ((CCU8_CC8_TypeDef *)CCU80_CC83_BASE) -#define CCU81_CC80 ((CCU8_CC8_TypeDef *)CCU81_CC80_BASE) -#define CCU81_CC81 ((CCU8_CC8_TypeDef *)CCU81_CC81_BASE) -#define CCU81_CC82 ((CCU8_CC8_TypeDef *)CCU81_CC82_BASE) -#define CCU81_CC83 ((CCU8_CC8_TypeDef *)CCU81_CC83_BASE) -#define HRPWM0 ((HRPWM0_Type *)HRPWM0_BASE) -#define HRPWM0_CSG0 ((HRPWM0_CSG_Type *)HRPWM0_CSG0_BASE) -#define HRPWM0_CSG1 ((HRPWM0_CSG_Type *)HRPWM0_CSG1_BASE) -#define HRPWM0_CSG2 ((HRPWM0_CSG_Type *)HRPWM0_CSG2_BASE) -#define HRPWM0_HRC0 ((HRPWM0_HRC_Type *)HRPWM0_HRC0_BASE) -#define HRPWM0_HRC1 ((HRPWM0_HRC_Type *)HRPWM0_HRC1_BASE) -#define HRPWM0_HRC2 ((HRPWM0_HRC_Type *)HRPWM0_HRC2_BASE) -#define HRPWM0_HRC3 ((HRPWM0_HRC_Type *)HRPWM0_HRC3_BASE) -#define POSIF0 ((POSIF_GLOBAL_TypeDef *)POSIF0_BASE) -#define POSIF1 ((POSIF_GLOBAL_TypeDef *)POSIF1_BASE) -#define PORT0 ((PORT0_Type *)PORT0_BASE) -#define PORT1 ((PORT1_Type *)PORT1_BASE) -#define PORT2 ((PORT2_Type *)PORT2_BASE) -#define PORT3 ((PORT3_Type *)PORT3_BASE) -#define PORT4 ((PORT4_Type *)PORT4_BASE) -#define PORT5 ((PORT5_Type *)PORT5_BASE) -#define PORT14 ((PORT14_Type *)PORT14_BASE) -#define PORT15 ((PORT15_Type *)PORT15_BASE) - -/** @} */ /* End of group Device_Peripheral_Registers */ -/** @} */ /* End of group XMC4400 */ -/** @} */ /* End of group Infineon */ - -#ifdef __cplusplus -} -#endif - -#endif /* XMC4400_H */ diff --git a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h b/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h deleted file mode 100644 index 6b1775b3..00000000 --- a/variants/XMC4400/config/KIT_XMC_PLT2GO_XMC4400/pins_arduino.h +++ /dev/null @@ -1,435 +0,0 @@ -/* - pins_arduino.h - Pin definition functions for Arduino - Part of Arduino - http://www.arduino.cc/ - - Copyright (c) 2007 David A. Mellis - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General - Public License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA - - Copyright (c) 2019 Infineon Technologies AG - This file has been modified for the XMC microcontroller series. -*/ -#ifndef PINS_ARDUINO_H_ -#define PINS_ARDUINO_H_ - -//**************************************************************************** -// @Project Includes -//**************************************************************************** -#include - -//**************************************************************************** -// @Defines -//**************************************************************************** -#define XMC_BOARD KIT_XMC_PLT2GO_XMC4400 - -/* On board LED is ON when digital output is 1, HIGH, TRUE, ON */ -#define XMC_LED_ON 1 - -// Following were defines now evaluated by compilation as const variables -// After definitions of associated mapping arrays -extern const uint8_t NUM_DIGITAL; -extern const uint8_t GND; -extern const uint8_t NUM_PWM4; -extern const uint8_t NUM_PWM8; -extern const uint8_t NUM_PWM; -extern const uint8_t NUM_INTERRUPT; -extern const uint8_t NUM_ANALOG_INPUTS; -#ifdef DAC -extern const uint8_t NUM_ANALOG_OUTPUTS; -#endif -#define NUM_LEDS 2 -#define NUM_BUTTONS 2 -#define NUM_SERIAL 1 -#define NUM_TONE_PINS 16 -#define NUM_TASKS_VARIANT 32 -#define NUM_SPI 1 -#define NUM_I2C 1 - -// Indicate unit has RTC/Alarm -#define HAS_RTC 1 - -// Generate 490Hz @fCCU=144MHz -#define PWM4_TIMER_PERIOD (0x11EF) -// Generate 490Hz @fCCU=144MHz -#define PWM8_TIMER_PERIOD (0x11EF) - -#define PCLK 64000000u - -#define PIN_SPI_SS 10 -#define PIN_SPI_MOSI 11 -#define PIN_SPI_MISO 12 -#define PIN_SPI_SCK 13 - -extern uint8_t SS; -extern uint8_t MOSI; -extern uint8_t MISO; -extern uint8_t SCK; - -#define A0 0 -#define A1 1 -#define A2 2 -#define A3 3 -#define A4 4 -#define A5 5 -// Additional ADC ports starting here -#define A6 6 -#define A7 7 -#define A8 8 -#define A9 9 -#define A10 10 -#define A11 11 -#define A12 12 -#define A13 13 -#define A14 14 -#define A15 15 -#define A16 16 -#define A17 17 - -#define LED1 65 -#define LED2 62 -#define LED_BUILTIN LED1 - -#define BUTTON1 68 -#define BUTTON2 57 - -#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : -1)) - -#ifdef ARDUINO_MAIN -// Mapping of digital pins and comments -const XMC_PORT_PIN_t mapping_port_pin[] = { - /* 0 */ {XMC_GPIO_PORT2, 15}, // RX P2.15 X1-4 - /* 1 */ {XMC_GPIO_PORT2, 14}, // TX P2.14 X1-3 - /* 2 */ {XMC_GPIO_PORT1, 0}, // GPIO / External INT 0 P1.0 X1-11 - /* 3 */ {XMC_GPIO_PORT3, 6}, // PWM42-0 / PWM0 / External INT 1 P3.6 X2-6 - /* 4 */ {XMC_GPIO_PORT1, 6}, // GPIO / IO_0 P1.6 X1-7 - /* 5 */ {XMC_GPIO_PORT3, 3}, // PWM42-3 output / PWM1 P3.3 X2-5 - /* 6 */ {XMC_GPIO_PORT3, 4}, // PWM42-2 output / PWM2 P3.4 X2-8 - /* 7 */ {XMC_GPIO_PORT1, 14}, // GPIO / IO_1 P1.14 X1-21 - /* 8 */ {XMC_GPIO_PORT4, 1}, // GPIO / IO_2 P4.1 X1-6 - /* 9 */ {XMC_GPIO_PORT0, 11}, // PWM80-31 output / PWM3 P0.11 X2-7 - /* 10 */ {XMC_GPIO_PORT0, 2}, // SPI-SS / PWM80-01 / PWM4 P0.2 X2-16 - /* 11 */ {XMC_GPIO_PORT1, 9}, // SPI-MOSI P1.9 X1-10 - /* 12 */ {XMC_GPIO_PORT0, 0}, // SPI-MISO P0.0 X2-18 - /* 13 */ {XMC_GPIO_PORT1, 8}, // SPI-SCK / GPIO P1.8 X1-9 - /* 14 */ {XMC_GPIO_PORT2, 5}, // I2C Data / Address SDA / A4 / PWM41-0 P2.5 (Hardwired to A4) - // X1-34 - /* 15 */ {XMC_GPIO_PORT3, 0}, // I2C Clock SCL / A5 - ADC Input P3.0 (Hardwired to A5) - // X2-19 - /* 16 */ {XMC_GPIO_PORT14, 0}, // A0 / ADC Input P14.0 (INPUT ONLY) - /* 17 */ {XMC_GPIO_PORT14, 1}, // A1 / ADC Input P14.1 (INPUT ONLY) - /* 18 */ {XMC_GPIO_PORT14, 2}, // A2 / ADC Input P14.2 (INPUT ONLY) - /* 19 */ {XMC_GPIO_PORT14, 3}, // A3 / ADC Input P14.3 (INPUT ONLY) - // X2-31 - /* 20 */ {XMC_GPIO_PORT14, 4}, // A4 / ADC Input / SDA / GPIO P14.4 (Hardwired to - // SDA) X2-24 - /* 21 */ {XMC_GPIO_PORT14, 5}, // A5 / ADC Input / SCL P14.5 (Hardwired to - // SCL) X2-30 - /* 22 */ {XMC_GPIO_PORT1, 15}, // USB Debug RX P1.15 X1-22 - /* 23 */ {XMC_GPIO_PORT0, 5}, // USB Debug TX P0.5 X2-9 - - // Additional pins for port X1 starting here - /* 24 */ {XMC_GPIO_PORT2, 10}, // GPIO / ETH_LED P2.10 X1-37 - /* 25 */ {XMC_GPIO_PORT2, 8}, // GPIO / ETH_TXDO / PWM80-32 P2.8 X1-35 - /* 26 */ {XMC_GPIO_PORT2, 4}, // GPIO / ETH_RXER / PWM41-1 P2.4 X1-33 - /* 27 */ {XMC_GPIO_PORT2, 3}, // ETH_RXD1 / PWM41-2 P2.3 X1-32 - /* 28 */ {XMC_GPIO_PORT2, 2}, // GPIO / ETH_RXDO / PWM41-3 P2.2 X1-31 - /* 29 */ {XMC_GPIO_PORT2, 0}, // GPIO / ETH_MDIO / PWM81-21 P2.0 X1-29 - /* 30 */ {XMC_GPIO_PORT2, 6}, // PWM80-13 / GPIO4_2GO_2 P2.6 X1-27 - /* 31 */ {XMC_GPIO_PORT5, 2}, // GPIO / RST P5.2 X1-25 - /* 32 */ {XMC_GPIO_PORT5, 0}, // GPIO1_2GO_1 P5.0 X1-23 - /* 33 */ {XMC_GPIO_PORT1, 12}, // GPIO / CAN_TX P1.12 X1-19 - /* 34 */ {XMC_GPIO_PORT1, 10}, // GPIO / GPIO2_2GO_1 P1.10 X1-17 - /* 35 */ {XMC_GPIO_PORT1, 4}, // GPIO / QSPI_IO1 P1.4 X1-15 - /* 36 */ {XMC_GPIO_PORT1, 2}, // GPIO / QSPI_IO3 P1.2 X1-13 - /* 37 */ {XMC_GPIO_PORT4, 0}, // GPIO / GPIO2_2GO_2 P4.0 X1-5 - /* 38 */ {XMC_GPIO_PORT1, 7}, // GPIO / SPI_CS_2GO_2 P1.7 (Chip Select - Slot - // 2) X1-8 - /* 39 */ {XMC_GPIO_PORT1, 1}, // GPIO1_2GO_2 P1.1 X1-12 - /* 40 */ {XMC_GPIO_PORT1, 3}, // GPIO / QSPI_IO3 P1.3 X1-14 - /* 41 */ {XMC_GPIO_PORT1, 5}, // GPIO / QSPI_IO0 P1.5 X1-16 - /* 42 */ {XMC_GPIO_PORT1, 11}, // GPIO / QSPI_CS P1.11 X1-18 - /* 43 */ {XMC_GPIO_PORT1, 13}, // GPIO / CAN_RX P1.13 X1-20 - /* 44 */ {XMC_GPIO_PORT5, 1}, // GPIO / ETH_INT P5.1 X1-24 - /* 45 */ {XMC_GPIO_PORT5, 7}, // PWM81-02 P5.7 X1-26 - /* 46 */ {XMC_GPIO_PORT2, 7}, // PWM80-03 / ETH_MDC P2.7 X1-28 - /* 47 */ {XMC_GPIO_PORT2, 1}, // SWV ""DEBUG Do NOT Use ** P2.1 X1-30 - /* 48 */ {XMC_GPIO_PORT2, 9}, // PWM80-22 / ETH_TXD1 P2.9 X1-36 - /* 49 */ {XMC_GPIO_PORT15, 8}, // A16 / ETH_CLK P15.8 X1-38 - - // Additional pins for port X2 starting here - /* 50 */ {XMC_GPIO_PORT14, 8}, // A14 / DAC 0 Output P14.8 X2-33 - /* 51 */ {XMC_GPIO_PORT15, 2}, // A12 - ADC Input P15.2 (INPUT ONLY) X2-32 - /* 52 */ {XMC_GPIO_PORT14, 15}, // A11 - ADC Input P14.15 (INPUT ONLY) - // X2-29 - /* 53 */ {XMC_GPIO_PORT15, 9}, // A17 - ADC Input / ETH_CRS P15.9 X2-27 - /* 54 */ {XMC_GPIO_PORT14, 6}, // A6 / AN1_2GO_1 - ADC Input P14.6 (INPUT ONLY) X2-25 - /* 55 */ {XMC_GPIO_PORT14, 12}, // A8 / AN1_2GO_2 - ADC Input P14.12 (INPUT ONLY) - // X2-23 - /* 56 */ {XMC_GPIO_PORT14, 14}, // A10 / ADC Input P14.14 (INPUT ONLY) - // X2-21 - /* 57 */ {XMC_GPIO_PORT3, 2}, // BUTTON2 P3.2 X2-17 - /* 58 */ {XMC_GPIO_PORT0, 10}, // INT / GPIO3_2GO_1 P0.10 X2-15 - /* 59 */ {XMC_GPIO_PORT0, 1}, // INT P0.1 X2-13 - /* 60 */ {XMC_GPIO_PORT0, 3}, // INT / GPIO3_2GO_2 P0.3 X2-11 - /* 61 */ {XMC_GPIO_PORT3, 5}, // CS_2GO_1 P3.5 (Chip Select - Slot - // 1) X2-3 - /* 62 */ {XMC_GPIO_PORT0, 7}, // LED2 P0.7 X2-1 - /* 63 */ {XMC_GPIO_PORT0, 8}, // QSPI_CLK P0.8 X2-4 - /* 64 */ {XMC_GPIO_PORT0, 12}, // CS_MB P0.12 (Chip Select - - // MikroBUS) X2-10 - /* 65 */ {XMC_GPIO_PORT0, 6}, // LED1 P0.6 X2-12 - /* 66 */ {XMC_GPIO_PORT0, 4}, // ETH_TXEN P0.4 X2-14 - /* 67 */ {XMC_GPIO_PORT0, 9}, // GPIO4_2GO_1 / PWM80-12 / PWM P0.9 X2-20 - /* 68 */ {XMC_GPIO_PORT3, 1}, // BUTTON1 P3.1 X2-22 - /* 69 */ {XMC_GPIO_PORT14, 13}, // A9 / AN2_2GO_2 - ADC Input P14.13 (INPUT ONLY) - // X2-26 - /* 70 */ {XMC_GPIO_PORT14, 7}, // A7 / AN2_2GO_1 - ADC Input P14.7 (INPUT ONLY) X2-28 - /* 71 */ {XMC_GPIO_PORT15, 3}, // A13 - ADC Input P15.3 (INPUT ONLY) X2-34 - /* 72 */ {XMC_GPIO_PORT14, 9} // A15 / DAC 1 Output P14.9 X2-36 -}; -const uint8_t GND = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); -const uint8_t NUM_DIGITAL = (sizeof(mapping_port_pin) / sizeof(XMC_PORT_PIN_t)); -bool gpio_current_value[NUM_DIGITAL] = {false}; -; - -const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { - /* 0 */ {CCU40, CCU40_CC43, 3, 0, CCU40_IN3_P1_0}, - /* 1 */ {CCU42, CCU42_CC40, 0, 1, CCU42_IN0_P3_6}}; -const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERRUPT_t)); - -/* Mapping of Arduino Pins to PWM4 channels as pin and index in PWM4 channel - mapping array XMC_PWM4_t mapping_pwm4[] - last entry 255 for both parts. - Putting both parts in array means if a PWM4 channel gets reassigned for - another function later a gap in channel numbers will not mess things up */ -const uint8_t mapping_pin_PWM4[][2] = {{3, 0}, // PWM0 - {5, 1}, // PWM1 - {6, 2}, // PWM2 - {14, 3}, // PWM - {26, 4}, // PWM - {27, 5}, // PWM - {28, 6}, // PWM - {255, 255}}; - -/* Configurations of PWM channels for CCU4 type */ -XMC_PWM4_t mapping_pwm4[] = { - {CCU42, CCU42_CC40, 0, mapping_port_pin[3], P3_6_AF_CCU42_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 3 P3.6 - {CCU42, CCU42_CC43, 3, mapping_port_pin[5], P3_3_AF_CCU42_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 5 P3.3 - {CCU42, CCU42_CC42, 2, mapping_port_pin[6], P3_4_AF_CCU42_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 6 P3.4 - {CCU41, CCU41_CC40, 0, mapping_port_pin[14], P2_5_AF_CCU41_OUT0, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 14 P2.5 - {CCU41, CCU41_CC41, 1, mapping_port_pin[26], P2_4_AF_CCU41_OUT1, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 26 P2.4 - {CCU41, CCU41_CC42, 2, mapping_port_pin[27], P2_3_AF_CCU41_OUT2, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 27 P2.3 - {CCU41, CCU41_CC43, 3, mapping_port_pin[28], P2_2_AF_CCU41_OUT3, XMC_CCU4_SLICE_PRESCALER_64, - PWM4_TIMER_PERIOD, 0, false}, // PWM disabled 28 P2.2 -}; -const uint8_t NUM_PWM4 = (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)); - -/* Mapping in same manner as PWM4 for PWM8 channels */ -const uint8_t mapping_pin_PWM8[][2] = {{9, 0}, // PWM3 - {10, 1}, // PWM4 - {25, 2}, // PWM - {29, 3}, // PWM - {30, 4}, // PWM - {45, 5}, // PWM - {46, 6}, // PWM - {48, 7}, // PWM - {67, 8}, // PWM - {255, 255}}; - -/* Configurations of PWM channels for CCU8 type */ -XMC_PWM8_t mapping_pwm8[] = { - {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[9], - P0_11_AF_CCU80_OUT31, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false}, // PWM disabled 9 P0.11 - {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[10], - P0_2_AF_CCU80_OUT01, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false}, // PWM disabled 10 P0.2 - // additional pwm outputs starting here - {CCU80, CCU80_CC83, 3, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[25], - P2_8_AF_CCU80_OUT32, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false}, // PWM disabled 25 P2.8 - {CCU81, CCU81_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_1, mapping_port_pin[29], - P2_0_AF_CCU81_OUT21, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false}, // PWM disabled 29 P2.0 - {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[30], - P2_6_AF_CCU80_OUT13, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false}, // PWM disabled 30 P2.6 - {CCU81, CCU81_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[45], - P5_7_AF_CCU81_OUT02, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false}, // PWM disabled 45 P5.7 - {CCU80, CCU80_CC80, 0, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[46], - P2_7_AF_CCU80_OUT03, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false}, // PWM disabled 46 P2.7 - {CCU80, CCU80_CC82, 2, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[48], - P2_9_AF_CCU80_OUT22, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false}, // PWM disabled 48 P2.9 - {CCU80, CCU80_CC81, 1, XMC_CCU8_SLICE_COMPARE_CHANNEL_2, mapping_port_pin[67], - P0_9_AF_CCU80_OUT12, XMC_CCU8_SLICE_PRESCALER_64, PWM8_TIMER_PERIOD, 0, - false} // PWM disabled 67 P0.9 -}; - -const uint8_t NUM_PWM8 = (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); -const uint8_t NUM_PWM = - (sizeof(mapping_pwm4) / sizeof(XMC_PWM4_t)) + (sizeof(mapping_pwm8) / sizeof(XMC_PWM8_t)); - - /* Analog Pin mappings and configurations */ - #ifdef DAC -const uint8_t mapping_pin_DAC[][2] = {{50, 0}, {72, 1}, {255, 255}}; - -/* Analog Pin mappings and configurations */ -XMC_ARD_DAC_t mapping_dac[] = {{XMC_DAC0, 1, 12}, {XMC_DAC0, 0, 12}}; -const uint8_t NUM_ANALOG_OUTPUTS = (sizeof(mapping_dac) / sizeof(XMC_ARD_DAC_t)); - #endif - -// Result reg numbers are now equal to channel numbers -XMC_ADC_t mapping_adc[] = { - {VADC, 0, VADC_G0, 0, 0, false}, {VADC, 1, VADC_G0, 0, 1, false}, - {VADC, 2, VADC_G1, 1, 2, false}, {VADC, 3, VADC_G1, 1, 3, false}, - {VADC, 0, VADC_G2, 2, 0, false}, {VADC, 1, VADC_G2, 2, 1, false}, - {VADC, 6, VADC_G2, 2, 6, false}, {VADC, 5, VADC_G2, 2, 5, false}, - {VADC, 3, VADC_G2, 2, 3, false}, {VADC, 7, VADC_G1, 1, 7, false}, - {VADC, 5, VADC_G1, 1, 5, false}, {VADC, 7, VADC_G0, 0, 7, false}, - {VADC, 7, VADC_G3, 3, 7, false}, {VADC, 1, VADC_G1, 1, 1, false}, - {VADC, 0, VADC_G1, 1, 0, false}, {VADC, 6, VADC_G3, 3, 6, false}, - {VADC, 6, VADC_G0, 0, 6, false}, {VADC, 4, VADC_G1, 1, 4, false}, -}; -const uint8_t NUM_ANALOG_INPUTS = (sizeof(mapping_adc) / sizeof(XMC_ADC_t)); - -XMC_UART_t XMC_UART_0 = { - .channel = XMC_UART1_CH0, - .rx = - { - #ifdef SERIAL_HOSTPC - .port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5 - #elif SERIAL_ONBOARD - .port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)15 - #endif - }, - .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - .tx = - { - #ifdef SERIAL_HOSTPC - .port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)15 - #elif SERIAL_ONBOARD - .port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14 - #endif - }, - .tx_config = - { - #ifdef SERIAL_HOSTPC - .mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - #elif SERIAL_ONBOARD - .mode = (XMC_GPIO_MODE_t)XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - #endif - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_SOFT_EDGE}, - #ifdef SERIAL_HOSTPC - .input_source_dx0 = (XMC_USIC_INPUT_t)USIC1_C0_DX0_P0_5, - #elif SERIAL_ONBOARD - .input_source_dx0 = (XMC_USIC_INPUT_t)USIC1_C0_DX0_P2_15, - #endif - .input_source_dx1 = XMC_INPUT_INVALID, - .input_source_dx2 = XMC_INPUT_INVALID, - .input_source_dx3 = XMC_INPUT_INVALID, - .irq_num = USIC1_0_IRQn, - .irq_service_request = 0}; - -// Single Hardware Serial object for both UART interfaces -Uart Serial(&XMC_UART_0); - -// SPI instance -XMC_SPI_t XMC_SPI_0 = { - .channel = XMC_SPI1_CH1, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)9}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)0}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_D, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)8}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT4, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, -}; - -// I2C instance -XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, - .channel_config = {.baudrate = (uint32_t)(100000U), .address = 0U}, - .sda = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)5}, - .sda_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .scl = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)0}, - .scl_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH}, - .input_source_dx0 = XMC_INPUT_B, - .input_source_dx1 = XMC_INPUT_B, - .slave_receive_irq_num = (IRQn_Type)91, - .slave_receive_irq_service_request = 1, - .protocol_irq_num = (IRQn_Type)92, - .protocol_irq_service_request = 2}; - - // // XMC CAN instance - // #ifdef CAN_xmc - // XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE1, - // .can_node_num = XMC_NODE_NUM_1, - // .can_clock = XMC_CAN_CANCLKSRC_FPERI, - // .can_frequency = (uint32_t)144000000, - // .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)13}, - // .rx_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE}, - // .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)12}, - // .tx_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2}, - // .node_input = CAN_NODE1_RXD_P1_13, - // .irq_num = CAN0_7_IRQn, - // .irq_service_request = 7u}; - // #endif - - // Serial Interrupt and event handling - #ifdef __cplusplus -extern "C" { - #endif -void serialEventRun(); -void serialEvent() __attribute__((weak)); - -void serialEventRun() { - if (serialEvent) { - if (Serial.available()) - serialEvent(); - } -} - -void USIC1_0_IRQHandler() { Serial.IrqHandler(); } - - #ifdef __cplusplus -} - #endif -#endif /* ARDUINO_MAIN*/ -#endif diff --git a/variants/XMC4400/linker_script.ld b/variants/XMC4400/linker_script.ld deleted file mode 100644 index e38b8e94..00000000 --- a/variants/XMC4400/linker_script.ld +++ /dev/null @@ -1,292 +0,0 @@ -/** - * @file XMC4400x512.ld - * @date 2017-04-20 - * - * @cond - ********************************************************************************************************************* - * Linker file for the GNU C Compiler v1.8 - * Supported devices: XMC4400-F100x512 - * XMC4400-F64x512 - * - * Copyright (c) 2015-2017, Infineon Technologies AG - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification,are permitted provided that the - * following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following - * disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote - * products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * To improve the quality of the software, users are encouraged to share modifications, enhancements or bug fixes with - * Infineon Technologies AG dave@infineon.com). - ********************************************************************************************************************* - * - * Change History - * -------------- - * - * 2015-07-07: - * - Product splitting - * - Copyright notice update - * - * 2015-11-24: - * - Compatibility with GCC 4.9 2015q2 - * - * 2016-03-08: - * - Fix size of BSS and DATA sections to be multiple of 4 - * - Add assertion to check that region SRAM_combined does not overflowed no_init section - * - * 2017-04-07: - * - Added new symbols __text_size and eText - * - * 2017-04-20: - * - Change vtable location to flash area to save ram - * - * @endcond - * - */ - -OUTPUT_FORMAT("elf32-littlearm") -OUTPUT_ARCH(arm) -ENTRY(Reset_Handler) - -MEMORY -{ - FLASH_1_cached(RX) : ORIGIN = 0x08000000, LENGTH = 0x80000 - FLASH_1_uncached(RX) : ORIGIN = 0x0C000000, LENGTH = 0x80000 - PSRAM_1(!RX) : ORIGIN = 0x1FFFC000, LENGTH = 0x4000 - DSRAM_1_system(!RX) : ORIGIN = 0x20000000, LENGTH = 0x8000 - DSRAM_2_comm(!RX) : ORIGIN = 0x20008000, LENGTH = 0x8000 - SRAM_combined(!RX) : ORIGIN = 0x1FFFC000, LENGTH = 0x14000 -} - -stack_size = DEFINED(stack_size) ? stack_size : 2048; -no_init_size = 64; - -SECTIONS -{ - /* TEXT section */ - - .text : - { - sText = .; - KEEP(*(.reset)); - *(.text .text.* .gnu.linkonce.t.*); - - /* C++ Support */ - KEEP(*(.init)) - KEEP(*(.fini)) - - /* .ctors */ - *crtbegin.o(.ctors) - *crtbegin?.o(.ctors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) - *(SORT(.ctors.*)) - *(.ctors) - - /* .dtors */ - *crtbegin.o(.dtors) - *crtbegin?.o(.dtors) - *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) - *(SORT(.dtors.*)) - *(.dtors) - - *(.rodata .rodata.*) - *(.gnu.linkonce.r*) - - *(vtable) - - . = ALIGN(4); - } > FLASH_1_cached AT > FLASH_1_uncached - - .eh_frame_hdr : ALIGN (4) - { - KEEP (*(.eh_frame_hdr)) - } > FLASH_1_cached AT > FLASH_1_uncached - - .eh_frame : ALIGN (4) - { - KEEP (*(.eh_frame)) - } > FLASH_1_cached AT > FLASH_1_uncached - - /* Exception handling, exidx needs a dedicated section */ - .ARM.extab : ALIGN (4) - { - *(.ARM.extab* .gnu.linkonce.armextab.*) - } > FLASH_1_cached AT > FLASH_1_uncached - - . = ALIGN(4); - __exidx_start = .; - .ARM.exidx : ALIGN (4) - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > FLASH_1_cached AT > FLASH_1_uncached - __exidx_end = .; - . = ALIGN(4); - - /* DSRAM layout (Lowest to highest)*/ - Stack (NOLOAD) : - { - __stack_start = .; - . = . + stack_size; - __stack_end = .; - __initial_sp = .; - } > SRAM_combined - - /* functions with __attribute__((section(".ram_code"))) */ - .ram_code : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __ram_code_start = .; - *(.ram_code) - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __ram_code_end = .; - } > SRAM_combined AT > FLASH_1_uncached - __ram_code_load = LOADADDR (.ram_code); - __ram_code_size = __ram_code_end - __ram_code_start; - - /* Standard DATA and user defined DATA/BSS/CONST sections */ - .data : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __data_start = .; - * (.data); - * (.data*); - *(*.data); - *(.gnu.linkonce.d*) - - . = ALIGN(4); - /* preinit data */ - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP(*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - - . = ALIGN(4); - /* init data */ - PROVIDE_HIDDEN (__init_array_start = .); - KEEP(*(SORT(.init_array.*))) - KEEP(*(.init_array)) - PROVIDE_HIDDEN (__init_array_end = .); - - . = ALIGN(4); - /* finit data */ - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP(*(SORT(.fini_array.*))) - KEEP(*(.fini_array)) - PROVIDE_HIDDEN (__fini_array_end = .); - - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __data_end = .; - } > SRAM_combined AT > FLASH_1_uncached - __data_load = LOADADDR (.data); - __data_size = __data_end - __data_start; - - __text_size = (__exidx_end - sText) + __data_size + __ram_code_size; - eText = sText + __text_size; - - /* BSS section */ - .bss (NOLOAD) : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __bss_start = .; - * (.bss); - * (.bss*); - * (COMMON); - *(.gnu.linkonce.b*) - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - __bss_end = .; - } > SRAM_combined - __bss_size = __bss_end - __bss_start; - - /* Shift location counter, so that ETH_RAM and USB_RAM are located above DSRAM_1_system */ - __shift_loc = (__bss_end >= ORIGIN(DSRAM_1_system)) ? 0 : (ORIGIN(DSRAM_1_system) - __bss_end); - - USB_RAM (__bss_end + __shift_loc) (NOLOAD) : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - USB_RAM_start = .; - *(USB_RAM) - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - USB_RAM_end = .; - } > SRAM_combined - USB_RAM_size = USB_RAM_end - USB_RAM_start; - - ETH_RAM (USB_RAM_end) (NOLOAD) : - { - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - ETH_RAM_start = .; - *(ETH_RAM) - . = ALIGN(4); /* section size must be multiply of 4. See startup.S file */ - ETH_RAM_end = .; - . = ALIGN(8); - Heap_Bank1_Start = .; - } > SRAM_combined - ETH_RAM_size = ETH_RAM_end - ETH_RAM_start; - - /* .no_init section contains chipid, SystemCoreClock and trimming data. See system.c file */ - .no_init ORIGIN(SRAM_combined) + LENGTH(SRAM_combined) - no_init_size (NOLOAD) : - { - Heap_Bank1_End = .; - * (.no_init); - } > SRAM_combined - - /* Heap - Bank1*/ - Heap_Bank1_Size = Heap_Bank1_End - Heap_Bank1_Start; - - ASSERT(Heap_Bank1_Start <= Heap_Bank1_End, "region SRAM_combined overflowed no_init section") - - /DISCARD/ : - { - *(.comment) - } - - .stab 0 (NOLOAD) : { *(.stab) } - .stabstr 0 (NOLOAD) : { *(.stabstr) } - - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_pubtypes 0 : { *(.debug_pubtypes) } - - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - - /* DWARF 2.1 */ - .debug_ranges 0 : { *(.debug_ranges) } - - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - - /* Build attributes */ - .build_attributes 0 : { *(.ARM.attributes) } -} diff --git a/variants/XMC4400/startup_XMC4400.S b/variants/XMC4400/startup_XMC4400.S deleted file mode 100644 index 9440ee47..00000000 --- a/variants/XMC4400/startup_XMC4400.S +++ /dev/null @@ -1,452 +0,0 @@ -/********************************************************************************************************************* - * @file startup_XMC4400.S - * @brief CMSIS Core Device Startup File for Infineon XMC4400 Device Series - * @version V1.0 - * @date 01 June 2016 - * - * @cond - ********************************************************************************************************************* - * Copyright (c) 2012-2016, Infineon Technologies AG - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification,are permitted provided that the - * following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of conditions and the following - * disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the distribution. - * - * Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote - * products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * To improve the quality of the software, users are encouraged to share modifications, enhancements or bug fixes with - * Infineon Technologies AG dave@infineon.com). - ********************************************************************************************************************* - * - **************************** Change history ******************************** - * V0.1,Sep, 13, 2012 ES : initial version - * V0.2,Oct, 12, 2012 PKB: C++ support - * V0.3,Jan, 26, 2013 PKB: Workaround for prefetch bug - * V0.4,Jul, 29, 2013 PKB: AAPCS violation in V0.3 fixed - * V0.5,Feb, 05, 2014 PKB: Removed redundant alignment code from copy+clear funcs - * V0.6,May, 05, 2014 JFT: Added ram_code section - * V0.7,Nov, 25, 2014 JFT: CPU workaround disabled. Single default handler. - * Removed DAVE3 dependency - * V0.8,Jan, 05, 2016 JFT: Fix .reset section attributes - * V0.9,March,04,2016 JFT: Fix weak definition of Veneers. - * Only relevant for AA, which needs ENABLE_PMU_CM_001_WORKAROUND - * V1.0,June ,01,2016 JFT: Rename ENABLE_CPU_CM_001_WORKAROUND to ENABLE_PMU_CM_001_WORKAROUND - * Action required: If using AA step, use ENABLE_PMU_CM_001_WORKAROUND instead of ENABLE_CPU_CM_001_WORKAROUND - * @endcond - */ - -/* ===========START : MACRO DEFINITION MACRO DEFINITION ================== */ - -.macro Entry Handler -#if defined(ENABLE_PMU_CM_001_WORKAROUND) - .long \Handler\()_Veneer -#else - .long \Handler -#endif -.endm - -.macro Insert_ExceptionHandler Handler_Func - .weak \Handler_Func - .thumb_set \Handler_Func, Default_Handler - -#if defined(ENABLE_PMU_CM_001_WORKAROUND) - .weak \Handler_Func\()_Veneer - .type \Handler_Func\()_Veneer, %function -\Handler_Func\()_Veneer: - push {r0, lr} - ldr r0, =\Handler_Func - blx r0 - pop {r0, pc} - .size \Handler_Func\()_Veneer, . - \Handler_Func\()_Veneer -#endif -.endm - -/* =============END : MACRO DEFINITION MACRO DEFINITION ================== */ - -/* ================== START OF VECTOR TABLE DEFINITION ====================== */ -/* Vector Table - This gets programed into VTOR register by onchip BootROM */ - .syntax unified - - .section .reset, "a", %progbits - - .align 2 - .globl __Vectors - .type __Vectors, %object -__Vectors: - .long __initial_sp /* Top of Stack */ - .long Reset_Handler /* Reset Handler */ - - Entry NMI_Handler /* NMI Handler */ - Entry HardFault_Handler /* Hard Fault Handler */ - Entry MemManage_Handler /* MPU Fault Handler */ - Entry BusFault_Handler /* Bus Fault Handler */ - Entry UsageFault_Handler /* Usage Fault Handler */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - .long 0 /* Reserved */ - Entry SVC_Handler /* SVCall Handler */ - Entry DebugMon_Handler /* Debug Monitor Handler */ - .long 0 /* Reserved */ - Entry PendSV_Handler /* PendSV Handler */ - Entry SysTick_Handler /* SysTick Handler */ - - /* Interrupt Handlers for Service Requests (SR) from XMC4400 Peripherals */ - Entry SCU_0_IRQHandler /* Handler name for SR SCU_0 */ - Entry ERU0_0_IRQHandler /* Handler name for SR ERU0_0 */ - Entry ERU0_1_IRQHandler /* Handler name for SR ERU0_1 */ - Entry ERU0_2_IRQHandler /* Handler name for SR ERU0_2 */ - Entry ERU0_3_IRQHandler /* Handler name for SR ERU0_3 */ - Entry ERU1_0_IRQHandler /* Handler name for SR ERU1_0 */ - Entry ERU1_1_IRQHandler /* Handler name for SR ERU1_1 */ - Entry ERU1_2_IRQHandler /* Handler name for SR ERU1_2 */ - Entry ERU1_3_IRQHandler /* Handler name for SR ERU1_3 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - Entry PMU0_0_IRQHandler /* Handler name for SR PMU0_0 */ - .long 0 /* Not Available */ - Entry VADC0_C0_0_IRQHandler /* Handler name for SR VADC0_C0_0 */ - Entry VADC0_C0_1_IRQHandler /* Handler name for SR VADC0_C0_1 */ - Entry VADC0_C0_2_IRQHandler /* Handler name for SR VADC0_C0_1 */ - Entry VADC0_C0_3_IRQHandler /* Handler name for SR VADC0_C0_3 */ - Entry VADC0_G0_0_IRQHandler /* Handler name for SR VADC0_G0_0 */ - Entry VADC0_G0_1_IRQHandler /* Handler name for SR VADC0_G0_1 */ - Entry VADC0_G0_2_IRQHandler /* Handler name for SR VADC0_G0_2 */ - Entry VADC0_G0_3_IRQHandler /* Handler name for SR VADC0_G0_3 */ - Entry VADC0_G1_0_IRQHandler /* Handler name for SR VADC0_G1_0 */ - Entry VADC0_G1_1_IRQHandler /* Handler name for SR VADC0_G1_1 */ - Entry VADC0_G1_2_IRQHandler /* Handler name for SR VADC0_G1_2 */ - Entry VADC0_G1_3_IRQHandler /* Handler name for SR VADC0_G1_3 */ - Entry VADC0_G2_0_IRQHandler /* Handler name for SR VADC0_G2_0 */ - Entry VADC0_G2_1_IRQHandler /* Handler name for SR VADC0_G2_1 */ - Entry VADC0_G2_2_IRQHandler /* Handler name for SR VADC0_G2_2 */ - Entry VADC0_G2_3_IRQHandler /* Handler name for SR VADC0_G2_3 */ - Entry VADC0_G3_0_IRQHandler /* Handler name for SR VADC0_G3_0 */ - Entry VADC0_G3_1_IRQHandler /* Handler name for SR VADC0_G3_1 */ - Entry VADC0_G3_2_IRQHandler /* Handler name for SR VADC0_G3_2 */ - Entry VADC0_G3_3_IRQHandler /* Handler name for SR VADC0_G3_3 */ - Entry DSD0_0_IRQHandler /* Handler name for SR DSD_SRM_0 */ - Entry DSD0_1_IRQHandler /* Handler name for SR DSD_SRM_1 */ - Entry DSD0_2_IRQHandler /* Handler name for SR DSD_SRM_2 */ - Entry DSD0_3_IRQHandler /* Handler name for SR DSD_SRM_3 */ - Entry DSD0_4_IRQHandler /* Handler name for SR DSD_SRA_0 */ - Entry DSD0_5_IRQHandler /* Handler name for SR DSD_SRA_1 */ - Entry DSD0_6_IRQHandler /* Handler name for SR DSD_SRA_2 */ - Entry DSD0_7_IRQHandler /* Handler name for SR DSD_SRA_3 */ - Entry DAC0_0_IRQHandler /* Handler name for SR DAC0_0 */ - Entry DAC0_1_IRQHandler /* Handler name for SR DAC0_1 */ - Entry CCU40_0_IRQHandler /* Handler name for SR CCU40_0 */ - Entry CCU40_1_IRQHandler /* Handler name for SR CCU40_1 */ - Entry CCU40_2_IRQHandler /* Handler name for SR CCU40_2 */ - Entry CCU40_3_IRQHandler /* Handler name for SR CCU40_3 */ - Entry CCU41_0_IRQHandler /* Handler name for SR CCU41_0 */ - Entry CCU41_1_IRQHandler /* Handler name for SR CCU41_1 */ - Entry CCU41_2_IRQHandler /* Handler name for SR CCU41_2 */ - Entry CCU41_3_IRQHandler /* Handler name for SR CCU41_3 */ - Entry CCU42_0_IRQHandler /* Handler name for SR CCU42_0 */ - Entry CCU42_1_IRQHandler /* Handler name for SR CCU42_1 */ - Entry CCU42_2_IRQHandler /* Handler name for SR CCU42_2 */ - Entry CCU42_3_IRQHandler /* Handler name for SR CCU42_3 */ - Entry CCU43_0_IRQHandler /* Handler name for SR CCU43_0 */ - Entry CCU43_1_IRQHandler /* Handler name for SR CCU43_1 */ - Entry CCU43_2_IRQHandler /* Handler name for SR CCU43_2 */ - Entry CCU43_3_IRQHandler /* Handler name for SR CCU43_3 */ - Entry CCU80_0_IRQHandler /* Handler name for SR CCU80_0 */ - Entry CCU80_1_IRQHandler /* Handler name for SR CCU80_1 */ - Entry CCU80_2_IRQHandler /* Handler name for SR CCU80_2 */ - Entry CCU80_3_IRQHandler /* Handler name for SR CCU80_3 */ - Entry CCU81_0_IRQHandler /* Handler name for SR CCU81_0 */ - Entry CCU81_1_IRQHandler /* Handler name for SR CCU81_1 */ - Entry CCU81_2_IRQHandler /* Handler name for SR CCU81_2 */ - Entry CCU81_3_IRQHandler /* Handler name for SR CCU81_3 */ - Entry POSIF0_0_IRQHandler /* Handler name for SR POSIF0_0 */ - Entry POSIF0_1_IRQHandler /* Handler name for SR POSIF0_1 */ - Entry POSIF1_0_IRQHandler /* Handler name for SR POSIF1_0 */ - Entry POSIF1_1_IRQHandler /* Handler name for SR POSIF1_1 */ - Entry HRPWM_0_IRQHandler /* Handler name for SR HRPWM_0 */ - Entry HRPWM_1_IRQHandler /* Handler name for SR HRPWM_1 */ - Entry HRPWM_2_IRQHandler /* Handler name for SR HRPWM_2 */ - Entry HRPWM_3_IRQHandler /* Handler name for SR HRPWM_3 */ - Entry CAN0_0_IRQHandler /* Handler name for SR CAN0_0 */ - Entry CAN0_1_IRQHandler /* Handler name for SR CAN0_1 */ - Entry CAN0_2_IRQHandler /* Handler name for SR CAN0_2 */ - Entry CAN0_3_IRQHandler /* Handler name for SR CAN0_3 */ - Entry CAN0_4_IRQHandler /* Handler name for SR CAN0_4 */ - Entry CAN0_5_IRQHandler /* Handler name for SR CAN0_5 */ - Entry CAN0_6_IRQHandler /* Handler name for SR CAN0_6 */ - Entry CAN0_7_IRQHandler /* Handler name for SR CAN0_7 */ - Entry USIC0_0_IRQHandler /* Handler name for SR USIC0_0 */ - Entry USIC0_1_IRQHandler /* Handler name for SR USIC0_1 */ - Entry USIC0_2_IRQHandler /* Handler name for SR USIC0_2 */ - Entry USIC0_3_IRQHandler /* Handler name for SR USIC0_3 */ - Entry USIC0_4_IRQHandler /* Handler name for SR USIC0_4 */ - Entry USIC0_5_IRQHandler /* Handler name for SR USIC0_5 */ - Entry USIC1_0_IRQHandler /* Handler name for SR USIC1_0 */ - Entry USIC1_1_IRQHandler /* Handler name for SR USIC1_1 */ - Entry USIC1_2_IRQHandler /* Handler name for SR USIC1_2 */ - Entry USIC1_3_IRQHandler /* Handler name for SR USIC1_3 */ - Entry USIC1_4_IRQHandler /* Handler name for SR USIC1_4 */ - Entry USIC1_5_IRQHandler /* Handler name for SR USIC1_5 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - Entry LEDTS0_0_IRQHandler /* Handler name for SR LEDTS0_0 */ - .long 0 /* Not Available */ - Entry FCE0_0_IRQHandler /* Handler name for SR FCE0_0 */ - Entry GPDMA0_0_IRQHandler /* Handler name for SR GPDMA0_0 */ - .long 0 /* Not Available */ - Entry USB0_0_IRQHandler /* Handler name for SR USB0_0 */ - Entry ETH0_0_IRQHandler /* Handler name for SR ETH0_0 */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - .long 0 /* Not Available */ - - .size __Vectors, . - __Vectors -/* ================== END OF VECTOR TABLE DEFINITION ======================= */ - -/* ================== START OF VECTOR ROUTINES ============================= */ - - .align 1 - .thumb - -/* Reset Handler */ - .thumb_func - .globl Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - ldr sp,=__initial_sp - -#ifndef __SKIP_SYSTEM_INIT - ldr r0, =SystemInit - blx r0 -#endif - -/* Initialize data - * - * Between symbol address __copy_table_start__ and __copy_table_end__, - * there are array of triplets, each of which specify: - * offset 0: LMA of start of a section to copy from - * offset 4: VMA of start of a section to copy to - * offset 8: size of the section to copy. Must be multiply of 4 - * - * All addresses must be aligned to 4 bytes boundary. - */ - ldr r4, =__copy_table_start__ - ldr r5, =__copy_table_end__ - -.L_loop0: - cmp r4, r5 - bge .L_loop0_done - ldr r1, [r4] - ldr r2, [r4, #4] - ldr r3, [r4, #8] - -.L_loop0_0: - subs r3, #4 - ittt ge - ldrge r0, [r1, r3] - strge r0, [r2, r3] - bge .L_loop0_0 - - adds r4, #12 - b .L_loop0 - -.L_loop0_done: - -/* Zero initialized data - * Between symbol address __zero_table_start__ and __zero_table_end__, - * there are array of tuples specifying: - * offset 0: Start of a BSS section - * offset 4: Size of this BSS section. Must be multiply of 4 - * - * Define __SKIP_BSS_CLEAR to disable zeroing uninitialzed data in startup. - */ -#ifndef __SKIP_BSS_CLEAR - ldr r3, =__zero_table_start__ - ldr r4, =__zero_table_end__ - -.L_loop2: - cmp r3, r4 - bge .L_loop2_done - ldr r1, [r3] - ldr r2, [r3, #4] - movs r0, 0 - -.L_loop2_0: - subs r2, #4 - itt ge - strge r0, [r1, r2] - bge .L_loop2_0 - - adds r3, #8 - b .L_loop2 -.L_loop2_done: -#endif /* __SKIP_BSS_CLEAR */ - -#ifndef __SKIP_LIBC_INIT_ARRAY - ldr r0, =__libc_init_array - blx r0 -#endif - - ldr r0, =main - blx r0 - -.align 2 -__copy_table_start__: - .long __data_load, __data_start, __data_size - .long __ram_code_load, __ram_code_start, __ram_code_size -__copy_table_end__: - -__zero_table_start__: - .long __bss_start, __bss_size - .long USB_RAM_start, USB_RAM_size - .long ETH_RAM_start, ETH_RAM_size -__zero_table_end__: - - .pool - .size Reset_Handler,.-Reset_Handler - -/* ======================================================================== */ -/* ========== START OF EXCEPTION HANDLER DEFINITION ======================== */ - -/* Default exception Handlers - Users may override this default functionality by - defining handlers of the same name in their C code */ - - .align 1 - .thumb_func - .weak Default_Handler - .type Default_Handler, %function -Default_Handler: - b . - .size Default_Handler, . - Default_Handler - - Insert_ExceptionHandler NMI_Handler - Insert_ExceptionHandler HardFault_Handler - Insert_ExceptionHandler MemManage_Handler - Insert_ExceptionHandler BusFault_Handler - Insert_ExceptionHandler UsageFault_Handler - Insert_ExceptionHandler SVC_Handler - Insert_ExceptionHandler DebugMon_Handler - Insert_ExceptionHandler PendSV_Handler - Insert_ExceptionHandler SysTick_Handler - - Insert_ExceptionHandler SCU_0_IRQHandler - Insert_ExceptionHandler ERU0_0_IRQHandler - Insert_ExceptionHandler ERU0_1_IRQHandler - Insert_ExceptionHandler ERU0_2_IRQHandler - Insert_ExceptionHandler ERU0_3_IRQHandler - Insert_ExceptionHandler ERU1_0_IRQHandler - Insert_ExceptionHandler ERU1_1_IRQHandler - Insert_ExceptionHandler ERU1_2_IRQHandler - Insert_ExceptionHandler ERU1_3_IRQHandler - Insert_ExceptionHandler PMU0_0_IRQHandler - Insert_ExceptionHandler VADC0_C0_0_IRQHandler - Insert_ExceptionHandler VADC0_C0_1_IRQHandler - Insert_ExceptionHandler VADC0_C0_2_IRQHandler - Insert_ExceptionHandler VADC0_C0_3_IRQHandler - Insert_ExceptionHandler VADC0_G0_0_IRQHandler - Insert_ExceptionHandler VADC0_G0_1_IRQHandler - Insert_ExceptionHandler VADC0_G0_2_IRQHandler - Insert_ExceptionHandler VADC0_G0_3_IRQHandler - Insert_ExceptionHandler VADC0_G1_0_IRQHandler - Insert_ExceptionHandler VADC0_G1_1_IRQHandler - Insert_ExceptionHandler VADC0_G1_2_IRQHandler - Insert_ExceptionHandler VADC0_G1_3_IRQHandler - Insert_ExceptionHandler VADC0_G2_0_IRQHandler - Insert_ExceptionHandler VADC0_G2_1_IRQHandler - Insert_ExceptionHandler VADC0_G2_2_IRQHandler - Insert_ExceptionHandler VADC0_G2_3_IRQHandler - Insert_ExceptionHandler VADC0_G3_0_IRQHandler - Insert_ExceptionHandler VADC0_G3_1_IRQHandler - Insert_ExceptionHandler VADC0_G3_2_IRQHandler - Insert_ExceptionHandler VADC0_G3_3_IRQHandler - Insert_ExceptionHandler DSD0_0_IRQHandler - Insert_ExceptionHandler DSD0_1_IRQHandler - Insert_ExceptionHandler DSD0_2_IRQHandler - Insert_ExceptionHandler DSD0_3_IRQHandler - Insert_ExceptionHandler DSD0_4_IRQHandler - Insert_ExceptionHandler DSD0_5_IRQHandler - Insert_ExceptionHandler DSD0_6_IRQHandler - Insert_ExceptionHandler DSD0_7_IRQHandler - Insert_ExceptionHandler DAC0_0_IRQHandler - Insert_ExceptionHandler DAC0_1_IRQHandler - Insert_ExceptionHandler CCU40_0_IRQHandler - Insert_ExceptionHandler CCU40_1_IRQHandler - Insert_ExceptionHandler CCU40_2_IRQHandler - Insert_ExceptionHandler CCU40_3_IRQHandler - Insert_ExceptionHandler CCU41_0_IRQHandler - Insert_ExceptionHandler CCU41_1_IRQHandler - Insert_ExceptionHandler CCU41_2_IRQHandler - Insert_ExceptionHandler CCU41_3_IRQHandler - Insert_ExceptionHandler CCU42_0_IRQHandler - Insert_ExceptionHandler CCU42_1_IRQHandler - Insert_ExceptionHandler CCU42_2_IRQHandler - Insert_ExceptionHandler CCU42_3_IRQHandler - Insert_ExceptionHandler CCU43_0_IRQHandler - Insert_ExceptionHandler CCU43_1_IRQHandler - Insert_ExceptionHandler CCU43_2_IRQHandler - Insert_ExceptionHandler CCU43_3_IRQHandler - Insert_ExceptionHandler CCU80_0_IRQHandler - Insert_ExceptionHandler CCU80_1_IRQHandler - Insert_ExceptionHandler CCU80_2_IRQHandler - Insert_ExceptionHandler CCU80_3_IRQHandler - Insert_ExceptionHandler CCU81_0_IRQHandler - Insert_ExceptionHandler CCU81_1_IRQHandler - Insert_ExceptionHandler CCU81_2_IRQHandler - Insert_ExceptionHandler CCU81_3_IRQHandler - Insert_ExceptionHandler POSIF0_0_IRQHandler - Insert_ExceptionHandler POSIF0_1_IRQHandler - Insert_ExceptionHandler POSIF1_0_IRQHandler - Insert_ExceptionHandler POSIF1_1_IRQHandler - Insert_ExceptionHandler HRPWM_0_IRQHandler - Insert_ExceptionHandler HRPWM_1_IRQHandler - Insert_ExceptionHandler HRPWM_2_IRQHandler - Insert_ExceptionHandler HRPWM_3_IRQHandler - Insert_ExceptionHandler CAN0_0_IRQHandler - Insert_ExceptionHandler CAN0_1_IRQHandler - Insert_ExceptionHandler CAN0_2_IRQHandler - Insert_ExceptionHandler CAN0_3_IRQHandler - Insert_ExceptionHandler CAN0_4_IRQHandler - Insert_ExceptionHandler CAN0_5_IRQHandler - Insert_ExceptionHandler CAN0_6_IRQHandler - Insert_ExceptionHandler CAN0_7_IRQHandler - Insert_ExceptionHandler USIC0_0_IRQHandler - Insert_ExceptionHandler USIC0_1_IRQHandler - Insert_ExceptionHandler USIC0_2_IRQHandler - Insert_ExceptionHandler USIC0_3_IRQHandler - Insert_ExceptionHandler USIC0_4_IRQHandler - Insert_ExceptionHandler USIC0_5_IRQHandler - Insert_ExceptionHandler USIC1_0_IRQHandler - Insert_ExceptionHandler USIC1_1_IRQHandler - Insert_ExceptionHandler USIC1_2_IRQHandler - Insert_ExceptionHandler USIC1_3_IRQHandler - Insert_ExceptionHandler USIC1_4_IRQHandler - Insert_ExceptionHandler USIC1_5_IRQHandler - Insert_ExceptionHandler LEDTS0_0_IRQHandler - Insert_ExceptionHandler FCE0_0_IRQHandler - Insert_ExceptionHandler GPDMA0_0_IRQHandler - Insert_ExceptionHandler USB0_0_IRQHandler - Insert_ExceptionHandler ETH0_0_IRQHandler - -/* ============= END OF INTERRUPT HANDLER DEFINITION ====================== */ - - .end diff --git a/variants/XMC4400/system_XMC4400.c b/variants/XMC4400/system_XMC4400.c deleted file mode 100644 index 13132a4d..00000000 --- a/variants/XMC4400/system_XMC4400.c +++ /dev/null @@ -1,651 +0,0 @@ -/********************************************************************************************************************* - * @file system_XMC4400.c - * @brief CMSIS Cortex-M4 Device Peripheral Access Layer Header File for the Infineon XMC4400 - *Device Series - * @version V3.1.3 - * @date 26. Sep 2017 - * - * @cond - ********************************************************************************************************************* - * Copyright (c) 2014-2017, Infineon Technologies AG - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification,are permitted - *provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of conditions - *and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions - *and the following disclaimer in the documentation and/or other materials provided with the - *distribution. - * - * Neither the name of the copyright holders nor the names of its contributors may be used to - *endorse or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - *IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - *FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - *CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - *DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - *DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - *IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - *OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * To improve the quality of the software, users are encouraged to share modifications, enhancements - *or bug fixes with Infineon Technologies AG dave@infineon.com). - ********************************************************************************************************************* - * - ********************** Version History *************************************** - * V3.1.0, Dec 2014, Added options to configure clock settings - * V3.1.1, 01. Jun 2016, Fix masking of OSCHPCTRL value - * V3.1.2, 19. Jun 2017, Rely on cmsis_compiler.h instead of defining __WEAK - * Added support for ARM Compiler 6 (armclang) - * V3.1.3, 26. Sep 2017, Disable FPU if FPU_USED is zero - ****************************************************************************** - * @endcond - */ - -/******************************************************************************* - * HEADER FILES - *******************************************************************************/ -#include - -#include -#include "system_XMC4400.h" - -/******************************************************************************* - * MACROS - *******************************************************************************/ -#define CHIPID_LOC ((uint8_t *)0x20000000UL) -#define HRPWM_CHARDATA_LOC ((uint8_t *)0x20000084UL) - -#define PMU_FLASH_WS (0x3U) - -#define FPLL_FREQUENCY (120000000U) -#define FOSCREF (2500000U) -#define DELAY_CNT_50US_50MHZ (2500UL) -#define DELAY_CNT_150US_50MHZ (7500UL) -#define DELAY_CNT_50US_60MHZ (3000UL) -#define DELAY_CNT_50US_90MHZ (4500UL) -#define DELAY_CNT_50US_120MHZ (6000UL) - -#define SCU_PLL_PLLSTAT_OSC_USABLE \ - (SCU_PLL_PLLSTAT_PLLHV_Msk | SCU_PLL_PLLSTAT_PLLLV_Msk | SCU_PLL_PLLSTAT_PLLSP_Msk) - -/* -//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ -*/ - -/* -// Clock configuration -*/ - -/* -// External crystal frequency [Hz] -// <8000000=> 8MHz -// <12000000=> 12MHz -// <16000000=> 16MHz -// Defines external crystal frequency -// Default: 8MHz -*/ -#define OSCHP_FREQUENCY (12000000U) - -#if OSCHP_FREQUENCY == 8000000U - #define USB_PDIV (1U) - #define USB_NDIV (95U) - #define USB_DIV (3U) - -#elif OSCHP_FREQUENCY == 12000000U - #define USB_PDIV (1U) - #define USB_NDIV (63U) - #define USB_DIV (3U) - -#elif OSCHP_FREQUENCY == 16000000U - #define USB_PDIV (1U) - #define USB_NDIV (47U) - #define USB_DIV (3U) - -#else - #error "External crystal frequency not supported" - -#endif - -/* -// System clock (fSYS) source selection -// <0=> Backup clock (24MHz) -// <1=> Maximum clock frequency using PLL (120MHz) -// Default: Maximum clock frequency using PLL (120MHz) -*/ -#define SYS_CLOCK_SRC 1 -#define SYS_CLOCK_SRC_OFI 0 -#define SYS_CLOCK_SRC_PLL 1 - -/* -// Backup clock calibration mode -// <0=> Factory calibration -// <1=> Automatic calibration -// Default: Automatic calibration -*/ -#define FOFI_CALIBRATION_MODE 1 -#define FOFI_CALIBRATION_MODE_FACTORY 0 -#define FOFI_CALIBRATION_MODE_AUTOMATIC 1 - -/* -// Standby clock (fSTDBY) source selection -// <0=> Internal slow oscillator (32768Hz) -// <1=> External crystal (32768Hz) -// Default: Internal slow oscillator (32768Hz) -*/ -#define STDBY_CLOCK_SRC 0 -#define STDBY_CLOCK_SRC_OSI 0 -#define STDBY_CLOCK_SRC_OSCULP 1 - -/* -// PLL clock source selection -// <0=> External crystal -// <1=> External direct input -// <2=> Internal fast oscillator -// Default: External crystal -*/ -#define PLL_CLOCK_SRC 0 -#define PLL_CLOCK_SRC_EXT_XTAL 0 -#define PLL_CLOCK_SRC_EXT_DIRECT 1 -#define PLL_CLOCK_SRC_OFI 2 - -#if PLL_CLOCK_SRC == PLL_CLOCK_SRC_EXT_XTAL - #if OSCHP_FREQUENCY == 8000000U - #define PLL_PDIV (1U) - #define PLL_NDIV (89U) - #define PLL_K2DIV (2U) - - #elif OSCHP_FREQUENCY == 12000000U - #define PLL_PDIV (1U) - #define PLL_NDIV (79U) - #define PLL_K2DIV (3U) - - #elif OSCHP_FREQUENCY == 16000000U - #define PLL_PDIV (1U) - #define PLL_NDIV (59U) - #define PLL_K2DIV (3U) - - #else - #error "External crystal frequency not supported" - - #endif - - #define VCO ((OSCHP_FREQUENCY / (PLL_PDIV + 1UL)) * (PLL_NDIV + 1UL)) - -#else /* PLL_CLOCK_SRC == PLL_CLOCK_SRC_EXT_XTAL */ - - #define PLL_PDIV (1U) - #define PLL_NDIV (39U) - #define PLL_K2DIV (3U) - - #define VCO ((OFI_FREQUENCY / (PLL_PDIV + 1UL)) * (PLL_NDIV + 1UL)) - -#endif /* PLL_CLOCK_SRC == PLL_CLOCK_SRC_OFI */ - -#define PLL_K2DIV_0 ((VCO / OFI_FREQUENCY) - 1UL) -#define PLL_K2DIV_1 ((VCO / 60000000U) - 1UL) -#define PLL_K2DIV_2 ((VCO / 90000000U) - 1UL) - -#define SCU_CLK_CLKCLR_ENABLE_USBCLK SCU_CLK_CLKCLR_USBCDI_Msk -#define SCU_CLK_CLKCLR_ENABLE_ETHCLK SCU_CLK_CLKCLR_ETH0CDI_Msk -#define SCU_CLK_CLKCLR_ENABLE_CCUCLK SCU_CLK_CLKCLR_CCUCDI_Msk -#define SCU_CLK_CLKCLR_ENABLE_WDTCLK SCU_CLK_CLKCLR_WDTCDI_Msk - -#define SCU_CLK_USBCLKCR_USBSEL_USBPLL (0U << SCU_CLK_USBCLKCR_USBSEL_Pos) -#define SCU_CLK_USBCLKCR_USBSEL_PLL (1U << SCU_CLK_USBCLKCR_USBSEL_Pos) - -#define SCU_CLK_WDTCLKCR_WDTSEL_OFI (0U << SCU_CLK_WDTCLKCR_WDTSEL_Pos) -#define SCU_CLK_WDTCLKCR_WDTSEL_STANDBY (1U << SCU_CLK_WDTCLKCR_WDTSEL_Pos) -#define SCU_CLK_WDTCLKCR_WDTSEL_PLL (2U << SCU_CLK_WDTCLKCR_WDTSEL_Pos) - -#define SCU_CLK_EXTCLKCR_ECKSEL_SYS (0U << SCU_CLK_EXTCLKCR_ECKSEL_Pos) -#define SCU_CLK_EXTCLKCR_ECKSEL_USBPLL (2U << SCU_CLK_EXTCLKCR_ECKSEL_Pos) -#define SCU_CLK_EXTCLKCR_ECKSEL_PLL (3U << SCU_CLK_EXTCLKCR_ECKSEL_Pos) -#define SCU_CLK_EXTCLKCR_ECKSEL_STANDBY (4U << SCU_CLK_EXTCLKCR_ECKSEL_Pos) - -#define EXTCLK_PIN_P0_8 (0) -#define EXTCLK_PIN_P1_15 (1) - -/* -// Clock tree -// CPU clock divider -// <0=> fCPU = fSYS -// <1=> fCPU = fSYS / 2 -// Peripheral clock divider -// <0=> fPB = fCPU -// <1=> fPB = fCPU / 2 -// Enable CCU clock -// CCU clock divider -// <0=> fCCU = fCPU -// <1=> fCCU = fCPU / 2 -// -// Enable WDT clock -// WDT clock divider <1-256><#-1> -// WDT clock source <0=> fOFI -// <1=> fSTDBY -// <2=> fPLL -// -// Enable ETH clock -// -// Enable USB clock -// USB clock source <0=> USBPLL -// <1=> PLL -// -// External Clock configuration -// External clock source selection -// <0=> System clock -// <2=> USB PLL clock -// <3=> PLL clock -// <4=> Standby clock -// External clock divider <1-512><#-1> -// Only valid for USB PLL and PLL clocks -// External Pin Selection -// <0=> P0.8 -// <1=> P1.15 -// -// -*/ -#define ENABLE_SCUCLK (0U) -#define CPUCLKDIV (0U) -#define PBCLKDIV (0U) -#define CCUCLKDIV (0U) -#define WDTCLKDIV (0U | SCU_CLK_WDTCLKCR_WDTSEL_OFI) -#define USBCLKDIV (0U | SCU_CLK_USBCLKCR_USBSEL_USBPLL | USB_DIV) - -#define ENABLE_EXTCLK (0U) -#define EXTCLKDIV (0U | SCU_CLK_EXTCLKCR_ECKSEL_SYS) -#define EXTCLK_PIN (0U) - -#define ENABLE_PLL \ - (SYS_CLOCK_SRC == SYS_CLOCK_SRC_PLL) || \ - (((ENABLE_SCUCLK & SCU_CLK_CLKSET_USBCEN_Msk) != 0) && \ - ((USBCLKDIV & SCU_CLK_USBCLKCR_USBSEL_Msk) == SCU_CLK_USBCLKCR_USBSEL_PLL)) || \ - (((ENABLE_SCUCLK & SCU_CLK_CLKSET_WDTCEN_Msk) != 0) && \ - ((WDTCLKDIV & SCU_CLK_WDTCLKCR_WDTSEL_Msk) == SCU_CLK_WDTCLKCR_WDTSEL_PLL)) - -/* -// -*/ - -/* -//-------- <<< end of configuration section >>> ------------------ -*/ - -/******************************************************************************* - * GLOBAL VARIABLES - *******************************************************************************/ -#if defined(__CC_ARM) -uint32_t SystemCoreClock __attribute__((at(0x2000FFC0))); -uint8_t g_chipid[16] __attribute__((at(0x2000FFC4))); -uint32_t g_hrpwm_char_data[3] __attribute__((at(0x2000FFD4))); -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) -uint32_t SystemCoreClock __attribute__((section(".ARM.__at_0x2000FFC0"))); -uint8_t g_chipid[16] __attribute__((section(".ARM.__at_0x2000FFC4"))); -uint32_t g_hrpwm_char_data[3] __attribute__((section(".ARM.__at_0x2000FFD4"))); -#elif defined(__ICCARM__) -__no_init uint32_t SystemCoreClock; -__no_init uint8_t g_chipid[16]; -__no_init uint32_t g_hrpwm_char_data[3]; -#elif defined(__GNUC__) -uint32_t SystemCoreClock __attribute__((section(".no_init"))); -uint8_t g_chipid[16] __attribute__((section(".no_init"))); -uint32_t g_hrpwm_char_data[3] __attribute__((section(".no_init"))); -#elif defined(__TASKING__) -uint32_t SystemCoreClock __at(0x2000FFC0); -uint8_t g_chipid[16] __at(0x2000FFC4); -uint32_t g_hrpwm_char_data[3] __at(0x2000FFD4); -#endif - -extern uint32_t __Vectors; - -/******************************************************************************* - * LOCAL FUNCTIONS - *******************************************************************************/ -static void delay(uint32_t cycles) { - volatile uint32_t i; - - for (i = 0UL; i < cycles; ++i) { - __NOP(); - } -} - -/******************************************************************************* - * API IMPLEMENTATION - *******************************************************************************/ - -__WEAK void SystemInit(void) { - memcpy(g_chipid, CHIPID_LOC, 16); - memcpy(g_hrpwm_char_data, HRPWM_CHARDATA_LOC, 12); - - SystemCoreSetup(); - SystemCoreClockSetup(); -} - -__WEAK void SystemCoreSetup(void) { - uint32_t temp; - - /* relocate vector table */ - __disable_irq(); - SCB->VTOR = (uint32_t)(&__Vectors); - __DSB(); - __enable_irq(); - - /* __FPU_PRESENT = 1 defined in device header file */ - /* __FPU_USED value depends on compiler/linker options. */ - /* __FPU_USED = 0 if -mfloat-abi=soft is selected */ - /* __FPU_USED = 1 if -mfloat-abi=softfp or –mfloat-abi=hard */ - -#if ((__FPU_PRESENT == 1) && (__FPU_USED == 1)) - SCB->CPACR |= ((3UL << 10 * 2) | /* set CP10 Full Access */ - (3UL << 11 * 2)); /* set CP11 Full Access */ -#else - SCB->CPACR = 0; -#endif - - /* Enable unaligned memory access - SCB_CCR.UNALIGN_TRP = 0 */ - SCB->CCR &= ~(SCB_CCR_UNALIGN_TRP_Msk); - - temp = FLASH0->FCON; - temp &= ~FLASH_FCON_WSPFLASH_Msk; - temp |= PMU_FLASH_WS; - FLASH0->FCON = temp; -} - -__WEAK void SystemCoreClockSetup(void) { -#if FOFI_CALIBRATION_MODE == FOFI_CALIBRATION_MODE_FACTORY - /* Enable factory calibration */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_FOTR_Msk; -#else - /* Automatic calibration uses the fSTDBY */ - - /* Enable HIB domain */ - /* Power up HIB domain if and only if it is currently powered down */ - if ((SCU_POWER->PWRSTAT & SCU_POWER_PWRSTAT_HIBEN_Msk) == 0) { - SCU_POWER->PWRSET |= SCU_POWER_PWRSET_HIB_Msk; - - while ((SCU_POWER->PWRSTAT & SCU_POWER_PWRSTAT_HIBEN_Msk) == 0) { - /* wait until HIB domain is enabled */ - } - } - - /* Remove the reset only if HIB domain were in a state of reset */ - if ((SCU_RESET->RSTSTAT) & SCU_RESET_RSTSTAT_HIBRS_Msk) { - SCU_RESET->RSTCLR |= SCU_RESET_RSTCLR_HIBRS_Msk; - delay(DELAY_CNT_150US_50MHZ); - } - - #if STDBY_CLOCK_SRC == STDBY_CLOCK_SRC_OSCULP - /* Enable OSC_ULP */ - if ((SCU_HIBERNATE->OSCULCTRL & SCU_HIBERNATE_OSCULCTRL_MODE_Msk) != 0UL) { - /*enable OSC_ULP*/ - while (SCU_GENERAL->MIRRSTS & SCU_GENERAL_MIRRSTS_OSCULCTRL_Msk) { - /* check SCU_MIRRSTS to ensure that no transfer over serial interface is pending */ - } - SCU_HIBERNATE->OSCULCTRL &= ~SCU_HIBERNATE_OSCULCTRL_MODE_Msk; - - /* Check if the clock is OK using OSCULP Oscillator Watchdog*/ - while (SCU_GENERAL->MIRRSTS & SCU_GENERAL_MIRRSTS_HDCR_Msk) { - /* check SCU_MIRRSTS to ensure that no transfer over serial interface is pending */ - } - SCU_HIBERNATE->HDCR |= SCU_HIBERNATE_HDCR_ULPWDGEN_Msk; - - /* wait till clock is stable */ - do { - while (SCU_GENERAL->MIRRSTS & SCU_GENERAL_MIRRSTS_HDCLR_Msk) { - /* check SCU_MIRRSTS to ensure that no transfer over serial interface is pending */ - } - SCU_HIBERNATE->HDCLR |= SCU_HIBERNATE_HDCLR_ULPWDG_Msk; - - delay(DELAY_CNT_50US_50MHZ); - - } while ((SCU_HIBERNATE->HDSTAT & SCU_HIBERNATE_HDSTAT_ULPWDG_Msk) != 0UL); - } - - /* now OSC_ULP is running and can be used*/ - /* Select OSC_ULP as the clock source for RTC and STDBY*/ - while (SCU_GENERAL->MIRRSTS & SCU_GENERAL_MIRRSTS_HDCR_Msk) { - /* check SCU_MIRRSTS to ensure that no transfer over serial interface is pending */ - } - SCU_HIBERNATE->HDCR |= SCU_HIBERNATE_HDCR_RCS_Msk | SCU_HIBERNATE_HDCR_STDBYSEL_Msk; - - #endif /* STDBY_CLOCK_SRC == STDBY_CLOCK_SRC_OSCULP */ - - /* Enable automatic calibration of internal fast oscillator */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_AOTREN_Msk; -#endif /* FOFI_CALIBRATION_MODE == FOFI_CALIBRATION_MODE_AUTOMATIC */ - - delay(DELAY_CNT_50US_50MHZ); - -#if ENABLE_PLL - - /* enable PLL */ - SCU_PLL->PLLCON0 &= ~(SCU_PLL_PLLCON0_VCOPWD_Msk | SCU_PLL_PLLCON0_PLLPWD_Msk); - - #if PLL_CLOCK_SRC != PLL_CLOCK_SRC_OFI - /* enable OSC_HP */ - if ((SCU_OSC->OSCHPCTRL & SCU_OSC_OSCHPCTRL_MODE_Msk) != 0U) { - SCU_OSC->OSCHPCTRL &= ~(SCU_OSC_OSCHPCTRL_MODE_Msk | SCU_OSC_OSCHPCTRL_OSCVAL_Msk); - SCU_OSC->OSCHPCTRL |= ((OSCHP_GetFrequency() / FOSCREF) - 1UL) - << SCU_OSC_OSCHPCTRL_OSCVAL_Pos; - - /* select OSC_HP clock as PLL input */ - SCU_PLL->PLLCON2 &= ~SCU_PLL_PLLCON2_PINSEL_Msk; - - /* restart OSC Watchdog */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_OSCRES_Msk; - - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_OSC_USABLE) != SCU_PLL_PLLSTAT_OSC_USABLE) { - /* wait till OSC_HP output frequency is usable */ - } - } - #else /* PLL_CLOCK_SRC != PLL_CLOCK_SRC_OFI */ - - /* select backup clock as PLL input */ - SCU_PLL->PLLCON2 |= SCU_PLL_PLLCON2_PINSEL_Msk; - #endif - - /* Go to bypass the Main PLL */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_VCOBYP_Msk; - - /* disconnect Oscillator from PLL */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_FINDIS_Msk; - - /* Setup divider settings for main PLL */ - SCU_PLL->PLLCON1 = - ((PLL_NDIV << SCU_PLL_PLLCON1_NDIV_Pos) | (PLL_K2DIV_0 << SCU_PLL_PLLCON1_K2DIV_Pos) | - (PLL_PDIV << SCU_PLL_PLLCON1_PDIV_Pos)); - - /* Set OSCDISCDIS */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_OSCDISCDIS_Msk; - - /* connect Oscillator to PLL */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_FINDIS_Msk; - - /* restart PLL Lock detection */ - SCU_PLL->PLLCON0 |= SCU_PLL_PLLCON0_RESLD_Msk; - - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOLOCK_Msk) == 0U) { - /* wait for PLL Lock */ - } - - /* Disable bypass- put PLL clock back */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_VCOBYP_Msk; - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOBYST_Msk) != 0U) { - /* wait for normal mode */ - } -#endif /* ENABLE_PLL */ - -#if (SYS_CLOCK_SRC == SYS_CLOCK_SRC_PLL) - /* Switch system clock to PLL */ - SCU_CLK->SYSCLKCR |= SCU_CLK_SYSCLKCR_SYSSEL_Msk; -#else - /* Switch system clock to backup clock */ - SCU_CLK->SYSCLKCR &= ~SCU_CLK_SYSCLKCR_SYSSEL_Msk; -#endif - - /* Before scaling to final frequency we need to setup the clock dividers */ - SCU_CLK->PBCLKCR = PBCLKDIV; - SCU_CLK->CPUCLKCR = CPUCLKDIV; - SCU_CLK->CCUCLKCR = CCUCLKDIV; - SCU_CLK->WDTCLKCR = WDTCLKDIV; - SCU_CLK->USBCLKCR = USBCLKDIV; - -#if ENABLE_PLL - /* PLL frequency stepping...*/ - /* Reset OSCDISCDIS */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_OSCDISCDIS_Msk; - - SCU_PLL->PLLCON1 = - ((PLL_NDIV << SCU_PLL_PLLCON1_NDIV_Pos) | (PLL_K2DIV_1 << SCU_PLL_PLLCON1_K2DIV_Pos) | - (PLL_PDIV << SCU_PLL_PLLCON1_PDIV_Pos)); - - delay(DELAY_CNT_50US_60MHZ); - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOLOCK_Msk) == 0U) { - /* wait for PLL Lock */ - } - - SCU_PLL->PLLCON1 = - ((PLL_NDIV << SCU_PLL_PLLCON1_NDIV_Pos) | (PLL_K2DIV_2 << SCU_PLL_PLLCON1_K2DIV_Pos) | - (PLL_PDIV << SCU_PLL_PLLCON1_PDIV_Pos)); - - delay(DELAY_CNT_50US_90MHZ); - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOLOCK_Msk) == 0U) { - /* wait for PLL Lock */ - } - - SCU_PLL->PLLCON1 = - ((PLL_NDIV << SCU_PLL_PLLCON1_NDIV_Pos) | (PLL_K2DIV << SCU_PLL_PLLCON1_K2DIV_Pos) | - (PLL_PDIV << SCU_PLL_PLLCON1_PDIV_Pos)); - - delay(DELAY_CNT_50US_120MHZ); - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOLOCK_Msk) == 0U) { - /* wait for PLL Lock */ - } - - SCU_TRAP->TRAPCLR = SCU_TRAP_TRAPCLR_SOSCWDGT_Msk | SCU_TRAP_TRAPCLR_SVCOLCKT_Msk; -#endif /* ENABLE_PLL */ - -#if (((ENABLE_SCUCLK & SCU_CLK_CLKSET_USBCEN_Msk) != 0) && \ - ((USBCLKDIV & SCU_CLK_USBCLKCR_USBSEL_Msk) == SCU_CLK_USBCLKCR_USBSEL_USBPLL)) - /* enable USB PLL first */ - SCU_PLL->USBPLLCON &= ~(SCU_PLL_USBPLLCON_VCOPWD_Msk | SCU_PLL_USBPLLCON_PLLPWD_Msk); - - /* USB PLL uses as clock input the OSC_HP */ - /* check and if not already running enable OSC_HP */ - if ((SCU_OSC->OSCHPCTRL & SCU_OSC_OSCHPCTRL_MODE_Msk) != 0U) { - /* check if Main PLL is switched on for OSC WDG*/ - if ((SCU_PLL->PLLCON0 & (SCU_PLL_PLLCON0_VCOPWD_Msk | SCU_PLL_PLLCON0_PLLPWD_Msk)) != 0UL) { - /* enable PLL first */ - SCU_PLL->PLLCON0 &= ~(SCU_PLL_PLLCON0_VCOPWD_Msk | SCU_PLL_PLLCON0_PLLPWD_Msk); - } - - SCU_OSC->OSCHPCTRL &= ~(SCU_OSC_OSCHPCTRL_MODE_Msk | SCU_OSC_OSCHPCTRL_OSCVAL_Msk); - SCU_OSC->OSCHPCTRL |= ((OSCHP_GetFrequency() / FOSCREF) - 1UL) - << SCU_OSC_OSCHPCTRL_OSCVAL_Pos; - - /* restart OSC Watchdog */ - SCU_PLL->PLLCON0 &= ~SCU_PLL_PLLCON0_OSCRES_Msk; - - while ((SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_OSC_USABLE) != SCU_PLL_PLLSTAT_OSC_USABLE) { - /* wait till OSC_HP output frequency is usable */ - } - } - - /* Setup USB PLL */ - /* Go to bypass the USB PLL */ - SCU_PLL->USBPLLCON |= SCU_PLL_USBPLLCON_VCOBYP_Msk; - - /* disconnect Oscillator from USB PLL */ - SCU_PLL->USBPLLCON |= SCU_PLL_USBPLLCON_FINDIS_Msk; - - /* Setup Divider settings for USB PLL */ - SCU_PLL->USBPLLCON = - ((USB_NDIV << SCU_PLL_USBPLLCON_NDIV_Pos) | (USB_PDIV << SCU_PLL_USBPLLCON_PDIV_Pos)); - - /* Set OSCDISCDIS */ - SCU_PLL->USBPLLCON |= SCU_PLL_USBPLLCON_OSCDISCDIS_Msk; - - /* connect Oscillator to USB PLL */ - SCU_PLL->USBPLLCON &= ~SCU_PLL_USBPLLCON_FINDIS_Msk; - - /* restart PLL Lock detection */ - SCU_PLL->USBPLLCON |= SCU_PLL_USBPLLCON_RESLD_Msk; - - while ((SCU_PLL->USBPLLSTAT & SCU_PLL_USBPLLSTAT_VCOLOCK_Msk) == 0U) { - /* wait for PLL Lock */ - } -#endif /* (USBCLKDIV & SCU_CLK_USBCLKCR_USBSEL_Msk) */ - - /* Enable selected clocks */ - SCU_CLK->CLKSET = ENABLE_SCUCLK; - -#if ENABLE_EXTCLK == 1 - /* Configure external clock */ - SCU_CLK->EXTCLKCR = EXTCLKDIV; - - #if EXTCLK_PIN == EXTCLK_PIN_P1_15 - /* P1.15 */ - PORT1->PDR1 &= ~PORT1_PDR1_PD15_Msk; - PORT1->IOCR12 = (PORT1->IOCR12 & ~PORT0_IOCR12_PC15_Msk) | (0x11U << PORT0_IOCR12_PC15_Pos); - #else - /* P0.8 */ - PORT0->HWSEL &= ~PORT0_HWSEL_HW8_Msk; - PORT0->PDR1 &= ~PORT0_PDR1_PD8_Msk; - PORT0->IOCR8 = (PORT0->IOCR8 & ~PORT0_IOCR8_PC8_Msk) | (0x11U << PORT0_IOCR8_PC8_Pos); - #endif - -#endif /* ENABLE_EXTCLK == 1 */ - - SystemCoreClockUpdate(); -} - -__WEAK void SystemCoreClockUpdate(void) { - uint32_t pdiv; - uint32_t ndiv; - uint32_t kdiv; - uint32_t temp; - - if (SCU_CLK->SYSCLKCR & SCU_CLK_SYSCLKCR_SYSSEL_Msk) { - /* fPLL is clock source for fSYS */ - if (SCU_PLL->PLLCON2 & SCU_PLL_PLLCON2_PINSEL_Msk) { - /* PLL input clock is the backup clock (fOFI) */ - temp = OFI_FREQUENCY; - } else { - /* PLL input clock is the high performance osicllator (fOSCHP) */ - temp = OSCHP_GetFrequency(); - } - - /* check if PLL is locked */ - if (SCU_PLL->PLLSTAT & SCU_PLL_PLLSTAT_VCOLOCK_Msk) { - /* PLL normal mode */ - /* read back divider settings */ - pdiv = ((SCU_PLL->PLLCON1 & SCU_PLL_PLLCON1_PDIV_Msk) >> SCU_PLL_PLLCON1_PDIV_Pos) + 1; - ndiv = ((SCU_PLL->PLLCON1 & SCU_PLL_PLLCON1_NDIV_Msk) >> SCU_PLL_PLLCON1_NDIV_Pos) + 1; - kdiv = - ((SCU_PLL->PLLCON1 & SCU_PLL_PLLCON1_K2DIV_Msk) >> SCU_PLL_PLLCON1_K2DIV_Pos) + 1; - - temp = (temp / (pdiv * kdiv)) * ndiv; - } else { - /* PLL prescalar mode */ - /* read back divider settings */ - kdiv = - ((SCU_PLL->PLLCON1 & SCU_PLL_PLLCON1_K1DIV_Msk) >> SCU_PLL_PLLCON1_K1DIV_Pos) + 1; - - temp = (temp / kdiv); - } - } else { - /* fOFI is clock source for fSYS */ - temp = OFI_FREQUENCY; - } - - temp = temp / ((SCU_CLK->SYSCLKCR & SCU_CLK_SYSCLKCR_SYSDIV_Msk) + 1); - temp = temp / ((SCU_CLK->CPUCLKCR & SCU_CLK_CPUCLKCR_CPUDIV_Msk) + 1); - - SystemCoreClock = temp; -} - -__WEAK uint32_t OSCHP_GetFrequency(void) { return OSCHP_FREQUENCY; } diff --git a/variants/XMC4400/system_XMC4400.h b/variants/XMC4400/system_XMC4400.h deleted file mode 100644 index 490a4872..00000000 --- a/variants/XMC4400/system_XMC4400.h +++ /dev/null @@ -1,109 +0,0 @@ -/********************************************************************************************************************* - * @file system_XMC4400.h - * @brief Device specific initialization for the XMC4400-Series according to CMSIS - * @version V1.7 - * @date 10 February 2015 - * - * @cond - ********************************************************************************************************************* - * Copyright (c) 2012-2016, Infineon Technologies AG - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification,are permitted - *provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this list of conditions - *and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, this list of conditions - *and the following disclaimer in the documentation and/or other materials provided with the - *distribution. - * - * Neither the name of the copyright holders nor the names of its contributors may be used to - *endorse or promote products derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR - *IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - *FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - *CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - *DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - *DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - *IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - *OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * To improve the quality of the software, users are encouraged to share modifications, enhancements - *or bug fixes with Infineon Technologies AG dave@infineon.com). - ********************************************************************************************************************* - * - **************************** Change history ********************************* - ***************************************************************************** - * @endcond - */ - -#ifndef SYSTEM_XMC4400_H -#define SYSTEM_XMC4400_H - -/******************************************************************************* - * HEADER FILES - *******************************************************************************/ - -#include - -/******************************************************************************* - * MACROS - *******************************************************************************/ - -#define OFI_FREQUENCY (24000000UL) /**< 24MHz Backup Clock (fOFI) frequency. */ -#define OSI_FREQUENCY (32768UL) /**< 32KHz Internal Slow Clock source (fOSI) frequency. */ - -/******************************************************************************* - * GLOBAL VARIABLES - *******************************************************************************/ - -extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ -extern uint8_t g_chipid[16]; /*!< Unique chip ID */ -extern uint32_t g_hrpwm_char_data[3]; /*!< HRPWM characterization data */ - -/******************************************************************************* - * API PROTOTYPES - *******************************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Initialize the system - * - */ -void SystemInit(void); - -/** - * @brief Initialize CPU settings - * - */ -void SystemCoreSetup(void); - -/** - * @brief Initialize clock - * - */ -void SystemCoreClockSetup(void); - -/** - * @brief Update SystemCoreClock variable - * - */ -void SystemCoreClockUpdate(void); - -/** - * @brief Returns frequency of the high performace oscillator - * User needs to overload this function to return the correct oscillator frequency - */ -uint32_t OSCHP_GetFrequency(void); - -#ifdef __cplusplus -} -#endif - -#endif From bbb65aec414ceb4ef7295293487061d1534d0eac Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Thu, 11 Sep 2025 14:23:26 +0200 Subject: [PATCH 261/366] README.md: Added supported boards in V3.x. Signed-off-by: jaenrig-ifx --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index b7c3df25..5bcadded 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,21 @@ The [XMC™ microcontroller family](https://www.infineon.com/cms/de/product/micr More information about supported boards can be found [here](https://xmc-arduino.readthedocs.io/en/latest/hw-platforms.html). +## Supported Microcontroller Boards until V3.x + + + + + + + + + + +
KIT_XMC_PLT2GO_XMC4200KIT_XMC_PLT2GO_XMC4400
+ +More information about the boards in V3.x can be found [here](https://xmc-arduino.readthedocs.io/en/latest-3.x/hw-platforms.html). + ## Getting Started For installation & getting started instructions please refer to [our docs](https://xmc-arduino.readthedocs.io/en/latest/index.html). From f47f28363143b2914c1db7bd049e7de02b06967b Mon Sep 17 00:00:00 2001 From: jaenrig-ifx Date: Thu, 11 Sep 2025 14:25:42 +0200 Subject: [PATCH 262/366] docs/hw-platforms.rst: Removed XMC42/44 from legacy list. Signed-off-by: jaenrig-ifx --- docs/hw-platforms.rst | 62 ------------------------------------------- 1 file changed, 62 deletions(-) diff --git a/docs/hw-platforms.rst b/docs/hw-platforms.rst index 1d9d1c18..87e70626 100644 --- a/docs/hw-platforms.rst +++ b/docs/hw-platforms.rst @@ -191,14 +191,6 @@ Legacy Microcontroller Boards - :ref:`XMC1300 Sense2GoL` - XMC1300 - Proprietary - * - v3.x - - :ref:`KIT_XMC_PLT2GO_XMC4200` - - XMC4200 - - Arduino Uno, Shield2Go, mikroBUS - * - v3.x - - :ref:`KIT_XMC_PLT2GO_XMC4400` - - XMC4400 - - Arduino Uno, Shield2Go, mikroBUS * - v1.7.0 - :ref:`XMC4700 Radar Baseboard` - XMC4700 @@ -252,60 +244,6 @@ and XMC1300 32-bit ARM® Cortex®-M0 MCU series. ----------------------------------------------------------------------- -.. _KIT_XMC_PLT2GO_XMC4200: - -KIT_XMC_PLT2GO_XMC4200 ----------------------- - -* Name in Arduino IDE: ``XMC4200 Platform 2GO`` -* `Product Page `__ - -.. image:: img/KIT_XMC_PLT2GO_XMC4200.jpg - :width: 400 - -The XMC4200 Platform 2Go evaluation board consists of a XMC4200 microcontroller with a debugger implemented by a XMC4200 microcontroller. -Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. -The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. -This kit is equipped with an ARM® Cortex®-M4 based XMC4200 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, -MikroBUS and Shield2Go form factors. - -Pinout Diagram -^^^^^^^^^^^^^^ -.. image:: img/KIT_XMC_PLT2GO_XMC4200_pinout.png - :width: 700 - -Please note that Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other -on the board itself. If you want to use them check out the subsection :ref:`connected_pins`. - ------------------------------------------------------------------------ - -.. _KIT_XMC_PLT2GO_XMC4400: - -KIT_XMC_PLT2GO_XMC4400 ----------------------- - -* Name in Arduino IDE: ``XMC4400 Platform 2GO`` -* `Product Page `__ - -.. image:: img/KIT_XMC_PLT2GO_XMC4400.jpg - :width: 400 - -The XMC4400 Platform 2Go evaluation board consists of a XMC4400 microcontroller with a debugger implemented by a XMC4200 microcontroller. -Please note that there exist versions with 5V and 3.3V. Please be careful which version you have and use with your respective shields. -The one described here is the 5V version as this one is compatible with Arduino shields designed for 5V systems. -This kit is equipped with an ARM® Cortex®-M4 based XMC4400 microcontroller with on-board debugger, Ethernet, CAN and footprints for Arduino, -MikroBUS and Shield2Go form factors. - -Pinout Diagram -^^^^^^^^^^^^^^ -.. image:: img/KIT_XMC_PLT2GO_XMC4400_pinout.png - :width: 700 - -Please note that Arduino pin number ``15`` & ``21`` (``SCL`` & ``A5``) and Arduino pin number ``14`` & ``20`` (``SDA`` & ``A4``) are connected with each other -on the board itself. If you want to use them check out the subsection :ref:`connected_pins`. - ------------------------------------------------------------------------ - .. _XMC4700 Radar Baseboard: XMC4700 Radar Baseboard From 9bd70df78dc04ff431159273f12e4c050f70f79e Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 12 Sep 2025 15:33:33 +0530 Subject: [PATCH 263/366] config: Enabled pulse test. Signed-off-by: MDin --- config/user.yml | 2 +- extras/arduino-core-tests | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/user.yml b/config/user.yml index 7ba5aaa3..a3691f3e 100644 --- a/config/user.yml +++ b/config/user.yml @@ -23,7 +23,7 @@ unit-test: - unit-test-iic-pingpong-4700 # - unit-test-uart-4700 # - unit-test-uart-connected2-4700 - # - unit-test-pulse-4700 + - unit-test-pulse-4700 - unit-test-spi-pingpong-4700 # - unit-test-digital-io-1400 diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index d7cf8559..b815d5c1 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit d7cf8559373bec5e29c0d8d74e44da38f320b582 +Subproject commit b815d5c194f8dc3812d6602bf84dc4d10420e5bc From 217cc67bfcf77ae1ed75200cd03cbabcc6cf9157 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 12 Sep 2025 17:49:12 +0530 Subject: [PATCH 264/366] config: Enabled uart test. Signed-off-by: MDin --- config/user.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/config/user.yml b/config/user.yml index a3691f3e..d6e7c529 100644 --- a/config/user.yml +++ b/config/user.yml @@ -13,19 +13,21 @@ unit-test: - unit-test-digital-io-4700 - unit-test-tone-4700 + - unit-test-iic-pingpong-4700 - unit-test-interrupts-4700 - unit-test-random-4700 - unit-test-time-4700 + - unit-test-pulse-4700 - unit-test-analog-io-pwm-4700 - unit-test-analog-io-adc-4700 - - unit-test-analog-io-dac-4700 - # - unit-test-iic-4700 - - unit-test-iic-pingpong-4700 - # - unit-test-uart-4700 - # - unit-test-uart-connected2-4700 - - unit-test-pulse-4700 - unit-test-spi-pingpong-4700 - + - unit-test-analog-io-dac-4700 + - unit-test-iic-4700 + - unit-test-uart-4700 + - unit-test-uart-connected2-4700 + + + # - unit-test-digital-io-1400 # - unit-test-tone-1400 # - unit-test-interrupts-1400 From c868289d083ef7d45839ef7d7fde1443b659832c Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 16 Sep 2025 10:29:16 +0530 Subject: [PATCH 265/366] config: Enabled sync in rx and tx test. Signed-off-by: MDin --- config/project.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/config/project.yml b/config/project.yml index e5e80d52..fd296873 100644 --- a/config/project.yml +++ b/config/project.yml @@ -143,14 +143,18 @@ unit-test: unit-test-uart-4700: - description: Compiling, flashing and monitoring uart rx unit test. - command: make test_uart_rx UNITY_PATH=/opt/Unity + command: make test_uart_rx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 query: uart_multiple_boards_rx == '1:1' working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: False - description: Compiling, flashing and monitoring uart tx unit test. - command: make test_uart_tx UNITY_PATH=/opt/Unity + command: make test_uart_tx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 query: uart_multiple_boards_tx == '1:1' working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: False unit-test-pulse-4700: - description: Compiling, flashing and monitoring pulse board1 unit test. From 47863284c356de96b91317a5cc9e834d462e0f9a Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 16 Sep 2025 10:56:30 +0530 Subject: [PATCH 266/366] config: Reorder test case. Signed-off-by: MDin --- config/user.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/user.yml b/config/user.yml index d6e7c529..84f75c8c 100644 --- a/config/user.yml +++ b/config/user.yml @@ -22,10 +22,9 @@ unit-test: - unit-test-analog-io-adc-4700 - unit-test-spi-pingpong-4700 - unit-test-analog-io-dac-4700 + - unit-test-uart-connected2-4700 - unit-test-iic-4700 - unit-test-uart-4700 - - unit-test-uart-connected2-4700 - # - unit-test-digital-io-1400 From a26fba9db6f144c79780c702ff037bf5d9b55ce6 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 16 Sep 2025 15:08:09 +0530 Subject: [PATCH 267/366] config: Added SPI single test. Signed-off-by: MDin --- config/project.yml | 6 ++++++ config/user.yml | 1 + 2 files changed, 7 insertions(+) diff --git a/config/project.yml b/config/project.yml index fd296873..059cbe5a 100644 --- a/config/project.yml +++ b/config/project.yml @@ -182,6 +182,12 @@ unit-test: query: spi_ping_pong_multiple_boards_master == '1:1' working_dir: extras/arduino-core-tests + unit-test-spi-single-pingpong-4700: + - description: Compiling, f;asging and monitoring SPI pingpong single_board. + command: make test_spi_connected1_loopback + query: spi_ping_pong_single_board == '1:1' + working_dir: extras/arduino-core-tests + unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity diff --git a/config/user.yml b/config/user.yml index 84f75c8c..25b77d8b 100644 --- a/config/user.yml +++ b/config/user.yml @@ -25,6 +25,7 @@ unit-test: - unit-test-uart-connected2-4700 - unit-test-iic-4700 - unit-test-uart-4700 + - unit-test-spi-single-pingpong-4700 # - unit-test-digital-io-1400 From 54a8c0e9ce126c975e395382c1bed21c60a76f72 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 17 Sep 2025 16:57:12 +0530 Subject: [PATCH 268/366] libraries/Wire/src: Fixed iic scan bug. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index d0d25c0a..7ccd71ef 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -290,6 +290,7 @@ uint8_t TwoWire::endTransmission(bool sendStop) { } if (sendStop) { + delay(1); XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); uint32_t start = millis(); while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == From 42c685cde16a0cc21c0e5665461dedb370891d51 Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 17 Sep 2025 20:47:31 +0530 Subject: [PATCH 269/366] libraries/Wire/src: Added delay comment. Signed-off-by: MDin --- libraries/Wire/src/Wire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 7ccd71ef..a23c7d2f 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -290,7 +290,7 @@ uint8_t TwoWire::endTransmission(bool sendStop) { } if (sendStop) { - delay(1); + delay(1); // Allow time for the I2C Scan XMC_I2C_CH_MasterStop(XMC_I2C_config->channel); uint32_t start = millis(); while (XMC_USIC_CH_GetTransmitBufferStatus(XMC_I2C_config->channel) == From 789ee6680263d9c38b33a0bbc3b845e9db1c484e Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 19 Sep 2025 18:57:10 +0200 Subject: [PATCH 270/366] config/: Cleanup and update config yml. Signed-off-by: zhanglinjing --- config/project.yml | 62 +++++++++++++++++++++++++--------------------- config/user.yml | 15 +++++------ 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/config/project.yml b/config/project.yml index 059cbe5a..98d9046f 100644 --- a/config/project.yml +++ b/config/project.yml @@ -63,37 +63,37 @@ code-quality: unit-test: unit-test-digital-io-4700: - description: Compiling, flashing and monitoring digital IO unit test. - command: make test_digitalio_single + command: make test_digitalio_single query: digital_io_single_board == '1:1' working_dir: extras/arduino-core-tests unit-test-tone-4700: - description: Compiling, flashing and monitoring tone, no-tone unit test. - command: make test_tone_no_tone + command: make test_tone_no_tone query: tone_no_tone_single_board == '1:1' working_dir: extras/arduino-core-tests unit-test-interrupts-4700: - description: Compiling, flashing and monitoring Interrupts unit test. - command: make test_interrupts_single + command: make test_interrupts_single query: interrupts_single_board == '1:1' working_dir: extras/arduino-core-tests unit-test-random-4700: - description: Compiling, flashing and monitoring random unit test. - command: make test_random + command: make test_random query: random_single_board == '1:1' working_dir: extras/arduino-core-tests unit-test-time-4700: - description: Compiling, flashing and monitoring timer unit test. - command: make test_time_single UNITY_PATH=/opt/Unity + command: make test_time_single query: time_single_board == '1:1' working_dir: extras/arduino-core-tests unit-test-analog-io-pwm-4700: - description: Compiling, flashing and monitoring timer unit test. - command: make test_analogio_pwm UNITY_PATH=/opt/Unity + command: make test_analogio_pwm query: analogio_pwm_single_board == '1:1' working_dir: extras/arduino-core-tests @@ -111,31 +111,31 @@ unit-test: unit-test-iic-4700: - description: Compiling, flashing and monitoring timer unit test. - command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity + command: make test_wire_connected1_pingpong query: iic_ping_pong_single_board == '1:1' working_dir: extras/arduino-core-tests unit-test-iic-pingpong-4700: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. - command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity - query: iic_ping_pong_multiple_boards_slave == '2:1' + command: make test_wire_connected2_slavepingpong + query: iic_ping_pong_multiple_boards_slave == '1:1' working_dir: extras/arduino-core-tests - description: Compiling, flashing and monitoring I2C pingpong master unit test. - command: make test_wire_connected2_masterpingpong UNITY_PATH=/opt/Unity - query: iic_ping_pong_multiple_boards_master == '2:1' + command: make test_wire_connected2_masterpingpong + query: iic_ping_pong_multiple_boards_master == '1:1' working_dir: extras/arduino-core-tests unit-test-uart-connected2-4700: - description: Compiling, flashing and monitoring uart rx unit test. - command: make test_uart_connected2_rx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 + command: make test_uart_connected2_rx ENABLE_SYNC=0 query: uart_multiple_boards_rx == '1:1' working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: False - description: Compiling, flashing and monitoring uart tx unit test. - command: make test_uart_connected2_tx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 + command: make test_uart_connected2_tx ENABLE_SYNC=0 query: uart_multiple_boards_tx == '1:1' working_dir: extras/arduino-core-tests options: @@ -143,14 +143,14 @@ unit-test: unit-test-uart-4700: - description: Compiling, flashing and monitoring uart rx unit test. - command: make test_uart_rx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 + command: make test_uart_rx ENABLE_SYNC=0 query: uart_multiple_boards_rx == '1:1' working_dir: extras/arduino-core-tests options: SEND_JOB_START_TOKEN: False - description: Compiling, flashing and monitoring uart tx unit test. - command: make test_uart_tx UNITY_PATH=/opt/Unity ENABLE_SYNC=0 + command: make test_uart_tx ENABLE_SYNC=0 query: uart_multiple_boards_tx == '1:1' working_dir: extras/arduino-core-tests options: @@ -158,18 +158,18 @@ unit-test: unit-test-pulse-4700: - description: Compiling, flashing and monitoring pulse board1 unit test. - command: make test_pulse_board1 UNITY_PATH=/opt/Unity + command: make test_pulse_board1 query: adv_io_pulse_board1 == '1:1' working_dir: extras/arduino-core-tests - description: Compiling, flashing and monitoring pulse board2 unit test. - command: make test_pulse_board2 UNITY_PATH=/opt/Unity + command: make test_pulse_board2 query: adv_io_pulse_board2 == '1:1' working_dir: extras/arduino-core-tests unit-test-spi-pingpong-4700: - description: Compiling, flashing and monitoring SPI pingpong slave unit test. - command: make test_spi_connected2_slavepingpong + command: make test_spi_connected2_slavepingpong query: spi_ping_pong_multiple_boards_slave == '1:1' working_dir: extras/arduino-core-tests options: @@ -178,7 +178,7 @@ unit-test: url: https://github.com/Infineon/arduino-core-psoc6/releases/latest/download/package_psoc6_index.json - description: Compiling, flashing and monitoring SPI pingpong master unit test. - command: make test_spi_connected2_masterpingpong + command: make test_spi_connected2_masterpingpong query: spi_ping_pong_multiple_boards_master == '1:1' working_dir: extras/arduino-core-tests @@ -190,56 +190,62 @@ unit-test: unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. - command: make test_wire_connected2_slavepingpong UNITY_PATH=/opt/Unity + command: make test_wire_connected2_slavepingpong query: iic_ping_pong_multiple_boards_slave == '2:1' working_dir: extras/arduino-core-tests - description: Compiling, flashing and monitoring I2C pingpong master unit test. - command: make test_wire_connected2_masterpingpong UNITY_PATH=/opt/Unity + command: make test_wire_connected2_masterpingpong query: iic_ping_pong_multiple_boards_master == '2:1' working_dir: extras/arduino-core-tests unit-test-digital-io-1400: - description: Compiling, flashing and monitoring digital IO unit test. - command: make test_digitalio_single + command: make test_digitalio_single query: digital_io_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-tone-1400: - description: Compiling, flashing and monitoring tone, no-tone unit test. - command: make test_tone_no_tone + command: make test_tone_no_tone query: tone_no_tone_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-interrupts-1400: - description: Compiling, flashing and monitoring Interrupts unit test. - command: make test_interrupts_single + command: make test_interrupts_single query: interrupts_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-random-1400: - description: Compiling, flashing and monitoring random unit test. - command: make test_random + command: make test_random query: random_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-time-1400: - description: Compiling, flashing and monitoring timer unit test. - command: make test_time_single UNITY_PATH=/opt/Unity + command: make test_time_single query: time_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-analog-io-pwm-1400: - description: Compiling, flashing and monitoring timer unit test. - command: make test_analogio_pwm UNITY_PATH=/opt/Unity + command: make test_analogio_pwm query: analogio_pwm_single_board == '2:1' working_dir: extras/arduino-core-tests unit-test-iic-1400: - description: Compiling, flashing and monitoring timer unit test. - command: make test_wire_connected1_pingpong UNITY_PATH=/opt/Unity + command: make test_wire_connected1_pingpong query: iic_ping_pong_single_board == '2:1' working_dir: extras/arduino-core-tests + + unit-test-can-1400-2go: + - description: Compiling, flashing and monitoring CAN unit test. + command: make test_can_single + query: can_single_board == '1:1' + working_dir: extras/arduino-core-tests \ No newline at end of file diff --git a/config/user.yml b/config/user.yml index 25b77d8b..560e8dbc 100644 --- a/config/user.yml +++ b/config/user.yml @@ -16,22 +16,23 @@ unit-test: - unit-test-iic-pingpong-4700 - unit-test-interrupts-4700 - unit-test-random-4700 - - unit-test-time-4700 - - unit-test-pulse-4700 + - unit-test-uart-connected2-4700 + - unit-test-spi-pingpong-4700 - unit-test-analog-io-pwm-4700 + - unit-test-pulse-4700 + - unit-test-time-4700 + - unit-test-iic-4700 - unit-test-analog-io-adc-4700 - - unit-test-spi-pingpong-4700 - unit-test-analog-io-dac-4700 - - unit-test-uart-connected2-4700 - - unit-test-iic-4700 - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 + # - unit-test-can-1400-2go # - unit-test-digital-io-1400 # - unit-test-tone-1400 # - unit-test-interrupts-1400 # - unit-test-random-1400 - # - unit-test-time-1400 + # - unit-test-time-1400 # - unit-test-analog-io-pwm-1400 - # - unit-test-analog-io-adc-1400 \ No newline at end of file + # - unit-test-analog-io-adc-1400 \ No newline at end of file From 89b9547fc56793afc696af9e78559d55462ac3d2 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 19 Sep 2025 18:57:39 +0200 Subject: [PATCH 271/366] extras/: Update makers-devops. Signed-off-by: zhanglinjing --- extras/makers-devops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/makers-devops b/extras/makers-devops index 663d0491..e1bf7a3d 160000 --- a/extras/makers-devops +++ b/extras/makers-devops @@ -1 +1 @@ -Subproject commit 663d04911cd3d2b1191be6fc7a08f83c38ed49f7 +Subproject commit e1bf7a3d928d88948bc18be8e5d961d650ad6943 From c7603729da4c8f72e58b0d842b53fafc0dd2a71e Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 22 Sep 2025 12:48:09 +0200 Subject: [PATCH 272/366] config/: Add oneWire test config. Signed-off-by: zhanglinjing --- config/project.yml | 8 +++++++- config/user.yml | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/config/project.yml b/config/project.yml index 98d9046f..337d9912 100644 --- a/config/project.yml +++ b/config/project.yml @@ -183,10 +183,16 @@ unit-test: working_dir: extras/arduino-core-tests unit-test-spi-single-pingpong-4700: - - description: Compiling, f;asging and monitoring SPI pingpong single_board. + - description: Compiling, flasging and monitoring SPI pingpong single_board. command: make test_spi_connected1_loopback query: spi_ping_pong_single_board == '1:1' working_dir: extras/arduino-core-tests + + unit-test-onewire-DS18x20-4700: + - description: Compiling, flashing and monitoring OneWire sensor DS18B20 data. + command: make test_onewire_DS18x20 + query: onewire_DS18x20_board == '1:1' + working_dir: extras/arduino-core-tests unit-test-iic-pingpong-1400: - description: Compiling, flashing and monitoring I2C pingpong slave unit test. diff --git a/config/user.yml b/config/user.yml index 560e8dbc..9adbc78a 100644 --- a/config/user.yml +++ b/config/user.yml @@ -26,6 +26,7 @@ unit-test: - unit-test-analog-io-dac-4700 - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 + # - unit-test-onewire-DS18x20 # - unit-test-can-1400-2go From 7e6b6f3c6bf1597d4d282a3cec52908c59cd717a Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 22 Sep 2025 11:40:33 +0530 Subject: [PATCH 273/366] libraries/OneWire: Updated onewire library. Signed-off-by: MDin --- libraries/OneWire/OneWire.cpp | 597 ++++++++++++++++++ libraries/OneWire/OneWire.h | 184 ++++++ libraries/OneWire/Readme.MD | 6 - libraries/OneWire/docs/issue_template.md | 64 ++ .../DS18x20_Temperature.ino | 4 +- .../examples/DS2408_Switch/DS2408_Switch.ino | 59 +- .../examples/DS250x_PROM/DS250x_PROM.ino | 39 +- libraries/OneWire/library.json | 2 +- libraries/OneWire/library.properties | 6 +- libraries/OneWire/src/OneWire.cpp | 263 -------- libraries/OneWire/src/OneWire.h | 87 --- libraries/OneWire/src/util/OneWireConf.h | 302 --------- libraries/OneWire/src/util/OneWireHW.cpp | 106 ---- libraries/OneWire/src/util/OneWireHW.h | 34 - libraries/OneWire/src/util/OneWireImpl.cpp | 253 -------- libraries/OneWire/src/util/OneWireImpl.h | 68 -- libraries/OneWire/src/util/OneWireSW.cpp | 137 ---- libraries/OneWire/src/util/OneWireSW.h | 44 -- libraries/OneWire/src/util/OneWireSettings.h | 46 -- libraries/OneWire/src/util/OneWireTiming.cpp | 18 - libraries/OneWire/src/util/OneWireTiming.h | 18 - libraries/OneWire/util/OneWire_direct_gpio.h | 499 +++++++++++++++ .../OneWire/util/OneWire_direct_regtype.h | 60 ++ 23 files changed, 1450 insertions(+), 1446 deletions(-) create mode 100644 libraries/OneWire/OneWire.cpp create mode 100644 libraries/OneWire/OneWire.h delete mode 100644 libraries/OneWire/Readme.MD create mode 100644 libraries/OneWire/docs/issue_template.md delete mode 100644 libraries/OneWire/src/OneWire.cpp delete mode 100644 libraries/OneWire/src/OneWire.h delete mode 100644 libraries/OneWire/src/util/OneWireConf.h delete mode 100644 libraries/OneWire/src/util/OneWireHW.cpp delete mode 100644 libraries/OneWire/src/util/OneWireHW.h delete mode 100644 libraries/OneWire/src/util/OneWireImpl.cpp delete mode 100644 libraries/OneWire/src/util/OneWireImpl.h delete mode 100644 libraries/OneWire/src/util/OneWireSW.cpp delete mode 100644 libraries/OneWire/src/util/OneWireSW.h delete mode 100644 libraries/OneWire/src/util/OneWireSettings.h delete mode 100644 libraries/OneWire/src/util/OneWireTiming.cpp delete mode 100644 libraries/OneWire/src/util/OneWireTiming.h create mode 100644 libraries/OneWire/util/OneWire_direct_gpio.h create mode 100644 libraries/OneWire/util/OneWire_direct_regtype.h diff --git a/libraries/OneWire/OneWire.cpp b/libraries/OneWire/OneWire.cpp new file mode 100644 index 00000000..ebb3bd38 --- /dev/null +++ b/libraries/OneWire/OneWire.cpp @@ -0,0 +1,597 @@ +/* +Copyright (c) 2007, Jim Studt (original old version - many contributors since) + +The latest version of this library may be found at: + http://www.pjrc.com/teensy/td_libs_OneWire.html + +OneWire has been maintained by Paul Stoffregen (paul@pjrc.com) since +January 2010. + +DO NOT EMAIL for technical support, especially not for ESP chips! +All project support questions must be posted on public forums +relevant to the board or chips used. If using Arduino, post on +Arduino's forum. If using ESP, post on the ESP community forums. +There is ABSOLUTELY NO TECH SUPPORT BY PRIVATE EMAIL! + +Github's issue tracker for OneWire should be used only to report +specific bugs. DO NOT request project support via Github. All +project and tech support questions must be posted on forums, not +github issues. If you experience a problem and you are not +absolutely sure it's an issue with the library, ask on a forum +first. Only use github to report issues after experts have +confirmed the issue is with OneWire rather than your project. + +Back in 2010, OneWire was in need of many bug fixes, but had +been abandoned the original author (Jim Studt). None of the known +contributors were interested in maintaining OneWire. Paul typically +works on OneWire every 6 to 12 months. Patches usually wait that +long. If anyone is interested in more actively maintaining OneWire, +please contact Paul (this is pretty much the only reason to use +private email about OneWire). + +OneWire is now very mature code. No changes other than adding +definitions for newer hardware support are anticipated. + + ESP32 mods authored by stickbreaker: + @stickbreaker 30APR2018 add IRAM_ATTR to read_bit() write_bit() to solve ICache miss timing +failure. thanks @everslick re: https://github.com/espressif/arduino-esp32/issues/1335 Altered by +garyd9 for clean merge with Paul Stoffregen's source + +Version 2.3: + Unknown chip fallback mode, Roger Clark + Teensy-LC compatibility, Paul Stoffregen + Search bug fix, Love Nystrom + +Version 2.2: + Teensy 3.0 compatibility, Paul Stoffregen, paul@pjrc.com + Arduino Due compatibility, http://arduino.cc/forum/index.php?topic=141030 + Fix DS18B20 example negative temperature + Fix DS18B20 example's low res modes, Ken Butcher + Improve reset timing, Mark Tillotson + Add const qualifiers, Bertrik Sikken + Add initial value input to crc16, Bertrik Sikken + Add target_search() function, Scott Roberts + +Version 2.1: + Arduino 1.0 compatibility, Paul Stoffregen + Improve temperature example, Paul Stoffregen + DS250x_PROM example, Guillermo Lovato + PIC32 (chipKit) compatibility, Jason Dangel, dangel.jason AT gmail.com + Improvements from Glenn Trewitt: + - crc16() now works + - check_crc16() does all of calculation/checking work. + - Added read_bytes() and write_bytes(), to reduce tedious loops. + - Added ds2408 example. + Delete very old, out-of-date readme file (info is here) + +Version 2.0: Modifications by Paul Stoffregen, January 2010: +http://www.pjrc.com/teensy/td_libs_OneWire.html + Search fix from Robin James + http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27 + Use direct optimized I/O in all cases + Disable interrupts during timing critical sections + (this solves many random communication errors) + Disable interrupts during read-modify-write I/O + Reduce RAM consumption by eliminating unnecessary + variables and trimming many to 8 bits + Optimize both crc8 - table version moved to flash + +Modified to work with larger numbers of devices - avoids loop. +Tested in Arduino 11 alpha with 12 sensors. +26 Sept 2008 -- Robin James +http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27 + +Updated to work with arduino-0008 and to include skip() as of +2007/07/06. --RJL20 + +Modified to calculate the 8-bit CRC directly, avoiding the need for +the 256-byte lookup table to be loaded in RAM. Tested in arduino-0010 +-- Tom Pollard, Jan 23, 2008 + +Jim Studt's original library was modified by Josh Larios. + +Tom Pollard, pollard@alum.mit.edu, contributed around May 20, 2008 + +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. + +Much of the code was inspired by Derek Yerger's code, though I don't +think much of that remains. In any event that was.. + (copyleft) 2006 by Derek Yerger - Free to distribute freely. + +The CRC code was excerpted and inspired by the Dallas Semiconductor +sample code bearing this copyright. +//--------------------------------------------------------------------------- +// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved. +// +// 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 DALLAS SEMICONDUCTOR 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. +// +// Except as contained in this notice, the name of Dallas Semiconductor +// shall not be used except as stated in the Dallas Semiconductor +// Branding Policy. +//-------------------------------------------------------------------------- +*/ + +#include +#include "OneWire.h" +#include "util/OneWire_direct_gpio.h" + +#ifdef ARDUINO_ARCH_ESP32 + // due to the dual core esp32, a critical section works better than disabling interrupts + #define noInterrupts() \ + { \ + portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED; \ + portENTER_CRITICAL(&mux) + #define interrupts() \ + portEXIT_CRITICAL(&mux); \ + } + // for info on this, search "IRAM_ATTR" at + // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/general-notes.html + #define CRIT_TIMING IRAM_ATTR +#else + #define CRIT_TIMING +#endif + +void OneWire::begin(uint8_t pin) { + pinMode(pin, INPUT); + bitmask = PIN_TO_BITMASK(pin); + baseReg = PIN_TO_BASEREG(pin); +#if ONEWIRE_SEARCH + reset_search(); +#endif +} + +// Perform the onewire reset function. We will wait up to 250uS for +// the bus to come high, if it doesn't then it is broken or shorted +// and we return a 0; +// +// Returns 1 if a device asserted a presence pulse, 0 otherwise. +// +uint8_t CRIT_TIMING OneWire::reset(void) { + IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; + __attribute__((unused)) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; + uint8_t r; + uint8_t retries = 125; + + noInterrupts(); + DIRECT_MODE_INPUT(reg, mask); + interrupts(); + // wait until the wire is high... just in case + do { + if (--retries == 0) + return 0; + delayMicroseconds(2); + } while (!DIRECT_READ(reg, mask)); + + noInterrupts(); + DIRECT_WRITE_LOW(reg, mask); + DIRECT_MODE_OUTPUT(reg, mask); // drive output low + interrupts(); + delayMicroseconds(480); + noInterrupts(); + DIRECT_MODE_INPUT(reg, mask); // allow it to float + delayMicroseconds(70); + r = !DIRECT_READ(reg, mask); + interrupts(); + delayMicroseconds(410); + return r; +} + +// +// Write a bit. Port and bit is used to cut lookup time and provide +// more certain timing. +// +void CRIT_TIMING OneWire::write_bit(uint8_t v) { + IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; + __attribute__((unused)) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; + + if (v & 1) { + noInterrupts(); + DIRECT_WRITE_LOW(reg, mask); + DIRECT_MODE_OUTPUT(reg, mask); // drive output low + delayMicroseconds(10); + DIRECT_WRITE_HIGH(reg, mask); // drive output high + interrupts(); + delayMicroseconds(55); + } else { + noInterrupts(); + DIRECT_WRITE_LOW(reg, mask); + DIRECT_MODE_OUTPUT(reg, mask); // drive output low + delayMicroseconds(65); + DIRECT_WRITE_HIGH(reg, mask); // drive output high + interrupts(); + delayMicroseconds(5); + } +} + +// +// Read a bit. Port and bit is used to cut lookup time and provide +// more certain timing. +// +uint8_t CRIT_TIMING OneWire::read_bit(void) { + IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; + __attribute__((unused)) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; + uint8_t r; + + noInterrupts(); + DIRECT_MODE_OUTPUT(reg, mask); + DIRECT_WRITE_LOW(reg, mask); + delayMicroseconds(3); + DIRECT_MODE_INPUT(reg, mask); // let pin float, pull up will raise + delayMicroseconds(10); + r = DIRECT_READ(reg, mask); + interrupts(); + delayMicroseconds(53); + return r; +} + +// +// Write a byte. The writing code uses the active drivers to raise the +// pin high, if you need power after the write (e.g. DS18S20 in +// parasite power mode) then set 'power' to 1, otherwise the pin will +// go tri-state at the end of the write to avoid heating in a short or +// other mishap. +// +void OneWire::write(uint8_t v, uint8_t power /* = 0 */) { + uint8_t bitMask; + + for (bitMask = 0x01; bitMask; bitMask <<= 1) { + OneWire::write_bit((bitMask & v) ? 1 : 0); + } + if (!power) { + noInterrupts(); + DIRECT_MODE_INPUT(baseReg, bitmask); + DIRECT_WRITE_LOW(baseReg, bitmask); + interrupts(); + } +} + +void OneWire::write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0 */) { + for (uint16_t i = 0; i < count; i++) + write(buf[i]); + if (!power) { + noInterrupts(); + DIRECT_MODE_INPUT(baseReg, bitmask); + DIRECT_WRITE_LOW(baseReg, bitmask); + interrupts(); + } +} + +// +// Read a byte +// +uint8_t OneWire::read() { + uint8_t bitMask; + uint8_t r = 0; + + for (bitMask = 0x01; bitMask; bitMask <<= 1) { + if (OneWire::read_bit()) + r |= bitMask; + } + return r; +} + +void OneWire::read_bytes(uint8_t *buf, uint16_t count) { + for (uint16_t i = 0; i < count; i++) + buf[i] = read(); +} + +// +// Do a ROM select +// +void OneWire::select(const uint8_t rom[8]) { + uint8_t i; + + write(0x55); // Choose ROM + + for (i = 0; i < 8; i++) + write(rom[i]); +} + +// +// Do a ROM skip +// +void OneWire::skip() { + write(0xCC); // Skip ROM +} + +void OneWire::depower() { + noInterrupts(); + DIRECT_MODE_INPUT(baseReg, bitmask); + interrupts(); +} + +#if ONEWIRE_SEARCH + +// +// You need to use this function to start a search again from the beginning. +// You do not need to do it for the first search, though you could. +// +void OneWire::reset_search() { + // reset the search state + LastDiscrepancy = 0; + LastDeviceFlag = false; + LastFamilyDiscrepancy = 0; + for (int i = 7;; i--) { + ROM_NO[i] = 0; + if (i == 0) + break; + } +} + +// Setup the search to find the device type 'family_code' on the next call +// to search(*newAddr) if it is present. +// +void OneWire::target_search(uint8_t family_code) { + // set the search state to find SearchFamily type devices + ROM_NO[0] = family_code; + for (uint8_t i = 1; i < 8; i++) + ROM_NO[i] = 0; + LastDiscrepancy = 64; + LastFamilyDiscrepancy = 0; + LastDeviceFlag = false; +} + +// +// Perform a search. If this function returns a '1' then it has +// enumerated the next device and you may retrieve the ROM from the +// OneWire::address variable. If there are no devices, no further +// devices, or something horrible happens in the middle of the +// enumeration then a 0 is returned. If a new device is found then +// its address is copied to newAddr. Use OneWire::reset_search() to +// start over. +// +// --- Replaced by the one from the Dallas Semiconductor web site --- +//-------------------------------------------------------------------------- +// Perform the 1-Wire Search Algorithm on the 1-Wire bus using the existing +// search state. +// Return TRUE : device found, ROM number in ROM_NO buffer +// FALSE : device not found, end of search +// +bool OneWire::search(uint8_t *newAddr, bool search_mode /* = true */) { + uint8_t id_bit_number; + uint8_t last_zero, rom_byte_number; + bool search_result; + uint8_t id_bit, cmp_id_bit; + + unsigned char rom_byte_mask, search_direction; + + // initialize for search + id_bit_number = 1; + last_zero = 0; + rom_byte_number = 0; + rom_byte_mask = 1; + search_result = false; + + // if the last call was not the last one + if (!LastDeviceFlag) { + // 1-Wire reset + if (!reset()) { + // reset the search + LastDiscrepancy = 0; + LastDeviceFlag = false; + LastFamilyDiscrepancy = 0; + return false; + } + + // issue the search command + if (search_mode == true) { + write(0xF0); // NORMAL SEARCH + } else { + write(0xEC); // CONDITIONAL SEARCH + } + + // loop to do the search + do { + // read a bit and its complement + id_bit = read_bit(); + cmp_id_bit = read_bit(); + + // check for no devices on 1-wire + if ((id_bit == 1) && (cmp_id_bit == 1)) { + break; + } else { + // all devices coupled have 0 or 1 + if (id_bit != cmp_id_bit) { + search_direction = id_bit; // bit write value for search + } else { + // if this discrepancy if before the Last Discrepancy + // on a previous next then pick the same as last time + if (id_bit_number < LastDiscrepancy) { + search_direction = ((ROM_NO[rom_byte_number] & rom_byte_mask) > 0); + } else { + // if equal to last pick 1, if not then pick 0 + search_direction = (id_bit_number == LastDiscrepancy); + } + // if 0 was picked then record its position in LastZero + if (search_direction == 0) { + last_zero = id_bit_number; + + // check for Last discrepancy in family + if (last_zero < 9) + LastFamilyDiscrepancy = last_zero; + } + } + + // set or clear the bit in the ROM byte rom_byte_number + // with mask rom_byte_mask + if (search_direction == 1) + ROM_NO[rom_byte_number] |= rom_byte_mask; + else + ROM_NO[rom_byte_number] &= ~rom_byte_mask; + + // serial number search direction write bit + write_bit(search_direction); + + // increment the byte counter id_bit_number + // and shift the mask rom_byte_mask + id_bit_number++; + rom_byte_mask <<= 1; + + // if the mask is 0 then go to new SerialNum byte rom_byte_number and reset mask + if (rom_byte_mask == 0) { + rom_byte_number++; + rom_byte_mask = 1; + } + } + } while (rom_byte_number < 8); // loop until through all ROM bytes 0-7 + + // if the search was successful then + if (!(id_bit_number < 65)) { + // search successful so set LastDiscrepancy,LastDeviceFlag,search_result + LastDiscrepancy = last_zero; + + // check for last device + if (LastDiscrepancy == 0) { + LastDeviceFlag = true; + } + search_result = true; + } + } + + // if no device found then reset counters so next 'search' will be like a first + if (!search_result || !ROM_NO[0]) { + LastDiscrepancy = 0; + LastDeviceFlag = false; + LastFamilyDiscrepancy = 0; + search_result = false; + } else { + for (int i = 0; i < 8; i++) + newAddr[i] = ROM_NO[i]; + } + return search_result; +} + +#endif + +#if ONEWIRE_CRC +// The 1-Wire CRC scheme is described in Maxim Application Note 27: +// "Understanding and Using Cyclic Redundancy Checks with Maxim iButton Products" +// + + #if ONEWIRE_CRC8_TABLE +// Dow-CRC using polynomial X^8 + X^5 + X^4 + X^0 +// Tiny 2x16 entry CRC table created by Arjen Lentz +// See http://lentz.com.au/blog/calculating-crc-with-a-tiny-32-entry-lookup-table +static const uint8_t PROGMEM dscrc2x16_table[] = { + 0x00, 0x5E, 0xBC, 0xE2, 0x61, 0x3F, 0xDD, 0x83, 0xC2, 0x9C, 0x7E, 0x20, 0xA3, 0xFD, 0x1F, 0x41, + 0x00, 0x9D, 0x23, 0xBE, 0x46, 0xDB, 0x65, 0xF8, 0x8C, 0x11, 0xAF, 0x32, 0xCA, 0x57, 0xE9, 0x74}; + +// Compute a Dallas Semiconductor 8 bit CRC. These show up in the ROM +// and the registers. (Use tiny 2x16 entry CRC table) +uint8_t OneWire::crc8(const uint8_t *addr, uint8_t len) { + uint8_t crc = 0; + + while (len--) { + crc = *addr++ ^ crc; // just re-using crc as intermediate + crc = pgm_read_byte(dscrc2x16_table + (crc & 0x0f)) ^ + pgm_read_byte(dscrc2x16_table + 16 + ((crc >> 4) & 0x0f)); + } + + return crc; +} + #else +// +// Compute a Dallas Semiconductor 8 bit CRC directly. +// this is much slower, but a little smaller, than the lookup table. +// +uint8_t OneWire::crc8(const uint8_t *addr, uint8_t len) { + uint8_t crc = 0; + + while (len--) { + #if defined(__AVR__) + crc = _crc_ibutton_update(crc, *addr++); + #else + uint8_t inbyte = *addr++; + for (uint8_t i = 8; i; i--) { + uint8_t mix = (crc ^ inbyte) & 0x01; + crc >>= 1; + if (mix) + crc ^= 0x8C; + inbyte >>= 1; + } + #endif + } + return crc; +} + #endif + + #if ONEWIRE_CRC16 +bool OneWire::check_crc16(const uint8_t *input, + uint16_t len, + const uint8_t *inverted_crc, + uint16_t crc) { + crc = ~crc16(input, len, crc); + return (crc & 0xFF) == inverted_crc[0] && (crc >> 8) == inverted_crc[1]; +} + +uint16_t OneWire::crc16(const uint8_t *input, uint16_t len, uint16_t crc) { + #if defined(__AVR__) + for (uint16_t i = 0; i < len; i++) { + crc = _crc16_update(crc, input[i]); + } + #else + static const uint8_t oddparity[16] = {0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0}; + + for (uint16_t i = 0; i < len; i++) { + // Even though we're just copying a byte from the input, + // we'll be doing 16-bit computation with it. + uint16_t cdata = input[i]; + cdata = (cdata ^ crc) & 0xff; + crc >>= 8; + + if (oddparity[cdata & 0x0F] ^ oddparity[cdata >> 4]) + crc ^= 0xC001; + + cdata <<= 6; + crc ^= cdata; + cdata <<= 1; + crc ^= cdata; + } + #endif + return crc; +} + #endif + +#endif + +// undef defines for no particular reason +#ifdef ARDUINO_ARCH_ESP32 + #undef noInterrupts(){portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED; portENTER_CRITICAL(&mux) + #undef interrupts() portEXIT_CRITICAL(&mux); } +#endif +// for info on this, search "IRAM_ATTR" at +// https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/general-notes.html +#undef CRIT_TIMING diff --git a/libraries/OneWire/OneWire.h b/libraries/OneWire/OneWire.h new file mode 100644 index 00000000..9723efbe --- /dev/null +++ b/libraries/OneWire/OneWire.h @@ -0,0 +1,184 @@ +#ifndef OneWire_h +#define OneWire_h + +#ifdef __cplusplus + + #include + + #if defined(__AVR__) + #include + #endif + + #if ARDUINO >= 100 + #include // for delayMicroseconds, digitalPinToBitMask, etc + #else + #include "WProgram.h" // for delayMicroseconds + #include "pins_arduino.h" // for digitalPinToBitMask, etc + #endif + + // You can exclude certain features from OneWire. In theory, this + // might save some space. In practice, the compiler automatically + // removes unused code (technically, the linker, using -fdata-sections + // and -ffunction-sections when compiling, and Wl,--gc-sections + // when linking), so most of these will not result in any code size + // reduction. Well, unless you try to use the missing features + // and redesign your program to not need them! ONEWIRE_CRC8_TABLE + // is the exception, because it selects a fast but large algorithm + // or a small but slow algorithm. + + // you can exclude onewire_search by defining that to 0 + #ifndef ONEWIRE_SEARCH + #define ONEWIRE_SEARCH 1 + #endif + + // You can exclude CRC checks altogether by defining this to 0 + #ifndef ONEWIRE_CRC + #define ONEWIRE_CRC 1 + #endif + + // Select the table-lookup method of computing the 8-bit CRC + // by setting this to 1. The lookup table enlarges code size by + // about 250 bytes. It does NOT consume RAM (but did in very + // old versions of OneWire). If you disable this, a slower + // but very compact algorithm is used. + #ifndef ONEWIRE_CRC8_TABLE + #define ONEWIRE_CRC8_TABLE 1 + #endif + + // You can allow 16-bit CRC checks by defining this to 1 + // (Note that ONEWIRE_CRC must also be 1.) + #ifndef ONEWIRE_CRC16 + #define ONEWIRE_CRC16 1 + #endif + + // Board-specific macros for direct GPIO + #include "util/OneWire_direct_regtype.h" + +class OneWire { +private: + IO_REG_TYPE bitmask; + volatile IO_REG_TYPE *baseReg; + + #if ONEWIRE_SEARCH + // global search state + unsigned char ROM_NO[8]; + uint8_t LastDiscrepancy; + uint8_t LastFamilyDiscrepancy; + bool LastDeviceFlag; + #endif + +public: + OneWire() {} + + OneWire(uint8_t pin) { begin(pin); } + + void begin(uint8_t pin); + + // Perform a 1-Wire reset cycle. Returns 1 if a device responds + // with a presence pulse. Returns 0 if there is no device or the + // bus is shorted or otherwise held low for more than 250uS + uint8_t reset(void); + + // Issue a 1-Wire rom select command, you do the reset first. + void select(const uint8_t rom[8]); + + // Issue a 1-Wire rom skip command, to address all on bus. + void skip(void); + + // Write a byte. If 'power' is one then the wire is held high at + // the end for parasitically powered devices. You are responsible + // for eventually depowering it by calling depower() or doing + // another read or write. + void write(uint8_t v, uint8_t power = 0); + + void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0); + + // Read a byte. + uint8_t read(void); + + void read_bytes(uint8_t *buf, uint16_t count); + + // Write a bit. The bus is always left powered at the end, see + // note in write() about that. + void write_bit(uint8_t v); + + // Read a bit. + uint8_t read_bit(void); + + // Stop forcing power onto the bus. You only need to do this if + // you used the 'power' flag to write() or used a write_bit() call + // and aren't about to do another read or write. You would rather + // not leave this powered if you don't have to, just in case + // someone shorts your bus. + void depower(void); + + #if ONEWIRE_SEARCH + // Clear the search state so that if will start from the beginning again. + void reset_search(); + + // Setup the search to find the device type 'family_code' on the next call + // to search(*newAddr) if it is present. + void target_search(uint8_t family_code); + + // Look for the next device. Returns 1 if a new address has been + // returned. A zero might mean that the bus is shorted, there are + // no devices, or you have already retrieved all of them. It + // might be a good idea to check the CRC to make sure you didn't + // get garbage. The order is deterministic. You will always get + // the same devices in the same order. + bool search(uint8_t *newAddr, bool search_mode = true); + #endif + + #if ONEWIRE_CRC + // Compute a Dallas Semiconductor 8 bit CRC, these are used in the + // ROM and scratchpad registers. + static uint8_t crc8(const uint8_t *addr, uint8_t len); + + #if ONEWIRE_CRC16 + // Compute the 1-Wire CRC16 and compare it against the received CRC. + // Example usage (reading a DS2408): + // // Put everything in a buffer so we can compute the CRC easily. + // uint8_t buf[13]; + // buf[0] = 0xF0; // Read PIO Registers + // buf[1] = 0x88; // LSB address + // buf[2] = 0x00; // MSB address + // WriteBytes(net, buf, 3); // Write 3 cmd bytes + // ReadBytes(net, buf+3, 10); // Read 6 data bytes, 2 0xFF, 2 CRC16 + // if (!CheckCRC16(buf, 11, &buf[11])) { + // // Handle error. + // } + // + // @param input - Array of bytes to checksum. + // @param len - How many bytes to use. + // @param inverted_crc - The two CRC16 bytes in the received data. + // This should just point into the received data, + // *not* at a 16-bit integer. + // @param crc - The crc starting value (optional) + // @return True, iff the CRC matches. + static bool + check_crc16(const uint8_t *input, uint16_t len, const uint8_t *inverted_crc, uint16_t crc = 0); + + // Compute a Dallas Semiconductor 16 bit CRC. This is required to check + // the integrity of data received from many 1-Wire devices. Note that the + // CRC computed here is *not* what you'll get from the 1-Wire network, + // for two reasons: + // 1) The CRC is transmitted bitwise inverted. + // 2) Depending on the endian-ness of your processor, the binary + // representation of the two-byte return value may have a different + // byte order than the two bytes you get from 1-Wire. + // @param input - Array of bytes to checksum. + // @param len - How many bytes to use. + // @param crc - The crc starting value (optional) + // @return The CRC16, as defined by Dallas Semiconductor. + static uint16_t crc16(const uint8_t *input, uint16_t len, uint16_t crc = 0); + #endif + #endif +}; + + // Prevent this name from leaking into Arduino sketches + #ifdef IO_REG_TYPE + #undef IO_REG_TYPE + #endif + +#endif // __cplusplus +#endif // OneWire_h diff --git a/libraries/OneWire/Readme.MD b/libraries/OneWire/Readme.MD deleted file mode 100644 index e5436c4a..00000000 --- a/libraries/OneWire/Readme.MD +++ /dev/null @@ -1,6 +0,0 @@ -# OneWire Library for XMC - -OneWire library lets you access 1-wire devices. - -## Additional Information -See also our [documentation](https://xmc-arduino.readthedocs.io/en/latest/builtin-libraries.html). \ No newline at end of file diff --git a/libraries/OneWire/docs/issue_template.md b/libraries/OneWire/docs/issue_template.md new file mode 100644 index 00000000..06109925 --- /dev/null +++ b/libraries/OneWire/docs/issue_template.md @@ -0,0 +1,64 @@ +Please use this form only to report code defects or bugs. + +For any question, even questions directly pertaining to this code, post your question on the forums related to the board you are using. + +Arduino: forum.arduino.cc +Teensy: forum.pjrc.com +ESP8266: www.esp8266.com +ESP32: www.esp32.com +Adafruit Feather/Metro/Trinket: forums.adafruit.com +Particle Photon: community.particle.io + +If you are experiencing trouble but not certain of the cause, or need help using this code, ask on the appropriate forum. This is not the place to ask for support or help, even directly related to this code. Only use this form you are certain you have discovered a defect in this code! + +Please verify the problem occurs when using the very latest version, using the newest version of Arduino and any other related software. + + +----------------------------- Remove above ----------------------------- + + + +### Description + +Describe your problem. + + + +### Steps To Reproduce Problem + +Please give detailed instructions needed for anyone to attempt to reproduce the problem. + + + +### Hardware & Software + +Board +Shields / modules used +Arduino IDE version +Teensyduino version (if using Teensy) +Version info & package name (from Tools > Boards > Board Manager) +Operating system & version +Any other software or hardware? + + +### Arduino Sketch + +```cpp +// Change the code below by your sketch (please try to give the smallest code which demonstrates the problem) +#include + +// libraries: give links/details so anyone can compile your code for the same result + +void setup() { +} + +void loop() { +} +``` + + +### Errors or Incorrect Output + +If you see any errors or incorrect output, please show it here. Please use copy & paste to give an exact copy of the message. Details matter, so please show (not merely describe) the actual message or error exactly as it appears. + + diff --git a/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino b/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino index 68ca1943..34a5e448 100644 --- a/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino +++ b/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino @@ -5,7 +5,7 @@ // http://www.pjrc.com/teensy/td_libs_OneWire.html // // The DallasTemperature library can do all this work for you! -// http://milesburton.com/Dallas_Temperature_Control_Library +// https://github.com/milesburton/Arduino-Temperature-Control-Library OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary) @@ -17,7 +17,7 @@ void loop(void) { byte i; byte present = 0; byte type_s; - byte data[12]; + byte data[9]; byte addr[8]; float celsius, fahrenheit; diff --git a/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino b/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino index d171f9ba..b70eda97 100644 --- a/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino +++ b/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino @@ -12,7 +12,10 @@ * - For reading from a switch, you should use 10K pull-up resisters. */ -void PrintBytes(uint8_t* addr, uint8_t count, bool newline=0) { +OneWire net(10); // on pin 10 + + +void PrintBytes(const uint8_t* addr, uint8_t count, bool newline=false) { for (uint8_t i = 0; i < count; i++) { Serial.print(addr[i]>>4, HEX); Serial.print(addr[i]&0x0f, HEX); @@ -21,57 +24,51 @@ void PrintBytes(uint8_t* addr, uint8_t count, bool newline=0) { Serial.println(); } -void ReadAndReport(OneWire* net, uint8_t* addr) { - Serial.print(" Reading DS2408 "); - PrintBytes(addr, 8); - Serial.println(); - - uint8_t buf[13]; // Put everything in the buffer so we can compute CRC easily. - buf[0] = 0xF0; // Read PIO Registers - buf[1] = 0x88; // LSB address - buf[2] = 0x00; // MSB address - net->write_bytes(buf, 3); - net->read_bytes(buf+3, 10); // 3 cmd bytes, 6 data bytes, 2 0xFF, 2 CRC16 - net->reset(); - - if (!OneWire::check_crc16(buf, 11, &buf[11])) { - Serial.print("CRC failure in DS2408 at "); - PrintBytes(addr, 8, true); - return; - } - Serial.print(" DS2408 data = "); - // First 3 bytes contain command, register address. - Serial.println(buf[3], BIN); -} - -OneWire net(10); // on pin 10 void setup(void) { Serial.begin(9600); } void loop(void) { - byte i; - byte present = 0; byte addr[8]; - + if (!net.search(addr)) { Serial.print("No more addresses.\n"); net.reset_search(); delay(1000); return; } - + if (OneWire::crc8(addr, 7) != addr[7]) { Serial.print("CRC is not valid!\n"); return; } - + if (addr[0] != 0x29) { PrintBytes(addr, 8); Serial.print(" is not a DS2408.\n"); return; } - ReadAndReport(&net, addr); + Serial.print(" Reading DS2408 "); + PrintBytes(addr, 8); + Serial.println(); + + uint8_t buf[13]; // Put everything in the buffer so we can compute CRC easily. + buf[0] = 0xF0; // Read PIO Registers + buf[1] = 0x88; // LSB address + buf[2] = 0x00; // MSB address + net.write_bytes(buf, 3); + net.read_bytes(buf+3, 10); // 3 cmd bytes, 6 data bytes, 2 0xFF, 2 CRC16 + net.reset(); + + if (!OneWire::check_crc16(buf, 11, &buf[11])) { + Serial.print("CRC failure in DS2408 at "); + PrintBytes(addr, 8, true); + return; + } + Serial.print(" DS2408 data = "); + // First 3 bytes contain command, register address. + Serial.println(buf[3], BIN); } + diff --git a/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino b/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino index a85b1c29..db95a5e9 100644 --- a/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino +++ b/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino @@ -1,25 +1,25 @@ /* DS250x add-only programmable memory reader w/SKIP ROM. - + The DS250x is a 512/1024bit add-only PROM(you can add data but cannot change the old one) that's used mainly for device identification purposes like serial number, mfgr data, unique identifiers, etc. It uses the Maxim 1-wire bus. - + This sketch will use the SKIP ROM function that skips the 1-Wire search phase since we only have one device connected in the bus on digital pin 6. If more than one device is connected to the bus, it will fail. Sketch will not verify if device connected is from the DS250x family since the skip rom function effectively skips the family-id byte readout. thus it is possible to run this sketch with any Maxim OneWire device in which case the command CRC will most likely fail. Sketch will only read the first page of memory(32bits) starting from the lower address(0000h), if more than 1 device is present, then use the sketch with search functions. Remember to put a 4.7K pullup resistor between pin 6 and +Vcc - + To change the range or ammount of data to read, simply change the data array size, LSB/MSB addresses and for loop iterations - + This example code is in the public domain and is provided AS-IS. - + Built with Arduino 0022 and PJRC OneWire 2.0 library http://www.pjrc.com/teensy/td_libs_OneWire.html - + created by Guillermo Lovato march/2011 - + */ #include @@ -40,7 +40,7 @@ void loop() { present = ds.reset(); // OneWire bus reset, always needed to start operation on the bus, returns a 1/TRUE if there's a device present. ds.skip(); // Skip ROM search - if (present == TRUE){ // We only try to read the data if there's a device present + if (present == true) { // We only try to read the data if there's a device present Serial.println("DS250x device present"); ds.write(leemem[0],1); // Read data command, leave ghost power on ds.write(leemem[1],1); // LSB starting address, leave ghost power on @@ -57,34 +57,19 @@ void loop() { Serial.println(ccrc,HEX); return; // Since CRC failed, we abort the rest of the loop and start over } - Serial.println("Data is: "); // For the printout of the data + Serial.println("Data is: "); // For the printout of the data for ( i = 0; i < 32; i++) { // Now it's time to read the PROM data itself, each page is 32 bytes so we need 32 read commands - data[i] = ds.read(); // we store each read byte to a different position in the data array + data[i] = ds.read(); // we store each read byte to a different position in the data array Serial.print(data[i]); // printout in ASCII - Serial.print(" "); // blank space + Serial.print(" "); // blank space } Serial.println(); delay(5000); // Delay so we don't saturate the serial output } - else { // Nothing is connected in the bus + else { // Nothing is connected in the bus Serial.println("Nothing connected"); delay(3000); } } - - - - - - - - - - - - - - - diff --git a/libraries/OneWire/library.json b/libraries/OneWire/library.json index 1e95e2e9..c540133b 100644 --- a/libraries/OneWire/library.json +++ b/libraries/OneWire/library.json @@ -52,7 +52,7 @@ "type": "git", "url": "https://github.com/PaulStoffregen/OneWire" }, - "version": "2.3.2", + "version": "2.3.8", "homepage": "https://www.pjrc.com/teensy/td_libs_OneWire.html", "frameworks": "Arduino", "examples": [ diff --git a/libraries/OneWire/library.properties b/libraries/OneWire/library.properties index 6842e122..f4c596f9 100644 --- a/libraries/OneWire/library.properties +++ b/libraries/OneWire/library.properties @@ -1,10 +1,10 @@ name=OneWire -version=2.3.4 +version=2.3.8 author=Jim Studt, Tom Pollard, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Paul Stoffregen, Scott Roberts, Bertrik Sikken, Mark Tillotson, Ken Butcher, Roger Clark, Love Nystrom maintainer=Paul Stoffregen sentence=Access 1-wire temperature sensors, memory and other chips. -paragraph=Add Dallas one wire interface for single wire peripherals like DS18B20 (temperature), memory and other devices +paragraph= category=Communication url=http://www.pjrc.com/teensy/td_libs_OneWire.html -architectures=xmc +architectures=* diff --git a/libraries/OneWire/src/OneWire.cpp b/libraries/OneWire/src/OneWire.cpp deleted file mode 100644 index 0a32a18d..00000000 --- a/libraries/OneWire/src/OneWire.cpp +++ /dev/null @@ -1,263 +0,0 @@ -/* Copyright (c) 2007, Jim Studt (original old version - many contributors since) - -The latest version of this library may be found at: - http://www.pjrc.com/teensy/td_libs_OneWire.html - -OneWire has been maintained by Paul Stoffregen (paul@pjrc.com) since -January 2010. - -DO NOT EMAIL for technical support, especially not for ESP chips! -All project support questions must be posted on public forums -relevant to the board or chips used. If using Arduino, post on -Arduino's forum. If using ESP, post on the ESP community forums. -There is ABSOLUTELY NO TECH SUPPORT BY PRIVATE EMAIL! - -Github's issue tracker for OneWire should be used only to report -specific bugs. DO NOT request project support via Github. All -project and tech support questions must be posted on forums, not -github issues. If you experience a problem and you are not -absolutely sure it's an issue with the library, ask on a forum -first. Only use github to report issues after experts have -confirmed the issue is with OneWire rather than your project. - -Back in 2010, OneWire was in need of many bug fixes, but had -been abandoned the original author (Jim Studt). None of the known -contributors were interested in maintaining OneWire. Paul typically -works on OneWire every 6 to 12 months. Patches usually wait that -long. If anyone is interested in more actively maintaining OneWire, -please contact Paul (this is pretty much the only reason to use -private email about OneWire). - -OneWire is now very mature code. No changes other than adding -definitions for newer hardware support are anticipated.*/ -/* -Version 2.3: - Unknown chip fallback mode, Roger Clark - Teensy-LC compatibility, Paul Stoffregen - Search bug fix, Love Nystrom - -Version 2.2: - Teensy 3.0 compatibility, Paul Stoffregen, paul@pjrc.com - Arduino Due compatibility, http://arduino.cc/forum/index.php?topic=141030 - Fix DS18B20 example negative temperature - Fix DS18B20 example's low res modes, Ken Butcher - Improve reset timing, Mark Tillotson - Add const qualifiers, Bertrik Sikken - Add initial value input to crc16, Bertrik Sikken - Add target_search() function, Scott Roberts - -Version 2.1: - Arduino 1.0 compatibility, Paul Stoffregen - Improve temperature example, Paul Stoffregen - DS250x_PROM example, Guillermo Lovato - PIC32 (chipKit) compatibility, Jason Dangel, dangel.jason AT gmail.com - Improvements from Glenn Trewitt: - - crc16() now works - - check_crc16() does all of calculation/checking work. - - Added read_bytes() and write_bytes(), to reduce tedious loops. - - Added ds2408 example. - Delete very old, out-of-date readme file (info is here) - -Version 2.0: Modifications by Paul Stoffregen, January 2010: -http://www.pjrc.com/teensy/td_libs_OneWire.html - Search fix from Robin James - http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27 - Use direct optimized I/O in all cases - Disable interrupts during timing critical sections - (this solves many random communication errors) - Disable interrupts during read-modify-write I/O - Reduce RAM consumption by eliminating unnecessary - variables and trimming many to 8 bits - Optimize both crc8 - table version moved to flash - -Modified to work with larger numbers of devices - avoids loop. -Tested in Arduino 11 alpha with 12 sensors. -26 Sept 2008 -- Robin James -http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27 - -Updated to work with arduino-0008 and to include skip() as of -2007/07/06. --RJL20 - -Modified to calculate the 8-bit CRC directly, avoiding the need for -the 256-byte lookup table to be loaded in RAM. Tested in arduino-0010 --- Tom Pollard, Jan 23, 2008 - -Jim Studt's original library was modified by Josh Larios. - -Tom Pollard, pollard@alum.mit.edu, contributed around May 20, 2008 -*/ -/* 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. - -Much of the code was inspired by Derek Yerger's code, though I don't -think much of that remains. In any event that was.. - (copyleft) 2006 by Derek Yerger - Free to distribute freely. - -The CRC code was excerpted and inspired by the Dallas Semiconductor -sample code bearing this copyright. */ -/*--------------------------------------------------------------------------- -// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved. -// -// 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 DALLAS SEMICONDUCTOR 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. -// -// Except as contained in this notice, the name of Dallas Semiconductor -// shall not be used except as stated in the Dallas Semiconductor -// Branding Policy. -//-------------------------------------------------------------------------- -*/ -#include -#include "OneWire.h" -#include "util/OneWireConf.h" - -OneWire::OneWire(uint8_t pin, - const onewire::Timing_t *timing /*= &(onewire::timingStd)*/, - uint8_t forceSW /*= 0*/) { - if ((forceSW == 0) && PIN_HAS_ONEWIRE_HW(pin)) { - mImplementation = - new onewire::OneWireHW(&(onewire::mappingHW[PIN_TO_ONEWIRE_HW(pin)]), timing); - } else { - mImplementation = new onewire::OneWireSW(pin, timing); - } - - mImplementation->begin(); -} - -OneWire::~OneWire() { delete mImplementation; } - -// Perform the onewire reset function. We will wait up to 250uS for -// the bus to come high, if it doesn't then it is broken or shorted -// and we return a 0; -// -// Returns 1 if a device asserted a presence pulse, 0 otherwise. -// -uint8_t OneWire::reset(void) { mImplementation->reset(); } - -// -// Write a bit. Port and bit is used to cut lookup time and provide -// more certain timing. -// -void OneWire::write_bit(uint8_t v) { mImplementation->write_bit(v); } - -// -// Read a bit. Port and bit is used to cut lookup time and provide -// more certain timing. -// -uint8_t OneWire::read_bit(void) { return mImplementation->read_bit(); } - -// -// Write a byte. The writing code uses the active drivers to raise the -// pin high, if you need power after the write (e.g. DS18S20 in -// parasite power mode) then set 'power' to 1, otherwise the pin will -// go tri-state at the end of the write to avoid heating in a short or -// other mishap. -// -void OneWire::write(uint8_t v, uint8_t power /* = 0 */) { mImplementation->write(v, power); } - -void OneWire::write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0 */) { - mImplementation->write_bytes(buf, count, power); -} - -// -// Read a byte -// -uint8_t OneWire::read() { return mImplementation->read(); } - -void OneWire::read_bytes(uint8_t *buf, uint16_t count) { mImplementation->read_bytes(buf, count); } - -// -// Do a ROM select -// -void OneWire::select(const uint8_t rom[8]) { mImplementation->select(rom); } - -// -// Do a ROM skip -// -void OneWire::skip() { mImplementation->skip(); } - -void OneWire::depower() { mImplementation->depower(); } - -#if ONEWIRE_SEARCH -// You need to use this function to start a search again from the beginning. -// You do not need to do it for the first search, though you could. -// -void OneWire::reset_search() { mImplementation->reset_search(); } - -// Setup the search to find the device type 'family_code' on the next call -// to search(*newAddr) if it is present. -// -void OneWire::target_search(uint8_t family_code) { mImplementation->target_search(family_code); } - -// Perform a search. If this function returns a '1' then it has -// enumerated the next device and you may retrieve the ROM from the -// OneWire::address variable. If there are no devices, no further -// devices, or something horrible happens in the middle of the -// enumeration then a 0 is returned. If a new device is found then -// its address is copied to newAddr. Use OneWire::reset_search() to -// start over. -// -// --- Replaced by the one from the Dallas Semiconductor web site --- -//-------------------------------------------------------------------------- -// Perform the 1-Wire Search Algorithm on the 1-Wire bus using the existing -// search state. -// Return TRUE : device found, ROM number in ROM_NO buffer -// FALSE : device not found, end of search -// -uint8_t OneWire::search(uint8_t *newAddr, bool search_mode /* = true */) { - mImplementation->search(newAddr, search_mode); -} -#endif - -#if ONEWIRE_CRC -// The 1-Wire CRC scheme is described in Maxim Application Note 27: -// "Understanding and Using Cyclic Redundancy Checks with Maxim iButton Products" -// -uint8_t OneWire::crc8(const uint8_t *addr, uint8_t len) { - return onewire::OneWireImpl::crc8(addr, len); -} - - #if ONEWIRE_CRC16 -bool OneWire::check_crc16(const uint8_t *input, - uint16_t len, - const uint8_t *inverted_crc, - uint16_t crc) { - return onewire::OneWireImpl::check_crc16(input, len, inverted_crc, crc); -} - -uint16_t OneWire::crc16(const uint8_t *input, uint16_t len, uint16_t crc) { - return onewire::OneWireImpl::crc16(input, len, crc); -} - #endif - -#endif diff --git a/libraries/OneWire/src/OneWire.h b/libraries/OneWire/src/OneWire.h deleted file mode 100644 index 0d68fb2e..00000000 --- a/libraries/OneWire/src/OneWire.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef OneWire_h -#define OneWire_h - -#include "SPI.h" -#include "util/OneWireImpl.h" -#include "util/OneWireTiming.h" -#include "util/OneWireSW.h" -#include "util/OneWireHW.h" - -class OneWire { -private: - onewire::OneWireImpl *mImplementation; - -public: - OneWire(uint8_t pin, - const onewire::Timing_t *timing = &(onewire::timingStd), - uint8_t forceSW = 0); - ~OneWire(); - // Perform a 1-Wire reset cycle. Returns 1 if a device responds - // with a presence pulse. Returns 0 if there is no device or the - // bus is shorted or otherwise held low for more than 250uS - uint8_t reset(void); - - // Issue a 1-Wire rom select command, you do the reset first. - void select(const uint8_t rom[8]); - - // Issue a 1-Wire rom skip command, to address all on bus. - void skip(void); - - // Write a byte. If 'power' is one then the wire is held high at - // the end for parasitically powered devices. You are responsible - // for eventually depowering it by calling depower() or doing - // another read or write. - void write(uint8_t v, uint8_t power = 0); - - void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0); - - // Read a byte. - uint8_t read(void); - - void read_bytes(uint8_t *buf, uint16_t count); - - // Write a bit. The bus is always left powered at the end, see - // note in write() about that. - void write_bit(uint8_t v); - - // Read a bit. - uint8_t read_bit(void); - - // Stop forcing power onto the bus. You only need to do this if - // you used the 'power' flag to write() or used a write_bit() call - // and aren't about to do another read or write. You would rather - // not leave this powered if you don't have to, just in case - // someone shorts your bus. - void depower(void); - -#if ONEWIRE_SEARCH - // Clear the search state so that if will start from the beginning again. - void reset_search(); - - // Setup the search to find the device type 'family_code' on the next call - // to search(*newAddr) if it is present. - void target_search(uint8_t family_code); - - // Look for the next device. Returns 1 if a new address has been - // returned. A zero might mean that the bus is shorted, there are - // no devices, or you have already retrieved all of them. It - // might be a good idea to check the CRC to make sure you didn't - // get garbage. The order is deterministic. You will always get - // the same devices in the same order. - uint8_t search(uint8_t *newAddr, bool search_mode = true); -#endif - -#if ONEWIRE_CRC - // Compute a Dallas Semiconductor 8 bit CRC, these are used in the - // ROM and scratchpad registers. - static uint8_t crc8(const uint8_t *addr, uint8_t len); - #if ONEWIRE_CRC16 - // Compute the 1-Wire CRC16 and compare it against the received CRC. - static bool - check_crc16(const uint8_t *input, uint16_t len, const uint8_t *inverted_crc, uint16_t crc = 0); - // Compute a Dallas Semiconductor 16 bit CRC. - static uint16_t crc16(const uint8_t *input, uint16_t len, uint16_t crc = 0); - #endif -#endif -}; -#endif diff --git a/libraries/OneWire/src/util/OneWireConf.h b/libraries/OneWire/src/util/OneWireConf.h deleted file mode 100644 index a9354730..00000000 --- a/libraries/OneWire/src/util/OneWireConf.h +++ /dev/null @@ -1,302 +0,0 @@ -#ifndef ONEWIRE_CONF_H -#define ONEWIRE_CONF_H - -#include - -namespace onewire { - -#if defined(KIT_XMC_2GO_XMC1100_V1) - #define NUM_ONEWIRE_HW 4 - #define PIN_HAS_ONEWIRE_HW(pin) ((pin == 0) || (pin == 1) || (pin == 10) || (pin == 11)) - #define PIN_TO_ONEWIRE_HW(pin) \ - ((pin == 0) ? 0 : ((pin == 1) ? 1 : ((pin == 10) ? 2 : ((pin == 11) ? 3 : -1)))) - -XMC_SPI_t mappingHW[] = { - {// DONE tested with -O0 - .channel = XMC_SPI0_CH1, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)6}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)6}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_C, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)6}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}, - {.channel = XMC_SPI0_CH1, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_D, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)7}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}, - {.channel = XMC_SPI0_CH1, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_F, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)11}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}, - {.channel = XMC_SPI0_CH1, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_E, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)10}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT7, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}}; - -#elif defined(KIT_XMC11_BOOT_001) - #define NUM_ONEWIRE_HW 3 - #define PIN_HAS_ONEWIRE_HW(pin) ((pin == 11) || (pin == 15) || (pin == 16)) - #define PIN_TO_ONEWIRE_HW(pin) ((pin == 11) ? 0 : ((pin == 15) ? 1 : ((pin == 16) ? 2 : -1))) - -XMC_SPI_t mappingHW[] = { - {.channel = XMC_SPI0_CH0, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_D, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}, - {.channel = XMC_SPI0_CH0, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_F, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)1}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}, - {.channel = XMC_SPI0_CH0, - .channel_config = {.baudrate = 15984375U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - .miso_config = {.mode = XMC_GPIO_MODE_INPUT_TRISTATE, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}, - .input_source = XMC_INPUT_E, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)0}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN_ALT6, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .input_hysteresis = XMC_GPIO_INPUT_HYSTERESIS_STANDARD}}}; - -#elif defined(KIT_XMC47_RELAX) - #define NUM_ONEWIRE_HW 6 - #define PIN_HAS_ONEWIRE_HW(pin) \ - ((pin == 1) || (pin == 15) || (pin == 29) || (pin == 37) || (pin == 70) || (pin == 88)) - #define PIN_TO_ONEWIRE_HW(pin) \ - ((pin == 1) \ - ? 0 \ - : ((pin == 15) \ - ? 1 \ - : ((pin == 29) \ - ? 2 \ - : ((pin == 37) ? 3 : ((pin == 70) ? 4 : ((pin == 88) ? 5 : -1)))))) - -XMC_SPI_t - mappingHW[] = - {{ - // DONE tested with -O0 - .channel = XMC_SPI1_CH0, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_B, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT2_BASE, .pin = (uint8_t)14}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - }, - { - .channel = XMC_SPI1_CH1, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_A, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)15}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - }, - { - .channel = XMC_SPI2_CH1, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_A, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)5}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - }, - { - .channel = XMC_SPI1_CH0, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_B, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT0_BASE, .pin = (uint8_t)5}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - }, - { - .channel = XMC_SPI0_CH1, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_D, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT3_BASE, .pin = (uint8_t)13}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - }, - { - .channel = XMC_SPI2_CH0, - .channel_config = {.baudrate = 20003906U, - .bus_mode = (XMC_SPI_CH_BUS_MODE_t)XMC_SPI_CH_BUS_MODE_MASTER, - .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS, - .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE}, - .mosi = {.port = (XMC_GPIO_PORT_t *)PORT5_BASE, .pin = (uint8_t)0}, - .mosi_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - .miso = {.port = (XMC_GPIO_PORT_t *)PORT5_BASE, .pin = (uint8_t)0}, - .miso_config = - { - .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - }, - .input_source = XMC_INPUT_B, - .sclkout = {.port = (XMC_GPIO_PORT_t *)PORT5_BASE, .pin = (uint8_t)0}, - .sclkout_config = {.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT1, - .output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH, - .output_strength = XMC_GPIO_OUTPUT_STRENGTH_MEDIUM}, - }}; -#else - // unknown device used - #define NUM_ONEWIRE_HW 0 - #define PIN_HAS_ONEWIRE_HW(pin) 0 - #define PIN_TO_ONEWIRE_HW(pin) -1 - -XMC_SPI_t mappingHW[1]; -#endif - -} /* namespace onewire */ -#endif \ No newline at end of file diff --git a/libraries/OneWire/src/util/OneWireHW.cpp b/libraries/OneWire/src/util/OneWireHW.cpp deleted file mode 100644 index 70a85f7f..00000000 --- a/libraries/OneWire/src/util/OneWireHW.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include -#include "OneWireHW.h" - -// SPI frequency to transmit 1 byte per microsecond -// this means 1 onewire bit per microsecond -#define ONEWIRE_1BIT_PER_MICROSSEC 8000000 - -namespace onewire { -// these are patterns for low-pulses with different lengths -// the index equals the length of the low-pulse in bits (0 and 8 is forbidden and repalced by 1 and -// 7) -uint8_t pulses[9] = {0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01}; - -OneWireHW::OneWireHW(XMC_SPI_t *spiConf, const Timing_t *timing) - : OneWireImpl() { - if (!isValid(timing)) { - timing = &timingStd; - } - mSpiHW = SPIClass(spiConf); - mSpiConf = SPISettings(ONEWIRE_1BIT_PER_MICROSSEC / timing->bitDuration, MSBFIRST, SPI_MODE3); - mSpiCodes[0] = pulses[(timing->lowtimeLong << 3) / timing->bitDuration]; - mSpiCodes[1] = pulses[(timing->lowtimeShort << 3) / timing->bitDuration]; - mSpiResetTime = timing->resetDuration / timing->bitDuration + 1; -} - -void OneWireHW::begin(void) { - mSpiHW.begin(); - mSpiHW.beginTransaction(mSpiConf); - // reset(); -} - -OneWireHW::~OneWireHW() { end(); } - -void OneWireHW::end(void) { mSpiHW.end(); } - -uint8_t OneWireHW::reset(void) { - noInterrupts(); - for (uint8_t i = 0; i < mSpiResetTime; i++) { - mSpiHW.transfer(0x00); - } - // test if slave sends a low pulse to indicate presence - uint8_t ret = (mSpiHW.transfer(0xFF) != 0xFF); - interrupts(); - // wait for the maximum presence pulse time - for (uint8_t i = 1; i < (mSpiResetTime / 2); i++) { - mSpiHW.transfer(0xFF); - } - // bus should already have come up - // wait some more time to be sure - // if it does not come up return 0 to indicate a short circuit - if ((mSpiHW.transfer(0xFF) & (0x01))) { - // return 1 if slave has indicated presence, 0 otherwise - return ret; - } else { - return 0; - } -} - -void OneWireHW::write(uint8_t v, uint8_t power /*= 0*/) { - for (uint8_t i = 0; i < 8; i++) { - mByteBuffer[i] = mSpiCodes[v & (0x01 << i)]; - } - mSpiHW.transfer(mByteBuffer, 8); - // We don't have to care about powering and depowering on XMC controllers - // We are using open-drain outputs with pull-ups to prevent short circuits. -} - -void OneWireHW::write_bytes(const uint8_t *buf, uint16_t count, bool power /*= 0*/) { - for (uint16_t i = 0; i < count; i++) { - write(buf[i], power); - } - // We don't have to care about powering and depowering on XMC controllers - // We are using open-drain outputs with pull-ups to prevent short circuits. -} - -uint8_t OneWireHW::read(void) { - uint8_t i, ret = 0; - for (i = 0; i < 8; i++) { - mByteBuffer[i] = mSpiCodes[1]; - } - mSpiHW.transfer(mByteBuffer, 8); - for (i = 0; i < 8; i++) { - ret |= (mByteBuffer[i] == mSpiCodes[1]) << i; - } - return ret; -} - -void OneWireHW::read_bytes(uint8_t *buf, uint16_t count) { - for (uint16_t i = 0; i < count; i++) { - buf[i] = read(); - } -} - -void OneWireHW::write_bit(uint8_t v) { mSpiHW.transfer(mSpiCodes[v & 0x01]); } - -uint8_t OneWireHW::read_bit(void) { - // if we get something else than we have sent, slave has held down the line(sent 0) - return (mSpiHW.transfer(mSpiCodes[1]) == mSpiCodes[1]); -} - -void OneWireHW::depower(void) { - // We don't have to care about powering and depowering on XMC controllers - // We are using open-drain outputs with pull-ups to prevent short circuits. -} - -} // namespace onewire diff --git a/libraries/OneWire/src/util/OneWireHW.h b/libraries/OneWire/src/util/OneWireHW.h deleted file mode 100644 index edf6dec8..00000000 --- a/libraries/OneWire/src/util/OneWireHW.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef ONEWIRE_HW_H -#define ONEWIRE_HW_H - -#include "OneWireTiming.h" -#include "OneWireImpl.h" -#include "SPI.h" - -namespace onewire { -class OneWireHW : public OneWireImpl { -private: - SPISettings mSpiConf; - SPIClass mSpiHW; - uint8_t mSpiCodes[2]; - uint8_t mSpiResetTime; - uint8_t mByteBuffer[8]; - -public: - OneWireHW(XMC_SPI_t *spiConf, const Timing_t *timing); - ~OneWireHW(); - // begin and end do not appear in the original version - // they are called automatically in our implementation - virtual void begin(void) override; - virtual void end(void) override; - virtual uint8_t reset(void) override; - virtual void write(uint8_t v, uint8_t power = 0) override; - virtual void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0) override; - virtual uint8_t read(void) override; - virtual void read_bytes(uint8_t *buf, uint16_t count) override; - virtual void write_bit(uint8_t v) override; - virtual uint8_t read_bit(void) override; - virtual void depower(void) override; -}; -} // namespace onewire -#endif \ No newline at end of file diff --git a/libraries/OneWire/src/util/OneWireImpl.cpp b/libraries/OneWire/src/util/OneWireImpl.cpp deleted file mode 100644 index cd200522..00000000 --- a/libraries/OneWire/src/util/OneWireImpl.cpp +++ /dev/null @@ -1,253 +0,0 @@ -#include -#include "OneWireImpl.h" - -namespace onewire { -OneWireImpl::OneWireImpl(void) { -#if ONEWIRE_SEARCH - reset_search(); -#endif -} - -OneWireImpl::~OneWireImpl() {} - -void OneWireImpl::select(const uint8_t rom[8]) { - write(0x55); // Choose ROM - for (uint8_t i = 0; i < 8; i++) { - write(rom[i]); - } -} - -void OneWireImpl::skip(void) { - write(0xCC); // Skip ROM -} - -#if ONEWIRE_SEARCH - -void OneWireImpl::reset_search() { - // reset the search state - LastDiscrepancy = 0; - LastDeviceFlag = FALSE; - LastFamilyDiscrepancy = 0; - for (uint8_t i = 7; i > 0; i--) { - ROM_NO[i] = 0; - } -} - -void OneWireImpl::target_search(uint8_t family_code) { - // set the search state to find SearchFamily type devices - ROM_NO[0] = family_code; - for (uint8_t i = 1; i < 8; i++) { - ROM_NO[i] = 0; - } - LastDiscrepancy = 64; - LastFamilyDiscrepancy = 0; - LastDeviceFlag = FALSE; -} - -uint8_t OneWireImpl::search(uint8_t *newAddr, bool search_mode /*= true*/) { - uint8_t id_bit_number; - uint8_t last_zero, rom_byte_number, search_result; - uint8_t id_bit, cmp_id_bit; - unsigned char rom_byte_mask, search_direction; - // initialize for search - id_bit_number = 1; - last_zero = 0; - rom_byte_number = 0; - rom_byte_mask = 1; - search_result = 0; - // if the last call was not the last one - if (!LastDeviceFlag) { - // 1-Wire reset - if (!reset()) { - // reset the search - LastDiscrepancy = 0; - LastDeviceFlag = FALSE; - LastFamilyDiscrepancy = 0; - return FALSE; - } - - // issue the search command - if (search_mode == true) { - write(0xF0); // NORMAL SEARCH - } else { - write(0xEC); // CONDITIONAL SEARCH - } - - // loop to do the search - do { - // read a bit and its complement - id_bit = read_bit(); - cmp_id_bit = read_bit(); - // check for no devices on 1-wire - if ((id_bit == 1) && (cmp_id_bit == 1)) { - break; - } else { - // all devices coupled have 0 or 1 - if (id_bit != cmp_id_bit) { - search_direction = id_bit; // bit write value for search - } else { - // if this discrepancy if before the Last Discrepancy - // on a previous next then pick the same as last time - if (id_bit_number < LastDiscrepancy) { - search_direction = ((ROM_NO[rom_byte_number] & rom_byte_mask) > 0); - } else { - // if equal to last pick 1, if not then pick 0 - search_direction = (id_bit_number == LastDiscrepancy); - } - // if 0 was picked then record its position in LastZero - if (search_direction == 0) { - last_zero = id_bit_number; - // check for Last discrepancy in family - if (last_zero < 9) { - LastFamilyDiscrepancy = last_zero; - } - } - } - - // set or clear the bit in the ROM byte rom_byte_number - // with mask rom_byte_mask - if (search_direction == 1) { - ROM_NO[rom_byte_number] |= rom_byte_mask; - } else { - ROM_NO[rom_byte_number] &= ~rom_byte_mask; - } - - // serial number search direction write bit - write_bit(search_direction); - - // increment the byte counter id_bit_number - // and shift the mask rom_byte_mask - id_bit_number++; - rom_byte_mask <<= 1; - - // if the mask is 0 then go to new SerialNum byte rom_byte_number and reset mask - if (rom_byte_mask == 0) { - rom_byte_number++; - rom_byte_mask = 1; - } - } - } while (rom_byte_number < 8); // loop until through all ROM bytes 0-7 - - // if the search was successful then - if (!(id_bit_number < 65)) { - // search successful so set LastDiscrepancy,LastDeviceFlag,search_result - LastDiscrepancy = last_zero; - // check for last device - if (LastDiscrepancy == 0) { - LastDeviceFlag = TRUE; - } - search_result = TRUE; - } - } - - // if no device found then reset counters so next 'search' will be like a first - if (!search_result || !ROM_NO[0]) { - LastDiscrepancy = 0; - LastDeviceFlag = FALSE; - LastFamilyDiscrepancy = 0; - search_result = FALSE; - } else { - for (int i = 0; i < 8; i++) { - newAddr[i] = ROM_NO[i]; - } - } - return search_result; -} - -#endif - -#if ONEWIRE_CRC - // The 1-Wire CRC scheme is described in Maxim Application Note 27: - // "Understanding and Using Cyclic Redundancy Checks with Maxim iButton Products" - // - #if ONEWIRE_CRC8_TABLE -// This table comes from Dallas sample code where it is freely reusable, -// though Copyright (C) 2000 Dallas Semiconductor Corporation -static const uint8_t PROGMEM dscrc_table[] = { - 0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, - 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, - 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, - 34, 192, 158, 29, 67, 161, 255, 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, - 229, 187, 89, 7, 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, - 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166, - 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, - 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, - 211, 141, 111, 49, 178, 236, 14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, - 143, 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, - 45, 115, 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, - 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, 233, 183, 85, 11, - 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, 116, 42, 200, 150, 21, 75, 169, - 247, 182, 232, 10, 84, 215, 137, 107, 53}; - -// -// Compute a Dallas Semiconductor 8 bit CRC. These show up in the ROM -// and the registers. (note: this might better be done without to -// table, it would probably be smaller and certainly fast enough -// compared to all those delayMicrosecond() calls. But I got -// confused, so I use this table from the examples.) -// -uint8_t OneWireImpl::crc8(const uint8_t *addr, uint8_t len) { - uint8_t crc = 0; - - while (len--) { - crc = pgm_read_byte(dscrc_table + (crc ^ *addr++)); - } - return crc; -} - #else -// -// Compute a Dallas Semiconductor 8 bit CRC directly. -// this is much slower, but much smaller, than the lookup table. -// -uint8_t OneWireImpl::crc8(const uint8_t *addr, uint8_t len) { - uint8_t crc = 0; - - while (len--) { - uint8_t inbyte = *addr++; - for (uint8_t i = 8; i; i--) { - uint8_t mix = (crc ^ inbyte) & 0x01; - crc >>= 1; - if (mix) - crc ^= 0x8C; - inbyte >>= 1; - } - } - return crc; -} - #endif - - #if ONEWIRE_CRC16 -bool OneWireImpl::check_crc16(const uint8_t *input, - uint16_t len, - const uint8_t *inverted_crc, - uint16_t crc /*= 0*/) { - crc = ~crc16(input, len, crc); - return (crc & 0xFF) == inverted_crc[0] && (crc >> 8) == inverted_crc[1]; -} - -uint16_t OneWireImpl::crc16(const uint8_t *input, uint16_t len, uint16_t crc /*= 0*/) { - static const uint8_t oddparity[16] = {0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0}; - - for (uint16_t i = 0; i < len; i++) { - // Even though we're just copying a byte from the input, - // we'll be doing 16-bit computation with it. - uint16_t cdata = input[i]; - cdata = (cdata ^ crc) & 0xff; - crc >>= 8; - - if (oddparity[cdata & 0x0F] ^ oddparity[cdata >> 4]) { - crc ^= 0xC001; - } - - cdata <<= 6; - crc ^= cdata; - cdata <<= 1; - crc ^= cdata; - } - return crc; -} - - #endif -#endif - -} // namespace onewire diff --git a/libraries/OneWire/src/util/OneWireImpl.h b/libraries/OneWire/src/util/OneWireImpl.h deleted file mode 100644 index 087761a1..00000000 --- a/libraries/OneWire/src/util/OneWireImpl.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef ONEWIRE_IMPL_H -#define ONEWIRE_IMPL_H - -#include "SPI.h" -#include "OneWireSettings.h" - -namespace onewire { -class OneWireImpl { -private: -#if ONEWIRE_SEARCH - // global search state - unsigned char ROM_NO[8]; - uint8_t LastDiscrepancy; - uint8_t LastFamilyDiscrepancy; - uint8_t LastDeviceFlag; -#endif - -public: - OneWireImpl(void); - virtual ~OneWireImpl(); - virtual void begin(void) = 0; - virtual void end(void) = 0; - virtual uint8_t reset(void) = 0; - virtual void write(uint8_t v, uint8_t power = 0) = 0; - virtual void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0) = 0; - virtual uint8_t read(void) = 0; - virtual void read_bytes(uint8_t *buf, uint16_t count) = 0; - virtual void write_bit(uint8_t v) = 0; - virtual uint8_t read_bit(void) = 0; - virtual void depower(void) = 0; - - // Issue a 1-Wire rom select command, you do the reset first. - void select(const uint8_t rom[8]); - // Issue a 1-Wire rom skip command, to address all on bus. - void skip(void); - -#if ONEWIRE_SEARCH - // Clear the search state so that if will start from the beginning again. - void reset_search(); - - // Setup the search to find the device type 'family_code' on the next call - // to search(*newAddr) if it is present. - void target_search(uint8_t family_code); - - // Look for the next device. Returns 1 if a new address has been - // returned. A zero might mean that the bus is shorted, there are - // no devices, or you have already retrieved all of them. It - // might be a good idea to check the CRC to make sure you didn't - // get garbage. The order is deterministic. You will always get - // the same devices in the same order. - uint8_t search(uint8_t *newAddr, bool search_mode = true); -#endif - -#if ONEWIRE_CRC - // Compute a Dallas Semiconductor 8 bit CRC, these are used in the - // ROM and scratchpad registers. - static uint8_t crc8(const uint8_t *addr, uint8_t len); - #if ONEWIRE_CRC16 - // Compute the 1-Wire CRC16 and compare it against the received CRC. - static bool - check_crc16(const uint8_t *input, uint16_t len, const uint8_t *inverted_crc, uint16_t crc = 0); - // Compute a Dallas Semiconductor 16 bit CRC. - static uint16_t crc16(const uint8_t *input, uint16_t len, uint16_t crc = 0); - #endif -#endif -}; -} // namespace onewire -#endif \ No newline at end of file diff --git a/libraries/OneWire/src/util/OneWireSW.cpp b/libraries/OneWire/src/util/OneWireSW.cpp deleted file mode 100644 index 8be992a3..00000000 --- a/libraries/OneWire/src/util/OneWireSW.cpp +++ /dev/null @@ -1,137 +0,0 @@ -#include -#include "OneWireSW.h" - -#define IFX_ONEWIRE_MODE_OD 0xC0C0C0C0 -#define IFX_ONEWIRE_PINOUTPUT *mPortModeReg |= mPinModeMask & IFX_ONEWIRE_MODE_OD -#define IFX_ONEWIRE_PININPUT *mPortModeReg &= ~mPinModeMask -#define IFX_ONEWIRE_PINOUTLOW *mPortOutReg &= ~mPinMask -#define IFX_ONEWIRE_PINOUTHIGH *mPortOutReg |= mPinMask -#define IFX_ONEWIRE_PINREAD ((*mPortInReg & mPinMask) > 0) - -namespace onewire { - -OneWireSW::OneWireSW(uint8_t pin, const Timing_t *timing) - : OneWireImpl() { - if (!isValid(timing)) { - timing = &timingStd; - } - mLowtimeShort = timing->lowtimeShort; - mHightimeShort = timing->bitDuration - timing->lowtimeShort; - mLowtimeLong = timing->lowtimeLong; - mHightimeLong = timing->bitDuration - timing->lowtimeLong; - mWaitBeforeCheck = timing->checkAfter - timing->lowtimeShort; - mWaitAfterCheck = timing->bitDuration - timing->checkAfter; - mResetDuration = timing->resetDuration; - - mActive = FALSE; - mPortOutReg = &(mapping_port_pin[pin].port->OUT); - mPortInReg = &(mapping_port_pin[pin].port->IN); - mPortModeReg = &(mapping_port_pin[pin].port->IOCR[mapping_port_pin[pin].pin >> 2]); - mPinMask = 1 << mapping_port_pin[pin].pin; - mPinModeMask = 0xF8 << ((mapping_port_pin[pin].pin & 0x03) << 3); -} - -OneWireSW::~OneWireSW() { end(); } - -void OneWireSW::begin(void) { - IFX_ONEWIRE_PININPUT; - IFX_ONEWIRE_PINOUTHIGH; - IFX_ONEWIRE_PINOUTPUT; - mActive = TRUE; - // reset(); -} - -void OneWireSW::end(void) { - IFX_ONEWIRE_PININPUT; - mActive = FALSE; -} - -uint8_t OneWireSW::reset(void) { - noInterrupts(); - IFX_ONEWIRE_PINOUTLOW; - delayMicroseconds(mResetDuration); - IFX_ONEWIRE_PINOUTHIGH; - delayMicroseconds(mHightimeShort + mWaitBeforeCheck); - // test if slave holds the line down to indicate presence - uint8_t ret = !IFX_ONEWIRE_PINREAD; - // wait for the end of the presence pulse - delayMicroseconds(mResetDuration / 2); - interrupts(); - // bus should already have come up - // if it does not come up return 0 to indicate a short circuit - if (IFX_ONEWIRE_PINREAD) { - // return 1 if slave has indicated presence, 0 otherwise - return ret; - } else { - return 0; - } -} - -void OneWireSW::write(uint8_t v, uint8_t power /* = 0 */) { - for (uint8_t i = 0x01; i > 0; i <<= 1) { - write_bit((v & i) ? 1 : 0); - } - // We don't have to care about powering and depowering on XMC controllers - // We are using open-drain outputs with pull-ups to prevent short circuits. -} - -void OneWireSW::write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0 */) { - for (uint8_t i = 0; i < count; i++) { - write(buf[i]); - } - // We don't have to care about powering and depowering on XMC controllers - // We are using open-drain outputs with pull-ups to prevent short circuits. -} - -uint8_t OneWireSW::read(void) { - uint8_t ret = 0; - for (uint8_t i = 0x01; i > 0; i <<= 1) { - if (read_bit()) { - ret |= i; - } - } - return ret; -} - -void OneWireSW::read_bytes(uint8_t *buf, uint16_t count) { - for (uint8_t i = 0; i < count; i++) { - buf[i] = read(); - } -} - -void OneWireSW::write_bit(uint8_t v) { - noInterrupts(); - if (v & 0x01) { - IFX_ONEWIRE_PINOUTLOW; - delayMicroseconds(mLowtimeShort); - IFX_ONEWIRE_PINOUTHIGH; - delayMicroseconds(mHightimeShort); - } else { - IFX_ONEWIRE_PINOUTLOW; - delayMicroseconds(mLowtimeLong); - IFX_ONEWIRE_PINOUTHIGH; - delayMicroseconds(mHightimeLong); - } - interrupts(); -} - -uint8_t OneWireSW::read_bit(void) { - uint8_t ret; - noInterrupts(); - IFX_ONEWIRE_PINOUTLOW; - delayMicroseconds(mLowtimeShort); - IFX_ONEWIRE_PINOUTHIGH; - delayMicroseconds(mWaitBeforeCheck); - // test if slave holds the line down to send a 0 - ret = IFX_ONEWIRE_PINREAD; - delayMicroseconds(mWaitAfterCheck); - interrupts(); - return ret; -} - -void OneWireSW::depower(void) { - // We don't have to care about powering and depowering on XMC controllers - // We are using open-drain outputs with pull-ups to prevent short circuits. -} - -} // namespace onewire diff --git a/libraries/OneWire/src/util/OneWireSW.h b/libraries/OneWire/src/util/OneWireSW.h deleted file mode 100644 index d0fb6f28..00000000 --- a/libraries/OneWire/src/util/OneWireSW.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef ONEWIRE_SW_H -#define ONEWIRE_SW_H - -#include "OneWireTiming.h" -#include "OneWireImpl.h" - -namespace onewire { -class OneWireSW : public OneWireImpl { -private: - // implementation-specific pin description - uint8_t mActive; - uint32_t mPinMask; - volatile uint32_t *mPortInReg; - volatile uint32_t *mPortOutReg; - volatile uint32_t *mPortModeReg; - uint32_t mPinModeMask; - - // implementation-specific timing description - uint16_t mLowtimeShort; - uint16_t mHightimeShort; - uint16_t mLowtimeLong; - uint16_t mHightimeLong; - uint16_t mWaitBeforeCheck; - uint16_t mWaitAfterCheck; - uint16_t mResetDuration; - -public: - OneWireSW(uint8_t pin, const Timing_t *timing); - ~OneWireSW(); - // begin and end do not appear in the original version - // they are called automatically in our implementation - virtual void begin(void) override; - virtual void end(void) override; - virtual uint8_t reset(void) override; - virtual void write(uint8_t v, uint8_t power = 0) override; - virtual void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0) override; - virtual uint8_t read(void) override; - virtual void read_bytes(uint8_t *buf, uint16_t count) override; - virtual void write_bit(uint8_t v) override; - virtual uint8_t read_bit(void) override; - virtual void depower(void) override; -}; -} // namespace onewire -#endif \ No newline at end of file diff --git a/libraries/OneWire/src/util/OneWireSettings.h b/libraries/OneWire/src/util/OneWireSettings.h deleted file mode 100644 index eacb4da3..00000000 --- a/libraries/OneWire/src/util/OneWireSettings.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef ONEWIRE_SETTINGS_H -#define ONEWIRE_SETTINGS_H - -// You can exclude certain features from OneWire. In theory, this -// might save some space. In practice, the compiler automatically -// removes unused code (technically, the linker, using -fdata-sections -// and -ffunction-sections when compiling, and Wl,--gc-sections -// when linking), so most of these will not result in any code size -// reduction. Well, unless you try to use the missing features -// and redesign your program to not need them! ONEWIRE_CRC8_TABLE -// is the exception, because it selects a fast but large algorithm -// or a small but slow algorithm. - -// you can exclude onewire_search by defining that to 0 -#ifndef ONEWIRE_SEARCH - #define ONEWIRE_SEARCH 1 -#endif - -// You can exclude CRC checks altogether by defining this to 0 -#ifndef ONEWIRE_CRC - #define ONEWIRE_CRC 1 -#endif - -// Select the table-lookup method of computing the 8-bit CRC -// by setting this to 1. The lookup table enlarges code size by -// about 250 bytes. It does NOT consume RAM (but did in very -// old versions of OneWire). If you disable this, a slower -// but very compact algorithm is used. -#ifndef ONEWIRE_CRC8_TABLE - #define ONEWIRE_CRC8_TABLE 1 -#endif - -// You can allow 16-bit CRC checks by defining this to 1 -// (Note that ONEWIRE_CRC must also be 1.) -#ifndef ONEWIRE_CRC16 - #define ONEWIRE_CRC16 1 -#endif - -#ifndef FALSE - #define FALSE 0 -#endif -#ifndef TRUE - #define TRUE 1 -#endif - -#endif /*ONEWIRE_SETTINGS_H*/ \ No newline at end of file diff --git a/libraries/OneWire/src/util/OneWireTiming.cpp b/libraries/OneWire/src/util/OneWireTiming.cpp deleted file mode 100644 index c6777869..00000000 --- a/libraries/OneWire/src/util/OneWireTiming.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include "OneWireTiming.h" - -namespace onewire { - -uint8_t isValid(const Timing_t *timing) { - if (timing->lowtimeShort < timing->checkAfter && timing->checkAfter < timing->lowtimeLong && - timing->lowtimeLong < timing->bitDuration && timing->bitDuration < timing->resetDuration) { - return TRUE; - } else { - return FALSE; - } -} - -Timing_t timingStd = {10, 65, 20, 70, 480}; -Timing_t timingOverdrive = {1, 8, 5, 15, 52}; - -} // namespace onewire \ No newline at end of file diff --git a/libraries/OneWire/src/util/OneWireTiming.h b/libraries/OneWire/src/util/OneWireTiming.h deleted file mode 100644 index 2e889ef2..00000000 --- a/libraries/OneWire/src/util/OneWireTiming.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef ONEWIRE_TIMING_H -#define ONEWIRE_TIMING_H - -namespace onewire { -typedef struct { - uint16_t lowtimeShort; - uint16_t lowtimeLong; - uint16_t checkAfter; - uint16_t bitDuration; - uint16_t resetDuration; -} Timing_t; - -uint8_t isValid(const Timing_t *timing); - -extern Timing_t timingStd; -extern Timing_t timingOverdrive; -} // namespace onewire -#endif \ No newline at end of file diff --git a/libraries/OneWire/util/OneWire_direct_gpio.h b/libraries/OneWire/util/OneWire_direct_gpio.h new file mode 100644 index 00000000..9c79cf30 --- /dev/null +++ b/libraries/OneWire/util/OneWire_direct_gpio.h @@ -0,0 +1,499 @@ +#ifndef OneWire_Direct_GPIO_h +#define OneWire_Direct_GPIO_h + +// This header should ONLY be included by OneWire.cpp. These defines are +// meant to be private, used within OneWire.cpp, but not exposed to Arduino +// sketches or other libraries which may include OneWire.h. + +#include + +// Platform specific I/O definitions + +#if defined(__AVR__) + #define PIN_TO_BASEREG(pin) (portInputRegister(digitalPinToPort(pin))) + #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) + #define IO_REG_TYPE uint8_t + #define IO_REG_BASE_ATTR asm("r30") + #define IO_REG_MASK_ATTR + #if defined(__AVR_ATmega4809__) + #define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0) + #define DIRECT_MODE_INPUT(base, mask) ((*((base) - 8)) &= ~(mask)) + #define DIRECT_MODE_OUTPUT(base, mask) ((*((base) - 8)) |= (mask)) + #define DIRECT_WRITE_LOW(base, mask) ((*((base) - 4)) &= ~(mask)) + #define DIRECT_WRITE_HIGH(base, mask) ((*((base) - 4)) |= (mask)) + #else + #define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0) + #define DIRECT_MODE_INPUT(base, mask) ((*((base) + 1)) &= ~(mask)) + #define DIRECT_MODE_OUTPUT(base, mask) ((*((base) + 1)) |= (mask)) + #define DIRECT_WRITE_LOW(base, mask) ((*((base) + 2)) &= ~(mask)) + #define DIRECT_WRITE_HIGH(base, mask) ((*((base) + 2)) |= (mask)) + #endif + +#elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK66FX1M0__) || \ + defined(__MK64FX512__) + #define PIN_TO_BASEREG(pin) (portOutputRegister(pin)) + #define PIN_TO_BITMASK(pin) (1) + #define IO_REG_TYPE uint8_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR __attribute__((unused)) + #define DIRECT_READ(base, mask) (*((base) + 512)) + #define DIRECT_MODE_INPUT(base, mask) (*((base) + 640) = 0) + #define DIRECT_MODE_OUTPUT(base, mask) (*((base) + 640) = 1) + #define DIRECT_WRITE_LOW(base, mask) (*((base) + 256) = 1) + #define DIRECT_WRITE_HIGH(base, mask) (*((base) + 128) = 1) + +#elif defined(__MKL26Z64__) + #define PIN_TO_BASEREG(pin) (portOutputRegister(pin)) + #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) + #define IO_REG_TYPE uint8_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, mask) ((*((base) + 16) & (mask)) ? 1 : 0) + #define DIRECT_MODE_INPUT(base, mask) (*((base) + 20) &= ~(mask)) + #define DIRECT_MODE_OUTPUT(base, mask) (*((base) + 20) |= (mask)) + #define DIRECT_WRITE_LOW(base, mask) (*((base) + 8) = (mask)) + #define DIRECT_WRITE_HIGH(base, mask) (*((base) + 4) = (mask)) + +#elif defined(__IMXRT1052__) || defined(__IMXRT1062__) + #define PIN_TO_BASEREG(pin) (portOutputRegister(pin)) + #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, mask) ((*((base) + 2) & (mask)) ? 1 : 0) + #define DIRECT_MODE_INPUT(base, mask) (*((base) + 1) &= ~(mask)) + #define DIRECT_MODE_OUTPUT(base, mask) (*((base) + 1) |= (mask)) + #define DIRECT_WRITE_LOW(base, mask) (*((base) + 34) = (mask)) + #define DIRECT_WRITE_HIGH(base, mask) (*((base) + 33) = (mask)) + +#elif defined(__SAM3X8E__) || defined(__SAM3A8C__) || defined(__SAM3A4C__) + // Arduino 1.5.1 may have a bug in delayMicroseconds() on Arduino Due. + // http://arduino.cc/forum/index.php/topic,141030.msg1076268.html#msg1076268 + // If you have trouble with OneWire on Arduino Due, please check the + // status of delayMicroseconds() before reporting a bug in OneWire! + #define PIN_TO_BASEREG(pin) (&(digitalPinToPort(pin)->PIO_PER)) + #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, mask) (((*((base) + 15)) & (mask)) ? 1 : 0) + #define DIRECT_MODE_INPUT(base, mask) ((*((base) + 5)) = (mask)) + #define DIRECT_MODE_OUTPUT(base, mask) ((*((base) + 4)) = (mask)) + #define DIRECT_WRITE_LOW(base, mask) ((*((base) + 13)) = (mask)) + #define DIRECT_WRITE_HIGH(base, mask) ((*((base) + 12)) = (mask)) + #ifndef PROGMEM + #define PROGMEM + #endif + #ifndef pgm_read_byte + #define pgm_read_byte(addr) (*(const uint8_t *)(addr)) + #endif + +#elif defined(__PIC32MX__) + #define PIN_TO_BASEREG(pin) (portModeRegister(digitalPinToPort(pin))) + #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, mask) (((*(base + 4)) & (mask)) ? 1 : 0) // PORTX + 0x10 + #define DIRECT_MODE_INPUT(base, mask) ((*(base + 2)) = (mask)) // TRISXSET + 0x08 + #define DIRECT_MODE_OUTPUT(base, mask) ((*(base + 1)) = (mask)) // TRISXCLR + 0x04 + #define DIRECT_WRITE_LOW(base, mask) ((*(base + 8 + 1)) = (mask)) // LATXCLR + 0x24 + #define DIRECT_WRITE_HIGH(base, mask) ((*(base + 8 + 2)) = (mask)) // LATXSET + 0x28 + +#elif defined(ARDUINO_ARCH_ESP8266) + // Special note: I depend on the ESP community to maintain these definitions and + // submit good pull requests. I can not answer any ESP questions or help you + // resolve any problems related to ESP chips. Please do not contact me and please + // DO NOT CREATE GITHUB ISSUES for ESP support. All ESP questions must be asked + // on ESP community forums. + #define PIN_TO_BASEREG(pin) ((volatile uint32_t *)GPO) + #define PIN_TO_BITMASK(pin) (1UL << (pin)) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + +static inline __attribute__((always_inline)) void directModeInput(IO_REG_TYPE mask) { + if (mask > 0x8000) { + GP16FFS(GPFFS_GPIO(16)); + GPC16 = 0; + GP16E &= ~1; + } else { + GPE &= ~(mask); + } +} + +static inline __attribute__((always_inline)) void directModeOutput(IO_REG_TYPE mask) { + if (mask > 0x8000) { + GP16FFS(GPFFS_GPIO(16)); + GPC16 = 0; + GP16E |= 1; + } else { + GPE |= (mask); + } +} + +static inline __attribute__((always_inline)) bool directRead(IO_REG_TYPE mask) { + if (mask > 0x8000) + return GP16I & 0x01; + else + return ((GPI & (mask)) ? true : false); +} + + #define DIRECT_READ(base, mask) directRead(mask) + #define DIRECT_MODE_INPUT(base, mask) directModeInput(mask) + #define DIRECT_MODE_OUTPUT(base, mask) directModeOutput(mask) + #define DIRECT_WRITE_LOW(base, mask) (mask > 0x8000) ? GP16O &= ~1 : (GPOC = (mask)) + #define DIRECT_WRITE_HIGH(base, mask) (mask > 0x8000) ? GP16O |= 1 : (GPOS = (mask)) + +#elif defined(ARDUINO_ARCH_ESP32) + #include + #include + #define PIN_TO_BASEREG(pin) (0) + #define PIN_TO_BITMASK(pin) (pin) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + +static inline __attribute__((always_inline)) IO_REG_TYPE directRead(IO_REG_TYPE pin) { + #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 + return (GPIO.in.val >> pin) & 0x1; + #else // plain ESP32 + if (pin < 32) + return (GPIO.in >> pin) & 0x1; + else if (pin < 46) + return (GPIO.in1.val >> (pin - 32)) & 0x1; + #endif + + return 0; +} + +static inline __attribute__((always_inline)) void directWriteLow(IO_REG_TYPE pin) { + #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 + GPIO.out_w1tc.val = ((uint32_t)1 << pin); + #else // plain ESP32 + if (pin < 32) + GPIO.out_w1tc = ((uint32_t)1 << pin); + else if (pin < 46) + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + #endif +} + +static inline __attribute__((always_inline)) void directWriteHigh(IO_REG_TYPE pin) { + #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 + GPIO.out_w1ts.val = ((uint32_t)1 << pin); + #else // plain ESP32 + if (pin < 32) + GPIO.out_w1ts = ((uint32_t)1 << pin); + else if (pin < 46) + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + #endif +} + +static inline __attribute__((always_inline)) void directModeInput(IO_REG_TYPE pin) { + #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 + GPIO.enable_w1tc.val = ((uint32_t)1 << (pin)); + #else + if (digitalPinIsValid(pin)) { + #if ESP_IDF_VERSION_MAJOR < 4 // IDF 3.x ESP32/PICO-D4 + uint32_t rtc_reg(rtc_gpio_desc[pin].reg); + + if (rtc_reg) // RTC pins PULL settings + { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + ESP_REG(rtc_reg) = + ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + #endif + // Input + if (pin < 32) + GPIO.enable_w1tc = ((uint32_t)1 << pin); + else + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + #endif +} + +static inline __attribute__((always_inline)) void directModeOutput(IO_REG_TYPE pin) { + #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 + GPIO.enable_w1ts.val = ((uint32_t)1 << (pin)); + #else + if (digitalPinIsValid(pin) /* && pin <= 33 */) // Use Any In/Out pins + { + #if ESP_IDF_VERSION_MAJOR < 4 // IDF 3.x ESP32/PICO-D4 + uint32_t rtc_reg(rtc_gpio_desc[pin].reg); + + if (rtc_reg) // RTC pins PULL settings + { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + ESP_REG(rtc_reg) = + ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + #endif + // Output + if (pin < 32) + GPIO.enable_w1ts = ((uint32_t)1 << pin); + else // already validated to pins <= 33 + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + #endif +} + + #define DIRECT_READ(base, pin) directRead(pin) + #define DIRECT_WRITE_LOW(base, pin) directWriteLow(pin) + #define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(pin) + #define DIRECT_MODE_INPUT(base, pin) directModeInput(pin) + #define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(pin) + // https://github.com/PaulStoffregen/OneWire/pull/47 + // https://github.com/stickbreaker/OneWire/commit/6eb7fc1c11a15b6ac8c60e5671cf36eb6829f82c + #ifdef interrupts + #undef interrupts + #endif + #ifdef noInterrupts + #undef noInterrupts + #endif + #define noInterrupts() \ + { \ + portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED; \ + portENTER_CRITICAL(&mux) + #define interrupts() \ + portEXIT_CRITICAL(&mux); \ + } + // #warning "ESP32 OneWire testing" + +#elif defined(ARDUINO_ARCH_STM32) + #define PIN_TO_BASEREG(pin) (0) + #define PIN_TO_BITMASK(pin) ((uint32_t)digitalPinToPinName(pin)) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, pin) digitalReadFast((PinName)pin) + #define DIRECT_WRITE_LOW(base, pin) digitalWriteFast((PinName)pin, LOW) + #define DIRECT_WRITE_HIGH(base, pin) digitalWriteFast((PinName)pin, HIGH) + #define DIRECT_MODE_INPUT(base, pin) \ + pin_function((PinName)pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)) + #define DIRECT_MODE_OUTPUT(base, pin) \ + pin_function((PinName)pin, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0)) + +#elif defined(__SAMD21G18A__) + #define PIN_TO_BASEREG(pin) portModeRegister(digitalPinToPort(pin)) + #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, mask) (((*((base) + 8)) & (mask)) ? 1 : 0) + #define DIRECT_MODE_INPUT(base, mask) ((*((base) + 1)) = (mask)) + #define DIRECT_MODE_OUTPUT(base, mask) ((*((base) + 2)) = (mask)) + #define DIRECT_WRITE_LOW(base, mask) ((*((base) + 5)) = (mask)) + #define DIRECT_WRITE_HIGH(base, mask) ((*((base) + 6)) = (mask)) + +#elif defined(__ASR6501__) + #define PIN_IN_PORT(pin) (pin % PIN_NUMBER_IN_PORT) + #define PORT_FROM_PIN(pin) (pin / PIN_NUMBER_IN_PORT) + #define PORT_OFFSET(port) (PORT_REG_SHFIT * port) + #define PORT_ADDRESS(pin) (CYDEV_GPIO_BASE + PORT_OFFSET(PORT_FROM_PIN(pin))) + + #define PIN_TO_BASEREG(pin) (0) + #define PIN_TO_BITMASK(pin) (pin) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, pin) CY_SYS_PINS_READ_PIN(PORT_ADDRESS(pin) + 4, PIN_IN_PORT(pin)) + #define DIRECT_WRITE_LOW(base, pin) CY_SYS_PINS_CLEAR_PIN(PORT_ADDRESS(pin), PIN_IN_PORT(pin)) + #define DIRECT_WRITE_HIGH(base, pin) CY_SYS_PINS_SET_PIN(PORT_ADDRESS(pin), PIN_IN_PORT(pin)) + #define DIRECT_MODE_INPUT(base, pin) \ + CY_SYS_PINS_SET_DRIVE_MODE(PORT_ADDRESS(pin) + 8, PIN_IN_PORT(pin), CY_SYS_PINS_DM_DIG_HIZ) + #define DIRECT_MODE_OUTPUT(base, pin) \ + CY_SYS_PINS_SET_DRIVE_MODE(PORT_ADDRESS(pin) + 8, PIN_IN_PORT(pin), CY_SYS_PINS_DM_STRONG) + +#elif defined(RBL_NRF51822) + #define PIN_TO_BASEREG(pin) (0) + #define PIN_TO_BITMASK(pin) (pin) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, pin) nrf_gpio_pin_read(pin) + #define DIRECT_WRITE_LOW(base, pin) nrf_gpio_pin_clear(pin) + #define DIRECT_WRITE_HIGH(base, pin) nrf_gpio_pin_set(pin) + #define DIRECT_MODE_INPUT(base, pin) nrf_gpio_cfg_input(pin, NRF_GPIO_PIN_NOPULL) + #define DIRECT_MODE_OUTPUT(base, pin) nrf_gpio_cfg_output(pin) + +#elif defined(__arc__) /* Arduino101/Genuino101 specifics */ + + #include "scss_registers.h" + #include "portable.h" + #include "avr/pgmspace.h" + + #define GPIO_ID(pin) (g_APinDescription[pin].ulGPIOId) + #define GPIO_TYPE(pin) (g_APinDescription[pin].ulGPIOType) + #define GPIO_BASE(pin) (g_APinDescription[pin].ulGPIOBase) + #define DIR_OFFSET_SS 0x01 + #define DIR_OFFSET_SOC 0x04 + #define EXT_PORT_OFFSET_SS 0x0A + #define EXT_PORT_OFFSET_SOC 0x50 + + /* GPIO registers base address */ + #define PIN_TO_BASEREG(pin) ((volatile uint32_t *)g_APinDescription[pin].ulGPIOBase) + #define PIN_TO_BITMASK(pin) pin + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + +static inline __attribute__((always_inline)) IO_REG_TYPE directRead(volatile IO_REG_TYPE *base, + IO_REG_TYPE pin) { + IO_REG_TYPE ret; + if (SS_GPIO == GPIO_TYPE(pin)) { + ret = READ_ARC_REG(((IO_REG_TYPE)base + EXT_PORT_OFFSET_SS)); + } else { + ret = MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, EXT_PORT_OFFSET_SOC); + } + return ((ret >> GPIO_ID(pin)) & 0x01); +} + +static inline __attribute__((always_inline)) void directModeInput(volatile IO_REG_TYPE *base, + IO_REG_TYPE pin) { + if (SS_GPIO == GPIO_TYPE(pin)) { + WRITE_ARC_REG(READ_ARC_REG((((IO_REG_TYPE)base) + DIR_OFFSET_SS)) & ~(0x01 << GPIO_ID(pin)), + ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); + } else { + MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, DIR_OFFSET_SOC) &= ~(0x01 << GPIO_ID(pin)); + } +} + +static inline __attribute__((always_inline)) void directModeOutput(volatile IO_REG_TYPE *base, + IO_REG_TYPE pin) { + if (SS_GPIO == GPIO_TYPE(pin)) { + WRITE_ARC_REG(READ_ARC_REG(((IO_REG_TYPE)(base) + DIR_OFFSET_SS)) | (0x01 << GPIO_ID(pin)), + ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); + } else { + MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, DIR_OFFSET_SOC) |= (0x01 << GPIO_ID(pin)); + } +} + +static inline __attribute__((always_inline)) void directWriteLow(volatile IO_REG_TYPE *base, + IO_REG_TYPE pin) { + if (SS_GPIO == GPIO_TYPE(pin)) { + WRITE_ARC_REG(READ_ARC_REG(base) & ~(0x01 << GPIO_ID(pin)), base); + } else { + MMIO_REG_VAL(base) &= ~(0x01 << GPIO_ID(pin)); + } +} + +static inline __attribute__((always_inline)) void directWriteHigh(volatile IO_REG_TYPE *base, + IO_REG_TYPE pin) { + if (SS_GPIO == GPIO_TYPE(pin)) { + WRITE_ARC_REG(READ_ARC_REG(base) | (0x01 << GPIO_ID(pin)), base); + } else { + MMIO_REG_VAL(base) |= (0x01 << GPIO_ID(pin)); + } +} + + #define DIRECT_READ(base, pin) directRead(base, pin) + #define DIRECT_MODE_INPUT(base, pin) directModeInput(base, pin) + #define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(base, pin) + #define DIRECT_WRITE_LOW(base, pin) directWriteLow(base, pin) + #define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(base, pin) + +#elif defined(__riscv) + + /* + * Tested on highfive1 + * + * Stable results are achieved operating in the + * two high speed modes of the highfive1. It + * seems to be less reliable in slow mode. + */ + #define PIN_TO_BASEREG(pin) (0) + #define PIN_TO_BITMASK(pin) digitalPinToBitMask(pin) + #define IO_REG_TYPE uint32_t + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + +static inline __attribute__((always_inline)) IO_REG_TYPE directRead(IO_REG_TYPE mask) { + return ((GPIO_REG(GPIO_INPUT_VAL) & mask) != 0) ? 1 : 0; +} + +static inline __attribute__((always_inline)) void directModeInput(IO_REG_TYPE mask) { + GPIO_REG(GPIO_OUTPUT_XOR) &= ~mask; + GPIO_REG(GPIO_IOF_EN) &= ~mask; + + GPIO_REG(GPIO_INPUT_EN) |= mask; + GPIO_REG(GPIO_OUTPUT_EN) &= ~mask; +} + +static inline __attribute__((always_inline)) void directModeOutput(IO_REG_TYPE mask) { + GPIO_REG(GPIO_OUTPUT_XOR) &= ~mask; + GPIO_REG(GPIO_IOF_EN) &= ~mask; + + GPIO_REG(GPIO_INPUT_EN) &= ~mask; + GPIO_REG(GPIO_OUTPUT_EN) |= mask; +} + +static inline __attribute__((always_inline)) void directWriteLow(IO_REG_TYPE mask) { + GPIO_REG(GPIO_OUTPUT_VAL) &= ~mask; +} + +static inline __attribute__((always_inline)) void directWriteHigh(IO_REG_TYPE mask) { + GPIO_REG(GPIO_OUTPUT_VAL) |= mask; +} + + #define DIRECT_READ(base, mask) directRead(mask) + #define DIRECT_WRITE_LOW(base, mask) directWriteLow(mask) + #define DIRECT_WRITE_HIGH(base, mask) directWriteHigh(mask) + #define DIRECT_MODE_INPUT(base, mask) directModeInput(mask) + #define DIRECT_MODE_OUTPUT(base, mask) directModeOutput(mask) + +#elif defined(__MBED__) + + #include "platform/mbed_critical.h" + #include "DigitalInOut.h" + #include + #define PIN_TO_BASEREG(pin) (0) + #define PIN_TO_BITMASK(pin) (new mbed::DigitalInOut(digitalPinToPinName(pin))) + #define IO_REG_TYPE mbed::DigitalInOut * + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, pin) (*pin) + #define DIRECT_WRITE_LOW(base, pin) (*pin = 0) + #define DIRECT_WRITE_HIGH(base, pin) (*pin = 1) + #define DIRECT_MODE_INPUT(base, pin) (pin->input()) + #define DIRECT_MODE_OUTPUT(base, pin) (pin->output()) + #undef interrupts + #undef noInterrupts + #define noInterrupts() \ + osThreadSetPriority(osThreadGetId(), \ + osPriorityRealtime) // core_util_critical_section_enter() + #define interrupts() \ + osThreadSetPriority(osThreadGetId(), osPriorityNormal) // core_util_critical_section_exit() + +#elif defined(ARDUINO_ARCH_MBED_RP2040) || defined(ARDUINO_ARCH_RP2040) + #define delayMicroseconds(time) busy_wait_us(time) + #define PIN_TO_BASEREG(pin) (0) + #define PIN_TO_BITMASK(pin) (pin) + #define IO_REG_TYPE unsigned int + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, pin) digitalRead(pin) + #define DIRECT_WRITE_LOW(base, pin) digitalWrite(pin, LOW) + #define DIRECT_WRITE_HIGH(base, pin) digitalWrite(pin, HIGH) + #define DIRECT_MODE_INPUT(base, pin) pinMode(pin, INPUT) + #define DIRECT_MODE_OUTPUT(base, pin) pinMode(pin, OUTPUT) + #warning \ + "OneWire. RP2040 in Fallback mode. Using API calls for pinMode,digitalRead and digitalWrite." + +#else + #define PIN_TO_BASEREG(pin) (0) + #define PIN_TO_BITMASK(pin) (pin) + #define IO_REG_TYPE unsigned int + #define IO_REG_BASE_ATTR + #define IO_REG_MASK_ATTR + #define DIRECT_READ(base, pin) digitalRead(pin) + #define DIRECT_WRITE_LOW(base, pin) digitalWrite(pin, LOW) + #define DIRECT_WRITE_HIGH(base, pin) digitalWrite(pin, HIGH) + #define DIRECT_MODE_INPUT(base, pin) pinMode(pin, INPUT) + #define DIRECT_MODE_OUTPUT(base, pin) pinMode(pin, OUTPUT) + #warning \ + "OneWire. Fallback mode. Using API calls for pinMode,digitalRead and digitalWrite. Operation of this library is not guaranteed on this architecture." + +#endif + +#endif diff --git a/libraries/OneWire/util/OneWire_direct_regtype.h b/libraries/OneWire/util/OneWire_direct_regtype.h new file mode 100644 index 00000000..12200c13 --- /dev/null +++ b/libraries/OneWire/util/OneWire_direct_regtype.h @@ -0,0 +1,60 @@ +#ifndef OneWire_Direct_RegType_h +#define OneWire_Direct_RegType_h + +#include + +// Platform specific I/O register type + +#if defined(__AVR__) + #define IO_REG_TYPE uint8_t + +#elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK66FX1M0__) || \ + defined(__MK64FX512__) + #define IO_REG_TYPE uint8_t + +#elif defined(__IMXRT1052__) || defined(__IMXRT1062__) + #define IO_REG_TYPE uint32_t + +#elif defined(__MKL26Z64__) + #define IO_REG_TYPE uint8_t + +#elif defined(__SAM3X8E__) || defined(__SAM3A8C__) || defined(__SAM3A4C__) + #define IO_REG_TYPE uint32_t + +#elif defined(__PIC32MX__) + #define IO_REG_TYPE uint32_t + +#elif defined(ARDUINO_ARCH_ESP8266) + #define IO_REG_TYPE uint32_t + +#elif defined(ARDUINO_ARCH_ESP32) + #define IO_REG_TYPE uint32_t + #define IO_REG_MASK_ATTR + +#elif defined(ARDUINO_ARCH_STM32) + #define IO_REG_TYPE uint32_t + +#elif defined(__SAMD21G18A__) + #define IO_REG_TYPE uint32_t + +#elif defined(__ASR6501__) + #define IO_REG_TYPE uint32_t + +#elif defined(RBL_NRF51822) + #define IO_REG_TYPE uint32_t + +#elif defined(__arc__) /* Arduino101/Genuino101 specifics */ + #define IO_REG_TYPE uint32_t + +#elif defined(__MBED__) + #include "DigitalInOut.h" + #define IO_REG_TYPE mbed::DigitalInOut * + +#elif defined(__riscv) + #define IO_REG_TYPE uint32_t + +#else + #define IO_REG_TYPE unsigned int + +#endif +#endif From 54eadcce21dd0f2c5962dd8b50c1464a935bfc33 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 22 Sep 2025 17:08:02 +0530 Subject: [PATCH 274/366] extras: Update maker-devops file. Signed-off-by: MDin --- extras/makers-devops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/makers-devops b/extras/makers-devops index e1bf7a3d..663d0491 160000 --- a/extras/makers-devops +++ b/extras/makers-devops @@ -1 +1 @@ -Subproject commit e1bf7a3d928d88948bc18be8e5d961d650ad6943 +Subproject commit 663d04911cd3d2b1191be6fc7a08f83c38ed49f7 From 1dff4aeca2111f0fbf0cbf31366dd3f51d16f058 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 22 Sep 2025 17:12:47 +0530 Subject: [PATCH 275/366] tests: Define onewire pin macro. Signed-off-by: MDin --- tests/test_config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_config.h b/tests/test_config.h index b94af027..60d97248 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -22,6 +22,7 @@ #define TEST_PIN_SYNC_IO 4 // IO_1 #define TEST_PIN_PULSE 5 // IO_2 #define TEST_PIN_SPI_SSEL 10 // IO_0 + #define TEST_PIN_ONEWIRE 7 #if defined(KIT_XMC47_RELAX) #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz From 15373a9a1cedb3c03d1e02e4336ff3ab05e5c275 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 22 Sep 2025 17:25:49 +0530 Subject: [PATCH 276/366] extras: Updated submodule. Signed-off-by: MDin --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index b815d5c1..a0c1c101 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit b815d5c194f8dc3812d6602bf84dc4d10420e5bc +Subproject commit a0c1c10190d20bf7c828f76ea0ee78c5f5bd42d4 From cfc14bde85b50b2505bf165923dc8778739e3273 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 22 Sep 2025 17:43:55 +0530 Subject: [PATCH 277/366] libraries: Delete onewire library. Signed-off-by: MDin --- libraries/OneWire/OneWire.cpp | 597 ------------------ libraries/OneWire/OneWire.h | 184 ------ libraries/OneWire/docs/issue_template.md | 64 -- .../DS18x20_Temperature.ino | 112 ---- .../examples/DS2408_Switch/DS2408_Switch.ino | 74 --- .../examples/DS250x_PROM/DS250x_PROM.ino | 75 --- libraries/OneWire/keywords.txt | 38 -- libraries/OneWire/library.json | 61 -- libraries/OneWire/library.properties | 10 - libraries/OneWire/util/OneWire_direct_gpio.h | 499 --------------- .../OneWire/util/OneWire_direct_regtype.h | 60 -- 11 files changed, 1774 deletions(-) delete mode 100644 libraries/OneWire/OneWire.cpp delete mode 100644 libraries/OneWire/OneWire.h delete mode 100644 libraries/OneWire/docs/issue_template.md delete mode 100644 libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino delete mode 100644 libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino delete mode 100644 libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino delete mode 100644 libraries/OneWire/keywords.txt delete mode 100644 libraries/OneWire/library.json delete mode 100644 libraries/OneWire/library.properties delete mode 100644 libraries/OneWire/util/OneWire_direct_gpio.h delete mode 100644 libraries/OneWire/util/OneWire_direct_regtype.h diff --git a/libraries/OneWire/OneWire.cpp b/libraries/OneWire/OneWire.cpp deleted file mode 100644 index ebb3bd38..00000000 --- a/libraries/OneWire/OneWire.cpp +++ /dev/null @@ -1,597 +0,0 @@ -/* -Copyright (c) 2007, Jim Studt (original old version - many contributors since) - -The latest version of this library may be found at: - http://www.pjrc.com/teensy/td_libs_OneWire.html - -OneWire has been maintained by Paul Stoffregen (paul@pjrc.com) since -January 2010. - -DO NOT EMAIL for technical support, especially not for ESP chips! -All project support questions must be posted on public forums -relevant to the board or chips used. If using Arduino, post on -Arduino's forum. If using ESP, post on the ESP community forums. -There is ABSOLUTELY NO TECH SUPPORT BY PRIVATE EMAIL! - -Github's issue tracker for OneWire should be used only to report -specific bugs. DO NOT request project support via Github. All -project and tech support questions must be posted on forums, not -github issues. If you experience a problem and you are not -absolutely sure it's an issue with the library, ask on a forum -first. Only use github to report issues after experts have -confirmed the issue is with OneWire rather than your project. - -Back in 2010, OneWire was in need of many bug fixes, but had -been abandoned the original author (Jim Studt). None of the known -contributors were interested in maintaining OneWire. Paul typically -works on OneWire every 6 to 12 months. Patches usually wait that -long. If anyone is interested in more actively maintaining OneWire, -please contact Paul (this is pretty much the only reason to use -private email about OneWire). - -OneWire is now very mature code. No changes other than adding -definitions for newer hardware support are anticipated. - - ESP32 mods authored by stickbreaker: - @stickbreaker 30APR2018 add IRAM_ATTR to read_bit() write_bit() to solve ICache miss timing -failure. thanks @everslick re: https://github.com/espressif/arduino-esp32/issues/1335 Altered by -garyd9 for clean merge with Paul Stoffregen's source - -Version 2.3: - Unknown chip fallback mode, Roger Clark - Teensy-LC compatibility, Paul Stoffregen - Search bug fix, Love Nystrom - -Version 2.2: - Teensy 3.0 compatibility, Paul Stoffregen, paul@pjrc.com - Arduino Due compatibility, http://arduino.cc/forum/index.php?topic=141030 - Fix DS18B20 example negative temperature - Fix DS18B20 example's low res modes, Ken Butcher - Improve reset timing, Mark Tillotson - Add const qualifiers, Bertrik Sikken - Add initial value input to crc16, Bertrik Sikken - Add target_search() function, Scott Roberts - -Version 2.1: - Arduino 1.0 compatibility, Paul Stoffregen - Improve temperature example, Paul Stoffregen - DS250x_PROM example, Guillermo Lovato - PIC32 (chipKit) compatibility, Jason Dangel, dangel.jason AT gmail.com - Improvements from Glenn Trewitt: - - crc16() now works - - check_crc16() does all of calculation/checking work. - - Added read_bytes() and write_bytes(), to reduce tedious loops. - - Added ds2408 example. - Delete very old, out-of-date readme file (info is here) - -Version 2.0: Modifications by Paul Stoffregen, January 2010: -http://www.pjrc.com/teensy/td_libs_OneWire.html - Search fix from Robin James - http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27 - Use direct optimized I/O in all cases - Disable interrupts during timing critical sections - (this solves many random communication errors) - Disable interrupts during read-modify-write I/O - Reduce RAM consumption by eliminating unnecessary - variables and trimming many to 8 bits - Optimize both crc8 - table version moved to flash - -Modified to work with larger numbers of devices - avoids loop. -Tested in Arduino 11 alpha with 12 sensors. -26 Sept 2008 -- Robin James -http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27 - -Updated to work with arduino-0008 and to include skip() as of -2007/07/06. --RJL20 - -Modified to calculate the 8-bit CRC directly, avoiding the need for -the 256-byte lookup table to be loaded in RAM. Tested in arduino-0010 --- Tom Pollard, Jan 23, 2008 - -Jim Studt's original library was modified by Josh Larios. - -Tom Pollard, pollard@alum.mit.edu, contributed around May 20, 2008 - -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. - -Much of the code was inspired by Derek Yerger's code, though I don't -think much of that remains. In any event that was.. - (copyleft) 2006 by Derek Yerger - Free to distribute freely. - -The CRC code was excerpted and inspired by the Dallas Semiconductor -sample code bearing this copyright. -//--------------------------------------------------------------------------- -// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved. -// -// 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 DALLAS SEMICONDUCTOR 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. -// -// Except as contained in this notice, the name of Dallas Semiconductor -// shall not be used except as stated in the Dallas Semiconductor -// Branding Policy. -//-------------------------------------------------------------------------- -*/ - -#include -#include "OneWire.h" -#include "util/OneWire_direct_gpio.h" - -#ifdef ARDUINO_ARCH_ESP32 - // due to the dual core esp32, a critical section works better than disabling interrupts - #define noInterrupts() \ - { \ - portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED; \ - portENTER_CRITICAL(&mux) - #define interrupts() \ - portEXIT_CRITICAL(&mux); \ - } - // for info on this, search "IRAM_ATTR" at - // https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/general-notes.html - #define CRIT_TIMING IRAM_ATTR -#else - #define CRIT_TIMING -#endif - -void OneWire::begin(uint8_t pin) { - pinMode(pin, INPUT); - bitmask = PIN_TO_BITMASK(pin); - baseReg = PIN_TO_BASEREG(pin); -#if ONEWIRE_SEARCH - reset_search(); -#endif -} - -// Perform the onewire reset function. We will wait up to 250uS for -// the bus to come high, if it doesn't then it is broken or shorted -// and we return a 0; -// -// Returns 1 if a device asserted a presence pulse, 0 otherwise. -// -uint8_t CRIT_TIMING OneWire::reset(void) { - IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; - __attribute__((unused)) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; - uint8_t r; - uint8_t retries = 125; - - noInterrupts(); - DIRECT_MODE_INPUT(reg, mask); - interrupts(); - // wait until the wire is high... just in case - do { - if (--retries == 0) - return 0; - delayMicroseconds(2); - } while (!DIRECT_READ(reg, mask)); - - noInterrupts(); - DIRECT_WRITE_LOW(reg, mask); - DIRECT_MODE_OUTPUT(reg, mask); // drive output low - interrupts(); - delayMicroseconds(480); - noInterrupts(); - DIRECT_MODE_INPUT(reg, mask); // allow it to float - delayMicroseconds(70); - r = !DIRECT_READ(reg, mask); - interrupts(); - delayMicroseconds(410); - return r; -} - -// -// Write a bit. Port and bit is used to cut lookup time and provide -// more certain timing. -// -void CRIT_TIMING OneWire::write_bit(uint8_t v) { - IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; - __attribute__((unused)) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; - - if (v & 1) { - noInterrupts(); - DIRECT_WRITE_LOW(reg, mask); - DIRECT_MODE_OUTPUT(reg, mask); // drive output low - delayMicroseconds(10); - DIRECT_WRITE_HIGH(reg, mask); // drive output high - interrupts(); - delayMicroseconds(55); - } else { - noInterrupts(); - DIRECT_WRITE_LOW(reg, mask); - DIRECT_MODE_OUTPUT(reg, mask); // drive output low - delayMicroseconds(65); - DIRECT_WRITE_HIGH(reg, mask); // drive output high - interrupts(); - delayMicroseconds(5); - } -} - -// -// Read a bit. Port and bit is used to cut lookup time and provide -// more certain timing. -// -uint8_t CRIT_TIMING OneWire::read_bit(void) { - IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask; - __attribute__((unused)) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; - uint8_t r; - - noInterrupts(); - DIRECT_MODE_OUTPUT(reg, mask); - DIRECT_WRITE_LOW(reg, mask); - delayMicroseconds(3); - DIRECT_MODE_INPUT(reg, mask); // let pin float, pull up will raise - delayMicroseconds(10); - r = DIRECT_READ(reg, mask); - interrupts(); - delayMicroseconds(53); - return r; -} - -// -// Write a byte. The writing code uses the active drivers to raise the -// pin high, if you need power after the write (e.g. DS18S20 in -// parasite power mode) then set 'power' to 1, otherwise the pin will -// go tri-state at the end of the write to avoid heating in a short or -// other mishap. -// -void OneWire::write(uint8_t v, uint8_t power /* = 0 */) { - uint8_t bitMask; - - for (bitMask = 0x01; bitMask; bitMask <<= 1) { - OneWire::write_bit((bitMask & v) ? 1 : 0); - } - if (!power) { - noInterrupts(); - DIRECT_MODE_INPUT(baseReg, bitmask); - DIRECT_WRITE_LOW(baseReg, bitmask); - interrupts(); - } -} - -void OneWire::write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0 */) { - for (uint16_t i = 0; i < count; i++) - write(buf[i]); - if (!power) { - noInterrupts(); - DIRECT_MODE_INPUT(baseReg, bitmask); - DIRECT_WRITE_LOW(baseReg, bitmask); - interrupts(); - } -} - -// -// Read a byte -// -uint8_t OneWire::read() { - uint8_t bitMask; - uint8_t r = 0; - - for (bitMask = 0x01; bitMask; bitMask <<= 1) { - if (OneWire::read_bit()) - r |= bitMask; - } - return r; -} - -void OneWire::read_bytes(uint8_t *buf, uint16_t count) { - for (uint16_t i = 0; i < count; i++) - buf[i] = read(); -} - -// -// Do a ROM select -// -void OneWire::select(const uint8_t rom[8]) { - uint8_t i; - - write(0x55); // Choose ROM - - for (i = 0; i < 8; i++) - write(rom[i]); -} - -// -// Do a ROM skip -// -void OneWire::skip() { - write(0xCC); // Skip ROM -} - -void OneWire::depower() { - noInterrupts(); - DIRECT_MODE_INPUT(baseReg, bitmask); - interrupts(); -} - -#if ONEWIRE_SEARCH - -// -// You need to use this function to start a search again from the beginning. -// You do not need to do it for the first search, though you could. -// -void OneWire::reset_search() { - // reset the search state - LastDiscrepancy = 0; - LastDeviceFlag = false; - LastFamilyDiscrepancy = 0; - for (int i = 7;; i--) { - ROM_NO[i] = 0; - if (i == 0) - break; - } -} - -// Setup the search to find the device type 'family_code' on the next call -// to search(*newAddr) if it is present. -// -void OneWire::target_search(uint8_t family_code) { - // set the search state to find SearchFamily type devices - ROM_NO[0] = family_code; - for (uint8_t i = 1; i < 8; i++) - ROM_NO[i] = 0; - LastDiscrepancy = 64; - LastFamilyDiscrepancy = 0; - LastDeviceFlag = false; -} - -// -// Perform a search. If this function returns a '1' then it has -// enumerated the next device and you may retrieve the ROM from the -// OneWire::address variable. If there are no devices, no further -// devices, or something horrible happens in the middle of the -// enumeration then a 0 is returned. If a new device is found then -// its address is copied to newAddr. Use OneWire::reset_search() to -// start over. -// -// --- Replaced by the one from the Dallas Semiconductor web site --- -//-------------------------------------------------------------------------- -// Perform the 1-Wire Search Algorithm on the 1-Wire bus using the existing -// search state. -// Return TRUE : device found, ROM number in ROM_NO buffer -// FALSE : device not found, end of search -// -bool OneWire::search(uint8_t *newAddr, bool search_mode /* = true */) { - uint8_t id_bit_number; - uint8_t last_zero, rom_byte_number; - bool search_result; - uint8_t id_bit, cmp_id_bit; - - unsigned char rom_byte_mask, search_direction; - - // initialize for search - id_bit_number = 1; - last_zero = 0; - rom_byte_number = 0; - rom_byte_mask = 1; - search_result = false; - - // if the last call was not the last one - if (!LastDeviceFlag) { - // 1-Wire reset - if (!reset()) { - // reset the search - LastDiscrepancy = 0; - LastDeviceFlag = false; - LastFamilyDiscrepancy = 0; - return false; - } - - // issue the search command - if (search_mode == true) { - write(0xF0); // NORMAL SEARCH - } else { - write(0xEC); // CONDITIONAL SEARCH - } - - // loop to do the search - do { - // read a bit and its complement - id_bit = read_bit(); - cmp_id_bit = read_bit(); - - // check for no devices on 1-wire - if ((id_bit == 1) && (cmp_id_bit == 1)) { - break; - } else { - // all devices coupled have 0 or 1 - if (id_bit != cmp_id_bit) { - search_direction = id_bit; // bit write value for search - } else { - // if this discrepancy if before the Last Discrepancy - // on a previous next then pick the same as last time - if (id_bit_number < LastDiscrepancy) { - search_direction = ((ROM_NO[rom_byte_number] & rom_byte_mask) > 0); - } else { - // if equal to last pick 1, if not then pick 0 - search_direction = (id_bit_number == LastDiscrepancy); - } - // if 0 was picked then record its position in LastZero - if (search_direction == 0) { - last_zero = id_bit_number; - - // check for Last discrepancy in family - if (last_zero < 9) - LastFamilyDiscrepancy = last_zero; - } - } - - // set or clear the bit in the ROM byte rom_byte_number - // with mask rom_byte_mask - if (search_direction == 1) - ROM_NO[rom_byte_number] |= rom_byte_mask; - else - ROM_NO[rom_byte_number] &= ~rom_byte_mask; - - // serial number search direction write bit - write_bit(search_direction); - - // increment the byte counter id_bit_number - // and shift the mask rom_byte_mask - id_bit_number++; - rom_byte_mask <<= 1; - - // if the mask is 0 then go to new SerialNum byte rom_byte_number and reset mask - if (rom_byte_mask == 0) { - rom_byte_number++; - rom_byte_mask = 1; - } - } - } while (rom_byte_number < 8); // loop until through all ROM bytes 0-7 - - // if the search was successful then - if (!(id_bit_number < 65)) { - // search successful so set LastDiscrepancy,LastDeviceFlag,search_result - LastDiscrepancy = last_zero; - - // check for last device - if (LastDiscrepancy == 0) { - LastDeviceFlag = true; - } - search_result = true; - } - } - - // if no device found then reset counters so next 'search' will be like a first - if (!search_result || !ROM_NO[0]) { - LastDiscrepancy = 0; - LastDeviceFlag = false; - LastFamilyDiscrepancy = 0; - search_result = false; - } else { - for (int i = 0; i < 8; i++) - newAddr[i] = ROM_NO[i]; - } - return search_result; -} - -#endif - -#if ONEWIRE_CRC -// The 1-Wire CRC scheme is described in Maxim Application Note 27: -// "Understanding and Using Cyclic Redundancy Checks with Maxim iButton Products" -// - - #if ONEWIRE_CRC8_TABLE -// Dow-CRC using polynomial X^8 + X^5 + X^4 + X^0 -// Tiny 2x16 entry CRC table created by Arjen Lentz -// See http://lentz.com.au/blog/calculating-crc-with-a-tiny-32-entry-lookup-table -static const uint8_t PROGMEM dscrc2x16_table[] = { - 0x00, 0x5E, 0xBC, 0xE2, 0x61, 0x3F, 0xDD, 0x83, 0xC2, 0x9C, 0x7E, 0x20, 0xA3, 0xFD, 0x1F, 0x41, - 0x00, 0x9D, 0x23, 0xBE, 0x46, 0xDB, 0x65, 0xF8, 0x8C, 0x11, 0xAF, 0x32, 0xCA, 0x57, 0xE9, 0x74}; - -// Compute a Dallas Semiconductor 8 bit CRC. These show up in the ROM -// and the registers. (Use tiny 2x16 entry CRC table) -uint8_t OneWire::crc8(const uint8_t *addr, uint8_t len) { - uint8_t crc = 0; - - while (len--) { - crc = *addr++ ^ crc; // just re-using crc as intermediate - crc = pgm_read_byte(dscrc2x16_table + (crc & 0x0f)) ^ - pgm_read_byte(dscrc2x16_table + 16 + ((crc >> 4) & 0x0f)); - } - - return crc; -} - #else -// -// Compute a Dallas Semiconductor 8 bit CRC directly. -// this is much slower, but a little smaller, than the lookup table. -// -uint8_t OneWire::crc8(const uint8_t *addr, uint8_t len) { - uint8_t crc = 0; - - while (len--) { - #if defined(__AVR__) - crc = _crc_ibutton_update(crc, *addr++); - #else - uint8_t inbyte = *addr++; - for (uint8_t i = 8; i; i--) { - uint8_t mix = (crc ^ inbyte) & 0x01; - crc >>= 1; - if (mix) - crc ^= 0x8C; - inbyte >>= 1; - } - #endif - } - return crc; -} - #endif - - #if ONEWIRE_CRC16 -bool OneWire::check_crc16(const uint8_t *input, - uint16_t len, - const uint8_t *inverted_crc, - uint16_t crc) { - crc = ~crc16(input, len, crc); - return (crc & 0xFF) == inverted_crc[0] && (crc >> 8) == inverted_crc[1]; -} - -uint16_t OneWire::crc16(const uint8_t *input, uint16_t len, uint16_t crc) { - #if defined(__AVR__) - for (uint16_t i = 0; i < len; i++) { - crc = _crc16_update(crc, input[i]); - } - #else - static const uint8_t oddparity[16] = {0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0}; - - for (uint16_t i = 0; i < len; i++) { - // Even though we're just copying a byte from the input, - // we'll be doing 16-bit computation with it. - uint16_t cdata = input[i]; - cdata = (cdata ^ crc) & 0xff; - crc >>= 8; - - if (oddparity[cdata & 0x0F] ^ oddparity[cdata >> 4]) - crc ^= 0xC001; - - cdata <<= 6; - crc ^= cdata; - cdata <<= 1; - crc ^= cdata; - } - #endif - return crc; -} - #endif - -#endif - -// undef defines for no particular reason -#ifdef ARDUINO_ARCH_ESP32 - #undef noInterrupts(){portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED; portENTER_CRITICAL(&mux) - #undef interrupts() portEXIT_CRITICAL(&mux); } -#endif -// for info on this, search "IRAM_ATTR" at -// https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/general-notes.html -#undef CRIT_TIMING diff --git a/libraries/OneWire/OneWire.h b/libraries/OneWire/OneWire.h deleted file mode 100644 index 9723efbe..00000000 --- a/libraries/OneWire/OneWire.h +++ /dev/null @@ -1,184 +0,0 @@ -#ifndef OneWire_h -#define OneWire_h - -#ifdef __cplusplus - - #include - - #if defined(__AVR__) - #include - #endif - - #if ARDUINO >= 100 - #include // for delayMicroseconds, digitalPinToBitMask, etc - #else - #include "WProgram.h" // for delayMicroseconds - #include "pins_arduino.h" // for digitalPinToBitMask, etc - #endif - - // You can exclude certain features from OneWire. In theory, this - // might save some space. In practice, the compiler automatically - // removes unused code (technically, the linker, using -fdata-sections - // and -ffunction-sections when compiling, and Wl,--gc-sections - // when linking), so most of these will not result in any code size - // reduction. Well, unless you try to use the missing features - // and redesign your program to not need them! ONEWIRE_CRC8_TABLE - // is the exception, because it selects a fast but large algorithm - // or a small but slow algorithm. - - // you can exclude onewire_search by defining that to 0 - #ifndef ONEWIRE_SEARCH - #define ONEWIRE_SEARCH 1 - #endif - - // You can exclude CRC checks altogether by defining this to 0 - #ifndef ONEWIRE_CRC - #define ONEWIRE_CRC 1 - #endif - - // Select the table-lookup method of computing the 8-bit CRC - // by setting this to 1. The lookup table enlarges code size by - // about 250 bytes. It does NOT consume RAM (but did in very - // old versions of OneWire). If you disable this, a slower - // but very compact algorithm is used. - #ifndef ONEWIRE_CRC8_TABLE - #define ONEWIRE_CRC8_TABLE 1 - #endif - - // You can allow 16-bit CRC checks by defining this to 1 - // (Note that ONEWIRE_CRC must also be 1.) - #ifndef ONEWIRE_CRC16 - #define ONEWIRE_CRC16 1 - #endif - - // Board-specific macros for direct GPIO - #include "util/OneWire_direct_regtype.h" - -class OneWire { -private: - IO_REG_TYPE bitmask; - volatile IO_REG_TYPE *baseReg; - - #if ONEWIRE_SEARCH - // global search state - unsigned char ROM_NO[8]; - uint8_t LastDiscrepancy; - uint8_t LastFamilyDiscrepancy; - bool LastDeviceFlag; - #endif - -public: - OneWire() {} - - OneWire(uint8_t pin) { begin(pin); } - - void begin(uint8_t pin); - - // Perform a 1-Wire reset cycle. Returns 1 if a device responds - // with a presence pulse. Returns 0 if there is no device or the - // bus is shorted or otherwise held low for more than 250uS - uint8_t reset(void); - - // Issue a 1-Wire rom select command, you do the reset first. - void select(const uint8_t rom[8]); - - // Issue a 1-Wire rom skip command, to address all on bus. - void skip(void); - - // Write a byte. If 'power' is one then the wire is held high at - // the end for parasitically powered devices. You are responsible - // for eventually depowering it by calling depower() or doing - // another read or write. - void write(uint8_t v, uint8_t power = 0); - - void write_bytes(const uint8_t *buf, uint16_t count, bool power = 0); - - // Read a byte. - uint8_t read(void); - - void read_bytes(uint8_t *buf, uint16_t count); - - // Write a bit. The bus is always left powered at the end, see - // note in write() about that. - void write_bit(uint8_t v); - - // Read a bit. - uint8_t read_bit(void); - - // Stop forcing power onto the bus. You only need to do this if - // you used the 'power' flag to write() or used a write_bit() call - // and aren't about to do another read or write. You would rather - // not leave this powered if you don't have to, just in case - // someone shorts your bus. - void depower(void); - - #if ONEWIRE_SEARCH - // Clear the search state so that if will start from the beginning again. - void reset_search(); - - // Setup the search to find the device type 'family_code' on the next call - // to search(*newAddr) if it is present. - void target_search(uint8_t family_code); - - // Look for the next device. Returns 1 if a new address has been - // returned. A zero might mean that the bus is shorted, there are - // no devices, or you have already retrieved all of them. It - // might be a good idea to check the CRC to make sure you didn't - // get garbage. The order is deterministic. You will always get - // the same devices in the same order. - bool search(uint8_t *newAddr, bool search_mode = true); - #endif - - #if ONEWIRE_CRC - // Compute a Dallas Semiconductor 8 bit CRC, these are used in the - // ROM and scratchpad registers. - static uint8_t crc8(const uint8_t *addr, uint8_t len); - - #if ONEWIRE_CRC16 - // Compute the 1-Wire CRC16 and compare it against the received CRC. - // Example usage (reading a DS2408): - // // Put everything in a buffer so we can compute the CRC easily. - // uint8_t buf[13]; - // buf[0] = 0xF0; // Read PIO Registers - // buf[1] = 0x88; // LSB address - // buf[2] = 0x00; // MSB address - // WriteBytes(net, buf, 3); // Write 3 cmd bytes - // ReadBytes(net, buf+3, 10); // Read 6 data bytes, 2 0xFF, 2 CRC16 - // if (!CheckCRC16(buf, 11, &buf[11])) { - // // Handle error. - // } - // - // @param input - Array of bytes to checksum. - // @param len - How many bytes to use. - // @param inverted_crc - The two CRC16 bytes in the received data. - // This should just point into the received data, - // *not* at a 16-bit integer. - // @param crc - The crc starting value (optional) - // @return True, iff the CRC matches. - static bool - check_crc16(const uint8_t *input, uint16_t len, const uint8_t *inverted_crc, uint16_t crc = 0); - - // Compute a Dallas Semiconductor 16 bit CRC. This is required to check - // the integrity of data received from many 1-Wire devices. Note that the - // CRC computed here is *not* what you'll get from the 1-Wire network, - // for two reasons: - // 1) The CRC is transmitted bitwise inverted. - // 2) Depending on the endian-ness of your processor, the binary - // representation of the two-byte return value may have a different - // byte order than the two bytes you get from 1-Wire. - // @param input - Array of bytes to checksum. - // @param len - How many bytes to use. - // @param crc - The crc starting value (optional) - // @return The CRC16, as defined by Dallas Semiconductor. - static uint16_t crc16(const uint8_t *input, uint16_t len, uint16_t crc = 0); - #endif - #endif -}; - - // Prevent this name from leaking into Arduino sketches - #ifdef IO_REG_TYPE - #undef IO_REG_TYPE - #endif - -#endif // __cplusplus -#endif // OneWire_h diff --git a/libraries/OneWire/docs/issue_template.md b/libraries/OneWire/docs/issue_template.md deleted file mode 100644 index 06109925..00000000 --- a/libraries/OneWire/docs/issue_template.md +++ /dev/null @@ -1,64 +0,0 @@ -Please use this form only to report code defects or bugs. - -For any question, even questions directly pertaining to this code, post your question on the forums related to the board you are using. - -Arduino: forum.arduino.cc -Teensy: forum.pjrc.com -ESP8266: www.esp8266.com -ESP32: www.esp32.com -Adafruit Feather/Metro/Trinket: forums.adafruit.com -Particle Photon: community.particle.io - -If you are experiencing trouble but not certain of the cause, or need help using this code, ask on the appropriate forum. This is not the place to ask for support or help, even directly related to this code. Only use this form you are certain you have discovered a defect in this code! - -Please verify the problem occurs when using the very latest version, using the newest version of Arduino and any other related software. - - ------------------------------ Remove above ----------------------------- - - - -### Description - -Describe your problem. - - - -### Steps To Reproduce Problem - -Please give detailed instructions needed for anyone to attempt to reproduce the problem. - - - -### Hardware & Software - -Board -Shields / modules used -Arduino IDE version -Teensyduino version (if using Teensy) -Version info & package name (from Tools > Boards > Board Manager) -Operating system & version -Any other software or hardware? - - -### Arduino Sketch - -```cpp -// Change the code below by your sketch (please try to give the smallest code which demonstrates the problem) -#include - -// libraries: give links/details so anyone can compile your code for the same result - -void setup() { -} - -void loop() { -} -``` - - -### Errors or Incorrect Output - -If you see any errors or incorrect output, please show it here. Please use copy & paste to give an exact copy of the message. Details matter, so please show (not merely describe) the actual message or error exactly as it appears. - - diff --git a/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino b/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino deleted file mode 100644 index 34a5e448..00000000 --- a/libraries/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino +++ /dev/null @@ -1,112 +0,0 @@ -#include - -// OneWire DS18S20, DS18B20, DS1822 Temperature Example -// -// http://www.pjrc.com/teensy/td_libs_OneWire.html -// -// The DallasTemperature library can do all this work for you! -// https://github.com/milesburton/Arduino-Temperature-Control-Library - -OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary) - -void setup(void) { - Serial.begin(9600); -} - -void loop(void) { - byte i; - byte present = 0; - byte type_s; - byte data[9]; - byte addr[8]; - float celsius, fahrenheit; - - if ( !ds.search(addr)) { - Serial.println("No more addresses."); - Serial.println(); - ds.reset_search(); - delay(250); - return; - } - - Serial.print("ROM ="); - for( i = 0; i < 8; i++) { - Serial.write(' '); - Serial.print(addr[i], HEX); - } - - if (OneWire::crc8(addr, 7) != addr[7]) { - Serial.println("CRC is not valid!"); - return; - } - Serial.println(); - - // the first ROM byte indicates which chip - switch (addr[0]) { - case 0x10: - Serial.println(" Chip = DS18S20"); // or old DS1820 - type_s = 1; - break; - case 0x28: - Serial.println(" Chip = DS18B20"); - type_s = 0; - break; - case 0x22: - Serial.println(" Chip = DS1822"); - type_s = 0; - break; - default: - Serial.println("Device is not a DS18x20 family device."); - return; - } - - ds.reset(); - ds.select(addr); - ds.write(0x44, 1); // start conversion, with parasite power on at the end - - delay(1000); // maybe 750ms is enough, maybe not - // we might do a ds.depower() here, but the reset will take care of it. - - present = ds.reset(); - ds.select(addr); - ds.write(0xBE); // Read Scratchpad - - Serial.print(" Data = "); - Serial.print(present, HEX); - Serial.print(" "); - for ( i = 0; i < 9; i++) { // we need 9 bytes - data[i] = ds.read(); - Serial.print(data[i], HEX); - Serial.print(" "); - } - Serial.print(" CRC="); - Serial.print(OneWire::crc8(data, 8), HEX); - Serial.println(); - - // Convert the data to actual temperature - // because the result is a 16 bit signed integer, it should - // be stored to an "int16_t" type, which is always 16 bits - // even when compiled on a 32 bit processor. - int16_t raw = (data[1] << 8) | data[0]; - if (type_s) { - raw = raw << 3; // 9 bit resolution default - if (data[7] == 0x10) { - // "count remain" gives full 12 bit resolution - raw = (raw & 0xFFF0) + 12 - data[6]; - } - } else { - byte cfg = (data[4] & 0x60); - // at lower res, the low bits are undefined, so let's zero them - if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms - else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms - else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms - //// default is 12 bit resolution, 750 ms conversion time - } - celsius = (float)raw / 16.0; - fahrenheit = celsius * 1.8 + 32.0; - Serial.print(" Temperature = "); - Serial.print(celsius); - Serial.print(" Celsius, "); - Serial.print(fahrenheit); - Serial.println(" Fahrenheit"); -} diff --git a/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino b/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino deleted file mode 100644 index b70eda97..00000000 --- a/libraries/OneWire/examples/DS2408_Switch/DS2408_Switch.ino +++ /dev/null @@ -1,74 +0,0 @@ -#include - -/* - * DS2408 8-Channel Addressable Switch - * - * Writte by Glenn Trewitt, glenn at trewitt dot org - * - * Some notes about the DS2408: - * - Unlike most input/output ports, the DS2408 doesn't have mode bits to - * set whether the pins are input or output. If you issue a read command, - * they're inputs. If you write to them, they're outputs. - * - For reading from a switch, you should use 10K pull-up resisters. - */ - -OneWire net(10); // on pin 10 - - -void PrintBytes(const uint8_t* addr, uint8_t count, bool newline=false) { - for (uint8_t i = 0; i < count; i++) { - Serial.print(addr[i]>>4, HEX); - Serial.print(addr[i]&0x0f, HEX); - } - if (newline) - Serial.println(); -} - - -void setup(void) { - Serial.begin(9600); -} - -void loop(void) { - byte addr[8]; - - if (!net.search(addr)) { - Serial.print("No more addresses.\n"); - net.reset_search(); - delay(1000); - return; - } - - if (OneWire::crc8(addr, 7) != addr[7]) { - Serial.print("CRC is not valid!\n"); - return; - } - - if (addr[0] != 0x29) { - PrintBytes(addr, 8); - Serial.print(" is not a DS2408.\n"); - return; - } - - Serial.print(" Reading DS2408 "); - PrintBytes(addr, 8); - Serial.println(); - - uint8_t buf[13]; // Put everything in the buffer so we can compute CRC easily. - buf[0] = 0xF0; // Read PIO Registers - buf[1] = 0x88; // LSB address - buf[2] = 0x00; // MSB address - net.write_bytes(buf, 3); - net.read_bytes(buf+3, 10); // 3 cmd bytes, 6 data bytes, 2 0xFF, 2 CRC16 - net.reset(); - - if (!OneWire::check_crc16(buf, 11, &buf[11])) { - Serial.print("CRC failure in DS2408 at "); - PrintBytes(addr, 8, true); - return; - } - Serial.print(" DS2408 data = "); - // First 3 bytes contain command, register address. - Serial.println(buf[3], BIN); -} - diff --git a/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino b/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino deleted file mode 100644 index db95a5e9..00000000 --- a/libraries/OneWire/examples/DS250x_PROM/DS250x_PROM.ino +++ /dev/null @@ -1,75 +0,0 @@ -/* -DS250x add-only programmable memory reader w/SKIP ROM. - - The DS250x is a 512/1024bit add-only PROM(you can add data but cannot change the old one) that's used mainly for device identification purposes - like serial number, mfgr data, unique identifiers, etc. It uses the Maxim 1-wire bus. - - This sketch will use the SKIP ROM function that skips the 1-Wire search phase since we only have one device connected in the bus on digital pin 6. - If more than one device is connected to the bus, it will fail. - Sketch will not verify if device connected is from the DS250x family since the skip rom function effectively skips the family-id byte readout. - thus it is possible to run this sketch with any Maxim OneWire device in which case the command CRC will most likely fail. - Sketch will only read the first page of memory(32bits) starting from the lower address(0000h), if more than 1 device is present, then use the sketch with search functions. - Remember to put a 4.7K pullup resistor between pin 6 and +Vcc - - To change the range or ammount of data to read, simply change the data array size, LSB/MSB addresses and for loop iterations - - This example code is in the public domain and is provided AS-IS. - - Built with Arduino 0022 and PJRC OneWire 2.0 library http://www.pjrc.com/teensy/td_libs_OneWire.html - - created by Guillermo Lovato - march/2011 - - */ - -#include -OneWire ds(6); // OneWire bus on digital pin 6 -void setup() { - Serial.begin (9600); -} - -void loop() { - byte i; // This is for the for loops - boolean present; // device present var - byte data[32]; // container for the data from device - byte leemem[3] = { // array with the commands to initiate a read, DS250x devices expect 3 bytes to start a read: command,LSB&MSB adresses - 0xF0 , 0x00 , 0x00 }; // 0xF0 is the Read Data command, followed by 00h 00h as starting address(the beginning, 0000h) - byte ccrc; // Variable to store the command CRC - byte ccrc_calc; - - present = ds.reset(); // OneWire bus reset, always needed to start operation on the bus, returns a 1/TRUE if there's a device present. - ds.skip(); // Skip ROM search - - if (present == true) { // We only try to read the data if there's a device present - Serial.println("DS250x device present"); - ds.write(leemem[0],1); // Read data command, leave ghost power on - ds.write(leemem[1],1); // LSB starting address, leave ghost power on - ds.write(leemem[2],1); // MSB starting address, leave ghost power on - - ccrc = ds.read(); // DS250x generates a CRC for the command we sent, we assign a read slot and store it's value - ccrc_calc = OneWire::crc8(leemem, 3); // We calculate the CRC of the commands we sent using the library function and store it - - if ( ccrc_calc != ccrc) { // Then we compare it to the value the ds250x calculated, if it fails, we print debug messages and abort - Serial.println("Invalid command CRC!"); - Serial.print("Calculated CRC:"); - Serial.println(ccrc_calc,HEX); // HEX makes it easier to observe and compare - Serial.print("DS250x readback CRC:"); - Serial.println(ccrc,HEX); - return; // Since CRC failed, we abort the rest of the loop and start over - } - Serial.println("Data is: "); // For the printout of the data - for ( i = 0; i < 32; i++) { // Now it's time to read the PROM data itself, each page is 32 bytes so we need 32 read commands - data[i] = ds.read(); // we store each read byte to a different position in the data array - Serial.print(data[i]); // printout in ASCII - Serial.print(" "); // blank space - } - Serial.println(); - delay(5000); // Delay so we don't saturate the serial output - } - else { // Nothing is connected in the bus - Serial.println("Nothing connected"); - delay(3000); - } -} - - diff --git a/libraries/OneWire/keywords.txt b/libraries/OneWire/keywords.txt deleted file mode 100644 index bee5d90b..00000000 --- a/libraries/OneWire/keywords.txt +++ /dev/null @@ -1,38 +0,0 @@ -####################################### -# Syntax Coloring Map For OneWire -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -OneWire KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -reset KEYWORD2 -write_bit KEYWORD2 -read_bit KEYWORD2 -write KEYWORD2 -write_bytes KEYWORD2 -read KEYWORD2 -read_bytes KEYWORD2 -select KEYWORD2 -skip KEYWORD2 -depower KEYWORD2 -reset_search KEYWORD2 -search KEYWORD2 -crc8 KEYWORD2 -crc16 KEYWORD2 -check_crc16 KEYWORD2 - -####################################### -# Instances (KEYWORD2) -####################################### - - -####################################### -# Constants (LITERAL1) -####################################### diff --git a/libraries/OneWire/library.json b/libraries/OneWire/library.json deleted file mode 100644 index c540133b..00000000 --- a/libraries/OneWire/library.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "OneWire", - "description": "Control 1-Wire protocol (DS18S20, DS18B20, DS2408 and etc)", - "keywords": "onewire, 1-wire, bus, sensor, temperature, ibutton", - "authors": [ - { - "name": "Paul Stoffregen", - "email": "paul@pjrc.com", - "url": "http://www.pjrc.com", - "maintainer": true - }, - { - "name": "Jim Studt" - }, - { - "name": "Tom Pollard", - "email": "pollard@alum.mit.edu" - }, - { - "name": "Derek Yerger" - }, - { - "name": "Josh Larios" - }, - { - "name": "Robin James" - }, - { - "name": "Glenn Trewitt" - }, - { - "name": "Jason Dangel", - "email": "dangel.jason AT gmail.com" - }, - { - "name": "Guillermo Lovato" - }, - { - "name": "Ken Butcher" - }, - { - "name": "Mark Tillotson" - }, - { - "name": "Bertrik Sikken" - }, - { - "name": "Scott Roberts" - } - ], - "repository": { - "type": "git", - "url": "https://github.com/PaulStoffregen/OneWire" - }, - "version": "2.3.8", - "homepage": "https://www.pjrc.com/teensy/td_libs_OneWire.html", - "frameworks": "Arduino", - "examples": [ - "examples/*/*.pde" - ] -} diff --git a/libraries/OneWire/library.properties b/libraries/OneWire/library.properties deleted file mode 100644 index f4c596f9..00000000 --- a/libraries/OneWire/library.properties +++ /dev/null @@ -1,10 +0,0 @@ -name=OneWire -version=2.3.8 -author=Jim Studt, Tom Pollard, Robin James, Glenn Trewitt, Jason Dangel, Guillermo Lovato, Paul Stoffregen, Scott Roberts, Bertrik Sikken, Mark Tillotson, Ken Butcher, Roger Clark, Love Nystrom -maintainer=Paul Stoffregen -sentence=Access 1-wire temperature sensors, memory and other chips. -paragraph= -category=Communication -url=http://www.pjrc.com/teensy/td_libs_OneWire.html -architectures=* - diff --git a/libraries/OneWire/util/OneWire_direct_gpio.h b/libraries/OneWire/util/OneWire_direct_gpio.h deleted file mode 100644 index 9c79cf30..00000000 --- a/libraries/OneWire/util/OneWire_direct_gpio.h +++ /dev/null @@ -1,499 +0,0 @@ -#ifndef OneWire_Direct_GPIO_h -#define OneWire_Direct_GPIO_h - -// This header should ONLY be included by OneWire.cpp. These defines are -// meant to be private, used within OneWire.cpp, but not exposed to Arduino -// sketches or other libraries which may include OneWire.h. - -#include - -// Platform specific I/O definitions - -#if defined(__AVR__) - #define PIN_TO_BASEREG(pin) (portInputRegister(digitalPinToPort(pin))) - #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) - #define IO_REG_TYPE uint8_t - #define IO_REG_BASE_ATTR asm("r30") - #define IO_REG_MASK_ATTR - #if defined(__AVR_ATmega4809__) - #define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0) - #define DIRECT_MODE_INPUT(base, mask) ((*((base) - 8)) &= ~(mask)) - #define DIRECT_MODE_OUTPUT(base, mask) ((*((base) - 8)) |= (mask)) - #define DIRECT_WRITE_LOW(base, mask) ((*((base) - 4)) &= ~(mask)) - #define DIRECT_WRITE_HIGH(base, mask) ((*((base) - 4)) |= (mask)) - #else - #define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0) - #define DIRECT_MODE_INPUT(base, mask) ((*((base) + 1)) &= ~(mask)) - #define DIRECT_MODE_OUTPUT(base, mask) ((*((base) + 1)) |= (mask)) - #define DIRECT_WRITE_LOW(base, mask) ((*((base) + 2)) &= ~(mask)) - #define DIRECT_WRITE_HIGH(base, mask) ((*((base) + 2)) |= (mask)) - #endif - -#elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK66FX1M0__) || \ - defined(__MK64FX512__) - #define PIN_TO_BASEREG(pin) (portOutputRegister(pin)) - #define PIN_TO_BITMASK(pin) (1) - #define IO_REG_TYPE uint8_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR __attribute__((unused)) - #define DIRECT_READ(base, mask) (*((base) + 512)) - #define DIRECT_MODE_INPUT(base, mask) (*((base) + 640) = 0) - #define DIRECT_MODE_OUTPUT(base, mask) (*((base) + 640) = 1) - #define DIRECT_WRITE_LOW(base, mask) (*((base) + 256) = 1) - #define DIRECT_WRITE_HIGH(base, mask) (*((base) + 128) = 1) - -#elif defined(__MKL26Z64__) - #define PIN_TO_BASEREG(pin) (portOutputRegister(pin)) - #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) - #define IO_REG_TYPE uint8_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, mask) ((*((base) + 16) & (mask)) ? 1 : 0) - #define DIRECT_MODE_INPUT(base, mask) (*((base) + 20) &= ~(mask)) - #define DIRECT_MODE_OUTPUT(base, mask) (*((base) + 20) |= (mask)) - #define DIRECT_WRITE_LOW(base, mask) (*((base) + 8) = (mask)) - #define DIRECT_WRITE_HIGH(base, mask) (*((base) + 4) = (mask)) - -#elif defined(__IMXRT1052__) || defined(__IMXRT1062__) - #define PIN_TO_BASEREG(pin) (portOutputRegister(pin)) - #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, mask) ((*((base) + 2) & (mask)) ? 1 : 0) - #define DIRECT_MODE_INPUT(base, mask) (*((base) + 1) &= ~(mask)) - #define DIRECT_MODE_OUTPUT(base, mask) (*((base) + 1) |= (mask)) - #define DIRECT_WRITE_LOW(base, mask) (*((base) + 34) = (mask)) - #define DIRECT_WRITE_HIGH(base, mask) (*((base) + 33) = (mask)) - -#elif defined(__SAM3X8E__) || defined(__SAM3A8C__) || defined(__SAM3A4C__) - // Arduino 1.5.1 may have a bug in delayMicroseconds() on Arduino Due. - // http://arduino.cc/forum/index.php/topic,141030.msg1076268.html#msg1076268 - // If you have trouble with OneWire on Arduino Due, please check the - // status of delayMicroseconds() before reporting a bug in OneWire! - #define PIN_TO_BASEREG(pin) (&(digitalPinToPort(pin)->PIO_PER)) - #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, mask) (((*((base) + 15)) & (mask)) ? 1 : 0) - #define DIRECT_MODE_INPUT(base, mask) ((*((base) + 5)) = (mask)) - #define DIRECT_MODE_OUTPUT(base, mask) ((*((base) + 4)) = (mask)) - #define DIRECT_WRITE_LOW(base, mask) ((*((base) + 13)) = (mask)) - #define DIRECT_WRITE_HIGH(base, mask) ((*((base) + 12)) = (mask)) - #ifndef PROGMEM - #define PROGMEM - #endif - #ifndef pgm_read_byte - #define pgm_read_byte(addr) (*(const uint8_t *)(addr)) - #endif - -#elif defined(__PIC32MX__) - #define PIN_TO_BASEREG(pin) (portModeRegister(digitalPinToPort(pin))) - #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, mask) (((*(base + 4)) & (mask)) ? 1 : 0) // PORTX + 0x10 - #define DIRECT_MODE_INPUT(base, mask) ((*(base + 2)) = (mask)) // TRISXSET + 0x08 - #define DIRECT_MODE_OUTPUT(base, mask) ((*(base + 1)) = (mask)) // TRISXCLR + 0x04 - #define DIRECT_WRITE_LOW(base, mask) ((*(base + 8 + 1)) = (mask)) // LATXCLR + 0x24 - #define DIRECT_WRITE_HIGH(base, mask) ((*(base + 8 + 2)) = (mask)) // LATXSET + 0x28 - -#elif defined(ARDUINO_ARCH_ESP8266) - // Special note: I depend on the ESP community to maintain these definitions and - // submit good pull requests. I can not answer any ESP questions or help you - // resolve any problems related to ESP chips. Please do not contact me and please - // DO NOT CREATE GITHUB ISSUES for ESP support. All ESP questions must be asked - // on ESP community forums. - #define PIN_TO_BASEREG(pin) ((volatile uint32_t *)GPO) - #define PIN_TO_BITMASK(pin) (1UL << (pin)) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - -static inline __attribute__((always_inline)) void directModeInput(IO_REG_TYPE mask) { - if (mask > 0x8000) { - GP16FFS(GPFFS_GPIO(16)); - GPC16 = 0; - GP16E &= ~1; - } else { - GPE &= ~(mask); - } -} - -static inline __attribute__((always_inline)) void directModeOutput(IO_REG_TYPE mask) { - if (mask > 0x8000) { - GP16FFS(GPFFS_GPIO(16)); - GPC16 = 0; - GP16E |= 1; - } else { - GPE |= (mask); - } -} - -static inline __attribute__((always_inline)) bool directRead(IO_REG_TYPE mask) { - if (mask > 0x8000) - return GP16I & 0x01; - else - return ((GPI & (mask)) ? true : false); -} - - #define DIRECT_READ(base, mask) directRead(mask) - #define DIRECT_MODE_INPUT(base, mask) directModeInput(mask) - #define DIRECT_MODE_OUTPUT(base, mask) directModeOutput(mask) - #define DIRECT_WRITE_LOW(base, mask) (mask > 0x8000) ? GP16O &= ~1 : (GPOC = (mask)) - #define DIRECT_WRITE_HIGH(base, mask) (mask > 0x8000) ? GP16O |= 1 : (GPOS = (mask)) - -#elif defined(ARDUINO_ARCH_ESP32) - #include - #include - #define PIN_TO_BASEREG(pin) (0) - #define PIN_TO_BITMASK(pin) (pin) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - -static inline __attribute__((always_inline)) IO_REG_TYPE directRead(IO_REG_TYPE pin) { - #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 - return (GPIO.in.val >> pin) & 0x1; - #else // plain ESP32 - if (pin < 32) - return (GPIO.in >> pin) & 0x1; - else if (pin < 46) - return (GPIO.in1.val >> (pin - 32)) & 0x1; - #endif - - return 0; -} - -static inline __attribute__((always_inline)) void directWriteLow(IO_REG_TYPE pin) { - #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 - GPIO.out_w1tc.val = ((uint32_t)1 << pin); - #else // plain ESP32 - if (pin < 32) - GPIO.out_w1tc = ((uint32_t)1 << pin); - else if (pin < 46) - GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); - #endif -} - -static inline __attribute__((always_inline)) void directWriteHigh(IO_REG_TYPE pin) { - #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 - GPIO.out_w1ts.val = ((uint32_t)1 << pin); - #else // plain ESP32 - if (pin < 32) - GPIO.out_w1ts = ((uint32_t)1 << pin); - else if (pin < 46) - GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); - #endif -} - -static inline __attribute__((always_inline)) void directModeInput(IO_REG_TYPE pin) { - #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 - GPIO.enable_w1tc.val = ((uint32_t)1 << (pin)); - #else - if (digitalPinIsValid(pin)) { - #if ESP_IDF_VERSION_MAJOR < 4 // IDF 3.x ESP32/PICO-D4 - uint32_t rtc_reg(rtc_gpio_desc[pin].reg); - - if (rtc_reg) // RTC pins PULL settings - { - ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); - ESP_REG(rtc_reg) = - ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); - } - #endif - // Input - if (pin < 32) - GPIO.enable_w1tc = ((uint32_t)1 << pin); - else - GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); - } - #endif -} - -static inline __attribute__((always_inline)) void directModeOutput(IO_REG_TYPE pin) { - #if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 - GPIO.enable_w1ts.val = ((uint32_t)1 << (pin)); - #else - if (digitalPinIsValid(pin) /* && pin <= 33 */) // Use Any In/Out pins - { - #if ESP_IDF_VERSION_MAJOR < 4 // IDF 3.x ESP32/PICO-D4 - uint32_t rtc_reg(rtc_gpio_desc[pin].reg); - - if (rtc_reg) // RTC pins PULL settings - { - ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); - ESP_REG(rtc_reg) = - ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); - } - #endif - // Output - if (pin < 32) - GPIO.enable_w1ts = ((uint32_t)1 << pin); - else // already validated to pins <= 33 - GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); - } - #endif -} - - #define DIRECT_READ(base, pin) directRead(pin) - #define DIRECT_WRITE_LOW(base, pin) directWriteLow(pin) - #define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(pin) - #define DIRECT_MODE_INPUT(base, pin) directModeInput(pin) - #define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(pin) - // https://github.com/PaulStoffregen/OneWire/pull/47 - // https://github.com/stickbreaker/OneWire/commit/6eb7fc1c11a15b6ac8c60e5671cf36eb6829f82c - #ifdef interrupts - #undef interrupts - #endif - #ifdef noInterrupts - #undef noInterrupts - #endif - #define noInterrupts() \ - { \ - portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED; \ - portENTER_CRITICAL(&mux) - #define interrupts() \ - portEXIT_CRITICAL(&mux); \ - } - // #warning "ESP32 OneWire testing" - -#elif defined(ARDUINO_ARCH_STM32) - #define PIN_TO_BASEREG(pin) (0) - #define PIN_TO_BITMASK(pin) ((uint32_t)digitalPinToPinName(pin)) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, pin) digitalReadFast((PinName)pin) - #define DIRECT_WRITE_LOW(base, pin) digitalWriteFast((PinName)pin, LOW) - #define DIRECT_WRITE_HIGH(base, pin) digitalWriteFast((PinName)pin, HIGH) - #define DIRECT_MODE_INPUT(base, pin) \ - pin_function((PinName)pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)) - #define DIRECT_MODE_OUTPUT(base, pin) \ - pin_function((PinName)pin, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0)) - -#elif defined(__SAMD21G18A__) - #define PIN_TO_BASEREG(pin) portModeRegister(digitalPinToPort(pin)) - #define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, mask) (((*((base) + 8)) & (mask)) ? 1 : 0) - #define DIRECT_MODE_INPUT(base, mask) ((*((base) + 1)) = (mask)) - #define DIRECT_MODE_OUTPUT(base, mask) ((*((base) + 2)) = (mask)) - #define DIRECT_WRITE_LOW(base, mask) ((*((base) + 5)) = (mask)) - #define DIRECT_WRITE_HIGH(base, mask) ((*((base) + 6)) = (mask)) - -#elif defined(__ASR6501__) - #define PIN_IN_PORT(pin) (pin % PIN_NUMBER_IN_PORT) - #define PORT_FROM_PIN(pin) (pin / PIN_NUMBER_IN_PORT) - #define PORT_OFFSET(port) (PORT_REG_SHFIT * port) - #define PORT_ADDRESS(pin) (CYDEV_GPIO_BASE + PORT_OFFSET(PORT_FROM_PIN(pin))) - - #define PIN_TO_BASEREG(pin) (0) - #define PIN_TO_BITMASK(pin) (pin) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, pin) CY_SYS_PINS_READ_PIN(PORT_ADDRESS(pin) + 4, PIN_IN_PORT(pin)) - #define DIRECT_WRITE_LOW(base, pin) CY_SYS_PINS_CLEAR_PIN(PORT_ADDRESS(pin), PIN_IN_PORT(pin)) - #define DIRECT_WRITE_HIGH(base, pin) CY_SYS_PINS_SET_PIN(PORT_ADDRESS(pin), PIN_IN_PORT(pin)) - #define DIRECT_MODE_INPUT(base, pin) \ - CY_SYS_PINS_SET_DRIVE_MODE(PORT_ADDRESS(pin) + 8, PIN_IN_PORT(pin), CY_SYS_PINS_DM_DIG_HIZ) - #define DIRECT_MODE_OUTPUT(base, pin) \ - CY_SYS_PINS_SET_DRIVE_MODE(PORT_ADDRESS(pin) + 8, PIN_IN_PORT(pin), CY_SYS_PINS_DM_STRONG) - -#elif defined(RBL_NRF51822) - #define PIN_TO_BASEREG(pin) (0) - #define PIN_TO_BITMASK(pin) (pin) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, pin) nrf_gpio_pin_read(pin) - #define DIRECT_WRITE_LOW(base, pin) nrf_gpio_pin_clear(pin) - #define DIRECT_WRITE_HIGH(base, pin) nrf_gpio_pin_set(pin) - #define DIRECT_MODE_INPUT(base, pin) nrf_gpio_cfg_input(pin, NRF_GPIO_PIN_NOPULL) - #define DIRECT_MODE_OUTPUT(base, pin) nrf_gpio_cfg_output(pin) - -#elif defined(__arc__) /* Arduino101/Genuino101 specifics */ - - #include "scss_registers.h" - #include "portable.h" - #include "avr/pgmspace.h" - - #define GPIO_ID(pin) (g_APinDescription[pin].ulGPIOId) - #define GPIO_TYPE(pin) (g_APinDescription[pin].ulGPIOType) - #define GPIO_BASE(pin) (g_APinDescription[pin].ulGPIOBase) - #define DIR_OFFSET_SS 0x01 - #define DIR_OFFSET_SOC 0x04 - #define EXT_PORT_OFFSET_SS 0x0A - #define EXT_PORT_OFFSET_SOC 0x50 - - /* GPIO registers base address */ - #define PIN_TO_BASEREG(pin) ((volatile uint32_t *)g_APinDescription[pin].ulGPIOBase) - #define PIN_TO_BITMASK(pin) pin - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - -static inline __attribute__((always_inline)) IO_REG_TYPE directRead(volatile IO_REG_TYPE *base, - IO_REG_TYPE pin) { - IO_REG_TYPE ret; - if (SS_GPIO == GPIO_TYPE(pin)) { - ret = READ_ARC_REG(((IO_REG_TYPE)base + EXT_PORT_OFFSET_SS)); - } else { - ret = MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, EXT_PORT_OFFSET_SOC); - } - return ((ret >> GPIO_ID(pin)) & 0x01); -} - -static inline __attribute__((always_inline)) void directModeInput(volatile IO_REG_TYPE *base, - IO_REG_TYPE pin) { - if (SS_GPIO == GPIO_TYPE(pin)) { - WRITE_ARC_REG(READ_ARC_REG((((IO_REG_TYPE)base) + DIR_OFFSET_SS)) & ~(0x01 << GPIO_ID(pin)), - ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); - } else { - MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, DIR_OFFSET_SOC) &= ~(0x01 << GPIO_ID(pin)); - } -} - -static inline __attribute__((always_inline)) void directModeOutput(volatile IO_REG_TYPE *base, - IO_REG_TYPE pin) { - if (SS_GPIO == GPIO_TYPE(pin)) { - WRITE_ARC_REG(READ_ARC_REG(((IO_REG_TYPE)(base) + DIR_OFFSET_SS)) | (0x01 << GPIO_ID(pin)), - ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); - } else { - MMIO_REG_VAL_FROM_BASE((IO_REG_TYPE)base, DIR_OFFSET_SOC) |= (0x01 << GPIO_ID(pin)); - } -} - -static inline __attribute__((always_inline)) void directWriteLow(volatile IO_REG_TYPE *base, - IO_REG_TYPE pin) { - if (SS_GPIO == GPIO_TYPE(pin)) { - WRITE_ARC_REG(READ_ARC_REG(base) & ~(0x01 << GPIO_ID(pin)), base); - } else { - MMIO_REG_VAL(base) &= ~(0x01 << GPIO_ID(pin)); - } -} - -static inline __attribute__((always_inline)) void directWriteHigh(volatile IO_REG_TYPE *base, - IO_REG_TYPE pin) { - if (SS_GPIO == GPIO_TYPE(pin)) { - WRITE_ARC_REG(READ_ARC_REG(base) | (0x01 << GPIO_ID(pin)), base); - } else { - MMIO_REG_VAL(base) |= (0x01 << GPIO_ID(pin)); - } -} - - #define DIRECT_READ(base, pin) directRead(base, pin) - #define DIRECT_MODE_INPUT(base, pin) directModeInput(base, pin) - #define DIRECT_MODE_OUTPUT(base, pin) directModeOutput(base, pin) - #define DIRECT_WRITE_LOW(base, pin) directWriteLow(base, pin) - #define DIRECT_WRITE_HIGH(base, pin) directWriteHigh(base, pin) - -#elif defined(__riscv) - - /* - * Tested on highfive1 - * - * Stable results are achieved operating in the - * two high speed modes of the highfive1. It - * seems to be less reliable in slow mode. - */ - #define PIN_TO_BASEREG(pin) (0) - #define PIN_TO_BITMASK(pin) digitalPinToBitMask(pin) - #define IO_REG_TYPE uint32_t - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - -static inline __attribute__((always_inline)) IO_REG_TYPE directRead(IO_REG_TYPE mask) { - return ((GPIO_REG(GPIO_INPUT_VAL) & mask) != 0) ? 1 : 0; -} - -static inline __attribute__((always_inline)) void directModeInput(IO_REG_TYPE mask) { - GPIO_REG(GPIO_OUTPUT_XOR) &= ~mask; - GPIO_REG(GPIO_IOF_EN) &= ~mask; - - GPIO_REG(GPIO_INPUT_EN) |= mask; - GPIO_REG(GPIO_OUTPUT_EN) &= ~mask; -} - -static inline __attribute__((always_inline)) void directModeOutput(IO_REG_TYPE mask) { - GPIO_REG(GPIO_OUTPUT_XOR) &= ~mask; - GPIO_REG(GPIO_IOF_EN) &= ~mask; - - GPIO_REG(GPIO_INPUT_EN) &= ~mask; - GPIO_REG(GPIO_OUTPUT_EN) |= mask; -} - -static inline __attribute__((always_inline)) void directWriteLow(IO_REG_TYPE mask) { - GPIO_REG(GPIO_OUTPUT_VAL) &= ~mask; -} - -static inline __attribute__((always_inline)) void directWriteHigh(IO_REG_TYPE mask) { - GPIO_REG(GPIO_OUTPUT_VAL) |= mask; -} - - #define DIRECT_READ(base, mask) directRead(mask) - #define DIRECT_WRITE_LOW(base, mask) directWriteLow(mask) - #define DIRECT_WRITE_HIGH(base, mask) directWriteHigh(mask) - #define DIRECT_MODE_INPUT(base, mask) directModeInput(mask) - #define DIRECT_MODE_OUTPUT(base, mask) directModeOutput(mask) - -#elif defined(__MBED__) - - #include "platform/mbed_critical.h" - #include "DigitalInOut.h" - #include - #define PIN_TO_BASEREG(pin) (0) - #define PIN_TO_BITMASK(pin) (new mbed::DigitalInOut(digitalPinToPinName(pin))) - #define IO_REG_TYPE mbed::DigitalInOut * - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, pin) (*pin) - #define DIRECT_WRITE_LOW(base, pin) (*pin = 0) - #define DIRECT_WRITE_HIGH(base, pin) (*pin = 1) - #define DIRECT_MODE_INPUT(base, pin) (pin->input()) - #define DIRECT_MODE_OUTPUT(base, pin) (pin->output()) - #undef interrupts - #undef noInterrupts - #define noInterrupts() \ - osThreadSetPriority(osThreadGetId(), \ - osPriorityRealtime) // core_util_critical_section_enter() - #define interrupts() \ - osThreadSetPriority(osThreadGetId(), osPriorityNormal) // core_util_critical_section_exit() - -#elif defined(ARDUINO_ARCH_MBED_RP2040) || defined(ARDUINO_ARCH_RP2040) - #define delayMicroseconds(time) busy_wait_us(time) - #define PIN_TO_BASEREG(pin) (0) - #define PIN_TO_BITMASK(pin) (pin) - #define IO_REG_TYPE unsigned int - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, pin) digitalRead(pin) - #define DIRECT_WRITE_LOW(base, pin) digitalWrite(pin, LOW) - #define DIRECT_WRITE_HIGH(base, pin) digitalWrite(pin, HIGH) - #define DIRECT_MODE_INPUT(base, pin) pinMode(pin, INPUT) - #define DIRECT_MODE_OUTPUT(base, pin) pinMode(pin, OUTPUT) - #warning \ - "OneWire. RP2040 in Fallback mode. Using API calls for pinMode,digitalRead and digitalWrite." - -#else - #define PIN_TO_BASEREG(pin) (0) - #define PIN_TO_BITMASK(pin) (pin) - #define IO_REG_TYPE unsigned int - #define IO_REG_BASE_ATTR - #define IO_REG_MASK_ATTR - #define DIRECT_READ(base, pin) digitalRead(pin) - #define DIRECT_WRITE_LOW(base, pin) digitalWrite(pin, LOW) - #define DIRECT_WRITE_HIGH(base, pin) digitalWrite(pin, HIGH) - #define DIRECT_MODE_INPUT(base, pin) pinMode(pin, INPUT) - #define DIRECT_MODE_OUTPUT(base, pin) pinMode(pin, OUTPUT) - #warning \ - "OneWire. Fallback mode. Using API calls for pinMode,digitalRead and digitalWrite. Operation of this library is not guaranteed on this architecture." - -#endif - -#endif diff --git a/libraries/OneWire/util/OneWire_direct_regtype.h b/libraries/OneWire/util/OneWire_direct_regtype.h deleted file mode 100644 index 12200c13..00000000 --- a/libraries/OneWire/util/OneWire_direct_regtype.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef OneWire_Direct_RegType_h -#define OneWire_Direct_RegType_h - -#include - -// Platform specific I/O register type - -#if defined(__AVR__) - #define IO_REG_TYPE uint8_t - -#elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK66FX1M0__) || \ - defined(__MK64FX512__) - #define IO_REG_TYPE uint8_t - -#elif defined(__IMXRT1052__) || defined(__IMXRT1062__) - #define IO_REG_TYPE uint32_t - -#elif defined(__MKL26Z64__) - #define IO_REG_TYPE uint8_t - -#elif defined(__SAM3X8E__) || defined(__SAM3A8C__) || defined(__SAM3A4C__) - #define IO_REG_TYPE uint32_t - -#elif defined(__PIC32MX__) - #define IO_REG_TYPE uint32_t - -#elif defined(ARDUINO_ARCH_ESP8266) - #define IO_REG_TYPE uint32_t - -#elif defined(ARDUINO_ARCH_ESP32) - #define IO_REG_TYPE uint32_t - #define IO_REG_MASK_ATTR - -#elif defined(ARDUINO_ARCH_STM32) - #define IO_REG_TYPE uint32_t - -#elif defined(__SAMD21G18A__) - #define IO_REG_TYPE uint32_t - -#elif defined(__ASR6501__) - #define IO_REG_TYPE uint32_t - -#elif defined(RBL_NRF51822) - #define IO_REG_TYPE uint32_t - -#elif defined(__arc__) /* Arduino101/Genuino101 specifics */ - #define IO_REG_TYPE uint32_t - -#elif defined(__MBED__) - #include "DigitalInOut.h" - #define IO_REG_TYPE mbed::DigitalInOut * - -#elif defined(__riscv) - #define IO_REG_TYPE uint32_t - -#else - #define IO_REG_TYPE unsigned int - -#endif -#endif From 5dc22aea186e39f58503b003fc8554a10fd32139 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 22 Sep 2025 16:48:42 +0200 Subject: [PATCH 278/366] config/: Uncomment onewire test. Signed-off-by: zhanglinjing --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index 9adbc78a..3fa51d9c 100644 --- a/config/user.yml +++ b/config/user.yml @@ -26,7 +26,7 @@ unit-test: - unit-test-analog-io-dac-4700 - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 - # - unit-test-onewire-DS18x20 + - unit-test-onewire-DS18x20-4700 # - unit-test-can-1400-2go From b763e356cdd155fba832709140d3a65eef650dcf Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 23 Sep 2025 10:03:55 +0530 Subject: [PATCH 279/366] extras: Added core tests. Signed-off-by: MDin --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index a0c1c101..ac7f3ee8 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit a0c1c10190d20bf7c828f76ea0ee78c5f5bd42d4 +Subproject commit ac7f3ee86566a2c8188bf118daaeaded50430312 From c14b39be3a49a72a89fe39e1fffbdb4f013115c7 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 23 Sep 2025 16:05:18 +0530 Subject: [PATCH 280/366] extras: Updated submodule. Signed-off-by: MDin --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index ac7f3ee8..add5e6a2 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit ac7f3ee86566a2c8188bf118daaeaded50430312 +Subproject commit add5e6a22cbfe8c9514d447ca3eea12ee360aff7 From 36e34a6ab4595e2b0d095d0ce5a86bbc16d4ee41 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 23 Sep 2025 21:28:02 +0530 Subject: [PATCH 281/366] extras: Added arduino core tests. Signed-off-by: MDin --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index add5e6a2..10160923 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit add5e6a22cbfe8c9514d447ca3eea12ee360aff7 +Subproject commit 10160923d9772adce7ae6c7ab00ca9e0be2cb359 From de1a117b157e9b57ab395c0e17d8fe3221afb32a Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 24 Sep 2025 16:25:26 +0200 Subject: [PATCH 282/366] platform.txt: Fix a stupid typo/bug. Signed-off-by: zhanglinjing --- platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index 58a4b6ab..d844c9fa 100644 --- a/platform.txt +++ b/platform.txt @@ -49,7 +49,7 @@ compiler.cmsis_include.path={compiler.xmclib_include.path}/CMSIS/Include compiler.nn_include.path={compiler.xmclib_include.path}/CMSIS/NN/Include compiler.dsp_include.path={compiler.xmclib_include.path}/CMSIS/DSP/Include -compiler.arduino_core.path={runtime.platform.path}/cores/arduino/api +compiler.arduino_core.path={runtime.platform.path}/cores/xmc/api compiler.arduino_core_dep.path={compiler.arduino_core.path}/deprecated compiler.arduino_core_dep_avr.path={compiler.arduino_core.path}/deprecated-avr-comp/avr compiler.arduino_core_api.path= "-I{compiler.arduino_core_dep_avr.path}" "-I{compiler.arduino_core_dep.path}" From 9c03e87578eeb6e4b26a8cf9fd63c2b07ded66a2 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 25 Sep 2025 14:36:48 +0530 Subject: [PATCH 283/366] cores/xmc: Declared sbrk function. Signed-off-by: MDin --- cores/xmc/main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cores/xmc/main.cpp b/cores/xmc/main.cpp index 0ac292cd..144aee4f 100644 --- a/cores/xmc/main.cpp +++ b/cores/xmc/main.cpp @@ -26,6 +26,12 @@ //**************************************************************************** #include "Arduino.h" +// work around to use new operator +extern "C" void *_sbrk(int incr); +void dummy_sbrk_caller() __attribute__((__used__)); + +void dummy_sbrk_caller() { _sbrk(0); } + // Weak empty variant initialization function. // May be redefined by variant files. void initVariant() __attribute__((weak)); From 00894ef383e40d07b62ea0f70a175a0f51962632 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 25 Sep 2025 16:01:39 +0530 Subject: [PATCH 284/366] config: Enabled CAN test for 1400. Signed-off-by: MDin --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index 3fa51d9c..db318c2f 100644 --- a/config/user.yml +++ b/config/user.yml @@ -27,7 +27,7 @@ unit-test: - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 - # - unit-test-can-1400-2go + - unit-test-can-1400-2go # - unit-test-digital-io-1400 From ee0ee1c4548413c58f36d0c203abbf1efce842d4 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 25 Sep 2025 16:22:14 +0530 Subject: [PATCH 285/366] variants/XMC1400/config/KIT_XMC14_2GO: Uncomment CAN pin configuration. Signed-off-by: MDin --- .../config/KIT_XMC14_2GO/pins_arduino.h | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 2aaa534c..4632281d 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -341,27 +341,27 @@ XMC_I2C_t XMC_I2C_0 = {.channel = XMC_I2C0_CH1, // .protocol_irq_service_request = 2, // .protocol_irq_source = XMC_SCU_IRQCTRL_USIC1_SR2_IRQ11}; - // // XMC CAN instance - // #ifdef CAN_xmc - // XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE0, - // .can_node_num = XMC_NODE_NUM_0, - // .can_clock = XMC_CAN_CANCLKSRC_MCLK, - // .can_frequency = (uint32_t)48000000, - // .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, - // .rx_config = - // { - // .mode = XMC_GPIO_MODE_INPUT_TRISTATE, - // }, - // .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, - // .tx_config = - // { - // .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, - // }, - // .node_input = CAN_NODE0_RXD_P1_1, - // .irq_num = CAN0_3_IRQn, - // .irq_service_request = 3, - // .irq_source = XMC_SCU_IRQCTRL_CAN0_SR3_IRQ7}; - // #endif + // XMC CAN instance + #ifdef CAN_xmc +XMC_ARD_CAN_t XMC_CAN_0 = {.can_node = CAN_NODE0, + .can_node_num = XMC_NODE_NUM_0, + .can_clock = XMC_CAN_CANCLKSRC_MCLK, + .can_frequency = (uint32_t)48000000, + .rx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)1}, + .rx_config = + { + .mode = XMC_GPIO_MODE_INPUT_TRISTATE, + }, + .tx = {.port = (XMC_GPIO_PORT_t *)PORT1_BASE, .pin = (uint8_t)0}, + .tx_config = + { + .mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT9, + }, + .node_input = CAN_NODE0_RXD_P1_1, + .irq_num = CAN0_3_IRQn, + .irq_service_request = 3, + .irq_source = XMC_SCU_IRQCTRL_CAN0_SR3_IRQ7}; + #endif // Serial Interrupt and event handling #ifdef __cplusplus From cf2f4872556f3e5597c518b1828988800fbf7ff2 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 25 Sep 2025 16:55:04 +0530 Subject: [PATCH 286/366] config: Comment CAN test. Signed-off-by: MDin --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index db318c2f..3fa51d9c 100644 --- a/config/user.yml +++ b/config/user.yml @@ -27,7 +27,7 @@ unit-test: - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 - - unit-test-can-1400-2go + # - unit-test-can-1400-2go # - unit-test-digital-io-1400 From 6c44f3b746e48fbb0386c84464eacc9bd21138ef Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 16 Oct 2025 16:44:23 +0200 Subject: [PATCH 287/366] config/: Add can tests. Signed-off-by: zhanglinjing --- config/project.yml | 12 +++++++++++- config/user.yml | 3 ++- extras/arduino-core-tests | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/config/project.yml b/config/project.yml index 337d9912..92b66fc2 100644 --- a/config/project.yml +++ b/config/project.yml @@ -247,11 +247,21 @@ unit-test: query: iic_ping_pong_single_board == '2:1' working_dir: extras/arduino-core-tests - unit-test-can-1400-2go: + unit-test-can-single-1400-2go: - description: Compiling, flashing and monitoring CAN unit test. command: make test_can_single query: can_single_board == '1:1' working_dir: extras/arduino-core-tests + unit-test-can-multi-1400-2go: + - description: Compiling, flashing and monitoring can node 1 test. + command: make test_can_connected2_node1 + query: can_multiple_boards_node1 == '1:1' + working_dir: extras/arduino-core-tests + + - description: Compiling, flashing and monitoring can node 2 test. + command: make test_can_connected2_node2 + query: can_multiple_boards_node2 == '1:1' + working_dir: extras/arduino-core-tests \ No newline at end of file diff --git a/config/user.yml b/config/user.yml index 3fa51d9c..63802f81 100644 --- a/config/user.yml +++ b/config/user.yml @@ -27,7 +27,8 @@ unit-test: - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 - # - unit-test-can-1400-2go + - unit-test-can-single-1400-2go + - unit-test-can-multi-1400-2go # - unit-test-digital-io-1400 diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index 10160923..664ac9fc 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit 10160923d9772adce7ae6c7ab00ca9e0be2cb359 +Subproject commit 664ac9fc93311ee496014e4937dd84bc87515c53 From 5db2875b2b1da7c9179e5e5f6dc5218dd59c7c9b Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Fri, 17 Oct 2025 16:40:34 +0200 Subject: [PATCH 288/366] extras/: Update arduino-core-tests. Signed-off-by: zhanglinjing --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index 664ac9fc..e996773f 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit 664ac9fc93311ee496014e4937dd84bc87515c53 +Subproject commit e996773f2ec622f1f3d4506f3ac658d0b7c204c7 From 4895d6c929d1019e97a36e3928dcde138e8d49d5 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 23 Oct 2025 11:02:19 +0530 Subject: [PATCH 289/366] extras: Updated submodules. Signed-off-by: MDin --- extras/arduino-core-api | 2 +- extras/arduino-devops | 2 +- extras/arduino-examples | 2 +- extras/makers-devops | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extras/arduino-core-api b/extras/arduino-core-api index 4a02bfc0..0f4e57ea 160000 --- a/extras/arduino-core-api +++ b/extras/arduino-core-api @@ -1 +1 @@ -Subproject commit 4a02bfc0a924e1fec34c3bb82ffd5dfba7643a0c +Subproject commit 0f4e57ea193a00163ae59f0f0ff478feae7eb5db diff --git a/extras/arduino-devops b/extras/arduino-devops index 267471c7..b086dd5a 160000 --- a/extras/arduino-devops +++ b/extras/arduino-devops @@ -1 +1 @@ -Subproject commit 267471c79da2e7da81759d27b519da3507b5a563 +Subproject commit b086dd5a1d1ef117677cb292b6b0821628eed7de diff --git a/extras/arduino-examples b/extras/arduino-examples index 4901be04..f2bf63b4 160000 --- a/extras/arduino-examples +++ b/extras/arduino-examples @@ -1 +1 @@ -Subproject commit 4901be04d38d690efefedbed271d2eb534512436 +Subproject commit f2bf63b4499fdd984891b6dff074732f3e9effaf diff --git a/extras/makers-devops b/extras/makers-devops index 663d0491..e1bf7a3d 160000 --- a/extras/makers-devops +++ b/extras/makers-devops @@ -1 +1 @@ -Subproject commit 663d04911cd3d2b1191be6fc7a08f83c38ed49f7 +Subproject commit e1bf7a3d928d88948bc18be8e5d961d650ad6943 From e220118a151d4e1523bdce755e2998fb0d0919f3 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 23 Oct 2025 11:02:56 +0530 Subject: [PATCH 290/366] variants: Added macro for reset. Signed-off-by: MDin --- variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h index 4632281d..03410783 100644 --- a/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC14_2GO/pins_arduino.h @@ -58,6 +58,8 @@ extern const uint8_t NUM_ANALOG_INPUTS; // Indicate unit has RTC/Alarm #define HAS_RTC 1 +// Indicate variant has a GPIO pin used for Reset pin +#define HAS_GPIO_RESET 1 // Defines will be either set by ArduinoIDE in the menu or manually #ifdef SERIAL_HOSTPC From bb40f7bcd06dbdcd98c8b94f97f26409c2b80b72 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 27 Oct 2025 09:32:43 +0530 Subject: [PATCH 291/366] extras: Checkout submodule tag. Signed-off-by: MDin --- extras/arduino-core-api | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-api b/extras/arduino-core-api index 0f4e57ea..cd91833d 160000 --- a/extras/arduino-core-api +++ b/extras/arduino-core-api @@ -1 +1 @@ -Subproject commit 0f4e57ea193a00163ae59f0f0ff478feae7eb5db +Subproject commit cd91833d90b4fe50e428021ba5051e2b7ceafc84 From 2f45802fa3103025b1be36bd9381d5673a138ea9 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 13 Oct 2025 11:06:52 +0530 Subject: [PATCH 292/366] config: Enabled 1400 tests. Signed-off-by: MDin --- config/user.yml | 18 +++++++++++------- extras/arduino-core-api | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/config/user.yml b/config/user.yml index 63802f81..445a2fda 100644 --- a/config/user.yml +++ b/config/user.yml @@ -31,10 +31,14 @@ unit-test: - unit-test-can-multi-1400-2go - # - unit-test-digital-io-1400 - # - unit-test-tone-1400 - # - unit-test-interrupts-1400 - # - unit-test-random-1400 - # - unit-test-time-1400 - # - unit-test-analog-io-pwm-1400 - # - unit-test-analog-io-adc-1400 \ No newline at end of file + # - unit-test-digital-io-1400 + # - unit-test-tone-1400 + # - unit-test-interrupts-1400 + - unit-test-random-1400 + - unit-test-time-1400 + - unit-test-iic-pingpong-1400 + - unit-test-spi-single-pingpong-1400 + # - unit-test-pulse-1400 + - unit-test-onewire-DS18x20-1400 + # - unit-test-analog-io-pwm-1400 + # - unit-test-analog-io-adc-1400 \ No newline at end of file diff --git a/extras/arduino-core-api b/extras/arduino-core-api index cd91833d..0f4e57ea 160000 --- a/extras/arduino-core-api +++ b/extras/arduino-core-api @@ -1 +1 @@ -Subproject commit cd91833d90b4fe50e428021ba5051e2b7ceafc84 +Subproject commit 0f4e57ea193a00163ae59f0f0ff478feae7eb5db From 8ccd2ab7d9d3ef6dc2b044f70601a565fa6c5ea9 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 17 Oct 2025 10:01:16 +0530 Subject: [PATCH 293/366] tests: Modified pin configuration. Signed-off-by: MDin --- tests/test_config.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index 60d97248..989cc88c 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -17,14 +17,14 @@ #define SPI_TRANSFER_DELAY_US 2000 // Test Pin Definitions - #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 - #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 - #define TEST_PIN_SYNC_IO 4 // IO_1 - #define TEST_PIN_PULSE 5 // IO_2 - #define TEST_PIN_SPI_SSEL 10 // IO_0 + #define TEST_PIN_SYNC_IO 4 // IO_1 + #define TEST_PIN_SPI_SSEL 10 // IO_0 #define TEST_PIN_ONEWIRE 7 #if defined(KIT_XMC47_RELAX) + #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 + #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 + #define TEST_PIN_PULSE 5 // IO_2 #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider @@ -35,6 +35,11 @@ #define TEST_PIN_ANALOG_IO_DAC 53 #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 + #elif defined(KIT_XMC1400_ARDUINO) + #define TEST_PIN_DIGITAL_IO_OUTPUT 4 + #define TEST_PIN_DIGITAL_IO_INPUT 25 + #define TEST_PIN_PULSE 6 // IO_2 + #elif defined(KIT_XMC14_2GO) #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd From 765ba6fb3237c4dd9637a0722611c2bd2d7a5266 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 17 Oct 2025 10:01:53 +0530 Subject: [PATCH 294/366] variants: Modified interrupt pin. Signed-off-by: MDin --- .../XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h index 52240066..3a02c8ac 100644 --- a/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h +++ b/variants/XMC1400/config/KIT_XMC1400_ARDUINO/pins_arduino.h @@ -109,10 +109,10 @@ extern uint8_t SCK; #define LED3 26 #define LED_BUILTIN LED1 -#define EXT_INTR_0 3 -#define EXT_INTR_1 25 +#define EXT_INTR_0 25 +#define EXT_INTR_1 3 -#define digitalPinToInterrupt(p) ((p) == 3 ? 0 : ((p) == 25 ? 1 : -1)) +#define digitalPinToInterrupt(p) ((p) == 25 ? 0 : ((p) == 3 ? 1 : -1)) /* Mapping interrupt handlers. Notice that XMC1400 can have interrupt handlers working in 3 modes, the defines below assumes the mode A. For details refer to assembly file and reference manual. @@ -180,8 +180,8 @@ bool gpio_current_value[NUM_DIGITAL] = {false}; ; const XMC_PIN_INTERRUPT_t mapping_interrupt[] = { - /* 0 */ {CCU40, CCU40_CC41, 1, 1, CCU40_IN1_U0C1_DX2INS}, - /* 1 */ {CCU40, CCU40_CC40, 0, 0, CCU40_IN0_U0C0_DX2INS}}; + /* 0 */ {CCU40, CCU40_CC40, 0, 0, CCU40_IN0_U0C0_DX2INS}, + /* 1 */ {CCU40, CCU40_CC41, 1, 1, CCU40_IN1_U0C1_DX2INS}}; const uint8_t NUM_INTERRUPT = (sizeof(mapping_interrupt) / sizeof(XMC_PIN_INTERRUPT_t)); /* Mapping of Arduino Pins to PWM4 channels as pin and index in PWM4 channel From 9161999deb80f4f0055f32c7cdfb5a8ad4e46c56 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 17 Oct 2025 11:59:37 +0530 Subject: [PATCH 295/366] tests: Added PWM. Signed-off-by: MDin --- config/project.yml | 70 ++++++++++++++++++++++++++++----------------- config/user.yml | 19 ++++++------ tests/test_config.h | 9 +++++- 3 files changed, 60 insertions(+), 38 deletions(-) diff --git a/config/project.yml b/config/project.yml index 92b66fc2..3c0a23e7 100644 --- a/config/project.yml +++ b/config/project.yml @@ -194,17 +194,6 @@ unit-test: query: onewire_DS18x20_board == '1:1' working_dir: extras/arduino-core-tests - unit-test-iic-pingpong-1400: - - description: Compiling, flashing and monitoring I2C pingpong slave unit test. - command: make test_wire_connected2_slavepingpong - query: iic_ping_pong_multiple_boards_slave == '2:1' - working_dir: extras/arduino-core-tests - - - description: Compiling, flashing and monitoring I2C pingpong master unit test. - command: make test_wire_connected2_masterpingpong - query: iic_ping_pong_multiple_boards_master == '2:1' - working_dir: extras/arduino-core-tests - unit-test-digital-io-1400: - description: Compiling, flashing and monitoring digital IO unit test. command: make test_digitalio_single @@ -241,27 +230,56 @@ unit-test: query: analogio_pwm_single_board == '2:1' working_dir: extras/arduino-core-tests - unit-test-iic-1400: - - description: Compiling, flashing and monitoring timer unit test. - command: make test_wire_connected1_pingpong - query: iic_ping_pong_single_board == '2:1' + # unit-test-iic-1400: + # - description: Compiling, flashing and monitoring timer unit test. + # command: make test_wire_connected1_pingpong + # query: iic_ping_pong_single_board == '2:1' + # working_dir: extras/arduino-core-tests + unit-test-analog-io-adc-1400: + - description: Compiling, flashing and monitoring ADC unit test. + command: make test_analogio_adc + query: analogio_adc_single_board == '2:1' + working_dir: extras/arduino-core-tests + + unit-test-iic-pingpong-1400: + - description: Compiling, flashing and monitoring I2C pingpong slave unit test. + command: make test_wire_connected2_slavepingpong + query: iic_ping_pong_multiple_boards_slave == '2:1' + working_dir: extras/arduino-core-tests + + - description: Compiling, flashing and monitoring I2C pingpong master unit test. + command: make test_wire_connected2_masterpingpong + query: iic_ping_pong_multiple_boards_master == '2:1' + working_dir: extras/arduino-core-tests + + unit-test-pulse-1400: + - description: Compiling, flashing and monitoring pulse board1 unit test. + command: make test_pulse_board1 + query: adv_io_pulse_board1 == '2:1' + working_dir: extras/arduino-core-tests + + - description: Compiling, flashing and monitoring pulse board2 unit test. + command: make test_pulse_board2 + query: adv_io_pulse_board2 == '2:1' + working_dir: extras/arduino-core-tests + + unit-test-spi-single-pingpong-1400: + - description: Compiling, flashing and monitoring SPI pingpong single_board. + command: make test_spi_connected1_loopback + query: spi_ping_pong_single_board == '2:1' working_dir: extras/arduino-core-tests - unit-test-can-single-1400-2go: + unit-test-onewire-DS18x20-1400: + - description: Compiling, flashing and monitoring OneWire sensor DS18B20 data. + command: make test_onewire_DS18x20 + query: onewire_DS18x20_board == '2:1' + working_dir: extras/arduino-core-tests + + unit-test-can-1400-2go: - description: Compiling, flashing and monitoring CAN unit test. command: make test_can_single query: can_single_board == '1:1' working_dir: extras/arduino-core-tests - unit-test-can-multi-1400-2go: - - description: Compiling, flashing and monitoring can node 1 test. - command: make test_can_connected2_node1 - query: can_multiple_boards_node1 == '1:1' - working_dir: extras/arduino-core-tests - - - description: Compiling, flashing and monitoring can node 2 test. - command: make test_can_connected2_node2 - query: can_multiple_boards_node2 == '1:1' - working_dir: extras/arduino-core-tests \ No newline at end of file diff --git a/config/user.yml b/config/user.yml index 445a2fda..47a48db3 100644 --- a/config/user.yml +++ b/config/user.yml @@ -27,18 +27,15 @@ unit-test: - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 - - unit-test-can-single-1400-2go - - unit-test-can-multi-1400-2go - - - # - unit-test-digital-io-1400 - # - unit-test-tone-1400 - # - unit-test-interrupts-1400 - - unit-test-random-1400 - - unit-test-time-1400 + - unit-test-can-1400-2go + - unit-test-digital-io-1400 + - unit-test-tone-1400 - unit-test-iic-pingpong-1400 + - unit-test-interrupts-1400 + - unit-test-random-1400 - unit-test-spi-single-pingpong-1400 - # - unit-test-pulse-1400 + - unit-test-pulse-1400 + - unit-test-time-1400 - unit-test-onewire-DS18x20-1400 + - unit-test-analog-io-adc-1400 # - unit-test-analog-io-pwm-1400 - # - unit-test-analog-io-adc-1400 \ No newline at end of file diff --git a/tests/test_config.h b/tests/test_config.h index 989cc88c..ad907755 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -38,7 +38,14 @@ #elif defined(KIT_XMC1400_ARDUINO) #define TEST_PIN_DIGITAL_IO_OUTPUT 4 #define TEST_PIN_DIGITAL_IO_INPUT 25 - #define TEST_PIN_PULSE 6 // IO_2 + #define TEST_PIN_PULSE 6 + + #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz + #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd + #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider + #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground + #define TEST_ADC_MAX_VALUE 1023 + #define TEST_ADC_RESOLUTION 10 // ADC resolution #elif defined(KIT_XMC14_2GO) #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz From 5a6055a5eab592e0f59633796942ad300363fb0f Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 28 Oct 2025 09:10:33 +0530 Subject: [PATCH 296/366] extras: Updated submodule. Signed-off-by: MDin --- extras/arduino-core-api | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-api b/extras/arduino-core-api index 0f4e57ea..cd91833d 160000 --- a/extras/arduino-core-api +++ b/extras/arduino-core-api @@ -1 +1 @@ -Subproject commit 0f4e57ea193a00163ae59f0f0ff478feae7eb5db +Subproject commit cd91833d90b4fe50e428021ba5051e2b7ceafc84 From 30d31cd613402924553e03a8d3be3ce143480c52 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 28 Oct 2025 16:18:47 +0530 Subject: [PATCH 297/366] config: Dummy commit. Signed-off-by: MDin --- config/user.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/user.yml b/config/user.yml index 47a48db3..ec15e7df 100644 --- a/config/user.yml +++ b/config/user.yml @@ -28,13 +28,13 @@ unit-test: - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 - unit-test-can-1400-2go - - unit-test-digital-io-1400 + # - unit-test-digital-io-1400 - unit-test-tone-1400 - unit-test-iic-pingpong-1400 - unit-test-interrupts-1400 - unit-test-random-1400 - unit-test-spi-single-pingpong-1400 - - unit-test-pulse-1400 + # - unit-test-pulse-1400 - unit-test-time-1400 - unit-test-onewire-DS18x20-1400 - unit-test-analog-io-adc-1400 From d76748b73f97c1620aedaddb44d4e8ea6b4890cb Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 29 Oct 2025 11:20:11 +0530 Subject: [PATCH 298/366] config: Disabled I2C test 4700. Signed-off-by: MDin --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index ec15e7df..fde4f54e 100644 --- a/config/user.yml +++ b/config/user.yml @@ -21,7 +21,7 @@ unit-test: - unit-test-analog-io-pwm-4700 - unit-test-pulse-4700 - unit-test-time-4700 - - unit-test-iic-4700 + # - unit-test-iic-4700 - unit-test-analog-io-adc-4700 - unit-test-analog-io-dac-4700 - unit-test-uart-4700 From e17067ee442ccdedac51f9cc040e10dc6434be7e Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 30 Oct 2025 10:15:31 +0100 Subject: [PATCH 299/366] extras/: Update makers-devops for hil deploy. Signed-off-by: zhanglinjing --- extras/makers-devops | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/makers-devops b/extras/makers-devops index e1bf7a3d..3a753bcd 160000 --- a/extras/makers-devops +++ b/extras/makers-devops @@ -1 +1 @@ -Subproject commit e1bf7a3d928d88948bc18be8e5d961d650ad6943 +Subproject commit 3a753bcd52246396b2c51c3392c13deb42f0216e From 76212b80ccef69dda14ce7610edb4cdc658666cf Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 30 Oct 2025 14:05:38 +0100 Subject: [PATCH 300/366] config/user.yml: Enable all 4700 tests. Signed-off-by: zhanglinjing --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index fde4f54e..ec15e7df 100644 --- a/config/user.yml +++ b/config/user.yml @@ -21,7 +21,7 @@ unit-test: - unit-test-analog-io-pwm-4700 - unit-test-pulse-4700 - unit-test-time-4700 - # - unit-test-iic-4700 + - unit-test-iic-4700 - unit-test-analog-io-adc-4700 - unit-test-analog-io-dac-4700 - unit-test-uart-4700 From bf26dd84986398923510cc1c967b33008b76d885 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Fri, 19 Sep 2025 17:21:07 +0200 Subject: [PATCH 301/366] tools: Integrate cortex debugger. Signed-off-by: wxyyy0117 --- tools/gen_launch.sh | 79 ++++++++++++++++++++++++ tools/vscode_profile/tasks.json | 106 ++++++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 tools/gen_launch.sh create mode 100644 tools/vscode_profile/tasks.json diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh new file mode 100644 index 00000000..ffac3035 --- /dev/null +++ b/tools/gen_launch.sh @@ -0,0 +1,79 @@ +#!/bin/bash +# gen_launch.sh: Compile and generate launch.json for XMC boards +# Usage: ./gen_launch.sh +# Example: ./gen_launch.sh kit_xmc47_relax ~/output ~/build/build.ino + +set -e + + + +FQBN_FULL="$1" +BUILD_PATH="$2" +SKETCH_PATH="$3" +BOARDS_TXT="$HOME/Arduino/hardware/arduino-git/xmc/boards.txt" + +# Extract board name from FQBN (e.g. arduino-git:xmc:kit_xmc47_relax -> kit_xmc47_relax) +BOARD_NAME=$(echo "$FQBN_FULL" | awk -F: '{print $NF}') + +# Find arm-none-eabi-gdb +GDB_PATH=$(command -v arm-none-eabi-gdb) +if [ -z "$GDB_PATH" ]; then + # Try to find it under home directory only + GDB_PATH=$(find "$HOME" -type f -name arm-none-eabi-gdb 2>/dev/null | head -n 1) +fi +if [ -z "$GDB_PATH" ]; then + echo "arm-none-eabi-gdb not found in PATH or under your home directory." + exit 3 +fi + +if [[ -z "$FQBN_FULL" || -z "$BUILD_PATH" || -z "$SKETCH_PATH" ]]; then + echo "Usage: $0 " + exit 1 +fi + +# 1. Compile +arduino-cli compile -b "${FQBN_FULL}" --build-path "${BUILD_PATH}" "${SKETCH_PATH}" || exit 1 + +# 2. Parse boards.txt for variant and board.v using board name +VARIANT=$(grep "^${BOARD_NAME}\.build\.variant=" "$BOARDS_TXT" | cut -d= -f2) +BOARD_V=$(grep "^${BOARD_NAME}\.build\.board\.v=" "$BOARDS_TXT" | cut -d= -f2) + +if [[ -z "$VARIANT" || -z "$BOARD_V" ]]; then + echo "Could not find variant or board.v for $BOARD_NAME in $BOARDS_TXT" + exit 2 +fi + +DEVICE="${VARIANT}-${BOARD_V}" +EXECUTABLE="${BUILD_PATH}/build.ino.elf" + +# 3. Generate launch.json in xmc/.vscode +LAUNCH_DIR="../../.vscode" +if [ ! -d "$LAUNCH_DIR" ]; then + mkdir "$LAUNCH_DIR" +fi +if [ -f "$LAUNCH_DIR/launch.json" ]; then + rm "$LAUNCH_DIR/launch.json" +fi +cat > "$LAUNCH_DIR/launch.json" < Date: Fri, 19 Sep 2025 17:29:32 +0200 Subject: [PATCH 302/366] tools: Change sh address. Signed-off-by: wxyyy0117 --- tools/gen_launch.sh | 0 tools/vscode_profile/tasks.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 tools/gen_launch.sh diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh old mode 100644 new mode 100755 diff --git a/tools/vscode_profile/tasks.json b/tools/vscode_profile/tasks.json index f02a80bb..b65d8dd6 100644 --- a/tools/vscode_profile/tasks.json +++ b/tools/vscode_profile/tasks.json @@ -37,7 +37,7 @@ { "label": "Arduino Debug", "type": "shell", - "command": "${workspaceFolder}/extras/arduino-core-tests/gen_launch.sh", + "command": "${workspaceFolder}/tools/gen_launch.sh", "args": [ "${input:boardFqbn}", "${input:debugBuildPath}", From 7857287669adee10f87daa8feba6697c3be5ee05 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Mon, 22 Sep 2025 13:09:52 +0200 Subject: [PATCH 303/366] tools: Add optional parameters. Signed-off-by: wxyyy0117 --- tools/gen_launch.sh | 20 ++- tools/vscode_profile/tasks.json | 218 +++++++++++++++++--------------- 2 files changed, 121 insertions(+), 117 deletions(-) diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh index ffac3035..96d05e82 100755 --- a/tools/gen_launch.sh +++ b/tools/gen_launch.sh @@ -10,21 +10,15 @@ set -e FQBN_FULL="$1" BUILD_PATH="$2" SKETCH_PATH="$3" -BOARDS_TXT="$HOME/Arduino/hardware/arduino-git/xmc/boards.txt" +# Allow BOARDS_TXT as optional 4th parameter, default to original absolute path +BOARDS_TXT="${4:-$HOME/Arduino/hardware/arduino-git/xmc/boards.txt}" # Extract board name from FQBN (e.g. arduino-git:xmc:kit_xmc47_relax -> kit_xmc47_relax) BOARD_NAME=$(echo "$FQBN_FULL" | awk -F: '{print $NF}') -# Find arm-none-eabi-gdb -GDB_PATH=$(command -v arm-none-eabi-gdb) -if [ -z "$GDB_PATH" ]; then - # Try to find it under home directory only - GDB_PATH=$(find "$HOME" -type f -name arm-none-eabi-gdb 2>/dev/null | head -n 1) -fi -if [ -z "$GDB_PATH" ]; then - echo "arm-none-eabi-gdb not found in PATH or under your home directory." - exit 3 -fi + +# Allow GDB_PATH as optional 5th parameter, default to Infineon toolchain path +GDB_PATH="${5:-$HOME/.arduino15/packages/Infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb}" if [[ -z "$FQBN_FULL" || -z "$BUILD_PATH" || -z "$SKETCH_PATH" ]]; then echo "Usage: $0 " @@ -34,12 +28,13 @@ fi # 1. Compile arduino-cli compile -b "${FQBN_FULL}" --build-path "${BUILD_PATH}" "${SKETCH_PATH}" || exit 1 -# 2. Parse boards.txt for variant and board.v using board name + # 2. Parse boards.txt for variant and board.v using board name VARIANT=$(grep "^${BOARD_NAME}\.build\.variant=" "$BOARDS_TXT" | cut -d= -f2) BOARD_V=$(grep "^${BOARD_NAME}\.build\.board\.v=" "$BOARDS_TXT" | cut -d= -f2) if [[ -z "$VARIANT" || -z "$BOARD_V" ]]; then echo "Could not find variant or board.v for $BOARD_NAME in $BOARDS_TXT" + exit 2 fi @@ -75,5 +70,6 @@ cat > "$LAUNCH_DIR/launch.json" < Date: Mon, 22 Sep 2025 15:51:47 +0200 Subject: [PATCH 304/366] tools: Configure build elf and json path. Signed-off-by: wxyyy0117 --- tools/gen_launch.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh index 96d05e82..f5f2779a 100755 --- a/tools/gen_launch.sh +++ b/tools/gen_launch.sh @@ -39,12 +39,17 @@ if [[ -z "$VARIANT" || -z "$BOARD_V" ]]; then fi DEVICE="${VARIANT}-${BOARD_V}" -EXECUTABLE="${BUILD_PATH}/build.ino.elf" +EXECUTABLE=$(find "${BUILD_PATH}" -maxdepth 1 -type f -name "*.elf" | head -n 1) +if [[ -z "$EXECUTABLE" ]]; then + echo "No .elf executable found in $BUILD_PATH." + exit 3 +fi -# 3. Generate launch.json in xmc/.vscode -LAUNCH_DIR="../../.vscode" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +XMC_DIR="$(dirname "$SCRIPT_DIR")" +LAUNCH_DIR="$XMC_DIR/.vscode" if [ ! -d "$LAUNCH_DIR" ]; then - mkdir "$LAUNCH_DIR" + mkdir -p "$LAUNCH_DIR" fi if [ -f "$LAUNCH_DIR/launch.json" ]; then rm "$LAUNCH_DIR/launch.json" @@ -63,7 +68,7 @@ cat > "$LAUNCH_DIR/launch.json" < Date: Tue, 23 Sep 2025 15:38:59 +0200 Subject: [PATCH 305/366] docs: Update documentation. Signed-off-by: wxyyy0117 --- docs/development-instructions.rst | 20 ++++++++++++++++++++ tools/gen_launch.sh | 11 ++++++++--- tools/vscode_profile/tasks.json | 2 +- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/docs/development-instructions.rst b/docs/development-instructions.rst index de3ee20a..a232dbb8 100644 --- a/docs/development-instructions.rst +++ b/docs/development-instructions.rst @@ -124,6 +124,26 @@ Tests are located in ``tests/arduino-core-tests`` and included as submodule in t If you need to run these tests locally, you'll also need to download `GNU Make `_ . +Debugging (VS Code) +^^^^^^^^^^^^^^^^^^^^ +Debugging support described here is for Visual Studio Code. The Arduino IDE already provides a built-in debugger for supported boards. + +#. Install the `Cortex-Debug` extension in VS Code. +#. Copy the `tasks.json` file from `tools/vscode-profile` to the `.vscode` directory in your project root. +#. In VS Code, run the task: **Generate launch.json for debug (XMC)**. +#. Required parameters for this task: + * **fqbn**: Fully Qualified Board Name (e.g., `arduino-git:xmc:kit_xmc47_relax`) + * **build path**: Directory where the `.elf` file will be placed + * **example path**: Path to the sketch (`.ino` file) to debug +#. Optional parameters: + * **boards.txt path**: Path to a custom `boards.txt` file + * **gdb path**: Path to a custom GDB executable + +Refer to the documentation of your chosen debugger and scripts in the `tools/` folder for more details. + +.. note:: + If you encounter an error indicating that ``libncurses.so.5`` or a similar library cannot be found, please search online and install the appropriate package for your environment. + Release --------- Add a git tag in the format `Vx.y.z` (e.g. V3.3.0) to trigger the release process. diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh index f5f2779a..998b7155 100755 --- a/tools/gen_launch.sh +++ b/tools/gen_launch.sh @@ -1,7 +1,12 @@ #!/bin/bash # gen_launch.sh: Compile and generate launch.json for XMC boards -# Usage: ./gen_launch.sh -# Example: ./gen_launch.sh kit_xmc47_relax ~/output ~/build/build.ino +# Usage: ./gen_launch.sh [boards.txt] [gdb_path] +# : Fully Qualified Board Name (e.g. arduino-git:xmc:kit_xmc47_relax) +# : Directory where the .elf file will be placed +# : Path to the sketch (.ino) file +# [boards.txt] : (Optional) Path to boards.txt (default: $HOME/Arduino/hardware/arduino-git/xmc/boards.txt) +# [gdb_path] : (Optional) Path to GDB executable (default: $HOME/.arduino15/packages/Infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb) +# Example: ./gen_launch.sh arduino-git:xmc:kit_xmc47_relax ~/output ~/build/Blink.ino ~/Arduino/hardware/arduino-git/xmc/boards.txt /usr/bin/arm-none-eabi-gdb set -e @@ -21,7 +26,7 @@ BOARD_NAME=$(echo "$FQBN_FULL" | awk -F: '{print $NF}') GDB_PATH="${5:-$HOME/.arduino15/packages/Infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb}" if [[ -z "$FQBN_FULL" || -z "$BUILD_PATH" || -z "$SKETCH_PATH" ]]; then - echo "Usage: $0 " + echo "Usage: $0 [boards.txt] [gdb_path]" exit 1 fi diff --git a/tools/vscode_profile/tasks.json b/tools/vscode_profile/tasks.json index 73dd7d02..2356665b 100644 --- a/tools/vscode_profile/tasks.json +++ b/tools/vscode_profile/tasks.json @@ -83,7 +83,7 @@ { "id": "debugBuildPath", "type": "promptString", - "description": "Enter the build path for gen_launch.sh", + "description": "Enter the build path where the .elf file would be placed", "default": "${workspaceFolder}/extras/arduino-core-tests/build/output" }, { From 5f43b665add8149304b6a5d056a163160bd4c303 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Fri, 26 Sep 2025 13:33:45 +0200 Subject: [PATCH 306/366] tools: Change to Lowercase. Signed-off-by: wxyyy0117 --- tools/gen_launch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh index 998b7155..7efabf5c 100755 --- a/tools/gen_launch.sh +++ b/tools/gen_launch.sh @@ -23,7 +23,7 @@ BOARD_NAME=$(echo "$FQBN_FULL" | awk -F: '{print $NF}') # Allow GDB_PATH as optional 5th parameter, default to Infineon toolchain path -GDB_PATH="${5:-$HOME/.arduino15/packages/Infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb}" +GDB_PATH="${5:-$HOME/.arduino15/packages/infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb}" if [[ -z "$FQBN_FULL" || -z "$BUILD_PATH" || -z "$SKETCH_PATH" ]]; then echo "Usage: $0 [boards.txt] [gdb_path]" From 5e0b973645f20b92175e315623e28ae1a21a0dec Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Thu, 30 Oct 2025 13:28:21 +0100 Subject: [PATCH 307/366] tools: Make gen_launch.sh generic. Signed-off-by: wxyyy0117 --- docs/development-instructions.rst | 4 +- tools/gen_launch.sh | 123 ++++++++++++++++++++++------- tools/vscode_profile/task_xmc.json | 114 ++++++++++++++++++++++++++ 3 files changed, 210 insertions(+), 31 deletions(-) create mode 100644 tools/vscode_profile/task_xmc.json diff --git a/docs/development-instructions.rst b/docs/development-instructions.rst index a232dbb8..3f4d7ce8 100644 --- a/docs/development-instructions.rst +++ b/docs/development-instructions.rst @@ -129,12 +129,12 @@ Debugging (VS Code) Debugging support described here is for Visual Studio Code. The Arduino IDE already provides a built-in debugger for supported boards. #. Install the `Cortex-Debug` extension in VS Code. -#. Copy the `tasks.json` file from `tools/vscode-profile` to the `.vscode` directory in your project root. +#. Copy the `task_xmc.json` file from `tools/vscode-profile` to the `.vscode` directory and rename to `tasks.json` in your project root. #. In VS Code, run the task: **Generate launch.json for debug (XMC)**. #. Required parameters for this task: * **fqbn**: Fully Qualified Board Name (e.g., `arduino-git:xmc:kit_xmc47_relax`) * **build path**: Directory where the `.elf` file will be placed - * **example path**: Path to the sketch (`.ino` file) to debug + * **example path**: Path to the sketch (`.ino` file) to debug (for arduino-core-tests make sure it has been built at least once to generate the required build.ino) #. Optional parameters: * **boards.txt path**: Path to a custom `boards.txt` file * **gdb path**: Path to a custom GDB executable diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh index 7efabf5c..9ab54060 100755 --- a/tools/gen_launch.sh +++ b/tools/gen_launch.sh @@ -1,65 +1,129 @@ #!/bin/bash -# gen_launch.sh: Compile and generate launch.json for XMC boards +# gen_launch.sh: Compile and generate launch.json for XMC or PSoC6 boards # Usage: ./gen_launch.sh [boards.txt] [gdb_path] -# : Fully Qualified Board Name (e.g. arduino-git:xmc:kit_xmc47_relax) +# : Fully Qualified Board Name (e.g. infineon:psoc6:CY8CKIT_062S2_AI or arduino-git:xmc:kit_xmc47_relax) # : Directory where the .elf file will be placed # : Path to the sketch (.ino) file -# [boards.txt] : (Optional) Path to boards.txt (default: $HOME/Arduino/hardware/arduino-git/xmc/boards.txt) -# [gdb_path] : (Optional) Path to GDB executable (default: $HOME/.arduino15/packages/Infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb) -# Example: ./gen_launch.sh arduino-git:xmc:kit_xmc47_relax ~/output ~/build/Blink.ino ~/Arduino/hardware/arduino-git/xmc/boards.txt /usr/bin/arm-none-eabi-gdb +# [boards.txt] : (Optional) Path to boards.txt (default: inferred based on device) +# [gdb_path] : (Optional) Path to GDB executable (default: inferred based on device) set -e - - FQBN_FULL="$1" BUILD_PATH="$2" SKETCH_PATH="$3" -# Allow BOARDS_TXT as optional 4th parameter, default to original absolute path -BOARDS_TXT="${4:-$HOME/Arduino/hardware/arduino-git/xmc/boards.txt}" - -# Extract board name from FQBN (e.g. arduino-git:xmc:kit_xmc47_relax -> kit_xmc47_relax) -BOARD_NAME=$(echo "$FQBN_FULL" | awk -F: '{print $NF}') - - -# Allow GDB_PATH as optional 5th parameter, default to Infineon toolchain path -GDB_PATH="${5:-$HOME/.arduino15/packages/infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb}" if [[ -z "$FQBN_FULL" || -z "$BUILD_PATH" || -z "$SKETCH_PATH" ]]; then echo "Usage: $0 [boards.txt] [gdb_path]" exit 1 fi -# 1. Compile -arduino-cli compile -b "${FQBN_FULL}" --build-path "${BUILD_PATH}" "${SKETCH_PATH}" || exit 1 +# Get the script directory and package root +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PACKAGE_DIR="$(dirname "$SCRIPT_DIR")" + +# Detect device type based on FQBN +if [[ "$FQBN_FULL" == infineon:psoc6:* ]]; then + DEVICE_TYPE="psoc6" + BOARDS_TXT="${4:-$PACKAGE_DIR/boards.txt}" + GDB_PATH="${5:-$HOME/.arduino15/packages/Infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb}" +elif [[ "$FQBN_FULL" == arduino-git:xmc:* ]]; then + DEVICE_TYPE="xmc" + XMC_DIR="$(dirname "$SCRIPT_DIR")" + BOARDS_TXT="${4:-$XMC_DIR/boards.txt}" + GDB_PATH="${5:-$HOME/.arduino15/packages/infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb}" +else + echo "Unsupported device type in FQBN: $FQBN_FULL" + exit 1 +fi - # 2. Parse boards.txt for variant and board.v using board name -VARIANT=$(grep "^${BOARD_NAME}\.build\.variant=" "$BOARDS_TXT" | cut -d= -f2) -BOARD_V=$(grep "^${BOARD_NAME}\.build\.board\.v=" "$BOARDS_TXT" | cut -d= -f2) +# Extract board name from FQBN +BOARD_NAME=$(echo "$FQBN_FULL" | awk -F: '{print $NF}') -if [[ -z "$VARIANT" || -z "$BOARD_V" ]]; then - echo "Could not find variant or board.v for $BOARD_NAME in $BOARDS_TXT" +# Compile the sketch +arduino-cli compile -b "${FQBN_FULL}" --build-path "${BUILD_PATH}" "${SKETCH_PATH}" || exit 1 +# Parse boards.txt for variant and other parameters +VARIANT=$(grep "^${BOARD_NAME}\.build\.variant=" "$BOARDS_TXT" | cut -d= -f2) +if [[ -z "$VARIANT" ]]; then + echo "Could not find variant for $BOARD_NAME in $BOARDS_TXT" exit 2 fi -DEVICE="${VARIANT}-${BOARD_V}" +if [[ "$DEVICE_TYPE" == "xmc" ]]; then + BOARD_V=$(grep "^${BOARD_NAME}\.build\.board\.v=" "$BOARDS_TXT" | cut -d= -f2) + if [[ -z "$BOARD_V" ]]; then + echo "Could not find board.v for $BOARD_NAME in $BOARDS_TXT" + exit 2 + fi + DEVICE="${VARIANT}-${BOARD_V}" +else + DEVICE="${VARIANT}" +fi + +# Find the .elf executable EXECUTABLE=$(find "${BUILD_PATH}" -maxdepth 1 -type f -name "*.elf" | head -n 1) if [[ -z "$EXECUTABLE" ]]; then echo "No .elf executable found in $BUILD_PATH." exit 3 fi -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -XMC_DIR="$(dirname "$SCRIPT_DIR")" -LAUNCH_DIR="$XMC_DIR/.vscode" +# Create the .vscode directory and generate launch.json +LAUNCH_DIR="$PACKAGE_DIR/.vscode" if [ ! -d "$LAUNCH_DIR" ]; then mkdir -p "$LAUNCH_DIR" fi if [ -f "$LAUNCH_DIR/launch.json" ]; then rm "$LAUNCH_DIR/launch.json" fi -cat > "$LAUNCH_DIR/launch.json" < "$LAUNCH_DIR/launch.json" < "$LAUNCH_DIR/launch.json" < "$LAUNCH_DIR/launch.json" < Date: Thu, 30 Oct 2025 13:31:28 +0100 Subject: [PATCH 308/366] tools: Make gen_launch.sh generic. Signed-off-by: wxyyy0117 --- tools/vscode_profile/tasks.json | 114 -------------------------------- 1 file changed, 114 deletions(-) delete mode 100644 tools/vscode_profile/tasks.json diff --git a/tools/vscode_profile/tasks.json b/tools/vscode_profile/tasks.json deleted file mode 100644 index 2356665b..00000000 --- a/tools/vscode_profile/tasks.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "Arduino Build", - "type": "shell", - "command": "arduino-cli", - "args": [ - "compile", - "--fqbn", "${input:boardFqbn}", - "${input:examplePath}" - ], - "group": { - "kind": "build", - "isDefault": false - }, - "problemMatcher": [] - }, - { - "label": "Arduino Upload", - "type": "shell", - "command": "arduino-cli", - "args": [ - "upload", - // "--verbose", - "-p", "${input:port}", - "--fqbn", "${input:boardFqbn}", - "${input:examplePath}" - ], - "dependsOn": "Arduino Build", - "group": { - "kind": "build", - "isDefault": true - }, - "problemMatcher": [] - }, - { - "label": "Generate lauch.json for debug (XMC)", - "type": "shell", - "command": "${workspaceFolder}/tools/gen_launch.sh", - "args": [ - "${input:boardFqbn}", - "${input:debugBuildPath}", - "${input:examplePath}", - "${input:boardsTxtPath}", - "${input:gdbPath}" - ], - "group": { - "kind": "build", - "isDefault": false - }, - "problemMatcher": [], - "presentation": { - "echo": true, - "reveal": "always", - "focus": false, - "panel": "shared" - } - }, - { - "label": "Arduino Monitor", - "type": "shell", - "command": "arduino-cli", - "args": [ - "monitor", - "-p", "${input:port}", - "-c", "baudrate=115200" - ], - "group": { - "kind": "build", - "isDefault": false - }, - "problemMatcher": [] - } - ], - "inputs": [ - { - "id": "boardFqbn", - "type": "promptString", - "description": "Enter the FQBN (Fully Qualified Board Name) for the Arduino board", - "default": "arduino-git:xmc:kit_xmc47_relax" - }, - { - "id": "debugBuildPath", - "type": "promptString", - "description": "Enter the build path where the .elf file would be placed", - "default": "${workspaceFolder}/extras/arduino-core-tests/build/output" - }, - { - "id": "examplePath", - "type": "promptString", - "description": "Enter the path to the Arduino example sketch", - "default": "${workspaceFolder}/examples/bug/bug.ino" - }, - { - "id": "port", - "type": "promptString", - "description": "Enter the port for the Arduino board", - "default": "/dev/ttyACM0" - }, - { - "id": "boardsTxtPath", - "type": "promptString", - "description": "(Optional) Enter the path to boards.txt, or leave blank for default", - "default": "" - }, - { - "id": "gdbPath", - "type": "promptString", - "description": "(Optional) Enter the path to arm-none-eabi-gdb, or leave blank for default", - "default": "" - }, - ] - } \ No newline at end of file From bb6de5c81397948e6536f7862e78ece66fc6697e Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Thu, 30 Oct 2025 14:18:19 +0100 Subject: [PATCH 309/366] tools: Modify gen_launch.sh. Signed-off-by: wxyyy0117 --- tools/gen_launch.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh index 9ab54060..16cb0989 100755 --- a/tools/gen_launch.sh +++ b/tools/gen_launch.sh @@ -109,8 +109,7 @@ if [[ "$DEVICE_TYPE" == "psoc6" ]]; then "numberOfProcessors": 2, "targetProcessor": 1,// Set to 0 for the CM0+, set to 1 for the CM4 "postStartSessionCommands": [ - "monitor gdb_sync", - "stepi" + "continue" ], "overrideRestartCommands": [ "starti" From 16bdcafe350d7e1810659d29031ac20ca635c337 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Tue, 4 Nov 2025 13:45:50 +0100 Subject: [PATCH 310/366] tools: Modify for checks. Signed-off-by: wxyyy0117 --- tools/vscode_profile/task_xmc.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/vscode_profile/task_xmc.json b/tools/vscode_profile/task_xmc.json index 2356665b..ddddb981 100644 --- a/tools/vscode_profile/task_xmc.json +++ b/tools/vscode_profile/task_xmc.json @@ -22,7 +22,6 @@ "command": "arduino-cli", "args": [ "upload", - // "--verbose", "-p", "${input:port}", "--fqbn", "${input:boardFqbn}", "${input:examplePath}" @@ -109,6 +108,6 @@ "type": "promptString", "description": "(Optional) Enter the path to arm-none-eabi-gdb, or leave blank for default", "default": "" - }, + } ] } \ No newline at end of file From ef4a7e66a2a4d986d832ed90ed170636a2df4ad5 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Tue, 4 Nov 2025 13:48:59 +0100 Subject: [PATCH 311/366] tools: Modify for checks. Signed-off-by: wxyyy0117 --- tools/vscode_profile/task_xmc.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/vscode_profile/task_xmc.json b/tools/vscode_profile/task_xmc.json index ddddb981..4e08fee6 100644 --- a/tools/vscode_profile/task_xmc.json +++ b/tools/vscode_profile/task_xmc.json @@ -40,6 +40,7 @@ "args": [ "${input:boardFqbn}", "${input:debugBuildPath}", + "${input:examplePath}", "${input:boardsTxtPath}", "${input:gdbPath}" From 68515f1d88a016940643524c6121ae9a3b77fc14 Mon Sep 17 00:00:00 2001 From: wxyyy0117 Date: Wed, 5 Nov 2025 15:42:37 +0100 Subject: [PATCH 312/366] tools: Upate gdb path. Signed-off-by: wxyyy0117 --- tools/gen_launch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/gen_launch.sh b/tools/gen_launch.sh index 16cb0989..b522f6e4 100755 --- a/tools/gen_launch.sh +++ b/tools/gen_launch.sh @@ -26,7 +26,7 @@ PACKAGE_DIR="$(dirname "$SCRIPT_DIR")" if [[ "$FQBN_FULL" == infineon:psoc6:* ]]; then DEVICE_TYPE="psoc6" BOARDS_TXT="${4:-$PACKAGE_DIR/boards.txt}" - GDB_PATH="${5:-$HOME/.arduino15/packages/Infineon/tools/arm-none-eabi-gcc/10.3-2021.10/bin/arm-none-eabi-gdb}" + GDB_PATH="${5:-$HOME/.arduino15/packages/infineon/tools/mtb-gcc-arm-none-eabi/11.3.1.67/bin/arm-none-eabi-gdb}" elif [[ "$FQBN_FULL" == arduino-git:xmc:* ]]; then DEVICE_TYPE="xmc" XMC_DIR="$(dirname "$SCRIPT_DIR")" From 9e2f5fbd73d9fb8f162ce472d7f3666bfe496ff5 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 6 Nov 2025 11:57:33 +0100 Subject: [PATCH 313/366] tools/: Disable no reply change. Signed-off-by: zhanglinjing --- tools/verifygitlog.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/verifygitlog.py b/tools/verifygitlog.py index e900c5c3..1add62b8 100644 --- a/tools/verifygitlog.py +++ b/tools/verifygitlog.py @@ -87,8 +87,9 @@ def verify(sha, err): # Author and committer email. for line in git_log("%ae%n%ce", sha, "-n1"): very_verbose("email", line) - if "noreply" in line: - err.error("Unwanted email address: " + line) + # Disable because user have to change their github profile. + # if "noreply" in line: + # err.error("Unwanted email address: " + line) verify_message_body(raw_body, err) From ec78895ef504213a5dba401dcfce3bdcf2e15f15 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 6 Nov 2025 14:06:49 +0100 Subject: [PATCH 314/366] .github/workflows/: Add ignore path for hil workdlow. Signed-off-by: zhanglinjing --- .github/workflows/hil_checks.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/hil_checks.yml b/.github/workflows/hil_checks.yml index b33eb25e..2c7c2731 100644 --- a/.github/workflows/hil_checks.yml +++ b/.github/workflows/hil_checks.yml @@ -2,6 +2,11 @@ name: HIL Checks on: pull_request: + paths-ignore: + - '**/*.md' + - '**/docs/**' + - 'tools/verifygitlog.py' + jobs: makers-devops: From 555f47b6272a96343c7d006bb6495a6a8d809a6a Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 6 Nov 2025 16:13:48 +0100 Subject: [PATCH 315/366] tools/: Remove sign-off check. --- tools/verifygitlog.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tools/verifygitlog.py b/tools/verifygitlog.py index 1add62b8..72fc48a6 100644 --- a/tools/verifygitlog.py +++ b/tools/verifygitlog.py @@ -87,10 +87,6 @@ def verify(sha, err): # Author and committer email. for line in git_log("%ae%n%ce", sha, "-n1"): very_verbose("email", line) - # Disable because user have to change their github profile. - # if "noreply" in line: - # err.error("Unwanted email address: " + line) - verify_message_body(raw_body, err) @@ -114,9 +110,6 @@ def verify_message_body(raw_body, err): if len(line) >= 76 and "://" not in line: err.error("Message lines should be 75 or less characters: " + line) - if not raw_body[-1].startswith("Signed-off-by: ") or "@" not in raw_body[-1]: - err.error('Message must be signed-off. Use "git commit -s".') - def run(args): verbose("run", *args) From 579dc0f892d0587c9de927d521b011c339235a01 Mon Sep 17 00:00:00 2001 From: Eder Julian Date: Thu, 30 Oct 2025 16:07:44 +0100 Subject: [PATCH 316/366] .github: Add CODEOWNERS. Signed-off-by: Eder Julian --- .github/CODEOWNERS | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..50f054b8 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,10 @@ +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# they will be requested for review when someone opens a pull request. +* @ederjc @jaenrig-ifx @LinjingZhang @dineshgit411 + +# Owners for specific paths/files. +cores/ @jaenrig-ifx @LinjingZhang @dineshgit411 +libraries/ @jaenrig-ifx @LinjingZhang @dineshgit411 +variants/ @jaenrig-ifx @LinjingZhang @dineshgit411 +tools/ @jaenrig-ifx @LinjingZhang @dineshgit411 \ No newline at end of file From db492c497a05c5543b73724b30391071c3450fce Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 6 Nov 2025 14:00:00 +0530 Subject: [PATCH 317/366] tests: Modified conflicts pin number. Signed-off-by: MDin --- tests/test_config.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_config.h b/tests/test_config.h index ad907755..b5d1aef1 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -17,7 +17,6 @@ #define SPI_TRANSFER_DELAY_US 2000 // Test Pin Definitions - #define TEST_PIN_SYNC_IO 4 // IO_1 #define TEST_PIN_SPI_SSEL 10 // IO_0 #define TEST_PIN_ONEWIRE 7 @@ -25,6 +24,7 @@ #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 #define TEST_PIN_PULSE 5 // IO_2 + #define TEST_PIN_SYNC_IO 4 // IO_1 #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider @@ -39,6 +39,7 @@ #define TEST_PIN_DIGITAL_IO_OUTPUT 4 #define TEST_PIN_DIGITAL_IO_INPUT 25 #define TEST_PIN_PULSE 6 + #define TEST_PIN_SYNC_IO 5 // IO_1 #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd From 5fb6055356606aad5b452ce4eaa3e38e65bba0f8 Mon Sep 17 00:00:00 2001 From: MDin Date: Thu, 6 Nov 2025 14:00:17 +0530 Subject: [PATCH 318/366] config: Enabled pulse test. Signed-off-by: MDin --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index ec15e7df..6fed48f3 100644 --- a/config/user.yml +++ b/config/user.yml @@ -34,7 +34,7 @@ unit-test: - unit-test-interrupts-1400 - unit-test-random-1400 - unit-test-spi-single-pingpong-1400 - # - unit-test-pulse-1400 + - unit-test-pulse-1400 - unit-test-time-1400 - unit-test-onewire-DS18x20-1400 - unit-test-analog-io-adc-1400 From 889321207890000724b5cd01f5670acffbacb6a3 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Mon, 10 Nov 2025 14:18:17 +0100 Subject: [PATCH 319/366] config: Disable sync for digital IO test of 1400 arduino. Signed-off-by: zhanglinjing --- config/project.yml | 4 +++- config/user.yml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/config/project.yml b/config/project.yml index 3c0a23e7..49ca90fd 100644 --- a/config/project.yml +++ b/config/project.yml @@ -196,9 +196,11 @@ unit-test: unit-test-digital-io-1400: - description: Compiling, flashing and monitoring digital IO unit test. - command: make test_digitalio_single + command: make test_digitalio_single ENABLE_SYNC=0 query: digital_io_single_board == '2:1' working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: False unit-test-tone-1400: - description: Compiling, flashing and monitoring tone, no-tone unit test. diff --git a/config/user.yml b/config/user.yml index 6fed48f3..47a48db3 100644 --- a/config/user.yml +++ b/config/user.yml @@ -28,7 +28,7 @@ unit-test: - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 - unit-test-can-1400-2go - # - unit-test-digital-io-1400 + - unit-test-digital-io-1400 - unit-test-tone-1400 - unit-test-iic-pingpong-1400 - unit-test-interrupts-1400 From 89fbaa708b79c1157f135d5deba69f18ebf6918f Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 12 Nov 2025 10:29:37 +0100 Subject: [PATCH 320/366] tests/: Update test_config. Signed-off-by: zhanglinjing --- tests/test_config.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index b5d1aef1..f8e786f5 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -34,7 +34,7 @@ #define TEST_PIN_ANALOG_IO_DAC 53 #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 - +static const float test_pwm_frequencies[] = {1, 50, 5000, 50000}; #elif defined(KIT_XMC1400_ARDUINO) #define TEST_PIN_DIGITAL_IO_OUTPUT 4 #define TEST_PIN_DIGITAL_IO_INPUT 25 @@ -47,7 +47,7 @@ #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground #define TEST_ADC_MAX_VALUE 1023 #define TEST_ADC_RESOLUTION 10 // ADC resolution - +static const float test_pwm_frequencies[] = {1, 50, 5000, 20000}; #elif defined(KIT_XMC14_2GO) #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd @@ -60,6 +60,8 @@ extern XMCSPIClass SPI; // TODO: Need definition of PSOC6 for spi slave test. It should be managed more effectively. #if defined(ARDUINO_ARCH_PSOC6) +static const float test_pwm_frequencies[] = {1, 50, 5000, 50000}; + // Test Pin Definitions #define TEST_PIN_SYNC_IO 4 // IO_1 #define TEST_PIN_SPI_SSEL 3 // IO_0 From 0b7f27622a4c31f9b1f31dc313c752d6b1f99d83 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 12 Nov 2025 10:30:00 +0100 Subject: [PATCH 321/366] extras/: Update arduino-core-tests. Signed-off-by: zhanglinjing --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index e996773f..65b0d15f 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit e996773f2ec622f1f3d4506f3ac658d0b7c204c7 +Subproject commit 65b0d15f31a0252890edd6e711d97d8dd21f4c09 From 69956ad3600ef7a6944451fef698ea32d02e6365 Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Wed, 12 Nov 2025 10:53:56 +0100 Subject: [PATCH 322/366] config/: Enable all test for 1400. Signed-off-by: zhanglinjing --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index 47a48db3..67d6b0d5 100644 --- a/config/user.yml +++ b/config/user.yml @@ -38,4 +38,4 @@ unit-test: - unit-test-time-1400 - unit-test-onewire-DS18x20-1400 - unit-test-analog-io-adc-1400 - # - unit-test-analog-io-pwm-1400 + - unit-test-analog-io-pwm-1400 From c90f63869390e95a7513ae6eea7ee89966a167bc Mon Sep 17 00:00:00 2001 From: zhanglinjing Date: Thu, 13 Nov 2025 00:42:05 +0100 Subject: [PATCH 323/366] extras/: Checkout main of arduino-core-tests. Signed-off-by: zhanglinjing --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index 65b0d15f..aa5f86c1 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit 65b0d15f31a0252890edd6e711d97d8dd21f4c09 +Subproject commit aa5f86c103cd165c9cdc4bc4f07af9ae0ec56eb9 From c688435ace44f04ecb187de9392ca5561092b82a Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 29 Oct 2025 16:43:34 +0530 Subject: [PATCH 324/366] config: Added 1100 tests. Signed-off-by: MDin --- config/project.yml | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/config/project.yml b/config/project.yml index 49ca90fd..18a240b1 100644 --- a/config/project.yml +++ b/config/project.yml @@ -270,7 +270,84 @@ unit-test: command: make test_spi_connected1_loopback query: spi_ping_pong_single_board == '2:1' working_dir: extras/arduino-core-tests +######################################################################################### + unit-test-digital-io-1100: + - description: Compiling, flashing and monitoring digital IO unit test. + command: make test_digitalio_single + query: digital_io_single_board == '3:1' + working_dir: extras/arduino-core-tests + + unit-test-tone-1100: + - description: Compiling, flashing and monitoring tone, no-tone unit test. + command: make test_tone_no_tone + query: tone_no_tone_single_board == '3:1' + working_dir: extras/arduino-core-tests + unit-test-interrupts-1100: + - description: Compiling, flashing and monitoring Interrupts unit test. + command: make test_interrupts_single + query: interrupts_single_board == '3:1' + working_dir: extras/arduino-core-tests + + unit-test-random-1100: + - description: Compiling, flashing and monitoring random unit test. + command: make test_random + query: random_single_board == '3:1' + working_dir: extras/arduino-core-tests + + unit-test-time-1100: + - description: Compiling, flashing and monitoring timer unit test. + command: make test_time_single + query: time_single_board == '3:1' + working_dir: extras/arduino-core-tests + + unit-test-analog-io-pwm-1100: + - description: Compiling, flashing and monitoring timer unit test. + command: make test_analogio_pwm + query: analogio_pwm_single_board == '3:1' + working_dir: extras/arduino-core-tests + + # unit-test-iic-1400: + # - description: Compiling, flashing and monitoring timer unit test. + # command: make test_wire_connected1_pingpong + # query: iic_ping_pong_single_board == '2:1' + # working_dir: extras/arduino-core-tests + unit-test-analog-io-adc-1100: + - description: Compiling, flashing and monitoring ADC unit test. + command: make test_analogio_adc + query: analogio_adc_single_board == '3:1' + working_dir: extras/arduino-core-tests + + unit-test-iic-pingpong-1100: + - description: Compiling, flashing and monitoring I2C pingpong slave unit test. + command: make test_wire_connected2_slavepingpong + query: iic_ping_pong_multiple_boards_slave == '3:1' + working_dir: extras/arduino-core-tests + + - description: Compiling, flashing and monitoring I2C pingpong master unit test. + command: make test_wire_connected2_masterpingpong + query: iic_ping_pong_multiple_boards_master == '3:1' + working_dir: extras/arduino-core-tests + + unit-test-pulse-1100: + - description: Compiling, flashing and monitoring pulse board1 unit test. + command: make test_pulse_board1 + query: adv_io_pulse_board1 == '3:1' + working_dir: extras/arduino-core-tests + + - description: Compiling, flashing and monitoring pulse board2 unit test. + command: make test_pulse_board2 + query: adv_io_pulse_board2 == '3:1' + working_dir: extras/arduino-core-tests + + unit-test-spi-single-pingpong-1100: + - description: Compiling, flashing and monitoring SPI pingpong single_board. + command: make test_spi_connected1_loopback + query: spi_ping_pong_single_board == '3:1' + working_dir: extras/arduino-core-tests + + +########################################################################################## unit-test-onewire-DS18x20-1400: - description: Compiling, flashing and monitoring OneWire sensor DS18B20 data. command: make test_onewire_DS18x20 From ef2b68a06ca44e0a8de310afe65f629b1f7e32bd Mon Sep 17 00:00:00 2001 From: MDin Date: Wed, 29 Oct 2025 17:05:20 +0530 Subject: [PATCH 325/366] tests: Modified 1100 pins. Signed-off-by: MDin --- tests/test_config.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/test_config.h b/tests/test_config.h index f8e786f5..fc39a1a9 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -48,6 +48,20 @@ static const float test_pwm_frequencies[] = {1, 50, 5000, 50000}; #define TEST_ADC_MAX_VALUE 1023 #define TEST_ADC_RESOLUTION 10 // ADC resolution static const float test_pwm_frequencies[] = {1, 50, 5000, 20000}; + #elif defined(KIT_XMC11_BOOT_001) + #define TEST_PIN_DIGITAL_IO_OUTPUT 3 // IO_4 + #define TEST_PIN_DIGITAL_IO_INPUT 2 // IO_3 + #define TEST_PIN_PULSE 6 // IO_2 + #define TEST_PIN_SYNC_IO 4 // IO_1 + #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz + #define TEST_PIN_ANALOG_IO_VREF A2 // Pin connected to Vdd + #define TEST_PIN_ANALOG_IO_DIVIDER A1 // Pin connected to voltage divider + #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground + #define TEST_ADC_MAX_VALUE 1023 + #define TEST_ADC_RESOLUTION 10 // ADC resolution + + #define TEST_PIN_ANALOG_IO_DAC 53 + #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 #elif defined(KIT_XMC14_2GO) #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd From a85dacf70c57ac1b0fd7079c64d8bf578cceebb2 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 10 Nov 2025 16:41:26 +0530 Subject: [PATCH 326/366] config: Enabled 1100 tests. Signed-off-by: MDin --- config/project.yml | 16 +++++++++++----- config/user.yml | 13 +++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/config/project.yml b/config/project.yml index 18a240b1..ae066265 100644 --- a/config/project.yml +++ b/config/project.yml @@ -270,6 +270,13 @@ unit-test: command: make test_spi_connected1_loopback query: spi_ping_pong_single_board == '2:1' working_dir: extras/arduino-core-tests + + unit-test-onewire-DS18x20-1400: + - description: Compiling, flashing and monitoring OneWire sensor DS18B20 data. + command: make test_onewire_DS18x20 + query: onewire_DS18x20_board == '2:1' + working_dir: extras/arduino-core-tests + ######################################################################################### unit-test-digital-io-1100: - description: Compiling, flashing and monitoring digital IO unit test. @@ -346,14 +353,13 @@ unit-test: query: spi_ping_pong_single_board == '3:1' working_dir: extras/arduino-core-tests - ########################################################################################## - unit-test-onewire-DS18x20-1400: + unit-test-onewire-DS18x20-1100: - description: Compiling, flashing and monitoring OneWire sensor DS18B20 data. command: make test_onewire_DS18x20 - query: onewire_DS18x20_board == '2:1' - working_dir: extras/arduino-core-tests - + query: onewire_DS18x20_board == '3:1' + working_dir: extras/arduino-core-tests + unit-test-can-1400-2go: - description: Compiling, flashing and monitoring CAN unit test. command: make test_can_single diff --git a/config/user.yml b/config/user.yml index 67d6b0d5..94ac64a5 100644 --- a/config/user.yml +++ b/config/user.yml @@ -27,6 +27,7 @@ unit-test: - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 + - unit-test-can-1400-2go - unit-test-digital-io-1400 - unit-test-tone-1400 @@ -39,3 +40,15 @@ unit-test: - unit-test-onewire-DS18x20-1400 - unit-test-analog-io-adc-1400 - unit-test-analog-io-pwm-1400 + + - unit-test-digital-io-1100 + - unit-test-tone-1100 + - unit-test-iic-pingpong-1100 + - unit-test-interrupts-1100 + - unit-test-random-1100 + - unit-test-spi-single-pingpong-1100 + - unit-test-pulse-1100 + - unit-test-time-1100 + - unit-test-onewire-DS18x20-1100 + - unit-test-analog-io-adc-1100 + - unit-test-analog-io-pwm-1100 From 2064a8635de7447697c2fbd46f923f00fd0759d6 Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 11 Nov 2025 13:50:40 +0530 Subject: [PATCH 327/366] config: Disable sync for Digital IO test. Signed-off-by: MDin --- config/project.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/project.yml b/config/project.yml index ae066265..7b32099f 100644 --- a/config/project.yml +++ b/config/project.yml @@ -280,9 +280,11 @@ unit-test: ######################################################################################### unit-test-digital-io-1100: - description: Compiling, flashing and monitoring digital IO unit test. - command: make test_digitalio_single + command: make test_digitalio_single ENABLE_SYNC=0 query: digital_io_single_board == '3:1' working_dir: extras/arduino-core-tests + options: + SEND_JOB_START_TOKEN: False unit-test-tone-1100: - description: Compiling, flashing and monitoring tone, no-tone unit test. From 9b1ca95fc5e7f09b7118fa3d98438ba01a81506a Mon Sep 17 00:00:00 2001 From: MDin Date: Tue, 11 Nov 2025 15:01:44 +0530 Subject: [PATCH 328/366] tests: Removed Unnecessry declaration. Signed-off-by: MDin --- tests/test_config.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/test_config.h b/tests/test_config.h index fc39a1a9..73d60413 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -59,9 +59,6 @@ static const float test_pwm_frequencies[] = {1, 50, 5000, 20000}; #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground #define TEST_ADC_MAX_VALUE 1023 #define TEST_ADC_RESOLUTION 10 // ADC resolution - - #define TEST_PIN_ANALOG_IO_DAC 53 - #define TEST_PIN_ANALOG_IO_DAC_INPUT A3 #elif defined(KIT_XMC14_2GO) #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd From ba844919fc831bd1b86932655f9d5d546a042b77 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 14 Nov 2025 10:05:00 +0530 Subject: [PATCH 329/366] extras: Updated submodule. Signed-off-by: MDin --- extras/arduino-core-api | 2 +- extras/arduino-examples | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/arduino-core-api b/extras/arduino-core-api index cd91833d..0f4e57ea 160000 --- a/extras/arduino-core-api +++ b/extras/arduino-core-api @@ -1 +1 @@ -Subproject commit cd91833d90b4fe50e428021ba5051e2b7ceafc84 +Subproject commit 0f4e57ea193a00163ae59f0f0ff478feae7eb5db diff --git a/extras/arduino-examples b/extras/arduino-examples index f2bf63b4..d8debf24 160000 --- a/extras/arduino-examples +++ b/extras/arduino-examples @@ -1 +1 @@ -Subproject commit f2bf63b4499fdd984891b6dff074732f3e9effaf +Subproject commit d8debf24cffd53c2932727f9d3b34695a0ed1de2 From 0014a9bae955ad8fa80ff2703a804559a31f6a0e Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 14 Nov 2025 10:07:17 +0530 Subject: [PATCH 330/366] config: Enabled PWM test. Signed-off-by: MDin --- config/user.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/user.yml b/config/user.yml index 94ac64a5..b1a8e3c6 100644 --- a/config/user.yml +++ b/config/user.yml @@ -27,7 +27,7 @@ unit-test: - unit-test-uart-4700 - unit-test-spi-single-pingpong-4700 - unit-test-onewire-DS18x20-4700 - + - unit-test-can-1400-2go - unit-test-digital-io-1400 - unit-test-tone-1400 From d73ce3cbc4d5a1b07485cf4d4f10bffc1080d053 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 14 Nov 2025 11:57:03 +0530 Subject: [PATCH 331/366] tests: Added test pwm frequencies array. Signed-off-by: MDin --- tests/test_config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_config.h b/tests/test_config.h index 73d60413..960cd7da 100644 --- a/tests/test_config.h +++ b/tests/test_config.h @@ -59,6 +59,7 @@ static const float test_pwm_frequencies[] = {1, 50, 5000, 20000}; #define TEST_PIN_ANALOG_IO_GND A0 // Pin connected to Ground #define TEST_ADC_MAX_VALUE 1023 #define TEST_ADC_RESOLUTION 10 // ADC resolution +static const float test_pwm_frequencies[] = {1, 50, 5000, 10000}; #elif defined(KIT_XMC14_2GO) #define PWM_FREQUENCY_HZ 490 // PWM Frequency in Hz #define TEST_PIN_ANALOG_IO_VREF A0 // Pin connected to Vdd From 2053124325a5496741f6fea558de25dac8fdb9b4 Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 14 Nov 2025 13:52:43 +0530 Subject: [PATCH 332/366] config: Enabled sync in digitalIO. Signed-off-by: MDin --- config/project.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/config/project.yml b/config/project.yml index 7b32099f..470b7751 100644 --- a/config/project.yml +++ b/config/project.yml @@ -280,12 +280,10 @@ unit-test: ######################################################################################### unit-test-digital-io-1100: - description: Compiling, flashing and monitoring digital IO unit test. - command: make test_digitalio_single ENABLE_SYNC=0 + command: make test_digitalio_single query: digital_io_single_board == '3:1' working_dir: extras/arduino-core-tests - options: - SEND_JOB_START_TOKEN: False - + unit-test-tone-1100: - description: Compiling, flashing and monitoring tone, no-tone unit test. command: make test_tone_no_tone From af96439d372ffae12435ae61acd0f1e042633fbb Mon Sep 17 00:00:00 2001 From: MDin Date: Fri, 14 Nov 2025 15:27:23 +0530 Subject: [PATCH 333/366] config: Disabled sync for digitalio test. Signed-off-by: MDin --- config/project.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/config/project.yml b/config/project.yml index 470b7751..7b32099f 100644 --- a/config/project.yml +++ b/config/project.yml @@ -280,10 +280,12 @@ unit-test: ######################################################################################### unit-test-digital-io-1100: - description: Compiling, flashing and monitoring digital IO unit test. - command: make test_digitalio_single + command: make test_digitalio_single ENABLE_SYNC=0 query: digital_io_single_board == '3:1' working_dir: extras/arduino-core-tests - + options: + SEND_JOB_START_TOKEN: False + unit-test-tone-1100: - description: Compiling, flashing and monitoring tone, no-tone unit test. command: make test_tone_no_tone From 5c148cd9845941ba0be98f94b82e730ad9937616 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 17 Nov 2025 13:41:22 +0530 Subject: [PATCH 334/366] extras: Updated arduino core test submodule. Signed-off-by: MDin --- extras/arduino-core-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/arduino-core-tests b/extras/arduino-core-tests index aa5f86c1..dce488b0 160000 --- a/extras/arduino-core-tests +++ b/extras/arduino-core-tests @@ -1 +1 @@ -Subproject commit aa5f86c103cd165c9cdc4bc4f07af9ae0ec56eb9 +Subproject commit dce488b0847cc04433d4b4ea5b6126655c16af3d From dca20eacce8b8f222595ae7c7ef5262c7da033a4 Mon Sep 17 00:00:00 2001 From: MDin Date: Mon, 24 Nov 2025 12:15:58 +0530 Subject: [PATCH 335/366] docs/img: Replaced latest XMC1400 Arduino pinout diagram. Signed-off-by: MDin --- docs/img/KIT_XMC1400_ARDUINO_pinout.png | Bin 5750009 -> 4856889 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/KIT_XMC1400_ARDUINO_pinout.png b/docs/img/KIT_XMC1400_ARDUINO_pinout.png index 8041c38f94ae5e804ed170276c2ff876b315a980..2f9968b6827b550a31c5c9b60d8e54c9f9b4046d 100644 GIT binary patch literal 4856889 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 z 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%0AOP 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

HiD0j}dx-25rms9FAd6-JxDD#H!OrT0Mj8 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

XZWY2|^4 zxJ=n85zBZnB!vT%bETHJw$D{c-hQDkY^)pAm3CcF$?>b$-*3o z`h(2U3|)y1gG+P6t;jPiqsNJKD&fax+oGmO;0@PSQXN-|LcG8>qd|DzeBEp3sfWU< zu%bar0>rTV(J$`xJ{POtaH~s78r_1y&k9D`<9FJU4KX2iTbb}YE z!QFA4t``*lQ-|(z?zKODYd32Tc^=b#)1BMLKI@xr*YEt+U*5d*iaicH+};`M)@c7( zf*-bb9QO=wYhEq|cr4s+wp#p`3_>a9wrwNw9zqAh{T}bWEd3RPpWrWFvwwM>-JgCw z`q0vSBBTO;k=47Q+O_*c_H4iVvSZHDe*dt&Tz_kYgkt(wST9I|oG_RNM_i$7jJM=tTu zN&5btqa|w!D4+^|!}DG6AswdysQ*E=wI(H&Vn^&{!(3YVHyPQeBiRQLK#&Lvx*B22 zyv*D7w|A^`d1J(%yc|2q>EpT0j~31fV~yLjM`Gq2)c4M^`TJs=*BG8E2A%d_e@gaG z(irYMzODEg$3N;-r0^-(`LQpH%ZfO5CV0><=?2wS?kP8UroVP4}HgyhfS3Sjv- zwUdzcy%Qi~0|94g@wL4_qDAw1lpIXp4`n_X)WGOuoE71RLqt_Dw79bVL5a$*y|?ki z;OBt?PvP-W*C$u*ZGj;h)35RyMtbRA^>^GJVyZ51F`RYZxul|~0czf@52~WN#+xKi z8wbp3RV)-A1>?v$Bd#pBA|lX9(QJRxGw5N~XvfZ3YnyiKa;?td$0dsWWAj!?@YD5m z5mN#qw*?y_`6)YPALnJO87h?>G``dYJhiKPq`g5a?HcPs;I9HLm0P&OlGn;m+(VK! zr|!sT*AKHW;2G7Akz6c~R5g*NbgAj)m1R`xb2e8iIj(ijNJu;heyPHM=`$8tOz>)~ z4r})5Be&zR%HFN|PM{}b?c`{`E=_j`C$U%ByOa=@%g~4)Vr4B9NQGsLtOWc zfzhG~u$3!K_}Bc{dms>&@Ja}`H$hEMGmX=a(#9w_sLST9gWD^{afGhwgb$?(D5wM~ z+k^?bRf>U4rXP8bOT(f&dz3XpvKf^_h_qY)ULTl8W~8(Xp~c{>Y!{YLm(V1MZ1c0N zp1*TMjM5*$p(8UlCi{8}OvLNce{1=uRycj%#}Jyn{v%&Gp{A8VqD6}xo$e5YAydvH z(L-7&{-gXm-UqC&cB<9psL+|-+2TdR$rOCig^1CiuR zoqqM9H@?KYN#6`WA}J$e!hZHq5%2*rDQ~Q4spn~&vY5|;v7h6t%a%3hT<=r2{7b0S z)$3(0rE^>-4F#pXrr!?#5dWKGPy=Xqq%t;CVgaC6#8Ge;J6MWjvJtG5$15z< zok&X8(&a82A>xJ7{H=2n5WIBrVZIg^wK%gK1` zICRRS0(qUxi7dCwCZ6qFRG2rz!~%kccuskwxFYrsKA`?lCw8(30O@n2`p*GGNA(|xhp;+j>V#R zCIT5_yru>egL0{9sUUB9KA&%et_Ys4EnA5kO>{|bt4v8kheT<&KQVDyo0bzH=!(Je zCi>*_ojEZGG~s0@xPtoJ1`IY>srC~DJ}3Q5jL0ZT6fE(2yV4cJ%_;}ow@uQTzyKNO@>l&U-5}}!c$h9CX(_eU81_SU1d?w`*o9dV09Z5n9iPfG0k7H z2rb{pGVP>4MXX%Ol0p_Z+ENHf{diCBOM&vAc#Z0>=ar(Dh4RgS;2L`D+)H zfOG4~lSiZR2q7S~HWnU?l)>~r0Y-|i*3 zmU>&RBKV>q)_(9w_W#VM{+UO4N^cX)*8g+y;mtIT%aoQ(pfwC8i;j8lC~aceK8vmH%&Q=-cC$l8doOikY!n=FF-~Z(5Cy7nV(D($S zcN~RZ#cSkB{2Ymbm&~6}T%Qs*N3NE}h2yLx6GV% zt?>N3K_=vL`^|;C_XoJ9F(d3U;^-@tq(r2rlw|Bj<-o{0gO~fbR}8r94Kun5GU{vH zEkbui$u!9x!Fl+fI_{=Tqr>aai0pkzO4l&GwBGLd7utKvO4rt*uM1!%$)ax2sr!NJLxEGF@0!ObS~v+9BC zhY#Y1TtsC)W7*toyJY*pi}xlFl%KVKk{GZMiRs?*LhnKXg{f%DtLedICeS>18Ik)eS_YHO2x- zT(}Sp0Kcgrj3Xm%ze5FV=p>e(5(wP(DGG}VlN@3Q$yOs9+BH7J{f%Eq6J$gHCMY$( zcj=`Ent%MAO~jMD!#k7lH~K!Ifho}2)FULR9}im}85Y6*2b_9WCxUHj`+^|)gCAh5pDe4fQj{X0XY1XHo{Vgh^` zbC`ktJ*dLusyMe0M#$*}R$)S?1)nSCmQ!9Sw*F)k%+_)%EgUkz&2$CTM|c`*?&gzV zhW#(P-ZHAqaBCB8ad&ruOM&3-?!mQ4kl=2mh2jaW#ie+GqQ#x!#ob#Ric6vRm!A1% z-ZMWYLXu|%$V#&A>)w~_{oP7mUjam*7TZ>l4d=T~H=Y}xo+{hh7kzK5PfkxxX{l%? z(&2@bv5*hsH(u7#+_@Nr3yfD7zcIY}KCroI9enm{rLog#(YNO9 z>bjJ$8D~1Eh&#F$!oR+>Bw5$c*dURoULmvFX>X^44Gft|$W z3@eP_XKG}~F9S)nKU#VAPb{1@S;ThFo2yH6SyLh-%}WAGApyw=J9VEF8N9Zv?2Jj7 z!Nx`#{GI!E%F1RsW%z{0^}9U8?`Y-{3t)Ay&#>2?9NN4gx=q%c4y8JK z%2k}~vVbHeUZG;2ImN~WBRK@7F9ZsGAr&g*ydiCgHfvB=Mv*6Dykb+|cpP0wx&~+N zGP95clsctWHQ8T{P@6!d|Bw3EVFIr#fG#X#H{4Lk21PQJd4<8rJnPHl+$UjbmFBpC z5N)KDB#q{b(aZP&yEXoN7`FFS=$ysERMZnOJdIW$zm2aUevAfP!_w` zQh8Sgdy{CQ&B{aKP4)n_f{`X|Fv6ErE|u&wvMp(cq%}zQws=L}Wv)N9t*{^i+vU1=L*1OM>%5xvz40e~eQcDlX?Gq99HpXZxKxoalrrKk zO0G2+c2UmyLtN{5KxUTT;v&uBPx5V0KJDLL+BOlmIN|H(_wsY`{RyVU#bP&`P3!o4g-cs)+rkA`F$`aPxq}~%Xg%83no#qPqz=JKck_hNdH8=> zEPP9Ttcv)|Jk4n3J+E;8>_CVA?bFWHr<3%A;JqlVr%ktwKffpQ;v-K`{;F7e$(;)C zN}fNVyj0|1FKcsl3u*s}>Rw z$4Tqv13CGUZKeqt+E68!zXkMa3^1|Wh<2g1xepDKTPs1%Dl7Ml0Z8azKmJ5dP~L26 zVU#GLDr3cj*?eqG1)O+oO{>4*rS0$YeT_*a;c0H#U}oR6w8Ef_|Ba+$Sp;#lYJXC> zxA26C#4?(N*pv+7h?Px%w&giOU%NtE1NA-s2H(hV%#08FASA z;_~jtg0dcoxI^c**qf)%KgJK57TcW1X`yu8mW&*-#m@0nje{%On6cA;H8 zel~>_0)`2)*G*%V9Q30iksqUex-$xzSMlTM@bhhCI(OLI8*D`yNf4}t#h%W)Ffz!_ zwK2DAby1P-;iv*Ppn9$@)wMJY=uX81;SmE#XkxF0m>Oa)8(B+EZZ$P55385G-oK|A zYH8GO*=?%BkimZadAXH1i{^L!I>B`WS3~hG1(VvINn`0O<4IB0A-2d8$-2!thFTf8 ze*=>Z)L#ymmrqowYtt6xYo@QSj2GsKCJ5EWn)4Q&SBsnYV=?O?TV~oWeWkWN?mS|X z#S1HY4Z@_iYfALlsdtTboQNanVOCw2Az5&f*`H>WQ|By|McRcyw!dTW{%nd5OCh`; zHo({x&s3=LSwz1S&JcJHoT!Mh4%HqnD7~tb~7LfzzZ8?2`Bm;70iwd zDhK*Z$$mIR1t)igoj8>{LCMO}9M-<7G~s|id-p_3`~4ihF3!qcOJRzHACA91^a7F~ z`a&_gjxXo#Zo$F9FP8A1FTdO+EjT|_&R4i*X)kKbhEE|S#{AaTt;w3NN69Y#BB#q> z+nB+Dc?Qh%MlUng}JBA)5$?Ck2IAtb1{4Kmg*Ei6syxr+ut<66eWJi|4B_W^gmopT|W`zaI7zUOU z9712Ow&J}L9vJ~Cw&7D{WTZ*M_!64HvULu{OET<~Ol*5hgm)o01UnFG<$f4cL9l_y z-FXav_XbL*MgXIn874xLc_C6RawozWW2b^r%)kXyFroiEO$DyAENaZ zTc1oEf=`jftd2ARjimw-D1^XhdRbAd&d9sjw$+2wUqhu~kBL=!-FmcoU-@=J9Y&ci;PMO&@vbZY!IRYOW?JWwMg+BianNY}1oe{ZL{ zkttg_6F?}#{)U4F$Y#^bBb_13zmLj?x}p&W@{^rff>eRgD30*L1|z>s;|(83!0reU z2O_QEtEx7tnQN@1jgvKmh_m$7JDn-WdwQL5etP%tLO4R$Ff_-1o?e1DvkFq21JlT} z$&T={$YvTp!#s$y;Kc)fC0W77>_=Oou(&m{Ub+fmxC)~1RX-hAZCwQ`^fK|MNOcuH zPw@a!Ka3bDhH3vDY(<_n`@<9YoeWpbsGO!^0-Q4h=j6mAO9mBLg>m93H(7}y!n8H; zZOWwQSdr}@w;{{Q)|6^RWaOWrsc1ik`$a7LFD3%cVhUM*6joI9!Z$G$GWyt2^Oi=~ zD7N}{TPF+~m%jaJ9EMVdy3c#v@79I54Znu}c;j)p);jrEW%yyhFle6d0KHfu&(;6* z>Dlf5nsD&@aiP`BViCLol5;1oA)~Qyw?9DzCdA^q*G63O|&#bjt?}sWf*&Ws+xAk_k%DIKAleU5; z)I*HEuf&;f&_B1!O@u7+m?RKc+e}1wRtV)woUj}Xbl{f(j}jt**6@t=`xUez(Y z8amB-=0vKxka^WDo6|%eLbkqB@Ne7H#MQhgLX*{GFU!LwO&bP!(~mR58eQoYeex8u zwJw2uD>db$%Z*B3=T4}vSlfXV*iCs^sz@^+JjocFlG3Jh;>LPaJGd(K3W0Yp4IzNH zl|xZ&4ic1KrYi`m=qFTRwnb?~ExgEL=qn0MvHO7O2=xgMpk`HUU28%=pb*R>6K!tf zisZ+#YlaFAYn*>axKD}1faqa_Mt4dV+FXvsFY}2p5A8(c)+UPT6yf3r?8)}?i51Eg z<6UsZ(+w2SQOkT*X64O9AjlDVNC4yS6|%xLKySg-wUw2%wH%i*J4(v!3x8pXPx?$7 zu-h%niw)uk4h#>Rx(6I5##d>z;%&%kfo~S)}LDRVlb~QwAj+H*6ZtZi=_wSTdH#T4Va&1c&^54vcWz7WnqlUPF4)m1!)r}qli)iFp10} z+O;yL4kOkRpprO+dBv*UVl}ZEcqJNxJkMMqu4RlkYv#g0Tpa>joj6(NYVZ*p+|&ZX$m3;Ql%>$w(~BsA zN>ngN6h|aam*^|Kib&2ak1WCF$luxi38(;KE9^CjOr`S;zs3XTC5K|ajjISzml%Pl z!FTj?^!)Ih{Xzj&L~V3kycK+r7W9erL8~nNA_uWh6pHqVZ5(7~*HI6^qE#^jR=F3{ zF;~FC2;X#IvBR76&pL=?>NOYxGtb?J!(^&PS6Y!TWY7YAKH&8QL2$r)i^7KH71bG( zXV#$Mg5=(hKXhVba}%}-l{JvkiWR}yvPA%p9)@GGQ6>;O9lBP*H?UJVxXedUJN{{_ zU*uv##E2?gImYj;6OSwqm+0Kat)@ zJ#ODC1#OY&C;(>`gS|L(uC=-?eRsSQ>`DJoI#E}??*h8h4QQ{QwZdg@asnTNpSn^k zu6DDJSn~MuZa)U6`?0sNB}n>Werf(MD&(E`+v}V{8i|e4;o#=s;b6X={PR(y^hB@f z^gm-t52%FGryTZp_BGog4Ie(LhY!;B83&XmNhRQd|jwgfAj~1m$ zhW}VdUEC;EFPZ#Vn8_!gYQ30lugdrT?Ou$cbmmiZy-mKL6K_AhTmY7(*wAp=G<1SZQ+-Oz z0cgWQMNDoQcVFUA6eB$U#L}e%88n=#EoNP$T&m;Hj4OV3^IP}x!0|?YtY4J)*n#CQ z$)+mM84kYv{8z=4?FzbJ5-u636q1+}Jrht5GAn*#u|<{VZJX6sH-3_;sVyMA48No&2!$kx#qDTgtS2lO!N5j9l`+xT>xm@S>dsKEQgN!XQKXHQINwM6+k%qIrDE00#3awDUK3i687tYpfZi1hh1)H1f8kW5UDdPuAU$j5z_!|=aA{DWamg>`E%(k{DqaEO>0};u#9Z@@;Jf@yjUdAZ~?p6VZDe0kwmjWg2R&Ut-0t`{j#E zUuU!o49aVeA9JaPkB}4Q@QB%Y^AqHbuQ`;0Y<1##p9kU7?BN;5EIdjGp$u%mh#XP@ zwjG^e{l_xs^K|uMR3XloG=f}|DW{^tDHkHYSVePAx3bRg2owu|EM1`pDWWj-*DFej zh{}DuhYJ|YX$>BZMPCHsb@Yx?Oc1T7mc=TQllYtq$W_pFxf{kmwO$eUp>ce6NGpNi zG>D-%s1u?P{ti=_In6E2COhuNy9~6G`%D_kr_gt7RB)2M#4E4e@uetq?{!jU4~4K| z^eBdk;$Rni2y3oivarZtQ`$EK7$bi1H!7CqF-olr;vmY;)5R158QtM%zOk8rs{s{# zF!ZzQZ(H3(jm|34nBDhvMq{M^!J0R?q*r&=LBdiw|H`mUxFxMChr7UlD4Vrkb4kqN zlaBBOPJIXuvN+G1_Ts*saH>joMr?Vyju7)?;wYlj_S4AMLm5H(^!KTQ)+?Fy%FJY| ztf32^6bsAoiwi`h#gwz*TY6b6dPl-g&^tP+)C?&ZFrY^}7Aaj1jAu2dgXUH8Rmd|` z$B~Eu4ESPBQxqw0igAvOd^H47u$1^33d5242qBiG-mXAb!RD$mu}d1EA}?d@7wyNJ z&rkpgR$$}v$2iVpc_W+PdwJ(Y&tOLm_?v06gpJ2-4%z`TTc)8=a$iRW+eHp#AaG6y z@4MBzad1v07cBHj4?YI6#fm8`M2|SVM3fea=pm;!L>9ZItTD&Til(3f;=xwl&cNpc z7dje8zZt~KV&>O?{4RBn)m`-AsW9B=7JsNSnXmERwSPR!e?Gj24TaI(P18PP)jZw* zvq!n&p53R%Bs@+TNbglzw6EU1*%bX-BPH?jU8>sSF@BO;^0`RqNW?X^^s`i;SBiyU zjYL;%bWHlz?Nj>q;Oi2@mz#aF`(drFbNqbo%~{E#8PcbiN~uf2DEo=^SjGBw()L^P zuhl>M24p95Fb%7-l20}85T1ThrdvG1<4iZY+#Sc?Cpy2!&;-_Wzq=`t+U?taN#T%s zxQZFrGFX)II^TrR)v_~8~Rrb%m67&)|W@IUm>yXzK#|7VR6 z356mny|*uwrjrHb)DjL}{mLag!;4pje_c9jy^h6U3?$>~RH2EHe4RMV;)ygKrQv0Z z41?3wg7}`UR;Rzns6Sk)VXz|`%5V-gU?-_r)gl>upPp(xf_`5^aw3ICL2x|>sX7Bv zoDEKn)?2b6Lm~xY5r%U2u>L&lyhgLJjIl%5A2wggkRsS#2$-ZOo{q_{&fK-6kxj(@ z0Utk(Rag20J(S*iHCqbcC_wF-AQm7>-`%pn86sL_-kPTz_FJ|MBjTGlKspg3fT|V- zMQS?HR?^9E+1h7ZNczA#bGZ3W~rvARD4*HH?F*Z3pZUi=J zOZ{eHy_7ieR5OKw#ZX4dNu4HDm|)?mRGCDD!3cATIkW+@A?mxef|bgel&=U^-ay^Q ztgVp)ema~0JMQBM4E&)Tq+%l9{=8vAF)TKHdY>v;j3E34A$2s(V$L7EmbG=Q0hj%- z+!MmpRTemC*k_wI#4W>_*7!($ePV^fAF>_x`%CCy5{#NTx7F@&ZWcsj3rbZmerM=! zD7>G0H9@?Qu3(HE`TfFM5Uv3%!6&eZ)P306xq%U8udb#nJM(9zhJEH%_6?sq8Dcj4_DVUTc}L5U{PHV7h?G0Vjm)k|Y~oy{0(c{5!2 z%Uo^M31A42*=m&@D}MritWwF;^;ZC8y6F&Z`|UU8)>$DAiY$sue3S#?{d>ibSS&&T z2k?;`q{m0*yz@;d1m%FLkDZDj4MNPosA>RmiW6}7YWx{WXFiiCs2;)=U7o^95RT}j zp;x(3EF&xm>q}xwR4jdU%I2Djf}^bQHEyQAPuoL}@|nlsN5?2(E&;Q1QKo|Wrxw+e z7D5kzm38C@AB~+bgXd~C!ID-57JHL*gjJ%Mvnqfm;#`X_rI$=z{!KO-A7#1Y7Lv0y z>Vog5=o#sie(fQ~NJKlb#uck6G;4ZmTkvnItHULg8D2sJ+aKk<@yJ+Qob`fFnIU>t zcG^W0hsaKNAtmv5R0~6TpZ4^IIFB*VVuhC`Fs@yfpDc z-!CA-6!C-G)BfUlv8dbA?&1`&C<^**ec5{WN%gV`_ORfUrELJ81gw5 zN_X_$?3=j^G&B;A_kJ4537eMLdtLC?1T}>KDWWiWYb00@8e4%x`B~MMbbKuB8;jP^ z(v26~%Z2TDEcpNtGu6jSp!b#M!Ia6w&P!ioMwv(P&SK=XYj{-=)x=2s;~EFZN}1-5 zJoAbnMUWzFP*Fe{Iwr!UCPhW^ebZf#+Ra7NuSrNVZ%y3C@#y-?_-vUSi&m_l(CCPA z1^cHi5)(+y5Rcn$xc!U1O3!I8Qsf;=SOrzWPLC`nDCY%1qyV(@TH{@GAnQ zmywElp;7RR(y$EPQ6JAF?scRA9z%)8t#w(c8D@Nd~m!92x%?oZRF zYsx((P1*st??;ICC8b;HhuG~#9Q3=p&*{mXCsuOe&P<>S!Rc+LNQ_?oBucg)BD4-Ofhj+R}~Mt7t7r zBgP0%-J0tm9@oTe{3(h$kJZzL(tjXQCYiCXyg2a0U&$6GD$jV~Z(T1vQCY^)$RfSD zht7z7>{9x<%k#v@03S}*JZWhxFaOpQt;)AmfBn*n7oTA)%hWY$oe0>ajV-InLSg!5 zAzcOelM1!<#b3sF28+s{p&?6VS-&hbduvKblVO6w#INNzossnWsnmp#^*cvfkUz68BGsb7 zj5Gc7!1NxfnTxyki*pw1z0etx7&w89*kBl_@{Wy_^v*=xvV{%UEX(x?84JyNCcaQj zCj@sY)KIMH;0$WOoX$TvF>WLK;-JUcDjf#kr_ZQHz6WpwezVhxu%fi_iZ1;5Gh@xQOg9f}xCMv3O1?VdY;qVb#h9 z6x)b)L(b@KdngCLH6yE|cF+ZZ@v-VrG~q3@BoD4_Dg$D2b!v>TQRYgCDyl zZvdG_J&Y}@igK^~c)kgM$;|F9o|@4QyA9%@fWO1bdxJL<6R;E(%?*$H_;z?Cp;}BU zSMtN<^28KFdg{l2~s*m_P}iy+f~r7N_FSzXh0`yRw$A0T~{e^rECn)tk2p1=z$yH&##qna|~o zQouIJO#Vo+qf%oo!>Fsfjpyh2^>sLun78;}tleGNPvl8>-5i7MX~ev4#v)=!xhz`i z&A8eTZ;WH5{AaVfj@rBJCH|nx=y(5Bd%p8*G?AJvf}5gj&-8teZMyC$O%|pof_4|v zyPu_8!X@`B;_~ge;9jT@g1HY794%H7ezf+ zy`mdmjA+d#RTqbnD0%$O5Y|{Fwm*@#1-NE}kN@57Ov%LM6f98LnaHxR>m>iM4H#N^F z{rQ&-^w;#+F%^u#Bgt4HRiu>ViI9eP5-EU$$XcCPI|0ud%2Kbpg;9&wPDK7=tPrXq zZ^i(uqeC-*X;csO87Rnb5P%fXm|c_LF0&_EFDxklt?ANUcO`@OQw?6`dGZpMu|ltF za_G9LMAY?%;)gCA#Z+!tW%4+tM3#&mM`_lbX*HtHBmVh7^86wQ;+sT8gEfIk4YM9Cncaw@yadbjede> zRl}byJXlg_&sszLqyP(#Z=w_%@lL}SqavWrI)ymJ>W$g^@rsHAC1z&ghKzY0AEC%t z08y(xKA`avvsiYNEg+@D9+_q=-hpf-kb|1}Tu*0jxWcaP_+q`S_rpa~eEdrWc3Zbv z!Ke71KovgRNHsld`axw-CeKHnj)m}P^=u9?tR?ziv`lsiv*ARodB?UB=(Zxza_{#K zknxcU7mY}#By*>Jg36-hu=4GO@9W!6BlD5|R^2;%|I z)`KE5!u6m%(|n=WoMXpu-}&tZ>}rA(o)a`w0FnGNZ2gOZ@l(YqZeKunY2uW&550MF zHSHQkoCR~od$=iZqV(aE+|n{MzC5$`wu?0yuKttZu%wLe!yTL&(yRy)4&n%MUnp>X zZ1$u@aA2~Di_q_tPtTQSSK7F~kuw z=FAEngzyVayww3C@Of*hEFPmIf_B#oU-lZwTF29ec`duVVUnp!@+TOH>u+!&MAia& zjDuWX%YR_OMz zxjIWyVFr5sm+_s64W4>rw;JK7ye3JGGrx6OxU<6FGV`i2RRTgXp+#@WFy<45Vi9#;8f{IF|Vj)r7xBdihE{N%&OjC`XZ(Azzo^tzId2IJ}g{42&U z@SJOGjQ^-{Z!m%=1dgNb;_Rb3 z9p8CW;$x}Wxy$$Y4%7(Pr+Cio5%$To42Y#;27p1n*Y-03=WKQo)ur5VyanfO0!(hT_;p3Yn zkyP%jUjfb{$OP)j@)%voOM3R%j7ouf0K!rFKH?1y z3~Xx^SYM-<6hz%t0g|a0v$YpcK}9b$6tUE1NoBU!B!2IDxLRRpo?eUpKr|+N3 zv>&8gZ^hw|SY%HVxHGLp8}xTGiZ)>9a};gR@$qs@I`=rK(5!NR;O39+EskvsWr74k zT#3hXzYn+F7Fs9M+c#5b?Dz9RT)~HiHCiV}(L_(*C$mWu>@|Zqeg(fg|7N1~zQOKp zF_Q8CAJZNLzoZ=*cEv=|I7t3tnC#p-Gk^DYdX;J9ag%nD`=Pes<>A&Xo%wo-VH`E+ z`p)9-?hxp%jQ+H3Te)`VDA={j%(uIx^XUR!uyw!tnyW1JK%BCQ_U-V0N+Y=4Os@OK z>3<#gKULDuEH1ro7`|5`cj(P9g9)1p>Umk$85h)ya4Mjs&Djc?9e9b^lSDpb? z(Wvc_+~WF*q(V81ZY1sUj^&($Q!$@a>W^6_0P+fOciOM04>XW&wls@<5p5o(KRY^* zm-dyVCr@}+Heow-NhKq6ac@RsC-7E2np!jS3cODIwV@V_c{mPCYH|Du`f`6n+b(^7 zF(k+MHtzFR_M{}#_`wDOM};|CM_X^*g}$j(@A{|oq*1!-RvGfD6`(XjjDhjr!?px^JQy3cV12DEhMUd3{zOd;=YbCzWTzP=x! z@8vWmKXE^C0%wPBTO(x8~3%xZ;-$s+5-<^;hGhz(MN)j&thGkrahrN77=$NTtG6BepaTz zo?{+$yrbMvL*ZPW2I{ggYRBm14KATAq)Wo^79CNJ5LfzhYkj=v@Z}g`{0__pzX>rz ze+&QpPVUh{3cYztZG*60ccZw-fdY1=?{NEUo@VLnp|@b}gdLoIgZISNV4k=96^+n) zT^kB8TYo6zLDW0T@P)!!K2CUdDn9l$dLIXo=# z`n3XCWR#E({qO~!8e9bAO@R_c5Jga?1{uMNFa3yAra*36HvLW161|8@454x}{k974 zuu*JPL*i;qGf+MEun60GVAZIVK8~uPKLN~gq92cy-^K?G$WIZbXscjvbIMyTS)s{mbq-pvJC)6Y; zi(w)cijBFZQ`t?b#nU!5#h8qMrYs(~%Ya!m4PU@G6W~NtL>Xd?G(d(I2XIKqGq*ot z9!0{RLJwRFAnxjKxW@3%EYM9oY_w?rmeQlt(MW0`3EIVi2d_2-6V zC)#`6Tk7iSIvc#;sX@v8kbUvn-hIixzpiNBKZoH;zTCmDz55dI1NkqH|8B!3gP*>k)a5B|HdmKms?1LpCPmmV9$>0W z5%uwGYLM7i;bbBF!v04R%HRK^{0A9484p~L7XabK1I&nAdCK90My4#geh%yqL0^C@56Jzo12ZDog9nRZ@b>@&g`m@ za+`|>Z$92(l5&}K_}`80I<>b4%k=v`pX0uq1qXhgtSOTedH$X*}Oi{mZdnZoC}7{Eai!P2jD58$)|@ zLE47Ih=1STEqUK{CVmmv{cfKj*!}k9meTLJ|2F?|Oe-G?^#sMuO)6;Y2lwN2{x^2f zN#PDRrJiW$L>{iiBe7vSo0~<)-RHftmsyUx?eDE{tdA1Am&$>zKcgT?V6Pw1z^70Eq&E zBXp>-IE8tqZ=z(hV;dVN3Su>#l3N8GQUoi&rUlrfQvij3GKmxTCjTh*ICE9#0x?B2 z5`Meka?A+Nc&$1P6?$q0{kZpcL zYVD#6upZPM8O}!tNhw+}AJhA)LOxwd(%?uO#fjS|0Gq;zNHJNe^8hD*#LX01*?#s= z5nZ5qaX7754ll*9!dcMi;s%A{M1wNt$h_Yp>fsZB4tdiDPLo$}bBdZwb zqzD9LhhE{2*vw^VD(MU@&$fV3FGJ^NG)sqn@h@Br*WSn=BT(mOppb;+K>-H0W_0E6 zMuOdyw&dkx5*UKWykgeJTytNGg_vhYEQP(REj?6; z00Lx|Tm2996)68&SfF4!H2nvjT>d>(v$O&3NTZ6Y+$<-3zm1VYZ{c0nmNY#-e~L)chK{i=W{GfWu1{$oNAC5wJ6yN5<-*(Rep_a)>5T zp$0ZJjUIC+kgF(zaoo<#hv7(SE(3u3$S;?*Pg65Ix&~s}wX2*vUAj!M?@|Qo+Lj|M zNtPv1e{(60&|wt+Q+4QlI3xV@4^j06Xs`#1dj0j{qUIrba3FR+KqY=VP<#1(6q{YD zYIM4s3cGRy!jq|&;vqn8xDATvpDv)lj<(u`1Fgayo}B#9N2OF{kl|K0@4&8}Ftm zVD_I`y;qh7dZp69h9Z|c62K;elLDiPu0*MnnT-^A#zf8%yGn*1%Dly)w9rE|@D{_0 z*NuqbBCkW2#X(LPk1forJT%#1;*(Rp0pcfvyXYJ*1!FyZfvi~O*$Z#4CLilSuoGB3 zJH9k!(}q7M7XC3=3RA(^)oHjkq#qVClBF@YJz~>T2VBk2u!HX?c(dTou@WF_nbECy zJ0(x3dLvYkqsWQnFoN=#)p~Pq8SB^?aQ)h4(Z<$#T`8tkrQvl{9ArZZtpQD}2zOH< z*St_d@?&PMni;iek-o`QZ)lS!Sfyta>e7*6hu;x(86g;y0vh!QaAfaJqJ+A@@pKp=-6(ZI@>&`t8N3rZRgT{^Zt(ZRv^kLzcnKnfbeIiqrktgyljey zQsph2zY6g&%$H2@kO54+C@l@^jB!K^8F@qu0{Gt3c3nne`&aO;K>z5w&dz@^sT<## zdAVCXI_|1@C|&Q^e153Oii=!aHkQyA&N*Uve;?u0elp{+NPP+)mInLz(kRyb zTTRH~8NCSi`D3rrOXH?}x96q#&w8&t+_UE|wBmO&q_kGuYe+9!0*hQ04r)O|`=t4I zhbi1ITX8in>Dd-H3Y7V`er0g4Tv&>jlI))3J|?%+wXz!ayYtrPIJcJVfB#79?(cN_ z^X}HE*t*5D+JMrBrSnyb=BMDGr-|DD71NY3xu?0wHlxMdGmS~sj_s=$zrg*%?8~?p zyR($H9v2BO*C*#KaGRPn9&|l-v}WkN>Cg+2-b~z9Q;@ zQ-k6X!2H!KOIfr#i5KdUC$G6_sot)%M7ONQmD~o@?^q~^R74R^rys?Clt>`j`7QR> z!>!Sc8xPyG?Qcd=?}*$}z8o``E!2ME3l@JH`gFoR|Ds6ldVSFr@$(>=l6ohh6_a;C zbGbxu3Ab27B=-=F-RGM~=`)tuK49c+d#p1Uz1u8nmw4 zqrqEMvV-qelp~~iX6>RVnzzaP=e4Uy+4@0WY<8-9krNzFwT!=~OuCEtt780DowrRM zB6T;O-zzu4HxPjr{xwN15zkDURF?b;bb3+7pwaZJe`|DL)SuH{M?W`@-QSPD8=uq+ zZ@A5IVie4(Q6g$`gzXj%^q3T3qZRSOFl9P~4Ax3O`HI0>3za;SPM&}~Eds5T%%hU6 zBbO6x9gUO(7%Q#HjA^AL-d2bN7=K4f%@eLSqtriM_E*go03ea66{C)8DtXkmej-KU zKuzjAq!cpU{Ch|S+zQB@D39ZHhAX;oJ9xc5c$} zun9K?U-r7O3}c z)hu;bASsL)M^{c@m0@IIWUK8!C-s%~H`YNql@`{XG8$eP>~4|WEV(k(CEm+mGv2Rp z9lTw4^7`7dn%nPk`{Q){YgyHkj*k!@Yx+7I`83P7bBOwS(F?D$ss}L@ zn(5Dqlb=?~f$DS&o8nX-Q&RyA9*q1edd!Y?AU#VL6uiM&&8o)u%;W$uU!f*jCjuUb zdT01&%PHv!*+%AwDb*s1BwgX;!fn%ts3P5H4M-wGbOAu#eNBEO<_ZuY%w271DBTuH z{w-$*g$zqo9=Jt4$JAKOqQJ-xbsu)BXJi|cNMzS#jJN)61QO;Eppct6Ktq~AX0x6e z2_05Ia{4r$Pv2iokJOT}Y!JQ-E9S<7#4c^#&BuiuKt=yJW6h^AewyE=*#Ga$bP?=nZ@PA&5SchX)d;55WgMkkOfiTcxBVdRt94`yy8w-mj zR3hxT?*NBot3VT_lfFSXiJ+ugfB7X6%-d- zEo@lUxtLx+U;<2F4kl&$NZK{mQGT3CTfjFfS4Nd%Bd~XT!&T=(L-MM_Sgt;ra_`g5 zEA=gat_`dT8)W0E%;2O!q+kugDNUJn25(H^#6(XCi{G< zDB)?@bmMa0E#QY7u9WA^W2@IbcTT%|P^(!q>Cjd#2fVjNjEwPkX+z*y*HIUodOgbv z>=?du?-CZyI6JZEa^JkX!(8NgYjRBM8C!Doz1|&boW*0zGA<;*D2hxO5kwa~8p4`b zkur?rBS2iCPdTqVr(IQqqCjnolX1pHdS#WM2d%dcLXS&dP*2+< z27oElnNRl zo#=w^PZD-ou>aFo4(?*vO~`*59ck|JeNc`Mr@gQHt`)R9@JFwZv`gtuCHTX&f#=8$k z^4w9{1dGdXuf0^t5{p~-t^v!5O`_~zkIl*dlH3(lONIWw%#`8`=cPaWC7Si{!n^tK z>l8711wdKa@^7p;i|(0QL|fYSc2#lr;P?%17W6pUc$ZfBkj`~x(Y8i4vF#~x-sKIC zoh0?6X(r)`vAQjV{dm)Z>+w4?|6`)Ot?Y4uex&D^O$?PZj0$E_(C=T+Zi4q!fupo$ z#9$?f;Fw`_^7>=y&%Of?qMd6af({1U;GGC>2hj!5)p`>K&jKgd*GlD?xo zu2oM!2m3heU{fzB9&bFt51ngxe&Awh9LJ|(+By&Zt~iiy7* z`{5f(Ar+q@#w&#nX;76+5hY6dKBcZN`gpV^KZ^KP8i0S8Kx!O?IAI6FK40ztme>ya znj}lnZOV2heOHO#tLqlQOT#{FRD4S`N2FX<|?XN1%{AT%$uIS!qz}@C4krRMM zh-wSXyu!l&Y8oCv1QwZ&7#3|ou4GP-)tGwNQ!!u@t|$PGP*)9E1-m?~jM`hzUel#? zsf^3~nOF861Cmd#Y#e&9;xkb)>vDuwp7(OawvadQ3aKW2fqe#j)u)6}nKJ*m;k5sg=rf?sjA#hsbMN;BT*9e+POtgEOxYBk2W z1y$~^lb#Eeiv@w zM@el#BwgoQIk#_f5I-wi)?5H*Jc)7lqtdI7En426tlg=>voNRQZXz$|4EwY}#Wv*1 zK)egp8Ki1T$556E`Hos4*PKux0*Z461ha7wRBJpmT*VF$lb|bEX#^ev3KkVA27Re5 zLU&(30fSvo3sQXmFqz@HzHOjSqQ@41@6Va4pT(JiTrT^?eEv@54@SkPyoPHN*NI{9Mt~=)8KiwI(J4#c;d=Tzy}JN zZ;60sAk8)}-u{x#kb_c$3Thb5d$eNwe^k8%R8#@iwk_S=4MUfNGzbF25YjM&ba$tM zAU$*=Ez;c}-JK#KozmSYe8=bizwdqC<5>>Onk8%D%-Lt}ec#vZu~M!T8PwYgApP3^ z&hzE6DPViz1n}9y;HjvH2jK@`UNPaRA({@R-A%Q_%W{&WU-k+;cLW;*$9|%p(3F74 z3chP3pz*xmhkoL1UYTiP0hg+Ei(#zWhT}H7YgiIYN_CPI!3f_{z!!(brzWS$B*|0l z{?%pb2)x-0PDI5QHrZ_>VMS-=FkUH!L^qQ62!8(e`j3e zQ)0m4VKK3U;o+-KG2|!NaFYSviF142RiK>)hNL?KbCzn!^UPo7ig^T-^6>CQrNA;9 zS#C0F-lrysxKiyOs7|Q#TfEQ5((1GUO~|M1gMZvvt!ic=8N;?f8{`1~>c*eS*0lk$ z!2)=~!akbdF7(oN3+w^-zvg3%2)(j9WmVJ{?a9k|S3acvhdZy|TBR0E~^r4t0>>*B6sk-(7 zmTDVA`Jez{UZmXgdOC;HTsKW<@4|q+mDTRmK0%Sn>GH?H8>*r~QRdQNaCnM`Ta!-5 z{f6xG-XxIYvHFxE;XkT3VI<^#@)Uycm8W(DOz*SU>7Q*E( z#bOQTD~B6p-{%d6V&+irm&T{HvzOJ9V~RfzNZcn^J)>}6)DiIvh@SWSdRgS z{fXnG!4j9fMdC+6oG06myDbTa)nf}Q;`e$VRyQPH3I$g^wj>lJ#M`2UWx!YaRV`OE z{_DnX`2*6ZnjLlsZ3Mb)`Sq=B~E8irfCWI&Q~N6Zx=IRFfx<#IbuSK^REtAoCqLtVc8Emwn4Rl zO?uVf7KbUhk^7#TE-5xVc-xxn1w!zEe|3ub(JF{8Bq7&83e54VLNP&_PAP(Y;ZAr3 zy-4{T8=HKvoM)MTQII-9#l~EC>D=o*Jcckj$@jupfq$>%_}4jE3l4FRYs5#}%_u_~ zgOA=g(8YJfsB(kKk4pfa|6xcSrTm!M7!?5{M*c66343W)dBJtptDF@Q$#vq0NYVTR z(XLk~$mc=SKdHlT!vi73p6^7Mu0LGp=`fLzc~n;px=ZGRRpYs15AJkIY4A#_aXoZ- z7q&G1iVoB?dGk?9L0MOLrBV9icy+gWMDYF)Sg6w_AH58H5nw~xmQ+wgT|hQN$)ld7 zb2DZE2dL)}8)ub8*w6`oS2yJ;z~CW?SF%oJIF?#oA(gf4v?tI{+TnbYf6e%!$>3O zH8jA`QygL3Y|XbsyG()71CUmOt2;Qlrelv?tzQ~(B+}vL!u}FkbsVSY8(A&F`Kz6F`%#}Pssxm=48qP zL4d-XIu_8Xc#BbD4+5}Nku=4k=>>bU^_yKbZ8rk0L|w z*c-$=6sJoIs%&>xYd^sc4Kvt-=^9B??* zF6o0Z*=|vMfz6Wk_ChW_)E}fkU_v5HN=7Ck%ia7l8E8sxw=o~N@<85#drNckM^mfa znPCk8@%eGEB(X^4o6u+5$C>boMA5pe=;0lAAqpI;>27zCWWLl{v}n5TrV zmD`KIvQSc$!9>)!rXq=76XU-RFF=%?su5AQI)q0{gr#>jX6j{(@|5(*=0%j^n$#1n z;vfTh$86=I#C>xyG8{;6ZE0UK6W=2WiqGR?tB+4>s}GY#;}0+Ae@C?r02kRVHAISL z`-6TuT1$@Y3w@|HJ{=0@m7RM>PRRHEOeziB*IYhFI6V`6{r1Zekr@NJT6ATaC@BUg zp7$3&C+*=Q>S0|{64O=vxj+%E@-$-s)*GH6=a6fX_urNNj>-OLf@CvVLiPkBi0IC$ zy4(T@(i!N@5OAvA(a=#bi-z<*I>g6-ouQ3b<|9$)^IhFvliG+E9lNwB@bCv$MU9ez z{{25k4bGaY$3Xgx_sSwN`M{%v!up&zDUto9*;QJjExH0GL}qy(*pUipH4^~{C10EX zxm~nJR2i-oPot)nJSVUs9+g&dP1T#C7q^9U&L%!Xm zrKny#pK7cm056&J&-U+MvoAZB_5anjK|&(yDwcP4T(#tP&#W)YkE&V#c-t=NC0yqiRBS^Vya|Bu0r8;{n}zO94* z8R!CAN7%ouPmCQxg5bcCxjapL@Bq|HM;zd7I zw8mNiY903FKRv#-Scmr_P2-q?tOs``6x(A>@hdUFKo%}$?aEUbu6d043k6X_ir;bx zujBr&A7jo0%X^ENtN*t%=i4={{T_!!Sj^& z8s>?)??{O{wSfN^I`hEet+002!+$@je^L!@tBbxa^CuBirF z37kjCjwv6=w^<%k=T#6vRYIMCAyvd;5HRl&7I&{~`7<~wJtz0iA~myAlM{nh_ba;4 zOv2nuJ)G_?o*+AF!jbjYw1&-CQ3Gcx0e9#S!vj9h9K%WI-dH1DbSYjE zRfaZqHXeTE9p317;{cNQ(M%L)OG?qf&3<8*nEsmH1WPdY&tTjub(NbInV(kJ8fvH(IPAC-v!B`~aC&@ukL(!($1I4t^z2OwL?v$qc529^$>7Jg4#9r$@p!wZ;ErE%gc#C=7*6i~UIP;Bs zF5s)6RsnjK9iVran+rd#AQ06P{dWR}KH#KS%9tLH-X9pS7WsDvFbph8M}XC6?8sDg zdQ{oDH8&MdCZ~1=?0tOxGwz$%nE-}<69YFl=5A(USz5g&!lZY#U$i#x8rkA?^X%Sn zbJRA&5dBu6pEPT!&~J3c6d}|EiW34&sD$7x5am9qy`V@r-TZYbB8|ySxA|8aY14O0yh%w}IO-Il@)QlD)JyCSka)nEC;|QI24B3L|9<}{uwqllImL`s74hvNm zsQPxvRk~q~`-e|#V%kXBNH_|wF7tH|1*nu?*nEr5-$BVXSkQw1})zA7r>6t>-Gj4 z8(V8sCMsH;fyt%EFw<)SO;n3sLrt?*eohP=PUidE<{#=H>5D1gmzb}<`T|oL45xR` zUsIC`v!mu{55~xCr1wRk>ub(sDJ>TBU4`VDcKX4V zQ+%Viv@A1U&IT!m@BZvhVQR@AYJrYGl4MMQmPuIbsw|PE<-k(eTP#Z%D1HEe;D=YE zm!~JdA^^TEs?$|l*2;N#LvA(Ma6tsPhN^e}cgv_;HQ$5}EM`ov~u1C_PGMWqdpy8Lh|yGkBRW9o*ImMd5k_RyHI= zbkGj|Myi&7w3-?EhaXKZSA;jdZ=_?y5!vO{uv+IpS$O%@_ni26CP~Kcc)~UCH2HaT zAc{vx!8*A9WgIYF#5$zdT&HFbtO&gBw5dVH4{}phSHK<^hd`bzKBc$5z5RTAkH^v{ z#Z7>Rfz$kBeH6QrKqd1F3=#=xz*Vdr+@OC~Qo$?^@|!895=MYebF*dz4Ne*M5o{p| zleA)#MlX373OgHy!xT->`bgby>a#e43FFf}E6mIYHat}^X#-8)Rj(Tsqma_~Tg%W+ zS-gf1Gz$M2dlQeABG^EgE4O2LqaF>jJr0d45P7BL&l?SY=XO}1X==@>Fb}C} zhaZxm8(<2}0Tgr&pHQ33K%#04jFt+&NO|l&GEO1f!8Htm!3^f*$%I##vEx=pBHq3e zuT;2Ah@Oc0H{Ig!L~P(N{(jBtY|a^4{t1_ zNKE>Amoxd(?c=^U#Y?xx7n;+(Xyv$=kM;B+ZV=hgs#!hN^02$!@twp5By!lhu@k)6 zXy%8^CTJP-ZEl&VD!xr6sQ}NcEiO&D(OVN23=8nM^0CQeL_~p-i#+LxJU^(Uu4wSP zu~`gI*7WyfOs-?S4^mGj8Sg9?R$!7x+(OM53x5|K8nQq}HSIVaOwPTB+XL@FXN91h zR!$K0K2%p2k|%ESlN2bqbrDJ{Gi8N_A%)>|s+PoQtC$LefOs@Amkl|u+nJYqav*OX z_^d@)ZEbi9kz$oiRa0sL>#))*=r&40nSyr8Q80L@nXh0Tw>RFV102!avrAP+a04>T zBsu3m!q{PE>epq){76ka{UPA3ar(@gW6dnBA-)>Y&QW4iMUFY8EF{o>EuWIAsZ@D=rfs6Pd}e znYV@q?0GXB>>cdCiPbdJ0c_ZI;B0Q^|IbECQBaVnZXYn3D*@#%)iBSMk0Uh5RER~k z*Hw&sf+;V0!Q9TR7O)1^)d6R7`&*!qnzRf8ykyvswZ?iz)fdS2n(Niv*axv>Ic7YK z!i+VaNL#51I7Xs!80L{)CNpVB4Q7Q*EMMyf`YcfKl)J1c(v50R5m>6$Nt{?iNqFE% zNDcZ55%LJvC2TqaPL9ggqsSP*6=wEw|NP;-gu!_P*D)i3=!4Mx&}2*n!D4fr=8bpA zz?W?lF2!u#sxT6hKGv*5_o|%xWT2*k=bA{KaMgk2U`uF6Yf+-+KOg&T2AC)c<_5 zpzL?$@$oSiapX_F0hNK?!L}b2=^mU5<%o#{H=OrEDy_%QSfV^jsE+uUFYt%9oxt* zU`kKmqR1duU3p=S)PZ|fNvd0oOdgW*O3f^NfbWN}RV2@1agbFV;lx+Kr-C#`g3eQ( z4rHx(IlUar+5tVG4+;tp*y7u)Gs}O~K>Eileuy$WNImbvpiY=&hd%Wfu%X2HhdFVr z(SHpDa+PM_B4}lK>Ny6j4t+3o@6DaJ+Bp?bJowB*84ZAIcIJQ%y6CiHH~aC#XW}o8 znDfiu+cp0ez)o?S*?Q7q2mC-G%EHx;bGdaQ*L&wzJ-faG=5DNFK&t z9C27zr-6jwqah>}{`644>*%tlbFP4Iv(#V3QYvONLHnV?>Hp2O#n?5Kw^-Q|lt) z-_o9cQT@>O7o?1hb1)IRhun~d#i(pz%8HqV7GENa8q1P^939V!E6K~E#(S}K#wkZw z^9dpt3Qm|FuYS%Wnv;|AU_jZ&Qmt`{5gW4?SzVNAX7vjaue3ctu_(x#u7?;~A1V z3S@W_{Xb0~9_J&F!BMCf%20Y#fi%qSIJ~@6#fT}ZLBuJ}$eo6rqK+>O(Z>j~3V35@ z>h4OROj&TE5LFkZ67G1J&N`lkBM6}`^r%Dr&)^B_CrQF+Db=s)mKNib41XBh*%PDT z8y5y_mC=15sN2rex_h$l`+;4d-}}tpohGip3pOylp?LF!bmYCw)qf zgWHM&S5M=kxqOMfK$W?Mg$qY!h%Ua#mnh2M)O};>Ac1cDl2&{7{EwliW1zi@;1pdj zdOyRlazVba){dDSM1;87A6GTTCIjt6nq|7wLQ6Y?$e94sOCUShCOACEI#%dsbnrre zrVLY%#Tar5Ur6dHPg0M%UdZ?bJP`?hVcbB@`X;{;rjq@^&+>!qTHT6+ZBY3^^#?V~ z8}xX-1bL-6g4b@~Cb4 zsuOa3QfqktstJJM5oAE589;Qn5detRd3DcRabgd;gQolrh6^mf80By4-3ho^Kum1h zs1;6l)iJbQW9GxmoC|Z=}{vJa+~f7^M`zOipOg z4FXe|VbaZbU|nZ3+!v7ZuJP5}OS;6e z914`C`XNo|<7~lD)X~BcD1w?hemibo2y!w_^pp4AV6Q3g8U0R!wPL*vK@cUyezIoi zRR~2OBV8H7LKY)!>i!uEjIh>G5P-(z{Y7>=v&&|?P;9#K0j^7GYe-sMLLs*(6Vq9C-bfUa}U5+y}i998I?hmB(nH)ig6kV9#rUMQ>q;v$OrcY>I%){SLI+0 zl4g(sQ%F%I8D6Z)YuC$(|CJ6qt42TLbOCdEa?se@DnwMB!S!s2>2CC8To7-C;!jS~P7|%!| zFh-QreqoD^)+gAiEy4L3`4`wJ-fwjKI@afYn(g}{-q0|8li2)hP9djPM{v!q8<3Xe z1|)|;0Gvo;d;8~ys}j+Zw#$=Npct+CoVGk>ivkj?Kf{SY7T@gpLY0R5E>+R*L?A5U zld(W@=Pg;q>z}v2Yu(!Zy(i6=g)^5IDx_;KnI6Q08j*s3)!KioC8!u)1^&1UK3nQs zs?`{v_gh8yvE;kEmnFKKvG%-@!g4*ZC|GHA zW_z+ZW8(S0jzI>jHS2cpt=V#>^UH*IWdT&NPV_5;3H4HSVtaW_bQ$kl&`!3&4NI3&Y0YiIB|go`-vrDlGd5`|zxo5uFUfCqez*r;xAf zQ}l>L*#JL@8!!~rxOc67kcBd}iyIS6r-79w#m0uu9=T9w=HCDp zbD`9U>Pe3gK@1vs3ejBPOV$+(FEqBMTu-f7u$)|WCQM4xW=T!s5MO?XNaLhk+LHzu zf`i`{)9Vft9qU%R229f9E&k&7|xd!Rk_mi|Nc zLYWG_Xx<;u8)E~2t4zI350L%p(XL;aa@oJp{j_c@EK&aTeTAJZIeLIpjtEs>S80!? zw>DPkzww?TFw6tcBZ`n&YaQ&eT($!DKZ%A3cs%%%;WI3}dp_#9^T918+GVr3mD+TO z>M~z}>+@yEEs$o#-UhQmp>du-!x*yc;gE_MMpLG+U~MJ~qO-~*06F`NRp?o&&5-I6 z;fowMpp`r{snRj#@2F^rGtUBx%yAz$%i8b#h$-5x?}-_mRh=sgLX1CwOl-msf);wl z>}P8E(rX_h+%|#c5ipjg{f7_f<*A%0@^N!!I4hC)ho`52m-3jv56cV+GkU`4k&PTm z%!twpfc-T>0(^STvAK)@dZYz38LEqgyzQ)ti2^K#C}U-T8q3Wx@=I8yuaq3bw-vSc zWdi|@rI8FT==T=~QalKGp+Bik$P8WqN#Byt^f0A+2|m_O@DS=RM}e7*`#m9UKT4)x z^S6701p(o#U@}c7%SW~JM0LU;qc{aqOJ_E2gS1uJL{w3y2hOp8VmgEVre8XCn2M4* z?Y1m%UjHZ>QMwmM|bZ)8k%|Lm&*mL z02X2QKzX{-v9X!fIMeJv`C_V8oee+L*TfnM?0mLiVFHEP>w@iO@K1fE(`f!Fi!`)f zQqDjCOEeu{*{p3%Dh)L?Mge1Y|lVz_I%8cz%BN75_H53n1TZ-o2T~{6bDwd9roWfu63O?xWwR>%QTA6Bh^c1bFkp2!^)apFt#r+-&VYj$B3__*+0O< zDL;RlZyKGEwd$}NTPN>DBwCrnV~c3RJYamEH-PG=hRFj+KY&9NU zi?i(7Tn5d)0O=}{gv+q~lLwFzApWgNtBeVP)cRYLHPhRKdEN~<+5f%hwVS4BwtU}k%)?luCBd)^IbOf2hZ~}kTYX!)jac$ zK_z5a$n_BTqf!nJ4}hlxdtTfSv4V2nYcD=5`}|PxU+ds>zt;|Pdz)E=w3in9cyj&i z{0Gy^iIKz0fPd@OqV(LTI=S0_+&ya!(SPuTn-Id5qUD-1U7ba#K& zxAo7eW&bAfNAC~9E+uy9h#&lG^v8V^BE8p2dmqKWZP6xTT{PSo@V~UAPXn0l%@nuA zbQee0;q$94R>2;ZNB!Ha<3DY~aIgILOgXJ4fUHB`YOSGj%t0K-e?d@8!cO6OhOT10 zoGZ^MWW0_^mymtI^LgLlbHI}DYH->~bBJK*W8(Wc@m0TxEmk3bIlQ$m*d2Yb?Dud^ zxDLFyTj}*jc%}a~4ayE=_#N(=67YYvfkHvEq{0we_^@?TcRFH)5cO{TTFt(K1ijbS z#;ZqE9F_VRMjb6a8=I^5k!9_FEl<1RMW8WirtUpbY>I@S!66l4)btST{M)Djy`E1HTzZkQ?W1->4{>TH!yB;C;*C!@kE6KVDR z$i*$weTeI4JbK^G=4IQT<4cRcO0ZNnX#(ByF1An#s2KX@^9W|oL>};S zTGN3kaLU!{J2_7)O}wWc$%yiov74HT&bK2p&~bwlB`fOEnZI@Lx#JqWb>DL9?Nu}B z_Xtu0QfUKCl%)JK)Ua%SG0L*PFQJ*1r9kq;QWudRHi_D?tAp~hTI92(VV(2*UDJZK zGROwLgG;P2wl{{ap^9?g#~dgSh8HM!Eo}?0R^Kr~mZs;xmpay#In?v#*wrNPH-2Wp z;ff`HjKYX%w8BY%m+Y8)#?TYDZEYze+C1q^IIg2Q=nQj#G{Lx4CYQ;Up~9>fh=riQ z=#E*Rse!%WqybHclj@??+L6<5E=sxrEc#|#ZP?{cY2Ml-9)Ff438WwtdoiUMH*u;fFiUXuPZ$Z)c{Ww6ei!K!tiItdu zc(+R|0$ivCxBdDTL>jy+Lbs7a7>?kETQs4jW~*kODdw^XkR>E`g_%#Atz2Dw>f3c4 zCZ4>9px=8G6yTfL;I(OO?WI(qSbb`Yr3B2I{TQNyt2_t2Js<(r#*J%mDPgkI&t4he zZvU;1$?0-`nbm~B$3J8JVKmL3Zk8L|cEgS!6S2N(HFvlL;mUc|`J~;N>ek6T8WhS- zN4l8TN23*Rmos0VXwb&M`z4T>kBxZ9-cj+>h@@tHtYX+`%XHuiE7MoVsj&6-Lk9GI z0Zn{H23^KB3MAT|-MBIH`&6}bHC5%nlE5gror7G%sdxAp#!zut$n1sl& zLM;IFny&Zh+bdJV8D@(*p2l7mHYHoc{0CBa!f4a|4 zdmDh_v%kB|uws2{jG+fef|AV}A0G#5$#^tSQKGYsk2j2m#9FT8-4 z8_WF4Mmu?$G`G|CGW-Z)hiiLR&QnrfKV0)(l~69|K8cfN=$m5_>}Pq>Rg!%RLzIht zyyXOor;48RB`XJCGq1pP4T~C~BTTdU!MS$^RYR?1!}<{jYWG@e_c)l@879~^-wf;B zTj{p-cpjN``}#Vo)BXIZV3ed%zr%U|qJUi+=U>KvX@@>bB7nu?PV}mDHVj6AHrF*b zw>LL8G;gFeRC++COS4apId8FveI8wO-_J<(MGAoeAoOy{puPCw#bDLJfAKH0r$fRL z#idi$^*mXQj!M814!E;x{1G}0uvp?QB|V7JgL;AA?B7S~r}s2xcr;j#Vv*+oG*5J$ zk3OB9*$?^W-)SziC7!p$J>Om*2Ll;zoqLg;=5HHNrtI1N699SE>_lU@FyKbLuu|tl z_W%1F8nT1-E}zen|2YEf!f77kdujfzCfbFAuPWBsUw|wZVgIMXs)dKA$#m-Bcz|}C zjw)CVb$8n0n=L^-zBfp&Qguuwfk++)hz=j?dQEe zL9zO6<~yIxeNsB_FTKiln|Q>xF1h@F-!_h=guQgOo;Hu>>StsAvqI2ZUSQmBk-P*g zXun8g$hs~g|D&dzzToX%4E~eQI2pBmW*AKD%6Kk*etvPiqv?2AAIGWCfIV;hIQCs+ zj{S`fx8TQ85qmdi;*3bdvtRHih}zwf~Wv48EZm zd?}m-o+uLiq&%hMJSyxkE+p9e$NS+tiDIMabLHc?r|asUSAc=x_qg->ADtGVQ54&4 zY7a_c0!FS+i(9N+=T{U&7l^=%5*lKEe7p2U#|AQwy&sgE^Td99^AkgA0$%K#_&)pH z^nZ_!4hp9nmcG9wLU^ox+_^IlcJZ?HS=pj0_nX8Wdb^-Gt2WLyp`d9jJmF; zu<&NY>7^)u9OFsp!ctlA>QQGynirG6%OZ{*Gs9w&N0!~)1C?;{{{m|092k3Fqn0&T z-&6WkB(a(-z!VCd;}0xWFwD5qD$WR>G~Y_0SmYHb+q8yDLKG^@oDmi=NZ}S7{1>;0 zXENl#bKI>3D?w;H%bD!G!IR+^=7M|r4p{I1!g4Fx^u6lv9_BVbRg^Tx#r&2R*VKT@ zBQb{sK~y@ry3GH^b2`3sgB4II1Z;Ir%I4Nm(Sovc-?`M@d6#uSM*RJ4+86lJ#u9AG z$$WZkgCFY~YAb6@k_RC^g8YUAzY;rj>6%$IgV0Rwz~xk-_?o(~`59~OlwrS(5u(VN zZC&uJTq@}-A#jmGYD}nhiQq#n5E)=fZ-TRy2^RPGiHC;=F)AHzwN<78NlnVg%eA{@ z7vO4FUxLcDOaiqTm_cuQSZz_>xgteHd}(E6EQvs^sK~*!qGhy&fi!S6l5FJ=Sj)fu z>3?VK(gWI5Cps$p={m$lkP;&acZ|x+5O{^Eo;dKXCLAtMlOgA=v$0(@bDP0g!=UKP&8Iae+1qSXRNr5$-ExfmyG!XJS*}T8} zI%$Mi2Hn=*kNoAMS_Rnkv#PD|OqeIk?&W$+Qxo1*yn54z8sJPhu*@*V9r)!UUS8i= z{|%m2?u=6PXK|Un9@8?DgLzbHk{y1+=vnUZqwssi!YHKiZ@78we7PiweyWHG{7O++ z{SemT1OnGhlmZ%HIgADQXD7^79+;NrFGda;AzCF_{pid-=D`P!Ms(sHMBc(Rl~<^7 ztVdhqYq2dx8+V=M&_-$X0YsmdL4RjADC|gg)9XxD%XXWiTBbLHT@f!)DV_z;tQRG^wp9g(4h!s@%`&8qc%!^I zxbDfB-0Ux96@wZv6eq&7`Ni36#^_%m;A)gZ(Xce*Tpe&ym&q+Bb=FQhsgW!-M37N7YEkWCgQ?t34}6x%R>(Ud+5IqgI~tgC8Avj~G! zIKcRMxHU|Fd0fDR($=Q>{m4mT9x;)*l$fP}oGNRqu~ERY(MvgNad83oXSS{7Hf^Iv z3&n+m+JI5SEdox*Y1lLWVW1UP$IW5q1`z7(0nAp(B`zPnc@IY#wPiot1pb;Eo<0nJ z3lp$Bv6*1~1b7QCjqc{t^T#OGoCn_qI4RkN~@8@w`;W2=xKOx<5$&lF8kWk=?B|6nzr)^fB{Wn?o*e8>0s z4oAZ2=KAHr#Vx|``75#iwb_!?^Ld$-(c^Y(Yg~p|%}=hs2X<>`oUI?#7;|qwpB`xY zJv<2bCS>OJHfQ^;(i`v;OT4VKwy3K)z5icp(n(%@iM?ikcB3La|E&-}f#!|`O9rY8 zeOGRO^g8Tfe=9abjDBC1G++*DIA*UpERxS% zdN_|_lBo#oDwVsxr>wcy>PzI>5SlymVlQ9#BcSruaJje`2=5sruwGXR?L9VY|7q4_ zK@daI04PVi>)b$lmZC`S5U#dC2_VRr%ceRWl+6Mgx6l zCQ`0KGApk;sT>lQ7K^*kM$dg|U(ie0c@rg8C2l3)%E=|yfN%Qo^~p%uZQrqVod0{H>OH3(SXW7*kaa-EDMi3EYt__#oH z9RbF`n6TtLTe{@@_;OjP7EuLQrh+j#IlY>(1IrvaMT}%|H=~qflL>mUgobei>l|>s zES!&xTd<~bD#(W~@X*^>X=hv6~{vj-O=BUgW$g zrlRLNJX^MVPc;^Fe%lj5xr*TuEx10k`7nOkjC6$5-!6LoL@{7B7H&y@#6i04upVh+ z^1&+j z#=$mNc4kU>w3I^%T9$z;u-cL=DmKH)5zb@pg*wbeZPm$ngF;jL$fZpT{zEM_y@DATbqAoW!9o-a> z1n22p36{iD#XfgME>Ku$90}54Q^TFIDC36&z@k{<7&4L&?a@JY9_Xiows7s(NH%fv z-WI|)R35d)Zo%7Tx{|Y`-MhsMZzQwO#3)pS5Z~sgNy7j;n+6xj=>5i%v%iaXwb;B7 zB_+o#PRirsXnT8a*>7w>sTQ`4Wc4zBRA6DROEhvnOITb9nDm@&EVQiz{;9B)J;wN#I2WNz>Db<)xOKUg6d+A0K4C403;6Z#$#lGMwgo$6B!B^^T6^M z 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 W3oux7Q|Bz;KLuDw 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

tEd37q<%n8 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 z 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

N`xpW^B%*e?^hyC-O_BqCs#` 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%0AF% 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

C_|(09`;H)=a^#Y!wZt%Z#Jm?ft=t<>gR{ z-Aog}W41KP`;)N?%PSES@5owoM6QRMqMQ_y1?Z;h>p|AHcvzQiBjgK3=SN$XjEn@1 zZ`(0Kd7xJDov8X;5kz z%60l)@5SZiCCFA~e`PUSK&dBxg;0uA##Ruz`O}Re3}sc7CYh~8sCd?j@CaDtS4L$+ zrIO{SoQ6F6h6so`u6@b*^6lHRHZPDfa<5GeE<&ueC-WaUENpA^ZofRPnw650k!q2= zxrO2q)7Re`2Ai?|8dfHGXg(q7b;3I*oEgNS28v3Gzs` zF;{tQYZogfO|Ye;%g*|?l?O*Rt1oo_Tk7|l5SgE}`p+HXe}`Uh4~e-~?l(&SCgI=u zP#7E$p@1p0TqeQ)WUx`{v2a@$Y5{)btAsw>kiBa&*~QKp?u_x`PGsp8Z1b1IHp471CX(4z)lwS7}e-@Ww{{Y{J%WQ{BjK z(`>dt`jOe=00zPAYxbXB-@6fcefg8P(2XdRi)_dzDExjHR~rE^MP=7olnCL9I-ulG zo)_=X!o|cSG!%VgSdKeOWbwfaa#0dCyo{>2xN5sSTHm>Km5748!* z1T1et)}}4@r5R8mB{~9e)zad-=@dN@TUhsb2}i)9p|?s8dklmVOGI#Sl|5ee=|VVo z!P7iHax}uc&+x-j`zUvdp+6Ogk%YNg<{eZzjD%vS@JAKI#8i}VT69)j^8_^Xu=c&O zA0=Ww`q*&F&l=hB0<^l6_!}>^SSF#L_f}}M3gXuXVS|mIgCegA3bMQv_!I7G=Mz)H z#Um`9E5^VTo;PG~Tc6~Vn9kqaTr4Eej#l_Y=KjeV#MpjQfUHb`joOho7lQdX#6)5Kt1n;J^1XIO3Ag%GJuT=XL?_oM-mT7`24}H$Z2dDA;?HXw+6bNc(*zms>(vGi03Fm0Ui-=V3bT|`#FkP}wJL%s{ z|G*+q-tWl=TZ*)gPUCC5)X{HicHso);XA0|v-V)&a;m=V5d7mASV(!kUk?WK`Dc!LgWcYM zs6`O$HnW>UqdMdv?RH)hbAHHYGh98(3P~UC$ET=>i&*zDFfgSoJ~K)vZfr$^sN*;9 z%cJeTuLo9MHp%Qy$Xq=2JF@m$E$}-n@Eg>)`0UZTf3lX@;(NHcy7?$dDVQR}rpE3E z?-2d1&}-61D}mrWuh(^N+BLIyeSVXe3b?z(_k2G`C2kbwSTmo z_V4?=*wMH+@Mt@m%RI%^OJDsQ-qKGSZY(QaYyrG%sa&8JrPib@{qM(O+ux|!*$fe? ztGsVvOCx%?koeqI{ewp`!n_iI;xUqEqj;o?}v zF5-XK$Ncl#pl0B|=*Rzy=Fit%xPyYP24pUx>i^CIwvm;FHKm0AKxNl**5lrY)4SU1 zo~;;_eh+mWzA%X77o@}3KR@n8xWe9IQ_$k}r6Mu$ammO^Dyoiv03K>>Uwp#2I0$(x zk3Y@sTe5F!Uv6A{bUYrm^{_iqdt=jNo;lNX4Ml+QXHe-2xNjP1U}oOVSi#YQ5i-T} zLm5DjdfgTHWf^*|U$bf_NWe?@)t_}2q9RCY#hMqBpg^Tf6_(7!F7%wJ??aYcymG?l zwa;tWQFE1!F>|&a5irE ztnW_{j_^APAJ%>iFJT-3vyiju1L7!l1>e(|?m4Z8;NA3~kakLN0LS0A;WND3NKa0j z%_=NwMJtfU*2AXczTAZs771jvTWP&NCBgEH3ritQQ2w2C4SR_5vQFae)DeC_7ozQ`NIR$+i)JAJu+w%=IAO2uH06~X0H zY1{n+zoo+7`C$kHz1!9uJ7NdB z-vhyzw%KiC<5wdivjuBl8}YZ@*@=&iP1#$n1CNqebAaXY1AO?)T??r*_xl77nFz=k z?Xe#GuWRVAc%VSABWwb6ksldN*Zma|{;G>o_Y2Clv;o3)E{K+*5L8u1TB~yd5|QvO zV@TOn$a775YKBt+BAvyk$oo_1Dm^r{6!U<56v3B1(@4plKQeRgv!oLJgpZHKCSbr&p6EF5f7~QB}WmgAl*W=u{KRns_c7TI2vD%U9IFUg{Qj47(2vi`n zl})TFkPl*OnEdl9jJ{{pd&2Hw#3V{k7JDmY2z#*4x*5h*CUX9C~)WppDaI zQY3%TZf7>oLB?)ymo-4rm(oRvj>bu0zL6(kzY%C;KrI96REwcWDLC5fgfgdfjp!7e zjK{e9A5BM|)3fDx|1j>cBFp+5RbA&)#y_y)-C78G7$z-s4R-rv2P(G#Q$tZ;<@W-R zLxZob&VRcAftyA;P1lmPxw_{|r7L~kkdU07 zGfS4X^>X&~vQ&oB+HHB|1M!3g<&i-F1ceV+4mZQrOZeo4ink_RJZry#!k};S z^Q~Tor+?Ggv-;o~T&dy*M>MCzyPz4ZE%c2-dKP&Fsd@q!=JRC!nixCed*6c%n*mls z;F3gePpp&@@*MoY~e>K-3GrWk=bIAx%UONB`Z|0p4z zf3FBtmwEa`QHzKLOFm^s%B*rH@R0;sIHZrN<&C$*?$`hK9F4y^lF{=${jG6scDyn8 zzt6Ryfp_&^B>aDwkpJLXncwH17f8#mq8-(-;8dLs{GdnpvN@}LYGZD zoDF<&vb%&lm1Z;-FvWAk5>lHIjmL;Ec4xv>V!K$`1?8!RpbY+6IkNc7LD$0^7*oGw zHm;5`A8*?(FnJWLj=oZ(pG`jFxTb2>7my+(A_SKswTU|@zjn{XDusaU@88$=WCJaf z4DhwKiLF(}`d}(%iyT;vwdypkVkx4xctM&<&0TQ&F?bbSq@sPT7bAuSZ?FRhGvgrM zAHtTGtg|}AI=~eRPJk^e=_e$M{L&NcAI-J%$nq>O>EEM4i-fYC?gvZf!}&HSjo^Ef_T9`m>QuE{sDOL z`2?KQqjn!%RuqtonMS6ku#T*&9pwD z=@dQ||4rhd=JBON%vesk|iNMF}hod3t9mp!NHTCY@ISMU15 z_yjec=BKdg3Y(gJBrwkCqH)%sB%{sH@g-<@F9sACR#*2|My$(Yhgs3TRPMLkBT%sD zCN5fFK3!9}6;igA;2$iTcGvYW7FZ(+uoK-x1+V8`Bb%ECQ`kr&UpwGXkwy#5X@Bog z+c%n8e!oG@s_Nxr?|(f6 z9tA^3pu)V6E-sQyG|--=D5#rbY3!_=yQMxmceJ#zv2(dIcUJEEtDAn|?DE)eBdP6J zwe396yX%x27p0uE~&3100@28xnMVFcW{ zAKNpR#t~sLmL1IYLF%?e;?P>+wRzCUk@)v^0|Fa=g@@Vt%od;hqr)wb#;s2~Y%H^P zAR-YkI(6JW{;X%wqhpkCYrIV&b^P5ch2|b94I&ja^b}n62brfm>25&1;;;FyizAQY zjzM~8agegv{gcFfdQbaikw=uC_UYAAjQ0JEzj1W)^f>zYBsOqbf;f)P5(tRGkf_8_ zDk^_G4v2jpL!+Ok?b#)0F8bf8{x|jew)4S_;|qbhw&-4#)1;$?XH$-Dmp89!e{Bq2 ztqXK(nEdajpA5(USN!pRUgZR4SyG}Hu(0R4;O+Rgv@2ok$c0;1p93O`#)vHc+A|S< zs6psoc!XawbF;SZX>nKY9Yb7M30Od@IVIZ=8h1;al&MBCT{E*#1JcjRaLVqc>0wxFi{^>;-Uc5t%+t)1LPUE-yQO>iyQRCqV;(>F$e$+)ik$iLq`P;{bJZ%N zKB}RBv_@X)yDV7aY-8@Rc{s-0wDXsYka>0SaW_r+D2!bh-$GuF-2zS?tGL`JQNcVy zA$TK-wjw~uUm?<8i!iK_UV8jGWUW(VO8Om?_yhE<_kqUS#>j+r1}Q#_1sU2N%WmH< zQ9~DroKWC`6eXJxifU`W2t0fRavV#SYyy0K=fT^$IB zvPB6>nB9w@eIS+V3na(kGLoMSzYzLpkJ$&69T~T#iNg;P2qN%jCgxnFIf552_Uf~j zW;YM~(-kwO3nz}L&a#y3q@j4OSOCFOSsSww%7ZEIeIlut;k10lkNS%&69)Y|ps)rE-e0tDZ&7`2O zqN=DEtvd<26&2BcIv!Y4{#~2Jh-*#@P_?d9r&Ae1i@WNTtP5ksMXvGSy^FJkJ1Ei{ zSYrLYX*0$AeEo$IcZ#^5VzbY1Hnkr&xeKd3@TR_tc(O9IPQ^$}I4XSZ>{4si{?kcv=U z^iYvkgF(rEQtiBS)n7}BNLYAb1vE`%5AOF~Ja3!Z0S4={xeceEsS~5GJTdXY!tDE8 zjEuFw;Q1q&!&1v%RHUGbJ5M}U+$kLUPH?$Fq?b2-90cC>UeD}OG|gSEtW?a3g_{3- zqpnga+=#P;f%O7lq}Ae1hYH?=M6CC{HV>#AurWl43`F=tXt?*L^c2DQ2*Pt#wT*^l zQ~TW|g#qqe@r~IJGG>-5kxc4Mb4!*@eqO%kP99g2`k*7=Lcnk3&B9fl$>sMX-<3gd z@`i$w*ZUtJ4BZPg-@LB;m5sL=}$Wh`81`&nTj64c6 ze?q(PCDWhMA6I^MJqQUnxS`l?s`r*c#hZsNp4AOrXQzkO5(uq;^=~}A)OsdMCp3~KtqG2tfi~oZs3Y%gZMSLUR*CZz;acXAEv7A*Q*h+9PKV$ITFxoJx5EWmGB%Y$f>CPw3>u-vaNQ-Zk zRt5o|f}ujF%_KT#5#zg3d~7}~@?RKK!?^W0@SyE{;iuoN7{3*h2fnW8wy~30->I=X zhXpc!gws=FuG|Fw=POpkRR2?q`2T|0m4|6<7c3!%^{q%}Z~&W(5OR%6IBLGafA~sn zt0qiYwaJ;6ZCd_Z^;UBhYxaDWNkf#Y(6+&RNp(~sS#2XL*K!Vp{JlcjQX4Xc6&YUi zwGe-(Kj;)riG-U4MkdIG@S<=&;SLL#r>mpbR|OM0g}9u~qt`Q;GpGsX)Kw?OvGj@2 z^pGR*n%-8K?j7-(&{nCVIotJUln2wP&QA?nn|P{+KJQLNxo_ON2cm-6Q9d7Dj|gxu ztv{)}M`_DGx?uqYKK@)Uga|W<>=Q$)AO!_898VTw)IEIVpdPq=e_?drn_aN$^8|Lc z>Vst9P@m{Waf_}{++DZ5w89K%EdNjHtZ+LeKiJqGIv7LoBIHxwW$f>lNat{L@FSt< zR7yMr4s#`U0z_B_ImDkm7GTzgGjD&f)4#PI9L+O|aU~_K<|^q(3iG-V#e~Vw1GJqN zA5Dt5`CZ6BA=lg;jMI^@k9-AIh(YQKqI4HDv_)#tePj#lgR{t^_4mPfYRp$Idg!HF zn%M2KWF_*HZe5D86C#ucH^-r6BWtDqgD*1q+8GlzE)3k)GtawnML z^tAQhNti>ZHHnG>|AKpe-;s9!)yDrJ>n(tyir)X>r9*+GOKRy(>28r)U_rnYTp9@_ zrIB*!?hX-`k`|Vf5-BN(B^0DfN$L0c{ndZw-Muq+cIV9IopYY^d`k2iz19=e+}y7R z)_ID-MwVCW7`y@e=n8yP^6;uS&O83nvJA0c8|864h54~hNd*tqqAE#ryO^DxLRB8h zVIe=pJ*#SXrU@P=B!(o*KGXdf1f%kXjXE6nd(>If0##ZGVBR9o;feer;{y+n&j*O| z!^dYAe&_WHOk{9O!fj>V8}s^|cCq(;qJN5%p_syLzZF?;ol4AB>waD$Cjc!w2=^LqHy@+d(l(zb7`1&v%#Q}l3B$J?Y4YaMvvNWmAzwRpk&+Srd( zyTEkV0iav1%ZtkZlO!l0;A-b`%2|B6U~{vBbBrxhBD_B3f?eh-K)MPEx*ejNqg0$^ab z273csT!4yO3w({L8nxd8-`-_18OVTTDT50O8W(iNf9GypJVt_4CG?fTT`!eOy#(TE zq}^R!3Q3zq8B*I(t5U0eG&N_%7A3q~O#P#t5XW7roII)SzbIHN^^1@x`MtQ7I&d!0 zI#DM*l`#*!TOIaoBmaM=#0yJ4ShUpa#*q>30n5?sM%MpOAhM5g+15g;FZh4Gy~`ba zf3e?n({i^ee7g#m=l^d(n|-uap!ApE?gz`ITF6$evC@#0ciBy@0`l+pUFW*ec|hh$ zpv~7>PB{17pAZJ6{3GAH{M*{U?0dBZy~%gSU3o&nv;3C_2J^$icPk+e?rKBoJK6(} z7p_ygDm&Zrj#{j5=elNZ3qsBS$ZkzE|0q{#t*efXtZO%f?DSM><+ga_-j$_Qki434 zM%VB4Tfp~r!4q~>*apO_AD;Kp3bR~AbRE8*z3Uza64&oyucq$Sm9Ag<$*k8(DgE{Q zeedqG!DrT=Qhawqg%@}~1+rBl#3?~oVT3W#Slp}Gt`A(43^CBDfhD&&x7@42joa3c z`TqUqb4;K1TMe@MiBm$;>jH0$KG$@I2O2SwihM7_3FVVE@qSekPJlm@M_-Q+G54Us zS7ogRV(vWgAAKH>tEb5q?J+xU%gXF;_j)JQlk<7u2QK}6KAe6lcRE6cOr+^WA$>~S zlfUg74ijH5j4f#HhL%*uVVB6)_N1V!nK;qTT)<@DpA`lm^_UuP+tPOpkZ*e5>>gkZ zQu(5+OB#nKrcDzKdSD)FOC%VIRUf*^=S&5#32ar!`B%a1e_~6Xz+!VxkL=+ByCStB zboalQQk1_bW%jss^aHa|;i#sm(1lj1sCDu@<%v5UBiNN^2p`x=_{zJUHwiY5a{}Ne z1ttUd$~oX@C0d?V4@x0fzBHtI*R<^CUM=+$S`p4>85pl1de~C1ER(nPT|rNyt-^ieNw_ zX!C%S9jjjTTmW*LabUx1538kF_i)=GzL(eo@IlJ#6BoTd9HNaWuh<58cs;+SMb=B> z=k|Q;PI_lB$$5ZqzMMXxprEHP6GWiMbHyV|g0j=JD5!latSrB6b=4*L%4m0Uu_72k;@0>E?*o~>} zU{uGb0zfQR1FUP#%`dHWHJu2YY-GJ(tqj0105Wj=d@g^rc)eWekxo4`PmyR?RFf1o zc<8f(7LhHkWEP0R8aoa-^i5fsE=&j0nkcs<$5`}31i%$2 z@!?p2Q7}Y$oJc6U5<`k4H0*WeZJV>19s@pBs$&`%Nqzl$#%H|fzGvOBuR-es^2LBR zCf_IQed188-+S??8>4W?Z;OS>=hWgzjrCdbh;731=Ic8$*lFIl5lKcL(^1S))7mKR0 zA_bCEKoe1h-(e4PVGS1>GnJ$J`#YzV&aL1wLXl8)FqaM?^p{;r$npW;ZIB4q#3v?_ zB^m(7fB1wxK`W<02panJhb3l>;ztsnlNQ{2kupRgkSAh2t&mS*5p6shu%?RLnZVAx z(c0O{%9+bcz!*Y+=6D_4s|Eyn}Tu-{R92*LK z^*D%~^aq@IQZA~Ru=l~Z*~z@ZY~Bu6o6aqsJ(G|dR;jS zKxhYSc8-sa&8#{?0s|d$O_kfvVX*PdV?g)>j9Yg$H+u*X^HjPoJT9D=XpneraCg}C zo8@Ns?u?}?&Q+po-y!%i9(gkR^G^ z0<2UZ&fs67!T#yYDS#gvuUvj_dDi9k4%jZNegmXdje1iO`_DEpZs;1zYEu9y02*Lu zi&}t@M65wiJoL!pAh%f#=nCHcu3u76kb2v@{qhUE@a-Eh%bw3bVWgpMKQs@bGkiof zG3OPLEq*N0mxVCeWM_?g(8Q)j$j)A^@bXucO;jH2OQb4ChAz48Z?4yr5Bvzehd%sO zRYz0JCdPi7J;q)!k~ig-H!KU8`dJlL%B~Yrv36gTBjS&kOI6F5rNdCtk8gt;(_VU0 z4{`y%e7-(>_FZ0*iPwjAA=~HpDi9H5RNzYu7(k6r??1%BfEQ!)B14 zADKBxs;ep+@Oz*5=$wm!_)_9Gua-DsbQt1A=~js2G@UGwC1LBuY(`d!0h5c9q<@6e zre&{A*3?vthPdat%nHq-uL1~FumsP)eOXel%Jnz8Dm($b$BubsDwWB{ABLM}3-eieb%vZPgB}%`>_j9W z&9g%vF@5md3Gz~u)mp1l%F@?Qj3pSnn82cu*`R;@UY#vMG6KvAxn2vo74F)X>*CH| zDN+f?@33-~_}o8SJA900J~|069HIRX{`!xo(#`hl^8QWiWIrr$^lcZxr%S8T;)7A8 zzd4&N*nu-v79kgALg$q$zgzUXe)!(3-kJU_W;s8p7GAj_*&XaW?@zqoxf@~bO6okS zG`qVot3In#`nx22y&z>bzV}CHYcROvCNX65bVgZ%gh9gb+rN);Qz9Xv5sv?Vj}gFQ z9ODyaDBbQtVps@S!HF1_16R=Om+9gx~HQ@RVeNOr&Od4Dw{d^bXN6|-_XaI>RyT{pb) zXEwyKOLi+0^@i79>eTq|5~G6m&UZK(0zy%Q8h;@VyswB`!zjQnuNAZ zILQ?J_FGIT?2=U#R^J{}l2ZYO;?i-5YNRnG#HZCZqMn|*75Yu6{CNM-CgrZad zHp2rQy>hZEfiRFfHT=edUBnm0$M+dGPJ%w3s}v!|H&BX5v(wn{JXD*Nn5lV@Q{!3{ zF}nBIv{GY!GC9pqrBvBOqP&9mqpO{9=JCvdeQRfd)NuayH`vn8@gWam1+dA%>O91!x71gYO2?^AL|*!_BDPya zhOn8SsI+O-6GIT@;W}N5eOuu{`Fq4f^%0iV?aJ zl)NAX_5Ip;_rMsAml?!(WVMwpB*HxNjx=_yi~`8 z5RoVf)jXr9c$2(E2rhM|f~oo_GOn9LZTq)+O0@9ag|z|6v2peU^PC1_L(VeXAS|9@$X|J3O%28TU#X7>Cbbu**UR~&yj%Hv zck5l+givB~KFd{eAADmGq_4H{{SgRU4po>4XpUH({|F(bDC_s~wZE8xA_L0<+o@NQ z46P-EtV|Wy_@P2N+;#U}nZa`R-I~mWGb?v<0fI*EaAoDb8|}j-->Bnx670E6xYLR` zCWcxDLN3c?zvdx&EHr-ov!`e1&!2k^4vFJq%=rZc`FZkzFXee-Rv=p{EG z5c40y%g0*=-TriZbKSo;l=K^xG>3spvf)6|yIU<7M-&|v7+LMc&ITs8w8V}&)HGB< zhW6WD{{`aSk1uDt4seuy|L%Du%9O}8RmHQ@ESTF?wR_?5${UEhOyvd`ah2U^)E8^w zayJct*MC7?UVdlSw)XaV{)7*C z>8SH9H18wo+FP^XR?qI5y3Pext`0-QV6)GxF0Af~m98TT$@oMg=Dg9P{w?!qyQk}^ zW>$W~md}EAEyu0={Z_C0&})Gbr;0dVlZovqSSPNYkc0S&RX=;Mhk=?=Opc|Kq2DRw z!e~_FW6yz$OEGXXmgV|+*Um%tzui-V4*j-a1!%gQX1L&N?8U0RB>K}Qd8H5!xkC45 z4B2H7+2!xVzrUs0f077yo;CR;JD4Ackr9gOAlbZ@_5*_h{&Vy6^nCT|&&l=nRBY^Q z$ALG?l_<;A1k25Yd*E8F4)057PTM@dO9xD6o;-c_R59r2*Y(hae}|%++*K&q>zlV- zf8vFK@Xzg`p`SfovJ5JO#ZEh;_Tp9ofX#8Ce24#$t)Dn%WYg8WALUUZ^P`bRb5G2N zjy`Ln-)Y3nipM$TXTJD%2N0*paGRc|&tqnR(Z(V+TPL;(xeJh`9n z#Z#1*G%=Ahk(88->~ilB2L!LDv&AU7symduFut9op>X4(ktbm=wRb`tRsPJ?OsZvg z*Sz)VVaBd=2Z?KCNrDVs>xUTRlP3r&ay(G%pzcJ1HZlX5l?4fiV;cY)QoBAV_zWAO zlv`_q5r&e}C4(M7RQ%nPg|O*fb-a(N5(kC$Rk9X27P9$UIsVM{sR^~kifnry4MMPZ zJK}7j6G4#Opa93&qCtt>9_HC?CHs{Q>@W}mpmU_cn&wlJmBWlK^H5Ct(}$vetL>fZ z=rV+{NfBQe2Mx09`4D1M)TgtUVT{~+UGMTK=|^m|^t&V|@iUlV`z@H@!dw0_itTyl zhjhz|!*L3l2annmRZ&H%fb+T;E~^ptFNtY9C`b)A8HCKrTN|<2=&qBVTj7I&b?8wk!}TB}n|n^P{G9Bk|+mgUcG0slLoP9yQ}ntZL> zHKIE)gmd{RF{p)}5%hZL#b5Wkrm4-A&iC0RiI=}(3j>druA^7Z^MwN^YlF_me5_;s zx3pW{ZOg6m_)pRIf7PDYu*~13uAsn>VX45WgWDZp)sXYUC8jro!Q-3qp4b0s)t0nt z{(iQ=y-oSM1-Xfmz0Um=_@Np3&wGl0GEWAzwf>?N5BhI*+DPxV25SoDZN3$qbBd~w z-Ej=Ih2>nuMT3(rAN503Y=D0=Y0ohu0zvuv{fDNRMGwLp5BtlP(GsWrhx7i+%J%kh z__iOTJJP`^wRt0-k&^Sx^nIYv(5yLf@}kI-P;JMBwkqFTkA_9JjNJ8oXHiQbhvD^6 zz|LFHon|<9=E%P_N04^*o@IvA@VZNDPPM62C2($s3j)JjTHDNp+%qbHzsj=4p>jsA zYu%^mlevJyaQ}Z^!EH|v7~IirF6@>Odopl(>C@2$uiea@akcmkkRt*c;4Z`7F!x=1 zGhY~gwYA~S-C9pHyZgM4L0()iN&@m>jHSGm7(z)YY!T( z-o;xP2!xd!%e?RHd_IYSs4n*OGw-;B34}7?n@7qv_u0IP%`lN*RTM=DQoYYS!@<1Z zLjK%uqhWC~dp!SGeQ!>bGlUyb{%H5S$Mj>%Dc0Nt>l3eZnWxn1q6$*#Bt-LdOb=z$ zMww&2j6~QTm~aJ9M-#yz57ZxOdJ5zaQAX1xXFWy5cJxpP%(L%*Kt=iPt-N)n1x*rJ zK3`a}-O#}}dj86NOwrFJB~|g2%R*|CYn3UTn-~>kGItz-$Yz=hCG!j`w|vyU;bTCA zP*Y3z6GJSP>4w;BTf<0X(M$a z*y}(AX@Fr^+o_`mR{E8C-+!BHC#&dvxXrpJBh%%2xLkhE`l-!|;~7a{7}Mdm@2)rb_BjEtwCt5A04VW(#Z=|}fi&|U`(d6HXc@O)vx8J5y{WW_m3 z9ux*u!wynGp@<=6FYNa5K^B$v+}Um-oQ5KorTaOkny(&cAU!K~9awRK8uCUnS{l}` zef$E@Z5{BHu@+zkZsL>5^+(_Hrq0z=d(WmE$CGUGBwa(Wte@OoH$mjpQxJ2b6)VmO zA?X|P2dtGwRQIvkz`0zKuErUsZkDc+m>G|TrveTw03CB5(P~-UQVFv(V+h0fl0V$R zV%G@-D=9i0M$_My)u3ovNGKsx&O)j*be(7ARa8Xrz`5Z`lFG<4n#45n^}Rh!en4x- za^aF@mnyHs6Vp4f^-==pm62+#Ju3Jy5(htc8pW%@;h=x$9o*;kD^T+nwTRc`_d2Jx zdf+>Z26mbYNFMk5D_V`y?)D?l7U{X(9ZOAi^Du8023I*JIYKPeA|5byv~nCByG{h1 zi24?G1W0tD@{<*!kEbFG0xpdJHXLmNEx>YHH&Nfk3q^}#qeh5^9Oo?P%sec?L zgpNKtEXxe;%Z1)$vbVAa8l4@gWgsR4@nMEEv)mgH1*%mWadea?7t7~KS$y>EQ( zc>Xw2fdXf*ix%f2AHTFRz88}Iv_Bz_%}<%8$$1FMqiOoGgt;5%S6}3@O<{bHsYpN{ zOUU-R@29ojzCo7`aqTRd7d@}#>Ej3dps#nw{H*4ytf5th+Dz>4E83|3BBZ4E-_n7~ zKztRFrcfPs6HQjouuWNz`3Fb^`_YK$=Aee+*M`px+z1m*jd(D-HZD=w=Zb`GN_$=Q zLoN-)v4&R#@c@&J2^5ZqqbrR9i7LlctR}|@FmBG;|PPY!m;}u zS1eeGQ5FSkF~DvJETK*^F(6<{U-hAVh2l)_S;@o6-;vSTL!xqT)xS$~jnvl$ph{?l zQW&gpSW*BBz_uEIiS3kIzMmtByOvH-_J&Y9Xt0d02nvhS-@bat$Okd6Ol*Fn?5d8K zQSz3_2@5$}@O22vwK=sq_kHVJ2zFM8Pmf7vB}8`j_1V(ug2S)l2=FDn0G!umM2--mE3BB!^23Z zrk;Z@iD)O8gJc#@U!1pDT%}LblFyBcRVGS0gJ4L68mS=%78OE;f`gOBRwV{WlT8;; zHo_M};)zwY5-Py~i!V`;P>;rjuo6R0Tgmnx%jBoW2bMtlKUf=r;)o9{^>TB=2wh)3 z3RVAgDaLB=FyW`J`wO{86dpg9H0eIysAM76c;^&qZG*l6Tt)I~)ckGkM(06n$|knf zHV0=?QA`BXghVno6e?Umf-L)Hj|?Xb#EwQ;!w4e97tx>4gz9Ua;jl);_UmY|l2?)l?9RGJc$L~0N@&7FE z|DNCK_#k|%Fs^%Z8h@uX-+cJ{{k5;T(&gH|!S(c#t##MMRLpGWm+?JOp!aiLvwYH; z)WJx38?Y%*1X5Hp)=;$J$x%c0+Q?p56vh5hB;xzvFX6`-Qhh;X2C`%@RnIsaHuBI& z=AzL{m+9D`JT8nZr&bvxR5KdxSlPCihMw_Ju&Ujt?00GXWG-Y6@E-$T0U3Z9!?_U@ z^bFIKS_-}rmIo^cMze;QBm25Gc(wa%B`}FKKV7QHXqegYX$`qrwQtIzf02ePopEW( zss7%w3!H(0n~au{vHSL|m}=jda+I&PSySCMD~MmF=e~>o@wu-hpchRsT+Xm3zZhris*kR_uxq#vOjHOfH~Mo1#yVe8(^kZojcGPkAPdG6HA?`MLN}+te;~XM*Vfm8y>Z&iaVwu*ZQwL2hu}=!p2|a&W z=Bsm+RXw$gUo_N|_n?*`b!Dn1W~o9wnrx`O#fwF`u~ZoeE?r0|;O7ykv&pnGFQC!;xKKlnvCaNZfavRwE#L$3o`B$=Qw06G-%s&zAqOjItJhYx*(&PMtcbIb z?Bivb!}`S}kUG9Dml+2*9ju0F_BKwpgTw3)F<~*RXX3l;?;eLKJhjbuhW4GLU6zVS z5{XC0=Ayzn3WU7eV`)nJ`vMoX1zMqdUS(TmHn=R-`60I;dvULqdzs}l%tg-({SF&c5C{U+;`{W9PW2H z?%Xqn*#U?6{Gb_dNCN_$ z?PGIu0aU`n2c0)++S0On5vWjD>(GK(M?H1VS*oc<8O}~NgJt8eY;0kscA#*i7~*Xf z`T7X+5W5|c9)Z7w)t+2J$o!3MA>h$;1zm4U8_I3Ce)+%$;Jf|DGp!%-unWGl>_!vo z+)(XnXK7koV>25@$SVyZaGdaQsg59wNnu0#FjcFb=SL3Ep}#%UGn;jVd3!Tq^xH^F zjZ6sA8u;fn$2P~-_rx|9X*P*{*x8NRh1-X-NXij%Z%>$#spH%x!S9^Z;8GZP)3O`w z@MvINYksYL%PywhzH@Gb7I1oPv48<_k^E{?QRT@sy*zYyoU*V?9RntwO4+OLIfzeH z-6WAm+66r9N1^(ZnU7H%#B4g4X4uT0&$>?oyt;XK-K}-8`umK%v702YT&LL?o5JBO zFs21lHQYLDC04xwckS~)hPm!#=`I8I5bqdQDcFII2i2^Bx=-4est3I=ry! zzQ@9~mChlQIf@%99K25d2#4ZGfGC&1lG zYXn+Uo)oONj<=r|AhR=0W4qc|4)uuL>C%tl4< zvyeq$Ikv*j_Pai>vQGZGI!34g$$XOLO#QM*5WD>PG#zm zisS=Bb)3e@Vc#oEh4Ttyd2v=grc-TC3r~`8E5N5okpY_ggVgvs8gB<{$af|fBVvjE=S1DADfux+@drKKVDJ~m#74!$)OSxs$(mW3??dp z5QS1$v_E4IV`C7eqAqbpW*Ahk>5!Fuc&;HCXR!3~bQIsBa_#|^q=`QIbkn6(+4({{ z6jX-Pj_b>~dfR8sme!}RlktgJ4YjAPLQM)zB_qOgx-1n=wL~V?G2xp__?(ulB@5S zW|Q&8v-|#tj{0)3r_iy`aQB4+|Hwc5gv38&*5g!n^2fx_A6iWR4XTh_roVrFU+TXQ zmjB*tAL<3I4mz;hKKBhl<_rHSyotTcR#;{V>XphoH!H-+0M_r5Wh0NR2YEeO!5hc5 zH|>|)O0N_!%~vyIAd}pneCsQQ!CDl*0P7w;LsCx zi0-`bWRoj=X2z`r?*4uF)Vb4QS!h%0_~JCs5B+o`BX%C~3jK7khNfk>-=)qf<80DJ zw5veaVR$C+-#Y7N1`H5=Ts09W*`koyuW%FNN!=I0G| z;qSzgQFcpDKBdAbRX?uk+y?8~Eu%MFnC^Rvvgg6Gaf9DwANG8N*kY?T{ItY>oJ5Bp z#HaQy-e0J>M*-_2eKe8)->6@7XgyxOuyyd>%aTD}A0Gw`v)nws`#T#rW_67mzicS{ z!x^%F?{@3%EaVm^WGz+cu2Si`p>y>-_+mDwx8>%?OkhLpJA3R!HPUmz0vaD%p5z%k zwRG^GVB2I^y<&27l95Cz%({1_N*gp%vhzho9CcttZK$RLDt3@gArrfhA^EPVGuw+2 zFPq<)`Wf)hqkyd>N;*#$%hJDh5U3+i+$KJ_zk8g z?fX4$+2yER6si)naImvfv%HU5s^RmUaWgZso0@jTG`do%A=x6pZQmZcS~41Z_ZA%h zhxPNAd!*Sxu*!UTlG1HiJCz#Hq3ZiNH6L=y-E!+|hTC{|Yus$6oVZzIbaaJ|%?mcy z{`|7`f9d5FD55||Te|2_kmoQq=ddTXDgSCCa3k;_aHD?YV&n=k94kLwFL0dAX;<81 z3rD&-klvP~7En&R<<*Sg+>{!&^EkedD>h1|o#(as?$>&9CloKXwra3XX8RLLQHY1# z+8j-mr^|}lOaadZ3XnPb3=%<&Ofs;0$Eq*dHg2@&m6})bb~2g1=?>D-x-&#_LbwKa7JeVwZ@V2;o-q;KpEpOBHyS@!-`{D z<9Pjr#bXV3Hj$57J%m3JQuIW5lMsPP50cfeVMN6rcAd@KGJq>o65Uz=hmY3OZb(VR z<}zA#0E{>*D`AI*Qx9m3lq)QBla&}Lr0-q|>sIpzkiUsv~_?e&)Hy~pks^FUi0vwqRP z4gtOM_XqLX;~d0a6tU>}{nJ8IvVw*t6*JcH*e zbp#)sY^-_&`*i^INyCLtD@roAS-=MV81tO=QJTr4ek^}wgR~^UvN#_0uhAZ>VKN$Q zcIL@;G&vGu^~uLFoaMvB+3bcU#Mtn(W>=sxaT}g-eu#!Ij?m1`0<}-SOLKb%d~~xC zb75bHlEkzLs9~I`j9B&T9AOk#MFch}l|d^2mqLufBIfNDQwJ|LRD>^rP^FQi*lhtQ zb!4Z3a;12`Y`=_T(wia7C%?&J!FvIpgj}QAUs?BF%twpp4-*1BlKNmH_P}W&7XByc zp3Rm?A;*WolWx^lmwGIBuO_`GeHbY7G=mt(_{C1hA1Q0@iIfKjMjp?-e}5!Oys&ub zBVJ;DHLqjP?LlkagD+2miwkYsbt$G3RVOBID}oaM_h}((BpBiYwd{?_F_bEHYji5U zN5?T?njt{NuE_?adQJ{>CUR;}K$Kz*sm)2K!fd>LH__|4@Q^T31d!2gTztIei<7#)8j?XNWLW>S`rN=f-sq|iK-XnSS4a*4m|+S6&YlWfGDlJI@^ z8Q#kIP!XT0;J&MKhhTZZ-~hDQnI+Rlk6nOQrga zOc_}de~RWt&cL5D$N~9>fECiKKiq`YCh-}hxL|T@ggW@Mc2UHHG^7N{@g<7-UA)gW zIiQ|V?*oCcAda~475RPos_!Y(!?X>FSg|+&ff9&;9FMK&V8u=@;zS*QI;nLMeS+ep zV=BUU2+2*rY05k*OXNTZnjt;s45srwtS8LiYIlw---vB*5OVe7L%@0=&5JUl?DKv3 zGwHl^KdW2YUJ^XDc)EPGLTG_a!Sm$j8PT4f1;%1Mck=C*N`q& z1{&?G$K4SLN!bk}cJoQb|Fv=#Oa-!4o-!Fr(67ZNzHKEX_@7RB@Ve9gZ?9b??4NOc zap}IWWEC{aiM{go{BT(=|Ht89*ENST(BDP_!Om@WrA6V8vk>WEx3~X#>4V-5WS0@b z_`&B~p0446Q)CJqUF)&Ibx@6|#h|mn_K#LU-q4`&@sYxLoF9jGTm75CqhyDfU4NN` z6czBgN5w{ZX7@mV#jDv3o zL@aw`=Dj>~&Ka{X=8MzABXQDk_I!Jq@cAT1D{IMvy|MgaT;zG#5B7s)Vun48-E{db{j6ApBZhgX@PZA=GFrnz>bEQ@?}%t z8A(`2b)_rJ4dr2Mia{-=oi?MIVNKOLaG3iG%LVvSnqEUCx_%#3UJbmy+LE_7Ee4FK zP=S8K3INR0xi^!=SD7I@YTU|D3B3T8nFpAm+wu)OJ-oTx{+_s(lDxi$Ru5am-+;JY zf5G*6nEKE=WVCyuqlLGHK07}9(O5ej=35iovPEyImlK5@>Y|=}zT7&(o%iJv3)bIq zAkE0?T;pyk(nY-0QRdzB%JutWZ@Y&S;5eoR zzkzC1R(7!z_T1^h?C30@KXy8v@7cGPXXDenGipA3;AR@2JWLkaM=9eo=CIrjbOiV& zD&#^kxE=U z2g*o&dGrz}QQH09?hinr(RF~CJBjO*B+U5W>#6_4uKblT``KADv&>90T7z0)p_&54 zjzIt5SHZym5V?A^-9L34``$pfpuh_L>?s`n6gXKuTYUO&Idcb`RNdWZ098S&KnteX z&4lU=4?H&rrTqEv2;Lr&Np5_MjU1w$EELuJVz>N-MXCQneS#iiE{y=4I@O!JVaP0gyP ztLq(Kh(jPEfYj^TbrD~;Q>4NzKxp6v32D|-&F(aCDk%JdkjGK!^89I>-#e^&OT^!0pDF%$I?JsO8GlF^BEl5h=DMBO0BeSah2uiCLeGLuhxpwCFyo!4 z?+P!nGgpo>%&dafcdoZrH=3Wit1Trt9s~~TW#6CCPVfP}nDBo#=A1l7TMKNen|Nn; zJsLhVW16eVT-jobzaRw*zHpnyJlHcZAPiNR5X*^U$M%kh_yJZZCQv57Kd~C^Gd#0% z<`e8K9^n7#bm!u9>b;af!I+THX69_=yo;yYieSc!|I|LJ06&_lpH~`|xP?Uw6a-pd zlkaWhz3v;!s5@?sYcI41P+cx_$)WmWPx=zG-=GXPTv6xQ{x%}-C0Ab{!51zxdwlWl zje^9x00wMZj@3$)o4eF-zgq_>?49dlNK`C`wBDO5{ELL-hUT%NhiU*+VaN$XVwZsN z5Yu$ZB@y~IX*Ih!ZPh5C=h2L@H}mmk2b|nY(fYtXTd#t_$->EUcn4U%HEEuc$0Vyi z>HAP$L0N3#wxiymdU@H5tmo<17Om&ecm)-WI1D+?J#R@O!cx333yGU1@xnrfmau+C z352m(6GrRQgLv3i?|b8O>h`F|^@WyYiHI9wKNhDn@&=K17l>5sK0ZC*B;S(Vl67Km zwQ#lElD$u^)?HId$BR!)uJ(hjc(?3>8Z5FcMo&=BW-&R)y!NZ8#j9dhGJJNt54#`v zF-!WGj8a=-Jg7<@n?G*tSEw|hRxuA1#EU5^l;X(@k@SpWnt-UgkFfMEqY0sLfvts$ zGQM(F((BUjGpvVwzr+jevd29#Wj2}QAX?wCc(qNUA=v&}Ka{_o)zPG6WzCCnqcDI* zY@@?-j1G!PMJ5?y6={Xzs(>l`-+)y}=o0zPY2u4iU_|K@W6#r<{CTnT#swwDeLi0E zu_FamBMCpgPubHqLW)KPm}@;>ip2(%J&(k*x3GGB{w65oTVXWQBt9FBhXd2pQYo)@ zTac9PU8bhB6XDXim~W!vjY-?Os5k2BM(@K^oglF$^MXAi;ht~1@7Ojw)uld_@u7WJ z>=}K*)%YCCMs_f@F^AJ?&m>-dh4piF@?wVw6EKc42#F*YokJ;@Asu6Tl(NpS2%|2+ z12;YUgdm^pxl%=PXp%o2QHd&Uj~66Y1V`ztj$SOY8B<>jzT7uN%F_LL@9 zUWFkU+qYx9a(3K%kXIbU5vzIj1zM4Xx-q?_Lqp-Kf4{Nl-u#@_8Yr(@!jbPssxs{X899_ArzjwP1uM_gOPK{|X?zcZ< zZ;onLF6F&|k0AUW$=kZ^pEbCM>~oPHvAio>%<=^Cv)zz%J@XM{1hv*f8AIFvgI^7j!jnc`I3-@#U#e9MqihLgV1>Y z>rF>}b$#n3?xRpDQ3!7e2se@kj4PWgq(eKyjNx&Ob4}vvE8pFzdC~SQs^&nI^50#J zv90+Y5YNTxnr2!S{q2L73WiWcq{0WK!Uo|L6$$s;V)EB2n3&JDlqbje2$?rIhd463 z!O|2zXyO`UD<4|x2dW*7a*AIRK%tFcdIm<>kKM-_bF6O-)FBW}ga_#yR&lG+ehz*# z9O&9U)B^~7OA>4mbfwwS`JOioxcUybme!Hj?=-;u!|3eN&cyzjQ ziBouXb^BE+WHS+)u1d zL4-pGR1p0Qt9xiL77W}E(3{99{Wh5z*nLKjNMZU}sNd{)vGHiO=G>#z{sIG!Kf z+qnD}>v4Gm9IHpy*GJde{TCO&F~w~#Rw(c1fBS3u;$nU3y%{ZSCU5{n#D5OJSh8V$ z&nFoDRA@FApv7<0?Nfp&;Hn?G8}EehYhHeyb|JoGo$Lqxq@`xNsTo(xraGr$k_F9p z;?RT}9u_9ua&E0bEds5#Q{k_k*^bE}-YyRM$r$9x6{4%Y93_trnu`u;tsx}Fv`PiW z^L>9QL&LR!brrtvGgDLL3p1W^o$_+!XQNAOxnuV6EQ?LG?=eVcbH&m#Vcui8>V6nt z&tg;RM)Fk8EQAyX4By3fG#LVw!k4XkPmM+Ss-anbyeqm)r zzE8qSyywOh9NRB)evx1GT(f;Mr1@#-O}fFMfo~`(N3H#iYkTdS3^*Lq&YJyW6uLB93ha)SFQqRu)0G&Hg2l`7Dzw4m{-F<52Opno?@z^Etk3Lh*arnz3YneyF99iz&W>{T-ypnD8OCXB z)FXICD)I<3aAF=~t2*U;YVq;Bz+;s4jSoI|_vkczY$p<-n($fp%U5%P~e_J$6P>*s~a|eIH6qBG@1csX==sB$%ctzm;LRy3wR^{5G`OS8h0G5S-Z|sa)XH^Cuo~oJ6^+CtNN?l{w zULuWV_kGN2Ofdjllw0lY21KM*=H>!dQb)e~Ch&W>&E~o_#KTCu!(9gJ1H#$32PAGB)0z|l*Q^^@hrLN94Qkj(iQJzT1B`JQXv;U>B3-{54LYv177j5ai_ zt7+Q*rYsC=u8ry@;uO0^yKhr^FZ!~4_dnHxyi=SKE1Z@EyG8MZ zsxN}L`z7y9fmJELcnSMXUkVr+z8Fo;LRJsq>h=nMG+p8`_HnMD{-MDIz*C@!Ck2K3E0`yIl zqgvPu4^Qk<(8}S;;nM!>T&E`hMwnVv@#7h?J{I3E{YwSC`ptp`-f@C-19nk3)&yX% zYy?fC#y&{4kF*E|oM!aTJt+WNEn+Mfz( z`MkWm2a18xiZVk9q>DXi+%^IpUmi#|zo3dggitkd*(fppcQw&{E8!P%Iva!t4)Oj! zE?+GbiSERI;E4YzIyy2>-_-gR9u4{4eR(!>Np|<>6o3zMI)COCW*gqc7RD?68yTPx zK*<+)l)32Vy3BNg$)s`bTsSbZlK-l-AO9ZEjMQx3Q~Hw~TH1AtGhUKkqA}R2N-~|tc}Wn>lEaIinRls5znhdU zzE^rJtvpQkzFN7N2|1w-*_BhLu=rRj6wu8UNp7AH6G?e$Fv(|bl$@;5=adqxZ@S1_ zsJ*VCyEi9u7WMwk=vQH9w`U-cyIm$*gjAG*nF)vCqCrNXP!g1`WAk{7wGy-;-(smg z`ie9rIzc(qA`Z2#-N zeZ#YAz*%t5$H%p;tv%5H)y2u`>h<+@Dj@hP%VMAHz@-MpHSUh~wQ)>q~!A9Z=3*vuWj=?l=5(^>m@A@)wom zg1OCAHcKi~Dzt`aq1o_)^{JtgzrX+X{QT4N*V-t~^H4z!UmeTnM4A2~FYssmXNR?R zI@*3)i5!~JN6+Hw<$dYd!$YC3^vumLK*wO+ZPo-R4vO~$Is`8g_ceEFKMir+8W3p^ zeQOxWR6j%}`)yyIxozVzeF(LfV6~9T7U2-5KExQmU?@}|EVCCAElOF=8AG|}7<)`~ zQ0n`}Cu?Xzcu&~wZGY-GYYAUs2r$~Zb>r<53L?UdGFqkURl_@Y1ZlPrhUl=A3v5R8ECtv=vY`+_BAxbnVluCn=; zHVthmmMw917{PB4{hqjONk8fd)qS6QNqAMRp(!wr13O+cz}NFJYerAbF}liag+(Eu z+S6F|C2F?a(}0~N$lTX`-s*cmdApSDXN7!i#7#mS_y<;d*ehwONDWcVxG?CDBPX6@ z8Ez65)03_!{dCwPD%G^|d$5@dyM`ribUo$(0qbx3ULIK| zIWk=J**8?q<}M+cI`RSeM&<7O<(Xt8SG6SYtH59tmi#{zp)F3L|}AxiL|6hNP~2DE2C4STUt7Vfpm8_s5A_a8V%p=^PK;E zzyEx0?zmteN4&55%1dq(y)-V`;^&4MXxd02E%TF54b$ZY?KZ>jx=m3)4cea@%K&e& z_Ew|!>lJ_(;kxzxcX%296jQQx-KzHRtR=s((dr8Dq(8~7vG#k+z`sY82Nx$*-iP~^ z9=GSF9uICF0YANbYFd80dv91}Rp-*?;Q6IKYm3M`-))kxD~9Al4+OV^B>qbocD^Je zsv@5WLL{d7d6PJcR-u=pudHl7;{t(1?rm)?k8`d)Z2tM8TLpkB32z@?=jPUywXyA4 z7vkX;>CfRD$+HeM?+sU1T73fU8+AF20+z4eaOSk1pI#dn2i#1()U9g0M-EPJZC!Zq z1NP+~FKcZ4@k^GgUwNKwo%(qA1~^|Jb*qg1U0egi1AYFz`P$gQY|(Pc67LH7eu$3B z!cqFHkFUu3h{L>qKt{%*j|V*aoA7i+)6~oaI*D^c;y$K}|BmX@ITZER-NxWh|BCx% zyf+|8qJk0@*;(sRF#-soKC@a+AFk$lKMN{XqS;vHxc~N|K7twbbuyVuG(o|MAnSdR zBR)z5dqi)COSe7}%GrZ!H<0Tri(yA*(bIv8n1L7%2uFxNVDW~K6;qiaOmU&|+BNG$ zB<5kPQCeDZTBeb-wK*94$TtOiAD4)EW31)A<@D0t|EbO%K_V=qLK9)dRzDmHwBL4F zNtgN*VO1E{i5;FD5`sFozZ`Wi(8DT1l|by@=(>K=ALo>1^#l~I8l&$z>xsNMIK2^f z;#^JynfY=(FuF(E)GU%Y;SuQ%se^Wba24iMFhAQXYn%y|dhG9I-y3acb|poE6ldtr zdIs1>hS-(6h|(Y$47e~9D1m&wq7D2TwOmh7yiNpU(IFlw8yyxbxzK3FKxB}b-wEuk zDzbOM^iz{xV|~$w%|Zor`gh4H*n~0qcMb7?Q(1$%1a7wFPK{f<$Y?N>pm4mQnwII7 z*1aOOvyQvK^;ec~@tD*$bhyKJz;(3MYaZ$z_Dou3NjTOUVmy^4a0*bzXPg>^K{ZHfqPMq3rx*ZMfd!|Qud~si#|74DU1JGHcD&)uP5@)7sB&1Cdb=R|1ud<0Bej0+Ze!eJ{xBi*zHEt7o)}hto1{HqDq+7eZt|iV;WOH1dYp z_Jem9EY^1PQ*Hr;9x@&!%2_KqehT3PBA=W8+<66)z=~6JKhj+Eg^E1D+^0wPCk>hd z5k+}3gGke4QhE;#AyZ;@16m>L?{s^PnmGF0XeBv+vK8?|dYE|OMN28Omb#ARmIizo zWiNpv|2LbO7>4}>1@Rn`jqa1q$@9OPzpgg_UTyAnhIVgkgcfYtz%Y(T)%-dAz%39`&%U1ry~q$~X$}dOX~eF_m)nd*)tPL% zkmj=6B;~O!>eiabR0o@lt)raBRoz{bT&+M&6*cR`hL@%KI+E%<&Be#_Uw^G8d{4Y= zl6mCoq(ovcE%q-x7R#J}DSHesnJ{$GUuLCan%X;h8QMlDC50|Un3ztv8^T6wI}k2Y zZ%(X+NFWQ6GNhsG$>-qf-IvX@MYWT5(`c2fOntHiqj#bIgUW?@&en%xfo(*nb3PKX ziB;Vk3|LA2E zmeh38iSjXSX`m<^3W{B*8wPxPVsHC46SyImy9uIs3U1hAzwp7arsm)X6WC`m{TXG{ z$au;`^!a!cIjAjc$vw}ZrFMUaJK3VbwiIBnaf1ugu@>AH8sE)3>v}93Ht{)?PqqBU z_n)CG;k0FocgaPyk$q1~s)(K|whe%ks6S?IhJ}rFCgevUaerj}l9hWtDcXmtyws-h z(5_pYD<5^JSy>r-_FRA5L7;AV)l~oc91v-`iW( zZC#84z10EELhU~?jSW|gjQo$)9^G0FeCawA#02$MR{+egl9{ufnKM2%zC%h{esFMc z=qF-4w`_0sf@BcJogeM3Mv}l5?6Myh?XQhd&fH;=pwm&7Qql#YX6cj*qV9+=o$sx! zOevqe7#+Qyj%sQ<+#BYU@W0+F=4^908CtGff7nOt_3m#Mz2n$$D0Wvdgjr~h?EtyY z4CbA$K&-O&WmP6{$e;dd1oT7?lUB6?A2nQe#tgh-^{(+rRBl^az=t?lP}PI8PW65d2XsY2ge#oNx*68Q`S$Z@35}B|R{hl5e78?Pho8fK%&>m3>-^W1`$yM?)#QMW=lgq$Mj+PI2mrO0me+75-Ym}ud{cdE zSCKvRBXGEm#$KlJf%0;X7lUj4urbhMUgKp@F8cd#gj_dK@dH7|pLhd9&Yd(Q57lqI zAl6zU6BxN*d##UOF!E#&Si(Id)#!+L)DQWgsgMt}zKOfJ&+~XlU{LN)_2AG$V9}jE z79g-gI>^YM*ht2pB|vH2(1Pi>WIrqBiYX91{iIJB<(k0C&03eI(j`wQv<@+MqEzY_tRgwvYm7p=DPmTy1LW`ZL6V_4tMb`TER?u-g%Lh{*L%(QE zZhX?Ye@56g)pYyYfU~f(0%k!HCNM9=Y!w%og!!-wyHrl_{H2E_G67mDm8V$X%7ee@ zp#HC@@bkcTKgZ9t$=Lre>W(!>^v>pgVt%{2g&0NuKObV~+U?D1yV?6q&%jTQmB*!= zRU16MchWa=$0aE*7pnp$kJJ8+Uy!bm{r;xg6`;?4ymp#7N73AFwY(;P+tGeI2y9|p z&sqgOjP^hF4dZ!FPpe&>5078}S$w?W%Q%bjJgx_13Os{0R?Oc??VH#0fXDG32pH^; zd>+64L8|bu)6%`(EPhOAwBhpvALO@sDdD}nWz<}N7a+LC8UD#PAkK)HFfdS!hd&Mf zH{qJo-H!MU{m%t6$g9v^Ncj@s{L@Vo>^vxSCor6k%H{C=kw z4fB((@O*hCw13q8nl2B2ka109!N;mqe}j<4d_^Hr4A2B*QCG*;vLJk#&jdK{*6P*_ z(1A%5@(5lPGY1W3G}*|)O|DO1ZBt57`}$$>!iB)($^#o5tNzu)>NtrL6nvF z#AV7+7Ws=Zo^Zvn-e0t^$#)A^P+@0w>zB*9Pz$BuXGDT%t%An@?rsoewZhl8DFx$` zJHK#-T-=0i+#EWdrv{NNp!mw+*?a)SZQ@e}Ju#t0Wsq!CkmXIPB(C`md8ZWpg(2um zSu@3ngRL7JW?I*CDZ)%d_sOr&k6LD2OByQ=$Bu)D43QjW33p~kJN#PvaDz|;gNm5fb$dwC-3iJ!oNof{-STSAaDI`{s2pRd<(lxU7B z5aJ8%4(-P5$D^i{5EK#;5)$y)}i*Z2fZW8lr5pa_I=TVJ)BV zcoBv|C8U6W#l-BrZJi=k`|7dIP_)ga9r_^8T~!si#P_xy4Fe9(woyuw^1?gT?}?x7 zfwv?C<@*yW)u;{ju1pL1FG#bUYmH7dFG?L2PCxgRwR-%1<6~cm_&HWQAh_4vGW8Le z8rxPZmN4R;)wPZRWYaJdET$Q)v>xUmCRt7;# zBK;=Nv`vR>2#M*Vk|n9~=uc(I$u+vk6BSIKbj`|L!p6dg8XJRs)OxBH>NE9A^%Lm3!iW&vfr!4f zxHcMZAm)L;GeYicDQa(P;is4fKs5aB^b0(dy`9GUn zP=yktLQ-Qv4~&x!#mDKS;|j5$5rSyS0c~D(%YfCt%+}LFcNX|W9vs-7386n|XV9&e zew24LA^>Wn&0+4q0X|*SSvjgD52NowrF}aJatX`k?h09m6l>Czt7G{bsE$RMANNPj zkcj3}!H*J3NO+Jvrb@XAg@;AM`>(@W9yNNSmgRteb1}N@@zaoff3$H~TeE2agT!Li zpC#!HTDp6`BsR;E0)f8QJKOvk$I8-hX+j%%>9UGQ=;yM^xdR}{__NJ$Wn^1dx2~A9 zE^2tO7w~=h@MSRTeFN-+OYVl+U&}A{JsN-fY-#rLx!9Z?W_E1%Io+R4(zW`k_Elhh z%VpM%KaU;mGJoWe;?$5et}7rgJY2q9OxmQDGd4DEwWId975A`P7C?RDe{Y`HbO@aJ z`v(MEY~I}rUIUn85fEx-8_-X+%6kNf{{=jRa;$lIqhFo)=2!gU`gWch33eb^?JgrJ z=><_k55k3s=slpx+HFhhm6ZT_aB;WwHM{lSwiD2{aKD)2e+u+wwI137pPi$sa;O)Q z!pQ&3-EhHvxYyL%+xvdM9Kb05K#pZoLHVoi=7LtC4&qJy@(TdS#|< zy6j~Z34DV_M-g{^$jw2-U{X1NjsQA@!`ORkdzN{4c-RGs2dCnH)(^9%C@*`@?r|oU z^VSXC(yVV}Tvh4FFVM8yTf1myYA8dh*h9Z$>dE*TyKJ8)_-M+SK&_AsB4rv+CYx_d z^s!nJh2eJ#Hr4=ECN~B6djk*Tb%E^1@oD@4)ED0k>QrgvV<7T`!7pNMYT{#g9qATCw;hn5e!;D5?1_cceF|-fy-%VglnJFxQF?!~zAz`sxTpn1@B%dvT zX4qns3N+u?X?>iPpNZA^SYcXWS_1sGGp&#*F)J}G;ngvH13aLe&JtltP%2l3ZyVtr z?H&yjNk=y*63bA@ys810GR`%=0RBkc!shlxEF!OV7XN_k0DqW6i!Pb2@JXL~uX_Ii zj2H6VmR>W;AE#8-wjq_N;oB2yjVB-a7a;W|uWUl!70j^k*}j>8G=@>VeX}5JizRZ* zFm586A8LdA<#o5~cDMWc95K0xnB4tc8t5d8Nk~S@HIz5dA!35suT-cErYk{%-@;OvYL<&^GnIcmI>8n4hHcM_R=q z%b{HY5BH~OVgYnwr1t0U|4tg!Enm?&`m`8746S<=OEDT>wjUoIU-LLVYrLlk^u72f zesO9RaNnDA=UN_kcQ_k&r*}K`@^^SZ{e6n#Dmj%1fP71pZC?RnR7W+8f#wFk1|G zJ8r|~McWms9+3k6fA7WO`o~&TjQ>Vd`Jd%H)YDvTklHA^tL&3sG7{9kC_c8(Bh#e()o~qoE zJpkrGrEd0_1TagU_BmL2S1BbKq@72lT2C0#t@5#RxJ0a6a)o60WysrNKy0Uh0iYIO+ zz?Oy)0IX^cS#+7wBp)_OQ*M4qhxN?Yv&|6?PD8u$qD7rqAKmYbv$jnJ70W8b9x=(^ z=cwF6G{}W6uibb9oSe>guYmT(&cVqO;0lm70CfZGnQ6y1jo|_Rn29i>wOfyG{5mtn; zHYuWa&^G*hrYqBSv{*4+AO@{q=}XOT87Z+hxFzYf{YXP&1%1AUu{y7I+j{@u_~ZKb z1;Tu*hxEDj*`L)fE*3;4wG&@a%1wJhA#b!%&`?12oVs#owfx_$5+u>J$%4V68hv(A z%%_S-Yg|x-Q;zy3N@iKou2yRa<^ag0C*%k13!XR_POfr?!bQFjpyJ5#%%XJzROTWT zh1sB7{7WAV&LOGy(H!y!Vcf}T2m;juyhH-;fcks_!)wNw^o^=H7q&)(G>#Ss$u0Kd z$r3J0z8NlwmEy=Vs{aX06$Acp90B=0PecTd3%RpAM!)oU15@mP2^j|0&;Uv`8$DN$ zjGMUvMlu%EG#X#pj>5*kUIZ&xF0+Kt9V)Cr`lSVCKT$SW`?;(W5OKb7T(O`}VU`S$ z=UQwFR&9EfC-&h`z)|81>I?T$&QnH{OaY^|FvG|u$Y9B)Xo}e8hv7_fCFAUxFNF_V z78(upXMsAa=6B~q_%t?WYoA%vz4tsYTuD~vTj^tGYtk5Ivh%nwZO$0g)fE8XVUrps=~vyT;o%E} zWs@Fak~4Onh%%q~G%T5Wx&r#`htSN zH2xdeal`Kp|B|%o8`(eT+2S(I(|Ars-Nu(I7KhT$Inc8hoUB}leuve zHcq^_U&(JwnsaCW8@@mP1!TMgg+wW-D3zb%6=Q}cg@z7xNF+V9({2{cc1&PmovFk-dMBjLfd3Sd$cChRWkl!ZDJ4fyXXyQmA=vC$Tz@f~<*k|wR0iuvq&9>-kY z7#%MG9tXn)q&h})94&XFH_;a60KbfL) zLwm{y!R`qbDfuKip-| z+(y792tmpwjKR z;t0Fb2uH!Ss)xFq*5-HZn4;(7duB$SSKY?Q()GW_t$W>L0S-lz)+G|RA`*884`%`= zZ4-rnn3R@35CCyJ(28eS+~!Kavy{i=$-Pvf9uSEWOqV)+F0RC3S=W&FL2mDpxikMk zGx^47m@UW6J^U%L*31>8dNZG>D-_MTf`DFsDrBn%KNlT6_0v~ky-7tnjBWq9_(Un$ zip}KcedqL!Y@*kNJt33{=+R83^k0K`+{kN~kptvHXGXp*pSge(mV%X{CdMX6R8uvR z&H};hOJDn>zVwDF_pKW?bp)8IMy8ewEqs$eB`kViAeO~nst(GueD@P{7y`ztb@8A%(=@~it%v!b{35Q4S%Ap^I-A8w*tOLQtij-1v+ zG5+ExWKV-)7uf>Ko~BE?GRPArupnjSB)`C5gF-nwpY+3+F)_pOVreonvqgQ*{~{3Q zlilI}I`htVN3QZojl6#MlG3#Qy+Qyyj6xiH*6umb>kLpZ*T%ACT$?{eK~?FaBI>6DbJMVJLAZoEQdF?awkGr4KPo4vV_Fz$L< zp@>qyC#@fDIO_nE(v{CG+qRVpz$!&mli~|)vFmWKO%j0ad5eor};dJ zzg4q+lsI%*Zi{f+;Z$vUXPQ*ewUiB;Xi5?bN{(%Bw@G5DQ8>Obpyk{0*NoQ){mihK zM)s#sVte&@ zzPAr+`vyO#OEen}G1M1zYYZl=$+h9eZ%d0MpW+zTd8mB>NfOJw2FblnCR#{0Wr#!I zXN3S<1-C3-Dwucx-8nY%iA4}P17zUIW{{Bj=lHzs1y{}9Pd5&IX!mF6sY3 zn?nQ@MuJ51b>TO^K%yp}0ryr&?-*Bp12IOVp3F$Oo;P48zj>ySywuDVB4_t ziX`LOuP)UQC=>RXwQHJcBbILex( z)iKYeGuxkbx)}~_G0U08iF$;g4~hDmGD8s?2fR{^sAX#pe=DOw$B+`nl z>1i{51>IZ~h>yMI+j@=6dLvPxqLO=|VDe;dhTt9M+B%m1fbq>m;)_AFpa)hlao=3@jT7K}4e16=}+!wN;(&~r2 zopR341tq*LXm3HrOp&xs()1f@P`>< zEl=3P8*x7@yD#Gd6dDv^s@tcow9;E0^?~^V1>CURPG+HZZ0*O>L;iX=nMciXQB#j* zVe*e>A1J!`Kc6#%smw1v0PkVe^z@LaK4ZbY#e)KFk7%4aVzB$RtfXtZpwu+&P;7|q z%$%33Zd*NzZH8VWZ?E_;y0XrY@p``ssLrL#EcqWYrCpORdh`FXi~vnj{?hGR(@_d|#{mWR z6LF1>0dFn=f9d=6JG`Ny*MV1M>at9edzxhoEx?NX29Kw6({Q5m-jc=I0 zjyqEE?%uzpxlVJs`U6lV{{Clp#=M=GKOE^sD=P%Bmn?hvVL7irH!Uw%W>Jpc*4a!xRX70Erc#-obGCb7d4=Nr@Z< zw9XayF%da_Z%I9;viR`D@oHYjYK{J8Pq*^th3|t{A@+>!cX2xOr|bo=SLLw8yp#cJ z2oAfcr6~iGrMbcwK0W=a=1f@WBhgtnlljr}!UI+~k%9RqM{x}h2#SQHy-iw7zRl#w zc(;b#+77-^n@wJCXo@&Wc*^BlE*BcCQsZb9mm)DyoN%r>_mJK2PG+D-c`U(mSIkPt zN{E!4l-%Mu<;y&X{FmG*8#}XIQ`if1#vlxJMs;Zm>G4$G7sL*t`Jy|J{*h2KbE}xa zwZD-mh?(2W=~Xx<3c408il#YZWRO%|OpPtv5U31V?)CAnTUcXntg~p)YbrO?``Yq7 zZ$Foi$Yqo4*>hPE6O?G_d@>^8Pdd2~>W$8C`J+_Y7LuFF5AABwMm?k4+gN30`--}A z3wMKF?T#oBMC&Xzxg>hkJVfbrE;Sq(4&Re1>y|fhuk(Fp?S3-zqxL7Hxa1WBWZt;y zCyMeHE<=?!pJaMBmlTfnD3;SSzo{I|bsb3@h?iLIp*p{70J2@`O1RTELhoU=Bd=`MPq@>+rsBtsTx1yT8;fh> zOvUl|#0Um&^$6AK%4BzdaDg62k)CKFdY6=wPFDBwVyeTRS`Ak(K`L!*2p$fsXE zpS$4kqA|4vwX7UL3HN|>3p1+`yycBlK};5qYr_Qd1tcw`SIj%%Js;s{=bt=w0=6xs zEf}CZ*$o4D$9r>SK;%ise^RHl3ZV_H8b5=^2)qbbLd^GMbl#hI@o)uwFzjLyqj4dUWj5 znu9`{rCPw3>jPi?KDXSP|Gu*9qGinvUY63xsI7*8iMqzUE4{GB0_i*>s!*%m{uURa zfhspE{&$GP1cbT!Z1e2^$dHKiQwyy&RU_P^&3-P!0iIMg*Am=Vz;VNp7KHaF)CsnN zZYON_uH@jyDqp#F+q=W7o+|`k$FwZ~_i^zi720W2-E4T;QLn6PUc2 zAGToeRG;SvQ|8lkr<0s^%TQ^1Z|~r!t2+;n4O_Fbe@<<^#SGTRJfkey7C)CwHO}Je z^#;G=nR2B@EhE?pNY8B0gP0NpH#9^%CwU4zs*BE7s@DLaJiH5cs@jH7wjv6H z0{+cQgd&(s&aq7$`y4JHxVJ2SAf<_|zvMMPyJnBF@U>B@_r97=tfsmU9($ZMAg^xu zs`-HAcHXWqVL!&dK5Mj1?6QEPpgF`E)P_m)8fS^Fv4l!WVF7}%odOlKO%qngD)?2( zXr1=1C#9OvZot%=_R|?HFX)+MRO$qM7e-CZId#a3dZ`jgik>+Sd3&&MAJIei0@Pg@ zS;&YWqv#^3p+m5=%@APpXPJrA#0m+h980abdEQ@cHaG66L9${q z(bS2~7O=@#>~GCJUxdHWZTjr&6 z_8r&0z)d`wfNL6|oBPMb^KJ>mwO--l$wz*PhvOUp5KxQtP+(qlg5J943halFev@1D zKZr9v)a6lVzuj2Z*4o24`t;)a!C$<`cF%rqwY`^tw-h*mmsQG+@b3>}c$tsQj*p8H zXKI1S#|uXze{ZDUM`W@1ZA_IANA|Ly^@QubY~qK?risJ6r!|>i?Y%P%*^!Mxq--J$ zx12uW8p0)F;OGT+?PA=x;#oeHB;{lFPk&stgsxLeXwOPVjzsPfFq#r(^U!A)5EDxU zq3MH(sj8b=X?=N>u@-;jn|C#8)8a+k4Nh3>a&Kn7SLLwE$r~Qn+H`eEv;SaRecVj@ zb=hFRVxYP0tD$^m(m2e1yvsre4z{94(vL+Z>&RNZwFF^UXip{E1hM&-^@+nU)Punq zm-x>J7AX%VNDG2ZJfy&1@FyTzh}nQ4r1>Ax*C@202(RkX;~EH>1`J{dGqlcV{J30c zBfZ?mp$NnO6qHI;cPT#nuhA*fbBu7Z=`JegyKQ ziW<2s%=iXdir?c2?wLBRYXn=!(&~q!16k{H2MyoIh%0GjYD387cV*&AL%J)$)noR0|b?f*Yx!L1fmB7L1?w^j*^j1O9URh6RL!ZpNaih=HADluJ$N zJlsR~4IvjBj&Kwyy(O*u5k=q3!wR2{2Z~9K2|9>&TeeXI+^JY5LNs!^est{*B~MJy z%%?>q8<{kQz7gian0BzOu6s?V+c#J;)Q02}d(*6Uf33%p?&9P0IEeIUcyhlmOUKdS8 z@hvtXPZ(!p;Sb8&-1Du@1)2Ky@U?M=8O+EMmY!6gWF4zOY)vv>m5%;2RWKa)86r>!! zhuu17p{j&DET8V3)C=a&NZN>27s)vco;=r0N-#e^z>~ZKR_YhV1w6!wiFYrP)E;v&yp( zUc{Wxw-->KN#zDfMQ8cXzH|VuQv2-6=Nqf{)ENQyU2$9iWk+u+l+q_M%Hk!R8|4(iUDn4 zDOU-v4ImYc+go>!mqhOOPr|fW(QNkBzu4=~iA8HUHUcpjgomNF6sg_} zy$?iTH=fo|d)&(OVSx9Xr)$m39-e?6?Mnhs1YpCWQSP6%fs&IJXz;WBGik^)jaQ-8^oSl@PyA4=rUCao(h@*@bDBr2 z^tX9(cD%Dmd#y7`3ns1KNB8x5X+|?GT5m={C}PegS%#z7hqJ~PFmgubEXYvIr@_|y zLIVLG^^6teyHE=QL~7(={2fPhhrBQ9m~R8V@5CKlG>XNU>vm=v+#gGH$yXrt?^*ou z{EF02b_2)A44$Vh{Sw*t4E(4cIE#m0fpM{+fr5`-5CO53g`xdXr;PCYlO;GeB9kqX zFkRT;+?fPcl^3O&HkX}#s@lh!HsLig&8ouW$F()sqr&VU{Ch8~*euW~o{IXaI}`y7 z8wn4^K0n*&{&U45AxuU^6B8R3wXtz`^+Qk`sSv(6`QhZ3wVR))uuxiNX0#f$vMNn9 zHD#P?tO9fY24Evi+Bn$@1+GAo#mQ?QN-;s|oXiDoVQ(%Wu{2T9EOFs1aZ#!q(bVj0 zWmUC4X1qQ;wZ39JCOn#0;4Yq;LNW73ICH`D#z}Y5WH)A#Lh;7*G+@JXUV6wC6dO~E zRVcTNeHg}Y0xFo@&*^Hw$$D=XFQv>EL7WYCCldn&%-0r#-J3kty z{@nf)Ixi~jb#iiYU?l2u7#03s-opF09UzdLc5O^979f5{hzMoaeXTY+6m@wdW9oM+ZY4NGoTc=mYMFMc)r^A@Kasc;iaS2sOu5Oo zO(WY*Q)ZIj*5we{2NNo1hBspc^PxWo0z@_K^;@c3%+rqN6RbkHL}F57^uE8M1!aZ? z788?RW^xMh@Uk#}g<1_{vww#1n8a;@d1Te<)l7C}$bNXL7JKDq8jih>e>3LA*Bc(`pc!%oBJ~lt_;Xsuh~GH=}tQVoe)?y1;&=bDGb#ho5fQ-^6_^RO#jwB?c|| zj2ombsr`ios)Y5Q0mnIa0|EQ#p2j4yQL(+uW(n7?Tly)!$7yMc{|V)-C_23Ze*JLCN#0^2Ke@Rk z%e!2h78ER*4KKhS-N;Ck8VHKk`c1fszO5vuE*G{bpptPL#3`bETgV&G@WQ447x{Oy zt%Qndv7FAH*tA9OWB=@$%Uw}?R!uG9V0^RxICC5A=jT)m=Vlw(hg&LRm~jl%!Ss1p z!Q^c+$CDz+*esc0A5&>2Qzj-!#a{}6p@iTIZ3^O7-kk#gWz$7lbJSw^_El5HqMt8( zVN`d^PoGoZ(019u2biG(|87v!))!2iO}{L;XwYqhdkgV=09^WvSKVR)QF!d|a7v$dM^lF!B`RYpI9*=%}ck`Z@nt-wl6UO?jvBVVz>aQf+Y`p4p0DTD-& z0SN!!3oKtVzaN|6AO~TTED`ZoQHha^=od9Ym#9bh75Xd2ITAb}^GN@+q;LX?a@F!EWK+$K}2MHF6ykvku~AA8SbHQ=2?YRUSC;YpHY}YAH_r8Jd>uC<&W-or-CN$1RHyvDp}B@ zU(+ck``nqva5rL_7NrAaLC&*`WMcz-TQ6gw;mZJy4k6GtrwIdk?K__MNRo8oL(vYq z+LuKikDsFb{m4XERZYWJgY`KGYD$EKB9n{XJpNtjL>5VP+ZlQx*#{=)9afBH{XBwC z|K#~A4nh>HLAs^IrPQ+O--M>YqL8s*mk!Dr&`2$uvo( zbXIc>*IqC%l@L11=mxZF6!4Ksmc2li)6h0Uiy$dTVvC^T^DnoyR@wjk47WBf4Xo(N zYhx=d$EcSN4!UR;i!>!qg7)Aud?o|z@TA&7gBId6z=qjiCt%~wq@<3a2DWsNf?z1%AAPQ76_eTKplp2rn9+>x+oP8UK9&u@D_)7D zaz45#U>58JCI^|9HJ;!y7rqo3({d!dHS^M7 zRPAC#yy>_WN!FYocTelL9=r4!IqK9>K80#}uf0ET>{;E%6MA2bT?VGh#|R6;$AY{y zC+OcNKgEs0jl}Iok5LdMpZ4mRhN|`PlEe4HmyKmF@=^ViMAM_5P<*qfsk^%3;< z^7#w6HYfLbvj1TQ;DK`|z>W_H!=Vas&#A?P1%2HBJ^0sTcW9jg(#s3^7clYvUR>;4 z>;_Ez;Z|1RoTB2uYp$;BZvI^-&rb?M`{Rn@XsCWV@r%{%SWWlGFu zfC4}gc;der@QfZ?rUhCbHlG*;o(5M*TzAaVv_CZTSNVM?e)J#}3 zXb-KgK+imDC$^LxS5}%#yC8VUcb7w(?I1u~TL#O&;lK4=$E5Grw{jlN_VMl~dodr= z&(<%EN7s@2JXD=kH|m#J>n+rS@dwsA<-m$Qy_5zZ@-1-tPB4S z5V4*J+`YjG{LSfip&NK{W^lYmN@??`L<)Hr*6m>QK@O6~t zrXcFpK>Rf3q3ZEl()!ce!Q^Tbs;vPDiw2e>09Y}}a z@g-92ro6%-v6BUh_d#A#5@GavSM{Lg6~>i?~` z9&+9<2VV0ujU$}Z9DVL5mBxuOxwg zj~{yCTK(MvH~jqvs{-%mAB@F4+HdF`js5R*@5`-_S9nH_k5X4iiTk@gspI!KC#8?Y z0s((1Kp@!>)TX$8S`;l{c?%3z&Cprm*Ksc?1Ns8tnt;yx{8dF?(T;#w%_1G&Vo#F0 z@8faK@g|M5eS5v9Bg^{oC2_sLF=LtOadeX!p{vn_gA3nthDqAXSnKdM3Yn#~OC$JY z8G78pbKkIE*Hp+yUnAD11FZqKt5dIovost-F@H#?HLGL>jJJAuIw8~;{M|)lU8u|O z*@C&%x8MJ+d!3*rpXoa$%EcB+fK?Wx=e%gOV0Ya%NE#nOY48BJMsf+|;P|GnJRG2L zgcR^_zH5&FZDy+REW%~Y-J~A(*RR)Dj<0`SjNb|5TmYv^C)OsPnqQ$H=eHg=*Sywb>xWHMPDE2~_hf>8vbUI3+dm{0}(Dj}g1eYZl zmcu;+3>+M`qt5i}7F_7XU1HZz>Jr(4a`T&CzsCQ<0>Lr`VXL3AAizQXu(S{j)FX_^6VYHE(USQEhQ*WNf6~#ZW2A;>!c`yuI~gDhdUI z*1S}4z#y&Ykb<{3TP>s*xWJ!~A&TBmD@Pd46amGvYbgK<6Iiy@)rQxy9yHqW2B9%( zXx86B;~piD529<07ZnGxIotmIsjKfkdVb7tby1Zj2!{1U7Di){%6=L=qZkn z{>8gb1B0J?3d7MNSwFjaeUB)EPh(xfpfUf4s<-5Pu$##0ri2@7 z&5ZyxdZ20MAch8E;a#WTQ3a5zIztl|W7-T!=Jv~JYLLMKE#5x=-bwAU-JUQHoK!Xy1vJy`9_g&4oEXl^qu%b+eJaeY0#@KNq*zc+!v{f-t^8HG~jM0jx%mjbYmdMp*sLVv8*4j)S2(iR1YEJV0 z+W~sRI#@TeZ)E$b_4ja(TBTM)JE5Bt>@5a=;%75w_vplQ0NrwocMpWF6T_I7G@qrB zPSi?rH4Kd)T^{{9A|hg>VoGlW!+N`BAJ@Y>_BHRhFm+aA#!cNSd^~8R530SoK_cmD zs5U6CuE4@z`PNoA)d9Bi{EJQmGdmCnH2X2B!W%8@B@?38I~>b^Cnn&Gp#oBw-jCQ# zDB%(DUh>2cxUr2j!}{v;<@YZ%t|%bU{Nz$l#=zk9C$?^;oA=X$Spn;phk-t8xeqLO z?+IYwA#m4_EC6D+GbRL`%JR3tYLsf z!$y1(S98|mloD>TCV+OsvMqYqxZR}#FOR|07lxh))Sd|dy6c&ih6D^LI~tF>AC=PC zP=hQXIGF2m9{NXBWc2JhVjyusvRMt#vl?ZCP}8j(a3RfZ?bVIGS`mK!73+@Km`-*| z+ue0LG9i30T^`x113JAgW1*B%f=5C>1G#o=n_XVgB$h?J=nkGPRJ0M>V00ORP59Lr zP*$Xdqh4$Q8?Yx3&anFlr+P%AFV#gHE0d`y0OdsCko31SsfFtTZ`7S1R}KfsAC&JQ z8Cvr9N5`E@z5>RLE*niG*@4$hR?E+q@XzAD2iuibcXxiv+l+P!)AqAzhI4%w*mjde%fxh^|};vOTpb*hbna5zOu;?D;{6Wz^XjjYb}({_KH(R zgj&#*scO?i!{AB_)18Q91MIs#_ES?XbAM!_VWlF2{{=k_!ck){X@Zf>sW-{4u;< ziA@gfV)-y;w&Fw90)r)wLgLrRFnR$P!461Xxu90tjfbO7W0AB=4g`xZG)MJUCUWyjYJ z`gT`c#EIyu}W*??yO;fj>!r_Ua7jtut{E8d9nz=;3#xaae9dCuwCUGB$- zDx(DL_VtgJTTi#2-E%JV9hV!ga+?e13*?g+l{0v4CS>awi>wiU!2f%<;6|1}otI1c z9qyH}v{Mj&LWcer|cQ&vu>gAZ}`i1)R@^kwk(dV{e@w3l9)%WcuD}H-vE8foMjxQtN z2}SLk>#fT_VmIS4@6y|kI=qhpZ|rV@{=R!@e>oj_*?f@!W zMKUVi%gvtLRd(Ee_Pg6r{U>^6yuKE9x>iYMMPo3MM*U4>6iS6m z~Ctbk`ElVD7F+?iE)lyY*do{}1 zTN)k>1{;M$&{wfcj_oK!Ay(!{N~mwXa%u6wxrx8e#r59Ef_vLm)u@`tXXX5%lvWKF zF!18H3WhgP)n-a*57lMmO)cF)EAfqFSmuHDPw>pI3&ybwQM-9*k<2l0lx|c`ls8Xi z0v_FT|I)|+3}$P5?=V~0&~gQCSauwpUGjkot=J1JOc0%n#Iz>jTTS##$f;D2X(|n? z?03pzEVgW~)1OxJ#1JaGS1ZYAq?`VG56aYQaLmFR+qrXQKt-)J$fEcH6uI$n^Z;*7 zJ>;#k$d494KxjBxuM6>1O-&+0DDRk%`vzka*4i!L8kH`#!wa^`bwv#Zw(7Qh1n`+s zOBs4au!@o}r*w2<^tZ31!^eUslANkvfimN7buB=QSd9bFXfg>^GRl)et;0cJPY>{S zWcmPBC!rR$K`5fBk|_0NzA9?JKDf!e!j7!BKQ3 z-UN+;jT9kBVqh~DvQdK&>2eA$BD^m>>}A`_+H7^H?N-Dg8f(8ssQkmpvUpktXsmzZ zYu?T;4UZ>xQDE=5&Ls1dI^zR~dr7=B$aL#$9T|_6vUTv?%v87OGeEV>DC!`&e4y)_ z?H)AJbv3)nI-N=|@{~eB#y3<<;RtyR(*edFE9oe#39L}XHD6DjH>W(!?Od$EjjPU6 z{Xb&VazE12bw67i7Y4DEA;strUDkGfSW1!O4@`-(lslR zesiX@L@uO-v~QQQ_6-Yq_k)QQs!gCuSe%qT&P;$Mkqm)3`CG#QPO_HB{^xQE7` zEsTWm&FTTN97jZ_wN0#BR5?1zx3Fs&iTAuitk1LoNLZ)+plH8;v1xha-QCWj0wmkJ z{lm-~dTg{$9HnJ>6hSQKYLzqd`A*O;ytH81O}yV-)^e|G8v((n9$+=X*R!vxo!1mX zWW+e7jUdq|2jL19!@X@c^GTTlhbBTII`46CC;hhN>8)%sg7dqB^Yaz8KfI%)s=v^6 zBqwGmv~O6rxVoFWXHUF|7l>eFdd(Rx4J?)8D;Bj|xbth*tHjY_3qc)mEg!a=%~}>| zy6cJ>>)2@8$@cD_bn?B2HhlEI=!=0*PHvek|B5NnD066WoILWV+w@*w-!65~3P+u- zHtq;`x<|+Wu3|Z388Ed``NT->H?Hr}^FYbE;0!%^bDHVn&BMpzr-c)*<54$`ij$9m z9iFw`&U&6%c$U-rHX8PPBUyg zT1wGb?3HH;b1Vwt4JPa&6nO^4xhp+&^S8d+802*Q!j2mu*yk{8+4GZzwtBP8n_+(d z({0R16EmtbJz@tWgsPs54^dN-J%#<~;E@4ur@s#)h>Z>A=+Wvl0?3hG90?AuN|Ace zzh>{;?!6rY;cKu0WCTR1d?HMa{{^DR6)@BKZQ+SVv<-{|U-bM8+d2D?+uzGc9&AQw ziA0F{NVE|r^fS`=Zzl`Gh>(EtkgjXK@-~dYY7pX@2&1=B7*gJlXJ!i0PiaecpgSTU zwM&G_rKoY6b_<$xVy|nF4M(4jYPantA3?F7o=)8T&O@Y%4P(BOnlY5buw z?&aU*yTC)sI7fe`qTQ#zwu8nGEARY|wBN0htmG7{j2)hCjfpj1?G$r7H5FWQ$EQ^@_v1#z0r&9Z^y;W*h9cA$-QS`&h1_Ra%99VrdZ%Jbx)D z^CKdn{XjO`7gu5&HP7i`$H{k00stVoc)8fQ2FUB)Y0eVk9&!E8VPw16`-Yt|1jzmk z6$vRqHXa=aGeV z?hqDo{CA>NdGg1xVWC1`$7;u_c!vpB<#?szWwkRH_2%7Thv&<3mM@|erX%p>dGP6B zr`YNMfhJ2=hE^z^->l9fn7GRmvi zR;BpO-s~(K1;a<$lCH8)iyKZpHhS+IUbkJe;LdoyJEVqPGg&?Dc?%iNUMPQDNQFCi z)-ErK7$OcFt_R1#`kvH_t^OVl%Xe)_OM~7^ms3y;wT&?KZXv~?3WaYL5d=`wMI?%o zbo?NbINAw^Mf_Ds(wdFq=X`Y12OtYuJd%ARKmM`qq0oIS#N_s!D7?G!Vr?u`HkBp1 zgMP!~)Y%%#7xVm7S8^SHabSFTT`BJ_245!vnvA{0g6`T3iO0h9oaZ<(M)6em-tJP&qA;%B|6xPYZ98}W~D?=%y(MfB%Dbs@>3udpyzV+8Y5S!uU_4_D-2 zi%#J{r8N^H6+Ð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 z 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­@{}Q8pH=b`6k#(S~1J_ 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�OSs7^)b8u$ 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%0A{qS0>h0I8Vkm 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�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∾qTM_iBCeRIM=pO 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 z zX1NX%lUDBU?ps)3$G51l3n1eDMK}|+CHU#E_gZX~cl{rD*<$^kyTT+*LrI`P@6&KZM=z3rhe_61h$61?ELzd28w-L z%*KSH%xK7gP?xo&GWnCuFQ5oiW2T!s7Xw6Q_We#CJiKNJ;9}oloEUFu7E+;)h5fa` z3_)$bxRsa^hKU=0eAmDtW|WuDV-n+$8LA+jwTe)RQh5`KN1{$3ugLM+PhM3WuUn>q zy3SG)nqZm`SJzX{^4%Xb==Oo-A_(OLJw7abR5uk2XdCeuLR^cDz*!OHiwH9p$tp!fCI$_e1I zIm4HHfJ|N7Osq^}J1^Dr*uNn*s0C#3($Kux_);7w$cFL__%pXa%-Cmcc7%B`VjYs? zjKUP|L=A-unoFN@^>UiI1Y&vdMr@SwZgNPTDi3Y909^z(1B?w`UMY&IpLPIIZOnL; zC7hdKo?(uGmtowr^jPL&3TR8xJ)*HsPp#@(4R?aAUq&7+q#o;sz9gr=rN;0*C_IuL zIV1yqRD_Gye1+1ID{2G{D?FF#D5T2BFpXW%km3#T2#zI+oaqIjKvHim&w4ITb z>9&MnTuH?V#;?)bOsYNF-1-S-(lR?&mXAnAr}i6jF>Y0Ci%I@>&29&l7Z$nj zB)!UgDH;rfQ;AykUH$&H-(x_1bs`vbzO;e)^e1g(PoeX7>rw1~)XW7K*xu)nMnb~M zT@RI$_mzM!$O!1byNf66JPUmR8IcDdr6L{B1-*0xIXyHv`7Vtb-jH;ild$UKkHy*_&O`ku(Mvf=}gc*v6?R^?iM+!JSw6$I?t(1r0 zPA0$($}dY^PBOUGQb&0jVoi`?BTS-1x4Gm-a6pO8?cuICQRccuDk!U>Vcr2}9W-Jt z0NR@7*pfNwU}~>{7-e`2X=^T>-j%ypy!wFaJqdJJ03Nd|U^&%McXT~cUhdNYV~#8j zk;L{rZEt?i+fP0>cA~YeP>IZP*P1U?^!hGjtcRj9*8LAgei31?5fg}ogoNAVkGpwb zbaD0ig=(0+>?gF3?;5l#qQ$FpBw0%RmxT(XT|*k$N4$+2NRZ+Ah#T3s*f@t}NzC9= z!HA=Q)jue;_BMWQgch2In3baa?f^=ZfVRC?3%s*R!kH%2+)CEOakmH-lM#GU?kQiz zXwA<}Wb}0(`nKebk^86>x3X?00E1s-9rH*Jp|mP{J@psCxQvs$?e$-N^nu&Xi`wIDBkT6Y(%9v#EA1@?B)gSifb0)+h!cmp=@y%o_TYLV>7;r zDC1?73)PgziR1%23cT%ZTkXN)fhEK-7jhKxHT}kcGwsYcc>PL|_Ff)~js_W#Qdu5~ ze{JgdP8^#P^*Z8{UA6`&3BJm7(8VGb;;~|C$LD3o5?-MA3j{}#_8Cj%2IO%>M1XD_ zxf>_zIiY31E6jimN8Rj&p^U59s74wOztM@jp$c6-X4Z{MGM&E^*9Rv4=Hd7zWV&0sf2Rb2MiIghl6K9=5%O>kWr?slL90g;VC{nP zrKyEuqtKNSkEvK!F9c1%yXRz5e@P1Z-pT~C3F;d_f1gkmYcJ`Halpc?k#~njMMrNi zVauf7)3(jN+jWg>I|>IV5q#Ix+k5FN8i`tKSdmv;ODfyRdV}6g1qsKmjz;zTu%1`D zlyc!}+>}}oXKrOr8{3>*Zdeuh>=7XJ(W}$qoq)$g=3(Mw(muzpy+>1Up}8-E#du~R zJxVZTJSUUn80xi4&I$Xh3{=%LM2h80<>5@)^slj#UBa()Ucby2*baxjy6FE1>3+qS zjy`r0r{~$$)cSir5y#CGwIe0G7|dZKG*91B=@Hq&s)s;qsT0Ro5r?b_lCO-3QHdGhAo~W2(HsJt|MBcrEHeq&4 zo9wkAEpfwpoo%EU8y68%Frq3+N*$JW>3SH?rQQw4^qNcSfEoGi0B8 ztk{G%y51&Bsb{uOyw*`|rm$66=?4)#?^)n95jVU8Xi$zr4c&Y|N>vg@^pUn-jG+ar z+=r_jgXZCNtGJ`ea8}Wm%KI>}<&w%iqX#mTo7Jd=G@rsnBI>>nW#B)1Y{lJrPbYtk zzbCl+<<gw>a&P`Yw);`z6nxqJ);87NeWsGU!>WNX;_LODAuI2H%0 zf&(Ym1;sIqP&MUVh=fmQ6?527RAi@%YwXEyL6kRfmWUy}`X^>_@iP50Vs(@m&=Mhx z^JO5Pe)Pq;LUH5!+9>JBd1dU6mIDH%v!3;E9gvEINo(eXTacFywuKOE^==8v1ZLvy zPF4S0T{K)-mtz z%y7$6mF3^7z;zy;7&nc#t zPw_MFM#RmOQaqo)vJ^8jmU^HS(}KUl;?@|i%uy=Iw-FmlCd$XM<{`HRn?Z0mI5J4# zN_fAnEQ+V4<$g-e$i56^1Dxa1sz50RTb3-+XJOPoKk~lz9)fUNGKU*s#vLr6qIzh`$eQH zrHN#k=@hydlc{~h$wbkN+dczqqQM>1#HL7kZ0rFd9(lrh2DP-^z7Q)=_;e-ZNL3sS z)9j6ZXx~JfV50khhqLt{3#oaxYPVIP1Iu2!(e7wG9Bx?zO2o1q2L^qJ*d_8i)`#}; zZe>Dz>-@7E6>|0ld0bUfPK>4=B1v4UM0BQU*anR!np+|>VlWsPN1sQZnE{TPFDJvGxMCt9!I4dti_#Cx&xGoArNQm+IF#}XD3#8N&y;2U7P*Odcp0#!F9_8<^E$(8y9YH{ zElGImWtHd0dQSefKS)M!(A19UP3+$1Gz~7D z1T7=I3jV4RIpi(t^dRATEQG-KFizv>8hv%nm$jLLRc%h#O%PiF>CsG}-0UU8`8%Jd zYcHF-IYX9iDe&HpH$p+tax3&un!A`ga-U3z@8hk*E^oTatnOr}zy6`8`L>;>8l?N^ zm!5jD&=yF}p)6(4okR<4$F7f7mP84MAGMZdp!m~{QCk_(lckZUhR1g!2S#N)W3bhL zv+4U{%Q9VxIHl*F0*ojMHpH9U12%OF;4iw6M!D=lY#XT{YmGM&N(r=(L@*cyCSE9y z1LIcBAUaGtN(PsjXHq*z1>6Abkfyghgz=nt?4{ z4ZH?R270RoYm2%|%O6&jR~CUwq@%H=tt zBe-Ja(KKnFD^OqG(cIzcW3_vAGqInY&9x$E)#N#GbdR`~;McYl^u0S~F3S)pH{U^n_WC*Go=y5DEF1@EoqBCop` ze|eOzMArjCdSrbc7}ZF@R6f8h?My3$mD`o)P}vsv^j`Zt>EEhfnE}@eM*QxVWUX-ZVwED2{e1H5aSCs6=8oq9x)bp3%dvCtq zB!r65{~2%|$ZG;054&#cx^Aif%fm1x`9BOrFH?>;kYm)~b++bv`r&7XGT+X2xdCHD z{;lNhmx(t^Z_;$%LdLm($z7ijv5Xf?tC7ZTCOn>kbS39S{3GmZ>GtP4Dz< zr4H|X8VOe{d6x6p_l=-+L|Xc=;BG!8!^NoJscSx&#kOiST(I}`r^^Wy5i!g-&)O-q zMQKw=RrG7QHm%D+%(xJoBLOq%>A)`WEQ87TLKk1yj;o3hih>v&InxVkY`gNJ}63L9Fuw3HqQ!kE2h! zjPqBAjZnvTU3&q1HIW^O;d<2{$sbj=LIs z#(N$=_V`}}<_Zz<_^6(SxokYw6my~{CRg;^@C>XJ0bzx zfbG0NqRMMqr1~cOHCgYi&mkx|a^*`qa?!on+ktN{9Tcni^{XJY*2F(2Jb0O# zQ@3!l=XiJP>g&ubO$Sl)sV!x8*(oz-G9`7savnr1>+fppYKEw>o8?bgIv5JLv9E-V z=Z#+HI;AGo1&I-&;UAn|l0D3$jlc9qdVj&gTTj@1XXn35nuX8Num80Xh^Qu5W0^jC zkHOE3jf#2APVA?8tTbt;uv!O+aq4eo#HDVOy=8ipWPVS%90G}TEb~Be zA%`jiRTtx7TKm!En~;It2LN!E_!?WiZ5>=a{U5FdZr0{+_K&l<1ocZiJtlIN`CV;y zk4|o0@I+7$0GjtsxdLr%u9myAE$VGnp6|0)SA~5KW|y+nt==E!tajg=+^M(idU{SC zpXB^n73^yE47eS8<6Gjy7rn3+Is<&|@HKI|?KxQs?U;F&!|%U-b#m8{T`x$|1^|zp z0?FuOvIz%$i|Kg=AB{5f(u|HB%~HI>eW}tBH&VvZ)XkxlmmAZC&U% z*_uKS+JZa;la2k|a02{jPWpm(-AG_%(WePt)(k8Q-_Z{~gDr_x21q$q=bl~LPSG2` zNsE~NFT-JD8=L>|ePri)p~`MR?RA=9wISE_7~trz^=J4ihgEC~g_9|GP@1Gm4D3I4?W<-m9Zn(mX9`F@> zOHSy>K=*aKAD<uJ-=EVK!)0Vcz?ab2EI~zOH0x?q)gp>n`Q6{1xc_ghI&c9CM6m z{iHeDKW{8hY+XCR?EbG)tIxiR(49E&8j3J?|Nqzo7ueniyxRR)pZj>k_E5*xwqKm7 z9FS7m)%Cp6^|(^w)z9SEcHCt2C)CJm%#1vE6A)|$>~Q6JUmS(?SaV+>J#<}R=C%ah z3fJ2qjjz*3)7j|RtvcgH3`4(xW3s)s*}3X#k-9O=af*kMgy>3!1sTY0nGWzf=1gjZ z&K`5LL^uI2EJNw<&r6Fj2}xIT&4v%hT^)X$uBRM1*H?r7hlKv1@C;emg5KZ)ChZz> za#H0IF3k(+^(Dbww1H86cjfS8z-Mcs+W!AA^%hWVL~Hjq#kIJ5a48f@aVzfbE=7wJ zCunhZcXxMpcXuyV+@bh?df)G^?J^X&cG`H=*%^W+QU;{+vsff~hS z!(itC2d10%Z}zY=b0lGvrJ&4kSFPq;2*sofDAhQ8qCb@MGQe_k70rwYpnYH|!)PHPe?|{xmH%#*-bq=zP8J@_gRXL87xEu-xVBYMrIxrrI!n!Hg2rQF?smrmD(ysM3ItgMgB0 zMjA&sgJ!(JR;TI7mU2o;qz5<+eiul?0nIC31Q5Azh4@}N21|}fEm;rkgOt?4qR_mT z3&gAH2&l2Zg!xTs3kOrQ=_I0&J4q12JdZslvGJLVPJgNiPlxBd?}J1~sBa7x0hi0~ zC?scC+AO4yUjbE*8Vt)8Rji(mFG>t;r9eH1dHOeQ`t(o8!>(VhfFtSGWg0-h@(q(I z4{#CHEN5f}43d?M%)rr`>_}f^7^9M~#u>Ap`8sTJIcMK#J4e({=y2-0%8R5bA+rp) z{&cPOw)O@ti}Pkv8Er=_9G?A{nLqE>TQV{-A|@t)&SdG*jVe&iq^BD|Gg6Mae?YC$ z=>#T->K7d@?Opn$#CCJT->LKLh$3cZBqFJ~GpFmFoqoz*l4FAc6v&T7J4$Jc(BtH5 zxIvh+f}SGK@?S1{Gp=4WQ$q0GlyXaDBpaM)rRcf*3#_d{gTiOBX^<>9(1_#Xla|rM z_*@%1g`-w|$b;$Wpjkr@mGj<#WJ;+Wi_zJZGcD(R6C+XJy5G#kJgZ$6+0ci{-md%Y zkgiA*F7%x3`^oqT3M+d{grU#;8US@%M@e(U3DscOg942vJSYkqa zB(A_VUlq}d1Cj$))yC9!o!6<&NX<0qgoApeB8dyJ<6iOjwzS9()lxL;;OTKccG&6} zUm^>u=MW(xmZ5}Ca+Yy>w%#b0hwm89u{PU`zrm6!!LLdrqz~*Eb!bM3HaY~BGi$$0 zoz!^>IO{{(R7MO$T|ZXJE}o~>B$GvEw|Kj~Z%3Kk9F9S}KMbx;i1sAc65-_NB^%7d z1^X6ihSy=KH*s({yO2Ee)95rG6`pM_cTs?lDGi&HR=6glezL5MxB4`=lZo(0-;Gt~{b_n`{kO&XE0y=3G zU0_VKB1m7NDGgpJp|7DZg0AmgBcfnU)7uP`3KKRGPb5bVj!(pI?P(GpX@>&P6RlUT*-t1Vuc$mm42Co zTf84{_EZUjdX`Zd8~L=5%Gk(sNK;@?gmK<96*|)2Kav3?$wn7a8$FkMDS8xE`Ul0W z<6G5fl4=!w>1;wLE#U21E+Han1MPafN2La*uR} z=%^K%((h}fbcLpBQ`A7>hBdWQ@}h-Okz}8fBYA?N`|;D>^XZe$ZLl!hxZpJ+w?_kZEdb&0gwMG7tb^vei~A2 z-W&fx@_yMfBj&Haid>p5^TtaT0-x{eyYBBP>XbUUqS~FB%{>ozdY}GpQM6C^_kSn^ zf466`_|7d{I&ReBzL!@v`?&~U$j%snew5j~H$Kbn`DrOb%jbAMV+Oq+1fh!U21V`w ze!+c?O0UB%or==9EuyT)0bJa(z)j5bX{?RE^MK-YgW&fSN0P1Q#?hl0YN(v@JaAN~ zA3VA(L$!F%?V{YTZuM8msBK$1t@~vCqEI35+)?qZL0XK$=hvh zWV~a@btK8_nud4B1D>Uylb;|;Y}e1vFK?!}#E%|)(ZP`J0D}wTF1|O?@=|UuS1PG7 zPbDiGPYno#Hu^QE(da~~bnFzX8Pbhmda`Nx9V_4G8cgDj^@bM{VPr;GWNp$*4_8V+k+&NlG*`08d!&q1NKZec0q z1t4h*giX!mId@&#>O8yizQS$VbUOj!3htdB{#gMxe)geotpD6ysWW@HmlIabN9;gs zavT)>m6D3@YWndTJ=qTW(HmgQXVz_Xy!xFmmh`bwkFUAWyV+aT=u{QJ(sG>M0eCr8 z)sE7`cFYAlV@%<20OXiUCkcS+ddqDFcaIwS`o;ibf2aNaPc{J2oOjvkDniEWEKPA`3_@D~M2P;N;lpal_XQc02o^dJ&q#7(19$ij`DeN&6 zqLLC(UJMgGgURw<8< zNV>S!w{AoVoHm->Io`wiKv}#KGU^(6a)mD%w0nv5?_`uezG8%3v~V3fil3N&B=Sc- zhJWa1AM|O2#l_^E(YSG&%$U5lZkAAU5dy}=u%%ht8Z?C2`P!Q{htcjjDL zs9CXz98ff8L8Y0SdXkx^#6j|1u$`1=*s{#4R2AK9V!cRHrINK2UU|u;7YYatzOMJm zl4%TK7E5Vv3A8uM|k5s?Z9AY6Ty=7llo+VvwM7hFj$h2mUZiY z!?97{(Dnt73B7H_m7AZpc^7cz*_~7XZ!pf*#wo@0QombPgtEtq*X@Kd+pZ|Z*{E|X z8+Y40n{$ZZ0po=j>7W4z5)%9qB9q!qI(j<8&jF9vzu_=m%S&{uCWwr~(O368Lg2aa zC{6fPDzb|^lJPTC&Y>rh{&~M1G!9kTzL1eV}3icKdX8Fpu(C|-Tnu~D;>P9BDrFSo-IR9 z>5H}l874`s6hH$Wo4GLxGO=kAL zHQ)c7XGvoUFmM!=?c8`3A|h}~)}FEKSb?h3(EGKhB4`cXDcXqvWKg{+3qXHLA7UTFMOM-eOFA(B`G z=~C8mLGJs!r}5XOah3L|1rd0Ndzr`)A7+{86gnPzG;w?MeK8r=j zBN#?3ql4;_MqGNiQcNsjA^!AegotQ{Bxp?6j(?9AevZo>um+l|JAZ)2A_fAqvm~IVlYpOwFPQFc zm6W9*&!?6MPxV(ax`{3410dPN)-6jvJGW><^eOhnj*OTAQZ8Jt!=>rs^ zire}kqMCroKQxzi4C5jY7$2`nORw4adA+<8CvA~~{CkrM3KXzlU~Kfu{l z{aWnyT1#;6=2yybiVFMMQ@sS-Ei7%+oJ`jE%*Rvfs_wCRaR>YQtqZv0*%gSL0kpcs zZhfU&%FPs@iTfcN>)|(I=}l<9tU*~W2NFI0lG9v=R@ETqNpRzru$DV~ zCIj2|-lg7#zDSqJ=YX1GTEvU7T-tQzYr3JvEBnsN&fCsg{vq_n4wp&(36rY~rIiBSbhMs6`O>%BxwK)q+~@*B;<1efxOrvuZX%TzaH=6VwPR}xQBgE4 zu1Flcay&xZ7s(kvpq34X8j z+BFXvUDu8x00t?(N=9CX#1xiAy5#&C=zMm&F;Y{sUXS1exV{Z|8bjS)v`(Y1B2p@t z8w7IvgZnBwO=FNQWHG;`S{FQR(6>yByoFyfL^OTfAa~0VnEGfUn`bsH8NQKa%H!&L~C1WZZVJrY4 z?T{9E7!p4c1Xls`fEILVg;;^2Wd1iQmK_X3wV~h1?aF4%j5Q-%1K%$CxeVpTe{-V4 z6pB$5!%}7{Mb87Ni>Z{~C`-xuM&*JRz$W6I3Wp1I)rg%_`vt+#^qBoqnkBmvS_udY z#`l$fuotRJ6Wv}DdS;KWM+Zlr?w_6}2mfs)5fd2`5g8G8XAun( zcMTH_2@wei5eo%(`}-3K`w{yI6$=R!2@4eqz}9fquyEGUkO7PfUwJy)Yg^h|TWV`- zfU&*3roO!s*w}Qm2`W*72&Mh*3VNPqe|mE25F#%HxuU4Sy*9iVGze%AEOhap*RBj~QcLA)ygv z!o)^S8qmB=+Zu3M6o)SCx>0RR7`lNQ(tnY=Nvh(ab2$5Vo<#ldFSXSB;E#^83!f(#zHQ7c;kqN3ZuC z&pE|{{kkUk!o_mZ$NXzqZ~OOq&I{?R+_|>5$|n9%eo>mAu9Q`;VFy!s`dx4DZ12wz z6Hu>+mnc*Ek0GS18obv)UHOUB+h+be5(tPV;%(>lCgVMey8!p45m;ShUO%*-wOVH1 z{C{z&{Fk1gm2g|PvRk*<`d8Rz=l^`|?Pu1uJkEno25bZ^ey{p(L0Jy2Qyq1$eovRQ zkwq5VbFDeiwA4xdaokiGPB(C-abP1svwq6S5Dw6WjPZ3kFK(X~7t!Bu`_I@(nTUsF zN*#c$ErYXC+1v=8t|0#HdUmJleT+x$;DWFFMqr;J>ve`BfLaFdHaP-p;#Lc#SiHDm zNov;pFuu%{%F{YF3BWakB`O>r{Z9(upPVX4-jWZ~7VCNBdDK3}juNZNlPi^CD_)vO z1eh!2C+i-7;1vh{vL?JvD#?WQyj}-YOHCO`YC4jD!79d2XI3_uJarCzk7qY#@*6*G zp4V3rHi(;Ar8+{}F=gonG?k;M<6O4DLp(O%LqcG(vIdmb4ZOX77~k{;5CXn!m;2Kd zhr`K>vy9F4bpR;4EKJ5`rh(xhkZm|DV4hbKLWbpoB`z`BvrzUAo8ocwJAom|P|2~m zD@&+2G?#wNOBMLC)&r=#M;*Ac$x4{QQgr=zfK`m0oE-?T!ILct63;7Js?-J6ujah? zvSx~up!;9$G@h3@1|m_*c-U*>Wu)<^k6O?5cJ+E*AV_?&rs zhF2#Dgb9nu&0$hen1{yd+4bL8t~aij`xThhumlYu!H90@JWTSqJ^`?4aF9(H7?u~y zHrw{RtNJ2JQr0Bdzbr}py~}5IFa-T?KE;N#1CXKYSkYK>p$znrhfdm;(d*gKV_=vC zxNm@Px0F%Fqj%HK`vUQToXz(})rJ+Msx~*zWfT)H6wD$a0|y5O{5fqvY@s7}%g!L7 zt=p+_*57;@z2==j<+e6L?KEKBYEpHrDmhtJ+K+dl$(JH?k17T%;X4j986GzIHU-QF zDR4m(1gUa!<`_|ftOO^ny>)>n+rp0II6_Qxj^d0XC9EZ8L*EGm_Tp6dpp7p{dVr`- z4)r{aG%9oi2as&35LS-&Xb*c7CZvQLwx^oCS-W)#xL=ow85OUQZ<48o`}>jk51F<+|;H+ zAJ;vb{zS*0M9PAKRs|u8U8!#zV*^SX9aQo=^60eBYSYE;ExyTpvT=YQM)FhZvy#+) zZXyvuE)aC?uBL9%q1a6%;Vr*R(H!4b$kCB06ZykFaGRb8*Vd&PGy)m2T!U6?yO65= zVbo}EI`EsS#aS-nd$6|8SXRTYeg8vz)-GbUuj~h3jf=kH_j_n*!b2<7>3u`X1qII| zU)c-SEAI&{>@(KW9Zt>Yr6bLb=9lVSRRX8ze1KnK?Na6y(x*qI=P~zgYI5N2JTQ z9k0>PpokHIUT9;RBIkX3y|BwsB(F)}b@mhr-b8D7q*1-;?eRBhu(13Yk4ZN!s$9&m z5RVZW9`%!;6w4`0%G9)8CDNP5+<{sVBj}KFd`RAOFxj@m@G+&YIU$VaPmLk0zk31n z0{r;IwUAs*zi`oTgnZ`4OAj=dCGbKGdZC6=$;c>p`e!Mqe_AyJFtqnyKb{0FSftfD zOkxjzj?r}0qA#U(QmcInhBcT7a8xj1VPK&O{D`y%Q1wYON9ljSm=m|eo4$BCr?g`k3$nZ#au)jaK@?gHaKCl2|rVc zF)D{u_YkRoB{XQmcL&cp&)xb`=UYVG!OS%seW(#< zy&RCclsf3O@tWNoR3SfeZh7$~tNv!@P~CQ!s2oL#s)N_kri1tOM!WL0XRR{)_~Gti zL3Jn7-gMsrcai`4bhIR4bFlg}q4J~sXOt$rl+MS>y!X3%h9=z_fea6b9gfbpbB|pQ zdawbRij9}n)vSO<7HZFhfXv6c%hJ~YOV6RZq|H3ulIe^KiKceC&FiGA)ectvX}7|E zsSx~5n;G8i-oL+$)^P|tc~?CO-qW>ui0VCeopimN{M@%(6_~yfSybB?t<@&D4sduI zk!Q^Mi@qOpd4sa0uTaqCDek)QZt-?cZ1*mBkLsV27}(x;0PMeOL!bH5e|<27W%5V@ z^8#Yhld5_am;l^}Hf?+nG;VCMcVC+tkJ&lal`}Q?0ZtCeVU&Qzl`vKXCJeggeiGyB zy1W24QaI{|b!T^vXP!gl>H6}zcp>L~$5GUE z=RP-p$1L5sA7M6`ky7+%&Aj=ZLn>h9vh~zD7v&xAwW6aEj13cU&gq@eB?VMTfO>=n z{I;;5vP$AU^ZPaP#rf*i#=lDa)cebn0C?63A~je4Dcy{C!~MeXJ)4U+bhl*OGG&1X zlg2JYM+w7F@p5x@i%V2lNzv30gW4`V9d+k#eedOz-)GlAo=IUip=k0~Gl#{MJ5K88Xk=LJWAPZfZk(`4T zgMq+hgmc}mmmF&@K}U(AXe{LvAI(NBE15bhsWTg^do=2+d&JjnLe^nkK=G+o8~sZR z&BX}GQ-xI};`UgGCCEG!@k$PngCZq1T-j0DuLppy9&JR_6}d2_^EmZAb`Ua`pPxN7 zV3XXI(5eJb$^z->-#vylfObiu_8Tyn1P>9roL*emmRDtM@&IW*DRV{g!pijx4PS^p z>MDM&5hFiLHkaG(n-z&jkbuVM!gw)@rxlHLtoA+|-5&$yGM#Sw*KZB4d47I?XtRkt1uFa4aoG zLToTbn6F+YLId&!q$8_kDhQ1uC3qN}cFLjC{`uMCd9(IY1XC8a!3xSq{RgHm?T1*Z z16cu#8Hp9aQ$J~xY8lO9i$x)0(6xKYovh?U3>-~s88<}}mgo5+D`Xr7V$7+v30?FT z;9qapq5EciYL3J0Q)hL4%*RedEyz=+9)8A=bj9Oiq6>pGqnDIIN0-arY^$YD3hY~0 z*aztTJ3p5%dft1IJ~tbxyB>D<(TCv682Q3{F!=zx>bnC@_$OxP<>qZ|^gaV<&2dM! zy(qXO&&@;pZ&&i1E;}!i=jVe5gR6sXimIKABV1GwPIEFebyuz)*539&Y;zdy1G8>A z2}$5cyzqAG%m`&fA!}-WUX2Vj?++bJ;EI)1kLHxi*b9>B&8;XLV!^~8YIc${Ag@*? zmoW_N_YIIp@#l;|R93;B&5s=>KpPeQ^QBG*>dtm1wW$ETR7H&L}fXQs%Pf5Bwi(RmrW;kF1pPf)d5LAfH-^_F+qW?|3x5k^ugSJ_FmYE~1WS|W zvD=ZYG%|7-)#8jm^u;){*7h0`Sh_EH*po@OL=8x!2yFSBN% z9ur_4FXW@}|6+y^x8N(h&u+4IN8j3(zh-I7 zQbx(tJ~Lg})b|dBF5IS&yxgj?Dr?p26qCgJt&otzr4epy44Bo(4T+1ptOMlRO{cX5 zcjm~-Gk0TT+K-=*URpc;K-%#n`I|WQ0VWS;W>S{8%674YY7nu@XWcnC- zYG;sQM6A|Tb;RfCc#z1rFv5fJ1z+B_Oe8TclBg1YZ)8WUte~|W*@a~8Wuy!}H5x`u zw*gbS!)ZGM5l>u;QOA@4J~T z8Rpq{Y!o+vVbrL3os@BnGw>@H})_J%R z<$W)HhBH*Ogd<+}w^pES*WK&YmN{zk&_x-OYfL(8Sq@*KCRt* z|8=o_9C-I!qOh)ffUI1Xs(LAOKIVHof?WMN()4naC~MYR!gD4r%kCj<>;9MA$IZFpP;E_T_qKC7 z`Evei$^ApG#cjJNF#Pf5zpPpRsrHAx8Mtnqt)B+~&`!knLcIO#Y)9bj0+(T5W>`*PY~_9P-mZ4<2Ah}y4|T9rFOO&9ih_57&GxF3 z{6~|mjW&N%^|xO4x*j9~3HBLD(jNF>is0n zu7CM;3}6cWb=?u@db;p-elu7U4}X99qOE^FAWaj6k-&2ii7Laetl?rZGA7;5w&!3L zO2e1q(K|69&R^p8G^7$`)$ERCcU0@KUbNw`c6PJ=z8$vIb(cmGZE>??i$MB_;L_BF zDpcL#_0r2g^G|~jCr-+r3D7YFZg$gvm+-vD)qlzA67a^lMqp&NQ@wghJyC6U9~Ia+ z_#G0({BMFw+Y`5|C_9$@_K9@dg?I%ji`U#1Frk4K3|N#U;}YqA<2FNk+pY&S2`aE zGY}l)I{~F6t8W@DL)>Qui}?9|P9(!sf1nXXKAEZ_UP2Mj|4nCFs9Aw&1bbB9>1H$A z70b)~Q~I-6*6sI{uXnDi;YH0Q>@h~aDH)H?L=U9m<8u`x2x8e4h2p8}D@6cPA*K>M zMxMU}pvu^3IhTs2<@$UrqB%Z?AS0%LfScKJ#`zwbJ~C_+DE~-zT9G#lnV}>~S+MM1 zSa|}lFj8a+<3_AlCFfGcEiHZ7$-k1%17x7W)|_Oi`veC1dpU_zG&85xE@;}By2dZG@vPa0Au$A=zhWfeBDQvD0G={v^gK=)WDG_3G0F#nHekjh3HBHuZ zqCDnZ!2OWeR#Nfc^$=WI+9uy@$C@q8>iYqGfDu;aPitl92h7mZ9~utMvSn=tTwdiupo|$IoWfp={aWwVz z0vO6&PBY9dV328x>XXo{LpBn&bG-b~q#`gNd_|n38>F;JK7P`rGwe?0WA%H0SI}FD zg@Z@WniWl^itsOi^tUP)a}}G~)?5`#9@mRyk?`P!rH4Qllq<8Hx_!>foyc_Y$i?NqnVvm7K4y;|D|cmQm;=DjK~p?sM-F1 zgQ^I2Zl=9pweqcE@YW6dpjbNtZRrfrqH~(!MLL6sMzfE-IC+0fb10mXHmYhSL?{|r zjKv)l#i}2?U718*Fq0Q^^jC#NC>Hl-;qR^>kZ~%3aV%@d+ybAY`M{vqC<*QMXB*FVa;%bO!8Zpw=R!jLlYT)11TAH3 zw}&7i3KV+prK%ICA|EaWgs<^yZ+W)+Nfhxm6`6nEsq|N1ZEy1v{L`&^iiV!Brz*+- z)aQ6H96hl*dn)7#6Gk_4WmTaAdqLu89X3fxN~ll}NGUWJi*Bad8HCT@n;WgrPA5@v zSsL6cmybnP0WGSM&qh}fuO{`Qq9HPzW!1bOf?e!~=8_hjXsb+7y_(6BAzeYjj1~j2 z6qklvY@WK==VbqQB_WB?Okfw_u~hZ>u@r%MKSZ_Q!jAYP4@I!t6ILE(q4>c-^4a@B-Fa&-2*0{w_osmd6CzK|^P>9W3}VN%ZS z{TI{_I8_w=guu8UkG*o?r`nes{xLCZ3*&scfY!yB7+AWb4y#{Ut4wqOvyn~3Hb&%#>^$FQM*7&qV(W}k91B0oX|Em^WcpvBThDd?FjY=J04!YNeV zK5eOffs~+t29XJg3eu`sksa9XVJk;1?ppbu5S%3(1_ zCYTT@j~D)~L{j7UWg%OI7CQkeHa$W~a9D&SCPa_{ThtyajI*|VUTS_Q98&Q?yeiY_wL&L6_ylJGIW z4#-5#)ObKqqNb*_!yWd3FJ(w5`teE%ODZQ^V`UcOM#NZG%w;%E;v&A67yf|7g768C zh9H|~QmUqd6!94;$TabfxAnS)1~si+YZ_ntVRC618D$$WaK z(3n%%AZl&2J0)Ifza@wB-ru8eX+K<+7uaQL%B-xAahq^^tODLo(!DDw+A^72BfXv}T0fd`(Q`QyjNxV9+U*`;&U9?jZ@=b; zlc8b|=xnJ!Cga@mV&FKJTHwe~-db*GGeomN%y^CmY2yNY?d?b|P5<>^V61WsHRj9Oy2G32TXvfjxX=63 z84fK5Mc%(dS-;|8U-!Bx+iGtHn?6vrleFI2-tRT{Q*c$0uIU$q7Xly)VZ-0 z9RKt@y*+I52+oj55xlRrcU{K*PS^iV`l|9=LNh`9b7*49`_bd;(&1Lh=F@pW(A$`^ z=G)y-9fJVL5vev(nAh`1m&b&AW?ZZ-p1OxjROYPP+{Zl9R;RwRDzAH_L+{JoThn&B z^xNE)Z`prZrmXak6mDHgoP!Q=U-s2kk(lWw-!z|UlvkPE?s{vY);bTO%Sdnbh>JWr z;|kp$uhYF1$pvTb)arb;{=OV*lTH^wzdy|1Cw0}hP#Y2*6)p)(CmqI!5m@B^cQ_(d zbLl!kgS?%%_&CGto@?vvZJvaUzZq}I{))q|}Ag3W42A-g?5am`; zDMeA9enj_M`S1aP99^OupDYNx+qZWpF+3dEVIZn$I0w2g5ltN{JHzI0NY`X+x6dY~ zhkG8la3!*M^3F^W(K#EF$aCD&gxBWb*xHStHgbaL}&L6xuP}8ht=!Vvqqi`HJ&ra zIcJ)ayIQ@}`&mX=>qK1ePQ?x2XUqxjC>#D2ifHhS`xgv5;++Z;SzHN}3Q<)5-vqnM z9aV)~d#MMnXg&xyfhe>D(w{Iwf(D=(0s|3*ebjRQc34)}x;*y(j2L64Y7n2M{33rP;`plVs_9WoL<*PqR}}=7yami8p4{ zA%psYq`Bi>a^|SpbU24~Ed;iOz)*sn{!BZS>cfj!XGCrA`H-Fc?bC z%Okv$(W0K*rW!u&^d}5NHM|}HgYg|uW9PhN$o#OsgxVxJ4SzwDjMbjq>oe4sw9ENU z`ZqC(G9^J^vD9)ZliOuW!t`MZa7&8$Ac5i`+(d-pi>*axoj8%<(V}TA`We`ISt z(eS(8tE&1x#o%aT*zL$9cNpIjW%FOOKTHOwD^{B$(U2t0u8ngYey=a550Xym@^V47 zdzsY|N<()R{r$Lq41My6MIpAZ0=_uca*Q$mTqO&txOz}fllGf5q)QH#g>o$em8M82 zbjvrl z(Fn;9SgI%C-IP&C(AW7?%PG@pl$AncrfRb`=--a{;#(NaR6CTKa#$q&XdvW)PXWU9n(^wb zu(F(zt)8GUWrPoX5aYiTQiol+FdoE{?eSuouwWH5(T}63m~%^uj3IK$3MfYqMkAwC z>;iw=eu*bx`K(X*f?H}IrU*$jA^|dHvQ+ZNo(S$`8ur0SUu&Gh8f^;OrTlwLOK!nN zFT5H(+oKYQh5mt_j@@rPy&DW36}{+b`-}_;PwWpV5BdPTN%inH>S2<7_%>L+s09}c zhoDGdLH3Cc9f2hsa+H&9Hz2)g7Ef*xf{t<^SO(rdADbR>!$n&tz$aeGM3)7zqF54c zR@vs7w)~?ZSu$ISM2du{-MqQTofs>-T2``^oZMHM!qm9AiI9?-lB0uu6=S1Xes(=V z!mw173`#6~wa^e=bcQnpu!;;~{EQ+Im1M<=Rd@u)&>(OfqNbrKEF#3jyt}&kZpDaC z7IbMg9G9n)$MrZ<^PBvfSB(E?`Nobhg)WJiu{zRGrRaD6W;M~RtFW4?vC@F1 z4=j6FWn>pK?mq=(2=Y=(zQ#Ujba3&rH(1)+yBXOp^e>C#v8eqBUx*dMS^!~V;^zme z@MnxU-M~n|{ z6?#n>PHW&M_51*4Mh&&oX>KN74LG%J5E)MYaLt`T01qS-8pUFQWwJSM2z9J$u3DNE zTj7u;=3OzmAI2Q55wzj51}wbjuVKnv|8VymZD@rR*$@4?WiNrXxQ>@SZ~}YesG2Qz zV$;T?&&x#uuSX0`Z^mULC1xAXYPend$+&!fvlFt;q-@<6Jd(DPb()2}} zz6?}3WwmppW5V7A2^>aw51v9rtu@l*Pkd78da`y7a-V#;C^^d@X?l=IGh64`?0Pvz zt*UQmr}jLT&R8S;dQ&pD3iir~YO4OTb@jIIcV4@{mo#4WavFGa{OLUBz1H)Re(R+8 zZ(326Wb6jAl)H4+o6c6kt){&7xea4G-Te8bxWGc^T!)#L{p1Ai<|f|L7|cM5SyAoF z?V)!N4d-k`4sqSvT-FbPm#eiXx9P=q!jIuC7LLdG89jKJaGM;Dmpny*N-t1lN!Rb5 zT`s?o4nA@jjluCRu4;dedANLPy7!!|Y+9^P-QqUB%Z{79(c^!2c`?6wsMzqnTYVHr zrifshmH7XMCdQ4|U$-w5Zk_n)FBr5H{eyIbp z9_p z#_wy}=NMWoHYIQ5m~9_)QXSNy??(Nuit*2R^#rb_QQYyI>*~<9LtNSyUKizWwazx} z8BQFnIsDe?;ZhaBWJBhBhd78s0Rg>nCeZ~y)3uYZnZ~RW*V@stK>8Yukrgl}D`2B& zDvi!xf)pla65|ZnA`j~K)IjLu@6VXIla#Ryzndj;enJ1*?iow?aFNl#K6O*Ceaj7Q zifh!iXiI3+0vB1&RgNiXT2-k#wl%Kpwto)(YJ5B>A~FhIldV(Zv2M6_F8XtC#oVwl zU&M6?vllSskX9(#l-95&gyNK#*fv&ier@jpZdtOt)B030dp@fK{8G1m+_-Ad7T2(5 z1Y=w`jtjHaYZ5RPnww;{p|^VGq@5vGwxMOyplx{M$erQLa|TR(fZO*w*iPO6GuwC{ zfO(tAVYmB0`3LN5a#pDUsU;bexkA%iku)))D5|@XgXQC^kr6is#u5YtEU;RDU->rU zp-LihYsty2RhzOScjejuZ&9zsP#_m18$_y4`_g!*<_B{Klw#p>7Bq<4jvNg^Qs3H^ z01cODlzq2g+azoY{9m+Jvg6%&5}AU5@hkD|6N1JlcGo$45}P_=%TTbUBj6!4>JGE- zw3>xpE8b%|TM3;XL_#pJ%J4M&R6qEYI%wVcO zGU2a|L>OXm+Aj~C6#hFu$THK@mfZK~7|%b8IZS)mnHiYx3`-B2=z0)PM~5kVaQ@UD zlvJ0U$E`}dhaJXK$m2xzjZBU|4hQl-ekVQoE)UN~677=#hk80-Tfz2lNdk#a`%7Pc zlIx<}C7@2N)j|<#QOhjDVe`w{Wlh~Ab|YA$D7B>K!OY+dl zFl?Rc#QHIWXjW5wuW{Hq@c^s`|HsTB&CKUvtgf9lzX%7+v}TovD_qNdN<)vRy$oWu zGBg>G!+vs2g{g(FKL!1b<~&u2#`vAR z6RA<0;VsMltw2>{Achus1=b58Azo)P24dfkem?dA?flVR9_!^(a$~%F?@znbmJFup zodyv^BKS71$7gL7O#~G!vRqzy3HpM*I?<6Cn0PsvP^?^`S$~zso&*g=h>KBr8mj5c z&p8r^66Ex=T7-FVoTW>#rg{7>TH%32=szZ;!t4~3Y}tV6QBfhVU#d=rn~x>U!_^+w$a*f!co3ay_I@L zs8*rN)8IBSU%C)cQi<1^E}4(@fhLa z^*n8o^RURf#lzXo&db8CWzO=ByMuR3SCNyDk#Rqa6gOZBiOD|6jA=|Kv90`)%Ma>0 z`vVB(tMQ=ah-(M`SG6pwMe4!dVxLNf=oiZ&*uX+jzdP|Pg#$V94LnRvpmosGu3MWN z4|%p8g-M^HS%fq1IRYd3pZ=(K9IG-kMM6VBgycL3TvbQ$@5`}b4}U%S+jjA=Do(`R zOjY-G)3y2Xn>pjXiuCzRS>P^6-RrK`_QkF&p@MVfT3bbw=oC3uiiWMzZ zq`12jE$;5c-6>EUic4{KcXxMpS}eG`{Svx6m~-e%^%xBXH_WS#e0%J}#X zDw=-FrIyQ}pPScdqFeFrujYO%UiV=YiQ4x+69U$@=J*~;Mt1acypE2KW8RupUr9(w z?bi~MOP2QC1j-t!Z=b3;p9@{bpAblzUdQXyCGI$n+_Ss}X)>q1ACZUjFVAIEGt~&alI67 z`m*xT9>L^E67^f2x5dWRkn{fiGCjVxTt6bOBP>ERe(ILf98q&O-2oJ4pN-x*`Aluw z3Y%8xNHkxetMVcaz3aHkrgqou;HeK@vpYxk{5&KmU6m@>FMeBVzh_?RoZgoGRs<|w z9hP{-w_dN(%#86QyI5|X1^4`3WV;^{f0*+<7Pgt5sA)I0?nG~0J_}Z)n;PUF=Zu8q z{N0`o4B?so>xNIr6!+UTf#{Iu(9LiBpVg$`zJGEXXi$~aXyd}{J0WuGY85B{{80LP zQ0g>^s-)P9&;3}Rd3`|lna9#{MeuaD#m?LOeBI&9(fy_pa>8Z+9GD05x&Cylt*{o$ z`D*0?M9Jj;+EM?Esa2TM5#u{X-Oz_Zb%pjzRV;eJW%b)(nv;jk)Yqzh1wZATd5Gqh zgzdE3+9l@p`;V{sioh7^!F;Q0u;reqZGCfpm~mmv4FcXB)2o&&94|xdY<*f9zl~&T@wet)fDWi+U0Zb_ zvB{naw5@hi>xcIs3}3gqC!Bq8-Z3rr)sZ^=2QA3ZKx)LjewV8$)k)yfpqnR6hlTIZ z$pn1NKSBGPfbL*rb@WRVRr9gucJ^Ogbi9H*MdlT=nW_o56~GLQBV9o1c+WBW`{*mR|wI6ATW&-gNjp&)CkVa&6Qp2 zK+|)+Rd(2bKNXvCLTg*VC>tV1rc-uz$P^Zr!qhzChw(>{pcJ7pJZI>sTdckQ)1J<- zhW=%;=l5_P!p&C_M8$O#6uOW5aIX)V`ma^Xb!h#7lnR|tFUBtJ9yWl(1d+w5l_O$% zD8o5U3Ycy=HG+}Nu{o@64@dS(M@rrw7cEw4dzHNwag^K1D^M9v6f50_2G_|}+-+Z7 zt)HCSt$bk9Zkn8!0318v-Ib%YN6CiOZEJ>JQ~X_P<1p2D{S7kWAfZ|$Q+v~< zhuJYPo3_C*R}%+gxGl4;ZBsID1_QIQ_UGIo^o0o_5`O|JHPYD8RuouyK^-n)EUNtm zSP~I3Qi>#Lkw2Hyg2$=vVyRl2`ajEvVuZ<}vMhs!PX=NO(S%jDbkH%fOZ{2xHXqC6 zQvIR)VNibjC~^mD+Os<3(`q9JRm&xSY~Lw}AqxMk_4$Jz2&SO|fs)!)s!_>*6$$Ns z($i5BOS}%GJO+pQBa#nqdikSoSVdMY0Ft~yO*W2_L(B3VI#XZOJE6cEvT3ncj@ZT6 z840?)hTK0RLL$1->z((Lt9)a13}ds{%T;@&wIqX8#}9}- zsn6-SI;1*otFkrbg48tPI5Bk@mu3;D1Ni+Bs>kKwMfX8?HPtjHW9};OLX_Bj6#WKC zDh-3R8&9nJ`os93Ql?6FezB1NXgQVr>N+>{95Dw3XGUjSv3Jq^)9n~6V&ft5!t)^! zCVX&+eHoOANp!fXWCN9I(0huFJEirZpjpBKX4y9>QDIt1PlVEId{LkEgy*cet5T;Wsi1-Kh^UqZSGXfqHb?#z~)WjsR z*UMiSk}b2KZgTCF?(tB{VVLatAcMf}afaAea#n(#u~DHwG3+K>Bn-#*!fPxDx zRP6_aPMm8(G(d*YTTR}uT2)r-k`z_D#gQUQMj085qBqLCp&X7nTZNGyHCE)0ZtFz# z4x33Kkqrc0isX(CTR_Yx%FZpb^K)9qAe)wzBY~4L&fpc3p>h%mqu_gxP4iZqCNiq)oDXPvbF@KgJ-6 z!9B0H&9Br8s?ti&ux4h8zn5vh zOP4gedAm7X>*}a>j1Ei&-Z!?)uuSnWjzo?WkJ`(HEFbp_XpccTQ$kYTlpFREkG7Od z6yHf0qa2tj7zV^*qz2z0DmGl$2nB_A(}tr+NDL^c$mVjfD3v$hOTsqb) zSN$jIFH5or%*D6>JLO{|)E_8fXv>0~;!WbRFN6&e{L#i04Qg6+eUo+er5>A_wk}!~ z@@2XvEnkV0cuZr>!LTwWcbmv|RBq)+AQEDUbaQY=q{~&}&^wt3vaRT&3C}zwyJ$`t zKtvV}4pFBy)KHd4N>3bU9BS0S&krA@ro2-E4lDqw+tYQD4I22Dp5a-f#*|eDvrI%N z_#Ug1zO7bOF1OYOytg`acYN`&^XY{_)BUniyc9s zh{GBHV-LzmSS!(=41aXxXi7iRIQp*NZ5z-*0so;!d6FK15J*T%45F|)`Gd@oxL~$i zCJAe6N-8uH%XNKb?R@Wx)+@CdiXb9*7&E)OyAKZ!^Yinkc7D&#>tF%N4=yV1{>-ARqLL*^&Z#zsi~&)vMkKQh*prTASwI{(X+}IewJL=zY)kNq0vT76}2)Atj?A!5pvt=W2J~|*=TrwMI+w}x9MC$tBE4nGRxD&PfAoNJ!_WvlJ*p@KUcL&q)_3Zmw8>`(N!JA{3?2Re7^geN$Z_K`^h(BH1}SY zOpEhGG|lz{PFzqf?D_4%K}u1-TYIv!E1Z(fo#b=LlJg|wQPKINX6mcnMUSrY(Q*Fi z?-wW3-&^rkTcRTiElWz5%)ahXU6^O(|8!plDe5co4O56@mDkFH16tLBt10%J>?62q zbdrbj^{L4VPj9v=Y2=+&^Ob*2J`B&vL8>s*ft}y7-Nl^R8kk$hrJ>``_BMi`JTQ3$ z>eaD9{-UU}eq83S8rQ47z1o*$Tjm0-R$1GkY6pO=D1Q%3QwU%DF!=T^qwoaWPDmur zo@fSAzn_&m&1I#>`|SPRDA;?8rV%WAtO06Hs5YdT-3NLl1zIo%d7sWM%k){_ej!k| z^@o%PXT5&n-znRe%AAp|^TpbzmjB*j0m;edeSLaKk(}@J@bo*Xv{o)VCA~>G?RpjU zqwMPYKB3T6XFG9Z-8Su|9{A-N5Z+sF+h-9SV9)Nn#*FKTH%hoJe(Try-RTmRzU{d4 zg7xD|9HLX^sj<$RTiYg1cCvNI=A}ZH(+AI+&4re(armK-HRAHD*LqzvAJPX6YxLIU z3r-?dHSY-IL7NDq-ToR#`>8-9W=A!}#bwE}=?3k;-vrzfZU zs%9jl1`Z=rHco)RWp2;sI$n2nwZ*enXY2uB&8I9}Z90BtFg6jcJ7)Bw#CZ4Kouj31q;6?E|3N5!5vUbW@Vq<0>ss81 zh_U*(Ayo0wwfp5T?M;*Wzs=o`71JaF##^&45ys(@e7rsfT{fiaS6g=J-nS8MqC22& z8o@Q+vj{Lk)lss%=4;T9-i{qNC&#y&Ykl*3pNGbyQ^5@x$ZaxFr6mWQ*~2Jj8?*O9 zZ@6Z&>j*agT?w!6b=!;RdHU1Rkj~D^`y=C`ddQY6xU30yeWXc#;JvYn*h}h~05}4- z8#JHs*SIQQ*V}Li_)K~HV&eSn?N#-fM$r1ig;`rOpvrq^yG>v@hKu{Ea^~L)E*TPw zr)%%v065&fuWLD3f|6fn0N>hKcAhbTu65(o_Ws|3vg$t6vc_GHH{dPr{^fd#RK`tr z-nPlo@NdMBfQjYtqD_rz{c30O6FY)+BEp`Aha!s2hX?d$yxM>h$U_$Ya zk|4gr5VfRg(QNk7xrBUW0#&Hd(92IB&-;G{^HW$9G^kOtN)yx64CB8WPAu+Y zG4@_r>ZY6$pFkwr$;I+lKoBBq*f+*Dj?&p}7~(*fb0}heV^>7^W?W0Dan_-(&v59_ zLm06jjCTawDmpkNF;tkErRyv@G`P=PBT!**FL6?Y!a)*gcQBKfM;WE;27-vABxU_+OMAsBbzCuF$wi~z=nat%*0fjPfW|>{)IfV%= zuS~$O@D&kO%1Hi4ai~lLHFKhn|Lnk%W&pNCD+$!-0Y+&vu&s{ygo;AYeVbf{fftSl z)6k;l5#$L46bGUihRWc%(SU=F$SJw!ra>ZA2)`E5Q$p-B$~edjUr0ny{J!9afMGv% z$O;*tkVA2)kjcnO8X)3QL5;&eiwNP6b^P7ZE6`N)Rwau-#0hhXB^Fm%AsR`9rt7?B z9Tr_U%_jcbr9iU_CRz)@TU~sKj9BdX$+<(xu~{>B6y+| z*F4N|4{(7wyq(Q2KquGq`-RrP?rvFn6Ntmrtjpt;Xg2(_xP4TG@a26ePk4Spzkr6! z?OZu+q@pOX5TVIm{4v-ckl;3qZUb`l^ki=a&T~aOdU?M;oiU-%Uu)|-k3JF*$_Aez z?wO(y^@Tgz(fPXQ5OC(Vj>6-X;ypbgmhrjgS1V`icNaOjl3zQ9{)*fs(e=gFsyfk9 zZEy~WuWYp{#783I2rVLYHc(ltoX2MSNGD`MNqrTH3oQ1~#@5wlryd$omm_sPAaCNi z=q_0(vxI3juD+5?dzr*!>bva?($|vbQNljl1VDf_ zdC+4%Z0v!ht5EP|{3nzf-?-k>xqZ>106DaX+d2=UP;&AH_(BPP?LrS2lYA#6ae+uO z&4&1`Kh&Z=`lD)u3u743tyUcdRRiGEYFQTaY6KbO?o|MV;N}q&Q@j@e(dq^2ee zxJXo_Qr^FmowE*#k#K}2{ zPVA;N*i!f&8lPV*dwp29n2%JF$(faDui8xlcx(`upN*C^yk03*B)Ghv7Ri&_&Cvqv zn)7X(@xGDSwQ1tf_28_w^}IuCeLl!_w)VLqL-i)%j*X=@$-kCExp$Udk8|Nw%=3}|T5me&qH$=`cRK$70etR$BkB9CSvTwUXV^pg z(xx2*%IuK*{COdU`DjT0j1kb_8pjWE5Vw(%uJ%^-a#&rpVuIs3eb=gwkP=AV0vuaK z-{#F+ju>a2F9h!46kKNh(>k_3H9sKhVQzkRbpw*(2y+{`HqLCbCSHD&UCH^)c~5`i zpG`bJ(oj?Kc0Itf$MAChZmjFk79yGc#N~T8dwB3ubL#~8>kPPa-eYy-^*1y{`fWSeol`Ey7D>1}oe&f(K=$YSSp!A7KA?r(p(RS)G2qGFt{Glkdpf(BjIMDZOV zTW{o$Wx9$fzn0%%Q8YHKKCnRN)5Fl|O!iX->0LCh@6c#PUu(eE*y;ABw&$eqwf3>U zGv||f`tom`mn`#?`}z$huQKwUYc6$5>fk zycogFA^=#rlf~k-3)7VOmME{Jqirm3e*gHV3wo(Sb%>3Mbl_9tlH5$Xbzaxc$rHhbx8K`&?-1D` zDyoF{@TzOrlkf+ce~RLg*@{B9BJQP$I;G)u&^DD4Zg7j8Q2=>)dpYN?C`=KZ)^v9X zRHflzhJY(X6cWX3m=H2lndppLk2BAX@{Kb_#s)Arx$#_Mx%Ip4Ski~zm76t(N2lt# z4X34Yb-y{MY&YBMeI&hX$*mi7tH5*P1toyn>)O`V+|0+z+huC@Tv*oheZBenoa!2I z4m%!<(&n^HZ*kn&r>|Uh97xpWuwC~aNMs}8v~9T>WmMN|c^sv0(rIzHP9&=8d6ZB;OK>fExSZQF#Gyc!|9 zv8QHk+0s$JuBms%)Z_`Ad2~Gg#bs`IGV13hyewn)Hnnb03|F70v3s~LP(@7yv1Gj6 zaE_-ytWZ9{0yL|zAC+dF$vmX(NPDgQu4wHt({wWa)_w(^+KiMrdqHBgsA9#~7(Xaf zD5KdJg0WXCKULej6JSSyg~kuMMb}0v{)G)sEv%&rn(Zgf=d1gKE(skGY#Jx!RiKCw zmk^@(P98&s9;%t)dK<>8MA?8Yg~5Njp>Mln2SglbS}kHR>`DNe!taH)>1Ezgw~0H6 zE1tQhnPzIadJH6fsy5CV*ESX%?L1oMw9Z^tJLCbFwbqvN)cFb^Vcg~buB54LY^q+!}nCp&DM$z zA4#4zMTW)`$FZii^}|QoBQF9II1}z&ZgXy2+>DQ4Y#5eb=2u@)hJg<%{+QJ;vZOd- zsT=ya$_Vh}Nz2aCqp)8Oe#D}4oo6sxwhG-KCMls}`G=O)F4OJw_5~-nU;W9W=F5b= zf|m+}^Dd#~y)*++EO*M(_KZ}$QXJBy-r*C3*zF}ZXUVw%w zo(V^GTZ`C$FVlSjKnS$u0NXIBWnR$`5P8$%B7(#WXKXUI32XonH9GFs`~jEup7ulC z{q`!^kbSSV*4U)ivCro#5i4m}M|9ibHdc%4VJ}E%YXB4q*Kv3|?bSNY;{M`Z zaK+sOvbKiwp^YINbOVQ2J)U^1xjbvEpt#9*b#e*pVyHE2N={UT0(&n!SfhhH4uvNk$MRL=sPUC01^5*=#FgCsJ zERkE8s2>{E?r4*N_cj#|-xJ=ih}zFwY?ET5Nc0<1n&7PlURTlzB0o!gGqNPyOJsC& zndG4xx!BIQZu}IOo{gi9bzbhIMhw*vzleKbe*VD=ECVBCH}=h#X$)PULa(4`#EQ$B z+Xp;$YU-gQ#ofGttNe*O&1G`LdSO7MtU|>#O-5V^#h2tN_D#@!z1Fn@SfH8A`apqt zde+gji8DEB{kI&SXw>s>IZidZN|R2gqN7Kmce&H7W`6pt=+(6AcczUg+`V6>6;6Mf zYxR<>t4YFhhbtzK>0f1{m#c8VNY;HWpNQ)5+GI;SawzgWG=>&yUH$(x4-mh=O)jiFn}%z(DtRcl%3KxizXE^qYqXqvw48K65rD1^QqutR zD!`#OuS`ov0?=yAAK}ho#an!S5bj5q&w=KROp#(nyBvzwI{bc^v9qK2STxegvV>8d zPUV_*i}6}<^KrCc&ct+iidaBRZZW!Qb_ZYEg+Zl(Qs$R$6hLZ=P)IxJo6jWezzqyPa%+;1va60Y~gaT zhH?G~ts*6D!qi|~jUOUwvy7gG2m~~`qw!}ct zJd5ggnL$qRf?JBf$MU#LT9|or^z<*0qe!Ut@Yjs}qD{dqwW`(qe#vKRN%F0UlnWKa z?6JA**J&H$Pa*t)jw90}QtG>xe|!0jZC#JH<(V9MH;MAAVc=-R9l8wT=CXT5CK#V^P>tnh5v$c=*Lm zvs^?n;fGtNsiXK0KNE}|{^&@7*T1TMKwYPT#|wIjIV0b-hf~+n>8PLedL)m5;O#8< zo(B1CPXBtYYqlwi@DMlWZ%gfehh_jJdH1!6D+`D>wQhWH8DA`GLU~10lDz;>0W?1; z$3GRfX$wLAb=PM{6K9gytM#Gr9z~9-*(#0X zaeDQGt$87hn;Lf;J!V}0IFQ@DyQLjoo%yPPcCw9 zJ8p}0hiS{g?;-xiylWKRp|Gjb*U=ofGwy3%N&1k*9LNkk+-kRNJE6kPCwJa72{RYMI% zJ4im;SXo@#p&!$oesg?Z1^UsPDpzde0eVWm%h%r4Kq(XaPo+-rU613eRh6xtaxjkj z{p}eV*Y7B>X!u^XGZ$I+qnu_cP1r+CZ@)0fWA>Q@j@(8&w~+D;W#%I&2j(IOpv8VM zR>PcQq;?yp(51hVrZ@ax(&~`PuC-rQ`NJx8g+<5mmHIe|uc_S)gcW2Q^ep}~Ek*z7 z)EPt>DjSZ|yGdp5-^XxU8wMry0|^Q}cEG%cEu0a=#*3EOaouzF6N4W;8>t%M6Gd=- z;Cr|Lw{blq7SZAlAqQWTvIT6IHa zmaIqm-M>4wbMveI1_-mLVx=P5E5sJJ485w2(*lpp!vY{;lw82!z*4w^Z@ow~ zQBy-1-LSZdUlDmNAm)=?Q^&f|IuATUU@A|NRTn8I08OWl%yj3}^Z zXj%cD_thKy?gQ!s<;o;zHeKXxRwk7mobq;7pe@|x5rO_Z)BJi9M-Eg5N+IT0KLo^~ z5Obs4lE5!R<%aXF?<=tigL6dIzG1p0@7>Jz_~ao&EJzvUITr-5Q8q9$)?Ca1Op0( zbRi1W2B%7N=1VS$I39<|fcpcVVuVs26&E$cO=Ek`Sl1rnX-VOk{7HXwsub>Zp|K}s zw*&{FG!IoJ)n5C3)^KuY7+JJ(rl80X89Fg#E!hdgYO(@x5z3aSpN^jIF5TqedAJ=8 z*LpT9BIocDXWkeRQM;v#5JZSC)n&2bgvB?W;$l)rN|C}p zvQ#b3iBXlLn|VPD{Dmg8#_%f@p0J1lTARW9-#93-jTCB8OxOcKNI7`{%_$&J1NlBB z4B4>^MGiWA=|GYGINJ9u!*q4tl#DHY6sBmgQ|Lk@D5boiK&YKsL>bM;x{4L;PJk~{ zwTc{pF2A0j#Tw;=_eRM@qF|SH0r#nTMs zth$2N%!tkZW!~G|uYY;DuBeE19zk|1RvR2nPqh&0@A#3>=H1^X=mdRS@6USiPzYq@ zqo0uwSy9|U+;aQ=6N>IB&L}N)i@b_5G!Ea}S5nf8733r302w96F*sx$1#fh4s90NN zs0fk(nMXXXtQ0&34-5>*mu1{}S~APk)dTGlL=$0Qmo+st5_Ot(^VU&6InwHx))1g6 zp!O|SEgO>d@o@L|fls5WNBJA_v4uE|pQPCQQ39_LkwG&lv?WV~JI2OXSQCJ#>=!dG z*R&kv5Ciz z!oF|@5vWeEZqBeck7nH`Jzk$H55EVevpa_@3JTBXwJqOqmZ9M_`J(G|FdsO@INIaP zDNDQHG31u6^yY^#>dSQe6CPEQ@9miHvP{U^+RLA{DuHV%Np(9x$Gb#kuAQpDcdjMZ zTQ~l^w)pY4<4>y0ufjCik9GyW^^!Yog+s~@Au0~bzkNM>#z(VgY&mo<_#ajzO>bAV z6WECg{^oUMtlD2hJ<|_HfxkKP-xLlpLf*#TZtSagjbAcj2$5_%D_d89O5pZU66fSM z=AS#p^^d);zoT-7^7#`QE^5AMF>}#5w`RCxc!!GtG3)9)bF;=C(HJLxvd3Uyf_15);W z$GDB)$(9fhIu;GD-=ot@3i$+HQ1_<a>%2+!|%SF7E=BHiK36M8y2rxw;fgG z9Sd)w`eR;ne)p0cetrwR#+mIqdT1N}SYHyim*{_Edq9QhLSa{E%KaM|TO)+q5_VjP z@6f*y@N=FkJR5-<>@;7Rk|(<^yOISUdy`~}&VU>1sWEb%a%=A0@LUd_0-7Z&o;Q4* z>Rso4u6^$u^D*CzcqLQ3nFYt_{)_IP`>f4d>+^JO3&JJqm~BA>D`@zf?mE%7T!DH1 zIuLn}7Ie7#VyDM4BH76U^#q_+miJjMuXM6JTCLHtk9svqj=5+ z9y|V{Y;83~`Y&}Y(E({Lkypby@ZcVIa(ELZQv!p=cTt=d&GU4ShbH)P@p`vrXP$i! zPG9Lh>6Gcz7mzE%TG82`SO<#*BfFd>w(~xOOD1$;oj$8dEY<&m>+({TjGeA1p7+&b0^T4a%vaRlgfv>v|Vj4dVD>p z;#%8mziE7Y$|fUgrM22+?Pc-%wRRJu%|>Uv&(Lh+2iY}qyru~z+brEoZHp;pSKOr8 z0=33oa~Yy{l#4tkGhR0W^LjWX!zAtFButI80`9-6 z!56VG=iR(FnJF{LjeK!oZawrPyd$4X&dMK*r94ey&~;39n+@H1O4{jLJ~@1@VZH3S z=NK0z{h?QY<_ThcUt}X^n%RR-oj?k!LZ>aex1j=O^;01OYY67%3L{T!89^KG7^YA4 ztk+SehS7){=?8IekB5DGyx+Pt2stFhT> z>|kaltaY-$R`;7@>ia6I-)+*sgm$u7V?*P)#nfbjIk*)W`Eb^;b$&FN*P~6_xwSF5 zmEBGA3>krA9?c!s(I05!fwKDh8HBFkkJ2MRcJaaR1`8z)#*UnP(h%B9n6RIkHXrJO zR!$=~=UuE+ENfalMTHU_W!$joxv&kpj92I%45g?~3yPEl$h7JB9HDfo1lG~`qfZOK(nf9Ju%<3JK zl4Xu|D57RA1nSdPoPqdudz~6QZo=PU8}XjYJ_q|@hs9Nqy9Am15 z`{+GaO~UgaWX$z$ovmWYQN?Jq9BW?WP2?Er@6!l0#ACDHQ!zB+`|YgrR5jFrdY)Ki znZ!(;0_)UtGsHgBi6Ucy zRiq}vp^~=Wuh33lr$2fy$ya7uYDdRVSE(8wAq-7kN$anar!|!Vs+j=OGBNkqX0Vfk zo=k5~*&tj@-lq<%kcw$-kvG-0PrOREz(-GUrD5yC1}q)7(cIv~Pr^!}Wok;NDd5LH z(F;uU^N@NiqD|{$B6>(A)W@n$c-b$_O66_46;4p`xDu_SlHs};;w};kYj3Xfje6pn zg5f5ZdinB{4aBwjDCQLpAH!l}Q^??mD7BYG()062OP#7dRnVTc?{*tKvpYwb=%Xrp zS~z`SK4dC{=`to(eV5|^s0M#hTC3#Sx+~vU&uS**PC^>0tvzf_^2^~@&<$= zIH|=+^Jx?N{SOZ}H~lv^yGN=!bKj!EYF0Ja2&~gQ<&xaX0TGE0#Gq+Vj5%PsFAS2-Twa=kUC44^Q%x1;yHm<_)O<3uU06ynzIzUR(D++ zK`t#HvXw{0sKa--!v2|kRt;K=GDbjTf!zu^m~1l*mV_S*vGsI@*Z!(OGP5;7sTdL4 z^TG~tq5#aqU_s^(k2Sx{H_6Mzo4?#4nxU#5tH`uPd{D^(BEv$6NW$b6&~g^+gFh)m zCF(>Z(7(yB3}G^?*YUk~EUvo9$ICRyhwHmVI(j;g6nsj{xS5H84>hVf4rcZ?gu~Xf z*1rr_*Ku7jrN?^hJN_oPR^MBCa0aPoWxc`(srumkT(EW5w^$`^{!*C5uz2%pZA+u4 za7mg?R+KY2E^Ld_IV7ZKmqgr3#?Kj7;6AIZS^HGC_kKB(_)t0HHI z|D>PW^+?`8R4NPM=s({8XI|dIg!fy5wfu9Bi%O)mpx|Cl)SrKC^t_*;>iYtzM$q^3 zN(ZbrYp8JFhj{0IXZx5AyQe28amU21JJNW;$3+qh>!n=0E;B=P+O+g+Qs3{Va%kAP z9*M6b+^;N;{aAP8`McfPXu5f}=TCfhk%O>Ut_#mpqj6V#e^QIq%9 zWv)K#v>eAYU!Os~c_;Vf_4o;$gl*$*y$u2zpk1u?5MU^NG`$Y(LVOG-R=+G6#^KDY zemSaMJ8#`}hy-%!6C`@Eyc;v=Zi`PL{0}_(_y6la?vj8nfrlQnO#9wr;DZK2 zaIi=*30e}lTRQI~F_^?LW>J=vfe)9&F(f!}{i*z-MMyaM8*D;4{)ASag6G0Y7beI{{is4Erre(K^*tSEPl? zLTkH_s$bjaW=z8d_Zjw`5!$zy$e1^z%Weu5;7RCG&qWisxm{J#^e zzQ(3NQ?*N5w_t>J6F>{Ng7J8+kvj&c){g8s1NGo7Cp*R)+Zs1c8JU0+ZgS(P#(Jxd zui5cSQU#F3-RGPdw@Xdks&xTw>K$JM0!wfTT7ceiSc@Jw8G ztC5*uH^Jz`fcqHXJg)VE_cnPWB!(PZH$ZFoB7_7 zlzzMYPw&%ut&YwRv?Ht^KJ(YuUm}r{^k!F?d{{7^=zP@EWaOG4-yc-b$?9PYXu?GW z5s_kOJh-HoW;Y}&b#B8@!RTIC!atW=rmIDR+zdjXJ$L(D?MXCxb!2Jt#%ahTerzYy zi#HgDo;vFp4Z&d|9$-I%zzG*Zp+4a5&t&R*=E86?(^BCdhI8X8N*_|ErKw0dkW3KF zN^nQozn(+)89cMcme-{~+!e-=ggz2d!WBam1m%F-cz6$fqCbPJu_R$yR^8*2QpaF?fRQ zTHP*lt=_|SZlR8dbK-leC*VpWYd11Y+E{ zCvBC%NpnBqM+O`iRtw7x)i9*Eo*8+OM@0T^NP&RTwEc!e=#wrVrUnKUD>S+%Y|I}r zbbNpOcDsZWWO6!Xt&il{?pPi~MxLUIb~sv$g}AKfiR`S^x!H;*)Ia~v9kPys36K)KXq2BI*TbS6hP0e#8SNRkD{6ciaL4Hyj!>5`*n-RYe zoDd}|t?WKqv{MF~z*ZQLTF#Syb^C>8IJK=g-?Y+$RDNOPN;$#rZk!M)-3;sV@k7E4 z?|hhYaUyFP&=r`I+kN+bsK*H(tJIbrqYtXM6#9T(D?67LKG3?<-`D{Ch5DwmmRI&( z@|U6TQyzPhqE9VFw4lFYFJp8^Gdwi3P_aHjCY*o@C{4=Rv_3pCx;`v2te!&)AzKRA zio=BfN0Kz)P1mf77>^VAO!mh{tQavdYY_yP>jk>pe!a)0TaR3r*~i=JhOk}TD#)N#QOrANBQz+0|%Bu?VR;2IS2 z;BMr=R+W%H?hZD32xo9isxUonZy<~6UbU(=J#XR51JShzbBrLU(5-(f)mFB^F@$A; zs+-=;caZI?l>hoEN)xdaWW~k#^&Z92d^T^jOsiz^ne@F)a^{G@AH>)GKHf8Ba^Y+l zZ(4y%-l-AM>(XL%l&&H|c8 z#mAeXl#@1`KMtXu75ZJiMrBZ&x5rc*FJ_&4V_2f1DI?J^0VU8)xhNgi??61DlpsdU zp@exj{EK`RNy`1+zY*r0j*5WsaEdIbKrSB!;wRX45S7JcEgsQI!n0FO-)Vohhw6_p zR^;bl5nGk#s2=||AixEJMn{x`4Ij2(PooHw$eYOymF^seLtPPd|BUjQ=JQU!XIl5| z=?K`s!0SYl;kM~PKX>~6^;!^e4TNqKJACfjwt#=JgQQBmzmqM_zV>4|*6I>2f{y-l zRt0zF$+zI0E?l4csx^cyfh&1YgV~7!)hJ(+{Ofj0L;Y|gu^)LNd5J}H8%O5)V@v{e zh*8VOJSPJCOhe^5Z->!Kk4xztxr;9sU;UakU#kqBn;UIDZ08mh-LO*;7(jk23GQT}(>-UA(W}?7;`jy{uD%9MD|WM5}gU8v1}ncHo?R>06Ta z{^cxrY5i8-i`&Xu;U;yCH}T8Kj9bjPdz&ugk5?V7Tu7$tVpYeWa8>e^LEc9Evd@eU zN#l2gw5I~Uy1+-Y)g>Ku{;PMql<~qZ#$aF0=5$YqEdI6?RcujJUCk&QIKPvGJ44B- z^}i%+|H}FR7LMnYKI5AJu#f6FnG_Pa^1f;9C7hFii7^IX^h*9IjJ)U%A}s&<3ZaU? z9fd%1PDDWwE{Ja*<5rv0J`ld!50-zMyaD3d_Y1rxDX`LdRl2d>sa};E!uNT_L-R|= z{dvrkuU4JjvEYI41J;tC1`*Ksw`qs||N3$MbM3iyu~JF!ZGW{YqtO%1e1q%cZoiIH z`?l`9Lfg>Z`TA(MO`_}N@6+?f@oH$=Gsy?YcF6I+k*VSx1raqo1-x6 zUUzt$A@`S^BfqzmpX%=wRGj2I=W811A?;g|oBTe*!fg3%N$Lx)>H*-b2f&+nHd zb$50RC*U(*PaEt!Z^f{6cc$!)7fWN>y`J36tGW)sTmPviTy@(`Z@YN1GBYzXb>%(O z+K%GMm}~)OKL6xw|J%G1&3jrucg3fly8V+*>@4vz8#9-%81Ef9_BNG`p_x8Tb0i}w z%Mf{v31+#H2t%z%sg6ac5=$JyKsFyOJd}HAEZ=a^g5+qR**wWG+dJf4{0bUyA`H;R zk2be0NQl7_dVe8aGW_mLUv`_amE&}qS4w-r_Ffn`_f^nYm)|WgKKN^d`8y! zBy+tvSc})S-gUguZQRw&9N2%B(b96auH)vL(?m9A)LNau#AGU4VN;UG#5fkm*aWyo zn^tSCMHX%mu1l`pmX2HWtlIdq_R>v%;iYR1BTpg&-;T6M3=HOQU^r}C6 zb#YQ6IX}~B&U<*ANiqJ%yFvWviuxzi@+7bKurWAJ0fgIn+OB$;c3Lp z_w9A?`FvV~nr=?i7?S%Ft4U8s7zu!pGGM?XUeJr7@Jb&gLg8mX7Qf!;Qh?#t3XzIv3y}44Ov2Li_+sj>;)UL?gU|P*+Ul;*o)RkjveF`JfzO3v@ud=yo zWd{JB9p4qCevi;@WVG3A1qwp{hpxAdYU_>OJ%f93rv*ZQ;BLhsxVsj23T<&GSb^Z~ z#ofIWcZcF$q)=RnOM%Jvw`R?qx$90&)=ADjcKVOgqZRPXhR%qEXnd+g3fK@}D6)i0YY`@*mP@$7o7b zEurbGu9hxNFc)r%tfn6n1$$($%_z(VS+BbR7fHgPpW{U{_Sbkjg&AQ3Qm7W#I(VxoK?+(ut%zUM{3VusYNJ$7SaEa`fb!vh&aVw7gU?(k1(JV@V-#=wC ze}b*$$w##uRfw3Z!BpC`1W?3id2-FK+Mz{3M0pIwLD&g(5xtb^!9O}lN0c68q(I0j zWp#?`UAk{Ro+M-pNCXdh#zsCdSPsx!7q0se2O~0Ng?>-V<#q(H4LRbSbz}C)?RHv7 z7$l6iLc+@M-6OS_Ar>W)AJZi#gyK7wkMr-4X^jkuu(#QexKcxqBdBG=5D3PZ^4yH2 zuumZowU-ao;_pY%`+Bo&P}b(oi}naV$Q)o4>D{cxTe=S?-{Fs)oVJ(u z^w|nzJ(X6$&m$M6#Qi*iLYiBkHlOGVWAkEeFDYv3M8Yan2>%#n9a1VVWnGEJ%I~5q zfz74F#k8!3CJG_LQrt1BI)r^00Qej+W2nD>w3_x#rUo>@{2lx`om&&9ykirm8FAXU zKO<$8XOa=67OsicFN`T|7gLsW)=_nS#fAp?Zw3(`X={zGE9N$f)ofAj6_wKv z2Z+h4FQvR}P=`N?`u4KnYuIzk$|S^EzLjH+>?I3N7h0N{-81nlpEI#z<7hFeHW6UM zi~<-QgCdV(ie{?#hIeduoOufjMeSo3h8d3te>c~2!7SyHeU{i@9^X8jW?Wk&T3|HX zKQ!VpV^){-T^$O<#8P=F8DdkoBtX}1kZ#wgkPyFi(XtWXN$Puj!pbVKZ(lGmHq6e- z%FW5jGBvjIY|m(Z6JG#!nE!3VLr%%lOhJyM=ncUIpJhl-E{~Jq?@JM4d;WaM&+kA2 zDtaOTq~;Cf5+Vym$Sk8Z43mIFO4Qz9T)Xz9r9^ey{?@clrnI7-v)6m)uldWwzdm;! zV+EQV5GeGP3ZxMnnO-XxYZ(H_LqO%L|B4TLiG_K18J&`OeSh?Dzhg`>1xcX;AGk0-AoxI9WeO zO*=uQIve_Fw&Ej-3O)Z<=Q&(x`vM=o-Q1;bEh{S zp8_M*CiT_yKl}H>o-vkN@=uw!;JT0hAN~x*;kg3jf@63g(0B1s{MD~N{FjhBT;s@X zu)V*R5am++ZRrMgcx{{!JRe&g{nwGJoi=_=GyUkb`WMIY_S$pa2u^c`uXPaGj`V$0 zo6YrebZTA-d>;O}3v8dyM>}@yYCoI!ROR2RVCmVZ)f7-o;W$f+cKEcx67W3E`0{z` z(Y3qv?4UjTHAw8qezI4y`a|b2M@Z|cX(t?q^PjseYI^PbKh3uDDsWqe#wfQb+V$)- z0pGfv8ejBZ@2FC)_@QQn!t&R2Lpte|5d_L0$0zyr=1nWrv3k@(^vhNDWRwQpQ($b`BRVF0RNj& zwE&m@)ZD{#AbjxQV7_EPAy<=^OsRDeaJjTVal)EQ3j{^Zqq($kjdA#phy2+_IcJpf;-gxKf)3wHCSncO6WMnu+k~TXyIJNF)>s%u& zu$f~jPf9WyHu%w=$rN7qNsZF2#A_;CU^ir2JNxd@YUlZ})Tjv#32e^!c6{yk--yGV zrmE`*=7{Tv3lrlXlwA@`r7*hVpN6cg#Hm&NeFg4g-lqmgBlcsk3r3g$PyCf#j!X1Z zKF;@q%dP?K_)y-fcW?D#W&0+ywF=;l+t^ORS`0}~7HY?p-B# zKJaS71j@W5oc!9-_saQ$v)->86pVx-QD%tPLl zMF1j^j67F4Iuqjj#F!G|&u?_H{dfot(^hYZNnFPbPz}Dqk642m%u1I^7bSzBh9aSB z?t{Ib<6t({W+dwDob2a4O+-heo3I1F@xnibUmG0zFf{XvTG|->PjfK3Ko!9l+RJeA&?=Y5wBeYfCg|w8tkV)62=BTHo4E~?eU5HLpoj(v=%NX%!P>g9fA%C zHvj4?ck@ApfKXaTMg6iSF;hLVmyomWiUy$*iYbqPkB3+`n~EMx7c9kUUn!x-1;k^j zZl1*)Oq8Q#>TM@V(Z{#&V$qeqR7AMI9||8>l4GfEPVH7?EroaUw&TtJ;RZ6JE3jBM zEfz)38vcA+Aa7roTvC_bb1A>L3is_@kaEjXR>x>2%qDQd18LS-k|UeA6j@-=B$)Et zONtl}A~}t!7^M^%D$Lo(&_MTGNp5rpROTEZ_0@e%RE(1`8J7U(iW zVAz!fg3LF$%4Hv4XWbC2ilz1{N{pO)j+%8k`9bESilR|QMl8};{^V|Z+89-xup z4jBMC!cKk-%Uoj@OAhG|$7R%NWI;3%fW!ru-wJ^%QE!|*x=ak9U5p0QYqBL9-C$RS z0k&=vzO)R;4*X`+C&u93Nk{6``b8DoX0c44&6=wAT|QKupUqy{;;oxTtDY$KU7T}M z+OW}nNQ$}wi4H`a-aeIu!ge`I6s?rO;}-@GgX()K)t>PUMP1}z;^~6VYnN11Fesbv zxCvD4fhbbmel{~&(o&s?Mmfr_ZSI??$*P#RK%?c;MC@r+t5ep8bkn1jMj(>KyyCFN zY}vvPMRUDu^-2{VCH&LB!+@F^&Y|Xgf8|lWW^mG!_M;l^N=vzY@BOXO6O(JUL_=vP z>*g=KFWI&Pl;N$nvar;`;r(h1Ho$U51**$&Mzm7IpRvdmIG<|v|HtOR& z5-=X$*eTrn4o!&PC8y3tW3l?dvEqJfEIBsHA#)K=t>^!^2HZ+?& zCe@E0W>y5ox=XsBL%vbwk-g~-@xDO%>X++mk#jpZ6=kv^kjaDE?RRv9w(2uq_fN;e45IRz_TN#Z8*V~7xz$Jpm;Xg^!g}FPTYRjI_>-&?#pr5 zAlxfu8Lvuyh;&elT;EJbmupn!(dG%ZQ6Bst<3{2~2yrMy!q zvMm)da#qc`z7F`!g!yvR`e;fnyE@DV%lm(&SHQ)^%NO@j;Y`wO-rF#>>X*s5rPov3 zCpKphv%?Ccn)|r`c+c-yPxZqyTnlde9y}$1f zwRZnc|NI94=@&Y-W&aiEJ%<1fgX{iJtcjZn)b|Yr^uOoRuh?jK|DUD)^nU2+#qsFL z)Zl5Hy1E^Xd|`jy2-ttNdcNywxE1}B14pe;%n1NS+BTdf{&T0zhnKvbV>t%Agt(Kw z*z|vzHVphDu=wp!ywc>dqaLpPemVWswd;R>bIus|yjAJQ@o(~Lapjw3zwMX*b}bd- zeLe_ZN-WA zF^oi>r`}KNJcpYLcZHpyd4Y1Kw6LK&X#%+G?-qa zS&+fhheQ$@k(?)~oJssZ07jgbz*mocFZnkAO*&qo`8@Vl4IYQMucMsyG_+BOZbT%! zWOYCsJH>2;bpl@XL!x{fW(<51bQ&@TbOvPBr0_H`5IqvjCp7pz7VBsg+EOnV3Q|)_ zhLJ&{7(H7CV}!Ia5$5K+vCZzuMiW@_JO{-;C+o7L83&!eZeaVCE4tbVB#j(4&ySa`@S(UnXK4z3btapuT zrEBG-)SfP>szEJQZS`Di^HqZFX-9(Ia6`dcmi^?rv3gcR6H)jhlQc3JoeY4>0+|Sb z49r2FXRa-FQYMn5ugb-89`b|}Z=*TuHDIr(9Dv$4If`V+C3f^%6y9P&$Dm@sE3CkL zNeDyA_}$Tgx)_y@oB<^pG>-6#irLnj)0WKn1yeCP2V-5yXVsbfg;O8EAy= z>+n0yecubIy$gM7K{}DMdoW_*vD@pN_%=uGcqVc~3uBfOxn_t9_nqMg&~e7lEp|-C z`wNEaZnjHRr`|8hHWMgDIXagVjEqjA-;6BzZngfe85t1u)WDa2ishJdoQZ>TnyEEC ztfaVlZjtiXZ5zx2KR7tYxh8dV<%Nr?)D3DHjcrkGxR0!tmGU?GoiR6v+L>-O6?qP< z({0jil8NJO;{T+RX78)(*Tote;F`~R>+Xn>)FE@>N}_*b#6uOZ=OL4oVaYCUcd`UT7V@+j}V zUpt^vCEV@!?&d%x(BCP3M@QkZ2$CibS&)sOt+BZ#mCg(BM(n~ByxcN&)UzF%;LDoQq5c)IK#Bn%~Xc=PEERs z_dqr;b!b?!W`zha@g9{)Gl(M5pU$#C9!*v*Rev~vUluFSGMd|PA|yDPi`JVe1I%AS z!dM^azyMRxj@kjicEE}|`l*62hcDVuzk}$@8Ji6WmUha%4K#yd=?I545+Mo%OOBBs zr5&(Bf#9rymBSZfwH+SrD5q+69v5qOr!k=QY1fFah6Dq}ev1mDrP zmLBeifoCJYaXj=lhKZmr)u|u_0>&>y8GLYSb-{L^w) zjhu+a2QZzop~Y#c`5tH;VNs1!A|^ey|0@6~*@g*}0u@6y8+B3t6ly+vo z42=(nrNP7>v^-1GK_vTi8#sDfAtJxSCae9fWOGFc<(NNlzxrhc4XaKmjMw@-`2h1( zEB9R@I?w{SmzX)Y%q7K80WZaG#*7;k@7o*>K*mMw@HZb|?*a>f#lnU>sq=1v^iO-b z?W2bwkLv{^fyBUFCwaz-ubyV!NoSI;l2CStmoknm`B90*0(8YUaHgh2+64P{$Y@5G!7_AQAjL;E2XTP`g%B;WXVyX z(ALfxUokF=#u~~A1o(1H10Y52WH^1ElrlwSKNOVcY`Fw1 z_B(D)Du&(Qsbq8z^V4>o{~~R#I(#ejgVW2Pkg}p5dm0?;k-O$akEm_a_BTfh)c>~7hKGXj2T(|jFG>VD z4`pBX``L_-hr{!Ns>h|Z_c2NAu6EdEM;vEUivxE4LTV|+eyUX2t{+25#qaZuP6b}R z-#7*?cRt)s=G}z%R>v8(ebK9McF6UX*2~s?jlD^8g{gIxQ0x0$Rtub4A9laq2oC_kNqFtzuQ%+_TgtM=skdWS8o2F3 zl&7s-OTuu#+CpQU=0#gv?fbJoEVHHJOT)O|E|wqluO45kIy?ulYyJBB`Yh}o4ExbG zxrkqKT(Oq)lS&xu9THLB&f-b(pSeW-_P?7DcQlX^vq-KR)&Mq!%F2O@HH;&x79G&%K<`&=Oo6Z?bT+#UDLYwlnMx3-oV zT{_eBqFdzC`R1RR*4Pe5x1NCK9sjF#-_2czB1#38;l=;WF!jGKjY83_fp^^6@5->z z)21s&)1*OOb%*g63X$>5fynt|>qzQm7++u#xChVGJLBEw0t0djnmu~L^Q8+a;1h6P(D%EG$@@(8-9 zil`}4#Tw;x@!5Xeng9S9#vpaRII%wf25J$T@WKfZlhKjzBgd&7=mG$O6xacci1UEH z1qhT&Bbp2eGO_C8l!Lh*MyN&lL4OQO2R+VQW!ud>=4$B2$iv9v$a^h)Ex{Dxg zI;mKKR#h?Caa6;xmeX9Wh-AJIB9!MbSF1k1R|NTE>82BGfA@^Q_D4egQgM-eP3J=7 z#KxESTx8A~t>-8oSk1`B`1SPp5n^AZWSWxRRfHv1}DmSc6ZJ1Zy zUB-4Wp8piK;HcgH{HxFt6f2GA!T4tMr;$b6FBZIy3LaKg977Oo5(Nbze?eZKI4U#7 zi(V>>l|t8D(YDW!>o=X!w_B_}Xj6)`z2U?bawm1KN5ozhrBFU4^K2``DT}SNvAMf% z9ZBv;WkJnmX0z%Ez|_jf1_(C3G&T`k7#kG7@NX4W61*_9*U^+gM#B(|N2tjs!(|bi z4p>lMkY9*!P#g@!(7-8=t;lzi&M4tmaXKoZEIKZ7kjGG;NCyl`z=y7`t3_3Bub)AaGNPLUu~ zs2`HIKJ5FOJDFGCOd%oBB-1{WN$ES#*FT~EQzoxvj!z0L4PQ1+zBl7wCz@*SGdRw1 zZ~5E;#&oQ9UmX7{6k6A)Pk`~87f+JPc%cqdI3@{CjglcdkWiF?kRdwI*N8zb^g7gg z#F_u)A)^tY)Z~dQbupTtH;^plK{di05|F8S7C*lxeE-}AT-XltMOP0!L&HR4FStHV zu&S^iR-{s3lCdByY=YZQW#xt-2zd#E0|_0O@IiZ`O96OYB>DnwODz~lUrrx^C=fAf zXh#(cK==rkc0jQOAXp-ppn@^7z>pW6Nan^tR3TAcoq zB;*M3iOZmb@<9!P3=qF8OW~*;H!K=%me644cCnEnIUGob3y&m-Ns^(al7-O5NV*_* zpPI~n4VP&C|9TdM;EE}2xdalEh=B+u&G#A%aCof>s}8NMlA@lhEJcbeal%=MtfD=L zYhMFBGa{Zi$f`1VwrET(VPFd#V6Yw(L6govJ}ZTTQC*b4iy^O^DIaEwR1Cf5G_{ha zByeOvNb2(tYL-7t*H&iMw2B96_SUQ15^u_2Qj-@5W~c3P*r-?m=s-xIub)sWugCCY zXa#0>Dnj*FfeER>VI|egiv%+!=JE8%G&YWX&!arl%$lJ^gKt^1EpuloTB1r*OSXpS zZFJ1jwyKJ))4D=)Y93!y)8om4b&wNgVekN0l+7giYxU};nS4^*x6&BYWibiwR16bH zZa)EnDf03`ub6L(D&&brijtFc)`yar!XrLcnESS2jU6UjIPH~>Hky!)j-yo2=5Th< z_a&Al%AGpUpx~X;o$ypi({Nc?s+jYwFcX|Lslaqr%g zq-m@TSu<$Q1Dc3ac)>6SeZ^Is`NAnQvZ{(=KD%spG3C@E6HemveFP1w}yQ-){(qlHWrdJ}53JJqlP zTg`$>q8(v^ri*n1Z{*cCzgjbF_Rxug71EZG%c`|w)>cC$rSYh!s4J}M;ysV{IXK4{ zOar7Hy?~Xe5eoJ zd}{r;a+#Rcu{*>g`|^YbTz`r`>}5-HI!~emd_KseJ&$O+b*~%9c&qAnkU6xqmZcni zD&R5Xdgd|4b7q)9^!)GB)wJMVTu9K!Q)+AgN#4;W(6f}~)gkb4&mXMncJAQO__|vu z{OLZe*hJX4?gp)V=^NL(h1)Wh+b{6J`R8-d-5(cSaV_8O8Xk)G{KE*I20wkxT+By1 zKa384`u^@Eesyagc&e8!x9+#A>CwrC`L<^u6$R3{>vUF3rO1=*;os@ZYGr1;?LhIm zqsUj6Mgt@^*2mhwc52Ch9Sni)gq#C7PytSjeVHyrI)@V!V@@% zaHU6eu`G9E&~V6<7}IY2?eA{Z{!k}l1@uetRwyHXzv2hHjUp5!TtQTCAmU3`;LiFX^`@0{W-Mtjos{{UKef+E(FhS?sLVKJF zuHIfo!-@GIE@Vsns2YkMqJGQ~kQ7q_{a$Q0K=i*2$o)T;ts)9}Nf38BAU@)oWl8ye z7UU|LLmuIE?kkG=K7=~+8tJ*2V0{~8xT!NX$M$$YRF+}wO+xGh>oq$13ELA9%3(b)bmt?F69Ez;*jVJ zc5v9x{!#9pqb+?1UuG7ZPBXeqpv_f5rY)76r>IVE!38fK=qSa&e-0U7ky6pkKN%t- z3m{s`>EIM~d1~502wyQ_aUztsJY73_3_t;u!0}$Ra3hQd{XD^`vsoOW=s;NPL6xju z>Y?zh+A6pi?8j;40yb2!ZbfJ&e!}X!KX8 z=S?Sl{BQ1h>HJ9O%oA)Izpk{;7u^br&X*4zg1};ilc!jRmLq*G4+Y-#F`yicrpYH# z)w5<1d>=7zi(M{PXRAstEfKko2bb=i;GwV+IG~Hr0Th@06-ZEQ zz>xf}XH+L{c;h3VE+dq8QCcMH047xd04e|>Od$&j0t03ud62yJbF9yoji}dQRr`3e$HCM=p;*4t77`#`dCfOM z!!&&tZ>0Y23OHi$)DFFJ7n#}@H!aFCk;{Y;(12trg2|bG0q`Ss+67ztU z@TsSd9|7fViF6PYYee!gBqAbtPJ+b(<`83*`e}52k_q%YbmCwsZ5n+5tdfYR?RuB+O{4I=uc+=m~~CEkSac=81pPqM@82 zrPD466+GEiUL8+HF@MpD$i5o64OTc}=aigk)EF;PKO4k4D_fQ?U!I7P*obuz?ezpv z%(}qFo6=^{M0Uwqgz@In&W6e|$$)LE0mOMEndnG7RrLd2sDANM79b1FJfe6h%zwDd zqmV*D6#Ec!Q)wdmVho&oT1<32jZkK(=rT2A8M5?(2(T_Q5Qg-H=#9C)tj1r}{zSUWR(LFJ3hx3gln4UlBEP@ii+p)teU;Gcen= z#=zAII&sRFNOna!J?_bQLcQ;q1bxHU^Ry+Nn$EgOjfw#OuCZvNsSgR*xn*^cv$==B z#YOI@ke}#%woOfX30&KNp-}hYcrdmmaR)DyGVG(0Z6bguY@n#`XGz5jxasBcqauH# zm8A?ltTK^CL0)@DAxNFVZv^`Sl=|78S{Jiz)Q&@X4S1!y-*?029?#D=s{M;DnJzzi zb~`?#zu1cDuI*xrA`=%N;qInDjp_t#aW#rcskeExQZ5uJ4X6LHcSF z!E*d!S$~dbwh>D67$HKVo1K}*l(oUCb89NRB=F}C>7RWgc(G~e>KA!omL)tnAYtBt zA=2FnnNkLB&C*2`3@=mgkH;y-)T#B?;&9%9;Ev%Mj zt)Bo3TDxwl!>I$lcbvMt=kPyNg0rRdO4`5hu4~tX=-Rj?9pi^rZ*b1wy5<^;z0}!{ zFjzM@qi#-l>T>5U6%Yev-7LYClnQr3R*!9W?Ke@>em^PW+E2@;e;hx2^64?%yoWNr zZO+x^=kdF=)qDH&V#-naWK4PHc&Yn23vKLZjD)AkA#S>}SnEW`6`G|)$?;iSkpB7X zwZzn0?L5$AHsFCPYFg~$ixKr{Tf@f2Dea7KAaDJxuCGwu7wbtA)9MLN-0QJGYSa3? zK(UQquWz#A;FI1gnlxQzdo!1Q0T z=iY1meblCvy^pkTa`WdEVris5o#$V!IA!2q{FiC93>CDm5x5=xM+R!0LIw$N@=^Ji z>zee9e_U6j!=Fae1HT=fQ{wS<@uq*&pNxFASxC=bN1R%PT*lM7@$D{d92fM&+y5M@ z{SabtDB3uxkE?iwlh*$Wh6;a|RE9v!SG={2s~T`w?e4gA-D=V~nDaF5k6yVf-MQP0 zh5MX#x@6ggL6%6IbN4T*reABvna_?|KvYJ6F4ddu@r3lf@Y26;tO7xfi!h3{cD?;&{l7W>e4=ST|b%A0REzAf?|=M0glzl%pVYe z#X5(yd6DSqA%fV+S|>e(AU;KarL1=~1~)SN7E7iJBuOHVRhr9> z;F66d8?a@l>G&$ql19P{&0OIGpU2REzr}nfuGg10$F?Hl%e&kWL&jGRB|=(Ir!U$q zA^>j37GOF6AG8Qs>-2`Tu_+F zAITlb4}W%c(-zQBk#i?pa@Stc_>cuTgk(XE(?LEa^zazX!6K;^!=>aJ`?;SQALJ&% z&go?}g`sXZI*3FF5Esk|E{R>q8v7V+936NsEP|}*D#7yas^%i)e)I1LF4T&oa!2?= zm7m;^Q>3{pfZllQMi&#`+6+28ExHsiv6dYYzJ;7GGVydoBp9-@p17qT?-Eq6>8 zARg@M#qAmxErqBJ9iX=*P*);lxse_cUNC#PUK4 zFNFjddq)LC=SNP(N;^fsLgkE1fI@=$zn>5IVsG zkSQawhZHML;}@8b%1M!-mlW|bqdJ?b3qI&2NhWs$8I z0QLH1zzswh+3k+#H;ck!kTO1Ucoy~>{e)RVM;^0B;5s|XG!i5%6dM`5O90OvMXd7k zLeF!{54wzn&QcHqxkgM9l}RjU+AdC%zRS;ES1xIww#64Dg;B>|APWO;fstOsdvVoCg8GRHBoiO;x8!~~ zU^Z(%pkOpxXamZ26Y{v%W`c1OVv|WOmh)iAvt`U~LR1upMx16dJOi`nlyu+t%sU}D zG4T@+{6tyS=ZF#HIa>G>8)B&9fc#)lh$N7iOM_Rvjp?g!vLta5Og_AwEI~u65XV^3 z{FmbIyq>0rJ-tCNB8?P{rQ+e%ly&qQF+(I)Ra1)wdNQ@<+1L4WFf15H&whw6Td*pe z7b#a)*rBix3@ZS~{x;j!*%Rsz`<{j$SQivmk!}5f3Rcmo(;ygI`O&)g)!s^Zox{Am z>?4{XCE;g<>Otv9RI{QnJo`ZyHY8-t8g3$~sg+m%Fcu&3QM)L#QB#r0z5D|P92)ob zHyA|hfI%D?MVg>#$fTXwS6^9bL0(3Tf@-2pl}szPj#WX3Q7Y|b|LvSg+9zC4iWvKv zxkzqVi~O{bkcy%#98U`@_k2`|!i2e{>;79(W*eg&F?EazRI9GK?X_2_>Rzgz*~Cz- zfsqcwb}@pWu|}cYLSuU)J#*L1!_N2^R1*aib`05SmI^?TiGqq2+!RfSDsaLMieVDh z7#YH^0Y#;=`8;9>Dtr_5g!L)KOnK+Dy|hY#Y!rZ_Q)Xs2R4~D)ALJ;B1ld$2GN7iB4rWmD9zy*Z(<2O#wYxv_< zEskNS^dh!)1dfF$*e`LHu;5uaCqbDuHX^V<~H^M{bDv#0T^^SjdVGvAp#Ia8m9gtQMH1AA#350^^k zE_>FVYixG#;Vmkx5I4wmP3+qawOh=c$r;l|1UN%Q@XZm!8|JtPUZd&Yq;>qUBLN= zg2DH=z>??E?psU0BrQC;{)#14ufzOr^|{I8#cRvdv$gJrhGxh4yY3%0Kc{Vr{8hA) z+#VVA0-s$SoddHRL8-X+uP2?}9UudP{b$zwfz%Ao?$(M*(jI3#YaJ^>JY@XAFctMW zG$Lg0VVnV!Yhq$qD-AgaReAz~Cy6P^Ac}g13m+Cf{Cs$_vXzsCzp@3tOpO|KpFh0a$$cIbZGH}+eqQ}eB6j)rG52NZ-bUmN zwb1XvoOa`;(hKp|!8wI$zY998l7qD_dRJR()nCP?7)$IAS(o?g_H32M^8#m`d|emC zJTEb&MNgZy(-LCH z?P}$dx;YbP{CjZ6xqq#^gclQ|>38sdA|;N|SCw-#0&a#5@biyhs=J zxbcxz6(;joUI@5b2-#9LOqfs;S^*o>pXHiFumocHP>Uik>zJhed^)i7Ks%=*s?W(S zT5p6c47J=!?sqMy@*w+kK{@3 zEC@U(neHx}AhpFBjy6MA6o+J8ttGN8F@!=cXH`Yyk|mfBpRdft=OHfjwacX2M3WM|~}C^OT;OPkW0Dz$A1oA||+!_mo+!{V=N z?Y(#PZMuT>e9v2)!^hxPzNBcbo)}9GhrjN7z4v-vn^y)L;}xu;cUK*`*3TljEU{6L1<&tndpbQ~2G-sPonE#*rjSx2eFc%Re4 z$+Wo9@H23_Zn_%jz4fb9hOaJQRHRb1%y$ z)$fSH1cm)5XPv6iF=nGI3gys=Q4#4zfKm*Ij7_|H`p{Nkf5?+2(Gn5#7i{z4- zA3=D0$msY564*2aTv9}Mk~+NWZxHZVO@TMX<&RJVq$zpY${g8lvUvQ+qNBcn%r19A@i8(IUZR66dTWmt4$*{u;${azx%;U_EBByWNv z`xVlX%5d_{ZCf)x$V-c@_It#>)!0c5qB6|GYm~u46yk)!c>b^^)L@vOJ`(kZYpNl8 zXxdSNs?bMi4RI6keSp)ug!fh}T5Ja?z^p_n;R28BM#rBi`ccWC7P+BG&c;odKIKiP z)^Uk~2mGo-J+hWlZl+@KvD~+?o+69N1XPh3? zS>{eNWfPLD% ztYZ-ooYm%1zAYDJO^I`FR&J+vStpt3X=g}}k2%}dt4A^-@C+4)&xV?$RogUM`uRI! zK3-%k6W48b?!A)PU=C$0D-?gd!AdH3FHiCpPC9K~{nF`mpe4zvsp)pcf8m zA(pAEo6SfRlx04uAVcQKjuk{RqKAL~wG&)l`R`S8jDgp%Up3-)=J#iW%L`Rb0!)J# zy#5@kNM^A_Q$(#|rk_S<)e_1o0S~JrS}TLXnAreDm<6f7m!?W-4)1ad(HufR_TkEG z`7u@_EX={sh*cD+fy%hkNYC`ciNpFh{}Zimm&s>)3LdWqm{7j>pa{48f?=MmGjr)2(<4wcbEY9Oj_tR``*E1INcQ^l6O50MO@z1U2 zYu%TqHzjE}tpc}*=B9E!*F58;ue#?in`s*kC%x6>;*T4}=YjJ#1z38<#II)?g`1BX zlhi(|^}@fdDw>5&{~j>D^WRod?RqjDS{jth<$pdEj}16`@I6b*_4#AwzK3n7kOuFA z>P@XZ-?t0Yo^2jn+goS+dMIgjonDC}&X9tt1=c)V37r4i!4i1)H=QoZvty^`uKjVx z_U-HQYl}N!;k($}^5b5ilTkc>wfol4=bA2RgG2mz zCClw~%8jtO7Gq=SY(wh9Q~h`}lojYxSXB!Ia}0K*6lR0x0lcl9Lce0x7 zcV|EA=%n&68nvzp&H2-c%GnU1shLPlxkjfo$d3b_Ed3S0VYibo(f&2UhFm$xzx9og zFzNVSU5Nd(>ZI6aj;~ZzNyc0I=1ftMNegEoQdxbbCfhWARo|bydY;F`5OrZPsX88@ zjj_~!yAlRtZxI+42Sa6@E$2IM96iDba2B=u-A`Jo;W zNEdmkw4KC2nS2HpB9gyQ`Y$r;cLtmLNV#|Zi+2Xo58v+m({!fv*ehAX!-Wqd6XMpri z!kEu}GB`RL!9J`q`03z`S=2D2S#yEMB@N!dTxzONt@-qlLki%3Yiux)vL|IQskb0i+xqhy{%KJw zV5)oNEtIw=y3gW4uNkBduqi-MSE$(~($uCQj%X{0N_sqG>CTSb#IG-;^{{$qUQ8T?V(_OLVmt)r%of)Gsh;FWf=*= zdYx}`$(v*JFaE5w7OFBl&9AwI&-4Fk0Z5=L!^}|RBWHm0P2qUKdqRR}C#%|J5Ipkh z!id!{cym_hPp7Rdf}H%}SOv6fs0>I^H2|^DRv9Rx*Ug~*L6?;63Q2BoNE{UvT3;ih zbUk6@X%8widroS4A_@Y76Cg9_x!`n%1~bH%WNr0Oh&)kYe1s??0TXki1s<&8D#le>XMt!9HtEBRi!44g-@M|8Ig)a%S>~aOY zvB3u?gV3|Sl37V8q&rWtPrkfet+Qc}Jpo9WR5*eOf@vu9NF|YRZu3H>c946^Kp=@I zDGM32-H5j?eZC)aZ8BRS^n4@J4djy+aS;P2BLtZB#o4n$Wa%?vr3qgRc2f`t@`@!8 zKMt4oV6ygLdSI*O9jo!k8`p6CsM$zF0W(Kk)}*Ae%T(AwgADCKja@Ju4Uj}Xl81n? z?#)NAMSmWXh52WBVUdPQwFeMW;AAFyd%$UCjrZ~fb4v(SzXm~NJZgX)E9`?{J8`@0 zh;!bp^%{YGs0{_81y&smzCl!J`T@zBPJ91{EcYiln$R=VQ<7){bMBu5x7h`YtDjkEv(OcfEv0gDTH7SA7^7x(2Q8EGlRZ1*Ci$ zek9&f`)gy=XO{jkqe_@H*=!~0H!;rEYk0I*S=;hz)XN zUn~Nuezb0M7h|dz5kCbYrY`g>kXdFz`yK_ej4W0ap&Q8`%QP`TyB`EZgSTb~`~4T} zOL+3p#4dv1h{T2EIjN;+La)$SKv#s0D2zI6FkotnHhcz$qsc(l9A zbPSPj7eo=?>5BQ3lU;B;_euP$CO2@V|K;=nH=wWeTax}h68D;lIaIcqS?Lx83^BlcW=AgE31Jg~PklFZS0vdf9&S zgt1iL$5WC<6YZEmB`47q({IqfJbBa1l6ckT!eA(1^!LV*?$>(+@SWl5%_gi@%kudWV9wQ|1NfDZnj+|y}&Vc zKu+vzgjnwsgIS2u@1b29_U?J)G8?JYdg*ij<8JA(?Z1ggw17LlT=5Oh73J2B z&)h(Z=daFd8LB$ZFW;OUJwdB%^IlbYraVqvXYO~$DutPck4@)CADzw*Q>IW)&l0;t zEMZ-;ZjN#P|F>q<5bZh822%x+;X(0DwEIa+MMS!{Dg*-ZK9ne)tdbXdYC`_Qf`a^i z(e;&4QM~cLONYdg5`xRpCEX|sER8e*(%m5`ASuGqAli+-`7M0;->(bQ*96wzD;3QlKnY$4;5Fm@bhs&Txk1ivFXZfWsW<-`J` zLuBfGyCukSj}eBhH^i52_>{A~fJ$YD8;*T*N~@Zosa|?MA9w6@hTkwTv()++HXN=* zkD?co74PA3WEXI?S-A^JFnL&^1~~yqKRJ#&oPLryQ?ZL9T3j=3s?0q`Em^h*$POi# z%Kn?J`X`a;D{f>hTUl-62flK(-tK2vW+4J5eHfHO%y%OrsC5(YlH28?STE(Gv`H;j**+`wtohB zy5m<3oq5{giBlUesz{$2t^ zEh$7bfg*AHt=Qsm)$;@xAA}q>MZdFe3(&EKV)LqfmR3sERYHcEPTS-ocrONN@$FvS zW2yj(dcn?hy_7uJ&HO+)Qe`v{ZfL%$ayM zF|yvg&xBAU^=IUK5oko(;dAk~4#n&%TG=6*Cd-47&75zo^9aWAe&v(zF+oFt(u{C^ zIk0sUW@2rCyj!K}!J>&gssX~nT7I`z45XzZQeT6^%Nw0Qf=j_HPvKZ`+(=QC%cf5r zAB8BQ;`Au+-)-P(FyWf28#Y)Etz4WYPj;Y0gQGJVtmLxIQc1(*0Map3WSrjs-UOGm z19?z=3OU7Os6jGTHbAZzw1|rx!bX(>ci(gagz6K0Eyke{pY!XWkOR?3GdWyqTVEi&p0-F*YC4b?{$?ha@dPz z&pyrw3+R@6k761&GSQ<0&6R^!vFJirK!o}JE)nwYETeaYtW- zvA>q1T%OtXJO1K4Gz9iv+RPg3WcJf-*m&!1o_n#v&~l6A@b3v0$T%xcCtDxnzMXe>{}z=%we(h`VOmh5 z3`-{xS3BA6)+%&6J)PSvVp2d%UM-!HFR?+nzBH~ZQD^LkUoUn0{{H^#?5yuI&V-of z-m1sM>(kD2B6`VIRLDazg%}QiA?)u*ewtWR3Yir@9z)|)C@d}@G386E22u&kQImY{z4@qf* ztthp)+$xnNj#i?N8UcAFEM#=1N+N&hkQ&>x``(7TUWcQEh|FWdiTCPH|I}*&jvcRD zJv(NNi7#_M=6SRa3ebD@O}x2Rd)nsPxQ=`Jw83d|X&m&BbagX;;r}tE=V4Ze$8R^y zyM|B9WknSLusct8{d#$CjS(!t@t}I}WaPKm^K_`U@h4<-<7}#8<6)^V?Zwhk&f9<| z3GVv~_4VDgiMFS{woem-<1*H-Td#liQ)>ZnePY5Yb zhVxg5q^39);m;qZ?|0vLj(a@j^-XWSZE|$UPG0B^ymKM$ zytNJT4e;O9aZw9y=?qwWz5Z|hS5Q#@=b! z(e$d(vTpka?(L<$T9ZNqE(g7N>?Sr+VA-uI8HPTc)s%j@{1>erlHIv|+jq*HcfIJa zvGrlYG+?1W>TZp-W5xIZYq!l&?{j=0JaFjBn9-y-VUx+BhCo?d7HBobATBm*uTHRb$lL)1SG2G`sLi-|hdsU$?ov zea@o8A_mreqv4+1?Cr^GG?+@E^Ho<>JifHCH?eJW8V7A`%!N|U19VbXi=moF;ska+ z&&gOaA(J%fo7 zC?peb&e9>z;`g+bKQDJs*W(CcGdAd8N;gBO-oDupUdAP4bBCig=3-HD#J*TO>FhR; z3^X~172LsO?k#|Rm^2-rG#%?=U#xANT?Ri5#h1h_e-U=miK_da8fJOa-L4`(lHgwS zRaAj1K}Fdrc}iRCE6!LXsp=dvKbp-uQG62+PP7-CKonyQ3yY0P%*(weE?Ixi^_P2K)x!w!X-p( z8E1;qD%1p|J(kShr@9i)wxdj~v0gnv?!jD>UhKO2qK(&mjEIy?VWc;830&@;k1iI` zXl?Th*&OQ{T}{{%`hpE(Eb-XxndG8&CuxEEm(_5sZS4GS59w)}JS zCNx`-C6jZp|H~fyuTuiM6~368ni0?zMn9Y&Mx4&DJ4C;TAqJ_q9MFRhSh2t2u=~JS z9s?^!ppy<;$O5>2hjFiBkn3oqk)*0rIwFEmeX%>CO2~SH+Qx%$-Kw1Mcj}uEGiz7!T~nTql5R#v2|KUo#*SmgK#Mqc)j zW3S({Nas0+mzo;i`9rzhB0j?i`~_f$fZ*5Jb|dX|Cjc!tU6cci1}x7IjLg$dql8D< z#pFA*$~;%bD6himoT3tZZ}&AAmnmEU1jW_N1bHzgv8ZM8mRYWa4MQ`5hb+ReNV|9{ zLs{Qhpaq%iOc?O!IJq?io3y-~)Y+?1vdXi=z$Ve!S`>_F1;MBWMG0%lBrH!4SFQpI z?O>!9jk1K&7RhWj=BM=U@QzZZ{NQU{E?XEH5NQB(3xm;4C$e0V`#Z-nF9UnY9XXT< z6R*!5UW7*qN8(BsMY7>DSO5vwqwwMH4|JXd;0@SklzNthQQ*N8VWe1XAE)-IC4VjBiX7=?`(*&d4P*Z_)LN(mI(~;-lrf5#S7>@c zLRR`ws@aDy(6Oeo=oX?lo?2DeJ8t4KKj{5O(3{<=ZcrWgLci4ueOAn@CnFqYZ3beZxNIuwV|d|$Nc zJ`7ngZZ0wFXO8p zD22h|u@NUHXU(T=&bx=-ijTiprEU&;9uF7RY}OzDrTf!;I&V0cdHr}@cJ*nSc;i^_ zWx(#s&V>++g>Uwc2mN}FLr>R>E|(=U<5uxJ>!)%tF8UcOTjI3yE!a3`1H`5mNkNZg zFQ1as-|Y7U{nMe9Pm~i2r)?WnYl^ z_5PFpxb;(@-TB%1(+!=Y`X{HRyU&Ahqn5euo?E}G{75E*15ToU73LvaH@AlBwC&=? z8!2~6MJy$mg>R208}inJ_G@@nV+K*G$$^#QoL{+F7J(-NhT~a?fJiNooaU~Si=k7l zYU4AJ?Z06!S7(N@@s2yhJv?lUsbBHDCALpxxNL$qRMY(bD0zW3a3#Eb>B0xY0ADRt5rAI;L zwiFhjl3)*)ozt-c-;X(BO(BH*EG|A~C}`)}m9AjNPK37ZSo}tvB#GxaDMJx{>Nj5N z;u2d+Y-lVc{&YL(imM`T@-G7$x3Ej{j9{+!(hRRxJTEAH0A@2c0st~nP_Y$u?GZ}) zC9N#xhR=0CAR==X{srJy7*5VL^{wpvX2LHpwS|qZ0-XJ`qL8!#{`e&0UA1?tHlN#2 zh@U`fMg8*N)X^zXZ`oG_S#4US842Iz7@SGjCO1w-Qsp7NP05}gFv57P^DRA2O4?{&?AU<8F?zv!lbqm7y`ylg~Z%GJh^|6>GnOKnVV&W1COJ~u@$TG-~<*T_Ggpmst+;IsC$@_C^ z08u>?xL%>K&5tj_w|HNKALrQkm#(iz7AC5(h?mvjy$Fk;PD*`EmSK|kDsl)0qauT% z;pOpqkCXX=ZTX<(1ZK0qfpi1`2`mvRu81M0p|w&w3VTT=I<>yT{m%Z~(gS~~`!4R_ zc=$%M4YodZ3Se5Xk{L4vd-kgbCNCUYLzX;L$aJ`d5Q2ayhC$Im*uMZ&sf7TGk6-~H z>R`5s#7#$D;{+o}h2&EZksGkD-9vy#Gj7AI2!MT_%?le|A7MCpR4COlCXG%gk_8Fk z%M=mYE@-5@{!QWYn+mru)XZ^40rpk(J3h9v@+Q&PEisV7BHD~485aaDI+uar%CN!E zKmbg|XH7%UqBuT;d@yc4bT4MP{wrFsr#K0yB*}pUM+WBe>idpVpV;4Cot;lX2 zpW}0s}>*2nw%tCg(wKjU&$)?)=4~n2t5Ofxo^}8RmDXHE=mBaxK;vhXfB27;c1<6)~uGt8`YA|fZh`K}+j~?Z!?ZP>x2h^9M z*+9!Vl@zW7(iSmzCX2d13iVy0yuSz(M|vu|A`$$~Do|f{<=bD_hbCgc5>I|`DWZYBO-phve4T9*+ zsc-6T%32_r{>_x-w1n_txIw=qt)cCtmnHz$%)oV3z9`^Qyet=d+PyGo;6U6*M8NP@ zlTrx7S-i~L7#oUK)X4|z(@C0ETnvNdt+f$xUapl}c{>HM6sg;-Y^Y&Wwx?H8ww+EN zvY}P(U&nUvjl12xeW!)HR)epzof^o%H2T_cZ~|%f@l}E`jb@~#ldj*=g?j8tr{Ih*GNej#jPU7g2(k4 z%{pFjo2U}tYFd!VtO+KSl+oJ5!xGw`65gwi!sUd7hg(g+Ao9j*QSw;?;^X*8mH6G` zvBrO<1Y&wgyHPzmt46zpI#DY-yisz-uy1; zxv7|YI(vF0d2&~AKGF3qOu0h+-v6OBI)47b{#7!L6zFNlpZLvDUkk_e2gChd8q@ot zb=pU}n+++q@k@%`fcpTPr+-4D6Lt+Z<8^)wTt3Lwb4!4TB8Zicj6T z@2X4<7rSf%Wa%G}g?e<|&NNXAPut!t_p_{5F8Cc@oE02@e{E=X-du40hb?r}+->U( znBG+-`3vXlJ3^nGFZiRl_Gey4*SV?AAAU7bT)4HCN@PjheN1mKwLLk=es$bkDdAsp zt!i7f%>K&ue^TsfaX!SIite@d%Du-CN=E0|j7KtB zZ-inXo(7K9lZLI7F1R;t{#59wvG`JQ*O4z zu=7&QMCsf%b0%wSDZN{rp^cT{=Gl)-STHD2k7D-h_3~m8rpx!=K|&r5 z?onW~OryNXksn0jVyF)I!eWlHR;S0mp5f`$WOf|Ja?mFJ`UVX?*Mbb#vBvk!jLA#+ z(BmsGE(8cfT4^)sfaMwtE4GCV9#DunG;?etJk?%DGg!DE9{>uK4+hXk!^@kSaQocE z6n`-c@8a9@do`Wup6jg$o=`qFbLAtE&K#%bGcLN6=Pi&iv?MuxR~v=CFIT>Zr`o`{ z_h=xkZ4;}zOk}-JG}nAY>Ft`pO9i$&47$t9q!ZP>num^$DMGy~-ZLP)-<)|yH;H5# zDBw+jNhCY0o+u>Ja5Z%>3qw)F9Ds2V^R{h*f49?8VGkflil%5Rvh_hABg}6z1Q&qy z!UM%8qxyB;jMk5lkpTorvsmVv!f_cgrL(xgac4<Oc*WLBbhJhE$x`3E`5+M*arZuU8kU5hBFiaEXkeKjCj)H=s z<4vz3!SD9w;S*Fk&2P1{@@S#ledUIJ!5%4oiOX?5vO2mF7?o@S6=}sa05G{3=gp(W z=m#9;NJ7PMW2fGgfWN-?pjb490>ZPwq)dN4M-DTe^C6ah5Mr~|GLIJ-0+3vHk$biN z-_8!H7@8~<$#ofV!D#3t#qzSVZY7|p6Ol$k#yRggM~6i6viFWMBoK04#Sj4hF8|J| z{}x+icu^?-sE5yBaUoW%V;E*I^3|w&-mb5~;)BV;TijGTrg9lo)!#29CI)O(hW=?1D8d?E38hi7%2YnTSC0 zHOxFcBvnW0OB{_;#s&73+ZK&+!v{(49f)bHD-u@s=6wvCm~>PBF9zL`mqEk%HgM6BNNIaG$AOkJ?hzZ{l* zOXrw`hNUIzyp_~n-cKa6c0d5fU`{C=c2TldmX(Ca{Ydi_X!+j<%_A-w;@r?26F3uSxl9Tl;=X8#uwP5e(4&^%U zh9!Du!1)idome|X)k1WZ%LU8%5n5@sbC5oc`YQY9M~=(!E&gc7==0NqGwJy& zaKhIZK*j#yqBS9Q<2D`P87#wQ%_UEN&J5#?`dunO<(Ed~q)hZZHGH&RQl{SDw=Z(b zW~hJhoPG>cq7*9)FDos0388ra%WI$kWtbgw98)w2`b)}oc6U-KPu!;DcGrIqsZ@;W z_Qb=yj8C0hU$!0m(KYS*v~?X>bwNmoCVT&#Cvbmg-PH%?+PZ}$w#2rqtWuTtwuf$7 zRN2tzxwmPKXRKCLgFJ3n-S=hy(1|}(u(d8$7Z0eVM-&b+Xp*M&B*Wknd#?K#si{qz zCEs=RuzptHkxE3bFYak(?qwb5#hgWZEp3`5pIMSSi~8QqASc607{C+bHo}YRtLy*$ zmNR2m88B(xxN53iy%eqWG;^+P4PIwR3XPNR&pAF$qNO!7G(;x*n*R1p+->t{^JzOb zJUnEr7W2E%>+$elmD_FeU4(f9t=Dhf|ofb+F z3FaWRRP6$W1Va;mvShUG>3ZFJ6m$8RrbhZk21X{vnT9XOA68T1_+@H((V3Ld463Sh z>W4uPoexdwI0|T_+A3uJSNw8RpwbrB_Ov`xgc1=D2Q~(du0*){@BUfFUe)XN{A(NJUh7)C??T*q zTT(g$`X)=C{&aA@({uN$6hhW@pOV#cPfNQtDsn&dA9%6S@O_~Y`ZGFB`04H;Nh;`k z{ORVW)q=)zK(Bx2zpaQ%64NY0{-8dJH5F*Ok;h|(tlg^{_tx`(>gATRUYe)FjhC(G zUrt0!{LVy7n@g)Yu3pz)Jv=Pu2UWZu>+zFoo$0DR2pkJIk=vw0$wzlYYOP9y>^^<3%zd_2!?cMP;90Y;FvV^Da)tRr<>njPKb&Lq~|BWqxp&<@0R(x!iyI6GB(lm;1-({qZ&H*X=2&7qY!Y;2KO7=@zwfh-`U6XPC|;M$8~p4H#RBvc-HGZ{x-y|xc5XD>KP4=2mPiV{O>N^J^VjBX&na0|0mER zq5%6yIqtP=Zc84M>I3Tdxu-B7qD8 zq8Y0m=6`YY-o=~xS~oP2wM6je?iCftvqgR1Ngp2L#~$m*cEbW>FF%g4X0F1&W-sQ; zmjYp-q)-774BU_c7VKCyHhoF0!)MM(Oy2f-lnKMxunz7>ZWHv$Ku!K&a0a0!S`znM zHvzD{_!ZC4Jc2GS)B)X%OAV7udzKl*MAd)K3BVnJ5hyN>N4ikUISj~yoLRAOpl`|Q zo&|@pxCY$C@6=aVkKrGEZ zD>RWqQyqv*{_i>MNj6e$wQ|N}onu}sJ~%eTvjk-p#R|eIEjpks9}`5E{J66+G8pNG z$ZX-?7Gvu9S3Qz3Qs{qT)MGQWF#jg!{zksPIB1!VY1pWF_=}VLCsn(U09hQI;viCG zTTA@}<2g?eZ-4bX^c1$>e0bHD&SwZkW(&ZV50-eGS``z<_5d(H38R<=iv`r_RDpa7 zsC||ur^&#NPO>v@yY4?o-LU;k3|f|@ubw%~BpiY!w*4W|b~loW@7&--;50o11ho$h zV_{CRQ$bLNK+=8leA9eweZs>A78P`48Q_Zq4}9+%=GtyLl0vJTe+y5C0 zwak*8|HGMtQQpZO$bf)@n~P^2m=KE3ALKL%*&7!zpOs9e*H1z%W2E~O#dH8l zW;hI_{1{-;I?LT`kGLf?cvLtrG>n{#tRt(YiU3uQlZ#%e%Aoc`Hijb;R~7((@s%rb zq&Adf6wnBiT?s^A@W1s+EsCiPp0~#YJksR`cT+(AF+jbE98KnIV(7PyKL4gNx z%mB+Y4`k(xo=J|LSF#aymmikc%MkRP2#*$?=jK@IXhtUe6`gGo)RYB8QtsG5H06JD zd9sCw&IB@GSpz_35mT96E4Ll9_-N3?l8bsW0saP`Od1Fw&5r;k+#&XqVYAnD?WCdK z_eH_=+4!H`b(FBkC-pgHeKjaFCiCNr3;f3{%HGHiGoUAua=e$vt@B8@#b*L*)ON%G zK=MFl=xByC77My2&K^JmQ$~eE)?rQe3yd&M^+C_jk@+GOGwhuQfFwp$g-w0*IYZHu z%!*NHmHHDarjw;JIzkzjYR-X#xsoJ?0F6WoLeWh0dWzs3jHay-(%rV(0yt=@0Av2z@)>#YZu2XHmk!ITPXUuxV=7*7^3Su&Is*X|5RQ2Nr6}+Gc((3o;=RqIF=TE8tbI`=xnZ=iDC&LmN3TZI`#RG`G@Qi-Ce{|S z$S43IU+#0pdCwl* zOr~4rzppQY_ITd>4NTpz?fK%=RlK=e^xTRL8z^4{<0ay+JhWt07!+=<7Nb`u^74=I z%4ccMf5oBjPnjq&5f3*5<)LDpK3bpBHkcG zud=lt8P6B^v>Odk^UlMp?aQaJ-7CQRp0jh0yUk#L*}j@yrE4RAu$Ofs2sM3pm$-~M z3dlu2`?ua>+_A7W^W`xz@AcnysjT-;Xg@n%nslDWR@f4Gv^SgFM3Pu;e+)9eh~+FDrY{NOU%Eyp7gyN7Af2^}aM@Lz zIuG*LvhIlGwp^0UA1qZm%DSmT9IRHb*Klf8>b1IA{%5lGWtR z)PDCvJyp`WDnszWdD$s$I1O*OBu6p`FLFP-I~0Tv_UZ!Ta{!C?7we)qWHc#+Fnn!i z1f{@CTO~51l5C5}r*x+|)M~nj)%kFTsf;Z>X04ooM z<_zmgQ)p5oYaK)uiy`bBH=RPj5U_)7Wy@EE273ivv`B!(`Me=17KHzi0|rZR6|oNF zw=87PEL%hyyK>#OnCq3?8!onM@R2>V6^an#cO22@t?q?W)yj>J(I{inA_e39qB!dJ z4`M|WGgR`WnOTJU9i*cM)5UXzd<%7 z&J0g{K@uWfm;zK18m(Wo&0S)UCU*`+0yH(qV;nV@p(%>EaZ3{8oj4lM6e_0on3*i( zGD!4KN2rF9j9KkNKmvMn%#z}gzKu>ZmLQpT`#gRW8$OH*f?>x*084CRAczU!_5yI!;t!YR9m-x{G_4ynE&+(g z`|AZ5q|D(h^g5Bz9U2qH5$4?+45J*K^rps#b4Or%Zw4dBZLNQugL#y(D5jK*7rYqx z2B@U5@bIR@+{ZBSX|j~)4rwfAff^_$6q=kO{S=xQe_=h0VLfb zCtogEtZ<6cNV8U>8G!#q^#G zTJGJ8u)z8P#}h>F4eM?`wrR(j=9X8CLsZRr_a8Ue7Ke}{%9rl6VK~hX{0MY;0H?XM z20Wi;s{RflT^JgSeaO>Z(_%7dR=L(CUorc#X=0H+(kr?7!Pd!^@@#NMEjj+X~aU8>efp+=wVL`W8JHX<~oIF@UM z4pk-&oCF3fiIs$7PJo2v(S0_CfDgCnu^lDfS185X=UIEfbb|I~IWtHzNty`0H_NV{K%xpf(l}$f!jm zuS2Hh3}mO_(d;Js^XM+Uk@#-!{lUoUnU=7~PZJ9HEtK=*_(*jCrI%sd8n)t3q#|i7 zJM_~+VSA{9xTQsI*8j92Mxe*{V_rkzb>Q@(M zROiO2o?N2so2%}zv*Xw#R`qOA_qkuOg@YDr8ne?k-)!5?a~H{kyo}WcSVh!N2wLR6 zi^{or&cig|6=B0o*zwp@e!?Q_;M;w&I&F#b1h3zTa%$ zI8<}^`OcqblZazQg-UA%>)^&H#|oRGf%zrUsNZ)B5#Z3D`+LDU4rc8qZB6dTd|n3) z2eudAmCNOPzZEuEIx3c;fS)1ct#AnGa(RUzTAmx4{UWMXV$;mg% zQv$goMF6VMa0bCR=82J}lt(egiR+ezXm)Yq+y9h4|8 zohvFhT)ji@>MU*Jwk@saaQeT=W&OhA>gmKaR}J>!oeL-|abOvh#QSVP-YGk9vJ0@E?sQVe%6tHa@nD@_Yz=?V3llrj`x{P{m%X z^xS2t-`~wD1?A*_^Lgw|e7bln6T0ttSf6fi<#TciSRN$5;P^DLvOxcFV?UM}U2=zA z;py>pp$j2E@_4vwp~vrLtcjwd82@?TsIF-nR{=qd|J?Kp&l~OHsr^&|xt{B9u^YZ~ zv&m2Yd1`-u@lPmNA=dWv6S9nQftYftP7Np-wEc-%e4J!|Ch52D+ja0yknQx-!X8eb z6+T=+C}Jo*yz4+*B&hkCW@P48f?}2}0l`j$`~D5X5?fL+DR+Kv zc6|8XpDqjT{MYgcxTKn32Pj1{Y-e~57mTn+L#iU920YR~NWP__(;|S$pPv-smw}-E zE_x+6(oDFxgo+Sn2!;#*ckvB`aaq{m{8k}!@z%3LK_?ajr(up#)QOZIg78lb%qvS^ zRUR=BphAWq^6u%u;0POY92tRVSsy&$k8e(w8Xn(Pgp_jq8ulIdJsl4}Vlm1NjrBFF z2u0g-HhiX~F`uwY^@LzxYvD(P0-{0@bZr^@cp=9|ldUvNs2C0ml@cZDU>LgyHfgU# zxP90^X|+7%QE0k%TyL12Ju5WKj#HDO3LlBf2ZyR&Ft@F1g3IbTDnxa04glHZIDdlG zQgoG4&=ga2P%7WS6KjwzKW$ezh8xOM1ZR@b@Uh76m^N#+QH_X~BV6tiv3v{RkcUDh+#mCO{4gEH zqMSg*OvA9;e3@{I-jrWqXHO72AkP$9@+w?wcN&Bl3YkRAax^J&YYl1)+C3PDDv)rs z4K4@O%S+8MfS_7$osF}by{sNg-eY(0#ag0i9=cEsCt3>Yurf}$7G`W!;l==(cT5a&DDLQ2dU}F0v%%=w7$k&XZ106%ya7>0gyalr zMYp9%Can&RDdj4qN+&wzN+-%D+NVnI%z1#EaA`C+2jq*BlW?f_a|EOHyTJspF##@qHg~RPZ1`-?4k&a|W_j97Kh%6PiPS|c>o{FB>u_r# zUm{^gCpKpDDZI{geWwvFOe zE6e?F!X09ht8@s#nliXk{L5nyGe$BDQR-nnL!WGM7e^U69XMYGO<@>_&jFu~T!T-B zTS#Z7u(tCRCvgXegb5xcU-8+V_%b_m%VLk7hENqoQ@E^xM}wj0lvjuZI{V}Cg1RKf*BNL^qm6=`4n+UY4QBy zmo8t($&eS0hbrPOLsz(=Uw{m-V*^^*YviI>ED2NyN}HJ779DBGhSQCmzdDOFE&ReaN->T-1!yK@#wn z@t16nlviTl8XM1tTG1x{lk8bPPk+~FlRxJk=N|q?IdsLmGa1?jKc5BJtIN;#1nr1N zJp^7Y&6qv@*f_Nh8b{FoowN|qzyyrZ$c;OV7x6A1}*Ru!MSsL7HcWPN1d}jGhtAMST)$g(mn8n?ic{D{NVm2Ax^3!q15$ zf52%Q6r0&&1cr4{2+r?dVDW+3;P}!I#ZI8KEO2Rc#ex1LSffxHN~&Sm^5%7;v@?We zI=oT7Od6d<;bS8k?JNu^D6i`gBb-w~GG_70VQjJ*?;@$6PuY<~El>jc4C!P~r5Gn# zAT#_tJJgPg4-gs5J%L6(i%Sne=k#u9&f2bT(poM$AMUrIq&_EWF|owtrDt%)Hrp3$ zMzyQ#Uo&SG&(#wwkGej8qp8Au8-@#oVLJW%Vosg9gW<3QEl;JlYBi8af1k`2qKIiv z;|8tm;wvziEo%^s*55-fH*m$$orDMo;Sa%*!!WFI>HDNNqZa|`VH@dbG<2b|p!9nA z$cZ}Z#z{O`Pg0lU$^6u3;EYTjpDkHW=MuJNL6w%y=n94v-IxJ7>b!=-rE!(TR?rsy zvTH`Y78uj4bi!c@!e=grt$@aKi?B{06`aehN0W;@PsHW>x?B(%pt4yxjec?~TFX`v zO=^HN<0iH<^iz&W!0-&-|7X}Eip*z#kk^a-Lc^P7&XlR@MMX9Y`#IWtkhqHDWYoYQ zU~e;)v#f34Wpu)sm5xHk5Y8tGCZXZqO zMq>t_8YNom8eICz_2~Wc^Q{^2@2cbyn;4cjQ^n)65ES6{LNlU4gO>z9w|Zv*dS}B- z%JMJnd@St?&uC@&C*7Scll6*E2JK*l(_S&N(y&mfADqvCB#eptvO8^TM!MG~DHj$0 zo!D0Y8?LdN9LsIafFF#e0ZY-(!5BOqr_Po&G?PDN8#U6rh7VPg@9D|)r0Ev(JWJc% zYZ#&;!GL_eMDas0qB00gM@Kjby1ALwDeoxgJbhP(vRkh$aQm*yX>xSucFCwGopw>? zjnvRC&XSQ7?Z42lffpwj8w6Ql48{)5f3Hv`M-z$te2xJ# zwog>6Vb1Up7tGs~Pfk5UK>|kq7#>qM)~e^$B8JP zv#CldYLSTgqvTqnXIu3ST%eslY7ixHHjQWdid<3BN=`p{IYB`7Wwb)x&pzqf>CY2( z^(pl!^eJ?7^~rT8({~emy6PGwQYI%^`&|hokVFcXeq4k*%4SoeD$n(9`D>V zTkAb__iqCZu8#U1=r2`{^hEb&jPkGpX#Uw%4}N}g<*%QjpPFf#dABDj9v2f*AW!&C z1W34}DPvu+K8d8_4kIK2g!QNX&|T1A@6P2i!g%Idr2vzH5+rn8qpeK zqUdtv3yBKf+v&oqju1|tF^NJNxukVy#mW_x;SHZ7?V(E+a_D^D7en;tO$VPFe6m_4 z9AFYugf7=K5Bw6i2*eP?_*Cd&rWntpHawa0YV_6icq3 z6!+rp?$+W~+}+*XT8g_CcXxN#{NDfWo_%+6Cz(USoaDpg+}y|P&S&}ZJ-xWsh@!dN zDAW0F=b5AXv0snEJUs+U%0%YUk8j~s=jg&mc~mkZ2X5VUV*1AlqUA|?MxXVn*R#{p z^>tFTbuzTID)#oS%C5x6*YI&hQzybZD$3prYHB(fI@&xpGJ-`c5{YD5`i~PBcuLEGWwTK|V*h=-8B$I3<=j zv8m4jubZk4tMPs7NTk2*1Wx&cRRYa1rHt}v0^|pYGRYS9FwwxmWQvj{Wb6PR9Ti=6 zolPPWCoT@%D62msspLawskEKnmqN5Xxn|;1S?sps-gMq)LDIF|o>|tnM58~HYj+CA zN}U7oZ5o+P%h#ipr;PT+2xs~px<@A`cJ7-B*5ANgSqaHrdbV~ecZo+$s+t>u_Pc#g zqwYRd2f3e?;_sLV4&6JtIepLFP8au9&k21le=T1%ov1#Hb5-fN7YlqRX7c?z^nOV- zBbLBc{QkH+sRX3k%y=52pp4t*`@5IWXc1;D8Vsbc1D!>-x?+g*#7f^_Q&oq=g= zk0u3hR4G5TStS}Cimw+c^zk{u-lAahi8@Mp;TaD_Iq#NuL2Z^xy-&UWz`AH-p$s=! z^kM)0+3#{AgrIwC*wl*eEYcpGS^{ax+td`DqdoT#xErWc+=w@dYiM;l9e;@&vI&>5 z;PsRB1r;^mY9=A49?J+@clzU{I7L{Bzfd`Wi`~|awy*}|+aEyj&FCs{1*`qm?KFwhCX%sJT%mcU zqpB<@Bg%eSBoJ|7G!hb0f9Sl>5_35?yB}%e=!@SYTvCv8%_G4O ztpXSjI+TBSN;a1ALqaH+7MdC=uuNQ%g390?eUjE#D-$9B>Q(UI`teJ~-Ob2kw`Jd? z4dYbHx$6t8Fr>lSUuFG{)3bD2)*csC$t$jb?)?rUEKqtNA)5Ht=Pm(jxWBp~>q)k4 z5tHMD{&Dop2vZMqAXVkTiR}cAarM z;*Mn8o*Vuk!GWY6MFUaMppBv?QRhRW$mp-VC*3+}kMAufCB!jBF{oU=eWkp0&r>1^ zhk?ME=W&Xp?cAZT1mh?}QjCl_W!OSN5avhvkrBv9eI9*z*?A{IUt1Mb{E#^}L6k)N zr7>$NyF6LtSU@POFlwgL_;VdSz*@f65%1r2Fc$@*i-xlFqb_xT0kcQL^9&=`=t_Px z<)BiC|AzM-8^DRoGKn7K8Sa3Yn`FYfqego)P6=iQou+!7-v%}^{@Q5rkfK9zlZO~j8RL+_e%O{yiA--pae;Bk z2i`e20>50eBh4!jh4a)@kO7zb8^+ubR1mBPVYyLL{WvSI@Oyq5hhf7}opG#{vH|4> zHsa8tA5+SuX)HMK*M`VZPO@upC0)gFe-&T&T`oae#0LjbQB)O21x!_j_=>S%>dIZ3 zesZydyUKw4al~PnOG4p7Dayd~fpTD2CDfo$fB3l)baK4fUmHeZ3bW)aY;jXEr7_IB zg@mip3+5?pStd)XAh}Oo$tSkbogt!6HPs<9tC`<5+j&b> z44-+M4$=PMtM&PxX3g|W@D9w*6y?_$N%>SqMOMm`2+)C?U!0GgPRmb(8wR;Aq@bk)C>;y|7Bo$gkx+J*_fK3pE&1Dq1^@lJ1xsqto`Nx8#^ z_9g;FP=g62eyo-YW}2mgudm5rG(ZRGB|L9wsMA7*A5{5DnV-42Nmt$W6i)Y*K%mLP z@bzMT{3Bzl^Mo6Ww^NpYp9#%vK@P19=QI`t{*Pri^8qEB!aC17NzRw1Y#20>Jj(IX zRaTc{HA+N-4ExWy@%=fjiD>?@sVP{}n3SZmq{>;lot6$ZHk%tuTLE*eyM?`5d31>5 zb=${O^9u_LG1Yc~ZMf2Fd!{kF*AbIy|`{HVtvR38g2n$IQJlx$4 z8aH(7<#l>Y!JZBEjg6hHY%4>o*`GbS7o5hWBX0q2Nq_n=zBbi7S9CVcITG9c{?lt> zV&Y@3&VNVLZ*R`e4@KSnQP=g@>bu0j%QjK%UO&F|di7OH(o~9dl3}(;Lp6dOssn!V zb<}nAWaOdf{oC;a3)O8WS5{RWNB`y)X1C*J8)u>Nb4o-~IfLuUqQHIFkTiIo(ot20 z+)?vN2}`2~OmW3B-|CakovnHtC7#!+c2x`M<-@*ucTVap74|z}{G|01c}q-!BCrL0 z8>kpOu5Vm#JAT~{U)S5qc~`t&4}egxTOr_CK?r50<})f%3bf1zxugSWR47d2*#rB$ z;yi&Ee@+6#Y_{O6hASOVz#In(;3%is!SK1=x86px zm*o&a77HMV_MUjF^!UuJ`}tV^{poBM;2$4xb!;L7WK7@H$8k4T+Ze7ViQ9hzf_IlO ze%|+23%;idjO{0NXS+{NPn&;2+LO7&)%84f0hWn?&543i>8-{iy!#8?eYacq)0-F3 z!*X_;-Tl@7KreQ$D_IP-RnhNj`AMFKcJl8I-tNWvkIApvI>~1p^Uqrm-Su9N<6m{J zVXEIQfI~lKHf!j-O`jj>`QG*&pfEk`1I*DzUJr_n-C|)wF8@|2&CaJo_1o@e3$NIp zGllovE>~B?>AYdt_iepjvfb(Aec$_F2B_NW!rq?JcCGCadT9;^cdszq>UqL!3#9Dw zDt3t7*I!`H1#8|r*@}u^`f7oJM-i!k-BUK*S5KWrvyUK9%Q8&W+sWr5P2M)&-mK=Y zA$o7aWBPAVQD?jVsj4i#3T9$o*UOY`sCO@!ICCT9moxoaAo~H@_q|S(j8+KZ&+>J6 zcd6D|s-Lo$rqD-m>zYtq9U*>MyCU>!Z8M8dOZMjRe$GcBUQKM?Cg|8^QYU^L?Ce{! znCqA3abBR4WN^LpTXWf1K6kTX$NTi!Wd$g&El`f8WXH8N1v!p?%li3U!*%mi&M~>4 zt;p)N)OZDLN_mAap6k60ZkKm^t`46eSA7K-xaI9CwITe>e(US{ZuyswOdRXZ-R14c z|2NIJH;X~5^NK?o5PEywUpW!;?pL{Wo%vBcZ59)IT`w!=PnFw04`1KgIqcmozq?$k z>#;NZ`%f$W_iJ0+UY-TJb~^U$1i#e<0+aSi{omUI!B2cIwO@-$>CWD57P~w5H{KX* z1MaY%t$ghcsr+7wrWY29&E8+a0Dl{qr`Ka40{06Th5gqp^=>?^j!VYRtxVnzlU>NR z;lA(PHUjtRMO40=07@a>jPJzzX%v_pihB8^r@*1daQfI*q>1a`CB`t=vdwcCm9v)$cnp8Jk3#X1!L zC&;H;lHkmf+VtTi1V#4-x%e)B=%$2r=-wwA6dWW7ns~Nr#n93X)=@YJb5E-qJ@XS$Py=*7_Hq6rwJGq&rpuKY zDz=^ZSN?;ZoT-zL4+0es2t{xC%q3Li(U6Xl-;Zjf_<<9yl@@~TWJb%u#6&6+xyP^I zv@eMk7kwnnj6;%I*v#O!ZMh_4f<3Y$sgR>(MQOXSL$9h|w`? zn{|}I5J9a}Cs}Os>wLa!DXUr`nXfaVi4OF9wG(%y_sy{(orCXm-MZ+GA}Lrj#nf0* zb(*mnHcG7CM3mWdQVQgCh>BA>W`+uVdqVJwiX85vSr7Fd)fgcgdN_-3IIT4mQyd6w z79;{8houyg`U|b5I4@IZIIr@i)?|YQQ=n3%;wXW-*qMEFkU%3tf}2N;gGw&;`yUBx z5nk^1@Yd^By;^2<#?jB$PEaHeu)$35<~T6WMt1v&jRueoXpnsb?S+odUJrcrjy_Z2qX7~xwTwI9jl67N7FFzOIDEE1|c^# zG?bOTvS~DoF%%do4J2P8nLlK&@oC`J9Fr=Z8E+tyg|ipt7hE+d>n}2L5V8n`4A|e_ zx&%vdG87dA9f%s}mg2$asE^q-$TOj%X|I$sG3jLh`G^Q(l#T&q^#%7h$W z0tsO1f*G>SjMslDM%74I->Z&vfT}qMRb);Dl0Q^Nw8#LV#Dx*EX)RQ>g=~_t&1fGR z!yur_cWS_L*bn|@3uX?~G9v`#$r$wtlwlu2TpK5q!~SXT?Caq3r?gq{{lv*H>u>rZ zcPa#p>mAc?)yzQI)9{XNvAl4XQ28vqyfmjkD95$N3|+8|Jqxee)OFh3CP?jK0XluP zP5L*-|S+=;AkvVDj949#a740~EI(bVDLSx!MSt!a3K`}au_Km6ZWdADRFB)%;(te zN_hrQB=3sbU0liy+Q?W-l7IRmP@^~-44@^aPckZ8d5eQB|EudKYf?FG>& z{Oz7Ya@~Gz*3Q`Tx4}h3gF^sCQKUhf5=5~$)xSLd_?S%6Js3V9!XM5PF7P-npfLbPZ}2KCb$`C z4G5hbGhUJFzvaFj=TT3BgUrVdxpNcP+SpauSy$Rw+geAuxt7)Gr0D-=~#PpoaR8ndQ)*{W5 zThQaBZ*!!Y-*awmpqghoazL32-kl8;`b!t?`4c%uMPJ4=epswEHE zZhj9DUdIbG$3$*Auf@sy4yE+CQuz>&82&h}iGdpf43A=P2`Uz(FVo>4Zphg8`qpoD zC&BT2@wYZO3o4SI=frQr6$0{Vpu@CU3LCcqsigu8pxZEvPPz9qTbow+TJ9qKo-e2< zZ*9ggSCIq&U7h!Qeb!uO#{5t}&ZA~$CK(|fO#>(3d>_47@y_q(2EpOHf$<{3b*z5M>@L1q1zezqm_-0O5_ z=V0nQlA5>rfDGz*a!Y!ctak1G3AChF=WE`b6y4g*q~C6K%m}=;wP&PR zzHqxfX$Rp0a9HJdM_R z?6bhu1%-Z=mZa|q4Zv4=GL23ir~Y;mIzaH4d|#OPpIfEQc zd&=HENo1tbL;u$@#Gr9DshD#Sv(n&RRvoQf5n5G|q|WQluh=qN(`>CL%;__*(rBUn{ooR;Gzv!wAOYnQ;KZRy^^)eY zh?~2JDJG&><72|1sZhX%?1T!SmHvVb4$YGTKC%Ug>wG9fr?wcT5)oFUU?=vqw4k@7 z9CND%=|(4oW^(^3^cOjPu`U-IjszK9sC-jYrFE|TD8P^%41plVqrw;Us9^K~{1vQ^ zPOo!?Z&!|X7D}jz(ttUgtqpL0v^}-9mH(N~T-Epi4^}jR(j3DGjBc2KL!l*xld`Ht zQ34Np$4Gazwvr>n#g&48gAnxi_&1LltD)-n(!HaxwGn^asFRW-cx+oSSkY$ehazJ5bBZ%Yb9WAHcC{eB7P2Y9QWJnJsR@`^;&dK`RM_|H-Y_)`(CfT?E2@%F|HiD1EZT z!OOkYOxiW6KDvL_RNZ~mQ%dsC#5Ossi|imfA8bt+GHUX(WCBu}0n58>cQbBW6v<`a z3{E%a@65ft_z5_-r7Q5kQ9q^1aNtyx`ko$OAaYSqSdNu6rxk`4R|kh&QpkYoaro{!DPk_5brCk`6^Wx}m4K)ld#GXu z`SNgW)NRxaj-Z1IKHQoEm!4{UF6SyScBg<7Rg0p_4jt9+(9AavnISepeOV`^&~%Z0&~ZA4oC}CV;LOL$x~d-@s_6&et@*vja8SH3Y)Sdf0UrB%Jji- zmpT@bZxfpTt8hJXB}PCKlg+baO>`+mgz|pkn{26AsmD(h#hJ_|ud}uei}RND?UVWQ z_)O-5s&ArL%sC^7WrTjBqRGo_M<7G_^-NES2JrCN+i6;Yg%VCffqC%?QI1RPYU#P4 zp19&Mbn$Ty*h$f6)&AywyL5lzrab7a*|dw$@I=5(+X5NSKk)kwcoZrZDpQI;wqkD| z9^hoR{m036AK0Bsw46lvT~rmq_a|SS_$(!FLFXyakB`U2J58^p&eQCi`En0!$yS9T z3VWKF5t;i$v@o#2keR5oTgcbptsnx#Xv(nyl-v(4M)`#JZY+Ew ztwsX}?%ypOd@UTln|Szo)Mnt{08_({PJ;xh6^js2Q`a@w$n7b6Gb<~r?VY=!v9a5z z)3Gs6{-ayZh>sr;J`n+?0u@g_-#~ zB^K--of?+PFc_nPQ9uRCW3j}H1?QD0eevI5bp>1%u73c{mD;X}5R;cU2eoHV8COZT zZz@(6f4ticI5Ys~!#CD+$YRHbgV5DIZo!M<_k)kg#PaGFvyDxPuhq!{y9(t_MAWad zk!ilD0cZynZ!n4~P#=_nEJJViY8HtW@U_2N;WYI-IN>z?`|^7+6@%!BV3Zu`?zZfa~Y#^?F5+Ha||EqTK4cwg_X z>b2K)VP5Fv_M86gf7XfrSt{56waFFoJrc;i%qjJFQayi-$@bYU{;!L&azDBmV zdzm%&g>-i2hn#ut&bvb6Jqhr?{Jr*6<kwllkL%Qma*E8BH;{+l!fy_Lo>WC~uM-!i={^$T_S*sMQ&GYki9WS-** zoNeV3s)IlX^AGP`&pnxE_D+HHwkr2N51TRG{33+a?o+>+UPf2m7{()QNxuQPMK3?S z^yhljLoW(rh}td`o+HfvM}$`3bwRX#B6RC#i_YSL&nhnTxPtNiiu}#k#BuCV)0Hr) z|38Km&~oj{O-Tys2_1cqRH*n`oapf{D8lbCy;0YXl}Dfra5FgSNy&aM?LB`>PIqo~ zJ9Zt!Borcz@%$YZ;|o!B2We;(O!ys49u3p5`?R|N;<3b!)!e|Ig8zJ|?YcI2W&WoJ zYfI($-w5shqb5tQEY&~l`aI#EmkI7YDuspm%eebml=ceq@mt*0aVf1zn;q^!B+i&kiX5d$= z`Z37TS8?pqFhGbo*bUMXTo`#$6)d^(HTkI7J^Y+_uBusm)yaCCT&3PxwoztpvRNKD zk}>jIwYA(4c(fk%QEh=ZnT&f#c=Q8&;BEf=(IB%c6at!jbXo{1bbK#!taaTar=V$z zc>168Se!v+@`~?u&P4D#1-)Z(|RTd1`E|aeP9_P z;7*$ZjSkq|fT2VdtFWNSSV0g}2q_MsvBG??FB+@nTJ)H449K#VxCvML0ws{F?gpLG zQ4S>zH5C;KXA(jKMprOh|4s8x=0i^w!~Sqdy1;`x{`q#OVgQRzINJ2>Y+q2Ws1+@| z_Lrf8a_T@tR5(=?*wG^<3tWyVK2xbP$KXiz`q$>LFL%n7Hzlvw@b*>#J$cc zhmo@~{%Dz4pMM!qUKbUsQP%2X@5Qdk;A_BRrd$fFQeaz~HcMGeH9adfBG1UgX_XS9 zhpBxf`Jt;xcp_?mITzj3NkNLm5h|SCl!zyk|1kY(t6vdLYs&JK*lJ3q;R41L;B!Ej z$}J~}>46s$Q&k0H<$pyF6g|@z1LNKPeni=ohk~4Nu-MP)SR+TdwL(<#IT98rN2PeT zuE7XBJ7yuF=9ZS4I#$3!rlt<4j+Qq5?hfwehRN(~I?v7u>R8=na5-v@nfjhd_kzC0 zf2BkVCe9|Gv8VJvV#p(uwW38UaE;8DvhNjLJ^!uLlR0hCU9S7 zZ5zuliZv23cQn1xV|l&-l$Oi5<#|TqTB}v(7pu8etG_&SbGdU@lQJITGQciR0v(1= z6$w@&i&uf^#1}aOufK+&BXl|PK!2ns4z0AmX8z)%qK-OCK}olYUna9r~#;&C4hn^m&@)RDK|FhR5Aj`%nd8I zb|})1n_R;PE#%kbKo&+z-L^DR6E(wv!6^+<+x1YtplB2D_zm~zA7LuhVPK_58Qa~p zo~^YJP`|m8v+e9pWqD(<@Kw|3 zEEQ)6*UV~+@0XdQSaeuwr;+4Niw`GsuI^oQr|id6z-*#^Wa(DWho8Z06t~{&&Uj>; zjY_n)edT$j_4ngw>k9C$&>iob$N(0fB#-Rck&KDV5g)Y&dbh3%%{Y_R`ycm*i-Lny z7nk7ii7Uwe>Ppuc7;A z*2nW4sUzs~kfAG)Q9ts}V<+-od}563#5fNOVX6RMk;+CkaxLK?672I;&nk+@8^HDn@>;1PIT7iJ??=n_DYU@(4~gztm@;5 zaun@>tt8`^+=%m}CyTo3kw7I`0-Kk-@WkrjjGb+df)=u;{JOWAj)1@ z(bQiTtnKRT5?op;3*oyppG69}9S8Dx%{p2+csy9G?Rw26`}3Jog^}>RWkMR`BfX2ByT)KuXNe@Vz98TnTt90tIB&X-*@7~EXs>_o2^cT})I1^2mw$2F zRMC}o8QiU{T|6szQB9J!=IE44L6opmhL$sAh9GkYy93L_+pSyHE8+daPoKFH$|GAh zjaPl9?gxePj|IX10#6Nu3a!DSI3S2H;dgXrm5@y7dVvbAknMQBKN#tJ$3SUskDU&U zm*C19u1c+%V>Xsji}hX|kpI;x$__Qqbqn{c%XM6CosiRQCVSm3j&Y7p1NE>GJBF;R zhGw2HB6!BM9M3jBKK@zeLc&zV?Y`UcI`e&*&bKx0&v;&Q`2JpoKeLL0ob}`{pf=e3 zxU;#+G~t?fZ67o6Kc1V%@4PF#4xDS1$v%4tX41=A3(aqDK>pUV-}>Q=#yaH^H_ca{ zyGvrf=a^%EYIrxBNNhWA zHeG-R8qF7{;^_AY-&`Kom;R9p+2o&O1Ge7vYz2?40+|n=nL0I_d*zyi!g{Rqx?c%n zx=gtg8#=_^uRkTX`OOGMJ@rQvy>q_}ea-&qdVZ{T{@k;pP3-B;r5Fr;-%ga}!l&lV zZ`&$sX&-p(=hK%w=AF?jsjp@I-{wjGC&GG_vB6og<>33X`Z$1ja><)2!VBjauYT1~ zs^g>sHJHbh1c;L`U>P+n%tJ5pzLKI587qk&q+}SKduO%sv*nbe;U@&?aV%8Bzpm*3 z6YR295tf5Qr&mYC#2`JM1FRt0^F+<+LC+s_PWpRYqpgET$Xl$}s+(oMRe97~%MocE z8QC}!N``HERe3%G_aJ;lfLKk-wrrDVrka)5O2-PIGlSeCgI>b~yb=SZYaAi@5J;}* zmDWvRs z7S`cr{iuhXo@Ta*=3YHLT{!>5HDuzN{`#cD$=W}BPF|&k8&45pEa9}Wrz2JSS+nQH4&-p(dLsOYEQPGJE;rw|E8BWbEk6W~;#y_RYF7JP)v(YCF zh0y{{RH3LvL_NX&C%8Sh4KvV6;ItYDY+wVjRyZ063h&yeUu-#%k{zsw^>;EY7(ExU zXn0&fU`IF5U` zMkcr}W0TYY$?qGmEz?YWdn9K%vl^%$l zR-H^%7{jZI%+98`P^@TuiE7UHC2rn|P4gSVk%bN3BIMg=&HfK#yx-s7!~Tril=@#A zp_itum7%S3GBK9;s;7pzL%<4!#sg1jEU~|o_>;mwEEF_2ntE@dgaY6B<40@Z?jul% zyFknifWNFvPXkFv2H$hLnf33=DyWBej5#q$p?|q)s$zHg`uY0Sv~V|faCg^r)HJoV zG_^Tj^Z>C*5eRDgNy+fC5pypj=lAt`f5jD2)fG?`Ks6^!CZgxu6ZLiU@Ih<8z5Og4 zY)w3BI`}noaVsj3)YSLXl0E}#b+sqikGm^9iQ*8>ZxJ#dI@uGbC%7l-^b$XL&i&T0 zbNF7<#^2o3W^WJhr2-ydtgfxf?^3jNQ-RXgP6Zl8ZEZ~r?M&cvwqP|Qfrd7BOOrcr zZms+DguE@@2OGb88+(s{X=iQ9u~Qr!TMZ0^f>p2>MzZqys71yZDLOzCj6dm*iW&@N z`zpTq-096+l7#(CH}VQ7=8qg3>oS;_OzC7Frwv={R4VC_=hfiLM}l_$I@-qG(*i;V z^pL4JM>b=lt;LFEEI6zLuwhFwiI|v)G9@WuC=?B=Rnm7&#cIH8 z#rHd@w$`Y6((5pKHT~4pFKx~7q~x;1T}z8xt(1u;0rf^gA9FhHFO4(KbOz#I=U2c*Q60M3!3rh>y0LVzTPb~G-=h)q*YG} z-~DTC(aXTtQV7@Fagg-6K5=(#Nz2csvAJnps79@_0#i1^*H>6IOuTAMyvRHmreO+4 ziL4A&Ohv>-1!739vd=uyQs&*AJvOoX@#F55V{4mMWfi7X`QIhWrn-b``dzvaUkes( zt>NV4xV8-N@f7V|%O}!ZM8kAjvkgc9w8l><*~h?LR0&W7 zDyFI|3nD~mZUa&i{F$}zPL(BU*LsqQkdX*34~Q^XbU=jNh$X;_Gt>a{iiRA75#&-i zN~Id%uJ4UZqnTF{BM9;({aW`?oQ&Y`T z-$UP1-$e7!JJqD{I&nfaSyfZ-p<=Y2b)<}+uAUwkaO=iBLPi|%N%0(ZYyxKB*W8RE zM;}*AQmZ>8ZQ!}(fb(IHi&1xXU4aEexmr3;naB4B~BSK<~UjQKNe@9pT+;%nI8YuHiC zvi7fpi_63;bUTd-SsssI?z>g-;!4$5TX{}SNuZw`s~nnFtFI^9b|8q_vRARQnbS@m z1OC#At6=-H(grumnZLI!pe<}$y0epQZ3)lD8ik8K8uSHIjkHRJDp81Kcvui& zOys-tm`KSb@lcW3e|?@hF~C5qGBf^|Y9S_5N66E0`(dv?Y-|i;SsR~^FMWGz-ndSe zi%*`-`Zx0d_mP-0x(m7qfeXP_jct>JZ1no;@8Z{+d}8yKNBIQ|q8Iu1t7Re2kV2kx z5)u44iAHQ2u^{v7_xk(w%Q_R2Orbaa2`#IE;mr)E^HWMHI9Q4hH8e6>?r=0raS@Y# zG#7#!zVWY_xPK0)kHq3|orDRIq|n8LdqBT%rP15$xN9Bf6s#)u?+5CSGrT^nHrwgr zS=R{aR?n!myPnqEEm>8z-Fj5VgbW9nl%zNv*AFvZSvHjwjd-)`6DnL!(GyREAJ(NX zhCkM6nXG9wjkj+be!sh7@DM;nm~i16yIuHzYa%RgQ6*F}C4_%E9-iD~_5QHi88US5 zvv~?~?0&fY#ClXv_MXj^1^aQOOjLfN>(Dk?DC;Fw`>QqgJihNmt>0CKB)`GF)(q(9 z*hUQCW|~Yq_k4$4?Xy0GMYno;8(SUF;`BFCrI{2rtkU!a;eD5#-AjGa@A2;Olh4r2 zs~ykk<66>ihToAz{i2D&YeN*5kG%a~ne4i!S0Sy{_s!(DRlf|KkKy)!;B4Wu(52JN zcCt*bQ}^>cjGQ1v!v0I3zP8Sr`w(4K&fu92gZc}M5UcNn5!359G2<$sNShk2-%Ne< z+T|I>%pDA|LD$a5JUX>Dx%c(^W}=r=bvgX|I(3um=Yr1b&*wdQ>-Paiblsa9ixY&q ze>3M{gpP5ezFp#-KMUXP*zpfu@!5RNd%xDE3Zv7%q`17BCmdXPD4zbSdvBuebrC)? zEehHg@I6ptWe062eG=Nl&kWLk+KtC)j!AU7Sl8!%Kbh!k@Uust?a3@h5Znkyd_?f` zRzIQSY?BSc)qD9h_l3ysu)W*Q*#qM{(%acbgzOye`T_o{o$;skZl-I#c8e$HY3+3- z-(4;O@3rLfRqwa(xVi54-aByDOH2QEAf|7p+aA95pYQAx?VbyuOIq2*F)eZlib=iT6E zCWGPo)Fr_Uu6>JCUcw=S=S2+SM!}D&iR(uno|Vd%z$*wtA;W?#LAD$#5T>EL36&!W zMKS*&@y$Sv0A8AaTq(Bids?ssI;BHOA0*+!^p{+2eRmCa@zuFGI>1d49Y0eC38+7mXge7_A8zRnS4CA!Y}UdJZ5m@6uNCrC^@o- zl}Y3WXbcGv0!aq~3h9gjhhKdbzY3(4?daw4Z{vYHOLM?zklX?DuLI_f?*@@mZEN(K zmn(O-;x{g+m^G*zRwo5_|Ek_06#>P!gpIDac^dr-kDQ`}gb1s%e#iI@0#U8OC$pM7 zB%3_P?TKFpz~Im1sj|1fpTevgvLL#=@>MbV^xp=W-8;p3PB49gk@n@ zh0v=JFiek0sp;)I1^38Ek!6b5G%BXd4#r#vwIt2A)og2ZDbl-Rn0R?l%}iLmU%G-TX;c~yJ#|gDh{eg3 z$vucw-$P z{AJs_=gLYEr}FiswWAYjmvL(s*QR#9<Jn1DHu8`Ne`J6@$YdbrR=BB(&W+J4tKe@5uQF>IiTz@3;@=+Vm{bMkpNG&QG zSiYNYam&rLELuDB1yX$=oW-+k{2A15KZ$b_Z%cLP44kJ$^Rz45Y151X-68voE1d;b zz8aft^M6<2vh+v9&8*$c)XaT*u@~9Q%gnWHS^IP|XYm-$B3#5@D?k}qhvkC-O#t3) z01GL#IHhnUT&bf!c8j5FFab_tUr}8Ds>0GaNAu69N|BZGADvZ)t~GN#u51Sl+rG^# zC;wfE{p5*j9y`nToJh(_sW|i&sS@62UeM2O&KtJ1e+j_Z#e^8x&8 zG^$wc%c;vBJ*tBS=i*9UhB=E;1?^j}-Wp~)KJhOSB;PSJf$YIMg&I2y5kioF4absF_eLXLUS%zT!m}I zp$_UPXIX}}bS3--OG{*d#BXy9J6Xv*Ny!!_oA!Av6t9Q`lrjaVvqdjLQF`k>*LNG8 z2T&}O*mg&Y6t%sPd~_rKAbxc*&Zj@H&LRbyU2tkq;$(pI%MkVM%YrjP6>$L+rXdN9 zRXBN~6y0>NL|okdFTsLfde(sH0Ay;2TBxVdzj+;mObwL`ZOj@caSmh#& zSr(u9b1(Qp^AFE3b!Fl&F|zz%Xl2Kz0OefZ5RJo7XDM1rjNE7`$pRx4w6YXuF1Tt2a(ji6p#k<18vC@@K9$0Nk&hatOeTvIl%cRWDo2h8yVOr}LKaw; z162PFOZcf-^T{+6Xe3m5-St5boD^CKm>Pr_AesYWhD8d12Jy(llqgjOVMvq4iHgoT zTKeNDu~?ZRSD;}s2bfuv^D|*b7;;Wf#apwFOOWwpZaMz&kTA(Dr?nS^216MYLJR*v zjSo)@4~3Bbsp#Zd`>xqCmzM$bQVl6`b(hrmQNu&COi3L&o3zCh{w8~-5tgjwMfH}v zOlH@Pob?ff+9tk@TlDwksvPNw-@b?M?Hcc4%QovcBz@5oRT9>FFi{&zdNfuW!*=Z| z+mq$fe-iH>$w-D{a?Gl9?{bVVVM)iDvEan}JX5O6P(#~r|I??(+Mh$%zXX@P9v!so zaU++7mU1i%j7<&nvhclqgx zM+_SVWA@7b3?130MVb9IR$@?_gItTlCB|2~ta%yi@uE2k`0CZ41eWFZ?5nu#fzXM) z77cv!{fM4Qll?BPtlqM-9N+DHPOt)m2Bw3%ug0=(3qKJMG4Z4%Gd+~Y=+#bV7ElQp zKMM%mc~rlwN&3A0nb4!)4MWX-i9Kz89o%0tI}W#xB!2nhSCj4Noe{QC-+gxTyBxeZ z;mfo9Iw+Lt^h*2W=coIc&Xn@9%#_yk)O__)mdbGM7x5ZECAa?ila3X!>kJ`Y?VXe9 zsW@Zr<9oc2Q2S-T=d8Pmd?6nX&h&K@otw2!D*E>}Arro5gZfQdZbJ2sH6gxf_G;Pe zo%b+vGg&Uq_XzqA_d+bM%gqVuArT!RLcSJvH51FP`9gf(nNc_W-n=JLmR|^|!Y}Uq zY$nfjm2}siqOYK0S|0ug3AXZ|Z5!b(f1|9E;G1;?%=DQt7Fgp zc!}4_DTZi~jdO8%mWXA36z7up|GPRs`GDqk60#)p)X{#nFdN1BbTdiZ&F(dSAB}=i z?IPG6B}k!?o-xi3?z$>g=x&}WuC?`L>(~;S6?{I%g1EM?daXaN6|X<+7ymU3kd*9p zn~|T9ZJ#sTRma_@P{FQ**^enMP5O{(H4e4;PqQB+JUFoS&Y`n|mWs*_Rasp3DG~)5 z1CAH0V&H5{&1{TmL7`wdfZjne&fzdWZyX2+^4!Kp(D(W4cM`!0p<;s|qDeBu?VVIy z)S4=)QTvQgQECfJ5_s*K(fQ|Lhh1-zMV_jR=6Us`O0)e*j|(}Z11L>VxRh9O0SWph z#8`iI15~Vuo9}ol6hem6oHqzYEzwwlCg)H zv4rs)J=fXINy1ti8QJGnkLnZHJ?={z^_hXKx8EI z5C}l435b-a6#nIj8e1~14Kjc#Oi5kzIPR!#Dl03arBm13uW%V}E2FGVfY>A`E#cTi zPHW*Zm`muwSw+G_NmqD~nDjf+WVkeyRWw#r4Cm4R9T^Drmy%ep083z?k+}QIP^##A zH5T@mRJ}eubl#7vs+!OpS1^p!(aW0AX{%c8{0!zq!xl&R_S-x5>x6yez$W_fuxqPv z82QOc+0hY{i`-->*KrIB>hIm_bbVhWDreMCj@KOqt#|9*Ix7F|iTPf`WWwZF{v+;x zhVm5OUp-g~Bfcmrf|+u)H!^3Pq_Ij$c_4+Mokn*j1eF*tm>?E9(##aBa8=#85hyGe zs4Al>^6C#^xT%`TDVB2JhO(f!4!1R)%V|1@c;88<+t!%6DD2!lB(IOPazdAxP9(Nq zPg*IXf)-0picL)T#y@iB149j*eVTWU4~{*K0eW$e@BWFx`Oo@S{E0($C28oWStzyZ zzm~k(az*u1#-7Y+C&Xi)B>&RZiyvlQ&-0p@NG3KH)?;~n8VsifJL5F8o!a`OaRFq%X?uU?;5|qxN5d=ZHJEWu=B&CsVB&54r1_Xftq-*F9kd|hKmS$+A z&+~u3o%fs%v(~Ix^GxiSz1JPT>%L5D;0KXzRqsJq@3<>wKLz;k2@5Z^``9BlO8ffy z7Oiq#Wq*{1wmtOBjb}g3&AIxw3s5!q!*pvPVUtRX2P+<;G_>)9fSny*L7e=|sgE#? zj_^mRJ(mnTaTg6K$? zxbx}!^VZt=Ri&fouzc#h zd0OJoY=9}}-)(nn9i=8|haN*q%yA1bd~*~WHY_$Qo&--ueyHxG(^r_<%7Ofm+QO%O zz8)|}&+@+J*991n;-_?tBCIHWz9VY=gY(|kdN)2f@q+_aIf=}R>#T+2F?%c4LOah$ zNOk6X=tf6;&*BPtMC^M=Q0p?I#6NnNqtbKdSH|DY34ePNu_jy2M#r3jUV+mg@I3mi zIPr9!N)ud8Dhr#n+%wHG!LahL+cd`zf<3WKRC7f2T|Dd`S>vu#Rf#c+fDNF z+5QI%n>~AM5K8I%rk@5%!Mx4y%ZT);SlbMqf`D81A!gJnTv>LUYL0Fm_2;OLy~9|5 zJM24Ig?`zR#_%7XKF0B&2LAQU*pV|x8y9L7z}8GKt@vrW%2)vN)OB{UZop|!4W6`n zmui#qE?1LEL6afb6mJd2J;FP2t^@41SLZjJM%LB^dOAJha+(W@DY}qsuu@L{AlXM% z16_lR37eUlfC6h@Yv^YLx&>jRJ!H|YA%*XK3K&Zo%Fp)v_qd@8hfzl5wq>LK)~HT0 zG)704RL+28H`K}pZ7o0Zdyk<*emw$P8vOACSQ?caR^!i-k?>EjUh{2|rH; zncO(V%%_yYXK0@{s7V~*Mkp&qCMQLh)y-O(UMxHeb^e*K(@KZRG@pR7>Up}hjl4PG zSUpd^HWuutdI{J=I8>gO62Nvc#kXh(x~>z#QA2H$uHvOe*M&1&46vf&4ylY>aE-R* z(qFyfHZj#PusEN#E*--e=isVxuM!0&f1{d(+Gyhexx=QZq&-!>8M`E25F5y{GeJNjc(%n zKbd*iOVh%F%PL#3yTu9dpqmT8=PD5Cze?(`B4yIzx;|a1LVE|>qtNjd3iI#Ld)nB$ zJ}&CqsBbbm1Dq2Eo?HhgXbXdmjA(D;hE`nfQ^-v(GGd?Z;sv^PHUhkL z?Rx9;cipa!16N-m&ey$>#*aNNcbDGxOS#T0W#ze9Q|DbT(ys9A1b~c=M_hT)*@V5ZVb9^#y{Xn z@Nd1ofAsEiY^Gr`*3s%IIC;K)4O zvaFB<4L*#;?|9_UfmCfDdzr2au61jIoF1=TB(R5x;1^jZ+rceN4u}exf4eGA$Uqh^ zSDMwMnC2Q4|GQ&%^%D-W)UJO_EVX0JK_70j6!QA<1N!E{(7&^9Y9YzAD|h$XD$ahY z|86r)J}4nHnQWa~XZZ@$atmBPTr4PHT(@Q}E;2)=49V0VB!XJ}?%FFdJ9*n1ymN$a z_h^qqk*!c*33Y?dGd7gW{NEJhMSAuU(%$_#i7tEve-iieS7GAGAVnVC5d;B46qZNk zJHP!~;LClxyuaZ;k#G2~hhXte{BYxRlqJ~Uo~7$^ua~LZTb$TRIN2pnYOrtZ3rDBK6eE5ZHzA7h^!9#?2-XuIyec8Q#a+?ggTc(l@-K5KXJ zT~>NK?L76ltKE0zWAC~oeeX@|l?%f7ad@f`jh=cZg#e{T<>i&vtI&LqnYvo*-`t{q7aB$Z>>vyjr4sK%sVoeugTZQ#P%{Q@vA6eR0FP*&C{=#lL0)guzmTm{0 z_$6pW(NP}fjoSCbk#6e`F71u2I_XRV$j|FpMUR6uN%T{O%pS zCtmA0XWw*$kEEQhi5juINw)R=O#-c#-nYtF`uA&XVf5mL_k{$9G(@sy#;2D~v6wF5 z%Nst6kWdVna#D5=5Y2+GOMc^Fe}ZoNdB>|4Rp$s_ukm5&a+6HOp>K>)alcp(3H(jl zi4K~+5Rt}gs;Dkna-Y-W?Tpl)S2vjF*KisgC?8ag;96Tz`^oP_qhxCeVlr&_HF*w5 zM&W>9ECk?AovVJjPWh@$)Fh(xIb{bvj5z%1?@AQH_?{#YZkD~0_S=g_$b4u;@o(Kx z$HtM2N`_HK1EGTsZ|VK4?p-=M>|>(lx+!6-U#xV(7BM3uMnmJvb#-$~bq&_ml_NTH zh6nle<1y;58c`wdNpe{E+<yw4y4egEgju9mhxql^KNg zCdxK5&6T6^fLuznwbn}u71hUL5R{Y@n7^vCYHn#Ge`1-Je!?JWTt+%P7IxrHXaVn5 z8V(_|(M*sst$v?*`RvE5!mOV}T=g>}Y6*HoeF7jlA8zqrNw8#5+jj;H2W0Ea{VLzm}weNe9&N}z~KABp0FD>uFvQ$O2tTnfY8nF!uu#B6Vm9d6LK(a8w= zh$=Ty^o~77HKqT*ri1EmzbaM6is8Wc5G{KYsReDYG)hcEi559^ z1W5$55=6d!>cGpp=}sU|$v?kknI~Sm6#E$lABw;0%L-y$a_-DnIBYQj-j^6)<-RWM zCHQwcB}U6YW$x3}lK-}W2=mZVy^RLm7E>CQ803%r&7S755WvGE?t&abUiNT|m2{&Q zHOv@F#{`h&sHrql{85~is%aE+bR?iOLi<#bHfWA&9$6f|jq`UD=#Dft3v{}=b++4< zy*0JT%G5BdE8xH#-xS`#%ZegljW?|4p(2}&(qYtv@*Or)i1gVl;NDWho%Ypmr=uW* z=_RSdVqi{mERFD#0W|c29v*GrJkjZ?WGGZUKWz}D*nwz@XK&Tpzsq+`mdXCCDXBvw za-n93W`n^Xsbx{JvA~z}9nO2?wSdHUaQ<^N2v1P{kp7*J;!WhdMc9E+fJt(~vcbCI zV%T*zO~r_z7q-)e$<>7c1vWY^e#=rRv;I!dL#NKtPZdkOV&UWRjoi}o~ zw{&rR*Q{fIHg!KnDf30~tJR}|wsF1GYF`sa_tLEkqEO9!tFaV%WiX{oU_Mv-oE8(| z)`h8s`*8eWZPQRd*|Do|!iE6-&Y_tj`bUG#t)g0Mc*Tgvr9Kxa;BOUB2 zM!*^Fv(wuhE=3q&K@w?U*Dxo4P*JC2pE+usv14sufXv4%ZI~8LNPQDm%=)rOk*ze{ z5@eh2O=^^DYrqCssq?VjuKKJK(c1-8SLieqBA*elg{7{0#M`pTN>5X0$X9w&*aZ3y zzbm0XJ6sUCdfB1yvM!1wSyz)JQqzv%V=-M6>Wf`EytpYTLRM(woK}{8^B3i%=jH1R zX&EzUB31;(Jc+skJq)(tQg0E?a&AR`+-{jbZ*Z^G@X%2kUO>B;80dI!N7_b~iYv|- z%xvCq7;E12wiR#nN^ei{8oH42Ye*`iDcYJmnG8A20zBm#xfC`%l(fUof0a|8zn?tl z4}0{!e-Nn&W4oO-dzi%(+m$NIG!4VY$1k`jVaYf3GXY|dd8kdv>P5$p*zO@zKU?LX zvBK6>u=MF+Ft=+{z?l|)^Dnztq$CsO|5W)nlv`<}^y`jf3e$|B=ElI+@3KuV(TuR* zscjra<1Uu5WxL|dhiK2K{MU35qL5waJL~i)>l4G)CewC@cBu~QfbXs-2ew1nMtSAD zwbfhLZc|su`6%_;8O4cIr_8!qeGXqCfzL&GJJg&Hn-{Cr#YW<&PEn_5oxG56e=nK5 z`vj}G&2bSAKw^p`B(o+StJa`3BG2WF1wNpIMoA^sIj#}+a~zQyPumh+L2G6v2R}^Y z)NhxR;4&XD2$V`ZK=Pe;KIM<+7uVcm^nKL! zbSQWByr0> zEt&I+by_yZ!%mxO7t9+kX!qT%oxF)MO`Zgk9h?3Sg7w`9r4Cy;Nd}GzFeSjeu%4s) z)f#Wpvv!;+IlWNNnAbl)tnmpxGlhIuBNaTWB76Qtev-9X{7<<2Pi6x}dCel8KVS%n>6`M$^l*|0LNYu&yLiJ;-Kr?kPzG&qG;0*y6ju!40r;h)6$Zk_PBxK!PM4af#SmGA;^Cc>HJ){&(wRt zg#aiCx6j(YGaA#aoOOIhY0sFj$(kUI@-=R1aFBQY=(G;16 z5YjLJLZlgfAp}z21)vH!SM-;Q#G@%ViwyeV#4T24D1xA`YlNJi2aK^t_3E`)CJc<{ zJ@4^{;f6*j^Wu)7CH={qKc8`4yrgGj(4>BlNtvkiGKslvRy!v&Vx}i1Mqywx!PI1f zrlDw+@UcBt4r9o8LkQJptNF#TP1rp&;D~OoZ1GE8grV#gv2K(pk;8W5nPH`1 zLe5yjywioheNCoEyIVVH37Z_fJc`{j*@7NFGo{Xu%5!!7B0*WOr6e6H!ygRPFins} zh-Q>ql$&fk*sd9fwuGoWnw#51mh+*||JV)BRIizSqKMEK>C}Er#`lI$`Q~LBd;k-H z_Rt+&_IiyrWfdN~OQ$9Ok(`W4XO_R3C=mE*~MRd4W9UwhQL(XdtYS`LMn zA4AemPHDxidHLbd+~5D;a1r{}HqzEhI7|vMn~(}l`mRK&Wta;P2?rtCk|RaDsxj#p zr8*?J@)V8B@upp3R6xMmZtG>Z+*dM>D?$yo)5x);k^wwIB?&`#iqiVGeZkD=DR^j- zpwcKXx4P&A9x-6TcaVo^eHrAHy6@+~6B?XkPIbp^s)nZiMCX zjE7z+Jw-no;X>ZkzE_TQjno&ne?EPvM^Qp`L$?4~fI>rm{n9x%^i`rY6mT<@*7>6} zq{~9cJ}{_3m2Jbg??KUL;b7Yy_*Ye!YVg5y(!P=}f)3=A1Wt-G_-AzxU>#`St`iFF z)?K3#)Dut%FX9WQ=co7%kM@UI3EDZjl=eyeIoQ=rO(E+|ioe344*g)4{5o{r(_Vur zhwr&zd@Vf2AKtPWdly!_3Tevo!PCT(0?8s|;MGP1<6)oIMD=m!LOso23*rueBIn2= zDv~kaYNESkMtyVRUJm}1LR9bkV70Tn_Bc}Ah9a`KheRD7H2iqX;b^$kek&emn()pf zutsRw8G&m0at&CWb=zwhj;DKtaqa zZCA)VxMqK85O(hP+Ap!wlr>j+C(U-- z04)iVsfF_`kHfbyvDAALi8RcCaxxMK#xw{+3GEa3c}X&!R)`fLX&4HhB8K9$CZ2i7 z85O_A-y0b{R5_6AD%~z?sV2F$d^PjP;1nUbHpcL;&X9|ozx=W|8jR%HhSHTGB#eF; zS5YQo0x0#UT8hn_8D$|1pnp}YYH9cy&&v6dM6s13%2A65*6aa^(!#^yOIESR};cbTZ0lNQ`uOt*GzLW5Y?)<$N2beS}Is z$)w}S=qUb%7>HC>l~(i?hjgrQmR0Z~zGBf!V{s;i82G;eQJ$c9sWs-b4Y`662L4 z(xwYHby>g9PdO>o&xfn>#va(qdMidKN0W!TfBwWX*n4RpWMT!`+qbI|rQ*gPJb!>} zuiJU@8N`3Tu`(Uca88%e)ZA`7r`NzD1U-vFDaJ@!HdFfhLrb1vG{M&ag*N}Ay)p>T zY##)Ax=@mp(w>`9DT+(~6ck^wO-CnPDw)i(9ZeM>p5A=frR;LEa%LiXJG#=gh8XX{khJyTYYT29Ixo=FACZM4l0=}D9cHqXor_+h)O!wm|9|nc647BT9IVbO$`P$E z#nvf%3j;6n(MaH=7mQEeAHts68exrUu+B~87xx2&$DOx{&DHoMP9Dm^7e;+$;!LeF zh>H&?TQLrpFu9~ zd^p{`m%H8xHb9e$a#eW0^R(r6Vw*F6zc*KNZ;9LoK4-wphne6T>gI&oyp*{U$b`ew z>}azDw&KdQ%cjH4?En5Hi+aDi`mn8aG}O$;L^R=4Gsiim#a#BF#rD_X+}$hk%(^O zssnh3JSE(1)^XDB*av*tRGeij74*9b5{RW}6C{BV6Rtyu#>Gg)4t_tv`r;Wg{ueOL zw4fc>f|18w)eZE`E3)bfPAkZ)cGNh%_0x7`I#hSurrL1H-P9(Q-AsF6BqN){U2nUZ zGeGBGg|ykXnr@w46<5+*oP1IRb{-B;M8N{1h!w6W4gNuP{p(wtfM=c3O*l~LvShS@ z&|cP%Nez;6L2XS%DalYNh!n>g91QD$aRs14-+<5w0h`m^x*72d4P9!B=unT{1z%Danu0OWwiUw9PLT9=U0yr zSKPhJiZ>(Z)NB}LYAd*lcLzVRaIvinwrOv!pM_I2+`-0+R>?2g!h&2JCMhrO`lMVY zk(d5Q&SkUq0y$%>(P6BA3^}0bQ^I(?tjg03i=RCG;LcsEwD@;@p`yT8nCAIco#it} z0Bz%3v%J?N0)&_|_Kk+|4O5CU;OI?3fEnN@C9#Kuy@}dvnR0AcI{GiL^lW=DEt_}n zT!K2cKQ22pw?lQym~tJwm!SU>>`wDJ@ul#^Ls(-NAdM|G(INYl7_8AK#uIQ;Jr@fX z5}sm~6V?R+9NaA;>MtN^{HYgpfN^b9hqUgmoDS))YuKWpj9&Z-{iL;WO}|Kez8>yJ zAW-!V2NaGaGkkDOi(#T~(SDhkDuDic!^BFlTkjURqPeF?`>{&gCrnt(Jc&d4jhPO$ zv?HMDU5)>cajFW~4L4kw%_)s%1f3l#9b1vIl%G6)u$-=lPJ@~5MG>~^^S_~5syK?i zAdC~dxu3G>SS8@-7Y>ZfVb?9rdW!fN0BM7sw9w#*fm*f9Drtx*4n-;5RK;|=G80#! zEe7eN41ir{a)>IRg?Nb3&lnkBtdP%`P_3Ax?0fTs4yvF)+Zh-sp*zYs5nIOzgM!E! zr!DMK1fAcd0Pt|bjGBmJiEx5}gUW6cJGzPny}oP>f8;l{jTZPP{M)1TT7Ihj{3fLr zq!DCf8aP;?u=-i{QC$OI0;nlTIyxDa2%WwR^^Z`RDGqn#P#!`uEWAPb0gK5`{ctY_ zAR}?PZfd?2S%w`Q>DFX67+NsSx{-n1vY3?s5X5UKEJz`%c%AOZ3*x21pTe(UMTggI z_bxL2<$WK=1v=^rtTH)S<~J5({5fM@%|L3>)@R}Eut0-P0aKfHeiolrOxS=S>y?my zZoPfh%k{R|Sm#`h-z@FimnS##+*hb@d3yv3Xjuadel~(s4YOGlbK-St=E?EDiYzbh zj34HSEK}p<9C?upeGy4{r%V~`Hz};4oQf~W#%)&>%^LF_LiAspSySIQ3tv2TbP@R4 z*E0Wn*$Hk}4wgcRQ3XkX48!KiNoIt<x*vGSSsw_$&;ygu)!eso}=zzJ;d|zg zP&ZU5PLpT-DD)Y1uWO0_tFJ_z-;La-tk#Oh9qjFu9Mx(6ngmUJ1 zsTJ9(JAnpLI&P-!rfwN`oZgiyQ1{GN)vP9(eg~p&2`vcA`S_1?fuhhu5HA_{L23y( zl&|*Z(;ln*i{f`xQPFv_BZQ$0(TYMeX4GFp|ICyAq;bI30Hg4;HdpW+9y&B&lWFYo z?!YFcP@f4!&l%z}*(uKckV;wT>8LhG)Y~FO{q4;I-#^lQ!e%2Td9knBOi@qLue4wK zF-iAMaB`yFo2J8zWgNTiOG5%ec+fF~Tnto?s(nBT#DG2JA2;G387KR|iDe@5l-F>N%HlanVpy`kvKW`M)Zy|UZSY*8DAbRs( zBtCfLeK|y0MEh9U{p_eQA(k4bugI%~Si?w)gdZJ}_)?^&C2>kHDkx^8vo|DXJE*iI zwRd6}SS7=>=*$-!b{gunGmuVytRVK{1v=*uCROI?A51HzF*4AGh|Jfd zbY7lKL+d_ua@xkaH#Nkjn^X&O|18(uj@zD;S<^5|^nF%2J+8MMkp13f(Wi|<{d~%U zKgVX%Ks-P5ywu1>oI?=M$RE*zLR;RHS5keFmDW}!FTHd#eDUSN6m*$?46R(exI7BJ zH(tV1x@MHL)G8vedmbs7s@G|m+iq!4ZL{d!W~iERe(LVUS4g8)rci&n?%~ImPo>I? zIkUI!;U$=Vm^gH|IgGIDkf6XeXaM}0#PSZQ-(TUE-6@=99S)~XSs`89y!nem3Qc4h_Ko48Uq?;GB5t)m*NJ7p*Y)O91(?wO>< z`cj>Hun6W|McIGhvI9aHf0e zXA!e*-;3C0Jn`JcZ+*GoG8gGlSUck0OnVz!_JC}LZRPuqZg}C#Z)KaEjl+hXe&;?0 z2j6z8uV@C=g`e!&&P_PS|Gm|RUCwTcnEF!`J+S-%>ZIq$pytb#8l0IcergHO$`jG; z>Vxyao#|xUw8O(M6Egs2c+93nuACj${}(#C_#3u;R#+>Be!EQ$o_Xvxns_`wIx6$+ z$xO^5L2iCpCu1$Ah=Q4;4o>cdw$`&}O#`8~L@lpTeN)YgfIF=Uf&Dy>x{H7c5a!42iMd>rH&>JbQAc z4merimgu_vNu*UM7( z`A6VTIPQr<)DAy}Ap?;!F2PF~o^x5_dWTV($ExRH(5;k*}bhHr)_D&vSdL7e>F zn<5}0e4|8F5}m+Et-y}QI!QwIRl`s3=W7_Wqq5`t5bB+NJts1X@ZITnT`?kz>t1TG z;hSdcIZS6^gD(3GqhF^oO)DqOQqt|nFQe~z+&>hLj}5Br^b8F(`otWBVJS&~lO!s$ z-QvMj(^A)26`9DvMmy{{TGIEn@aku3)F~#vpJV^DJ^;Og>3gibO$);T}V90zvO{MI%<*c-T={RdeY6Q=cny(Y;Zh3qVaRe`byC zD9Re{(cz`GOnquJgsRnK@}<0qiQ_SJU>Lwd#PH`ts|8Ru)s5fgjOjx&Dremr^Tz(x z-xPZ^xpOIQyh(uYMN=wGe;Tx>D2u+VuA9TQW8ey~adV2zYaACw8XIK9E^-=G)y?u6 zalJbC?KC7c;Hq}u<{u3Ei0n|%QUqs>xNXG$W658^#=y+Y9Xr;~jOYnnvi zze1yHa<*AFAd@;{3kgkTqQvY$Lk+P7(Urg25DrxgRdsn?hOJdb4nom?7v(ToMio^B zcFZk$%jx|B+pMpf4qLJSn^4~?B#JfNfM}LLR$A+eQr;HB&#DR%`fpmhd7puX)rBb| zyUjDucygmTweP!d6t=K(BGND$jo(ZDbp@g`6rboUGwRBrM>Iqv#Jn}9wDPDJ8DwPW z%#uB!b3@G4Y6h*&x?8A3mec~^SCCHk7B1t~g^(z%7Mdibg*SEKrfik94BK&6nj{_~ zV?gQMztY!Bg!(E~iksrflhJx-!LJ(F4HF8Rr-&(!Cp&k+oVdZ%DW66|;e)FB-v~xQ z8-=J)`)faVkGZQ2fJA#?h8-8pA9=nf+3Ndn2bpS2Q}pm;qDF+7Pe=_ zTR5TT>l~VneG3e^706reJRMwbtMp;B&Z!w<)5k~oJy{WzlJLvtq*on=?wu>` z+kat3&f-ts2xyI4TBs810evu6_eiTbLKr+(fN z^_xpUWgeCc8TY*c5x%R=~}Y#Y)r53-R`iB397Ar?UZ7om?ajLK+LaxcPq0&JqXdKgQ{EE z1h4+!Zj>lSqpXS$6d2sfOk9ST;zWeDa^YlPF*EGtwj2+j*BJ)e!N2=+!`Q0)x$GMp z@Z{Sxg&YkqHSDJS>Zc$47EP%)SPnpM=d*)Qt489nu|VNq5#i(0Qkif3sZ9P7$BhRE z+QG@`^kK%HTOWhsV6rN+J5g)N)aR!P(ZyXpg`)|k#$U+z65GnSvGAOWT`V& zYe2_9+pLV0RpQn*FCzmT8&lZlMP4j6oZp840_SMLcW6ab`iUXu+qkUU)#281^0|9B zDhdh_Fp!Y^_b^;C{1P-Hf`QEUoWl_`(Nh$n2HkA@MVGQ|Dk%Nxc?fMz$hS5N?n4|E zOGZvgoT7z}&if|wpdNwB5EeI&t-&f{;Wwr7r79_h7_zhIXJ$~Vh9x{!u4%6!T{XL# z@9KbuqfcLCdqbgbON1j?g@p|^8)tZl*g0gEo7*j#e~t;Wgu;6SJy0 z`~G;%^kf$3eZxe`-yWTuUhh$N1t5<%OkN%T4z_PKe&GA}U7_G11=CsVVsNfi?Wnn_ zK*GJ{_JAP%>4Mrn_;wsN9mL7ymy5$EwoShbfX&8f!8e_d(ae<$>Gz3U>PXG&L(z-D zD;a0IqlP|R?RJy;5$fNgT~E6g&uOV(hwwWj{NbXmxbtwe53sSwztdrwJrpm51|K)( zr<(39U3hbISKfOy1y_E$+N~EyUX=}dzeGG`?9)CD2K_U+>O(eRHveZau|ckryzUcMNly3gPd5IQ3LCP*bvJVY)c z3WM`AL&%TsYGa@Nt>5m9n%&Vp*am#`^D9-aHNA_xUpvVWhB$wnCdqx?whFuS#8g7* z2F7DZmpcW|F#^a@w3 z2?AYRjqK(yAE!DWOjxFB%x)v58v8TH{yxfao5GIc2QVd!;|Imx0H(}~)R$|R7=`Bs zJrG)=2BYS#WQVEsqg`ONjTyZj|9@SX1AkU_OmEN5I$}&8mI6e7#J0_s zvIHTZuP!h5w11iv9{amIOkx)1jjndV?k5$F!&e_@FHhE-1y+=uZu%q)OiE`|KH%Xs z8Ihp7CbsX1RH7O;2mKpjk$AvmdD1;;u0i;2^;Pe+p>=!weY)qLH#~4wIeHm*`YP{F zwh>oLm+$$|GozSeU+;&LiO%#FHH_7kx6nws+t zn#aW+F=P-2|54KgKwUp=JXLg+(Dg2xcAY0-!j(0nI@gy8nD~(66ctVvZlC`5u#b6& zy2|(6^x)*+iwuX`S9$($nboP_j}Jox%M!Qs0Mg@mdgZON!@bmajj>h8ejIG}u%HmB zep~zxS6rYi0lVDvEaq_f*y-^A4OmqxJg+4m0GI|UNAqH0)40JO-ENZ23L7GA#bIuK zY~8>QWqQ~34w13+`u4V_^Fj6L{2MYhVBFw_-T-T#J&I|H~sQbg8Wfi}{li2wz zzVnSBaQERq_dYl>$jHbjvr8mjZS}tgHmQ+5H=|~q?d|?IM&63D7ymi7{{sRG{n^X z?sDDuT)!VkV^Bm#Wye^5(9!hxB16Sc$(@QP!O78(+U&uxNT4M8wTP6%9V?7=89LVaq?NQNbVaH#0#Jz}#{g%f-b;>bklbL@+YHgL-#?B3 zL8s0*eG+;mD+4wokx{`G7g3lr16`PG+z5}}_^X%fL+PG!>#@Ypu#wQuy(IRMW1O7m zUw+F^@SaNeCH~faD;FN6+iM!7N)n+&+-#^>zesj5V_GwXlskG?ian65Oq}=|;cK*1 zoJCEgMu3m+?QIKj6F1Ygw&tK5bjtz*YQe?5@4&bWRS4glW)Ui*9KEUYz`K0)ozWY|R{gC?9l(8FQ_&rjoEq!~)caQv`_9i(b!UL(*q~DifswT=3YlZ< zbfbxU1$0J;R>xLgy3Xhgko>5Z%?x`8=fshRq~UA|DyMjr!H+I)`z)61WZg;{=j3Ar zCUp=(6JLV=M80oIuTOt{2222){RAXWFGsfnI>9Z)*QE;nGI+)=B(QW5;&_->&}sc7vQ|}@p@07 zXTAA$tXQAW>$tbwU`7N%NE&USbE?+fkvg5Ot-Nh z2g-&P7pY?*NepRe5YPK+5jnwQT20kq5OJ2M*KbEe#ayw{qQ1J`3drAPMB)>y%7PjWFb`-KUu2#trcfUCP6g!s@#jY#_8e= zKPpv!q{B3!w)0liuJyY}hpw*XGYz)w;$I$y!>&pAcf)ffn6a zT_}4zfq5ou%I;~`?rCjz&77xDFTHWj&{hoeqK=tb;Qj$ZoSg z{MelE9feemG=&T?N-cUzXk+aNz0v8XpZ=p`{>=dwyh?cUw z)5c_fvJwOJSN3S0$r3`s=rj|~BM(zR1nJRvmz+!B-06BUWpuWO$BsMaW z!cdwoGTjCWn?{h8#R)JQ?3@F|bUrHi2UF4AAG$9nvHOX@^okfby!yDl_@hjmda-c$ z&43Cf?d{3oeZ;;U`uQyO2P-jQN%@y2FVb-=QvrC6`cinfmX^SO>PnKp?~jAb+X!&D zMwn#$_{~ULU4xuvdc@}p*k|c6C0#T$HqyxCXiI82l5k~AE4&m8hi?rUY0jfnF<6+@$M4Au<^4AgS*z;awuE-w$e5?-}`pC8c0O(ok{@VCJL zq~{eCjzCtL$z=F-ZZ2D+mlv0geadOD{0*OyRj~$UD1%&-quAewLauv9&G$Q%VUX>| zbxS0jh^YI2U7dxSFI8_rIR?JE2*~vz6^dOWO^~91$?|p&Zq_Dw2#oLTG&_+peu0eZ zp_9|~D~N<1g69h+s5D9OEMYD(0DY~^+q}G$X)zUi)W)l(#(GTrsrQuMHDOpuow$& zV;?J6JwG0s|D?JeF+C~#JsJk~t*k6+E0^RY8#Qg@3Qp~D(m{}lvNRzxIhA5sL0szA zY5doAB(&PqlBm0K91e@e$yTZetqKwiPm)fuKqKhTaS}VPZAh$4tkS_tC&7MQl!54qN4n& zB+}UJb<%oPm<%XssU=7yg!cylzbn{mkx-Io*6p)m=U+7JfcU{=EiCXgKJlz~(r1KG zwy;!nDnpe4KPr6>N%6H~{xw2`Wk;@J&}yHX!gKuZFf~|x-$lB28;gsz4}9at6khmxa3ngbWh>kKb2L<}LY6d%*^d%8m_|R8c=H(Ll}u7kD^QJX^G}82oAEAJj0t)7Wks{+N7ayDdv$c9f?84OWT-^X449pl|wUqTj{ta&DWfj!7LzW_k}h zkU#sxUt4Vhdb*m=NqpKDi6ak4*{0^Sts((KH#?CpO4}(u0K?b{)%=bq&sYMsJ4Idi z_ona0138(__MnR^jJ=H^V*g3Hoc1=V+vjDtU&_JXOPrn;>ph*4N*Fs|{3y+xSiY0E z*XrynGP~{H-46C?#BH;PIsWwjYQc7AQrK=Q%Bb^l7!H~)Jf9eRr=H0305sZfn4_-n zp>)yAWcfF(t@oen0NZn+RYZ%-x}5sIk%#%tbwhiqk0%xc*qwkf@W05u#(#yU?H8U) z6Rp59u|i9m$L3xssO!{!)HdLn|GlaYDI6(&8|WhL@3&W0_fB=HEOnpOoA&DcNv#Xe z7Lb3Ux=7nuf0O=Ze>6Zp7~67rHk~Afh5wiKEdG!-J7J zOL=o}#aO;OK6_> zX^KvVIl-1geV!_9Cl~D>O)>!rw@T7x5h&E+v!LB`OpE6DcnmNP7#oBZ)g_TjOO@b# zeZ_4|MN5VAVGEX+0=DOCdk89L_xLfh!5Tv*i*J7b~p-?2a zJA3>6?dA4k@G(9IiKUkn**q&EkB5*UdGmhzC9-;Ro@gmBWHa9xW2Ll zieMEL65@!PNS8(o5LFiw!4@8BIKjUu(qUU{CRM4Q0f9*KMP8wBs%Pq}wT^PQ63J^y zz%DFFj?>hfRb@pYuWYZ$!0}F7f4e=c9rNT$h+74cyX~FJEw^ANlA~G*o7NwcPzDfZ zHVs*}ZF74bfV@*n8d+#(`&{3!>Wz+XI)9^u9ffHGb%f@)%H?ufxhgr1q<)?=PvF#D zuw#T1XQ&};_!SPV;NAUcy44yd6CrH1i?qEwKGd!*jqc1dqt zhc%9*>v;qp0Vn|HomN(VzY_NQQo2eMMw^2gGy=p2$BZozkeOq=-1){&)Oed`pL`@6 zXGp?C^sO&IL`rH2nu_waXkcMEOqO?}^B6jz5<|a{ig?6f3RXrhc!RSC%ViKlH$g1Z zB2uITY?Gh#UXfdEWn?p(%7BrTIFGwgak`aN<~RP3{1JGSXox1mt2xiu(K*N1A5z0( z2`-TJpXFZv^(~-%|NE~k)*&=gDee~D=xiNQv+(ysEj&f?lpafvW@5Lc4w&_#b(4X0 zQ=!MRP*4N1rna%x=$wm4-WO|yyNC#13=Ci2q!Wh8Q;x~#av(sWKM0w10KOCq>!#+( z++BQ(Dv#1B2L`1u#Z_P3lr5JQp-h!4e1$X*V2kst@Wf8SWE}XKs!qkY+11Mm%GzK8 zVxCQbhlWr48HW>Up4Jr$M`%iPgD6Ga`p494h*7?*@zZ{~tV!!X2_U)A8!@~>2DKyx zrL6IW1&5|3+qSACMP}YU!aiCsh!z~=UaNm%*I%)wxmM?@L&jxG4iTn2ONcG;au(&X&3M*!Gq=gfoqc+Yq7{ ziCh^0% z8X0;#KrvGCFu1APFS`-|cZcZfP+L3zT(R<{S#FCZ3FQpyEZyBwrc%V@oT{{7DQ%h5 z6Tfw4n8T5&x2@;pl)>L^ZmYJt4!*zJ_9tmb1VM}+ z1E%pGoQe$$O6DOsg8Y;O;ifSa*%gKf)^e#Sqv1wS!&D7zLp@9U329s~3e3W{I8 z1Ry8e)PMIRQK>7pX_gi1DH1`1=K%qFn*Y{z!%C6{Rss9i0qdM2-HUZz2vN@34#3I}1c0^&J9OvVUluv&+!${nnKzq{->99o!cn#S`{#eW3(h0} z?Tt10@NoRGrg-wvzzhRp5-6*lN(Hg3aU(@a(}$1P(1o&r9Tm}vaM^HWL6neS6;2Sg zbdGtn6d{WY@nDdp!f%i~^2# zhkJpK{<>>_4UeDp8_c2w7k7wDoo=cN*Zih5b0qu@Bb;Q3KY5ehf=XE)~=hZF7Gyb<1BbJ%ZV}Qjln+2I97f( zX^I~F6+nME_JSh|c<@4bW(QabAqfiAzqXp#%Gqj0dbNu^i<_VO4R<1&&>C$1Lk3}* zlAta2nWf8`5k)9DY-pg#Q^aOU(Gu4dF(C02ka?!l@r{HrscpztEbKKcb*NPU>7u1r z9eQOtDjN+jv6I0iXas}BOb3{#Lu{a0T-0X$iTHDDIdYa01yiS#xW#=x|6BTz8QWB}4UwgMst zR?SIG2C*LOD#XMJA~;(4+WGFLLpD%;*6^_IL^92Zw9yj>k&N*H7(idl;rcr&#%{C~ zoHE6Poy4!26_?dY0v%o(GSc)-$U}__g6o1}iDQv-#k3yYE;m_2% zjhmYrKjoLfq!UY#oN>V90nEUv>p4uIP{`tl&vyG&P+78OQH)@8Bq)7BKZ~rNZPW^O zV<|!v3$)wYi2d)9drI|zq+vI~oN=pvCwO0}Q^7HM+Fn*(Ua8D3%sZjSD~s|f$l47D zuNz5gpZ%EeZh2{WDckYTsHfA?#3!$X%~ktDMQ>F_lIN+Ir}l@@WgVd1w293jMbtnj ztF7Ep*T>p0vHJCF2=CgGR_NKp*JcNCANk20@#-XG z=MGA5h1KEP9kyChUDBmQ$MunA(iTov-RJ+RRqM4`eI%pM2456o(`8^DoV2TTE_cJi zp!H?$`#i?+Z*f4K>m@w3!a*R9n`vgtEp`0woZo~V9uzH38knP)WeyzZSp2ld@v-g7 zaub2TzWqTBsiiv~Fnt+5Zne0}1Wb~altd587I0={!;vU|fc6bj$SV3>c(YUicyrIx zwGBVj7r@Y}ojf6e6$sW`w4q~EFo`gl<@%7(Nwe;!Z=@THH zwkI6coIfCz7kV;s4&k+P0R5{(&4M(7z=j8#zlsK%B$$Y$r=g1)anI4@iTo8@OdCT0f!%@}(AdCLJ%`b-fRg&hxtZ`&dOJ_5jmaXZ1??g;K95Dfz!RMn%df ztn2zw$wYsnNNDRK1UP@}kc$(b@Rf`3e68L$)}W(XkRT3*R}RfV{I7b?xT9BG79ze5!wCc=gfm$yu1PrewyirSi>LB^v5a)UTg}dimk8@;@EI#;tzYpaWcz zbgiHf5G%m(lVT-BmtN!;*tfG?jj30a0&@CtZ8S4A-VR0JfGE0w^3D#0%kIv{$Sd$a zzCjSG-B%1}YKot)>eKgwK>~!q<_}hj!#!Q z#xXV52pW=-*)+V2w|IvWUB^X$ekz4WG9M^VSgjsU3QJ5BtIi%v6L05$bYs6CJxjVp zp@a~#{C4lRLJRs$T3hRZ9h^>zTvyYKuF{Q-6pTdLE=AIc6A1$$u zj5;<6FRKRNXaSxml!t1}W#gB}y9J4WIk|Cd!!6^Hr$04Flg49dgfrw7#A_*%Bt|Pn z6ulu0V~cbn*aZukIrI*p)W^)}XEhN*NXsRlT*GC|5#@HTG6)}!j;pl3T1|5wZSTJ-72 zq|4n@;eP7Jzi?tNlh4#X7Kl!R-QD8(l7HrfHxar#86C4?CrHgR=4+|Omxm9~b-;A- z;bCTrMEuBm(s%D&o{!J2z>xl3`?mPeMNQzt?&}Y#>Vda2U01$cSLd3bBmdlOrNrz2 zl;6OGV$y4%r$=CJ^<67Rsf}mOyUqOi#CKZ005@HNNuCdNFu?Ix_RBt67459F=?0IT zV6QxpKq6Q*L>~DodZCLotXyAvtDZ$iyR$qxg5qqL(pz{sOOfSm|V{8g=y9 z(Lml%=FjF$Y#A-2-{gxdVnG+EXZi>h%pd;<890SJ(W>P6I;*aFI&zTb0IL?7yA6ft zq+CqE2;L>q1Tj3efRd$)$)gCV;?HcvNf@n#|JyI^ABn1(seJg>7qiOB{irW*g>}&F zE+2<-97!FdlHaSrTxVM}Zr0T(u%EkNiyKk0qBV}rfCYweR*13djGh1ud7e&J_x)Rz z*eNs0_Ej&cJQnRPnm-)`aDOO~CP{z<{a(=4*8Up~gX?YQprD7dVTK5)_1R@_dpGG< zJwMwr@66-pq9zlb9hx+T9|4)n$j*c<)3;Ii9s2IOfT<%vjYBw5k{2QkMm&eXp6=`z$kF&cTzCb$qJ1JwGpnPJ&X~EEEvB~HH zmK^s9Jr9m|O};=KT2mze-#w+{KIItIsc>i+dFd-}<0kSijlat;Qe{<2#Z-qE3Qd@N zes<&1GNzLPV5i{1AT4DiFs%>b7t9l$s-3X4V5e>M&pYa!TBReGiV{>r%maG$esZEt z!IC5f_wA8*0kKx)rvpXGLdt02!_vNz@otU``Od#)@T9}fd&8^!wd~(ey9G?aH>ie_ z)=UG2A44=9wUWmQ1R(UuqatBnADyY(KzzIsC@8eAyiBc}>zPnAbJA&vx1OP5@Nr5K zm_6kEB&1X#1_Viz;-MB1UdV#)QNNe1QFu^TJ|>nlJ$Vo)s`AZt!^Ngyky{W69a<2r zc@P1Zd@@ry>gfdq;u;AZ)s)-wxe`&Z7@SuX5s#5tS=%_=$mPx(O#MgRzAqAqLYgnG zh<{Hj#-bK87-UHmUxe3kh?fvmNmo%O+n}#!A%x>cu1RF}(sT0g9GH~liO#&l3(X8wsx3I~eJa{UfgdA6X?y7V-8@oqGgCsyCVwYoWX_D(; zQqm{DdwqIu+E|!!Y4_zB@|od0o{M16MoQXW+42{!ShO%hYKiPm!_*+_emXjg&OKuQ z6>1_qe?i%&!;MGrw!=+G8U1M#6Orp$78ItNOd@TJlQ}!Vj<1ueull_Bn zE~A(J=YMa)-_F_e&7eUUw-`4W^}nP7RBKZPe(7H}j4Q^j_UVT>Ne2Pn#rc0oV78M` zYM_EVS{h(_61iJRdJ=iu*03!H{ml$dLGJqYAqXq9fp1Y30$WmQTWMIrHK;0Eh}Iwf zK8LEA&kvS{nhAOWtfWX1FaiP%`Xgo3|#8) zlbe>}0=R)bMNm9vy+gwGnYTn%4O5}HpnFBixQhwt{>$1Vp%)nYSX8v=Na1D`k~U6` zjXn?Zr54kDeZ01+I2t;&BW5Wnz6v*wW=+2FM>NkdA{N%yH;zF7ysK249Z2uka0H_Dt0c5U=0EbJ(Q;Il&jPhH@LS`&ILFs4pUZ2F*+VIg$S$`qH5_j zK-9jO(=0>Fi$q@wMAPNtUjzqQPT~l}A%j_I+>_XIl1;OxJ)Nn-dZ!JLh!WsH4it>Z zsM9a(l#^m+k&_-$rbtos#lY#v-#`B1s}B~9g`RUs979Ebku&|)jx0=L6!??Of$Vl0qh(8sqq@dIW&g4aKV^{`7`xVY6 zRE~~LI)fmg=u&CkWX&D?<2{nU<+I#{w<~l7w+2+m^ggCw7w{k2R7SWcf-xJecf@X8 zRn+1gPrf~nu)Qg-l65DRR_~@?} z6#NM?{K^z^*i!U%Sl$+?pyFGhvXWx9%NEZRWP7)t2=s?T*xF^as#=0g60j92S+{!5 zetam|(azn;sRXsh-9bCrVH!`8*vf+m3IlY@bF69Zr@f7~&OnAqnsbW3MouEGKC%BZ zc7v6P@Vd|=Wo5*(TRLy`^7hs1Y;B;GfZS+;gcYsoZqbBnc#I7gS^E2wdEhsA{6;)7|2$Zk*4+zO z+P!=HK@4a_O{XsC<-*ghN7G zPHETetK2KbX8dN$6yKFQ1#X|w{8k7L0jQ{w$Q%6Vce%e1 zA#wgyJ>WE{xv7ckY2U69_;m7o+I~%jQlICObsmQ+=eRL$Pv!+qeKtN{obSB+{kvN@ zjbRut1zs_W?<%SL@4dT#QY{&*o~CY#Z41vsnCwe->R=uI&13g$q0=rUSLHjK*@%uP4YgL)Y)oOTaP2!k1?3DbHopt zP;tS3y&dmhK!=HviSBZAo%a)*3k9u z;#3ih1TmyC&`plE3*q%in~jJWSfN|eec2&UKH_{u?`=966Q;(kpL6HTraykZC;d0HUENM zII^+%+$#_>uIGk$=A!Pbsp(_&JAVSGQ(3Z%Y`8KzG#Ormsl;bYLdeRli@(M1=Y6HmgQ$Pf`pD@d%(PCA zP&hVv=-+^UgLiTF0xU2blFOplCfjfG)Cl1|k+zeOG9YNE4|dIQ9zDkkq>l zSZe@lJAzNaSRue*JARrRm4I9a6&>M586Kmk{OrSe+OuXu>fEla<5UB#0054<&CMmB z-b6mR4itE`qk^yOF;&VO(dwQWmj(jOXww^Wwt-0V!R0yDhA z&%O(m15mUS3xhYPI8wn%K;mZxduhCA%^v3#=tL9Q+2zNj#HAV}K{rL#8KJL}naw0A zkkP=z%m+E3LDx%NU+4by#kg60+^65xCF6p&`EE`9ntUF=^_~O?M##`Ofgl*rXy5sr zfkg`Tkzz8JDIKCq9%FPx``uW=QXr(GMAWoo)|P~KJDg8*>1)>f;^MA#WuO5GU{7HN zBRP^UgesV8g8DSHf!%cT-ECO^?-y^{gux}e zZA2JBRr7)g++!Wt(3`o>pc!p{`=Z@-LT6RqzUtgRObRpeCjo^lnxg%+ENwoS`V;Rd zt&v)68Ick>QTDmr>a&*MNab(c>D`#`WLIGfk8^&zt?I-Q*&30!=vGctqDPe$M>($b zh}Is`R&yh!7%*z6hKl_MncMKz2eP8VxGx4*p_jo5aeUiGFSm zE3PZJKSip-Ex&hb8oEbJfKHDz>Y?(-0yYe8N-Lo+Yd{D-RMT*VL6f|<;x7pp?2Y)t zVo+sG#20+ObZk6hLT>li9>~>Hbi*N0!lbC36_;uuA46`^11anz1SKmpfEc^6m$BPF z6q%K}Umkj{wXPew{``{3%CeOMEM|noT93~1B-v|z`5JuFUHOBw=#AwgbNQQUi1f5m zK3EN0(E1bpo^S-0mY)JSM1v7D*2#q$lo^pIVGvEWM;RUFo>HX%5%57ht!t&hkTU)4 zYXfIlMV6DC{C&Pc1n5C@scH^b(e(0WT1~4 z6JqrfjLtYF7QYD{mN}osOOW{~8>}hM8f&ws$j>SnOkF%o$8?OzcsHi4lki&Kb7?C7 zsj|5PkrVe?W$F{_;!d9N4Nkz3o`!MKlIGsh>qqC)SV=$jq`Ui9v%u3fh3fIt7vXJz zS63J0ciVvlcm9*MxyBa%daZUcQ?~9G^4jh?@n?miHIEl1mjdn!YyJ)_>{OQ=-8BDs zx?~4H)c1jFYqwE>fp@0A{@Xro3QPh{`+p1BTkDd48TZ8+oPT9>bAe_3}=Rli1lOU5BUNT_40Br`8{i>|3csJmtmrzxKTLb3a|`n(jJ&vOb#p z16`VEHNN&9Acs|T8jY{sWhZS)Nzobcw1btoui4Do*;u|3R`VAyaXanEh6m|NZ_=3? z%Q|o+9J&q{Pvt{)i82}DrNC0R*&auYx?Sa22jr7yk0&vD_6IphNi&2f8C_a?TH~1l z_VDz=ipIdT6JJE5)6LUm;m+wBq~9r$SsmvzIVLNovgac-xet?hxlT@9*LmAc_r)t~ zzALML;jzt+1FN0^2xsd63<)|Y9Jcll=r^!- z({OhfaPW-{>wG(4c3(1Jcd-2en)euTxB5gwVDLa2m0@z#I`2R8+J7bwpjSP<=v;ph za6cG$uj=G8gMu&S?Ba4dME|9I9oOl)hvvTLpT?EEw2<_;FtW{j?C83>s{Y{ZM7#0Y z@5gIHv}oghCz~SkpHjc?Q(x}%UlL|^07`yu;YT;QN8Tr&P1*s=m2W^VvtO^ZKit|e zPeRWz3joDhKex{0;OD}VsGCKqeb3fUJv`Qjikbi3wip=-(1U-ls1`7!7J)Gg>qZf5 z715Pkr>$d-+KG+bcnJa_kjfwuQOnO`%HO0SZ2b(oyPoDEp2oR55owRVk2`|tK<}R) z#^TomZpIEiUAjjci4FHJ#Zs!;gs>vO;VEdDZ_>&Dk3xlN$7!_kP zo-^r9lazp~9Gq{?d=Jf|{%^zkpcENzjuM$JOrZ}gxKEUy-;qD43i^~%z263goY4gw z*ama%dW+>v?wpVM^>AT>6ks$g2ho8#Rxv7c=WDzm4l^T>19Z1E2?C5-9QmECf{t4d zapBU^E+i=_DJm)|E-or5*(GFBt>X>Ra#sb3@R+@nS4wo7R%=f35dE0RWJ@FmA^60E z83Wh1{e~ZB=;&xP?+vMZjo5N=uX}H3XqcUwo0FSuoSg?$LvoBp*EhgGn+R4CM)XS}Tops^UVOW(qx@BG$e+NWdjH~#RG}*9` ziWz!$>Z#e1$&pTkpN(tIHIgU-Hpx_Ly(T>;c)=WSkfRPzSujd>b)Pa>b&9N~O+~o* zTc5Si-A08RC?qbiomDMVW8U*9P-9k^0js*dtl&Yl_+_Ihg`I<}$?}?qvY{71H}FI9 z-&i11g)N2+ge}Utypyhc;G8xqKTuOO4)qNGm1mI^irZkAEjszL3+B>h99-AhBCMemvir&qXNQ=8NroWEIgeWzsk`lJOJnZIK3 zRpOu4^0Rh*r_(KfN7gAMypqj5GM9NuWQT#H{DN2k(wu~I+p+syG7HZNw(cjfxS2oI;9`S+ZXieo9MW1|&tXtge<89|c{X0caazt%Sv4e_8befY~l4ULRe@>&C^N-sTU0D;t+Q>pn~djfj^tCny!o)H^p10IeY?*m`0g|(6PoSboGT2{YY z)Au1RuG6i8_f>lie@3QL7_}LfGWVj(d!ZRC4kL4XUEhCY=QygVy=Df0hK2n-2mL)g zd+@5Qo}P`%gRPSjpu-sU-r;R!b@?J3K9`snB%j4YkYDkd{5&G`(PowkXIffv_bP-z z#|)&8@=6b}H=^Ch&R&m4-i<`?tb+*?grXUGkT6Sj!r-elgn~sqKqo7&{)6{flUbA{ zd3idU3n>Iwi{3R~o8;4qng}J{-=-N*V*Ve|(|noNr!$z!!8&CEHe2>2D55SYRi_2ZmN#}uoT*u7{kQw({sDDj;zqeS zoD*u#w@XL+Z+tq2>a`(OjhyzndW*=`65r92&8xb}F>z&S8UDkM05#tqEejMQf`I~Q zH07IJq9Bm)l5J28b#EUp5f6$W5}gWw_~#R*A=*G)y;OQL{UDG-ZQOdD6+~=~)Davx zTu0CJTtyz~SynmdLEz178A(2*_ZzsrdFAZ_t5iRDSZ-+9;p$8CJF0_MQVd>7`t1xf zN_iXy`itmD#00!|ty~}ZBV#c2zYanlUZ3I)z>tE7#F<%=<@uHC8B-woNPFl<3163q z@j;knDVk|tRnkhL|DrbMJyYJuVn9Lnhsp{Ex=7(gb`uKe;6&^3v5~^);5gAzghMC{ z!`8MFG-!&ntj{p`o-C2`zVv~@##o%6jiOo8tcUQG4U@SpW2OoK3& zQON~Kf2_S4QW^GC#K9yoX8ck0vcycSn|>_dK8ZR8iD1pe%Zm({tkdMVk)n77SltnF z*b3q-=_9ts$E}U&L_lD<0Yz{I1k9SC`T`@Kcp+|K$@0Z!N%wFX5nowJ6U*1v!KAQM zM$mVP8pauPhIM88S(e7Oo?uY23@1y*dAw@QiHUp(8gdt}GR{kSWW`BoH7Oc!OFL*x zswh1{iGGiBWxLCNW@NMXx^)DU`*1?)(iUn+N^u!gTx~w1&F>DP$g zCJ91jN5#!21e)tus~R8yTs4-{oPNn}_Q=!1bj+;s94m3MvbQ6DYI6B4iy=NA3mXIn zY#d{-lBZp2Ql^wKfO1S^#}F`PjG%mkGyx@*4e=hB-^?;Z1LG?evLkXaN-+u)8H&uG zfGtBR`)?Qh8(2&JL$KW?{{RcIjfKXGVjQ-cC_2($q^Jx<`L`Zpz%Hwh)u3sH|8ZrX zpVF3=YIXk8I0lHNBiHF(m5g=kXSsI8(?#^%@l@c}VeFTRyhq)eoAspot6ZHb{YIbO z+lS^kgM1d86S=?+*DGq^F}n-P%SXw*o-nwiH!<4)( z`0}W0a^23~zHgAeu8Pn3ID?>h$bGuW4Lp%teTbfyyd8+(qO73=b%S}ipI%Jf^^p0W zdq6g=WhXO=YaVXZAK%i3cWxX#J#;-i>pFhselUOQd z;b|t9caxEqQSznv`z~|fDRbbaLcr$b?i+mZ^Xars{!wb*_cyU?*Rg3G`%v9xKY)X9 z^R9{A`x1&+w?4*Vsuegwf(gB=q1+ z#>PegUfNnsn;5(wU`!NZN@AN~bW_yiNG#qmJ0)V|IuB6-{EU~#(mLd1h(>1)O}1Ej zA}E#pso*-N`{sj3T(H!0bh7O{SQFQ1Yh`(R*=Ye=G~XnmAgr~ZoQS$)2JaR&Q5^WUZL z&!0a@Nw6~*Fi2f>h^{X~P$D(Jfs(?Q%O)qrt-lY2m|*DJY7d>D;`;KD`sA9nRR?(1 z1;AgzdW7ja>exp?%A@Pq*bV04daTY}KfT`gc^L>MoUsbK8_ffCOwbIdUaB?lvK_`% z^N4Y)BuBv(%UZ1zSZY*X@8`%!<>xFI#ZtB!k@|&jHXaeYKWdrhBDP&=cs@DO+!W`3 zjJfyRLKt{I#(eFO3Z1HS_I*>;%|c2^N$Y~ zFE4LldY)p+=%M*ZLM|jW9ShHd(GBJ~kR!96>%}ys zt$uWR^Wl)&S6H~$_bQX)juw=k_?sq(Y1Vw{&ik48b=Gw#DT>J7MHlUPJ!8ywZhlQ7 zZ9{4HS=-g+>Es&USg;fM58c}er%XjC4#yNk&xQ{VEj>N!VXty0Ba&Jrg$2b=QV# z%T3%?8?zImn-MAG@GF`FKr?Jew=gQvbdPYkeYt%T9wl>KdR|t@xlySmrAAZ^MKV!@ zpq+oz3s!>7puKXgGd=?{gnOO-^9pFEAqhe|#c{;%9a&4oTZ5FQF~^Jrx@PEy(e}m4 zk-2(9j%e7~{U(Q~$ihpi8vM9ajAq?t{P_q4#Gj<`6WfnyUw; z0(7&Nj4NtRLOZzVwly!@MMVzEcw{Z4PUGy}HoB%1FV?#oidMfAI@M!FcJiJWbN$|F z4H)owF z1!HKyFGQwVc_IKqYA{EwlWS|WQb3MsZAE|kn>;c>3Z}Vli_2U6ikDaTnD=O z6q0BZ*zBY3+dkP>3P9xF&`8@mm6Hr{cGf>Ue0pyA(WhNV*f{59jk-GQ^XKImS-p&Z zZK86vh|FR9`23%5l*@0Jb#0;g_7=&!`dQuNRgH;{Jx9oCQVE(tE?>HF;tciL+ACr0 z?g1KcCHP_21Y5b7Lb1KznVaa8^}N>0L?%xo$EPB@q4u(6h2g zeMo%?fFV4B2^)7M?XkY$vei$uy0e(QSmwi^ zZ0a<~JUR64rt6*r)RG96O?k43;`n3Yzw@;skNq~R=m&#%K7r;Vi~#8;^DsYu%+oq( zh`RX~9E$)9{j48MLu%?vhnq@&rF!KmZ~?)-pHTW<^Q25(`_`+Z#hO4%-s+}z2NRWyQ6IK_4``iyJjxNbC?b9gFX>-5Nsp_N<*Wn^9 zsV3oI6U)=LA%uL-cpDy6=SdbBZ`cM;mJ@lnbGJ`lY`(n-08Qmj2T`UF5-GBBIuqt2 zgNEga2qMzIVM(^`r~BCoGX4ovWKH%Hpz+$xd!4qSiTj+TYe}jgzbQ5+k`u<5ss{6@ z_HdxmLsqcl6vgPXjG}roGpXrlTmGI8>65nZ$L%dw?2e&_yA1NG#837~ajT3X%x$k6e=ZvE-5jppvi{D(h&?01>j3)ShmF_=s9yV$){ z7cz^KynT}-6d(zM>(FG|DV+ar!Sp}M$%pAez0>#P5M%$6mF~X#D#qk~PM!bkL0#TyTEePi*V>+RZ2@0a@#N!Q6sTj;K+$wReo*A1D(dfwwm+Wp|` zuJe?@A|2JY>ZFZ9ajKcy?bh)Jy2IsFHdQm2CQcadu z51%5su9emg1ihH2!(x@Xh_yEW7bZbj@{ijn}Bbs%eR- zMD+6eJAgHn7kIJj8F=NXd(`;+TKi#|`(YXZ%*YOA?vA>i0Q2K2m9H3Y)ULg~^2KLk zCxgXH{9m!I)x2MByCQv#(lqs75TgQ(U67Zu5OM`39I2Qg6@iw_VPsJdU}!Nj?L*q1 zw@(WnCd9^&yhVKJJXv8@_ZSPfI~aeuSzEo>8E$P#aTiE{GRgh~>Tn3;q{+jXfOYyT zb|Z7R279t8s;owCfbE!>gounvJh0B9Y&02KQ~@5 z0*ebY{Op^f5!{7IFSRBO0iaUa-y3HeW#{DPr`yD4t=h#%%(Tj7#Z3{W8z`b z=ygKkL*W%oT*in}SLnw6%!1Ko12JFL^A+4@e;Y9^S2O7n!H1SthztK_Nk`&Oka3Fxa9e z9)J)id?aGF%`Q^P9{5N(XiHN1F%c+_mitJ;tn^ahBPDQK3fVmR!GiUN0egl=C4>d5 zfC1+ZSVbj0odv7+SC|q(pLFskAp4+1Fd)Cm(gz_x@CcfjhxDO7b_6`J;Qmp|b}RT! zJh;NJTWTw*ioWtak1145WT!9m!}5`be8)uDS{B|N4B{lR7Z=g7Yx(_E&i>Jali^a! z_U$9=aK&jO>N3}VZPowkaM^S6e)Wau)oPpXS_kmwRo6%V_O92<3%jbN06D`=Ge$;m zk<}TSBdGHF5M)Ta0_L2``qum$dbFJ4vE9bH#w{R36V$xvqs|XQCP-HNkoJY5ea2@A zKf1aP>6-Lm>s>$1fv0qFgQhZj6%uZNl}2AQX3m?pHbyyQH!h7Lq9(c7Rg+{3F4~TK zx^w%O$v}IYP+Z%}g!9k57=^P1FHh^%uGcF|R7d+Ne*pxu$ji9a730NSRB1~Mn7ccK z1i@iY4eRGK;5eIOTdQ=0C>xwgO{E;o@Qc&AjJaLB^(o{B>1{i3a{kmC+ys%QOfz9_ zubYNC_F)jmW<=99x=9`<3yAKnx|DRk-hw^6g@laag{Al-c=-exdYI zgI*;Sw>HQbLlNd3Y&sP#Fs|1KJ`-IzV_i9;=S?FBIvCVAErZk5z`>#Oo6e|R3kx^b z=?n}|Tatj<0tf>q!+)Pfm6Yw|=q^~?$A4y7;N|$!eeR9;8 zlmEU1HhSaAnwl#23V=Sok<9W;_R&Tty9!}`7)g-zIAw`cw0ic-}K1UV}T!(}ldCZ2mANj-)EBt%ziPGFumwy1dI)g}@8_6C^UpHpq=w>!-x)~1L zwL?@M^Q~TRQI%a?j|Qzah*I1sn!hGc{Cbu_J5-MrOo--l++<6H*9$RfE3bz_w!Muu zt2tV@TB>{W!KFd5y*xMtEGpB$U|lIw)|N>AD;|m?zhYm!Q#U4&Ss@AAk;NL^0Ew%w z@6Z9?e-9&b=t`o75=PzcZJv#yggwbK?PE)0;8AZ7h!WuW9iQshg4*2~6a zL#>Aw4$ftezce`WulgJb4 z^p_M^qEAV}xXA(E_a;aW`@JLgIF&g49X3}X`e?tksSfJ23u!)`M$8U57Rf82HDaHV z{GRs@r6XhxYGaeaQ`?8bk@RjI>VZg!%5+EQrc95qx4bT*Pg(?yyrd=_ib7PuAAjiz z2YdL{jVKV-M?j$6@iL%eGU@2C*RDZ>meIL1%-~pAW*c8`o|{-u)Oe9XwsK8;Q%t%6Kg4Oj!g^ zAZapeVkb@Wf8pfwqa;Pyn*J5?ZU%@D>U)M4?|)yR$=4^P68DRjAe1;-^Ass7hBnGJ zIk=lplnznWR9$U!;Go^MxLD4FsBEk@6RIj)OlZ_<<9vr&y=#p*Rkt~mV9_KS_eyDN_T^_l2TGb57He&cXuNl(jqBCcOxL7fOL+4v~+j(JKlTW zeeb^YmTTcKGI&rH|9!r_zu&gc6LU@u81edkl@)a7keDqldp8H$?h|;vSPC{zD}O0e8rZj*6D2sdV-Z z#(}$zVC|EZU%#1WHSE1veh4W{IsN303Z=nJo2>j(*O08%tMX9Kuq9TcWa2!0GO%{1 z)aoIAwckS3G3B3|sxmWu{dDcMB&@5eKkFg00n)LgW+ zPYV~VUz&!8qQ11V66hQe{B&90C&|I2b}B;`R{5BStYA$is~lgG4SnYgI&L$s-(a(g z9okA`XV=%zm^PT!n69pGuB@mm9Ue*})_kKMIYO2u$*+L1P^eR9u0PjS8l#;4dZwbG zukZAB_i#NW47MKDv);4bu%6O4ckA2AQU9HjU0cLNqcr}lDIN+_Tn`K8x*D3S&1+OI zMCSurD|V~lHqLThuGq>yl{5RBz|Eviwy{Ar*UMJ`J|nHFL3DV(yxML!U(Kc}>|dKJ zt3~P`9E8knA)cEg4=AP6tE=WQ-R;UIK>1kc68SLc0jAz4)53RZ(6rpA7r;mc!8{kzI%>y29+E zbt7gEw{ii$vL8@T%}tUhmojM0OPU}TcKS`6>?$Jc$mElIJK!mRDVQLi(aBPKa|90= zavZ;S!d18&r~vOW*%R&vR06>pvkI3Q;b6E*wr6r9VM)$6xN;ltgrYE@T7H4Kz-=y5 z@gg0CaK)*>sa<9p)uVM4F0h}=Jn;TJAZxgeF5oKSyI1fdnnRqa<$U;V$&w`VA@HU| zWXBV2X*qv^`VtNHWU@#dhxT}yFTRJ%6t-NtLXPdbE*T_Dq0|q{*@b$&UCJ7-IUKD% z9(6i6UUUlxT%R9%H~XK)-uy%EK41kNFZ!8pFYk+7FEzNWylV%3yZ+C~)AcfW!~X0q zzxJLSA1`4r>SOJ~q)V@?ND&1ht8;gp{D6L#;H^BOOBZj0s@|Ww=)ST2)31uS)h*JB zBRwmt7(#zyWP2&Ha*|KOFJDUbL zHnG!8z#C<)t&eWuQ2-NyqU6!YOO#BhBxNaQ_h}gzIPvCP%fTGGUKN4y!ZC>j%VX>=k$SPV&;to)(a;Ip0xcNXHRX}Vq#WuhS%=G~ecfE@1VxOqvtK8uW|UZE#maQf zYXF+SE}D_dRl*YeuxuN+@F1jmc^5XcnobsPssv9I*uh=l&@UGcvgu!1%SPY0R$^g=!L$QM=02 zm+?y?9>xT%FmfbEVctb;ei|}Xz0{AGV2pvmUeHIX_pLs_{4WJX5!m5gCJl#-9O;4M>BPazz9-|@qnKRcoSe9+$O?Ml|T=l1$sp*Wel zuT82n6IN)K=u5Vh0TIYp^ z5itiGmo;h{BjFEm(!C=i(2p`_Gd|Qph;hk%r5c1OYvW)h|DRO+bJC;G$j2X#47m7= z=+=G~)fahdsTpq%{4{XI`JGlgyARH_Ho6Wb)#i*#-zJ^qM_JK)M`k`#N}@QyY3TfX zv+4c)-F&mxb%!!M(-;G>?V#r2p6sO>__~*hI=MBQ0iTvf{XEqlHGvvEyyBvy=`{u; zGYIt41FW8!PwM(4R@6U^7qFMTKp-LQn(O4vRg8|1Tk}5C3R4EN`m2mTN&IuMc2J)@ zZp&)~W1Mdtp{{QN%D}5Sa!%iT&J)H_No?GV@gzS?Ec7TK{XzVjtCT{RJUoTf`^3RO z*@$r146VIT8I`e5V0VJ%v9Nf@eP^q=8T~nSqcdE=#lt(;h7=WwTIVk~)c)Cm1n_@D zk_L^Lg-~uSKxgdvWtH6o7jx2jw@_}V^k8CgIi2`hC}Iz&7ctpaD&a4|DIx~i2h3Cr z7n8D(+)QM-zfn0Uzs+3g&|xPmRI*7I1I9yVi^PYgr;sR(TIEsXksjy zq>M=9zLn@C5;5?8C=bNVAW1IEA6pt(6`K~5rB(S&8v8Vn3fwmBd%!|2BLxNp?T?pq zh-SK860*=#uo|4Y-VKo`sfhs=WH{@wSy{C|Bs9os>)Aq}vr$QC8$HN87W$yoggwmY zp=ors6mj<0Rl~$W8GVLryk`N(7cuz@{2(0J4|Lv(=hGg)Z z0C6X=`_5ram!Q2asPPT)YpshP6<(bSfxnD}MFqca{OP)Ia__tYe}U-*sFmrCR{u|h z6o+@Z&}nm0wIcZK{-e0;7t#C42Df9Tm7M*s7UOom#OtY+fbBJlm8L&p9i25n&zF9W z%O7+{SNm4n1Bq4JT$II6L}o82Ph~RhF2+UfHjO)gra0g2OJ)N8=L!0&&csd+4@H-I zS)zB#T`$oZA{_{SUM%9iSO%Otufr4fi~c*?W;<@kY}`ZhjqJ+sK^ zp6l3qu438cno9e^sdGm)5U8@&rm{-Q>beNBAL=*aIQM(Llk3>v%VSLJ+AUeWGkktr z@;W|+UPOp(J_y-yE0t9 zld;ARYlm>^+a&7S&g1(|kt^$q&{yC8ZgK_PUhM|m;6AUS1^z`l`mFIJdEt%YD3rF_Y5xpdcy}QMJjQwjH z{28sW$L$rN4xcA)`31tsBbvau74N4b`)toPQ;IAa>7wEKq4TwqosEqP|As*ZJ-Je3 zi6XT@Huzs1tsGnln+aO;?o!1Pg$mme+sL$@dDG2Ck0HH79YVB`h#$2ahN@(0FewwL z^KwxYm_5=O-*zje%#2KlY5ms!d&@%Jc=9d_DK7l9)YCD?iF0h6OGQ-Dl=gHxT<%SR{8m0uB!1#hL0w)Rs+kQE z>+dg-liOx4kx9?+(b|%!foG~(`L(y7&sEMIUfw^d)Fgsp8yZqzFu-!;7_Vp}@U8?1 zcm3gA~Q?d#DuAxHQM)2gmTVQ6jZ+T>70XV>gw9g!h^#_KhxSJtAYSF#hzNmBF!VTk0A68RUMcdd} zCC6}i`5xfZCTDxh#1zf4@RRj)%TEy_DiX!r%p>T$akM%;Lu^2sCVR0v^I{=fK8hK> z0PXwC{$lFhV^Oo=mw4!BLj;M?4{EeX!O1(Q*iofTGYGcvLm)P3neQI>?BhfGa*b;JSVQ_#{{B|nPu(FOBqPIrco+j8oPgCfRI>&-9OB~ z^l8$w0MuD*-`WP?Wz`Fd80O?TaHikdesFLtx2snv$EDSasN}4YLJ#{fX7BrW2MEOP z?G0}0clJ(B+?lfApCcRDO`blTI))rG6&8l+5TJDl4}vdmLhbAA9;)A z9UR47dCK1VrF1MExf5NeV-eA43~Tyy3i|IPtw&PpE{f>^9;52`&}Q56hWreO?}i1- z9cZzy6FeOhDvJ@uQX<;p<_?*J1Y?3ZDc%D+G7wFl)ykBO;`uh3gaQU|Th5WQVD2b0 z@K-!`j6uzO-yL|>F3`#~HTghNEe_@PGJ*QY0w4!hpi;grFN1)L8T^&gx?%OQ_*+0W zHN|UcZ|}!}(X*3qu5{Z5h)h`wn=_H{jC92393;8r*VV)}o2hIAFQIlDWIx!PWhL=G zt1$0)76fwbT?_X>geg3k2y=>wkn#E{T%`GOu@b|LN8I#ajxN`sc^4NEgJP%LH z-7)?z3DdPD!Wb-2JHy<(C1F9|o7Gr3$Jb7j>gjW$HT7{hnzCUKyf5y8JIZpq&VO>^ z+Tma;UNDpS5?GVMoT!Z96vtk+7CDPzhTN$7yazTq8n)S!SnaqxG&WY>XV#=!uVpHr zTnvN0-90|Sy7G){_sbbny7a}9%~wiGyR~)mb#`~Xw|4Qb7ZYKB`Kr%XlbC#s>`f#X zkI^(}@i_i&>6C`@;-{m)-X+YDOG#LA{tdXi02wBak|bgJmqO#s24gnYE%XQT_Vnc7 z-elPHkJYo8uZB*7T(#w2E2YfnHGd0T>6&u<4R$ub5*wJ@?gM#$M*d^;H5vpVKu&`i zyeU;$@34|4dWwn~5Hi6lP+L!7ss2t&GduyEHhUs_3j9T_xegl zh!4b46+gp-4x}>*NI<~rwDlDevKdG)OOf(5*UOx+Zbo{=W=7s~Q2Bq0%d@>vM}GN1 z3;=A`C+U!ooYZ-UjmznvO9R!76M{cSL3o2UH|QCt1_-?lO3cI0pZ%k7&qn(f<06(cUlee*C$M!T&-50g;7qI&xfAZQ!i5J)`G z`6#IKd}0iiW9#vB z{cFcIG`M`KNECvBu6xD_sk6mn{-{73M$k5N+~J_EtVC@RCgqzeD|UW{z;{!gpyaQc z9=8FdmM+4_Pct*o=pI3~&+&j36|oi}*U<$DCXNq&B&a7MBA{VOB`}esj%FZlvYAWJ z6*NtMlGP(&`>h9?EG1&4L0*6=C?sUp+@k0E2je1g6CxtvBMwXvDlwcJeSA7oAV=B7 zD=izu#$pnoN8+{H6atqyW%wxMvR>E+YmlL;m4eh*RoPf27!qShFQRI-N(U>-?4nyqjLl`^KRAj*(;?rM`%lp@L%$%$X ze$`oB=fqXU&HpJ{eYZT^*Qoq=61wOXpDFmLI)nBVD{#Lr-%|N4-;_bmZe6Ge@7^Tj zehxfH%UXGSv~n$<*|RCPi21*hXqOtld1a1YTY6vhFZ-UXDqgMMKi}>gKRFzy2i6O} zgY5^cSwf7SpnjL^+j-}i87|}6m%l&L+0kZ;`(Mhf-iFOahV}cI4-*Cao#vGZD%?~? zqJGLevEgdHZz?Hd?jw2}ePwVzS#u-kqcoED^sdJ5P-OgQc{gC^gSh{hqVY9Y{}nvr z(b(x}b@rX_te9##>)lDt*h1GMyhT;~Zo&9GJK=^p^eHaWKXY1bq{J%=jr6l49`Gu_th! zX;0uOA{@=D|9aTop+ZyFvU%~hg`?dI> z`XE%9Q%<3!HH}=PIb*9h1d%X_LXzmQ$9vQ8ZO)%k2Kuow^}`TrB{Bb3QmYczSv|cRJX2>(jZMs;dRnt%2u^Tb|F^ zTZtWe3NJZw9bSI+cJcLf_4jvoPkrU1sjrqFN16};8wAv;YWq9F&+~KT)#sw)=Rof5 zZH02Pk=4FO^YTWPawf5bk%k4h$zz61mY|(G$y`eo&4oW#x&M6EnfC|>b;(p*0nQyS z;L|w|_`a964Xi_K!?Dx8hD1eG`@CF31*Jo6Y!z)RhK5;8`k~nsdu`SGLwXkcWTSc_ z;a|!utFvDuGaMD?JmtfWOTr|*1P^dfUA~|~3Y%oBDw~?BV(VEtVnoOH$}1~k=4fkC zapExJC(X)Gnd-YaUhFG!L`s>^xUdiI9mxOHPP+Df0lVQw$Z}_rK92a#Z{V9(?%jye zn}p4hU~n28N`a&Hb*eO#H{>ls!OPjkYd?BKbG$xD63>5AO5q$w0N#8kV~FdD$sN^JUdQq&qjKdTdOKxum28CxP1c;^D7}k9TFc-t5@#x0dqw z1l`D*$avf&1;M&}v_cG#pzg{~Y0t$RSB|Nl-kfyWpPJqu(11)PN*P_1eNlNRVlOH1 zNpFVkb+PuJ)DmfNgTSl#Q~CU~!XT}ATH&Hf*$Ve~6Z`>WXx#LWyGT#R(($00ZE7EDRC2`lx z^i1ki5vSdU_USbKmLX`?EXP2jwXIDRV zdvNpK-B|;QkSpD@<5#_U6Kvk~uyG3gi=-*umqs{gqTjiXm(}u8W?zGgDEYpmwg;h_ ze6y!dV4(B;&R4mY0=P41at1`4E3lo|}$1J8mK+oc4BbpFZMhal>gDep!teC+@?H&Fq&e&f%gG3L7XovBZ$Zi{=CB|3 zi=^0VfPnVwaa5Hn!!!fFTk(G4HJ*0KWrx*A6ofaRWOLqZ6o?5MF12;Ed3d{=H|sln zW63YAEk~3?KpwL?Nt>!C70hv?j$o^9?aflRRVRpN$(+U;Yf!V6ra zZp1}lxrEPyk>TjxgTWxOG*k`DCaHJ@S`yQk@RSqtPvPu!BoC6Z7?u(yOfCyf_o~dF zKp;Lv>tqZ>fQ=u62LTS$Dv*rwV$=jF%O|Xx$#FTDw_VqB-?p1i@DB`q23UdkJwsj1gm-_8Kx$#D$hjm^neT2@+>tbY7;J*p=Kb>v68y3h2+QaW) zIeO}GM=$^SX=6b7-6@QhP`;ISPz+fjA3a1(2)QIxQ-^IJSh%>fQ$OCJVO28;8alkxwvdoxH8(5>-!+1d-FXO$5(#?l#=ib}sstPO!z>XdLuAxX zWu6tA z2|kHvMyQ$9psrPBbV!<3a48XQ0sVY#nlu&<2w|8bX`-KgP&R0s1}sKJ!jK-=FMQSI z&9J0p_dAA2K5q;EIzkQc!ba`eXzI0bPYa@B`KQXUd=0m%&-kCB!(W_PaEco7F<+e8 zp|ilE@^BPCNO=@dIZ)G<76*RqzD7g^hkiZ|EfSGIWr9u6*lNg@N$jeXNw8A~RHUW8 zrq= zX68Pxv@)FG2YCajGq=m#^&P`w-`Oi3x@E7G0I%;4(i?Jhhi!+QORFR^iKBi$%w?yyA!2pjB42W#iH4kxiI`?W}?m%$6CYro36fg|t zQTi5{Dr^Nhr9fSlZ=+bX-dL*F4Y28s=zm7_0b_+?p_ksc1_YV3QjEAlHVm40^=x2q zvJR;jnkK0;`Mu;UXla+{eNHSccq0*0O!H0&7uxbV}pG@iki5lL=D_NId5TdWlPwgJusAzg-=@ZQm95W+yW0eoiB9OYjPlTfkDk$(6bR5VXz8-9B< zHuiM1-1NAAz4&cg=z8h?;2!8*v|7109iQtu{&g_F?CoUrt(|XiiS+Oo=lWW9_KI1c zTKTw@r|Ww8HsD(6xK*sn#oY689_nPppLO+Xy>Rx$6mp#BK;b8%Pf}708kKLXM@yqZ z5NxtU5O#nnL?${Wo_<~*uGe9LYS9piy%F?$5@MEOMf&z|?Wm*{n=a-3r7?m0xrff_ zgJ=TzuOvw%(cSnu>ItdlqfrS4nhW*i_1|?IVx}zv>ITyH*|_%V-94~@bzDh;$Q%`3 z3g8kZ$Nae|ubF!aSFooT(CLeaM68C($71}O^zw3?#<*ho$_*UKl>xT!3@tvd-AWc7 z|CP&b?RQ0zN3#2F(m1C}K?A5RF8tC(GQE84`ENPCVnEDqBU*;ED zg7eV3^P%CUATt_NsUV9SGxcsv^k{zPC=xnZy*^nvy?)t#J;qPyc@EOk4Ue^(S4a_*nU0+;LN+a@Na zo0kp!XVdyL8BNdq+9K5?*6&vV;i+=SKdJ@m*#IEb-Xr8M;V{+YU2b+|T5H3km;)SAgWHUcrzr zE06KfZ1HMz7?(H3BFIt^8chMRL6O9BpYopASNgRy$UvDWvJMfY2=Ax{n`2>FD`O!` zBrs;7l1PUBE_{&S0U;3}u`p_)AGW~KD()aDiCuZ8vl9Ez4)dT$UscrOTj^5xrT=%DJI zNYY{REEYs$MHe$}$2N2)(w8qeZOc#6z^Ldir!>^@DtBDdS>m;}6s6t{W%A#IGepYc zj!=c++2?;%&7`ceI7?DaPQajn;;2E|K zH`R|N(SsGw%{-+u-ct=J5vQr^*=c07zIUokOxn1OmMnzep^J~)vNcdve5sRQO5-RR z50s4-!&bzJpy~#lxOuKL&~kTeEhW~8_4PATmc^+P`=^|j@$wRIEBbvB;Geei3$Kuv zEW*orpt}mI$`{k7`c|y$aP6ef0Ytd6jxAPQMx$Dkn6G=ch=KBMBLJ)m@J4#)-v1^Jy z{&D#Vois(d59g}4L65UscXs0EU0plkK})j_8BULP+5xlTfj}fGMZ4o6FK8*_X>{$q z($OxDhPKEjV8(^tlm=wk{*Ndb|EAZj^MAcxrT32S?zqc4lL#4b5VxOaapYvAAi%sdF*hyLK<9hn`uv15ab;6-L6dGvmOMgp9o4 zr^~b!|AY9a^Q%0wy?M>eOE|A-(BGx?LzLoNr=q^SIaLG?-L3qEoAx$)Pyb??M8aegKt<^8pQ+{W z=IT3q96Bqnlun2jAJZ3Pd=U)h06M8(*uW%gev>t}_znB`<&_9Z|DeWhrc#8~NwHbP z@%&pKOi1BB{HH<|cCUONCA$Pj+|j}c;n8sZ7;|$(jd>CL%$(E`qFf1-ryF2E@e3&V zV+LnOO);oU@yD+LtCnhU$MYoSoE-t^n0-&^%fsw;kpjB!W%nhrx<9jEt#d0Cu;7FV zVwn@#XEMht(ED1|N|*-k>~bHY${r)4s9|@0ME{QnQJ>A!;q^TrZbWlOEK_dn+xYSh zk48Mbw(i@{A3JWJj@+%pa+Q610!vong~6%4rUW0sB)?3F}LQo9;%wU=v?n2NDCh0fL4zH^-0a!Ku9W$)jf zOLg(f?Ds>+f}p`;s=tn&2sQN2v`6Olt#3*d5Yb~Z25N=0 zWlSq#vQxwm`9mRiw%nL;W>7l2Sb%s?AKSOLX6Dw(k-l%6GAFv-hH96UXikGDH*mnm z@85_5+=SS@)-;wth@MsxQ;|TZ^#EAO9K-3um$yKM@U(Araz>+BCe#;d7(~;s54xIo;E;Z&cJ@W6CxNs%hyDVaaIg)rH z!m+~w@jR3#c$hSWWrlix8P6i$vD6<41=kW z#*4|ta=bXE|4vq0a*=pvO z3M5ht-4S>fk~ARfaQ1FnzDN@_1sfDSo_hLnU_r$LGFM+cJfxX!$K0gs`dTzC9J2`` znGa*xb5D877s8&*UJ6Yj7^j;@A0Y;hqaMW> zy^x4j_~RRhvWAfMy(LP*kL_dD)V<%x%knJ)f9X~6bmSotve-kxGb|s_GX>e=c`1qH zHH*E~X)r;=w&Lx014`A6U0@ol2Bkpqry z3Bj%Vt$}1;A$8|>+o=^;@@p3BDrCzym+A;?s8#&+;UC|;AqRnM*91f_CZ-cngUc|E zFr=)@;}^f+f5^Q9k=C%o*l5s07`SepUo3?3UfkE2-*>AbZG2Sh)CaHhB|m}1~O3{P++~6-5V4(o^2t{h58c( z#&aa4{7|pY`l7YfFz~SP9upWtVZ1Qg9!PeRo)Hqt&Gv!6=l|f0h&S`c%PjXaWxir# zHt)OUFJ4+hFi7Tk358`!{XJfQ+b8P4U}d_D=doOOS0HW`HRiJw;c$q|SwAy3q^0R# zH+v$bB1pL_pFJTxGdG_iQw^3lzragMd0<>gg*MabBt76TmJvvm-yO-ZwItF>b%})p zl@o_@d|G`!`K66k(1EYc)DD2J>uKxTMejwh(#iG@h7n2YPP zWGJDk=|$c0-^yVcKC|?pTI)IXqVd7uKXD5G`_F7ER=nYqV$tG{(Ua39s*-sZp|!dO zB%r?`kq4)PltdHo-{i~Q{TR<>i7#rz8~_agPxAWuk@DtGm*=$|HQr+;F1Zu+^HbF{ zIkn#6=^5cf7M0%j%`FT5(P<>HH#Q&F$1KF%zWK*pmIJg0mW1`h=bOY8F^esLbguP6eX{nwRZZ zi%r#r?i)I8KVvY=_24Hl)+?nCCVQwKV3Kw$=)7S+@*`|8rp*4HraPuJ@==O-@FSj8 z74BF z@hSkhSQmsl6C$}8fNd}XrPS}A`5Kw+?;0chD$45v2^TWajeHac_}QBu#vQX>2yk-S zA6K0PNfRwoR^55OD9berdcP$dEe1q|Xci6=>?r@07a<`^{u>fx?9x8RK>~mgmL{9Z zPzD^%@v<-;^wdcbWPld|i-YLFcuI-vuz%%GvY|J=EyX5-HD0M$RY}^ZeSsjcppNFt zv#Q0UnrUFkmrAgrZX$(zi8o_ht}Zx2&o&A>-^Fu zcZvAschTdY@n$XQSD1Nj6lMkIH{(YqA3hx8T_uv~-=^IcyV=b*ep_RFi%T!02G6|LTU|1wRRPNOF)1oz;Fhkjet6 zU!C6u(kslGIA?WpUTJ7rQwpp1{-qEmsF#=O|6+nL6NP?&A&k5UmbzVIk=6Db)3iw2 z?DOpq6Va#0%U%%^?F#Vr-T!+r^JBMap(K=;a#8Hue{%Bnu&3`7>{-V$ORh~+T`pPg z>yL~-H2H2Yd>Qn5#z>I?gMn&P9XpC%))pCrq5h}&!;3M*Bs0v$m^hWNd_tKe!M!4z zE;y;X@T1DSB0TVmXTdk}z8vnoq1Q2Ork_a&?Fd;Z=}>c-)Dg@I-77WG^RqveyZUH3 z%}l%M8X0U@S=|oWc={((Qd-CX37DSC$xXm^qTPi@I>hNfSla4%oN^<4Ip|v+G z`%h&hq(H<;FV-BHl>oejn$77&tliRm6TTX3N{>8D65SO2S3Zwfi5KW)K3z3w<&+8< z9%C^)J`#51znpbgm|`PHlKCW2WQawNSXPCI$kK<}4YCC)5KtW$f>0!4W%Ln%9{G60 z_(Frtp~}+p@-YSdndZtl0zqoe4a!R_l{V2LO_E3(<|ChCYwj%EVv&wPQBvj5&s!rmmFp+b#rt=vc`I(WOQyTR<4b(^dOTf11K>(hNeN*0xw>jie240wFDMUeu|Xm%rym5 zD4Dp3UdX0f`C&AMk#*{&SjvA=*3k6%sg-oXlpK34apEFN8+mF02~>bYgB&TLm!$6M zgik?7FYE&Z+;sp8<5aq-TLvA7S7pAvO?|~x z*tnwK%8s6I)gid(Q!2{w61p#HFp^+ru*xeG7aBYWra_ zL(+xEEr&ObmNwgbi>&gj<%&C6kG{+`63GN0kAED#832+iSo<%rE#Wysh!-O{pYbOr&e zld=ZM-*}CvjKOKw__iJ^m`6-SS?qd9#z~mRnwtt)l7N^^8sTvRvtUXgaMt>Di-WTC z$K=i}=KZ1LFg+D1nAQ-O;a92GH$*V*mz2T#4i=9 zf7Zu|CBQSlMT)m&xWQbZjwZufXMf|_8eIS0EgD49Z6Id%-}&tSdhmFvHca$CQAm8S zmWLm}p}ie+0GDz1HN0HB53A4*yuLnu`(BjtaYZ}@a3)&wh>Zj80ySqJa?uVye0z8D zspDR!O7GESy8lTtDlf!4uOwf!^_c+SuE{HJ<#e8Krl#Yb;P#tucS&(#mzBwPL$sJL zfzN*lbO3Zg@%U}__^!L~LP^)TNSB+huWvt9JW~po#3;clwl5`rmXnjS8t|hR+V3u+ zD|jTsJ`Xl;G4sd|ih11>_YyY|2Y)LBYH2iqZKsz-fcXvkl1-TVGv&p>Y$LO7`K*EKaP3n<`$?nrkK#076n1Pod zS$qk6&|hq2X=!OC@AwFqq(7P9mDu2YjQbPJ(p+8vWF%18rA$4@0tag_mv!X(^nGUE zaSs$6XN;*jjS-$9rb(OG=WIoxPH&d~HEU>A0g<{RkA1CdRbg;~1P}bVL6WQ|BLbqQ zUVjwK)k@sI3K&V>s3x3kc!ssL23?pf%YU)7&3;_5|Xn12_Fy?kfvQR9+u&wc2Z-<3<+fu%8$1r^}He#?{!39}^87aBFa5O2;7 zxt784;KRNPhxfcjg=_Z-{o3}aZ+GvB@ucK-@+0c)1nF9@i~WT*W_%VJ6J+(=+6E1zg zq5EQtwm~v3emC4yAja2aUKKd0FQy7J3Oo1@nQXYgB9KK4mh1&NN4)dWk^R;wBDzXW`4CrlFB2#|FPy%Qa6q$l=!O&!#kHCLA5)v@c zr{TpzDJMjGRN8xZ}{{%^Lv%MtQW|EOf{_ONbvt7&WR- zTGa^62K&aDrFL_A61@6Fkh~rV2JgNAgy>J8NBY}>@?FoE^Ka64`06)4ivCB*--nrv z73&%(JbQR*e6+f*0OrUet*Aa?{ww__6Vh>0_H;o?X|2D(l(oT}42hXJwQr)7MKjQ1 zI6jO*vlf|sh>`iyZzFq8Y#7aV7!w|3}z9o^&izJ6aLv$`pzLXY7GnOf|@ z;?xONuyHDG@-U}G42VF4HA82f0*U*S+`*K~2ERs?fAR|2T-eFzijC;)akG$&qk!(2 zIONvz{U(3~90uw+!+y(^E$k4cf62lCHiYgj^HRryyLo`SmVIlbuS)-7X5z=8}J4%7C z>g9F*Hx^y+Go#d z%(ZM&Zy0Sd4cv4=OmnHJP)J)@n51w`PoCvROI%il45(bGwE+q(0Gm6bNA6Hqchh{- zRa4{Kt*|xw^FRRZo%!0xCPEqMx0vEf2nj8AGDV^Ldm`4^IU;iV4pRk__jY? zrtwEp@^u!LB*gf$00~-j0xpX32a=N&V3#*F{SE_*hO)Y*%Ti>7`3iHo@ ztX*w!e{YGRSq>P2IY@FSg`C@$^eO8z4O!CW}8m-S- zue+V9X}zd4UVyiY+$FrD(iT5?w=RBps+zHWNAr99!Qg2#==$PeEiPd;8EYdzU?E!z*Y$a(nqP|?m97OdvbI7b>2VDVm zhmBJa9D$(omFJmhZR!srC;GVJ7;m?t_f}WJwS(@L$n(BO^sGK!uLNDsSgAmWI?mE+ z76Cor=rcELbXBh1v6qlTw&Zu*QRBbK-lDp4^GhIbbk={A((k*|Qqc3G_|v+0XTaTl z*V8^%;A!mfpLLfeqZ(BzpAD{q<7poi%~22Rgdg~Prtk5htrSLV>qEs9KOrOXDQe)b z6(Q!?!+Io0<7M?t`ZZou(roFOm^DlM7EL$rx^EO*SnRmDgU?19l0W`c6zAG?Pi_S8 zKe?}3aB&h75;BGXRv~9hc{Rs<-7RE2S${@SBU3}72aBSEl8~H70K>jdPgnYd8n0$|SkA7AmDv0O>Bx4@APXsW z%4BV2#ip-^tGm0aYopjZV{6 zU~gGfg>!7|OgViUMZcs8?ANjD-W=o*)ZEUOs|u{z7s#{rNn51ED_9)g>0x=cEN4Z5`LFyauXn6_;l(%QENHn0nZ zV(U2^3}YFIqoPUh0OC=BwP;p?C4AKz_(9wT3!LAV1*>aKGmX#aHXAtAEB|9_1Ms2E zTc+WEf!zAi^7``fAzgMM6!oHaoiYjWOjSR2FiV}AX|z9)11r!S9ZTc_S4TizBGBRb zSJRT+{o`aU{4jIkGmQzd?&G`RdLWY=rY}GpxDx_{^}ti;o8PqRHSp>6NdhE-i6|v` zm7hiY^{8*7FndGxmIj9I)%v&=oN1P0*aXI-qR8Cn^T)ky-XeucF-ER@2}7VvDs;@B zDa8&$EW*H36OvFg&}FmJ)_WD*f|zs#cl5v(OH=wA@;#p?@+puaLRFrk;`t-7pM>N-Tw7!Ds~h} z>u1(&Ei<^0Mgq}2>SZ^b7AQ@s#G@*8ItGRZq(H-y{}*9r8PsO{cIn^{C|0~sq)6}} zrMSDhyE}#AuEpKm-JO==?i6S!P^7ri;?6$(@4NEO?9B2ZBok)H5GKF#-1j->>fpW0N+BL4wAtS7p97AN*NfGY@bA?6m9a*~ceWwDSQ0QHHY3`*8cTAc>f^744)r! zb#iKIUtC`zKA8-k*GZx6MQ!{1Rj}LbXn(gh8%xmhcE8w)j*igEYGQ~TDzbcVe0+AM zzYZ7yvkg~rPfst)iVLzUgb^AHSSIG1i^Jav`tN@qDsJZrA6Ys8tQ^WJ!@6`qGW}4@ zVCih-BM?5Wn!^$bWurMSMIc%XCWh@!22)}JCQR2Zx0>OI^qsa#nv68aQn-}2%dma@ z>=m*|jxly1nsjzeRdbagzQj<$7Wbh$U$Kb?*U7Zy(^J>lwBpaR1I3s|IP(TfF5;RG zSHESvjy^tZ6d#2<;fK?m`idOAvg9Est;=;b&%jSiiYo1;TTre48h%9(=R*?P0iMKr6HUr^21NL zUN6gvXUm3GR%z2^+{b2gaN<>VTHEFAj_baE`l9vP)1~OLv=Op;sdJ}4a-AqjtsZb6 z+!Pzml+b@JbnVe_D6J%J{CFgc1SgJD5X>LW6t0j*M(XIerYrC`dY_o>-dLqsJ>~6? z8zyW~(;WeG@N#av$lR$hM6Y)8WWhAM|Pdc`;;MI}Y93AaRx4Qa-hO(>Zw@X=s3 ztALWr8M{TTDiaa3be$}IY#VP)U);(jdJBTbrXTs(xEY-)&GU=Zzds*wErR(427t-^AO2G1RMQ{K!QT5AME)Y9ub)s zO0OzO%LzuPZHeDhesw5JA!Sk+39P(Pg*HMyWO-#`2yZ^6JK~%{{l*h3?)XNz#3D11 zXc0j_HsGi9aYN%0Cj4mPkdbPZEx$`Q-g-dHh1E&2xbgdp%z2{%aqs(j!Ks@4KiT=< zE#0@n5ky2IgO-XB71HA)-YVF9ymzpV7DYs+S=Tc(#jcQt;!>78jRp(iP3$$m;ZCR% zqv`a1(4=_eVW5Vy+77`RXH$tHBMF2D`Mt$s=nYU|c?lRI>zM{^7`f5rzbSjwi;Ahe z_KVa9-ECCM3@!~D9{~!Hk^TfC_|8xh!;%WV2kglihAa7}CuPMZKNb2ilwP_6?k3K> z_YCr%=gFVH8CY86x+vl>rco0m`Flnqk4yP@OSO<$ewRYOvr!N$Ld|ft>H6~nJJ1h1 z@f-fr{;!hPV{VsfwDD7(gJOqY*5QcTBF&gu9raB6y^3&0ug2|-_41|&Z0gg?Lwl)l zI7eept17Q?HA7ao#l`It_+%d72?+Ek5#$O|IHj?wLD;W@0l<1hX4r$B_bWv8B%+cQ zk2tTGpCR=|2v|ge8Eu z=3PpchDS@kCONw|6@FRm8**uZM8FMFmubFP2t@-)a zR#A>m7c*;bJaZ13Uv`cHo@?oV$UWla!A$Ps=AvH`zo2d^AL~;-&>=9GS=4jM#wT?3 zBfkJYif}Kv`(n|5tB;S}w(gKY?b7^8L+HHoi`{>;p=)WGI7=D9NzJmexN-s7Kmom;G9)G2Ko`8T>s?l94kg@8} ztzSIz-Q!zdjC@kj!p+hOm`N|mb<8Qz&~f5g>gzjMX~#;B2CyDu7yY{MlBF%0KyBiz zJ(0aU9) z4~t5v3bNY>wrSvab2=UF!xxh4#Y+N!FwAFJ9lEqx;^X5LL zApG=f&7UFfJz%nY!W~!y38mN7|JUi53s?wsG`DF0s7Fcev@6#NFbzAMEWgkpk`loN ztED(`4Oyz$Hv#!|L*|LE?%Tr`OXdLW!pgY^T~Z8N7`vmY=xdvW%@GMPb%q3`ZD~la zb?xCd$i+97>MIv7cW-wf?Bx285Rsxvi;=`hHbXnVIn z>$reHkj~zbLicnH_s-EWto596$fx)dHnItxg8MEY^SFtzB!P_EF=1!Ibh;)wFPjcg?vuk;g`Bf)#LKyv^2 zx%J_6wdW=;_s!zo;4##KiD7J28Lt$0r-X-(P@R6xKeV-j=JWCz0ffzB$scz&oDWg=u{VnwQY zEBR_n22eYO(#-ICIjzT}JTB8-9;|^9kW6k2b-IJ;vSK@*t*5TB=e5&TyRF>ZHG6{3 zYzx!)60L^o-Wz@4>sO~C;pBks64tPY?$@xWP$!YFA@xWS$7l`Qh=6&uja|6q-AEP# zqud^Uzpp(&`3?%-#cx-V;YNMuhU;5c?SK?{*VXJmJGtNG@wTV4f44SMEZ3@|M|V%p zCqE~k$+D~M!)opo?Lb31Lor+*v)0w!-FGo8a-qx7!`+jq?=t@Gr%gH03~Xg@!kw|H zMX(_b!o;8^n5L*dwhmoPfhfknEMgFt6K=7U#uTs$YH79BGVaw-Xs789;5Di;C?<2u zY;pcD38gi*=*_5c|I(`CP%D~T^0#0;H|Fbwj+52edJk-M3GLosRe@495Tn&9sw!mb ze8c)`<6ry<&}!GdeMcD4xY7OG>}ePwBFdASdG4b$+|kNxe5Ks8z$~u^h*`P0m;DQ| zD{bbYVW7;OA#mVmv{u_`Y1P#nR=KET4a<;}*d&xN!~so5aTFLenoMv)%b&<0pY2Sd zsz|HgqkpexPOIc>NJi`G_?haWYHFz1URj&t{fPw0Cu(H zCGmLVjIum>hUoc$ft7gvCT{+V6D`{#0;fJ((<9 z1^7B1?Hsv71BtSHL=vfPUYdFN`T4oIgxNJLa@3eHk(iQV6eTSRrYWP&hec7PnUpmh!;4H6#> z43_4$q;f|Ddc@!$jVcqiPOcyKJ%7muZy-7WyqG2G0q29nKBGio3!9}k! zk)&(kJ0}J@bP8p}TO8T9clLtnsILr|Ok%(|FU$A)?Y~xo09@O8zRi|7!>sQw_YHUu z4WWD;Cfd&d(8dfwB6T-fpN)YHQ!J+UKf!i-rgU?YWFmCz4t6hgdi-3}jqtqwsyN^8 z^rC~Q(LD>52Ao8b3v{;{dG}&{!4Rz*HIt+?Z+jedHzxQvG~-Wlgye*CWce|z>*>8{ z3Le>#&Ztp9%`WQmnYTapjd;U0yu-{)k4zPOgOKt(VjD`wz0NC=`EQE>r0^6CYc3q1 z+3lcJ`pOP4XsI2a+zEv#hg>dwa7wF>IZ#@BTf2cKzp69_CTa6(^qd6eN1MwuI~#=^ zjf@j+)=o5;jxlk#u`SV{3djFo>GsQ|lGwYMM@ zHWy7#Lr$HqtfdIYuz;NUUAI^h*F_vOC>}?~!9$@rnFOjNe#Nk~ZfypjC^C8>4k_Pj zdMOFrEbx_$gH?pGFnSK#fv)OEy5zAR41WqMvp+b!B_-vza7wL*I+N#Jjd}FI4&zJT zdcCVrs>1}I$*F$uHhbKj37{n`wRO`N$}+l0-g*6nR7u(8hvE7Au7Jl^@qd-v0BaC{ zsT(qKyZ`j^E&%z>|4-BzoHdePKkBWN&qwn5FJAFod&=IYops!nzwGTK)vf>8eD?5L z`4cAq%EME;+-JTK6Z-aCccz!NvlHJZbVK~N+TWA_@yr6xleJa;JBlH*+NG4nz|kMA zm-nM{3o|)++-fN=M=u_vxBeSQFUMK|7k&u*@x}3-Y`3)mw^rNEC*1eT`JG2I(n_K9 zha=ictVy zR$m3V)Yyi%4vdR9wBIZzZQ~ImPuVNmAe%%zn%>JZwMmo;znQbOyQvSn=WG7GHtiV@ z0L?GmGGQkz2@z4znAq9;H_+Pu=;z%nD74N*sJ^0@gn?50*ONU1NCw$BaZB@(q3EaV zxHRhjE8xyI0N`@@xjQ<*hz*KNyYI@IeBf#o5Wt%sZ#55%>W3^;jD7+57F;^rYc*Qc zQn6#h)v01!SGlTzSW>n~{Oe1((^ka?=1`KdF2fvJUe0P@ZnydPxVibb$v+dtH1Q$(Ujq?S zbyXeX5vk76Po5^kz@!o3$+(=`j3pxWsFo@?mpz8EDC@7Cd_8ReThCSo0WiO2yN8RT zMR!1~NrpfafI}n!hiH_ieaRjZ%Sq_*PY7`7$Op(?f<3F_8dE~+n3z*qXWR_v>}XuB zMN<@7W}q|&WwMb2Sz_j+?a8L0#9v~B0<5UOll%MNk|nA)b{2xb~!L8%&GuwJf^UwxfsoI@h0i&w8$Yw|6~#_vl9F;;{#hHWj#|8Ama| z;bVuzxjN94k3xf*Bc_sW0Hi(ZTkGScNsQyCGwK+E0*}~to+~z=u%@!%N?N*@*V2VP zXs18wuas%uzJtOSQwf_Y%OX%P3{+^-Pbjmg_adp)s+TG|l7_Q@9f(}_=Ett=w%#mC zeYo~%w(;OPIGHZ?CkzI~z}E&v=7ub*7+Q{40YYsr{@2$Iw+8NxE|a(;mh11p_eD>oHL+0P8>s3eFB432~0BqQqUcr^p#M4vf(Pg~EYr~Bh! zpr#9O>D~j*1E65A73oM32(7Pu^ExU-aa#Z88I4#7h7ofeox0okR@QS3R6(c14y?_x0~JHzNVJ% zh%gJ+5h8b7#1VV70o`T~xc+l0Aj8l=$RPJ;>d&)*Fjr!arq~1%W0bbwDv+LthM3Cv zP}B^etFLBmPCA{{(N^>Et#7lo)r6a23O>#-V5Pox-+i*{?0Q;twOU@vto*L*rb! z4lRtNN-ZmRzwkZ<-`vZ~RrS}`+|_RyzrGq6GDSrXS$4UI18xM?FvI0s1-@n*C#!Of z%+RO816K-EyUn61Lc-`B(|=YGh7blQt>RY4x=i>}NxFEhHZcPH3=~eM4VI>nx09`4 zX=jxioecOzxZ^?qFy+QW+)frDqfg^_{7hOrzxUt$+My}EA1(^nIe;c+_-LQO$T1p9i4V8w2$APB|ArMus6sC_gPMJfE zvOocuM$Y^tqYS*>#)8L2EfHsW_ZznEm8rIU0G~oiVHBQ``{}&vPuwA>0g$8aqz}Vewdi|He;~=Hnj6 z9EAOSa+ImoWTK2g9hHe%DFi<##zMg#2b4_hVJNBsDb9PDduGC>DVIjZz5c>86*2*A zt;sCf_9t?Pf3|B8yR^M(H-7Hesl89~g#&rEVLl%j&#*y@9y5z&j?`j~i?tDDY?JgJ zJ0_X*+2CFmShRs_R9j&h1q$szK)u<{Xa1?na~7*J*T{QgHUDpY_t~KoLa$NI>0`0o zhYqH~rtw5e)j?rJv{FiZG0f(e)jN3i9(jZ9fDuh%3c-d3(n`1uFT*U6 zBDb!O(owVL(v{UN?FA14y;p;e97sZC;5oe3N7A^+-xWf|QT{`YXBB}*d*6N!h5n93 z3QRtmCw)Gzk3Nrt*BWazF;>O^KdK{wKoyag@6yonsZ3o4F~qys!7DN2L_j>ambxK4 z^h>qFiN1ok=r8)nG>xjv708$-E^G})=E;&rhhDcd8}uRm4I4ZfwM>$j+}jN5HhCD& z@4ONfbUHd_0}AO8`MDgH`g+p0r82VADr%zCFA_ZOgb`=oik%~NJAFZ&q?Ufu@NyRh z0;gX0=**U97H;>_S86ihn8g6)(yPDhPWBoj<^mEa!Z33*Vn`^2Yek4lTVO$Kv{1=6 z_(T?*keviMy&tGt%6$#wN}r9ccH3Lz6ZbPsqRM7I_qcfU02SorYZujjF4k$V$a|J= zm(crfzFB&{jAQ|w=2!Cj`#AUOLWjpshS78^Uu@Selb(ehU?aEXUxAIWfZ9Eyk?;9@ z{divA@XCK}j=g)l?UQx>TU@NwTa}>>z!1%z32^kZo$@NG@E7*v_>Xw7b{|*}YB?D_ zxmg8V$tmUC$e`Rjk7chv&k$+_6)C-N{ACRAycZ8F`uEGw{5I1CwuHaG*23Lq22hI= zkMvD}(T^@Fd%|X{-roXNp671>#>uC=<}SYnBk$9jfZrF-BXWX&H#&tL_yk|R=oRe0 z++Rs`|9MPt6IP?0~QdIAF_m}+T?+6?~M~*uSIagb(mtZM`rE2QaIN zJbTo6MM<3D<6pm8?hUHhVZSdp#{t|uc#Tw=h*8ow@7Q=nEqj&)*rMfr=#jRcV-0QX zow$Oi4?s=ZJRpj3m#snhCZYhduZVYx2G?)Yw=&M7UpOLSwe2&SEIY0Rd4!!uxa{s2 zixsS0t>vxN3sN;@i&ZO90vR@U0PpfAT(phcI$7UIQ~An1xw^fNRO zEQXKFwC2BeSjBKbHFFMdc8jp1g*fE!;_wK0tg63`o=?o6eogt1?RPl0th)wRx=94)Ofm;E9 z>MWj9_#A}CDDx-rlX)$Ti_0?LvR>$~qc6p`#cPJJ@$5OJ0iA3d$yVZ{I68Z_JZ}?| zFDxl^klq42He+O+*0+Q2S!D3Kha28~90XkF8>kWA-_yU^^r1;QhIeWbUx37^)5^6q z0lYh)(_BI)#lkQ}LPHC-MGT9q#utuEe4|ZiZH!cdo$^swHEkJy62_td9zPLm#Gvm% zzGWY(i#03oA@)oK5vUQHu}(>ZzF?e?bI*7W(7OUe7f8SMVOLA7Pj=(YTaF0yoI0jMR-@N-1#c!Ph($FVfZow)fCI=sGf`D>Bs+&N zs$+Rx=IL%Klg2wH4qI+whz8_k6JX)1I{NA!*S4s$+$~xvA|sYO!GJ}gB>>-Ont&pV z5!V|Tk}(8dFG3Ic7{_oF)ifRDl58=tbH7Pt!~)<;j98+7d>setrKsys!zx+`eCjfe zx(;CJ@$n=H!(mCd1zG+0)gNB7CC}ohVr8Nd;}s+07oep^x+Wl+m;%f_8EgsO2si9P zOci3~C=oX4IAR2^u5ev|(KockioJa%_rLB~*Mhc;0^5Rjf zL2dPq<+{a`9p$uf*tqUa4HcXOQDlNZ)o-Wmm3Ob%8ad6$ec$ylbyr`J)p0L=`KvY| zy}3I7oSCuZ=LPpV0Rglii$aSkkDUPpC;x*cLW2kfxFIRS8$?gSlA{!K$S%#8HJvV9 zzRfr}5X@jID&m4X;> zQLlIq+CTpy2`4H^AB1x`lvXjhWbpvg8`zZd9ead_0K8+~TxeVi8yH_Zxao6Eftw~P z*Uk`7ShPb}eeB!%MSC||C+5eOr3av>x2b8GJRr}iHkYCNwNtmk zJg106Q}FnV2ojluJVxBQbBePoDH+jKG{-*S7RD~lKtxm=@%%mj_@(U?!Lb&m=5$@} zZg=9X1ZsX@-u?mnc8feWv%lTv;ft@nJh(ajSbI=EX;96*|F#&8gS77)8rO@hjVLu5 zO3;U^jTn85%^WNN?WJibSs*q?55||-l50xXvwC!^T_#^g;617j3@6UHq7Ej;04pzya$&sR@(mG-HoaxGmBY&fA%C;{@DV}hy66^MeDHoJ7`|jxRd(*{FP#~vW zQ@dH)G1JF`8aS3dVkF5RN+vYfFv(&SYrGUNcoV}O%yI?rhPV*ux`b0Q}x^ zWVY8qRGQRM{pT6jsHGchg&)b}_=j&YR09N#2mLX&R)TF84pyjcn{U=fLJ5@|+x-eD zwbK~Zg&xFeqb6Pn`Kctxs#DTEQ{73IR^42oU{Xx}Ok6)7s`L)Ch=sev;mh0Qp{4)% z*84)r)$`r91tvL%w=9OQFA;Qf$iR^*4W>HR`Pd=uFL5sfU*qDE5>s#fv3Q&1!6c4U zNG`jFUt8$#51~|DNOc6a2$sn3&ro=6I8AcmM+uO!IJ-?SbO%v7W*?1Mm`*|5&AI9Z zImp`=focF^ypB$K8X%TPU>+`Qqw&f;5f8oz!D@+wt28yRtEk1oX8af47kaSTZrS8G z6)U<nXAx@sTW@jz|_lfyA{xbpDqy~mh z&CTnN>(L%P?XFUDjw!+E&z-wR{${mHp4|DbW^(2N9;~vl%)I8w9Z3UfALc&2=$wyh zxjOoLE!?3Lk!k84ysMfT>CY@DGrGf3w;4j+Yu)yGTP5lzwv~{LGCtuwePUPd+jlat zqX)>IfS2RunJ<2|1ovrnS()_#C+mJgGd)|MLwulqXXO5W($ZfJrdaF!CQQtKg&+1m zZ$<~4*J6GBw*THq2r!=^x*jf60v+0C=mQ_W>;eth5Ao0Y@oNq9;rrV1$~%^w^p$UX zS_1|n#juo23Ub`qILkOKRJhF?be88j<{-#O6^VES$f}s5K~3^)n-MW$c4IuQ1ho=Y z-+3~B8~$?J#H>Cg&=O9ZEI1?WEY+Czcp?kE ze3@m9A*pP_mA#L#M^u-!sfDirp4bCGF3CjRP9u zJ!77bt)@^GDd<-Y!>IzLm?FCC6IdkfNzmSkIm*4ejMIKEW0`B!Hk=~SsLeFTnLA^3 zabVAz$+COl+BiC20|A@S_zjTDrzUNzjz8OyW+@X7IXWn0S}mF8P47h?*bC-PSf zq>l3B*|YXgT=f1)#ad!T3+`TfhviV;7{HBC`^7;)DriaYc|4sYlgtpK_WbSU`DOA1 z0?0GI1BxH~0ov?_%Ji&~LY+S@#Biz?U%+(oE!AtC$WGQw)+`36Y(jTr`pxhT(jW`k z<^oduJZUSDPmMI1JW%;V8WxEOU)w@dF{H*yIFH~URns=1>bk)DjS0&%oRD|ah~!I+ z)OFg!Z^jhXl@GF2pDbvvm&8AuHXM6A^)bbcvOfqmApDv3Xa0Bk?uD07#mL!zfdQ1Bc>R8fg$^&-iYZgbkg7I188+c8Tx@~j9k>0wbS$IYs_ zNJa8fA#HH54YK)qvP`PKk0hZNo(mj@)6v8frH;i*0w-`LN>U@v%zVUe=#~45{B4Ou zB~g_kBKi+QMU@=$LM*om7! zyLiPB%lqU?#BSE^y0g`g&hdjfZY2byFlm3@KRIvDoq2*KwRnSBcY;}e5_5B1KJeR@ zcZ>jCZFid3Ce_yrkfzS|x$lSZhO_3LtB!DW3_6Csp6hOj+lV$rGR?-+g2!S0EVpYs!gJHo8;F z_=;!()|W(%Y$+PP!4N0iiyL1L!L1pEe`6eCpUBLO-d~OSxJS%EeLhOR`lnBX_cgs* z9hkAd3hss*QY@+-nq_X>AWo}Y#l_B;poxcw@tQkmiSl-2;_cvv?xtoZ_NA?<4J89i zDUyWZ+IJ7#vc~WKoIvkrb*0~gk46w^b2E-TMAt>n~6F)7FUEFy-q3N>|G7*yJsMd^9@s#F>%I)K!d76P@N~krW zFKN$(RRc+>Uh{}6gYnRGwox-jv9(1R?UW1N8H>);;PRwY2p<@WNRrMmso@jRXmwR- z2V32G;)5RTvbAV7m6f88D&AWoMG50rBV}nPtBvXc{ldM1SmS2qbGz)q5OBI|Y^(VH}~ z&)S6XOJE8^ID&+pqBIpOjZ^|J5i~a^c>6p5lPF2C7;)h38|_yZRpoiKsk^d{AK(8G z5v7(0md8nijf;I)F212o;m}65vsYQBVr}ln^GYNvgUGAsCja9$TaHhr=;)Y>zRvsy zagGA2lA0zb*gtT6uvAGyKT2Ql7PdAS4`U{rX3CLSDxEHid+L}*D$jI2e)*-xy<9o^rQ_U^aznA&su z|4#96y3q1x#+Q9Dp}y7hwX4tPaY8<*^OrUM>nQ)9hq}O~H+OgA|8?yDM*zgp$2s1* zSo8Ck+T222kKK}P%esTTm2vtmg!t~V7oDCrJUj;em~>l`ZY2v+`VvjN7CN16cm~}s zD8(6GC&8vztrTlBic$qFFBe#ax_93(Zh2;rTfS~h-uOKAp;qza524i;FXOWPper?} z4$q_Z=cV|^rLfYIJz6&?>*=!IuSfQ=w~!Q@7HH2itQza<uFj$H03Z6ASt58LQCx&FcN1^ zDHHAJEz9DigBFw!|N8Y4EblJh+Zhlf)2!C0UrgeTYS9$*1eIDWAhdt;5Ykt${;ws^v1jG9Mejtj z8K6-dIg?765FJv?^3LiqmZo06RrqZ}^pnR<)+&}m(#1IKi$H|*Xp*3MroITJ#znlH zQZp1sS(sOu7qduON(K8fFGh&8U2Tf0>|EjC$5(=H!8k-THc~dVc=VYQzxK%J0a|DY zz73VaCe0NwD{7#)c*UT};Q+(vp5mP+p>jVZoI1-V%a5kX_^&IB==F#meIHE~-C{(Y z)%W8+uxS-wLK`mXKPORwDEe5ZQOU#cK^~!a@OTf7J0dh7a}$;A7X8P zIFYp!nnHB^g0!|o6^^7W5WO%slCww>uckuQ8TS*1XRpHBXmsMfPvUZ{t%L8NMWK%k zC4}79HbNM^{p*0Z;>B>w2vuQ@vopb~q@b!LEppCDw@ggGsF81O5;clx#C6h?h32w( zscc(h5=y9KHE{wa;F`cVL}5%)Jgk39;+Be^lS^RiAgFq8!&L* z!+F8M0#mnnDX0^uD6~~*(ZLThCS)zPRI@AoR*)>!@nEXE3RykD=BAWKawv zb2hH56edDZ1O!He&3MTp0j8k9KWcdUL$}qk{l{Tzc9(ncd{p*T0YNpCy0o`(0?a1| z5NVyEnP;!cJ5icfL&m1pTs;E3q53g&2dxqcQ#?*f*k{ z;x$`=n9O$(1Z5~;FVd$-1XmIlwlr{Gec8EXep;WYv22AVwSu|7U3 z6D5p7nx=>!@J%7=?vd|a7mS9y6Bi7?!XNV%r*x1$j|QRoJ?bH?R(wdm>BAG?scTlP zcyIfXjNhn<4UyWXZbluW1QjMXR9Up|KggyiUNpRz#{0{thz?4qeA~(MiR-!=qh5;X zKm3sZM=kM@m>(ihNWyrFB1dW+smIjmc0m6~E9@GhXk8@s(Rz#s{vt`CN;~~9XZv8>>h( z$w5@r@X&ygiXKFy7r&3^Y2<8k0lVCHr{8E(jE^=lus6|BC7Qp+p-&2>Dupi<7!|KF zjRNJioM`eIRaCW;n~@QpKu1@`eAL_Z>kiMkw0zj1x0QrB2z$y!(4|5oQ?T*~Fs_@6 zNV5E8z4#{AyL!di?M<$K^{Sow{fTD%kGHPNUGANWr>c zL*$>EQbcxf!QXl7Ri|1PN1l22cL}(jzf5So^5niM`8NQV5Sn;AZl8QYB>O+t`Tw~` z{_5Wu{(mL{|L#c%cb&c>uebbk6EVmfGyK6fe&K9YU-^58jYEO|ZR)Dh<88L7&wuns zS@TTb)JlB)V}u>IkhqBVRrna*RUA|TMauAx;Cua)kw1CG7;|(vwhH74*E$Eq6|u3g z|2!Caz*pTD*Mqr5ztu$r+T=IaovdVLQE?Jj0u8|%pOe0rM#WXB#rH1TCr%9mouxp# zX|seScmReIf;=ZpqT;-RheBbAR6xpz%!wIe@z;cqh6o+j)VNRmTnc8wUCeFY@cP!T zbj$iCL*&=M4Brhhge@~(kk(4)Fy53A_c{~&2CQK|oNC__2|e+Z#Mj3i`- z5w#(M@G2pwhpi>6w(gy|hCM6fmp&ne0k!KVH($FPfe6upoiiS?EWJ1sMq(FLB;8D9 zU>@z2Xwe4wNz?$-85nM0Q%*6Kg~*P6YL;$ZGUXz{y16bx8Cd$55=Xn^>PT2Q!OjAP z5@f!o7xC){E~#N_J)T5@@BY5)#{*2*)G}R$PF&fwn$4@Hm)@)XJ;1>ZLw@oH+UYKR zfTYKYfvHMsmVQ((hg?ZZuRsYRBd%R#yzx0ZOjk)?{jJQIHa;U=M0+x-28AbXgjh0O zl`@hF_Bd{M9@89yGId9MyOmZQ(7J=pR6-pmO;7V#F{~tPP`HLATA9G~iTb=wUB(hO zP1+P}PU|gx{wxtdfUmO!N1)Wm9Er!B!(yPgw34!O8OF+EYecXqC*vP=>$2oc+n+tU z!~N|^>(@w9c*`X6d2_RmwC&hs#2u+LJOZjl!2ma~?#B#KW>kRCYR#-gin-loxv;1f z3yin6)O#0~34PmnmF5l6P}3idqY;q*R``ST!IUYDFT!&a{!R-eAQw)g&QU^@d8$(* z7lj9&Tw_~dYX3FQPo6#LN(zi*@2<6q#q3z`u0-I?NkUW!l?`GI{c)#@g4qlBEu)Gg zi@)1*WuIskFU4$9M^Kd_(9?AfnFQ%DaIi{0ASxEY<@6#^jO;2i4QzTL)6tZD{TM9E zAUQ+?wUsOR)+ z!$HfIrP@d%Sd3z)hC?TBW-t1?r#qDN>@?QheZF5 zD=;&*(Z+C^;J})9oqYNR)3Os~>&Rz*HDu|z&zI9sp7zdEr6iLXY=xnRJ~3&EI3oI^ zL9783H%kdc(}pMLllnWlSuR7-tfrS^ox0H2KyXbQ zhpK?{e2!%l-cd&1doaTH`E@ZKpSz2mh&LE9{;Q_nh{|@sp=EB$;vxI3WC6p^@K=>B zv3V+$x+KaI9|>J`MGEMn)R|#dy1yK0R~2j59cr$!k3x36dm6c{>##`do&ZhM2y?1? zWv*stR@>SL(ki`WmeI$pDh>MNMG z^4!(e>VRCD@Lj3+S|bCE#th0vVwnZDb?Ot9)HWZ#P|{zwZRK#ck@S`~?%cmVd71l% zZty`v!FV^F8g8m_(!)^EAusSOTu?kmm94UyxwvY2+6QNz7&vkDXBcZp;`UZ}Ox^Ym zM5N1b2^YpS4TUtC=8Suz|@n7x*4qSdm+ab*Ja`JW09i4kU%JAlJ~;?!pf7SQ`h{; zJ_c9k8#?5ba@Yr@8izdnb?(MCFBiY3!R6txtEuES+2veZiuU$-zkc#}eetsWbaV;Z ztvrcM)_YUl22*l$$Xi?E?&|WlwcA>N4OgBFlv}lN&DcBUt}gR-wz@g`96d%(HLvLH zDca}pHM*T{!|v3w_Y~{$1sa`q2Zs+{A6d06Dmr*@A;%ha!fYg`#A)C@kJC4dBIgV- zcq$AtBJK|mrf3G=tlLBXz)V#7PYNqv_jz$4D~Bq1g+|%gahYtQ|n+ zu`cR&d0*Le@7i5oUpxLh^LNES1P_D@R}VY;UII;v2bQjN^UooB{<}{6S7SZ*w<9m- zcT!!~3rmZRdG|YgyR7cWLPkf=zO_%EoG%EIV5~6S9%Z{H{n|SYnWyrtO1979&nAe_cD@9{v?$5_h-Hz?6u*=as10) zCBOavpWTys-}~b3Bb&XRr-MDi=ga1ov-xS?0gmZ!m&w!Lwv%W056mxaO$2c7JDQK| z^%E^G#$17v2W>LHf`iR$BRp8zP93faB!j>}hbB=#%n9OA#xN(7*%h;~5IO4Ac1`<9 z$pKeA&O*;6n5kN=(&yn7m)Tpfv!|L}Wv6|IC4qUze0}{V{unY0;Sv+Z5iS-tUGF2x5 z_44T9(atF3;oD?Q?MY;1QF#pC2BIG|aO$Tdq~{Rk?CzK*D$>sXwr=u(F7aiM$Ltn6 z^XB4TEbP#vrRAu_=r#~j$1=?FDlbd@rLd(wvt8gt1w_vlv}#C(Sw?qCvVH#4ePz|L zeEsYi1yDIXTtL77Q>%#6?2#Mai6$_;%!ikh-#NVd?7gI+8IzZeRS3(8YxnpA>tDN%RNz`0#o>G^} zgo&hAG4kA-OYUwaqIVWaky6OR&)e|u4_c)Z+m*<{yv!6k=3 zBSc|qN-|ayyotb*RmQ-kV!I`xiPRFM83}rJ#f-MR!+nW=^$9lzLIR#aRM%` znJZ~T@D7Ek0)#0@Der%B2RY!W5{1g-EWC-8tk$vPN|F?a+M0T_B%}dViXllf!ZBeWj`o74RM~~)y!iL-l3ATJd;2X78F(SF6pykiV)D1 zxzaCFA|1Oc+)=0(W=BNS@*2~4tpO)k8UPw2WXnt^02>ioK6f0161sZ zSP6+)&GHB?ir;>XV%A9PHQ4@0)Pa*-kqC?`nI2b55YAvQ6lYm|r4i;wg~5xcj2cCq zJqnL*MK!Wj$zhz#tSFouU zU`O;3L*&vecI?v>hnqt}#@0?fJv>^P`GA)PxHeD7Q<}dRl(5Vca$4tFMGDC1eD4? zSR~WOhHy@V)}Xfb3#;K(P=jq{7HnY;tFZfm_Et9TF9O_trd!9AvCZWlX7ZM~eQbdT zR~+RqrF?xpKhvklG2j{4bdJ6d@XW8w*k&u(Ox_x|kN4Iwu?}n|XN}*-a%=M7-w!D| z-n4(Yzr%DIWe2n~| z6pC9Q%z_5q4lbY`MFWSGiWbjm3gyz4C*U{HN}-BZr1YY>1XZ8+YRv4g?&>)hzCGCj zfi^0gr|4x2sftG->{&GgHPSi~X%YB5VTxY;Q;97?Oh_78^jJ7v?t9pb=YIU>`Kw-g zjqS*RO2@8P0Z9BFkgiCq)$@g>2w%hSabQ!BLZBxS)4>M^Arq5 zbBUT!E6KzH*HPea-eOuS%&55?p>6w?O5-V7R5i(U`@o6EKjDuE0laLYE9czziNJ|M zSKX)<>{DH|gZfr-Lrty8#^z}zJ%TUj8WAKupd}+-`ZT7$W+44UgGt=Bk+daVC}u5^ zSqEnwXI+ainJz5~iMq5%(U#=G@q%8Lrc+mEcPpTEJ{@htt}{Zwk;CFfObfDK$`2@He;#k%%9CD4k6ke>o z2iLpGAB$Mm9};ZzwC=U>G}lk+FB_Qx+TUIf&kDF5WBRLKYLSz&kPF?(KYVuhP+OjJ z!bIM45Q6f-z7y>UScdo?y?C#mAM6P^U-U*?(VL|-Q5Z;&f@M;+}+)aJKXvH$vyYnlar85 zW;V>b1ekf=-(!h1O3Vw0%FeG(x4;m^k7R`1vXNBG;KUgng#e^bGE=BzCzWB|s<9Gd zm1$6i8%o5#sBD=yi}#zUm^=Ot9FGVd*l1B?QACqQM_N-_M_iMVfD9GWYse>1NHo_z z&zwowDu4Ost!Ft;f_*z)1@#medQ1K>{2!uHMH$l0C0<|6*kGYYwi0WLD@pEL#gd(2 zYxXgGIwBNw&OahD7*uej#IPb6qLD7TpQ+r?ss5BE74J^Vfw44E#<4bJ89$SC0%lD?6YU?DAu6m5qzj8o^u8yqPaz?`nkGjpdiDlKMta;^1AcowH z7UvPz+226<)8xPXY1P0VEU3s4jJF-_(Y2!baNtCVrEiPoOL@Rdexty`3nzD;YrxnD zz%Kx-nXyGunJuN31*)#|k`h*753+6@D8|90%G*@^j-*$1Y*Fj!S-s+h>RypL=n-}X`s zj_b*WS7CnmO*Q?~?FW`cLJvJbf-z&Brr+z9>}jkZykOn+U(QD`92m}kz@1Y;hI!%} zu|>h&5NJ}*)URXC&k?4K2^X}7Z+Bk)E8<=WO?dtx>r0hl|L838_b!4i43t5uZAR`k*Xo)PDiokTAzZO)H0n@~cO9K&^{Mh6OObeS zXJnE9N!KBDZ#03MVHNrPzEo-hc%VhZS}VmO<7>&xYtUtV_E!7%Q2dLv&gY)>ANa09 z?)T>i=j$Ht2vwc$<0o#u`WKb0t`{#|q)CLYa748aT}m z>@v#gM3~B+!Tnbj-teh#rv4$4#=-cy>e2Tii|NQI)+3GfA z|9ilZX=W{FJnRq;Vr)FMd_9pTM)tUGtIJevERHrl;Am2|P$KpymoX@1n$LK>`Pu;YuNVC^B{S0+|AO6GSgR?1L;ZuIG>&Q~ zp}%81&W61-`eM>=QX^wrr&Ni5t0AZ5oYJ3QM5I7s@T7#$sEYbbrVS~@@Xu82G^3eq z`J87FafmqieZc`A#J=J&MCW$8t9EZyM+Im@YjvveK&Ty@idd<}dD7VzRu(r8X%+VBZGCezOj&?fW zvGbVSf7EUm&)w+QOG%7vaXEQmS~-}o%kDIJP65tmr{1o_dd}W4#V&i!GG#VqZM5yB zj9nirOyp_{xVfI4E_J7KSd}QbG&X=wtZsE#EV})WQeaRm#Yu!#RXu{5mUeriSeqA=y`?8fQvC`@sH&5jKGH9OFNWM&02~nl<|ehv)?X$ zvEGlE3_(Yoc>WGfOt}jk7uD%Z`D{=?LOfKuPxo(rucI+7WG7rK2=V8Y{ZIR~2Py$7wNa4k-HE5J><| z7pBAt(Dq7fi0~d{K{`khb354JT!Z};;gLq5l2D~do>KbQwBZk$j2jZl4+1C*BCIWz zc&iogxK1=fWaH`*q)Mia8of^1>npkk!lNr@026FO#yzSmKpPf0;G)&~K3i%m6r+m{sP_oSyZgz0B+Bv;@N3w2$bqUrww{~) zZ_b0Et@OyQyfqbTcTaOf>B_vk@H*<_ocDk7K~Vn}K1ho6{edX0pws6$Yy@Y`rTg@Z zR0=7CT$Rn`Z_1k``yhow(_x1c&y_|SjbpLAHY&i%8x9e>WH}y)Ps#aNzOP> zPj%AwR$E_-vq;p5CriGxbb3F93Xm!~UFyAU!gT)I_exdj+~Pav-2XPQT0JO7`en^= zgh}}Jo3P9AEIFLp{hC|nLqAK0_v01X^OwBOiNh-8rAyw3`CkUp3glCnNqjsZSCvzH zf^&y|WV_l803Xtdmu$D!RO&g8F=!+KvL$DA)sr%SH}G*M3hQ$ivH1XqRsvTAvkaiz z<2fgfq*fzrBOcm4LNY#e&SfZ>9y#YsaC}eNRfeJmg>Q&}Q99CK;vxuf(1nEuFY!&;60*7sR@Qc6xTVnL+M5UL~z{O0tFJ zbe-lXWQj9V5r1dOP*5vs@OsLepEw2s{WAgrWXql{2L}Q`9#$ZQHXJBE2_l>3SCgYq z%i?Na{7b=OV(@i%p1x1Hj2Ga+nx;w{!DFsv)a3GOiX|&&|8)&Fu2?o|XS1?zBsI{+^zGniI)EQF_2-7UWK=~VC$MvvjB8*3ntk<|~=iroZ z#jDC~BEZR@BC8}K2X;~Fff4xQwC<)_JNrGF>%i>(7`)iFa^w+wIhb(EP!r{d-ejDy zF9p1YqP3qfv5FqwVP~82fJS1~i2)gF>vKz$>g@)5qr7{jPOZRUl)Um8l zrs=`vv+^1JFog3OEF))8TqhwxhbtopAO9z?xtcxI%jq@0UsJKW-ym1 zzYxm~5GG8LXX=(1;e-KoyCbIg7p0Q6TQ3L?0a%5n!jd5gp7m$}~<20~VR#)0r+UtN)P^m?R z^|8{EsOuyY8OoAomMz8tT*2BDB{&Rwm`q;NVi6fEsxj0hP{f4*6FuN2CP5a0+>fV} zATA|A1w|>QrzYe5|u^bv5k+X(^)RzMN_AkmgPA&AW3iL!&Xb(>`;Geh4vh1TgI9qI-;ME&PPh9nZs%R(5`V^sbiJwH`MN5_L`sq6;od5WkYN8-?RkM7>pzzSh0gXm$W^I#Cg z$U;OmF{7P4Q~(4uWzI&dcy}-DwGj5aP_pytEJSx5Lg&~(4TT_w)kJ*`eR>gD)g)2G z1&55o&bZ=ulp*@^=5M&VAcFi;#LFHI8V)QL0rKw#5|mPAfI{7p!Yy|{vnDT__vPf* zveZF=g#!eye&Zes#bWXunOX?3d?kjOc{FkA#U@t3B=j>U!Ic(IXf|BsVxHwsN!5Au zprzp2IBS$m>PV|4a0C1zg@AL6x7@e6PQ-J%es~b|jlxI!h8}n_&?6?LA49VkoM74( z2B|EaND>xOKE+iZCrASgF%N@XD+iM2l2B3*KZ|X&7l9FvpDOhotecegp@I%ooe3#3 zx@pF;@_r@rB)ej4eK_%z0~pq1ukiYf3_NOcPi)k>j4)|8uGYG|z05yeXC92(*F5+{*g7txd!Hyk)!M zswMpG$A0qA{Fy(noQL?4#^JDt2G}B4#08R^nhp{m>Hu<93E+hhORh&%6h4dm0QuXt zf~Z^;wkh&Axby*vJRJi?W$cfV@KYqyWK?^ipPqRt7S$rnL2vsVX$49$megYT%6K1W zKOCx-0m$d~tQx&@Mmcsl9C1E%HEc{5oqgcJBQsR-;7uVq@2P)@$6bRLhH!AiI9DbN z>2LaenS_1gNeUB*zll+Pf*ec&tC)=pQDAlSGT$Xir)fI*t!wK)esIFmaTI%l3U8uw zkP*K(ckdd3TI_UKQZcD&ose)Sf=9Y!gl_VWAZcTe{C+~WObLv6EGonsK3-KZp4vGW zUK6uE(5AampSha_P6R0nGSZE^DJR=)cvqTF+$pT_t}{NeprMZ<6rf!2C}&Sy4Q1Aq zY%Oo!%#luqqMb6oJCHOFZVc`-d7<;clYbS8viMVp2OU@)Ij!=S=z6P0y_c&wYiJWh zQV7xCHA+BMS4JuHRI{1~XKR!!oTInAMz8A^E@)r4E(olNmT(-_Jy%GTs9bP<%$90j zDR()J)-7DGSZIy*1Ws~Wo`EZ7N?kJQ6${sGX1&J1janxS39gj3JOvtGENN62!Ub+i z*ATVqtJ5XUz_XPh6;#%9ff~e|;_4VKUy7tkGioe9|4A>EDkrM3r7|eXan6u!R3WX? zK53u#tOB$z755phiWO^7$Kf&Jxb$jWeR;5cu2CJtd7@@O&%^tTtc0i<(%`T!)s`l! zqCN#sNuwblu{;>UJaX`#3Wimkv};G``Qb0ZY?beXA)6NW@Bb6?@crK~&xE(9^UcwT zt{>@Jcvz9}6NE^2>qrT`_h0W5{XMnb%*(N#k9by(m9N2FyRf%-U*CU={kwIT2z%Om z_#2zBZhs(ZAeglH8&2=0sA9)UFs|ziX5WL1fg>Ta0m!FiS zH(nP{1YyH7C!ghC%b!uZf}#0Yx2KurzZG_siDWkyR$K?y1b#wI;Y)BX<1;5zgu$&*QSNB|63^+YY`voUs9J?~jss)myU zTb5BCEozWw0+mBjpGsc6>fh(*{uA`PB;-1D7tABFc~OxJ;-=}{NY2bL{Fx=|{~DBm zY!S2H5O`41FF@1*X8JvM5-p`#MRV(!Mn#Y6kC^48rTgo@u4SMJ`Zegto|7mRf5w78 zH`&8BayorFxp?fFeMBJx@7jYK*km3V3d#;9I;NnhuzPiLqd|CvY_Vo5Tpf+> z^Cd}fNXYer2f@-{gkWS)xeMUa>Urm+=9LFY;K1@n6o8p5fY0XII(NhgP*II5r>+^< ziiK;IZp(l=ht6K@i|jTnx_GmuIf>US8OzM5akDH(=AN}2YYHO+yy2t>c|xD8N7t~X zSu}*27iIkC2ACWZ5}f$cN(b5!h-U;Eu@3>q8D?yci@hgK93wkj>i$L!=VA*MyVEX;(!)9dp zKoQxTMvDjx+$P}7Ek0`P#1j(B4FuSg z^=&iqpzp52)r-jzTrDi>!CGAT2VgR6l+#%BZAWgCYaGjj;#7;3Oi`pBvVR8~qT+;R z6p+bm7pd4e3q;$t&RfFQYf3^{pn>#B@TplGIh4j2nam;`8>%e^is1$&WC8%IY5AO0 z1u!C#U9KqA!Z_i|mcR)q<${AUXY#$F*N39s6g$Ld&PfP>c0?-*pokk3Di6-)(dCfw z4wxu&bVb_sNcy{hmsGI{8&k?S?B1stMKg+%^rc9yaV!k(lNp1AgM+B{Q<`9SftKtqj zcAq~4o0L*5JXoF#(UArXhPBX$b-qZFEfYZgEy7uP8@WH4h1#86JTKReLgZ&qQU~0A zWUcyGIBsnp_ViDMMD75*Im;?X+rjo5z zb4rWm(o#{tKXR`nh}rMm(utcL=FLmIyNc9iPIVRi1#3Hgyhwh2DSIrnX^Lztln`V|D?u2toS7jO04($vLgTCbb!M--<1yN`J!X@tAzszPfab zW`Q3W9LZJxK$kk8M`dbU8u(Q+!B|F7hnztIAW$O2kC{N&Ru(KX%6eu zTV*Rk|1796smK;2NX%KaXnd0`NYosxi7?9U;|~u40|x*tA0P1{ic-PwC*@D^7)lvK z1q$^@T68vaa#UJC=!1S-U#)^dRG*h~2rf_5lq5d{CAmr{BIcSb;)o&XhnG{}o8!~s z!+lofMn?YHtf%&?6j816H=-Jr>L=x2tdcVE_+504p;@(KOL$!g4#xgy0dV%nj0N9} zv9iR($;c)HH!p;O>G*Mjze=Js@QM8%hW&%8mancD_hBCqE>Oi7hp$4@YH}G%9SLj> zWkU5$R8Oc0v8_{lp~`*9CwWT{xn}NBWB(u zA|~Rz3CMBB(a7l}m=XIBB^kOn4VIW%{xAtvyg881iP`LXHG{vC8H#r_v23O+*%3jeNCkhuWNLI0 zH0RyADJvpLwNtkj{jXQuLi_aq|E4&Qnl?NgDj+_-h|n0`b(2vOA!aJT5LrDf*x^fM zz2%rKWbNW+-YY2D*ROD6<rAv{&WfkC!W6(OvnSb76+g<{j_VshlJ!MDvmdh4R~#=z3c(2%rM4TX-H5ZCnS`I~j^%sJINq z(9)-qj}}zMhvC!zWIN4^&xdf!km<4VcO95l{>C~039%n&6jyzp&w#)T()YAMK~pa; z?GbmEVriLZ8R0F7>tVBHCH|QXn?kJPSftFQsY1^isV~Z;W&O9|dZ;Qphm(76R27H2 z{(dLwN0&AXuZdIUr_4H>_{2`&CW~c(j&n`ewcfFod>Ub z+84AyJj+$%x=PzS%rDwE@(sKHmnM7qdGet5{rmqi6aSBJ$X4p-gU!aOZ~w^hAkPb> z>ibJOg80SIhR*lz8*bYVpLmYf8SZX&SV&)^ZX5j?9*dOXER;!Oa&9aZ*6(6^s|&w( z6kOM)*4Zu=PD9=w$8$R`Co5~54upghX1GE<@ zoE3iRhViPa)xY&lkD;UwNV(>U_jNX!R%@-H z{@0TmTBi1a-#0zKp42a|MS^e7Wiv`Il{~w+ zCO3J=T)G!uK&d0#I#NaE+a(9Cq=88+QU1?{^zM@0VXdApHu$ zw_6_J>(#DCj+s%xljpZ%lKXX*$p>-0m!?$jCq9ptvG?mQ8`oi^f*ph6Q#0c(>n~#y zNrP@W8G@IsZ&weWNZEdPqqLn1#H3Gu`h!`sa<=Xm*?Eegl>78M_i1h8bxpzE>$LCtc~m`PDk&6_zw+vD z^ezekvB?OruPQ$S259?43<&&F4ndB{O!?~Oh{$HhX3_NnO9_t%?||55yLXHRhl}FX zXTmQ5p82YP7I61kWpSW`7WrVW@>yb3P#>cD@(6~Yv_21-6BD5fI9g1x6H1*V896G9 zBFjM0N}-hoQ02%#{e{CUs>#dWB1~qK8=w z5e1ARQ|6q+=osjs*GqzvP;_GcV4#8emcPQaWDTG&QF}$Kj7H5lmsd76mR80hd%!3X z{F7^p!hNnGUz5n*0dV0+`+@3)*CQomjI%7c76ij;c~DQRAWH%HO+{ywzu5~$u7$B$$jx#}UX%4+NdTb13AV6srd&`yKH znM)}Z_Dyds^QI6|xKdfk*O=R)iS+`FqDd zegnoNZ|mdr45?MCUJgy20-w-+#PcOu6woS1Q^`?~UXKPLl7der=UKiQA?cA*miRWia!;ID3v^M4y+|2gn+26+L&2Tk;sGuN@ zju-fU@1o@zn`pZDa^mJ4%i*$;cMR&l+8wp|?gL z+7~YV!_`m3B*Th|0&F&;RB&sx1~t+gc1&;H+^MyVvy%0#Vs`1hSG_KeEmyB8j0~TM zRR!04l1UD}hb}0OBBGZTRZvtK1Y|UNvypx^ML?K&eFfsa0fUn(tHR)nVFxW>Vop+| z2*>PG&EnIh5W(SGcn(UW0nj}HO#_djHAVxs_Ny;Wzka!v@t$D2>sHPPY17FvpmjQL zAB~(H{nn}(#|HJh&pZi^7o(tJOh>U#heV53xfzzZIktK^mi?z7)+@t+H&BIJVsEV#AdaT1RWULW*3ogk-U}y-dHl~FpfA5##u(;FF8BC2t6Tcf+!=Vd_mC+ zFk!k;w02Rl=9+)Lt@mx;Ks!MqgU~h6PQSiB)~^Lc-YcHBXPlj<_5#%D5~tBOY>1R& z3UxKGS4{v{EZErCaC0ww)IO;nt2cIv_9U_9B1ac3qvt~Dg3=t+8n>{W79>(SKq!1P z=OiK-4Fwbg_H2YDGg?}BzZm7LK2{7Y?@Rf4K^p7VPj8Rgb!X2IWMSk`B#|UjbT`uV z+W9-~uO6BH!by|oz3-Ai#kV*~4q1sgF7dT8X9y(?=LM%WB6rp#vAkF2H5-eHZ}0d}yBL~FWUUWJhQ^|jSf z7j1(=DcN8LYqJ?g!STVF8-30ePZ#&SYKoi&kr_HnqlYl4s7LgtdI1%+CM3E2lA{NyCTK{MaH4-`zKwV;PB(?E5 zH`~aVMt-okf5@-0r)rap54y=rnp_>le#odge zAc9wxFV$K&Go7{Id1}8~CbQ=3F-<&1k|Kxw*tc{*EbyJ0NftMrdEDsFv^fmN;&H(4 zA3_vh6RA6D+Hc*Ermzo)PdJ(Jely5*n`JwVgR5iYgMcTBjs*@3KSncqkkJ7s0CsY& z6bF-EAH^IBl^4ePhvXI}YXN4ZKN*j74+ao)S43>(50ZhQ7j`xV#E8(2(5$=&AXJ5- zb;Ikb^-k5bFI5w^4SM{Gn<7qm*%b4}0VH`QgQLizY~~WRifoDXyIH2n<49yBag*dw zNWDkb9+>iyQf1Y1GRqZj^QL}I*R5~+?=O=?8}6rTo$tSuJWMNWXJ$?LaNr2bNEl3O z%hQr$f5Ku`<^*Jm3(2v11bwDNHjtA^xS@3;An0oTQ-}Z(4u^sPk-^B@8gOl2uDPoB zgrrpb`KoTdxA3LwRNQxwjaOpOI@_t|O)-paa?jV@J>$MO{-E*BHXH^?)Ym*8S^%zcuIxMM z-N{2NU(ofxKp?gLjQp4_Gn(bSsJH3Jh(0Rwz%(gC(qO~O<}RlUqV@Lgz3AoPY(FyB z;|cPq({*J4Eis93(5{vDE!$1!{fI}mje9uO_6hM2(9!F@jLziVHq~n{*gX)HJG{($ z4ZNR_Ecot!O|A6ni#--~9<=M)cv&^L_I*z%z#e$`V0VG8xO#stKq`Bt^8^PSn@ zspe1Xr2)xwed`&*y6w4VYV*S<0n$tB(O;XML_{|HKCPZNiMNA(;KfrWX}{PsSLSAX z;qy(?%J;8wwlh4PMYno-4&tEa-kI*n*JV4F^_%?{yY-ZfM^UF!f*nNC>%+}E>65{= zPeMC%TQtH<5d{dH5(}=U6R%e<56hGkfv%CqE^W8o_RlsgOHIE8o~8XV+F!GIZU-km ztQ_n4UJ9Q!Qemif-f2g+UNq-_QA5^!x&ZTh;hN8PyU@{rcA38eO!`T#O_5l(Lza`{~O&Byqysl^7O7SIAD6 z<)OBH<7us*Qq$vqZGjNxBIy4A+o4Y}8VXZB$1_3)PkL=f{}{@uUTO!FI{&!!e&VU% zdAE6sI?&M*q7H05UlejW?x4|X^Z11b3Z=Y{nrM3K5E$9Zpc)W<&Au%Wehkejex8k> zdm6Ip$MHEG5rE0LG<5GdAlbN+IU#40R1%!?U1=1wdb~-ldhP-m3NzujJFc&7pHmLj z=ws8jb~>+F)?GY2y-PApBS4!DD`TCWOEis!8$Z_sMsx1|^5_zhIHLC^?RO*1bLt@c zw5RvBr)_uJUrrkV%&(OuYM+_0?|&~@!#_V)y(XD`b#se6D$inSqRp>U{^+d0ZqSe% zeqBLEIKTWi7eV4@u)<*)Ni`IW0+xA?h!Fvh5P;08jAK5F41*S-$sn$en{?_3&>J7E zNP4pqZ{{vq7JLcZTz}&WpQX^)HAWQF6|)ThYDOr5VfBCC-hj$^cG=2s7(=BGbO;I3 zumd$k*jiF3+sRaeALBrRUt#k=xX{B2$Ll1tpr5<+GCu=HJz{%s=J>OVW-2Rgt*lE525SMFkLNYgrF&pSNrT z%%1J*lcM?+Tmwlae4l{M)Ju24oQZvYL_{R01gfLD|BMi8mjA64KfeqXNLP^BxqSPV zM~l3}h@G!mp;)$d;)2j_T88^M9GTN%jQ!Cg*)womVFQZiV5)ou(E1dhy!sy7F|ei;?k+UATdx7cVr#EXQ6>(q6M}Jp@3%9SnWjz4YfAQ z#(!4j|EYY^)6%n?m91W6#q~oePzta;-R&RElzejW1+?0Lhi(00zU8bsC2qbHkrRB7 zAJ^~Ay}Husd;7ONl^ONkm8KBpTah&~95LJ<6{Q4PL|h7OE5`=BEE6kZThHA409s~S zhuDY!jb950`ued1Oe-Yh25E#oH?R>G-p%TY-@KDfL7Jnx+xDNSB;^XHi^Qh$9rOtt zdo5JP@g6zHK10;t3^4n%-||*Y?iaW{gX-6prOIY(I9Ehf3(2TR66UvIB>U)B%sfUx z^X}i=b@fwXt8~{|?H%5?ivhIz>wDE$C14CVZ8;L8{iK5x#mcb&rRzD|0`d zs?a}NM5h5PP+YD-Z6KP)pUF?e`O%>4_i=sc%(=A<-a&HAq2;>IdWpcvNcEU2aM z%OpqJh+v95wW}GDPKO39-NJWxuVjt(-)`bRY)@=$+ko&&8A=7{UZ4K+Kug3!M-_LMMfm1W4t1vGs5tg@{)JHsY1XRnuk$dAK~x z3Ww80cF^xU-7=Tfii)v;d9aUDdq;haHEQ+BFO3gkXy71K5vn$3f)Op-0|2`e_g=cY z{a0PMw4oO@xa6ENX6liFTxPw*yG>uB2`psi`rdY9XWNTO72&m9b>TMZH zY1AUw!q1#7KPOrXYMqish0wJ)GUY0a335e-jIh&3v!h3mpG@-UyDDDIV1_Hl7d6OQ z9kI#KEsWQQteplkVbM`Ys8La}r~&j_exPdFFcefCq_28ZCFzFt@>u>Pwj=CvwCEji zpGfH_^;NM}b`iC5S@K96vy1HmGK+*va1pFV?L1i2gIYiq3k#4Gg<)%_1Ti3z#pJ6L zYEYiKZrheLbDLLT^tj5;ouu^O~e2(izTw7{sC*85WpD5 z$#4M3y>nv+uZN8tSs5Xy<>K&SwFA6HOJLgQ5vNrA&tprPj%0k+sAQtnrMTF?S@X#B z#ek%K{84JTCNu%ks)OC{-Xi4kez354gfLQQW@Xn6#%w5kzZYyvbM>hqcsA_cjM zG{PK2%#i_yL<^0=#Y@H&KxGfD@~%IVyeBzXkm)4IoP@8Wg3?SJRI4zL1;a*52J1Lp zV^8M~-(^mZ3peIDZ2?RPo->KwPwP8x?ihG5zasv7I{3n)#i*0g%IV}GJ8wDoiNR4( z{c9S61A($T17V~ra~6w?^xseMAh*p$*&4I-D$t*o2FueR=wy9$XRWl+;-cBVp}jgJ z6nX>Uu%BHKQ@WvfK|6w5V>#+~77173-F~)lBK)C1y3O>@0DA_uXNV7^w> ze6)I7o*>tgjgFn{i@I|x;|Slg1>dt(zW0S3{I*TFROTQ29fLtfqv;$h?%gOtI~+nr ztW8T<|J>S7epGqRm7O>3#Ox4#iV$*5E0}m}ir#o!E+N+Q5;hEVTNQZBwd;I}^z(T< zZx3S)SE%~*@-J2JO+MGN;Mnd$+rmQcu?55T{$j)8m1eTTx5?==nM>r?0g zr|@m$rJZ5i2)R8qyfLsLS+RQr~XB^6ZwgUJ#j(1StflcDdlL zdZ^m@FCLV!a|x!5`hhMN$7kx=O7G@n8OC44uD#Ix3Q|R)=k@OSa@Kv|r+6mcS?an{ z(S2zneN(^T{%?mTY!HYyFW~90-FaA!{gd+?B2eY^dMPaMex-!*){nnBYaA(k%e2Au zbWX}E^nDpcPx(1{VO4t2`BK+uA8Anb`FTd~?QH;(b4gZzYPSyd9=wmyyMMY7SLM6- zzJ~7eR5HNgEqdl8#L-On+2;2v%sq@S|6_P=HkvdKm&)3FsORtk=lkn-E~{a2_f&+* z{}0i}ww=5EZ2sSqQvcJDh|hiZc|_Z|c{ybnTYuOO<6zL$y6SumB|62=y*(O!g_6Wj zUqgRAw_12=@0|#;7|6XZXg8X1{?A&(LurR%UfFAu>*l>8t!>xI`IZY5mpuJ5$$c!X zdaZ-}52ij=;=9hxeJGQ(dxnkpl(6n&@NYi==NZ?913#5N(X&-%- zl=v@PUGJ_ol>{zA_j!52ccjsKq!%7Q{8ewqRWU-ZNlKTCD==0@Mms98{EVh{J}26w z*ve|MFMktm9b~wEA|x~1=MYr4dDJ=PJf-(T83)=!Uu**Z7f^C$Bh#kMvQCNn+zi&> zrd4~}ygFq~#)<|^O+=Cqg;<+;J$v8R#qKYtUk+4=a+@?*@ZP>Qv+5vI8V~cVjED~_f8%wguUmvxljgK4!mvH1Lx^qJk!_yTbkLuFKMjm^L3C;L$sPU-xi$@$G znm7;-?i@y`!lSqD8-2e9zc@5$Q$d#*z6pF=p~mZw?6EQTgjlKTpsiDVULt_#R^d-K z25g$&5>1#{Cc&%&$;HF9h8;3AGr%G-FYtnZ^i_G`LY z1O`tzF*J}ZbMB8y=%KZvgNfGsPJoPaxVXl{;95|R5pU+mnKy$NwFFSz25lMg>JXy> zBRcMnW70cI%Acb4d#Aj4vw%&(l)KQ!iNVB2;{?T$C2QO1Q9QU*;BzoVP>j_+3TBS& zCx!=OF#ejc<_2^oyL<$ZF;i@SF_eqRJ&W zOp&5=ahHmVy4|J2|6_^I^|TzK_$hF7?jq5xYsEU`#vom`{V685pHFM4`E>>Pjx0z1 z`(zppfqTgEg44~g{0BGEIvmTzg!P{4(3Bh{xnqLG z{>;bV_sbfrj;ecCPf}cE5`4MS1kJ@g?|x*zv%pB+ASJ1i% z{eY%lgL+0HEBLJ|8}=#OE-9|Y?qKG-mSz}t096$5zK0iXCi zcuf(q_J`-ALj|5hylMnVYc1n`WWPKAk}$#f`GwxfQmfFbO)K4a)h| zzzF5g+7~ zJiOv<_-sAAV*Sq4%&BnhVqy8LT6e)AN)#lgE%7-46_|Gb9*182G@K&3<0#~EdL577?iYfKtYv0v1o3Hq?}C5GaiHi>nhn9atsm=+1?_|#oY z5q3rRCKdUm5t)MFp?d?is+|pnMTbR?#Ci=ZD0d2a`impw@$s3N`M9%qf06{Jh@SvG z--A#=jxkh4Vu7aRFei(0%ZdNA^5PI>;(@y$HKUCB51$|kS^iD`XrSkJ$OWtkaF@{UHkRrw-7ykf^sz;uk;wg^47Jg~?Wsh*KzHRH{y_ zg8kbwP*$OSF$@Qbt-7X?afET=nsEZcs06W&H;LrbE?N=BgTu0MTbG8=IZ>2l>5zsfXnCJ(iC~s{-V&flqeXpul=Utas7b9S zt;%nStX>DeRr449Yp$ynM^ay@*}|Z#OpBm8I8FW!4d$CoMLJ*AaeGTQ#(vr z2WPv^9#OU1R%}$03%Ie+KQu{w1d_z&=t+sKv0V}hf87*DI4H!5LBln% z1GS)94p=a?!(w@VwrRzR#f{flw69mi#>X2=;6m20vQeU&h)iNg)@jj@&}_=MKDjv9 z>Ov#(W=r)*YNaxGMNccB@N}Httb!vY+bJa=fE6)_H~e@E3|TY3U#{?NU9#e88S`xY z#FIdV$YO!h@=o$5;T9M0un$IzqUz5(@b zEcOV!l#{}TCcAY**IA5&W@9L|3rXqEnuSKvxf?G&R?zez7`M(mrhfqIgv0x?M zxu=+k_OtelH;XFIt)13-gaWvf7L$s*#`j09_bUsGz;loYcB$R_LF`*lm7gV(Hx*Lc z^K2o{v7OH&_^0y&;e9{9vv1p*Mg!<2V(!zCyIW{z3$I99vA)c$HyxRu z;ol7UP%j=L!`>IfKtp&hE=r`n*Jd$(7c>wAxCl_*(1Vg6wcim$s`Hi7V(#Q^C#n9Q zp0E8?uu{vDe5X*SM;;;wkFN9lcImtCTK9e-%lmz9GhN$(>5bb3UFY@lK&;omT-8fU zkd*+2Z^_%#VdvZCLw-u#QWj}9!+RX3-oJ%T>j&9fkF)!?LvoNL`^c`{OI1JqTUq?Xl~kXV!y2X5r!dk$yZ_}ne{VcA+83V% zgvI}RPS5-6Q^G_QY4+a{zK00EPT@@9K4Ezn?|Te|^|$fu!wkE}U()O~2Py}*b}y@B zs2H8y%S-jSul=n&?+aT%)ZbBPRY2~QNuKR-|}_SGvz-?vnFSZJWTOk58~J0c_%vPT+BRZRsWCe zg$qQ()YN$yNk6#hj1$xd2RG9Q7Wuiy@rsApIrNfdJlJyf3uW1|j1hLcd519u9_hD!WF?yaPUn09WEzO!bd1vI`7_HK0ke02fn=T^=pK|zmc6e%>k1%b0?=kt+E{d-KLA(R zAu^Fmf+R8f&%IOQ=l_;(w{B0KzgNY&x&lG#1Aqlbpfz!AZR&Onc-P#_&e_MV4I;d} zM0#-sU|YzRyHJklj24?-Q+c(P?RBlfjA4yT3FOgT@I#h`A1~?GtEB=3j?`3ZM*gtT z!vlY}-9HHGIWX+BrTWl*JpFWNUH*o0jn)-LgY!=yXnR#z!5E4;>6g3Y`%mGBeFi@d z<0*xg+CY+5DA*+3+haKMy( zATr|^g0}#u>g`0q^d7}4&R}gZMYnDHDi} zSONqum0p!PTMU5|(3Af4>`@_ADLQ2F>^>D>1Xs5bqzhTFa9zHY`VwPA68aM{#ztcw z(r?X~b4rTp=8EC!dS9ix(dlUeh+2q+(=}Vra$-ex>W!yTf7!vL!5r=Gl^B_(T==?O0}771*3}ZZ zqm3xnbfq+eHN#_9&}kT9{m|?&+CvxcVOEhILG8{yT2w|w!XZi}*r8A5upq8*G88H- zzYH&iGRCNsT3NmcugsM4ux{J8k^69=-?FntLl1b=Bh>p=tzYz4XsDIJ$tsA7h;E+v z?9IU!D_bdltT!#rp2vhGhQkaY2qTchk;a6>gd;Xb224+@8HF-kds zq_W0g^QH7Bd@;A>D1RYa>ZLV|ip}#%w*eAQS;98J8h?Ep^d9IdW-Ul3i-~VU0YEDW z+OB_@O7U(w^f9V8%T>}+L-@$;HY@8&rAsee#4KMXc_U}Wv&J8V4-^M|bzm%+t)8pv zdi#Z1D)n;Pl6&b{ePSzfVX6hS_TZChy+%4B`ujvhLe{FDnJ>0)OHqS(`?&{Pp?~W3 zykCu|@x2(`PRf3DjsIMh`Pq~A{QW$t{Q2pB2AIF@G%@lThbBf@-lb%A22OZkN$U#Y zo5z5)0_b7S&SIvk>1wPvZQucK)_?!~-MF$|LGh`ER@|1|y8U4rX6Nq_aFrWyRdO}3 zSG!!BkG~Ik?$71v;r_6*msen|GDnI~!?uF%{pWJg0MG(%a}cnDdRjE^aR#YUtyy%r zourx3EeEWv7XTSw^q=|1!>NBt=oAJkx-{;5b_7w5L}7WQ+M#^gimVP`K0SKE!2 z!wTe7Wjm*qBe^d53;Q_>`*|}vIWs%CGyC~7`yQT` zuiYA84i(MtS^2tI)Z(6}ho8)}WhAs=S|=+>LgxkBdt}VowKrh{ethJwD2D4HT_upc zn2?sB-m^0wpYYd`6_?(Q>Sxy?#I2sSr}qqEnvIR&pVj+GmVTsO&GB&v7$r@C%BZs| zlY3HHi<0Io^sLb2N}Y)gAA3R1Ldo7r+(GYMa3}c-OUzL4jHhO<$@oDxJYeBK z9Ud@=jzT+*x|at7HGI_PiMc!LlwyUdwUjKQ{Bj^(hYyZ1#e7X2*UM4N_RL0NadTC{ zH4|(n|Im_2jb|Id5CAv%@C&BJsNwS}Wmku=bjNL9D)%rk6YG?Nc2b595W%7NgNaX7 z5w-ivl91{zI&Qh%j1I+jDF5-tvQ8b#W_Oz8a8FyOT`?9q_o>n(Vjqxe^Qndvgx`pC z)I}CHI_pZ1R}qP9D;KHm`2m)?tngZkEg**6j|ty+491V(b}gdG5Nc zI6=M7J~-L7u35{3Jh(_PJGjIifo;GIiAh^!P|pAfg~jC%(r>V3{Ol(B>X*S&9!7mX zJqk7ObTmcHB=V;zp)ZoKS%JZv9bok4tFWh>OTPUI2MOTzHAr8d%>SfH5M;CkM=bxZ zASshz=f~Y%*o`w08>CYE3eWq?%>!$^f1t0mb?8#u8f4)U^dMz?zvbgjvKmYvW&#whmdt#N;h#=ZkvQ1x3f*#^4XYR*+5jgt_M{>JgzF=g|E= zkB|$Y+&NdR0mZV+i$os$uFR6Zn){p){Qsv7S5jBT7Yc<8mF1Z$;od8^{{1{SP8WK( zW^=R+J(>es=e1+z)H1FPgqGfnC)e8OK<$fmrN0t zQ_8prj3`qJq7oe&*!R%5@iGOs_Ga7R4afF3=0vai zqgDGTDTjk;>NCKzR7%T3geWPV2Ky9V?KVol9-jO7R)e!hG~idi0p#(pIh%A-tKR(U zprd7{uETOZkh>yoJ0nSV$a1U0DR&Rr8!#`)8TW*~3vvVbn37UAo+v~q@?|Y;`j}ij zEs{!$G`(L^HYWMT`1^PKnXBHG$vD$Zd ziM!i`H_WqcXxMy+_V4w!ukuf4h)NKtx>Lo_rjf?ayz^M3N{6D@Z^g<{ztf8G+0CyO zk9Fz;d?33g+e|5P2>&xb$V>Qxt!Y4+!Tqwph)KA9*vzd`(!51>W(f{xGo~Qo=mVR4 zTFkM#{eT`H1$A~(F-weh0mDtpuF_X-Id^6`0?0ewGp2aHUOCxH#%$k1eb`&hNN?*RpDxLaFj-TrWa=q6vT8Bn{_Kwucn(;f>4X?f{q@!~^2y0jWS82PrArbfBe^#Ly}E$uZF1 z2{ZoD4ZPFc1j5oSrLB)I(0xry`-Fh<^oD= zQsYJqqTU!vmnt2R8*fho8sNx-%2WB>NQ>s|Z}TnFWwPP*QKB(D3QH)18uZf|n_QdL zhstcjFrPepVZRAfg2Q& z9JKId=WTiW+s{AMUOSO5JvI?ivvAR{FyVMvDKuiHsZ`8N7LI&8Y&U#QD?lePDQmxR z4Ju>4D zU!AF&o6ptzHGKnQbL?BSWA05^KrE6NmFJ(Fp<@RH>qN~7_-FH1_eAu}EndMP`@9Vfyt}pEa#$Y@cw}V4+n&?z8|5F5Gvo(vDJUXkz=7PrWF8|cpnAl|| z){<_M+sy2lnK}$0(0jvc#2uoCw;VUKf0e7$T4{~UFubFPzu7>hlSUE)QVp{Qg_{_$ zO*(M(*fSPU1F6^4vCJl&u)UlIZ*^&Ufz^liuV1$dA61GT0pSD>?i$LCN+G9!^@WVp zcZJ$yM0|GzzUud~Jx_m~mnkY^z7ZdhKz#I=y&~s1t-7|-`M|LPEx^(x7YWynt-Rq@ zr|n@(^Ual5{Ft1m-?T7dK{#5osRhjek(L<*e5JxKI3zKr4iGhQ2;u= zK4YAj6Dt+$14{3Vc&TnmWC4t;ot`*7sZGBrVn=4Ln7rdX?lLJqR6J1$=J381x9gn| z#Z2$~Gfcv;nAtV@2@xNO+!^7fZ2#bk&w|gs#JqU%KsuTW^J72yF+~4%%f$ zlI0O<`uT5~FoS&_(B8C>lR1E46u&C0<3MWir{63N_57|K1@RF{mjM&iT;rWi!iS zy@~wTkCa)Pv(26f+lx}Vy#?{A!)#mJA65l#--~bGu9gU^KT`-7iU+OG^Rgd8xh{mV zk>E+zkkxBTG$A-Q!oC)M@8{Tqlmh6cTmI1_p60p`3pUIe%zFg5RkVCc&adag0r+EI zp3^G>S%pB*`HpSybOqrkugFa)t7Wrhg$|+1t@Os+A~~QPlQN$YGzZjUBF{Srmvtws z2sh6ZY3rrGSsP{0u@#;qFU<))*mh=D4Fm*Yc)D2X2@9?bNR@Ldme#v|{wJnx|C4;s50MqI_*DWdEne@h8|v!nUm=c**x__j3)le50bh4B}q0RRv}? zfS%dAuVp^J{Axg*vR`ZV*KcFL#cm(&!xQzSC>e%tgwI`|Uq{^UnVK9fF0ZwH|`*>b9@PnclN*Pf0lY z$vO#Le}FmU@-+I}ipSUT<2v(;0pWQ}?a*}l_lp|D3H@ms8d+du3uTdek##shm~8~N zW8c=PGp=nai3ctErlvrw-Z54JOBgXdAgtDK9SAnbOaV!NL3pQWZZM=4S;pH@xSXqqIRmr&^U`_|7FX4bD!i^* zkeJXuwdz}1rxD`w*s3LKg@}*f|5}8D4gX)V%JvF?)m02@zgj{Q7HSs$3QY?sJUr)7 zULr2xbfuSQ2Uh^VuQ-qMJ$_*b`I6)FU>>?HXw0DH8f}<1$bpmf zr@A3U!1bQ@9ycFp_BnIO2~uojbW>4(A-YjOY$!^1_54KBp4^U@+>z`r!RY|L<~d(} zgqQ5iajQaM=0_f3h*jh1nV5{E@q0usIpWk`l01-9<>Me>gT&onaEObeiqJHAFZ@oJ z`mVO*!#y&xYt+y76*t>FFvgoXFR$=yzUbyRKe*aDph~-WtpjszHHy>jSkwquiPu5f zx~eLhIgEjwp2@9#GC(T(wN6dGA4CV?CeIFpW>eixS0(m+qa?d|RNp@!D85^GVvOD? zb>ZM;ew=o@1)-n%E$y|rkp4vFgpNEH5OmA%ei@DdcF&qKZmi%mHPyFnZ3!5@W7s{o z^Xprje(Hx`Y;IMOy=)$KKljw$@O|%nw0WY+EYVy1unsBM(kfT1(S{ku_C8`^nH1#` zaC1);$Q=}j)2}3UlvLL2dPy2pq{}uLN%M2jm(m8+p}%Imw$qEHe{5J9OZ%SVfPt(t z$W}&wEfn4M(vuj%ki^OutM{Hxl?g@}_lus9J;8aDqh5#W@hz)_K>n@bNwi@zi+(*5TBhL z{_j~5uhPkJi)5w3vS-&QMizDd^8RMdy_PV@7u@zTPCeUQmtLa=9b7&q*Jd;!;Sj=5 z@Q8+sj{&6WNW?oS{OZV?PSvA>1yxLS~KE#UE$SMv8>#^WP>iB z%%Gf*a?@*%hq^~cXAI3zeEP+BopbaMc}DOlaBYD9U0+Zq)Y0mjno>?{g3 zyTqBOg|f*PC9?mrV`zL4(w?E`BqWs9)s>bV1Bihe&Azu#Ej~K1rp${pE0pHiLwnl7 z>%qHXt<%-$C7*%CDG|$7`P`?h5pSl>>*YfF-t=0B)7Djtak6M33No=vf>M4rOc|QWj(JNvvwrsMhApa^@c^i57U77pjZRBFX(l*AUIYCLqrlTC-9&>Sj z>=PR3T61lp3<5%(r*20T6mjxCOD$-8C-_bvM;#f*;~nJ01RHviy4F{WyyaXrXly zcqj4P&Y`#C&a?52A2~$cj2`Qi--*j_aFWInh0<^Y33z?sE2q30;RjY|3#dJPN8zFT z2YF&AEv@Gf(F$v*OXb~AU-v$eei+K@T85VD;v$R~N{_Emc&%C3oNXdt>wc#d$6?+D~h3KTxkr@-@3God#KuO@2;#OkV=0OuEeV zgnr<*rUNCse&q1|;Q*Ky_zk)Mwq5{67c?}dxqFQj(BZfRSYjiNKYO3L8jGbLcm3zt z@p+b`7oX<@xJB0#t_Hu485r^bCfpUP*VhIv9%PEylIWNIz}N zyq`3q)A2Sbv6f;qa$s^}di<=uC#K*g(=Nlc_jQ8$(Zck|pVvO0$jNSHqm7yxrsQXM zZth*H;VzEM+xF}BebaugVk$&Q@sascr-}=H>8Ii)Z+KOilj_Gow@oH&)PJg6XsM`Q z7riMPX#bEjiZTk-`Nqu&>;!CJ(^lqNKaH)2HU`rAR|B7kn|^k;vc~q_3D!fF!abcP z4?L0}^Ygh?s&d>}swu%-+ohvAvy5z!QSlEcRZfzcX?nb4ZJaaf4o7l(GjslMr<$fM|9Rkob!594R^@!F7#qZ zh!vT^+r5M}wasABkjy;?P}ZyE;iYxN>CwcTN$L~aEnGG_>Tcg1G{kO^jFZ22p|&Hf z)AqJ~7fVXSFI8(t)0W%AXh zJD?t_yo*V-84>)d!}wD4y@oW$>aFlcqygc%BBm8mwo@85AA_uo{jGxz++F2SqPqbN zKq^~6s!iWXOKIAB{lsU6#QcmQf0NwG>+evTey}obuPiPv@YJJZp0Ag>lEX}hYi*fj z2*2}wE1>fwt)xr!A=`=Oe?Bq-8boy`n9aK>Y-QRjk9+FPs>=(%B>cQlQd6<)`l^W; zu~twpwnOb9@09FoG^y}}mOt_5oIgFWYL|_SkPU5vs-C{n3_3X&haR(oOrkja`Xcvh z(@yJ))526GJEAh^%}F%N9D}Lnj)^0o;_7K;QY>-b+6I2Z_fEZn&k~?Gt{5;}n=s6a zi|A9nvJF|i^)}M8Cfi)?&@$<^+N)pm=4dVr5UHOFk-C(#Ct7X)M$!$1 zSz-zOZF!rgA?v0eM|8g`PA*alKmWjy&6b@d&=~gsS-_x1^x5(3?c?;BLkZMk3s`T= zPU3uA95)UiIJi^1eypccD4%ya!BphSus@km-@VreSNVkFV`ai|SsCk_=;O!TBiObP z$mK*nR4HNmUs33rk6oa_q7)VFG7C4`cB*W#FraDTuHycNx=8G^!u~dZ%mjbtpE_s@ zJ);`IU1Qx}ZcxCFL280F`l=7AT?yj(1Z++4MD)}I^71Y0=-0vd$$eKhlkYLGwOzrB z*CG4uyF3JRr0x09_jX2*=v@N)2o^q#zlg4eR(V}G@mvlWoR6NOCfb6|W!gM#lc3f<|?K2Su zxDUg03SjI#s+?vx3h}q+f(Gi|SgO7cI84d%Cjg#N+gje$hEd>!$iM+UyeCKwa9^D; zoMB+=b6iJaZn)eOgm+##RTcPU}}w>f0`iUR8V1Ak$5 z+ID~nnq$3oPr=XNn|=JlIp?CJhjUw@H57lNJpcXppWpxYmAL04*u~rw{4bjG(fqdA z(33S!X#agd1VL+v3x9Zg9+gihs?btAyS!cSC2eH@8geikUWhH+3>iQw6Z%-8CLt>c z#|P*8t@ut(P`WO3dxQn!fK^tuwNgTAa>5Ba>2$CfVhv0Jbk}1dvsZ1l0Y7*F{+C6v)EbFo{N5|DQ)A zLCKA0UW>lB`?&}|al_#D;~O=BJ(oa+#YHF2RcD{lSsiNtu_1U&CUin3mm>Z#

Oa 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�R=V+mJmF<^7(fWj-eU}+VF5#nW%a8hxe5`E~8$L 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�+CQUF8T=8^y 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 `c!#PeU;5DudR8gQR+*jaFe)+pH)b*-ecluhA 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

+O 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

SYJe#Ep62(uu+7>%KbRB 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¬u^H_g_~mgol&Q> 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

^N#dQ3mhRi+O57T;u!Lo5=Qp-+jd5E@GRAkN=Nf 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�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

<(FUXBDB-{S5bH zeGHs5CJ>9nM|X|cmw#)8BV2@_M~21+nZson17qN}SW?V+KuJ)WLi%fpsW{R^a0n0= z&IdCMm^BWegyF-xiiRE2iGchZYXcG=mK?Ho zR5-L0uWA06W()`u%OyO=Gm-+dF5qpK8zyMQr1^6C%{e6^UmDE0)ML0PMT1&v>hHkf%n>F2*oZrq5ubAso<$ro_Y3s$0+*R zH-sSGe3@Nc(m@aen9aKvoq*$fvFhClqK(g$lR(_a7LtP>^x)t~cy6M1zQ14;{XeshP7`j@-5oEdkRJb%0ubBqE zM@w4Myo^V8@U0(p&#DZ6{Y{oD-l;PXuR~Uj$1O@cNsNKi*tX39WP@~Bi%BbqLxZmN zF8jp<)z2Y&+N>a>h(ZP}Qo4vu`Ay-dDjsE+81~a14Z!>G+;=HoqyU0Hz$3XmrUHWT z3h<1L7=N+Q_N0WbI5|d0mS8SaGE^)Wq_e%Fv=<`m=Tay9%~$2s=f~wh#^a!si2h~c zCVvIuID8IZiDzGi(uhXNZmAwFeq`q_6-DVM-XM{VNEV92XmaQHfG+_!`J#ko38s> zGc_jO)BUR%z>ThK`?C$r7So7~bY_cxvkpC0O(TM9XHDrfTR*v77dOK7Eix*qEiV7{ z!)qohg`)%$vLvZltK)R6P^Dkz&;}3NYxn)yR=X9vJ2xAJ&u+dTTm8N<@Qd#&9&E0y zh->t#O+^3uyk(QD67 zTXag^+tgUMJo)5+ARa56-UUqFIil`9D5KkVVt2L^Jq+Wxjy}~;R(V!wpbG^5D6==;G=|T6PW>7<~HpRIMp|Zi5YSD7~VU&JlS!cNE#ocR{~<&xF5s@S0&d4VlbH{ zuxTLNFen=_he0+3uh4+L^%>Sz=lXvt?GH&`>DB(cjQ0u7X7$ul{V>5Kbd<5>9xwl& z6&)eHv%2p7GIchtGHaSX%~+B{4gL*A=$?_MonY#ovSrnC3Ue^dg<&f5bfBXsNn)Ut zlyf#dALg}x#fWlgsQ>p%e1bd%wWC34H~@?m zskQB`g`ff9?|>h%&k}41sr~TsAedE>CHf*xZn9( zMLYfSPqUZhLeSl2ru&p6yaBj7FqibSyW7WmdT`8S+wh^X(KbrqA!eZVlCD7{2EXOj zuqUnU)VrjT-gdRtX}ji+y+9blp#0T-@KVgdDf5&W zF^kWYmy<=hd;d`3?}PGG!-t8E;rJXiwlJ*ESm$ToMii5?O*Ar6RlMx<^w{0UO5ab! z7PYz!8F5h=yMGtG#+c`pit?-$a=)BOz!I#?Dr?G0WAvQyPsf|_2jA4lL=+4%+=oc_ zJD%obhR=ugifz`au{`V>SzrAW(vh(WKd`h4oMPKb{KE0jKk%IL%fFsS zZQ;A1n=IF*+di4hvFinen1yP9MN&A(>W4yuj?3qQTobkDzYanprV?!b^ z-zt1qY;miPY&ZB}WOW5s)MahJN3?$3|9IC-Z^=Ds-SvaJGSD#mA0S9kzT6TuZ1nKq zLX+^B$=RJnRB&CcWah&{MWk6Kw1LgL&5JL&OwVgkbM0hIm1-LgS0vAWQ|vMRGlFy* zZDcmoaq-JqZuuC-M0@9nNhXC4SI_pPw?(SIz@%xluWHbIc`4;RR$<9+cDCzHH~!l! zm72qc(KRGxyQtsSl(RQV8*BGdF#tOQ7NWB)&OUQO{aRZ{=iuF83s1vFYF+B1fLGZ` zc5p;8jmc=Qx4qjqMV;g*u3HJ_snTbeZqYfqh4j4A$ql#a^Qr?#%UK?K zy59ZGbgQ>Qg(P77Ii5emb!%JS9jggsbX;7^Nbj$HkRy7`m1So|D7aq`d^cpe&I7;$ z$CNe?1a$0tCtS4b)2jv2`ej`&<@MM?nM40o(lzjedrur1elcBJojec2ExosNzDG=+ z4@6b_{2puiO}R*z8=QTonnd{`Y?4YBr&2>qXhB8u`5zrI5w1R7zb~}Vsm|3Cue!^W zIn6|U*Ls~&_2RO%xrCuYDQdWVh=6#pRc?5Y@EM$$IxpG}i#i}0ZdHoI1+1I~t6scFFgE}3+DIE z{iwoY>6q(BN%5@RGxptU-vgkBHTMKt?%sSN+Bll&bC-T(%@xqfuFx55@I7dVy zNkSVZeUqnv0-omV^ua;)N5=VH zo#%s$DorbCzhh=v4ToFP$H&P7N;hsfi3WJ~AU4!3Kd1IULKq{EM}rW+Smzz}3*bfS zOz}E3bCx{7B*s$B61SJnX(&0R%-phg8>=zeAZ-k#HR$7XAV2a+P7pbZj|vIBKsY^{ zPYz>_t}k)Q+qj_iAcC|p4xslE9?U_JMToMwp`~22I$1Jl-Xg&L?&$&~U21Sz3 z|KzR0<#3Fbw8+#yNP(!sLG*9`0bg5#$)E;)EZkemIzW^3WhdBkoFL$hbVK8=y&kd} z$SQykMoK2}i&ux1wi^BwVFeXL8A7Xp7!xY<<)h;Hfq3bM(8TM^+yr2ST|78Uu?M*2 z#bZkfiG=?B*%0YGo1BQCuIrpzydI>u7bcH&eU^c76xoF6HWJm(=4m-B+RWWJKYd38 zDRkxiY50TL1!NGA9HYVNR{0U76*Y?ycw`ba6+Di36*#p#m4qMqji}YARjCyXsMrAZ zhFW1Zpwg<4U+P%^=>U>KbOVRLw0jmpkwF`;=P5NjrX5-T zgWe*$P(45)c7sXI9dZiQw92nqAVg#0-$cgnt$(XWT@p@sjCkPqoE3!!7g zSH8lbryTO=;-r%95a2;sl~pa6qV;3N5;F{F0DZrBpx!sQ4&XK7Hv|XNfajwQJoF)d z2nVZA&b(M9-p9`fZ>m^D3p5t4KmR3}pRyOZ{=Y)-@$&3tld$wa@f!eSK^%N}V_YD_ zMTP9GXd%E<-|vX`I+?Po#d~6}Q`EsnRkEVrk%?{-X7OKw;+>eR2Z~S5nyVmiQ$Ph{ z{R%RcTpk^4w;9^OzjK}g9vlIudn=zCFv!1WZ}Y z_s@?p!|#X`g*KEJj>tPI$dy0PmEFG(Oc$@)bM^GDqx=jkN22^V!Uzlq{hW;MmXU)( z+$>!NkEGxI&FmlW=o5bX4q5G-UL5sG)jbpW%NWF@zYg1nhM`l1dwJ3y%%r4mFJ}?Q zcjZX(_q?aB88L_Qfcf>=mvp$!vwq!_f@ejN*f4xy?C+Y=Hh$l18)~e*^4~Po|Ef1J zvzi`GFUYJtJsWpP_rB@3YD&EPXE0agxF|&IvY$5JP>G~9c90(C>B4$2+fZ+@ zb&{b!P_VBfYI_;U4e$W=!p9F>rnwKj>$rh((vC%D%`IEOA;0ZqMj+-Zv*})HgjQk#RdoWHv+1MhhnKmnH(inpyJX5Csz@Mb{(4JtL^oPxr>&fvm zWtnT1cQm~@PC5@oEc1>&+bZ!v{DZa4q3??{fOF4(0qng9k5Yq@sp1+Bpf@;8b}n7@ zH_fV62dFn1919QBLg@kG5ZYEloF4P?EC)3tn%bPx8rY~DL>>_VROIH&M8!8-<1qX% zYH7TjnGZ9Szig>f@p>6*^Dxvv7&+X-<2+$&bm1LPY>B0)PH5yRi?X{Wl(7chmqbmB zYR}DoYxLE3lWB!1d+vSgM!c8Of|JL8Y|lrh~EO+qI>Eh^ka`~QBShK25J%dkp*Q>fQai>>E`~ua!Mqu%R;N9p=}QV#IA@qzk3EJT zfu4c6J!Z`m5+NgXZnPe#lm{U#N6$Yp&Jz*Kft^Ez?IniUNf#N`91W)q0JRgDC7@}2 zH_>*vj^)e-5%@zpu<@2t7^zVs$V0!@z~UmCQ^8apB}@$x56n>2fMo*f{D~g1YE9^t zd)Z!NnVD{q(ef4#@A6>~Mzj=qN=W50k`WEWSY7ryL&Z?I_~^By;r)uZ*!MQcXPT%Y z2h=gP@_zURCK2{KD>@#7@eEQ)s*1Ct)L~TE?%dJ7OOihV-txc38B`~xXf9n?-YGvdODbt%jx-`lC1Z$VdkreHV!{}Q|E1%3e8Z}CUNqN3SiJ_QS*n+_F^YeCAnd!xYMyrLrxxG3rsbEdM4c3{OHFfM1%AK{xH*6QP zBq!^JOXhdSj4JjP7CljghBqFhuU}s|^gzyl@72k-@1qu?HI5@quSURY>2&T}W&q#8 z6#HhItalQF;Owq-Q6BxTc>jmf7Ld1wreC>~skitc?DJ<^5|9If_XB&x!S-0j(~wZN zBY#R^9pE*`oq0W&FT(J7Qscc+888w_#q?vU=Uzo$ZIma>wWiOo`S6CA^7jt?z63i7 z`8A5q{bgswQrKK;;%9I6y$A8XKHoqOS^+*x*Dd20#og7UjHr|Ct<(EYUmp5t z4XLAqjF+!m>#qQ~R z%l=EF-6$mhtol3$JYyV9!kfQNGB}!sj@vm5VsdiERT7o1Xa=&gcn@7vejMUpCm9e$ zGAXs}wNiz+G|8VpsAR^bRT?s8oVhmO{bGjbO2vJZz+#vHe*oY?FJWC)yr514pV5Oe zUfwyfz5NU6g6aL|-bp=HYWD4UG4v|F{Xbf`a_c33fEj1e6ftOkpskiwVh4+KayLt= z08!0PwK!-E$T&pRzhVM?P~pc8kSTJY0#U_e@kFw5z|j# zLUN|qL=*oC-(RLMj`b>6@&Shh!2i%(w9bQ6oKk}pi z=ln62$GNm*px~IEo|>wwrKP2(r)Qw8Z2-K@R#ckwp7i&hoSfX~?C4rZ zPA+y08%6{o!-mdOJ$agZ$9UrK7boLmAin{&s3;(lgT$;(!Hr3e99KJdvQ?z2U z1o_bfaP*M(mTK4x_554CI~jf@boprZ!sh}|iq)Q~Vc`M-?|qo^tY zQ#jYtu!gCnHJR)a{bIv@2sT9OmQ1D&O%4A0w{Um2aM!W$Pj9kBE5Mri6dLK_{mCn* z$|ZMcN76W{AbA}oXBFOFO*fi5(N-dEOdIgM9r8}GkXMU@HkYY>8D>wtGD8@EEb-u_ z?k7T9&N=U}AfE>>^#Dx&BK}ATMv;Xu@6Vm+JfyEB-&2G;nSsTZL($b9NU0;# zg|ltjI)2=2JUFRU#89-~Xb;pD`2M7>RG#aDj7@&2xBZ2%DGuWRz&1L%RX?aw9JPGx z{@*a{4|5#;Nz$6vbERR&e>`^|#soRug{3{e+%)kK!{FNqolWD+NbGx}s4=DlV zLWpZfD&-s9h64>kkr<6A##*VyxL-A|NIe8A9Z;K}HT!s`1!VM$sM|Nt|oVKCxA*(wA%BPiB4^MxM^b{IdNRheTMmR-Fh>_b*~G!wgeI}n2b zm>4E(-&BpB%{H6ML)(Lp(FJgc| zN`<0RXC7k!8@~#0Q;aX=`K@>zvCC}{L|W(0|He2iH45 zG`cZ<&`(Nly(Y{HUmE~%#yx_DPs0(^Q*tHNRA{3mV8qX zwI3yI0MaLtT6|q^lxofmeRo+74QWRpir5|KjWjvz zq=@hhU)l&xlqG>_|YjsPe%u~3-u&{&@0pUC6eq$x1BIdP4@}yr! z`v23p2BKbXQ2`TK8H0C0*OE{D4pg|=Mx^%h!euB#WB3l6mffXwrbr%PIe#kBq~ z|Gk~X;zow6*eQiYrgvSHa?@V2(8vOJYo&UojkZQ2KT$0-Tb3rz{u{4Vy%#R)^0Hw- z|A#43ocm>Y9;~dGckLUQ!A&n71wS?c;aq6&m<%b;dQ*6^eH=@e9U<{P@d&@zU>)i)*ZN)Joo1*XRH%-H-DO zgtVr)V8Ah`kJe*ETeOkKs7kWct=;37_?ZhY(b%hz2Rbap2Bo`G#V*}7B>?S`f3jE~ zxI!1}mukI?a%XcUH|3Q0))T^BwHB$GOe7eRql`E8yA)Lx@K!Nh7=g|@7 z+ff4EBqV;^S+c&s#HID#*E3QwHck&JQAl+WJg_-vQ3TUsTmN%j)DfqzC{}J@$u)HB zh_6tnwkh_y1XM^*A_hcjB!eR!M1}hD1)KbltYET7H?zU>=BEeq!@n)M zt|_}$QXJmv+Noby%LE+#f=}`V?L@AmLUh(VS6Q*_ev>_)s1tScOHC1i-TJUCofaIY z`UnjM#|kwK=a=7(1bJb7KYo{vn(lt%R;X$7nPq#}VP}5n)%2i@=tRQ+Nv|N+-LL0S z!G1N;Vxs7{c^1OgF5*-wU()s(Td_5cwN>VM7+t#KbuFR`<}@j9x~~3SdbaAel*U3{ z!^v#VfBQro+!mf+KFrVj!=gUhmf?Tg!;Lb};rT{*adXpOQfDB#WytfJgYvc{)jr+x z?~slTi$A7^*ZrwY?Np{5#Wzmia~6o^EOM)cO-CMv93t*}FN2U+TJ}T;7^HmMbrnOw zupM)7UuEPP@)8$GeA;$WfFY@^*mme>#hLLFqry-!9pUg&#wsSiQA0`L)Bk`g0E9*D zcIwt<%Y)nJoxqXBzdttZTx%#kKOV~>HpJHWC{>$sYE0Y-XnEXce%O5?Fyk5*bf!Fb zK^{Zw?IY}RyC#^x!hBluRWX+J1Ob>M6YC%N$F#bQQn% z`u!*WzgN{wqSpptIg^Tot+yx6sTcfsH;9*eu_dkUOB)tqM&q~wp~b`b7qJ6t0ygic zKTkLPJwJRnIAo~%a@9#mfsG!k%iz2cNUXd`CAJpMZEz9;z*N=}YPyqTLt?$^MB-oO zxwq$yfw$3CQox3wL0OW&I?_Y&4fP5GIHlE7(*C$#83_hEl{Zp*dGG>9ee9urQS_)W zUvYi2)mHCg_&fTHSZnY@pE65y%BviaYy5KK&Cq%xo=BNPY&fK$XUr@QbM1A1b@DtUDght}jsp{$A1`gn375C8x7jqXE zb70n`v9}#CuFJ~7-OS9aH}X}J%l=FQN;PnBw2oTWT2H2I)hC##!Ll6Rq8@TYzW0}k zVT+xP5~l%8vW`dRa4C|*O0yP>`2u9@&^uM-Lw*JvjTu{?arHabzx=?f0O|QK=={?< zZ_avnc!;(9=Rbk_v&AOY!?`L?;C~D3?v^guP#0D#oYIm1^8|kQzSRs3ScYM03kv#{ z#ID1jrOCF_yXU|ifg^7tuVJ>qyvl06R-8c@f9VqFPnS=hdWnT+(J%?gO|@${?UC^y_xIe42rvo!+)E56n(_0Ly{AOE*TJ=6&!`e<2$G?aU?`-J&%yb%L|VVQlNc_kFYmJm7yP_E>hF7jm3bZ z85D93Lh^AYQ>>NZdtfwdVB*H*5QTU4Z94sVP{1W+p=5W*Afz6~BbEhq0+?O>b-@v{ zl!5AHhy2P8!ZfH3wccU177TyD{c3Df}P>I>H1}g@`v?Fw*w#@Gh#b{}59_ z!Iwz3g}myt#n=ft4gg&XW}L?=$)d=j2!TyNSmFi+R4Q3ev(3Th_cNE{9IJBqCx}H^ zvj$o23{xp`6b_U^MZDKs17-<(FiW;*Rax1tyl21*zIZtwY$iY$I0y$A)!-f!vF*!y zWsA`r0K>id+@1WGE?%1f5m&&d0^}G@o`S1U{bI=gewb7671KZ%6rCJOf*m6s4d5>r zXyjgw$^bD3y)G*XNo}y%Q*xJrLHN(-_6k)kYkg3>6Gef0T<#MGf}%%?yo99}21_O= zDw-$+a}BwrnTn^OsZn&(D4WHE(v53p0r7^0elEZWRg#JU^t2okLUBWYC`PuM2hilU zg$POOLS_2L9yEL-YO_LdLTb#UXz?zfc6Q|4_qO?A$h56*z{sR+4n!t7fCVu&0Wop< z#qh8#1%`9Jt?>JVtCvAv;McZU-kgXutmd(b{Ylf_hUrkl9&7w90SS*Cw{!%?GYTXR zo?jAw$VoX?7(dx|l93>jN$SNQP$h^#CjNtcm7lWPAwF-KC(sYV-_m2(nSA8X z{3;>tDaDZ=H=Ce;%yjNyVxA9x9Cea1^>vc8Q$7ukya52}rP6tmN2JaL1{O7;`XxG( z#Tq3#HN_g`a}lH^8b5U=?IwPD#A`7BT&)PT&=4*G;P0Ut=l@c+fC0a=ngBgsK#Z@d z8A!?Uw3?WiTV?UiSMI&pZR`Sy1U&7_q6Oa>J!9T}LEf^GpOPZuc+SKZDQz26$Bu1~ zc!c~#6{(tZzBcY2>@T0wg)d6hK+(Px(U=hDw}aE|hMm*Vs$&BSv7HBMR2lC}HTNQ< zOD2o?c56)tVATj<ZC;nS{-pgssFVat|B)0DEMg`te zif-M|ZtZ{aadozT2=Xyze=vwPfLIVSTwgm}EYb`9!Sd- z+Pn;CLEK}E@-pK#cya86Yy?=s{vjK1)z$w!znl3uwA@I>s}#1dfqgL>HAwj?>iQ`{ zt95;FSv!YoV6WED?QkT)r;B9V{EaImH|lMy;+X&8A0OkD{Wy?P^_NK|PqpA_n+xYS?8|w-D8Rmap4L~MvKiKB-Vp6?;VdR7Tw9&^> zj1{xRWp}ue-ZRq2GwG{TlgPM}n)JH~g}h}E!q1t-^8X%0Wf+bvj!qkLmK&!wK>9(U z%Q7eaX==r3b6*&ZTnwEY5Z$k8hKBkPBYzAE`YV%!FZqi%2n)zNrP28wx_Y*pU-aDk zcl7i~16uUlLmbQ?*CFs8Zq=vw!kiA+esXAG+E)ULLz?X&Cbeb)wfi%*z_5t@nS>#z zSyH8%>qIYw-Z2 zcj6E;pi*Ss6uBm#++8|RJfvCmX54zH)_l_(2*7V{ZV?l0KK%u}Z*H1zZJPTsq-3V1 zW@Z}dr5WmJ=^5zEHkkAd14{I8uEpZAY_ZAZ-$F%mvoIguv^9^-WbqzxVGIjkQtpSL_b@#b=iD(7&WX8CiGFsQji?sntjv zzqJvD=>YKMRSl-0p1Y2Y$aKKixIY_L7P7rOSQK*or>A3J&7)iPzB}C7KL9LcAYFOV z3{LaU0b-msIB#@iiy|s)o2Cj!*x6WE*;#=}B!j~f)^Fx3YY=ky0L=%0ogH3!Ek&*J z4{)>9BQTj7qC>G52?^08PvBhZ6CdZxrmQ2ROZ~Q z>u=CBK059 zG(kc}h9tQCh$BQ42-7n!s_&J|Bh?>g38ZIFd zYpZ^fzRg7|*4##FT>2d@Yh}+lcf%VH!YN6{@&+LG0^8(9ijr|1zhrAlRq%L2tcQTT z@^>al;*wU`Zzh+$=w$vquSZuiE98p-ha8eup znjRej{}5hDvTSU8%$Zz#I6TF=6Fb|wi;58lYktrIC0X;_p+@BK0??=Lai~emCJ-1= z4=)3@qH`P#91l%QW;+`-7MoaB9ttEk%Bar}9lLjsw^kT=6C!Mvzs=mC%#W&f8H- z%}c|ZrD#$tbN;-)OEoWf%ILjRT=tw6Xdc8_$~eJX6r!$ftzeRmH=ZP`R8s-&fD;rY ziDMfFfhA@-W_l*5Ctx$MB+`I*YO{EWU$6NIl}05CQBfzsDYGv+QDRVhJ6DcaXN*3! z{RR)pLFvQ&7;#Y?+nx2MokT`Xivd+&P(HO6PkQx-XLrb>MGeKD5D0gKsUg>?BJ&ZU zUY_CU$o)5sL>A8RnYjOgz`KN30*(=(vtD`Y5B`!8 z#PH%Es)s5Zr}}T_3zW7>q`5eeXUHI#Z)$NOoR%3JT&Tv33@l&2z2pyfOvhL^n2vSE~ZmtKUNvm?=u@C!C7*;3M6U{bBi~6 z`yHblRo-ca$X~#O(Nw+~)TkC0{*$#`xA0$lyWxOnJSY9=i$$!`EHOdBz)qB}>}+@` zD^@^?n-5=})x4ohw{+6_+#_e!5}0Y^G34+H_AQQUB#cg}lLOn2Dl|JA8qOORjn7hN zJMbZ#(enu-7IK?VdV44PyEiK3%B$GHQ<37@H}GN19|? zFu~c5e2(|aGqY#i94z6L>OUa;m9H)_q~GE#h!4zRS$vTF3UHWdl2pwFBG=r3fRkqV zo75p-L&c+Xv!P6i5h0DCW~z-ZB}ZuH5K}G5*j1(c;@V*r3Ct9TR;bV^mt zNIzr&7*kVA?_YQhH8m{T_1|G7~EDA!e!3c zBk%d{Lj_j?SlDa1zfD%6oH*;GAsh_D$O-_!`Sfvm9_LJH{sbihc9xG*WUVLR(>^;S z<&V4EOJ_q%H)2cPQ;z~$e2c3-A^_cE&<8;SolT}Vwo z-d%co&z`dXHrh88DG<9`!S&gR&(dQo5H9F{)(&H&5#_EoF%`iPfrF%Ur&hkC5KCVo=-5UJ~P$#{5 z?=#?j%a>Yyt<@qbME)mvR~bQ+zum=auJ*G$y^Z?!efk&tH2#~DRk1@Q?}@ghO+3$H zTj$Fm?$qGveEzA@J=#opY1+3@UkaUKEP`9FYR;+*N!gbK*;}`RyL(*77uP7)9<~=Y zx&w8e=~3K+Ebs;AI?zh%CY|{bh&LrDEj{_FwmkloN51~bfI$e(iALiTFE6r&1C30%%J|`He$2o57VeEo)U*abhP4Dy{Lp=LC5wt+cF&(!`Z9^>m3# zkDIB8*Xjy5TV_#n+&T}_IVzq*u?Hs?7K`@^J~uy5KKa}=_+0;zS#ox9d?cIubNaY; z@`tsz&Vk_VW!g>7IohFH%r#zjQ)0~i-fXpkYRdfyY(1bMwB_CN2igf@LF6n zVdglq9Iy>6zT>)E(BDi|NQKO04lD}aMV%bv#hr?irWJk zOMO$-P@Xtaqkz$4^#uZ+#SxThsi{0 z1OzdI)M8X;2x0~w%8rX{W{t>n&dEAr1%{+oNc1&0nU(k&m(LY#Ps+nD84wzdO-$_i_!iu!g%@ zTYEXRExn!D0a{thrgxCQ$JN_98(SOO&3~ZU#@6Aad94x8l3O>;sy&7jr#S{5X^}fV+h>2p0{Hfj(#8N_iB%{!|SGRPkAc#dL1;PxS>qOHN_r zBpWe6hyq1VA|FJc+n!N=I$l4;#=XLR+CGWER6;SV6jhSU#x0B{z)?eM;>XoyBirOF zdpVo<=Sci+qOLQZ0*DYS^;=yXiEvmX#az*OhP@A4Cse&H3N`E6;D(tNPEn>_hosRt z1SbBX+y3b%b(bq7H1+-LMPR|dSLNsaTF39n+KCR|lilU=34y=kOUawrZhrXPBK3eC zU!>Fb-9|yd{d5?~&yhMI{x!W276W1)`ikB@JRBRS^C*o)ShVOjwnDI2G>%K*{pl?F zu+$zHXTg}4X*50d`!^XP+`DhcrWyGoP|&B0WgeZ#gpZ&OBpDTrLMj*SMre2k>>jEV z$NVE0rD)6{jC+;%xM*C|o)M{(eiin&JLrx`#8Hi?|2H)M)Ou8mThE2X%;~L5C8o@QoP3F!LC~Ae@?ErD z03sDurtf(41|&i-2Mg_B>sy&vUbn%q>!B|KX0q^?%{Zyvgjg`OqXLgGSC)pKp>$^G z@zN(uCwes^z&3EC_LohTyBNA@7N`{-uh1{QkMVpvh$Hmf4p}P!W8_1^49k+Jf(Lzm zpo6;^LxmNH*|!K&<#E$Zxw>2Egf>-0U}L6ixM%zQ(87hxF?PmhYFr;{{li;WzDC|4 z8J?zcA`-Er)rokXa|+hNfF@_8NCwDeUK0g#1T(tV)TooX52_#Y54x+X*Svo}d~u;x zZauwQ3+t>$3XqBfCwE#!a;SkUqjjuAfQM0E^=E5#pb256Dpa^9T-#`$Y?8b!i?Zxn$k5EW?K z0e_bhW&lVlcYqhv)sAK4mH(^xG;{*87-fFFeiwZ|brHVB|5U39%)@v`DxD(F(3pSk z6C>TxxkrkLh!QB0lBY-oH#Bk)_JjB(kWf=EJ6fIwo_SF|U5eq)br6fJrNw_dArSM_ zJT_K<8vpace-Yu;T>TT^QMX(=89=Mg7d~Sc&+GA`7MoBQT?>Qqqp5nrVS`^50Rhg; zrxV}S=}&e4%A(8l1m=5E>?}!u@Q7S4KpX0lhAqt%F{Q?24WtSHtZ5?%rlv5UA}fH) zlYr{9ku=5PmTcB77&Y}80WrEpaDF4oMMn-}v1e$Ll+maaeXlkme-IvJ{Cf6xN=Xdp z1(0$Ew2>&PG*3R9oi7&~l{t2F_G4n9h|crdZ+dXOLfEhmo_3s2o4h#6lY2M%8^ZrG zV=(CabV);6!_&6kG5_lJbOxz1O}Cs(E>Z78COPeK*E`>SDR5Ouxd0BAp3XtdABeco zc={#a7Eb{K*yNROXrbf>_jBJ!7?)Jj(n;h@vR&ib(e4|=k#a|6hq@<#+kXD<=F4a9 zHS2rMZ*R^vX*X@0Z?e#szGn|0_2tcfuD-96o#WHpFCsk_iC^f!*~0Mn#|m8s%K6;C z+j=PTxMvq|K}k5bll$(O#cjr%?mh5>F0Q@Z&D4^m`0Dlk(b9PnF*{eBt!RStl8<^d z=B2?00*GeXe#&E6s7BMrvX4?Z+TTjr};_+B=RnL;twm))38#j*|&!hu)S*vc4HG#)%gDtl8 zX+xB!Y7sCg?rQ=*@zxnwQ*|UZBkJ|vaeBSdf z-S`eL$F%{meR8K?;#+^-uWAHvUBGe3ZJE|MZJqr-uW?{T+XH_51nupKFxPEX1*!=8 z7l=fLR&vDq;v|@QL5eO+m9K8XP}LFqBWp3%V+JnVHa;Le`#EuExQNYs z+HP|$V3`D(Z{#NJ#R2H>5Bu;tP1nDLZY8v1`!NWH-!r!H0kn(}D^H1p5Q-@VK$eH8 z^OVCsm;~tZdab*ecYLxo;Audd_eW*Z=X{AGDQS@!;o9Lbim&;BSQi+7SwuqNigK2% zDx->yFnu`C5#b7y9}Oo=q-g)w>B8I#%oJRiF&1eN#LD3~jJiA{B`F>H7C4C!Y7V^R zM_*HH@Vm(lLH7(JdDE~5tZVIvS=fOMt`(6j0}9+lWEo0~Lj0GRtzQOsVblPX4;Wz9 zP=?1qFs+TZUmaoN^>N^czw z8=!Bz4@abm81og-=#%_VL=MoLV>$4l!&7jKKO#Dbs0?ko8#0uMx$z$S#sJ3b!q(f1r_`Q*MYzUW@L9eA8IqF-fr*ENc{-MzCtXkFu${B(Tq z@>LGcs74D=eq^oi^d4I%D5;Mp1M!?^KDhq}7cNEc7gY&@WP}J0J;L$xYTfv#xtlNn zlW+!aLha#Fe@+X3_F4Q(S+O&F{W%kKv5Cm&h%KN>@YeG7oG#1SKSpl`c?WJ?VZPqA z=(p}l%lmA42VIUlFg@ANJ9xJocXD>X;%^SRbxiSx4BknM%D-L@GARyv#dRRK=AAy? zGVsSFmUXmSI*L%3F!UB0MQ}^1}C?fs}mNI3GR3;;fA1OmL=rW_7imh=nJL z-I3^uJH$3g&~NsfZ;Y`R52f(P20WR?Nutzc$!xxm|JgkLyXB*WzTk;`abCw_QPk5i z#1yaib0n;2>IHwwOfeCv3zo^0}11QAX!uGFc&NR(^3 zJ2qmAjjr+i0`}9e46I*RXN_yFt8R+nTmfacULSy~uL%*w6Kg?oU1atlz>e#!-B^~e zVBC;(*Tw>MTsOVSdNhs#8z-z!E_jOv%B|X%7#2Z0!A3LCur53l*wu@;@c^`(zA8q!h%1e^q^1MK9vW4z=E?>@x%yiQ!>5dC8fT& zKj7x=Y3<|b3AYBGQ7sFO-gAI;#I)*y6$uJvcqTsi9G-$x)JZ=U$u7$A$}auWDuAzb*;@4TOOf$gJqbEO~#S?g;R!{ zN#D6TWjh#%u#K_SRv^60>&)~u3rSE^ZOQ~2$!cSWzJmmC9a|qC`25_&oV~4eQ_~cA z7I_t|%P77@08M$@A}bm0kx4ZTLCDW36mAW8oW`llRC6?1(2r4QZpTucaM;5GI~u|M z`Z|L^^ChRW)!VERZEUvMknQLgQg-9s!+_e8^ttf)I_rxDV`4uo;zQsdA0Z8RNcj8pCv5ZNNH+SI8ew{Kkb@FIA@tSuAFZeDJ%RF*ff5B;o<)}R`G|rkd$&$)IEt=Z7}b;`g1UR6<>p3an`**ZHi*tUt^c5wAir~@RzA`Q_x z<uhbhN88onLEC9vRnD!1!B)a_ndE5u@07cXR=-8Z<8|q(%c=OQ!_~YG<^|8D zSOQrX`Hkck+K=$$Z%aN1BRF50U0EIWJXF?dTm0i}n*8GO>U^ez+)^Xf?zB>~oB8l> zzDK|8b<3j9gAcy5r1Sm`1m6_xNQrdc*0VMTTF-urXjoAtWofMRD{(G}pq2XM$ys-Ue11GbIYzWDiX znXhlpGv)b>D?6ZPYi*a88RY)#-DRdl^{T!N@}1udJX~nM3Yog%y=;C6GzsUlwSJj7 zl2}y0{UJH$Q5DolD$b=K0P6BPq=}_uFx^GEoG--jm^$(3;?^2-AK(Ga zg|lz!yST+Q1yF%E#~a35pugyxZnr#`?=QFSnh`OUR)-_H`OPSFt| z5&1(XtAd3J-oNeeq2o1`bPA6;^{Ip9XcSEC6N~|{YVX3=8Y_W%DedxU;0D%nXA&* zlVMb`$N;vK#nz^}b(7kUKD!vVo9+sD>NlVrrB5@a_Z;?6n&??jrO_h>&8~5~se_Zt zo7;SOqTXaK)!0Jq9^nz=<&)hyXvwsJ!ID>(Yj3vyPmzZ#?fygcBLlFS#mXlifF%cj z-_kjNq7l#|0$(T;%BFSSjW7jBz-Em~?zEd?LJ)Mj$n;O>rcUq2_SV!|zeY}seU&0zC6s!`T zYBQ!luPR=YY4g2Qy9}4;tA+CEJW60J#)0c_BxF%d7K)2SmaW_yt(R$6J@z)z84mb9g>DkO(Z1j!10X;{065ZBvX<4estaQLapep)uRgK zEi zt1BWcWD=-g4|f4JIIV1dc25A2+Ha4!MJHPTJXl-9J$-xt{NQK}cSO}V0x&?$*0ZUm zT4{CeL`DdLtAO$}*n#a7;=xx5HK#HionFx?n~>oS{K`vg?xT0H4~>4#a`0OPyJ_97 zFsm-baGXfRz`i>YThH@v@V87X9GovW&vnbKEu(SEe5D3uMJUMVZLt>U$LzrQ1bCgy zqsKVyGyk=nwk#U%NX()0XFVLSy-ilgkTceq-(A6(h^X#ya|kPPjW@0cq7KVc7px={VEJcMGUmo7$r?L7FR=IkaKRqFuvoj#te*xuHgt9$h72 zHiMFeY`r3QuFC+c-c!3@Lp}1gihzJdQt$+qc6@vWZ-fnt;qUP0!tKb?UoJ)^3C5lk zmiID`Upw<=T=w%Sf5{r}alFqKn=8G*9;AwKHR(N(T|UEEJ~6>i$EjPL{Jkn8%spDI zeSGTDq|g)MzMc(Y`{m+-eqnJf%)hnwDkr zhNez}kDs(GLQ6~zYQv!2=;@5zV9>fkDcK{-kAI0d##UeEKnHbQNjr3l9)DKWxbI|` z50M31k}($5iB4+2)y_w~j^V@ME8u;RI|v?L{_*xp$DK0gt7M@l<~;mDtxCEKgE@cwl$wFSNIHe zyPiX>(XeJoYb^j~wk!UDnGcJa=;=SZ;_^h-9cTW_Rrrb^@PCxQ9T;dn7cBJw66wO% z#IuHJWf_O{il!^XcLGwr&! z*lONbKtm)jcwEg(@=EPe5-bZp-gf;qG-)sf)$gm(Gt?lYBV`EcGAI5){6n|==Bj^wLQwNwQ|&HKHGw#?u>Lg!rGmda}noi;E$)jaF$ZJ?*2LWF23m2_gXri+y8rL8}#*Wr#JfgSOwE|dsnYjDSOy{yOyyWpx81k)5znJ z=jZGOy6n=o!4S9qtqV1M$J#OZpuyJqV; z-sA{cLpuN({rA)yXmX-{a^gH(87jMD;kn!%qE1E`(do49j z;z;A-OiWCi{EQ}>(wy7IE>U92`In$9lhW1|nS+YSMGbXhmCfw!T<<7`2EfVNe|K?P zu&mtXRnmNI!6fZHO0wxyB6W9L=2*_JGV5&NnzDDWigAg*NcSFj5i3=GZP6Zp`+8+{ zLaV)~?P5EuBHTOR(H{-LzqC5At+RlQIWg1Yh|Qqigb`BF{M$wzJN7rnkDKSe@7-TbztT$h@D9CR_L|Mlm6=YUFCMI?UgcK%&N^a*S{LipHRrvm#OlrbdrtjwU56I6mc7Q| z4s<#7zTY4f_GHC%R_|-i|uwin44>*VwspvSyW^d_kUS6!)1F`I~xxvxq zXcaX~HcA{<17cZ34HJ0yF zeJ73px9-5i#1X7v`YqT#WK$~G?q9+z;IYAR zCV(tz7^ZMm*y_}d1vDlhs%v261Q$O^S&Aaw+yfQ*T}mtxq-b-B=;MEl_28JF5JX|W zl_+a`w=klRcTkl3zOBHY8(;LyzojON32)&@HTukXb4$chOCb$OZ`X&m`4lj1a(QlA79%8~lJ zn0Oe2LXXmkxjCGfeTV!X(yxV56GO#uvFW)dlaTkY@`pbchnr;-AqBE@tgAHx*zI!o znsiurlJ;D%6`u#B2M<-lAhU+NojO3DbA~)1(tXL3p)HJ54ho4Yl3F z6;MZ9sy!B9X60@jFmp*VuNKUJ1_}ogfMMmeaZd;sg4u%KV_S>7gufIN4JJ@15+M^W zEM)euk$-|U*QVgBE0~2Xe3bE-@1O?}B%Z;+l}wdyo6+)Wh>9rFQW)J}q`P5C9k1k^ zph+DnzCMeIB}>E>RiZ!;Me#*h2IwNbz*jK$Z|)~jd*$D^b1Vj{*>mfZ#gdA?V6qW- z*iG(&n~(e+SWDnWEgA_oafQrq5QD!!Qx8A^Pf4}(MIsqEK}{me{`OJePzrfA1Cm7~MSy$he3=KgrxsbUBOA;*vf7VW;QfQ>2 z?!dETRuDF~!`h3imQ1<^1a9gM;&W`t?;pjz)VGXaO|3HobXR6A*>^glrOF_vFKx0avq!PF5ja z+3Q!i6h&&Gv`O{Vuc;E1r!X(R*tZaYIfh*v{|ECuh#T5m-23 z=2!_Lu|J;6xe?Jy8p%2v+H>RlZMM`$@)MQd9_4oJwKQnz-|76yg6tVwbtv z_8MF5G~x^A%bsAsaN@{>regG=#%616in-yE3VRWdAYy}1bWG9xhH^kfZ`&XM zJ({1XVCl5Oi47pBlW?fZI`DZ4!9x7ZWRZNiXR$t|1Wn8*e*~nFljszUV?~NEp4{`m zLx`vZb7t%ckA`&EhK%ltk5|06>2?(V>Q(-agfiHvsPxd+pXcWvMxlI500m&zaR$G( z@S7p7qz^oj+9F0RM0!;~=e0KH>>+tNe`L)dLeyO+vhBYxA5Lt_RVCsp|B+JfSiSMRnHgQh=g>254K>XR1}3I+^>aYC zw4kR0vYGB2s6nnX1opN}smfO6z~vZ+q1vR^`8)v2I1MOKfW2YEe2!DY;$E$E4is3t z9dZvuqC|jAp#uoPUZOHpPXI^u=vq6?!^Nc)#Dx^l$dqc{0hz%`um<29{|VN3Uzh@e zD_0!RT)rWLJR1p4mi=8TLXX}qAi# z{SEzKUyI1FGwN>Z`Ikph8x$kX*NSUTZu1X^a&&#dvqmJ#rBWij{1Itg=d&OBVJLVSme?K@P%b+vaYA~uHIR9QX zClHOyy*(U#+t)gHv2^>}dp}^*ApiCVv)8N~vV2`-Ao1P$Y%W}I@wx0ecHMkl9iQq7 zYSf`=zs>sq%X7z30;R<~g;&u!T+_0&KZVYuSIMVXpP3gdG$Q%kglh9Hh;Uk*yA(Sr zO=$I~AFJ}$8JpfKtH1Rr=q?b9_{zKazhG~R7sxY79HPvYzl^cENXfz6K`tm-Hf5{V z@Z?YK7GE^jgDgm&yGPa7W{_{MQ$I1`yj_it|7Ikrf2*>zJ1W$Fv!Zg;yy3stdv{|s z`NjYIfO7oPRu;?7QIzA0z2ESjqR{~R`Ki$x-g|UjJX1_n=nrygf5)E`UocOdWh|qo zjh;+8CsVe~K;zNMJ}k5M<0P3h+XjC*E^uX8?YPVDjLOSh$ot9vIbm_WS$J%E6m!?| zS8(~Y&tdB5<)5>l*>;_f-FkNFc~ipm|-na})_Cxx>C5g!Zz&dl_5#(80P z*evKQz3Sp{>9xk50Tvcp^5w2Ra_M|FFYo5c?Cbil+12=q*hF+6<6Pnl02Wgp^@+TQ8@p+J46J%bj;p-mX8C zpB1h9Jabthf3y7%$f)`E8t*e?DRYCN=h)es%0jsl>8s{H1y?c4TKwdQj_a zl}y2Gz?-7ubHgiQ#a)v2LrB#veZ%SNs#81QXuo~lep_mIJdQjqGR)}}K+AY}?j82B zo~^%hI$od8JzAgC@>_tH$Xt3g_-ye#l-rW%H3^(JRo66b={@B4mJQq(>3y6RbUoqI z>pdzPxE=RUU~x5ke@|;GH^BI6$kND`b-uY9t%duTo`CZ;S&*56`` z3YNAp-Vtk(Z3h6$=T$xnZ!kncWr_TIsXDabsT;cydvPhjE;iVRlg_@=1R=L;-h<;}KJI$s4uiueVBGN6K^$`y?NTnzR0l=R+W$9_ zm^9d_pWB1h=m6t$K%}>5|JYlae{gZnAqQX*_xSfLXR^u%Pn;T-oW$q$e9H}-#hLc> zTE~g(#Yc}JmdziC)Rj~eP@plCDI~w7hD?hJJ*+9>dmag}k`Zd#)!=F{AW+-m!=fR>3pVe- zmP}wsEb9<7^6Z4Mnnw{;h{9Upwme=6M3EfjgP@rg%-Sx%UgK;r{}<4KZqqWmU*E#7 zu3la~SYFOQKLg|+>&?`oE78CqRE73RPd7w+X_vdR)8jlsRU3bVXL3Cn*3ePllf0nO zxT$!=mi%0A$0J&->@+1KF_RO70ZmtDxl2nYw>>?d<)eGn1XOi(3O_z7R&)@wPTX*%iB~DI2>M}k;P`vC z#rtgEqFp}oMG}`FYJwocCEIY=0qlUbDVlWhY&p>zB*npbO2(4z*`z4!p!;nn;=vcY(Y6pN_(y8v_JG$hu2ghi42S%TOq99;3V_B8(6M8f?NmI*ej zFAuB@Xd?s$s(EAH;bHZbE+px&2^;U}G%mf-#|ddh2yrCr&M`)c`_+R|z!e>lv!6Bb^@F zfg=vWK#?ME!b)7;SMCs#vpMDv2%Gn=dyQ$D`YS9+zifd1e7{Ag7;zt7gnC*uPGB{h z@&=};lO>a`nxn)?ml0O`ZS6e09+S7H6;^rwX5b~N$5aC&PUW3Dm*5<%`~e~cSw z@sPeiH24!nK-gwViZgo5JZk+E5G!8<{sV`=V!;aDQ3L_w%XdQV%)f|Mo8kZ=5`fk# z>I{*ZB};IO;jm%ND#5=gDZnc}m~v1AR(J63iPWKaUH-4DkX@gyb)GNh?5{kB!|V&i$_^I!US6ZR-wofLz#Ue%hr?}iD6Z5rR^zcsrKWL8Ru4O zuZa4gL-Z)($V%tNDZF;2pJmj9Oyo@ny=XqJT(a`I(^i%hMH|$tg=Y0<+1R6H? ze~T@=7g}g=9@Tl+8}j}@LOQL=zi5n+NGNNm^6NV5mFy4o$GM9qR}&aF!wvcNmzskl zSVAqBKz(^U5rX!s(AnQ_=V!i6=7D$lC^Slzov4dz{SFkv^B4VWNW};mq)!NVluhh> zt<3?-uGw>!m-W?;mdy4~m-pqb{}DTL&|dAzADgmu345a#*kN#E_+ z-TLA|!|k!z(2UHk$60yaV&GAXk-A#}r$s*P}~oTJ5K?TDRvaeiaYKeIAZDsb9Zy_CG%7V?mLGu4p*>PFCH_RcXlc4IWuP z_M1)BH*JD9g-yNEH#v#({<;>U<^S_LotgjL)$$$Sk~uGWaI*z`dwbT5Y0do;{_uJ` z?{@pF-MQquEa1y5aZu$8`djp1xZbVfO==>Ah8r1zSTnOU+x0`@;4c|6-uo~IG%88i zpx7tzzH-(sEJQI%B>jDdYd|ltaXQb27rl3|yOQGUCV}7!i!ol$Beluak>Bl4Ouglf z@f3s&nb6t{Q$5Z63C;vXU#$k*sIw;|It?dXM&Q?$NDqN0R%9qYJ@7cVKNmL3U;J$Z zMk%qHCIV$>fii`aVw1U;hmvB5aoTlAfoN4g=sJzFe2iyl%#@QZ+8@h1QV5Ap5*@Zm zD=*|SqZ?^jYYYTek0+y~WCJN4V++Lt9WekV00Osn&qHE^C5$U6ol`haQ?NoUOD9 zL?8&n4T4`PhX8k|5`{Lg%Sf3nk!60CO(NqxoTT`~oV5pd4aEBr`etd$X(g)nB3JDo zJ75bn`zI_dGgXUC zn{zpS-mgE}i84diR1V{3j-jm&~ zGnVBu|0=zz2E$<|Z@7<-&-`5d^z?LUYU)0$Vb*D~XmU>gE%X?T_Q2>#&FjrM@bA^7 z0(9LSbv9slD1ETISyv}dCAq18Q#NT807RipYdPV7L^wT1R0pyzmk z_xt$gfz|M2454*BYz*j&)CkTK>9KK1CdISt;CJiE3FhHtYNoT(RyRc0T=hYO=3A8Cg(;=kVH=z#=x zpBK+!AA8~;(r(QHO0>TnvcZ#KLS$!PqQ;$I<#UD4n2aA-7r^?Ir zQO9V$#E%^Q3<%Dos5Cc9lt@9A61M!`Sa|R(Lq)n`f4lPGs&O`%807c)(uyd>Z3UA{ z|E>S|UZ6$M<{2$b2+3`>ME=E`LuNcl97h~2`M8p~-OCp)Ba+@G7)pQnKlUevtvb&2 zS!l2F#qCbS>xl_k7IN?4NDMRm>X-U0L8x-~ zpqlQ-Z$``gVRoXuDCLdQ$-8OeP~Q4 zsWOu3q5yf(*yWkID~z$M91LHH8)S)+uC#O0r`G|~{H{-e?D&~C<(XnaX297ld)-wVnkVcujG?}^Zm8~T~ghkG#a+VD|%i2dV z(gvEGLrXVAwc@fqvlUA`!aNdg9x9dp=|Pmc*1TRsUU%7KoSE-c&11h_ccFi0z~+DF z{>{kd!d1>_)B69M7(ny>v;7?Xe)-nu?E3w3Ge$ZupuZ*8ecLbBFYoMnX5%2>m-WF7 zQhn*T(XZ{w!rNyv;NaYrF6VUSSTpcAv$uUa#nD;H;zY2w@~h+3&U}NT-)8;ZfvNPV ztV3_R?cVv>Tj^EVc}@Sbdg?p3E7c&^q5h!21wLoV+j?iY3&fKguMwk>mgD+4jVn>|1a5w4(^Qz3IoEv(Td8qmnPT8W~|r4UyD?9{1vR- z#I^|K=R5}2BpxpQ2^f9WIP6%C;a0B zQ@8jVQ<<-eWg{`Y^L!A$fM+k$0}snk6o*gjmudh7$~Boz4yNY?Un$WOgqnk@qFC8Rk%HWch!D3cpUcrRKZ|9 zm3}kjJ7mKl_}Ct1kChK!N6*J60<)#q>Y*bJ04wdnLMOU{Nf*{M*%lPuwYkWQm;fqe z(riwbuo@+MM{W4W>5CHPU(D4l*#Q$GgBrl9j6#W~*r3U+DU-irtMCMqnlmd3J3Z*= z9}2GzBhuF3l9!i%qOoVj9hqhC6;$hyX075S(8uar;Zf z4i@%0U<3=K0>%P~O-Ydcny2c-J;LUd-7+du{w1cI`F+kaVS3%pQ#VkPb5?hJH|-u? zOEqqFK6SqTGM-c??e1wp*MOZgGa1jCD>ER21*KW0@Z5Xf$T-lVY{`qtb$aPK(gcz) zNQ1pa79eajeXdgy9T7T)w90AR77zwxWSB+J!DX%q@DEt1bKi_(kp_Ii0GwMoIRW;V z%oIfswc`q1K+WgJ{K(57t1tm*o>FC2SsS+-J8*vc7KkY%ivj`;Cb@>;n=#4-Wd|j6 z37akUX&63rh}CU7RIuN)duXETF21WF0rY7fMph@ z80hgBBo_P7mm~}Sri}8N!Fc~(a37A7)j#<0?*+5}dbz2l!Edw_^MNc9PD5v4Q!HwT zT?iUFUVzp#0l|X+mUEnMa9(Z;KxPzb_Bv1btdNc#`?rsmHc02BrfvW~XK@E~D6D?J zfnQA1*P8=mM~n8JbBq7d{ZdhN)4(yZ1L&$y!0ZJ`bMcxx@v2#}2PVG0H9F;(>ke;b zLQtJ9oJNbF$kiFLO*yFw^hIY{0W&*;LfDYq*Z|PGuCd=>N2tis0TC4@0N?8^O_@=1 zIHE5UQ>0bOrruX1%TTmJ5DNhsFJ^Yg8X1Jc9-Rt~{mg;v@nE{rAZ-+n!J*^6oHTM! zflV8_foGc;`)7P&?UY^$V~Hlc!J&V~bBfRD`qYf*ZRtCDX!N6^w2^+K{chG@)HgN; zTmo$J0>y7bx{;DLHVy>O6Np8af}fA)URDgSM1M}(@r;lW0Rx&jmmM9>U`a9}-h0|# zxTDklh(ubXwmXA2&`ge{fXVA$@fRB5KLmu6 zBO)_r@VY|q$|;!peiB#6rf^(wl0zrU*6p@-`&N4`5Mm%i%s^`2YPdm|IU8hpHIsUY z*0qP3-FO6_nqqCLN^;0mfe7>z5-LgI4WY|^zk|R=(tr|Yk2{0KYKw^RiZUx#en9w& zN;AU0a|v{pk^vonub=aBy^Q3iA;NKF|4~@ZD9Z^8261A|lfQbF6FaHYlP{&V`*Av2br6VjBmVY7%=2$EuK=_>FlW+Vhssp}l1epA_iyg^5LXFu3)wu*(2lJs5zd z*{I|+PJc~gsm*Ul4fn00nf%0`CE0 zO{;7C-4qkq%vDjRolF*&Yu09yt|5~GPlik5npE!QMcd{@9cxChQPjJHXHkNy~_0mjL%F(+hxWyLdNMr6^u{#5%5mMtwl;OY1TvE8$dc5PUW zAR`ZD|M)!3C$r>VQCv2UP7;qnW_l^2n?k_oGz^ zfMM!7jsr%I!#RUPbRY4@LNt4lfgRo%VG+_aD4?jpJHQg~u@zxE+SZ==#0iE&UTR~6ha{hnQX(yk$tlg`)T~W>A0&%`-E5@QiEKyOIp^-c) zR$d(Zx1KDK=L%w}?ZEhTo}+g`iK(Fh^8-cZK>A1C~%1ytv1B`v{K}*PE zne-Mbj&F%ZpL+=m?H#jm>AGCQcbnS|sMKlj0zp7dl9UkAoBnX-DG}gB!vIeEKY%IA z-wZ;rX(eL!P&(fU@e?Zmi66T)-x>E_@FFr;sdaW$=sTG&wMUVv3*IM%zu|FWzGC2CX zLZ+tXa%g{Uvc*Abw^G&+3|O8|J5Dir5`a-w9WnEPc)`yNNNpghbY^5+K&%DRMxPBT%K$?hTdzxEi*d* zbTm^aqwBc1kJkMjGF_#YoaZw)w6Jz;HqbCM{Z7|GJ^db3MNQzQ>Tb!y_t&ufX-VPv ztFmUJzpW2amMkR*c50S08971iU_qtmwMReQ7?v1>AiIU(0>q zo8z|&*2dj}a-N#Qh8|gS&lB!~^&yK<*5&_|2?fb6^J6J;1XdeEVtsy`+8ua8bJA{n zt@tcofQ0`!-L-xj0SljsW;%>?Jc!KPuj=XN{?*K&Dv6v&b3uLjXVh>f^4S!cV}RK) z)fqVTbaBmoQOy3S@pq_E;?vdgGEPF`6!DGE_>}>&Sk!H7?60N!O@wuXhHflyC{}Lk z)d#s!N|(pFr|bLn=D=l&K;OIG!DofA@RHi%-&dK-!#xV#r)!PPb)hHM{Bqz$^%{sT zoUA!dW&7}uMdtv1JODbfxzV_$T#m)r@nty+!8mlBXL2+2s7MzTdC(sIN-cV38oA-))GU)KOhP*XrELa?>4%ApB&}Rn$ zXF{buXv8@^OTCi3{NLyu^loBk#>Aw0OGC%J!Lv6bGuu_IR;X(X_Ev#J1}GEAV3f}= z^UxlypC1JU(4{Gg!?*YkuT(0Rfuximuy5UPSX{-arG$0KdCVml*$LpBhr)G}&C@Nc zvx?ve1M)fMGC8R-`3m77AB85MZLWgxqGV=0tVnE`pRtqrt=i}m3Al_ebzfy{_TWh|O#4XMY+K(6M(?4Z-YOa#sP&F#s{^ryk5NeLc?MLLvBI!R_p-a;4` zFt|sIdO%VhR3pN+9|toKw}5&T#U7j-xLEcY9KB*yt;v#{qz(++qkz$cl_i?b7+Z@~ zQhyj8L^?q*f;K2|?6(z?&m(JNZ~z!%vUvO!%2$ONoW1{k196C2?w<>BY~HLb+~v04 z_FOcJ{O&ly6Lq_jnp}UJ2KYL=Z9^iD_lY?lx68X-Qs;8qW^_0^hbRm^rY?L=j`z9_ z`WlQ}@8%3WSL8W`&%W>38+o|4JY-%Cez@&z=v;B`9K2W?#9AASTwheoT2#!wKKU-U z=azL1+)|W294NSYztO=DG&CJFDy$ayD!i?=sWRx(-mRuR_=Jf+U2oP&1GbD3(2ryJ zzDR^|RHhy-AT^neuW4=vp?+CjZHuUu$Iy(x9K1YEkblVpRnrOLl0N9Qcn43m`fzbQ z0bvrfPYV+l$JL#qvHfd`4QGbL7ZQLF{nHO3r@7ugMe)h%B@KL~Ay5QmA&}@h9+veZ z^jb|1*7JjKxk7vJKqlSjq`G-wECY?rF-px-JiD=G;TaMAdEobTwC{a>=as$I!WG_? z_(p(YikNoAl9Av=IAK=@sumJ~-2F>ptfv_xdpFHX#F!j-B~)=8t%3cTw>eZVtdiAC zvYK@(;;XfSTWP4WtsJuWM>@K8rZ4N!2JQ#@($vw^FWDzydHrCblX0H0cd;x`WD>1I zZR~_EfAL>JkS(LQd)vNP@Fu_3U7&3awB2W-#C7Z_fpUz#Eg16(vgE{U2%nd> zPfAiys7{)R0Har2N7;1o$tq|iv2vOvq`ug-(1qyC(EI^SdbO`maMsrDQbg zP?`ypW!BRkJb5?~3-qkH0-?-VLX2sG?N+8=B<%o*U@LXM^@BO;kM)S$&F{HPq!Eu(5g0iuB3nwmgVI2 zRo@5}v(-ls(+|Ls5;GIlXRPa1PGRhVeY{{(zlAsLvzLrbG9uMY$p%quQt{l8b50h^ zzXV>4q}hB&CTe%!SLDdJPNF+|tD#yd4;&ST3TMoK)K(cYW+Qsd4tlC{3~FRS*pB-P zmBAgSEP4+I?+D0{3lO)kl~B8R=yB3FR2|VV*ewReE#MlDlw?5(lO<)U6=V_s)plje6!ut$lLjCt{yH53gq2K8R<)hBaYS0(CDw_DO+=)f_GwezSbPVfGX#llhzvi04G@k3WBc+wo>pOSL2>x`C-rK70M|a z2QK662oS!+OO#v^os2yl_%C(&LZSi-V;EYfzwvM{S4b8)N1XF6A~NY?|fUSutvSIHY*iD*IIRoqCnB>m!^6&9OLblD$hxO*L#|L=yA^1cWzSFuv9+?kX3#9U3$&25xnPdK`FYlP)stFR>0}g#Ef}A*kYkHV}2tj$jIy2<85(QP6*jT zu6nvY$)sICI`Mib2%tcI|AK@XO}VkxACl<)mbKZu5ss17S_*Q=me^kO{`9|+r*q|O zXD4E>+rN4)?jN^wJC6H{Jsv+)Ug+IT4}CblbFB5~H{;4ONb9=%vDGJZbocR;j#53> z_b&MZq0z%HcHz0zj$i93h`HWJqen~Z8xJDSk&-E)9N&W{#lpXS9E;sgQfGxeg{c$k zNAC0e2f6>guf%`Q>6#Y(kE+R7@JGJZ{*SZl-~Jk&q3%1=)eXGMp}*-jfyFOdeB22S z1a7(}hH_oHPR22B3pZD;zI5N$HVRYs9S|p-obDNTX6~;>m;H^Uy5VQ9!v}$~K8~`S z_&(jKid@a_GkIPA@%RNy@W4*hYVIR{UC!Tcq=A-E|L*t1y7#Bh7~j*l2g`hC(+;pG zNiRb$!vRZIOIS~%Cd*dCSu~QqGHV&8>1Py}sbdAlAW*fURSin_NcRL!1u;Z|o$>Wi zIk;jmVzC^6nhcPk&ozdg+p*f!bbD??ClR514wFv2MM)fUa^M#D)X%Gj0vRoxiyFJr z7}pVjZ!S9_KYF$-zC=(CY4Ce^8_R050uf5)2Q<)PG*TGd`y^t!s2Q?GSzEz;3G(N_ zV0j)J_m~SL*(qTN&O3%=$?=fX&($bObQ{ z2YiL{(pld6BoD)HPQ)Q+R$16`XU5>0P~Zz*$i5Y@DIp!;QPIq(VB?kXm%%7DQ^2A{ z1L<=>IE06AgvA^mP|Xp%a)4&g2m4HZ5Xdx!F6b1(pZ9s&vy&M4Dv$VY*GXFrz+k4% z7%u76Q0IlaVB=#Oc=LZ6ji_%FhbIM_kPQMp7bpD^z^P_HD660rK?=-p(*9f2J7LK5 znkzgk0GPer4B?n-8?=Y6(T=KrDvp*|gkru6k`O$H3%ZdyYb?#g{w@17~H@35om9wJSlg8n;6>z4QVa=NJwx|$TT#0E0 z+2tBaA$u;1n;5;lB(daU?d=kYDXFJsqD6|FerIeE!N<)AE3ExOjN5;1N06l3p&v8kmkiHge9V^rop&o z2E(kOv|kJ@=STva2GM6TYisCxgAZGCc7Q>DwgEqfPI%}{pXpS8i690)E5t!}q&^O? za>?ibYEH7Iw8PvmLh@p<=3E|`>@vN=(965DAP+E5gnT}p#4tzJNPCa%2W!+xPSZ}t zJmBsD^{Dyls#n~SM~A$Tc8;4P&nI*Bvmym^1oe;fhelNQVaJQ3ytiNrv6x}l0_{dy zo2Xd~R|MIBC7iL-wv^C^oZAiq4tbVn##mX#V8B3embXNH=@}RuZBomBaMeEpi!KmW zL1(5_kBr(ci&fVpsUN?fRY^DlB2m$35510DkQiCO^$@YcHdU-{6=wZHQf+S!b32Sw zrl+zumz`GdD$AL*&w3zl)|ALnT5+=U4>dIn``m2vm?LTyo78gBO`4<Of-Y@U?VM)6&~xCzy`&k1q!1K$Ba%2=;y%J8ZFh0?VH)5q5UkR0Nx+-d{n zpmFL1k9=<8^|CZhEPb8Puv>(~c+COsmAn}R;9u7xrPwJ;8qO1*z@<>Y1?Y4!4fGR< zjl&m!;}||%kR)SbEnW?6Tc9D6jxL*_p59t|!!TCBR?ilh$QBXFJXy#byF;ru)}f|u zqj46WHS-M#Q<-Coe(VQ57SJjDz94Njsj3mZa4BS*B$*W`$Eb(O13qKML`PVJ+>Sdm zVkps_C%k}JK0$a4NZya)=Cd;*i?>JE**r*dR*YKvZoSKe84xjQ!7B=PEoA$!B)3Z{g91ma5Zb!G(V+!%ywe&WX<%aGTQJyJY@4=duhk(3`(S92Oy zj6?p|9H}K{aam7K`eSTyyu|%Dgq|;u7*@;|oM4?lt6ma3ipk!@0Z>lJ(h(4{kaiZQ zYi!z#huF~xf3bcaPN;hxK_-gZMTyeB&+Zw<*8I!A?Hh{CyOUTVGX3&--0pigdg2Dc z`cIwTDYL?o&RaRcH=Unex}P2_#eR6*8M@PR-#Nfi;WTzII<+VEZ`n?j@;YzjaolX> zNJ=2Tg^>uw$IPK(x>Ur8ir1ZT;XO7-E}d`J?Zl4@BaRZB(*&=z9`pX^JZn#Cx8ePs z+vva5Lpdys%e)EL^kpCIqzb@?6z?eI;MUDhwfBxgKr5zj3wRn&eqb(K1lxT#!!;COV2 zbn}gEUtjh;MY32rnZ7I9I2@dEe{}3Z&bdnZHMG%va2JX7POh@+R&^k@ z`?XMEsnPGXe+YN7e{kDHA8I;U=JcPM;0c|QtirITI=v^?#&F*261kkK$yW}lZ6QV7 zfBP0xZx2rtypeu7(*GvC5#BEX9s>8N)LIc%*E@^FU=l-sxP0|?2*S(z>GmfONsY1; z-pR17Sq8+gs*5SHCl0rCVDJUL<1v*Zl9>Vn(}0jv1V;EuN$haBK!tyV6qlHz)#rEt z@YAeE`Gw>jN)l$#dxdr~;avoDD(M~wfE^q+?L#|8boLhjaRi{Pk<=hzC!v;e3R++F zY4A;?ezp?4E3#MZykBEexPVRUXj%lbDyU`He)4Z0);FX4IK)Mg7C8QuiN@J4e6-Tv z8esa^Xbv(1xQNWGHzN^I^_lkPOr}vz3U0Nul*Qh3+TsL&pP9Q_f>n)7(Yk(Zw=Lqw z#}^if@`5?i54}ZV;MxySOI|zC8?8&Zmv?9G2_f)wbA=S_X@b6+PN165u0?2FrF7Na zMKD@>ta7P?8oy=?Oy`D+N)5h&EIAuYxd=}&w3BuN(}FIL_i|YQ49}IoLQm{E?P!Ri z;j6d3hka9f$Na%30KEg`o~Y3SbOCtVA~^u2U$FY5ccjw3U=0{^JtuB#yG{gZUP0>J z-;3S;Eo&6MR>mFdD7@@pf=9r_;;rXrsY)DM!R>@#dJ~(hE3$ z^N=#hCjisW;?D3ns)l~lJu}P%AzDOP%+&|O0MD={`kKUFQgGBw9DGJj_|H;bvMKiC_bXtPCmOa%e z)G5{});X1%1niHAC;_?%l1k1ZM=qAovdh%WgMyG4A&iJa)n11Ecs4mk7oRs>M$C|+ z;pQxnlEnY1>#AVJ&X?!`bIr@9s{it!9GY>5M9U`jQbVGDjKDDZh2_oQ%sRTJ_yv=V zlGX56(3EzhLVw7cC>JXUdo^_uP%?2-aKC_JIu z5;K`5?t48_(!20kWNj#~vyUwe(R&Z>h-srJD3Gf+;dN zzP8y+K^sL{^-$VY09jnwc=hm5ka%W9%kt1yzTp7&erw0HS$w;Q3pgLwUKaO9>n}b$ zgqi+Y;solS8C!y_g;0tJT?(w?wy1uX*fr)Rfc;X$@>Q|ps3e+LcnBo=RH_Ch8kJ@S z%`DuYk10m{Ywy|NI;d2)&Fpv1TU|CO2+fY?fTvSw;CNiySRV+4&jd2xi z7wZnpfrfVVCsHOE75sJKgIuJvIzv!-cUIjnK3c`zV&upVdEzi0B7NyML>4Fh&hbhMzr0P;boc)2p8i*|~9&8%ce@T8&!E8T0}p7>jhLtVLb zID@RoT-Wl{cbjJ?zV(6#f=ajDVd&j#W9;8)D*B)CNB2A9%S9k@9)W@z*ZighofrFf zKJ;Vfev?aqCq_b#-d9$8&8M@aqe1&S8l9w?aj-M2~HIC-vD}5iA>@sK^@9Tab zq;6ui#gB2OJ4wLpHf|>!Z?89QI{at$S(t=c1V&24?Jh6dH^gj1fT#h*r0BS47JvMt z*it5*#M58SeLUaKNa2vpzqP=mmhq2p9gxICiOc}E|I&q?`Gxs&hV-}Er&neXZ0dc}U2~tn(6>+LAC`A=1=5}fPLqcCIl5MT zN(nwf+|Qg>FLFOW=ndFzI69IXw)~#jAbQx&RcZF|JiP@{75|Xhe#B?8CF4r#X}3MT zpK|_u&wE?zJN8GNW$$!w$#wIh+1#n}yzXfsA?0*iYz3+@4}^V9pO!H2N)s?1cXBDF z^|g7k?;Ne{>R$^TXx@Bd^0^2|-8gBUQ*G=ed3eCfeX65U6I~>z;f=L^JnNsz>cVlp zis97nvs-Lr+03|Imr9FJXp~dJTV@YX~_Q&S^#HO9@ zkGvpsKU5see~ajOEVfY<9JHlbYW8Uo7ID@{$Rx>_Nfu@u8m!tj95{&?ujrtHs1Rhl z)}dCkaS2)a*w8ieHIlx)7*ju%!gERUf2NZnKj)i{7uSWr_9uLX*N1Ks1u(MMA0w@A zUZnr}$}C|6=ojuvf7i}h9Z8F0oJfLz-JMDK0*onZuaa3RQqkAX+_s*7XuPMi= zjoxFC!cKA%-?S)39q?F{cyYSK62Vp8q78KQNPD$n!3vs9ZOoA`h@FgT4=Xrnji$C* z%B=p6sVM+}8-Cye2CB*h8vy23T~p&AW^q@?1o0iO8*&i)mDbeM1lZplfU7TGW;C#o z`|z3!z`d>7v9}0~tsj4EX>V@qSToQ){v=eb-2fD3A0U`80nxf1uqJ8~yjasCKXR5i zSb?{?923Jh<~0kgEE;n@_|;*cbxgAamX6wW6<vrY)w1nc zwu=UvNP|g$?^)Ue_UFdSYw6~ArPFQcx!LPzt^$ zRP(o{$;)H*qavjOgT24%r@pG|kym_nGc>nYtx%`IT#UDlNy=;5f3mg_wR%nwr0C?R z^f|&PZ$g1TZvHU#Id_#70;gnPNJwcqCi0j6)JFFa9b=$#77UZ@E%4YbK{2 z+hCqV-{`P>9#7u16?P#uJg{*J(Vq@bR*iw*Xa^BSw?v|_$vH|p1;nlvvA@?EI96>ViVx$GrKU7PAyI6eR)&$^5C+YTBx~KII~@^rp`K+cRA2 z0SA5|Kpx#<%IVSmn0cWMUKm492NeQpnUjOalMW}XhNPnJZWPrL8#-HWX zX)yH7HJa-Xx>foyUcPh|76qAB*tDFG6^bcx?N! z7YS_$NM>PKG-yRj$iwk0C}3rMG%Na^5M%N|P#i=%>H!%?2K8Jvs#qFR=SwJ8q`DL6E4g|h-?0GJAx*rZa{At6XFn`e0t zBPwwHkI{LlRZawHZ`e~YddqqQ&?fz{e!DL-{m z80Co>JP4U~xF|wL93fYsPQLh8XlIT|F^u~#`n)&h!5j(>*mEHr`C%F~+f`)XLvfkC zPZ6^SmR75e`d<0(xL3pS9cJIlNY{esYF`YNK;s?R7A;AoBY1njjzJL})vdY(5cVp) z0q#Kot}o%YQKa<(h_ao$3sln5fx4vCjU2^nn0*nNaAIpii#8x!Sd8M&ycREzy7v{p zgxLUOlFs=f4uJ5;>6V(Bn(|g~-Jx=!W{Di2W5;OFi038qDUjQ%!P`NyaSTn%n0yU( z47q3Ne8gH>??ak^W!~*PG&JPJ;)6LR2yr$Hed1G+e6e`c(7a$tK+N!8bmsH7mdlhe z2^GVU^eTNL^jS)Sg(FrlN?h5UZD9QgR3@HT0hR_PvsXzZ>a2moL0f$^((6tJ9FW1P zx&l5~RxJe`g@dfI0_IsZ#RQ;Pn_gv>eqxqwteywRI>=g2mlXkuk^C%uOd&9a0rjXI zY{j!7+{Zw;Q6Gr;Y`Tanxu6)t)k8Cm?s`J-EYNN1Ue9tM?XvON_hdQK>J2m+A8p}| za4EggNs&*Gg+rA4o@KTnC&FT<1as?n669P{lrZ(nhCLI;!f3ee9^n0uhYSHm3@8M^ zbVql3d3oJ9{MqQNv%DG1Sw934uZuubJsJo=rAIZeP1HlD8ae=tP_+T7@?*qINi_3e zV{mZLvlh@5(SWo%c0Y5(57=Zq+r%t$#NZAPH2)5~b=oe)P%P;?Pb>)4wEbGCtle+| zZq|0XE=}6r9B-^|eh0?_=2CMV*~ctY<=1OXB0Y^hlMj!DMk0_ITq3LQD&{Jkj3`Kj z(FtGK%reZj>4A;$jN=QH0_bFf{-~tCBo{Um4VcO-T0ui5xR$tRy%LVQWxa3yEC#$4 z-KK05<2Ri0n9iOQa7sqs-RJT{a7)|a+UAi1xutClqrA)#LWf`@1*?%ICJVB=Xb%^u z>6ANLV_GZ7%=jUY^ssk?Mj=QQyk`+yp+eAF3sCN+aKQB5LZWKDkT^IW zm3Ch^teFbl7usa!^d7!d^!f0~54K2bFPV2!%*==9c{!-no#mvA*P(jUA@s+Mtm|Sb z`@y=fRP0|mk|3a;JzUBC*gxECEpV#rF!~Je;1EN*9>f?r9U-klGIz>cX$P~BmSf{W z_xhf7zETu3@wAiM%c{BYE(*QQhCFN$56va?1AAScpqp`nT#5%E(9@;7w1lSbUHTo$ z1@TI54O8g@>JZoS=tfYZ_s`wiliTi)D#n;1`mW=DN@{W?A#@i{58dhA69$~8cqS$3 zuPB=^9RB@gO6d2o<(WFu@`d{Red%>U(x%d0eX+R2X|H=M=s7u;sTcEG^-=iq$>umm z0%fbL=|yYljnU=kjETTk59G4-A9!6)5~`1vd3TFnvzIv+IX^ROws~!OEgoi$Q8k}E z)8r1TQ2y-rcHY*LI3Um#n7o=jcezjvKIxd)x#l58r?y?=PfoOKUc^3_T*tBppr zZ{6u{c|0nc<+gu{8n`XSh+dVec5b0?h81MGkiD6@cs#{> zI{mv7o9puts9b$K4Ha8!oJNS`5#qP}wj4e+l8sKlf{~-1&hnb7u}+jp!LelPbHLSbm+`0Fjio3zuk(>6yxZhLW??9@0C&W^vhZfz4ZUx~84 z`wlWGeZxz&pkz#m%#jJSBcI@0)@ic-;|RyxCfyXRXwt+^{?z!$v~%bRQ(-K{(dxU} z$jO#r%34fOLGTSG1|D7Td)+W`VtR!@z;wdKKwLb@lU&3T72%W?%Vh1FbS>vpOJ#pq z812)#fwy!A{}6{Qx9koa+tZ6mnAH?YqCvkf_#HblPL>{YMamWedR&BQn7cFl5iG>P zj(%-DwlP4SCxi<6pgVD8TeBw=!?f1pf;4p@0^rOJ0PgPwP#ANi%YN$p7FOektn-RX zg*pXm+?)-c)=_`T3E)rONi=AGm_P78M2*?uVg%e2nI&1 zg!gfP7y?@R&9&?C@zL7cYMt#vhV6}^_tD_%rOTSmX1Ajzav@jX3eWq!U3BF)fNkT+ zF@r0m80mnAfFn0Jn*X*lyZy$n)A`|m;vw5>ko>`s3-I3otP&sqyX`0pj`Di=A{K>O zXa%@?=%;vC6ipksBh&-RmGGmLyKBA+Lqm*(d1Na~5-lNq>Zj336`HaNQX$p~g?yhZ z%40Cha08IURg`gg$lIZ0#mPw(z`HIhRMydFc4gN4*gdm)W>@z2y@sGa9SksCA&vi( zq$U|gaqNXjrO`!#l4QvhaRfO1C8*IN6tMp|Vi2IiOQLKLBdQFBKZ!Tx>P-@vAkDQi zffg1k_Pp!m*WOEOyJBQ=sj{r{5;__-k0`~azPI=Z((tFfo2ZkKp5GlbvELl-Dp|pO z8O06i71&d9l&BG!a}|8uQ+KBw{BjIO{T1V6=nsJgHUi723(`;0c~~=|glXtAb$WTt zv1X;b)nCb)>cXf^iizaRSTuP0B@S14TlzKisr@ieAzuQx>>KM?W{41_y{yhS(z16k zf7H_xp?$F&OCkRUbE54knGZlA4}){9#2}+X>N})}kSbvz&Pi|=K6Y{Q2`e@yvmHSs zWGU~mXi#IQ*6Xy&7s>4;6cl?(=qgzuTUmyyUyRAa5a??KB52+;t)+1J;qWXpR5v!? z&Kwq zpj3)M>4}M%m!!A-&#yAsEJ(7by3+efk>3mG-!Rxs41??{`E-G9JFMa&AdDgdh0%VT z494$s>b*+aLz}R$wDz#SyEcs#J8n%>5#Huw%KkKJuL9fuwi6@fxGUEpkvb_*;WRJnd>k*36rVk_9=08!=>V>0_4K%v3S*C9sOwoENV`Cm|Z zl>Y~x_BZ_GW+F%76YR$QwomRK_oWt}cE;|^H(XB^P98GF(M`JrlckzWtMmy<;}F{R$=b;qzk{)78o62 zoZVd%gK!I;-#Gq14)Aj*G)C~@p>))LzF-|;%DTX)I&LePQa-lxn_MZum z9R2$XNpUv4tUgHsmd1bjE&(eWR=|Vd=5p@mT#@tqh6{7-&$}l#CR&#}xg(Ls?Kg*; z83wYOUCN)&cvq>ezDNlyVNnQ-zQ6yLX(>** z*Mn2_hpzh^x2}nCBlD@E)?Id^r___`54y*L`#zSnBDVpidsJu?B-e#=E&N@#LN~Cx z@5}n{H@htE7pETH&q;Q#&_?Z9t9q?mzLfsFdAD(MyVPx1zT6SQA1IhTDYS7GLQQ=NPU90$l4G9{}^8}a(RAIm73a{ zam8^4;)K7n`8Z3=P|U!-yvX0wtzn|3qB{tCq9l}i96S1jEDWg!ZEoHDrc+{bLTT1` z0;YIh`|W+6dPzLhOA=w(-(<4N8}lwX9i~x^shI+X5styfv?QqdTO2$jr2NCL17@k& zm63s=Pf0H%V)n4a;~-OyN@_GlCX>V#o58I>`9Kp>vG`oFxGiE1mwI){jPlk|IYhF3YOol+$yw zE@Fm6_FU*)dD5ZV)Er`Lf1HexC?17Q6foly3agw$lRX?1!bg>qBdWOLWn+d*OQ@3g zlvqyRnXe&He_wmQEtqqH*5p|^r=zQ*W2mEJ@Qlng(A7DrscLLjoX~F9{_xlT#FKId z8zFi2opQeF7LMFjlt!(Q3EXZ*f z7}aO_YKfbaQT^(%?dw?=;%(#w-x+etVEeuFHjA_Fk47j~V@=+ZNw9EA2yp_;WrR%d zw1Mz(XDvcm)@ib2i$OoWHEItNZu{1CTy6jWi@@TNVrfE%GgNpLy>Tq!1wce@GAP=8 zJtmHg3_C9>jQ-pXaJoKbQNBI89aw0u?Q%Vt%zhB@8tN3~mbrW*YXWT)pUJ7LU3XdF zbTe?dx{b*W6!8ir?}XQi9o#TI^tOtDZ*B{L1-V!nw%iE4QeqJs7K36nky=Xk#3WNC zdEOt#F#$)1ZA?~qz4LM1Y%9|uZJBb#Vk~(j0{&qfbhAD`z!^Dh--v#G}n}WI0CF(Pr(jDVw9?_8nU3b<-L@pBuDI_@x>Vg|A2Zb;bp0C5?eR34{#QwFQz48Q0YZj`pXf`dmXlbM}@Fs$Btmqq)ajvpwLac=)>$BXSmG zKjdJfW3d0JJz93%%>V&i-9+brHdTl5LZ7IOMNtj2vAHyXw|Ar_ftyG9DKe(LL*#P?$n__v=;^1^i8lAY~79uIqV0ep^gU7YU_(INX z+l8VxI%qq1IIM0fKnV9GE(wPzqILVX0&6qW*18hCZ{H`=&*2E_OYiyZ#eVJ*OCd8b z$%%WGaFcNL_5AxJ_v(Z~Q$bOO80d_$1_rAXdigB#|7^d@>ZR>>q_nbGaP@{Um_Jc} z1QjOJ%W^5t!T>)SS!}@>GpTC9HW%QDm|-T1W$fQ}hej1}g%=8sndyLwhsWSAP1Ar7 zJd-@3^5C`^VQ3;-^f{ZBIgNR_8Q^YO?FhEp(Jp=+B#U5OzXGs#12Dpsgq@3MbwP zuxrqP4ktwPSGl)m$JWn6Al$j+n>r^Z@~iw|N?)Lz_oMT{cDJ@(_C*3&^u+o}w@h54$BLmOYhEW9mM6CpBsjH^tq|+4e;pn>R`Ea`dq`)^t4AF` zn}O=*#jWxwinYBZ{umMGJtV58vyrKyhO=QB7WuQ)KftKCw zf9LmbDgTy51JDZ3wYj^cKWPRddyvP2qcNuJFL-HY6+@y0GuBfozhzZ7|J8Ti`0frW z8j1My>-E2VnE5-Sx=-b{SmPyX?2X0X^6v8bM*5;DgHqLZ!`LT%%9o}4m?zf5=Bej{ zqfzYRufnsW$*)W653AXp-sUcvhoY%}cKWs$G6{Mg_GcfyNTr_GX3ABqus@Rc)`!>L z-Ei)T>01jbl7bv9*=*T)53oDi1Vox>qx^{ zthf09P!dC{G9AXA_v_HZVAzzvOBJX7ysqbV}tt?+7CJ5@@~)7>?w~C$4I29QJ$xJu@6Ff<49k7Kc21M z^LM$*BF1gplWZ>ow_C@(m zHP#K=?d$^^D4*l1$)b-{7pjKo>EYgPa_*^OkE3oi>2|umi2jgp)&A}^W<899F$2cVg*0nho;WxqEI8EsWhWP(m@m$U)UoeRvVNGfgS(46l&$j4XGdzv_lF15uS71gXyB5NEe*hlplId6vUsg% z!do$DeWrbueWq&?zYyFI^o=Fy-l8f@00XTwAZ+Hn{uvukr~SfM>9u!DC$Wxs$Ev_X zZ^>s`hS60ePkVIJIKTknL@B%M{sKqV#20LjU9drYfYTT4GvBfyEdw5baqIYdup|+$ zw4!r3<_b|RQ-EHEKCa;XA}N4Ry2HE!FkLVJ%l2U*QqKx-rcv_`;yR&#sMbRLoEZKP6ZQY`CqiO-bmV=~< zwG4m3U*HTS_5xx42Ids&5-jT?vq48`|KX912rzqbFSSiSwu!E|&ek<4PBDjI%&B*` z^-=iOSCy5vs{q|?v)Oh0y6I^3ZOezl8n%|N*`Dn``41dAIfP>c5G$lT0jeG>=Mc3? z7cf8bWmKz_Hq0M=YR@iqXkWE{E@r6Iu57Cr6DURgJz83J8#{~7?#MkxoFg(Pi9XIa z!HfEakyU$~kz1Xpu6%d?H-3rENx(3&eHyncYx*7#)5}TKNnz5-F_TG1(Wy}k2iWn$ zYXFT(-G6@937JR-dBsmcQQLtj~4-)7?Kj-%ks%zMm(ie7kl?-kz-2Rkm23l<~hAG$9_;Ap|;@01V!0 zlh@6{(lI~)s(si8K9{xHeVnc~D1>gku5tPKLdZLN2M3M4y}!&n8`w7n%a$Vh<$*fh z9H3QXrYEkBRWSq8AIY>w;2+w%7E(oA$H@_7Bp_Q#&8+mG78)gy$F z2IIMrteDr=z#m`LGZ>G&Le=2qkYu-zMlii@dtXx)@D7{{JId7`DD zqDx9SG}-$7d0!HW)kL((AUY^jubYw!1d>EQMvtJe+d#yMb4+7#Hpa`HjKtw;oXX;r z9b}18@uMJ9+o3Bf5o|9T`8kTOVg_}Vn`#3oA2ml6^bs`(kftWjG4LOm?>AbMCR^J7} zBP+ivK7%!#z8-Lss(ICZwLm^-V`H?_`>+tMZjTaRi4De)4P=fvO3w(?M&r>9SYxkN?_x^n_bH*Ab5Pp)TIz+k~q(r2TdUQ z-simE=WI1;fH=!Wp@FW%LM;LH`Hu(01*$OEakm&L`mqMeQpdb6_2!o6ubZFpO+Y<0 z>bAQ?11!9@l{eI?_xKmQ5w!Kb-4hGiqZIh>EO{&Nwhe<7fsv0mOKllfYVl(%z(>qAEOV7C~ttQd8U(rfcR_K}k`IO6?jPr0%olhc334!= zq@Y&+Xt&Dbed*~q;V`K_8fOz z(8e8T`Kv1p>2TzG(FM)n`uCBx5b1t?u*pUtL8<4oBFSCADkW^Gk~Oh9)B3 zw4cnjzqb0kU7lMa-Sd{3bon)8_sPur|MR3>egGe{DDvoRXW@0r(%%EWk~{E7aQW9s zuTk)zmR%~sn~%B!ll_ONZ$~*`r{>bO_Q)05(fr1ve0)PxEjd1*_Fs0T$mIEAo;d@? z%Kd(ra>G5BekWT22jxctPyWFzD%qr+8%|pC5`t7wCudR8zz)@0Tz%&j!}c--(6bOA zlR~KLDDavN3>0fUAn!#U{EByBsW;~uGu#WVTddc9LU38{vjB`yS^)`LnTN)Qv$JVC ze8#jK`|3mdslWJZE7}*B7ae~NkhdpXEi$B(k2`BkN76x;1v#glfv0b8funae>n0U= zKmUIN+Faj=(wUx5P?6$bN zo5Z_5_nj352T4RI&UPX`UH2XIodx`)EeJ|TIrUmPe9q>3>U;f*_|*TwnI3ePVd0OU zb?cdZ$s@z!4r5)5iN*x_9_s06isrpGwLNn`_F2xWOh)j15FEi>yqW90khHAbFMhIFv;`z;_dEmSZ)$v*nKN9IF++GH-w?rL} zDSpSx0lAUZr&ZqO**)L6mj83v%d+7g*G)g_;VoML;G9-D@PKVLK>5U&X0Rw<(o~#c z3e9>^+GF@=O>oVYhyq3lAs;2_Dn9C#XK`bv5~bN;WXgqOv{W?};L7p9gV4~aHRIXQ zJV$7@(Z2yD63|iF-rdsD)6&$|)zsG3(*@j?%#0m*-T*-rg>&xCLfe?@K3N32)&l?{ zF`I=48*92P06E&-^RB+)8)apG7t{WxrG0K+0}_tnlnBuCVJ{fi13Xn#R&F2dU!=BG z{XnHksokqlwxyazrG8A1eOH~D_s)c+84KeH`UeK>ask^<&w|ScQ|y@{kYTMg_m4yx}V(vVl7aj zTF!26=U?@2Uj6UB7vP2G?(Rx~@g_`QK053pkQqlq?vbqM!T(~%g93MSC$1lu-$C5X zxsxOe+7PkqR*;Omqo~lz9etP2?3cY~RBq#Frul<{pVU^^IxSa=pz6l12&>%h&v%yr z?%>+nUzYFqM!)K6s>&@CD;3Sjx&J_u#N);6nCy@xi5z&s{tR$RgcNIrrFJfaF|t)R zCzu2t44$&O4sl(?TjGn``wSyY<#Q7KUP%(rVdICsTz|XAh{*c)tvmb$t|_H+tiDs~ zFO@ijNJ4*m_P7jUBdzJrvkee0jOkUe2K#4W z?TUn8IDZ#xokO@*(7(0?+@PboyHL>~xPgOn5!NDiM=hGM-Y z8fa{Zsud)YY53TI77-;_XyDzjFi{D%e}aKXD-MfP5)dpDQjYN*Fdcjvk_(uOdzmf+ z-G#u2S|#8T9FTw3N!PDPlU4L3EkiMx^quk0yDVEy9$l^dVnOXcG z-35obj8DFKwK;xxEjE+#dWe)alYvo}Ye74132>Z`O|lep8YZajV(VZ6u7DIi64qK@ zC9WQAY$z8vA6$%Vme4zSkw!{Yo2K2Q3(S0JXOwZXI0@B;l1dNJaGNp!Vc!J7Udx0_ z3Xyz#B?nwoY=E(yIl+HjK-Kf7-rYd>_vdP(`bEiQLcqVgkxMT--6I(=LRPjV$}lR9 zK}$m~5o1(l_9AnBsg#&)D@@4*V=Ik*`*D86DS%NJQ|-Nq780|ezY<#>4ogwsYd@5% zZpLZ*NJ#hY!;gIBwR)|=_QseA`Zzw-c?W%Gp_doB2Au43PhRo9y^+jgW+(^I`-bj_ z%42O~v5NWvQOL7!Ng1r*?^l3-qU5X>;M8MwD#}jtr)O>B^rv?F{0WedW7kZ2Bh*h@ zj!RND6$1?F7PFTv7{9K?EiMmyCX3F`1L+x$#BN#4w8B~Zv{w9dTw_dn4H~SpusB|L z9;FRTBLj}D>55uofGw1!w)RuKjs0W4$*R(SaU+GokW{~Pm{GPpz#JPTmwM!~dZe>D z60vEKD1RhU{IAJU+r}}=9+IlWQIa5~{G!EBSN0dVb9*78%8vn(}P z^_>w}8D|-nsu2*FsjD>sxTtE`82#t;1#F)lma5I+h(&1|>%kYXsYS1-Y;VGF+qmlV z4ijr=j=)!SB(Ud#{|`>bTxDuf8TSQ$bn>_;6>z=*Xla^=9nq*J$v3)1tqLXI*=2Dn zf3PdyvJkO?Ce5V!uPC9B{D-&O(4_5;UNdzl8e}nOxX*1BM|J!YHgR*}LVw~uQ!nS0gKTu~El%Wq`Oq!0*|IE; zdYnFJ=Aj7OwhmieX20l~AO;PRZaV}5d4bu-7i=_|!T0j*HTid;Ba;>#96YG+t!)!B z_xNk(h=7gHN57M`5;nN=5j9NYx1wiwn-N>hL^NMh#&2Q%TMvj6p4*e_2i(8UmdDxX z2!=hnb@E=LJU&h4#@^3+70mhf1F3L9cdrY1f`kfYlvf?$%F>r#qmS4D&lpTAue*?) z?@~PCKN17Xs*5L2eF~50wEQ>De6}8xH>TSMuB(l|Ki<*4o()*4w>lDy?K;(%ta1gy zE3vvb+B$(&Of!QB!RSsQC;ty#<|gFgDxWrJ{={wV)d!awJgHa4Y?|u9bMiC3`JN#o zNPFB)voL_!ihO3_X)e++fy?b~M*Eu+vty+P&pqv#smuRIuHwd*+fa=?%-;#%g`jC- zS4}oL9$+Nr7~44aH=B&tGZDuo8n8!eHrO<1`r>HFKB<${gZ{>OtyCfv4S<|S$C+)O5ZxZP$z)%GT& z*oKS*U7=P#N$$Ba&962OSq05C^0Mvcj^E1fnW8t&s%wLOed~91|NV&u@|EbR++6WD z?!;p3%Hl)3EJ8{`d+7kfBfm|VAm=kLe$UDtzq8sdJzvxXh*2ZAd9-!eTm7N$9`VmJ zJ_tp=aV~Y{8#F6b94+hvXEx`&jsQve!t0tGe0cu8yjQk>cHEz%9>!?Z=1^y-=B|LO zf`<(JNs_>2kvB1MIf}?@R5|#{ny!_qR~A{~X6O_e1MB;6g-6>HZjM;Zuz0{)Zp}M& z#>Y(f*U<)VdMNwomKbT`c3l7wPqnhxLyp;3GHWAovC!HM4aq z@!wR^1F6M1X~8*V!Q5GWb3^3*^~svWwXMaqwam434v%zpEPE$$>$Gt zA3&b>*T=`8Aif#46p-|5vdK(xV_jo?V+?mA8pen*ITlFFUa^>7{5MFUVo|lJfuC3& zDf#@vgO%Ss$iuTuw6nLvC&14?y&xe2Mm~A&EtXZc*9?;8$(Yn6DPp(M)2r6&G}WKf z>olxmO}SnD;_ojlB~`H1msw!J#Wug_lFyUQz+ZP-#w9W6S z;IckrnFO`3ognT_LTdAXO*is-H#P>5y(NPoJA)zr-IoBjUL^bq1wk6&u)w}IZzE!Rn zcH_1#;WP~IBNe@Dd0u>CIQRTsRLt7M-kE&X%#G*9R39~OIPBBRsQ$_YZsv_m^@}TO z60AOe);dmSq7qXUST04Z^Q@J@`I)|-I|m~gHdeRd;d99w?E*)s(j{+PZ7$7O=ZUEA ztR5#DZaAZctWr+)BB~}F$ah2yvVTsU?4sDOtf$n_71)X}e0+7m-z+j-L_35S8fF;c z29#dSACx*L$>x?52#fb#J^!Woi&;44xWqrHrQ5hFg2lOObs87DnV2ouc{}^0zW$4j zqEJ>Rb-#E)VX^Uym}$Y4obd+r@|)7lT&E9XPoovL0*%tMNq$Nv1`pX44(o{F=AQ8Iz1QNdD(Ux8j}jDRlf@vU!8BslnF>%?34rAxHYLs| z83Ol9w3owz6}i;BwsjoKmbI0&=7CIZ?8X{-t?*(j#VW-jTU!SA*wQ%xTXk{9EaEe> z(Qfs>EiuofTp{3v5d4(SDE+nXZ>*(5l!(3#NA0}`ueRPdsV)DN;#m1aN zix3qq=Adi)>pwNv46~Dxv+y3SNeDK>5C-mtiiCLPMH3Pg&Ox6f`70gMgce>xQ5n<7 za+RYtlDD-GPHQY&&4nkB>9WwJZs$#H+#+l}Qb-e8VJZMn$*UzTYA+T!XW@*qF(AE~ z3#&A8Me}*-s=%zOkxITH!!S)f;9^?|Awa|98!4n}m5YIJ>H_4dp&k_{ZkoOx`}-lv zFi14;q>&8!*>fLA%j46m_J#eAv4&ms`JCuWu|y(VQz9ln;Z0#LQ~SW9n~e z3ohojuI(R>wl3e%r{39>^E?bKKaSQT15tzIAWl-fR?cc$bM6bLEQ1(Hu1Tk)9l~_K zR>QDcNG{Lh0b{|`Ma=DmOP6Fp%}mAZZ4Cv_!~s7y_T+2s5_GR5bbM>{@QJ{v*~U0$C}Y@uHAoY9M_7tBG=+3dj&*0ZQ{ z3p2_4{QJ|%)W;3vG~%TXcFqE}2AvH| zVbT^dkw3sF^7bv1S3=$=(!9ADm(P86#3fSey0(>@i4?exKxc{{==>|={3j?8F>r8hsh4_kz8^=r*z56`ZQTm5bK`=5Oex%xWsFqYE`6Q=*h91 zPdCTEC2q^BIiaoU!-iM0?-AkW%cAuQCYRm(HOEEZ5a`!RXAezn{mby}d#tu7@=X>f zsgVBL$@;BgYbWQd@A2PO;YKa$gnkNjX(8$sgsg>jBHF;8dpf_v+y7X*fj-02B9^TU zHt11-2I$JDcj6%<#oygv; zc8t2m9ei`75A=Et`W8H@kx_7$<0cF>m-3m@cA{Ken(+}wXI9cF7V@-^u$R9Yx`9~&*u#S^F(O`^dxX~>*lv_ z&i!|u5gEh*d872kW+Liz_Vk1fT3LRccy~)*|2P3t|M$?Ja(jgtx^*7sy_3S-d(ZFK z4P)DST+6XQ?bMrs?%E%3Xx~dhHjy$9$VstQa#3EZPZYpP{jA=j;GqAi}2~B$! zR%}hmIy(1`AU=N4gN1}fd3!=@oFq?ofU|gjGquJ53rfqBYTY-GaEiCO9_prD$Tm@pa4yV`@;GRXd>k&xPJF{5uPziLMV*TI z7gY47L=~cvrc_!t(+LPc1#0q)LpDB6VT6Ru@cg{lCiSHQyzpngUk{n;k;ZCP;5Qq}D0VOY1>%+t0C*j#E;TKt!oI1MeWD=ponF9M^x zyKXDPJVV0l0#A~hFrv678kk45YK^VdGvtQf%D)cfRESp9DSTT$y5Ry6%;4)$WrKRtUjM~rwb_}Gc6DyoJab7f{Lih)yh+6*oR2&$A)W9Ak;;NY zbDLq@r{7CA{|M0DF+z~Fx$DrOftf^h#_D7Nt@g-VEV=sQ};k4{?$$5hGzPUMgp1*iBGN-?t0TrDT^ zf!#=2&9|X!d;(sAikp#yiUU`6=V))iUEB&ox_WxCjSxsB6_Y#jrx|#BE**@f0>n%} z!w@cnyJ`=-BSyj%(UL$W;x9a)Kv@we%B#2Z#ZJZ1ER%1 zPkWxCk@9>~%wrQUmYB!a(-sg|jMVcO*1@1k!YT?EJ)>#crm-ybNr;#*U*z=IQ5^AV0q+S8tTo7Qj9 z;s$iDh4l8GUhB8DE>hw(Z5LKf6tic*Z$bP<@odd8=a&yXrrgz_;W=g}+OZLNW{B0U zLZUvIUWwzA9%nljtv3sfR(9dKRVzR0GVxdva|yy!xKvHEN%_di<-Wjf9PSU#uNO;@ zqjhv1}#?>DyHoqc`J_HS+3-t=iAi+_e)b5GF5pR@>|uXN zbczT35oZxyLp4LYLq1JF1-*3b;A|gY5A21qZ0T-q?aukxqASGt{BI>m37IWdbjL)@ zFv#=B#^2x5!(SZQVW`GheJg3f#WliOjJ=b$=;4lLImLB#kj~0c1-3v;VURRYJ}$&6 z;?T4IRD0bU=FGtO{de|c#^**pymBg2sNs$VmG0_`mnp9{YVn>jIgL<(Lf!u~5Srq? zlKTEtkMFg-Z{9w=P$&;2P*}O>VE=e8bMA*b`XT$zMd;WfrNu$!*cjGE73G~Gi|P-D zi67Ri9-=OZzr!Po#UTlq3sx--WJZyhLye-IX6ISnU43h3*O*9PtyrhR3rB7iX84Hr zrHHZp2{Swt6|2ZxT{=%=jHDvAlg@hs-p_;HwfXiT?1QeBPHvlA)mmhZdvAaBpWSq@ zfk$%+I{E};i%F9pimZ&nA2BGnreX_OhDH?^30krBhYbO$g`s|+2@3$uFU`_T6}U@Y zrYB8~*|O&6u_^b98sGIqP)74LM#5zULX4RqnZ+rIVn;q-R*sI(0+$l{^6F{uBY67T zm3X4s+S`Ht<8~2f5DEcCi3IJ4Y&H%}mLqy#QYqu52SgT$+TGHiH-U5QK$Ob!Lpac* zi2&bL2t$L8)`D(%P;iS5>nQSyQN*3ag=2zQP})8|>W&(^*LamNZUGNG``O($A8_C8 z3f(cFzto%Ed?kURhJJ#l(WCytXCDfJtl((@ht_x)P}H({_XFn~75unCr;xK=?ChNp}tDQ|a>^@dUG8s0m6v zFL#9g9)GwSES77re;cNsc5*rf#8KbIt+IjTVLtWeS2ZvuCDbj7d+XZGKnC@4u~z3Q zzs}5~9!Y_E4(&ya7yM%fV<6`W*n@Up8%{yUQz$s{vPiPMAjtlGe~)y3SmfQuKXDEbUDsi2jYcfl=&#zxXsC2Jdw zuAeU1v(>JCQRjbhJ-;p347$>hxz*yBx)UICOm4UNYoOg)p)Qym&p{I6;&+_Ph27caMaieb{)pxO zRS3p`rAMSQB*-B!XV9RV37GUg0KEJ=;ITjEE(mpON*^%aJWXCW^S^p(&j7{~$>ABF z4_cSG5=S}9G{VCQByJWoP9=YO?`+-`fiqC`V7KdfFmF8sUz++nU;1c10DSyD+~OfD zWc&9p-O!if<;{OC=B3EKQ=vyGnX8o;$=3G^KcJ7BC9{E(;>X3d(dL!B&4DZeid#1U z6=z@8#OL<$AO7}dfTn3Z^mqy$E!-%fM>1g%S>qM>SP6kNfsZ1PkC*@cjvV+>i1G> zu=Pg_^-5K>k~jyIO0$o9{`I_g%C5~y8n2f0A@3^>wpu^SYdsd-7tgo%6%?nU(A=Jo zd{k=CB4QB{?tdCz;a+Rhwc6Vt8g3FFnK>VK{Wf;o2*-`LF}a`TB$q9?l``H11N5|= zb$MKDT$`+Tcnngrn>e5_qV%L%LCCTHo_(lLOV)qu*nE9c?PfJ&CalA=Akm=UEJ;z6UrW3*m2k8N3hOn4nt5)Oi zCVm~lkqhK@AynwtEkQiw+nIM@y5H8fWhiI0rhfIJC%^&k#ef>Q^!;ik4AV)pVp4VU z2pNj7=rjcwgiU=JZ26n8=G%D1wx{0LuWhYTo}QhW^)>}uOgjFe{jY2PzbK@3y%lAMj4fa_3kAw^hJNpf~tS{P(va?#4e{|H!(52j7n_Bupp zyfFiL6*2z<&gSr`=H})Y6E>KL26sMGsMF6G1h?_~%)oHtu(^^IMb#5UQiVSEYOnt#0!!?~M~O^0hx+^9R9Qd$!hnnn0` zJC})VH}A!c3Yw$Js?E5+lU?vsa3xtqXY7uJ3yv3o)O}t>{{tlgQlmrGW36 zp?AlZAviG_E{LFc;_hW-TFuwV@uV-_|5^an>>!fyCwi68LFQ-PO#Se87hlCu?=B=8n62 ziX^a>x+fp~fO2}^T@<3oUNES3Mr4_>n8$`!@zw0tz9PB`Y&C@;lE}V`Iv<(zje=b| zEpgkGR@#^Hc9sxzpOU)aO76-}cHzd9)-F^SWkFqbO38ZJhv;nDx(-a1Uh1ZMlI~Qp z5=rctX=IazX?*Ea!H!>_L#yf=t_7A)M3GlN#$;=w2&=@b`QXPi9wUD;!&U^WH4fO~ zvkl*UvtU+B8jl26!I&==_@ypteBls?JaBl#4HWo{zj4UR*tb>V=ocMI{^5pKgPmZm;NvXbPg5r_SjY4jHAl*mFzWzj0( zxl+RmE|iOsaNCXYCfH925#amzabWW)%TOFIGE#}PW@>^lkL&2FZ0#yU&evXWWo_fv z*3rqSx01=K`)^Dn1OiAqYW6YX-k(1U_XZ001?qDF%F~NzAstUUGZ;-06A>c=D?ih4 zEW2?e4nl@umYsDViU`Vy`%$qJtA&seQRVV(uf&>`(&hYRTu`JzYMblbA9#MsOKI`+?&rWKYR!)atE}|r1F#|{0 zo`=Tg*6d1VUtd=_Z5J;fqbRGXeon;7&QVr!eSIBn&fECzO0eYgXB>fy;?U55BjfsU zq>&st_Un{JcCQ7j^}e+uAIy-FlGm8Z$^n@7-S_tr0r$QAUvsGw*nrQ&Gcz-~!$;&B ztdw!P?XUna&V%2c5}wc48oBWvyM4N94>ws`Gg*^B&Q*%g6gLr`vS{k+K8MIRn(j6G z0oqUb{K3gQa0)wq09e|Zy=Ko&Y`^?WMmyyiJC|}uVPTG@sM@C`Tk`}Ghe!%u-sJ&m zcHF`o-0Vz!7YvCJ7w{X?dZinRc@l{rB>_cuy}Tto1aqh>PN0^Ra$_5zw3Q{(^mm1u zp24XDYl0D_XT)VT;R!fgxX2;KDjFwEns!bC#wu9ARg-9E7gMb>_eYlxdU}TFnF+y` z@?1jHFQrpI3cEm(LL*bdjBp6srM>!gn$?$1d;*Z>fRuLGCGEuxuM4*x7K2GK94<~B znsR+5i*8m{p^dRN2>T*#7EY0Xkr%WlwHH-tH&LoY;elm)nENHcfxF+H;APT+V5x+v zgO($umDT~IiQm{)aC|{d1Zk`}()!w~?}SPxPCw0KyiJxL-2PYgI@ z;mE@8=LP`SVx?`gaj*8}?@iRlOMsuX5)MMx{m0L?!5yd_y%Ab+Ja)~9^}U!?%aQ=s z&beowzmd{6d=C+M{7P!EpHAPii@f}5?fn0kTI@?~`{>Q9{KGsM=p)l8TaYQNYPq-a zhL-WJpMGXE#RqMq0&I*Jv34$JpFO$X@?U+n?7;imHKJYlkJQQ8xV3><1)QBYHe%VO z4t1>@QvgyvpFwHodw=Eu~3pUT^{|114;^uqK4_x5prfz`&(mB28jm*js7h(ms*tlL`MLr<+t^jqe z`~ctX_vt*p#O&P8Qu2o-Y&IeRGUg1|qKWhF3GxO(x^<^KZ+1v8nNlx9%L^1QbK6He zP-N5iOYjUeUbY2W^}m8G1X?f_UE%DPjm<*19QX9#zLgPj0qLfEcVyAszSwKc;|5+n z!Aut$;h;One|gr583(V&AKP?$aOr^CS^ z5~=GIYZ2G=j{oRZ`=CAh3C|D6PlrPFe$(`KZ^8Q?-2CSs9|3VI9TC)Ns?M5XpYON# z-|U(OazUeahxW{nds*%?kNJNTtlu>Xbb*_jVLnZ*L)wBvmKL0>q>X0%EW`Z7(T?ev z4#}7rdm@JpiS}rk774bzR)-au4oRK@AzVFc{M{cVr~Y3b6oyoI_y@pL9xr|Pb*e+m zvA)rc6JbddqIG^>v?XI^X~24k6-%*LGoz!`gyqa~diBY;Dy)*B0W!QFIjp8aF-PU3 z#;m1C%Ah#(B#L6~dp|WB`(Uy!@86%_|2Qhl+)o7**hY>K*p13ly_-J84!2tG>y>6B z{+u`E+YNw3fqi?Vx$yq2xkgiLF1wayoKtIxbSuG^&Pm9GLG`dFC4@kJOx!4aTegX7 zGFOzaPF^q7uTq{JP`lD>39WgBU_*WxegId}g$%Oi{fErInesc!)#&Hu)3?>z17PGZ zCl8!4J#EC2A(~RznqNO{7ZM*CRQ&51ZskN_KCkP zL7qoTwK*bgn_Z;i;vqr4q7<>=_oK?n26d*L{=+djB5HG9?IR*?A6)aeW_V0VnJYyu zhDb>9-1KeZtZX2Wc&amI46kriaoEJYAjok=r%IKm8QIaL&>Y^T1|mHmHdqIjS-pr7 z3rn5|jrfHV*eW`6xRKY-K0fVT6q+M*$lC>mtC#Ag);5@qx^YzUSX6H#G2S}v5u%3G zbG@)A_=JSDL-D?jeHWwnEeo*-bIaOp5L%=NRuYQy`9g@3&8$$Tp4osp*CS;p=!Iw3{ zAIcdDiJn!!9xS6T(`OB*N z+x2%8Z)y9!eqyGVWJ&(#TE0KM`^fAW%{8a9FF>3yKrN~H#)Zap-;j+&&e7&;(aH-n z`dpPb6`@I%w_;!DfE6}?@QlV~u%9b=QB1Mur{T9%UTl5L=%?R?Z*+;9ulAy*C>T_f zig%49V+5|b;wkGK46Lo=6(hH|)pM+hNlX+rB|QH0m{4zpRYO#(3B!}xzQ!36Ki8hc zA^MSoma1atK78nik5%FyKVVa8J>Q*Gyw%)`gdy-7M9K6RnegnA#E5Rqd8jV~p=S|; z{g0dOU|;Wst*woN*tT`|-{FIX>3Ui~M-I?D1K>fi&OnbN8?n5)J+Ej^t-NfJL-CBL z!ZjOtjohydmV9Msi)va=F6B!z?%?{qhl2Ta+-0(R0umEKA{Z{zpb9; z)U4Ydv@?=6>So#*^z0dCW^psjZ43m9z3klzc`+FmdmEp3G%(W zbMI9Sqjr-@sls>V|C(*)X>r;=f5wlG_r+I0 z((^OtCab;$3FXy|%rAPk(ImiEB@3p#^$d+XBh?ov#TaLYF#H*aU$Ox- zAkA2|uxt_w1n_LyZkR6}eZEJk12i}eh+IyITM!*0xIFlj&2@NnAJqEIL~v2XMCvv*-;8D3^3U*Mb-W&+=G(cw{_e)_Wy6<>wocdMr;J9SA+74Rlo ztt-#Q=0vmK6?^xsByG>U6m@{S2Bmn7snv~?HaNdmpuzY6(jPd@o}oF$;Y&#>t6L(G zP@(i}s>@W0Hfv&UjAkm`DC1*%dKe4j764#y)IRGAtd|`29WqK#O+e)Cq_kw&I1^*f zh?_LEvLF!PQP>_zGS6ztnA-kUoPn_?f3L>b6DGLtEi8lMQnD@^F}VQ&AXz3N&zyNbUC?<72~rE>%um+yx_ z05-@UIf=^82jqOZq%*R^m3inAYSwM57d}7ozQhgHbh`#Ux`=3vn1cm5o}<`c&k}dUN!q*LDE+3p3-#p!b_z%{&gb_iy~#=`Ipa&70<=3_4*0 z2-Azxu(Qq;DUpt<_s$z$w*jt{{&JI0BC@`K@c{0n|I4uTQvC<*j9c$2=Uzv1+&Sps zT*9Q0f1W`zdqgv~`g9K7_8-aQ1i>x39?Yxt@s}c^{@chZnhqQtjjfiX*FOPhlvGv8 zoQlM%tbDB6{OfimS*dT56&Z=6ZIU?npEnskQ`G8Ud>LPy@?CAFERm5gq-riX3qLWA z($)7o;RI;B2@uY=mF^4fUnS0()!B|d2iBiS&|b%f=7|b036+`*L9lJZ zrWj)y@dEkzh**VF9IR~k_!-Kdm@9=B&1XJ|`^Lln@zkbn`6R9_JRqRkAig~TPYE+( zFa){XFK6#OiI1^oiWY5{EJtSaYHo@#MJrZKl`5}6c~?OfB5xH<7Lx*V-R$v$- zFF4G%xJ$jgtA-<{Sm|*^J#fH{oNDP?3!JYN;^2<+Y4wmR`IKqYl@_pLqWtp1@TyG% zZ{idA%M`C~g4jasvl^vOPwnYNTwhvPED>1g4x8N!OMK=g#25?bXKWH@j#5k0sTM9D z(d#YGS4iA`E7V1R^^JK5SoCNZu?&Ay${sN<3pKxZZS<;IWje-Ri|sJ0r+F&L_c%0{ zH{UX4YRZPnI+RZc;@DLU8i-E(^*0Z}HKnFx97gb4@Pn|cLa_&7>+9n1SLAOmvFnV? zHqq9cY0)(2IfgjSYqaBsw8W^CTM3Ll$O?}*$Pw!6-v{;=GepUDs#9AMtK+bIVkG+^ zl~r87(?6f#WNhucd6R$rRE_Yig=(NGEPV7Kb~u1vu|Sy;4=?^cbupv^!~2PR(*EqQ zLaB(qz`cwQn@;FIYF!rwv=_~OcVCk0$S<5_16bGuyLv*GEF}!_k61BLzk)vTG6cYS zM41@(RLG{$9IF~*i}-QN$HO$p^oT`W;~9&lf0Qb=n1j1-4wpG8SY%pNO-jtNMp z7t&^Ph-wk7taD@sW4Q2xi7qBhztP}UZ7+pjRVVb%{7r}EYUd2`Sl?^&ve1vku{hD$FGVf&O zS_R`76%PB5Vd||5usqtg&vLuw=Wg`0QfQDhbLb^Oejnx**Ll&MFg_Pi90rqF1)H%a zE6!t02+)!gQ9>wpM6j6Bth)#62rBT0+4QnGhNfwcE z(|0?@KY*0TSKafLR1D&0P)gba~1Fkn9H-ImV3NfFuiMGbaC91_X5U z_O=3BdVg_0x%qdvIQZJ2=|9CXxTychkL)l@+bYE>TgnN@L=30JU-+<-xY_hx^>|C> zw86Ylt6^$P*$}&yR1zDJkn&KuJeM5>LN0_LiBCR^B(Aj1(E)YzNDTZGS>$E7e8|{k z^(>i1e~MpW6$u`Ymk&kpreG!USvm32w+TL4{rPHExLHhHWi6}qddP69kw~$)l1#T* zy?yP7-ds#tRQ#8O=!%Twx`ZeNPW#IEe`;&5R3C*#g^uO%OlSX+JD|h{xcLV7X5Z1p3_u1T6=|kVHCIiyrXnp_#!7sXV_RY zM_FT8%izMxk0Ue3hP)dpESXAOp|y?7;ptgVZ!P_09i-Ga3Ngu(Vk2|1GP41^*A={i zm$ESE2pO*`kga&*qigm{%PZzvxW2J~d?mA;F_Yy1u3ap3CBA|}$F!VOERmh^m*{78 z5yt!i?h54?hnOvd7@}VbDRO_RMAH%Me4q`i}Rdr^G)F_wkjnpaWbpd4E?!66n> zrjRuJuM;PiO@fdl-aY-cW+!mzJj-|Umdk6?T8({@$lWFOswaEZdY9?rK<@m|R18+L z@1MxX)GQU!6kcYoaz0r@ZDY&3@54^vmBsvqlr>n|Sqh&0xt?}EKW1dvu+E?tIA{+r z`>UbR#T3e^&m|A_Pi3aDi{de+CHiy=?)%^)0C0e8Xi+27nk12m1rS2n@+ga?U zo3uLl$e2Agf2h`{C)@CPa#NTF|7nbG_;?D{l$Q0SpF%DL-msjJEd>@$x*g^pN$*x?lr80N}87;mZSpvJ`b^Kw+Htoh#+1=6~}iWp=G<|6`RPi`8-f9|c*A zPy*f=!w=}~{q5G{%L8FJe*Sia2Kt|U1oG3bzR$NO`n7a5=^Xy=o|o?zn1X3D(qhsn zok`i*!&J21;kJ9ZI$#KEi|&bTXl-UPW-(Soa`8VmwpRRhK3}XtB0M_b!kF|z)zks|! zC&r`q!>hM9O9!{pCObLp|4C6|VrIE!nnqofn=0=3HxwL|mD;gbZK`?14ft{?49``c zj#d!XaT>)9v3zH&#fdo-j|t0S-$Gz5W+P1cDAH;mjO;B?)QwbN%ps~u z6i!v#*cViYQSAunrhFnP6vGz`C59PhKIP>t+57IV(XeG4cv0!3U{e~U$H?fVVrLmo zWsSvq*qmfd#?SCs={Gw?VZPD)((j0PwK+lls+}PcF@2t0T0p3a^5q&(U-7ddwDB-h z`@C(_z-s5Io;eLhn3!d@opP$XYW5wqy1EAg5fML=kevOu z2a!+`#j;8oQX}_LJFO3-9OhO}str}Xs}LBH*t{#+>YNq*B2&K4!A!AG&CJSSR#8g- zf2ev3uqFeqjhik(7~L@%snJMC=V(TW#ORRj5@|+vhvXOyB8}3G(xTE0A}s=<-{b%P zzTf+OY=dpUb-{H#+j-7??)!I2&sKf%xbL2P3r2+dz6io?D~vy2@j~E9)iZoVzEOg{ z{$327Ey?a{Ds@^AF$1@w%~-1kOdQWJny5YV89yS$B^Szb0RW(_H~o=5_9vBa=y<>#)XcUnX70eUvV4&U*dlxH9gyt18T zG`Grm9bfp8t#e%VQWnTrl(`)uX@<1%-Vm}x@kEp7IVB!&E9K@2m!QAAUW+`jCe*iw z43Rk3ag7+B>sw??SfR3_Mm-)HAFe3}1Y7 zR#D#!3>8xT@aE#Ur05yg-?RJlN!0A=+S=VjuZ$Qa79Oa;lnpf%VQRe>+zX6-+i`k} zPG&dzf6i{soa?=EZx{ZuwV8SsisE@v8}jtIMPhZkdy0F}TG)@<+W?^w?SFBn_-v4W z?6z9$!cO8x8_nOd%rrw_&E_0c2Ya|{uROhkB&95&Rg;IVtkrSSt;3F0Sfp~f zc~G(n>!I1H+;TnJ1ltJ(ZS!ov#=p7b=o0+Tryn!8>2VNZuQIvoC2I+-Ze4MeEt<-n z+(nIb17k7?dN=o!pMF16lKmdv_!B>FwGcn{l^@*7T!Ge3pfnQnCjoaoZ>@71%BVI( z?BjldS2Hga@QHBJ&U{y!&*rC6@=9K1ClRO?LgS=#gSn+JFPG#t?##trL*or;kT>!^ zG^;)pDNu_d4S!OeshoE<9K)?~O=|*r@I9gdXRKd#@$3u#CB+r^# z2IPqbx1Zd{#{TDu`>?4SBF3oWR#XTm$tyl6=c%pU^)HMkObkE1pS(Oh>EdPG$J&r? z#c#!HZt@<14uBsU_z=A@*}Dzt%opHraLAZ%JzQD&{kzV5YI3-z@S}~M30~dNtl9L? z+!b?l1%xvuH!og+S2S z49{i=MTW?G%^cb3>#;L%l}EU}ffhuQYV_!q_wK2RD4KC*c1^Xl67z(9Z`XFf+^8s6 zk>9aP4+DfBPQTYxJ2V9$%D-04e#?ziUvhruUiD=MBp*=|jpBh^JYj83H(9OBVDsb8 z%DLQ<(KqkCjCczcLV$ey<-EglA-y?4&J`6LN@%XHw}rU#@M&Z*gsM~Y);go+YMZ%h z@$;CSxKY^U8ZQKE7L>ixdev3tte4qK(j=6Y;T+imQs*R~lAlWS_4v>xt!; zlDl6C2^k~VH_VkfSnu~99SHx~*}VajiBdod$uYdVH7^PLSt9+@j7Ot!CsP6$J*EfB z#oQXEb)mJQ7gV+RKVDUh@g5z8S0I-sX}~_fVK%af1HncrNCa z`OCtu5$yUoCIul^OKg5czScr_L9rbB<)rX}j&yo~; z&^8%DXYx{5YrZ*RYsph%6RxtV8cNELU1+~bMv%}I77hp;6jFJ{bICbviXAw&DbwXh zE3>hemja@rL$S$`bOBOMcgn-BLS_2oaN69Kh^=V93mCG;?8B70azkCSZ48Qkd$9M^QG2+n@9@TPc z^>WHZ=RS#leoUEOUoQo19I5htN0*N7(16`v2S-^$%G3P^eap#A>(V>ZB=S`(wg(g*tesyH}9cKB%(?zA|x8Ik#};g7^_|UP8{Zf^BGdJ>;F@8MINWcLdvc`ks7Jawm{x;s_SkZXpUA3? zUR0~GuvG8q6Z&xJX+6AYXS0Y59I~Jn?j{$piwi;5HO#{i7E~S+KxBI%^lNS9T^YQK z6s#*CWtdnQ8;OMwX0U2uyluo3csy6;kp?q67HREbSRm}mb4C(On5s0y0t{&~8K~yd zxzGX*dMC}N4%1^e-i~e1KG_IS2!_b2)(Vd}@8TqhJp9Is#k264E z;Tv!&u@WH7ltKYb111r6rlXSK{1peg`g7)QsmJvdW@&3itdvxS_}N39lyp8!LBY%x z@$977i{Oy~5yaKa&lueMK_H;(Vw~Lg%YjY8OwSX{$+9BUeBBsW57VoJNkt$q3Q1~+o8^w|ON z-NS2%QMTH$u}e6_k~ilT-fYrvQO5J4{p;aP@bgIERrt2MyREgit+mKExG$qJN(M|$ z8jXb60ZA1EizCfj9>rqgTIsrrrinJLEuQwWg_bi732c%kR}B>2Tef-fJOu#w3;o?? zIq)_c$tX{HUQjGN01z}%UuQ9EnugkLY$d53o6EV5Q#(pC`uZE+97*7u38`e`{SF$T zopx>+Qya=1m$FN?mlqw%_3i2n`@8Xr8ams5KHI-(?Ji+^%FoZi$yvRfkZ|ZqSuW(A zZ3l$XHqXyz*4AeJ6#pV*VBTZIKN`g%VHRQ4$W)-nz8v-vvjpNYfZP6i2!v5!bi2cB zM4Gs^5=Jq~WnY}<+{EOqD?Cq~XF_7Y`glG7+aedIL!?^)w7D$8Rhq)AvD!@osi{22 zKv$`$aM49_uZawgUdJxzi;xhMaHD@#I#*n870Nm#wCs3Vncw<{?q)Bes-en>VkR!}$kbJ1YA}g> zPLEd4mc^cwbAV9VR4e}6DLHN`Fb5nJRpdPr%!+W1tFOJ`KFoxe#vkk_s%vS*MU5qN zWMUatAdQp7k!rZd4G48F;(~h4{8NY|lr1Z6TA!HMSq6GoZhj0E`#p$ikT+_<%st(f0 z@=yD_u&+$VFTze?K!fdkjet#(_wMj$cAxJ#=(txm=B(f8q`dm-?sPwBB+v+`2zr;D ze~N>mz(M2Up8?T7R_~!#8_)-2S7p#b0;C>@PuEVXbMBFhVfV!EcP1-{gU}k^(*D=@ z@t>9-R%_hScj{hmL9Ls4eUK5h{;w)KUt5FB>h-|tb@oc>^-H7!R)~U#T9v`+n)5!| z#am%Gn@YqlY~kum8sEgH6M1PV*~;EoT|yc(6^Z)FHHN4$*anXWMJ1u3p^;&>v7wFUtCBP^Qr%9UhazoKEwBj|Hz~wF*}>~$I;1QgXcritT~XBS zEVx=xu{5l>>RQnGC-w>)_Q`5v^dOfVYHpQUje3+WISW9SiBqPzkj}Q_1waGMTnc)I z%8ZlxlNyT3kcfac)O=Wv`r!+@!zconDTOlE1T_zdkQ&Lrtx#EjA)nGC`C1J{ib*h~ z^4KH3NfYvB-Zs=*6fahCT0vd)l_2CBl{5t2c0x*NuOWV~I=-Pk@c1*kL6_-*F6>Pm z0#+Ju9G#Y9 zRgKXhS}eLh38y zPuOMhbnvJJAptCfxk&ZSLQgtYB>=mKvC{*>zZ?O9-tLgbo#8cB#E@F8ZIEsJ+##?XTOWeadWy;G2QNlE{B z*4{+^i_BuyZ#U1btoLz)$#cnR5{B(J3u65Bh%hUg_m2KrG$NRk_Qe4aRMr-;QzS-B zoeXYa95%i$uN&f5Xc<6a@|q6pXvFw)a#nb*C$p(F3LLInDx5p?tWuLwUhu84K(B$d z0{@+&K-E0fQ(m&mvVlYN-^BbOLhOpNq~@p29|)cAu&arS>-z%mKPopWOPETlE=O+C znGBDp)XmV>iVqR?An;^#j;Ia9ANz;$%q87Et9s+WGB+u^<&TJKU*y?_DxO)1h63D%TzQ1_#QTp=FesS>6 zs~uY}Pr$`K8A36sKSgg4!%w)7U8OdX86H0+_cpWZqTIEh0jCX5Cx7BygSg9wzCAjZ z2)yMdn<`FwxjdnRF_pO0R01{eADq5qR!VAwF65?(NSa@-E#k?m$VGa1nifi=ti*$q zh0)?*crZd(q8*Ya$u7>00)^t4Y~ezLWHkb61RPQT<=j61^*baaEG+E)`_IF}lZ^TK z=k3L>esu1a1pipN{8+Nqd{S- zTxG#K3wNKUEB{P>BI4@GxuXdPygJts&`>(ImG;Rx{+WTGLicsrPgG(CqwmpfWnJJKlXMVFy2S|)0F8Yf_|h6yjz>`9@L{Q&ZW zGGG+d!$rC4Y*c3-DEq`HW6`t;l zqjJl?%kND^*%|bacA2%)szIM0 zGbe4LRM}2hS$Tt}tCSz9w9BI*h|lqwEwxciBSXJar~%4@Va}GNPg4`8&$FABFcz39 z-=IKrXhJ zB9L7IHD&nI&-t{h_ymM13POpZi2PhcjSVRPo3n?jR4H&&(X&RY!R$&w6B8%|3Q)^x z^(Xafd5r9!&on)h=w1Gnp@z}Kn*a_H$s~^v#rJ_Rkj6Q8JcT-kGLchYEe11K7wS@q z96wr-2$SE!b!)Pud%oGH<@dFUbnDN$APp-gs-cj8GXNIdQimv;0MeH{mpvxCfEVzh z$9#8}2N>{qwec9&hIH~?N?SG^oQ?W;m#*F2_YId27oOVNKzJ z>;u|-^19sXIQ1CCR??b(UYG(Dj!jrOOkMY+|W=IMx_aLkLo`>hL=A z=PPBEnk!?Jo8a*9Ol!WNFft?>9E9zVbn5e*3!8xIkUp>x7!74-gT`d!9z|B#gq+hY zSC$t|9kLED+xWU1x@t(%k!Y^W6PfvXQZ7*WI=zdBw-IhJ)UzPusOL=c7U1#FXTd9w zl$)3wLQNvq(e7%(zh?7_HvIm&xCc$k*R|>Sr~hE)_+eg{F7Qjc;68?yx!Tl1=?K&L zop)fp3jUt8N{Ue?(FV`j4n)Lzmv@>$d*F$!^WATytDa+VBl$n)WcF zS{pevshcTu>YD0)W%0$y`*#6ni>#WWKo;~b3zqb#T0%l0&Lhx=_!&uCnoUj!$Wun7 zvAJxh_@!ZS5ata=#?iZ&C^imK>ru9;$K!T4hP1STB-Bq2HBTEB8~)8xofSnaWU`>Y4!pPy^k& z574SA2&HnLS^ZwZt&dO<01+RzeVWG))W2e57zIq-q{qK#$|3KvScxYoP>(;Sc053+ zkJ_@Z=tW^k%Eyl*{|^54QL265g|K}-93Yf8#WBC)1AMV>9fmiX^CQZ*5-_S)D$**N zzc^?1%)A{;RW~>GRd~K#1uy4u^Q%Cz(CxZ2%YSfqvsY@Mff<@aMT^NI-_3@x7C9bc z%{XA9+1xL(wgs!Gb!!A#Zm_zqlJR*Ie^)}7@}GoP@69J`@jCqqR= zb-Zzg6q3&c9h_3h5)}5JG$m>%AtPlZLbnbTVoE;QVonLO7~vV=sYqdz=ToXz;6hOw zKB;shkBcz1V@YX_dlLs^RA5BG@M^CrCV-5bGYDlD6a^!!B{72R;d6QM#B=MbhxSxz zXA?@W6o7qU`Z@bzRn0X-Vth-VvULrQy?Tt*{}nUEdYxO+iM!*?Uw;%-{XI3`|NVQ9 z@&1R~zaB7!fGGC&v#wYT`PCrawyOn4PgXpI^zUWPIF zspn8VkQ`mSaXq*w^FJ(B+#9U>*L410X=~JeC|U0^n|5ZM!OW6Xjl6UN z?^$!hc%FVXB~%$!C69(kJX;)PJX=~}RV>zU0)I=w4p`ETYNa4x7drgp5nSDQ4Gq{C z!=J0vRFex%m^#eC?G;Ot&B!j-~e0go(*GMoI(8H z_O&`2r)06!ZF+RVsg7$|j2c=dv8j*ED7Yy&WejvnF3Os0lE|x)aQ))5;@jL0lo~N6 zn(qgSRNI=_tuC0}tg#F+-zfdP(s=v*ye54A#4%2u#04KJ}#RBleTu@TNdx!j%ZuwAK; z7pPf4T0~$QaJkZ43IVhLp4y0LH5PrjIx^BiXJP^N<5xTcJ#l7zZd48O4Enz6IRr)L zc8hJ?e1#K~RMehqqPO0G(_M`&eyh?e((mr;@u2auSuZ)f7YyeZo_wpZxBS&6_SB&4 zRBS<{tc#*jkGE}h!GC$WiE(e^ORS`<9{P0EC+X;n_-AjJ>j-55kK>BcM3sFSo=4i2 zZ`v4nbh$1w;F{zXROXzGe@Yd-82{A4VxjZEgh7?Xw+_5lNWl6FFPLy?hm~DBJT+S- ze!gp)bUVGD(ZXBS@x~s<6%qgGBd0@{mSKO61r^JZ`mo>Vt7#0!?r9u@9*q}cCY60c zzKwR_`&PB?lr901n_WST<8wQ?jjXbB5S#e`@!^_gyjH4xlO72H{v=OB8)m)N7i^_m zMI?{i%hRi4qQ5tEJ$@v*qNKm=qxENzA;P;v@6{ZcLLzLHUSI1GBohY9gjpEY0#;$f zun@2Dq8DrzP(VhXL{3cUNjF1;ceRfmEj5(Fmd_&10L?T?c!g)o}{Qe z^f%3)NbZ}m5oH1nPB>weo+!1wO@#(I2#rFKW`cxu%Toal24guUj^bMsmGlLTk!kkZ zSw)aEw!2~Y($$Sxn8!>vq%_0e8kh1u>H%b5`{xeUKmDHnD7sjI+IG42 z_lf!H{!sa5fd!ME5=51$)g@=p`#U-PB(1_~Yn2~S^rY-sD_|E}qKbY(u8Nja?6Wy(8SJ==3{#UWktf+kpJrsi@_CeU5BoVQ$C zwTt1y4z8YoBOXYk2D=&bNxzqjd)wS`*bp%=&f1k62x?jls zckUQu>f7j^^t|nkMt}Ka0y$2x@t3npFQ&!GuJat-g55K#)!wa2WB$X7yPM@* z(SJ?d|JJYT+1lstY1i+FEjC`zJ=-PT97+Ax&qZ_53?8NY3E;l{RiJ!k^pYgjL8zHY zsZDkIGw+H{KXv$sp0C-UvQn|c;NaLMAA2Jk`WqP@d3GiIeCdZ-CDTlqcmq;i_o>;! zd?oMMo@Rp!j^aY`oV>{?AdSfDj6pg+#@*>S16^QKiRaOiREj@>Dr=z~A@vL)n7rt5 zU`dhF-x-7xv3U%_1n6!yyfIQA9=Y|pk5pC6DwI+WPgyx6r9q>SDiTV$^sN#g?HwF9 z@#4aDJ*_M_8;rv{{dZqe^i%l9@9gKw+Df^@RyTIme&hQIwb|c3D`jS9`Z(L8P%Id1 z2)t3UU7A~Oig3Fd@S8XSp|AI>c zC#>7!|J5;#HoEokH%P^0HClHTqi{(*v6R}HnNFffqp>XA;bBYm>p@vJsJ@--+B~coOz=@R1JNsn70Z(>#?x6@zDE>C*~~X zt(2_vfgPo8n4DHC2Wu*8YH4Y~V6|1Qw6jyjmcvWbo!})%iv(nBaxPZf;YgIDU6YVW zrJ3?0REJ#{4IeV*E=$O<5}-$wQ|cvXOx^`D5;n%7C6Dn`kPa&?RqA3oOHUw0+EitR zA6LxTJ4YBCJ(>6U3RSa5z8K3HRsxGY;1k4INxF5!z0C^dI^m+JYR-Hu`JrTFDQ>dr z(}i_f%wX5+Qr+?N`#-W8FJ7CX7@-GN`H4lo_fgbq&dSVClu2RT*J&Ol+bU5547eb+ zJo6*2d}SExJ94BPn;NebDa4N%XO>Q>bB)R4MI_ogDr^_@3rn!gpcUPW~ON?+e%7FWy68=n7>y8mF(VOjI!| zzoeT*IV}vyydjm-(;|Wqphekurk_>N7G*`Ta|OwY3R@|+T^7tS4^PFnb(9Bg>IzCP zosy8@^i5wNvHuV`8H;K~eb2;l0)S_PFc^h$-add?%NL-WUjZa_hf8=f?`029Ej4R= zoWE&f!F4bY3i>5osfcEKY`!};` z56ORsucPbZ6q)m1Ny{NqWR0OG+l`^q*PJCi=MWv~pF3pBB_Y4R zkfl8P`D;5x=FhLTQTL7UYfd-wS6kL7uf)L#}eTiDm zi_`yODO`i}ZiG7h9r#Aqd{n_nlG5snk>eJIfE^E`{ zEoKcE5&O5dcU`rvT^zrIZYW$48$(b;oQr({U4JM^vG{3& z)Zo?9UDI(}U7y2iQoRAhrw`6QNxRj0mq)tj=+w|ls~_*-44Izv`TQq`H(j}_a)!RL7aA1$C~J=-CB<{Y`7$aI+?=vXn*#Y{ku?g<0$pay*&*nlmuqYk4m zK7OU6;klM*`OqbN$g7~WC39ifs_Xa>q8+F^*BYNVLm=1w1$(z>Zzvk~e)hh4zz#cH z{eR0*neRv9>VlvTwtMLAqIaeL$p|GZ$o#RGLoKRSiuGBCU>_=m7*5|rGHpEojo$zM zBG9ot(f#|YkzY}r_>#i*4z10*XziEfi?BwZWHK2+3SW+swf(6byelB)*z)oA-rD(7 z_nunaf1sg2GVzTSzQ?>TGw#UY-by$T04@KAZZ2ezhzrND8NilSk7qA8DeHG2qs1}0lgsd02YHD1&53TU@r$b2 zbLxzC-rI{MO(9V02kL43V>BUaC6q5YKH~(WMJ1_U1cOlhr%emTG-fWP-h{UtmiEQr zk`w;;H$sI-Je9vA!j4t;dVDAqtdkA#gt19=*$X1IH~8FhjKKUnhvPaj)>tzucn0c~$W#oKnqKABgvyhH@TXb*+ZIY68GB zL;%41&yrO~ujscmT32@>Kb6RnSt}8GS7KbL=e_mv?ji?-_eJvS{!e8A<+;DVPEQd4 z^YUH*cpCG1K%*D3te*f-+1NfTl3(KIioP!|KcnylhksbETuQqLj>C4RX>K+NwaZVc zXsvGhnq{zU)~cuy^Yw^~QnOz*AWcmT+b4qt)G&&Zm=#_&GJ+>;`_!)^+W?NvgUnaq zVAVHSpBCAD`Np?eBQ054M)5I*vlW?~tyKnBv!YTm{)XxFFzCr*p*7E^uB3%L9+zrf z&y%lxHW9NGf^2b**;phLy>TcZ`Y=8G7Gz7=9B^qVD+3@c$V4L?T}4vEh)zfSXZsqG z)VNuWhJ(sR%8#636{X~fWmTM6W)$@ZGegl(LrgWN&9~vOS%tSG>RDwRDxfxWe4aLe zyfoKTTJyWcpXX(r)h^932}@{7T>&*6Vhg-^lyW)6PyO7?=!>7JA-V88Sj508Z8}Mt zEgl#P*1(#`s;l~;+Z~H!n7F%Auw{n@ArTv81 zqrjdqRtyEzk<*qpfg|I1(_vLvrf-_#%!X1&Q(a7=c~V$XU=7w3wJ>CMv)M=!p*2nI zH+Ta?5Zl_<)nY0>=*^VDo-1o-zhFz%pPoluSe4T z>wXL^y1CPsTD^LX}c+!0mQYDE3RrBZ0oxBNPXSUIX3}2jwA4^T*Ux0(r7l7KXXJ}V}U-RZ> z)AGzuh~%owrOw2O3&?1&=n)PTrc)UFElieVAFdq73D9HNib|k!sURU@iGr9x$>=t0 zxokPLqh5G@t=+5KpO>}{2Dyd6E2y$Pu3{lA6F-ckPOZ+!livwV+dwT&q;r3|5 zi{Rhqqn7vi%hC@EE^B93$LqhF8$$=@ftvxa4G*~8T{i|ET{ni_)hzdI{<|G6zuzQk z4F2~sz;nHuht=!9M#Os#lXTwyyPXp?zPdYHmbt#;w7A@9qf23+XZrE|l=$7drw_#e zI#7tUax)FR{O7WjMHnfvod@Sf@U?T|$ZIBvo4bYlb6W54q3bOS64044>xZb^$4gPc zsN#bKG4%H7t(VU74{%`y#Vj=#tCm%hfTpBMf$(&umSM)IMrKnP38G~x0shVex__B) zzVjO%;tA>NpiUXx1_aU~ZHM_ozyLf$RSOWQOm-&i`pkA~VZc%tiy@LRUVuho+W3|3 z>i+p){icV+!OeYd80T@oDcLip8ho;e;c;~>qMcVGasLvXsb$C~kl5_$qYYD2?6KlO$emLbYK*&Hw!$D41`ec6ti zPSy6fFAD=NihIg|KF$+Yz&;@Lqr{{{zh-ie@W)wopSlR7e1g)%K!laCb!?3Dm(-yS)iL7yk=rIbuY!P@kZW6$B_bku3kFz0u{5Hzu% z^XnI+$tYFn2Cp8St4bB2W(f}qnM!?CqL^tq4x`B>r3*2CUY@9>qW6g{v~PZd*W~{3 zeA3`?EcXvt_cm`vi%(bdQuU{zfGxb_LTWB)bF%`f$I}+wyw*)hiS@1m%et&eO>bN zSIN)oGEcurep{FM^6#PSXMp=ebK;irPW5?tef{hbU|aL+UJLewD{+T&kC52lv22JZ z9dhLwWZ`^y`!joxE>4(}Rf7=c(eM7_W$_DKwR8q=#lsgQhSS;w)L>D}l*$goocZ^K zrMZO963&=p7co}vIW~tLBv?R(%GifFrkP`tMwLKT7t6Lf8c|*35&xj?yQjZyBnS=?{Z6TYk^i7 zFSktiVrXsb$+ohdEeSRX3`;AIVD=huWv0j~dyO}sxWI-&Hs=d}k1ixt-E|~iP)M|+ znAE7XVrijORkWe9iT&|dM~<~LqVleopFqJYVgyO6rAVm93RVSn1yls_k>egIVrH;u zUap$mY<4)hu+=n=FF*XnH2i9l(VlIRn9h1zJTMdfL!@7+CZ|THhXr3eI&5+(6;D@@ znT{~NQphpPja>cd=rw-Ta`P?`s7926ps1W9nakJDS5Ctj&K>ZirKSlyhKH{J?SCu6 zC$a~rQ)naD<;k4X-D@_B_M)h@LmIs?i}Et1m^9&ow;`-6->^LykI?mT)#ma>L!1e6 za$mY^s}b%mV?kdMQUp}~aSy#yS~&Yq5N(t*Bonr3ey)Fwy!qTyWYq0le@9xeAJt#k z_v665pf;P566B*q#IWF6E-9EayFf~w*+BhM1n#Ay#F>ce#*;3*G`i<%E^#Uo&+H* zQMhN{{IPFrWdBdc4jG_&5x;A{FR%aMc!2w2rU!xaV0%Q4=_FWR^!*r9xICtFtBWNS z6z;*H!5_Fs%LG=~V~a`4-(+j^RnuEAi559nzEus^)eWgBcWJs5!Ii799+Y5LsFsDY zomH4{+6dYEB^PDzUiP}Rub;krN#yUR5*+*$_dZxv^?r18G)2bm>hpE^v3SG3TwV5+z8}IJbkuD&Xedy#of$1Js&2vms8xO{X({z2alJD8!V;5evf1wFE_4r zgzWtX&$>^JbT)>6HZaS>S`&LcY;Xsz^;wFgpL+_a(Q2dbv&1$jBrSC>3Kso$%mF`$CO(?k@(_V)Wd{xfMl zg{J`}lKVx+0nfhQsFu(E{OJg!R!)H>AE${b<(nS0>!<$Rp{K&2SPjI0>jVa@%W3(z zYITY_AHEL6onfmN^T+t5>9mO}<~cN`DFJ9*5Y14}{3yMAPP5hVim3`;Ei}!AD1XSr zqirpWdFYXLck#+*2F4d)Z>zAKaBR$o2}zs$iXq8zY%zi>?X`q!2#Lv!_O&B80{tnR zC&J6ts3oYw9q0V*(>rH+=Z9Og;W4E|OUP@=^y@<1G&IMGn&|2->)fC5O_M|2SN%kC zX%b#zxVG#Ndv=GKyQkj8<{S(kWo=HUCB5NmdES|U7c>q40DLB6@^i4)W1Y`|8at$< zh%>oUgPXtn>yu>6#L+P<^e6}*azyluGrL3LU~_15zs z?0I*v!Oe3o1LD@D)yW>}mu`RAzg-N{|6HAX``^y3krZ+%{(HBm@$XU5q&x8B5&Po* zts~gHpi5zcI;!4>?Be_1_8RBSxE&2oOZ5od7(8%?AD*?*H53DT8#*SiwMt&)n%$uN zf8hT;cOoSpPx2hz-;7uD39uuF)a1EQNK-@o#Zt9p$l}OaNe^nuLkGn@`$hB-XEDp) z*H-WB?GW}8 z+M^(X{jHC1qH;e=?VAk6ZEADiEDWQX*78v#WL~kkS#k0y5-g)Nf_X_ax72!CdfHPX z^ivBW$PsGszA8-s4QU_FUz0gywH>1_s!(O-fE^cp#?0Xd=1z@IjZ{J*9;pzi4^P<- zDA+5U5iLWEt-v3$bJ-nUzWgT6LYg+EDSr8nN_F#2^+@>g`G$4ci_j(saD z3npjwMtwczTOhYW4Ih4C7ZxyscO6U(#I(e;=5wROlE5#NK|Vp+=68qm1f7Y^`a~63 zPH!OT*ezq^kdZWHtdHz|oafKL+=Lvy8K`RyyJB{mABbbgb?-h-;POP)#uG&kw)#T- zBnbtJ-lWEJ*#oGwAkK*8#5i~&%Mec#HO9qmxa*tWAgrAt7ya0>%0& zB5Xr(+Uw7#NPUNeqEZQrr1AiN2E|~)h*+3^J%+s)7nHrLi~RKX%11(5c(7@a1S6na zQak5^syQoY6wDvkkr$2a2aIyiL!C7J$*~DO1m{SeOStYI)sap)<8>QrSUu;{5~c#% z%RXA9>N~}xJ0%4@{5Yv^{JgICIx;BPUW0zj%3K_7Cw2~y8UScoAJf&-=YwmG3+rEw zUcR&gBrV%qQ{@C0QbBL8)~?Uos8)JM8Ca!usoZHE4Rf+Fq=`PIWbxA%C*dH$ znU-`F3xtV+MYXi>GSZZcIyBn!`Cyv!GfSU{?;6&>%0BJ7+sQC43HW_PmU0s_Shv2f z&6%sMqr>mECLR3a_Hy4nSx4JpA85ZI(Hn+RGl7(`hYEE^__>vV3~6c97^Hbwl0vm= z(eyH$90UK*aYYud{;huUd*|=3@>S~j^RI*TvmU`x$JZ~aSxq_efD8zUP3r-Z3|zG2%}ksGC%&QPrr@;tl2%q8*--3-LqoNdeFZhE;35VA z?5p(B^8o~YLCxs7Z#GA@9{8cl6Mc%1WMZ!=0;W_!(=4i|T7xfAK(U{CuM)Kuvm{l2 zY$Agx$Fe{{cO4@!ZJ*yPdtF=OU;jLamJE_FYzIH{awCnyKGLb=F>X8F5J(F@%iDy&p(FN+fo0t|nY9VIO zCQowwHQ3Da_do*9;nhv+-&NxA^K%agB~Wkvb@5G)gHWF9(%)F)E>vt|rNG_K$y1=2 zJiFUvs%-xYtVi5H<#uVkalcPnT@D?neRyp8Kd^UPzPGVdh#TUt^NsGme>VSPQ29qc zfTp~^U2!N*5LhI+oUORCnbs_S7X=IyQ~$N6p}D>{zs}EmFXp;#%+G(E0DF}#J`K9w z{upL#+F@Vqg_q;HZn6OIbIhM!I;-B1{_Z=)2`}ab>#hYSrSmNu<$IZXLt_6&;0+y$ z&udL=HNIbG1=`^iimWb%d}s#Cw(`*r{Fk-FPb=LY)h}u`5Stw{GMi*turJQVcM#1B zf?fu7Eq4!y)b>|MP!2myU*6chiGVDD;C`QS4~{l`XJTS7 zmywl_o$0YO2Mp(h#j8D{oxVW;1P_SwXq5SdM=7_F)Duu*4v%pWfWc%SO^{+oYcQA~ zS3Vomfd0Itc3_^M^-q3;+9C9bl zd{%-@2!b!sr0L}OMzIc=PoqYdG>xitHUy)H9Fx+9-^%7wyY{sm!lIyUkK@skJXD(i z4GAhkfD(B0t?CS^zYTThaV*6s*mwNFJyN~q{&dAKdz{$Wmb)LBwM~{0U zgh;wI%N1^v!P=W zz0~x3CIG-D+|A6)ZyiU|<(ZZ;~C z=Igf&zxpP-z6WhdZPnBvQFR2g5hElh9!iP=4$>_4%eBB1j`>W|j#5-rB<&Nw)sU6o zQ}OUJttvc0Cp`2gLLf{GwhJ`Ghc&h%qL&8pcvj84lcf8Rd!U3~>0!`vYvUzi8m8IAD9VWbJsvA9RF3QO+ahdw)S z7?k&aEBbl$FhynXE;ubpOK8xSDUoLp9D^7mzUy1h2z#}EaCVfT zV;;N}Uz_r5jp3zTq^y5;|Nq0(TL(q?fZg9HN+T@Y%F^8(BArVtDc#*AEh*i#v~;I* zcP$_d(%m3Z0)p@D_j#V*yfZtD|1dklIQO})>pJIi>|DG#Tis7?8>aME+jzR%IfdTm zW*a(1WRG$-t+BV(f9WG~;lAbQzUjECo?kV$z?Oed$oYL2nRvqYs8TG5jajwtnI8M z4UPhr3-vk5)ddN?ylV+}K_9of2>qs)NdL#hb)-L=84#rxyyCswwXeBocr6GPNiiOD z`*$j|;%f9)M3y$zH%QOUEjp_cl}Z|tl2-m(0&8l7t4b9vzO}nJcZiV=uKLQ~oU>$< zV;nLgRzTnk7dMK4>FbM#>qJO1jRQ}Rw}x=Gp{UDGJlQOk4TE+zKPXHH*}lL{O@se8QACL$VO`OZbEIFH@Y`bKJ1Mb+AZh6(d4YN7(~T<_jHE#m;Y}0Ek)ak1T15A= zIi}!!gL41|_nm6<3fV-{PNXM7@SBUo8i!V6P#O_tH*O@uM&UmL`-}P&LZvKDrZ~l_ zmQe#4RL)h#oSXw0UA1j-^IMZD%y zkDm+P9>XQUE%l)ecCE8QE3 zncnFv8=XstsU3ywTE6M-Z-14ZFNk=0Dz9};v@dr0{2y%~u2_b(^vm?P=Mpfj|1+z~ zWSvtG{I^j)qRH}Tit&VE>D1bPZS+RHiEljj_tuyn3bJ54Dc2R|z^fShBUCs|(;pxRxIe%G-a!KO)KUqYg+m8tzzA3RHHU=T!F zU#$&B`x&+zLgQM!a`}&JOm^zvcy{(*k;dMq6Qh9I=9M*y``(@#) zLy(vjw|WJujA5}+KOBl3H&-?}s({Ex}Q16UMPo@{Rz+Flq2$>?jTWS8mpY0o0 z)`7_YvdIvhayPa9v&SDjlx1UKh9@z`7?|+w$nWGBkt8}id``tQ6efo|9ztcv=EzU9 zm5dNyOZh2^h67>?d8r8c8cMU`!1xyLMSA}3sD+*H8Y8Y(DESLPTc@gPT+eOfhtMJE zjxL*)cM(Wsm@`W$budPHPA548HML$|Eyf!HhC(Y51Q;cqS*JE*?og(Ik2)+gVJ$>= zw}fSG@y$V$hm0e71;FS1>)G^#C!}3ryTOI4iYB`~NB2jJzDr2YBJ$a#=>~7H^0iHx zlRhRwz%N&V?ye5_YrmXpQNy+qZ}GC{Lak$^R}BE@Fdz&$vxey7aM*F;w_P1e2OCV6 zC6X_m4M8q3-3za)!?Fmt#B-V81ND$zN|T?cAFAfG%aEGHGzJq-ByRQ6p@#;?MPvYH{2Za|qDu03T%z}St2L| zq>3A)P9+s&E{;KBI#)_ys%RWC@_MX3_DTm$Nt}hc58n>^9nnIjSYp^j|DFe=2hU4; z6W4047Ac~@t}pF4hW;nx!LAx)Is?sWL3vF~aBohbL=H1M^w?AMQLh2vTB@LmZDWPf z!h|p)Stk?`#vx-O#S7RL)DC>R(=d_NrfZu;NB~OC*?IKs?L)9}_xpHw18$KwBQ%te zO&oA{&f5qABUr=bpot*M{YqUaH*#B&l&U>Z6j=j);FJ1`(p`&Y_%<*yXz1rPgm^fM{ zP6wAP;3Hdwi7u1(aHN zd;561_;`7!M$-*``lx6DB&;*2uHcmnsHpBCvdh5puJb;Gwa6hgLX6<+OkO_+7p(@D ziIltP%hCb8tHE$MC#T6zJR)V57>8FM!TJXZdfm)f^a_*E&0^&d#>1 zqF@o}2tct}#K)Xmg5!=wty%~U#VlJN} z7fqC#hVqb;%gc!QV;}QBOO%1xXTq&S^wUCeji^pwFRmU?ogbL<%QLk3dl?XzdhM9! z57n!vXpybc?i#l z=-52cM!cN1zXH@40ER^c-3zxstIA3F7cr zIXGDYz>G(TdJW^I>;AJ&g=+pt z>aTyt^!NJkm(PFVd8|>)_84_wdGOo6dR}BsQI^1<;9x}` zzn$_n=3%J*f0k@iOJI3eBjsj--S^6=l zKW?QviVb^=MS>zIWm}sp0oNn?6a>z9ySsGT@p-+~Yo^vtQRhd{yH-n;0L~do8hT9w%J~c2X zx15$vR#Ork@}+|jjZ9@Nj3HXGA)IvNxtK^g-HRK`6lWLbWN**N$lu&y0eqCnh182X z{cdG)$MsCyNzRRvHi!)8FgPML+{VkeLi{RUn>7t^mupvATpisH?%po@3d8iH4*)AV zZ!X)x+ScagZ>x*3X<$hm%ruOwRYOKbZoWPRxb`5*Y!2D6j_ZQmUYsH#+1c5uI?mzb z1eWk}pbiyDjV7j&{%w{@WKy|;kPekNCG`JyMEJ$G$Oa%+LVN4vcKzyC+eR2gUYY@L+KX~P=B++?&Nq=W2Tt* z{9TBnZkuGDg=DcLHbVA$LU`WIPT|59k|e58d8nx|Rl_TtDg~l!i(}E*CMR$ASeY>s zQ@7YpGrQdLJZ7EMAly!t>MkaO{h+P|N0Gtxj4=6R&98H=;Nc@=)5|r_J-nwqU^#uN z_BNroj4i>reJ80i-V}_{}pU#&L)_<%X+e6bf%2V}0uCfgD zBuZM>u&cR3dZ>_jj0}d|Vam)C<;C$=Q{X zq@<*VgPgY;|At+`PCp+He~1S5e9jdNrJ^1-giz1!exxX=2%cunNG-?Lc^3&!_Bt|K zHu_E)12Dc<{s!DW3r{Apu$&BT-03rcZ?l9-#wwu)*C=aZd?Ry_F+F=|OPC|{N!!Rb zkz;PUS>JP^hOYuE=*MmttNdB>M+y}qS-yYgM4LeYqXda$e`P#?XTy9VwNLy40)&~s z4fV%!W#ytJk8YmA+1Zwh>!3QSg$~#E8=n>yq$?^;NJ%SfZJ(y)9oeyS8}3fIvRI5q z%qRz1VZ=J};}TS97T7OEb3VT0(8VBN(oNmFw*wMn?}al?-zs9oT0DN44K5hG3>lA1 z?S<8s6BT!Q`^#Q+n8=#RFK6EL5&Tpjv97a#M19PsrJi61agf3ijBNU&KXWL?%*`aC z5`OOdNpbYDhW-P+wNmns6CzH(v}91=8^r{vda>e{HvR68PtQ)Z?oSC-CyT=;Cp(Re zlU9dO!lgMm+2rKeia<=pZhyd1$G}YpXlw515+%a)2@VXW0!NKm$5<2a#4H{~6IsfZ zEri4QrI`=`2(wpxw`WIpz_)fG0byYw0fB!XQCbZ(_ZxL>T=}D z8-hUa}MWkH-n-fg^>I#anz!-|=jKg0~h zk<>~*lw^1-%7dH<>4Is{5Pt2`Wbr^QOuB5>r9xm5C_Sv1mKm!}E9wmrM}1I#6_cb) zQykEI9?!Z~`fSk9lB_cwTBB^LC`ux6sR79NdV_kEs1FWD0X4H4OYMdXa75Lm0}WvU zU|JmcX5JR?X-j{aD|N}QoMq|XE!)OjYH9)Rs;m4g8L98X?b)sm>gTXU>p*oY#Scr-N(Bxn<4c^8VKKD*1h@=%@dQecr6o zSWv_{@@f6!BeYJtm7Cw6G7DYkeQ)xH+(hRR{vh%CJIBQv?Q>|It#%RhkVh!|ux-0I zFoNp^jvb@4($ERl)T}Ev7&%vtUT7`1({aXUC?`6twn@cKb884_vBUj@^Dv};CY^o|U~Hb_ zS0OdiLonkqeR`oLdX*flhTCT0;RE4n-{0`cEz0uuhq&vZ_4e35SKSH}2Xi87iRA?Y zgj=U(e~?Fuvd<1PA{|bOy4(ae?O|Z4^KVcCYLXMTTD}pRGC8Gto}Z2nc|xdl|sa;o9TBvJZePoC%=>@q|=v)=-Pjqgfw3KG%LwMIToUUZ)`SD)EUbJ3At)5bp zI<#K^^5eR87qGIe#}uKJeb{c zqW}n23RR4nR|Dev>76Zb0is$}QJb*5uZ-#(L)>*4#0l?wB8WFJ#UrzD4+>*z*}s2? zFHc~|08;NL^y8ct!b{ZLelZMxkuh6Dd82BR)X5PdO`=sz!$DW*>q6r$7Y!Mb@-Jkp zu8w}AGRuP`*q`W@fJa&uyHTMq;C~0A7Jet|37>*XIbO5tn?z=zXftGa)#n(RM8ehX zYBtoSKclEbPOD<%Hnayb*zeq2euQptSe?Ql!$O6Yo z7!yS!V;*BiD;fLZ1>f3>vUdYnI0v;j;l){>rtvmLz=}9?I&c&;s3VWx37TK zD?a~D7oHk9r#SOxG=xTZ7A*qj@#A7h2CR;kA@$}u{S)C3N}6n8F>#Qf@@JdQ{CCxs zM%J|37UgAxQ%AXFY$d$ekO(=+jyMZ>%|vNVb577@mk<$#bOA77SDnN~^DSsdF0fO1 zmZ$uPQm038aiM&R6?=F0?~xN1H$|6pv1BPoCl5;+InP{VJK(!!$E z&F#$IdB9-Np)_Fkcvu8GnNi})%w-k9bT9U-;*?e$3HO(TN`ov$fwM0|B4*|J-N$J0 zQ|9nwj4bAuA(hg52z~jKdULdf@(~@1^V@c8j#F@JVhPPJti=a)QQ=1MN}(a1HI512 zg_G7#Zqr6aOiVIa9m8&;CS@2_N8=sTbE7iK6UrInsX;AptK8H?O=x$YbzU&nys8v+ zi*X>)3nm;YUL4?AUiK#x2nF`bZhvQlf5DQK90R*ww#X5fD3$mSO z>@r*ic@l-!9@|-Y>r^`2OcBAdr+5ozA4`&Is%DN`J|4B-Xf!v0ZJEAt<{Mn_<*q(0 zu{{*fH{UVoJIr8}7Z(9X>dHg^kEScf)rbCQXQK0|_W!AATcxFQq?h4*FeKYP0T{h= z)E*uRH7f4%&a=4A8*~hoFDE;5+NmV4JpX)I0l?%Jt~EY~lU%J=wSYXozwmkQv(`GH z&*y`(=Cy0NSNq-7`{#esKY!e*0RMw*IQw+{{(I+xIPhgT8c)XoY(V$d{v-0%F*;U} z5aG9~9H_|7L1>fo`um$`%pD4oeTQbBvmcEWY#o2CfgNs^a`#0jTY!@U*wMDfB2qkf9`)2sOcI5aDM7H1-rR397u0RqhRnl(iyrkE{`Ch^ zrf{m{=y+P?AG~>b7_;-DPq2M_2#>wIIUaY&3^h>P`Q>d-M8ToWBUL(>({;B_QX-7=pnD>t}87ML9+3@x%%v^CENn)N$=p zXB~(#ZHbJG<#5vI^zv!_wq0!bW_1`=5>055a zX@J3b)JvICBsr0uO#(#!@W9s88XRB=Y{Fhrk|bli2qdKnY-0kjbx#e+r1fbgKQGdDQ5jh#Ls=-cXvf%!e{3F#Jxxs0p2bn>z zZXir)+6E``#nNZk99X!<$|ZFPiQg_MqT!s@x{`yoLK#~G^MaMWMxFkKVV-;fC36l@ zW%e<>^$i7w(#GcJ#DSE#GX<;{4|REabc<}nLu5RNuYW*d6Ph9B0*{zY8ErEDx? zZ59;x%Fy;UD(a#unBf6^#;5G}TrTDWPE238c1rqD>hj{r^;m4p-k-*-MJnE(mFWFG zi3#gGCE=6j9(+>OPHm} zln|GJL@dwnu~ca5h`^L@^GR>~yGUgEbX67&x0KR#m8t1W!~z+OeSR7uRmT#jVl z6Fe6sNnL?jVNug2K^0J7?LZG#FHFya9m@6}oS)~<^E_nrZjKL|(nOh!;iQ8b&}6nk z9>EH97|ioRh|ufw>RN5iA@6F>4~YBVfgU%T-N z2nhj$rf?P+#U!2O-o1K7B+gDbt5h~NtzCW82O=F(;QW$aBKb<>Yfb@8DY&Fm-8H)p z|25&Dll#pN(>RCqPrE+~_ym~>CdX8e5Xb*4Pfs5`_fAh_(zUk_x3?#CKFx+PxUgD+ zpd1B69POLTua+pH5(61N4iHJrwO6h%AU&;*S(&@Ko;}=L4((g{x$~1?X=xU&BrumG zpUV;e^>7l=8imQa&>A$3$p%WPk5dW?+-Tz)V?)@LL|X42C5(06bOMh@orR0ZDtk_mpFA@GEvk`p2p3%QBA!dQw6HcFC|EPh5zrL~I2KG0X%MfhEZ= zL5)}R^*NsrHj+>mkBdW@z@!KgbAt|BZBKL|6^BRYuzd#0Fe?(*as9G@Fj$Ui>ya~l zLEh97DJFuKVTit;f4B1^i>Lurv{+|QO`xnE-bQ}naWy|bIrOoqHOIbsY)G)C>iaR; zjnCZCG_t={`S|~cVbtC+t0%2O zoYzjn0WF>9tCym8ZOu8CW;xEm?Z?2srzR-WJt=ON1%K&dJ=>AD{?ESKy9Sr5`;LKQW*ofx+FfRf6?z>RHzE3@>|WiqaI7;^^Q3q)6wuVO;}c-e^4s_F_`Ou; zJX1}R_uIK%-6O5P6aU8OD43R(mf^!pnt|WelQICayWNFuJT8rwR<@w2Ynlv|SC0DB zl;h1S7L@fO(4~&$qAqX~^{Kq&;S)<0Lk^pkkKk_AN-BG+t~j<-MxM8=*7E`cRbuPm zM$UW(H0=?fO zJS~a#dOiVh*^>`t{zK8s+q)gObf-G$D4uT#38)EaxLoa1c%e~COkZW#D?p(13L~=- z25^*3ij8_q@icQHG3DPdxutMyEGOqXH!y#S<2XaPV|&cUSdQ(N`t_A`v#r)*cnBC@ z8;jJOOr6O{Qxb$dT9O3EUZg=c+}B<_1xE2T603>vLq;N)&^FHSIt?uUNwS+vzX|_{ zxBlXpld4LNYYsH^-XY=6CpabL-0C~|8{gCjS4rA|Cg!U0%1UOW@|R^UbIV7|0O?au zKuAPXK!9JEpMPm(BMp8t%+!B5W@Yd0_xNM~cHv=xAU%Kd`FZ;MdAe#XNw-}_sJ#UF zi{9%u9F~x5nsUtq4Pw4*EgrSGbdJ}Y$xgFW>EWZj3Ydmel-wxVAR9V?uXQyvnVgFj z+dmM-vefuLPq9Ol=!vae;&Ii&j+e-Oi#c=ot83vNzua+IOQ*T%+})=xGi}@iW7avm zl4kHlK*8eT(v3OhmMM)Xr*&^k>OF#3pnV^JC(rKXF^RK7N}x49^+tBa`$N_-w2^eq zypvnq7LsA7AdM(@w(4Peg$w`b0vI-QHbg4VYz~71d5N!%EaP^_mY)-iG*7#HfgA0s z?#b((kUA_SL|q|T3lkISSei|h|qRxgWdQvUE{@lhcn(I!`yElfeF z9~wNoAFCr6IQxA2G%eA^==EP&8o#sYm|V)U_9@etvq$u>o6F0WH|8aT(Habf$ai?dmjV-n8H69SD+doc#u0Wyi8bR?dzJwobXGS&EJi2ssDg zN{u1*r$ctb(NYy-#>+D%59ms+c1Hhv;uOk($I@NRHrVhsW79Lrgs>A;2y83zyG{yC zxkrH;uuTE*=KS98ci$wFad5s!4*1k^j}lLd0Rh?+H?SWx)WuA@fbdsU4B91yXKJN?&@ZMW8F z^HzYx08uU(PD%<6F6dl4x-|0;jxaAXmm|@c=McD7Ya^l$m+i^rq%5RQEHanHos;Tg z{$Q%YQlM#;wO2jTI)YqLK^mvG@o6{V=47R_(b>~{S4%qM9zga9@bh=MpZs2!99^f# zj|8kUsZn^$Z!RU#%=D8u-eQ!Xh!dufq?S*kdKqFoc23uJHwkum*k4V{4F4ORZL@px z4sQge1Eu6tQe&^Yqtgft62rnX? z^qAdM!EZ9}dy|3Y8zAt;O8!PahiS#Gi$6PyWt=nQJHvk%9H5uC z6H=4rE|_>glCSagW9rv(6Ac>_W1WODQwt>BSQs867adrXu}r7*8yYYL{2K&hWDb%> zPp{p8u4NISS#0iCzPz&J9R{2{egtX$LeLNg1^8zhyd=vf0m|2w3+<-DAi7U#)0hdV z5~-V@xOu7VNVa04>oRq8J+77L0rox(z9j!Egqkg=93u#RTFNVo%p8j`UMIN9$WqO| z4I^$K(l>%k;F~-?Kr>anN&AF76U3}u#ftDycI0SgPY5f7wQ^s!wrt{+deqfy?c*S< zM2Bm~qe*Mm&<-d-OPOyKu2W#JG9)glRg%D&#ZS^hqImZ`dO zb~0umfo(a6(gU8e%;7_Ynn8TPOdNq7l~Edz$R)p9&JTBPQQJv&k<06a^7&vRa1x<78~;ZmE76k-U5Q=`_^- z-1nKnd+4e=_pTFq*SeUUDYBNTTvF1$dvHGDN%5z8WmV$hq4j?$QB%18Dta|9C`1Sq zr|JBSFXtVJ4E(C*8z`X<$8qnyR%${Ybq-3Dk=Y)I9+JDgZyGf(lDz+<9lrNJd-@jR zQ)(Vb0(4*G$h=2zX2k(l2s8+?3^Rj^P^J-D>byC>5GN!qcup!$&0%Rzh^6%)U|H&L z2anH&C-aj?73YO%zXIbNZ0=J@x?%S|%VyDs57BD7@_j5Rq&77dtdZ3 zp=eCPS1&2A-B!7af}gsZr{M2ToBkn!^zCjaOI)dSJW)b=(nKt5g1Z%MBCFOkb$6ME zXem?{fwj<8maf+wk(n|>RPlzM_SdyKRy%L^%j`Qvynku=OmMrjohwEE>YT~<6Q zgApW)2<}@r0MAlM{K03{;@o1LkFKqDE%lOx8AfZoN++MC2vuxR#KsL8$1Mva7PkO- zae%1(e>)6&3VL;?-FSDcIA^~(5FixTBeraHi|p7qi4E&-oZmYB#Bbp2wckN#!HYgF z)u?Tw6Omy#Dao0-=hl`5Av|a}I$GX3U+-Oio?NfyAbc`#Gzac-yfu#Yc8>b(UD@W# z*N4B&0{&WgUi@A-zpTnG&}~n8k|+-v$Y6+!ECnN#5@c@T;(|=22|k>qDW;^0dxsCu za|qg`MMSlU6c`u@Y0_}=Dmm#hYS@MQt2XCn{F3+x`sh?uOu)vcm1WEwibx7mE9K`# z`iT|PK1T|24&TIpGRcyDX2y~8!~9z|i}<;Ny$%seQu;H&h!G`CzE#4ezS0^2U377v zf&0p60sD0I*8I>p91fA(L?@VwC{MJ0wKHsXsHx891KvfN6E&p;2}5FVpZbg#r5TE5 zD(?nt)!(-4 zkLq&FGmfW$JaN>!0z@zwDou@z#e2<(E;<9L;O8tiLq%4=S660?v(=HV6XPM^q>`!!)9JOFtncWCZld_kxp{_&1Sl?-DsH{vK$O`edVhj4%9eF{esO1@VO7Bpkz#_Y+Kv<|OFR5* zfQZFdN>cJ&LOrwVzSEEoT&2`9pu0PrXXgKhVP zdzf@NtP_jF#ktMRv)^80+DQ1$bYv-b}?Q zmoE#mrhQDsgi>QVM1qb?S|}y)r8uS42_vbE%W(=qi4^9?!a3QzhIAGT$!qK#tMoSv zy1Uj4b$6z; zOh#2%3bmDZ6zs^r*b&&Ai0SaXNqiVv$GG15$^MhW^vS-Lbh-NL^6fu|W=#S7t&Kh| zu9hB7+#XHl}*ALq<4tiA+Mf#ti)&h5)AYPIAm z2Vi_`MF%)&IYFQk+KkW9+|x!;<8;vO3~9*0k{9#4wDLga_(cBO>i0x%hW`_7znz4} zn3$Bt`TUJEVXCcrUoQ`juF5eY(`F#6?gNnQ4m~0rhRtCDglQT;L&w3@o(U+`yi|VE zKzo}f9(NM;8~P9%Zvjyi+AOfU|83^&A^2VhI7zTr%-*|^1cqlCKiCR7CaJvIl4l!= zS5S+h$Es94W(f_aBA`};pJqG8l4)=t)lqB8Xp?dIQ+}VHQDf<3NCn$Sio^RP-=Hd4 z@T~i)$`HA-0;b;Cop0FGeL;gWW`n1!rs~%5HDA~*HiOdim=ujhiw9fCzkczXLBEm{=qb#POb=a-a)sxNlA4dfREH)>y>Lq4 zHYU5_B3x?EuNoL)zi>gKb3rBUR4$RpWhT{G6&-O>#!m)ag3qUhf9?&1giF(w02Cl& zZ)K-p*-@>QVGEZ2(PGuQvfKNrB74#c$eMD@YTS>HK;#;jlC`ewlsNv~r*9~L#@j}3 zgTqNI{W~j|rvt{Cdzuhm*NH{U`Rem}`)ccx2yfW=>fXA~n)_q>xr^7hkYOj(lj44| z^V~91$UPU>eiOSb#?&0H6Fver>T2Zf6AR@MA4f_&lokT<8f~^syX62wGZx zmTmFqy<Uk2?_}tLhw?^N(p{B^tZ_75Da+yQBs19r4tQ%I9ggZ_d_gl#J*B5Ao1matJH>8k=>-cu1elw<+q!mi@#>Kuti^tkbo}nZ%XV;8%S^7r$0oQ=C>jM6Vlr0@ zy7+te*S0q|w|m-JmdvDk3Q2WqVYFqg=$_~iG$e(V*Z}| zqlP5!QEH#9Uf z`-=YUs@+?ul46U8g1u9p3!})c3?Vk-G#p(u&1>|rT+k-Gnf3}Wby5w zS{%xalE~?Bx%6zygO|Eenu)J1Cb^DwXBg`JYlKLyH8s6=QhdMPbylD3R@3{cnyrCP z@N`tovLQJKI;!EgY38C=tXHQYq1eMaa6N7YiS&s{pgYy!oI=$7>TuzFd3|g7dFyod zTgC)=0@s*qhbotnCEy!Mx_({sV)KOxo;dhQm6K2rg!_rq=)Jon7FAZs3*ag}!ER!) z?sK5G-|0Gup4a?Mgq`wR0j=$b(19L_M8;_Wwz!>m{HCT%VL~|WfuxhKvGXL2VggKx zq!fkKHD=mGP$LfomD0>f5+M?2mp&*2z0!)g^I}hxWCCn2-C|IweSD`Ftaxl`?ZIUM zZZwU|ZT8VBw!##^SEc5Z+V6>ALzC~K|K-4U0yvg>$MzqN7Z&!Z7JVvqe7~pV#|vXo zrfTqHPNa>Smj;#LSnvDhn0FcgoI?|RadYD0hUMK|v%i~8mXwHp@5J2>o;{wqEtxG-E`TMo)jMbGJYCHz(vj} zJ>H3TZ`3hkNFE1l3aT9)g&&s28e@8YFj^8nVsNi)`vPHULdyo1rqbdln=WQc*Xm>{ zF>Gjz4Z%dR9CV-RD}|D5M+;;>3hw!9eXLf9BvwAL0aF%m+ zo_hvd&dE{^X0=mIGNSm6)AkLw1xwz9#BmfeQ+@w{%5M_y#N%orJz_oZF%g=srq3uX zsaYb4W7X7Ffp})6i9lp=SqPe^dKY}{Ksy_y#mwXFe5%KdX;x&zj$XVAbREZNRRi3X zr=ghniJR$Tn-W0Gx%Tf(oc%?mAgVPhC+?3@%}_T%QRG%epef+`+SglDU(s^U#egMs z&%~MohapwO`niSsDS-qUS%)(Z)M#)2@fFAf5?nT-x|93k_u>+=f8uQr@$|dsqZO1E z!!m~9b`e``^c?wNzx(DC6Q!{};28&>bN{9>*-+8=IGahY*5TZrw8Qnv#H*GI1|vzI z;ugT+;3~QNCC*Qr^)QG`j40vHVZztX;6R|lCOSh?B7`!hHErkHy2_fS{IpNlN4%}( z=;0q4+Q4 zd~xv*)*T=yFzBiBpS*YF{qvi3eAoZG>v`~{tz-qG&DON*g!QhQ#%=NJYx}wT!R^F` zc4ol(E$8&?nfo4Wye;?aVzqcWn{>ndQHZbI6%hHqfXJH{JZ|h&>#n!z6tp`8Eb5=P z?PX`KxsNlY_}|}GD6iSy{qNQLz6SWp`Qx<$Aa%y3)>_NpcP4)_#3#CgqL}_jS+ZWeaD}Y@p<2==2AjXz?xzTo87PXjV zDKu|D?8t>PayPnk*sy~Y4bLyjSgG35cW zh*3znd{5-h*(1QtOp*X&0PArc*lKlxPO~ypNaT_8-F`ld8N*F~B7P#(=7kZ-szyH7 zx^dak@~@<0lMh7utl&EELI@gLr#fMyQpAYd^1hHZGK&i06svN@UfEt-m=x4h^QC8U zWr(cRhqT^W2C$@f;};zFG>6lv+SPt9xkK9+jy12qlc@{}6n+V^)30gw)YQjwj#_ui zQ90u%S0C;!9U+wvxFNFb*yu<6rH{e$0fjze-K;S(+@AfAl#7v_d7kD})OG|A{ zb)Ah*BQXvo=@ftg?dpTREVY^873 zGViDVXG!L`}zPH4z*QY`D3=BauPef!!Ly^j!SW`LnlGB=k^1a<88?S?fkVpSlqz_X6qwO-i}UYG;@KPe&1pe;a}y{M zL_a2snuZX$zWbIEzDSFFsA1}5HwHDhWPAl{zcRr!Iat2$!3$xmf5)7?dec@7b<>i5 zn!hx%cdzZz#CXu@J^|QP40<{3;Ja)v8=B#+PR@Z8>%Wt?k4F!?PDn`je7#juW%<#y z+r{SQXyzB?_0@pw{iE~e<>%?^!;$?=ovZ{tTpr8abj}0pfV7WAmLsKiA^W5tHjp%wCVh{l5kN-vyU#ExwUJs!=@em3& z_T<)EUeeoG|Iy;y*<8QfMn1|p_Q$s=os9r!&zU`PYtD=FvCplYTsET(OR-3{oM8Y?$iM|b30pypBF&SmG!i#{tQkgYW<@J056oRWqq%7;cZ9;CPQvcVknRta2b?k*b> z4F;aIycAV6)%q)BRn@y*``NCdQI-euTbH~0=fG#QDtk8jY4$1j{s^cailryK?0H!? z)G$XahWnyKwjcCtn?=je7SkqETVjkUJ6HLYbssZY-OAN!XhJ^EfTFN<&qVZtf;om$ znZ-%9I##sN=g@5Q;=sztI!-7pEQ$KURs>2(-9MW04I({J`wsFRg z?JZ4jPR!|!^Dc3{pK!&GWPKjKV+{Ma5Eb$m<#wdWX zu4hB1stLawnQ&Yec@F*7NrUhG`Y>&*Nz+%(n4;b+5BEZwCLY8Dp5VYNCEBp^{x!3C2l zHQMCsi*n`)*GNs#t&$C9U0oKaq-6J%P&XG$(cuK;u4>Mk&pg*=aHk*z7aua>CT8eX>o2e>rZW)i}vBM^hHoL#l!O(fA`$Sm6P>0 z?*WCjwj&?eJ8gA+k)4lP%|1^0A|_Q8D zs_vi1w!rta1;7HQI2s3du@!Y!wd?9Yl}1P-CDIK3zSMwEpK%!>Ay#=9xHfbNEDAYTO=JvNByDxX-F zHlxm4GnW@Sl@Z|`8(Xjg?Dz1n$bdF_yij%i+Sgx43j6k#vI>#=#_*OEwU=dQQWz<9 z!s1O4y2-UMtL^{BXkbf)B?cMRTwX8qU{!$n^M~B?qiZ=3-`kx2WiN-vT`sY|xLnNiO_3B9z^NcXewGWlq+cBK6N4cclZX z`(rtx$M=uPIjE#wZ zXDnV>!G&Pyu!Z2!Ce!&0Ps;7nT#1hBrOM^h0oTxjj^IuM>J-Md7jxYAZ6;6_BB}XO zjvl=@TN%w1egaUT$0vY9xE^tL`f5&3{(Fz(mkrjZaCXk-_y3X@+Dj9YGD!<*Ar(BNV6A{?`+EZ>%_&+A` z3i$A+W1iE-$*;v?ml=wr`*JTA9<%PE)xxT8j?z zVP|aGjCPxnNrTEC7t<8ZYyvMXd@>bQ(~SD`{GqGz3DM2{L9x$uHKA$)Yk9ygJz#3r z;WwMaaVTU?eR2wDCmY;!lEFC3y5N!nJvF*OYp)e$Wf&;LHnfSw#sV*#pt zEA4cEF_JxuWm|AI=83&aoU*+|Z4j9S!j$9U^GVP3m29*g}qufY(m@@0&wvTB?GAJhjP*%w~CTSmZGFGEL=ceCCT2&$sv0lg-@~ zTXU*!=5}*3>#3p!W&5(`FzHQ=x&5^9`ql_l5LGFkgV}37U$)V`b}?l5ohaR6_t!bM zEV`=xk1F>n;q;$8^r{?@Zar5|c`O1?r^q+BRYr2E?+}B2Xo&3cUGhPtNYH1B;+gC} z_xpotx99U|;;e1w+=KdpqvQ;Hf+YRwxMO;p3V6M;W#mB8+7tnEg$kuIAj`(7=w-mx zT?ietXpGbUPR#AGc1r`SdRfgTC=9DuC16be#m=*?qbNxZwYvFP~MO+i$ z_S*yge;Kk>N&UBf#$3^C;OA{r)ueg3q09>O@&;s&OPirnC{dAZb(%CKl%RBAskCk36Fz9 zPo_cuVf;DCgL4FZ6x?z)r#2GWTj*F6DV-^RPg%tJ!$iwQmpOfatekeBsgX@ul-XAG zfz_0_*I&KwrFvr6F;#_gTl_v(3@1f91w(zKwEH(&r3gj4j1qEIkvL1323gSC&oZcU zmHqy;^i9OS$s8bQ({Q8)0OykUP$pWp@+&FNtCA2Mbzh*;tqp84Z+fL}tBs2FlkXyF zR+TGWL!ch53@uTbm^YiCqCxIG_Fgz9CWD*FvuIN+;QLR6j#fN*aNBg~42 z^%h>TGU*4Xx`0KaXoQDoJ*$a!8`#@uVxrlH0rE0?m3{xOB19)&T}DZfkpXQj4GXrlN&=zkFnbGzrysM0X^E9(>x4<5 zMS3wK-*>2>{W?+kjN3oOGR|MIb!-SyxGw5bElzHRvdG=FkBJo8`exV~Wr%&WQ99DX zvu)4gwgaM9Q%813c7fZ5kDDkE>L`&r4nSmqJX^V@(SQsx`AS`nvy%1ZvAeiuNzZSS zREaE2k6$Mj-xm5*gzSVMf#b{2hMzHJI8gY(p2AHMW>g!Vy1@4CP6>@#^PrQ=r zmrs0YH3S|o%WIY+qDL=d+tg#cpip5~up}i^>>IPAtReW;WC8{b<6#_M#br>IJG1rErz&wPZy#0m>nSfkIV%F%MsjKb9X+1bL)O+XIK*u+Go zy*+dRz>@3P#%$91xk{J|a6me&^HBP<3%w;OOc!u@sHOcrUcq8_JYo8D~6&`e(i^S+CE04afSeXvmPvVl z2064;ddN>sbyoIJ{NEJ~Hs{`Oe7Ci*pxxAL5_ssvq^STY!oNGHY53l~Xvw zzV~0C!g-oBtar2nwd-WPeHhb4JK5+6?41F`zWg>iY8x&~Rc1;3Fp(dJGt^$G2AGnY z$LM#JBxeI*xPqk6tSG{_=O^K8?E&Cak#;ME5gxku|6&a5~ zT(3!54X>%Py~aru_}nfM7|6NnG&6-Mpvm^;Yfcd=W6iOK#x6`7yG^QfPHJR&lC2ay zb3xcPo8mnVvt2Uu#Rwl!z~pkwCm+}Lv-Y!m@MPYkX@-C@!BdrC-@;yS{3kkm!%;D} zge>R-u44>qr)ij6 zQ*-s6Lkt^xw4_9zlOp$3F9*V3%%wkH{%V+J7^5baolf41e?YY=jHW6?)R_Fl`PCLa z?D=QP@|RB_R&tP+C6P++(72{J)vzp->@j+5V0CCxvs^#*mQG}ZT%|KgLZ&+n4<~Bh zRA|qv4M*!FQ0ktkg(gSiGGFI3ygDK>&LNa98LsF{9;f1HWAn{89kdqK}S2xbg~e}o%BKajAhWzX{VfT?NLGG+Qx zZh`Wv33=^Og6Rrx?^?<^c=wkS#Uj<=k*Zg*ISlX;57kFi&z$9nz1xml$I<{>NW@IZvl4)$C!b%ou95|js>E<^nteAY?VwJbqKPTif4QJ|L~3I%ix zp3e(&$3l*sfw@JOKD5s7<74#CojQoq)YT{aFo>#I@BQ}8f`1R-O9l1pT*R8S?sztT z5b8hH81lw`ZBswYH2D%(q5lhC8R7M!nZ-WAJ~7_e+Ib(}+Q}uML8P;ncR_BDxXHt3 z?Q<^qY?@#0M|wx+Jz-8t@d5-yQGxln`#fNYl;^3{C^|<6e|lNiy6cj`OzxUnT)$`-^%f>Z|tE*Kr3VoJy zr@sh~7{O7p?18l|b2d~f>MOEp|#Mye9c zzN&fpB?~L(CRHP}(kW}mVFUE9ZE<_8v}_C_U?yBOjz;>nnDkS_;aER?PqQbdvpYWr zJWT=dv$BaW%alVy7VGApVBM1n(#J^(d|DcSmfL<|j_xtjDnrTsZoH?W!uXm}7NT0= ziv7ZR6zxIKbhqjI)*R0-lYwf8UixtW&jXzx!t^LCHQ9IKNsi>eIv&zEB&{CL!Sb${G~SnSM?_L%sH#ZyvfYw z1vg2KOsFU(2ZL+v?%-?g=AfA9X_aOgf<3kiujFD>3t^b|m(drfT-cOh2o-AzMhAu@ zd0Vwf4hqwc`wSY_?8A8CV%idKW#-NmG{V^HYqB*Pzsv1bhIDr?^Oux!nI>{CH}-SV zpuK}Bk*aabsR(2Nyg*_|%zUAV*3T3`9pwS%y>#^1Bh z9I&Sm!w@%I;-?V~px5DVpUnI{KBW3@Ir+a2U4BxttLhKQ&TmWtFPCqJxy!6vE=GV_CsFjr zRP{>RuG@u#sJBB~%&Ir^qks}Z%PO*!&_IMW9QO|S!JAGXR^z8dnuW*zBenQqOJs-MP^{J}KuB+w4Z0=jswzAo!zfmPh`rLsB zST&Jl;9^B3j;B^Oz{9!TdHy4O6K)f{XA=Y2S6lg_C-QkgIzGwth_V>mKGTsG{jAt9 zuZKA%KjrAom`?{nky@mLQ72T&Z2TY1#KpKL=$}3HWf~b@374BY6{un+$9^}w@zmmD zE?%ot19b*lVOaDk_xrdQp0G+(!Qd%NX7s%zR?0T;0_z|SfoeyCq}tbu@l##4m!lgI zng)5jGBKv04V|8!{9hKs$9V1-Qu;(P?TrdHeKSbp%{Js)XLgC@TX%?k3w)0^7@iKt zoM95XN=}{uW0&ZcUlAn;7%XG-887KKSS^e|KSZ`XGTzZiDYHW;%g9PT@6)R^*^WP= z7fb@^5tE`J;v;;fWP~;4259HKl>Gw9gkd<-114C*88%vWvZ)SQLTGePWNWyk<88yoLd3_ZSTeRMTrD-i7ZN=|BTJ$6O-q-&EL&ukM(oN%2fVH0q7*r$Cm` zui_}6z%W*LdzAtMl5Cqj*;LCK3#4uydjn%di|@M^qVNyPySF7SzRcP7+d2=+1|J2q zjdYm~@_L^?Hy0Ka3nC9J)a7=V0A0)HXy@#`sxFIn+(1Xx_4{&xgw+extI5bVjfJ@6 zE|VLJ6ng2Gi}?wc?bMtTf>%Fj#)p8C-P;epvL=cr6+!4S(W>zUD#OF9>r#?Pwz&|i z#$@Wf7E_vEj&HMPKcmrm3K;0Q1DCD#B>n_T1=*WeLy4{5bzs(XVq;&*+G+nkZ953N z$VSTV)F^X0GgWK{w(TYpWM{h`k`m?3Y0$bQ4ElUyaR`g9mEkg<_a@CQkoQGzY!Sf13v?{nt42> z#QQ0|EhVDd#+)E#TGHy#jtUno=(P|Eo4ZaFHa0U-Z>H^~1sQAyJ-SCVvzE=Az!~R> zh;5>+$izbVCh_Vx;4H-*R{=MkUobFv_E5e=WSQdEU1%l5%B$fa9IY4=syaJ{L3GyY zr0Np8jBl7deVJ2cMP}km@rzo$Ltjc8WA4h1#!}9R5+Ca~xN>pw1XA?<9=|EZ*>E7OUQq{Rz-U1CD#k4`=a+Tp8#sT9XCK&JUKfyWcaj#Q$9xB zg;L$#R<0_W$De+3!!Y9M8y-Bl5KbQbvXCkUs2sC~a*}LJ*!o#mQdY<#B(8OrPr(>G zTb@D+dYh}KCF=-tQUMH$CB{5DR=TkWZMHwYR*Z@-?FiGY%aml9NtIC!v&end;${+A zMk2(M8A)&|_J+lc5LYt zUv-^}drEjpTy=TLiPg3{aOJoXb5^qhpSXliqgWeD$PF14ZS{XRR11|ezfv=tby%`? z4aWHGjXGk7r}0n8f|2fXTO}12_1YlNn`}liXnrjp$!HeX4S*S($G5x!N)(6u{4VeD z{`&nA3$2xysM+0~4{q-0kgvH4&rlT;{m~3WUyS~@QKcZN!%wII;4k2J3`OmYa$Zh2 zn{Xk|G?vys9j_%9-$^~%E+NhEJq)fS!5+tq(%v-N?Z0ZK@;g_mF+?p&?Zy9w(OfQL zbnQ#6*(i{0!oAX(3RuX~Jpq*OUk&AN%)n2?crONhm4zs4MUJMR!Tds&SE;m=I zN2VJy?{7&-1bG<3LVH9lJR3}rn*Rxt(8_}Oxtu_yjCOAZ`2h@%<&~qFmEEfJ2UvXUt{pxm_W zPo5ypmE~mgD3Y^3SzCu#lNk7)kWaX8nP&XcP00Qo^A_!X(^fL-TX1zJ-(!w@o4;!D zxn0ua1-`+M5sSAk^Kx^h8-zO(s+I1P;ahlDd(thQ%cVIv!BPppA^PF)2l&Gh+*Dxy z`E9;s58sZnlj*PD%ZrPP>`ey;J3dX`E`BaP9`4&aKPFBA<;7H^KFM2;mnACnjz)v9 zCUQVvKz%S@#Y`YD(wQAl=OD<64A-O($w)J|ypGsP?V5L>VvCBRxG1)xWXxVdP|U`K zQz$QOMUcNVR7qpttqDvb({SJeq3%3ek#fzy550UfY#d7eI;`ZIPL2JCyx;1S&qBLC z%9edW2sENwd+TY8=Y}iCjS)L2Qf^GWbPQ+ny_<2(GO}3u@B}ljoYGRw0sMzeCKRjp z^=~!$3_nS#S%*fj$rZkdxGChF`-9Z=^gDBJ(U*JJzn>(8pMKP9d2TL~kq(G@PFzxr zV^e@JTEwcHVR-U`v?o$Ma{YEdXJp-KDj*2aceVfbFBZ|%ewj}Uy&ub};dT5Ts)wbW zGxk~M;V)l^SeL3U0XfJ**?!A(y2pPgp-}EIb)oduv7q>JxU!E$FxD=(pnh59K7FGn zuCqF9RdMZQS(YJX zd#(A8aI}73PP@}jZiTSrJ)f??_lJm!c(SfPi#RmVLQQqC0Izu@8a&ij~J^8mgc184K@N7ILhB$=gkL!0t7g>g=<%lU)V}~jOEpz-t*7>U{m!uBy1(D3TRlc^T@!F*d zO6l22r)&A%8a$(rWLTsqu7>`rIQmErla0+HvT{D<10n~mJb{Xd92v-l@2aA{zIEzb zJs}j}l8WBCFE`-JtyJXtJjSXmph!I<@+p6{pZt@{C<^;G-cQ2)i_T`Wam}x<#khn_ z8E$K*zGXT)6{SM2UOF9=7?ppCYt-`u!d1T?*VdjJ46WC_dpF;!=7^s=Pyin*3z+)I$UfuTsHsg+1%4`m3;isv%*9_2)(g-FwMkX%n+F6x&oelV@ig(wv z5p{#vit(@IMW5dIRfKUgJvejD!>c3M#pUeB(Yof5eGo~NcnF? z7{qu>nlz39WNQ{%+bVigS07jZKB2Ys2Q3`(^Y_mC+D31L9-u1~6#FeDzAPm!CMx+$ zN>WNVo3@Zsv(iL9CUOoxDKWFZ}VI{ku#;rYizws|5~N)2@g-H?MFG0{l1 zK))`&lwm3_2MQ~r3LXdEU*R_dGUHzt#1XaS7i~^I@n2YkR?(W177&9N6gr+mQK!({ zmgR=UF1w{DpCi`m05@-EP+(W1BtU$+l_=bn6MqBNnAE6&#X_EA^veLz6CU|z5QJMJ z5SZJkxzu$t!E*WGkc#GDa=ZCo8X6OkNHW8u+wqh;NG`*Q9`E`kLdiXnM~#rN+K9P! z6@sIH2CmRyKu<96-s4xOPGRN(HPaZJ7JcDYw|Pr$#XuTkSYMu=K!6i6z)a}DWET%% zK7z!ij`<(+S|&JHX~)bIImv1Z6j4h%5|?^wgi|yMUUXp6x=g2h{fKN#l{>b;sJu*RJlRzg!%e-);B6-lSi%ZpNEtA;CJ=~Io#J^PuKPxT|0 zMH4@bl{b^l0b4@O`)S!QTrCI=$^-_DaSs{#`=8+;V*1{Bly8z@t=0J{_Qc=Lu!L? zN1<_>W^q&Zj=Mkdw(vbLTQ&V&w{*SkY?^|1qQ>|6LrvS@LOYZNo@Z zm$?5XhCS`6<;_r#+SH**{zZWX@=;}#i;0cD)NHraroj(n}XsMiDBuL8mp}Z>C6hYUg_;Mb-u!Z|d!ESkF)1j~{MHJoOBNv_5TFI z|Fdz0&GiE&-Q_nP?}Q#3S|hy0X|~*3+^yIPPNVx|r`;y82Cf_AN5t ztKxNLK-MVDMrYNwp5~+1J#59DicwaJfzTPb8b7a>twVQgVxWw4Kh5m zRGZs5(j{7;k96O@&!jC>%RC-!9SfN9J7zTJ@tg8%FmJ081Hu;unYpHc*(L0yFTn+L62Jv`16yt~%lJNy6g5QTU2hrQz=?^+{i@ae@d z`+j`Y49=b0784WedHB`yaJ`;rzI0xUR4@dH}a-D z0oL_vKn{yi#!LO9oS7GVn3zLtzld=*GSm zy}jtU#_vVq=$X?P7I0$ZacRbFuIs2TVHGyvzpD87LPL^TEL^ObvLlsXWj5O5dw1{F ze{9Mq<0(_w0B4!LvJr0_VKgrZT=jTJg5C=Z8X~AFbCBib1T^}JCi~fi`YB$;p57WH zlAW&Z$&vE!L(!X^EP1MCa_yHm020g*O}A{!$eW9}`dP%&5jf(#HPC zF&w~0&j9j7?7vzEsAn7A-~tMq?M~Cz9!+MG-eUE?*lyv=KC=Mf(;$*-lHhrN_6#hp z7}r)A(v;0d*mARRet+WQ<`EF!;^E=q;^ETP+N!95&QaR?O(j@-5or0kx;+6Dn}%5) zfCHnU0u-i+&WAKh9iB~{QX<0BTB{0sR(AT&DwJMX#ip@%NpCzWdAhqPmw5n}5)Xcd;*ty^RD8s*a)jtCq!jlRJ_Yla(Hy zr&`UH#+on?UzWQ{1TL~eC>YD@grXXvWfA>0BetmYlBI*H#pn`0DWdauH}^4P#0I?a zB(I3t$k7=uH4=f|z)2JnjY6fOU@cyC!)hsxTCa>{+q;8iXFUH5g(YN(1Q%Z!_LN~j z#}HeIUN(C+aq1ec`!&NXgwLsyj`kB9fgB&yBGw8wWaO(KB$*&4i49^LJWEcTo@hY? zGyP$w*RPlY+bZ$TDSuZ|_+<~{e9!4ll+8@GAX+C9YX@YN?7CPk64((syyu}4Le z+qN(gmm#i-jKyMLOpLhaW;ctW3y(d4spZh`p1;Y#gRCO@A=8~~M2NZLK}K~Hgb-!g7)E`zz~J8v~6%I7@ELQoWkjs*>Dap zIC>ZNu5W)V#_!LYotKQ0b<@!{Y?Pwd7f{_&bwDVZeI|!L$^Ik*Vdae>s-_4$yK!e0 zHhwH0y;*6$N?^HKe!K>xwW;|_Bg?&i&$}!}qOl2`nWysDqmq1&l0=Ydj&_*FOZWwA9x%smW8f7`NGhz0uTM@~oRQT-g+Eso z@+Y^8VR%;5e$KT)9(U>wze>vTf^tw>%DC z#1GL>yszajs)h0776O8;<=+ebYa>fTg;f>JJmxz3F*!otvLur2y~veyzEdb>3{#DS z8u9QRzntt?*LL<4Uo@dLUoi_lN9-)x1zX1hHmxY~Z%yJN!lDwA+3FLOQ7kk40J5BO z(%z(6u7!M@02=jM9IwI<4GRb7h5HY-jxZT-;T>EIj@k`D^1*3eV+2h;5+FaiVL9Q64-LtY!YPy|=Xv^a!YhE}?6>^q% z9QdalgTpti%zy!tQByKm=C)C?ts@MAAb+w@g2If5$E}vGWi- ze(V}ixYeSzvOX=Ii1SNu8S`7FejsB@hviGiniuXe^z=n+8NGgSBcyuOI1Lw#vs094 z8eBCg#ASYT$j&s%5aW9X|RhlU#E?sF3VsAE_ zrXDeZlEGkQx1FrCEypvY><9YIrf}v!Rl*s@sgnCz@Xd}BMI{awDu(C4#Bj2YmGy0gHgS_%)db3rRfoQ|F& z=GRx@FEk}Wzt1D@((xazFS+z4D+;#NrmQSi9v+&5Z@Gb1igWZ9wU@8z*DCU1U99jD zqoeQ+qjO%cFeKsQ!oyy(_lyf2?JfO+eb<*e-@-Zn5$Mri{r!$6*z7FovR?9ze-UY( z_@Q=X{HechW#ao6D%FFu z?>Vq^fll68V>kzIFZCueY?~!w1WvfqGz_=kUD4B~1%Ai41zv|2(wn$57-(ptXw3tV zJ-P53d(x}xzCVN9=RMn{e-x_G8+V=?ye2XNP_VlL;OXpn{!EDfD-4Jr4a{0zNc+-HQ;6^oPTLZZRHM^1TxkIN3 z-fMl#H23*+I>$*Pw>0*!n;6_%c-ux6baK%duw7|~ym>#ga+`X5y=>lnqm~|^39rm9 z`Ota?dkx>4YY4iiF}r{b(fHS%a+oB;9{+M9|GrqcMhJDE#?yB+EvCIKKE5e97Lf}6$m~}+F$pLn|1)sR*48ljM8v~D?+{J-s>A)u z+c+7lBQ<>;A_F@T29_}Yf5%7w;bZ-yt#0S2A+J46hz5(SE64Vo@=mtsa9{EMOev z^VQJEe?Z3I&%NarkF_!WoIcyAII`sM_eDb?Y>pqe6JAsdRe^q!Bq*YBlv2!D5OPrD ztzF=aYO4;kQFmez@ue!nTNGrOWZY?JpWo&O1@oBg*2Q&jlpeYKq{cf7TJi3j{)fOG z4s2zO472(^+DSbk?mKCw^i#HoyamRJR-?i(+Gbclo1b??OY={;eE3h@O#AQ49gq$C z+Te%5>mT#;t*wGz0IZ0!XKa9=2;g?gJD{doS_DjdfIG>*DOeg3Ys9RfCocdVg@N&0 zD3hOrfk=0 z`K@UkCm>oJ56LTyp{#5xp3MzqfcM5JM?6zY=7C`0!U2of*D%~08XFtO;@ap-NoUX*!6#A2C9cGMM-EP7ok7#_3_v(cu;&|~Ent)4KvGs`u8;kL< zH(Y%{?$0mvt1){30<0jZ^OpdJIc1}>&XVM_7w`Kd`Z(FQs895=W_9=pG}LD}FD>)c zMNri&o^nzaTSr+yl5z;Zk7I4sJs?>-C2a#-5B3%cjmSTKi$v$iXwtK!?&s5mjVEE= zma(GTAVo|eC3T4D7Z9j1Cubpd{V&FmbXYggldf(kD}P3R^WJ^viF#+nN&rUOx$=f& zws`Hx*uh?tHJW`fVZL!Im1PODYH@Z& zcKr9R7D6oiPW{(*#8XNZ7G##kBmQm$e6-=AC!zdy_2hW5r!JqmW3SWRar;fRkikEZ zH`s)Qhye1uSW11=D!~zPF_vs=(6*&cR14fL7Di4sy4PhHTktb@D0N84S>5YO*KX0NA0 z_4OGEm9)C-*mOtl25^dnQNFIhzv}rM!!^Ixer47eX2aIT^QG1na73GyLl|3=SIzi= zEkVi#E+#0=o#9(4$*5tjBDt)QXq&JS{jx|5U+!h!vA%A*{XM9Rs-El`&Dg$No~*TF z0xJ_7<&`cUv*`4-BEaW=*liK8Hu!89^^q&aG2N(q%WrAIAuTa7|Mc79#s0fQC*ZB@ zjUMPmSfj;RvknjIUxMdqN;bAOH)n;ir35ty(ImFko3C`c1_GUE11{6#m|o^6(0#5i zEu8_)88C`Gaqtpnv)7HKC-S08i3h`~uvDO6N3?jlaLdGGkqmTWJ3@#ZgCL0Mxm~#< z1>?4_x9v|;ip|nhAOCj`z#a_}`pxDqzr zw@+keKSfw!s-dA1*)?*|K0DpBMfnC-&--au6D5Q@NS4SwMQ35Bv#0uss@yayAFUMg zh(x&QD#i9;%7w>lp~KaBKUvX0NXWq8HPmc=TLfov8;FCP0sI;Rz`SDTqElW`jvuiZ z04dbCD(LXsKV|U-F#SJ&nR9K84l)>!P}nYS8)eupk6Fc0hQ57i@|-l=Auz^=owPLh%AJ4};xrJK zVJ#3CVT%fk^W_7+Nx!W4xLcjMuBP`Yr^f7#--Am&1=+kW1bkGfIC#Nkr67W8pmVO|a+Yu8wPgXN6LF_a<%O!??4s zNTH-5wTPnmDN9uFopanB{K~Mf-GuUiX63%_#pI97y5lpoDcicbZ`(l%$M4L9{C1(o z%X$F0yRKWi}-#~bFb@Y5*OLJGT(l?=w3t{w0_TrJb6rKfmgBwuOoi6 zbhb?%*R}TW-5>UN-CyNL)yHPxkEh{Jzg9^!a7;hjh2+>dyoqN2Bp4G)WjckP9pw|#;8_xC1+K7Y-fdwxFS zl}Xd+SrWt5;-7LK3VK0J z5w89+OCR=)G(JtFN?w=G!0O2x&y-hg-F>7=#u#n{e2vy188i};0V+=B3MF#000zP} zQNP}pXi%}JRUDp3YKksqg^J89>e#p40n2qwVwI;RazEpetWd1q8h8X$?mUlrm~!|G z(3eaP8vr*TfH^kA1;T?AeG$G0d1m>ePU;oF$?v)~BI2edNBmSjJ)+3gXuNXM!$8Bn z5<{`lA0x{DF6s`WlI5SzZR4DO^z8I@aSws;u?9%$EkJG%(D!u$>^Q(DKvnRsGAv4T zv;$^zz6GhWs@j|wcN;mWziXsG4oJNP>;6SZ?LbUNJv;_?44blzD z4SE^A5|KoDPKzXiCqcXn%Z)&oQ9i+NCINWB&;SS;jL^!^Cn1OqYonw00-~_AMVMh2 zB;k+bC@q+b`iw>@@?Wz*3BP=|N_y89_v<8z-9alhhwAGNs_aYR5W489q)>m$SeOlS z^pdhEgK<0qK{X>GUrYv}65W=~WyCy505u;7A|_j#^a-oko7t%kA!|0=ZnI57$AG5r zad=o~$cBJ=XSgLsF#A(H*VyVvUhXt!^z@vdso49}q!RuoA{nA85#g3Bnj-Q*9Z-Tf zC}E1L+&pE|ujSH~#viyw|CTb}5n?6mn>5qlQQ~bI`>46wrDsCLzE9I*9lDD%AD zslqmTls#_};Q1WG5A*$xeXM}3bl&g9?1O{+BWgYS?PsbQc_3e=N(8-2T>DkK_cE3& z-5;4m`T>I8n_=5L1vE8KwqU=eX$b4)%NYj&-B~%3^6F-YyE|U*kEhQ!QU$uuv$K+Q z!@rk)d^^rR5Uq^jVXT{uYw^UBi{YcGE2s!6N0^83jE)j;3HdP+VECnMQa4@%uvzgI zeq(e`vEssXdI1uZ$RK$esrCR3A*AO?W}U*UE~kEbzgB4(ODtYemOY`ACd{f|(LFz^ z*gx^Ds#DYq9u)X56X3FC!a`cZ%4pEm_j6}(Tj$m6dgAfn5tsd$p#cN$&edzg`r-b3 zgVgP?3xM~<6SH_N?F$dmg&4#4htyn>WH(cw9Ww=TPc_|U52Wpyf# zsw1%>7t`(2uucLfFGgw6m$>A!T0Y9HQW;6gdeaqS|BYLOwU9#Y3xo}23m8B-CU|+_ z7j(5F2U168&KyN?pb`4%y6$$%!#H>0&lKY9*a>64Rgq*dZ2!EQ`1Yxjm-2mmV(XW$ z#PNbcWhhX3Smf2s9C>9w0tbl_CO<%`G#+6 zt|#`&$Uh3F_nG#}CPf6`5HZczRvb!QdRTuW7NxmlOqD;D$g;U>1UL)yG}A3b-hUxHsr%a}GAL2XGrBAWyu$-f5++(Q_TKcf08DzU9~PT?t){L>!0b@isMJSv4bQ@qZop6jKc{OatE`%N)mOp?cwhgp& z(2`#xPzH_;a={3B;Z+|yS0mt0f8*9}k^%Ur*ycDDep92o!+Wxd2!EC{=OwgP@UsZJ1Ka*#W;PO5$PeKu}Jl%>wgP-p9vK9p><{dvSZ1N zWwKd((xkxN=m_q;OrP<*T64f)M&4>5azT3Fu2uxXb0in*&n3*vBTv4(SbyQpaNE3c_u}6eX>atZ`eCJ*_WCRf z^LQyJr}%Hfea+PILtLf2oUuezL802e<*>DR&~>Sl>&47Y|L$bq;7M-Jhl{;tIs74F z84kvqWu)`E?&DQwfc5nOuRO3j?UQmnp?5niFXp}`!dSUO zW$V3G?XE%|B9Cu@>65|nYc?&}ez|kp*HgMzk8}ioN7_m1fU$Gv;q6?VnWc96x5y1Cow;NB}f`JOZL z{(UKbH?Mn(;Oe%^tbnD&TBn{J%jHwkdGp(i5$6XhPpK7^3hu~;o|MNwLck_p@|-{o zzw<2wMy3@x*ZqzW)_`Vg9hD``X;+=z@*5>87;dPGVeY zg`{GKFL?g)3K-pevsmlFKP=#qT0MT;Mz-H+p@p3sM~`zrf1SkS|K@B=>b1m8Sx_0i)WEKB@iDX~i!nvv=; zpo>W=3s%LGv35woPE#96V{KBHmL`qR8}3R1wCh~FD{M_4Rsr!lTR^LeyoM2Td*xWR z`_u?;q{=$4-Zfhd4E!n_o<0%>)6%EcBk7h7)hsk@d(QrGKf!`lhq{fkMdI371_YetYl2SDWAX+Ea@A>EP#UA42+tY?KrepUOE;NtD>!$q|G z)v7O?i6j&;w>)4-KDs@wm1}r;)LQw zi@R%aOL2EEUfjJvkpKZg?!I@vdp{<#vrJ|-%fox@|Ws zAC2y}HB392w*8x<@HZptX9WHPpo;*+oCzq>-7x?S0Z0ms(lS#qYH0@m?hBypwQp1> zKZ$y`d1oqbLN#7Q%8~OH4w;ArNbga}>uu3*B)f;YFAPKTbC6hRcfNj9)%b?2Vf93 zSTXuE#6|Dt-9r*mpoOyixzmu5YQFZvQHUDJGqGODvn>6Q$1l@7A-6K9p# zgB&`Xa<0bEN~F|lPnFs7`ttXC-#=!k#%UoTbDOgf214Gd%tkiASx)H5ciky^FFmJh z($A-5Q5sP-j4j`NNjb$P&DM0UVx$_0iju`?jpp)Kpxf`ns`~h@lfk%AFE3`cprd`x z*w_##V_?Jd#+*S{hcRY<49TEo>SHYPED_vc)@@-ee@NN@)LNdkZyrh8&9o3YW&C%Q zxJrDI30HBEHgL=R-H7+r-NWWuzTnD=81UMXFv-jFmUT~C|3je|MM+;}^NRkPpkg7V zG_eehF5n&4trx>Amr|eR=8|Lj@H?F8C$`o{%UIgssL;U*nB<|nW*{~ z9^a$D!|-{E;w1!ci$76iG-BjsOjqu9N_;_xNk94y2>_6cNB_qLe9nKad%VOv1W7}| zNes=!ciqb>iA0xDV$eyU%iczQ95frAzfoLx#VD-Xf|9X1j%mLqC*xJ&$3*%PZv&QG zA8ePFCZh~eaG1ERU$HigPu}}OE&jYs@Y}mujZ+w2TiZKZ8!AwzGfD%3MOP*M^ng8X zzBAr?e@%~Rix`y+?X&Rm^78lhe@Z+H1)PDr`*Z@_mE$K@S6BbJ?p{3M|Nd^f0yW-r znUQWL(NT_|lv-AWrfdU(`v)AI!K8Ks_fCyp02jawBPn8+JpPwDLUga=rw6r zEM>`)zFQtef9h%B{##d5Dx4 zsSSA6#+1gKj#45k>U^$NB+~Y5_%~RhkJo~^U5H&xNamOR)Nd`10c5`g<9sSa-4Gfy zO{+AMeg33e)-3-{iJoZ~DbbF6GNh7_g2I2saESs}p$c#k0&V1VgAD_qjocCXZGxLH zZw3gnC}Eo*wd@f%_V&;1bfqJ&{BJ^T`jzwfrXQehZgdTF!43j6*@?9GhkP&HFD+$V za1HR^Z;Ix=C&>JX#H(HvlZEu!;r(_qhC_ckA!yZvvtP(DFFMmuHuHyGSeiHD2$smD zX&SWX*s}w+Q~w|M6B(Ge&l8bic>U(6fejEpe;IJRxq*Ie$e1Cq){Ur)){Uh#Ku{a_ z86x+h*lu z&hJ|i8~U%)O@c?AH&k(Qd>KE7j>G0f?T!zv-WZa~WF=x^F(S%E_%OzPk(HgTz-h1k zqNi8hbn2<6I$bqy4@iC|qSMNzDJF6xAL)E8xz39IGJjLzm?}^iPE^UH^YGLX`o1|L zx=dFd#A$8}4HJNons?k?SVjAFZL*p}$J2YB4>&>4i8|8`eo`F2uDr^;{CsLk%Fc5q zmnVoh9Af?uZf?L<%dwN^D5joKG9Ml{`2=-b?D%9vA{YQx8)a0Q`?ly z-Tu@+iXL6qc%81xOXkqnKF8bVgdi!n$jjJ=sUOcHppNTGB7cPJkUjltXguN!{}_a@o8hlSUX!!8m!ebQ%qoLZRjexa+YLA1qf zFMFP^7yGO{WL~x%{pz5wTm_fbGh>b!Ut59A_3!W#+jNNs`X-T{#f|R6pzAGDfBkOL zK*6_ECvkYb4s9x>_u3MTkgK|&ZI`rswM(=zJ6_^v@TC+a7w!oI=X*l@_gPgm>n5n5 zuh$%`+$(8+&o<=cZIqG;w09r89JJKHU({Q%XTFx#a>>D{Kz~PwdoC@b6P`_>hwWmDzZ`rbb#{{_!jKR@u!lY91z6Xc)?PlPp! zpAOu#boxI1cj$7NLtb98 zH}6Q`=PvTHZ`TVuxaDkP{!JG{Ukrunc3ZQ%u7_P0+S*k$o+d%J%J7}#%lqN5nP~C5 zQb&o~*VJ8`JrB;;g_%Wopf9)iJ%{&RjcXVF_jjQyoD$-`r#?Gxdn{_6DoNs66k6g4 zT_iFB2bW>DJY^Caax)TTb}lY1AP|T<)3ak^adFXcxpsrhs-)5!nraS>wU_hF13k5X zp3sA~(anO~`LltW{ds(PdfL5heSJOPD#rX7k@_EEx`4)F-9vPp&xG-&J9O-60Savs zgD%{QKWb4|(_DO%2a?(&xa}%FBM2j`Mtn5Lq;sTUXGh}(qRSOFI{;#koHs911gvOl z;?Z=A8KA>^B>vI)E`5=78J^w%) zfYf431BOmLT44U0pVRiny&L1k+90jHy1ANijx}}&#YY`WT=9)Yr;}J1%VIT=W;=T4 zqbQKtIXRj(+7&s1zj?D@;P3$@?%P;K$`mEzQixoV@XU@Rb9&`CL z$+xMEL{PJtw8%aBmEtR>Hw29Je+ZM4vIyuBJ`M`$-}-Hs^+=eJ#g712tH#+m7RZpT z+S{~Cf%tcC@m!Aj-~DHvrDxoybY9A1+nvywur}a0oWGgh+q+3l2GYw;UUpXc02bLS zbl+1vf5tXu$bID;qA$R|RO?jh>@D*?i}s({K8&}I_+#$)iyu!ET)Z=aW4{qUFmVC2^{WCH>-3?X+HfcFYX7BM?9 z3rMoWuf!jh)XZdK*W)eZ8J{#`xY-}fDdA!x_y*%;A==@Gl1o=BwT2C;#LC7k{`UNB z_GwCPpzF(lt=q1sKP|xIai;?&aZj}@61f-gRQhHXT`B4P2Y^%)P3|QTw`0RHu(gnN z0Y0I^4+EsuhO2O8TsbZta!>9IEnHpvzP6Ygy6EVapSl1dOjou8ong@C3&wMZhj1K| z1p+4qx_ms=;*nmYQ3fnFyyJu1Mi#cTpo+VN07XV70W2jA!1|6d_Z#!_)FtxKBNLq4 zbpjGEIs-EQXpW>TowPK02HpGkVNhD_CezM<;FE*IN0Ftpt6TD>#nz9)g^z=T@w!z) zM%uCw{9n?z>$Z2*6%K@T-wQRZ2oaS}YPMRjWF8V*zK6R0Hh$~1JY2QhvP|980NEvR z>3Wb`DY$IU9sf)=&&Gu@=l%|9baz z^D!P6H|l=6V^nuO&-r_idr8ePGmU*1Vyd>gXrhCi_?eB{{2`^)vaDBDMi;f2WAQyV zhC$*zAQ;a#F%A84Epk2$(Tc155QZ-k4U<|yVsfXOeiuUd%0Fr{LrYB)i@AM}SeF*C zL0b0C^0~2xHPdoy)7Orf@!DI+VK9E5V)h@?38htEa zKu?HM{HFDecga9?v@AtnKdRS9&1PY{&%kqs?fbF89(CZUqKRtp4Ed{`FJ63w_$s7s zu}tLXMTA0f0K`}Hw63<+Y|Ct8)2!`l4e70-!34`BiNX^)dWXM2e!#VbOOFZLXI<`_ z0twQDk>xt`o?l&jq;f6R03rJ!Ogko8M+TYXKF}ahTRx3L< zHxF>ji22_9`(A#?m^`%a>Bb)ygF3=gN!Fz8!4@(vxr9|u*JME+t1_4~(VpA6d>$(g zgMcAGa65n9fBAlUn&RXSL0d5R3Lwm{)Hc4ref3tn9syr(+ByZHANCx9Mi?gx4P5~- zYDv@q<7eoq1`6(!G^{e1CPca^;jY-lb3!~91WuW0K}l9*q2l_O zu7)qgWvTjs+$QvsFlGF&j?lQ8%~d}aFEQ%a1=s3f%r~g>5k#~n22YK~4SJ5~At_?X z^oJ8alm(*j|0viC#WS<;%&&8(3QvrcrMDm2*8WuN5i|^m8g=a-Nuo59r_Eeq2{|P# z+K$aA((|z1>P}5!2JnrgzX`&i!=V+J2Vju9XhV0}Jy$bsn8co}ZYKj@cm*zeeMegO(^kKM_OUsd+ z?`F(Zrd0Bl0Ka6E^s}$CBm-?O2+06tm@HZA(F}jc4Q%A{s}kZ@st0-QO{O{u`M~f> zi8m>m}tI7fO+zr)*O!U&~_7oD-qQJh8{pqskk zeG7S7@hQQUla`D)#-tT0pJ%U0DU)O@(O^c1#*}MbLN(R;glO6OLz!801}~H*I)v*w zwD(37%ZnmzWN((~ZCvtf>*ze)M9mzI6!&{l%V2p&$JnaIs6pb?ArZ39lgTaaVT8Wj zk~N01QG?%65f!%YGw|7fzv8x7iFoLf$@g6cQeEkpdr@;j%G1xcVI}0ff(jQ}^o62l z&7%m3Ze!uH!=!s*35LaSn(~e)GIbl@F_8+SWcM)!lRX}*P=aTn$n7V%f*$7@hD^Lx z%tI^1NgBN4TB2aCW zxY)&r9`GZBI-tqaJwG$3LOzmGD zxzXU^B<5W^+0pI(7fStbv2)=(`69o3SQTV*$G!d2;Ya1_C2aYkl(CT2{H}hjnI56_ zURlEXik3thBurl2*AavryUI70tD$2Y^u(8{AbM8vd@E319Zqdh*6sJ{1*}f2Z&Ebp zxb8%&NPYQY0UfnPzYh!>QG>qei>osx*S_7Dh{^X^SRFp3)NTNAf@brV^Y2Ow%oruh z`Alw0|FXlyMFID&8}~+TvQ_jc-!BgcS%(B-0kO$T=x%ZTNB9Z*z@?e^y}mEy&QSh} zf8^SEH#1iiNoVtYlD-PX=+ows?|QMfxtVxj>^B7o`#pN<{4*JHue&0NIyh*iGTIS7 zg=hBTxi8<_d#cuFDRXxs|BuHtlwTnFn@35m!#nVf`q75RS`xZX^LL+#UI^sCbrX7X>zpdQR z(E?dCQr3!Bcf*k(Q;A8v{=>-t6b5Lg7#BoB@WHL!4WI#*V;znDI=d=qbQG z%-cI}|B-8b$C|!R4K=uqzmEsGF0QBEXJ;|5h9l%QB&a*vBlHUNwBB>v@aUV?+31so zKZK3QCp@0~W2D}{G|Xd_EZv^ZSBF0?!qkJlPV@bDQm^YSM7r8qovAjsGwDowhc#hc zbrmt2`GHpwH>T-t)Iyo(P@lK*SKF@7<~N?do8N+fyQwv3*T(0H@mgQZ|Ib#|<`*XQ^0pI5LmA-7+6i>gh7b9l!%F?nH^AQIBgB{y=Kg)^ zn@(HJtCSb-dti4iCjTIiv4vHHUNZ5UZ|E;CW8Sz2&3Zj2H<3Xwr*u`bylQ7M70op3 z{O5f}2{?4dJm6|5J3G6H+A?yfig@R#>OIg8?dwk90QNb8S zu@u%9W^J5hqKI$Y5u{GIadT*twiRj_4K74{HOhuBDrqJ!ZGgWKyUd#_)TV?REXQks z8}cJbc}(y~#YgKSt*9n>F~L~99gufmP#njBRh0s^TK@HMhpJSDd=w|rje&*$5`fTI@KEnGRV_LP0i+^jf-Pd zPut?wAM*3tk-mP9R9X|YmiQ|Fw4gFw1)F6=4o?$UIni4f(*$F{tsp{=RAAuzz} z?9b`psgZXeQ3{eJ!yY98_?NtKv5;+!$BAzc=^)s_q;8QSuGK8263i9-O!Fg;vy~>l zOVfz8G@4E^nL$xuV5feI+SB`S!`Zt-gepFXA$2aMm+c@-M8pvzCRs3dAN4RQK;N;&VbR z@{T?X>m)kX#B!H0=_Hca84#545N#%HYX16tqlfvQpK&DmEV9PgvGqT1Sqi-qFwtZVV>lSZ8U? z3c|v01dLTk$~@w%(Ub3QYTk~i_#V!prrx-o+nw)CIe7*MmXo$BFNhsa9X%8MO_>EQ zQ*oWgIak5;HdCy(&P4k&1<&@xlqbg@TJUsUSuhtx_U8nV91aU2w4#s0Ssk0dH@$yY z+3-TZ3LJ(=?1$%Vf!!xey;Wx=r%PSFa~9(nE7cbAB2Nc@2(=TMk3t>6p^>o^y;x-V z)I`;i9Vfd`X{z^6QJ&w zhmV8^cmc4oNro)ejW-OQ5I@L8wvXuhJ5qE(rUJOIen3Y>t@;f%@ zlXuK2y^fX_J9P@fZ_<=YS(g-1QX#O6_49HtB&I4#;a<()uK3|jABI1lLwEn_9<}ju z9vy>;4l#Jn$X;&j1CS@FDn;Z|pLFVOf-n3k-6-1&98Sw^71F?6|HETA48LFQHR3^u z;cjp**u!5aZf+MX z4@A@wYV<%IEAEzb+^3(LQJvU6$Z^Mq8g10+56E}5HO?8BIdgD6x#1wRYsh6eyEr?! ze4!HY^Ypi*S0<_=n`9;39d-ccSn z+&%pb7ME&$sJxAXpS)Ah(=aRM7jW}Cv1CoTy~~qpbOe)WD2@PO9jPU1iMt@FCG7*Q z9x^Ekt{pxu-3`M{NmNn2S)Er}RjwL%{%13}W)szdquD#OK228(B&I4kihgcprlbry zr3z#$rY1>CTm|_D9xm+LL8F3dR^3?iP`94^TlC`d3%e?jKYu8lonH?$P?hsfG-ym_ zabFDP9w4^=p!42U$Pihi4lzVTOcZv#M`aUYC^#-uEShare?QB_cfPOeJ{;I;f`mYH zH(>NxVWQ`1*2_%;%|q3J54Revnp@uZb2KSdyw)(-0lZ?c(&94n0*m|V*iUTlsIWIX zt;VUEBszo4i4m|xltddc%Q7+V*4Wer2Df*2b(EH$$M&dV(gXk!5XWR~q+W zcvdHBeJGdQGDYk57n(9_ z2n@DJWFKbaS?d?xtVeO3g?634pO zsujZuZq@qUKYAa)EQ*Q2F(2A1Xlh1hBp|%otz{9w|?YafNjRT{K+)US;C|sk79iI zr*La>6xUB=3h#r7=q3>eGO`^Is-<)=l6PD#A%*Q} z(Cn{gMW7IupjOJuT4f#MQ{}&L>HGuZij<+*%J8eleR_Bj6?F4^om;MkZ9e_WHf}1< zrQf;T=v0w0v3BzY-~G$a#j00Rrk`QC=5;UUZE;MZ;RAuUtuHa@e>)+$^jW`l(YWP^ z>~TRiSufaT?L5Xhc%Av6S%tc@_#Jy5InYzq%guDIGD63Ff-gx#Cd?I*-iqQUP3D9WRHUM7Zbf_i>E5eZ02^sCHPCoObCJ9k*& zZuQuNmN+l4d=d4aXUIaSgkRsZf<$8H^}DHj-#?0O8KCF>T>a+(-sO)==0li`>r)zpj;W@tJTX z(I9?!Xe8n9zF!OkT`55PH!KA-P!PHk@Y;LeNj-J}m#j~lkLu@ZTVL<_*FA+VpHEQF zc<`dqyXrqYU94@kt)+P<30qQw&RLB{x|`tU=F365dqt*_1PB<2c<`Uwd(;Lm$y?bS z)u4mLQ=)t!Yx<`ey@9t+6i1%PZ*a8 zFQtA?z=77!;69wtge(E%m%!89mB&Ku)}OuuUOPRdD8#09IbOkTt(Ws(d%W9?&TL(t z*9%P(fT6u1kIk#Nd><%@-pjEi=gYr?G10MqBN85W0~ek(-okNU7ij;EhuLlB6AW@> z4!fc@38-jcT^KcZYMW@GhTxgMG~I)2ze35Twp*yV4`iH86ywu-9tuV3d}Xg5^E;$faEXP`1zya$_;DyK5ZJEFnhq;+q&^9u) zV24$DT6#L@KtIU(TFVg@33`Zx-?_klVKX5Gy9AyY&jj5y^}x=VH-9xYUIXh4-wPQ= zcJ~Cjsef?@96LiRWHlaMLOPKjh6T}wnP|}k6=*XUt+)L(NeA6b>V_ajI(4Y2(XrA5 zD8~~>v`v21jhcCJH(xT!2H4)(j4{m&%jH!BnCyRNnJfAT9*^UQT^+x<4+PzSNvOMg zoP7SfL{_UNzg9u#>2;4S6Y;g>ZLjTw9MH&X_V&(>RQ49QYAdcF}%Z zLoJf(pi)c zci$HOPAG0QtKvOf{MxkSyd+X%R7D_gDpfy@!01@L-ggQxu*{%j=re*({Qfhd^^G8N+Zp$ojo8Z9J5MP6Lfc^(h{F?#$3Ksx zxbxa?N&DCp@NrNqwSenb$T=V>k0`eDEmA9ZJA#M(H!+8+WuRgIQ>fS;KD~ettHN-YK3ik1<-#2?Mq$k+3Ma1yWF4-ZR5t3qb(Bl-U zY}3A3ND?t)P9^b8d$(uBO9{juN%a7oSU-`j7qz;rGrUKbR1d($Vpe2R=Se-1XD;S7 zAX$(}-GI3yiScP82GdM(Q;lP81huVKWWK_h(0EG+G6_!juw-z?rS1uzu57+mCrKA# zv929yw)Ld2uV!^<{L=9G3O>| zoyhf`K$A7sddM#44y_niOgsA5gT?-AQeECAnMqK`d8Qd#2M47iD#hp3e?xZ*PW_>4 zIa?8J^mnn+tVSA7^Sdvl6shEPD5I3p>9=aV_cLBeR>hjar0-#xa}*^oO>xTC#j@pX zQ>jz09awN3Tx&5fXXsKsc93Je3VHW+=pcO(yw!;OIR%q%=$j4sbcyto9*<|ux)w4z z_9TpOQTUWF5z*CZfi;Ou#b4QomJm;cweVc>-g3cKyIgFgQ4!B_d@xURriqsS$6LKL;Ux#TyQF)x7EH&z_U@6x|}%Sw;Ha<2KW=BLdjYv-P8(hU_BQw z`RzujTGRYbzHCkK=}5yr(f6eyGBVAQ7TiemQSH^X&JsV$Ub}*auPjjR>Gn)~@<<{y z!FrCo6uD}S_CIG&7S_&l`{K9$mi20u{|g7Jo=Aq zVPrS(ZAPD}mU7G}ZB~!rs;PcsvVmkV%7hz#dO0N|c6APjKia6#2s9WW9y4P1Kh*$%d$^IdpeP+qR|hjWj*u0qW_DmEbelaXfL zGMDNbt$sH*3gsxoh`o3m+VJ~wKlA6AjV6ipEC@wUkC^`+9)a0Q(Xhm`=}k&7U6%Sk z_BtoffwupJ#|#B71|q`r4iseYl--llVS69WX>0yGeqpdpQCs!urw9D&#jiuy#d+W} z@&qF?F`^{twy(=y(Q`$Q*r`bIq|Qr;uaTHrp6w5F0Z7D{h&_+{6j;ye!mrUDa%}Z` zZVtLQpOYWI2&R7cSAF!wG~fi{Ni*a7^&n~HTuiY51HtV12mY&~+DGViYBVaI|r4j(!>k2Hst9=j#P@7g_fz+apNnpVfEG;KK_ZyvpS8ZTQwHClD1 zGt_NS|CTwwJU;}&R>G-a`|M{g>+FU`D~naPKCU5a6#^RhLZFN8g(kB%dk{*M)~Sub z88~R(7-2O$A3)sydd|q_ZjD2%-J?d}2S@wory=U@fa@gMm%f3StfxVC02_U8aO`?WhQRfG?DXRzU5{bF^;XUPE1{}$enDX9#CxiHP0k^t0 zKjc_Z-EYqRA@bw&+lT^2D8=;a0~7=C6R6!)|Xe$ z{mSRpo7Pu5%DY@#94|MQHUr~QQ~hjzE;)}t{0yp~nuDRi(7Xc`9vuX7O`c}00#4s! z|5U+>Wfq_S-f&>^He#Kq5u1ohEgc3Fl#N=jkz3cHei2Q4C)ak~ez#Rf@jeZyyE7Sr zH4`F}V>91$?3cJw#U3)Fh*1MWq~H)9X4&m0&HeCC_;NwSK2kIR>L2lh0Kt;}-6oTz z9T=^b+bU^-=3g-vfT*dF@0tfbF>6A(CiTFmT-S+@MU}+;V2Ji!Y{JlaflK*uZ%3`C z1>6O01GjZI{ObPI{>v}G!^`XZcotj?6v5&F&%bvp^-Tl+o(?F~bw2*ljXd6>2dd$K zgT=_&_Q%menUQ!(v7r6q)l*yMI&dqdAE;}A3fBzx3|wHAoNAyajU#$1_KyKCkN_L>**XZn!;tAGQxV}V1&9jJj9F?K(qiMzkDvSuHs5j={e-NQ-LJbg{8{-)2G z$t`}+*;gwp4+ojxQS?^s_@-AzJ(w}pLcZXzB14ywcqHW8=Zs=@!F{{eoZo3|_!Nfv zFnB3zEFy|uuPfOw2!wnasbP#A0q+|%h7=zb2))7KWyHZGj!fc4dRMTm;i`d@BDq)i z#!l2Zun#FAk}4sP0KG9FYE(fzWJHQN1t2eu@ghP$ag&!9^O7<8rd0tggFXXyPYuwQAvkPj^#0lU&|GOmtJKx-UcoYzXy*J zX32zq$^~_@aigapbfK13ZL~8k5iV|T=gnC;u}cZ2Y;hg^;M9I$d;8t~9Ess$_5%qW zALV{AxPjPDRw(+w4N+NVFzkJns9TSM0g{2Tj@B5{G3IBh@edm{^F|0xab=Vr>OFd& zG1ssVoJ8d$XbqZ!tv?v~eP$y+>mSFmb}yY*DbFM?7gmgM(<=F?#FKmQo>PNtVc0>{ zDv=p0`AB#whCy>rhw-}_VJd_0gjX8HIR8TQDuxupFgc4)xffExdMl7F__IBQ^5ecfM83G1Q=C-ub{lAhQC|vklhgnqC40Gds8sG*D z8d9Ph%wbeIo;Rsl_E`z?igg03C%7#wk;ZES=jWfi{TDVAA7Nj3$A|amCQ?|MHOX;Y z5ypNK9b=~CK$D;$inIY^CEH2$4yV%999XH=P@fcBg*`KuKO1CUydpO?eaZzcAoDLY z)bU~-_#$va;QWj20igerqBuvD(PfOgEf(AD13X+zF zD;!FqF_onqC34|^=LV`#QII)8aO~$-nx8V*Syw-JV?<>Xa}=-{3&R@*OWgT?w&z`9 z&nQeIYB;9a+NZ^i?Cmg-;SLu!kKzX3!YZ_W@{@z*i)S75C?HBT&1!l8e zdl<1Ew56BmnkGLNP8a2iHyxHm&WE+iXHRsDYm}M@_#Ak35%0wgeMg1d)fiNuF$ZLv zbgkMA%+W$*Dif6<$G_Q_s+g>QAaU=9VABR{VHX!@#W_M8z-Bc|thZ6Dnxs$MDRlUg zw(CdhM>MloDDl00?#gf@M7`jH;H1J4Nd%0A0<^J*uKb?;l{z7KUJop5?fGq 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l8H?_8B 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 z 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 z

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

-Q+syL7e0?C2Ge7?uGYOU{gZ8^*@|sUb^xHw3#p88>i1O1E^eG zB_hZ@E!PhH3Fm_yGwdXYNtk@A>~!$D-{E;^CMgrLHM&1@@ji~|3^sTGY7xBwyMGIS zAXI3aC0xS?VqBvaJ6wlzWrP3GDcNJiHzaePqEbm3;spHcE6jwxg4SJb9T{+!L^=kzk`(DoAxG5(|{Ggtm9^Zb-(O2b!AE9W> z0RboyXfter?bOXkHe>Q4S)~lZB#toz5b(X4Efek{A|Kv_*-LnH%!;l>6V68!|c}=tB@xe`^Y1Nw%6f z#UressZ@&-SeE=z9$i~273b&Dno!&J#1jxlPl26p-n*b6MhDNVEp8K2d%Zj;~bvwrMUS8_pae1XbDTl=st#PBIlxa~hzpXt@e;AV5fxw_SsU1r3#2 za9;6dZyJ$>&D@?)PA`q0M(u4gK!s9R`ZqXB+KuOFU`;FmC`k;^imk@qH$T%kaXg#g zk6(8k+Wxmv&+vPYRn>%~?jNiz4`*`VDhYXA?;Vepk#zpNxf?9Du;ZMeLH>ObIcPg$ zDg$CF<>`x3^66j<7uiul=2{ocBR0Y# z;-^Fki$HjnrHn!Ci8V(e%r-E^6~)iw-;%y-_st|@<^)}@+eilj$@w(i*JPvOpd&l#D1>p zZ)jaJYX~fJ_WPQpeZR-BAvFBUNP3 zUC%vzrjVX`3tTxMeS0!*5i9f~{toq^!*{?VbGKKgz>L))+}+B;BAy>1xqZ~I2<}Wq z*z&gDX8BrS9AMNSlkOJ?U8)l4vuWqnL+sBjynY8BLgqpFM$b)+KBPv2BN{3r#`dsqlplP<3NETPmHb{^*)nAX!5KuF#r@ zL&!jjQP)=Z0EFj7GLI4$OKrqt0OFqwY#BNioD$^Xk-foQaLGB%sxD@nBNVVGq+O?0 z?n1Ai>IdTd;y2tnfHvqk{4NLEu%uq6q+QRQ{x3Djq#vwV<`s*lLqJl7y|s}jyc@G5 z0KK7vWlC89KcmhB9{>yFla!Ea(j+zOv-<^%GPS2|y$l71GviUGdFh#%j;f0)iV6HH zjvx((5LG$GsP^M84{d&8y`D0irfW4^4xwd$tSowAv3_YvDF`c7Y)S`$dKy2_*#>ICyH%}lylE1^{U)FTM6 zl3YgUbVg<_R)42%r)Ic1mZ>yW$?q%EWl_+7=L=dt21D4@6esF?4Y~*qJF{PAKWc#r zoH~fM*CR3-(>9(5=Z%?!z5;{3;MqF+;c?*BrvkMzC*KC&a11wL2sfMYR3mIZWe_xNO!U|c(t+F>);0qil^f?8^rNBbf^`259Ias z49xBqRcq{l@Mr!tg~jw=uV6B`e;1d8jeFSV?P1*7bL9P5=og6b($7oM6_3|Reb1}d zrjh*pmBD8#r>Hl`QH#7J?)#WXfJs^KmXQ;2wz;k^_WG4tEXLa;7<-u_n~Sg z&rQHN_3l45{UMitvkWtT>Px}h|4E^1k{j_{liygcyG(j~ntSd4k4xX=g_l(0>F*Sl zo&9ruM`dvy*4lfD$5jvato^0ODL;+cUY*X}EBn#tNz?+Drq+YnN9>LmYU$^-_byMT z>rLJxKuU4{78j}KB&w$Nc$)I1$M@bP&%k$P=n;j~OMspun5Wy0o#QEv7}W5RC&ql5O9p^QG%fK+5Ux<0_c5R7t zLJ{Ff}5PCfx2l6dk@}yL*ImIzM(sLGrcu0#&sXsAQHMhngOarik@aJ z`vcp}S%j>VrFp7LeHyBP&*L#egG_#ihqGnWNn6)t*K6K&jD^51{v@x{&cMmZ$;e1l zrk$N#u8{u+B&g~P$@y?hDNSwjk9=sdSPL~(q*nh zR1Q*l`rya;*7UlhCICW2|2zF)|JHUUjwC(F04V95+)^VF6s5ao-)1o?K%0XlsOSmN zgFUg^?9v1!0vEUgu%*+R;A?o5NL>)CBJX5r3+{B`gX6!=xhh~&4u*n@Z{kk3O;Tu( z5F7ggEXRli`76m-F?m|7wgHh4cm3D42$2c2KaGqz0u=@?VQjW&SgoTtrIlw85kM=)*D(7MPmp!2g-qk`;{|gAn{~b%9>z^vW5m+;V-|@-b2F)08aprDM0EE?gp{2 zy)XH}*C>t@+EWn(7FU^)kelxhWI%GLSQRlOi7bhsk_ny)rj6}97w58KxcK1kpn@yby!q2}8spvyN3 zgWx&r?!g7y{ow)36OX$%%%O|6-MUo8hEfv|97@ zaQ$L}%FQy4>ePoTu!~Sg?z5notm$77_4#NpOs~Ic%5`T}gu|j?3r|fU(X3N~zuRh<N~w)#HYNy&@p|T{0(0C+UkT# zU7acnO??mYs{3o3hwC>V11=vKqNJ3yDCCtVYRWZoVH^SPyCeAxP$Hn#BCKrM`8{|6 zcqqTCr9q1uxH?VPxyN@6xllxn%*F#Z0SFH<5`Pzt%196zXoaM)c{k^sMr%j4p{C^OWK>U34DzTFXIY zpQVkDahwAB(oiudMOo)%tR?U0Fm!}`p6HakR~jz;C)6(dR_wmm$7|SKxmZjH+-wCq zc;9Ak-j?}$-Snfbcy!F2A_Ln<8B8%b9*Yc|IfS7ML*6B3X@Iitn09W)<;D^FzPMeJ zrMn-=U2&`gYWV3&f$6_<87iF1dcUF5-{vy?o!a(mFx`$a49bD|DzRL!1ECU%pk9t0 zL<_xb))=vu!k7&pB4YzdBqW#)a|kA3IFJKrtdyB?IhT98`6I6 z&ZAQ~mcUz*>uzisCXL?p9C1WM7sbTvNSrJu>4f!(Y?kaC4UFS9y*hihvXJiNC^iE@ z*O)}GCK%r+Fz}TANYQImOw90};(#GVC=pAh1llbG0cw%r=nU|KzcdO9ro9s5&nir9 zKp98)DKKnYggxQSh7{-7l55`BK@~BUfz<7hneW<*t`X=#j2kU>`<(T*!C$MGcmHmO zmX`n9Fd+9`xA}+6UaoAo=o2C(9s0T5*BU+^f}+KhLK zesgu6#yL)^?atIL*Sm-gu$o^u(w9SC;wc|UB7Z(SpW8L*Om;Zd)9KI5R)=jr{;n(suj z=!&V2$bny*YO}e&DgSSrko}M0SLT!dbL5`*lA(0VYtkj_T{{UHyNR2d_TE#u^KFJ= zZif$M|EE9c+Oq-V^!f}EyZmblQhk0lZ7<0g^4TC9=|Vh^+c2r~_Bnaq)||JF$A3(> z2_(KwETnrWBwh6w=E=?Wyd~^%+xPA|?-|SX?mfvxHQdPf`h9DK_gBs2Q^twTWO?3u z%n6I1{U<)D+IVRTysiDS|62uv&a=ekklH~ z$Cg5}(o0SqSxncdi;1tt5nC`Ds$Hvzj9~#mru~L*&SDf>k0iKzdxh`s|FClZYYwsd9rc^p z!#bTUm#0foMcwnR6!*qmFXE-g5e#oB{mrnFp8s~Il+fq0)J3;Rwe_$m2kYae|7R%a z%Q@=DST+d>7ysRa2^9A8X}-tn=4VyA&~?QrzuSwqqLJtPrQgx3|0!g4vdxF{LF5o7 zkd6Q)Jpa)%|1mTFIg|ABnsoE>(Sl`iyV}9`6!m=ywewiPA*<67dCmXx-T#{9OFqH*-53DM3MsQ&J?)my@2~vKWU2K#`Tj)z#Gudf8gs z6?7Qed@EZrGcaY_VetBi&^3;skyP4Y{1Rj$)G!r6>ga)C93r9#1yonmqkMWJk)n{j zSO)XZC?o%9RlO%XNBBUfUvf7~NfNfIKyeYrbwFlshsR0;t?1EDE-Zo!N;4T8CjRJh{ME3 z3W{ORtS&L?fdcXYV3xCSQVPh?0t&VR(pyJ)Ahqu2sA9O|1(oxLtgt*%ywaBNgGhW@ zZ^xh5Uy|dcKC)Hv)rEB}V%RL<2u$EKB7BmuOs#X)4D`NG@yJ!M6)$7Slwx^ASO-Kz zH_a!J6&0ED^(X1!C{ZZS<55XQf>`cJDn1L2h8!ln3HSqJX7dx0LU1@VY;5e=1odR; zq9OEzC?yp@r(t;|Tb2qzJY!+h(1n20-o$GBn(NTbH08S(?8*IaYcuM6As#-LgB{8; z=3D{a<88Hc#XL}(V?`Rz1pp``b6Ss(XO_tG!*MfKOxQ-)sVFmuUq56)vX&{K%kE;C zA*|-%LhTP($@^2Z>)KK7f95)~3DlcCR*|UBB1${pQlF2y`-)DZ6wd?L9>3_6vvK=tXC-^DW zkX2NxYw)=U8~;1GOqtUv4iwxeFq|j;dvVrJ2q}F2#QArder=UH!)WYx2vR@?+saCd z^Zw5MXgW7@J3f>vXd{3ZFA+0xx@Njo8qf>xB!P)@nY*TBG@T`1kiYFGot+(2vmabw zQra3qRQW(a1QeDLaa?7+5PPwme3NbU)35BYsGMK6^D7l~gi`A+ZL=K!!k@%7X=Grt z@ZwYhe?8GSvWiNFXK$S=uS(*wFR^Pe(IeXUJ5^{$hU50~#*?z6dG|-I&MqKE!ZC!O z5d|@lDZ%j_v+QshD9fq)HLvW2NeltKghHd#X}wQRI4VF7TYaphF`(n{vh*+6fJO^r2L- z*vQGCw1~?+^xe^fGoxP#2j5sLC^_zZ9bORi{8=9g~8l@p?eYSA0UTkiiW40(V+! z?O(PBtdN_BWpLKB4X4GH2et#H5kTo^dUPM#d9&P-iSOl zG|A=ybu^Kb5t;-*G)4=#VGd9f5PEr3baq5}%6yj6re9D%CIo#Wl?Fkb^C%;26l+ru zA7UB^hk0l7pmCKb9D(r`ESSlICh3L(3X1YK z=~x`^^i?^J%t7r@MA12vDL&>8g^)rQ*bI}O(WSk&xxE0gI1h1QKgoiQ-pJ_#Fex_8tJQX^ZHawE(yQ8 zzmT<`|EQ(^!NXgA2;4|Lh5C=Aw@WGV#CDwB+o1X^bou3X^>AI8E?{*YF_8GavrOhy z)ghu(ogVs_e_p=D0&x8GD1`KDql{|DCqj$WjVOyL##Nzj*YwGD9WWXHL+WuIr3EAs}OPcMRz0p16NN8Q+t`{FhFljQ#J#`~)OE zhmjt;-Kd-GrIs+Hk8JblzSmcuFWwAN_7_M&IoBtjE!UIX_kG0{_ALY&)J6|~`W;?g zQse!%*xZBOUq7GT9=okIPsoBEyY?U2^PP9kyQZ+#;dqfR#MJh}@?Rdtjb5*(m%|;% z+Ag|S{B}`Ugzh&8PZxOJU-qzBmRlTOUU=FrXDj`$PEv!19IUt2sQf;>oBhr{TkF%I zL8wdNpwa6OM$)`aAHk}J-9K7By`a>poz8gst_M_-my1o0&FAs;34W-n_-~haweN^Z zo-5mgy!uyyWwmeTpH~Z;-j~nIi1FZgZXQp`M(-U;J|{0{p?p41Zwp#)fA#zh*Bgwd zzaZxEDoi69UInFhzwP&LBmZQ(4&&+A-e>XmoYnslV)#6w_3g2BGS~Of>j_}=0=RsN zyIfk!F$=szCnO}?PL%q1ea|OLj-hGQ;jov~%huE4uC>*-Qe{qYpFcA%fla!m3&8nO z#Fz(-p9ig@e<};a^Kw1X2n=J@aMXbBl_-#fF#0zd$@Jn%)W#-07boK|XkZi+MSPaV zn61O@?$lhnF?hrJ%ySuyF-2Tp~ zQ~!lxhHARH8R&Uy_1dDU?!@o-oD_~8}#w2VYcY-uQ*QZ$ETF@t*J&9l}u zp`|{O8dAzzZ3?x?_Iie~9Ln6>NDY(%NTiM;Ls3#js5G>>{SB=`G30~LfxJ(m)d7X_ z&_79Y3P;ixmaJ9zxgc4P?x6NVePnKF4pMvu(9bNSlS(S$0ca9@G7;CSc(sqw62n1&CXsSc&{0jvIKt_M+Tl1O=lo@_WhW@8GsV)M z3@a_>B`+A%NI!;Dr`Fhjo%6k~<;=G0%7Qr#%ow~c%~F{9Ku;C?u$b~Au36_WJwqQE zyS2l*MTQRh*k0Xcme$?{daw9pdT$)5@$QSQ5Os*NuzroI_*O$=rEcZT@{fj*!phK@ z4LK(?fn89s2_xP5%?8#$PE2Jm6J5-;y0`Sv>}T`QykB&eQY-ksihY7BJ@w;R=^6iA zOH*Q?2HbJDH5X<0Qrf+*aGel8V&6T(jg9+V=o|8sR zwNtY6JJYeJ-SYD|KcG6w8eX^qdl)c2rH?VlZ!Wy7cAB*({-H= zDENruV^M6VQ;|IIt>^2!>i~`b%Zf(kwC{x|8xN8I@(VH4rNY>rq0WD6G^v5lY2N{Q z3SZ{*^}%<=iI?sdi-Zn$*EjR97!E?oB$ZRCGRkx_2XfVg<%_T$(bUknVdsWg;?z(X z?h<)shZs67`t$YW?OD~in$nZj%CNVdX(M)!tCF}pp6WGI`qA~kehBi8TM?m|v-C-+xnns234kLDU|Y zt@puoXPXm^ryIPk|1-4pJ59;WhOGlvPg!~Qe4mvta<_*fk5$~|@2RxKK#5WaTP@LA z*r&;6weyXcf;a|gI0SrdPV)lt&hNYdKU*V9q?HlW8}tPhMWEW7 zGer-5Ba*iM>@)6>FqARd(ftfSdC483v^t{NHt6GA!xy$`4rU;VbSX;T%gYIHB*6$M zmXg)YkyV(Y=ho6ym{PlFIao&^bswI|`tjO#Mj_<}_B&st0t87+Q|F!Vh37&q*?YAT zZICvqSBIE}qzY~|6-(XInrdK6;pr@-S#SJnVaa%f2`->W)RQwRtbyznfmj89d-za;!;@+ zW*SdBNmxt*2@oaLpP7`d{%Xm9wb)Ohx>@o5&H(jmNx5F)j_3BFo#{WdiBKrGD zS6|o$S66Q~!p`pb%l5wt#lE0J|O@I7LWf&k-RkP-nkVkctIXy={acsekSL4 zI+^%c`F6w5_Xz*}LKra;D#OdrbIvlm^Knbh#iUZ|HJME4v4yQInR;ArMJ<-o{?GNx zP+O}0sq4=U`#`-A65F01XCIXe=r~9e^@w9vhDCgzT#Uoaa&b}t4zM85?QR&TREZC-poh6@bP;#bXX1W zcRl|8-mtMeadGt!?bgxurkn1vG5H2a-iy_vzzj63VbS)~^j< zx4oxq*K4w_?TP!AngKeR-QN2iYO>9p3QmA*sW+=RWW7*?WK- z6`e^c!)}hl1Z}(y;I|(JtXQyl&+aVNn7&}(e0a=bd(P8p-^Qi*dcZd3wpx=d{rH#d z_3y=V<;C%xCvX_h`FQ^N8r=GlEY5)Dmi3f>s48|4bSV}NBRsE@nl#CFHGbHejkPix zdRd`yNA0Sfeq~B(>0Ti_@nH_#+wzIknig(_YL!GK*O!K3Jnk}T+*nN4e&*?_sj~LU z#y|ta9?xWS#uJTsWX-TYSiXC@E+pk>hmuu650uB@zR{)P`d%a*F)e7Ca2IpMOlQEC zy2?ufnhnWp?na^jC46z3duW?V8Z ze5T*rdYE1biL%mn5McJ=;br2XRjk*fP_6U%?ral(^!9j;Gk939SU;Pfy6S*}tsy4{b5JpCN=jPsro&7vYn(A>7 zeAG2G$0%i}Z7)A|lrjesi^p&bT4`7XQYYgC&Ea~weni`LRIXxP7?HcXR_)+Ic}o-L z6Zu(|RvbYdcg3_TNF+wkoD;KS;bEkQMWIV*X}lL-CLE+6*Lr_UR%!ibie-^ zuKB7w|B=pawdu{J|7syZLM1(Nwme*?ZEL6oIz+n;s>#$}X}giMoXvsOK%^9U>B^`= z509flr?CZ)n=CC!IA_=SrQ(60-Xv034UkGhJ{-PglMOj%%jBir?-ZE%j{R7>^qgj; zYLoA>Mx*RdtpaXv*9odRuvrUiAv$0L5!01eHB61^CQYQeCuOPG`?Kyv)AaAg|I$YH zVR1lt-u0B#z)Yh@ozNN@0dTq_x=9(&VGU7fz{HX!ZVTgrt38R97!y*7 z(`oi8cgO}nMFjs)qyAc8$p*t({b|oGeI-c;h2Dt~`r(@e|BPR?by`LpO%O$>_Cm*& zqqVvDfANy$=H?zA0IBlUQy3NL%QyqKf(`AMRR*ns&6|pd6 zJnc?59zHvgN&)nG`SgnFq&4jfZ+f-7gn+sx$MbB@Rz)k>G8qP<0!pSpwWy>3b>`Tp z4Tf)uf$GzMy)#7VmG74#wReulqmAZj)C%H>zY0<#+ zNVo=aor0NHUW3wu()!vXV%`;2dbt+0zmiS~4M>cR!ePawR#6<98X61#LuqT4AS!1@ z)k;ZSnAe=2*F-O`BIT>D?QE=V)!G(;H6D%VU_tAvyKJ@KAGQu2tN?<Vbm-s$Ru0yQr_|BwizYzcuFGAy6qy90%z?QN9SI!`! z&W;()aqrc!RSoQ!0w2Eu+#Q!O-h0j&O&S^)7#JD~x?9~%_RL8jXrYtnf}P#ZCUcWv z5K`vn!)$Hk%F2TF_B`2(pM5GA7p|wep~A(3J}mhpxbV1z*CCh|YG^#jjpZh|H0He@ zkctN*ad>vC7UoxI#QimbAK?OxEqy@EJ$`tWlN+%uD?>mh7IJ>PtjQ0HB@y;snd%*k ztsoO=_dVP^UJls0meqL3rBM5ZS3LY7+4+opEAvT5yxHqW%J;X@YFkNf=Ddu(Nxh35 z45J`3mE~^K?lD$QgXUW)>1=QE*7frAa6oc{L>WR1Dc|?g%`H>lWIA9+GoQE1<>z=; zUlIY|!^tZN1P4L)$9t+T_F&J)$N1hR5`OpF$sXVrA_jZz{_h6w*P*SISkm^h%Un}n zO#a92rCk_0sqpv9!`z@jbh1|9@3VqNCiLTR64*`x_P)IDMX(oa_C4Jkp1Okp_7HM1 zd+VFJ!yeRh0JnR-#NPqzZ9b>l?kg(WCK6o{Pe*sFLN_A@=DPxX6*%=C+zPedKN%l7 z)k}Lkl>MD2hGJ*3qW{tbz%pp6Z9Ar8b^YfBdFiEl%dEvyx{$Aoe(0il8~0n9W^tcY35PmZB-Fo)>^*9JwIHm*py=Yb8vn_4BbUB=IRr+1o;TOS48s6d~{Ldiw z|ADB#FjhWy?3#uN`wFzOe!l$c*Y<~CiyaJpnVX93xV$BWlO(bC%Xx2wxH8{6 zD5OI@8iK2@LV<#ZRGAZtkO)N$@_xSg1LIgx_CUk+`7hhSKEXe$99QdV=LwIxM{c9e z6-k07B7z)-Lk+4}H%AZAwrhvFO}}KoncoKUelS}OCiTVq?`|`ThLyr5otJAPT{K4y zTqCRz4j^8gYwvrswj|DMTahboLK6|18ab#5!?S8rYeCv|j=h+Os$^&QHZ34xSVW%r?0T_$I|D`B3S-{OOgA|7|PGA{qBB>or8_#Am)*wT=zmp~ z_P5N$C$Y-~NbHuap-=Bbr(640m%Y!`#xLQC^vA`bLAQ>p`z5yr{}83A^`3u@WFnG@ zERbnaOUn&7O|;>fqTq&JLdLHxn-_jxmfMAhG+Yf0?w{u@J2syO_ur;2cpwvoomN^1 z*Cb>_S?{7>!GEj+zmSbyc$%iE5U)KsZ3+5$b%0lmv;4}hcGx8fG<&8=MI zvH-wT?t9ZNko#(bLwa3o?fTHYC!)lLqXr|{X_a+!D+orXCh?T`h5w1rTJ zS4LWri!8RAM7%v{;w-d5NWW+3&F+A$^XRny!EjvwY(209rOsI9+U`^0cG0s{H;({= z%Qk4%lq7`6Xkx#;tw@E0#xzW~V};nPzg{@WHFVyA6Ib{}26>-&MRImqQFY_F^xANCHi^m5?{PH>% z$~2iY&_{i~b6nIToR{leETajgE&L+`ghOyGw>n#!wsYGI?8u7aisPW>A>m_&%Ws-K z_A&REYG`zjS}%8OIXmzbKfgH<+VSWS>1h!*HBg1k$C4VfogH3I_SpE?Rd=o%>W^7Y zC<1V`C%}svo3ZS^I|V$oUQSYV@}n`J)*qJ*oTi~NST{n2O@)RCq~~pr|7)#BGgYqV zj&%A+MS{T>HLCi9KrgEOXudMcSIt2BSXD~aBa!5Y+$S?)v}>YuqL<;6YL{f3XgJX)PTKsXim-Lp%>H;Tv`tTI*YE}CEOYNTC46IrL1 z*mJ`-T!dZ(^k)8!(tj|i1HO+)9Ut4 zv2S3dtHN5P)@BODvM%wc^$vV` zetk`i>(<}LYZ@X4IBm9I^5Q^$_(ThFFtNQHl>bjvUY!V-B=GK65sH*p{c`YUNj|z8 zpZCSwI%k)Wuh+{7BiFP1gi|O3TjRJOF2;ht0g1tF_z%C55(Sed3i+)GB_0y&u9!L^ zh*`}ck`lS6S!*Rv)^K#J*X6jjdO?IrZn2JAc@`x-A_EKg(*Y<9r zx(!)KViuTeR~}zlk4f>`mP)K@#f5 zJg0!hND#Y}{!nTUEkN(b$TkMcGJHt4Bn>+|H7ugjs=Sm!T}{KDu6N|Q-}+6K^Mr6y zCLgBB_szc{H$_UBuRCDRL4@^}^+a@VR7MIyP;!rB2^a(o=UIa^tRK|o#rZqxi>Vxg zLfX`RGGOAf;==NmtB$;de|tA#CuZ%}27H6jQu$+JW3=X++48gug*}ee9@ZXq9_Eu} zK%SJDLSmYXtO94&Zqn)~(7PgLMM7kxB&BZ3DmLPaoCO+$Z(BxuhYw7s_Kn7sfvI8sgU>T66;!1kO+Xat9L+kMghf-$ON4Nk8YN|nu!Uz>2$VEW0Rp`6$zJ0C zyl|QthFZG#gzpelD>ZdtK@+XKs=SJ&f_1QTUim{-qMiNMrRC;Y4-c1{={-4o))=13 zC|=&RT4?rAe#zxqqfY~RP2e2%Kg`?aNeT|uo3BWs0`~}j zo6FGycqQi6)w5*GsLw$L<)-018CWH?Mz+e)@t=-AQu>TSIk_a~V5vi0*5MT4&`ZRO zh{&&g{;C0hxj#3Y3XTd7F!s?8V-w(DLG8*Ue%bjqFmGjgGaMpEbiit#(NXVu73skJ zY1nw1f{J>UFps`gkH@9yTgn)1G&e)!y*Tkbd{FB`m6wLTb-2#zY8BTGi>)e&xjEus zjL_xJuGhY291?!#-Sf7K{S$QG%b+4fVa=|fR#rR_NhK`Ulrmr3 zM%t%s&6^$cfI}xAlE4_^nH^}@fEhNpTnAl79F#!Cv$`eR1`}cDS7qZdC zdLjTgJE405$_Uv-f|IBmbq5Z2t2flu+ZkLtae}1Q`HUR`8Ln zgUuITWMhI2p9`v3#eY{1G5EfN&z7(GdL>bwJF(whQ>&gp@wjWH{uGsW%xxPXEk9)H zx=bFzJMe)tvW36ih%epI>)+j0<&*!|I&Pu*wI89X|>^<_`6E@;M3_Upbf?V}rmVfMZ@gl&#@1qkIx}ADfOt*bdxThPg(-cv zKJ-pg1dq{vx%*s%8?W_+c3_^!@NI1BqRV>qO`ubviVl276=rxFqUChx)`K9DWN_J1 z1h_0pbEv}ZvLX2m_>i%^tg=qqHP=be!L-kQ&+__SX5DQ zT-25G@UyG+O)C-dcG9#~oMmI6cDu3ecpLCyUmjPOJFA4ow(22-$Sq0P{4i5C@i@I+ z2QF;gF|B%rNg!Ik5*$;4tc(~+ynE&o`T;zM)u>BKme=yU)PyG#hIp;? zpJ^=R7=D{0lzuELJ%2c6)O6LKc?X*0S@N`FeXEkx!Ss&2BMb*JrVL)=nE~<(jp`ab z9^#Eb4nIy`#QU)EL9?*m4V)Q!R;@a*N?b~dog;+~H|TqE(Hk65FR3 z8Bmj84OO#@gL3NBtba2*;`RYReFJ?q)R!`*x8!7?KFEC-)|$p;y~?#SW#zInJWwc? zKUOg{uSr8;Q!E}%*rx!?`l+`4H|;FW9YWB%BfGXPDRUJ{suseCTt|=5Y!uHIEmk}G zsA+c(AG@c`=ix1hH<%MAJJ;q$9<=@eC5M=l*aBCsAxhr}OpH2zqww?WN2LvGFvD z#Hn2PK83kMLK;J~ZDfy@^}OgCo&pqK3ccMX^+2VgLx|Am-ss=+EjMT3wrsiSyu0{3 zsAF~E81X~gnv^EgxcRTcE39R&?sqS{Nh$4uW|#toaf73)ue;%zte@bFt&&#N)E??@ zdhgrH-975O*2MnwD^Yq^Ut2s-pS{>o*y;TYw?W|;P%e-ZgEO&DVcAnx++eF{&^J2y z)#InHL0}4Hb&cPK;sR;+s33OV- zUj)7F0WHXdke-E;oaiUYOU4d>F7FTfzjmnYNY@T{fvl?>zk4|%T(#-Yvmb0z=b8Qi zsZE7OXI-Or=xHNepNbfspSA+>g#D?J(CK;nEk725a>9r4uSkDnSq|Mz>^ZdQ~{Xw26pafjJ zKFLqaEwL<0%)I>ES!(0(ytug!M3yWvLTp$dQn~l`Putr&D|lu(L;@MVqnZar?hY()mI4~M(0?I zX~fAIv4iwj*Q=p~%N|$?=qf+W7`zRWag73(4n8?#`hM1EI-OcspRDOmz`RE#H0L9mj-81uCa;F1YRs?V$i z`8Sk8P33qC#M{@7S^WEC9-L$zA#DvCn&`hzfiY>4cmqcce*r5wi{liu#n|r*dkz3g z+=A%bVy;YBVcjr;%;Hgsrju$ZVFc6&pV!%cy5`c`L^eXhEBkNK;HdXYT1kUo!vH^2 zo-{^uTrn5V2RF6Syu4YQ2vDR~K{}PCT#8!bXrbMn}jr#nXgNP<~`53y-GgM!V@0nF4@=hMQcB{@3j|Lov*f^IAcYgErAwm z82GlQE;b7-F37gbc4VYXZp7pdWwMR3b@FT$?U=ieVj`e**|NZXN82HQTdwF2BH^Ka zOKWFiV`pb;>-@=G%t0Paj|M|Y2hY~1^TDxq+!~2wWbHQ@{2RY~7`IkJB%FE{P&0u|TdGVuzeKcbmge zfS1)^x&6C`&@ynhzbY@J2f}Jb|Ku`qsR@u!F)V@ld`g2}WG$$^qW&9!W7t&tbcmoM z%&O3!L9wTX@ZlYNM`7XC^e`aJt*t%SwT~a*I{;$rF~szu1BOLrxc2IyVzNa^lN)zP@?IpyHfjSPqONYOy%_a58Ci<-lG2>GJ|2 zC6S`Gvh@uzhdcg*^%hPqx=-C6_otcXz^K*nacNU&+j`PmG1Zcj2vzi&E3L4t0R(Sm6WAA#~0B{e+kV1 zcO{N!7ADD4E4jrWO{HzK@jSrmkc0edDFu@O3D<{SCq4`IM~Vt}&Bi zoX&nV+jl}i4!zmwNF;TR@}eLqbb^?yeRHGhk@w<#S{J*yK_h;55W+5`-N7(zwO@TdTeu3)qat266&n46>und^ zor#T91CF2FAp2C=Eq3=ykUKV8zY910S#Fnrs;|s^{}-j`$g#;3p?2F1uJpU9%E+3S z@#se|BN*2RX&GtbOGnOR z-m8;wiR_^Bt^GyU8^MtALGdBaErN4=&RcPuFWw{LbY4;Z)r{l7$-?pslaAK6wRvRp ztH0bSCf)unimC`l{7io(zHqvklKkcBAD;e*e_52*LO(LxYwO0D--Kz$`L3{veySDt zy<>qn_7eMr;1uO|zt@~dPN>yd26b2-^~qhltztWw*dS-%bx!k3UOaX05_Q=&7H?&P z^L@SN#&1;LpO>P^{AQ2F5KcqX>S4-k@7W9{Uv9dND;&Pv@M|I&Ts2jMc{^~CH8TyE zwmvkGye-l-Uh(=KBIF%Ftan)Hus(VyPCTW*UkFvy)mTsP7Fm^ z12EaOZPk0<%!c#%8tB}k_?fKhYHX&mlb7`zGWy`NdDAwdi#8kRCbUIVX^`fj{`!av zer>vVnr@Uf{Nb&`FRA3cjcs^en+i-9yy;ghtav=ae)W6114_@xLJk&kz?5ZC*L8B$ zDxNi(gZB;*FAq=F)2JnIcTTqIaSD67(FLi3JXh&e=osGY^L9No`JOa2N-o3vQoD^w zKMx2AX!rk%qm!j@J>>|H8=|>Wn43h9jUtdtLI0p~HH$SUhCstZgb|dNfn17&++7LJ zGG9Sl&`AEoR$t8$^M36<_2GnYdl(~`DztP9)Ktg1*il!fFn63R&YyJE3ot8^qh`a( zZZ>^Yg#bDVTD0~Nlyd`N3NJ65&Q+5sEVwPaFT4*yYCvnam$pJ4){e)uNWy(HoWiX7Qr1?cr>4YU_$-zK!eQf7BKN1R+CUc_FPr~Vg&0iE;9Lu*tf)?oBTY?%h@*dax7?C~=;IweVhv&><8O3A&h@pZ0^!gb8TT4wh9v51e#m7)GAp4Imcl60! zvx=HZj)Y&v-VSrN{6LUFSJNE9J$&MpG-7Vyb&{%hH60ToG5%BW(4b_N9#OwjQlC>{ zf~JjAAz{DM$1nN+iovIDo@-7bh>3ji*lY@cx^rb3y|Of=1y9SKosIM0Rso?#0lwO0 zVdrv}$6}HwGh^r^5hQ(WYi3;dXiRx}#zOL6wd5E%)crbv3HTorbqdudO)Lmzcov&E z&?S>_A{Zn>8jy+kgMV`uULre!K$P1UCa%yT?40Rp^Ai!8-vx}wE%LUalDP_pp&a*& zk8=32P{FI#1q>KZcuMWW3$S>G%Xr(3!|T})#j$s;_ZSy9qj?2#a{n5s98rpTRb5+# zLX5x;t$(_jQ0(&`@jj#rX7Xw${M2(lnqq}=La0j;-f=5nU(4#swDxA8p&N=IGJR(y z6LRHMoDvSsQbGu4UI=M1pEmeLr_>^va=zviDPrLCI)FKx%r~Hn|OJbBa8t zm}Q>$#+X40RlV_S`On+%2Xv8iaBQM+iNxPkegrLZQ1}q}dR%5VgZP_wa&x41AcMlF z=VqHx>UN1DX8!8>ezC4WO@Smidk22Gw1 z0kGG-tD6DSR3tjSg0=F{0C^$ap2l|Q$0UHjfN%+c~et_#3eBCl)1;((2m^5 zNJ)MODf}yH?_DB(*6$k^>Vy>>fj=MsN}8viTudbsc{R;`&nD5>h8scXWQu&!#Mm;+ z$RjJ8dv_>PfIS?5hX(zl#QbRLLdleL3xgT@5uQ;&o#v_xw<_UN5lA>TY4hPG%Gi=+|fYNDfiMwX5 z62BsatM4NNyQ5 zs=1#nY%th6(gZ=iHsZ1)Ei|?B`vdaVe?O{yL>9k>*?+!x#-YgYAeWnu<1mV1g0kO* z6@{IjiY%C3exUV;-}7(~Vhuk&yU%4}?RuKmV{6;KPJVkyzDVpgsA{XJ@m;ZNA`$Vn zteQde@hh48rd}2;8}hWv-1GT!I5VFHjz@g-VB*x{<5a$F*&y%y!eB4v0zJbXFdIDF znJiUD@L8p5;o{aa6Bt5MY+5*RYhBwis-88_)iDsMcJLEc==o)mpb(mG+{H_L>$SFS z#b*YsWPDnG$}DaiMUk#20TP#;K;Pz5OsLl_;UXIIY+!`CVb&AwY+O3J4Wq&ke=$g+ zbxPw|uF$Q^nzuE;AjfA$I?pU&r=37pd(T-oad3stw0A4xJpGQaW)Qz8nG(-XUNeAW z#zH_;$@w+s6r^|ghS(mgW$XCk)_$0A}dQHMoyt!T?v)|VEi=XE|KoIF#Ro9{sZhf zQBPs;aRoR+)Z626-vX>ua*_h|U{)AxBjy+};gAr+>2X1bDaF-hL;E}@XtbH{j&;1t zr_sDGiDSNv+y%y=*i*eTe>`CwvfC-%eaI{x2J zQ3ATsnWpNbj|rcydws37n@MYVNjuaVL-!|0`=gKBsnF%# z-QTM9v}& z9~;Ij!G1p~vVFf_w_EZw_5*7pZu~Cgo!c~QpO)w zIYpcTstDU3&Fh{xE3PonBm8!AS3p8+zE8i=A0J|V$O%0ylx0JP0tO-K0+4HUoXak< zw)d^rwL4u;$i{`+4~$6Py8|Z3W#Bw1qNMjr*X81E{>748mxBoI#!kj&autapBJg^O z!@g|Xkcj1rj2w>`at_r>-n7#PTt=hcL$1Nc;H%lk*_gq2V zXtR@jN3dVx?eeO;9NF;g_qO+Yxyu$I$PM31@V%BK%eq+i+Y_w(6?@4Y6YFzoite@8 zn+1?SE<%)Hp|T(Q=nNiO7skTAx{Pt(vssk^yISVa@~#6&M#7hw>4FJ}IGdKHvgQEUwR(CZbeE zyUg8*UdSAG--xr8DjnTUglj417m5P#^lLQu8$1ufaF2!2VB=6Zf!<5PN^JY9%a;d5 zdT9T@(_Ow!JCfN#0$AG8T(TcSLi)swD9G{S5Qi~7efZrc9{Dv-1=^cN+)yevk}CPL zK!gVIKl<+OI$6R9shni!dg_4r7F!sK+867RVru5g>#bAmllDOtXlX=oT?(W=VhVh1 ztKUq{M!RGepl!%C`x(qT5BSgAEK%kQq z>N0j`?6SmJ?m<9NNRf)Ia%569bTkxIH~G@^?{#Q?0qhw@_gtU*F9?iKC?*uZARA~X z&Y32v3ds;RfEC&fI`(fjJfQ>`G&;0G7JNmyDAOc44yO(}l$oEE1ts4(?xph^t6<*+ zehQR(k9S2OSuy+Vc3)Y6SUw&Q)7M78+645|C+*?Sq$X{G<)W+C!k5RY*FY;{Icq4X zdRxv+R@{GoZ~_mSRNv-;G=*(=6Zd}9&qk%DO{sF~+Vodgs8>lg*u>Eq;K)pTq2PxJ z-&?+9=GXA-q9VWPjuVZ;-gLyGD71q4`MJf72KtYaFgeLtWXXrU{?)Y0 zaH!2)xWyW;CjEOt1Zp~DXf+=Uw}{&MBJ=a}I8(=!Y*J|YkOas31@k!)#@{4RikbmC z4%y@MGudgWOB+vXPZ&+Y3fsZ>6Gue_XEi@eQpi)moAu4w2>ISp!HQz$$N8Nsm|YX%iHqERJ?J;LU|n!SR51q9B}pd^=L-gU3l%hI&&bfScYwq^O0h?*nhmMV0E zsc7u^Ywd6Z2`WS4%h3vI=r^%>|FNEZBjf_;k~nQ?W*ov0DdcM|k7>_o&jcZv&cMl_ z?z+y}tWQ}5qNckee7B5F+Et+qT;&?=)L8Kj4Zr+J5($<}%pz+T1{y!&FD>qyrdyh! zKwIT{8`8t6el!cE(_xLZ_AwVnL;gh`;IA4h`SF7$`HT+o2ZCi328rQGJWvRfYC;mV zAz?_!U-7`X1R=Q2z-}1BpWVIPR7zqwl844Q9Jk#MlMj;%n#fcfmah2JOgTnk)Df$g z7?czrYh6C^^?i?@UdOE2P5u6jQe**C4;}THisQ>rw}sI_|x0w+#ELFS^TtHYZ zLMOao{>8sZ{D9ajyZ}0HCD<&G&}|Y(h`@8x`nmu!F6j3!6TaUlbuxZJgh|6BiIkRX zj+_-{E}M;GE34~D^S2;STsEe*kqmjYsJabQ0#0$^tq)0vaaw3HSE)w6C%654o`tZ@ ze4-|&HE)^RnQU8fJ)w2k@5XeQy7>+`7+~<5uH9_Rh|hw_Hg{EM^|;tVGkT3o)-rekXiXcw<$v(@_ucyAk|#eI3UVeVkR zJ^rD14`~4!oEC{n!WvB?^uNRVTY2ON$@huOI;K(B>&!17M)Hl^%F0JzzkQ8E?4gmg zF))db15HuJeV&zdCj@Q}m7cRMg}1D8xfxM)kt;$jat}(nQv=w%4dH?9qy;(*6*zby zlGNXc@InHX3=^iw2`P{Q1L^5L`4=Z$`jAL6qNsl?1>U_wKe0&$4H7(^PK#uK_Z=~U z6Bcy@e!l^Zm+|43crvNso5E{%4BHQgIY}krJ!ayfv?)pbqsyA)!IwT@nQ7gM`EO0j zBXV*tn#(Wu4Jle_XN8`1I%T|s6&CqRrA@lgnr#jBv$_WM%q(-dV+FdXiL=NOg~GX9 zh`HVyv3WKfQ#Neesi|plXV0o-)8z=seLtaZ>yd)U6-uK$839Sng3S^R~4KR+$ zF=X?V$*E=W6ea$I5x@png;a}!Hg59hOVvy7q$>V9-PpZq{#xZck#QRRMyf7@(u?uO zLK)pM&Ep2$IvrbX+X{<96{X{b0!;;*2Ag~pYp&90i;AUh^}1)tds1y06?1>7uL4Cq zvXqA@2`N8Q6kuf?gs3DHSa%pWG@VpvnwIE0G?a~5sFodf(*+D9)C{PcYLBWRB|$%u zjQ*n*kb^$_-Xsbt`TkMTxKrNG6|DgVC4RL!~&Myi$W{%%WkgvMCif zcf*vtZ3B5svSv44#7mEAl4kRV3bh#=zC;!*`qjm%aLJ8S{)P z+|i{n$};WL*E8B*0zh1zSoNp-7Cw9*Xh2g)M!28iq_L#=?HTEfaTBDjVHsdi3wmsT zOe6SNXzD=mOB{IJzTDCxw5Q%o>BlsCL z^%SLp{Bg;l+Ew+Mm5l5I@m#dTIa^E zSMLj3S~|5bCggeiDjPC)%6UDfRSJH33;D7Q{a?Dq|2$~%k6*ev#Ws&D9}ZPadsT zUE(#V2}^Pr*iO1d8A~+dSe7nRY8md45_H@3l-V5P`;3;3=L8wG-C6{-QTttWeh*Cu z6@QxVZG_qEZy@W!@2~i5lR{sxcIvVX{O*3P7_$?Fp@-gvlNn}@ayTmXon^D_FCfDB zhxz*5Mr~AN_Bi@NBE4V0EW#%xt`$mW=GX^);+k9>Oh*wqVCs4hQ``u#|NGUPoJ{W9Z4QaTpKPI}*t z?t42ftfKI-3o>Ab9KZfjd)!Vw%^y(J7i6!Kb?$5Ib9?Idw%YiSZZk7`>G2?T9QF`s z0jxJewso`iN5Ut3@9VH7PZG-|K?BbX`og@o~T38A4q7GFT&9@VlSDG6AwO6~8p7he3Tz7Ht~ym>)!?De9dS-S2F4t7sc+e$fit zR`k^{ckgY0=5Gz1!wV>?D%j>w6~;aKLFhCPL~4*UUpa(zhuV9u%JB&M5CG^AEgsPPxX zg@r5z7bs?sN4jX7>Z7sLl9a4qbvzm^O^+gKVP`QG{4EryZ5obHt0(t4r~^7m*M{aL z1&~s;tBRT_35A-g--4slv?{{c>t*-CO-%2&lDz?%v6RE)1({T-Zo& z#DKq(Gcq{|%0;<~RJaHNh#JKHRsRw-Bg921tmONLcCkP4V?fHGf@sDDT!s6XNwB1$ zGvB^bIw;l;Qog9leHo9pg5~pM5sgWr!iA0!FAKS&h9&eymq3R>?Hmv_E#{b{yk2FS zWkfT>8Jg5`qNg(K4+!_h^gOh^#r3eN2kt?bM+Ti_d!TA+)x<(ypdU`-$znK_sNtj| zWPwfsx0R$SVF1BY@aZBRa5c}%7Y|Jle$Yg`#PQU9)D0ztXsF~+8isa)gf5dnT+eCz zl8i{MIPOlTbTw$uTh>gU6@QpSs$`+p{i9Dup-WWBGH)E}*|(Se4vq1lKdC~he#~Ul zM8US4lMO0Hhs(==JU)q>g)dPcrd>9VsiacFwWIVzqe}((xS?7HIlZA-2c4*)+Tdr} zU5*Me(AZG9BP`LXI@Fc?6E81*@=sj6XRe!o<-GroP+sjos$Idi8MUCse2wJLnp3Ch z)4Jx7^xviYFTFN8qMOeYzTGY^hr6FK<9}_c>*|}zZ)q#UEOH5lRP_ZT6deuxW^nN5 z{2Tu@?_9Tzh!To)RM#|`W7Lsz9_TL&VGya&u@6OAGKMkEWI$CbrV+Jb%=BW2$ttTp z>cV9q`4Bt~qpM>`Z=`ls1&YFTqDhd18W6uYoetLE_kRKfUj%5*AUTAX#wM!cNq(?` zLPcTcT4fjyA(zIo1@{KDN6`r9PK-c0p0ik;q1HXEKsn~tut-qRk|_@i z%!yf#=Hock&X%&su08i+L4Bf)D2a!(C|hw6mT9z16ipw^2XBMrO<%!R?;5(G%9;jIMCO!X=)`irn$40vwzC+RL;6E@@q=>wd?e8E5yOZl%Kj8 zzl11|sa8<0({J!=%P9m7L2Yo&;mW2df}d&j9&8Y`U{U=&dhYL zImRqS?jvn)dv>4ORrQ~DZCy_ak9nJC7nTm48@s$+IEmz?y1t~v4ixuWXDAETX-m0@ zNp|>TvqrtcO>lUFAchwAoou=@%%3%U6B@%wFDnF~&M2wLIjW8vE@KoO>^fFs%s>?g z3OPayS3!SR4r?z6yixc`A z>`veP-hSt6Jk-9= zU%jS$ejJ2$F+Z)p9EZPd3Kx6N`-!ac<*vut#_#26qItece#a#7m&kLA^#!=?)GF15 zXeFI+mULY4WwQ6%*AndJzYQb2_f=O&{|{1v-{|6{=_^d|b%cxH39X^KoVnbc=eSI7 z9x>hIJ%O1lBt&L}6w)kbX!v#X#TZT4BPenh* zdM71LCpDL^?)7#t(7g?AC);dBSo9x?$F_VP-xr>rzbqHJ?5KM&H>o|%WCGMHFELps z%d`CbqglEeN@4GAt5WmBQ|#U`B`HZYZI5T=tM)K`?_V<$xVI>swKucgys2gcS9{p+ zevo<|aO33Kdd=7MTssH8-{286$F+W{cv_Mk9SXY+xxMwcKyThttCCY41`3moCq|L4 zJ2$vqoG!auzU_WIcCmK!z8OAE-u%vDJzB7jumRaFCta{u*D1FtaLhnqc^T{K84xtv zJ-s<;1Mca^laBn!1Wu~HscdKKuGrkKFpP1?rtRtaF3R)*)vACiA-KP)jSK}Ff<&FK z5sCvH4BUhRi6L#Ep@Z_HG9qGrLtz&v3l_P@eQdORl?5Cmr7rav0)%}$JhM&dBi=9$ z0@U+?{w+T7h~{8ktq=qZ2G-{LI-|@L{u1UxEuZtMNRm;ILxn<>5^}elnhZt{#jROsU*cwRR zMOAz;+O5Vpq$Op*obZSpAbbgxPI_6WHd9$){~TUmlEklsUr zpJJYB<*o}Ej?9a<>-VeldfX+|u+n?!QPiyG zA{-2_;pFv4k~-I$%jEWh9fOz^UF1VzKCZVvPnh_R2L2(Ydq<~3!J2I{+S5eUYHwu1 zjrG3NpbneVZkUeQr+!3X@|eeIC&MNV8QfYcp-tC3*r%KGPG2{-zEXi993|yh_@9p9fn&y15LHJ5E3DvhOBPVNm(U{iT}@jU%H* z9YUoD4^P$-sO#y*;pQ~>jP)*yfQD;XGi(z|(XC!3PeAEy0OAHXB zMlP{Xll{&)VMyy4nMWJ-p#bmwodG)uYc=gyucR;=!mcAt6rGc*c4u+10Nhe^99Qf- zStTQte@9F{;{*~F^}rO~Ed`1Mb|`P0JyonsVI>4By_-MWDW!-?!y;!=qM-6Y{mb!R z^6@QMhCq9q?++^6AM!(X|JX3`T0lmrUQ>dQOiM?zzcx4qHRM6gKOZTPI|d~*)t|#D zMmD&nC2-{QqvmwteVmP9N&||nJkqU>M`Pr#5)164iDxj{?Gt<#@Y`SPBSEA69H~XD zvsg(n9Ah5_KvNla_Mfyh;o)cFJZV62z^h^^y#L#54c?Icr0%QHLW^yG1cq3Tzr~a`L@Z$vwSpo02BB&qkff7efd~f znfiTwr(%^jJjji^?!zkrZ4UN3vLTOHdmr|_Pai(2{`{E?3Z|9U8OfKsCT+a`#QY*;H_NRlR?j`>QE3x3o338rTBa za6xgGU=jJ8JPpI1Y}2M?C=|NVHVM_UtkJQr-T2`*j-tdm*FqKs*>At-BKt`xg7U-~ z=Vyx{EjdeksR^7h>bPftn3>1&aaN{Ii6=~@L?iV|szlqC+j0azwSyN(9bg&7J_{8q z&ix||Ba7l%+kD_?sM58npOg|R&C|m}IpQP1#*kAR(Q4FPQ-y@u8S@(rVBv8qf`!K3 zbg`m-EEDqU+`4mRJ+yHG20Q}uq8@Meq4ldQ{q%}IfQ7k%g*{9fRA6_?!#(C@CaPpe zR2QFvqmY;yJ|OvmY^b1hS5=0wwYdFIE3Jbe=tpBv*|jnDk1Nx%8Jn6!f{}dp7VQ#l zdV6Y=cltjdcPi#^1Y$9gv8sBa(W)J#3f~i`vS>O~v#^nQ8)sg&cblKbU%dAf1ute` zUaK^16@Tz|k5kn(lDbl#>b)+*+RkoXo}Jpxs`_4L+B^^6xY%4bwoGJ+;Gc7?^VFX~Pp!kW-VoT~_H&h~G0xEmV6=nmbtlK(KD0AE6`NPt#@ah@y>e)w; z%a4lQ=dr7&K|GK9u;*X9>D&+7Rv3}DCFnwrccf|0Bp03NFNdo>m&Je=)#~NJ+^pup zXs=#x>annIS?seqcK2w~OZ;#~jnG@SIQZPoptV@ef;U-5Rj^4Yfa8d$r=WzKtV zq+W14ef6&NMg&;*F~Y3nWZbs-X@AwdFSBj);t|d~l*Vgp#-&LnfvEB9f!xNLH1`mV zq)0yKva0a&_+4?!8k3K}^VWlzKGG9L=4I93NlUAH8|gW$DH7Tsujhq+1qi`DdkuS} ztqmF$qp1DSiz5s#uJ2doz-GP=UXHA70?FfldXJ~Gh;Ii-Kat#~SDUQye}4F_zdVnd z+s*Q_vtyl^svSuqlzo47!{0~x^8Wv3-2MgKek0kFh`=pvhmGsmoeHl|>Mfc?BO!(ivoq>FjC(Us9Zl+GVM z)g;pVW(t|=_T(>YADtRSaMs(@)ip5-rRf-*Iz|x~TYW1q#)qunJX`Kp*!xIl=D0E1 zMeQshAUW)o)Vhk$#?kwx|@3Fs;w|>Fe%*=n%ibexFZhRDPtrq9-JbE*oJOI0; z@GQ^akbaA`#vYyGui0N_5BFOSy9bhM)G)l^`cCNtwQ}2g_m}Ywe8;sbTM}!VBk!R% zo+e^4MRoP+{m(nHN2fl`CQ=h2^sZApV`av!4xUdpHja!*id)Safo(@AD|#LYUOb&0 z9>=K7O0LU4%qE3Ec1I5EZ63Y6lgY~Pa9JcLd(lV4fG;|gel((q7ytP#w{NFddew1C ze$U)*ss}A*jM!y~t)X^svIDjO?88S(t@K@!tg`{>9pifU(ZNi=RsD|n~` zg9O~EpHcb^>GGfCmZ?6o*?ZfzCtd++!VoF4137FkN(i4y5GUM$xgcsd~WAu^*}%N zJ1Z3U5-K+mM88n+_}*VJMbKY_Trlm66s|Vy8^YQw;e z$jbPc)v&AJk)z}hmBO(~Oi^!zSP{Xh6+phUQCdE)<|&iuKq}^Cg8HxhG9~E4v#~x3 z1wv86QKlIh)o*mdT^rIF>lq$2Cgbx5Ten@^=oaeZ{@sv3|DgHnA+h8k!RkTN^5I%N zArT;cYo;$#xE6{+q~hrTN|rucji{J4suf*@9}QgnVLnimSH$FC8l^xu;W)Dxc0KKp zGR8m*D=Zm$2a?~`=KW;sM6lf4TrJE`k1&5 z=&PxtJ3G^Kd7lV#HN9`w4U5EJahgNcmU74Z-Gk%ouuMhgUT{j&c9SR0^4ZD=VVeIt zA4k1LkVJm~gV_Z73h*B{H5a%EJQz*CO=`~Qo@+j zC+BmmH_>uX;QqXqbWO5b;}{ump4GIh#L%u?i9LmgS)(j6vE3H*x0Yb9cDA z&N&iNK-$3PDnqS8B-+=h-wj7mt3%r7F#f7E(kR&%P0CPXzRXzU#mIc{`w32lXGdc_ zHzE4Vt7iW<-%#n3za;^WrED(lEImJRhiafNG7bXRsyn(9eAJEoeZV};ESX7$3<6iG z)E()EESc{cEXgX0n@*B0)<3Xg;8=y9{1e#zp$^EvD`ppJxzHAU0Jt_DOZygrnSZPs zz-40{0O&GnLy0CjQOXbqQqJTl%cWe^EClbz7ipX^REEB~j8mt0m8u;ZJ5oB(zGd)+ z%3+d02COU-B~Clw0*56_Ap?gchN1?}r=k;;V+h1aqWsh^-!EU9tQG4w(hmG1Qn%0H z-O{5yaYk6p{ML{qs4apbmlS78@rP)Y$=qf{fLX%*Ay{)(Ga9*nY}BCPkZKZ5RgrL$ zwOH(Au3U-}MXBWhJ63%351aPUyEQ|@xkf`3$_`yQpDh)%Z`vhY8Yv7yeyeEv`hP{^ zt}XzjlH>bHk3l~I!NJ3|!^-#np zPaa?=R~9#oSNKZJ;RByb+IrRIdiBl&@lLyf%V!yH}wAe-V%7n$@xjx6hH0FfTRv zf*g6AmcD+w|*n`%!c#1fUzNB()175I$YH9EW3^XD0Zip5cd1IQLenXdDfEh%utXF}_vM|KywjaFlf()_m#EOLU=_QdiDF}Z`r7o}ZYM5CY zIRZ!Z6!FjAhT6`H7Ao2OD`@o$6k5)eqMVi$rLDImDF*LLD>N3?3DBSkjZ#<6B`Y@h zS5Vzzc>BCp`j+A1*t2*>VVzs@YqX(^V~(+eWa4p94@0~UfEce%2!Pxf^Lib*p^ zA(TK_3L*3WPSL>1z{*}IMv)Lpa1L$6cUra9A1VY{6UJ3DM`bppuyPp8+NRvr+8Oal zHab^>KVs98scgn_1Q7mZ=!;2jhnF-m-uK%7Q}Yuo%bcAoimRH5cv9{EBfVqqkwrnj zM~!kj`1A>q9A7ITkt2kj)0hbnypclAj=!!c%-5hTs#q{*KfD%5)j6;_uqrvQvN~w# zARBUwnGEY>{iIrWrFQ1250M-WLsX(I7&e2)3dT|b(Murzr5!hEV*%|3g$g>8YtUk0 z#l?uNN!urBY(QI7tke!h+@W%tmP8-?-n;8%#nS|etNCIvLK#XChN?tx86ntEAZOw%n8Pk(}~U1$DcR4H$E>%{}A+p&Fb*T=-IGY zB)a#r38_bWrk6q5*oXIV?O~F?WZdk=NOwkrxR`;*TE3ObY<$DvK(1_jdT#dhA?4

weXuBbeM@Js)3sxP%FN%cW_lHY!Ef$wI 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

5R)C(xBoeMw1+q-9HxCon8+X}0Kd_1n9{Tl45p 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 literal 5750009 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

}^yOHH*v1!Qn7B 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�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