summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/AVR_Dx_IAR/protected_io/protected_io.h
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS/Demo/AVR_Dx_IAR/protected_io/protected_io.h')
-rw-r--r--FreeRTOS/Demo/AVR_Dx_IAR/protected_io/protected_io.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/FreeRTOS/Demo/AVR_Dx_IAR/protected_io/protected_io.h b/FreeRTOS/Demo/AVR_Dx_IAR/protected_io/protected_io.h
new file mode 100644
index 000000000..bae4c5ea2
--- /dev/null
+++ b/FreeRTOS/Demo/AVR_Dx_IAR/protected_io/protected_io.h
@@ -0,0 +1,81 @@
+/**
+ * \file
+ *
+ * \brief Configuration Change Protection write functions
+ *
+ (c) 2018 Microchip Technology Inc. and its subsidiaries.
+
+ Subject to your compliance with these terms,you may use this software and
+ any derivatives exclusively with Microchip products.It is your responsibility
+ to comply with third party license terms applicable to your use of third party
+ software (including open source software) that may accompany Microchip software.
+
+ THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
+ EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
+ WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
+ PARTICULAR PURPOSE.
+
+ IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
+ INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
+ WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
+ BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
+ FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
+ ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
+ THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
+ *
+ */
+
+#ifndef PROTECTED_IO_H
+#define PROTECTED_IO_H
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(__DOXYGEN__)
+//! \name IAR Memory Model defines.
+//@{
+
+/**
+ * \def CONFIG_MEMORY_MODEL_TINY
+ * \brief Configuration symbol to enable 8 bit pointers.
+ *
+ */
+#define CONFIG_MEMORY_MODEL_TINY
+
+/**
+ * \def CONFIG_MEMORY_MODEL_SMALL
+ * \brief Configuration symbol to enable 16 bit pointers.
+ * \note If no memory model is defined, SMALL is default.
+ *
+ */
+#define CONFIG_MEMORY_MODEL_SMALL
+
+/**
+ * \def CONFIG_MEMORY_MODEL_LARGE
+ * \brief Configuration symbol to enable 24 bit pointers.
+ *
+ */
+#define CONFIG_MEMORY_MODEL_LARGE
+
+//@}
+#endif
+
+/**
+ * \brief Write to am 8-bit I/O register protected by CCP or a protection bit
+ *
+ * \param addr Address of the I/O register
+ * \param magic CCP magic value or Mask for protection bit
+ * \param value Value to be written
+ *
+ * \note Using IAR Embedded workbench, the choice of memory model has an impact
+ * on calling convention. The memory model is not visible to the
+ * preprocessor, so it must be defined in the Assembler preprocessor directives.
+ */
+extern void protected_write_io(void *addr, uint8_t magic, uint8_t value);
+
+/** @} */
+
+#endif /* PROTECTED_IO_H */