From: richardbarry Date: Sun, 13 Jun 2010 13:54:06 +0000 (+0000) Subject: Removed outdated AVR32 demo. X-Git-Tag: V6.1.0~109 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=09047e80a6696ee76e7467552159057ba139f0a8;p=freertos Removed outdated AVR32 demo. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1026 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- diff --git a/Demo/AVR32_UC3/AT32UC3A/GCC/Makefile b/Demo/AVR32_UC3/AT32UC3A/GCC/Makefile deleted file mode 100644 index 6f51ddb10..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/GCC/Makefile +++ /dev/null @@ -1,618 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- - -# Goals available on make command line: -# -# [all] Default goal: build the project. -# clean Clean up the project. -# rebuild Rebuild the project. -# ccversion Display CC version information. -# cppfiles file.i Generate preprocessed files from C source files. -# asfiles file.x Generate preprocessed assembler files from C and assembler source files. -# objfiles file.o Generate object files from C and assembler source files. -# a file.a Archive: create A output file from object files. -# elf file.elf Link: create ELF output file from object files. -# lss file.lss Create extended listing from target output file. -# sym file.sym Create symbol table from target output file. -# hex file.hex Create Intel HEX image from ELF output file. -# bin file.bin Create binary image from ELF output file. -# sizes Display target size information. -# isp Use ISP instead of JTAGICE mkII when programming. -# cpuinfo Get CPU information. -# halt Stop CPU execution. -# chiperase Perform a JTAG Chip Erase command. -# erase Perform a flash chip erase. -# program Program MCU memory from ELF output file. -# secureflash Protect chip by setting security bit. -# reset Reset MCU. -# debug Open a debug connection with the MCU. -# run Start CPU execution. -# readregs Read CPU registers. -# doc Build the documentation. -# cleandoc Clean up the documentation. -# rebuilddoc Rebuild the documentation. -# verbose Display main executed commands. - -# Copyright (c) 2007, Atmel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation and/ -# or other materials provided with the distribution. -# -# 3. The name of ATMEL may not be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND -# SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** -# ENVIRONMENT SETTINGS -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** - -FirstWord = $(if $(1),$(word 1,$(1))) -LastWord = $(if $(1),$(word $(words $(1)),$(1))) - -MAKE = make -MAKECFG = config.mk -TGTTYPE = $(suffix $(TARGET)) - -RM = rm -Rf - -AR = avr32-ar -ARFLAGS = rcs - -CPP = $(CC) -E -CPPFLAGS = -march=$(ARCH) -mpart=$(PART) $(WARNINGS) $(DEFS) \ - $(PLATFORM_INC_PATH:%=-I%) $(INC_PATH:%=-I%) $(CPP_EXTRA_FLAGS) -DPNDFILES = $(CSRCS:.c=.d) $(ASSRCS:.S=.d) -CPPFILES = $(CSRCS:.c=.i) - -CC = avr32-gcc -CFLAGS = $(DEBUG) $(OPTIMIZATION) $(C_EXTRA_FLAGS) \ - $(PLATFORM_INC_PATH:%=-Wa,-I%) $(INC_PATH:%=-Wa,-I%) $(AS_EXTRA_FLAGS) -ASFILES = $(CSRCS:.c=.x) $(ASSRCS:.S=.x) - -AS = avr32-as -ASFLAGS = $(DEBUG) \ - $(PLATFORM_INC_PATH:%=-Wa,-I%) $(INC_PATH:%=-Wa,-I%) $(AS_EXTRA_FLAGS) -OBJFILES = $(CSRCS:.c=.o) $(ASSRCS:.S=.o) - -LD = avr32-ld -LDFLAGS = -march=$(ARCH) -mpart=$(PART) \ - $(LIB_PATH:%=-L%) $(LINKER_SCRIPT:%=-T%) $(LD_EXTRA_FLAGS) -LOADLIBES = -LDLIBS = $(LIBS:%=-l%) - -OBJDUMP = avr32-objdump -LSS = $(TARGET:$(TGTTYPE)=.lss) - -NM = avr32-nm -SYM = $(TARGET:$(TGTTYPE)=.sym) - -OBJCOPY = avr32-objcopy -HEX = $(TARGET:$(TGTTYPE)=.hex) -BIN = $(TARGET:$(TGTTYPE)=.bin) - -SIZE = avr32-size - -SLEEP = sleep -SLEEPUSB = 9 - -PROGRAM = avr32program - -ISP = batchisp -ISPFLAGS = -device at32$(PART) -hardware usb -operation - -DBGPROXY = avr32gdbproxy - -DOCGEN = doxygen - - -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** -# MESSAGES -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** - -ERR_TARGET_TYPE = Target type not supported: `$(TGTTYPE)' -MSG_CLEANING = Cleaning project. -MSG_PREPROCESSING = Preprocessing \`$<\' to \`$@\'. -MSG_COMPILING = Compiling \`$<\' to \`$@\'. -MSG_ASSEMBLING = Assembling \`$<\' to \`$@\'. -MSG_ARCHIVING = Archiving to \`$@\'. -MSG_LINKING = Linking to \`$@\'. -MSG_EXTENDED_LISTING = Creating extended listing to \`$@\'. -MSG_SYMBOL_TABLE = Creating symbol table to \`$@\'. -MSG_IHEX_IMAGE = Creating Intel HEX image to \`$@\'. -MSG_BINARY_IMAGE = Creating binary image to \`$@\'. -MSG_GETTING_CPU_INFO = Getting CPU information. -MSG_HALTING = Stopping CPU execution. -MSG_ERASING_CHIP = Performing a JTAG Chip Erase command. -MSG_ERASING = Performing a flash chip erase. -MSG_PROGRAMMING = Programming MCU memory from \`$(TARGET)\'. -MSG_SECURING_FLASH = Protecting chip by setting security bit. -MSG_RESETTING = Resetting MCU. -MSG_DEBUGGING = Opening debug connection with MCU. -MSG_RUNNING = Starting CPU execution. -MSG_READING_CPU_REGS = Reading CPU registers. -MSG_CLEANING_DOC = Cleaning documentation. -MSG_GENERATING_DOC = Generating documentation to \`$(DOC_PATH)\'. - - -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** -# MAKE RULES -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** - -# Include the make configuration file. -include $(MAKECFG) - -# ** ** TOP-LEVEL RULES ** ** - -# Default goal: build the project. -ifeq ($(TGTTYPE),.a) -.PHONY: all -all: ccversion a lss sym sizes -else -ifeq ($(TGTTYPE),.elf) -.PHONY: all -all: ccversion elf lss sym hex bin sizes -else -$(error $(ERR_TARGET_TYPE)) -endif -endif - -# Clean up the project. -.PHONY: clean -clean: - @echo $(MSG_CLEANING) - -$(VERBOSE_CMD)$(RM) $(BIN) - -$(VERBOSE_CMD)$(RM) $(HEX) - -$(VERBOSE_CMD)$(RM) $(SYM) - -$(VERBOSE_CMD)$(RM) $(LSS) - -$(VERBOSE_CMD)$(RM) $(TARGET) - -$(VERBOSE_CMD)$(RM) $(OBJFILES) - -$(VERBOSE_CMD)$(RM) $(ASFILES) - -$(VERBOSE_CMD)$(RM) $(CPPFILES) - -$(VERBOSE_CMD)$(RM) $(DPNDFILES) - $(VERBOSE_NL) - -# Rebuild the project. -.PHONY: rebuild -rebuild: clean all - -# Display CC version information. -.PHONY: ccversion -ccversion: - @echo - @echo - @$(CC) --version - -# Generate preprocessed files from C source files. -.PHONY: cppfiles -cppfiles: $(CPPFILES) - -# Generate preprocessed assembler files from C and assembler source files. -.PHONY: asfiles -asfiles: $(ASFILES) - -# Generate object files from C and assembler source files. -.PHONY: objfiles -objfiles: $(OBJFILES) - -ifeq ($(TGTTYPE),.a) -# Archive: create A output file from object files. -.PHONY: a -a: $(TARGET) -else -ifeq ($(TGTTYPE),.elf) -# Link: create ELF output file from object files. -.PHONY: elf -elf: $(TARGET) -endif -endif - -# Create extended listing from target output file. -.PHONY: lss -lss: $(LSS) - -# Create symbol table from target output file. -.PHONY: sym -sym: $(SYM) - -ifeq ($(TGTTYPE),.elf) - -# Create Intel HEX image from ELF output file. -.PHONY: hex -hex: $(HEX) - -# Create binary image from ELF output file. -.PHONY: bin -bin: $(BIN) - -endif - -# Display target size information. -.PHONY: sizes -sizes: $(TARGET) - @echo - @echo -ifeq ($(TGTTYPE),.a) - @$(SIZE) -Bxt $< -else -ifeq ($(TGTTYPE),.elf) - @$(SIZE) -Ax $< - @$(SIZE) -Bx $< -endif -endif - @echo - @echo - -ifeq ($(TGTTYPE),.elf) - -# Use ISP instead of JTAGICE mkII when programming. -.PHONY: isp -ifeq ($(filter-out isp verbose,$(MAKECMDGOALS)),) -isp: all -else -isp: - @: -endif - -ifeq ($(findstring isp,$(MAKECMDGOALS)),) - -# Get CPU information. -.PHONY: cpuinfo -cpuinfo: - @echo - @echo $(MSG_GETTING_CPU_INFO) - $(VERBOSE_CMD)$(PROGRAM) cpuinfo -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase program secureflash reset debug run readregs,$(MAKECMDGOALS))),cpuinfo) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Stop CPU execution. -.PHONY: halt -halt: -ifeq ($(filter cpuinfo chiperase erase program secureflash reset run readregs,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_HALTING) - $(VERBOSE_CMD)$(PROGRAM) halt -ifneq ($(call LastWord,$(filter halt debug,$(MAKECMDGOALS))),halt) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif -else - @: -endif - -# Perform a JTAG Chip Erase command. -.PHONY: chiperase -chiperase: - @echo - @echo $(MSG_ERASING_CHIP) - $(VERBOSE_CMD)$(PROGRAM) chiperase -ifneq ($(call LastWord,$(filter cpuinfo chiperase program secureflash reset debug run readregs,$(MAKECMDGOALS))),chiperase) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Perform a flash chip erase. -.PHONY: erase -erase: -ifeq ($(filter chiperase program,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_ERASING) - $(VERBOSE_CMD)$(PROGRAM) erase $(FLASH:%=-f%) -ifneq ($(call LastWord,$(filter cpuinfo erase secureflash reset debug run readregs,$(MAKECMDGOALS))),erase) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif -else - @: -endif - -# Program MCU memory from ELF output file. -.PHONY: program -program: all - @echo - @echo $(MSG_PROGRAMMING) - $(VERBOSE_CMD)$(PROGRAM) program $(FLASH:%=-f%) $(PROG_CLOCK:%=-c%) -e -v -R $(if $(findstring run,$(MAKECMDGOALS)),-r) $(TARGET) -ifneq ($(call LastWord,$(filter cpuinfo chiperase program secureflash debug readregs,$(MAKECMDGOALS))),program) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Protect chip by setting security bit. -.PHONY: secureflash -secureflash: - @echo - @echo $(MSG_SECURING_FLASH) - $(VERBOSE_CMD)$(PROGRAM) secureflash -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase program secureflash reset debug run readregs,$(MAKECMDGOALS))),secureflash) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Reset MCU. -.PHONY: reset -reset: -ifeq ($(filter program run,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_RESETTING) - $(VERBOSE_CMD)$(PROGRAM) reset -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase secureflash reset debug readregs,$(MAKECMDGOALS))),reset) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif -else - @: -endif - -# Open a debug connection with the MCU. -.PHONY: debug -debug: - @echo - @echo $(MSG_DEBUGGING) - $(VERBOSE_CMD)$(DBGPROXY) $(FLASH:%=-f%) -ifneq ($(call LastWord,$(filter cpuinfo halt chiperase erase program secureflash reset debug run readregs,$(MAKECMDGOALS))),debug) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Start CPU execution. -.PHONY: run -run: -ifeq ($(findstring program,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_RUNNING) - $(VERBOSE_CMD)$(PROGRAM) run $(if $(findstring reset,$(MAKECMDGOALS)),-R) -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase secureflash debug run readregs,$(MAKECMDGOALS))),run) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif -else - @: -endif - -# Read CPU registers. -.PHONY: readregs -readregs: - @echo - @echo $(MSG_READING_CPU_REGS) - $(VERBOSE_CMD)$(PROGRAM) readregs -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase program secureflash reset debug run readregs,$(MAKECMDGOALS))),readregs) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -else - -# Perform a flash chip erase. -.PHONY: erase -erase: -ifeq ($(findstring program,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_ERASING) - $(VERBOSE_CMD)$(ISP) $(ISPFLAGS) erase f memory flash blankcheck -ifeq ($(call LastWord,$(filter erase secureflash debug run,$(MAKECMDGOALS))),erase) - @echo -endif -else - @: -endif - -# Program MCU memory from ELF output file. -.PHONY: program -program: all - @echo - @echo $(MSG_PROGRAMMING) - $(VERBOSE_CMD)$(ISP) $(ISPFLAGS) erase f memory flash blankcheck loadbuffer $(TARGET) program verify $(if $(findstring run,$(MAKECMDGOALS)),$(if $(findstring secureflash,$(MAKECMDGOALS)),,start $(if $(findstring reset,$(MAKECMDGOALS)),,no)reset 0)) -ifeq ($(call LastWord,$(filter program secureflash debug,$(MAKECMDGOALS))),program) - @echo -endif - -# Protect chip by setting security bit. -.PHONY: secureflash -secureflash: - @echo - @echo $(MSG_SECURING_FLASH) - $(VERBOSE_CMD)$(ISP) $(ISPFLAGS) memory security addrange 0x0 0x0 fillbuffer 0x01 program $(if $(findstring run,$(MAKECMDGOALS)),start $(if $(findstring reset,$(MAKECMDGOALS)),,no)reset 0) -ifeq ($(call LastWord,$(filter erase program secureflash debug,$(MAKECMDGOALS))),secureflash) - @echo -endif - -# Reset MCU. -.PHONY: reset -reset: - @: - -# Open a debug connection with the MCU. -.PHONY: debug -debug: - @echo - @echo $(MSG_DEBUGGING) - $(VERBOSE_CMD)$(DBGPROXY) $(FLASH:%=-f%) -ifeq ($(call LastWord,$(filter erase program secureflash debug run,$(MAKECMDGOALS))),debug) - @echo -endif - -# Start CPU execution. -.PHONY: run -run: -ifeq ($(filter program secureflash,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_RUNNING) - $(VERBOSE_CMD)$(ISP) $(ISPFLAGS) start $(if $(findstring reset,$(MAKECMDGOALS)),,no)reset 0 -ifeq ($(call LastWord,$(filter erase debug run,$(MAKECMDGOALS))),run) - @echo -endif -else - @: -endif - -endif - -endif - -# Build the documentation. -.PHONY: doc -doc: - @echo - @echo $(MSG_GENERATING_DOC) - $(VERBOSE_CMD)cd $(dir $(DOC_CFG)) && $(DOCGEN) $(notdir $(DOC_CFG)) - @echo - -# Clean up the documentation. -.PHONY: cleandoc -cleandoc: - @echo $(MSG_CLEANING_DOC) - -$(VERBOSE_CMD)$(RM) $(DOC_PATH) - $(VERBOSE_NL) - -# Rebuild the documentation. -.PHONY: rebuilddoc -rebuilddoc: cleandoc doc - -# Display main executed commands. -.PHONY: verbose -ifeq ($(filter-out isp verbose,$(MAKECMDGOALS)),) -verbose: all -else -verbose: - @: -endif -ifneq ($(findstring verbose,$(MAKECMDGOALS)),) -# Prefix displaying the following command if and only if verbose is a goal. -VERBOSE_CMD = -# New line displayed if and only if verbose is a goal. -VERBOSE_NL = @echo -else -VERBOSE_CMD = @ -VERBOSE_NL = -endif - -# ** ** COMPILATION RULES ** ** - -# Include silently the dependency files. --include $(DPNDFILES) - -# The dependency files are not built alone but along with first generation files. -$(DPNDFILES): - -# First generation files depend on make files. -$(CPPFILES) $(ASFILES) $(OBJFILES): Makefile $(MAKECFG) - -ifeq ($(TGTTYPE),.elf) -# Files resulting from linking depend on linker script. -$(TARGET): $(LINKER_SCRIPT) -endif - -# Preprocess: create preprocessed files from C source files. -%.i: %.c %.d - @echo $(MSG_PREPROCESSING) - $(VERBOSE_CMD)$(CPP) $(CPPFLAGS) -MD -MP -MT '$*.i $*.x $*.o' -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -# Preprocess & compile: create assembler files from C source files. -%.x: %.c %.d - @echo $(MSG_COMPILING) - $(VERBOSE_CMD)$(CC) -S $(CPPFLAGS) -MD -MP -MT '$*.i $*.o' $(CFLAGS) -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -# Preprocess: create preprocessed files from assembler source files. -%.x: %.S %.d - @echo $(MSG_PREPROCESSING) - $(VERBOSE_CMD)$(CPP) $(CPPFLAGS) -MD -MP -MT '$*.x $*.o' -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -# Preprocess, compile & assemble: create object files from C source files. -%.o: %.c %.d - @echo $(MSG_COMPILING) - $(VERBOSE_CMD)$(CC) -c $(CPPFLAGS) -MD -MP -MT '$*.i $*.x' $(CFLAGS) -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -# Preprocess & assemble: create object files from assembler source files. -%.o: %.S %.d - @echo $(MSG_ASSEMBLING) - $(VERBOSE_CMD)$(CC) -c $(CPPFLAGS) -MD -MP -MT '$*.x' $(ASFLAGS) -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -.PRECIOUS: $(OBJFILES) -ifeq ($(TGTTYPE),.a) -# Archive: create A output file from object files. -.SECONDARY: $(TARGET) -$(TARGET): $(OBJFILES) - @echo $(MSG_ARCHIVING) - $(VERBOSE_CMD)$(AR) $(ARFLAGS) $@ $(filter %.o,$+) - $(VERBOSE_NL) -else -ifeq ($(TGTTYPE),.elf) -# Link: create ELF output file from object files. -.SECONDARY: $(TARGET) -$(TARGET): $(OBJFILES) - @echo $(MSG_LINKING) - $(VERBOSE_CMD)$(CC) $(LDFLAGS) $(filter %.o,$+) $(LOADLIBES) $(LDLIBS) -o $@ - $(VERBOSE_NL) -endif -endif - -# Create extended listing from target output file. -$(LSS): $(TARGET) - @echo $(MSG_EXTENDED_LISTING) - $(VERBOSE_CMD)$(OBJDUMP) -h -S $< > $@ - $(VERBOSE_NL) - -# Create symbol table from target output file. -$(SYM): $(TARGET) - @echo $(MSG_SYMBOL_TABLE) - $(VERBOSE_CMD)$(NM) -n $< > $@ - $(VERBOSE_NL) - -ifeq ($(TGTTYPE),.elf) - -# Create Intel HEX image from ELF output file. -$(HEX): $(TARGET) - @echo $(MSG_IHEX_IMAGE) - $(VERBOSE_CMD)$(OBJCOPY) -O ihex $< $@ - $(VERBOSE_NL) - -# Create binary image from ELF output file. -$(BIN): $(TARGET) - @echo $(MSG_BINARY_IMAGE) - $(VERBOSE_CMD)$(OBJCOPY) -O binary $< $@ - $(VERBOSE_NL) - -endif diff --git a/Demo/AVR32_UC3/AT32UC3A/GCC/config.mk b/Demo/AVR32_UC3/AT32UC3A/GCC/config.mk deleted file mode 100644 index 16d800543..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/GCC/config.mk +++ /dev/null @@ -1,150 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- - -# The purpose of this file is to define the build configuration variables used -# by the generic Makefile. See Makefile header for further information. - -# Copyright (c) 2007, Atmel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation and/ -# or other materials provided with the distribution. -# -# 3. The name of ATMEL may not be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND -# SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -# Base paths -PRJ_PATH = ../.. -APPS_PATH = $(PRJ_PATH)/APPLICATIONS -BRDS_PATH = $(PRJ_PATH)/BOARDS -COMP_PATH = $(PRJ_PATH)/COMPONENTS -DRVR_PATH = $(PRJ_PATH)/DRIVERS -SERV_PATH = $(PRJ_PATH)/SERVICES -UTIL_PATH = $(PRJ_PATH)/UTILS - -# CPU architecture: {ap|uc} -ARCH = uc - -# Part: {none|ap7xxx|uc3xxxxx} -PART = uc3a0512 - -# Flash memories: [{cfi|internal}@address,size]... -FLASH = internal@0x80000000,512Kb - -# Clock source to use when programming: [{xtal|extclk|int}] -PROG_CLOCK = xtal - -# Device/Platform/Board include path -PLATFORM_INC_PATH = \ - $(BRDS_PATH)/ - -# Target name: {*.a|*.elf} -TARGET = $(PART)-rtosdemo.elf - -# Definitions: [-D name[=definition]...] [-U name...] -# Things that might be added to DEFS: -# BOARD Board used: {EVKxxxx} -# EXT_BOARD Extension board used (if any): {EXTxxxx} -DEFS = -D BOARD=EVK1100 - -# Include path -INC_PATH = \ - $(UTIL_PATH)/ \ - $(UTIL_PATH)/PREPROCESSOR/ \ - $(SERV_PATH)/USB/CLASS/DFU/EXAMPLES/ISP/BOOT/ \ - $(DRVR_PATH)/INTC/ \ - $(DRVR_PATH)/PM/ \ - $(DRVR_PATH)/GPIO/ \ - $(DRVR_PATH)/TC/ \ - ../../../../Source/portable/GCC/AVR32_UC3/ \ - ../../../../Source/include/ \ - ../../../Common/include/ \ - ../../ - -# C source files -CSRCS = \ - $(BRDS_PATH)/EVK1100/led.c \ - $(DRVR_PATH)/INTC/intc.c \ - $(DRVR_PATH)/PM/pm.c \ - $(DRVR_PATH)/GPIO/gpio.c \ - $(DRVR_PATH)/TC/tc.c \ - ../../../../Source/portable/GCC/AVR32_UC3/port.c \ - ../../../../Source/portable/MemMang/heap_3.c \ - ../../../../Source/list.c \ - ../../../../Source/queue.c \ - ../../../../Source/tasks.c \ - ../../../Common/Minimal/BlockQ.c \ - ../../../Common/Minimal/comtest.c \ - ../../../Common/Minimal/death.c \ - ../../../Common/Minimal/dynamic.c \ - ../../../Common/Minimal/flash.c \ - ../../../Common/Minimal/flop.c \ - ../../../Common/Minimal/integer.c \ - ../../../Common/Minimal/PollQ.c \ - ../../../Common/Minimal/semtest.c \ - ../../ParTest/ParTest.c \ - ../../serial/serial.c \ - ../../main.c - -# Assembler source files -ASSRCS = \ - $(SERV_PATH)/USB/CLASS/DFU/EXAMPLES/ISP/BOOT/trampoline.S \ - ../../../../Source/portable/GCC/AVR32_UC3/exception.S - -# Library path -LIB_PATH = - -# Libraries to link with the project -LIBS = - -# Linker script file if any -LINKER_SCRIPT = $(UTIL_PATH)/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds - -# Options to request or suppress warnings: [-fsyntax-only] [-pedantic[-errors]] [-w] [-Wwarning...] -# For further details, refer to the chapter "GCC Command Options" of the GCC manual. -WARNINGS = -Wall - -# Options for debugging: [-g]... -# For further details, refer to the chapter "GCC Command Options" of the GCC manual. -DEBUG = -g - -# Options that control optimization: [-O[0|1|2|3|s]]... -# For further details, refer to the chapter "GCC Command Options" of the GCC manual. -OPTIMIZATION = -O0 -ffunction-sections -fdata-sections - -# Extra flags to use when preprocessing -CPP_EXTRA_FLAGS = - -# Extra flags to use when compiling -C_EXTRA_FLAGS = - -# Extra flags to use when assembling -AS_EXTRA_FLAGS = - -# Extra flags to use when linking -LD_EXTRA_FLAGS = -Wl,--gc-sections -Wl,-e,_trampoline - -# Documentation path -DOC_PATH = \ - ../../DOC/ - -# Documentation configuration file -DOC_CFG = \ - ../doxyfile.doxygen diff --git a/Demo/AVR32_UC3/AT32UC3A/GCC/gdb.ini b/Demo/AVR32_UC3/AT32UC3A/GCC/gdb.ini deleted file mode 100644 index 418c606cf..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/GCC/gdb.ini +++ /dev/null @@ -1,29 +0,0 @@ -target extended-remote :1024 -symbol uc3a0512-rtosdemo.elf - -b _handle_Unrecoverable_Exception -b _handle_TLB_Multiple_Hit -b _handle_Bus_Error_Data_Fetch -b _handle_Bus_Error_Instruction_Fetch -b _handle_NMI -b _handle_Instruction_Address -b _handle_ITLB_Protection -b _handle_Breakpoint -b _handle_Illegal_Opcode -b _handle_Unimplemented_Instruction -b _handle_Privilege_Violation -b _handle_Floating_Point -b _handle_Coprocessor_Absent -b _handle_Data_Address_Read -b _handle_Data_Address_Write -b _handle_DTLB_Protection_Read -b _handle_DTLB_Protection_Write -b _handle_DTLB_Modified -b _handle_ITLB_Miss -b _handle_DTLB_Miss_Read -b _handle_DTLB_Miss_Write - -define current_task -printf "Task name: %s\n", ((tskTCB *)pxCurrentTCB)->pcTaskName -printf "pxTopOfStack: %x\n", ((tskTCB *)pxCurrentTCB)->pxTopOfStack -end diff --git a/Demo/AVR32_UC3/AT32UC3A/GCC/gdb_cmdfile.txt b/Demo/AVR32_UC3/AT32UC3A/GCC/gdb_cmdfile.txt deleted file mode 100644 index dfe1fc174..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/GCC/gdb_cmdfile.txt +++ /dev/null @@ -1,29 +0,0 @@ -target extended-remote :4711 -symbol uc3a0512-rtosdemo.elf - -b _handle_Unrecoverable_Exception -b _handle_TLB_Multiple_Hit -b _handle_Bus_Error_Data_Fetch -b _handle_Bus_Error_Instruction_Fetch -b _handle_NMI -b _handle_Instruction_Address -b _handle_ITLB_Protection -b _handle_Breakpoint -b _handle_Illegal_Opcode -b _handle_Unimplemented_Instruction -b _handle_Privilege_Violation -b _handle_Floating_Point -b _handle_Coprocessor_Absent -b _handle_Data_Address_Read -b _handle_Data_Address_Write -b _handle_DTLB_Protection_Read -b _handle_DTLB_Protection_Write -b _handle_DTLB_Modified -b _handle_ITLB_Miss -b _handle_DTLB_Miss_Read -b _handle_DTLB_Miss_Write - -define current_task -printf "Task name: %s\n", ((tskTCB *)pxCurrentTCB)->pcTaskName -printf "pxTopOfStack: %x\n", ((tskTCB *)pxCurrentTCB)->pxTopOfStack -end diff --git a/Demo/AVR32_UC3/AT32UC3A/IAR/Debug/Obj/rtosdemo.pbd b/Demo/AVR32_UC3/AT32UC3A/IAR/Debug/Obj/rtosdemo.pbd deleted file mode 100644 index 235cec16f..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/IAR/Debug/Obj/rtosdemo.pbd +++ /dev/null @@ -1,27 +0,0 @@ -This is an internal working file generated by the Source Browser. -20:15 21s -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\BlockQ.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\ParTest.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\PollQ.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\comtest.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\death.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\dynamic.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\flash.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\flop.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\gpio.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\heap_3.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\intc.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\integer.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\led.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\list.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\main.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\pm.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\port.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\queue.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\read.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\semtest.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\serial.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\tasks.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\tc.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\usart.pbi -C:\E\Dev\FreeRTOS\Releases\Code\V4.5.0\Demo\AVR32_UC3\AT32UC3A\IAR\Debug\Obj\write.pbi diff --git a/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewd b/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewd deleted file mode 100644 index aeb046dff..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewd +++ /dev/null @@ -1,373 +0,0 @@ - - - - 1 - - Debug - - AVR32 - - 1 - - C-SPY - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - JTAGICEMKIIAVR32 - 3 - - 1 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - SIMAVR32 - 2 - - 0 - 1 - 1 - - - - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - Release - - AVR32 - - 0 - - C-SPY - 2 - - 0 - 1 - 0 - - - - - - - - - - - - - - - - - JTAGICEMKIIAVR32 - 3 - - 1 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - SIMAVR32 - 2 - - 0 - 1 - 0 - - - - - - $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin - 0 - - - $EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin - 1 - - - $EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin - 1 - - - - - - diff --git a/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewp b/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewp deleted file mode 100644 index c2e97e827..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.ewp +++ /dev/null @@ -1,1726 +0,0 @@ - - - - 1 - - Debug - - AVR32 - - 1 - - General - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCAVR32 - 3 - - 5 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AAVR32 - 2 - - 0 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JAVATOC - 0 - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - XLINK - 2 - - 14 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - XAR - 2 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - AVR32 - - 0 - - General - 2 - - 0 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCAVR32 - 3 - - 5 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AAVR32 - 2 - - 0 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JAVATOC - 0 - - - - CUSTOM - 3 - - - - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - XLINK - 2 - - 14 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - XAR - 2 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - DLIB - - $PROJ_DIR$\..\..\..\..\Source\portable\IAR\AVR32_UC3\read.c - - - $PROJ_DIR$\..\..\SERVICES\USB\CLASS\DFU\EXAMPLES\ISP\BOOT\trampoline.s82 - - - $PROJ_DIR$\..\..\..\..\Source\portable\IAR\AVR32_UC3\write.c - - - - Drivers - - $PROJ_DIR$\..\..\DRIVERS\GPIO\gpio.c - - - $PROJ_DIR$\..\..\DRIVERS\INTC\intc.c - - - $PROJ_DIR$\..\..\BOARDS\EVK1100\led.c - - - $PROJ_DIR$\..\..\DRIVERS\PM\pm.c - - - $PROJ_DIR$\..\..\DRIVERS\TC\tc.c - - - $PROJ_DIR$\..\..\DRIVERS\USART\usart.c - - - - FreeRTOS - - AVR32_UC3 - - $PROJ_DIR$\..\..\..\..\Source\portable\IAR\AVR32_UC3\exception.s82 - - - $PROJ_DIR$\..\..\..\..\Source\portable\IAR\AVR32_UC3\port.c - - - - Common_demo - - $PROJ_DIR$\..\..\..\Common\Minimal\BlockQ.c - - - $PROJ_DIR$\..\..\..\Common\Minimal\comtest.c - - - $PROJ_DIR$\..\..\..\Common\Minimal\death.c - - - $PROJ_DIR$\..\..\..\Common\Minimal\dynamic.c - - - $PROJ_DIR$\..\..\..\Common\Minimal\flash.c - - - $PROJ_DIR$\..\..\..\Common\Minimal\flop.c - - - $PROJ_DIR$\..\..\..\Common\Minimal\integer.c - - - $PROJ_DIR$\..\..\..\Common\Minimal\PollQ.c - - - $PROJ_DIR$\..\..\..\Common\Minimal\semtest.c - - - - Source - - $PROJ_DIR$\..\..\..\..\Source\portable\MemMang\heap_3.c - - - $PROJ_DIR$\..\..\..\..\Source\list.c - - - $PROJ_DIR$\..\..\..\..\Source\queue.c - - - $PROJ_DIR$\..\..\..\..\Source\tasks.c - - - - - $PROJ_DIR$\..\..\main.c - - - $PROJ_DIR$\..\..\ParTest\ParTest.c - - - $PROJ_DIR$\..\..\serial\serial.c - - - - diff --git a/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.eww b/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.eww deleted file mode 100644 index 2294aacb5..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/IAR/rtosdemo.eww +++ /dev/null @@ -1,10 +0,0 @@ - - - - - $WS_DIR$\rtosdemo.ewp - - - - - diff --git a/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.cspy.bat b/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.cspy.bat deleted file mode 100644 index c8e602098..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.cspy.bat +++ /dev/null @@ -1,32 +0,0 @@ -@REM This bat file has been generated by the IAR Embeddded Workbench -@REM C-SPY interactive debugger,as an aid to preparing a command -@REM line for running the cspybat command line utility with the -@REM appropriate settings. -@REM -@REM After making some adjustments to this file, you can launch cspybat -@REM by typing the name of this file followed by the name of the debug -@REM file (usually an ubrof file). Note that this file is generated -@REM every time a new debug session is initialized, so you may want to -@REM move or rename the file before making changes. -@REM -@REM Note: some command line arguments cannot be properly generated -@REM by this process. Specifically, the plugin which is responsible -@REM for the Terminal I/O window (and other C runtime functionality) -@REM comes in a special version for cspybat, and the name of that -@REM plugin dll is not known when generating this file. It resides in -@REM the $TOOLKIT_DIR$\bin folder and is usually called XXXbat.dll or -@REM XXXlibsupportbat.dll, where XXX is the name of the corresponding -@REM tool chain. Replace the '' parameter -@REM below with the appropriate file name. Other plugins loaded by -@REM C-SPY are usually not needed by, or will not work in, cspybat -@REM but they are listed at the end of this file for reference. - - -"C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\bin\cspybat" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\avr32\bin\avr32proc.dll" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\avr32\bin\avr32jtagicemkII.dll" %1 --plugin "C:\Devtools\IAR Systems\Embedded Workbench 4.0\avr32\bin\" --backend -B "--core" "avr32a" "--avr32_simd_instructions" "disabled" "--avr32_dsp_instructions" "enabled" "--avr32_rmw_instructions" "enabled" "-p" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\avr32\config\iouc3a0512.ddf" "-d" "jtagicemkII" "--drv_communication" "USB" "--jtagice_clock" "100000" - - -@REM Loaded plugins: -@REM avr32LibSupport.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\CodeCoverage\CodeCoverage.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\Profiling\Profiling.dll -@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\stack\stack.dll diff --git a/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dbgdt b/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dbgdt deleted file mode 100644 index 33f4649c2..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dbgdt +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dni b/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dni deleted file mode 100644 index 4520689fb..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.dni +++ /dev/null @@ -1,5 +0,0 @@ -[Breakpoints] -Count=0 -[TraceHelper] -Enabled=0 -ShowSource=1 diff --git a/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.wsdt b/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.wsdt deleted file mode 100644 index c5a40e8b6..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/IAR/settings/rtosdemo.wsdt +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - rtosdemo/Debug - - - - - - - 124 - 27 - 27 - 27 - - - - - - - - TabID-27032-1807 - Workspace - Workspace - - - rtosdemo - - - - - 0 - - - - - 0 - - - 1000000 - 1000000 - - - 1 - - - - - - - iaridepm1 - - - - - - - - - - -2 - -2 - 938 - 198 - -2 - -2 - 200 - 200 - 142857 - 203666 - 142857 - 957230 - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Demo/AVR32_UC3/AT32UC3A/doxyfile.doxygen b/Demo/AVR32_UC3/AT32UC3A/doxyfile.doxygen deleted file mode 100644 index 08f4a05a1..000000000 --- a/Demo/AVR32_UC3/AT32UC3A/doxyfile.doxygen +++ /dev/null @@ -1,232 +0,0 @@ -# Doxyfile 1.4.7 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "AVR32 UC3 - FreeRTOS Real Time Kernel" -PROJECT_NUMBER = -OUTPUT_DIRECTORY = ../DOC -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = YES -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = YES -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 4 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = YES -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = NO -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = YES -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ./../ ./../../../Source ./../../Common/include ./../../Common/Minimal -FILE_PATTERNS = *.c \ - *.h \ - *.S -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = ./../ -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = YES -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = RTF -COMPACT_RTF = NO -RTF_HYPERLINKS = YES -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -SEARCH_INCLUDES = YES -INCLUDE_PATH = ../../../../../BOARDS/ -INCLUDE_FILE_PATTERNS = -PREDEFINED = __GNUC__=4 \ - __attribute__()= \ - __AVR32__=1 \ - __AVR32_UC3A0512__=1 \ - __AVR32_ABI_COMPILER__ \ - BOARD=EVK1100 -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = NO -COLLABORATION_GRAPH = NO -GROUP_GRAPHS = NO -UML_LOOK = YES -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = NO -INCLUDED_BY_GRAPH = NO -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = NO -DIRECTORY_GRAPH = NO -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/Demo/AVR32_UC3/AT32UC3B/GCC/Makefile b/Demo/AVR32_UC3/AT32UC3B/GCC/Makefile deleted file mode 100644 index 6f51ddb10..000000000 --- a/Demo/AVR32_UC3/AT32UC3B/GCC/Makefile +++ /dev/null @@ -1,618 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- - -# Goals available on make command line: -# -# [all] Default goal: build the project. -# clean Clean up the project. -# rebuild Rebuild the project. -# ccversion Display CC version information. -# cppfiles file.i Generate preprocessed files from C source files. -# asfiles file.x Generate preprocessed assembler files from C and assembler source files. -# objfiles file.o Generate object files from C and assembler source files. -# a file.a Archive: create A output file from object files. -# elf file.elf Link: create ELF output file from object files. -# lss file.lss Create extended listing from target output file. -# sym file.sym Create symbol table from target output file. -# hex file.hex Create Intel HEX image from ELF output file. -# bin file.bin Create binary image from ELF output file. -# sizes Display target size information. -# isp Use ISP instead of JTAGICE mkII when programming. -# cpuinfo Get CPU information. -# halt Stop CPU execution. -# chiperase Perform a JTAG Chip Erase command. -# erase Perform a flash chip erase. -# program Program MCU memory from ELF output file. -# secureflash Protect chip by setting security bit. -# reset Reset MCU. -# debug Open a debug connection with the MCU. -# run Start CPU execution. -# readregs Read CPU registers. -# doc Build the documentation. -# cleandoc Clean up the documentation. -# rebuilddoc Rebuild the documentation. -# verbose Display main executed commands. - -# Copyright (c) 2007, Atmel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation and/ -# or other materials provided with the distribution. -# -# 3. The name of ATMEL may not be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND -# SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** -# ENVIRONMENT SETTINGS -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** - -FirstWord = $(if $(1),$(word 1,$(1))) -LastWord = $(if $(1),$(word $(words $(1)),$(1))) - -MAKE = make -MAKECFG = config.mk -TGTTYPE = $(suffix $(TARGET)) - -RM = rm -Rf - -AR = avr32-ar -ARFLAGS = rcs - -CPP = $(CC) -E -CPPFLAGS = -march=$(ARCH) -mpart=$(PART) $(WARNINGS) $(DEFS) \ - $(PLATFORM_INC_PATH:%=-I%) $(INC_PATH:%=-I%) $(CPP_EXTRA_FLAGS) -DPNDFILES = $(CSRCS:.c=.d) $(ASSRCS:.S=.d) -CPPFILES = $(CSRCS:.c=.i) - -CC = avr32-gcc -CFLAGS = $(DEBUG) $(OPTIMIZATION) $(C_EXTRA_FLAGS) \ - $(PLATFORM_INC_PATH:%=-Wa,-I%) $(INC_PATH:%=-Wa,-I%) $(AS_EXTRA_FLAGS) -ASFILES = $(CSRCS:.c=.x) $(ASSRCS:.S=.x) - -AS = avr32-as -ASFLAGS = $(DEBUG) \ - $(PLATFORM_INC_PATH:%=-Wa,-I%) $(INC_PATH:%=-Wa,-I%) $(AS_EXTRA_FLAGS) -OBJFILES = $(CSRCS:.c=.o) $(ASSRCS:.S=.o) - -LD = avr32-ld -LDFLAGS = -march=$(ARCH) -mpart=$(PART) \ - $(LIB_PATH:%=-L%) $(LINKER_SCRIPT:%=-T%) $(LD_EXTRA_FLAGS) -LOADLIBES = -LDLIBS = $(LIBS:%=-l%) - -OBJDUMP = avr32-objdump -LSS = $(TARGET:$(TGTTYPE)=.lss) - -NM = avr32-nm -SYM = $(TARGET:$(TGTTYPE)=.sym) - -OBJCOPY = avr32-objcopy -HEX = $(TARGET:$(TGTTYPE)=.hex) -BIN = $(TARGET:$(TGTTYPE)=.bin) - -SIZE = avr32-size - -SLEEP = sleep -SLEEPUSB = 9 - -PROGRAM = avr32program - -ISP = batchisp -ISPFLAGS = -device at32$(PART) -hardware usb -operation - -DBGPROXY = avr32gdbproxy - -DOCGEN = doxygen - - -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** -# MESSAGES -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** - -ERR_TARGET_TYPE = Target type not supported: `$(TGTTYPE)' -MSG_CLEANING = Cleaning project. -MSG_PREPROCESSING = Preprocessing \`$<\' to \`$@\'. -MSG_COMPILING = Compiling \`$<\' to \`$@\'. -MSG_ASSEMBLING = Assembling \`$<\' to \`$@\'. -MSG_ARCHIVING = Archiving to \`$@\'. -MSG_LINKING = Linking to \`$@\'. -MSG_EXTENDED_LISTING = Creating extended listing to \`$@\'. -MSG_SYMBOL_TABLE = Creating symbol table to \`$@\'. -MSG_IHEX_IMAGE = Creating Intel HEX image to \`$@\'. -MSG_BINARY_IMAGE = Creating binary image to \`$@\'. -MSG_GETTING_CPU_INFO = Getting CPU information. -MSG_HALTING = Stopping CPU execution. -MSG_ERASING_CHIP = Performing a JTAG Chip Erase command. -MSG_ERASING = Performing a flash chip erase. -MSG_PROGRAMMING = Programming MCU memory from \`$(TARGET)\'. -MSG_SECURING_FLASH = Protecting chip by setting security bit. -MSG_RESETTING = Resetting MCU. -MSG_DEBUGGING = Opening debug connection with MCU. -MSG_RUNNING = Starting CPU execution. -MSG_READING_CPU_REGS = Reading CPU registers. -MSG_CLEANING_DOC = Cleaning documentation. -MSG_GENERATING_DOC = Generating documentation to \`$(DOC_PATH)\'. - - -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** -# MAKE RULES -# ** ** ** *** ** ** ** ** ** ** ** ** ** ** ** - -# Include the make configuration file. -include $(MAKECFG) - -# ** ** TOP-LEVEL RULES ** ** - -# Default goal: build the project. -ifeq ($(TGTTYPE),.a) -.PHONY: all -all: ccversion a lss sym sizes -else -ifeq ($(TGTTYPE),.elf) -.PHONY: all -all: ccversion elf lss sym hex bin sizes -else -$(error $(ERR_TARGET_TYPE)) -endif -endif - -# Clean up the project. -.PHONY: clean -clean: - @echo $(MSG_CLEANING) - -$(VERBOSE_CMD)$(RM) $(BIN) - -$(VERBOSE_CMD)$(RM) $(HEX) - -$(VERBOSE_CMD)$(RM) $(SYM) - -$(VERBOSE_CMD)$(RM) $(LSS) - -$(VERBOSE_CMD)$(RM) $(TARGET) - -$(VERBOSE_CMD)$(RM) $(OBJFILES) - -$(VERBOSE_CMD)$(RM) $(ASFILES) - -$(VERBOSE_CMD)$(RM) $(CPPFILES) - -$(VERBOSE_CMD)$(RM) $(DPNDFILES) - $(VERBOSE_NL) - -# Rebuild the project. -.PHONY: rebuild -rebuild: clean all - -# Display CC version information. -.PHONY: ccversion -ccversion: - @echo - @echo - @$(CC) --version - -# Generate preprocessed files from C source files. -.PHONY: cppfiles -cppfiles: $(CPPFILES) - -# Generate preprocessed assembler files from C and assembler source files. -.PHONY: asfiles -asfiles: $(ASFILES) - -# Generate object files from C and assembler source files. -.PHONY: objfiles -objfiles: $(OBJFILES) - -ifeq ($(TGTTYPE),.a) -# Archive: create A output file from object files. -.PHONY: a -a: $(TARGET) -else -ifeq ($(TGTTYPE),.elf) -# Link: create ELF output file from object files. -.PHONY: elf -elf: $(TARGET) -endif -endif - -# Create extended listing from target output file. -.PHONY: lss -lss: $(LSS) - -# Create symbol table from target output file. -.PHONY: sym -sym: $(SYM) - -ifeq ($(TGTTYPE),.elf) - -# Create Intel HEX image from ELF output file. -.PHONY: hex -hex: $(HEX) - -# Create binary image from ELF output file. -.PHONY: bin -bin: $(BIN) - -endif - -# Display target size information. -.PHONY: sizes -sizes: $(TARGET) - @echo - @echo -ifeq ($(TGTTYPE),.a) - @$(SIZE) -Bxt $< -else -ifeq ($(TGTTYPE),.elf) - @$(SIZE) -Ax $< - @$(SIZE) -Bx $< -endif -endif - @echo - @echo - -ifeq ($(TGTTYPE),.elf) - -# Use ISP instead of JTAGICE mkII when programming. -.PHONY: isp -ifeq ($(filter-out isp verbose,$(MAKECMDGOALS)),) -isp: all -else -isp: - @: -endif - -ifeq ($(findstring isp,$(MAKECMDGOALS)),) - -# Get CPU information. -.PHONY: cpuinfo -cpuinfo: - @echo - @echo $(MSG_GETTING_CPU_INFO) - $(VERBOSE_CMD)$(PROGRAM) cpuinfo -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase program secureflash reset debug run readregs,$(MAKECMDGOALS))),cpuinfo) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Stop CPU execution. -.PHONY: halt -halt: -ifeq ($(filter cpuinfo chiperase erase program secureflash reset run readregs,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_HALTING) - $(VERBOSE_CMD)$(PROGRAM) halt -ifneq ($(call LastWord,$(filter halt debug,$(MAKECMDGOALS))),halt) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif -else - @: -endif - -# Perform a JTAG Chip Erase command. -.PHONY: chiperase -chiperase: - @echo - @echo $(MSG_ERASING_CHIP) - $(VERBOSE_CMD)$(PROGRAM) chiperase -ifneq ($(call LastWord,$(filter cpuinfo chiperase program secureflash reset debug run readregs,$(MAKECMDGOALS))),chiperase) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Perform a flash chip erase. -.PHONY: erase -erase: -ifeq ($(filter chiperase program,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_ERASING) - $(VERBOSE_CMD)$(PROGRAM) erase $(FLASH:%=-f%) -ifneq ($(call LastWord,$(filter cpuinfo erase secureflash reset debug run readregs,$(MAKECMDGOALS))),erase) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif -else - @: -endif - -# Program MCU memory from ELF output file. -.PHONY: program -program: all - @echo - @echo $(MSG_PROGRAMMING) - $(VERBOSE_CMD)$(PROGRAM) program $(FLASH:%=-f%) $(PROG_CLOCK:%=-c%) -e -v -R $(if $(findstring run,$(MAKECMDGOALS)),-r) $(TARGET) -ifneq ($(call LastWord,$(filter cpuinfo chiperase program secureflash debug readregs,$(MAKECMDGOALS))),program) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Protect chip by setting security bit. -.PHONY: secureflash -secureflash: - @echo - @echo $(MSG_SECURING_FLASH) - $(VERBOSE_CMD)$(PROGRAM) secureflash -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase program secureflash reset debug run readregs,$(MAKECMDGOALS))),secureflash) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Reset MCU. -.PHONY: reset -reset: -ifeq ($(filter program run,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_RESETTING) - $(VERBOSE_CMD)$(PROGRAM) reset -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase secureflash reset debug readregs,$(MAKECMDGOALS))),reset) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif -else - @: -endif - -# Open a debug connection with the MCU. -.PHONY: debug -debug: - @echo - @echo $(MSG_DEBUGGING) - $(VERBOSE_CMD)$(DBGPROXY) $(FLASH:%=-f%) -ifneq ($(call LastWord,$(filter cpuinfo halt chiperase erase program secureflash reset debug run readregs,$(MAKECMDGOALS))),debug) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -# Start CPU execution. -.PHONY: run -run: -ifeq ($(findstring program,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_RUNNING) - $(VERBOSE_CMD)$(PROGRAM) run $(if $(findstring reset,$(MAKECMDGOALS)),-R) -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase secureflash debug run readregs,$(MAKECMDGOALS))),run) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif -else - @: -endif - -# Read CPU registers. -.PHONY: readregs -readregs: - @echo - @echo $(MSG_READING_CPU_REGS) - $(VERBOSE_CMD)$(PROGRAM) readregs -ifneq ($(call LastWord,$(filter cpuinfo chiperase erase program secureflash reset debug run readregs,$(MAKECMDGOALS))),readregs) - @$(SLEEP) $(SLEEPUSB) -else - @echo -endif - -else - -# Perform a flash chip erase. -.PHONY: erase -erase: -ifeq ($(findstring program,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_ERASING) - $(VERBOSE_CMD)$(ISP) $(ISPFLAGS) erase f memory flash blankcheck -ifeq ($(call LastWord,$(filter erase secureflash debug run,$(MAKECMDGOALS))),erase) - @echo -endif -else - @: -endif - -# Program MCU memory from ELF output file. -.PHONY: program -program: all - @echo - @echo $(MSG_PROGRAMMING) - $(VERBOSE_CMD)$(ISP) $(ISPFLAGS) erase f memory flash blankcheck loadbuffer $(TARGET) program verify $(if $(findstring run,$(MAKECMDGOALS)),$(if $(findstring secureflash,$(MAKECMDGOALS)),,start $(if $(findstring reset,$(MAKECMDGOALS)),,no)reset 0)) -ifeq ($(call LastWord,$(filter program secureflash debug,$(MAKECMDGOALS))),program) - @echo -endif - -# Protect chip by setting security bit. -.PHONY: secureflash -secureflash: - @echo - @echo $(MSG_SECURING_FLASH) - $(VERBOSE_CMD)$(ISP) $(ISPFLAGS) memory security addrange 0x0 0x0 fillbuffer 0x01 program $(if $(findstring run,$(MAKECMDGOALS)),start $(if $(findstring reset,$(MAKECMDGOALS)),,no)reset 0) -ifeq ($(call LastWord,$(filter erase program secureflash debug,$(MAKECMDGOALS))),secureflash) - @echo -endif - -# Reset MCU. -.PHONY: reset -reset: - @: - -# Open a debug connection with the MCU. -.PHONY: debug -debug: - @echo - @echo $(MSG_DEBUGGING) - $(VERBOSE_CMD)$(DBGPROXY) $(FLASH:%=-f%) -ifeq ($(call LastWord,$(filter erase program secureflash debug run,$(MAKECMDGOALS))),debug) - @echo -endif - -# Start CPU execution. -.PHONY: run -run: -ifeq ($(filter program secureflash,$(MAKECMDGOALS)),) - @echo - @echo $(MSG_RUNNING) - $(VERBOSE_CMD)$(ISP) $(ISPFLAGS) start $(if $(findstring reset,$(MAKECMDGOALS)),,no)reset 0 -ifeq ($(call LastWord,$(filter erase debug run,$(MAKECMDGOALS))),run) - @echo -endif -else - @: -endif - -endif - -endif - -# Build the documentation. -.PHONY: doc -doc: - @echo - @echo $(MSG_GENERATING_DOC) - $(VERBOSE_CMD)cd $(dir $(DOC_CFG)) && $(DOCGEN) $(notdir $(DOC_CFG)) - @echo - -# Clean up the documentation. -.PHONY: cleandoc -cleandoc: - @echo $(MSG_CLEANING_DOC) - -$(VERBOSE_CMD)$(RM) $(DOC_PATH) - $(VERBOSE_NL) - -# Rebuild the documentation. -.PHONY: rebuilddoc -rebuilddoc: cleandoc doc - -# Display main executed commands. -.PHONY: verbose -ifeq ($(filter-out isp verbose,$(MAKECMDGOALS)),) -verbose: all -else -verbose: - @: -endif -ifneq ($(findstring verbose,$(MAKECMDGOALS)),) -# Prefix displaying the following command if and only if verbose is a goal. -VERBOSE_CMD = -# New line displayed if and only if verbose is a goal. -VERBOSE_NL = @echo -else -VERBOSE_CMD = @ -VERBOSE_NL = -endif - -# ** ** COMPILATION RULES ** ** - -# Include silently the dependency files. --include $(DPNDFILES) - -# The dependency files are not built alone but along with first generation files. -$(DPNDFILES): - -# First generation files depend on make files. -$(CPPFILES) $(ASFILES) $(OBJFILES): Makefile $(MAKECFG) - -ifeq ($(TGTTYPE),.elf) -# Files resulting from linking depend on linker script. -$(TARGET): $(LINKER_SCRIPT) -endif - -# Preprocess: create preprocessed files from C source files. -%.i: %.c %.d - @echo $(MSG_PREPROCESSING) - $(VERBOSE_CMD)$(CPP) $(CPPFLAGS) -MD -MP -MT '$*.i $*.x $*.o' -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -# Preprocess & compile: create assembler files from C source files. -%.x: %.c %.d - @echo $(MSG_COMPILING) - $(VERBOSE_CMD)$(CC) -S $(CPPFLAGS) -MD -MP -MT '$*.i $*.o' $(CFLAGS) -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -# Preprocess: create preprocessed files from assembler source files. -%.x: %.S %.d - @echo $(MSG_PREPROCESSING) - $(VERBOSE_CMD)$(CPP) $(CPPFLAGS) -MD -MP -MT '$*.x $*.o' -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -# Preprocess, compile & assemble: create object files from C source files. -%.o: %.c %.d - @echo $(MSG_COMPILING) - $(VERBOSE_CMD)$(CC) -c $(CPPFLAGS) -MD -MP -MT '$*.i $*.x' $(CFLAGS) -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -# Preprocess & assemble: create object files from assembler source files. -%.o: %.S %.d - @echo $(MSG_ASSEMBLING) - $(VERBOSE_CMD)$(CC) -c $(CPPFLAGS) -MD -MP -MT '$*.x' $(ASFLAGS) -o $@ $< - @touch $*.d - @touch $@ - $(VERBOSE_NL) - -.PRECIOUS: $(OBJFILES) -ifeq ($(TGTTYPE),.a) -# Archive: create A output file from object files. -.SECONDARY: $(TARGET) -$(TARGET): $(OBJFILES) - @echo $(MSG_ARCHIVING) - $(VERBOSE_CMD)$(AR) $(ARFLAGS) $@ $(filter %.o,$+) - $(VERBOSE_NL) -else -ifeq ($(TGTTYPE),.elf) -# Link: create ELF output file from object files. -.SECONDARY: $(TARGET) -$(TARGET): $(OBJFILES) - @echo $(MSG_LINKING) - $(VERBOSE_CMD)$(CC) $(LDFLAGS) $(filter %.o,$+) $(LOADLIBES) $(LDLIBS) -o $@ - $(VERBOSE_NL) -endif -endif - -# Create extended listing from target output file. -$(LSS): $(TARGET) - @echo $(MSG_EXTENDED_LISTING) - $(VERBOSE_CMD)$(OBJDUMP) -h -S $< > $@ - $(VERBOSE_NL) - -# Create symbol table from target output file. -$(SYM): $(TARGET) - @echo $(MSG_SYMBOL_TABLE) - $(VERBOSE_CMD)$(NM) -n $< > $@ - $(VERBOSE_NL) - -ifeq ($(TGTTYPE),.elf) - -# Create Intel HEX image from ELF output file. -$(HEX): $(TARGET) - @echo $(MSG_IHEX_IMAGE) - $(VERBOSE_CMD)$(OBJCOPY) -O ihex $< $@ - $(VERBOSE_NL) - -# Create binary image from ELF output file. -$(BIN): $(TARGET) - @echo $(MSG_BINARY_IMAGE) - $(VERBOSE_CMD)$(OBJCOPY) -O binary $< $@ - $(VERBOSE_NL) - -endif diff --git a/Demo/AVR32_UC3/AT32UC3B/GCC/config.mk b/Demo/AVR32_UC3/AT32UC3B/GCC/config.mk deleted file mode 100644 index 6caf8ef1c..000000000 --- a/Demo/AVR32_UC3/AT32UC3B/GCC/config.mk +++ /dev/null @@ -1,150 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- - -# The purpose of this file is to define the build configuration variables used -# by the generic Makefile. See Makefile header for further information. - -# Copyright (c) 2007, Atmel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation and/ -# or other materials provided with the distribution. -# -# 3. The name of ATMEL may not be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND -# SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -# Base paths -PRJ_PATH = ../.. -APPS_PATH = $(PRJ_PATH)/APPLICATIONS -BRDS_PATH = $(PRJ_PATH)/BOARDS -COMP_PATH = $(PRJ_PATH)/COMPONENTS -DRVR_PATH = $(PRJ_PATH)/DRIVERS -SERV_PATH = $(PRJ_PATH)/SERVICES -UTIL_PATH = $(PRJ_PATH)/UTILS - -# CPU architecture: {ap|uc} -ARCH = uc - -# Part: {none|ap7xxx|uc3xxxxx} -PART = uc3b0256 - -# Flash memories: [{cfi|internal}@address,size]... -FLASH = internal@0x80000000,256Kb - -# Clock source to use when programming: [{xtal|extclk|int}] -PROG_CLOCK = xtal - -# Device/Platform/Board include path -PLATFORM_INC_PATH = \ - $(BRDS_PATH)/ - -# Target name: {*.a|*.elf} -TARGET = $(PART)-rtosdemo.elf - -# Definitions: [-D name[=definition]...] [-U name...] -# Things that might be added to DEFS: -# BOARD Board used: {EVKxxxx} -# EXT_BOARD Extension board used (if any): {EXTxxxx} -DEFS = -D BOARD=EVK1101 - -# Include path -INC_PATH = \ - $(UTIL_PATH)/ \ - $(UTIL_PATH)/PREPROCESSOR/ \ - $(SERV_PATH)/USB/CLASS/DFU/EXAMPLES/ISP/BOOT/ \ - $(DRVR_PATH)/INTC/ \ - $(DRVR_PATH)/PM/ \ - $(DRVR_PATH)/GPIO/ \ - $(DRVR_PATH)/TC/ \ - ../../../../Source/portable/GCC/AVR32_UC3/ \ - ../../../../Source/include/ \ - ../../../Common/include/ \ - ../../ - -# C source files -CSRCS = \ - $(BRDS_PATH)/EVK1101/led.c \ - $(DRVR_PATH)/INTC/intc.c \ - $(DRVR_PATH)/PM/pm.c \ - $(DRVR_PATH)/GPIO/gpio.c \ - $(DRVR_PATH)/TC/tc.c \ - ../../../../Source/portable/GCC/AVR32_UC3/port.c \ - ../../../../Source/portable/MemMang/heap_3.c \ - ../../../../Source/list.c \ - ../../../../Source/queue.c \ - ../../../../Source/tasks.c \ - ../../../Common/Minimal/BlockQ.c \ - ../../../Common/Minimal/comtest.c \ - ../../../Common/Minimal/death.c \ - ../../../Common/Minimal/dynamic.c \ - ../../../Common/Minimal/flash.c \ - ../../../Common/Minimal/flop.c \ - ../../../Common/Minimal/integer.c \ - ../../../Common/Minimal/PollQ.c \ - ../../../Common/Minimal/semtest.c \ - ../../ParTest/ParTest.c \ - ../../serial/serial.c \ - ../../main.c - -# Assembler source files -ASSRCS = \ - $(SERV_PATH)/USB/CLASS/DFU/EXAMPLES/ISP/BOOT/trampoline.S \ - ../../../../Source/portable/GCC/AVR32_UC3/exception.S - -# Library path -LIB_PATH = - -# Libraries to link with the project -LIBS = - -# Linker script file if any -LINKER_SCRIPT = $(UTIL_PATH)/LINKER_SCRIPTS/AT32UC3B/0256/GCC/link_uc3b0256.lds - -# Options to request or suppress warnings: [-fsyntax-only] [-pedantic[-errors]] [-w] [-Wwarning...] -# For further details, refer to the chapter "GCC Command Options" of the GCC manual. -WARNINGS = -Wall - -# Options for debugging: [-g]... -# For further details, refer to the chapter "GCC Command Options" of the GCC manual. -DEBUG = -g - -# Options that control optimization: [-O[0|1|2|3|s]]... -# For further details, refer to the chapter "GCC Command Options" of the GCC manual. -OPTIMIZATION = -O0 -ffunction-sections -fdata-sections - -# Extra flags to use when preprocessing -CPP_EXTRA_FLAGS = - -# Extra flags to use when compiling -C_EXTRA_FLAGS = - -# Extra flags to use when assembling -AS_EXTRA_FLAGS = - -# Extra flags to use when linking -LD_EXTRA_FLAGS = -Wl,--gc-sections -Wl,-e,_trampoline - -# Documentation path -DOC_PATH = \ - ../../DOC/ - -# Documentation configuration file -DOC_CFG = \ - ../doxyfile.doxygen diff --git a/Demo/AVR32_UC3/AT32UC3B/GCC/gdb_cmdfile.txt b/Demo/AVR32_UC3/AT32UC3B/GCC/gdb_cmdfile.txt deleted file mode 100644 index 851f6f2e1..000000000 --- a/Demo/AVR32_UC3/AT32UC3B/GCC/gdb_cmdfile.txt +++ /dev/null @@ -1,29 +0,0 @@ -target extended-remote :4711 -symbol uc3b0256-rtosdemo.elf - -b _handle_Unrecoverable_Exception -b _handle_TLB_Multiple_Hit -b _handle_Bus_Error_Data_Fetch -b _handle_Bus_Error_Instruction_Fetch -b _handle_NMI -b _handle_Instruction_Address -b _handle_ITLB_Protection -b _handle_Breakpoint -b _handle_Illegal_Opcode -b _handle_Unimplemented_Instruction -b _handle_Privilege_Violation -b _handle_Floating_Point -b _handle_Coprocessor_Absent -b _handle_Data_Address_Read -b _handle_Data_Address_Write -b _handle_DTLB_Protection_Read -b _handle_DTLB_Protection_Write -b _handle_DTLB_Modified -b _handle_ITLB_Miss -b _handle_DTLB_Miss_Read -b _handle_DTLB_Miss_Write - -define current_task -printf "Task name: %s\n", ((tskTCB *)pxCurrentTCB)->pcTaskName -printf "pxTopOfStack: %x\n", ((tskTCB *)pxCurrentTCB)->pxTopOfStack -end diff --git a/Demo/AVR32_UC3/AT32UC3B/doxyfile.doxygen b/Demo/AVR32_UC3/AT32UC3B/doxyfile.doxygen deleted file mode 100644 index 411dbadc4..000000000 --- a/Demo/AVR32_UC3/AT32UC3B/doxyfile.doxygen +++ /dev/null @@ -1,232 +0,0 @@ -# Doxyfile 1.4.7 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "AVR32 UC3 - FreeRTOS Real Time Kernel" -PROJECT_NUMBER = -OUTPUT_DIRECTORY = ../DOC -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = YES -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = YES -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 4 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = YES -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = NO -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = YES -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ./../ ./../../../Source ./../../Common/include ./../../Common/Minimal -FILE_PATTERNS = *.c \ - *.h \ - *.S -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = ./../ -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = YES -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = RTF -COMPACT_RTF = NO -RTF_HYPERLINKS = YES -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -SEARCH_INCLUDES = YES -INCLUDE_PATH = ../../../../../BOARDS/ -INCLUDE_FILE_PATTERNS = -PREDEFINED = __GNUC__=4 \ - __attribute__()= \ - __AVR32__=1 \ - __AVR32_UC3B0256__=1 \ - __AVR32_ABI_COMPILER__ \ - BOARD=EVK1101 -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = NO -COLLABORATION_GRAPH = NO -GROUP_GRAPHS = NO -UML_LOOK = YES -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = NO -INCLUDED_BY_GRAPH = NO -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = NO -DIRECTORY_GRAPH = NO -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/Demo/AVR32_UC3/DRIVERS/GPIO/gpio.c b/Demo/AVR32_UC3/DRIVERS/GPIO/gpio.c deleted file mode 100644 index 9b61a65aa..000000000 --- a/Demo/AVR32_UC3/DRIVERS/GPIO/gpio.c +++ /dev/null @@ -1,260 +0,0 @@ -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO driver for AVR32 UC3. - * - * This file defines a useful set of functions for the GPIO. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include "gpio.h" - - -//! GPIO module instance. -#define GPIO AVR32_GPIO - - -int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size) -{ - int status = GPIO_SUCCESS; - unsigned int i; - - for (i = 0; i < size; i++) - { - status |= gpio_enable_module_pin(gpiomap->pin, gpiomap->function); - gpiomap++; - } - - return status; -} - - -int gpio_enable_module_pin(unsigned int pin, unsigned int function) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the correct function. - switch (function) - { - case 0: // A function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - break; - - case 1: // B function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - break; - - case 2: // C function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - break; - - default: - return GPIO_INVALID_ARGUMENT; - } - - // Disable GPIO control. - gpio_port->gperc = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size) -{ - unsigned int i; - - for (i = 0; i < size; i++) - { - gpio_enable_gpio_pin(gpiomap->pin); - gpiomap++; - } -} - - -void gpio_enable_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->oderc = 1 << (pin & 0x1F); - gpio_port->gpers = 1 << (pin & 0x1F); -} - - -void gpio_enable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmerc = 1 << (pin & 0x1F); -} - - -void gpio_enable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); -} - - -int gpio_get_pin_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->pvr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ovr >> (pin & 0x1F)) & 1; -} - - -void gpio_set_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrs = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 1. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrt = 1 << (pin & 0x1F); // Toggle the I/O line. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_enable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gfers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gferc = 1 << (pin & 0x1F); -} - - -int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - - // Configure the edge detector. - switch (mode) - { - case GPIO_PIN_CHANGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_RISING_EDGE: - gpio_port->imr0s = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_FALLING_EDGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1s = 1 << (pin & 0x1F); - break; - - default: - return GPIO_INVALID_ARGUMENT; - } - - // Enable interrupt. - gpio_port->iers = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_disable_pin_interrupt(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ierc = 1 << (pin & 0x1F); -} - - -int gpio_get_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ifr >> (pin & 0x1F)) & 1; -} - - -void gpio_clear_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ifrc = 1 << (pin & 0x1F); -} diff --git a/Demo/AVR32_UC3/DRIVERS/GPIO/gpio.h b/Demo/AVR32_UC3/DRIVERS/GPIO/gpio.h deleted file mode 100644 index 3e2c6ff07..000000000 --- a/Demo/AVR32_UC3/DRIVERS/GPIO/gpio.h +++ /dev/null @@ -1,230 +0,0 @@ -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO header for AVR32 UC3. - * - * This file contains basic GPIO driver functions. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#ifndef _GPIO_H_ -#define _GPIO_H_ - -#include - - -/*! \name Return Values of the GPIO API - */ -//! @{ -#define GPIO_SUCCESS 0 //!< Function successfully completed. -#define GPIO_INVALID_ARGUMENT 1 //!< Input parameters are out of range. -//! @} - - -/*! \name Interrupt Trigger Modes - */ -//! @{ -#define GPIO_PIN_CHANGE 0 //!< Interrupt triggered upon pin change. -#define GPIO_RISING_EDGE 1 //!< Interrupt triggered upon rising edge. -#define GPIO_FALLING_EDGE 2 //!< Interrupt triggered upon falling edge. -//! @} - - -//! A type definition of pins and modules connectivity. -typedef struct -{ - unsigned char pin; //!< Module pin. - unsigned char function; //!< Module function. -} gpio_map_t[]; - - -/*! \brief Enables specific module modes for a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables a specific module mode for a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for module pins. E.g., to enable a PWM - * channel output, the pin number can be AVR32_PWM_PWM_3_PIN for PWM - * channel 3. - * \param function The pin function.\n - * Refer to the product header file `uc3x.h' (where x is the - * part number; e.g. x = a0512) for module pin functions. E.g., - * to enable a PWM channel output, the pin function can be - * AVR32_PWM_PWM_3_FUNCTION for PWM channel 3. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module_pin(unsigned int pin, unsigned int function); - -/*! \brief Enables the GPIO mode of a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - */ -extern void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables the GPIO mode of a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for pin definitions. E.g., to enable the - * GPIO mode of PX21, AVR32_PIN_PX21 can be used. Module pins such as - * AVR32_PWM_PWM_3_PIN for PWM channel 3 can also be used to release - * module pins for GPIO. - */ -extern void gpio_enable_gpio_pin(unsigned int pin); - -/*! \brief Enables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_open_drain(unsigned int pin); - -/*! \brief Disables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_open_drain(unsigned int pin); - -/*! \brief Enables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_up(unsigned int pin); - -/*! \brief Disables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_up(unsigned int pin); - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - */ -extern int gpio_get_pin_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin. - * - * \param pin The pin number. - * - * \return The pin output value. - */ -extern int gpio_get_gpio_pin_output_value(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_pin(unsigned int pin); - -/*! \brief Enables the glitch filter of a pin. - * - * When the glitch filter is enabled, a glitch with duration of less than 1 - * clock cycle is automatically rejected, while a pulse with duration of 2 clock - * cycles or more is accepted. For pulse durations between 1 clock cycle and 2 - * clock cycles, the pulse may or may not be taken into account, depending on - * the precise timing of its occurrence. Thus for a pulse to be guaranteed - * visible it must exceed 2 clock cycles, whereas for a glitch to be reliably - * filtered out, its duration must not exceed 1 clock cycle. The filter - * introduces 2 clock cycles latency. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_glitch_filter(unsigned int pin); - -/*! \brief Disables the glitch filter of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_glitch_filter(unsigned int pin); - -/*! \brief Enables the interrupt of a pin with the specified settings. - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode); - -/*! \brief Disables the interrupt of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_interrupt(unsigned int pin); - -/*! \brief Gets the interrupt flag of a pin. - * - * \param pin The pin number. - * - * \return The pin interrupt flag. - */ -extern int gpio_get_pin_interrupt_flag(unsigned int pin); - -/*! \brief Clears the interrupt flag of a pin. - * - * \param pin The pin number. - */ -extern void gpio_clear_pin_interrupt_flag(unsigned int pin); - - -#endif // _GPIO_H_ diff --git a/Demo/AVR32_UC3/DRIVERS/INTC/intc.c b/Demo/AVR32_UC3/DRIVERS/INTC/intc.c deleted file mode 100644 index 8bd9b880e..000000000 --- a/Demo/AVR32_UC3/DRIVERS/INTC/intc.c +++ /dev/null @@ -1,200 +0,0 @@ -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include -#include "compiler.h" -#include "preprocessor.h" -#include "intc.h" - - -//! Values to store in the interrupt priority registers for the various interrupt priority levels. -extern const unsigned int ipr_val[AVR32_INTC_NUM_INT_LEVELS]; - -//! Creates a table of interrupt line handlers per interrupt group in order to optimize RAM space. -//! Each line handler table contains a set of pointers to interrupt handlers. -#if __GNUC__ -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#elif __ICCAVR32__ -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __no_init __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#endif -MREPEAT(AVR32_INTC_NUM_INT_GRPS, DECL_INT_LINE_HANDLER_TABLE, ~); -#undef DECL_INT_LINE_HANDLER_TABLE - -//! Table containing for each interrupt group the number of interrupt request -//! lines and a pointer to the table of interrupt line handlers. -static const struct -{ - unsigned int num_irqs; - volatile __int_handler *_int_line_handler_table; -} _int_handler_table[AVR32_INTC_NUM_INT_GRPS] = -{ -#define INSERT_INT_LINE_HANDLER_TABLE(GRP, unused) \ - {AVR32_INTC_NUM_IRQS_PER_GRP##GRP, _int_line_handler_table_##GRP}, - MREPEAT(AVR32_INTC_NUM_INT_GRPS, INSERT_INT_LINE_HANDLER_TABLE, ~) -#undef INSERT_INT_LINE_HANDLER_TABLE -}; - - -/*! \brief Default interrupt handler. - * - * \note Taken and adapted from Newlib. - */ -#if __GNUC__ -__attribute__((__interrupt__)) -#elif __ICCAVR32__ -__interrupt -#endif -static void _unhandled_interrupt(void) -{ - // Catch unregistered interrupts. - while (TRUE); -} - - -/*! \brief Gets the interrupt handler of the current event at the \a int_lev - * interrupt priority level (called from exception.S). - * - * \param int_lev Interrupt priority level to handle. - * - * \return Interrupt handler to execute. - * - * \note Taken and adapted from Newlib. - */ -__int_handler _get_interrupt_handler(unsigned int int_lev) -{ - // ICR3 is mapped first, ICR0 last. - // Code in exception.S puts int_lev in R12 which is used by AVR32-GCC to pass - // a single argument to a function. - unsigned int int_grp = (&AVR32_INTC.icr3)[INT3 - int_lev]; - unsigned int int_req = AVR32_INTC.irr[int_grp]; - - // As an interrupt may disappear while it is being fetched by the CPU - // (spurious interrupt caused by a delayed response from an MCU peripheral to - // an interrupt flag clear or interrupt disable instruction), check if there - // are remaining interrupt lines to process. - // If a spurious interrupt occurs, the status register (SR) contains an - // execution mode and interrupt level masks corresponding to a level 0 - // interrupt, whatever the interrupt priority level causing the spurious - // event. This behavior has been chosen because a spurious interrupt has not - // to be a priority one and because it may not cause any trouble to other - // interrupts. - // However, these spurious interrupts place the hardware in an unstable state - // and could give problems in other/future versions of the CPU, so the - // software has to be written so that they never occur. The only safe way of - // achieving this is to always clear or disable peripheral interrupts with the - // following sequence: - // 1: Mask the interrupt in the CPU by setting GM (or IxM) in SR. - // 2: Perform the bus access to the peripheral register that clears or - // disables the interrupt. - // 3: Wait until the interrupt has actually been cleared or disabled by the - // peripheral. This is usually performed by reading from a register in the - // same peripheral (it DOES NOT have to be the same register that was - // accessed in step 2, but it MUST be in the same peripheral), what takes - // bus system latencies into account, but peripheral internal latencies - // (generally 0 cycle) also have to be considered. - // 4: Unmask the interrupt in the CPU by clearing GM (or IxM) in SR. - // Note that steps 1 and 4 are useless inside interrupt handlers as the - // corresponding interrupt level is automatically masked by IxM (unless IxM is - // explicitly cleared by the software). - // - // Get the right IRQ handler. - // - // If several interrupt lines are active in the group, the interrupt line with - // the highest number is selected. This is to be coherent with the - // prioritization of interrupt groups performed by the hardware interrupt - // controller. - // - // If no handler has been registered for the pending interrupt, - // _unhandled_interrupt will be selected thanks to the initialization of - // _int_line_handler_table_x by INTC_init_interrupts. - // - // exception.S will provide the interrupt handler with a clean interrupt stack - // frame, with nothing more pushed onto the stack. The interrupt handler must - // manage the `rete' instruction, what can be done thanks to pure assembly, - // inline assembly or the `__attribute__((__interrupt__))' C function - // attribute. - return (int_req) ? _int_handler_table[int_grp]._int_line_handler_table[32 - clz(int_req) - 1] : NULL; -} - - -void INTC_init_interrupts(void) -{ - unsigned int int_grp, int_req; - - // For all interrupt groups, - for (int_grp = 0; int_grp < AVR32_INTC_NUM_INT_GRPS; int_grp++) - { - // For all interrupt request lines of each group, - for (int_req = 0; int_req < _int_handler_table[int_grp].num_irqs; int_req++) - { - // Assign _unhandled_interrupt as default interrupt handler. - _int_handler_table[int_grp]._int_line_handler_table[int_req] = &_unhandled_interrupt; - } - - // Set the interrupt group priority register to its default value. - // By default, all interrupt groups are linked to the interrupt priority - // level 0 and to the interrupt vector _int0. - AVR32_INTC.ipr[int_grp] = ipr_val[INT0]; - } -} - - -void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_lev) -{ - // Determine the group of the IRQ. - unsigned int int_grp = irq / AVR32_INTC_MAX_NUM_IRQS_PER_GRP; - - // Store in _int_line_handler_table_x the pointer to the interrupt handler, so - // that _get_interrupt_handler can retrieve it when the interrupt is vectored. - _int_handler_table[int_grp]._int_line_handler_table[irq % AVR32_INTC_MAX_NUM_IRQS_PER_GRP] = handler; - - // Program the corresponding IPRX register to set the interrupt priority level - // and the interrupt vector offset that will be fetched by the core interrupt - // system. - // NOTE: The _intx functions are intermediate assembly functions between the - // core interrupt system and the user interrupt handler. - AVR32_INTC.ipr[int_grp] = ipr_val[int_lev & (AVR32_INTC_IPR0_INTLEV_MASK >> AVR32_INTC_IPR0_INTLEV_OFFSET)]; -} diff --git a/Demo/AVR32_UC3/DRIVERS/INTC/intc.h b/Demo/AVR32_UC3/DRIVERS/INTC/intc.h deleted file mode 100644 index 93ecef436..000000000 --- a/Demo/AVR32_UC3/DRIVERS/INTC/intc.h +++ /dev/null @@ -1,104 +0,0 @@ -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#ifndef _INTC_H_ -#define _INTC_H_ - -#include "compiler.h" - - -//! Maximal number of interrupt request lines per group. -#define AVR32_INTC_MAX_NUM_IRQS_PER_GRP 32 - -//! Number of interrupt priority levels. -#define AVR32_INTC_NUM_INT_LEVELS (1 << AVR32_INTC_IPR0_INTLEV_SIZE) - -/*! \name Interrupt Priority Levels - */ -//! @{ -#define INT0 0 //!< Lowest interrupt priority level. -#define INT1 1 -#define INT2 2 -#define INT3 3 //!< Highest interrupt priority level. -//! @} - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -//! Pointer to interrupt handler. -#if __GNUC__ -typedef void (*__int_handler)(void); -#elif __ICCAVR32__ -typedef void (__interrupt *__int_handler)(void); -#endif - - -/*! \brief Initializes the hardware interrupt controller driver. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_init_interrupts(void); - -/*! \brief Registers an interrupt handler. - * - * \param handler Interrupt handler to register. - * \param irq IRQ of the interrupt handler to register. - * \param int_lev Interrupt priority level to assign to the group of this IRQ. - * - * \warning The interrupt handler must manage the `rete' instruction, what can - * be done thanks to pure assembly, inline assembly or the - * `__attribute__((__interrupt__))' C function attribute. - * - * \warning If several interrupt handlers of a same group are registered with - * different priority levels, only the latest priority level set will - * be effective. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_lev); - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _INTC_H_ diff --git a/Demo/AVR32_UC3/DRIVERS/PM/pm.c b/Demo/AVR32_UC3/DRIVERS/PM/pm.c deleted file mode 100644 index e2f08d923..000000000 --- a/Demo/AVR32_UC3/DRIVERS/PM/pm.c +++ /dev/null @@ -1,510 +0,0 @@ -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include "pm.h" - - -/*! \name PM Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long mcctrl; - avr32_pm_mcctrl_t MCCTRL; -} u_avr32_pm_mcctrl_t; - -typedef union -{ - unsigned long cksel; - avr32_pm_cksel_t CKSEL; -} u_avr32_pm_cksel_t; - -typedef union -{ - unsigned long pll; - avr32_pm_pll_t PLL; -} u_avr32_pm_pll_t; - -typedef union -{ - unsigned long oscctrl0; - avr32_pm_oscctrl0_t OSCCTRL0; -} u_avr32_pm_oscctrl0_t; - -typedef union -{ - unsigned long oscctrl1; - avr32_pm_oscctrl1_t OSCCTRL1; -} u_avr32_pm_oscctrl1_t; - -typedef union -{ - unsigned long oscctrl32; - avr32_pm_oscctrl32_t OSCCTRL32; -} u_avr32_pm_oscctrl32_t; - -typedef union -{ - unsigned long ier; - avr32_pm_ier_t IER; -} u_avr32_pm_ier_t; - -typedef union -{ - unsigned long idr; - avr32_pm_idr_t IDR; -} u_avr32_pm_idr_t; - -typedef union -{ - unsigned long icr; - avr32_pm_icr_t ICR; -} u_avr32_pm_icr_t; - -typedef union -{ - unsigned long gcctrl; - avr32_pm_gcctrl_t GCCTRL; -} u_avr32_pm_gcctrl_t; - -typedef union -{ - unsigned long rccr; - avr32_pm_rccr_t RCCR; -} u_avr32_pm_rccr_t; - -typedef union -{ - unsigned long bgcr; - avr32_pm_bgcr_t BGCR; -} u_avr32_pm_bgcr_t; - -typedef union -{ - unsigned long vregcr; - avr32_pm_vregcr_t VREGCR; -} u_avr32_pm_vregcr_t; - -typedef union -{ - unsigned long bod; - avr32_pm_bod_t BOD; -} u_avr32_pm_bod_t; - -//! @} - - -/*! \brief Sets the mode of the oscillator 0. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 0 mode (i.e. AVR32_PM_OSCCTRL0_MODE_x). - */ -static void pm_set_osc0_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.mode = mode; - // Write - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; -} - - -void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc0_mode(pm, AVR32_PM_OSCCTRL0_MODE_EXT_CLOCK); -} - - -void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0) -{ - pm_set_osc0_mode(pm, (fosc0 < 8000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk0_no_wait(pm, startup); - pm_wait_for_clk0_ready(pm); -} - - -void pm_disable_clk0(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.startup = startup; - // Write back - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK)); -} - - -/*! \brief Sets the mode of the oscillator 1. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 1 mode (i.e. AVR32_PM_OSCCTRL1_MODE_x). - */ -static void pm_set_osc1_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.mode = mode; - // Write - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; -} - - -void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc1_mode(pm, AVR32_PM_OSCCTRL1_MODE_EXT_CLOCK); -} - - -void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1) -{ - pm_set_osc1_mode(pm, (fosc1 < 8000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk1_no_wait(pm, startup); - pm_wait_for_clk1_ready(pm); -} - - -void pm_disable_clk1(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.startup = startup; - // Write back - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC1RDY_MASK)); -} - - -/*! \brief Sets the mode of the 32-kHz oscillator. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode 32-kHz oscillator mode (i.e. AVR32_PM_OSCCTRL32_MODE_x). - */ -static void pm_set_osc32_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.mode = mode; - // Write - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_EXT_CLOCK); -} - - -void pm_enable_osc32_crystal(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_CRYSTAL); -} - - -void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk32_no_wait(pm, startup); - pm_wait_for_clk32_ready(pm); -} - - -void pm_disable_clk32(volatile avr32_pm_t *pm) -{ - pm->oscctrl32 &= ~AVR32_PM_OSCCTRL32_OSC32EN_MASK; -} - - -void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.osc32en = 1; - u_avr32_pm_oscctrl32.OSCCTRL32.startup = startup; - // Write back - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC32RDY_MASK)); -} - - -void pm_cksel(volatile avr32_pm_t *pm, - unsigned int pbadiv, - unsigned int pbasel, - unsigned int pbbdiv, - unsigned int pbbsel, - unsigned int hsbdiv, - unsigned int hsbsel) -{ - u_avr32_pm_cksel_t u_avr32_pm_cksel = {0}; - - u_avr32_pm_cksel.CKSEL.cpusel = hsbsel; - u_avr32_pm_cksel.CKSEL.cpudiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.hsbsel = hsbsel; - u_avr32_pm_cksel.CKSEL.hsbdiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.pbasel = pbasel; - u_avr32_pm_cksel.CKSEL.pbadiv = pbadiv; - u_avr32_pm_cksel.CKSEL.pbbsel = pbbsel; - u_avr32_pm_cksel.CKSEL.pbbdiv = pbbdiv; - - pm->cksel = u_avr32_pm_cksel.cksel; - - // Wait for ckrdy bit and then clear it - while (!(pm->poscsr & AVR32_PM_POSCSR_CKRDY_MASK)); -} - - -void pm_gc_setup(volatile avr32_pm_t *pm, - unsigned int gc, - unsigned int osc_or_pll, // Use Osc (=0) or PLL (=1) - unsigned int pll_osc, // Sel Osc0/PLL0 or Osc1/PLL1 - unsigned int diven, - unsigned int div) -{ - u_avr32_pm_gcctrl_t u_avr32_pm_gcctrl = {0}; - - u_avr32_pm_gcctrl.GCCTRL.oscsel = pll_osc; - u_avr32_pm_gcctrl.GCCTRL.pllsel = osc_or_pll; - u_avr32_pm_gcctrl.GCCTRL.diven = diven; - u_avr32_pm_gcctrl.GCCTRL.div = div; - - pm->gcctrl[gc] = u_avr32_pm_gcctrl.gcctrl; -} - - -void pm_gc_enable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] |= AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_gc_disable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] &= ~AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_pll_setup(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int mul, - unsigned int div, - unsigned int osc, - unsigned int lockcount) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {0}; - - u_avr32_pm_pll.PLL.pllosc = osc; - u_avr32_pm_pll.PLL.plldiv = div; - u_avr32_pm_pll.PLL.pllmul = mul; - u_avr32_pm_pll.PLL.pllcount = lockcount; - - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -void pm_pll_set_option(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int pll_freq, - unsigned int pll_div2, - unsigned int pll_wbwdisable) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {pm->pll[pll]}; - u_avr32_pm_pll.PLL.pllopt = pll_freq | (pll_div2 << 1) | (pll_wbwdisable << 2); - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, - unsigned int pll) -{ - return (pm->pll[pll] & AVR32_PM_PLLOPT_MASK) >> AVR32_PM_PLLOPT_OFFSET; -} - - -void pm_pll_enable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] |= AVR32_PM_PLLEN_MASK; -} - - -void pm_pll_disable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] &= ~AVR32_PM_PLLEN_MASK; -} - - -void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK0_MASK)); - - // Bypass the lock signal of the PLL - pm->pll[0] |= AVR32_PM_PLL0_PLLBPL_MASK; -} - - -void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK1_MASK)); - - // Bypass the lock signal of the PLL - pm->pll[1] |= AVR32_PM_PLL1_PLLBPL_MASK; -} - - -void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock) -{ - // Read - u_avr32_pm_mcctrl_t u_avr32_pm_mcctrl = {pm->mcctrl}; - // Modify - u_avr32_pm_mcctrl.MCCTRL.mcsel = clock; - // Write back - pm->mcctrl = u_avr32_pm_mcctrl.mcctrl; -} - - -void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup) -{ - pm_enable_osc0_crystal(pm, fosc0); // Enable the Osc0 in crystal mode - pm_enable_clk0(pm, startup); // Crystal startup time - This parameter is critical and depends on the characteristics of the crystal - pm_switch_to_clock(pm, AVR32_PM_MCSEL_OSC0); // Then switch main clock to Osc0 -} - - -void pm_bod_enable_irq(volatile avr32_pm_t *pm) -{ - pm->ier = AVR32_PM_IER_BODDET_MASK; -} - - -void pm_bod_disable_irq(volatile avr32_pm_t *pm) -{ - pm->idr = AVR32_PM_IDR_BODDET_MASK; -} - - -void pm_bod_clear_irq(volatile avr32_pm_t *pm) -{ - pm->icr = AVR32_PM_ICR_BODDET_MASK; -} - - -unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm) -{ - return ((pm->isr & AVR32_PM_ISR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm) -{ - return ((pm->imr & AVR32_PM_IMR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_level(volatile avr32_pm_t *pm) -{ - return (pm->bod & AVR32_PM_BOD_LEVEL_MASK) >> AVR32_PM_BOD_LEVEL_OFFSET; -} - - -void pm_write_gplp(volatile avr32_pm_t *pm,unsigned long gplp, unsigned long value) -{ - pm->gplp[gplp] = value; -} - - -unsigned long pm_read_gplp(volatile avr32_pm_t *pm,unsigned long gplp) -{ - return pm->gplp[gplp]; -} diff --git a/Demo/AVR32_UC3/DRIVERS/PM/pm.h b/Demo/AVR32_UC3/DRIVERS/PM/pm.h deleted file mode 100644 index 12ab46962..000000000 --- a/Demo/AVR32_UC3/DRIVERS/PM/pm.h +++ /dev/null @@ -1,335 +0,0 @@ -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#ifndef _PM_H_ -#define _PM_H_ - -#include -#include "compiler.h" -#include "preprocessor.h" - - -/*! \brief Sets the MCU in the specified sleep mode. - * - * \param mode Sleep mode: - * \arg \c AVR32_PM_SMODE_IDLE: Idle; - * \arg \c AVR32_PM_SMODE_FROZEN: Frozen; - * \arg \c AVR32_PM_SMODE_STANDBY: Standby; - * \arg \c AVR32_PM_SMODE_STOP: Stop; - * \arg \c AVR32_PM_SMODE_SHUTDOWN: Shutdown (DeepStop); - * \arg \c AVR32_PM_SMODE_STATIC: Static. - */ -#define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));} - - -/*! \brief Gets the MCU reset cause. - * - * \param pm Base address of the Power Manager instance (i.e. &AVR32_PM). - * - * \return The MCU reset cause which can be masked with the - * \c AVR32_PM_RCAUSE_x_MASK bit-masks to isolate specific causes. - */ -#if __GNUC__ -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm) -{ - return pm->rcause; -} - - -/*! - * \brief This function will enable the external clock mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - */ -extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0); - - -/*! - * \brief This function will enable the oscillator 0 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time. Time is expressed in term of RCOsc periods (3-bit value) - */ -extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk0(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 0 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time. Time is expressed in term of RCOsc periods (3-bit value) but not checked. - */ -extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc0 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc1 Oscillator 1 crystal frequency (Hz) - */ -extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1); - - -/*! - * \brief This function will enable the oscillator 1 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time. Time is expressed in term of RCOsc periods (3-bit value) - */ -extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk1(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 1 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time. Time is expressed in term of RCOsc periods (3-bit value) but not checked. - */ -extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc1 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time. Time is expressed in term of RCOsc periods (3-bit value) - */ -extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 32. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk32(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time. Time is expressed in term of RCOsc periods (3-bit value) but not checked. - */ -extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the osc32 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will select all the power manager clocks. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pbadiv Peripheral Bus A clock divisor enable - * \param pbasel Peripheral Bus A select - * \param pbbdiv Peripheral Bus B clock divisor enable - * \param pbbsel Peripheral Bus B select - * \param hsbdiv High Speed Bus clock divisor enable (CPU clock = HSB clock) - * \param hsbsel High Speed Bus select (CPU clock = HSB clock ) - */ -extern void pm_cksel(volatile avr32_pm_t *pm, unsigned int pbadiv, unsigned int pbasel, unsigned int pbbdiv, unsigned int pbbsel, unsigned int hsbdiv, unsigned int hsbsel); - - -/*! - * \brief This function will setup a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - * \param osc_or_pll Use OSC (=0) or PLL (=1) - * \param pll_osc Select Osc0/PLL0 or Osc1/PLL1 - * \param diven Generic clock divisor enable - * \param div Generic clock divisor - */ -extern void pm_gc_setup(volatile avr32_pm_t *pm, unsigned int gc, unsigned int osc_or_pll, unsigned int pll_osc, unsigned int diven, unsigned int div); - - -/*! - * \brief This function will enable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will disable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will setup a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param mul PLL MUL in the PLL formula - * \param div PLL DIV in the PLL formula - * \param osc OSC number (0 for osc0, 1 for osc1) - * \param lockcount PLL lockount - */ -extern void pm_pll_setup(volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount); - - -/*! - * \brief This function will set a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param pll_freq Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - * \param pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - * \param pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - */ -extern void pm_pll_set_option(volatile avr32_pm_t *pm, unsigned int pll, unsigned int pll_freq, unsigned int pll_div2, unsigned int pll_wbwdisable); - - -/*! - * \brief This function will get a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \return Option - */ -extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will enable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will disable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will wait for PLL0 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will wait for PLL1 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will switch the power manager main clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param clock Clock to be switched on. AVR32_PM_MCSEL_SLOW for RCOsc, AVR32_PM_MCSEL_OSC0 for Osc0, AVR32_PM_MCSEL_PLL0 for PLL0. - */ -extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock); - - -/*! - * \brief Switch main clock to clock Osc0 (crystal mode) - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - * \param startup Crystal 0 startup time. Time is expressed in term of RCOsc periods (3-bit value) - */ -extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup); - - -#endif // _PM_H_ diff --git a/Demo/AVR32_UC3/DRIVERS/TC/tc.c b/Demo/AVR32_UC3/DRIVERS/TC/tc.c deleted file mode 100644 index e63cc8f9f..000000000 --- a/Demo/AVR32_UC3/DRIVERS/TC/tc.c +++ /dev/null @@ -1,292 +0,0 @@ -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief TC driver for AVR32 UC3. - * - * AVR32 Timer/Counter driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a TC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include -#include "compiler.h" -#include "tc.h" - - -int tc_get_interrupt_settings(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return tc->channel[channel].imr; -} - - -int tc_configure_interrupts(volatile avr32_tc_t *tc, unsigned int channel, const tc_interrupt_t *bitfield) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Enable the appropriate interrupts. - tc->channel[channel].ier = bitfield->etrgs << AVR32_TC_ETRGS_OFFSET | - bitfield->ldrbs << AVR32_TC_LDRBS_OFFSET | - bitfield->ldras << AVR32_TC_LDRAS_OFFSET | - bitfield->cpcs << AVR32_TC_CPCS_OFFSET | - bitfield->cpbs << AVR32_TC_CPBS_OFFSET | - bitfield->cpas << AVR32_TC_CPAS_OFFSET | - bitfield->lovrs << AVR32_TC_LOVRS_OFFSET | - bitfield->covfs << AVR32_TC_COVFS_OFFSET; - - // Disable the appropriate interrupts. - tc->channel[channel].idr = (~bitfield->etrgs & 1) << AVR32_TC_ETRGS_OFFSET | - (~bitfield->ldrbs & 1) << AVR32_TC_LDRBS_OFFSET | - (~bitfield->ldras & 1) << AVR32_TC_LDRAS_OFFSET | - (~bitfield->cpcs & 1) << AVR32_TC_CPCS_OFFSET | - (~bitfield->cpbs & 1) << AVR32_TC_CPBS_OFFSET | - (~bitfield->cpas & 1) << AVR32_TC_CPAS_OFFSET | - (~bitfield->lovrs & 1) << AVR32_TC_LOVRS_OFFSET | - (~bitfield->covfs & 1) << AVR32_TC_COVFS_OFFSET; - - return 0; -} - - -int tc_select_external_clock(volatile avr32_tc_t *tc, unsigned int channel, unsigned int ext_clk_sig_src) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS || ext_clk_sig_src >= 1 << AVR32_TC_BMR_TC0XC0S_SIZE) - return TC_INVALID_ARGUMENT; - - // Clear bit-field and set the correct behavior. - tc->bmr = (tc->bmr & ~(AVR32_TC_BMR_TC0XC0S_MASK << (channel * AVR32_TC_BMR_TC0XC0S_SIZE))) | - (ext_clk_sig_src << (channel * AVR32_TC_BMR_TC0XC0S_SIZE)); - - return 0; -} - - -int tc_init_capture(volatile avr32_tc_t *tc, const tc_capture_opt_t *opt) -{ - // Check for valid input. - if (opt->channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // MEASURE SIGNALS: Capture operating mode. - tc->channel[opt->channel].cmr = opt->ldrb << AVR32_TC_LDRB_OFFSET | - opt->ldra << AVR32_TC_LDRA_OFFSET | - 0 << AVR32_TC_WAVE_OFFSET | - opt->cpctrg << AVR32_TC_CPCTRG_OFFSET | - opt->abetrg << AVR32_TC_ABETRG_OFFSET | - opt->etrgedg << AVR32_TC_ETRGEDG_OFFSET| - opt->ldbdis << AVR32_TC_LDBDIS_OFFSET | - opt->ldbstop << AVR32_TC_LDBSTOP_OFFSET | - opt->burst << AVR32_TC_BURST_OFFSET | - opt->clki << AVR32_TC_CLKI_OFFSET | - opt->tcclks << AVR32_TC_TCCLKS_OFFSET; - - return 0; -} - - -int tc_init_waveform(volatile avr32_tc_t *tc, const tc_waveform_opt_t *opt) -{ - // Check for valid input. - if (opt->channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // GENERATE SIGNALS: Waveform operating mode. - tc->channel[opt->channel].cmr = opt->bswtrg << AVR32_TC_BSWTRG_OFFSET | - opt->beevt << AVR32_TC_BEEVT_OFFSET | - opt->bcpc << AVR32_TC_BCPC_OFFSET | - opt->bcpb << AVR32_TC_BCPB_OFFSET | - opt->aswtrg << AVR32_TC_ASWTRG_OFFSET | - opt->aeevt << AVR32_TC_AEEVT_OFFSET | - opt->acpc << AVR32_TC_ACPC_OFFSET | - opt->acpa << AVR32_TC_ACPA_OFFSET | - 1 << AVR32_TC_WAVE_OFFSET | - opt->wavsel << AVR32_TC_WAVSEL_OFFSET | - opt->enetrg << AVR32_TC_ENETRG_OFFSET | - opt->eevt << AVR32_TC_EEVT_OFFSET | - opt->eevtedg << AVR32_TC_EEVTEDG_OFFSET | - opt->cpcdis << AVR32_TC_CPCDIS_OFFSET | - opt->cpcstop << AVR32_TC_CPCSTOP_OFFSET | - opt->burst << AVR32_TC_BURST_OFFSET | - opt->clki << AVR32_TC_CLKI_OFFSET | - opt->tcclks << AVR32_TC_TCCLKS_OFFSET; - - return 0; -} - - -int tc_start(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Enable, reset and start the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_SWTRG_MASK | AVR32_TC_CLKEN_MASK; - - return 0; -} - - -int tc_stop(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Disable the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_CLKDIS_MASK; - - return 0; -} - - -int tc_software_trigger(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Reset the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_SWTRG_MASK; - - return 0; -} - - -void tc_sync_trigger(volatile avr32_tc_t *tc) -{ - // Reset all channels of the selected timer/counter. - tc->bcr = AVR32_TC_BCR_SYNC_MASK; -} - - -int tc_read_sr(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return tc->channel[channel].sr; -} - - -int tc_read_tc(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].cv, AVR32_TC_CV_MASK); -} - - -int tc_read_ra(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].ra, AVR32_TC_RA_MASK); -} - - -int tc_read_rb(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].rb, AVR32_TC_RB_MASK); -} - - -int tc_read_rc(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].rc, AVR32_TC_RC_MASK); -} - - -int tc_write_ra(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].ra, AVR32_TC_RA_MASK, value); - - return value; -} - - -int tc_write_rb(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].rb, AVR32_TC_RB_MASK, value); - - return value; -} - - -int tc_write_rc(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].rc, AVR32_TC_RC_MASK, value); - - return value; -} diff --git a/Demo/AVR32_UC3/DRIVERS/TC/tc.h b/Demo/AVR32_UC3/DRIVERS/TC/tc.h deleted file mode 100644 index 381008bee..000000000 --- a/Demo/AVR32_UC3/DRIVERS/TC/tc.h +++ /dev/null @@ -1,580 +0,0 @@ -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Timer/Counter driver for AVR32 UC3. - * - * AVR32 Timer/Counter driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a TC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#ifndef _TC_H_ -#define _TC_H_ - -#include - - -//! TC driver functions return value in case of invalid argument(s). -#define TC_INVALID_ARGUMENT (-1) - -//! Number of timer/counter channels. -#define TC_NUMBER_OF_CHANNELS (sizeof(((avr32_tc_t *)0)->channel) / sizeof(avr32_tc_channel_t)) - -/*! \name External Clock Signal 0 Selection - */ -//! @{ -#define TC_CH0_EXT_CLK0_SRC_TCLK0 AVR32_TC_TC0XC0S_TCLK0 -#define TC_CH0_EXT_CLK0_SRC_NO_CLK AVR32_TC_TC0XC0S_NO_CLK -#define TC_CH0_EXT_CLK0_SRC_TIOA1 AVR32_TC_TC0XC0S_TIOA1 -#define TC_CH0_EXT_CLK0_SRC_TIOA2 AVR32_TC_TC0XC0S_TIOA2 -//! @} - -/*! \name External Clock Signal 1 Selection - */ -//! @{ -#define TC_CH1_EXT_CLK1_SRC_TCLK1 AVR32_TC_TC1XC1S_TCLK1 -#define TC_CH1_EXT_CLK1_SRC_NO_CLK AVR32_TC_TC1XC1S_NO_CLK -#define TC_CH1_EXT_CLK1_SRC_TIOA0 AVR32_TC_TC1XC1S_TIOA0 -#define TC_CH1_EXT_CLK1_SRC_TIOA2 AVR32_TC_TC1XC1S_TIOA2 -//! @} - -/*! \name External Clock Signal 2 Selection - */ -//! @{ -#define TC_CH2_EXT_CLK2_SRC_TCLK2 AVR32_TC_TC2XC2S_TCLK2 -#define TC_CH2_EXT_CLK2_SRC_NO_CLK AVR32_TC_TC2XC2S_NO_CLK -#define TC_CH2_EXT_CLK2_SRC_TIOA0 AVR32_TC_TC2XC2S_TIOA0 -#define TC_CH2_EXT_CLK2_SRC_TIOA1 AVR32_TC_TC2XC2S_TIOA1 -//! @} - -/*! \name Event/Trigger Actions on Output - */ -//! @{ -#define TC_EVT_EFFECT_NOOP AVR32_TC_NONE -#define TC_EVT_EFFECT_SET AVR32_TC_SET -#define TC_EVT_EFFECT_CLEAR AVR32_TC_CLEAR -#define TC_EVT_EFFECT_TOGGLE AVR32_TC_TOGGLE -//! @} - -/*! \name RC Compare Trigger Enable - */ -//! @{ -#define TC_NO_TRIGGER_COMPARE_RC 0 -#define TC_TRIGGER_COMPARE_RC 1 -//! @} - -/*! \name Waveform Selection - */ -//! @{ -#define TC_WAVEFORM_SEL_UP_MODE AVR32_TC_WAVSEL_UP_NO_AUTO -#define TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER AVR32_TC_WAVSEL_UP_AUTO -#define TC_WAVEFORM_SEL_UPDOWN_MODE AVR32_TC_WAVSEL_UPDOWN_NO_AUTO -#define TC_WAVEFORM_SEL_UPDOWN_MODE_RC_TRIGGER AVR32_TC_WAVSEL_UPDOWN_AUTO -//! @} - -/*! \name TIOA or TIOB External Trigger Selection - */ -//! @{ -#define TC_EXT_TRIG_SEL_TIOA 1 -#define TC_EXT_TRIG_SEL_TIOB 0 -//! @} - -/*! \name External Event Selection - */ -//! @{ -#define TC_EXT_EVENT_SEL_TIOB_INPUT AVR32_TC_EEVT_TIOB_INPUT -#define TC_EXT_EVENT_SEL_XC0_OUTPUT AVR32_TC_EEVT_XC0_OUTPUT -#define TC_EXT_EVENT_SEL_XC1_OUTPUT AVR32_TC_EEVT_XC1_OUTPUT -#define TC_EXT_EVENT_SEL_XC2_OUTPUT AVR32_TC_EEVT_XC2_OUTPUT -//! @} - -/*! \name Edge Selection - */ -//! @{ -#define TC_SEL_NO_EDGE AVR32_TC_EEVTEDG_NO_EDGE -#define TC_SEL_RISING_EDGE AVR32_TC_EEVTEDG_POS_EDGE -#define TC_SEL_FALLING_EDGE AVR32_TC_EEVTEDG_NEG_EDGE -#define TC_SEL_EACH_EDGE AVR32_TC_EEVTEDG_BOTH_EDGES -//! @} - -/*! \name Burst Signal Selection - */ -//! @{ -#define TC_BURST_NOT_GATED AVR32_TC_BURST_NOT_GATED -#define TC_BURST_CLK_AND_XC0 AVR32_TC_BURST_CLK_AND_XC0 -#define TC_BURST_CLK_AND_XC1 AVR32_TC_BURST_CLK_AND_XC1 -#define TC_BURST_CLK_AND_XC2 AVR32_TC_BURST_CLK_AND_XC2 -//! @} - -/*! \name Clock Invert - */ -//! @{ -#define TC_CLOCK_RISING_EDGE 0 -#define TC_CLOCK_FALLING_EDGE 1 -//! @} - -/*! \name Clock Selection - */ -//! @{ -#define TC_CLOCK_SOURCE_TC1 AVR32_TC_TCCLKS_TIMER_DIV1_CLOCK -#define TC_CLOCK_SOURCE_TC2 AVR32_TC_TCCLKS_TIMER_DIV2_CLOCK -#define TC_CLOCK_SOURCE_TC3 AVR32_TC_TCCLKS_TIMER_DIV3_CLOCK -#define TC_CLOCK_SOURCE_TC4 AVR32_TC_TCCLKS_TIMER_DIV4_CLOCK -#define TC_CLOCK_SOURCE_TC5 AVR32_TC_TCCLKS_TIMER_DIV5_CLOCK -#define TC_CLOCK_SOURCE_XC0 AVR32_TC_TCCLKS_XC0 -#define TC_CLOCK_SOURCE_XC1 AVR32_TC_TCCLKS_XC1 -#define TC_CLOCK_SOURCE_XC2 AVR32_TC_TCCLKS_XC2 -//! @} - - -//! Timer/counter interrupts. -typedef struct -{ - unsigned int :24; - - //! External trigger interrupt. - unsigned int etrgs : 1; - - //! RB load interrupt. - unsigned int ldrbs : 1; - - //! RA load interrupt. - unsigned int ldras : 1; - - //! RC compare interrupt. - unsigned int cpcs : 1; - - //! RB compare interrupt. - unsigned int cpbs : 1; - - //! RA compare interrupt. - unsigned int cpas : 1; - - //! Load overrun interrupt. - unsigned int lovrs : 1; - - //! Counter overflow interrupt. - unsigned int covfs : 1; -} tc_interrupt_t; - -//! Parameters when initializing a timer/counter in capture mode. -typedef struct -{ - //! Channel to initialize. - unsigned int channel ; - - unsigned int :12; - - //! RB loading selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int ldrb : 2; - - //! RA loading selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int ldra : 2; - - unsigned int : 1; - - //! RC compare trigger enable:\n - //! - \ref TC_NO_TRIGGER_COMPARE_RC;\n - //! - \ref TC_TRIGGER_COMPARE_RC. - unsigned int cpctrg : 1; - - unsigned int : 3; - - //! TIOA or TIOB external trigger selection:\n - //! - \ref TC_EXT_TRIG_SEL_TIOA;\n - //! - \ref TC_EXT_TRIG_SEL_TIOB. - unsigned int abetrg : 1; - - //! External trigger edge selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int etrgedg : 2; - - //! Counter clock disable with RB loading:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int ldbdis : 1; - - //! Counter clock stopped with RB loading:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int ldbstop : 1; - - //! Burst signal selection:\n - //! - \ref TC_BURST_NOT_GATED;\n - //! - \ref TC_BURST_CLK_AND_XC0;\n - //! - \ref TC_BURST_CLK_AND_XC1;\n - //! - \ref TC_BURST_CLK_AND_XC2. - unsigned int burst : 2; - - //! Clock invert:\n - //! - \ref TC_CLOCK_RISING_EDGE;\n - //! - \ref TC_CLOCK_FALLING_EDGE. - unsigned int clki : 1; - - //! Clock selection:\n - //! - \ref TC_CLOCK_SOURCE_TC1;\n - //! - \ref TC_CLOCK_SOURCE_TC2;\n - //! - \ref TC_CLOCK_SOURCE_TC3;\n - //! - \ref TC_CLOCK_SOURCE_TC4;\n - //! - \ref TC_CLOCK_SOURCE_TC5;\n - //! - \ref TC_CLOCK_SOURCE_XC0;\n - //! - \ref TC_CLOCK_SOURCE_XC1;\n - //! - \ref TC_CLOCK_SOURCE_XC2. - unsigned int tcclks : 3; -} tc_capture_opt_t; - -//! Parameters when initializing a timer/counter in waveform mode. -typedef struct -{ - //! Channel to initialize. - unsigned int channel ; - - //! Software trigger effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bswtrg : 2; - - //! External event effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int beevt : 2; - - //! RC compare effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bcpc : 2; - - //! RB compare effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bcpb : 2; - - //! Software trigger effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int aswtrg : 2; - - //! External event effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int aeevt : 2; - - //! RC compare effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int acpc : 2; - - //! RA compare effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int acpa : 2; - - unsigned int : 1; - - //! Waveform selection:\n - //! - \ref TC_WAVEFORM_SEL_UP_MODE;\n - //! - \ref TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER;\n - //! - \ref TC_WAVEFORM_SEL_UPDOWN_MODE;\n - //! - \ref TC_WAVEFORM_SEL_UPDOWN_MODE_RC_TRIGGER. - unsigned int wavsel : 2; - - //! External event trigger enable:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int enetrg : 1; - - //! External event selection:\n - //! - \ref TC_EXT_EVENT_SEL_TIOB_INPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC0_OUTPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC1_OUTPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC2_OUTPUT. - unsigned int eevt : 2; - - //! External event edge selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int eevtedg : 2; - - //! Counter clock disable with RC compare:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int cpcdis : 1; - - //! Counter clock stopped with RC compare:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int cpcstop : 1; - - //! Burst signal selection:\n - //! - \ref TC_BURST_NOT_GATED;\n - //! - \ref TC_BURST_CLK_AND_XC0;\n - //! - \ref TC_BURST_CLK_AND_XC1;\n - //! - \ref TC_BURST_CLK_AND_XC2. - unsigned int burst : 2; - - //! Clock invert:\n - //! - \ref TC_CLOCK_RISING_EDGE;\n - //! - \ref TC_CLOCK_FALLING_EDGE. - unsigned int clki : 1; - - //! Clock selection:\n - //! - \ref TC_CLOCK_SOURCE_TC1;\n - //! - \ref TC_CLOCK_SOURCE_TC2;\n - //! - \ref TC_CLOCK_SOURCE_TC3;\n - //! - \ref TC_CLOCK_SOURCE_TC4;\n - //! - \ref TC_CLOCK_SOURCE_TC5;\n - //! - \ref TC_CLOCK_SOURCE_XC0;\n - //! - \ref TC_CLOCK_SOURCE_XC1;\n - //! - \ref TC_CLOCK_SOURCE_XC2. - unsigned int tcclks : 3; -} tc_waveform_opt_t; - - -/*! \brief Reads timer/counter interrupt settings. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 The interrupt enable configuration organized according to \ref tc_interrupt_t. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_get_interrupt_settings(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Enables various timer/counter interrupts. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param bitfield The interrupt enable configuration. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_configure_interrupts(volatile avr32_tc_t *tc, unsigned int channel, const tc_interrupt_t *bitfield); - -/*! \brief Selects which external clock to use and how to configure it. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param ext_clk_sig_src External clock signal selection: - * \arg \c TC_CH0_EXT_CLK0_SRC_TCLK0; - * \arg \c TC_CH0_EXT_CLK0_SRC_NO_CLK; - * \arg \c TC_CH0_EXT_CLK0_SRC_TIOA1; - * \arg \c TC_CH0_EXT_CLK0_SRC_TIOA2; - * \arg \c TC_CH1_EXT_CLK1_SRC_TCLK1; - * \arg \c TC_CH1_EXT_CLK1_SRC_NO_CLK; - * \arg \c TC_CH1_EXT_CLK1_SRC_TIOA0; - * \arg \c TC_CH1_EXT_CLK1_SRC_TIOA2; - * \arg \c TC_CH2_EXT_CLK2_SRC_TCLK2; - * \arg \c TC_CH2_EXT_CLK2_SRC_NO_CLK; - * \arg \c TC_CH2_EXT_CLK2_SRC_TIOA0; - * \arg \c TC_CH2_EXT_CLK2_SRC_TIOA1. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_select_external_clock(volatile avr32_tc_t *tc, unsigned int channel, unsigned int ext_clk_sig_src); - -/*! \brief Sets options for timer/counter capture initialization. - * - * \param tc Pointer to the TC instance to access. - * \param opt Options for capture mode. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_init_capture(volatile avr32_tc_t *tc, const tc_capture_opt_t *opt); - -/*! \brief Sets options for timer/counter waveform initialization. - * - * \param tc Pointer to the TC instance to access. - * \param opt Options for waveform generation. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_init_waveform(volatile avr32_tc_t *tc, const tc_waveform_opt_t *opt); - -/*! \brief Starts a timer/counter. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_start(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Stops a timer/counter. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_stop(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Performs a software trigger: the counter is reset and the clock is started. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_software_trigger(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Asserts a SYNC signal to generate a software trigger and reset all channels. - * - * \param tc Pointer to the TC instance to access. - */ -extern void tc_sync_trigger(volatile avr32_tc_t *tc); - -/*! \brief Reads the status register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 Status register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_sr(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's TC counter and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 TC counter value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_tc(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RA register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RA register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_ra(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RB register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RB register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_rb(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RC register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RC register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_rc(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Writes a value to the channel's RA register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RA register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_ra(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - -/*! \brief Writes a value to the channel's RB register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RB register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_rb(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - -/*! \brief Writes a value to the channel's RC register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RC register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_rc(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - - -#endif // _TC_H_ diff --git a/Demo/AVR32_UC3/DRIVERS/USART/usart.c b/Demo/AVR32_UC3/DRIVERS/USART/usart.c deleted file mode 100644 index 3110bf5af..000000000 --- a/Demo/AVR32_UC3/DRIVERS/USART/usart.c +++ /dev/null @@ -1,448 +0,0 @@ -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include "usart.h" - - -//------------------------------------------------------------------------------ -/*! \name Private Functions - */ -//! @{ - - -/*! \brief Checks if the USART is in multidrop mode. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART is in multidrop mode, otherwise \c 0. - */ -#if __GNUC__ -__attribute__((__always_inline__)) -#endif -static __inline__ int usart_mode_is_multidrop(volatile avr32_usart_t *usart) -{ - return ((usart->mr >> AVR32_USART_MR_PAR_OFFSET) & AVR32_USART_MR_PAR_MULTI) == AVR32_USART_MR_PAR_MULTI; -} - - -/*! \brief Calculates a clock divider (\e CD) that gets the USART as close to a - * wanted baudrate as possible. - * - * \todo manage the FP fractal part to avoid big errors - * - * Baudrate calculation: - * \f$ baudrate = \frac{Selected Clock}{16 \times CD} \f$ with 16x oversampling or - * \f$ baudrate = \frac{Selected Clock}{8 \times CD} \f$ with 8x oversampling or - * \f$ baudrate = \frac{Selected Clock}{CD} \f$ with SYNC bit set to allow high speed. - * - * \param usart Base address of the USART instance. - * \param baudrate Wanted baudrate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baudrate successfully initialized. - * \retval USART_INVALID_INPUT Wanted baudrate is impossible with given clock speed. - */ - -static int usart_set_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, long pba_hz) -{ - // Clock divider. - int cd; - - // Baudrate calculation. - if (baudrate < pba_hz / 16) - { - // Use 16x oversampling, clear SYNC bit. - usart->mr &=~ (AVR32_USART_MR_OVER_MASK | AVR32_USART_MR_SYNC_MASK); - cd = (pba_hz + 8 * baudrate) / (16 * baudrate); - - if ((cd >65535)) return USART_INVALID_INPUT; - } - else if (baudrate < pba_hz / 8) - { - // Use 8x oversampling. - usart->mr |= AVR32_USART_MR_OVER_MASK; - // clear SYNC bit - usart->mr &=~ AVR32_USART_MR_SYNC_MASK; - - cd = (pba_hz + 4 * baudrate) / (8 * baudrate); - - if ((cd < 1)||(cd >65535)) return USART_INVALID_INPUT; - } - else - { - // set SYNC to 1 - usart->mr |= AVR32_USART_MR_SYNC_MASK; - // use PBA/BaudRate - cd = (pba_hz / baudrate); - } - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - - -void usart_reset(volatile avr32_usart_t *usart) -{ - // Disable all USART interrupts. - // Interrupts needed should be set explicitly on every reset. - usart->idr = 0xFFFFFFFF; - - // Reset mode and other registers that could cause unpredictable behavior after reset. - usart->mr = 0; - usart->rtor = 0; - usart->ttgr = 0; - - // Shutdown TX and RX (will be re-enabled when setup has successfully completed), - // reset status bits and turn off DTR and RTS. - usart->cr = AVR32_USART_CR_RSTRX_MASK | - AVR32_USART_CR_RSTTX_MASK | - AVR32_USART_CR_RSTSTA_MASK | - AVR32_USART_CR_RSTIT_MASK | - AVR32_USART_CR_RSTNACK_MASK | - AVR32_USART_CR_DTRDIS_MASK | - AVR32_USART_CR_RTSDIS_MASK; -} - - -int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt) // Null pointer. - return USART_INVALID_INPUT; - if (opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits > 2 + 255 || - opt->channelmode > 3) - return USART_INVALID_INPUT; - - if (usart_set_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= (opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET) | - (opt->paritytype << AVR32_USART_MR_PAR_OFFSET); - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1, 1.5 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr |= AVR32_USART_CR_TXEN_MASK | - AVR32_USART_CR_RXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Clear previous mode. - usart->mr &= ~AVR32_USART_MR_MODE_MASK; - // Hardware handshaking. - usart->mr |= USART_MODE_HW_HSH << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set IrDA counter. - usart->ifr = irda_filter; - - // Activate "low-pass filtering" of input. - usart->mr |= AVR32_USART_MR_FILTER_MASK; - - return USART_SUCCESS; -} - - -int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Clear previous mode. - usart->mr &= ~AVR32_USART_MR_MODE_MASK; - // Set modem mode. - usart->mr |= USART_MODE_MODEM << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Clear previous mode. - usart->mr &= ~AVR32_USART_MR_MODE_MASK; - // Set RS485 mode. - usart->mr |= USART_MODE_RS485 << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_iso7816(volatile avr32_usart_t *usart, const iso7816_options_t *opt, int t, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt) // Null pointer. - return USART_INVALID_INPUT; - - if (t == 0) - { - // Set USART mode to ISO7816, T=0. - // The T=0 protocol always uses 2 stop bits. - usart->mr = (USART_MODE_ISO7816_T0 << AVR32_USART_MR_MODE_OFFSET) | - (AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET) | - (opt->bit_order << AVR32_USART_MR_MSBF_OFFSET); // Allow MSBF in T=0. - } - else if (t == 1) - { - // Only LSB first in the T=1 protocol. - // max_iterations field is only used in T=0 mode. - if (opt->bit_order != 0 || - opt->max_iterations != 0) - return USART_INVALID_INPUT; - // Set USART mode to ISO7816, T=1. - // The T=1 protocol always uses 1 stop bit. - usart->mr = (USART_MODE_ISO7816_T1 << AVR32_USART_MR_MODE_OFFSET) | - (AVR32_USART_MR_NBSTOP_1 << AVR32_USART_MR_NBSTOP_OFFSET); - } - else - return USART_INVALID_INPUT; - - if (usart_set_baudrate(usart, opt->iso7816_hz, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set FIDI register: bit rate = selected clock/FI_DI_ratio/16. - usart->fidi = opt->fidi_ratio; - // Set ISO7816 spesific options in the MODE register. - usart->mr |= (opt->inhibit_nack << AVR32_USART_MR_INACK_OFFSET) | - (opt->dis_suc_nack << AVR32_USART_MR_DSNACK_OFFSET) | - (opt->max_iterations << AVR32_USART_MR_MAX_ITERATION_OFFSET) | - AVR32_USART_MR_CLKO_MASK; // Enable clock output. - - // Setup complete; enable input. - // Leave TX disabled for now. - usart->cr |= AVR32_USART_CR_RXEN_MASK; - - return USART_SUCCESS; -} -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - - -int usart_send_address(volatile avr32_usart_t *usart, int address) -{ - // Check if USART is in multidrop / RS485 mode. - if (!usart_mode_is_multidrop(usart)) return USART_MODE_FAULT; - - // Prepare to send an address. - usart->cr |= AVR32_USART_CR_SENDA_MASK; - - // Write the address to TX. - usart_bw_write_char(usart, address); - - return USART_SUCCESS; -} - - -int usart_write_char(volatile avr32_usart_t *usart, int c) -{ - if (usart->csr & AVR32_USART_CSR_TXRDY_MASK) - { - usart->thr = c; - return USART_SUCCESS; - } - else - return USART_TX_BUSY; -} - - -int usart_putchar(volatile avr32_usart_t *usart, int c) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - if (c == '\n') - { - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, '\r') != USART_SUCCESS); - - timeout = USART_DEFAULT_TIMEOUT; - } - - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, c) != USART_SUCCESS); - - return USART_SUCCESS; -} - - -int usart_read_char(volatile avr32_usart_t *usart, int *c) -{ - // Check for errors: frame, parity and overrun. In RS485 mode, a parity error - // would mean that an address char has been received. - if (usart->csr & (AVR32_USART_CSR_OVRE_MASK | - AVR32_USART_CSR_FRAME_MASK | - AVR32_USART_CSR_PARE_MASK)) - return USART_RX_ERROR; - - // No error; if we really did receive a char, read it and return SUCCESS. - if (usart->csr & AVR32_USART_CSR_RXRDY_MASK) - { - *c = (unsigned short)usart->rhr; - return USART_SUCCESS; - } - else - return USART_RX_EMPTY; -} - - -int usart_getchar(volatile avr32_usart_t *usart) -{ - int c, ret; - - while ((ret = usart_read_char(usart, &c)) == USART_RX_EMPTY); - - if (ret == USART_RX_ERROR) - return USART_FAILURE; - - return c; -} - - -void usart_write_line(volatile avr32_usart_t *usart, const char *string) -{ - while (*string != '\0') - usart_putchar(usart, *string++); -} - - -int usart_get_echo_line(volatile avr32_usart_t *usart) -{ - int rx_char; - int retval = USART_SUCCESS; - - while (1) - { - rx_char = usart_getchar(usart); - if (rx_char == USART_FAILURE) - { - usart_write_line(usart, "Error!!!\n"); - break; - } - if (rx_char == '\x03') - { - retval = USART_FAILURE; - break; - } - usart_putchar(usart, rx_char); - if (rx_char == '\r') - { - usart_putchar(usart, '\n'); - break; - } - } - - return retval; -} - - -//! @} diff --git a/Demo/AVR32_UC3/DRIVERS/USART/usart.h b/Demo/AVR32_UC3/DRIVERS/USART/usart.h deleted file mode 100644 index 1d731f871..000000000 --- a/Demo/AVR32_UC3/DRIVERS/USART/usart.h +++ /dev/null @@ -1,475 +0,0 @@ -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2007, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#ifndef _USART_H_ -#define _USART_H_ - -#include -#include "compiler.h" - - -/*! \name Return Values - */ -//! @{ -#define USART_SUCCESS 0 //!< Successful completion. -#define USART_FAILURE -1 //!< Failure because of some unspecified reason. -#define USART_INVALID_INPUT 1 //!< Input value out of range. -#define USART_INVALID_ARGUMENT -1 //!< Argument value out of range. -#define USART_TX_BUSY 2 //!< Transmitter was busy. -#define USART_RX_EMPTY 3 //!< Nothing was received. -#define USART_RX_ERROR 4 //!< Transmission error occurred. -#define USART_MODE_FAULT 5 //!< USART not in the appropriate mode. -//! @} - -//! Default time-out value (number of attempts). -#define USART_DEFAULT_TIMEOUT 10000 - -/*! \name Parity Settings - */ -//! @{ -#define USART_EVEN_PARITY AVR32_USART_MR_PAR_EVEN //!< Use even parity on character transmission. -#define USART_ODD_PARITY AVR32_USART_MR_PAR_ODD //!< Use odd parity on character transmission. -#define USART_SPACE_PARITY AVR32_USART_MR_PAR_SPACE //!< Use a space as parity bit. -#define USART_MARK_PARITY AVR32_USART_MR_PAR_MARK //!< Use a mark as parity bit. -#define USART_NO_PARITY AVR32_USART_MR_PAR_NONE //!< Don't use a parity bit. -#define USART_MULTIDROP_PARITY AVR32_USART_MR_PAR_MULTI //!< Parity bit is used to flag address characters. -//! @} - -/*! \name Operating Modes - */ -//! @{ -#define USART_MODE_NORMAL AVR32_USART_MR_MODE_NORMAL //!< Normal RS232 mode. -#define USART_MODE_RS485 AVR32_USART_MR_MODE_RS485 //!< RS485 mode. -#define USART_MODE_HW_HSH AVR32_USART_MR_MODE_HARDWARE //!< RS232 mode with hardware handshaking. -#define USART_MODE_MODEM AVR32_USART_MR_MODE_MODEM //!< Modem mode. -#define USART_MODE_ISO7816_T0 AVR32_USART_MR_MODE_ISO7816_T0 //!< ISO7816, T = 0 mode. -#define USART_MODE_ISO7816_T1 AVR32_USART_MR_MODE_ISO7816_T1 //!< ISO7816, T = 1 mode. -#define USART_MODE_IRDA AVR32_USART_MR_MODE_IRDA //!< IrDA mode. -#define USART_MODE_SW_HSH AVR32_USART_MR_MODE_SOFTWARE //!< RS232 mode with software handshaking. -//! @} - - -/*! \name Channel Modes - */ -//! @{ -#define USART_NORMAL_CHMODE AVR32_USART_MR_CHMODE_NORMAL //!< Normal communication. -#define USART_AUTO_ECHO AVR32_USART_MR_CHMODE_ECHO //!< Echo data. -#define USART_LOCAL_LOOPBACK AVR32_USART_MR_CHMODE_LOCAL_LOOP //!< Local loopback. -#define USART_REMOTE_LOOPBACK AVR32_USART_MR_CHMODE_REMOTE_LOOP //!< Remote loopback. -//! @} - -/*! \name Stop Bits Settings - */ -//! @{ -#define USART_1_STOPBIT AVR32_USART_MR_NBSTOP_1 //!< Use 1 stop bit. -#define USART_1_5_STOPBITS AVR32_USART_MR_NBSTOP_1_5 //!< Use 1.5 stop bits. -#define USART_2_STOPBITS AVR32_USART_MR_NBSTOP_2 //!< Use 2 stop bits (for more, just give the number of bits). -//! @} - - -//! Input parameters when initializing RS232 and similar modes. -typedef struct -{ - //! Set baudrate of the USART. - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY, \ref USART_ODD_PARITY, - //! \ref USART_SPACE_PARITY, \ref USART_MARK_PARITY, \ref USART_NO_PARITY or - //! \ref USART_MULTIDROP_PARITY. - unsigned char paritytype; - - //! Number of stop bits between two characters: \ref USART_1_STOPBIT, - //! \ref USART_1_5_STOPBITS, \ref USART_2_STOPBITS or any number from 3 to 257 - //! which will result in a time guard period of that length between characters. - unsigned short stopbits; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_options_t; - -//! Input parameters when initializing ISO7816 modes. -typedef struct -{ - //! Set the frequency of the ISO7816 clock. - unsigned long iso7816_hz; - - //! The number of ISO7816 clock ticks in every bit period (1 to 2047, 0 = disable clock). - //! Bit rate = \ref iso7816_hz / \ref fidi_ratio. - unsigned short fidi_ratio; - - //! Inhibit Non Acknowledge:\n - //! - 0: the NACK is generated;\n - //! - 1: the NACK is not generated. - //! - //! \note This bit will be used only in ISO7816 mode, protocol T = 0 receiver. - int inhibit_nack; - - //! Disable successive NACKs. - //! Successive parity errors are counted up to the value in the \ref max_iterations field. - //! These parity errors generate a NACK on the ISO line. As soon as this value is reached, - //! no addititional NACK is sent on the ISO line. The ITERATION flag is asserted. - int dis_suc_nack; - - //! Max number of repetitions (0 to 7). - unsigned char max_iterations; - - //! Bit order in transmitted characters:\n - //! - 0: LSB first;\n - //! - 1: MSB first. - int bit_order; -} iso7816_options_t; - -//! Input parameters when initializing ISO7816 modes. -typedef struct -{ - //! Set the frequency of the SPI clock. - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; - - //! Which SPI mode to use when transmitting. - unsigned char spimode; -} usart_spi_options_t; - - - - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - -/*! \brief Resets the USART and disables TX and RX. - * - * \param usart Base address of the USART instance. - */ -extern void usart_reset(volatile avr32_usart_t *usart); - -/*! \brief Sets up the USART to use the standard RS232 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use hardware handshaking. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note \ref usart_init_rs232 does not need to be invoked before this function. - */ -extern int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the IrDA protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * \param irda_filter Counter used to distinguish received ones from zeros. - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter); - -/*! \brief Sets up the USART to use the modem protocol, activating dedicated inputs/outputs. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the RS485 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the ISO7816 T=0 or T=1 smartcard protocols. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up ISO7816 communication (see \ref iso7816_options_t). - * \param t ISO7816 mode to use (T=0 or T=1). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_iso7816(volatile avr32_usart_t *usart, const iso7816_options_t *opt, int t, long pba_hz); - -/*! \brief Sets up the USART to use the SPI mode as master. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - - -/*! \brief Sets up the USART to use the SPI mode as slave. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -//! @} - -//------------------------------------------------------------------------------ -/*! \brief Selects slave chip. - * - * \param usart Base address of the USART instance. - * - * \return Status. - * \retval USART_SUCCESS Success. - */ -extern int usart_spi_selectChip(volatile avr32_usart_t *usart); - -/*! \brief Unselects slave chip. - * - * \param usart Base address of the USART instance. - * - * \return Status. - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Time out. - */ -extern int usart_spi_unselectChip(volatile avr32_usart_t *usart); - -//------------------------------------------------------------------------------ -/*! \name Read and Reset Error Status Bits - */ -//! @{ - -/*! \brief Resets the error status. - * - * This function resets the status bits indicating that a parity error, - * framing error or overrun has occurred. The RXBRK bit, indicating - * a start/end of break condition on the RX line, is also reset. - * - * \param usart Base address of the USART instance. - */ -#if __GNUC__ -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_reset_status(volatile avr32_usart_t *usart) -{ - usart->cr |= AVR32_USART_CR_RSTSTA_MASK; -} - -/*! \brief Checks if a parity error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a parity error has been detected, otherwise \c 0. - */ -#if __GNUC__ -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_parity_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_PARE_MASK) != 0; -} - -/*! \brief Checks if a framing error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a framing error has been detected, otherwise \c 0. - */ -#if __GNUC__ -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_framing_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_FRAME_MASK) != 0; -} - -/*! \brief Checks if an overrun error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a overrun error has been detected, otherwise \c 0. - */ -#if __GNUC__ -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_overrun_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_OVRE_MASK) != 0; -} - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - -/*! \brief Addresses a receiver. - * - * While in RS485 mode, receivers only accept data addressed to them. - * A packet/char with the address tag set has to precede any data. - * This function is used to address a receiver. This receiver should read - * all the following data, until an address packet addresses another receiver. - * - * \param usart Base address of the USART instance. - * \param address Address of the target device. - * - * \retval USART_SUCCESS Address successfully sent (if current mode is RS485). - * \retval USART_MODE_FAULT Wrong operating mode. - */ -extern int usart_send_address(volatile avr32_usart_t *usart, int address); - -/*! \brief Writes the given character to the TX buffer if the transmitter is ready. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - * - * \retval USART_SUCCESS The transmitter was ready. - * \retval USART_TX_BUSY The transmitter was busy. - */ -extern int usart_write_char(volatile avr32_usart_t *usart, int c); - -/*! \brief An active wait writing a character to the USART. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - */ -#if __GNUC__ -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_bw_write_char(volatile avr32_usart_t *usart, int c) -{ - while (usart_write_char(usart, c) != USART_SUCCESS); -} - -/*! \brief Sends a character with the USART. - * - * \param usart Base address of the USART instance. - * \param c Character to write. - * - * \retval USART_SUCCESS The character was written. - * \retval USART_FAILURE The function timed out before the USART transmitter became ready to send. - */ -extern int usart_putchar(volatile avr32_usart_t *usart, int c); - -/*! \brief Checks the RX buffer for a received character, and stores it at the - * given memory location. - * - * \param usart Base address of the USART instance. - * \param c Pointer to the where the read character should be stored - * (must be at least short in order to accept 9-bit characters). - * - * \retval USART_SUCCESS The character was read successfully. - * \retval USART_RX_EMPTY The RX buffer was empty. - * \retval USART_RX_ERROR An error was deteceted. - */ -extern int usart_read_char(volatile avr32_usart_t *usart, int *c); - -/*! \brief Waits until a character is received, and returns it. - * - * \param usart Base address of the USART instance. - * - * \return The received character, or \ref USART_FAILURE upon error. - */ -extern int usart_getchar(volatile avr32_usart_t *usart); - -/*! \brief Writes one character string to the USART. - * - * \param usart Base address of the USART instance. - * \param string String to be written. - */ -extern void usart_write_line(volatile avr32_usart_t *usart, const char *string); - -/*! \brief Gets and echoes characters until end of line. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE ETX character received. - */ -extern int usart_get_echo_line(volatile avr32_usart_t *usart); - -//! @} - - -#endif // _USART_H_