MPAE-16135: Moving project files to new rebase branch

master
Nathaniel Thompson 2023-08-17 11:20:50 -07:00
rodzic 3bbd7f69a0
commit dcc384a7c8
69 zmienionych plików z 5959 dodań i 28 usunięć

9
.gitignore vendored
Wyświetl plik

@ -2,5 +2,12 @@
/**/build/*
/**/nbproject/*
!/**/nbproject/*.xml
/**/dist/*
/**/[Ff]ree/production/*
/**/[Pp]ro/production/*
/**/.generated_files/*
# Uncomment these to include hex/elf files
!/**/[Ff]ree/production/*.hex
#!/**/[Ff]ree/production/*.elf
!/**/[Pp]ro/production/*.hex
#!/**/[Pp]ro/production/*.elf

Wyświetl plik

@ -4,8 +4,8 @@
"content": {
"metaDataVersion": "1.3.0",
"name": "com.microchip.mcu8.mplabx.project.avr128db48-basic-uart-comms-mcc",
"version": " ",
"displayName": "",
"version": "1.0.0",
"displayName": "AVR128DB48 Basic Uart Comms",
"projectName": "avr128db48-basic-uart-comms-mcc",
"shortDescription": "Project is anAVR128DB48 lab covering UART communications",
"ide": {
@ -19,12 +19,12 @@
}
],
"dfp": {
"name": "",
"semverRange": ""
"name": "AVR-Dx_DFP",
"semverRange": "^2.3.272"
},
"configurator": {
"name": "",
"semverRange": ""
"name": "MCC",
"semverRange": ">=5.5.7"
},
"device": {
"metaDataVersion": "1.0.0",
@ -36,9 +36,9 @@
"versionRange": "*"
}
},
"author": "Prasad Aradhya",
"peripherals": [],
"keywords": [],
"author": "Microchip",
"peripherals": ["USART"],
"keywords": ["USART","UART","MCC","Melody", "INT"],
"additionalData": {
"longDescription": {
"metaDataVersion": "1.0.0",

215
README.md
Wyświetl plik

@ -2,41 +2,220 @@
[![MCHP](images/microchip.png)](https://www.microchip.com)
# Update the title for avr128db48-basic-uart-comms-mcc here
<!-- This is where the introduction to the example goes, including mentioning the peripherals used -->
# Basic Bidirectional UART Communication Using the AVR128DB48
## Overview
This project uses the MPLAB® Code Configurator (MCC) Melody graphical programming tool to configure the AVR128DB48 device populating a Curiosity Nano (Cnano) board to receive and output single ASCII characters over the integrated Serial/CDC port. When the switch on the Cnano board is pressed, a pin change interrupt is triggered and the ASCII character 'S' is transmitted over the Universal Asynchronous Receiver Transmitter (UART), converted to the USB protocol and then displayed in the MPLAB Data Visualizer terminal window. When the ASCII character 'T' (note the capitalization) is entered in the Data Visualizer terminal window, the value is transmitted over USB and then converted to the UART protocol. A UART Receive interrupt will then be triggered and the LED on the Cnano board will toggle ON/OFF. Note that any other character will not generate the interrupt.
![Basic Bidirectionsl UART Communications](images/mainImage.png)
**Note:** The following project can be used as a reference for most AVR® devices with some modification.
## Related Documentation
- [Get Started Now With AVR® Microcontrollers (MCUs)](https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/8-bit-mcus/avr-mcus/get-started-now?utm_source=GitHub&utm_medium=TextLink&utm_campaign=MCU8_MMTCha_avrdb&utm_content=avr128db48-basic-uart-comms-mplab-mcc-github&utm_bu=MCU08) - Includes tool installation and other introductory resources
- [AVR128DB48 Device Homepage](https://www.microchip.com/en-us/product/AVR128DB48?utm_source=GitHub&utm_medium=TextLink&utm_campaign=MCU8_MMTCha_avrdb&utm_content=avr128db48-basic-uart-comms-mplab-mcc-github&utm_bu=MCU08) - Includes data sheet and other related documentation
- [Universal Asynchronous Receiver and Transmitter (UART) Peripheral Homepage](https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/8-bit-mcus/core-independent-and-analog-peripherals/communication-connectivity-peripherals/uart-peripherals?utm_source=GitHub&utm_medium=TextLink&utm_campaign=MCU8_MMTCha_avrdb&utm_content=avr128db48-basic-uart-comms-mplab-mcc-github&utm_bu=MCU08) - Includes additional reference documentation
- [MCC Melody API Reference for AVR MCU Families Version 14](https://onlinedocs.microchip.com/oxy/GUID-41EA2496-1EE8-4319-A387-9EC9318EF178-en-US-14/GUID-F7F7BDF5-134D-4F8A-B6A7-D368C8DDA312.html)
## Software Used
<!-- All software used in this example must be listed here. Use unbreakable links!
- MPLAB® X IDE 5.30 or newer [(microchip.com/mplab/mplab-x-ide)](http://www.microchip.com/mplab/mplab-x-ide)
- MPLAB® XC8 2.10 or a newer compiler [(microchip.com/mplab/compilers)](http://www.microchip.com/mplab/compilers)
- MPLAB® Code Configurator (MCC) 3.95.0 or newer [(microchip.com/mplab/mplab-code-configurator)](https://www.microchip.com/mplab/mplab-code-configurator)
- MPLAB® Code Configurator (MCC) Device Libraries PIC10 / PIC12 / PIC16 / PIC18 MCUs [(microchip.com/mplab/mplab-code-configurator)](https://www.microchip.com/mplab/mplab-code-configurator)
- Microchip PIC18F-Q Series Device Support (1.4.109) or newer [(packs.download.microchip.com/)](https://packs.download.microchip.com/) -->
- [MPLAB® X IDE 6.1.0](https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide?utm_source=GitHub&utm_medium=TextLink&utm_campaign=MCU8_MMTCha_avrdb&utm_content=avr128db48-basic-uart-comms-mplab-mcc-github&utm_bu=MCU08) or newer
- [MPLAB® XC8 2.41.0](https://www.microchip.com/en-us/tools-resources/develop/mplab-xc-compilers?utm_source=GitHub&utm_medium=TextLink&utm_campaign=MCU8_MMTCha_avrdb&utm_content=avr128db48-basic-uart-comms-mplab-mcc-github&utm_bu=MCU08) or newer
- MPLAB® X IDE 6.1.0 or newer [(MPLAB® X IDE 6.1)](https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide?utm_source=GitHub&utm_medium=TextLink&utm_campaign=MCU8_MMTCha_MPAE_Examples&utm_content=avr128db48-basic-uart-comms-mcc-github)
- MPLAB® XC8 2.41.0 or newer compiler [(MPLAB® XC8 2.41)](https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-xc-compilers?utm_source=GitHub&utm_medium=TextLink&utm_campaign=MCU8_MMTCha_MPAE_Examples&utm_content=avr128db48-basic-uart-comms-mcc-github)
## Hardware Used
<!-- All hardware used in this example must be listed here. Use unbreakable links!
- PIC18F47Q10 Curiosity Nano [(DM182029)](https://www.microchip.com/Developmenttools/ProductDetails/DM182029)
- Curiosity Nano Base for Click boards™ [(AC164162)](https://www.microchip.com/Developmenttools/ProductDetails/AC164162)
- POT Click board™ [(MIKROE-3402)](https://www.mikroe.com/pot-click) -->
- [AVR128DB48 Curiosity Nano Evaluation Kit for AVR MCU version](https://www.microchip.com/en-us/development-tool/EV35L43A?utm_source=GitHub&utm_medium=TextLink&utm_campaign=MCU8_MMTCha_avrdb&utm_content=avr128db48-basic-uart-comms-mplab-mcc-github&utm_bu=MCU08)
## Setup
## Hardware Configuration Using the MCC Melody
Create a new project inside of MPLAB X IDE and open the MPLAB Code Configurator (MCC) Melody plug-in by either clicking the icon at the top of the IDE or by selecting `Tools>Embedded>MPLAB Code Configurator v.x: Open/Close`.
Once inside the MCC Melody plug-in, add an instance of the UART peripheral from the Device Resources:
![Add UART Peripherals](images/addUART.png)
Once added, configure the UART as follows:
Next, configure the UART by selecting the UART(None) instance in either the **Project Resources** panel or the **Builder** tab to open the **Easy View** window.
![Select UART(None)](images/selectUART(None).png)
The AVR128DB48 populating the Cnano board features five USART peripherals. The correct UART must be selected as the hardware that converts the UART signal to and from USB connects to specific pins on the device. Determining which UART and pins to use can be found in the AVR128DB48 Cnano schematic. A link to the schematic is available in the **Kit Window** which should open whenever a Cnano board is connected to the computer and MPLAB X IDE is open or by selecting *Window>Kit Window* inside of the IDE.
![Curiosity Nano Kit Window](images/curiosityNanoKitWindow.png)
The first page of the schematic features a connection interface diagram including the UART and associated pins needed to interface with the integrated Serial/CDC port. In this instance, connect USART3 to pins RB4 for the transmit signal (TX) and RB5 for the receive signal (RX).
![Curiosity Nano Kit Window](images/curiosityNanoConnections.png)
Also note that the integrated LED is connected to pin PB3 and the switch is connected to pin PB2.
Inside **Easy View** select USART3 from the UART PLIB Selector.
![Select USART3](images/selectUSART3.png)
The image below presents how the **Builder** window will look:
![USART3 Builder](images/usart3PLIB.png)
Select the USART3 driver either from the **Project Resources** panel or from the **Builder** window to open the **Easy View** settings in the **USART3** tab.
![Open USART3 Easy View](images/openingUSART3EasyView.png)
Inside **Easy View** enable interrupts in the Interrupt Settings section by toggling the Interrupt Driven slider to the ON position and leaving all other settings at their default:
![Enable USART3 Interrupts](images/enableUSART3Interrupts.png)
Select the **USART3PLIB** instance in the **Builder** window to open its **Easy View** and ensure that both Receive and Transmit interrupts have been enabled:
![USART3 PLIB Interrupts](images/USART3PLIBInterrupts.png)
In the **Pin Grid View** pane at the bottom of the Melody interface, connect the USART3 RX2 signal to pin RB5 (package pin #17) and the USART3 TX2 signal to pin RB4 (package pin #16) by clicking the lock icon associated with them:
![USART3 Pin Grid View Configuration](images/USART3PinGridView.png)
Next, configure the pins associated with the Curiosity Nano switch and LED.
In the **Pin Grid View** pane, connect pin PB2 (package pin #6) that is connected to the switch (SW0) on the Curiosity Nano board as a GPIO input, and pin PB3 (package pin #7) connected to the LED (LED0) as an output by clicking the appropriate grid square for the associated signal:
![Connecting Switch and LED pins](images/connectSW0andLED0.png)
Go to *Project Resources>System>Pins* to open the associated **Easy View**.
![Select Pins](images/selectPins.png)
In the Custom Name column, rename pin PB2 to "SW0" and pin PB3 to "LED". This will make it easier to navigate and use the generated API.
![Rename Pins](images/renamePins.png)
Note from the Curiosity Nano schematics that the SW0 is active LOW and connected directly to pin PB2 through a current limiting resistor. To eliminate unknown states, the switch pin will need to have a pull-up resistor. The AVR128DB48 device family features integrated *Weak PullUps* which can be enabled by checking the box for the associated pin in the Weak Pullup column of the **Easy View**:
![Enabling Weak Pullups](images/enableWeakPullups.png)
An Input/Sense Configuration (ISC) will be generated when the voltage on the pin associated with SW0 changes. Since the switch on the Curiosity Nano board is active LOW, this means that the switch resting state will be HIGH until pressed. Therefore, the Input/Sense Configuration column setting for the SW0 pin is configured to trigger on the Sense Falling Edge transition of the pin voltage using the drop-down menu:
![Enabling Sense Falling Edge](images/negativeISC.png)
Finally, enable global interrupts to use interrupts on the AVR128DB48, by navigating to *Project Resources>Interrupt Manager*.
![Interrupt Manager](images/openInterruptManager.png)
Then select 'Global Interrupt Enable'.
![Select Global Interrupt Enable](images/selectGIE.png)
Click the **Generate** button in the **Project Resources** to generate the API based on the above configurations:
![Generate Code](images/generateAPI.png)
## Using Interrupts in Generated API
Navigate to the **Projects** tab in MPLAB X IDE. Locate the `USART3.c` source file by expanding the folders `basicUARTcomms_AVRDB>Source Files>MCC Generated Files>uart>src>usart3.c`. Double click `usart3.c` to open and do the following:
Scroll down to `USART3_ReceiveISR()`. When the UART detects a received value on its receive (RX) pin, an interrupt will be generated and this section of code will be executed:
![USART3 Receive ISR](images/USART3receiveISR.png)
Inside of the Interrupt Service Routine (ISR), locate the section that reads the received value. This is done using the `regValue` variable to read the contents of the USART3 Receive Register (U2RXB) .
![Locating the reg_value Variable](images/locating_regValue.png)
**Note:** Reading the U2RXB register clears the value inside of the register.
This variable checks the value received. If it is the character "T", it toggles the LED ON/OFF, but if it isn't, nothing happens. To do this, use the regValue variable along a generated macro called `LED_Toggle()`, based on the unique name given to pin PB3 in the previous section, inside of an `if` statement, as follows:
` if(regValue == 'T')LED_Toggle();`
Add the above code immediately below the `regValue = U2RXB;` in the receive ISR:
![Using the LED_Toggle() Macro](images/togglingTheLED.png)
**Note:** The `LED_Toggle()` macro can be viewed in the `pins.h` header file located in `basicUARTcomms_AVRDB>Header Files>MCC Generated Files>system>pins.h`:
![Locating the LED_Toggle Macro](images/locatingLED_Toggle.png)
Next, configure the SW0 interrupt to transmit the character 'S' over the UART when pressed. Navigate to the `pins.c` file in `basicUARTcomms_AVRDB>Source Files>MCC Generated Files>system>src>pins.c`. Scroll through the file to locate the `SW0_DefaultInterruptHandler()` ISR named after the custom name added to pin PB2 in the previous section:
![Locating the SW0 ISR](images/SW0_ISR.png)
Inside the ISR, add the following code to transmit the character 'S' using the `USART3_Write()` when the SW0 is pressed below the commented section:
` USART3_Write('S');`
![Adding the USART3_Write()](images/addingUARTWrite.png)
To use the `USART3_Write()`, the `USART3.h` file must be added. Scroll to the top of the `pins.c` source file and add the following code immediately below the `#include "../pins.h"` include:
` #include "../../uart/USART3.h"`
![Including USART3.h](images/includeUSART3header.png)
Finally, program the AVR128DB48 by hitting the **Make and Program Device Main Project** button at the top of the IDE:
![Make and Program Device](images/makeANDprogram.png)
<!-- Explain how to connect hardware and set up software. Depending on complexity, step-by-step instructions and/or tables and/or images can be used -->
## Operation
<!-- Explain how to operate the example. Depending on complexity, step-by-step instructions and/or tables and/or images can be used -->
The Data Visualizer MPLAB X IDE plugin will verify the operation of the project.
Click the **Data Visualizer** button at the top of the IDE to open:
![Open Data Visualizer](images/openDataVisualizer.png)
The Data Visualizer displays the AVR128DB48 Curiosity Nano board and associated COM port. Note that your COM port number may differ from what is shown below.
![Data Visualizer](images/dataVisualizer.png)
The terminal window will be the only one used so the rest can be closed as shown below. Begin communication between the COM port and terminal by hovering the COM port instance and selecting the **Display as text in the terminal** button:
![Select Terminal](images/selectTerminal.png)
Verify that the USART3 receive interrupt is working by clicking inside of the terminal window and entering the character 'T'. This action toggles the LED on the Curiosity Nano board ON/OFF. Entering any other character should have no effect
Verify the SW0 interrupt on change by pressing the switch on the Curiosity Nano board. The character 'S' will show as output to the terminal.
![Verify Demo](images/verify.gif)
## Summary
<!-- Summarize what the example has shown -->
This example demonstrates basic UART transmit and receive functionality using an AVR128DB48 microcontroller and MPLAB X with MCC melody.

Wyświetl plik

@ -0,0 +1,113 @@
#
# There exist several targets which are by default empty and which can be
# used for execution of your targets. These targets are usually executed
# before and after some main targets. They are:
#
# .build-pre: called before 'build' target
# .build-post: called after 'build' target
# .clean-pre: called before 'clean' target
# .clean-post: called after 'clean' target
# .clobber-pre: called before 'clobber' target
# .clobber-post: called after 'clobber' target
# .all-pre: called before 'all' target
# .all-post: called after 'all' target
# .help-pre: called before 'help' target
# .help-post: called after 'help' target
#
# Targets beginning with '.' are not intended to be called on their own.
#
# Main targets can be executed directly, and they are:
#
# build build a specific configuration
# clean remove built files from a configuration
# clobber remove all built files
# all build all configurations
# help print help mesage
#
# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
# .help-impl are implemented in nbproject/makefile-impl.mk.
#
# Available make variables:
#
# CND_BASEDIR base directory for relative paths
# CND_DISTDIR default top distribution directory (build artifacts)
# CND_BUILDDIR default top build directory (object files, ...)
# CONF name of current configuration
# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)
# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)
# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)
# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)
# CND_PACKAGE_NAME_${CONF} name of package (current configuration)
# CND_PACKAGE_PATH_${CONF} path to package (current configuration)
#
# NOCDDL
# Environment
MKDIR=mkdir
CP=cp
CCADMIN=CCadmin
RANLIB=ranlib
# build
build: .build-post
.build-pre:
# Add your pre 'build' code here...
.build-post: .build-impl
# Add your post 'build' code here...
# clean
clean: .clean-post
.clean-pre:
# Add your pre 'clean' code here...
# WARNING: the IDE does not call this target since it takes a long time to
# simply run make. Instead, the IDE removes the configuration directories
# under build and dist directly without calling make.
# This target is left here so people can do a clean when running a clean
# outside the IDE.
.clean-post: .clean-impl
# Add your post 'clean' code here...
# clobber
clobber: .clobber-post
.clobber-pre:
# Add your pre 'clobber' code here...
.clobber-post: .clobber-impl
# Add your post 'clobber' code here...
# all
all: .all-post
.all-pre:
# Add your pre 'all' code here...
.all-post: .all-impl
# Add your post 'all' code here...
# help
help: .help-post
.help-pre:
# Add your pre 'help' code here...
.help-post: .help-impl
# Add your post 'help' code here...
# include project implementation makefile
include nbproject/Makefile-impl.mk
# include project make variables
include nbproject/Makefile-variables.mk

File diff suppressed because one or more lines are too long

Wyświetl plik

@ -0,0 +1,114 @@
:100000000C947D000C94DF020C94DF020C94DF0250
:100010000C94DF020C94DF020C94DF020C94DF02DC
:100020000C94B7020C94DF020C94DF020C94DF02F4
:100030000C94DF020C94DF020C94DF020C94DF02BC
:100040000C94DF020C94DF020C94DF020C94DF02AC
:100050000C94DF020C94DF020C94DF020C94DF029C
:100060000C94C1020C94DF020C94DF020C94DF02AA
:100070000C94DF020C94DF020C94BC020C94DF029F
:100080000C94DF020C94DF020C94DF020C94CB0280
:100090000C94DF020C94DF020C94DF020C94DF025C
:1000A0000C94DF020C94DF020C94DF020C94DF024C
:1000B0000C94DF020C94F4010C94C6020C94DF0241
:1000C0000C94DF020C94DF020C94DF020C94DF022C
:1000D0000C94DF020C946E020C94DF020C94DF028D
:1000E0000C94DF020C94DF020C94DF020C94DF020C
:1000F0000C94DF024000402F800011241FBECFEF80
:10010000CDBFDFE7DEBFE4EFF0E040E019C0B7911C
:10011000A79137912791079107FD0EC0979187917D
:10012000EF01F92FE82F0BBF07900D92A217B3072D
:10013000D9F7FE011BBE04C01D92A217B307E1F759
:10014000E93FF40721F70E94DC020C94A302F89423
:02015000FFCFDF
:100152000F931F93CF93DF9340E054E0FA01108294
:1001620020E234E089E0F901808380E494E0FC013C
:100172001082C0E6D4E01882A0E8B4E01C9200EA43
:1001820014E0F8011082FA01148261E0F90164833B
:10019200FC0114821C8214961C921497F80114829A
:1001A200FA01108A118A128A138A148A158A168A07
:1001B200178AF901108A118A4BE0428B138A148A3A
:1001C200158A168A178AFC01108A118A128A138AE2
:1001D200148A158A168A178A188A198A1A8A1B8A11
:1001E2001C8A1D8A1E8A1F8A50961C92509751960D
:1001F2001C92519752961C92529753961C92539767
:1002020054961C92549755961C92559756961C924A
:10021200569757961C92F801108A118A128A138AED
:10022200148A158A168A178AE0EEF5E01186118281
:10023200108214821682178210861582128213820D
:10024200128683EE92E080931E4090931F4084EECC
:1002520092E080931C4090931D4085ED92E0809344
:100262001A4090931B4085EE92E080931840909341
:0C0272001940DF91CF911F910F9108956A
:10027E00E0912E40F0E0EE0FFF1FE050F04C1082A8
:10028E0011828091610882FF11C0E0912E40F0E052
:10029E00EE0FFF1FE050F04C808182608083E09172
:1002AE002840F0912940309709F009958091610816
:1002BE0081FF0CC0EAE2F0E4808181608083E091EE
:1002CE002440F0912540309709F0099580916108FE
:1002DE0086FF11C0E0912E40F0E0EE0FFF1FE050C0
:1002EE00F04C808184608083E0912640F09127401D
:1002FE00309709F0099590916008943519F488E0CB
:10030E008093270480912E408F5F877020912D401F
:10031E00821769F0E0912E40F0E0E05FFF4B908392
:10032E0080932E4080912C408F5F80932C40E091E3
:0E033E002040F0912140309709F00995089574
:10034C0040E068ED80E690E00E94D00240E068ED6D
:10035C0081E690E00E94D00240E068ED85E690E0F6
:10036C000E94D00240E068ED88E790E00E94D00245
:10037C004CE068ED88E690E00E94D00240E068ED29
:10038C0089E690E00E94D00240E068ED80E790E0C2
:10039C000E94D00240E068ED8CE790E00E94D00211
:1003AC0040E068ED82E690E00E94D00240E068ED0B
:1003BC0083E690E00E94D00240E068ED84E690E095
:1003CC000E94D00240E068ED80E890E00E94D002EC
:0C03DC00E0E6F0E0858181FFFDCF089590
:1003E8001F920F920FB60F9211240BB60F922F93F4
:1003F8003F934F935F936F937F938F939F93AF93A5
:10040800BF93EF93FF93399B05C0E0911E40F09195
:100418001F400995389B05C0E0911C40F0911D4094
:1004280009953A9B05C0E0911A40F0911B40099547
:100438003B9B05C0E0911840F091194009958FEF5A
:1004480087B9FF91EF91BF91AF919F918F917F9164
:100458006F915F914F913F912F910F900BBE0F902D
:080468000FBE0F901F901895C4
:100470008FE391E08093224090932340E0E6F8E000
:1004800083E896E08087918780E9858380EC868386
:1004900083E08783138614861686158686EE92E09F
:1004A000809328409093294087EE92E080932640E5
:1004B0009093274088EE92E08093244090932540CB
:1004C00010922A4010922B4010922E4010922D40F4
:0C04D00010922C4085818068858308957F
:1004DC001F920F920FB60F9211240BB60F922F93FF
:1004EC003F934F935F936F937F938F939F93AF93B0
:1004FC00BF93EF93FF930E943F01FF91EF91BF9148
:10050C00AF919F918F917F916F915F914F913F919F
:10051C002F910F900BBE0F900FBE0F901F90189540
:10052C0040E068ED80E191E00E94D002E0E1F1E072
:0A053C0012821382789480E0089583
:10054600EC010E94EA020E94E902CE010E94EB023F
:06055600CE010E94E1024B
:10055C000E94A6010E94A9000E9438020E949602E5
:02056C000895F0
:0A056E008F938FEF83B98F911895DA
:0A0578008F938FEF8BB98F911895C8
:0A0582008F938FEF8FB98F911895BA
:0A058C008F938FEF83BB8F911895BA
:0A0596008F938FEF87BB8F911895AC
:0A05A0001BBEFC0164BF40830895F8
:0805AA0083E50E94D9020895C7
:0605B20080936208089529
:0605B8000E94AE02FFCF1D
:0405BE000C94000099
:0405C2000E94A700EC
:0205C600089596
:0205C800089594
:0205CA00089592
:0205CC00089590
:0205CE0008958E
:0205D00008958C
:0205D20008958A
:0205D400089588
:0205D600089586
:02000004008278
:090000000000000000C00800002F
:00000001FF

Wyświetl plik

@ -0,0 +1,888 @@
Archive member included to satisfy reference by file (symbol)
c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
build/default/production/mcc_generated_files/system/src/config_bits.o (__do_copy_data)
c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o (exit)
c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o) (_Exit)
c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o) (_exit)
Discarded input sections
.data 0x0000000000000000 0x0 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
.bss 0x0000000000000000 0x0 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
.text 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/clock.o
.data 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/clock.o
.bss 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/clock.o
.text.CFD_Enable
0x0000000000000000 0x10 build/default/production/mcc_generated_files/system/src/clock.o
.text.CFD_Disable
0x0000000000000000 0x12 build/default/production/mcc_generated_files/system/src/clock.o
.text 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/pins.o
.data 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/pins.o
.bss 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/pins.o
.text.IO_PB1_SetInterruptHandler
0x0000000000000000 0xa build/default/production/mcc_generated_files/system/src/pins.o
.text.IO_PB0_SetInterruptHandler
0x0000000000000000 0xa build/default/production/mcc_generated_files/system/src/pins.o
.text.SW0_SetInterruptHandler
0x0000000000000000 0xa build/default/production/mcc_generated_files/system/src/pins.o
.text.LED_SetInterruptHandler
0x0000000000000000 0xa build/default/production/mcc_generated_files/system/src/pins.o
.text 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/config_bits.o
.data 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/config_bits.o
.bss 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/config_bits.o
.text 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/system.o
.data 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/system.o
.bss 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/system.o
.text 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/protected_io.o
.data 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/protected_io.o
.bss 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/protected_io.o
.text 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/interrupt.o
.data 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/interrupt.o
.bss 0x0000000000000000 0x0 build/default/production/mcc_generated_files/system/src/interrupt.o
.text 0x0000000000000000 0x0 build/default/production/mcc_generated_files/uart/src/usart3.o
.data 0x0000000000000000 0x0 build/default/production/mcc_generated_files/uart/src/usart3.o
.bss 0x0000000000000000 0x0 build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_Deinitialize
0x0000000000000000 0x1e build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_TransmitEnable
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_TransmitDisable
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_AutoBaudSet
0x0000000000000000 0x28 build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_AutoBaudQuery
0x0000000000000000 0xa build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_IsRxReady
0x0000000000000000 0xe build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_IsTxReady
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_IsTxDone
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_ErrorGet
0x0000000000000000 0x2a build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_Read
0x0000000000000000 0x40 build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_FramingErrorCallbackRegister
0x0000000000000000 0xe build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_OverrunErrorCallbackRegister
0x0000000000000000 0xe build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_ParityErrorCallbackRegister
0x0000000000000000 0xe build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_RxCompleteCallbackRegister
0x0000000000000000 0xe build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_Enable
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_Disable
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_ReceiveEnable
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_ReceiveDisable
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_IsAutoBaudDetectError
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_AutoBaudDetectErrorReset
0x0000000000000000 0x28 build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_ReceiveInterruptEnable
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_ReceiveInterruptDisable
0x0000000000000000 0xc build/default/production/mcc_generated_files/uart/src/usart3.o
.progmemx.data.UART3
0x0000000000000000 0x30 build/default/production/mcc_generated_files/uart/src/usart3.o
.text 0x0000000000000000 0x0 build/default/production/main.o
.data 0x0000000000000000 0x0 build/default/production/main.o
.bss 0x0000000000000000 0x0 build/default/production/main.o
.text 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.data 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.bss 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.text.libgcc.mul
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.text.libgcc.div
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.text.libgcc 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.text.libgcc.prologue
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.text.libgcc.builtins
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.text.libgcc.fmul
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.text.libgcc.fixed
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
.text 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
.data 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
.bss 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
.stack.descriptors
0x0000000000000000 0x73 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
.text 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
.data 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
.bss 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
.stack.descriptors
0x0000000000000000 0x13 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
.text 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.data 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.bss 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.text.libgcc.mul
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.text.libgcc.div
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.text.libgcc 0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.text.libgcc.prologue
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.stack.descriptors
0x0000000000000000 0x13 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.text.libgcc.builtins
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.text.libgcc.fmul
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.text.libgcc.fixed
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
Memory Configuration
Name Origin Length Attributes
text 0x0000000000000000 0x0000000000020000 xr
data 0x0000000000804000 0x0000000000004000 rw !x
eeprom 0x0000000000810000 0x0000000000000200 rw !x
fuse 0x0000000000820000 0x0000000000000010 rw !x
lock 0x0000000000830000 0x0000000000000400 rw !x
signature 0x0000000000840000 0x0000000000000400 rw !x
user_signatures 0x0000000000850000 0x0000000000000400 rw !x
bootrow 0x0000000000860000 0x0000000000000400 rw !x
*default* 0x0000000000000000 0xffffffffffffffff
Linker script and memory map
Address of section .data set to 0x804000
0x0000000000008000 __RODATA_PM_OFFSET__ = 0x8000
LOAD C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
0x0000000000000001 __MPLAB_BUILD = 0x1
LOAD build/default/production/mcc_generated_files/system/src/clock.o
LOAD build/default/production/mcc_generated_files/system/src/pins.o
LOAD build/default/production/mcc_generated_files/system/src/config_bits.o
LOAD build/default/production/mcc_generated_files/system/src/system.o
LOAD build/default/production/mcc_generated_files/system/src/protected_io.o
LOAD build/default/production/mcc_generated_files/system/src/interrupt.o
LOAD build/default/production/mcc_generated_files/uart/src/usart3.o
LOAD build/default/production/main.o
START GROUP
LOAD c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libm.a
END GROUP
START GROUP
LOAD c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a
LOAD c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libm.a
LOAD c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a
LOAD C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const\libavr128db48.a
END GROUP
[0x0000000000000000] __TEXT_REGION_ORIGIN__ = DEFINED (__TEXT_REGION_ORIGIN__)?__TEXT_REGION_ORIGIN__:0x0
[0x0000000000804000] __DATA_REGION_ORIGIN__ = DEFINED (__DATA_REGION_ORIGIN__)?__DATA_REGION_ORIGIN__:0x802000
[0x0000000000020000] __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x100000
[0x0000000000004000] __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0
[0x0000000000000200] __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000
[0x0000000000000010] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400
0x0000000000000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400
0x0000000000000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400
0x0000000000000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400
0x0000000000000400 __BOOTROW_REGION_LENGTH__ = DEFINED (__BOOTROW_REGION_LENGTH__)?__BOOTROW_REGION_LENGTH__:0x400
.hash
*(.hash)
.dynsym
*(.dynsym)
.dynstr
*(.dynstr)
.gnu.version
*(.gnu.version)
.gnu.version_d
*(.gnu.version_d)
.gnu.version_r
*(.gnu.version_r)
.rel.init
*(.rel.init)
.rela.init
*(.rela.init)
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
.rel.fini
*(.rel.fini)
.rela.fini
*(.rela.fini)
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
.rel.ctors
*(.rel.ctors)
.rela.ctors
*(.rela.ctors)
.rel.dtors
*(.rel.dtors)
.rela.dtors
*(.rela.dtors)
.rel.got
*(.rel.got)
.rela.got
*(.rela.got)
.rel.bss
*(.rel.bss)
.rela.bss
*(.rela.bss)
.rel.plt
*(.rel.plt)
.rela.plt
*(.rela.plt)
.text 0x0000000000000000 0x152
*(.vectors)
.vectors 0x0000000000000000 0xf4 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
0x0000000000000000 __vector_default
0x0000000000000000 __vectors
*(.vectors)
*(.progmem.gcc*)
*(.dinit)
.dinit 0x00000000000000f4 0x5 data_init
0x00000000000000fa . = ALIGN (0x2)
*fill* 0x00000000000000f9 0x1
0x00000000000000fa __trampolines_start = .
*(.trampolines)
.trampolines 0x00000000000000fa 0x0 linker stubs
*(.trampolines*)
0x00000000000000fa __trampolines_end = .
*libprintf_flt.a:*(.progmem.data)
*libc.a:*(.progmem.data)
0x00000000000000fa . = ALIGN (0x2)
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x00000000000000fa __ctors_start = .
*(.ctors)
0x00000000000000fa __ctors_end = .
0x00000000000000fa __dtors_start = .
*(.dtors)
0x00000000000000fa __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x00000000000000fa 0x0 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
0x00000000000000fa __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x00000000000000fa 0xc C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x0000000000000106 0x40 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_copy_data.o)
0x0000000000000106 __do_copy_data
0x0000000000000138 __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x0000000000000146 0x8 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
*(.init9)
0x000000000000014e . = ALIGN (0x2)
*(.fini9)
.fini9 0x000000000000014e 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
0x000000000000014e _exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x000000000000014e 0x4 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
*(.fini0)
0x0000000000000152 _etext = .
.data 0x0000000000804000 0x0 load address 0x0000000000000152
[!provide] PROVIDE (__data_start, .)
*(.gnu.linkonce.d*)
*(.gnu.linkonce.r*)
0x0000000000804000 . = ALIGN (0x2)
0x0000000000804000 _edata = .
[!provide] PROVIDE (__data_end, .)
.bss 0x0000000000804000 0x0
[!provide] PROVIDE (__bss_start, .)
*(COMMON)
[!provide] PROVIDE (__bss_end, .)
0x0000000000000152 __data_load_start = LOADADDR (.data)
0x0000000000000152 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x0000000000804000 0x0
[!provide] PROVIDE (__noinit_start, .)
*(.noinit*)
[!provide] PROVIDE (__noinit_end, .)
0x0000000000804000 _end = .
.eeprom 0x0000000000810000 0x0
*(.eeprom*)
0x0000000000810000 __eeprom_end = .
.fuse 0x0000000000820000 0x9
*(.fuse)
.fuse 0x0000000000820000 0x9 build/default/production/mcc_generated_files/system/src/config_bits.o
0x0000000000820000 __fuse
*(.lfuse)
*(.hfuse)
*(.efuse)
.lock
*(.lock*)
.signature
*(.signature*)
.user_signatures
*(.user_signatures*)
.bootrow
*(.bootrow*)
.stab
*(.stab)
.stabstr
*(.stabstr)
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment 0x0000000000000000 0x5b
*(.comment)
.comment 0x0000000000000000 0x2f build/default/production/mcc_generated_files/system/src/clock.o
0x30 (size before relaxing)
.comment 0x000000000000002f 0x30 build/default/production/mcc_generated_files/system/src/pins.o
.comment 0x000000000000002f 0x30 build/default/production/mcc_generated_files/system/src/config_bits.o
.comment 0x000000000000002f 0x30 build/default/production/mcc_generated_files/system/src/system.o
.comment 0x000000000000002f 0x30 build/default/production/mcc_generated_files/system/src/interrupt.o
.comment 0x000000000000002f 0x30 build/default/production/mcc_generated_files/uart/src/usart3.o
.comment 0x000000000000002f 0x30 build/default/production/main.o
.comment 0x000000000000002f 0x2c c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
0x2d (size before relaxing)
.comment 0x000000000000005b 0x2d c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
.stack.descriptors.hdr
0x0000000000000000 0x2a
.stack.descriptors.hdr
0x0000000000000000 0xe c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
.stack.descriptors.hdr
0x000000000000000e 0xe c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
.stack.descriptors.hdr
0x000000000000001c 0xe c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/avrxmega4/memx-const\libgcc.a(_exit.o)
.note.GNU-stack
0x0000000000000000 0x0
.note.GNU-stack
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
.note.GNU-stack
0x0000000000000000 0x0 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
.note.gnu.build-id
*(.note.gnu.build-id)
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x0000000000000000 0x258
*(.debug_aranges)
.debug_aranges
0x0000000000000000 0x30 build/default/production/mcc_generated_files/system/src/clock.o
.debug_aranges
0x0000000000000030 0x90 build/default/production/mcc_generated_files/system/src/pins.o
.debug_aranges
0x00000000000000c0 0x18 build/default/production/mcc_generated_files/system/src/config_bits.o
.debug_aranges
0x00000000000000d8 0x20 build/default/production/mcc_generated_files/system/src/system.o
.debug_aranges
0x00000000000000f8 0x20 build/default/production/mcc_generated_files/system/src/protected_io.o
.debug_aranges
0x0000000000000118 0x20 build/default/production/mcc_generated_files/system/src/interrupt.o
.debug_aranges
0x0000000000000138 0x100 build/default/production/mcc_generated_files/uart/src/usart3.o
.debug_aranges
0x0000000000000238 0x20 build/default/production/main.o
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x0000000000000000 0x6d44
*(.debug_info .gnu.linkonce.wi.*)
.debug_info 0x0000000000000000 0x3545 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
.debug_info 0x0000000000003545 0xa07 build/default/production/mcc_generated_files/system/src/clock.o
.debug_info 0x0000000000003f4c 0xa36 build/default/production/mcc_generated_files/system/src/pins.o
.debug_info 0x0000000000004982 0x8cf build/default/production/mcc_generated_files/system/src/config_bits.o
.debug_info 0x0000000000005251 0x33c build/default/production/mcc_generated_files/system/src/system.o
.debug_info 0x000000000000558d 0xa6 build/default/production/mcc_generated_files/system/src/protected_io.o
.debug_info 0x0000000000005633 0x423 build/default/production/mcc_generated_files/system/src/interrupt.o
.debug_info 0x0000000000005a56 0x101d build/default/production/mcc_generated_files/uart/src/usart3.o
.debug_info 0x0000000000006a73 0x2d1 build/default/production/main.o
.debug_abbrev 0x0000000000000000 0x3a6b
*(.debug_abbrev)
.debug_abbrev 0x0000000000000000 0x3274 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
.debug_abbrev 0x0000000000003274 0x14d build/default/production/mcc_generated_files/system/src/clock.o
.debug_abbrev 0x00000000000033c1 0x18d build/default/production/mcc_generated_files/system/src/pins.o
.debug_abbrev 0x000000000000354e 0x97 build/default/production/mcc_generated_files/system/src/config_bits.o
.debug_abbrev 0x00000000000035e5 0x58 build/default/production/mcc_generated_files/system/src/system.o
.debug_abbrev 0x000000000000363d 0x14 build/default/production/mcc_generated_files/system/src/protected_io.o
.debug_abbrev 0x0000000000003651 0xfa build/default/production/mcc_generated_files/system/src/interrupt.o
.debug_abbrev 0x000000000000374b 0x2c3 build/default/production/mcc_generated_files/uart/src/usart3.o
.debug_abbrev 0x0000000000003a0e 0x5d build/default/production/main.o
.debug_line 0x0000000000000000 0x126b
*(.debug_line .debug_line.* .debug_line_end)
.debug_line 0x0000000000000000 0x208 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
.debug_line 0x0000000000000208 0x1d0 build/default/production/mcc_generated_files/system/src/clock.o
.debug_line 0x00000000000003d8 0x48e build/default/production/mcc_generated_files/system/src/pins.o
.debug_line 0x0000000000000866 0x103 build/default/production/mcc_generated_files/system/src/config_bits.o
.debug_line 0x0000000000000969 0xf3 build/default/production/mcc_generated_files/system/src/system.o
.debug_line 0x0000000000000a5c 0x73 build/default/production/mcc_generated_files/system/src/protected_io.o
.debug_line 0x0000000000000acf 0x19c build/default/production/mcc_generated_files/system/src/interrupt.o
.debug_line 0x0000000000000c6b 0x59f build/default/production/mcc_generated_files/uart/src/usart3.o
.debug_line 0x000000000000120a 0x61 build/default/production/main.o
.debug_frame 0x0000000000000000 0x43c
*(.debug_frame)
.debug_frame 0x0000000000000000 0x44 build/default/production/mcc_generated_files/system/src/clock.o
.debug_frame 0x0000000000000044 0x160 build/default/production/mcc_generated_files/system/src/pins.o
.debug_frame 0x00000000000001a4 0x24 build/default/production/mcc_generated_files/system/src/system.o
.debug_frame 0x00000000000001c8 0x24 build/default/production/mcc_generated_files/system/src/interrupt.o
.debug_frame 0x00000000000001ec 0x22c build/default/production/mcc_generated_files/uart/src/usart3.o
.debug_frame 0x0000000000000418 0x24 build/default/production/main.o
.debug_str 0x0000000000000000 0x17d5
*(.debug_str)
.debug_str 0x0000000000000000 0x170f C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
.debug_str 0x000000000000170f 0x13 build/default/production/mcc_generated_files/system/src/clock.o
.debug_str 0x0000000000001722 0x32 build/default/production/mcc_generated_files/system/src/pins.o
.debug_str 0x0000000000001754 0x0 build/default/production/mcc_generated_files/system/src/config_bits.o
.debug_str 0x0000000000001754 0x4c build/default/production/mcc_generated_files/system/src/system.o
.debug_str 0x00000000000017a0 0x13 build/default/production/mcc_generated_files/system/src/interrupt.o
.debug_str 0x00000000000017b3 0x10 build/default/production/mcc_generated_files/uart/src/usart3.o
.debug_str 0x00000000000017c3 0x12 build/default/production/main.o
.debug_loc 0x0000000000000000 0x33d
*(.debug_loc)
.debug_loc 0x0000000000000000 0x263 build/default/production/mcc_generated_files/system/src/clock.o
.debug_loc 0x0000000000000263 0x2a build/default/production/mcc_generated_files/system/src/interrupt.o
.debug_loc 0x000000000000028d 0xb0 build/default/production/mcc_generated_files/uart/src/usart3.o
.debug_macinfo
*(.debug_macinfo)
.debug_weaknames
*(.debug_weaknames)
.debug_funcnames
*(.debug_funcnames)
.debug_typenames
*(.debug_typenames)
.debug_varnames
*(.debug_varnames)
.debug_pubtypes
*(.debug_pubtypes)
.debug_ranges 0x0000000000000000 0x1c0
*(.debug_ranges)
.debug_ranges 0x0000000000000000 0x20 build/default/production/mcc_generated_files/system/src/clock.o
.debug_ranges 0x0000000000000020 0x80 build/default/production/mcc_generated_files/system/src/pins.o
.debug_ranges 0x00000000000000a0 0x10 build/default/production/mcc_generated_files/system/src/system.o
.debug_ranges 0x00000000000000b0 0x10 build/default/production/mcc_generated_files/system/src/interrupt.o
.debug_ranges 0x00000000000000c0 0xf0 build/default/production/mcc_generated_files/uart/src/usart3.o
.debug_ranges 0x00000000000001b0 0x10 build/default/production/main.o
.debug_macro
*(.debug_macro)
OUTPUT(dist/default/production/basicUARTcomms_AVRDB.X.production.elf elf32-avr)
LOAD linker stubs
LOAD data_init
.note.gnu.avr.deviceinfo
0x0000000000000000 0x40
.note.gnu.avr.deviceinfo
0x0000000000000000 0x40 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
.bss.LED_InterruptHandler
0x0000000000804018 0x2
.bss.LED_InterruptHandler
0x0000000000804018 0x2 build/default/production/mcc_generated_files/system/src/pins.o
.bss.SW0_InterruptHandler
0x000000000080401a 0x2
.bss.SW0_InterruptHandler
0x000000000080401a 0x2 build/default/production/mcc_generated_files/system/src/pins.o
.bss.IO_PB0_InterruptHandler
0x000000000080401c 0x2
.bss.IO_PB0_InterruptHandler
0x000000000080401c 0x2 build/default/production/mcc_generated_files/system/src/pins.o
.bss.IO_PB1_InterruptHandler
0x000000000080401e 0x2
.bss.IO_PB1_InterruptHandler
0x000000000080401e 0x2 build/default/production/mcc_generated_files/system/src/pins.o
.bss.USART3_RxCompleteInterruptHandler
0x0000000000804020 0x2
.bss.USART3_RxCompleteInterruptHandler
0x0000000000804020 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
.bss.USART3_RxInterruptHandler
0x0000000000804022 0x2
.bss.USART3_RxInterruptHandler
0x0000000000804022 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
0x0000000000804022 USART3_RxInterruptHandler
.bss.USART3_ParityErrorHandler
0x0000000000804024 0x2
.bss.USART3_ParityErrorHandler
0x0000000000804024 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
0x0000000000804024 USART3_ParityErrorHandler
.bss.USART3_OverrunErrorHandler
0x0000000000804026 0x2
.bss.USART3_OverrunErrorHandler
0x0000000000804026 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
0x0000000000804026 USART3_OverrunErrorHandler
.bss.USART3_FramingErrorHandler
0x0000000000804028 0x2
.bss.USART3_FramingErrorHandler
0x0000000000804028 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
0x0000000000804028 USART3_FramingErrorHandler
.bss.usart3RxLastError
0x000000000080402a 0x2
.bss.usart3RxLastError
0x000000000080402a 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
.bss.usart3RxCount
0x000000000080402c 0x1
.bss.usart3RxCount
0x000000000080402c 0x1 build/default/production/mcc_generated_files/uart/src/usart3.o
0x000000000080402c usart3RxCount
.bss.usart3RxStatusBuffer
0x0000000000804000 0x10
.bss.usart3RxStatusBuffer
0x0000000000804000 0x10 build/default/production/mcc_generated_files/uart/src/usart3.o
.bss.usart3RxBuffer
0x0000000000804010 0x8
.bss.usart3RxBuffer
0x0000000000804010 0x8 build/default/production/mcc_generated_files/uart/src/usart3.o
.bss.usart3RxTail
0x000000000080402d 0x1
.bss.usart3RxTail
0x000000000080402d 0x1 build/default/production/mcc_generated_files/uart/src/usart3.o
.bss.usart3RxHead
0x000000000080402e 0x1
.bss.usart3RxHead
0x000000000080402e 0x1 build/default/production/mcc_generated_files/uart/src/usart3.o
.text.PIN_MANAGER_Initialize
0x0000000000000152 0x12c
.text.PIN_MANAGER_Initialize
0x0000000000000152 0x12c build/default/production/mcc_generated_files/system/src/pins.o
0x0000000000000152 PIN_MANAGER_Initialize
.text.USART3_ReceiveISR
0x000000000000027e 0xce
.text.USART3_ReceiveISR
0x000000000000027e 0xce build/default/production/mcc_generated_files/uart/src/usart3.o
0x000000000000027e USART3_ReceiveISR
.text.CLOCK_Initialize
0x000000000000034c 0x9c
.text.CLOCK_Initialize
0x000000000000034c 0x9c build/default/production/mcc_generated_files/system/src/clock.o
0x000000000000034c CLOCK_Initialize
.text.__vector_45
0x00000000000003e8 0x88
.text.__vector_45
0x00000000000003e8 0x88 build/default/production/mcc_generated_files/system/src/pins.o
0x00000000000003e8 __vector_45
.text.USART3_Initialize
0x0000000000000470 0x6c
.text.USART3_Initialize
0x0000000000000470 0x6c build/default/production/mcc_generated_files/uart/src/usart3.o
0x0000000000000470 USART3_Initialize
.text.__vector_53
0x00000000000004dc 0x50
.text.__vector_53
0x00000000000004dc 0x50 build/default/production/mcc_generated_files/uart/src/usart3.o
0x00000000000004dc __vector_53
.text.CPUINT_Initialize
0x000000000000052c 0x1a
.text.CPUINT_Initialize
0x000000000000052c 0x1a build/default/production/mcc_generated_files/system/src/interrupt.o
0x000000000000052c CPUINT_Initialize
.text.exit 0x0000000000000546 0x16
.text.exit 0x0000000000000546 0x16 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
0x0000000000000546 exit
.text.SYSTEM_Initialize
0x000000000000055c 0x12
.text.SYSTEM_Initialize
0x000000000000055c 0x12 build/default/production/mcc_generated_files/system/src/system.o
0x000000000000055c SYSTEM_Initialize
.text.__vector_8
0x000000000000056e 0xa
.text.__vector_8
0x000000000000056e 0xa build/default/production/mcc_generated_files/system/src/pins.o
0x000000000000056e __vector_8
.text.__vector_30
0x0000000000000578 0xa
.text.__vector_30
0x0000000000000578 0xa build/default/production/mcc_generated_files/system/src/pins.o
0x0000000000000578 __vector_30
.text.__vector_24
0x0000000000000582 0xa
.text.__vector_24
0x0000000000000582 0xa build/default/production/mcc_generated_files/system/src/pins.o
0x0000000000000582 __vector_24
.text.__vector_46
0x000000000000058c 0xa
.text.__vector_46
0x000000000000058c 0xa build/default/production/mcc_generated_files/system/src/pins.o
0x000000000000058c __vector_46
.text.__vector_35
0x0000000000000596 0xa
.text.__vector_35
0x0000000000000596 0xa build/default/production/mcc_generated_files/system/src/pins.o
0x0000000000000596 __vector_35
.text.protected_write_io
0x00000000000005a0 0xa
.text.protected_write_io
0x00000000000005a0 0xa build/default/production/mcc_generated_files/system/src/protected_io.o
0x00000000000005a0 protected_write_io
.text.SW0_DefaultInterruptHandler
0x00000000000005aa 0x8
.text.SW0_DefaultInterruptHandler
0x00000000000005aa 0x8 build/default/production/mcc_generated_files/system/src/pins.o
0x00000000000005aa SW0_DefaultInterruptHandler
.text.USART3_Write
0x00000000000005b2 0x6
.text.USART3_Write
0x00000000000005b2 0x6 build/default/production/mcc_generated_files/uart/src/usart3.o
0x00000000000005b2 USART3_Write
.text.main 0x00000000000005b8 0x6
.text.main 0x00000000000005b8 0x6 build/default/production/main.o
0x00000000000005b8 main
.text 0x00000000000005be 0x4
.text 0x00000000000005be 0x4 C:/Program Files/Microchip/MPLABX/v6.10/packs/Microchip/AVR-Dx_DFP/2.3.272/xc8/avr/lib/avrxmega4/memx-const/crtavr128db48.o
0x00000000000005be __vector_38
0x00000000000005be __vector_22
0x00000000000005be __vector_28
0x00000000000005be __vector_1
0x00000000000005be __vector_32
0x00000000000005be __vector_34
0x00000000000005be __vector_12
0x00000000000005be __vector_55
0x00000000000005be __bad_interrupt
0x00000000000005be __vector_6
0x00000000000005be __vector_31
0x00000000000005be __vector_39
0x00000000000005be __vector_3
0x00000000000005be __vector_23
0x00000000000005be __vector_25
0x00000000000005be __vector_11
0x00000000000005be __vector_54
0x00000000000005be __vector_13
0x00000000000005be __vector_17
0x00000000000005be __vector_19
0x00000000000005be __vector_56
0x00000000000005be __vector_7
0x00000000000005be __vector_49
0x00000000000005be __vector_41
0x00000000000005be __vector_43
0x00000000000005be __vector_27
0x00000000000005be __vector_5
0x00000000000005be __vector_33
0x00000000000005be __vector_47
0x00000000000005be __vector_52
0x00000000000005be __vector_37
0x00000000000005be __vector_4
0x00000000000005be __vector_44
0x00000000000005be __vector_51
0x00000000000005be __vector_9
0x00000000000005be __vector_2
0x00000000000005be __vector_21
0x00000000000005be __vector_15
0x00000000000005be __vector_36
0x00000000000005be __vector_58
0x00000000000005be __vector_29
0x00000000000005be __vector_60
0x00000000000005be __vector_40
0x00000000000005be __vector_26
0x00000000000005be __vector_48
0x00000000000005be __vector_14
0x00000000000005be __vector_57
0x00000000000005be __vector_10
0x00000000000005be __vector_50
0x00000000000005be __vector_16
0x00000000000005be __vector_59
0x00000000000005be __vector_18
0x00000000000005be __vector_20
0x00000000000005be __vector_42
.text._Exit 0x00000000000005c2 0x4
.text._Exit 0x00000000000005c2 0x4 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(_Exit.o)
0x00000000000005c2 _Exit
.text.IO_PB1_DefaultInterruptHandler
0x00000000000005c6 0x2
.text.IO_PB1_DefaultInterruptHandler
0x00000000000005c6 0x2 build/default/production/mcc_generated_files/system/src/pins.o
0x00000000000005c6 IO_PB1_DefaultInterruptHandler
.text.IO_PB0_DefaultInterruptHandler
0x00000000000005c8 0x2
.text.IO_PB0_DefaultInterruptHandler
0x00000000000005c8 0x2 build/default/production/mcc_generated_files/system/src/pins.o
0x00000000000005c8 IO_PB0_DefaultInterruptHandler
.text.LED_DefaultInterruptHandler
0x00000000000005ca 0x2
.text.LED_DefaultInterruptHandler
0x00000000000005ca 0x2 build/default/production/mcc_generated_files/system/src/pins.o
0x00000000000005ca LED_DefaultInterruptHandler
.text.USART3_DefaultFramingErrorCallback
0x00000000000005cc 0x2
.text.USART3_DefaultFramingErrorCallback
0x00000000000005cc 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_DefaultOverrunErrorCallback
0x00000000000005ce 0x2
.text.USART3_DefaultOverrunErrorCallback
0x00000000000005ce 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
.text.USART3_DefaultParityErrorCallback
0x00000000000005d0 0x2
.text.USART3_DefaultParityErrorCallback
0x00000000000005d0 0x2 build/default/production/mcc_generated_files/uart/src/usart3.o
.text.__dummy_fini
0x00000000000005d2 0x2
.text.__dummy_fini
0x00000000000005d2 0x2 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
0x00000000000005d2 _fini
.text.__dummy_funcs_on_exit
0x00000000000005d4 0x2
.text.__dummy_funcs_on_exit
0x00000000000005d4 0x2 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
0x00000000000005d4 __funcs_on_exit
.text.__dummy_simulator_exit
0x00000000000005d6 0x2
.text.__dummy_simulator_exit
0x00000000000005d6 0x2 c:/program files/microchip/xc8/v2.41/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avrxmega4/memx-const\libc.a(exit.o)
0x00000000000005d6 __simulator_exit

Wyświetl plik

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
<executable name="dist/default/production/basicUARTcomms_AVRDB.X.production.elf">
<memory name="program">
<units>bytes</units>
<length>131072</length>
<used>1496</used>
<free>129576</free>
</memory>
<memory name="data">
<units>bytes</units>
<length>16384</length>
<used>47</used>
<free>16337</free>
</memory>
</executable>
</project>

Wyświetl plik

@ -0,0 +1,47 @@
/*
* MAIN Generated Driver File
*
* @file main.c
*
* @defgroup main MAIN
*
* @brief This is the generated driver implementation file for the MAIN driver.
*
* @version MAIN Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#include "mcc_generated_files/system/system.h"
/*
Main application
*/
int main(void)
{
SYSTEM_Initialize();
while(1)
{
}
}

Wyświetl plik

@ -0,0 +1,72 @@
/**
* CCP Header File
*
* @file ccp.h
*
* @ingroup config_bitsdriver
*
* @brief This file contains the Configuration Change Protection (CCP) header file for the Configuration bits driver.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef CPU_CCP_H
#define CPU_CCP_H
#include "../system/utils/compiler.h"
#include "../system/protected_io.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Writes to a CCP-protected 8-bit I/O register.
* @param addr Address of the I/O register.
* @param value Value to be written.
* NOTE: Using IAR Embedded workbench, the choice of memory model has an impact on calling convention.
* Memory model must be defined in the Assembler preprocessor directives to be visible to the preprocessor.
*/
static inline void ccp_write_io(void *addr, uint8_t value)
{
protected_write_io(addr, CCP_IOREG_gc, value);
}
/**
* @brief Writes to a CCP-protected 8-bit SPM register.
* @param addr Address of the SPM register.
* @param value Value to be written.
* NOTE: Using IAR Embedded workbench, the choice of memory model has an impacton calling convention.
* Memory model must be defined in the Assembler preprocessor directives to be visible to the preprocessor.
*/
static inline void ccp_write_spm(void *addr, uint8_t value)
{
protected_write_io(addr, CCP_SPM_gc, value);
}
#ifdef __cplusplus
}
#endif
#endif /* CPU_CCP_H */

Wyświetl plik

@ -0,0 +1,69 @@
/**
* CLKCTRL Generated Driver API Header File
*
* @file clkctrl.h
*
* @defgroup clkctrl CLKCTRL
*
* @brief This header file provides APIs for the CLKCTRL driver.
*
* @version CLKCTRL Driver Version 1.0.2
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef CLOCK_H
#define CLOCK_H
#ifndef F_CPU
#define F_CPU 4000000UL
#endif
#include "ccp.h"
#define CLKCTRL_TIMEBASE_VALUE ((uint8_t)ceil(F_CPU * 0.000001))
/**
* @ingroup clkctrl
* @brief Initialize CLKCTRL module
* @param none
* @return none
*/
void CLOCK_Initialize(void);
/**
* @ingroup clkctrl
* @brief Enable Clock Failure Detection on main clock
* @param CLKCTRL_CFDSRC_t cfd_source - main clock source for CFD
* @return none
*/
void CFD_Enable(CLKCTRL_CFDSRC_t cfd_source);
/**
* @ingroup clkctrl
* @brief Disable Clock Failure Detection on main clock
* @param none
* @return none
*/
void CFD_Disable();
#endif // CLOCK_H

Wyświetl plik

@ -0,0 +1,42 @@
/**
* CONFIGURATION BITS Generated Driver Header File
*
* @file config_bits.h
*
* @defgroup config_bitsdriver Configuration Bits Driver
*
* @brief This file contains the generated header file for the Configuration bits driver.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef CONFIG_BITS_H
#define CONFIG_BITS_H
#include "../system/clock.h"
#endif //CONFIG_BITS_H
/**
End of File
*/

Wyświetl plik

@ -0,0 +1,57 @@
/**
* Interrupt Manager Generated Driver API Header File.
*
* @file interrupt.h
*
* @defgroup interrupt INTERRUPT
*
* @brief This file contains the API prototype for the Interrupt Manager.
*
* @version Interrupt Manager Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef INTERRUPT_H
#define INTERRUPT_H
#include "../system/utils/compiler.h"
#include "ccp.h"
#include "../system/utils/atomic.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @ingroup interrupt
* @brief Initializes the Interrupt module.
* @retval 0 - Initialization is successful.
*/
int8_t CPUINT_Initialize();
#ifdef __cplusplus
}
#endif
#endif /* INTERRUPT_H */

Wyświetl plik

@ -0,0 +1,208 @@
/**
* Generated Pins header File
*
* @file pins.h
*
* @defgroup pinsdriver Pins Driver
*
* @brief This is generated driver header for pins.
* This header file provides APIs for all pins selected in the GUI.
*
* @version Driver Version 1.1.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef PINS_H_INCLUDED
#define PINS_H_INCLUDED
#include <avr/io.h>
#include "./port.h"
//get/set IO_PB1 aliases
#define IO_PB1_SetHigh() do { PORTB_OUTSET = 0x2; } while(0)
#define IO_PB1_SetLow() do { PORTB_OUTCLR = 0x2; } while(0)
#define IO_PB1_Toggle() do { PORTB_OUTTGL = 0x2; } while(0)
#define IO_PB1_GetValue() (VPORTB.IN & (0x1 << 1))
#define IO_PB1_SetDigitalInput() do { PORTB_DIRCLR = 0x2; } while(0)
#define IO_PB1_SetDigitalOutput() do { PORTB_DIRSET = 0x2; } while(0)
#define IO_PB1_SetPullUp() do { PORTB_PIN1CTRL |= PORT_PULLUPEN_bm; } while(0)
#define IO_PB1_ResetPullUp() do { PORTB_PIN1CTRL &= ~PORT_PULLUPEN_bm; } while(0)
#define IO_PB1_SetInverted() do { PORTB_PIN1CTRL |= PORT_INVEN_bm; } while(0)
#define IO_PB1_ResetInverted() do { PORTB_PIN1CTRL &= ~PORT_INVEN_bm; } while(0)
#define IO_PB1_DisableInterruptOnChange() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
#define IO_PB1_EnableInterruptForBothEdges() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
#define IO_PB1_EnableInterruptForRisingEdge() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
#define IO_PB1_EnableInterruptForFallingEdge() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
#define IO_PB1_DisableDigitalInputBuffer() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
#define IO_PB1_EnableInterruptForLowLevelSensing() do { PORTB.PIN1CTRL = (PORTB.PIN1CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
#define PB1_SetInterruptHandler IO_PB1_SetInterruptHandler
//get/set IO_PB0 aliases
#define IO_PB0_SetHigh() do { PORTB_OUTSET = 0x1; } while(0)
#define IO_PB0_SetLow() do { PORTB_OUTCLR = 0x1; } while(0)
#define IO_PB0_Toggle() do { PORTB_OUTTGL = 0x1; } while(0)
#define IO_PB0_GetValue() (VPORTB.IN & (0x1 << 0))
#define IO_PB0_SetDigitalInput() do { PORTB_DIRCLR = 0x1; } while(0)
#define IO_PB0_SetDigitalOutput() do { PORTB_DIRSET = 0x1; } while(0)
#define IO_PB0_SetPullUp() do { PORTB_PIN0CTRL |= PORT_PULLUPEN_bm; } while(0)
#define IO_PB0_ResetPullUp() do { PORTB_PIN0CTRL &= ~PORT_PULLUPEN_bm; } while(0)
#define IO_PB0_SetInverted() do { PORTB_PIN0CTRL |= PORT_INVEN_bm; } while(0)
#define IO_PB0_ResetInverted() do { PORTB_PIN0CTRL &= ~PORT_INVEN_bm; } while(0)
#define IO_PB0_DisableInterruptOnChange() do { PORTB.PIN0CTRL = (PORTB.PIN0CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
#define IO_PB0_EnableInterruptForBothEdges() do { PORTB.PIN0CTRL = (PORTB.PIN0CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
#define IO_PB0_EnableInterruptForRisingEdge() do { PORTB.PIN0CTRL = (PORTB.PIN0CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
#define IO_PB0_EnableInterruptForFallingEdge() do { PORTB.PIN0CTRL = (PORTB.PIN0CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
#define IO_PB0_DisableDigitalInputBuffer() do { PORTB.PIN0CTRL = (PORTB.PIN0CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
#define IO_PB0_EnableInterruptForLowLevelSensing() do { PORTB.PIN0CTRL = (PORTB.PIN0CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
#define PB0_SetInterruptHandler IO_PB0_SetInterruptHandler
//get/set SW0 aliases
#define SW0_SetHigh() do { PORTB_OUTSET = 0x4; } while(0)
#define SW0_SetLow() do { PORTB_OUTCLR = 0x4; } while(0)
#define SW0_Toggle() do { PORTB_OUTTGL = 0x4; } while(0)
#define SW0_GetValue() (VPORTB.IN & (0x1 << 2))
#define SW0_SetDigitalInput() do { PORTB_DIRCLR = 0x4; } while(0)
#define SW0_SetDigitalOutput() do { PORTB_DIRSET = 0x4; } while(0)
#define SW0_SetPullUp() do { PORTB_PIN2CTRL |= PORT_PULLUPEN_bm; } while(0)
#define SW0_ResetPullUp() do { PORTB_PIN2CTRL &= ~PORT_PULLUPEN_bm; } while(0)
#define SW0_SetInverted() do { PORTB_PIN2CTRL |= PORT_INVEN_bm; } while(0)
#define SW0_ResetInverted() do { PORTB_PIN2CTRL &= ~PORT_INVEN_bm; } while(0)
#define SW0_DisableInterruptOnChange() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
#define SW0_EnableInterruptForBothEdges() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
#define SW0_EnableInterruptForRisingEdge() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
#define SW0_EnableInterruptForFallingEdge() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
#define SW0_DisableDigitalInputBuffer() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
#define SW0_EnableInterruptForLowLevelSensing() do { PORTB.PIN2CTRL = (PORTB.PIN2CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
#define PB2_SetInterruptHandler SW0_SetInterruptHandler
//get/set LED aliases
#define LED_SetHigh() do { PORTB_OUTSET = 0x8; } while(0)
#define LED_SetLow() do { PORTB_OUTCLR = 0x8; } while(0)
#define LED_Toggle() do { PORTB_OUTTGL = 0x8; } while(0)
#define LED_GetValue() (VPORTB.IN & (0x1 << 3))
#define LED_SetDigitalInput() do { PORTB_DIRCLR = 0x8; } while(0)
#define LED_SetDigitalOutput() do { PORTB_DIRSET = 0x8; } while(0)
#define LED_SetPullUp() do { PORTB_PIN3CTRL |= PORT_PULLUPEN_bm; } while(0)
#define LED_ResetPullUp() do { PORTB_PIN3CTRL &= ~PORT_PULLUPEN_bm; } while(0)
#define LED_SetInverted() do { PORTB_PIN3CTRL |= PORT_INVEN_bm; } while(0)
#define LED_ResetInverted() do { PORTB_PIN3CTRL &= ~PORT_INVEN_bm; } while(0)
#define LED_DisableInterruptOnChange() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x0 ; } while(0)
#define LED_EnableInterruptForBothEdges() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x1 ; } while(0)
#define LED_EnableInterruptForRisingEdge() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x2 ; } while(0)
#define LED_EnableInterruptForFallingEdge() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x3 ; } while(0)
#define LED_DisableDigitalInputBuffer() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x4 ; } while(0)
#define LED_EnableInterruptForLowLevelSensing() do { PORTB.PIN3CTRL = (PORTB.PIN3CTRL & ~PORT_ISC_gm) | 0x5 ; } while(0)
#define PB3_SetInterruptHandler LED_SetInterruptHandler
/**
* @ingroup pinsdriver
* @brief GPIO and peripheral I/O initialization
* @param none
* @return none
*/
void PIN_MANAGER_Initialize();
/**
* @ingroup pinsdriver
* @brief Default Interrupt Handler for IO_PB1 pin.
* This is a predefined interrupt handler to be used together with the IO_PB1_SetInterruptHandler() method.
* This handler is called every time the IO_PB1 ISR is executed.
* @pre PIN_MANAGER_Initialize() has been called at least once
* @param none
* @return none
*/
void IO_PB1_DefaultInterruptHandler(void);
/**
* @ingroup pinsdriver
* @brief Interrupt Handler Setter for IO_PB1 pin input-sense-config functionality.
* Allows selecting an interrupt handler for IO_PB1 at application runtime
* @pre PIN_MANAGER_Initialize() has been called at least once
* @param InterruptHandler function pointer.
* @return none
*/
void IO_PB1_SetInterruptHandler(void (* interruptHandler)(void)) ;
/**
* @ingroup pinsdriver
* @brief Default Interrupt Handler for IO_PB0 pin.
* This is a predefined interrupt handler to be used together with the IO_PB0_SetInterruptHandler() method.
* This handler is called every time the IO_PB0 ISR is executed.
* @pre PIN_MANAGER_Initialize() has been called at least once
* @param none
* @return none
*/
void IO_PB0_DefaultInterruptHandler(void);
/**
* @ingroup pinsdriver
* @brief Interrupt Handler Setter for IO_PB0 pin input-sense-config functionality.
* Allows selecting an interrupt handler for IO_PB0 at application runtime
* @pre PIN_MANAGER_Initialize() has been called at least once
* @param InterruptHandler function pointer.
* @return none
*/
void IO_PB0_SetInterruptHandler(void (* interruptHandler)(void)) ;
/**
* @ingroup pinsdriver
* @brief Default Interrupt Handler for SW0 pin.
* This is a predefined interrupt handler to be used together with the SW0_SetInterruptHandler() method.
* This handler is called every time the SW0 ISR is executed.
* @pre PIN_MANAGER_Initialize() has been called at least once
* @param none
* @return none
*/
void SW0_DefaultInterruptHandler(void);
/**
* @ingroup pinsdriver
* @brief Interrupt Handler Setter for SW0 pin input-sense-config functionality.
* Allows selecting an interrupt handler for SW0 at application runtime
* @pre PIN_MANAGER_Initialize() has been called at least once
* @param InterruptHandler function pointer.
* @return none
*/
void SW0_SetInterruptHandler(void (* interruptHandler)(void)) ;
/**
* @ingroup pinsdriver
* @brief Default Interrupt Handler for LED pin.
* This is a predefined interrupt handler to be used together with the LED_SetInterruptHandler() method.
* This handler is called every time the LED ISR is executed.
* @pre PIN_MANAGER_Initialize() has been called at least once
* @param none
* @return none
*/
void LED_DefaultInterruptHandler(void);
/**
* @ingroup pinsdriver
* @brief Interrupt Handler Setter for LED pin input-sense-config functionality.
* Allows selecting an interrupt handler for LED at application runtime
* @pre PIN_MANAGER_Initialize() has been called at least once
* @param InterruptHandler function pointer.
* @return none
*/
void LED_SetInterruptHandler(void (* interruptHandler)(void)) ;
#endif /* PINS_H_INCLUDED */

Wyświetl plik

@ -0,0 +1,80 @@
/**
* protected_io Header File
*
* @file protected_io.h
*
* @defgroup doc_driver_system_protected_io Protected IO
*
* @brief This file contains the generated prtected_io header file for the CONFIGURATION BITS.
*
* @version Driver Version 1.0.0
*
*@{
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef PROTECTED_IO_H
#define PROTECTED_IO_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 Writes to an 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.
* Memory model must be defined in the Assembler preprocessor directives to be visible to the preprocessor.
*/
extern void protected_write_io(void *addr, uint8_t magic, uint8_t value);
/** @} */
#endif /* PROTECTED_IO_H */

Wyświetl plik

@ -0,0 +1,99 @@
/**
* CLKCTRL Generated Driver File
*
* @file clkctrl.c
*
* @ingroup clkctrl
*
* @brief This file contains the driver code for CLKCTRL module.
*
* version CLKCTRL Driver Version 1.1.3
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#include "../clock.h"
void CLOCK_Initialize(void)
{
// Set the CLKCTRL module to the options selected in the user interface.
//CLKOUT disabled; CLKSEL Internal high-frequency oscillator;
ccp_write_io((void*)&(CLKCTRL.MCLKCTRLA),0x0);
//PDIV 2X; PEN disabled;
ccp_write_io((void*)&(CLKCTRL.MCLKCTRLB),0x0);
//EXTS disabled; OSC32KS disabled; OSCHFS disabled; PLLS disabled; SOSC disabled; XOSC32KS disabled;
ccp_write_io((void*)&(CLKCTRL.MCLKSTATUS),0x0);
//RUNSTDBY disabled;
ccp_write_io((void*)&(CLKCTRL.OSC32KCTRLA),0x0);
//AUTOTUNE disabled; FRQSEL 4 MHz system clock (default); RUNSTDBY disabled;
ccp_write_io((void*)&(CLKCTRL.OSCHFCTRLA),0xC);
//TUNE 0x0;
ccp_write_io((void*)&(CLKCTRL.OSCHFTUNE),0x0);
//MULFAC PLL is disabled; RUNSTDBY disabled; SOURCE OSCHF;
ccp_write_io((void*)&(CLKCTRL.PLLCTRLA),0x0);
//CSUT 1k cycles; ENABLE disabled; LPMODE disabled; RUNSTDBY disabled; SEL disabled;
ccp_write_io((void*)&(CLKCTRL.XOSC32KCTRLA),0x0);
//CFDEN disabled; CFDSRC CLKMAIN; CFDTST disabled;
ccp_write_io((void*)&(CLKCTRL.MCLKCTRLC),0x0);
//CFD disabled; INTTYPE INT;
ccp_write_io((void*)&(CLKCTRL.MCLKINTCTRL),0x0);
//CFD disabled;
ccp_write_io((void*)&(CLKCTRL.MCLKINTFLAGS),0x0);
//CSUTHF 256; ENABLE disabled; FRQRANGE 8M; RUNSTBY disabled; SELHF XTAL;
ccp_write_io((void*)&(CLKCTRL.XOSCHFCTRLA),0x0);
// System clock stability check by polling the status register.
while(!(CLKCTRL.MCLKSTATUS & CLKCTRL_OSCHFS_bm));
// System clock stability check by polling the PLL status.
}
void CFD_Enable(CLKCTRL_CFDSRC_t cfd_source)
{
/* Enable Clock Failure Detection on main clock */
ccp_write_io((uint8_t *) & CLKCTRL.MCLKCTRLC, cfd_source | CLKCTRL_CFDEN_bm);
}
void CFD_Disable()
{
/* Disable Clock Failure Detection on main clock */
ccp_write_io((uint8_t *) & CLKCTRL.MCLKCTRLC, CLKCTRL.MCLKCTRLC & ~CLKCTRL_CFDEN_bm);
}
/**
End of File
*/

Wyświetl plik

@ -0,0 +1,47 @@
/**
* CONFIGURATION BITS Generated Driver Source File
*
* @file config_bits.c
*
* @ingroup config_bitsdriver
*
* @brief This file contains the generated Device Configuration Bits file.
*
* @version Driver Version 1.0.2
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#include <avr/io.h>
/**
* Configures the Fuse bits.
*/
FUSES =
{
.BODCFG = ACTIVE_DISABLE_gc | LVL_BODLEVEL0_gc | SAMPFREQ_128Hz_gc | SLEEP_DISABLE_gc,
.BOOTSIZE = 0x0,
.CODESIZE = 0x0,
.OSCCFG = CLKSEL_OSCHF_gc,
.SYSCFG0 = CRCSEL_CRC16_gc | CRCSRC_NOCRC_gc | RSTPINCFG_GPIO_gc,
.SYSCFG1 = MVSYSCFG_DUAL_gc | SUT_0MS_gc,
.WDTCFG = PERIOD_OFF_gc | WINDOW_OFF_gc,
};

Wyświetl plik

@ -0,0 +1,53 @@
/**
* Interrupt Manager Generated Driver File.
*
* @file interrupt.c
*
* @ingroup interrupt
*
* @brief This file contains the API implementation for the Interrupt Manager.
*
* @version Interrupt Manager Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#include "../interrupt.h"
int8_t CPUINT_Initialize()
{
/* IVSEL and CVT are Configuration Change Protected */
//CVT disabled; IVSEL disabled; LVL0RR disabled;
ccp_write_io((void*)&(CPUINT.CTRLA),0x0);
//LVL0PRI 0;
CPUINT.LVL0PRI = 0x0;
//LVL1VEC 0;
CPUINT.LVL1VEC = 0x0;
ENABLE_INTERRUPTS();
return 0;
}

Wyświetl plik

@ -0,0 +1,239 @@
/**
* Generated Driver File
*
* @file pins.c
*
* @ingroup pinsdriver
*
* @brief This is generated driver implementation for pins.
* This file provides implementations for pin APIs for all pins selected in the GUI.
*
* @version Driver Version 1.1.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#include "../pins.h"
#include "../../uart/usart3.h"
static void (*IO_PB1_InterruptHandler)(void);
static void (*IO_PB0_InterruptHandler)(void);
static void (*SW0_InterruptHandler)(void);
static void (*LED_InterruptHandler)(void);
void PIN_MANAGER_Initialize()
{
/* DIR Registers Initialization */
PORTA.DIR = 0x0;
PORTB.DIR = 0x9;
PORTC.DIR = 0x0;
PORTD.DIR = 0x0;
PORTE.DIR = 0x0;
PORTF.DIR = 0x0;
/* OUT Registers Initialization */
PORTA.OUT = 0x0;
PORTB.OUT = 0x1;
PORTC.OUT = 0x0;
PORTD.OUT = 0x0;
PORTE.OUT = 0x0;
PORTF.OUT = 0x0;
/* PINxCTRL registers Initialization */
PORTA.PIN0CTRL = 0x0;
PORTA.PIN1CTRL = 0x0;
PORTA.PIN2CTRL = 0x0;
PORTA.PIN3CTRL = 0x0;
PORTA.PIN4CTRL = 0x0;
PORTA.PIN5CTRL = 0x0;
PORTA.PIN6CTRL = 0x0;
PORTA.PIN7CTRL = 0x0;
PORTB.PIN0CTRL = 0x0;
PORTB.PIN1CTRL = 0x0;
PORTB.PIN2CTRL = 0xB;
PORTB.PIN3CTRL = 0x0;
PORTB.PIN4CTRL = 0x0;
PORTB.PIN5CTRL = 0x0;
PORTB.PIN6CTRL = 0x0;
PORTB.PIN7CTRL = 0x0;
PORTC.PIN0CTRL = 0x0;
PORTC.PIN1CTRL = 0x0;
PORTC.PIN2CTRL = 0x0;
PORTC.PIN3CTRL = 0x0;
PORTC.PIN4CTRL = 0x0;
PORTC.PIN5CTRL = 0x0;
PORTC.PIN6CTRL = 0x0;
PORTC.PIN7CTRL = 0x0;
PORTD.PIN0CTRL = 0x0;
PORTD.PIN1CTRL = 0x0;
PORTD.PIN2CTRL = 0x0;
PORTD.PIN3CTRL = 0x0;
PORTD.PIN4CTRL = 0x0;
PORTD.PIN5CTRL = 0x0;
PORTD.PIN6CTRL = 0x0;
PORTD.PIN7CTRL = 0x0;
PORTE.PIN0CTRL = 0x0;
PORTE.PIN1CTRL = 0x0;
PORTE.PIN2CTRL = 0x0;
PORTE.PIN3CTRL = 0x0;
PORTE.PIN4CTRL = 0x0;
PORTE.PIN5CTRL = 0x0;
PORTE.PIN6CTRL = 0x0;
PORTE.PIN7CTRL = 0x0;
PORTF.PIN0CTRL = 0x0;
PORTF.PIN1CTRL = 0x0;
PORTF.PIN2CTRL = 0x0;
PORTF.PIN3CTRL = 0x0;
PORTF.PIN4CTRL = 0x0;
PORTF.PIN5CTRL = 0x0;
PORTF.PIN6CTRL = 0x0;
PORTF.PIN7CTRL = 0x0;
/* PORTMUX Initialization */
PORTMUX.ACROUTEA = 0x0;
PORTMUX.CCLROUTEA = 0x0;
PORTMUX.EVSYSROUTEA = 0x0;
PORTMUX.SPIROUTEA = 0x0;
PORTMUX.TCAROUTEA = 0x0;
PORTMUX.TCBROUTEA = 0x0;
PORTMUX.TCDROUTEA = 0x0;
PORTMUX.TWIROUTEA = 0x0;
PORTMUX.USARTROUTEA = 0x0;
PORTMUX.USARTROUTEB = 0x0;
PORTMUX.ZCDROUTEA = 0x0;
// register default ISC callback functions at runtime; use these methods to register a custom function
IO_PB1_SetInterruptHandler(IO_PB1_DefaultInterruptHandler);
IO_PB0_SetInterruptHandler(IO_PB0_DefaultInterruptHandler);
SW0_SetInterruptHandler(SW0_DefaultInterruptHandler);
LED_SetInterruptHandler(LED_DefaultInterruptHandler);
}
/**
Allows selecting an interrupt handler for IO_PB1 at application runtime
*/
void IO_PB1_SetInterruptHandler(void (* interruptHandler)(void))
{
IO_PB1_InterruptHandler = interruptHandler;
}
void IO_PB1_DefaultInterruptHandler(void)
{
// add your IO_PB1 interrupt custom code
// or set custom function using IO_PB1_SetInterruptHandler()
}
/**
Allows selecting an interrupt handler for IO_PB0 at application runtime
*/
void IO_PB0_SetInterruptHandler(void (* interruptHandler)(void))
{
IO_PB0_InterruptHandler = interruptHandler;
}
void IO_PB0_DefaultInterruptHandler(void)
{
// add your IO_PB0 interrupt custom code
// or set custom function using IO_PB0_SetInterruptHandler()
}
/**
Allows selecting an interrupt handler for SW0 at application runtime
*/
void SW0_SetInterruptHandler(void (* interruptHandler)(void))
{
SW0_InterruptHandler = interruptHandler;
}
void SW0_DefaultInterruptHandler(void)
{
// add your SW0 interrupt custom code
// or set custom function using SW0_SetInterruptHandler()
UART3_Write('S');
}
/**
Allows selecting an interrupt handler for LED at application runtime
*/
void LED_SetInterruptHandler(void (* interruptHandler)(void))
{
LED_InterruptHandler = interruptHandler;
}
void LED_DefaultInterruptHandler(void)
{
// add your LED interrupt custom code
// or set custom function using LED_SetInterruptHandler()
}
ISR(PORTA_PORT_vect)
{
/* Clear interrupt flags */
VPORTA.INTFLAGS = 0xff;
}
ISR(PORTB_PORT_vect)
{
// Call the interrupt handler for the callback registered at runtime
if(VPORTB.INTFLAGS & PORT_INT1_bm)
{
IO_PB1_InterruptHandler();
}
if(VPORTB.INTFLAGS & PORT_INT0_bm)
{
IO_PB0_InterruptHandler();
}
if(VPORTB.INTFLAGS & PORT_INT2_bm)
{
SW0_InterruptHandler();
}
if(VPORTB.INTFLAGS & PORT_INT3_bm)
{
LED_InterruptHandler();
}
/* Clear interrupt flags */
VPORTB.INTFLAGS = 0xff;
}
ISR(PORTC_PORT_vect)
{
/* Clear interrupt flags */
VPORTC.INTFLAGS = 0xff;
}
ISR(PORTD_PORT_vect)
{
/* Clear interrupt flags */
VPORTD.INTFLAGS = 0xff;
}
ISR(PORTE_PORT_vect)
{
/* Clear interrupt flags */
VPORTE.INTFLAGS = 0xff;
}
ISR(PORTF_PORT_vect)
{
/* Clear interrupt flags */
VPORTF.INTFLAGS = 0xff;
}
/**
End of File
*/

Wyświetl plik

@ -0,0 +1,90 @@
/**
* protected_io Source Code File
*
* @file protected_io.S
*
* @ingroup config_bitsdriver
*
* @brief This file contains the generated protected_io source code file for the CONFIGURATION BITS.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#include "../utils/assembler.h"
/*
* GNU and IAR use different calling conventions. Since this is
* a very small and simple function to begin with, it's easier
* to implement it twice than to deal with the differences
* within a single implementation.
*/
PUBLIC_FUNCTION(protected_write_io)
#if defined(__GNUC__)
#ifdef RAMPZ
out _SFR_IO_ADDR(RAMPZ), r1 // Clear bits 23:16 of Z
#endif
movw r30, r24 // Load addr into Z
out CCP, r22 // Start CCP handshake
st Z, r20 // Write value to I/O register
ret // Return to caller
#elif defined(__IAR_SYSTEMS_ASM__)
# if !defined(CONFIG_MEMORY_MODEL_TINY) && !defined(CONFIG_MEMORY_MODEL_SMALL) \
&& !defined(CONFIG_MEMORY_MODEL_LARGE)
# define CONFIG_MEMORY_MODEL_SMALL
# endif
# if defined(CONFIG_MEMORY_MODEL_LARGE)
ldi r20, 0
out RAMPZ, r20 // Reset bits 23:16 of Z
movw r30, r16 // Load addr into Z
# elif defined(CONFIG_MEMORY_MODEL_TINY)
ldi r31, 0 // Reset bits 8:15 of Z
mov r30, r16 // Load addr into Z
# else
movw r30, r16 // Load addr into Z
# endif
# if defined(CONFIG_MEMORY_MODEL_TINY)
out CCP, r17 // Start CCP handshake
st Z, r18 // Write value to I/O register
# elif defined(CONFIG_MEMORY_MODEL_SMALL)
out CCP, r18 // Start CCP handshake
st Z, r19 // Write value to I/O register
# elif defined(CONFIG_MEMORY_MODEL_LARGE)
out CCP, r19 // Start CCP handshake
st Z, r20 // Write value to I/O register
# else
# error Unknown memory model in use, no idea how registers should be accessed
# endif
ret
#else
# error Unknown assembler
#endif
END_FUNC(protected_write_io)
END_FILE()

Wyświetl plik

@ -0,0 +1,43 @@
/**
* System Driver Source File
*
* @file system.c
*
* @ingroup systemdriver
*
* @brief This file contains the API implementation for the System driver.
*
* @version Driver Version 1.0.1
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#include "../system.h"
void SYSTEM_Initialize(void)
{
CLOCK_Initialize();
PIN_MANAGER_Initialize();
USART3_Initialize();
CPUINT_Initialize();
}

Wyświetl plik

@ -0,0 +1,61 @@
/**
* System Driver Header File
*
* @file system.h
*
* @defgroup systemdriver System Driver
*
* @brief This file contains the API prototypes for the System driver.
*
* @version Driver Version 1.0.1
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef MCC_H
#define MCC_H
#ifdef __cplusplus
extern "C" {
#endif
#include "../system/utils/compiler.h"
#include "config_bits.h"
#include "../system/clock.h"
#include "../system/pins.h"
#include "../uart/usart3.h"
#include "../system/interrupt.h"
/**
* @ingroup systemdriver
* @brief Initializes the system module. This routine must be called only once during the system initialization and before any other routine is called.
* @param None.
* @return None.
*/
void SYSTEM_Initialize(void);
#ifdef __cplusplus
}
#endif
#endif /* MCC_H */
/**
End of File
*/

Wyświetl plik

@ -0,0 +1,49 @@
/**
* Assembler Header File
*
* @file assembler.h
*
* @ingroup config_bitsdriver
*
* @brief This file contains the assembler header file for the configuration bits driver.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef ASSEMBLER_H_INCLUDED
#define ASSEMBLER_H_INCLUDED
#if !defined(__ASSEMBLER__) && !defined(__IAR_SYSTEMS_ASM__) && !defined(__DOXYGEN__)
#error This file may only be included from assembly files
#endif
#if defined(__ASSEMBLER__)
#include "assembler/gas.h"
#include <avr/io.h>
#elif defined(__IAR_SYSTEMS_ASM__)
#include "assembler/iar.h"
#include <ioavr.h>
#endif
#endif /* ASSEMBLER_H_INCLUDED */

Wyświetl plik

@ -0,0 +1,120 @@
/**
* GAS Header File
*
* @file gas.h
*
* @ingroup config_bitsdriver
*
* @brief This file contains the generated GAS header file for the Configuration bits driver.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef ASSEMBLER_GAS_H_INCLUDED
#define ASSEMBLER_GAS_H_INCLUDED
#ifndef __DOXYGEN__
/* clang-format off */
/* IAR doesn't accept dots in macro names */
.macro ld_addr, reg, sym
lda.w \reg, \sym
.endm
/* Define a function \a name that is either globally visible or only
* file-local.
*/
.macro gas_begin_func name, is_public
.if \is_public
.global \name
.endif
#ifdef __XC8
.section .text.\name, code
#else
.section .text.\name, "ax", @progbits
#endif
.type \name, @function
\name :
.endm
/* Define a function \a name that is either globally visible or only
* file-local in a given segment.
*/
.macro gas_begin_func_segm name, is_public, segment
.if \is_public
.global \name
.endif
.section .\segment, "ax", @progbits
.type \name, @function
\name :
.endm
/* Define \a name as a weak alias for the function \a strong_name */
.macro gas_weak_function_alias name, strong_name
.global \name
.weak \name
.type \name, @function
.set \name, \strong_name
.endm
/* Define a weak function called \a name */
.macro gas_weak_function name
.weak \name
gas_begin_func \name 1
.endm
#define REPEAT(count) .rept count
#define END_REPEAT() .endr
#define FILL_BYTES(count) .fill count
#define SET_LOC(offset) .org offset
#define L(name) .L##name
#define EXTERN_SYMBOL(name)
#define TEXT_SECTION(name) \
.section name, "ax", @progbits
#define RODATA_SECTION(name) \
.section name, "a", @progbits
#define DATA_SECTION(name) \
.section name, "aw", @progbits
#define BSS_SECTION(name) \
.section name, "aw", @nobits
#define FUNCTION(name) gas_begin_func name 0
#define PUBLIC_FUNCTION(name) gas_begin_func name 1
#define PUBLIC_FUNCTION_SEGMENT(name, segment) \
gas_begin_func_segm name 1 segment
#define WEAK_FUNCTION(name) gas_weak_function name
#define WEAK_FUNCTION_ALIAS(name, strong_name) \
gas_weak_function_alias name strong_name
#define END_FUNC(name) \
.size name, . - name
#define END_FILE()
/* clang-format on */
#endif /* __DOXYGEN__ */
#endif /* ASSEMBLER_GAS_H_INCLUDED */

Wyświetl plik

@ -0,0 +1,104 @@
/**
* IAR Header File
*
* @file iar.h
*
* @ingroup config_bitsdriver
*
* @brief This file contains the generated IAR header file for the Configuration bits driver.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef ASSEMBLER_IAR_H_INCLUDED
#define ASSEMBLER_IAR_H_INCLUDED
/* clang-format off */
ld_addr MACRO reg, sym
mov reg, LWRD sym
orh reg, HWRD sym
ENDM
call MACRO sym
rcall sym
ENDM
iar_begin_func MACRO name, sect, is_public, is_weak
MODULE name
RSEG CODE:CODE:NOROOT(1)
IF is_weak == 1
PUBWEAK name
ELSEIF is_public
PUBLIC name
ENDIF
name:
ENDM
iar_begin_func_segm MACRO name, sect, is_public, is_weak, segment
MODULE name
RSEG segment:CODE:NOROOT(1)
IF is_weak == 1
PUBWEAK name
ELSEIF is_public
PUBLIC name
ENDIF
name:
ENDM
iar_weak_alias MACRO name, strong_name
PUBWEAK name
name:
rjmp strong_name
ENDM
#define lo(x) LWRD x
#define hi(x) HWRD x
#define REPEAT(count) REPT count
#define END_REPEAT() ENDR
#define SET_LOC(offset) ORG offset
#define END_FILE() END
#define FILL_BYTES(count) DS8 count
#define L(name) name
#define EXTERN_SYMBOL(name) EXTERN name
#define FUNCTION(name) iar_begin_func name, text_##name, 0, 0
#define PUBLIC_FUNCTION(name) iar_begin_func name, text_##name, 1, 0
#define PUBLIC_FUNCTION_SEGMENT(name, segment) \
iar_begin_func_segm name, text_##name, 1, 0, segment
#define WEAK_FUNCTION(name) iar_begin_func name, text_##name, 1, 1
#define WEAK_FUNCTION_ALIAS(name, strong_name) \
iar_weak_alias name, strong_name
#define END_FUNC(name) ENDMOD
#define TEXT_SECTION(name) RSEG name:CODE:NOROOT
#define RODATA_SECTION(name) RSEG name:CONST:NOROOT
#define DATA_SECTION(name) RSEG name:DATA:NOROOT
#define BSS_SECTION(name) RSEG name:DATA:NOROOT
/* clang-format on */
#endif /* ASSEMBLER_IAR_H_INCLUDED */

Wyświetl plik

@ -0,0 +1,87 @@
/**
* CONFIGURATION BITS Generated Atomic Header File
*
* @file atomic.h
*
* @defgroup doc_driver_utils_atomic Atomic memory access and critical sections
*
* @brief This file contains the atomic memory access and critical sections header file for the configuration bits driver.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef ATOMIC_H
#define ATOMIC_H
/* clang-format off */
#if defined(__GNUC__) || defined (__DOXYGEN__)
/**
* @brief Enters critical region. Saves the contents of the status register, including the Global Interrupt Enable bit, so that it can be restored upon leaving the critical region.
* Thereafter, clears the Global Interrupt Enable Bit.This macro takes a parameter P that is unused for the GCC compiler,but necessary for code compatibility with the IAR compiler.
* The IAR compiler declares a variable with the name of the parameter forholding the SREG value.
* Compilation will fail when the variable declared in the macro is not unique within the scope that the critical region is declared within.
* @param[in] UNUSED(GCC)/P(IAR) Name of variable storing SREG.
*/
#define ENTER_CRITICAL(UNUSED) __asm__ __volatile__ ( \
"in __tmp_reg__, __SREG__" "\n\t" \
"cli" "\n\t" \
"push __tmp_reg__" "\n\t" \
::: "memory" \
)
/**
* @brief Exits a critical region. Restores the contents of the status register, including the Global Interrupt Enable bit, as it was when entering the critical region.
* This macro takes a parameter P that is unused for the GCC compiler, but necessary for code compatibility with the IAR compiler.
* The IAR compiler uses this parameter as the name of a variable that holds the SREG value.
* The parameter must be identical to the parameter used in the corresponding ENTER_CRITICAL().
* @param[in] UNUSED(GCC)/P(IAR) Name of variable storing SREG
*/
#define EXIT_CRITICAL(UNUSED) __asm__ __volatile__ ( \
"pop __tmp_reg__" "\n\t" \
"out __SREG__, __tmp_reg__" "\n\t" \
::: "memory" \
)
#define DISABLE_INTERRUPTS() __asm__ __volatile__ ( "cli" ::: "memory")
#define ENABLE_INTERRUPTS() __asm__ __volatile__ ( "sei" ::: "memory")
#elif defined(__ICCAVR__)
#define ENTER_CRITICAL(P) unsigned char P = __save_interrupt();__disable_interrupt();
#define EXIT_CRITICAL(P) __restore_interrupt(P);
#define DISABLE_INTERRUPTS() __disable_interrupt();
#define ENABLE_INTERRUPTS() __enable_interrupt();
#else
# error Unsupported compiler.
#endif
/* clang-format on */
#endif /* ATOMIC_H */

Wyświetl plik

@ -0,0 +1,72 @@
/**
* Compiler Header File
*
* @file compiler.h
*
* @defgroup doc_driver_utils_compiler Compiler abstraction
*
* @brief This file contains the compiler abstraction layer and code utilities for 8-bit AVR. This module provides various abstraction layers and utilities to make code compatible between different compilers.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef UTILS_COMPILER_H
#define UTILS_COMPILER_H
#if defined(__GNUC__)
#include <avr/io.h>
#include <avr/builtins.h>
#if defined(__XC8__)
#include <xc.h>
#endif
#elif defined(__ICCAVR__)
#define ENABLE_BIT_DEFINITIONS 1
#include <ioavr.h>
#include <intrinsics.h>
#ifndef CCP_IOREG_gc
#define CCP_IOREG_gc 0xD8 /* CPU_CCP_IOREG_gc */
#endif
#ifndef CCP_SPM_gc
#define CCP_SPM_gc 0x9D /* CPU_CCP_SPM_gc */
#endif
#else
#error Unsupported compiler.
#endif
#include <stdbool.h>
#include <stdint.h>
#include <stddef.h>
#include <stdlib.h>
#include "interrupt_avr8.h"
/**
* @def UNUSED
* @brief Marking \a v as a unused parameter or value.
*/
#define UNUSED(v) (void)(v)
#endif /* UTILS_COMPILER_H */

Wyświetl plik

@ -0,0 +1,88 @@
/**
* interrupt_avr8 Header File
*
* @file interrupt_avr8.h
*
* @defgroup doc_driver_utils_interrupts ISR abstraction
*
* @brief Interrupt-related functionality.
*
* @version Driver Version 1.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef UTILS_INTERRUPT_AVR8_H
#define UTILS_INTERRUPT_AVR8_H
/**
* \weakgroup interrupt_group
*
* @{
*/
#ifdef ISR_CUSTOM_H
#include ISR_CUSTOM_H
#else
/**
* @def ISR
* @brief Define service routine for specified interrupt vector.
* @code
ISR(FOO_vect)
{
...
}
* @endcode
*
* @param vect Interrupt vector name as found in the device header files.
*/
#if defined(__DOXYGEN__)
#define ISR(vect)
#elif defined(__GNUC__)
#include <avr/interrupt.h>
#elif defined(__ICCAVR__)
#define __ISR(x) _Pragma(#x)
#define ISR(vect) __ISR(vector = vect) __interrupt void handler_##vect(void)
#endif
#endif // ISR_CUSTOM_H
#ifdef __GNUC__
#define cpu_irq_enable() sei()
#define cpu_irq_disable() cli()
#else
#define cpu_irq_enable() __enable_interrupt()
#define cpu_irq_disable() __disable_interrupt()
#endif
//! @}
/**
* \weakgroup interrupt_deprecated_group
* @{
*/
// Deprecated definitions.
#define Enable_global_interrupt() cpu_irq_enable()
#define Disable_global_interrupt() cpu_irq_disable()
#define Is_global_interrupt_enabled() cpu_irq_is_enabled()
//! @}
#endif /* UTILS_INTERRUPT_AVR8_H */

Wyświetl plik

@ -0,0 +1,52 @@
/**
* utils Header File
*
* @file system.h
*
* @defgroup doc_driver_utils AVR Code utility functions
*
* @brief This file contains the compiler abstraction layer and code utilities for AVR.This module provides various abstraction layers and utilities to make code compatible between different compilers.
*
* @version Driver Version 1.0.1
* \{
*
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef UTILS_H_INCLUDED
#define UTILS_H_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Retrieve array size
*/
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* UTILS_H_INCLUDED */

Wyświetl plik

@ -0,0 +1,60 @@
/**
* utils_assert Header File
*
* @file utils_assert.h
*
* @defgroup doc_driver_utils_assert Functionality for assert
*
* @brief This file contains the generated utils_assert header file for the configuration bits driver.
*
* @version Driver Version 1.0.1
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef _ASSERT_H_INCLUDED
#define _ASSERT_H_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
#include <stdbool.h>
/**
* @brief Assert macro
* Macro used to throw asserts. It can be mapped to different function based on debug level.
* @param[in] condition A condition to be checked; assert is thrown if the given condition is false.
*/
#ifdef DEBUG
#define ASSERT(condition) \
if (!(condition)) \
while (true) \
;
#else
#define ASSERT(condition) ((void)0)
#endif
#ifdef __cplusplus
}
#endif
#endif /* _ASSERT_H_INCLUDED */

Wyświetl plik

@ -0,0 +1,391 @@
/**
* USART3 Generated Driver API Header File
*
* @file usart3.c
*
* @ingroup usart3
*
* @brief This is the generated driver implementation file for the USART3 driver using
*
* @version USART3 Driver Version 2.0.3
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
/**
Section: Included Files
*/
#include "../usart3.h"
/**
Section: Macro Declarations
*/
#define USART3_RX_BUFFER_SIZE (8) //buffer size should be 2^n
#define USART3_RX_BUFFER_MASK (USART3_RX_BUFFER_SIZE - 1)
/**
Section: Driver Interface
*/
const uart_drv_interface_t UART3 = {
.Initialize = &USART3_Initialize,
.Deinitialize = &USART3_Deinitialize,
.Read = &USART3_Read,
.Write = &USART3_Write,
.IsRxReady = &USART3_IsRxReady,
.IsTxReady = &USART3_IsTxReady,
.IsTxDone = &USART3_IsTxDone,
.TransmitEnable = &USART3_TransmitEnable,
.TransmitDisable = &USART3_TransmitDisable,
.AutoBaudSet = &USART3_AutoBaudSet,
.AutoBaudQuery = &USART3_AutoBaudQuery,
.BRGCountSet = NULL,
.BRGCountGet = NULL,
.BaudRateSet = NULL,
.BaudRateGet = NULL,
.AutoBaudEventEnableGet = NULL,
.ErrorGet = &USART3_ErrorGet,
.TxCompleteCallbackRegister = NULL,
.RxCompleteCallbackRegister = &USART3_RxCompleteCallbackRegister,
.TxCollisionCallbackRegister = NULL,
.FramingErrorCallbackRegister = &USART3_FramingErrorCallbackRegister,
.OverrunErrorCallbackRegister = &USART3_OverrunErrorCallbackRegister,
.ParityErrorCallbackRegister = &USART3_ParityErrorCallbackRegister,
.EventCallbackRegister = NULL,
};
/**
Section: USART3 variables
*/
static volatile uint8_t usart3RxHead = 0;
static volatile uint8_t usart3RxTail = 0;
static volatile uint8_t usart3RxBuffer[USART3_RX_BUFFER_SIZE];
static volatile usart3_status_t usart3RxStatusBuffer[USART3_RX_BUFFER_SIZE];
volatile uint8_t usart3RxCount;
static volatile usart3_status_t usart3RxLastError;
/**
Section: USART3 APIs
*/
void (*USART3_FramingErrorHandler)(void);
void (*USART3_OverrunErrorHandler)(void);
void (*USART3_ParityErrorHandler)(void);
void (*USART3_RxInterruptHandler)(void);
static void (*USART3_RxCompleteInterruptHandler)(void);
static void USART3_DefaultFramingErrorCallback(void);
static void USART3_DefaultOverrunErrorCallback(void);
static void USART3_DefaultParityErrorCallback(void);
void USART3_ReceiveISR(void);
/**
Section: USART3 APIs
*/
void USART3_Initialize(void)
{
USART3_RxInterruptHandler = USART3_ReceiveISR;
// Set the USART3 module to the options selected in the user interface.
//BAUD 1666;
USART3.BAUD = (uint16_t)USART3_BAUD_RATE(9600);
// ABEIE disabled; DREIE disabled; LBME disabled; RS485 DISABLE; RXCIE enabled; RXSIE enabled; TXCIE disabled;
USART3.CTRLA = 0x90;
// MPCM disabled; ODME disabled; RXEN enabled; RXMODE NORMAL; SFDEN disabled; TXEN enabled;
USART3.CTRLB = 0xC0;
// CMODE Asynchronous Mode; UCPHA enabled; UDORD disabled; CHSIZE Character size: 8 bit; PMODE No Parity; SBMODE 1 stop bit;
USART3.CTRLC = 0x3;
//DBGRUN disabled;
USART3.DBGCTRL = 0x0;
//IREI disabled;
USART3.EVCTRL = 0x0;
//RXPL 0x0;
USART3.RXPLCTRL = 0x0;
//TXPL 0x0;
USART3.TXPLCTRL = 0x0;
USART3_FramingErrorCallbackRegister(USART3_DefaultFramingErrorCallback);
USART3_OverrunErrorCallbackRegister(USART3_DefaultOverrunErrorCallback);
USART3_ParityErrorCallbackRegister(USART3_DefaultParityErrorCallback);
usart3RxLastError.status = 0;
usart3RxHead = 0;
usart3RxTail = 0;
usart3RxCount = 0;
USART3.CTRLA |= USART_RXCIE_bm;
}
void USART3_Deinitialize(void)
{
USART3.CTRLA &= ~(USART_RXCIE_bm);
USART3.BAUD = 0x00;
USART3.CTRLA = 0x00;
USART3.CTRLB = 0x00;
USART3.CTRLC = 0x00;
USART3.DBGCTRL = 0x00;
USART3.EVCTRL = 0x00;
USART3.RXPLCTRL = 0x00;
USART3.TXPLCTRL = 0x00;
}
void USART3_Enable(void)
{
USART3.CTRLB |= USART_RXEN_bm | USART_TXEN_bm;
}
void USART3_Disable(void)
{
USART3.CTRLB &= ~(USART_RXEN_bm | USART_TXEN_bm);
}
void USART3_TransmitEnable(void)
{
USART3.CTRLB |= USART_TXEN_bm;
}
void USART3_TransmitDisable(void)
{
USART3.CTRLB &= ~(USART_TXEN_bm);
}
void USART3_ReceiveEnable(void)
{
USART3.CTRLB |= USART_RXEN_bm ;
}
void USART3_ReceiveDisable(void)
{
USART3.CTRLB &= ~(USART_RXEN_bm);
}
void USART3_AutoBaudSet(bool enable)
{
if(enable)
{
USART3.CTRLB |= USART_RXMODE_gm & (0x02 << USART_RXMODE_gp);
USART3.STATUS |= USART_WFB_bm ;
}
else
{
USART3.CTRLB &= ~(USART_RXMODE_gm);
USART3.STATUS &= ~(USART_BDF_bm);
}
}
bool USART3_AutoBaudQuery(void)
{
return (bool)(USART3.STATUS & USART_BDF_bm) ;
}
bool USART3_IsAutoBaudDetectError(void)
{
return (bool)(USART3.STATUS & USART_ISFIF_bm) ;
}
void USART3_AutoBaudDetectErrorReset(void)
{
USART3.STATUS |= USART_ISFIF_bm ;
USART3_AutoBaudSet(false);
USART3_ReceiveDisable();
asm("nop");
asm("nop");
asm("nop");
asm("nop");
USART3_ReceiveEnable();
USART3_AutoBaudSet(true);
}
void USART3_ReceiveInterruptEnable(void)
{
USART3.CTRLA |= USART_RXCIE_bm ;
}
void USART3_ReceiveInterruptDisable(void)
{
USART3.CTRLA &= ~(USART_RXCIE_bm);
}
bool USART3_IsRxReady(void)
{
return (usart3RxCount ? true : false);
}
bool USART3_IsTxReady(void)
{
return (bool)(USART3.STATUS & USART_DREIF_bm);
}
bool USART3_IsTxDone(void)
{
return (bool)(USART3.STATUS & USART_TXCIF_bm);
}
size_t USART3_ErrorGet(void)
{
usart3RxLastError.status = usart3RxStatusBuffer[(usart3RxTail + 1) & USART3_RX_BUFFER_MASK].status;
return usart3RxLastError.status;
}
uint8_t USART3_Read(void)
{
uint8_t readValue = 0;
uint8_t tempRxTail;
readValue = usart3RxBuffer[usart3RxTail];
tempRxTail = (usart3RxTail + 1) & USART3_RX_BUFFER_MASK; // Buffer size of RX should be in the 2^n
usart3RxTail = tempRxTail;
USART3.CTRLA &= ~(USART_RXCIE_bm);
if(usart3RxCount != 0)
{
usart3RxCount--;
}
USART3.CTRLA |= USART_RXCIE_bm;
return readValue;
}
/* Interrupt service routine for RX complete */
ISR(USART3_RXC_vect)
{
USART3_ReceiveISR();
}
void USART3_ReceiveISR(void)
{
uint8_t regValue;
uint8_t tempRxHead;
usart3RxStatusBuffer[usart3RxHead].status = 0;
if(USART3.RXDATAH & USART_FERR_bm)
{
usart3RxStatusBuffer[usart3RxHead].ferr = 1;
if(NULL != USART3_FramingErrorHandler)
{
USART3_FramingErrorHandler();
}
}
if(USART3.RXDATAH & USART_PERR_bm)
{
usart3RxLastError.perr = 1;
if(NULL != USART3_ParityErrorHandler)
{
USART3_ParityErrorHandler();
}
}
if(USART3.RXDATAH & USART_BUFOVF_bm)
{
usart3RxStatusBuffer[usart3RxHead].oerr = 1;
if(NULL != USART3_OverrunErrorHandler)
{
USART3_OverrunErrorHandler();
}
}
regValue = USART3.RXDATAL;
if(regValue == 'T')LED_Toggle();
tempRxHead = (usart3RxHead + 1) & USART3_RX_BUFFER_MASK;// Buffer size of RX should be in the 2^n
if (tempRxHead == usart3RxTail) {
// ERROR! Receive buffer overflow
}
else
{
// Store received data in buffer
usart3RxBuffer[usart3RxHead] = regValue;
usart3RxHead = tempRxHead;
usart3RxCount++;
}
if (USART3_RxCompleteInterruptHandler != NULL)
{
(*USART3_RxCompleteInterruptHandler)();
}
}
void USART3_Write(uint8_t txData)
{
USART3.TXDATAL = txData; // Write the data byte to the USART.
}
static void USART3_DefaultFramingErrorCallback(void)
{
}
static void USART3_DefaultOverrunErrorCallback(void)
{
}
static void USART3_DefaultParityErrorCallback(void)
{
}
void USART3_FramingErrorCallbackRegister(void (* callbackHandler)(void))
{
if(NULL != callbackHandler)
{
USART3_FramingErrorHandler = callbackHandler;
}
}
void USART3_OverrunErrorCallbackRegister(void (* callbackHandler)(void))
{
if(NULL != callbackHandler)
{
USART3_OverrunErrorHandler = callbackHandler;
}
}
void USART3_ParityErrorCallbackRegister(void (* callbackHandler)(void))
{
if(NULL != callbackHandler)
{
USART3_ParityErrorHandler = callbackHandler;
}
}
void USART3_RxCompleteCallbackRegister(void (* callbackHandler)(void))
{
if(NULL != callbackHandler)
{
USART3_RxCompleteInterruptHandler = callbackHandler;
}
}

Wyświetl plik

@ -0,0 +1,90 @@
/**
* UART Generated Driver Interface Header File
*
* @file uart_drv_interface.h
*
* @defgroup uart_drv_interface UART_DRV_INTERFACE
*
* @brief This file contains APIs for UART module.
*
* @version UART Driver Version 2.0.1
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef UART_DRV_INTERFACE_H
#define UART_DRV_INTERFACE_H
/**
Section: Included Files
*/
#include <stdbool.h>
#include <stdint.h>
#include "uart_types.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
Section: Data Type Definitions
*/
/**
@ingroup UART
@struct uart_drv_interface_t
@brief Structure containing the function pointers of UART driver.
*/
typedef struct {
void (*Initialize)(void);
void (*Deinitialize)(void);
uint8_t (*Read)(void);
void (*Write)(uint8_t);
bool (*IsRxReady)(void);
bool (*IsTxReady)(void);
bool (*IsTxDone)(void);
void (*TransmitEnable)(void);
void (*TransmitDisable)(void);
void (*AutoBaudSet)(bool enable);
bool (*AutoBaudQuery)(void);
bool (*AutoBaudEventEnableGet)(void);
void (*BRGCountSet)(uint32_t brgValue);
uint32_t (*BRGCountGet)(void);
void (*BaudRateSet)(uint32_t baudRate);
uint32_t (*BaudRateGet)(void);
size_t (*ErrorGet)(void);
void (*TxCompleteCallbackRegister)(void (*CallbackHandler) (void));
void (*RxCompleteCallbackRegister)(void (*CallbackHandler) (void));
void (*TxCollisionCallbackRegister)(void (*CallbackHandler) (void));
void (*FramingErrorCallbackRegister)(void (*CallbackHandler) (void));
void (*OverrunErrorCallbackRegister)(void (*CallbackHandler) (void));
void (*ParityErrorCallbackRegister)(void (*CallbackHandler) (void));
void (*EventCallbackRegister)(void (*CallbackHandler) (void));
}uart_drv_interface_t;
#ifdef __cplusplus
}
#endif
#endif /* UART_DRV_INTERFACE_H */

Wyświetl plik

@ -0,0 +1,81 @@
/**
* UART Generated Driver Interface Header File
*
* @file uart_types.h
*
* @defgroup uart_types UART_TYPES
*
* @brief This file contains APIs for UART module.
*
* @version UART Driver Version 2.0.0
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef UART_TYPES_H
#define UART_TYPES_H
/**
Section: Included Files
*/
#include <stdbool.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
Section: Data Type Definitions
*/
/**
@ingroup uartdriver
@enum UART_STANDARD_BAUDS
@brief This Enum can be used to set UART standard
baud-rates using \ref UARTx_BRGSet function e.g. \ref UART1_BRGSet.
*/
enum UART_STANDARD_BAUDS{
UART_110 = 0,
UART_300 = 1,
UART_600 = 2,
UART_1200 = 3,
UART_2400 = 4,
UART_4800 = 5,
UART_9600 = 6,
UART_14400 = 7,
UART_19200 = 8,
UART_38400 = 9,
UART_57600 = 10,
UART_115200 = 11,
UART_230400 = 12,
UART_460800 = 13,
UART_921600 = 14,
};
#ifdef __cplusplus
}
#endif
#endif /* UART_TYPES_H */

Wyświetl plik

@ -0,0 +1,334 @@
/**
* USART3 Generated Driver API Header File
*
* @file usart3.h
*
* @defgroup usart3 USART3
*
* @brief This file contains API prototypes and other datatypes for USART3 module.
*
* @version USART3 Driver Version 2.0.3
*/
/*
© [2023] Microchip Technology Inc. and its subsidiaries.
Subject to your compliance with these terms, you may use Microchip
software and any derivatives exclusively with Microchip products.
You are responsible for complying with 3rd party license terms
applicable to your use of 3rd party software (including open source
software) that may accompany Microchip software. SOFTWARE IS ?AS IS.?
NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS
SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY, OR 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 RELATED TO THE SOFTWARE WILL NOT
EXCEED AMOUNT OF FEES, IF ANY, YOU PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*/
#ifndef USART3_H
#define USART3_H
/**
Section: Included Files
*/
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include "../system/system.h"
#include "uart_drv_interface.h"
#ifdef __cplusplus // Provide C++ Compatibility
extern "C" {
#endif
/* Normal Mode, Baud register value */
#define USART3_BAUD_RATE(BAUD_RATE) (((float)4000000 * 64 / (16 * (float)BAUD_RATE)) + 0.5)
#define UART3_interface UART3
#define UART3_Initialize USART3_Initialize
#define UART3_Deinitialize USART3_Deinitialize
#define UART3_Write USART3_Write
#define UART3_Read USART3_Read
#define UART3__IsRxReady USART3_IsRxReady
#define UART3_IsTxReady USART3_IsTxReady
#define UART3_IsTxDone USART3_IsTxDone
#define UART3_TransmitEnable USART3_TransmitEnable
#define UART3_TransmitDisable USART3_TransmitDisable
#define UART3_AutoBaudSet USART3_AutoBaudSet
#define UART3_AutoBaudQuery USART3_AutoBaudQuery
#define UART3_BRGCountSet (NULL)
#define UART3_BRGCountGet (NULL)
#define UART3_BaudRateSet (NULL)
#define UART3_BaudRateGet (NULL)
#define UART3__AutoBaudEventEnableGet (NULL)
#define UART3_ErrorGet USART3_ErrorGet
#define UART3_TxCompleteCallbackRegister (NULL)
#define UART3_RxCompleteCallbackRegister USART3_RxCompleteCallbackRegister
#define UART3_TxCollisionCallbackRegister (NULL)
#define UART3_FramingErrorCallbackRegister USART3_FramingErrorCallbackRegister
#define UART3_OverrunErrorCallbackRegister USART3_OverrunErrorCallbackRegister
#define UART3_ParityErrorCallbackRegister USART3_ParityErrorCallbackRegister
#define UART3_EventCallbackRegister (NULL)
/**
@ingroup usart3
@struct usart3_status_t
@breif This is an instance of USART3_STATUS for USART3 module
*/
typedef union {
struct {
uint8_t perr : 1; /**<This is a bit field for Parity Error status*/
uint8_t ferr : 1; /**<This is a bit field for Framing Error status*/
uint8_t oerr : 1; /**<This is a bit field for Overfrun Error status*/
uint8_t reserved : 5; /**<Reserved*/
};
size_t status; /**<Group byte for status errors*/
}usart3_status_t;
/**
Section: Data Type Definitions
*/
/**
* @ingroup usart3
* @brief External object for usart3_interface.
*/
extern const uart_drv_interface_t UART3;
/**
* @ingroup usart3
* @brief This API initializes the USART3 driver.
* This routine initializes the USART3 module.
* This routine must be called before any other USART3 routine is called.
* This routine should only be called once during system initialization.
* @param None.
* @return None.
*/
void USART3_Initialize(void);
/**
* @ingroup usart3
* @brief This API Deinitializes the USART3 driver.
* This routine disables the USART3 module.
* @param None.
* @return None.
*/
void USART3_Deinitialize(void);
/**
* @ingroup usart3
* @brief This API enables the USART3 module.
* @param None.
* @return None.
*/
void USART3_Enable(void);
/**
* @ingroup usart3
* @brief This API disables the USART3 module.
* @param None.
* @return None.
*/
void USART3_Disable(void);
/**
* @ingroup usart3
* @brief This API enables the USART3 transmitter.
* USART3 should also be enable to send bytes over TX pin.
* @param None.
* @return None.
*/
void USART3_TransmitEnable(void);
/**
* @ingroup usart3
* @brief This API disables the USART3 transmitter.
* @param None.
* @return None.
*/
void USART3_TransmitDisable(void);
/**
* @ingroup usart3
* @brief This API enables the USART3 Receiver.
* USART3 should also be enable to receive bytes over RX pin.
* @param None.
* @return None.
*/
void USART3_ReceiveEnable(void);
/**
* @ingroup usart3
* @brief This API disables the USART3 Receiver.
* @param None.
* @return None.
*/
void USART3_ReceiveDisable(void);
/**
* @ingroup usart3
* @brief This API enables the USART3 receiver interrupt.
* @param None.
* @return None.
*/
void USART3_ReceiveInterruptEnable(void);
/**
* @ingroup usart3
* @brief This API disables the USART3 receiver interrupt.
* @param None.
* @return None.
*/
void USART3_ReceiveInterruptDisable(void);
/**
* @ingroup usart3
* @brief This API enables the USART3 AutoBaud Detection.
* @param bool enable.
* @return None.
*/
void USART3_AutoBaudSet(bool enable);
/**
* @ingroup usart3
* @brief This API reads the USART3 AutoBaud Detection Complete bit.
* @param None.
* @return None.
*/
bool USART3_AutoBaudQuery(void);
/**
* @ingroup usart3
* @brief This API reads the USART3 AutoBaud Detection error bit.
* @param None.
* @return None.
*/
bool USART3_IsAutoBaudDetectError(void);
/**
* @ingroup usart3
* @brief This API Reset the USART3 AutoBaud Detection error bit.
* @param None.
* @return None.
*/
void USART3_AutoBaudDetectErrorReset(void);
/**
* @ingroup usart3
* @brief This API checks if USART3 receiver has received data and ready to be read.
* @param None.
* @retval true if USART3 receiver FIFO has a data
* @retval false USART3 receiver FIFO is empty
*/
bool USART3_IsRxReady(void);
/**
* @ingroup usart3
* @brief This function checks if USART3 transmitter is ready to accept a data byte.
* @param None.
* @retval true if USART3 transmitter FIFO has atleast 1 byte space
* @retval false if USART3 transmitter FIFO is full
*/
bool USART3_IsTxReady(void);
/**
* @ingroup usart3
* @brief This function return the status of transmit shift register (TSR).
* @param None.
* @retval true if Data completely shifted out from the TSR
* @retval false if Data is present in Transmit FIFO and/or in TSR
*/
bool USART3_IsTxDone(void);
/**
* @ingroup usart3
* @brief This function gets the error status of the last read byte.
* This function should be called before USART3_Read().
* @param None.
* @return Status of the last read byte. See usart3_status_t struct for more details.
*/
size_t USART3_ErrorGet(void);
/**
* @ingroup usart3
* @brief This function reads the 8 bits from receiver FIFO register.
* @pre The transfer status should be checked to see if the receiver is not empty
* before calling this function. USART3_IsRxReady() should be checked in if () before calling this API.
* @param None.
* @return 8-bit data from RX FIFO register.
*/
uint8_t USART3_Read(void);
/**
* @ingroup usart3
* @brief This function writes a byte of data to the transmitter FIFO register.
* @pre The transfer status should be checked to see if the transmitter is ready to accept a byte
* before calling this function. USART3_IsTxReady() should be checked in if() before calling this API.
* @param txData - Data byte to write to the TX FIFO.
* @return None.
*/
void USART3_Write(uint8_t txData);
/**
* @ingroup usart3
* @brief This API registers the function to be called upon USART3 framing error.
* @param callbackHandler - a function pointer which will be called upon framing error condition.
* @return None.
*/
void USART3_FramingErrorCallbackRegister(void (* callbackHandler)(void));
/**
* @ingroup usart3
* @brief This API registers the function to be called upon USART3 overrun error.
* @param callbackHandler - a function pointer which will be called upon overrun error condition.
* @return None.
*/
void USART3_OverrunErrorCallbackRegister(void (* callbackHandler)(void));
/**
* @ingroup usart3
* @brief This API registers the function to be called upon USART3 Parity error.
* @param callbackHandler - a function pointer which will be called upon Parity error condition.
* @return None.
*/
void USART3_ParityErrorCallbackRegister(void (* callbackHandler)(void));
/**
* @ingroup usart3
* @brief This function is the ISR function to be called upon Receiver interrupt.
* @param void.
* @return None.
*/
void USART3_ReceiveISR(void);
/**
* @ingroup usart3
* @brief This API registers the function to be called upon Receiver interrupt.
* @param callbackHandler - a function pointer which will be called upon Receiver interrupt condition.
* @return None.
*/
void USART3_RxCompleteCallbackRegister(void (* callbackHandler)(void));
#ifdef __cplusplus // Provide C++ Compatibility
}
#endif
#endif // USART3_H

Wyświetl plik

@ -0,0 +1,315 @@
<?xml version="1.0" encoding="UTF-8"?>
<configurationDescriptor version="65">
<logicalFolder name="root" displayName="root" projectFiles="true">
<logicalFolder name="HeaderFiles"
displayName="Header Files"
projectFiles="true">
<logicalFolder name="MCC Generated Files"
displayName="MCC Generated Files"
projectFiles="true">
<logicalFolder name="system" displayName="system" projectFiles="true">
<logicalFolder name="utils" displayName="utils" projectFiles="true">
<logicalFolder name="assembler" displayName="assembler" projectFiles="true">
<itemPath>mcc_generated_files/system/utils/assembler/iar.h</itemPath>
<itemPath>mcc_generated_files/system/utils/assembler/gas.h</itemPath>
</logicalFolder>
<itemPath>mcc_generated_files/system/utils/utils.h</itemPath>
<itemPath>mcc_generated_files/system/utils/compiler.h</itemPath>
<itemPath>mcc_generated_files/system/utils/atomic.h</itemPath>
<itemPath>mcc_generated_files/system/utils/interrupt_avr8.h</itemPath>
<itemPath>mcc_generated_files/system/utils/assembler.h</itemPath>
<itemPath>mcc_generated_files/system/utils/utils_assert.h</itemPath>
</logicalFolder>
<itemPath>mcc_generated_files/system/port.h</itemPath>
<itemPath>mcc_generated_files/system/config_bits.h</itemPath>
<itemPath>mcc_generated_files/system/clock.h</itemPath>
<itemPath>mcc_generated_files/system/interrupt.h</itemPath>
<itemPath>mcc_generated_files/system/pins.h</itemPath>
<itemPath>mcc_generated_files/system/protected_io.h</itemPath>
<itemPath>mcc_generated_files/system/system.h</itemPath>
<itemPath>mcc_generated_files/system/ccp.h</itemPath>
</logicalFolder>
<logicalFolder name="uart" displayName="uart" projectFiles="true">
<itemPath>mcc_generated_files/uart/uart_types.h</itemPath>
<itemPath>mcc_generated_files/uart/usart3.h</itemPath>
<itemPath>mcc_generated_files/uart/uart_drv_interface.h</itemPath>
</logicalFolder>
</logicalFolder>
</logicalFolder>
<logicalFolder name="LinkerScript"
displayName="Linker Files"
projectFiles="true">
</logicalFolder>
<logicalFolder name="SourceFiles"
displayName="Source Files"
projectFiles="true">
<logicalFolder name="MCC Generated Files"
displayName="MCC Generated Files"
projectFiles="true">
<logicalFolder name="system" displayName="system" projectFiles="true">
<logicalFolder name="src" displayName="src" projectFiles="true">
<itemPath>mcc_generated_files/system/src/clock.c</itemPath>
<itemPath>mcc_generated_files/system/src/pins.c</itemPath>
<itemPath>mcc_generated_files/system/src/config_bits.c</itemPath>
<itemPath>mcc_generated_files/system/src/system.c</itemPath>
<itemPath>mcc_generated_files/system/src/protected_io.S</itemPath>
<itemPath>mcc_generated_files/system/src/interrupt.c</itemPath>
</logicalFolder>
</logicalFolder>
<logicalFolder name="uart" displayName="uart" projectFiles="true">
<logicalFolder name="src" displayName="src" projectFiles="true">
<itemPath>mcc_generated_files/uart/src/usart3.c</itemPath>
</logicalFolder>
</logicalFolder>
</logicalFolder>
<itemPath>main.c</itemPath>
</logicalFolder>
<logicalFolder name="ExternalFiles"
displayName="Important Files"
projectFiles="false">
<itemPath>Makefile</itemPath>
<itemPath>basicUARTcomms_AVRDB.mc3</itemPath>
</logicalFolder>
</logicalFolder>
<projectmakefile>Makefile</projectmakefile>
<confs>
<conf name="default" type="2">
<toolsSet>
<developmentServer>localhost</developmentServer>
<targetDevice>AVR128DB48</targetDevice>
<targetHeader></targetHeader>
<targetPluginBoard></targetPluginBoard>
<platformTool>nEdbgTool</platformTool>
<languageToolchain>XC8</languageToolchain>
<languageToolchainVersion>2.41</languageToolchainVersion>
<platform>3</platform>
</toolsSet>
<packs>
<pack name="AVR-Dx_DFP" vendor="Microchip" version="2.3.272"/>
</packs>
<ScriptingSettings>
</ScriptingSettings>
<compileType>
<linkerTool>
<linkerLibItems>
</linkerLibItems>
</linkerTool>
<archiverTool>
</archiverTool>
<loading>
<useAlternateLoadableFile>false</useAlternateLoadableFile>
<parseOnProdLoad>false</parseOnProdLoad>
<alternateLoadableFile></alternateLoadableFile>
</loading>
<subordinates>
</subordinates>
</compileType>
<makeCustomizationType>
<makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
<makeUseCleanTarget>false</makeUseCleanTarget>
<makeCustomizationPreStep></makeCustomizationPreStep>
<makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
<makeCustomizationPostStep></makeCustomizationPostStep>
<makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>
<makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>
<makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>
</makeCustomizationType>
<HI-TECH-COMP>
<property key="additional-warnings" value="true"/>
<property key="asmlist" value="true"/>
<property key="call-prologues" value="false"/>
<property key="default-bitfield-type" value="true"/>
<property key="default-char-type" value="true"/>
<property key="define-macros" value=""/>
<property key="disable-optimizations" value="false"/>
<property key="extra-include-directories" value=""/>
<property key="favor-optimization-for" value="-speed,+space"/>
<property key="garbage-collect-data" value="true"/>
<property key="garbage-collect-functions" value="true"/>
<property key="identifier-length" value="255"/>
<property key="local-generation" value="false"/>
<property key="operation-mode" value="free"/>
<property key="opt-xc8-compiler-strict_ansi" value="false"/>
<property key="optimization-assembler" value="true"/>
<property key="optimization-assembler-files" value="true"/>
<property key="optimization-debug" value="false"/>
<property key="optimization-invariant-enable" value="false"/>
<property key="optimization-invariant-value" value="16"/>
<property key="optimization-level" value="-O1"/>
<property key="optimization-speed" value="false"/>
<property key="optimization-stable-enable" value="false"/>
<property key="preprocess-assembler" value="true"/>
<property key="short-enums" value="true"/>
<property key="tentative-definitions" value="-fno-common"/>
<property key="undefine-macros" value=""/>
<property key="use-cci" value="false"/>
<property key="use-iar" value="false"/>
<property key="verbose" value="false"/>
<property key="warning-level" value="-3"/>
<property key="what-to-do" value="ignore"/>
</HI-TECH-COMP>
<HI-TECH-LINK>
<property key="additional-options-checksum" value=""/>
<property key="additional-options-code-offset" value=""/>
<property key="additional-options-command-line" value=""/>
<property key="additional-options-errata" value=""/>
<property key="additional-options-extend-address" value="false"/>
<property key="additional-options-trace-type" value=""/>
<property key="additional-options-use-response-files" value="false"/>
<property key="backup-reset-condition-flags" value="false"/>
<property key="calibrate-oscillator" value="false"/>
<property key="calibrate-oscillator-value" value="0x3400"/>
<property key="clear-bss" value="true"/>
<property key="code-model-external" value="wordwrite"/>
<property key="code-model-rom" value=""/>
<property key="create-html-files" value="false"/>
<property key="data-model-ram" value=""/>
<property key="data-model-size-of-double" value="24"/>
<property key="data-model-size-of-double-gcc" value="no-short-double"/>
<property key="data-model-size-of-float" value="24"/>
<property key="data-model-size-of-float-gcc" value="no-short-float"/>
<property key="display-class-usage" value="false"/>
<property key="display-hex-usage" value="false"/>
<property key="display-overall-usage" value="true"/>
<property key="display-psect-usage" value="false"/>
<property key="extra-lib-directories" value=""/>
<property key="fill-flash-options-addr" value=""/>
<property key="fill-flash-options-const" value=""/>
<property key="fill-flash-options-how" value="0"/>
<property key="fill-flash-options-inc-const" value="1"/>
<property key="fill-flash-options-increment" value=""/>
<property key="fill-flash-options-seq" value=""/>
<property key="fill-flash-options-what" value="0"/>
<property key="format-hex-file-for-download" value="false"/>
<property key="initialize-data" value="true"/>
<property key="input-libraries" value="libm"/>
<property key="keep-generated-startup.as" value="false"/>
<property key="link-in-c-library" value="true"/>
<property key="link-in-c-library-gcc" value=""/>
<property key="link-in-peripheral-library" value="false"/>
<property key="managed-stack" value="false"/>
<property key="opt-xc8-linker-file" value="false"/>
<property key="opt-xc8-linker-link_startup" value="false"/>
<property key="opt-xc8-linker-serial" value=""/>
<property key="program-the-device-with-default-config-words" value="false"/>
<property key="remove-unused-sections" value="true"/>
</HI-TECH-LINK>
<Tool>
<property key="AutoSelectMemRanges" value="auto"/>
<property key="communication.activationmode" value="nohv"/>
<property key="communication.interface" value="updi"/>
<property key="communication.speed" value="0.500"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="false"/>
<property key="event.recorder.enabled" value="false"/>
<property key="event.recorder.scvd.files" value=""/>
<property key="firmware.path"
value="Press to browse for a specific firmware version"/>
<property key="firmware.toolpack"
value="Press to select which tool pack to use"/>
<property key="firmware.update.action" value="firmware.update.use.latest"/>
<property key="freeze.timers" value="false"/>
<property key="lastid" value=""/>
<property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="true"/>
<property key="memories.configurationmemory" value="true"/>
<property key="memories.configurationmemory2" value="true"/>
<property key="memories.dataflash" value="true"/>
<property key="memories.eeprom" value="true"/>
<property key="memories.exclude.configurationmemory" value="true"/>
<property key="memories.flashdata" value="true"/>
<property key="memories.id" value="true"/>
<property key="memories.instruction.ram.ranges"
value="${memories.instruction.ram.ranges}"/>
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.ranges" value="0-ffff"/>
<property key="poweroptions.powerenable" value="false"/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.preservedataflash" value="false"/>
<property key="programoptions.preservedataflash.ranges"
value="${memories.dataflash.default}"/>
<property key="programoptions.preserveeeprom" value="false"/>
<property key="programoptions.preserveeeprom.ranges" value="1400-15ff"/>
<property key="programoptions.preserveprogram.ranges" value=""/>
<property key="programoptions.preserveprogramrange" value="false"/>
<property key="programoptions.preserveuserid" value="false"/>
<property key="programoptions.programuserotp" value="false"/>
<property key="toolpack.updateoptions"
value="toolpack.updateoptions.uselatestoolpack"/>
<property key="toolpack.updateoptions.packversion"
value="Press to select which tool pack to use"/>
<property key="voltagevalue" value=""/>
</Tool>
<XC8-CO>
<property key="coverage-enable" value=""/>
<property key="stack-guidance" value="false"/>
</XC8-CO>
<XC8-config-global>
<property key="advanced-elf" value="true"/>
<property key="constdata-progmem" value="true"/>
<property key="gcc-opt-driver-new" value="true"/>
<property key="gcc-opt-std" value="-std=c99"/>
<property key="gcc-output-file-format" value="dwarf-3"/>
<property key="mapped-progmem" value="false"/>
<property key="omit-pack-options" value="false"/>
<property key="omit-pack-options-new" value="1"/>
<property key="output-file-format" value="-mcof,+elf"/>
<property key="smart-io-format" value=""/>
<property key="stack-size-high" value="auto"/>
<property key="stack-size-low" value="auto"/>
<property key="stack-size-main" value="auto"/>
<property key="stack-type" value="compiled"/>
<property key="user-pack-device-support" value=""/>
<property key="wpo-lto" value="false"/>
</XC8-config-global>
<nEdbgTool>
<property key="AutoSelectMemRanges" value="auto"/>
<property key="communication.activationmode" value="nohv"/>
<property key="communication.interface" value="updi"/>
<property key="communication.speed" value="0.500"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="false"/>
<property key="event.recorder.enabled" value="false"/>
<property key="event.recorder.scvd.files" value=""/>
<property key="firmware.path"
value="Press to browse for a specific firmware version"/>
<property key="firmware.toolpack"
value="Press to select which tool pack to use"/>
<property key="firmware.update.action" value="firmware.update.use.latest"/>
<property key="freeze.timers" value="false"/>
<property key="lastid" value=""/>
<property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="true"/>
<property key="memories.configurationmemory" value="true"/>
<property key="memories.configurationmemory2" value="true"/>
<property key="memories.dataflash" value="true"/>
<property key="memories.eeprom" value="true"/>
<property key="memories.exclude.configurationmemory" value="true"/>
<property key="memories.flashdata" value="true"/>
<property key="memories.id" value="true"/>
<property key="memories.instruction.ram.ranges"
value="${memories.instruction.ram.ranges}"/>
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.ranges" value="0-ffff"/>
<property key="poweroptions.powerenable" value="false"/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.preservedataflash" value="false"/>
<property key="programoptions.preservedataflash.ranges"
value="${memories.dataflash.default}"/>
<property key="programoptions.preserveeeprom" value="false"/>
<property key="programoptions.preserveeeprom.ranges" value="1400-15ff"/>
<property key="programoptions.preserveprogram.ranges" value=""/>
<property key="programoptions.preserveprogramrange" value="false"/>
<property key="programoptions.preserveuserid" value="false"/>
<property key="programoptions.programuserotp" value="false"/>
<property key="toolpack.updateoptions"
value="toolpack.updateoptions.uselatestoolpack"/>
<property key="toolpack.updateoptions.packversion"
value="Press to select which tool pack to use"/>
<property key="voltagevalue" value=""/>
</nEdbgTool>
</conf>
</confs>
</configurationDescriptor>

Wyświetl plik

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>com.microchip.mplab.nbide.embedded.makeproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/make-project/1">
<name>basicUARTcomms_AVRDB</name>
<creation-uuid>c0b474c4-0f73-451b-b928-0422652066dc</creation-uuid>
<make-project-type>0</make-project-type>
<sourceEncoding>ISO-8859-1</sourceEncoding>
<make-dep-projects/>
<sourceRootList/>
<confList>
<confElem>
<name>default</name>
<type>2</type>
</confElem>
</confList>
<formatting>
<project-formatting-style>false</project-formatting-style>
</formatting>
</data>
</configuration>
</project>

BIN
images/SW0_ISR.png 100644

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 56 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 57 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 91 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 87 KiB

BIN
images/addUART.png 100644

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 39 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 18 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 91 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 96 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 126 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 53 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 82 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 46 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 31 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 67 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 78 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 40 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 81 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 50 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 46 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 17 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 43 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 93 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 46 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 53 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 30 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 41 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 36 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 30 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 56 KiB

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 95 KiB

BIN
images/verify.gif 100644

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 26 MiB